计算机体系结构之流水线技术ppt课件.ppt

上传人:牧羊曲112 文档编号:1438681 上传时间:2022-11-24 格式:PPT 页数:124 大小:1.13MB
返回 下载 相关 举报
计算机体系结构之流水线技术ppt课件.ppt_第1页
第1页 / 共124页
计算机体系结构之流水线技术ppt课件.ppt_第2页
第2页 / 共124页
计算机体系结构之流水线技术ppt课件.ppt_第3页
第3页 / 共124页
计算机体系结构之流水线技术ppt课件.ppt_第4页
第4页 / 共124页
计算机体系结构之流水线技术ppt课件.ppt_第5页
第5页 / 共124页
点击查看更多>>
资源描述

《计算机体系结构之流水线技术ppt课件.ppt》由会员分享,可在线阅读,更多相关《计算机体系结构之流水线技术ppt课件.ppt(124页珍藏版)》请在三一办公上搜索。

1、3 流水线技术,张伟计算机学院,大纲,1 概念定义2 流水线分类3 MIPS五级流水线4 性能分析5 流水线相关6 高级流水线技术,1 概念定义,洗衣店的例子,A, B, C, D 均有一些衣物要 清洗,甩干,折叠清洗要花30 分钟甩干要用40 分钟叠衣物也需要20 分钟四人衣物一共要花 4*(30+40+20)=360分钟,流水线的基本概念,四人衣物一共要花 30+40*4+20=210分钟,流水线的基本概念,流水线技术:把一个重复的过程分解为若干个子过程,每个子程序可以与其他子过程同时进行描述流水线的工作,最常用的方法是时间-空间图(时空图)横坐标:表示时间,即各个任务在流水线中所经过的时

2、间纵坐标:表示空间,即流水线的各个子过程,也称为级、段、流水线深度(Stage),流水线的时空图,流水线的特点,流水线实际上是把一个功能部件分解成多个独立的子功能部件(一个任务也就分成了几个子任务,每个子任务由一个子功能部件完成),并依靠多个子功能部件并行工作来缩短所有任务的执行时间流水线有助于提高整个程序(所有任务)的吞吐率,但并没有减少每个指令(任务)的执行时间流水线各个功能段所需时间应尽量相等。否则,时间长的功能段将成为流水线的“瓶颈”,会造成流水线的“阻塞”(Stall)流水线开始需要“通过时间” (Fill)和最后需要“排空时间”(Drain)。流水线只有处理连续不断的任务才能发挥其

3、效率,2 流水线分类,流水线的分类(1),按流水线所完成的功能分类单功能流水线:只能完成一种固定功能的流水线多功能流水线:流水线的各段可以进行不同的连接,使流水线在不同的时间,或者在同一时间完成不同的功能例如: TI ASC的多功能流水线,多功能流水线,流水线的分类(2),按流水线在同一时间内各段的连接方式分类静态流水线:在同一时间内,多功能流水线各段只能按同一种功能连接。只有当按这种方式工作的所有任务都流出流水线之后,才能重新连接以实现其他功能。在静态流水线中,只有当输入是一串相同的运算操作时,流水的效率才能得到发挥。动画演示动态流水线:在同一时间内,多功能流水线各段可以按不同方式连接,同时

4、执行多种功能 动画演示,动态流水线VS静态流水线优点:能提高流水线的效率缺点:会使流水线的控制变得复杂,静态和动态流水线 时空图对比,流水线的分类(3),按照流水线的级别来分部件级流水线(运算操作流水线):把处理机的算术逻辑部件分段,使得各种数据类型的操作能够进行流水。处理机级流水线(指令流水线):把指令的解释执行过程按照流水方式进行处理。处理机间流水线(宏流水线):它是指由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。动画解析,流水线的分类(4),按流水线是否有反馈回路分类线性流水线:流水线的各段逐个串接,输入数据从流水线一端输入从另一端输出;每个段都只流过一次。非线性

5、流水线:流水线的各段除有串接外,还有反馈回路;在一次流水过程中,有的段要被多次使用。(举例),非线性流水线,流水线的分类(5),按照数据表示来分标量处理机:不具有向量指令和向量数据表示,仅对标量进行流水处理的处理机。例如:IBM360/91, Amdahl 470V/6 等向量处理机:具有向量指令和向量数据表示的处理机。例如:TI ASC, CRAY-I 等,流水线的分类(6),按照流动是否可以乱序来分顺序流动流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序相同。异步流动流水线(乱序流水线):流水线输出端任务流出的顺序与输入端任务流入的顺序不同。,3 MIPS五级流水线,DLX(Dan

6、cing Links),DLX 是一种简单的指令集(教学、简单芯片)在不流水的情况下,如何实现DLX。实现DLX指令的一种简单数据通路,MIPS的基本流水线,MIPS指令集结构用5个功能段实现,每个功能段用一个时钟周期取指令周期IF(Instruction Fetch)指令译码/读寄存器周期ID(Instruction Decode)执行/地址计算周期EX(Execute)存储器访问(计算有效地址)寄存器寄存器ALU操作寄存器立即数ALU操作存储器访问周期MEM(Memory Access)写回周期WB(Write Back),MIPS的简单实现,一条MIPS指令最多需要以下5个时钟周期:取指

