1、3.2 DLX 的基本流水线,3.3 流水线中的相关, DLX 流水线 流水线性能分析, 结构相关 数据相关 控制相关,3.4 MIPS R4000 流水线计算机,3.5 向量处理机,3.1 流水线的基本概念,第三章 流水线技术,3.1 流水线的基本概念,3.1.1 基本概念,1. 产品生产流水线 下面通过一个例子来说明流水线的好处:, 两种方案 两种方案的工作过程对比,第三章 流水线技术, 流水线生产过程的抽象描述, 这种流水工作方式的主要特点,2. 指令流水线,把指令的解释过程分解为“分析”和“执行” 两个子过程,并让这两个子过程分别用独立的分 析部件和执行部件来实现。 理想情况:速度提高
2、一倍,3.1 流水线的基本概念,3. 浮点加法流水线,把浮点加法的全过程分解为“求阶差”、“对 阶”、“尾数相加”、“规格化”四个子过程,并让 它们分别用各自独立的部件来实现。 理想情况:速度提高3倍,3.1 流水线的基本概念,3.1 流水线的基本概念,4. 时空图,时空图从时间和空间两个方面描述了流水 线的工作过程。时空图中,横坐标代表时间, 纵坐标代表流水线的各个段。,3.1 流水线的基本概念,5. 流水技术,流水技术是指:将一个重复的时序过程分解 成为若干个子过程,而每个子过程都可有效地在 其专用功能段上与其他子过程同时执行。,6流水技术的特点,(1) 流水过程由多个相联系的子过程组成,
3、每个 子过程称为流水线的“级”或“段”。“段”的数 目称为流水线的“深度”。,(2) 每个子过程由专用的功能段实现;,3.1 流水线的基本概念,(4) 流水线需要有“通过时间”(第一个任务流出结果所 需的时间),在此之后流水过程才进入稳定工作状 态,每一个时钟周期(拍)流出一个结果;,(3) 各个功能段所需时间应尽量相等,否则,时间长 的功能段将成为流水线的瓶颈,会造成流水线的 “堵塞”和“断流”。这个时间一般为一个时钟周期 (拍);,(5) 流水技术适合于大量重复的时序过程,只有输入 端能连续地提供任务,流水线的效率才能充分发 挥。,3.1 流水线的基本概念,3.1.2 流水线的分类,流水线
4、可以按不同的观点进行分类。, 单功能流水线:只能完成一种固定功能的 流水线。 多功能流水线:流水线的各段可以进行不同的 连接,从而实现不同的功能。 例如: TI ASC的多功能流水线,1按功能的多少来分,3.1 流水线的基本概念,在静态流水线中,只有当输入是一串相同 的运算操作时,流水的效率才能得到发挥。 动画演示,2按同一时间内各段之间的连接方式来分, 静态流水线:在同一时刻,流水线的各段只能 按同一种功能的连接方式工作。,3.1 流水线的基本概念, 动态流水线:在同一时刻,流水线的各段可以 按不同功能的连接方式工作。 动画演示 这样就不是非得相同运算的一串操作才能 流水处理。 优点:能提高
5、流水线的效率缺点:会使流水线的控制变得复杂,3.1 流水线的基本概念, 静、动态流水线时空图的对比,3按照流水线的级别来分, 部件级流水线(运算操作流水线):把处理机的 算术逻辑部件分段,使得各种数据类型的操作能 够进行流水。, 处理机级流水线(指令流水线):把指令的解释 执行过程按照流水方式进行处理。 例如:前面把指令解释过程分解为: 分析和执行 DLX的基本流水线把指令解释过程分解为: 取指令、指令译码、执行、访存、写回。(图示),3.1 流水线的基本概念,3.1 流水线的基本概念, 处理机间流水线(宏流水线):它是指由两个 以上的处理机串行地对同一数据流进行处理, 每个处理机完成一项任务
6、。动画解析,3.1 流水线的基本概念,4按照数据表示来分, 向量处理机:具有向量指令和向量数据表示的 处理机。 例如:TI ASC, CRAY-I 等, 标量处理机:不具有向量指令和向量数据表示, 仅对标量进行流水处理的处理机。 例如:IBM360/91, Amdahl 470V/6 等,5. 按照是否有反馈回路来分, 线性流水线:流水线中的各段串行连接,没 有反馈回路。 非线性流水线:流水线中的各段除有串行连接 外,还有反馈回路。 (举例),3.1 流水线的基本概念,3.1 流水线的基本概念, 流水线的调度问题, 顺序流动流水线:流水线输出端任务流出的顺 序与输入端任务流入的顺序相同。 异步
7、流动流水线(乱序流水线):流水线输出 端任务流出的顺序与输入端任务流入的顺序 不同。,6. 按照流动是否可以乱序来分,3.1 流水线的基本概念,3.2 DLX的基本流水线,3.2.1 DLX的一种简单实现,首先讨论在不流水的情况下,如何实现DLX。,1. 实现DLX指令的一种简单数据通路,第三章 流水线技术,2. 一条DLX指令最多需要以下5个时钟周期:,(1) 取指令周期(IF) IR MemPC NPC PC4 操作,3.2 DLX的基本流水线,(2)指令译码/读寄存器周期(ID) A RegsIR6 10 B RegsIR11 15 Imm (IR16)16 # IR16 31 操作指令
8、译码和读寄存器是并行进行的。之所 以能做到这一点,是因为在DLX指令格式中, 操作码在固定位置。这种技术也称为固定字段 译码。,3.2 DLX的基本流水线,(3)执行/有效地址计算周期(EX) 在这个周期,不同的指令有不同的操作。,3.2 DLX的基本流水线, 存储器访问 ALUOutput AImm 操作, 寄存器寄存器 ALU 操作 ALUOutput A op B 操作, 寄存器立即值 ALU 操作 ALUOutput A op Imm 操作,3.2 DLX的基本流水线, 分支操作 ALUOutput NPCImm Cond (A op 0) 操作,(4)存储器访问/分支完成周期(MEM
9、) 在该周期处理的DLX指令只有Load、Store和 分支指令。,这里,将有效地址计算周期和执行周期合并为一个时钟周期,这是由 DLX指令集结构本身的特点所允许的,因为在DLX指令集结构中,没有任何指令需要同时计算数据的存储器地址、计算分支指令的目标地址和进行数据处理。,3.2 DLX的基本流水线, 存储器访问 LMD MemALUOutput 或 Mem ALUOutput B 操作,3.2 DLX的基本流水线, 分支操作 if(cond)PC ALUOutput else PC NPC 操作,(5)写回周期(WB) 不同指令在该周期完成的工作也不一样。, 寄存器寄存器型 ALU 指令 R
10、egsIR16 20 ALUOutput 操作 寄存器立即值型 ALU 指令 RegsIR11 15 ALUOutput 操作, Load 指令 RegsIR11 15 LMD 操作,3.2 DLX的基本流水线,寄存器寄存器型 ALU 指令 RegsIR16 20 ALUOutput,寄存器立即值型 ALU 指令 RegsIR11 15 ALUOutput,Load 指令 RegsIR11 15 LMD,3. 分支指令需要4个时钟周期, 其它指令需要5个时钟周期假设分支指令占总指令数的12, 则:CPI4.88上述实现无论在性能上,还是在硬件开销上,都不是优化的。,3.2 DLX的基本流水线,
11、3.2.2 基本的DLX流水线,我们可以把3.2.1中的数据通路流水化: 每个时钟周期启动一条新的指令。 这样,该数据通路中的每一个周期就成 了一个流水段。,1. 一种简单的 DLX 流水线,2. 简单DLX流水线的流水过程,第一种描述(类似于时空图) 第二种描述(按时间错开的数据通路序列),3.2 DLX的基本流水线,3.2 DLX的基本流水线,按时间错开的数据通路序列,3. 采用流水技术还应解决好以下几个问题:,上述简单DLX流水线中:, 指令存储器(IM)和数据存储器(DM)分 开,避免了访存冲突。 ID段和WB段都要访问同一寄存器文件。 ID段:读 WB段:写 如何解决对同一寄存器的访
12、问冲突?,(1)应保证不会在同一个时钟周期内在同一数据 通路资源上做不同的操作。 例如,不能要求一个ALU同时既做有效 地址计算,又做减法操作。,3.2 DLX的基本流水线, 没有考虑 PC 问题,流水线为了能够每个时钟周期启动一条 新的指令,就必须在每个时钟周期进行PC值 的加4操作,并保留新的PC值。这种操作必 须在IF段完成,以便为取下一条指令做好准 备。,3.2 DLX的基本流水线,但分支指令也可能改变PC的值,而且是 在MEM段进行,这会导致冲突。,为解决问题,我们重新组织数据通路,把所有改变 PC值的操作都放在IF段进行。,但分支指令如何处理?,(2)每一流水段内的操作都必须在一个
13、时钟周期 内完成, 流水线各段之间需设置流水线寄存器 (也称为锁存器) 流水线寄存器组及其所含寄存器的命名 例如,ID段和EX段之间的流水线寄存 器组中的IR寄存器的名称为:ID/EX.IR 流水线寄存器的作用 把数据和控制信息从一个流水段传 送到下一个流水段。,(3)流水线寄存器(组),3.2 DLX的基本流水线, 流水线寄存器的构成,4. DLX流水线的操作,对于流水线中的指令来说,在任一时刻,它 仅在流水线中的某一段内执行操作。因此,只要知道每一流水段在各种指令下进 行何种操作,就知道了整个流水线的操作。(表3.1)给出了DLX流水线各段的操作。,3.2 DLX的基本流水线,流水段,表3
14、.1 DLX流水线的每个流水段的操作,任何指令类型,ALU 指令,Load/Store 指令,分支指令,IF,ID,EX,IF/ID.IR MemPC,IF/ID.NPC,PC (if EX/MEM.cond EX/MEM.NPC else PC+4);,ID/EX.A RegsIF/ID.IR610; ID/EX.B RegsIF/ID.IR1115;,ID/EX.NPC IF/ID.NPC; ID/EX.IR IF/ID.IR;,ID/EX.Imm (IR16)16#IR1631;,EX/MEM.IR ID/EX.IR; EX/MEM.ALUOutput ID/EX.A op ID/EX.
15、B 或 EX/MEM.ALUOutput ID/EX.A op ID/EX.Imm; EX/MEM.cond 0;,EX/MEM.IR ID/EX.IR; EX/MEM.ALUOutput ID/EX.A + ID/EX.Imm;,EX/MEM.ALUOutput ID/EX.NPC + ID/EX.Imm; EX/MEM.cond (ID/EX.A op 0);,(动画演示),(动画演示),(动画演示),(动画演示),(动画演示),流水段,任何指令类型,ALU 指令,Load/Store 指令,分支指令,MEM,WB,MEM/WB.IR EX/MEM.IR; MEM/WB.ALUOutput
16、 EX/MEM.ALUOutput;,MEM/WB.IR EX/MEM.IR; MEM/WB.LMD MemEX/MEM.ALUOutput; 或 MemEX/MEM.ALUOutput EX/MEM.B;,RegsMEM/WB.IR1620 MEM/WB.ALUOutput; 或 RegsMEM/WB.IR1115 MEM/WB.ALUOutput;,RegsMEM/WB.IR1115 MEM/WB.LMD;,表3.1 DLX流水线的每个流水段的操作,(动画演示),(动画演示),(动画演示),(动画演示),5DLX流水线的控制,主要是确定如何控制那四个多路选择器。,3.2.3 流水线性能分析
17、,吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量。,1. 吞吐率,(1) 最大吞吐率TPmax,最大吞吐率是指流水线在连续流动达到稳定状态后所得到的吞吐率。 若流水线各段的时间相等,均为t0 , 则: TPmax 1 /t0,3.2 DLX的基本流水线, 若流水线各段的时间不等,则:, 最大吞吐率取决于流水线中最慢的一段所 需的时间,这段就成了流水线的瓶颈。, 消除瓶颈的方法 (举例),细分瓶颈段 重复设置瓶颈段 (时-空图),1,maxti ,TPmax,3.2 DLX的基本流水线,重复设置瓶颈段(时-空图举例), 第一种情况:各段时间相等(设为t0) 假设流水线由 m 段组成,完
18、成 n 个任务。,时空图完成 n 个任务所需的时间 T流水mt0(n1)t0 (说明),(2) 实际吞吐率TP,流水线的实际吞吐率小于最大吞吐率。,3.2 DLX的基本流水线,完成 n 个任务所需的时间,实际吞吐率,TP TPmax 当n m 时,TP TPmax, 第二种情况:各段时间不等,时空图,3.2 DLX的基本流水线,3.2 DLX的基本流水线,完成 n 个任务所需的时间 T流水ti(n1)tj tjmaxti 实际吞吐率,i=1,m,3.2 DLX的基本流水线,加速比是指流水线的速度与等功能非流水 线的速度之比。,2. 加速比S,ST非流水T流水 (其中T流水和T非流水分别为按流水
19、和按非流水 方式处理 n 个任务所需的时间),若流水线为 m 段,且各段时间相等,均为t0 ,则: T非流水n mt0 (解释) T流水mt0(n1)t0,3.2 DLX的基本流水线,3.2 DLX的基本流水线,可以看出:当n m 时,S m 想一想:n 越大越好?,效率是指流水线的设备利用率。 (1) 由于流水线有通过时间和排空时间,所以 流水线的各段并不是一直满负荷地工作。 故:E 1,3效率 E,3.2 DLX的基本流水线,3.2 DLX的基本流水线,(2) 若各段时间相等,则各段的效率ei相等,即 e1e2 e3 emnt0T流水 (解释) 整个流水线的效率为:,当 n m 时,E 1
20、,E ,nt0,T流水,n,mn1,1,n,1,m1,(3) 从时空图上看,效率实际上就是 n 个任务所 占的时空区与 m 个段总的时空区之比,即:,n 个任务占用的时空区 E (解释) m 个段总的时空区,3.2 DLX的基本流水线,(4) 提高流水线效率所采取的措施对于提高 吞吐率也有好处。,4流水线性能分析举例,例3.1 在静态流水线上计算 AiBi , 求:吞吐率,加速比,效率。,4,i=1,3.2 DLX的基本流水线,3.2 DLX的基本流水线,解:(1) 确定适合于流水处理的计算过程,(2) 画时空图,(3) 计算性能吞吐率 TP7(20t) 加速比 S(34t)(20t)1.7效
21、率 E(4436)(820)0.21,3.2 DLX的基本流水线,3.2 DLX的基本流水线,可以看出,在求解此问题时,该流水线的效率 不高。 (原因),动态流水线的时空图 举例,3.2 DLX的基本流水线,举例 : 这样行不行? 正确答案,3.2 DLX的基本流水线,例3.2 假设前面DLX非流水线实现的时钟周期时间 为10ns,ALU和分支指令需要4个时钟周期,访 问存储器指令需5个时钟周期,上述指令在程序 中出现的相对频率分别是:40%、20%和40%。在 基本的DLX流水线中,假设由于时钟扭曲和寄存 器建立延迟等原因,流水线要在其时钟周期时 间上附加1ns的额外开销。现忽略任何其他延迟
22、 因素的影响,请问:相对于非流水实现而言, 基本的DLX流水线执行指令的加速比是多少?,3.2 DLX的基本流水线,解:当非流水执行指令时,指令的平均执行时 间为TPI非流水 = 10ns(40%+20%)440%5) = 10ns4.4 = 44ns 在流水实现中,指令执行的平均时间 是最慢一段的执行时间加上额外开销,即TPI流水 = 10ns+1ns = 11ns所以基本的DLX流水线执行指令的加速比为,3.2 DLX的基本流水线,例3.3假设在DLX的非流水实现和基本流水线中,5个 功能单元的时间为:10,8,10,10,7(ns), 流水额外开销为:1ns,求加速比S。,解:T非流水1
23、081010745 (ns)T流水 10111 (ns)S 45114.1,3.2 DLX的基本流水线,5有关流水线性能的若干问题,(1) 流水线并不能减少(而且一般是增加)单条指 令的执行时间,但却能提高吞吐率。 (2) 增加流水线的深度(段数)可以提高流水线的 性能。 (3) 流水线的深度受限于流水线的延迟和流水线 的额外开销。 (4) 流水线的额外开销包括: 流水寄存器的延迟(建立时间和传输延迟) 时钟扭曲,3.2 DLX的基本流水线,(5) 当时钟周期小到与额外开销相同时,流水已没意 义。因为这时在每一个时钟周期中已没有时间来 做有用的工作。 (6) 需用高速的锁存器来作为流水寄存器。
24、 Earle锁存器(1965)的三个特点: 对时钟扭曲不太敏感(相对而言) 其延迟为常数:2个门级延迟,避免了数据通 过锁存器时的扭曲。,3.2 DLX的基本流水线,(7) 相关问题 如果流水线中的指令相互独立,则可以充分 发挥流水线的性能。但在实际中,指令间可能会 是相互依赖,这会降低流水线的性能。下一节介 绍如何解决相关问题。, 锁存器中可以进行两级逻辑运算而不增延迟时 间。这样每个流水段中的两级逻辑可以与锁存 器重叠,从而能隐藏锁存器开销的绝大部分。,3.2 DLX的基本流水线,3.3 流水线中的相关,1相关的概念,流水线中的相关是指相邻或相近的两条指 令因存在某种关联,后一条指令不能在
25、原指定 的时钟周期开始执行。, 结构相关 当硬件资源满足不了同时重叠执行的指 令的要求,而发生资源冲突时,就发生了结 构相关。,2相关的分类,第三章 流水线技术, 数据相关 当一条指令需要用到前面某条指令的结 果,从而不能重叠执行时,就发生了数据相 关。 控制相关 当流水线遇到分支指令和其他能够改变 PC值的指令时,就会发生控制相关。,3几个问题, 相关有可能会使流水线停顿。,3.3 流水线中的相关,在本章中,我们约定:,当一条指令被暂停时,暂停在其后发射 (流出)的指令,但继续执行在其前发射的 指令。, 消除相关的基本方法: 让流水线中的某些指令暂停,而让其它 指令继续执行。,3.3 流水线
26、中的相关,3.3.1 流水线中的结构相关,2. 如果某种指令组合因资源冲突而不能顺利重 叠执行,则称该机器具有结构相关。,1. 在流水线机器中,为了使各种指令组合能顺 利地重叠执行,需要把功能部件流水化,并 把资源重复设置。,3. 常见的导致结构相关的原因: 功能部件不是全流水 重复设置的资源的份数不够,3.3 流水线中的相关,4. 结构相关举例:访存冲突,当数据和指令存在同一存储器中时,访 存指令会导致访存冲突。 解决办法: 插入暂停周期 (“流水线气泡”或“气泡”),3.3 流水线中的相关,引入暂停后的时空图,3.3 流水线中的相关,5. 避免结构相关:,6. 有些设计方案允许有结构相关,
27、 所有功能单元完全流水化 设置足够的硬件资源 硬件代价很大。, 降低成本 减少部件的延迟,解决方法: 设置相互独立的指令存储器和 数据存储器或设置相互独立的 指令Cache和数据Cache。,3.3 流水线中的相关,3.3.2 流水线的数据相关,1. 数据相关简介 当指令在流水线中重叠执行时,流水线有 可能改变指令读/写操作数的顺序,使之不同 于它们在非流水实现时的顺序,这将导致数据 相关。 数据相关举例,3.3 流水线中的相关,2. 利用定向技术减少数据相关引起的暂停 (1) 定向技术的主要思路:在发生上述 数据相关时,后面的指令并不是马 上就要用到前一条指令的计算结果。 如果能够将计算结果
28、从其产生的地 方直接送到需要它的地方,就可以 避免暂停。(2) 采用定向技术消除上例中的相关 工作过程演示,3.3 流水线中的相关,(3) 当定向硬件检测到前面某条指令的结果寄存 器就是当前指令的源寄存器时,控制逻辑会 将前面那条指令的结果直接从其产生的地方 定向到当前指令所需的位置。 (4) 一个功能单元的输出不仅可以定向到其自身 的输入,而且还可以定向到其它单元的输入。 举例,3.3 流水线中的相关,3.3 流水线中的相关,(5) 在DLX中,任何流水寄存器到任何功能单元的 输入都可能需要定向路径。,(6) 当两条指令对存储器同一单元进行读写时, 也可能发生数据相关。但本章仅讨论有关寄 存
29、器的数据相关。,3. 数据相关的分类,按照指令对寄存器的读写顺序,可以将数据 相关分为以下三种类型: (考虑两条指令i和j , 假设i 先进入流水线),3.3 流水线中的相关,(2) 写后写相关 (WAW) 在 i 写入之前,j 先写。 最后写入的结果是 i 的,错误!,(1) 写后读相关 (RAW) (命名规则) 在 i 写入之前,j 先去读。 j 读出的内容是错误的。 这是最常见的相关。, 这种相关仅出现在这样的流水线中:, 流水线中有多个段可以进行写操作 当某条指令在流水线中暂停时,允许其后 的指令继续向前流动。,3.3 流水线中的相关, DLX整数流水线中不会发生这种相关 (仅在WB段
30、进行写操作), 若对DLX作以下修改,则会发生WAW相关: 把ALU操作指令的“写回”移到MEM段 假设访问数据存储器需占用两拍 举例,(3) 读后写相关 (WAR),在 i 读之前,j 先写。 i 读出的内容是错误的!, 这种相关仅出现在这样的流水线中: 有些指令是在流水线的后部读源操作数, 而有些指令则是在流水线的前部写结果。, DLX流水线中不会发生这种相关; (读在先(ID),写在后(WB)), 这种相关很少发生; (因为流水线一般是先读操作数,后写结果), 复杂指令可能导致这种相关。,3.3 流水线中的相关,(1) 并非所有的数据相关都可以用定向技术解决 举例,4. 需要暂停的数据相
31、关,3.3 流水线中的相关,(2) 增加流水线互锁硬件,插入“暂停”。 当互锁硬件发现这种相关时,就 暂停流水线,直到相关消失。 举例:演示A 演示B,3.3 流水线中的相关,3.3 流水线中的相关,例3.5 假设某指令序列中20的指令是Load指令,并且紧跟在Load指令之后的半数指令需要使用到载入的结果,如果这种数据相关将产生一个时钟周期的延迟。理想流水线(没有任何延迟,CPI为1)的指令执行速度要比这种真实流水线的快多少? 解:我们可以利用CPI作为衡量标准。对于真实的流水线而言,由于Load指令之后的半数指令需要暂停,所以这些被暂停指令的CPI是2。又知Load指令占全部指令的20,所
32、以真实流水线的实际CPI为:(0.91+0.12)=1.1,这表示理想流水线的指令执行速度是其执行速度的1.1倍。,3.3 流水线中的相关,5对数据相关的编译调度方法,(1) 流水线中常常会遇到许多种类型的暂停 例如,按通常的代码生成模式,表达式 ABC的代码会导致暂停,3.3 流水线中的相关,ABC的代码会导致暂停,(3) 举例: 例3.6 请为下列表达式生成没有暂停的DLX 指令序列:abc ;def ;假设载入延迟为1个时钟周期。题解,(2) 编译器可以通过重新排列代码的顺序来消 除这种暂停,这种技术称为流水线调度或 指令调度。,3.3 流水线中的相关,(1) 指令发射(issue):指
33、令从译码段(ID)进入 执行段(EX)。 相应的指令称为已发射的指令。 (2) DLX整数流水线中,可以在ID段检测所有的 数据相关; 若数据相关,则在指令流出前,让其暂停。 (3) 可以在ID段确定需要什么样的定向,并设置 相应的控制; 这样能减少硬件复杂度(因为不必挂起已 改变了机器状态的指令)。,6. 对DLX流水线控制的实现,3.3 流水线中的相关,(4) 也可以在需要用到操作数的那个时钟周期检测 相关或定向; (5) 举例说明: 由Load指令引起的RAW相关的互锁(简称Load 互锁)可以通过ID段的检测来实现; 到ALU输入的定向可以在EX段实现。 Load互锁 流水线相关硬件可
34、以检测到的各种相关情况 可以看出,仅需把Load指令的目的寄存 器地址与Load指令后的两条指令的源寄存器 地址进行比较。,3.3 流水线中的相关, 在ID段检测是否需要启动Load互锁需要进行 三种比较, 当检测到相关后,控制部件必须在流水线中 插入暂停周期,并使IF和ID段中的指令停止 前进。,将ID/EX中的控制部分清“O”。IF/ID内容回送到其自身入口。,定向逻辑 有更多的情况要考虑 关键思路:流水线寄存器不仅包含数据,而且 包含源寄存器和目的寄存器地址(字段),3.3 流水线中的相关, 所有的定向发生在: ALU或DM输出 ALU输入,DM输入, “O”检测部件(图示),3.3.3
35、 流水线的控制相关,1. 分支指令的执行结果,一、分支引起的暂停及减少分支开销的方法, 转移失败:PC值加4 转移成功:将PC值改变为转移目标地址到MEM段的末尾才改变,一旦检测到分支指令(在ID段),就暂停 执行其后的指令,直到分支指令到达MEM段, 确定出新的PC值为止。,2. 处理分支指令最简单的方法,3.3 流水线中的相关,在DLX流水线中,分支转移成功导致暂停3个 时钟周期。若分支指令的频度为30,理想CPI1,则 实际CPI13032,3. 减少分支开销的两种途径, 在流水线中尽早判断分支转移是否成功; 转移成功时,尽早计算出转移目标地址。 两者应同时采用,缺一不可。对于DLX作如
36、下改进: (1) 把“0?”测试移至ID段;,3.3 流水线中的相关,(2) 在ID段增设一个加法器,这样可以把分支 开销减少一拍。改进后流水线的分支操作 (表3.5),3.3 流水线中的相关,流 水 段,分 支 指 令 操 作,IF,ID,EX,IF/ID.IR MemPC; IF/ID.NPC,PC (if ID/EX.cond ID/EX.NPC else PC+4);,ID/EX.A RegsIF/ID.IR610; ID/EX.B RegsIF/ID.IR1115; ID/EX.NPC IF/ID.NPC + (IR16)16#IR1631; ID/EX.IR IF/ID.IR; I
37、D/EX.cond (RegsIF/ID.IR610 op 0; ID/EX.Imm (IR16)16#IR1631;,MEM,WB,表 3.5 改进后流水线的分支操作,(动画演示),(动画演示),二、程序中分支的行为特点,1. 各种能改变PC值的指令的执行频度(SPEC基准程序,DLX上执行) 条件分支 整数程序:1415 浮点程序:312向前分支与向后分支的比:31 无条件分支绝大多数:4,3.3 流水线中的相关,2条件分支转移成功的概率, 平均值整数程序向前:13 无条件:4向后:3浮点程序向前:7 无条件:1向右:3,所有条件分支:67 向前:60 向后:85(向后分支一般形成循环),
38、3.3 流水线中的相关,3.3 流水线中的相关,三、减少流水线分支损失的方法,(种简单的静态方法,编译时预测),1. “冻结”或“排空”流水线 在流水线中停住或删除分支后的指令, 直到知道转移目标地址。优点:简单。,2预测分支失败 流水线继续照常流动,就像没发生什么似的。,3.3 流水线中的相关, 在知道分支结果之前,分支指令后的指令不 能改变机器状态,或者改变了之后能够回退。 若分支失败,则照常执行;否则,从转移目 标处开始取指令执行。DLX流水线的处理过程,3.3 流水线中的相关,3. 预测分支成功 假设分支转移成功,并开始从分支目标地址 处取指令执行。 起作用的前题:先知道分支目标地址,
39、后知 道分支是否成功。 对DLX流水线没有任何好处。,3.3 流水线中的相关,4. 延迟分支 (delayed branch)(1) 基本概念把分支开销为n 的分支指令看成是延迟长 度为n 的分支指令,其后紧跟有n 个延迟槽。 流水线遇到分支指令时,按正常方式处理,顺 带执行延迟槽中的指令,从而减少分支开销。延迟分支以及指令的执行顺序,3.3 流水线中的相关,(2) 具有一个分支延迟槽的DLX流水线的执行过程分支延迟槽中的指令“掩盖”了流水线原来必需插入的暂停周期。,3.3 流水线中的相关,(3) 分支延迟指令的调度(编译器)任务:在延迟槽中放入有用的指令 三种调度方法,从前调度 (最好)从目
40、标处调度从失败处调度,调 度 策 略,对调度的要求,什么情况下起作用?,从 前 调 度,从目标处调度,从失败处调度,必须保证在分支失败时执行被调度 的指令不会导致错误。有可能需要 复制指令。,被调度的指令必须与分支无关,必须保证在分支成功时执行被调度 的指令不会导致错误。,任何情况,分支成功时 (但由于复制指令,有 可能会增大程序空间),分支失败时, 三种方法的要求及效果,对放入延迟槽的指令有限制编译器预测分支是否成功的能力, 延迟分支调度受到的限制, 进一步改进:引入“取消分支”若预测方向正确,正常执行延迟槽中的指令; 否则,将之变为no-op指令。,3.3 流水线中的相关,3.3 流水线中
41、的相关,预测成功-取消”分支的执行过程,四、各种分支处理方法的性能,1. 假设:,理想CPI1则流水线的加速比为: SD(1C)D(1fp分支)D 流水线的深度,C 分支引起的流水线暂停时钟周期数 (每条指令的平均值) f 分支的出现频度 p分支 分支开销,2DLX流水线中各种分支处理方法的开销 (表3.7),3.3 流水线中的相关,表 3.7 各种减少分支损失方法的效果,调度方法,每条分支指令的 平均分支损失,暂停流水线,预测分支成功,预测分支失败,1.00,每条条件分支指 令的分支损失,延迟分支,每条无条 件分支指 令的损失,具有分支暂停 的实际 CPI,整型 平均,浮点 平均,整型 平均
42、,整型 平均,浮点 平均,浮点 平均,1.00,1.00,0.62,0.25,1.00,1.00,1.00,1.00,1.00,0.69,0.21,1.00,1.17,1.15,1.00,1.17,1.15,0.74,1.12,1.11,0.70,1.00,0.35,0.00,0.30,1.04,1.04,3.3 流水线中的相关,3.4 MIPS R4000流水线计算机简介,3.4.1 MIPS R4000 整型流水线,1. 指令集:MIPS-3 指令集(64位),类似于DLX,共8个段:较深的流水线有利于提高时钟频率。超级流水 与DLX流水线相比:把访存操作进一步分段。取指令:IF,IS读写
43、数据:DF,DS,TC,2MIPS R4000 流水线结构,第三章 流水线技术,3. 流水线中各段的功能,3.4 MIPS R4000流水线计算机简介,4指令序列在流水线中的重叠执行过程,5. 载入延迟为两个时钟周期,3.4 MIPS R4000流水线计算机简介,6. 指令序列在流水线中的执行时空图,3.4 MIPS R4000流水线计算机简介,7. R4000流水线的定向路径比DLX流水线的多ALU输入端的定向源有4个:EX/DF,DF/DS,DS/TC,TC/WB,8. 分支处理 在EX段完成分支条件的计算基本分支延迟:3个时钟周期,3.4 MIPS R4000流水线计算机简介, 采用单周
44、期延迟分支 预测分支:失败分支 处理分支指令的时空图,3.4 MIPS R4000流水线计算机简介,3.4.2 MIPS R4000 浮点流水线,1. R4000浮点部件 1个浮点除法器 1个浮点乘法器 1个浮点加法器,28个流水段 (表3.8),3.4 MIPS R4000流水线计算机简介,表3.8,3. R4000浮点流水线是一种多功能非线性流水线 4. 双精度浮点操作指令的延迟、启动间隔以及 流水段的使用情况(表3.9),3.4 MIPS R4000流水线计算机简介,表3.9,3.5 向量处理机,3.5.1 向量处理方式和向量处理机, 向量处理机:具有向量数据表示和相应向量 指令的流水线
45、处理机。 标量处理机: 不具有向量数据表示和相应向 量指令的处理机。,DA(BC ) A、B、C、D 长度为 N 的向量,1. 向量处理方式,第三章 流水线技术,(1) 水平(横向)处理方式KibiciDiKiai相关:N 次 功能切换:2N 次,(2) 垂直(纵向)处理方式 KBCDKA相关:次功能切换:次,对处理机结构的要求:存储器-存储器型操作的运算流水线对存储器的带宽要求很高。例如:STAR-100,CYBER-205,3.5 向量处理机,3.5 向量处理机,(3) 分组(纵横)处理方式把向量分成长度为某个固定值的若干组, 组内按纵向方式处理,依次处理各组。每组内:相关:次功能切换:次
46、,3.5 向量处理机,3.5 向量处理机,对处理机结构的要求:寄存器-寄存器型操作的运算流水线。 举例,2. 向量处理机的速度评价方法, 标量处理机:通常用每秒执行多少指令 MIPS(Million Instructions Per Second) 来衡量机器的运算速度 。 向量处理机:常用每秒取得多少个浮点运算 结果表示机器速度,以MFLOPS(Million of Floating Point Per Second)作为测量单位。,另一种评定计算机速度的方法:比较法。 (选择一台速度指标得到公认的机器作为标准机,给定一些典型的基准程序。),3.5 向量处理机,3.5.2 提高向量处理机性能的主要技术,