计算机科学中的流水线技术 - 图文(6)

2020-05-05 13:55

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段,从而完成取指和译码工作。

所有3种指令类型的OF分量都要读寄存器文件。ALU指令访问两个寄存器并且获得寄存器操作数;load指令访问一个寄存器并获得地址;store指令访问一个寄存器并且获得操作数,访问另外一个寄存器以获得基地址。在3中情况下都要访问一个或者两个寄存器,这些相似的分量可以合并到流水线的第三段,成RD段并从寄存器文件读取最多两个寄存器操作数。因此寄存器文件在每个时钟周期内必须支持两个独立的并行操作数。

ALU指令要求有一个ALU功能单元来完成必要的算术逻辑运算。虽然load,store指令不需要执行这样的操作,但是他们需要生成有效的地址来访存。可以看出,地址生成可以由ALU功能单元来完成。因此,这些分量可以合并到流水线第4段,成为ALU段并包含一个ALU功能单元,完成算术逻辑运算或者有效地址的生成。

ALU和load指令都需要想寄存器写回结果,这是他们的最后一个运算分量。ALU指令将寄存器操作的结果写回寄存器,load将访存的数据写入到目标寄存器。ALU指令不需要访存,因此,理论上向目标寄存器回写这一过程可以在ALU段之后立即进行。然而为了load指令回写分量统一起来,ALU指令的寄存器回写分量向后推迟了一段,在流水线的第6段进行,成为WB段。这将导致ALU指令在MEM段产生一个空闲周期。这是一种外部碎片并将给流水线带来一些效率损失。

通过对不同指令类型的整合,可以得到一条6级流水线,如图3.3右侧所示。

3.3.3 减少流水线停顿

第三线理想的假说认为,流水线执行的操作是相互独立的。在一个等级的流水线,可能有不同的操作处理的指令流水线,具有最大钾不同的指示,同时在流水线。这些指令可能不是相互独立的。事实上,这些指令通常与。如果流水线指令不相关,将有助于流水线流动,或者说,指令通过线路没有任何流水线摊位。如果指令相关的,它必须检测和解决有关。该解决方案可能需要流水线摊位。设计的挑战,目的是减少流量减少流水线摊位,防止通量下降率。

关于具体怎样判断各种相关并且将其化解,将在下一章中进行讨论。


计算机科学中的流水线技术 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:劳力士(Rolex)官方售后维修 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: