DLX处理器流水线性能优化(一)

时间:2020-08-29 12:42:59 计算机毕业论文 我要投稿

DLX处理器流水线性能优化(一)

摘要 :DLX虚拟微处理机提供了一个基于PC机的研究平台,研究者可以在PC机上模拟新的处理机技术。本文先介绍DLX微处理机针对流水线处理的结构调整和流水线的一些问题,并且结合一个实例,研究了流水线性能的优化。

关键词  DLX微处理机;流水线;计算机系统结构

 1  导言
 DLX 是一种虚拟的32位微处理机系统结构,Patterson 和  Anderson在其“Computer Architecture——A Quantitative  Approach ”一书中首次提出的。它不仅体现了当今多种机器系统结构的共同特点 ,还将体现未来一些机器的指令集结构的特点。这些机器的指令集结构设计思想都和DLX指令集结构的设计思想十分相似,它们都强调:具有一个简单的Load/Store指令集;注重指令流水效率;简化指令的译码;高效支持编译器。WinDLX是一个基于 Windows的DLX模拟器,用于模拟DLX流水线的工作过程。可以灵活、方便地设置参数、控制执行、统计数据等。WinDLX提供了直观的窗口显示。本文先介绍DLX微处理机针对流水线处理的结构调整,以及流水线所面临的一些问题,然后结合实例对DLX流水线性能的优化作简单的分析,Win DLX模拟器能够演示DLX流水线是如何工作的。
 
 2  基于流水线操作原理
 2.1  DLX处理机流水线概念
   DLX的数据通路的实现,它允许在4或5个时钟周期内完成一条指令。虽然这些功能部件出现在它们被读出的周期。但是PC在存储器访问周期(同样在取值周期)被写入,而存储器在回写周期被写入。在这两种情况下,在后面节拍的写入可以由回送数值给PC或者寄存器的开关输出(在存储器访问和回写周期)来指明。这些回流的信号太大地增加了流水线地复杂度。图一给出了一条指令如何沿着数据通路进行流动。
 在每一个时钟周期启动一条新的指令便可以使图一所示的数据通路流起水来,前面的每一个时钟周期便成了一个流水节拍:流水线的一个周期。这样便有图二所示的指令执行模式,它使用流水线结构的典型画法。其中,每一条指令经过五个时钟周期执行完成,在每个时钟周期内,硬件将初始化一条新的`指令并执行五个不同指令的某个部分。在一个简单的流水线中,在每一个时钟周期都有一条新的指令取进来并开始长达五个时钟周期的执行。 若在每一个时钟周期都启动一条新的指令,那
 
                       图1  DLX流水线数据通路的实现

么性能将是不进行流水线的及其的五倍。流水线每个节拍的名称 : IF=取指令,ID=分析指令,EX=执行指令,MEM=存储器访问,WB=写回。

指令号 1 2 3 4 5 6 7 8 9 
指令i IF ID EX MEM WB     
指令i+1  IF ID EX MEM WB    
指令i+2   IF ID EX MEM WB   
指令i+3    IF ID EX MEM WB  
指令i+4     IF ID EX MEM WB 
 图2  简单的DLX流水线
  
 2.2  DLX流水引出的问题
 (1) 确定机器在每一个时钟周期都进行什么样的动作,并保证在同一个时钟周期没有两条指令使用相同的数据通路资源。比如一个ALU不能同时用于计算有效地址和剑法运算。因此,必须得保证流水线中指令得重叠不会导致这样的冲突。在简化的DLX数据通路,主要的功能部件都在不同的时钟周期使用,所以多条指令的重叠执行相对来说几乎所没有引入冲突。
   (2) 图一的基本数据通路已经使用了分开的指令和数据存储器,其典型的实现方式是使用分开的指令和数据Cache。使用独立的Cache避免了对单一存储器进行取指和访问数据操作之间的冲突。如果流水线机的时钟周期和未流水的机器相同时,存储系统的带宽需要时原先的五倍,这便是取得高性能的代价。
   (3) 简单地DLX数据通路中没有涉及到PC,为了在每个时钟周期都启动一条新的指令,需要对PC进行自加运算并存回,这项工作必须在IF节拍完成,为下一条指令做准备。如果考虑要分支的影响,问题就这样产生了,因为它也要改变PC,但是在MEM节拍进行。在我们的多周期的非流水线结构中,这不成为一个问题,因为只在MEM节拍写一次PC。在这里我们将只在IF节拍对PC进行写操作,写入自增后的PC或者前面分支的目标地址。
 
DLX流水线的实例性能分析
 为了具体了解DLX虚拟处理机如何解决流水线的问题,以一个流水线的实例进行测试。优化后进行性能分析。这里使用 WinDLX 汇编器中的汇编文件 fact.s ,这个程序计算数(通过键盘输入)的阶乘。这需要用到文件input.s,它用于接收从键盘输入的数。加载了这两个文件后可以看见一条DLX指令的执行需要5个周期:IF(取指周期)、ID(分析指令/寄存器周期)、EX(执行周期)、MEM(存储器访问/分支完成周期)、WB(回写周期)。其中执行段分为4个单元,分别是intEX(整数操作)、addEX(浮点加减)、fmulEX(浮点乘法)、fdivEX(浮点除法),如图三。
 
                  图3   DLX的指令执行流程
 
 指令流调整技术和数据重定向技术,这两种技术各有各的有优缺点,如何使CPU的性能达到最好,同时尽可能减少硬件和软件的投入。实验表明,同时应用指令流调整技术和数据重定向技术,可以使CPU的优化达到最大化。下面通过实例的优化来分析证明这个结论。
 
DLX的代码分析
 上面提到的加载了fact.s和input.s这两个文件,这里先分析一下fact.s