ImageVerifierCode 换一换
格式:DOCX , 页数:114 ,大小:499.46KB ,
资源ID:6133908      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6133908.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第四章 流水线技术.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第四章 流水线技术.docx

1、第四章 流水线技术第四章 流水线技术 计算机系统结构研究、分析的目的就是为了提高计算机性能,为此,我们采用了许多提高性能的设计思想和技术。流水线技术就是其中最重要的设计思想之一。流水线技术在现代的计算机系统结构中是最普遍的一种技术。 流水线技术的基本思想在冯诺依曼(Von Neu mann)归纳的第一台存储程序计算机中已经提出。1946年Burks等人提出的运算与输入输出重叠操作是当今计算机中广泛使用的流水线技术的原始雏形。尽管冯诺依曼没有在他设计的第一台计算机中实现输入输出功能,但当磁芯存储器第一次出现,并作为主要存储介质后,流水线设计思想迅速发展。磁芯存储器速度要比寄存器和控制单元中的晶体

2、管器件慢10倍以上。为解决主存与CPU执行速度之间的瓶颈问题,设计者们研究了很多种方法,使CPU执行指令的同时,进行一个或多个并发存储器访问。INTEL8086的两级流水就是为了提高存储器及总线的使用效率而设计的。 60年代,硬件的价格相对较高。流水线技术都用于巨型计算机。IBM的STRETCH和CDC6600是早期大量应用流水线技术的计算机,它们对后来的计算机系统结构设计有深刻的影响。随着半导体技术的发展,到80年代硬件价格大幅度下降,流水线技术在计算机设计中广泛应用,即使在微处理芯片中也是很基本的性能提高措施。INTEL80i86系列的发展是很好的一个例子。这里要注意的是流水线技术在RIS

3、C设计思想产生前已有广泛使用,只是在RISC设计思想中流水线技术采用更广泛而已。4.1 流水线处理的基本原理 流水线的作用是提高硬件功能部件的使用率,减少指令的平均执行时间。4.1.1 流水线的基本概念4.1.1.1什么是流水线技术 流水线(pipelining)是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。今天,流水线是制造高性能CPU的关键技术。这种技术和并行处理有所区别,流水线是在顺序指令流计算机中实现处理时间重叠的技术,因此流水线的并行处理是指完成一条指令的各个部件在时间上是可以同时重叠工作。因此,各部件同时处理是针对不同指令而言的,各部件分别同时为多条指令的不同部分(

4、step、stage)进行工作,以提高各部件的利用率来提高指令的平均执行速度。 计算机流水线概念就象工厂里的装配生产线,每一个工位完成一个部件的装配,前一个工位装配完,传送带将对象带到下一个工位装配,此过程重复进行直到所有工位都流过,产品就被装配完了。指令流水执行是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称为流水级或流水节拍(pipe stage或pipe segment),这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。这些不同的功能部件同时重叠处理不同指令的不同子过程。流水级一个连着一个形成一个流水线,一条指令流过所有的流水级,就完成了它的任务。流水线提高执行指

5、令的能力可以用吞吐率(throughput)来表示。计算机流水线的吞吐率是指单位时间内进出流水线的指令数。流水可以提高吞吐率。由于流水级是相互连接在一起,每一级完成都进入下一级,因此,所有的流水级必须在相同的时间内完成各自的子过程,在流水线中指令流动一步是一个机器周期(machine cycle)。因为要保证所有流水级在同一时间内处理完自己的工作,机器周期的长度必须由最慢的流水级部件处理子过程所需的时间决定。RISC技术要求一个机器周期等于一个时钟周期,那么这个时钟周期必须是多相的或多拍的。由时钟的一相或一拍控制一个流水级的移动。 流水线设计最难的任务是确定每个流水级功能部件处理的时间长度,平

6、衡每一流水各处理部件的处理时间。在理想条件下,流水线计算机每条指令的平均执行时间是: 每条指令平均执行时间 其中流水线深度是指流水线中总的流水级的数目。在这种条件下,流水线计算机的加速比(Speedup)就等于流水级的深度。实际情况中,流水线中的各级功能部件处理子过程的时间之间是很难平衡的。此外,流水线还包含一些其它的开销。因此,流水线上每条指令的平均执行时间并不是理想情况下的最小值,只是一个接近值。 流水线只能减少每条指令的平均执行时间,一条指令的实际执行时间要经过所有流水级,其实际执行时间有可能比未流水时还要长。今后如无特殊说明,在流水线机器上说指令的执行时间,都是指指令的平均执行时间。流