7、令周期(IF) 操作IRMemPCNPCPC+4指令译码/读寄存器周期(ID) 操作A RegsrsB RegsrtImm (IR16)16#IR16.31) 指令的译码操作和读寄存器操作是并行进行的。 原因:在MIPS指令格式中,操作码字段以及rs、rt 字段都是在固定的位置。 这种技术称为固定字段译码技术。,执行/有效地址计算周期(EX) 不同指令所进行的操作不同:存储器访问指令 操作 ALUoA + Imm寄存器寄存器ALU指令 操作 ALUoA func B寄存器立即值ALU指令 操作 ALUoA op Imm分支指令 操作 ALUoNPC+(Imm2); cond(A = = 0)

8、将有效地址计算周期和执行周期合并为一个时钟周期,这是因为MIPS指令集采用loadstore结构,没有任何指令需要同时进行数据有效地址的计算、转移目标地址的计算和对数据进行运算。,存储器访问/分支完成周期(MEM)所有指令都要在该周期对PC进行更新。 除了分支指令,其他指令都是做PCNPC在该周期内处理的MIPS指令仅仅有load、store和分支三种指令。存储器访问指令 操作 LMDMemALUo 或者 MemALUoB分支指令 操作 if (cond) PC ALUo else PCNPC,写回周期(WB)不同的指令在写回周期完成的工作也不一样。寄存器寄存器ALU指令 操作 Regsrd

9、ALUo寄存器立即数ALU指令 操作 Regsrt ALUoload指令 操作 Regsrt LMD,不采用单周期实现方案的主要原因对于大多数CPU来说,单周期实现效率很低,因为不同的指令所需完成的操作差别相当大,因而所需要的时钟周期时间也大不一样。单周期实现时,需要重复设置某些功能部件,而在多周期实现方案中,这些部件是可以共享的。,每一个时钟周期完成的工作看作是流水线的一段,每个时钟周期启动一条新的指令。流水实现的数据通路设置了流水寄存器段与段之间设置流水寄存器流水寄存器的命名 用其相邻的两个段的名称拼合而成。 例如:ID段与EX段之间的流水寄存器用ID/EX表示每个流水寄存器是由若干个寄存

10、器构成的,3.5.2 基本的MIPS流水线,流水实现的数据通路,寄存器的命名形式为:x.y所包含的字段的命名形式为:x.ys 其中:x:流水寄存器名称 y:具体寄存器名称 s:字段名称 例如: ID/EX.IR:流水寄存器ID/EX中的子寄存器IR IRID/EX.IRop:该寄存器的op字段(即操作码字段)流水寄存器的作用将各段的工作隔开,使得它们不会互相干扰。保存相应段的处理结果。,例如:EX/MEM.ALUo:保存EX段ALU的运算结果MEM/WB.LMD:保存MEM段从数据存储器读出的数据向后传递后面将要用到的数据或者控制信息 所有有用的数据和控制信息每个时钟周期 会随着指令在流水线中

11、的流动往后流动一段。 增加了向后传递IR和从MEM/WB.IR回送到通用寄存 器组的连接。 将对PC的修改移到了IF段,以便PC能及时地加 4,为取下一条指令做好准备。,每一个流水段进行的操作IRrsIR6.10IRrtIR11.15IRrdIR16.20,流水段,流水线的每个流水段的操作,所有指令类型,ALU 指令,load/store 指令,分支指令,IF,ID,EX,IF/ID.IR MemPC,IF/ID.NPC, PC (if( EX/MEM.IRop = branch )& EX/MEM.cond)EX/MEM.ALUo else PC+4);,ID/EX.A RegsIF/ID.

12、IRrs;ID/EX.B RegsIF/ID.IRrt;,ID/EX.NPC IF/ID.NPC;ID/EX.IR IF/ID.IR;,ID/EX.Imm (IF/ID.IR16)16#IF/ID.IR16.31;,EX/MEM.IR ID/EX.IR;EX/MEM.ALUo ID/EX.A func ID/EX.B或EX/MEM.ALUo ID/EX.A op ID/EX.Imm;,EX/MEM.IR ID/EX.IR;EX/MEM.ALUo ID/EX.A + ID/EX.Imm;EX/MEM.BID/EX.B;,EX/MEM.IR ID/EX.IR;EX/MEM.ALUo ID/EX.N

