指令周期和指令流水线
指令周期和指令流水线
指令周期
指令周期:处理单个指令的过程(时间)
- 取指周期:从内存中提取一条指令
- 执行周期:执行所提取的命令
只有当机器关闭、发生某种不可恢复的错误或遇到停止计算机的 程序指令时,程序执行才会停止
并非所有指令的周期都一样,例如,NOP(空操作)只有取指周期
间址周期
- 操作数/间接寻址涉及访存
- 间址周期:把间接地址的读取看成是一个额外的指令子周期
CPU
CPU的任务
寄存器
- CPU需要在指令周期中临时保存指令和数据
- CPU需要记录当前所执行指令的位置,以便知道从何处得到下一条指令
所以CPU需要一些小容量的内部存储器
- PC 程序计数器:存有待取指令的地址
- IR 指令寄存器:存有最近取来的指令
- MAR 存储地址寄存器:存有存储器位置的地址
- MBR 存储缓冲寄存器 / MDR 存储数据寄存器:存即将写入/刚刚读出存储器的字
####
取指周期
- PC将地址传送到MAR,传给地址总线
- 控制器通过控制总线请求读存储器
- 存储器收到读请求后读取地址总线上的地址,将读取到的指令返回数据总线
- CPU将数据总线上返回的指令复制给MBR,再转给IR
间址周期
- MBR最右边的NN位是地址引用,被传送给MAR
- MAR将地址通过总线传给存储器
- 控制器通过控制总线请求读存储器
- 存储器读出所需的数据/地址,送入MBR
中断周期
- 保存PC当前值(返回地址)
- 地址(栈顶-1)传入MAR
- 数据传入MBR写入存储器
- 控制器将中断程序的入口地址送入PC
指令流水线
- 处理指令分为不同阶段,每个阶段由相应功能部件完成
流水处理(pipelining):如果一个产品要经过几个制作步骤,通过把制作过程安排在一条装配线上,多个产品能在各个阶段同时被加工
两阶段方法
- 将指令处理分为:取指+执行
- 在执行时取下一条指令
- 问题
- 执行时间长于取指时间
- 访存冲突
- 分支/跳转时待取指令未知
六阶段方法
流水线性能
This post is licensed under CC BY 4.0 by the author.