7、水线减少指令平均执行时间可以看作是减少了每条指令的时钟数(CPI),也可以看作是减少了时钟周期时间,这主要取决于我们的着眼点:如果某机器每条指令化费的是一个长时钟的周期,那么流水线减少了时钟的周期时间。4.1.1.2流水线的描述 流水线处理器的基本结构形式如图4-1所示。其中Si(Stage)为各流水部件,Li(Lock)为锁存器,C(Clocks)为每个流水部件处理结果进入下一级的控制时钟,其时钟周期(或节拍周期)ti为一个流水部件处理子过程的时间tsi加上延迟时间td。 L0 L2 L3 Lm-1 Lm 输入 S1 S2 Sm 输出 C图4-1 流水线处理基本结构由前所述,节拍时间是固定的

8、,则流水级时钟周期应为:Tmaxtsitd 我们可以将指令流水执行归纳为如下特点:1. 一条指令分成几个子过程,每个子过程为一个流水级,这些子过程的处理部件在流水时钟控制下组成了流水线。2. 每个子过程由专门的硬件功能部件来完成。这个功能部件和其它的功能部件在工作时间上是重叠的。称这些功能部件是流水功能部件。3. 每个流水功能部件的工作时间是不相同的,流水节拍时间由最长的流水功能部件处理时间决定。4. 流水线工作一般有三个阶段:建立、稳态和排空阶段。5. 理想情况下,在流水线处于稳态时,每一流水节拍时间都得到一条指令执行的结果,流水加速比(Speedup)就等于流水线的级数或流水深度。6. 流

9、水线适用于大量重复性的、可分离的处理过程,顺序计算机的指令执行过程就是重复处理的过程。 为了方便流水线处理器结构的分析,我们采用时空图来描述,如图4-2,其中纵坐标为空间(即各流水级),横坐标为时间(流水节拍)。方格中的数字说明该时间、空间的任务号。S412345n-1nS312345n-1NS212345n-1nS112345n-1nt1t2t3t4t5tntn+3时间图4-2 流水线处理的时空图 但这种描述方法对流水线中指令执行过程的分析很不方便,因而在分析流水线指令执行过程中,我们用指令流水状态图表来描述,这样对指令执行过程情况一目了然。如图4-3所示,其中横向表示流水节拍,纵向表示指令

10、序列,图中指令执行状态由符号表示。 指令序列流 水 时 钟 数123456789 指令 iIFIDEXMEMWB 指令 i+1IFIDEXMEMWB 指令 i+2IFIDEXMEMWB 指令 i+3IFIDEXMEMWB 指令 i+4IFIDEXMEMWB图4-3 流水状态图 这里我们假定处理器分5个流水功能部件。如果用流水状态图表描述流水线指令执行过程引起误解或不能说明问题时,我们采用流水功能部件和流水寄存器来代替指令流水状态图表中的执行状态,如图4-10。4.1.1.3流水线的分类 从不同角度观察,流水线可以有多种分类方法。 1.按处理的级别分类 可以有:操作部件级、指令级及处理器级三种。

11、操作部件级是将一些较为复杂的算术与逻辑运算,组成流水线处理方式,如高速乘法、浮点运算等。指令级流水是将一条指令的执行过程分为多个阶段,如前面所述的时间上重叠执行,同时执行多条指令即形成了指令流水。处理器流水线是指对于相同类型的数据流进行处理,每一个处理器完成其专门的任务,各处理器的结果存放在两个处理器之间的存储器中,如图4-4所示。 M1 P1 M2 P2 M3 P3 M4 T1 T2 T3图4-4 处理器级流水 M:存储器 P:处理器 T:任务 2.按完成的功能分类 有单功能流水线和多功能流水线。 单功能流水线只完成一种功能,如乘法或浮点运算;多功能流水线可以完成多种功能,其功能段可以按照不

12、同功能的要求联接,当然功能段的种类比较多。如图4-5所示,流水线中包括了八个功能段,如果要完成浮点运算,可按图4-5(b)连接流水;如果完成乘法,则可按图4-5(c)方式连接流水。 1 输 入 输 入 输 入 2 求阶差 求阶差 3 对 阶 对 阶 4 相 加 相 加 5 规格化 规格化 6 相 乘 相 乘 7 累 加 累 加 8 输 出 输 出 输 出 (a) (b) (c)图4-5 美国TI-ASC多功能流水线(a)流水线功能级 (b)浮点加减时的流程 (c)定点乘法时的流程 3.按联接的方式分类 在多功能流水线中,根据功能的连接方式不同,可分为静态流水线与动态流水线。静态流水是指在同一个