13、PC + ID/EX.Imm2;EX/MEM.cond (ID/EX.A =0);,(动画演示),(动画演示),(动画演示),(动画演示),(动画演示),流水段,任何指令类型,ALU 指令,load/store 指令,分支指令,MEM,WB,MEM/WB.IR EX/MEM.IR;MEM/WB.ALUo EX/MEM.ALUo;,MEM/WB.IR EX/MEM.IR;MEM/WB.LMD MemEX/MEM.ALUo;或MemEX/MEM.ALUo EX/MEM.B;,RegsMEM/WB.IRrd MEM/WB.ALUo;或RegsMEM/WB.IRrt MEM/WB.ALUo;,Regs

14、MEM/WB.IRrt MEM/WB.LMD;,流水线的每个流水段的操作,(动画演示),(动画演示),(动画演示),(动画演示),4 流水线性能分析,流水线性能分析,吞吐率(throughput rate)单位时间内流水线所完成的任务数或输出结果的数量加速比(speedup ratio)完成一批任务,使用非流水线执行时间与使用流水线执行时间之比效率(efficiency)(指流水线的设备利用率)从时空图看,就是n个任务占用的时空区和m个段总的时空区之比,1.吞吐率,单位时间内流水线所完成的任务数量最大吞吐率:流水线在连续流动达到稳定状态后所得到的吞吐率各段相等:TPmax=1/t0各段不等:T

15、Pmax=1/maxti最大吞吐率取决于流水线最慢的功能段所需的时间实际吞吐率假设m段时间相等t0的流水线完成n个任务 t0 (说明),例题 分析,一个具有7段流水线的CPU,各段的执行时间分别为2ns,2.2ns,2.5ns,2.2ns,2.3ns,2.1ns,2.3ns ,在该CPU上完成10个连续任务所需要的时间为( )ns, 该CPU的最高频率为( )MHz.,流水线优化思路,流水线各段时间不等带来性能损失举例消除瓶颈的方法 (举例)细分瓶颈段 重复设置瓶颈段 (时-空图),2. 加速比,完成一批任务,使用非流水线执行时间与使用流水线执行时间之比假设m段时间相等t0的流水线完成n个任务

16、,3. 效率,由于流水线有通过时间和排空时间,所以流水线的各段并不是一直满负荷地工作。从时空图看,就是n个任务占用的时空区和m个段总的时空区之比假设m段时间相等t0的流水线完成n个任务,(举例),例题1,在静态流水线上计算 AiBi , (i=4) 求:吞吐率,加速比,效率。,解:,(1) 确定适合于流水处理的计算过程(2) 画时空图(3) 计算性能吞吐率 TP7(20t) 加速比 S(34t)(20t)1.7效率 E(4436)(820)0.21,进一步优化,可以看出,在求解此问题时,该流水线的效率不高。 (原因)动态流水线的时空图 举例 这样行不行? 正确答案,瓶颈问题理想情况下,流水线在

17、工作时,其中的任务是同步地每一个时钟周期往前流动一段。当流水线各段不均匀时,机器的时钟周期取决于瓶颈段的延迟时间。在设计流水线时,要尽可能使各段时间相等。流水线的额外开销流水寄存器延迟时钟偏移开销,3.3.5 流水线设计中的若干问题,流水寄存器需要建立时间和传输延迟建立时间:在触发写操作的时钟信号到达之前,寄 存器输入必须保持稳定的时间。传输延迟:时钟信号到达后到寄存器输出可用的时 间。时钟偏移开销流水线中,时钟到达各流水寄存器的最大差值时间。(时钟到达各流水寄存器的时间不是完全相同),有关流水线性能的若干问题,(1) 流水线并不能减少(而且一般是增加)单条指令的执行时间,但却能提高吞吐率。(

18、2) 适当增加流水线的深度(段数)可以提高流水线的性能。(3) 流水线的深度受限于流水线的延迟和流水线的额外开销。(4) 相关问题。如果流水线中的指令相互独立,则可以充分发挥流水线的性能。但在实际中,指令间可能会是相互依赖,这会降低流水线的性能。下一节介绍如何解决相关问题。,5 流水线相关,流水线中的相关(1),流水线中存在一些冲突(冒险Hazard,相关、依赖Dependence,竞争Competition)的情况,它使得下一条指令无法在预定设计的时钟周期内执行。这些冲突将降低流水线性能主要有三种类型的冲突(相关)结构相关(资源冲突):当指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求

