单周期实现
只考虑以下指令
存储器访问 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 指令执行所需要的主要部件。
最后更新于