13、时间内,多功能结构中只能按一种功能的连接方式工作,这对于大量数据进行相同处理来说,具有很好的效果。但是遇到不同功能的交替处理时(如在图4-5结构中进行乘法与浮点相加交替运算),流水线就失去其优点,运算速度与顺序处理方式没有什么区别。动态流水线是指在同一个时间内,可以有多种功能的连接方式同时工作。如图4-5中多个功能段,其中一些功能段正在实现乘法运算,同时其它功能块还可以进行浮点运算或完成别的功能,这种方式的流水工作效率最好,但是控制也变得很复杂。 4.按处理的数据类型分类 可以分为标量流水线与向量流水线。所谓标量就是除向量数据表示之外的其它数据类型。标量流水线就是指所处理的数据类型中不包含向量

14、数据的流水线。向量流水线,则是专用来处理向量数据的。 5.从流水线结构上分类 可以分为线性流水线与非线性流水线。所谓线性流水线,是指各功能块顺序串行连接,无反馈回路;前面所述各种流水线均属此类。非线性流水线是指带有反馈回路的流水线,在流水线上流动的数据流也是非线性的。如图4-6(a)所示,其正常流水顺序是S1S2S3,而在该结构中,每一个功能段都可以输出,而各功能段之间除了寄存器外,还增加了一个多路选择器,可以选择不同的输入。如果在该流水线中完成A、B两个功能,而A、B都需要反馈处理。其数据流的流向由图4-6(b)中两表给出.。可以看出,对于功能A,流水线的顺序为S1S2S3S1S3S3S1S

15、2,由S2得到输出。而功能B,其流水线的顺序为S1S3S2S3S1S2S3,由S3得到输出。非线性流水线,通常是一个多功能流水线,多用于递归处理,这种结构对控制的要求很高,也很复杂,除了以前所述需要进行多功能的不同连接外,其输入数据的时间也难以控制,既要发挥流水的优点,又要解决功能段可能冲突的问题。 S1 S2 S3 M1 M2 M3 L1 L2 L3(a)非线性流水线t0t1t2t3t4t5t6t7S1AAAS2AA(A)S3AAAS1BBS2BB(B)S3BBB(b)调度预约表图4-6 M:多路选择器 L:锁存器 S:功能部件4.1.2 基本处理器流水线 对于第三章介绍的处理器,只要略加改

16、变就可成为一个简单的流水线处理器。我们将基本处理器的五个执行步骤改为5个流水节拍,就形成具有5级流水深度的流水线结构处理器,每个节拍为一个时钟,可以启动一条指令,如图4-7所示。每条指令需流过个节拍,个时钟才能完成。每个时钟期间硬件将启动一条新指令,流水线中个硬件功能将执行条不同指令的某些子过程。指令序列流 水 时 钟 数123456789 指令 iIFIDEXMEMWB 指令 i+1IFIDEXMEMWB 指令 i+2IFIDEXMEMWB 指令 i+3IFIDEXMEMWB 指令 i+4IFIDEXMEMWB图4-7 MIPS R2000的整数流水线 其中: IF 取指 ID 译码和取寄存

17、器操作数 EX 执行或有效地址计算 MEM 存储器访问 WB 写回 在这个简单的指令流水状态图中,我们首先来看一下,在一个流水节拍中机器到底做了些什么事情。我们发现:基本处理器进行流水处理时,无法要求数据通路(datapath)上的一个硬件单元在同一时刻做两个不同的操作。例如:单个ALU不能同时进行有效地址计算和加法运算操作。因此,要保证流水线顺利进行,必须消除指令重叠执行时的这种冲突。基本处理器要经过改进才能成为流水线处理器。4.1.2.1基本流水线的工作过程 简单的RISC处理器的指令集不是很复杂,我们可以来分析一下,处理器在工作时的硬件资源使用情况。图4-8显示了一个级流水的简单处理器数

18、据通路的流水工作过程。图中表明了主要功能单元在不同节拍中的使用情况和多指令重叠执行所带来的相应冲突。我们可以看出,图中时钟周期(CC5)至少有如下几种冲突:图4-8 基本流水线部件工作 首先,取指令和数据存取操作都要使用存储器。可以使用分离的数据和指令存储器,典型的实现方式采用分离的指令CACHE和数据CACHE,如pentium芯片就采用这种方式。使用分离的CACHE消除了用单一的存储器时出现的冲突。但要注意一点,如果流水线的时钟周期等于非流水线的时钟周期,那么存储器的带宽要增加5倍,即非流水时最多5个时钟访问两次存储器,流水时一个时钟访问5次。 第二,寄存器组有两个流水级要使用:其一是在译

