指令周期的不同:
指令周期由若干个机器周期/cpu周期组成
下面的图为不同的指令的指令周期
指令周期的流程:
如何判断在哪个阶段呢
提供一个硬件结构:触发器
一个方框代表一个触发器,4个代表4个不同的周期。FE,IND,EX,INT
分别代表的是取指周期,间指周期,执行周期,间断周期
4个操作都由访存的操作,但是目的不同:
取指周期是为了取指令,间指周期是为了取指令有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点
取指周期的数据流:
将指令放入CPU中
1.(PC)->MAR
2.CU发出控制信号,读信号:1->R表示CU发送信号到存储器
3.M(MAR)->MDR
4.(MDR)->IR
5.(PC)+1->PC
这里的+1可以为+2,+3…
目的就是为了把PC的指令传入到IR中
间址周期的数据流
1.从IR中将指令地址传入到MAR
Ad(IR)->MAR
2.CU发出控制信号,读信号:1->R
3.MAR中的内容到MDR中:M(MAR)->MDR
4.将有效地址送至指令的地址码字段:MDR->Ad(IR)
或者直接在MDR中操作。不同的第4步代表着不同的下一个数据流的指向
执行周期的数据流:
由于不同的执行周期不同,因此执行周期的数据流多种多样,可能设计到CPU内部寄存器间的数据传送,对存储器进行读写操作或者对ALU的操作。所有这里无法用图统一显示
中断周期的数据流:
中断:暂停当前的任务去完成其他的任务
为了可以快速的恢复当前任务,设置断点
一般使用堆栈来保存断定,这里为SP为堆栈表示,这里SP为堆栈的首地址
进栈操作为先修改指针,然后加入数据
进栈为-1,出栈为+1
1-3为保存断点的操作
4为恢复原来的操作
不同的指令执行方案
单指令周期方案
对所有的指令周期都是相同的时间完成的
多指令周期方案
每条指令可以使用不同的指令周期完成
流水线方案
在每一个时钟周期启动一条指令,经量让多条指令同时运行。