19、数据相关(数据冲突) :在同时执行的多条指令中,一条指令依赖前一条指令的执行结果(数据)控制相关(控制冲突):流水线遇到分支指令或其他改变PC值的指令,流水线中的相关(2),相关有可能会使流水线停顿。当一条指令被暂停时,暂停在其后发射(流出)的指令,但继续执行在其前发射的指令。消除相关的基本方法:让流水线中的某些指令暂停,而让其它指令继续执行。,结构相关,1. 在流水线机器中,为了使各种指令组合能顺利地重叠执行,需要把功能部件流水化,并把资源重复设置。2. 如果某种指令组合因资源冲突而不能顺利重叠执行,则称该机器具有结构相关。3. 常见的导致结构相关的原因:功能部件不是全流水重复设置的资源的份

20、数不够,4. 结构相关举例:访存冲突当数据和指令存在同一存储器中时,访存指令会导致访存冲突。解决办法: 插入暂停周期(“流水线气泡” ) 引入暂停后的时空图解决方法: 设置相互独立的指令存储器和数据存储器或设置相互独立的指令Cache和数据Cache。,5. 避免结构相关所有功能单元完全流水化设置足够的硬件资源硬件代价很大6. 有些设计方案允许有结构相关降低成本减少部件的延迟,数据相关,1. 数据相关简介当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作数的顺序,使之不同于它们在非流水实现时的顺序,这将导致数据相关。举例当两条指令对存储器同一单元进行读写时,也可能发生数据相关。但本章仅

21、讨论有关寄存器的数据相关。,2. 利用定向技术减少数据相关引起的暂停(1) 主要思路:在发生上述数据相关时,如果能够将计算结果从其产生的地方直接送到需要它的地方,就可以避免暂停。(2) 当定向硬件检测到前面某条指令的结果寄存器就是当前指令的源寄存器时,控制逻辑会将前面那条指令的结果直接从其产生的地方定向到当前指令所需的位置。(3) 工作过程演示(4) 一个功能单元的输出不仅可以定向到其自身的输入,而且还可以定向到其它单元的输入。(5)所有的定向发生在: (图示) ALU或DM输出 ALU输入,DM输入,“O”检测部件,数据相关的分类,按照指令对寄存器的读写顺序,可以将数据相关分为以下三种类型:

22、(考虑两条指令i和j,假设i先进入流水线)(1) 写后读相关 (RAW) (命名规则) 在 i 写入之前,j 先去读。j 读出的内容是错误的。这是最常见的相关。(2) 写后写相关 (WAW)(3) 读后写相关 (WAR),4. 需要暂停的数据相关(1) 并非所有的数据相关都可以用定向技术解决.举例(2) 增加流水线互锁硬件,插入“暂停”。 当互锁硬件发现这种相关时,就 暂停流水线,直到相关消失。 举例:演示A(流水线)演示B(时空图),流水线的控制相关,分支指令主要有:无条件分支指令:跳转、过程调用和过程返回条件分支指令执行分支指令,程序计数器PC值两种情况:PC值改变为目标地址(转移成功)P

23、C值保持正常(转移失败,顺序执行)PC值不定,所以流水线需要暂停,直到确定了新的PC值为止在DLX流水线中,分支转移成功导致暂停3个时钟周期。,处理分支指令最简单的方法一旦检测到分支指令(在ID段),就暂停执行其后的指令,直到分支指令到达MEM段,确定出新的PC值为止。减少流水线处理分支指令时的暂停周期数:流水线中尽早判断出转移成功或转移失败判断往前移尽早计算出转移成功的分支目标地址多个加法器部件,降低流水线分支损失的方法,种简单的静态方法,编译时预测(1)冻结(Freeze)或排空(Flush)流水线暂停流水线直到分支目标地址确定(2)预测分支失败继续执行分支指令之后的指令在知道分支结果之前

24、,分支指令后的指令不能改变机器状态,或者改变了之后能够回退。若分支失败,则照常执行;否则,从转移目标处开始取指令执行。DLX流水线的处理过程,5段MIPS改进后采用“预测分支失败”,分支失败无停顿,分支成功有一个时钟周期的停顿;还可以采用一条延迟指令槽的延迟分支方法,(3)预测分支成功目标地址计算出之后,就开始执行目的地址处的指令起作用的前题:先知道分支目标地址,后知道分支是否成功。对DLX流水线没有任何好处。(4)延迟分支(Delayed Branch)把分支开销为n 的分支指令看成是延迟长度为n 的分支指令,其后紧跟有n 个延迟槽Branch-delay Slot 。流水线遇到分支指令时,

