第一章:计算机系统概论
计算机分类:
电子计算机和电子模拟计算机:
现在一般指电子数字计算机
性能指标:
硬件
1)运算器:一般通过ALU计算器协同完成(计算逻辑操作部件)和累加器
2)储存器:
一个半导体触发器只能存储一个(0或1),存储的单词(需要多个半导体触发器)被称为存储单元。
每个存储单元都有编号,称为地址。
存储器中所有存储单元的总数称为存储容量(kb,mb等)
一般半导体存储器称为内存(RAM,ROM),磁盘光盘被称为外部存储器
3)控制器
基本操作称为指令
指令由 操作码(指令) 地址码(操作数) 组成
一台计算机通常有十几个基本指令,从而计算机指令系统(指令集?
通过取地址周期、翻译地址周期和执行周期的交替运行来执行指令
CPU:通常将计算器和控制器集成到电路芯片中,称为中央处理器
指令流和数据流:处理器字长-一次可处理的数据长度称为字(一般向下兼容)。
从内存中读取的信息流是指令流-流向控制器,执行周期读取数据流和流向计算器
4)IO设备与适配器
CPU通过三条总线 适配器连接外围设备
计算机软件
分为 系统程序,应用程序
语言:机器语言(唯一的语言,二进制)、符号语言:汇编、高级语言
高级语言:c,java等
编译链接需要转换为二进制文件计算机才能执行
数据库和数据库管理软件组成了数据库管理系统
层次结构
1)计算机系统的层次结构图
1-3级基本都是机器语言编写
2)软件和硬件的逻辑等价
任何指令都可以通过硬件或软件来完成。这取决于目标
固件:写入EPROM(只读存储器可以擦写可编程)或EEPROM(电可擦可编程只读存储器)中的程序。一般是驱动程序,功能上是软件,形式上是硬件
第二章 操作方法和操作器
数据格式
定点数
小数点的位置是固定的,通常表示纯小数或纯整数
浮点数IEEE754标准
v=(-1)^s * 1.M * R^E // s为符号位 为0则正数 1.M 为尾数,1.是浮点数的标准化表示-符合科学计数法 R为基数,二进制为2。 E指数代表移位(科学计数法指数相同,为整数)
-----------------------
32位:符号 1位,阶码E八位,其他为尾数M 23位
标准格式: x=(-1)^s * 1.M * R^(E-127) // s为符号位 为0则正数 1.M 为尾数,1.是浮点数的标准化表示-符合科学计数法 R为基数,二进制为2。 e=E-127指数代表(正负指数)
转换:按格式展开
小数部分:10-->2 乘法*2 直到小数部分0 , 2-->10 小数部分也按权展开
数字串(字符表示)
1)字符串形式
2)压缩十进制树串:一字节二十进制树---BCD代表数字代表4位
机器代码(二进制)表示
1) 原码:正负数只有不同的符号位
符号位占一位,其他按位权展开
注意:有 0和-0区别
2)补码:
正数:三种代码相同
负数:符号位不变,其他取反 1--方便运算
Xn代表值:0/1
n表示最高位:包括符号位,如八位 则n==8
注意:0只有一种表达形式(-0补码 进位舍去)
流程: 知道补码时,看符号
若为0 正数,直接位权
3) 移码 :常用于表示浮点数的阶码E
特点:符号位反过来,其他都一样
4)IEEE754标准(浮点)
定点加法,减法操作*
1 符号位算作数的一部分参与运算--都转化为加法
2 进位要舍去
[x]补 [y]补=[x y]补 //任意两数的补码之和等于该两数之和的补码 [x-y]补=[x]补 [-y]补 //[-y]补==y补->再包括符号位取反 1 相当于取反y的真值
:
1)补充(不包括符号位)
2)若减法 则 算 [-y]补 -->变加法
3)按加法算 带符号位/舍进位
4)如为正,则直接按权 若为负数 则按两个方法算真值
->
-
定点溢出检测
通过逻辑电路自动检中断
正溢出,负溢出
双符号位方法:
看符号位数字本身
多加一个符号位:如果结果是双符号位异或不是1 溢出发生,最高水平表示正确
单符号位
看进位
符号位进位 异或 次高位 进位: 1时表示溢出
定点乘法/除法
由阵列乘法器和阵列除法器完成,内部结构复杂,但研究较多
手算和十进制差不多
计算机组成原理 定点操作-移位、加减、乘除(详细分析-看完) - 知乎 (zhihu.com)
定点运算器的组成
逻辑操作(为操作):
逻辑非:反向数求--- 对每一个求反
逻辑加(逻辑或)
常用 号表示:对两个数逻辑加就是对每一位进行 或操作(一个取1就1)
逻辑乘(逻辑与)
常用点号表示或直接连接在一起:(均为1-1)
逻辑异(异或)
全加器(FA)
S本位结果,Ci-n进位结果较低Cout 为于下一个进位结果
阵列由多个全加器连接而成
ALU(多功能算数/逻辑操作单元)
arithmetic and logic unit
对位AB不直接加法,,不同的控制参数可以获得不同的组合函数,可以实现多种算数操作和逻辑操作
M为控制端:若为1 算数运算(可进位)
若为0 然后封锁你的进位输出-逻辑操作
定点运算器的基本组成:
包括ALU,多路开关三态缓冲器,数据总线等。
内部总线:按总线位置来分,cpu内部各部件的连线---内部总线
外部总线:系统总线,CPU与其他设备的连线
按逻辑来分:单向/双向的
(三种)
如三总线运算器:能一步之内输出结果,而单总线要三步(取两个操作数,输出结果)
浮点运算方法和浮点运算器
浮点数的运算步骤 - 活着的虫子 - 博客园 (cnblogs.com)
浮点运算流水线
分为多个子部分,并发执行---不用全部执行完再执行下一个
类似于进程的并发执行,提高了效率
第三章:储存系统
概述
局部性原理
无论是存取指令还是存储数据,在较短的时间间隔内,程序所访问的存储器地址在很大比例上集中在地址空间很小范围内。
1)时间局部性:最近被访问的信息很有可能被再次访问
2)空间局部性:被访问信息的相邻地址也可能被访问
多级存储系统
内存:能被cpu直接访问的存储器 称为 内存(主存) ,一般容量小,造价高
外存:在内存之外 容量更大,但访问慢的称为 外存(辅存);
为了性价比一般按照 多级存储系统来分配存储器:
存储器分类:
存储位元/单元: 能存储一位数据的半导体电路 --->若干个-->存储单元--->若干个-->存储器
介质:半导体器件(常见的内存材料),磁性材料(磁盘),光存储器(光盘)
存储方式:
1)随机存储器:能随机访问数据
2)顺序存储器:只能按顺序位置访问
3)半顺序:如磁盘,磁道顺序,半径随机
读写限制:RAM/ROM
易失性:断电后数据消失:RAM 断电后可以保存:ROM
存储器的编址:存储一个字的存储单元-字存储单元,单元地址-字地址。以此类推
大小端:将一个字的低有效位放在内存的低地址段--小端-ARM一般默认此类
存储器衡量指标:
1)存储容量:KB等
2)存取时间:又称访问时间,收到命令到完成所需的时间
3)存储周期:---CPU连续两次访问存储器的时间间隔
4)存储器带宽:通常bit/s为单位
RAM
SRAM:静态随机存储器
采用触发器作为存储位元,只要有电就能一直保存。
0)地址译码器:可以延展出不同选择线
地址和地址译码器_moodfriend的博客-CSDN博客_地址译码器
1)地址线:选择位的数据,容量为2^n n为地址线数量
2)数据线,代表有几列
3)控制线:选择高电平读,还是低电平写
总储存容量为2^地址线数量 * 数据线数量
地址分为x,y两部分
存储器容量扩充
组合拼接多个
位扩展:数据线不够 IO数据线合并起来
字扩展:地址线不够,组合起来
字位扩展:上述结合
需要个数==(目标容量/容量)*(目标位/位)
DRAM
动态存储器-简化了每个储存元的结构,因此密度很高
使用MOS晶体管和电容器组成的单管DRAM电路-当电容满时代表1
,不然会丢失
因为读操作具有破坏性,会使电荷流失。而且也会随时间自动泄露
分为集中刷新(刷新周期中后半段时间集中刷新) 分散式刷新(刷新分散在周期内)
传统DRAM是异步操作的,存取数据中有较长的延迟。
而同步DRAM在接口上增加时钟信号
能在时钟的上升沿和下降沿都能数据传输
增加了差分时钟设计和 预取结构(改进在与提升存储矩阵的输出效率)
有DDR2,3,4等 :DDR4 sdram采用8n预取结构 +两个或四个独立存储体,每个存储体都有独立的操作能力。速率是倍增的
现在电脑一般采用DDR4
CDRAM:加入高速缓冲器的DRAM
常规的DRAM芯片内集成了一个小容量SRAM作为缓冲存储器。
ROM
掩膜ROM:不能改变,一次性
PROM:可编程ROM
programmable ROM
1)EPROM:紫外线擦除ROM
2)EEPROM:电可擦,不需要离线
3)flash:闪存----------电可擦,可在线编程的非易失性只读存储器
分为NOR闪存:线性闪存,可以随机读取内容,在线执行,以区块或芯片为单位删除
NAND闪存:非线性闪存,以页为单位-非随机储存,不能在线执行,以数十页组成的块为单位擦除
区别:NAND有10倍与NOR闪存的擦除次数,而且容量大价格低,取代了部分磁截止赋存
提高存储器读取速度方法
CPU和内存之间在速度上是不匹配的,为提高交换速率,可以采用不同层次方法
芯片技术:提高内部结构或接口方式来提高单个芯片的访问速度(如dram,突发传输技术等)
结构技术: 双口/多体交叉存储器
转换为以内存为中心的系统,不仅CPU可以访问内存,其他端口也可以不经过CPU与内存交换信息。为了提高内存信息交换能力,提出了双端口存储器
:
具有两组相互独立的读写控制电路而得名。
当两个端口的地址不一样时,一定不会发生冲突
冲突:当地址一样1)且有写操作时2),便发生冲突。通过busy标志解决
:
模块;一套独立的存储器,有自己的控制电路等
顺序方式:模块内地址顺序访问,一模块工作时,其他不工作
交叉方式*(重点):连续的地址分布在相邻的不同模块内--,提高了带宽 (用若干位来选择模块等)
CPU同时访问四个模块,从模块角度来说,访问时间仍然用了一个存取周期
但对CPU来说:可以在一个存取周期内连续访问四个模块-->
-->各模块的读写过程重叠进行--并行存储结构
cache存储器
由高速的SRAM组成,介于CPU和内存之间,用于向CPU提供数据和指令,是一种高速缓冲器
由硬件直接管理
基本原理:
CPU与cache之间是以字为单位的,chche与主存交换是以块(由若干个字组成,定长)为单位
当CPU读/存数据时,将地址发给cache和内存->
若cache中存有---则命中--立即传送给CPU
否则缺失--用主存读取周期传入CPU-含有此数据的块送到cache
:
命中率与 程序行为,cache容量,组织方式,块的大小有关
1)命中率高·
2)希望cache对CPU而言是透明的,软件不需要增加任何命令就可以访问cache
为了使cache能与内存交换数据,以及CPU存取内存地址转换为cache中的地址,需要有地址映射
1)全相联映射
cache的数据块大小与内存的数据块是等长的,
位置关系:。任意存放
:CPU指定一个内存地址时,所有行(块)标志进行比较,
可以存储与cache的任意一行,非常灵活,缺点是比较器难以实现
2)直接映射
每一个内存块只能拷贝到cache的一个特点位置上
cache的行号(块号)i与内存的块号j 以下关系
i=j mod m //m为cache总行数
位置关系:将s位的主块存储地址:低r位作为cache行号,s-r位作为标记与数据保存在一起
:首先用r位找到行,然后用s-r标志位与比较器作比较。
硬件简单,成本低,地址变换快。但只有一个固定行可以存放,容易发生冲突-发生交换-效率低
3) 组相联映射
吸结合上面两总方法优点:
位置关系:
将cache分为u组,每组v行
m=u*v
q= j mod u
//m总行数
//q 组号
组(mod)--->行(随机存放)
流程:直接映射方式流程找到组-->全相联映射方式流程找到随机行
通常称为v路组相联catch
cache替换算法
当沾满时,需要替换
1) LFU:最不经常使用算法
新进入为0,每访问++。计数值最小的换出
2)LRU:近期最少使用算法
每命中一次,计数器归0,其他++。将计数值最大的换出
保护了刚复制到cache的数据,符合逻辑
3)随机替换
速度快,容易实现且效率略低于前两种
cache写操作策略
由于只是副本,应当与内存保持一致,当cpu对cache写入时,提供三种策略
1)写回法
当CPU写命中cache时,只修改cache内容,不立即写入内存。
当替换时才写回
真正起到了双向高速缓冲的作用,减少了对主存的访问,需要设计一个标志位来表明是否修改动过数据
2)全写法:
写命中,同时修改
未命中,可以选择是否同时写到cache
3)写一次法:
第一次命中才同时写入,维护了系统cache的一致性
虚拟存储器(总)
为了解决储存容量问题
通过程序使用的虚拟地址-不用考虑物理存储器是否放得下,放在什么位置-运行时才将程序的一部分放入内存(通过地址转换部件)
程序可以透明的使用整个虚拟空间,虚拟空间可以远大于 /远小于实际空间。
若主存命中率很高,虚存的访问时间就接近于内存,而虚存的大小仅仅依赖于辅存的大小
逻辑地址/物理地址:
用户编织程序时使用的为虚地址(逻辑地址),计算机物理内存访问的地址为实地址(物理地址)
之间的转换称为:。
虚存的访问过程:
用户程序按照虚拟地址编程并放在外存中(辅存)
也看实存是否名字,不命中外存数据调度进内存,再访问内存。跟cache大同小异
页式虚拟存储器:
储存格式
虚地址空间被划分为等长的页,称为逻辑页;主存空间也被划分为等长的物理页
虚地址分为两个字段:高字段逻辑页号,低字段页内地址(偏移量)
实地址 :高字段为物理页号,低字段一样
虚拟页面:程序的虚拟页面 不等于页表
(内)页表:
一般在内存中(也可能一部分放在辅存中)
每个进程对应一个页表,里面有很多表项(对应着一个逻辑页),内含内存中的物理页号
有二级页表:页表的页表+是否已经调入内存的有效位1()
反向页表:用于实地址-->虚拟地址的转换
转换方式:
:虚地址--->内存地址
用逻辑页号找到页表内的对应表项+低字段偏移地址 == 物理地址
:虚地址--->外存地址
外页表结构与辅存的机制有关(如瓷盆)
主页缺页时,需要调页
转换后援缓冲器(TLB)
即使逻辑页已经在主存中,也需要进行两次内存访问(页表+实地址)。
所以有了TLB,或称为快表---------与cache相似
TLB未命中则访问主页表-未命中则调页;
优缺点:
页长固定,便于构造页表易于管理。但与程序的逻辑大小不相关。难于管理,不利于编程的独立性
段式虚拟存储器
分段:
是按照程序自然分界划分的长度,可以动态改变的区域(DOS?)
包含三个字段
1)有效位:是否已经存入内存
2)段起始:若已经在内存,显示首地址
3)段长:段长的界限,不能超出这个范围
段表:
跟页表一样存储在主存中
转换方法:
段号s->检查标志位为1-> 段内偏移量 d ->比较小于段长(上界)->组合
标志位不为1:缺段 调段
越界:发生越界中断
优缺点:
逻辑独立性易于编译管理等,段长动态有效利用空间。
但主存分配比较麻烦,容易留下外碎片,且段长不一定是2的整次幂,不能直接拼接得到物理地址,需要更多的硬件支持
段页式虚拟存储器:
两种优点结合:
通过段表--->页表两级再定位
虚存的替算法(表/段)
当调页至主存时,主存满,则对进行替换,通常设置一个修改标志位;
也有 FIFO/LRU/ LFU 算法等
储存管理部件
memory management Unit ----MMU:是虚实地址转换的核心部件
1)TLB协助下完成地址转换
2)维护TLB,存储保护,TLB出现问题时发起中断
cpu 与 主存 辅存 三级存储体系**
可以看出,最坏情况下可能发生三次未命中:
给出一组逻辑地址
而cache是内存的副本,所以一定不命中
TLB、页表、Cache、主存之间的访问关系_xiaotai1234的博客-CSDN博客_cache和页表
cache与虚存的异同
第四章 :指令系统
指令分类
1)微指令:属于硬件
2)宏指令:若干条机器指令组成的软件指令,属于软件
3)机器指令:通常所说的是这种,每一条指令可以完成一个独立的运算或逻辑运算操作
一台计算机中所有机器指令的集合,称为指令集。是性能的重要因素
CISC
RISC:精简指令系统计算机
指令系统的性能要求
1)完备性:足够使用
2)有效性:能够高效的运行
3)规整性:包括
指令系统的对称性:所有寄存器(CPU内)和存储单元都可以同等对待·,所有指令都可以使用各种寻址方式;
指令系统的匀称性:一种操作系统的指令可以支持各种数据类型(字,双字,浮点数)
指令格式和数据格式的一致性:指令长度和数据长度有一定的关系
4)兼容性:能运行低档机上的程序(向下兼容?)
语言
汇编语言
符号语言,通过汇编器或编译器翻译成二进制机器语言
汇编语言依赖于计算机的硬件结构和指令系统。不能在其他类型的机器上运行
高级语言
符号语言,跟系统架构无关,可移植性高。
有些提高了汇编程序接口
指令系统体系结构(ISA):
是与程序设计有关的计算机架构。包括:
指令格式
分为 操作码OP + 地址码字段A
:表示应该进行什么性质的操作
一般n位的操作码,就有2^n 条指令
:有几个操作数地址,就称为几操作数指令
0)0地址:只有操作码,如停机操作不需要地址操作数
1)一地址 :一般另一个操作数是隐形的
2)二地址:分为访问内存指令格式(SS),访问寄存器(RR),都访问(RS)
3)三地址:一般为了加快指令执行速度
指令格式分类(R-S):
根据访问的 操作数的物理位置来划分
1)SS:参与的操作数都放在内存中,需要多次访问
2)RR:寄存器中取操作数,放到另一内存,通常很快,因为不要访问内存
3)RS:既要访问内存,又要访问寄存器
指令字长度
:整条指令的位个数
若指令字长度==于机器字长度(一次所能处理最大长度)--->单字(机器字)长指令-以此类推
扩展操作码技术:
若指令字长度为16位:操作码四位+地址码四位*4
若OP只有4位,则最多只能有16条指令,而可以只用15种,剩下一个为标志,表示:->
以此类推
操作数类型
地址数据:通常先进行地址寻址操作(如+段内偏移),通常看成无符号整数
数值数据:
1)定点整数,定点小数
2)浮点数
3)压缩十进制数(BCD)
字符数据:通常ascii 7+1位校验码
逻辑数据:按位看成逻辑数据,进行位操作
指令和数据的寻址方式
指令的寻址方式:
如何找到下一条指令的位置
1) 顺序寻址方式:利用PC 程序计数器,自动指向下一条
2)跳跃寻址:下条指令的的地址码由本条指令得出 如JMP 指令
操作数寻址方式
一般给出形式上的地址,根据某种转换为实际地址
1)隐含寻址:如单操作数指令,隐含了特定的寄存器
2)立即寻址:直接给出立即数,是操作数本身
3)直接寻址:直接给出地址A
4)间接寻址:地址的地址,类似于指针?
5)寄存器寻址:操作数就是寄存器中的内容
6)寄存器间接寻址:寄存器的内容是操作数的地址
7)堆栈寻址:利用数据结构堆栈,通过pop push等来寻址
8)段寻址:通过段寄存器+偏移地址来寻址 ,如DOS环境下的段寄存器-s
9)偏移寻址:寄存器间接寻址+直接寻址(表示偏移地址的方式也行)
EA=A+【R】
//EA表示实际地址,A表示偏移地址,R表示(段)寄存器
如汇编中ds[2]==ds中的内容加上2
1)相对寻址 :相对PC来寻址 ,如跳转到一个符号---PC当前值来加减符号代表的地址
2)基地址寻址:段寻址方式类似,可以隐藏段寄存器 如汇编隐藏默认 ds当做段首地址
3)变址寻址:为重复操作提供一种高效机制,变址寄存器内容增加1,而段寄存器内容不变
类似于 用两个寄存器来完成循环寻址: ds[bx] ,bx++;
基本类型指令
一个较完善的指令系统应当由:数据处理,数据储存,数据传送,程序控制四大类指令。
1)数据传送指令
2)算数运算指令:如加减乘除,浮点运算,算数比较等
3)逻辑运算指令
4)程序控制指令:转移指令-跳转指令
5)输入输出指令:主要用来启动外围设备
6)字符串处理指令
7)特权指令:一般只提供给系统软件使用
8)其他指令:如暂停,空操作,复位治疗
ARM&RISC
一般采用精简指令集系统
1 指令条数减少
2 指令长度固定,指令格式和寻址方式减少
3 只有存取指令(lod/str)访问存储器,其余指令的操作均在寄存器之间进行,不能直接操作存储器
第五章:中央处理器
基本功能
CPU自动完成取指令和执行指令的任务,具有以下四方面基本功能
1) 指令控制:程序的顺序控制,指令序列不能任意颠倒
2)操作控制:一条指令往往又若干个操作信号组合来实现的----CPU管理并产生有关操作信号,把各种操作信号送往相应的部件,以控制动作
3)时间控制:各种操作指令均收到严格的时间控制,才能有条不紊的执行下去
4)数据加工:最基本的功能,通过算数或逻辑运算来处理数据
CPU的组成
运算器和控制器是组成CPU的两大核心部件,但随着VLSI技术发展,越来越多的逻辑功能部件被集成到cpu内部
控制器
由程序控制器PC,指令寄存器,指令译码器,组成
1)从指令cache中取出指令,并指出下一条指令在指令cache中的位置
2)对指令进行译码或 测试,并产生响应的操作控制信号,以此完成操作
3)指挥并控制CPU,数据cache和输入输出设备之间的流动方向
运算器
由算数逻辑单元ALU,通用寄存器,数据缓冲寄存器(DR),程序状态寄存器(PSWR)组成、
收控制器的命令而进行动作----执行部件
1)控制所有的算数运算,和逻辑运算
算数操作产生一个运算结果,逻辑操作产生一个判决(bool值)
CPU中的主要寄存器:
有六种:
注意:指令寄存器保存当前的指令 而PC指向下一条指令
指令周期
通常取指令 执行指令 循环 以此来自动工作
时钟周期:
,是处理操作的最基本单位
CPU周期:为了划分指令的执行阶段而人为定义的周期,通常用内存中读取一个指令字的最短时间规定CPU周期。
一条指令最少需要两个CPU周期:
【取码+译码】 + [执行]
//其中执行最少一个CPU周期
单周期CPU:用最长指令完成时间定义一个时钟周期,非常浪费
:把指令执行分为多个阶段,每个阶段在一个T周期内完成,可以用不同T周期来完成一条指令,我们讨论这种
指令流程
如mov:
: PC-->地址总线-->指令寄存器-->PC指向下一条-->指令译码器-->操作控制器OC发出信号完成一系列操作-->指令结束
公操作符号:~符号 ,一条指令执行完毕后,CPU所开始进行的一系列操作。(取指令也是公操作--一条指令结束后如果没有其他请求会自动执行下一条指令)
操作控制器:
对数据的流向加以控制,如经过哪个寄存器或三态门。
根据指令操作码和时序信号,产生各种操作控制信号。---
通常分为:微程序控制器1)--存储逻辑技术 / 硬布线控制器2)--时序逻辑技术
微程序控制器
微指令(发出控制信号)-->微程序-->整个指令系统(整个程序)
微程序设计技术就是利用软件方法来设计硬件的一门技术
把整体操作进一步细分
把操作控制信号看成一个个微指令-->推动着微操作的执行
微操作是执行部件中的最基本操作,根据具体硬件逻辑关系分为两种:
1)相容性:能同时存在的微操作(如ALU的+操作 和控制4的)
2)互斥性:如多路开关的控制门(468 只能选择一种进行)
多路开关:一个输入端代表着来自寄存器的信息,另一个输入端则作为操作控制端,只有当两个都有输入时,才输出
一个cpu周期中,一组实现一定操作功能的微命令的组合,构成一条微指令。
由操作控制 和顺序控制两大部分组成:
1)操作控制部分:用来发出不同的控制信号,如置为1则表示发出微命令 如(ALU-R1微命令)
注意:一般给出的控制信号都是节拍电位信号(CPU周期),包含一个CPU周期。且发出的信号也要控制时间
2)顺序控制部分:用来确定下一条微指令的地址,一条条微指令序列构成微程序(一条机器指令)。
通过P1P2标志位来判断是直接用20-23的地址,还是进行判别测试---会对20-23的位进行修改--按修改后的地址执行
由控制存储器,微指令寄存器,地址转移逻辑三大部分组成
1)控制存储器:是一种只读型存储器,存放实现全部指令系统(整个程序)的微程序,读出一条微指令并执行完毕的周期称为微指令周期
2)微指令寄存器:
分为微地址寄存器:决定下一条微指令的地址
微命令寄存器:存放由控制寄存器读出的一条微指令信息
3)地址转移逻辑:判别P和执行部件的返回信号,来自动完成微地址的修改
:
可以设计的跟CPU周期一样
用T4的上升沿存入数据,剩余时间读取下条指令
:
微指令序列组成微程序,对应着一条机器指令
前者与内存有关,后者与控制存储器有关
可以看出,一条机器指令可以被微化,分为很多微指令去执行---进入微程序控制流程。
微程序举例:
其中一个黑方框,就是一个微程序(机器指令)
微程序设计技术
设计要求:
1)有利于缩短微指令字长
2)有利于减小控制器存储器的容量
3)有利于提高微程序执行速度
4)有利于对微指令的修改
5)有利于提高微程序设计的灵活性
:
1)直接表示法,用操作控制字段的每一位表示一个微指令;缺点是字段较长,控制储存器容量大。优点是简单直观
2)编码表示法(字段表示法):把一组相斥的微命令信号组成一个小组(字段),然后通过译码器对每一个微命令信号进行译码,输出即为操作控制信号
一个字段可以表示 2^n种微指令
3)混合表示法:综合起来
1)计数器方式 :跟PC差不多,直接指向下一条微指令地址
优缺点:结构简单,并行转移较弱,速度慢,灵活差
2)多路转移方法:用地址转移逻辑来产生下一条微指令地址,有N个判断标志位的话,就能转移到2^N个微地址中的一个。
优缺点:实现多路并行转移,灵活好,速度快,但需要组合逻辑方式来设计
:
1)水平型微指令:一次性定义操作微命令的微指令(如图5.22 能一次性执行多条微指令)
2)垂直型微指令:微操作编码。由操作码规定微指令。类似于OP
类比:
水平并行强,效率高,灵活,执行一条指令时间短(因为垂直需要编译,而水平一般直接控制变量)
水平型难以掌控,与机器指令差异很大,很难学
硬布线控制器:
把控制部件看作产生专门固定时序控制信号的逻辑电路。一旦布线很难修改。
是由门电路和触发器构成的复杂树型逻辑网络。
通过激活一系列彼此不相同的控制信号来实现对指令的解释
输出信号C是一系列的函数,时序信号包括节拍电位和节拍脉冲
C=f(指令操作译码器输出,时序信号,状态条件信号)
这一信号C,以此来加以控制
表达式
点号表示逻辑与,M节拍电位 T节拍脉冲 B状态条件信号 I操作码译码输出
----------
通过节拍电位,和节拍脉冲信号来定时,可以看出不同指令需要的CPU周期不同,可以设计成跳过多余的节拍(如mov的第三节拍)
时序产生器:
操作控制器产生的信号必须定时,。
时序信号
时序信号产生器产生时序信号:一旦被启动,CPU就开始执行指令
硬件特性决定了时序信号的基本体制是:
控制信号加在触发器的时钟输入端,数据加在触发器的电位输入端(电位的高低表示数据是0还是1)
根据冯诺依曼结构,数据和指令都放在同一个内存下,怎么分辨呢:从时间上来说,取指令发生在第一个CPU周期中,数据操作发生在第二个+CPU周期中。
多级时序体制
硬布线控制器中: 主状态周期---节拍电位----节拍脉冲三级体制
微程序控制器中:节拍电位---节拍脉冲 二级体制
: 互相对应关系
主状态周期:指令周期
节拍电位:CPU周期,机器周期
节拍脉冲:时钟周期T
产生器构造
1)时钟源:为脉冲发生器提供稳定的脉冲信号
2)环形脉冲发生器:产生一组有序的间隔相等或不等的脉冲序列。提供给下一级的译码使用
3)~译码:通过译码电路部件产生 所需要的 节拍脉冲(CPU周期,内部还是一个个T),这时候还没有被允许发送,只有被启停控制部件允许,才能发送
4)启停控制逻辑:电源一旦接通,就会产生原始的节拍脉冲信号,但只有启停机器运行的情况下,时序机器才被允许发送CPU所需的节拍脉冲。
同样对于读写时序信号也需要由启停逻辑部件控制
CPU周期数控制方式
1)同步控制方式: 采用周期全统一方式/将大部分指令固定在一定时间内
2)异步控制方式:需要多少时间就占用多少时间,每条指令周期都可以有不同的CPU周期数
也可以是等待上一条指令完成后发回的“回答”信号
3)联合控制方法:
a:大部分序列安排在固定周期中,少部分用“回答”信号的方式来作为结束标志
b:CPU周期的节拍脉冲数固定,但每条指令的CPU周期不定长 ( 微程序控制器)
微操作控制信号的产生
微程序控制器:微操作控制信号由微指令产生,并且可以重复利用
硬布线控制器:由bool代数值的函数产生
设计过程:寻找产生同一个微操作信号的所有条件,并与适当的时序信号结合,写出bool函数表达式并简化,用编程器件或门电路来实现
总结:
CPU通过操作控制器发出指令信号(微指令)加上 时序产生器产生的脉冲信号(节拍电位,脉冲电位)的约束,来控制执行部件的运行。
通过微化机器指令来表示cpu指令信号对执行部件的控制
对应制约关系
微指令--节拍脉冲--时钟周期
微程序---机器指令--多个节拍电位--多个CPU周期
微指令系统---整个程序--主状态周期
CPU的流水线设计
划分为一系列子任务流水执行
由于流水执行:大部分指令在一个CPU周期内完成
并行性:
1)时间并行:指时间重复,在同一时间间隔内,轮流重叠一套硬件设备的各个部分
2)空间并行:指资源重复,常用在多处理器系统和多计算机系统(多台电脑一起?分布式操作系统/网络操作系统)
3)时间+空间:
超标量技术:并行的同时,有两条以上的指令流水线,可以同时执行两个任务的相同子步骤
结构
由指令部件,指令队列,执行部件组成三级流水线。每一级流水线内部也可以流水线实现
理解图
流水线分类
1)指令流水线:指令步骤的并行:划分为取指令,译指令,执行等子步骤并发执行
2)算数流水线:采用流水算数运算器
3)处理机流水线:宏观流水线,应用在多机系统中
冲突问题解决
1)资源相关:如同时访问一个存储器
解决:延迟/增设一个存储器
2)数据相关:如先读后写
解决:设若干结果缓冲器,供后序指令直接使用--定向传送技术
3)控制相关:由于转移指令,使本来流水的指令序列不能按照规划运行
解决:
延迟转移法:先执行再转移----继续完成跳转指令后面的指令,正好弥补重新排列指令序列的 时间
转移预测法:直接先把转移后的指令称为流水线的一部分(提前预测)
动态流水调度
对指令重排防止发生处理器阻塞的硬件设计,分为三大类单元
RISC CPU
控制器多采用硬布线方式,更快速的
第六章 :总线系统
【计算机组成原理】 总线 - 宁任翃 - 博客园 (cnblogs.com)
类型:
1)内部总线:CPU内部连接各寄存器以及运算部件之间的总线
2)系统总线:CPU同步其他高速功能部件的总线
内部按功能分为{
地址总线
数据总线
控制总线
}
3)I/O总线: 中,低速 I/O设备之间互相连接的总线
特性
1)物理特性:物理连接方式,根数,插头形状等
2)功能特性:描述了每一根的功能,如地址总线宽度表示了能够访问的范围
3)电气特性:传递方向以及有效电平范围
4)时间特性:与时序关系的结合才能正确使用
标准化
PCI总线标准:
在层次结构的第二层,与处理器无关的高速外围总线
。
:
pci总线的改进,不同点:
1)高度差分传输:通过 D+ D-两根信号线传输,通过接收端比较差值来判断逻辑1/0
2)串行传输:由于并行传输结构复杂,有时候不如串行传输
3)全双工端到端连接:类似于网络传输?基于包的传输
Future bus+ 总线标准:
是一个高性能的异步总线标准。其技术要求是:
(1)一个与结构、处理器、技术无关的开发标准。 (2)基本上是一个异步数据定时协议。 (3)允许采用可选得源—同步式协议,用来实现高速得块数据传输。 (4)支持32位或64位寻址,数据线的长度动态可变(32位、64位、128位、256位),以满足不同带宽的要求。 (5)全分布式的并行仲裁协议及集中式仲裁协议,并支持线路交换式和分离业务协议。 (6)提供对容错和高可靠性系统的支持。 (7)提供对Cache共享存储器的支持。 (8)提供一个兼容的消息传递定义。 Futurebus+总线是迄今为止最杂的总线标准,覆盖了物理层和逻辑层。它既可用于CPU总线,也可用于高速外围总线而与PCI总线竞争。Futurebus+和PCI都支持很高的数据传输率,但PCI总线的物理范围较小,适合以低成本的小系统(如PC机),而Futurebus+的目标是提供灵活和宽广的能力,以满足各类高性能系统的要求,适合于高成本的较大规模计算机系统。
总线连接方式
单总线结构
1)对于输入输出设备来说,跟主存的操作方法一样-----全部统一编址
多总线系统:
1)通过南桥/北桥与各种类型的总线相联{
是一个起到屏蔽上层或下层细节作业的逻辑芯片,如上层CPU升级时,只需要更改北桥芯片
北桥:CPU总线--PCI总线
南桥:PCI总线--ISA总线
}
2)按照功能分为很多模块:如 CPU-cache模块/ IO适配器模块
3)一般具有层次结构,速度差异较大的设备使用不同种类总线 {
按照层次
CPU总线:CPU与存储器的总线,主要用于访问存储器
PCI总线:用于连接高速I/O设备模块 ,上连北桥,下连南桥
ISA总线:用于与低速I/O设备连接
}
接口
接口/ I/O功能模块 通常称为I/O接口:外围设备连接
1) 外围设备里自带设备控制器,负责与接口连接
2)具有控制,缓冲,状态,转换,整理,程序中断(中断外围设备)等功能
3) I/O接口模块一般有两个接口:
信息传输方式
串行传输:
通过 同步脉冲 +位时间 来表示表示逻辑1/0
只需要一条传输线
优缺点:效率慢,成本低,结构简单
并行传输
通过 电位+多条传输线 来表示 ---可以一次性传输多位
每一位就要一条传输线
优缺点:效率高,结构复杂,需要多条传输线
波特率/总线带宽
带宽:
定义总线理论上所能达到的最高传输速率(MB/s),收到实际物理影响
== 一次传输的字节数/周期 == 一次传输的字节数*f(时钟频率)
波特率
每秒钟传送的bit数
比特位(串行位时间)占用的时间 T是比特率的倒数
总线仲裁
每个模块有主方和从方,如CPU访问内存,CPU主方-存储器从方
主方:主设备,占用总线的控制权
从方:响应主方请求 为了解决多个模块(主设备)同时竞争总线控制权的问题,必须有总线仲裁设备。
-------------------------------------
1) 策略:优先级策略 / 公平策略
2)按照仲裁电路的物理位置不同:分为 集中式仲裁 和 分布式仲裁两类
集中式
有一个统一的总线仲裁器(控制器),负责处理请求信号,一般是CPU的一部分,单独的功能模块
每个设备接口(模块)都有一个序号
BS线为1,表示总线正在被使用
BR:送往仲裁器的请求信号线
BG:仲裁器送出的总线授权线
1) 链式查询方式:BG串行的从序号1 接口开始 ,一个一个往下查询,如果有则获得控制权
优缺点:优先级策略,靠近仲裁器的优先级高
用很少的传输线就能完成查询,但电路故障敏感-前面坏了,后面就没法用,且优先级固定
2) 计数器定时查询:BR线发出请求,计时器从0开始计时,通过地址线发给各设备,如果计数值与BR的'设备序号'一致时,获得控制权
如果每次完成后都从0开始计时---优先级策略
从上次计时出开始计时---平等策略
优缺点:可以设置初始值等来改变设备的优先级,但以增加线数为代价
3) 独立请求方式:每一个设备都有独立的BR,BG线,仲裁器中有一个排队电路
优先级策略
优缺点:响应时间快,优先次序控制灵活,但开销大
分布式仲裁
每个潜在的主方模块都有自己的仲裁号,和仲裁器。共享一个仲裁总线。
请求时,将自己的仲裁号发到仲裁总线上,仲裁器用总线上的号与自己的模块号比较,如果自己较小,则撤销自己的请求。由于设备速度不一样,需要反复比较才能得出稳定结果
优先级策略
总线的时序关系
一般分为五个阶段:
请求总线--总线仲裁---寻址--信息传送--状态返回
为了同步操作,必须有定时协议,指定事件出现在总线上的时序关系
同步总线定时协定
总线中包含时钟信号线,公用一个公共时钟,每个模块给予的时间差不多。
大多数事件都只占据一个单一的时钟周期(如读周期有延迟需要两个周期)
由于由统一的时钟来规定操作,且按最慢的模块来设计公共时钟,所以设计时各模块速率基本一致
优缺点:具有较高的传输频率,但模块速度差异较大时总线效率损失大
异步总线定时协议
建立在应答式或互锁机制上,不需要公共时钟,总线周期长度是可变的---通过返回信号(状态)来开始下一个事件
优缺点:灵活,根据需求来分配时间,周期可变,但增加总线的复杂度和成本
半同步总线定时协议
在同步定时协议的基础上,增加一根联络信号线,用来发出延时周期的信号,如插入一个时钟周期
优缺点:增加一点成本,但适应能力大大提高
周期分裂式总线定时协议
读周期时,地址线发出地址时,通常有若干个时钟周期的时间延迟(储存器内部的准备时间),数据才能发回CPU,这几个周期总线被占用但并无实际数据传输,浪费了总线资源。
分为两个子周期
1)发从数据地址后,立马和总线断开,重新仲裁
2)被读设备重新发出申请
优缺点:读数据双方都是主方,以硬件复杂度为代价换取总线性能提升
总线传输基本操作
1)读写操作:读操作可以用分列式定时协议
2)块传送操作(突发/猝发式传送):只需要给出块的起始地址,对固定长度的数据一个接一个的读出或写入。通常块长为字长的4倍
3)读后写,写后读:组合操作,只需要给出一次地址,完成两次操作
4)广播,广集操作:一个主方--多个从方写操作--广播。多个从方在总线上进行AND/OR操作--广集--用于检测多个中断源
第七章 外存设备
理论上
组成部分
1)存储介质:如磁盘的磁化元表示一位
2)驱动装置
3)控制电路
磁记录原理
利用磁表面存储,涂抹某些磁性材料来作为载体。
磁盘,磁带都属于磁表面存储器
优点:储存容量大,价格低,可长期保存
缺点:存取速度较慢,机械结构复杂
原理
利用磁性材料与电流的作用来进行读取;
利用磁感应强度B 来表示逻辑1/0
------->
写入时,磁头线圈加电,在周围产生磁场,磁化其下的磁性材料,电流方向不同,磁场的方向也不同,可用 0 和 1 区分。(电生磁)
读取时,磁头线圈切割磁场线产生感应电流,磁性材料的磁场方向不同,所以产生的感应电流方向也不同。(磁生电
磁盘
现在一般说的是温切斯特磁盘(可移动磁头固定盘片的磁盘)磁盘原理和技术详解_缥缈一叶舟的博客-CSDN博客_磁盘的工作原理
磁盘阵列RAID
多块磁盘结合称为一整块磁盘的技术
RAID磁盘阵列是什么(一看就懂) - 知乎 (zhihu.com)