24考研王道计算机组成原理笔记
前言
该文章笔记来源于2023王道计算机组成原理网课。删除了部分大纲之外的内容,并做了一些补充。主要是为了自己考研复习使用。也方便大家参考学习!
一、计算机系统概述
1.1 计算机的发展
数据库管理系统–系统软件
数据库系统–应用软件
1.2 计算机硬件
1.2.1 计算机硬件的基本组成
早期的冯诺依曼机
“存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直到程序执行结束。
冯诺依曼计算机的特点
- 计算机由五大部件组成
- 指令和数据以同等地位存于存储器,可按地址访问(统一编址,指令和数据所在存储单元无差异)
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入输出设备与存储器之间的数据传送通过运算器完成)
数据驱动方式:
- 控制流驱动:指令–>数据
- 数据流驱动:数据–>指令
现代计算机的结构
知识点回顾
1.2.2 各个硬件的工作原理
主存储器的基本组成
运算器的基本组成
控制器的基本组成
计算机的工作过程
总结:
知识点回顾
注:现在的计算机通常把MAR,MDR也集成在CPU内
1.2.3 计算机系统的层次结构
汇编语言指令和机器语言指令一一对应
LOAD: 取数操作 ,MUL: 乘法操作
编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后在执行机器语言程序(只需翻译一次)。 例如:使用我们使用C语言写的程序,经过编译和汇编之后,最终形成.exe文件,该.exe文件是用机器语言描述的程序,每次运行这个程序,只需加载.exe文件。
解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着在翻译下一句(每一次都要翻译)。 编译型语言执行效率较解释型语言高。 注:编译、汇编、解释程序,可统称为“翻译程序”。
计算机体系结构:机器语言程序员所见到的计算机系统的属性概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O机理)
- 如何设计硬件与软件之间的接口。
计算机组成原理:实现计算机体系结构所体现的属性,对程序员“透明”(具体指令的实现)
- 如何用硬件实现所定义的接口。
“透明”:看不见
“公开透明”:看得见
知识点回顾
1.3 计算机性能指标
- 机器字长:能够直接处理的二进制数据的位数
- 指令字长:一个指令中包含的二进制代码的位数
- 存储字长:一个存储单元二进制数据的位数
1.3.1 存储器性能指标
- MAR位数反应存储单元的个数(最后支持多少个)
- MDR位数=存储字长=每个存储单元的大小
总容量=存储单元个数×存储字长 bit =存储单元个数×存储字长/8 Byte
Eg:MAR为32位,MDR为8位
总容量=2^32×8 bit=4GB
n个2进制位能表示多少种不同的状态
2^10:K
2^20:M
2^30:G
2^40:T
1.3.2 CPU性能指标
注:公式中主频的值反映的是:每秒钟会出现多少个时钟周期。
注:注意与存储器的容量或者文件的大小中的K、M、G、T的区别
1.3.3 系统整体的性能指标
- 数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)
- 吞吐量:指系统在单位时间内处理请求的数量。他取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。
- 响应时间:指从用户向计算发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销时间)。
动态测试:基准程序(跑分软件)是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较。
思考:
1、主频高的CPU一定比主频低的CPU快吗?
答:不一定,如两个CPU,A的主频为2GHz,平均CPI=10,一秒钟可以执行0.2G条指令;B的主频为1GHz,平均CPI=1,一秒钟可以执行1G条指令。
2、若A、B两个CPU的平均CPI相同,那么A一定更快吗?
答:不一定,还要看指令系统,如A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令。
3、基准程序执行的越快说明机器性能越好吗?
答:基准程序中的语句存在频度差异,运行结果也不能完全说明问题。
知识点回顾
存储器的容量:衡量计算机的存储容量
机器字长:衡量计算机并行处理的能力
数据通路带宽:衡量计算机在功能部件之间传送数据的能力
二、数据的表示和运算
2.1
2.1.1 进位计数制
任意进制转换成十进制
二进制<=>八进制、十六进制
各种进制的常见书写方式
十进制转换成任意进制
真值和机器数
知识回顾与重要考点
2.1.3 无符号整数的表示和运算
无符号整数,即“自然数”,0、1、2、3、4、5…
C语言中的无符号整数:
unsigned short a=1; //无符号整数 (短整型 2B)
unsigned int b=2; //无符号整数 (整型 4B)
无符号整数的表示
无符号整数的加法运算
无符号整数的减法运算
2.1.4 带符号整数的表示和运算_原反补
带符号整数,即“整数”,-2、-1、0、1、2、3、4、5…
C语言中的带符号整数:
short a=1; //带符号整数 (短整型 2B)
int b=-2; //带符号整数 (整型 4B)
原码表示
原码的缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理
用补码表示真值–符号位可以参与运算
原码、反码、补码的转换(计算)
原码、反码、补码快速转换技巧(手算)
补码的加法运算(例1)
补码的加法运算(例2)
补码的减法运算
补码的减法运算(例3)
注:对比无符号整数的减法运算。优点:用同一套电路即可处理所有的加减法,省钱!
知识回顾与重要考点
2.1.5 原反补码的特性对比
注:反码与原码表示的范围是一样的,当n是整数时,真值负数最小时,原码是1111 1111,反码是1000 0000。
2.1.6 移码
2.1.7 定点小数
定点小数的原码
定点小数原反补码的转换
注:和定点整数一模一样。
定点小数的加减法运算
小数的加减运算和整数的处理逻辑是一样的。
定点小数VS定点整数
2.2
2.2.1 电路的基本原理、加法器设计
ALU(算数逻辑单元)
基本的逻辑运算
复合逻辑
异或:AB不同Y为1,相同为 0;同或:AB相同Y为1,不同为0。
一位全加器
如果输入(Ai、Bi、Ci-1)只有一个1,那么进位为0;若输入至少2个1,则进位为1。
串行加法器
并行加法器
本节总览
2.2.2 并行进位加法器
G1、P1在C1、C2、C3、C4的运算当中,可以把G1、P1送到后边的全加器里。G2、P2…也是如此,一般套娃到C4就会结束,不然电路就会很复杂。
2.2.3 补码加减运算器
加法器原理
cin是加到A和B的最低位,cout是A和B的最高位相加后向更高位产生的一个进位信息。
计算机底层的硬件在处理加法或减法时,不论输入的是有符号数还是无符号数,底层的硬件都是用同一套电路来处理的,最后在我们判断是否发生溢出的时候,有符号数的判断逻辑和无符号数的判断逻辑存在显著区别。那有符号数和无符号数是如何判断溢出的呢?
2.2.4 标志位的生成
2.2.5 定点数的移位运算
原码算数移位
注:定点小数算数移位同理。
反码的算术移位
补码的算术移位
总结
逻辑移位(无符号数算术移位)
循环移位
知识回顾
2.2.6 原码、补码乘法运算
1、原码乘法运算
手算乘法(二进制)
原码一位乘法(小数)
当前位为1,则ACC加上被乘数,之后更新ACC。
第一个位基(01101)和第二个位基(01101)相加的时候,需要错位,计算机处理的方式是将ACC、MQ里的数据统一右移一位。
当前位为1,则ACC加上被乘数,之后更新ACC。
当前位为0,则ACC加上0,ACC的值不变,ACC、MQ里的数据逻辑右移一位。右移后当前位为1,则ACC加上被乘数,更新ACC。
统一右移一位之后,当前位是乘数的符号位,不参与运算,此时已经重复4次。
最后不要忘了修改符号位。
原码一位乘法手算模拟
注:以上是小数的一位乘法,整数的一位乘法类似。只需把小数点改成逗号,注意整数小数点固定位置。
2、补码乘法运算
补码一位乘法
2.2.7 原码、补码除法运算
1、原码的除法运算
手算除法(十进制)
手算除法(二级制)
原码除法:恢复余数法
将ACC的值更新为11110,此时相减结果是个负数,说明应该上商0。恢复余数。
x,y均为0,异或之后结果为0.则符号位为0.
原码除法:恢复余数法(手算)
原码除法:加减交替法(不恢复余数法)
注:定点小数的除法运算,最后的商也必须是定点小数,因此在除法运算中,我们规定被除数一定要小于除数。如果被除数大于除数,商就会大于1,而定点小数无法表示大于1的范围。通过第一步的商,如果商为1,那么硬件电路就会检测出这个问题,并停止除法运算。
2、补码的除法运算
补码除法:加减交替法
异号相除:够减商0,不够减商1
同号相除:够减商1,不够减商0
够减:被减数绝对值大于减数
3、除法运算总结回顾
2.2.8 C语言类型转换
2.2.9 数据的存储与排列
大小端模式
边界对齐
边界对齐方式:起始地址能被自身长度整除!
2.3
2.3.1 浮点数的表示
定点数的局限性:定点数可表示的数字范围有限,但我们不能无限制的增加数据的长度。
从科学计数法理解浮点数
浮点数的表示
浮点数尾数规格化
规格化浮点数的特点
知识点回顾
2.3.2 IEEE754
移码
这个运算有点特殊。
当偏置值为2^n-1时,此时移码相对于之前整体下移了一位。
IEEE754标准
看两个例子,就明白了十进制与IEEE754的转换过程了。
若要表示的数绝对值还要更小,怎么办?【阶码全1,阶码全0用作特殊用途】
单精度浮点数阶码占8bit,能表示范围0~255。0代表全0,255代表全1。
知识点回顾
2.3.3 浮点数的运算
浮点数的加减运算
X=-0.101×2^(-101)
-0.101: 补码:1.011 双符号位补码:11.011 扩展:11.011000000
2^(-101): 补码:1011 双符号位补码:11011
浮点数的加减运算-舍入
强制类型转换
本节回顾
三、存储系统
3.1 存储系统基本概念
存储器的层次化结构
存储器的分类–层次
存储器的分类–存储介质
- 半导体存储器:主存、Cache
- 磁表面存储器:磁盘、磁带(以磁性材料存储信息)
- 光存储器:光盘(以光介质存储信息)
存储器的分类–存取方式
相联存储器既可以按地址又可以按内容寻址。
存储器的分类–信息的可更改性
- 读写存储器–即可读、也可写(如:磁盘、内存、Cache)
- 只读存储器–只可读,不能写
存储器的分类–信息的可保存性
- 断电后,存储信息消失的存储器–易失性存储器 (主存、Cache)
- 断电后,存储信息依然保持的存储器- – 非易失性存储器(磁盘、光盘)
- 信息读出后,原存储信息被破坏-- -破坏性读出(如DRAM芯片,读出数据后要进行重写
- 信息读出后,原存储信息不被破坏-- - 非破坏性读出(如SRAM芯片、磁盘、光盘)
RAM都是易失性存储器;
ROM都是非易失性存储器;
随机存取存储器:RAM(专有名词);
随机存取:是存取方式,ROM和RAM存取方式都是随机存取。
存储器的性能指标
知识回顾
3.2
3.2.1 主存储器的基本组成
基本的半导体元件及原理
注:MOS管可理解为一种电控开关,输入电压达到某个阈值时,MOS管就可以接通。
存储器芯片的基本原理
驱动器在译码器后面,保证译码器输出的电信号是稳定可靠的。
片选线作用:若有多个存储芯片,保证此次读取指定芯片的数据,CS给予低电平,其他芯片为高电平。
寻址
本节回顾
3.2.2 SRAM与DRAM
DRAM(动态RAM)用于主存,SRAM(静态RAM)用于Cache
DRAM芯片:使用栅极电容存储信息
SRAM芯片:使用双稳态触发器存储信息
1:电容内存储了电荷
0:电容内未存储电荷
若触发器里存储的的二进制的1,当字选择线接通之后,BLX输出低电平信号
若触发器里存储的的二进制的0,当字选择线接通之后,BL输出低电平信号
写入0:给BL加低电平,给BLX加高电平,呈现A低B高
栅极电容:每个存储元制造成本更低,集成度高,功耗低。电容内的电荷只能维持2ms,即便不断电,2ms后信息也会消失,2ms之内必须“刷新”一次(给电容充电)
双稳态触发器:每个存储元制造成本更高,集成度低,功耗大。只要不断电,触发器的状态就不会改变
DRAM的刷新
分散刷新不存在死区
DRAM的地址线复用技术
地址:00000000。
同时送行列地址,需要8根地址线。两次送只需要4根地址线。
地址线复用技术:地址线是原来的1/2(行和列相等)且地址线分行、列两次传送。
这里地址线取决于行和列的最大值。
地址引脚:log2max{行,列}
3.2.3 只读存储器ROM
EPROM不能作为随机存储器。
本节回顾
3.3
3.3.1 主存储器与CPU的连接
现在的计算机
存储器芯片的输入输出信号
WE头上没有横杠,高电平表示写,低电平表示读。
增加主存的存储字长-位扩展
增加主存的存储字数-字扩展
线选法
译码片选线
主存容量扩展-字位同时扩展
①可以存储低四位–(D0、D1、D2、D3)
②可以存储另四位–(D4、D5、D6、D7)
本节回顾
补充:译码器
3.3.2 双端口RAM和多模块存储器
双端口RAM
多体并行存储器
应该取几个“体”
当m=T/r时,存取流水线的效率最高,存储体的数量最少,成本最低。
思考?
假设有m个存储体,第一种方法:可以根据体号确定它属于第几个存储体;第二种方法:用十进制地址x对m取余
多模块存储体
本节回顾
3.4
3.4.1 磁盘存储器
外存储器
1、磁盘设备的组成
2、磁盘的性能指标
磁盘阵列
RAID0–>RAID5,冗余信息占比越少。
本节回顾
3.4.2 固态硬盘SSD
固态硬盘的结构
3.5
3.5.1 Cache基本概念和原理
局部性原理
性能分析
有待解决的问题
注:每次被访问的主存块,一定会被立即调入Cache.
- 如何区分Cache与主存的数据块对应大小–Cache和主存的映射方式
- Cache很小,主存很大。如果Cache满了怎么办–替换算法
- CPU修改了Cache中的数据副本,如何确保主存中数据母本的一致性–Cache写策略
知识回顾
3.5.2 Cache和主存的映射方式
全相联映射
直接映射
主存块号%2^3,相当于留下最后三位二进制数
若Cache总块数=2^n,则主存块号末尾n位直接反映它在Cache中的位置
将主存块号的其余位作为标记即可
组相联映射
Cache行:标志位(有效位、一致性维护位、替换算法控制位、标记位)+数据位(存放数据)
注意区分cache行和cache地址,装入cache的地址是低c+b位cache容量:是指cache存储数据的大小;cache总容量:是在cache容量基础上,加上所有标记cache块的地址所占的内存。
知识回顾
3.5.3 Cache的替换算法
随机算法RAND
先进先出算法(FIFO)
近期最少使用算法(LRU)
如上图4个Cache块,只需要2bit的信息来表示计数器,刚好可以表示0、1、2、3这四种数字。使得硬件电路变得很简单。
LRU算法–基于“局部性原理”,近期被访问过的主存块,在不久的将来很可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀。Cache命中率高。
若被频繁访问的主存块数量>Cache行的数量,则有可能发生“抖动”,如:{1、2、3、4、5、1、2、3、4、5…}
最不经常使用算法(LRU)
知识回顾
3.5.4 Cache写策略
写命中–写回法
写命中–全写法
写不命中–写分配法
写不命中–非写分配法
多级Cache
现代计算机常采用多级Cahe,离CPU越近的速度越快,容量越少,离CPU越远的速度越慢,容量越大。
知识回顾
3.6
3.6.1 页式存储
逻辑地址VS物理地址
知识回顾
3.6.2 虚拟存储器
页式虚拟存储器
段式虚拟存储器
段页式虚拟存储器
四、指令系统
4.1
4.1.1 指令格式
指令的定义
指令(又称机器指令):是指计算机执行的某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己的指令系统,不能执行其他系统的指令。
指令格式
零地址指令
一地址指令
二、三地址指令
四地址指令
指令-按地址码数目分类
指令-按指令长度分类
机器字长和存储字长固定不变。
指令-按操作码长度分类
指令-按操作类型分类
本节回顾
4.1.2 扩展操作码指令格式
指令由操作码和若干地址码组成
定长指令字结构:指令系统中所有指令的长度相等。
变长指令字结构:指令系统中所有指令的长度不等。
定长操作码:指令系统中所有指令的操作码长度相等
可变长操作码:指令系统中所有指令的操作码长度可变
定长指令字结构+可变长操作码–>扩展操作码指令格式(不同地址数的指令使用不同长度的操作码)
4.2
4.2.1 指令寻址
顺序寻址(PC)+“1”–>PC
跳跃寻址:由转移指令指出
本节回顾
- 转移指令是通过修改PC实现的
- 程序计数器PC:存放下一条指令所在单元的地址
- 累加器ACC:用来存放操作数或运算结果
- 指令寄存器IR:临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。
- 地址寄存器MAR:用来保存当前CPU所访问的内存单元的地址。
4.2.2 数据寻址
直接寻址
间接寻址
寄存器寻址
寄存器间接寻址
隐含寻址
立即寻址
本节回顾
4.2.3 数据寻址–偏移寻址
基址寻址
变址寻址
基址&变址复合寻址
相对寻址
扩展:ACC加法指令的地址码可采用“分段”方式解决,即程序段和数据段分开。如果固定数组的首地址,那么数组地址7就不用改变。
基址寻址中程序浮动指的是整段程序在内存里的浮动,相对寻址中程序浮动指的是一段代码在程序内部的浮动。
本节回顾
硬件如何实现数的“比较”
注:无条件转移指令jmp2,就不会管PSW的各种标志位。PC=2
4.2.4 数据寻址–堆栈寻址
本节回顾
4.3
4.3.1 高级语言与机器级代码之间的对应
X86汇编语言指令基础
以MOV指令为例
X86架构CPU,有哪些寄存器?
通用寄存器另外两种表示方式
更多例子
总结
4.3.2 常用的X86汇编语言指令
常见的算数运算指令
destination:目的地(d目的操作数)
source:来源地(s源操作数)
目的操作数d不可以是常量
在进行除法运算之前,需要把被除数位扩展,
如32b/32b–>64b/32b,存放64位的被除数需要两个寄存器,edx:eax,高32位存放在edx,低32位存放在eax
X86汇编语言当中不允许两个操作数同时来源于主存。
4.3.3 ATu0026T格式和intel格式
4.3.4 选择语句的机器级表示
程序中的选择语句(分支结构)
无条件转移指令–jmp
无条件转移指令,类似于c语言里的goto语句
无条件转移指令无法实现if,else语句
条件转移指令–jxxx
示例:选择语句的机器级表示
扩展:cmp指令的底层原理
4.3.5 循环语句机器级表示
用条件转移指令实现循环
用loop指令实现循环
4.4 CISC和RISC
五、中央处理器
5.1 CPU的功能和结构
- 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
- 操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
- 时间控制。对各种操作加以时间上的控制。时间控制为每条指令按时间顺序提供应有的控制信号。
- 数据加工。对数据进行算数和逻辑运算。
- 中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
存储器容量:决定了计算机需要用来进行寻址的比特数,决定了地址的长度。
运算器的基本结构
CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共的通路上。
如:两个操作数分别来自主存和R0,最后结果存回R0,那么从主存中取来的操作数直接放入暂存器,就不会破坏运算前R0的内容。
在R0给的信号不稳定之前,ALU会产生一个输出信号送到内部总线上,就会与R0送到内部总线上的信号冲突,从而导致运算的错误。在ALU的输出端加一个暂存寄存器,等R0送到总线上的信号稳定之后,ALU把运算的结果放到暂存寄存器中,在ALU的输出稳定之后,让三态门导通,把运算结果送到内部总线上,给R0的输入端加上有效的电信号,就会把运算的结果输入到R0寄存器中。
控制器的基本结构
CPU的基本结构
本节回顾
5.2 指令周期的数据流
指令周期流程
指令周期的数据流-取址周期
指令周期的数据流-间址周期
指令周期的数据流-执行周期
执行周期的任务是根据IR指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流向。
指令周期的数据流-中断周期
指令执行方案
本节回顾
5.3
5.3.1 数据通路-单总线结构
数据通路通常指指令执行过程中数据经过的路径以及路径上的部件。
数据通路=电路+部件(组合+时序),并且由控制信号进行控制。
组合逻辑元件(操作元件):不能存储,如多路选择器MUX、ALU、译码器。
时序逻辑元件(状态元件):能存储,如寄存器。
数据通路-CPU内部单总线方式
以下内容结合1.2.2“计算机的工作过程”进行学习
每个时钟周期内,CU都会发出一组相应的控制信号,来完成某一个微操作,到下一个时钟周期,CU又会发出第二个控制信号,完成第二个微操作。
CPU内部总线方式-例题
(R0)目的操作数,有括号需要进行一次间接寻址,表示R0中存放的是操作数在主存中的存储地址。
R1源操作数,没有括号表示操作数直接存放在R1寄存器中。
5.3.2 数据通路-专用通路结构
专用数据通路方式-取值周期
采用CPU内部总线:结构简单,实现容易,性能较低,存在较多的冲突现象。
专用数据通路:结构复杂,硬件量大,不易实现,性能高,基本不存在数据冲突现象。
数据总线是双向的:CPU–>内存,内存–>CPU
地址总线是单向的:CPU–>内存
5.4
5.4.1硬布线控制器的设计
CU发出一个微命令,可完成对应微操作。如:微命令 1使得PCout、MARin有效。完成对应的微操作1(PC)->MAR
根据指令操作码、目前的机器周期、节拍信号(T0、T1、T2)、机器状态条件(如PSW中溢出、正负性等)、即可确定现在这个节拍下应该发出哪些微命令。
1 硬布线控制器
2 硬布线控制器的设计(不考,便于理解)
分析每个阶段的微操作序列
安排微操作时序的原则-取值周期
安排微操作时序的原则-间值周期
安排微操作时序的原则-执行周期
电路设计-组合逻辑设计
5.4.2 微程序控制器的基本原理
采用“存储程序”的思想,CPU出厂前将所有指令的“微程序”存入“控制器存储器”中。
微程序控制器的基本结构
微程序控制器的工作原理
小结
5.4.3 微指令的设计
微命令与微操作一一对应,一个微命令对应一根输出线
有的微命令可以并行执行,因此一条微指令可以包含多个微命令
相容性微命令:可以并行完成的微命令。
互斥性微命令:不允许并行完成的微命令。
微指令的编码方式
字段直接编码方式:
- 优点:可以缩短微指令字长
- 缺点:要通过移码电路后再发出微命令,因此比直接编码方式慢。
微指令的地址形成方式
例题-断定方式
知识回顾
5.4.4 微程序控制单元的设计
微程序设计的分类
- 静态微程序设计和动态微程序设计
静态:微程序无需改变,采用ROM
动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM - 豪微程序设计
豪微程序设计的基本概念
微程序设计用微程序解释机器指令
豪微程序设计用豪微程序解释微程序
硬布线与微程序的比较
微程序控制器回顾
5.5异常与中断
举个例子,你在图书馆复习408,在做某道题,你就是CPU(也就是CPU在执行当前指令)。
1.陷入:你想起来昨天晚上的那局王者被单杀,气不过,然后来了一把(你是学习态,想做游戏态的事情,是不是很像系统调用),打完又灰溜溜做题(返回下一条指令)。
2.故障:你突然发现这道题的知识点不会(也就是不在你的内存中),你就去翻书(外存),查到之后还要继续做这道题(返回本条指令)。
3.终止:你突然很累,大脑宕机,不想学习,直接回寝室睡大觉,不回来做题,这就是终止(不可恢复)。
4.外中断:和你自己没关系,旁边来了个妹妹,打断了你的学习,你看了十分钟又灰溜溜的做题,这就是外中断,和你自己(CPU)没关系。
5.6
5.6.1 指令流水线的基本概念
指令流水线的定义
一条指令的执行过程可以分成多个阶段(或过程)。根据计算机的不同,具体的分法也不同。
取指:根据PC内容访问主存储器,取出一条指令送到IR中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。
执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。
设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间:
指令流水线的表示方式
流水线的性能指标
5.6.2 指令流水线的影响因素和分类
机器周期的设置
IF:取指阶段;
ID:指令译码阶段(指令译码,从通用寄存器中取出当前指令所需要的操作数),imm立即数;
EX:执行阶段;
M:访存阶段;
WB:写回通用寄存器组
cache:data cache和insrtuction cache,将数据和指令放在两个独立的模块中,对这两个模块的访问可以并行进行。
影响流水线的因素
- 结构相关(资源冲突–”互斥“)
- 数据相关(数据冲突-”同步“)
- 控制相关(控制冲突)
①结构相关
②数据相关
如果有后续的指令可以提前执行,不需要依赖前序指令的执行结果,可以通过编译器调整指令顺序来解决数据相关。(类似于插入空操作)
③控制相关
流水线的分类
①部件功能级、处理机级和处理机间级流水线
- 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
- 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程。
- 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
- 处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
②单功能流水线和多功能流水线
- 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。
- 单功能流水线指只能实现一种固定的专门功能的流水线;
- 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流永线。
③动态流水线和静态流水线
- 按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
- 静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
- 动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。这样对提高流水线的效率很有好处,但会使流水线控制变得很复杂。
④线性流水线和非线性流水线
- 按流水线的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
- 线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。
- 非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。
流水线的多发技术
本节回顾
5.6.3 五段式指令流水线
常见的5类指令:运算类指令、LOAD指令、STORE指令、条件转移指令、五条件转移指令
运算类指令的执行过程
LOAD指令的执行过程
STORE指令的执行过程
条件转移指令的执行过程
无条件转移指令的执行过程
5.7
Tips:只考选择题
5.7.1 多处理器的基本概念
不太严谨的图,方便理解
单指令流单数据流SISD结构:一个指令流对应一个数据流
单指令流多数据流SIMD结构:一个指令流对应多个数据流
多指令流单数据流MISD结构:多个指令流对应一个数据流(事实上不存在)
多指令流多数据流MIMD结构:多个指令流对应多个数据流
M:Multiple
S:Single
l:Instruction
D:Data
UMA:统一存储访问
NUMA:非统一存储访问
5.7.2 硬件多线程的基本概念
六、总线
6.1
总线简图
总线的物理实现
6.1.1 总线概述
为什么要用总线?
早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备。
为了更好的解决I/O设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
总线的特性
1.机械特性:尺寸、形状、管脚数、排列顺序
2.电气特性:传输方向和有效的电平范围
3.功能特性:每根传输线的功能(地址、数据、控制)
4.时间特性:信号的时序关系
总线的分类(按总线功能)
数据通路表示的是数据流经的路径
数据总线是承载的媒介
①片内总线
片内总线是芯片内部的总线。
它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线。
②系统总线
系统总线是计算机系统内各功能部件。(CPU、主存、I/O接口)之间相互连接的总线。
按数据总线传输信息内容的不同,又可分为三类:数据总线、地址总线和控制总线。
③通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备)之间信息传送的总线,通信总线也称为外部总线。
6.1.2 总线的性能指标
总线标准
USB总线:
即插即用、热拔插(带电拔插)、菊花链形式连接众多外设
可扩充性好,一个USB控制器可连接127个外部USB设备
可以为低电压设备供电(5V)
高速传输,最新标准可达1280MB/s
多总线结构:
6.3 总线操作和定时
总线传输的四个阶段
- 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。 也可将此阶段细分为传输请求和总线仲裁两个阶段。
- 寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
- 传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送。
- 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则。
同步定时方式-读命令
同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。
在一个总线周期中,发送方和接收方可进行一次数据传送。
因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。
优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统。
异步定时方式
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双
方相互制约的“握手”信号来实现定时控制。
主设备提出交换信息的“请求”信号,经接口传送到从设备;从设备接到主设备的请求后,通过接口向主设备发出“回答”信号。
根据“请求”和“回答”信号的撤销是否互锁,分为以下3种类型。
- 不互锁方式
- 半互锁方式
- 全反锁方式
优点:总线周期长度可变,能保证两个工作速度相差很大的部件或者设备之间可靠地进行信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。
半同步通信
分离式通信
本节回顾
七、输入输出系统
7.1 输入输出系统及I/O控制方式
I/O接口:又称I/O控制器、设备控制器、负责协调主机与外部设备之间的数据传输。(I/O控制器就是一块芯片,常被集成在主板上)
I/O控制方式简介
DMA控制方式
通道控制方式
I/O系统基本组成
本节回顾
7.2 I/O接口
I/O接口的工作原理
接口与端口
统一编址 V.S. 独立编址
I/O接口的类型
知识回顾
7.3
7.3.1 程序查询方式
独占查询:CPU100%的时间都在查询I/O状态,完全串行。
定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的间隔内CPU可以执行其他程序。
7.3.2 中断的作用和原理
中断的基本概念
中断请求的分类
中断请求标记
中断判优实现
中断判优-优先级设置
- 硬件故障中断属于最高级,其次是软件中断
- 非屏蔽中断优于可屏蔽中断
- DMA请求优于I/0设备传送的中断请求
- 高速设备优于低速设备
- 输入设备优于输出设备
- 实时设备优于普通设备
中断处理过程
7.3.3 多重中断
中断屏蔽技术
7.3.4 程序中断方式
7.3.5 DMA方式