25、按正常方式处理,顺带执行延迟槽中的指令,从而减少分支开销。延迟分支以及指令的执行顺序分支延迟槽中的指令“掩盖”了流水线原来必需插入的暂停周期分支延迟指令的调度任务:在延迟槽中放入有用的指令糟糕的情况:在延迟槽放置空操作NOP指令较好的情况:从分支指令前找到指令放置在延迟槽中,且不影响程序,6 高级流水线技术,单发射与多发射(issue) 单发射处理机: 每个周期只取一条指令、只译码一条指令,只执行一条指令,只写回一个运算结果。 取指令部件和指令译码部件各设置一套; 只设置一个多功能操作部件或设置多个独立的操作部件; 操作部件中可以采用流水线结构,也可以不采用流水线结构。 目标是每个时钟周期平均

26、执行一条指令,ILP的期望值为1。 多发射处理机: 每个周期同时取多条指令、同时译码多条指令,同时执行多条指令,同时写回多个运算结果。 需要多个取指令部件,多个指令译码部件和多个写结果部件。 设置多个指令执行部件,有些指令执行部件采用流水线结构。 目标是每个时钟周期平均执行多条指令,ILP的期望值大于1。,多指令流出技术,将等于1的理想CPI减小,必须实现一个时钟周期发射(流出issue)多条指令超标量(Superscalar)处理器:每个时钟周期发射多条指令(18),可以采用编译器进行静态调度顺序执行,也可以采用硬件动态调度乱序执行超长指令字(VLIW: Very Long Instruct

27、ion Word):通过编译器调度无关的多条指令(416)形成一条长指令,每个时钟周期发射一条长指令超级流水线(Super pipelining):将每个功能部件进一步流水化,使得一个功能部件在一个时钟周期中可以处理多条指令(可以简单地理解为很长的流水线),多发射流水线,三种主流处理机: 超标量处理机:Intel公司的i860、i960、Pentium处理机,Motolora公司的MC88110,IBM公司的Power 6000,SUN公司的SPARC、 SuperSPARC、 UltraSPARC等。 超流水线处理机:SGI公司的MIPS R4000、R5000、R10000等。 超标量超流

28、水线处理机:DEC公司的Alpha等。,超标量处理机基本结构 一般流水线处理机: 一条指令流水线, 一个多功能操作部件, 每个时钟周期平均执行指令的条数小于1。 多操作部件处理机: 一条指令流水线, 多个独立的操作部件,可以采用流水线,也可以不流水。 多操作部件处理机的指令级并行度小于1。 超标量处理机典型结构: 多条指令流水线。 先进的超标量处理机有:定点处理部件CPU,浮点处理部件FPU,图形加速部件GPU,大量的通用寄存器,两个一级Cache。 超标量处理机的指令级并行度(ILP)大于1。,Motorola公司的MC88110。有10个操作部件。 两个寄存器堆:整数部件通用寄存器堆,32

29、个32位寄存器; 浮点部件扩展寄存器堆,32个80位寄存器。 缓冲深度为4的先行读数栈,缓冲深度为3的后行写数栈。 两个独立的高速Cache中,各为8KB,采用两路组相联方式, 转移目标指令Cache,存放一条分支上的指令。,超标量处理机:一个时钟周期能同时发射多条指令的处理机 必须有两条或两条以上能够同时工作的指令流水线。 先行指令窗口:能够从指令Cache中预取多条指令, 能够对窗口内的指令进行数据相关性分析和功能部件冲突检测。 先行指令窗口的大小:一般为2至8条指令。 目前的指令调度技术,每个周期发射2至4条指令比较合理。 例如:Intel公司的i860、i960、Pentium,Mot

30、olora公司的MC88110,IBM公司的Power 6000等每个周期都发射两条指令; TI公司生产SuperSPARC,Pentium III每个周期发射三条指令。 操作部件的个数一般多于每个周期发射的指令条数。通常为4 个至16个操作部件。 超标量处理机的指令级并行度:1ILPm。 m为每个周期发射的指令条数。,多流水线调度 多条流水线的调度问题是一个NP完全问题, 顺序发射(in-order issue)与乱序发射(out-order issue): 指令发射顺序是按照程序中指令排列顺序进行的称为顺序发射 顺序完成(in-order completion)与乱序完成(out-orde

31、r completion) 指令完成顺序是按照程序中指令排列顺序进行的称为顺序完成 多流水线的调度主要有三种方法: 顺序发射顺序完成,顺序发射乱序完成,乱序发射乱序完成。I1:LOAD R1, A ;R1(A)I2:FADD R2, R1 ;R2(R2)(R1)I3:FMUL R3, R4 ;R3(R3)(R4)I4:FADD R4, R5 ;R4(R4)(R5)I5:DEC R6 ;R6(R6)1I6:FMUL R6, R7 ;R6(R6)(R7),普通标量处理机,希望相同操作连续出现。 只有连续出现相同操作的指令序列时,流水线才能不“断流”,功能部件的效率才能得到充分发挥。超标量处理机则正