19、码级(ID),其二是在回写级(WB)。在不同的位置上使用情况是不同的。由于只有一个寄存器口,在每个时钟周期内要完成一次读和一次写会产生冲突。如图中半实线框所示。在一个节拍中对同一个寄存器进行读和写是也会有冲突。这个问题我们在后面讨论。 第三,图4-8中没有画出程序指针PC的工作情况,实际上每个时钟启动一条新指令,都必须将指针增加一个值并将其保存起来,为下一条指令的取指级(IF)作准备见表4-1。这样我们必须重新考虑转移影响的问题,因为转移PC值要到MEM级才完成计算。这在非流水线的数据通路中是不成问题的,但流水线的数据通路要在取指级(IF)将转移的PC指针值修改好,即要提前知道转移的目标地址值

20、。这个问题在控制冲突这一节中将详细讨论。表4-1 对应图4-8的RISC计算机流水工作资源使用情况表 流水级PC指针部件存储器数据通道 IFPCPC+4IRMemPC IDPC1PCIR1IRARs1; BRs2 EXDMARA+(IR116)#IR116.31;SMDRB;orALUoutputA op (B or (IR116)#IR116.31);orALUoutputPC1+(IR116)#IR116.31);cond(A op 0) MEMif (cond) PCALUoutputLMDRMemDMAR orMemDMARSMDRALUoutput1ALUoutput WBRd AL

21、Uoutput1 or LMDR 第四,在ALU中加法器在一个节拍中可能有如下三种情况要使用到(见表4-1): 1.在取指级中计算PC指针值。 2.计算存储器数据存取的有效地址。 3.ALU操作中的算术或逻辑运算。 在正常情况下,存储器访问的有效地址计算和ALU的本身操作不会发生冲突(不会有两个EX级在同一时钟周期内出现)。只有PC指针值的计算会出现冲突。 最后,因为在每个时钟周期,每一个流水级都是在工作的,而所有在流水线相应级中的指令都必须在一个时钟内完成,且任何操作的组合都可能在同一时刻发生,因此,流水线上每一个流水部件的处理结果都必须放在寄存器里才能从前一流水级进入到下一流水级。这个寄存

22、器在每个流水级之间称为流水线寄存器(Pipeline Registers)或流水线锁存器(Pipeline Latches)。图4-9是对第三章介绍的基本处理器进行修改后的基本流水线处理器。图4-9 图中用流水寄存器分隔了各流水执行单元,非常清楚地指出了指令执行是通过流水锁存器从一个流水部件进入到另一个流水部件。每个流水寄存器其实包含有一组寄存器,而不仅仅是一个,每个执行单元本身已有的保存暂存值的寄存器都可以作为流水寄存器。例如,指令寄存器(IR)就是取指级和译码级之间的流水寄存器IF/ID。下一级要使用的所有值都必须存放在流水寄存器中。有时前面的流水级部件所需的值是由后面流水级执行结果提供。

23、例如取数指令或ALU操作中的目的操作数寄存器,接收来自MEM/WB的流水寄存器数据,而不是来自IF/ID流水寄存器数据。因为取数指令或ALU操作是将指令的结果写入寄存器,而不从它的前级IF接收数据。而指令码的目的寄存器段简单地从一级流水寄存器传送到另一级执行单元,送到WB级给其使用。 流水线中某一时刻流水级可能执行任何指令,也就是说在一对流水寄存器之间,会出现代表各种指令执行的事件组合。首先我们要知道不同的指令进入流水线后,在一个流水节拍或一个机器时钟中,处理器到底做了那些事情。表4-1列出了每个流水级在同一机器时钟下处理器所作的工作。表中用流水线寄存器指出了和图4-9对应的不同指令执行时数据

24、从一个流水级流入下一个流水级的全过程。这里值得注意的是,流水线的开头两级的工作情况是和当前执行的指令类型无关的。任何指令进入这两级工作情况都是一样的,因为指令要在ID级结束时才译码完毕,因此,在这两级中机器做的工作必须和指令类型无关。 在IF级:取指令和计算新PC值,保存新PC值在流水寄存器中,供后面计算转移目标地址时使用。 在ID级:选通寄存器并用符号位扩展指令寄存器IR的低16位,将NPC和IR传入ID/EX流水寄存器。 在EX期间:完成ALU操作和地址计算,并将指令寄存器IR和B寄存器(Store指令)传入EX/MEM流水寄存器。 在MEM级:访问内存,作出转移决定;如果需要,改写PC值

