目录
控制器设计的核心是拟定指令流程与形成微命令序列。
- 拟定指令流程:确定指令执行的具体步骤,即各工作周期中每一节拍完成的具体操作(寄存器传送级),用流程图表示。
- 形成微命令序列:列出每一步操作所需的微命令(控制信号)序列及产生条件。
微命令 = 控制信号 = 微操作控制信号
模型机微命令一览
移位器可以进行:左移(SL)、右移(SR)、直传(DM)、字节交换、斜位传送。
1. 取指流程
(易错点)A 选择器选通 PC 寄存器以后,我们使用的就是 A 了,不要写成 PC + 1 。
Q:为什么上述两项操作可以在一个时钟周期内同时进行?
A:因为它们各自使用的数据通路没有冲突,读取指令经由数据总线,而 PC + 1 经由 ALU 和内部总线。因此,在拟定指令流程时,从优化操作步骤的角度考虑,凡是 数据通路没有冲突、时间上也不矛盾(时间足够) 的操作,都可以安排在一个时钟周期内并行执行。
数据在粉色区域内已达稳定状态,因此 SIR 在上升沿到来之前就已完成。
当前节拍结束之前永远做的是为下一个节拍或工作周期做准备的准备工作。
关于上图的脉冲型微命令:
在取指周期的末尾,我们需要重新设置六个工作周期的状态触发器。根据寻址方式,将暂不需要的工作周期的 D 触发器置为 0,将下一个工作周期的 D 触发器置为 1 。
此外,我们还需要重新设置节拍计数器。若继续当前工作周期,只是节拍改变,则将计数器加一;若进入下一个工作周期,则将计数器复位。
2. 传送指令
符号标识:
- SR:源操作数寄存器直接寻址
- DR:目的操作数寄存器直接寻址
- 非 SR:源操作数非寄存器直接寻址
- 非 DR:目的操作数非寄存器直接寻址
(1)源周期
源周期的执行流程:
R:是源寄存器直接寻址,不会进入源周期。
寄存器间接寻址:
自减型寄存器间接寻址:
立即/自增型寄存器间接寻址:
直接/自增型双重间接寻址:
变址/相对寻址:
规整起见:要求在同一工作周期的同一节拍中,尽量做类似的操作,以便不用再去判别目前是哪种寻址方式。
(记忆)获取操作数的前三个节拍:
- 给出地址
- 去访存 ——获得操作数
- 修改寄存器
(2)目的周期
由于我们讨论的是传送类指令,所以我们需要获得目的地址,而不需要获得目的操作数。
根据寻址方式,如果只需要目的地址,则取得目的地址后送入 MAR 中即可;如果还要目的操作数,则根据目的地址访存,将取得的目的操作数暂存于 D 中。
R:是目的寄存器直接寻址,不会进入源周期。
寄存器间接寻址:
自减型寄存器间接寻址:
立即/自增型寄存器间接寻址:
直接/自增型双重间接寻址:
变址/相对寻址:
在目的周期中,我们将中间结果暂存于 D 中。
(记忆)获取地址的前两个节拍:
- 给出地址
- 修改寄存器
(3)执行周期
此时的源操作数:
- 在 Ri 中
- 在 C 中
此时的目的地址或目的操作数:
- 目的地址在 Rj 中或者在 MAR 中
- 目的操作数在 Rj 中或者在 D 中
执行周期的执行流程:
另外一种解释:
一步就是指完成一次完整的数据通路操作,把完成一步操作所需的时间定为一个节拍。这两个操作均为一个完整的数据通路操作,因此是不能合并在一个节拍里的。
3. 例题
- 第一题
- 第二题
- 第三题
- 第四题
时序切换微命令小结:
- 每一节拍结束时,发出 T + 1 或者改变工作周期状态标志
- 工作周期结束时,发出 CPFT、CPST、CPDT、CPET 反向工作脉冲信号
取指周期的时序切换序列如下:
我们省略了输入为 0 的时序微命令。