5.02指令的执行过程
指令周期:CPU从主存中取出并执行一条指令的时间
不同指令的指令周期可能不同。指令周期常用若干 机器周期 表示
CPU周期,又称为机器周期
一个机器周期包含若干个时钟周期
时钟周期,又称节拍、T周期
- 每个指令周期的机器周期数可能不同,每个机器周期的时钟周期数也可能不同,故不同的指令周期长短可能不同
- 一个完整的指令周期包括取指、间址、执行、中断四个部分。由4个标志触发器(FE、IND、EX、INT)区分不同的工作周期,1表示有效。
即CLK=1000、0100、0010、0001分别对应四个周期
指令周期的数据流
取指周期
目的:根据PC中存放的指令地址,到主存中取出对应的指令
- (PC)→MAR:当前指令的地址,送到MAR中
- 1→R:控制器向主存发出 读 控制信号
- M(MAR)→MDR:将MAR所存地址在对应主存中的内容(指令)写入MDR
- (MDR)→IR:将MDR中存放的指令送到指令寄存器IR中
- (PC)+1→PC:PC的内容加1,形成下一条指令的地址
间址周期
目的:取操作数的有效地址
- A(IR)→MAR:指令寄存器的形式地址送到MAR
- 1→R:控制器向主存发出读控制信号
- M(MAR)→MDR:将MAR所存地址在对应主存中的内容(操作数)写入MDR
执行周期
目的:根据IR中的操作码字段和操作数通过算数逻辑运算产生执行结果
不同的指令的执行周期操作不同,故没有统一的数据流向
中断周期
目的:处理中断请求
假设断点地址为a
- (SP)-1→SP,(SP)→MAR:CU控制栈顶指针移动,并将栈顶指针目前的内容(即新的栈顶地址,也即断点位置)给MAR
a. 假设栈顶断点地址为a,则可以直接a→MAR,替代上述过程 - 1→W:控制器向主存发出写控制信号
- (PC)→MDR:将断点(PC的内容)送入MDR,至此断点保存完成
- 向量地址→PC:CU控制将中断服务程序入口(由向量地址形成部件产生)地址送入PC
指令的执行方案
单指令周期
- 所有的指令都在固定的时间内完成
- 指令之间串行执行。即下一条指令只能在前一条指令执行结束后执行
- 指令周期取决于执行时间最长的指令
多指令周期
- 不同指令选用不同的执行步骤完成
- 指令之间串行执行
- 不同指令的指令周期不同
流水线方案
- 指令之间可以并行执行
- 在每个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中
- 目标是力争每个时钟周期内完成一条指令的执行过程(理想情况下才能实现)