32、好相反,希望相同操作不要连续出现。 相同操作的指令序列连续出现时,会发生资源冲突; 要求相同操作的指令能够相对均匀地分布在程序中。超标量处理机的这种要求正好符合一般标量程序的特点。,80486的整数指令流水线,5级指令流水线,每级1个时钟周期 PF指令预取(prefetch) D1指令译码1(decode stage 1)对所有操作码和寻址方式信息进行译码 D2指令译码2(decode stage 2)将操作码扩展为ALU的控制信号,存储器地址计算EX指令执行(execute)完成ALU操作和Cache存取WB回写(write back)更新在EX步骤得到的寄存器数据和状态标志,Pentium

33、的超标量流水线,类似80486的5级流水线,后3级可以在两个流水线同时进行指令预取PF和指令译码D1步骤可以并行取出、译码2条简单指令,然后分别发向U和V流水线在满足指令配对的条件下,Pentium可以每个时钟周期执行完2条指令,Pentium的超标量结构,Pentium的指令配对检测过程(近似表达),IFi1是简单指令并且i2也是简单指令并且i1不是转移指令并且i1和i2不存在数据相关THENi1发往U流水线i2发往V流水线ELSEi1发往U流水线i2做为下对指令的第1条指令i1,超流水线处理机,两种定义: 在一个周期内能够分时发射多条指令的处理机 指令流水线的功能段数为8段或超过8段的流水

34、线处理机提高处理机性能的不同方法: 超标量处理机:通过增加硬件资源来提高处理机性能 超流水线处理机:通过各部分硬件的重叠工作来提高处理机性能。两种不同并行性: 超标量处理机采用的是空间并行性。 超流水线处理机采用的是时间并行性。,指令执行时序每隔1/n个时钟周期发射一条指令, 即处理机的流水线周期为1/n个时钟周期。在超流水线处理机中,流水线的有些功能段还可以进一步细分,例如:ID功能段,可以再细分为:译码、读第一操作数和读第二操作数三个流水段。,典型处理机结构 MIPS R4000处理机,每个时钟周期包含两个流水段, 是一种很标准的超流水线处理机结构。 指令流水线有8个流水段。 有两个Cac

35、he,指令Cache和数据Cache的容量各8KB, 每个时钟周期可以访问Cache两次, 因此在一个时钟周期内可以从指令Cache中读出两条指令, 从数据Cache中读出或写入两个数据。 主要运算部件有整数部件和浮点部件。,超标量超流水线处理机,把超标量与超流水线技术结合在一起,就成为超标量超流水线处理机超标量超流水线处理机在一个时钟周期内分时发射指令m次,每次同时发射指令n条超标量超流水线处理机每个时钟周期总共发射指令m n条,指令执行时序,典型处理机结构 DEC公司的Alpha处理机采用超标量超流水线结构。 主要由四个功能部件和两个Cache组成。 四个功能部件是:整数部件EBOX、浮点

36、部件FBOX、 地址部件ABOX和中央控制部件IBOX。 中央控制部件IBOX能够同时读出两条指令, 同时对两条指令进行译码,作资源冲突检测,进行数据相关性 和控制相关性分析。如果资源和相关性允许,IBOX就把两条指 令同时发射给EBOX、ABOX和FBOX三个执行部件中的两个。 指令流水线采用顺序发射乱序完成的控制方式。 在指令Cache中有一个转移历史表,实现条件转移的动态预测。 在EBOX内还有多条专用数据通路,可以把运算结果直接送到执行部件。,Alpha 21064处理机共有三条指令流水线, (1)整数操作流水线为7个流水段,其中, 取指令为2个流水段 分析指令为2个流水段 运算为2个

37、流水段 写结果1个流水段 (2)访问存储器流水线为7个流水段, (3)浮点操作流水线分为10个流水段,其中, 浮点执行部件FBOX的延迟时间为6个流水段。 因为三条指令流水线的平均段数为8,且每个时钟周期发射两条指令。因此,Alpha 21064处理机是超标量超流水线处理机,所有指令执行部件,包括EBOX、IBOX、ABOX和FBOX中都设置有专用数据通路。,3. 超长指令字,VLIW (Very Long Instruction Word)一种显式指令级并行指令系统二维程序结构指令级并行度高指令级并行技术VLIW的主要特点VLIW处理机目标代码兼容问题,什么是VLIW,1. VLIW (Ve

38、ry Long Instruction Word)的背景由美国J. A. Fisher教授于1981年首先提出,最初来源于水平微程序由J. A. Fisher创建的Mutiflow公司研制了的世界上第一台VLIW处理机TRACE28/300。一条指令中包含有多个能够同时执行的操作,TRACE28/300处理机的一条超长指令中最多有28条可以同时执行的指令。算法和编译技术是关键,2. 什么是VLIW指令系统,一种显式指令级并行指令系统。在一条VLIW指令中包含有多个相同或不同的操作字段(每个操作字段的功能相当于一般处理机中的一条指令)。每个操作字段能够分别独立控制各自的功能部件同时工作。二维程序

39、结构指令级并行度高,指令级并行,提出VLIW指令系统的主要目的是要开发程序中的指令级并行性(Instruction Level Parallelism)1. 超标量(Superscalar)处理机依靠设置多条指令流水线,并通过同时发射多条指令来提高处理机的运算速度2. 超流水线(Superpipelining)处理机通过分时使用同一条指令流水线的不同部分来提高处理机的运算速度3. VLIW处理机,VLIW的主要特点,1. 采用显式并行指令计算(EPIC:Explicitly Parallel Instruction Computing)方式。在VLIW处理机上运行的程序是一个二维指令矩阵,每一

40、行上的所有操作组成一条超长指令,他们之间没有数据相关、控制相关和功能部件冲突,这些指令可以在VLIW处理机上同时执行超标量处理机和超流水线处理机通常采用隐式并行指令方式。程序是一维线性的指令序列,每条指令中一般只包含一个操作。,2 指令级并行度高,超标量处理机和超流水线处理机的指令级并行度一般为2左右,通常不超过4,目前多数VLIW处理机的指令级并行度在4至8之间,有的已经达到几十。由于在VLIW中通过并行编译器来开发程序中的指令级并行性,可以在一个循环、一个函数、甚至整个程序中寻找指令级并行性,而且,可以采用软件流水、循环展开等指令级并行度很高的方法充分开发程序中的多种并行性,3. 硬件结构

41、规整、简单VLIW处理机主要由很规则的寄存器、存储器、运算部件和数据通路等组成,不规则的控制器很简单,而且,不需要复杂的指令并行调度窗口及多发射机制等。4. 编译器的实现难度大VLIW并行编译器主要依靠指令级并行算法、数据相关性分析算法、寄存器分配算法及并行编译技术等来显式开发程序中的指令级并行性,从而提高处理机的运行速度。要研制指令级并行度高的编译器难度很大。,VLIW处理机,1. 安腾(Intanium)处理机Intel公司与HP公司联合研制在Intel公司称为IA-64处理机安腾(Intanium)处理机有自己独立的系统软件和应用软件2. DAISY (Dynamically Archi

42、tected Instruction Set from Yorktown) 处理机由IBM公司研制采用动态二进制转换技术实现与X86处理机兼容,3. Crusoe处理机由Transmeta公司研制已经大量应用于笔记本计算机中,一个重要特点是功耗很低。采用动态二进制转换技术把X86通用处理机的程序直接映射到Crusoe处理机的VLIW结构中执行。4. 嵌入式、DSP、JAVA虚拟机很多专用处理机采用VLIW体系结构,多指令流出CPI1 高级流水线,4.4 多指令流出技术4.4.1 基于静态调度的多流出技术(*)4.4.2 基于动态调度的多流出技术4.4.3 超长指令字技术(VLIW)(*)4.4

43、.4 多流出处理器受到的限制4.4.5 超流水线处理机(*)4.5 循环展开和指令调度,一个时钟周期内流出多条指令, CPI1。单流出和多流出处理机执行指令的时空图对比,4.4 多指令流出技术,单流出和多流出处理机执行指令的时空图,多流出处理机有两种基本风格:超标量(Superscalar)在每个时钟周期流出的指令条数不固定,依代码的具体情况而定。(有上限)设这个上限为n,就称该处理机为n流出。可以通过编译器进行静态调度,也可以基于Tomasulo算法进行动态调度。 超长指令字VLIW(Very Long Instruction Word)在每个时钟周期流出的指令条数是固定的,这些指令构成一条

44、长指令或者一个指令包。指令包中,指令之间的并行性是通过指令显式地表示出来的。指令调度是由编译器静态完成的。,超标量处理机与VLIW处理机相比有两个优点:超标量结构对程序员是透明的,因为处理机能自己检测下一条指令能否流出,从而不需要重新排列指令来满足指令的流出。即使是没有经过编译器针对超标量结构进行调度优化的代码或是旧的编译器生成的代码也可以运行,当然运行的效果不会很好。要想达到很好的效果,方法之一: 使用动态超标量调度技术。下表列出了一些基本的多流出技术、这些技术的特点以及采用这些技术的处理机例子。,在典型的超标量处理器中,每个时钟周期可流出1到8条指令。指令按序流出,在流出时进行冲突检测。

