2023-06-18 01:19:12

如上图,是一个简单的CPU理想结构。CPU的地址寄存器MAR的位数,是地址空间大小需要使用的位数。例如,寻址空间是64MB,则MAR的位数至少是\(64MB=2^5\times2^{20}=2^{26}\)位
处理一条指令的过程,由CPU完成的操作序列构成一个指令周期。
这三个统称CPU周期或机器周期。

下面是CPU的时序信号

可以用计数器74163来产生周期信号。不过会有竞争冒险问题。还可以用移位寄存器74199来实现,没有竞争冒险问题,但是状态利用率低。
再将它产生的信号通入另一个计数器,就能通过节拍/指令周期信号得到一个CPU周期信号。
就是CU(见最开始的图)产生的控制信号。若干条微操作的组合,完成了一条条的机器汇编指令。
例如指令\(ADD\text{ }R_1,R_0\)可以用下面的微指令描述:
| 微指令周期 | 数据流方向 | 微指令 |
|---|---|---|
| \(T_1\) | \(Y\leftarrow R_0\) | \(R_0out,Y_{in}\) |
| \(T_2\) | \(Z\leftarrow R_1+Y\) | \(R_1out,ADD\) |
| \(T_3\) | \(R_1\leftarrow Z\) | \(Zout,R_1in\) |
再比如\(SUB\text{ }R_0,(X)\)
| 微指令周期 | 数据流方向 | 微指令 |
|---|---|---|
| \(T_1\) | \(AR\leftarrow IR\) | |
| \(T_2\) | \(DR\leftarrow Mem[AR]\) | |
| \(T_3\) | \(AR\leftarrow DR\) | |
| \(T_4\) | \(DR\leftarrow Mem[AR]\) | |
| \(T_5\) | \(Y\leftarrow R_0\) | |
| \(T_6\) | \(Z\leftarrow Y-DR\) | |
| \(T_7\) | \(R_0\leftarrow Z\) |
再比如加载指令的微指令:
| 微指令周期 | 数据流方向 | 微指令 |
|---|---|---|
| \(T_1\) | \(AR\leftarrow PC\) | \(PC_{out},AR_{in}\) |
| \(T_2\) | \(DR\leftarrow Mem[AR]\) | \(AR_{out},Mread,DRS_{in}\) |
| \(T_3\) | \(PC\leftarrow PC+I,IR\leftarrow DR\) | \(PC+1,DRI_{out},IR_{in}\) |
在设计微操作序列时,需要遵循以下三个原则: