计算机完成一条指令分为三个过程:取指令(PC)、分析指令(IR)和执行指令(CU)。
这里贴两张王道的ppt来帮助回忆一下
CPU的功能和结构
CPU的功能
指令控制:控制执行顺序(PC、IR)
操作控制:控制功能部件(CU)
时间控制:实施操作定时(时序电路)
中断处理:处理异常情况和特殊请求(中断系统)
数据加工:算数逻辑运算(ALU、寄存器)
运算器
- 功能:完成指令规定的运算操作
- 结构:
- ALU:算数逻辑单元,通过内部电路实现算术和逻辑运算
- ACC:累加器,由通用寄存器构成,用来存放操作数或运算结果
- PSW:程序状态字寄存器,保留各种状态信息如溢出、进位、符号等等
- MQ:乘商寄存器,在乘除运算时,用于存放操作数或运算结果
- X:通用寄存器,用来存放操作数
- 暂存器:用于暂存从主存读来的数据
- 移位器:对运算结果进行移位运算
- 计数器:控制乘除运算的操作步骤
控制器
- 功能:取指令、分析指令、执行指令、总线管理
- 结构:
- PC(程序计数器):指出下一条指令在主存中的存放地址
- IR(指令寄存器):保存当前正在执行的那条指令
- CU(控制单元):由IR、ID、OC组成
- ID(指令译码器):仅对操作码部分进行译码,向控制器提供特定的操作信号
- OC(操作控制器):根据IR和PSW及时序信号,产生控制信号
- MAR(地址寄存器):存放想要访问的主存单元的地址
- MDR(数据寄存器):存放向主存写入的信息或读出的信息
考点
用户可见的寄存器:通用寄存器、PSW、PC
用户不可见的寄存器:MAR、MDR、IR、暂存寄存器
指令执行过程
指令周期 考点
由小到大依次是:
- 时钟周期:也称为节拍、CPU时钟周期、T周期,是时钟脉冲频率的倒数,是小的时间单位
- 机器周期:也称为CPU周期,是完成一个基本操作所需要的时间,包含若干时钟周期
- 指令周期:CPU从内存中取出并执行一条命令所需的全部时间,包括取指周期FE、间址周期IND、执行周期EX、中断周期INT,包含若干机器周期,由于个指令功能不同,指令周期也不相同
- 每个指令周期包含的机器周期数可以不等,每个机器周期内的节拍数也可以不等
取指周期
根据PC中的内容取出指令代码并存放在lR中
- 当前指令送至地址寄存器
(PC)→MAR - MAR中的指令地址通过地址总线传到主存,在主存中寻找这一地址的数据(这步一般省略)
MAR→M - CU发出控制信号(读),经控制总线传到主存 (这步一般省略)
1→R - 主存中读出MAR指向的内容经数据总线传到MDR
M→MDR - MDR的内容(指令)经控制总线传到IR
(MDR)→IR - CU发出控制信号,形成下一条指令地址
(PC)+1→PC
地址总线ABUS 数据总线DBUS 控制总线IBUS
间址周期
根据IR中指令地址码取操作数有效地址
执行周期
取操作数,根据指令字的操作码和操作数进行相应的操作,IR中指令的操作码和操作数通过ALU产生执行结果,不同指令的执行周期不同
中断周期
保存断点,送中断向量,处理中断请求
画方块图 考点
指令流水线
执行指令的过程划分为不同阶段,占用不同的资源,就能多条指令同时进行
表示方法 考点
- 指令执行过程图
- 时空图
性能指标 考点
每个任务分为k个阶段,每个阶段耗时Δt
- 吞吐率:指在单位时间内流水线所完成的任务数量,或是输出结果的数量,t时间完成了n个任务,吞吐率是TP=n/t,当n趋于无穷时,TP趋于1/Δt
- 加速比:同样的任务,不使用流水线所需时间与使用流水线所需时间的比值,当n趋于无穷时,S趋于k
- 效率:完成n个任务占用的时空区有效面积与流水线围成的时空区总面积的比值,当n趋于无穷时,E趋于1
影响因素 考点
- 结构相关:多条指令在同一时刻争用同一资源而形成的冲突
- 让后一相关指令暂停一个周期
- 资源重复配置,数据存储器+指令存储器
- 数据相关:后续指令需要用到前面指令的执行结果形成的控制冲突
- 将出现数据相关的指令及其后续指令都暂停一至多个时钟周期,直到数据相关问题消失后再继续执行;
- 数据旁路技术;
- 通过编译器调整指令顺序进行编译优化;
- 控制相关:当流水线遇到转移指令和其他改变程序计数器值的指令而造成断流时将引起控制冲突
- 转移预测法,碰到转移类指令时令分支预测是顺序取还是转移取;
- 预取转移成功和不成功两个控制流方向上的目标指令;
- 加快和提前形成条件码;
- 提高转移方向的猜准率;
- 转移延迟法,先执行再转移,发生转移时先不排空流水线,而是继续执行已经进入流水线的指令
五段式指令流水线
IF取指 → ID译码、取数 → EX执行 → M访存 → WR写回寄存器
流水线每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器,其作用是保存本流水段的执行结果,提供给下一流水段使用。理想情况下,每个机器周期(功能段)只消耗一个时钟周期
常见的五类指令
- 运算类指令
- IF:根据程序计数器从指令Cache取指令至IF段的锁存器
- ID:取出操作数至ID段锁存器
- EX:运算并将结果存入EX段锁存器
- M:空段
- WB:将运算结果写回指定寄存器
- 举例:
- 加法指令(两寄存器数相加)
ADD Rs,Rd(Rs)+(Rd)→Rd - 加法指令(寄存器数与立即数相加)
ADD #100,Rd100+(Rd)→Rd - 算术左移指令:
SHL Rd(Rd)<<2→Rd
- 加法指令(两寄存器数相加)
- LOAD 取数指令
- IF:根据程序计数器从指令Cache取指令至IF段的锁存器
- ID:将基址寄存器的值放到锁存器A,将偏移量放到Imm
- EX:运算,得到有效地址
- M:从数据Cache中取数并放入锁存器
- WB:将取出的数写回寄存器
- 举例:
LOAD Rd,100(Rs)(100+(Rs))→RdLOAD Rd,mem(mem)→Rd
- STORE 存数指令
- IF:根据程序计数器从指令Cache取指令至IF段的锁存器
- ID:将基址寄存器的值放到锁存器A,将偏移量放到Imm,将要存的数放到锁存器B
- EX:运算,得到有效地址,并将锁存器B的内容放到锁存器Store
- M:写入数据Cache
- WB:空段
- 举例:
STORE Rs,100(Rd)Rs→(100+(Rd))STORE Rs,memRs→(mem)
- 条件转移指令
- 无条件转移指令
分类
- 流水线分类:指令流水线、算数流水线、处理机流水线
- 按使用级别:部件功能级、处理机级、处理机间
- 按完成功能:单功能、多功能
- 按连接方式:动态、静态
- 按有无反馈信号:线性、非线性
多发技术
- 超标量流水线技术:每个时钟周期内并发多条独立指令
- 超流水线技术:一个时钟周期内再分段
- 超长指令字技术:将多条能并行执行的指令合成一条
异常和中断机制
异常
- 定义:CPU内部产生的意外事件(内中断)、CPU正在执行的指令相关的同步事件
- 分类:
- 故障Fault(软件异常):指令译码时出现非法操作码、取数据缺页、除数为0...
- 自陷Trap(软件异常):人为设置指令陷阱,如系统调用、TNE等条件自陷...
- 终止Abort(硬件异常):控制器出错、储存器检验错...
中断
- 定义: CPU外部设备向CPU发出的中断请求(外中断)、CPU正在执行的指令无关的异步事件
- 分类:
- 可屏蔽中断:通过INTR请求线向CPU发出的中断请求
- 不可屏蔽中断:通过NMI请求线向CPU发出的中断请求
处理过程
如果CPU执行指令时检测到异常事件,或者完成指令执行后发现中断请求信号,则打断当前用户程序,转到相应的异常或中断处理程序去执行。若能解决问题,执行完成后返回被打断的用户程序继续执行;若不能解决问题,终止用户程序。
数据通路
CPU内部总线(单总线)
顾名思义,主存、CPU、寄存器之间通过一条CPU内部总线(Bus)传输数据,因为一条总线上一次只能传输一个数据,因此需要两个数据同时传输的操作,如ACC,则需要配合连接着ALU的暂存器使用
重点是掌握各阶段的微操作序列和控制信号
例题
专用数据通路
学校没讲 BV1ps4y1d73V p65 多路选择器与三态门?
控制器的结构和功能
这部分比较难,应该不是考试重点,先放过