第4章处理器体系结构
学习处理器设计:知其所以然的有趣,帮助理解整个计算机系统如何工作,嵌入式开发
4.1 Y86-64指令集体系结构
一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构,即 ISA,在处理器行为(就指令集合及其编码而言)和如何实现处理器之间提供了一层抽象。ISA提供了程序执行的一种顺序说明,也就是一条指令执行完了,下一条指令才会开始。
定义一个指令集体系结构**(例如 Y86-64)**包括定义各种状态单元、指令集和它们的编―码、一组编程规范和异常事件处理。
Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态
得到的ISA既有RISC指令集的属性,也有CISC指令集的属性。然后,将不同指令组织放到五个阶段中处理,在此,根据被执行的指令的不同,每个阶段中的操作也不相同。据此,我们构造了SEQ处理器,其中每个时钟周期执行一条指令,它会通过所有五个阶段。
4.2逻辑设计和硬件控制语言HCL
在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器单元中存储位。大多数现代电路技术都是用信号线上的高电压或低电压来表示不同的位值。
在当前的技术中,逻辑1是用1.0伏特左右的高电压表示的,而逻辑0是用0.0伏特左右的低电压表示的。
要实现一个数字系统需要三个主要的组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器单元,以及控制存储器单元更新的时钟信号。
逻辑门是数字电路的基本计算单元。它们产生的输出,等于它们输入位值的某个布尔函数。
将很多的逻辑门组合成一个网,就能构建计算块(computational block),称为组合电路( combinational circuits)。如何构建这些网有几个限制:
- 每个逻辑门的输人必须连接到下述选项之一:1)一个系统输人(称为主输入),2)某个存储器单元的输出,3)某个逻辑门的输出。
- 两个或多个逻辑门的输出不能连接在一起。否则它们可能会使线上的信号矛盾,可能会导致一个不合法的电压或电路故障。
- 这个网必须是无环的。也就是在网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。
组合电路从本质上讲,不存储任何信息。相反,它们只是简单地响应输入信号,产生等于输入的某个函数的输出。为了产生时序电路(sequential circuit),也就是有状态并且在这个状态上进行计算的系统,我们必须引人按位存储信息的设备。存储设备都是由同一个时钟控制的,时钟是一个周期性信号,决定什么时候要把新值加载到设备中。考虑两类存储器设备:
- 时钟寄存器(简称寄存器)存储单个位或字。时钟信号控制寄存器加载输人值。随机访问存储器(简称内存)存储多个字,用地址来选择该读或该写哪个字。
- 随机访问存储器的例子包括:1)处理器的虚拟内存系统,硬件和操作系统软件结合起来使处理器可以在一个很大的地址空间内访问任意的字;2)寄存器文件,在此,寄存器标识符作为地址。
4.3 Y86-64的顺序实现·
将处理组织成阶段:取指,译码,执行,访存,写回,更新PC
通过将执行每条不同指令所需的步骤组织以一个统一的流程,就可以用很少量的各种硬件单元以及一个时钟控制计算的顺序,从而实现整个处理器。不过这样一来,控制逻辑就必须要在这些单元之间路由信号,并根据指令类型和分支条件产生适当的控制信号。
SEQ唯一的问题就是它太慢了。时钟必须非常慢,以使信号能在一个周期内传播所有的阶段。 这种实现方法不能充分利用硬件单元,因为每个单元只在整个时钟周期的一部分时间内才被使用。我们会看到引入流水线能获得更好的性能
4.4流水线的通用原理
流水线化通过让不同的阶段并行操作,改进了系统的吞吐量性能。在任意一个给定的时刻,多条指令被不同的阶段处理。在引入这种并行性的过程中,我们必须非常小心,以提供与程序的顺序执行相同的程序级行为。通过重新调整SEQ各个部分的顺序,引入流水线,我们得到SEQ+,接着添加流水线寄存器,创建出 PIPE一流水线。然后,添加了转发逻辑,加速了将结果从一条指令发送到另一条指令,从而提高了流水线的性能。有几种特殊情况需要额外的流水线控制逻辑来暂停或取消一些流水线阶段。
4.5 Y86-64的流水线实现
在 PIPE设计中,采取了一些措施来正确处理控制相关。流水线化设计的目的就是每个时钟周期都发射一条新指令,也就是说每个时钟周期都有一条新指令进入执行阶段并最终完成。 猜测分支方向并根据猜测开始取指的技术称为分支预测。
一般地,通过在流水线结构中加入异常处理逻辑,我们既能够从各个异常中做出正确的选择,也能够避免出现由于分支预测错误取出的指令造成的异常。这就是为什么我们会在每个流水线寄存器中包括一个状态码stat。
为了避免异常指令之后的指令更新任何程序员可见的状态,当处于访存或写回阶段中的指令导致异常时,流水线控制逻辑必须禁止更新条件码寄存器或是数据内存。
|