45、在当前流出的指令序列中,不存在数据冲突或者相关冲突。举例:一个4流出的静态调度超标量处理机 在取指令阶段,流水线将从取指令部件收到14条指令(称为流出包)。在一个时钟周期内,这些指令有可能是全部都能流出,也可能是只有一部分能流出。,4.4.1 基于静态调度的多流出技术,流出部件检测结构冲突或者数据冲突。一般分两阶段实现:第一阶段:进行流出包内的冲突检测,选出初步判定可以流出的指令。第二阶段:检测所选出的指令与正在执行的指令是否有冲突。 MIPS处理机是怎样实现超标量的呢?假设:每个时钟周期流出两条指令: 1条整数型指令1条浮点操作指令其中,把load指令、store指令、分支指令归类为整数型指

46、令。,要求:同时取两条指令(64位),译码两条指令(64位)。对指令的处理包括以下步骤:从Cache中取两条指令。确定那几条指令可以流出(02条指令)。把它们发送到相应的功能部件。 双流出超标量流水线中指令的执行过程 假设:所有的浮点指令都是加法指令,其执行时间为两个时钟周期。为简单起见,下图中总是把整数指令放在浮点指令的前面。,采用“1条整数型指令1条浮点指令”并行流出的方式,需要增加的硬件很少。浮点load或浮点store指令将使用整数部件,会增加对浮点寄存器的访问冲突。 增设一个浮点寄存器的读/写端口。由于流水线中的指令多了一倍,定向路径也要增加。,限制超标量流水线的性能发挥的障碍。 l

47、oad指令 load后续3条指令都不能使用其结果,否则就会引起停顿。 分支延迟 如果分支指令是流出包中的第一条指令,则其延迟是3个时钟周期;否则就是流出包中的第二条指令,其延迟就是两个时钟周期。,扩展Tomasulo算法:支持两路超标量每个时钟周期流出两条指令;一条是整数指令,另一条是浮点指令。采用一种比较简单的方法:指令按顺序流向保留站,否则会破坏程序语义。 将整数所用的表结构与浮点用的表结构分离开,分别进行处理,这样就可以同时地流出一条浮点指令和一条整数指令到各自的保留站。,4.4.2 基于动态调度的多流出技术,把能并行执行的多条指令组装成一条很长的指令。(100多位到几百位)设置多个功能

48、部件。指令字被分割成一些字段,每个字段称为一个操作槽,直接独立地控制一个功能部件。在VLIW处理机中,所有的处理和指令安排都是由编译器完成的。,4.4.3 超长指令字技术(VLIW),VLIW存在的一些问题 程序代码长度增加了提高并行性而进行的大量的循环展开。指令字中的操作槽并非总能填满。 解决:采用指令共享立即数字段的方法,或者采用指 令压缩存储、调入Cache或译码时展开的方法。采用了锁步机制 任何一个操作部件出现停顿时,整个处理机都要停顿。机器代码的不兼容性,指令多流出处理器受哪些因素的限制呢? 主要受以下三个方面的影响:程序所固有的指令级并行性。硬件实现上的困难。超标量和超长指令字处理

49、器固有的技术限制。,4.4.4 多流出处理器受到的限制,将每个流水段进一步细分,这样在一个时钟周期内能够分时流出多条指令。这种处理机称为超流水线处理机。对于一台每个时钟周期能流出n条指令的超流水线计算机来说,这n条指令不是同时流出的,而是每隔1/n个时钟周期流出一条指令。实际上该超流水线计算机的流水线周期为1/n个时钟周期。 一台每个时钟周期分时流出两条指令的超流水线计算机的时空图。,4.4.5 超流水线处理机,在有的资料上,把指令流水线级数为8或8以上的流水线处理机称为超流水线处理机。典型的超流水线处理器:SGI公司的MIPS系列R4000R4000微处理器芯片内有2个Cache:指令Cac

50、he和数据Cache容量都是8 KB每个Cache的数据宽度为64 b R4000的核心处理部件:整数部件 一个3232位的通用寄存器组一个算术逻辑部件(ALU)一个专用的乘法/除法部件,浮点部件一个执行部件浮点乘法部件浮点除法部件浮点加法/转换/求平方根部件 (它们可以并行工作)一个1664位的浮点通用寄存器组。浮点通用寄存器组也可以设置成32个32位的浮点寄存器。R4000的指令流水线有8级,各级的功能IF:取指令的前半步,根据PC值去启动对指令Cache的访问。IS:取指令的后半步,在这一级完成对指令Cache的访问。RF:指令译码,访问寄存器组读取操作数,冲突检测,并判断指令Cache

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号