CSAPP第四章:Y86 SEQ(指令顺序执行)的硬件结构

CSAPP第四章:Y86 SEQ(指令顺序执行)的硬件结构_第1张图片

SEQ硬件结构的抽象表示。

程序计数器放在寄存器中(左下角,起点)。先向上,再向右

取指:将程序计数器寄存器作为地址,指令存储器读取一个指令的字节,PC增加器计算valP(程序计数器增加后的值)。

解码:寄存器文件有两个读端口A和B,从两个端口同时读寄存器值valA和valB。

执行:根据指令的类型,算术/逻辑单元(ALU)进行不同的操作。

  1. 对于整数操作,执行指令指定的运算。
  2. 对其他指令,作为一个加法器来计算增加或减少栈指针,或计算有效地址,或者简单地加0,将一个输入传递到输出。
  3. 条件码寄存器(CC)有三个条件码:ALU负责计算条件码的新值,当执行一条跳转指令时,会根据条件码和跳转类型来计算分支信号Bch。

访存:执行访存操作时,数据存储器读出或写入一个存储器字。指令和数据存储器访问的是相同的存储器位置,但是用于不同目的。

写回: 寄存器文件有两个写端口。端口E用来写ALU计算出来的值。端口M用来写从数据存储器中读出的值。

CSAPP第四章:Y86 SEQ(指令顺序执行)的硬件结构_第2张图片

上图给出了实现SEQ所需要的硬件。

  1. 用带淡点的浅灰色方框表示硬件单元,包括存储器、ALU等。

这些单元可以看成黑盒子,不关心它们实现的细节。

  1. 控制逻辑块用灰色圆角矩形表示。
  2. 线路的名字在白色圆角方框中说明。
  3. 宽度为字节的数据连接用中等粗度的线表示。 每条线代表一簇32根线,并列连在一起,将字从硬件的一个部分传送到另一部分。
  4. 宽度为字节或更窄的数据连接用细线表示。每条这样的线实际上代表一簇4根或8根线。
  5. 单个位连接用点线表示。

你可能感兴趣的:(java,开发语言)