计算机科学中的流水线技术 - 图文 联系客服

发布时间 : 星期一 文章计算机科学中的流水线技术 - 图文更新完毕开始阅读64505f166c175f0e7cd137e0

4. 执行(EX,Instruction execution) 5. 存储(OS,Operand store)

一个典型的指示,从取指令周期开始,然后解码,它决定了指令完成操作。一个指令是通常带有一个或多个操作数,操作数在寄存器或内存,这取决于使用的寻址方式。一旦所需的错误计数都准备好了,你可以执行指定的操作指令。实施所产生的结果存储起来,就算结束指令周期。

分段指令周期是一个自然的方式是按照5个基本算术元件划分,每个业务组件对应一个流动部分,造成a5stage指令流水线,我们称这些为基本指令流水线,简称枪花线。在与流水线,逻辑指令周期将被映射到5个物理机器周期。机器周期,指令周期的比例为5,这是反映了流动的程度和水段大小。

定量的水段设计成指令周期分割平衡水段,以便尽量减少一些内部分裂。定量的水部分的自然功能分区开始。作为基本算术组件。多个延迟更小的组件可以组合成一个新的组成部分,以获取更平衡线。另外一个平衡线方法是相反的,不是有一个较短的延迟元件组合,但会延迟较长的操作部件被分成多个短时延的组成部分。该方法延迟短的组成部分为参考,长潜伏期操作部件分成较小的部分,使每一个组件的延迟和参考元件延迟几乎。这将导致在一个机器周期粒度更细,在更高程度。

在具体进行指令流水线设计的时候,这两种方法可以结合起来使用。不管在什么情况下,量化流水段的目标都是尽量减小内部碎片的开销。

3.3.2 统一指令类型

第二线的理想假设需要线应重复同样的操作。为广大的指令流水线,重复相同的操作理想的假设是不成立的。指令流水线指令重复处理不同的指令类型。虽然指令周期重复,但每次过程的不同类型的指令。不同的指令类型有不同的资源要求,每个组成部分的业务订单可能不一样。指令流水线的要求,满足不同需求,

您必须提供所有类型的指令所需的所有操作元件的超集。一个单一的指令类型可能不需要所有的流动剖面线。一个单一的指令类型,不需要水段为某种形式的失败或架空,即外部碎片。目的的统一指挥,是尽量减少所有指令式外碎片。

要完成一次运算,计算机必须完成一下三个基本任务: 1. 算术操作 2. 数据移动 3. 指令定序

算术运算包括指定的操作执行算术和逻辑运算,它最突出的部分操作,所以经常和整个操作是等同的。一个处理器能够支持大量的算术运算式。数据移动将负责操作数和结果存储在地址的移动。通常是内存地址的层次和专业指示移动数据。指令序列负责指令序列的测定。通常的运作程序,含有大量的指令,通过执行一系列指令需要完成操作。该指令序列,或打电话程序,可以通过指令本身的确定。

如何将这三个基本任务分派给ISA中的各种指令,是指令集实际中的关键问题。受RISC体系结果的影响,现在的大多数指令集体系结构都有一些共同的特征。这些体系结果包括Hewlett-Packard的Precision体系结构,IBM的Power体系结构,IBM/Motorola的PowerPC体系结构,还有Digital的Alpha体系结构。这些现代ISA倾向于采用定长指令、正交的指令格式、load/store型体系结构和简单的寻址模式。这些体系结构中的大多数都能与指令流水线很好的协调起来。

在一个典型的现代RISC体系结构中,指令集采用一种专门的指令类型来完成三个基本任务中的一个,也就是说,每一种指令类型只完成三个基本任务中的一个。根据三个基本任务,可以将指令分成三种类型:

1. ALU指令 完成算术和逻辑运算

2. Load/store指令 完成数据在寄存器及存储器间的移动 3. 分支指令 控制执行指令的顺序

ALU指令所执行的算术逻辑操作严格地针对寄存器操作数进行,只有load和store指令能访问数据存储器。Load/store指令和分支指令都采用比较简单的寻

址模式,通常只支持带偏移量的寄存器间接寻址模式。对于分支指令,还支持PC相对寻址。在下面列出关于前两种指令类型的详细规范,其中假设使用了指令cache(I-cache)和数据cache(D-cache)。

比较表3.1与表3.1中的两种主要指令类型规范,我们可以看到,两种指令类型的初始化分量比较类似,然而后面的分量有些差异。这些语意上的差异将导致不同的资源需求。

基本运算分量 IF ID OF EX OS ALU指令类型 -取指令(访问I-cache) -解码指令 -访问寄存器文件 -执行ALU操作 -回写寄存器文件 表3.1 ALU指令类型规范

基本运算分量 IF ID OF Load指令 -取指令(访问I-cache) -解码指令 store指令 -取指令(访问I-cache) -解码指令 -访问寄存器文件(基地址) -访问FP寄存器文件 -生成有效地址 (基地址+偏移量) -访问(读)内存 (访问D-cache) (寄存器操作数及基地址) EX OS - -回写寄存器文件 - -生成有效地址 (基地址+偏移量) -访问(写)内存

(访问D-cache) 表3.2 Load/store指令类型规范

统一不同指令类型主要是将不同资源需求有效的整合到一条指令流水线中去,使得这条流水线适合于所有的指令类型。整合的目标是,尽量减少流水线所需要的资源总数,同时尽量提高流水线中所有资源的利用率。通常,资源的整合过程包含以下三个步骤。

1. 分析每种指令类型的运算分量序列,确定相应的资源需求。

2. 找出指令类型之间的共性,合并相同的运算分量,已使用相同的流水段。 3. 如果在不违背指令语意的情况下存在一定的灵活性,可以改变或者重新排列分量的顺序,以便进一步的整合。

可以将这一过程应用到表3.1和表3.2中。ALU,load,store指令类型的规范总结如图3.3所示。现在我们由上至下实施统一的过程,检查3个分量的序列合要求提供支持的硬件资源。这个过程产生了指令流水线各段的定义。

ALU LOAD STORE 取指令 取指令 取指令 更新PC 更新PC 更新PC IF 解码 解码 解码 ID 读寄存器 读寄存器 读寄存器 RD ALU.Op 生成地址 生成地址 ALU 读内存 写内存 MEM 写寄存器 写寄存器 WB 图3.3 ALU,load,store指令类型的规范总结

所有3种指令类型都有相同的IF和ID分量,因此,这两个运算分量可以很容易的合并起来,并用来定义流水线的前两个段,即IF和ID段,从而完成取指和译码工作。