25、,并将所需值传送到最后一级。 最后在WB级:用ALU输出或Load指令的结果修改目的寄存器值。在整个流水过程中,指令寄存器始终从一级传送到下一级,对它的使用也随之越来越少。 但IF级依赖指令执行到EX/MEM时是否发生转移,如果发生转移,那么目标地址用来取指和计算下一条指令PC值。否则用当前PC值取指和计算下一条指令PC值。转移影响会导致流水线工作复杂,我们将在后面专门分析。从表中我们看出指令代码中固定源寄存器操作数编码位置是很有用的,它可以在译码的同时选通指令要使用的源寄存器。 图4-9中我们还看到有4个多路选择电路,它是用来控制这个简单的流水线工作的。在ALU流水执行级,2个多路选择电路用

26、来控制不同类型指令的数据进入ALU运算器,多路选择电路则由ID/EX流水寄存器中的指令寄存器控制。这两个多路选择电路的上部输入端用来输入计算机转移指令的目标地址的数据,由指令是否转移来控制;而下部输入端则用来输入r-r型的ALU操作类型的数据,由其相应的指令来控制。IF级的多路选择电路从当前的PC值以及EX/MEM流水寄存器送过来的转移目标PC值中选出一个,作为取指令的地址,这个多路选择电路由EX/MEM流水寄存器的条件位来控制。第4个多路选择电路由WB流水级的指令是取数还是ALU操作来控制。除了这4个多路选择电路外,还有一个多路选择电路,在图4-9中没有画出来,前面提到:目的寄存器操作数根据

27、指令类型有两个不同的来源,因此在WB级要有一个多路选择电路,用来选择正确的目的操作数的端口,它由MEM/WB级流水寄存器中的IR寄存器来指定是选择指令寄存器IR中的立即数,还是选择ALU操作的目的寄存器操作数。4.1.2.2流水线的基本性能 流水线增加了CPU的指令吞吐率单位时间内完成的指令数,但它不减少单条指令的执行时间。而事实上还略微增加了每条指令的执行时间,这是因为流水线控制需要化费一些时间。增加指令的吞吐率意味着整个程序运行加快、总执行时间减少,并不是单条指令执行加快。 单条指令的实际执行时间没有减少,其原因除流水线延时外,还来自流水级之间执行时间、流水线开销的不平衡。这种不平衡降低了

28、指令执行的性能,因为机器时钟比工作最慢的流水执行部件还要慢。流水线开销主要是因为流水线寄存器延时和时钟上升沿引起。流水线寄存器或锁存器延时加上脉冲上升建立时间增加了时钟周期。时钟上升沿决定了时钟周期的最短极限。若一个时钟周期与时钟的上升和锁存开销之和相同,则流水线是不能工作的,因为一个时钟已没有多余的时间用来给流水执行部件工作了。 例.假定RISC流水线计算机,时钟周期是10ns,ALU操作和条件转移要4个时钟周期,而存储器访问操作要5个时钟周期。这三种指令操作的使用概率相应是40%、20%和40%。假设由于时钟上升和建立,流水线机器每个时钟要增加1ns的开销。忽略任何其它延时影响,问5级流水

29、线机器可以获得的加速比是多少? 解:非流水线计算机平均每条指令执行时间是: 用流水线实现,时钟必须运行在最慢的流水执行的脉冲开销上,这个值是:10111ns,此时每条指令平均执行时间是: 则流水线计算机的Speedup是: 这个1ns的开销限制了流水线的效率。 如果非流水计算机的CPI已经是1,那么流水将带来更小的时钟周期。前面介绍的数据通路只是简单地移去锁存器并让数据从一个执行周期流入到下一个执行周期,那么流水线计算机和这种单周期计算机比较其加速比又是多少呢? 例.假定机器指令执行需要个功能单元,这个单元的操作所需时间分别是10ns、8ns、10ns、10ns和7ns。假定流水要增加1ns的开销。求出流水相对于单周期指令的机器的加速比。 解:非流水计算机执行所有指令都用单个时钟,它的每条指令平均时间直接是时钟周期的时间。时钟周期时间等于每一步的执行时间之和: 在流水线机器上的时钟周期必须是流水线中执行时间最长的流水部件的执行时间(10ns),再加上1ns的开销,总共是11ns。因为要求CPI

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1