单周期实现

只考虑以下指令

  • 存储器访问 LDUR STUR

  • 算数与逻辑 ADD SUB AND ORR

  • 分支跳转 CBZ B

4.1 一种高度抽象的实现

每条指令在机器上的行为

  • 1.程序计数器(PC)指向指令存储器,并取出一条指令

  • 2.通过指令字段的内容,读取寄存器

大多数指令在读取寄存器后,都需要使用算术逻辑单元(ALU)。存储器访问指令用 ALU 计算地址,算术逻辑指令用 ALU 执行操作,分支控制指令用 ALU 与 0 比较。使用完 ALU 后,再根据指令的要求决定是写回寄存器还是写存储器,又或者是写 PC 寄存器。

4.2 逻辑设计的一般方法

架构实现中的数据通路包含两种逻辑单元:

  • 处理数值的单元

  • 存储状态的单元

处理数值的单元都是组合逻辑(combinational),输出只由当前输入决定,ALU 是组合逻辑单元。其他单元包含状态(state),包含内存存储的单元称为状态单元(state element)。

计算机断电后,如果状态单元可以恢复到断电前的状态,那么计算机可以恢复到断电前的状态继续执行。状态单元完全描述了计算机的状态,存储器、寄存器都是状态单元。

最简单的状态单元 D 触发器,两个输入,一个输出。

时钟策略(clocking methodology)也是计算机设计中非常重要的事情。假定采用边沿触发时钟(edge-triggered clocking),时序逻辑电路中存储的所有值仅在时钟边沿更新

边沿触发的方法允许在一个时钟周期内读出一个寄存器的内容,然后经过一些组合逻辑,再将新俏写入该寄存器。有一些指令需要这么做。

4.3 建立数据通路

首先分析每类 LEGv8 指令执行所需要的主要部件。

最后更新于