实验2 流水线及流水线中的冲突
计算机系统结构 第 3 章 流水线技术_标量

2014-3-10
27
非线性流水线
反馈回路
• 流水线的流动顺序: • S1→S2 →S3 →S2 →S3 →S4 →S1 →S2
2014-3-10
28
1 s1 s2 s3 s4 1
2 1
3
4 1
5
6
7 1
8 1
9
1
1 1
• 为了防止两条或两条以上的指令对同一功能段的 争用,非线性流水线需要对输入流水线的指令进 行比较复杂的控制。 • 非线性流水线通常使用预约表来进行分析。
i 2
n
2014-3-10
7
执行时间不等时的一次重叠工作方式
分析 k
执行 k 分析 k+1 执行 k+1 分析 k+2 执行 k+2 分析 k+3 执行 k+3
2014-3-10
8
3. 先行控制方式
• 先行控制方式的基本思想: • 通过设置先行读数栈,先行操作栈,后行写数 栈等,使分析部件和执行部件能够分别连续 不断地分析和执行指令。
1 t s t l
• 若每个流水段的延迟时间不等,则最高工作频率 为:
1
max t Si t l
n i 1
2014-3-10
16
流水技术的特点
• ⑴ 一条流水线通常由若干个有联系的流水段组成。 • 流水线中的段数也称为 “流水深度” 。 • ⑵ 每个流水段有专门的功能部件对指令进行某种 加工。 • ⑶ 各流水段所需时间应尽量相等,以减少流水线 的瓶颈影响。 • ⑷ 流水线工作阶段可分为建立(装入)、满载和排 空三个阶段。 • ⑸在理想情况下,当流水线充满后,每隔Δ t时间 将会有一个结果流出流水线。
计算机组成和原理-课堂例题(附答案)

(1a)题1:简单说明.诺依曼计算机体系的特点.—计算机由运算器、控制器、存储器、输入设备和输出设备五部分组成。
—采用存储程序的方式。
—数据以2进制表示。
题2:什么是摩尔定律?—摩尔定律一般表述为“集成电路的集成度每18个月翻一番”。
题3:给出IEEE、ACM的中英文名称—IEEE (Institute of Electrical and Electronics Engineers,电气电子工程师协会)—ACM(Association for Computing Machinery,美国计算机学会)(1b) 题1:将计算机系统中某一功能的处理速度提高到原来的20倍,但该功能的处理时间仅占整个系统运行时间的40%,则采用此提高性能的方法后,能使整个系统的性能提高多少?解由题可知,可改进比例= 40% = 0.4,部件加速比= 20根据Amdahl定律可知:采用此提高性能的方法后,能使整个系统的性能提高到原来的1.613倍。
题2:某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的20倍,而系统运行某一程序的整体性能提高到原来的5倍,试计算该程序中浮点操作所占的比例。
解:由题可知,部件加速比= 20,系统加速比= 5根据Amdahl定律可知由此可得:可改进比例= 84.2%即程序中浮点操作所占的比例为84.2%。
(2a) 题1:(1)某总线在一个总线周期中并行传送4个字节的数据,假设一个总线周期等于一个总线时钟周期,总线时钟频率为33MHz,则:总线带宽是多少?;(2)如果一个总线周期中并行传送64位数据,总线时钟频率升为66MHz,则总线带宽是多少?解:(1) 设总线带宽用Dr表示,总线时钟周期用T=1/f表示,一个总线周期传送的数据量用D表示。
根据定义可得Dr = D/T = D×1/T = D×f =4B×33×1000000/s=132MB/s(2) 64位=8B,Dr= D×f =8B×66×1000000/s=528MB/s简答题2:高速串行传输为什么替代了并行传输–并行传输在高频时代出现了两个问题:●1:同步●2:信号之间的电磁干扰●(另外还有制造成本问题)(4a)题1:根据给出的图,能指出记录方式(04a)题2:7200转/分的硬盘,平均等待时间是多少?●解答:7200 RPM=120Rev/sec1 revolution=1/120 sec=8.33milliseconds1 /2 rotation = 4.16 ms题3:简单描述CA V和CLV●磁盘片转动的角速度是恒定的,用恒定角速度(constant angular velocity,CA V)表示。
计算机系统结构习题解答

1. 假设一条指令的执行过程分为“取指令”、“分析”和“执行”三段;每一段的时间分别是△t 、2△t 和3△t..在下列各种情况下;分别写出连续执行n 条指令所需要的时间表达式.. ⑴ 顺序执行方式..⑵ 仅“取指令”和“执行”重叠.. ⑶ “取指令”、“分析”和“执行”重叠.. 答:⑴ 顺序执行方式12......12 12T =∑=++n1i i i i )t t t (执行分析取址=n △t +2△t +3△t =6n △t⑵ 仅“取指令”和“执行”重叠12......12 12T =6△t +∑=+1-n 1i i i )t t (执行分析=6△t +n-12△t +3△t =5n +1△t⑶ “取指令”、“分析”和“执行”重叠△2△t3△t△2△t3△t1 2 34......1 234 1234T =6△t +∑=1-n 1i i )t (执行=6△t +n-13△t =3n +3△t2. 一条线性流水线有4个功能段组成;每个功能段的延迟时间都相等;都为△t..开始5个任务;每间隔一个△t 向流水线输入一个任务;然后停顿2个△t;如此重复..求流水线的实际吞吐率、加速比和效率.. 答:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...1 2 3 4 56 7 8 9 1011 12 13 14 151 2 3 4 5 6 7 8 9 10 11 12 13 14 151 2 3 4 56 7 8 9 1011 12 13 14 151 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23我们可以看出;在7n+1Δt 的时间内;可以输出5n 个结果;如果指令的序列足够长n →∞;并且指令间不存在相关;那么;吞吐率可以认为满足:加速比为:从上面的时空图很容易看出;效率为:3. 用一条5个功能段的浮点加法器流水线计算∑==101i i A F ..每个功能段的延迟时间均相等;流水线的输出端与输入端之间有直接数据通路;而且设置有足够的缓冲寄存器..要求用尽可能短的时间完成计算;画出流水线时空图;计算流水线的实际吞吐率、加速比和效率..答:首先需要考虑的是“10个数的和最少需要做几次加法”;我们可以发现;加法的次数是不能减少的:9次;于是我们要尽可能快的完成任务;就只有考虑如何让流水线尽可能充满;这需要消除前后指令之间的相关..由于加法满足交换律和结合律;我们可以调整运算次序如以下的指令序列;我们把中间结果寄存器称为R;源操作数寄存器称为A;最后结果寄存器称为F;并假设源操作数已经在寄存器中;则指令如下:I1:R1←A1+A2I2:R2←A3+A4I3:R3←A5+A6I4:R4←A7+A8I5:R5←A9+A10I6:R6←R1+R2I7:R7←R3+R4I8:R8←R5+R6I9:F←R7+R8这并不是唯一可能的计算方法..假设功能段的延迟为Δt..时空图如下图中的数字是指令号:1234567891234567891234567891234567891 2 3 4 5 6 7891 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21整个计算过程需要21Δt;所以吞吐率为: 加速比为: 效率为:4. 一条线性静态多功能流水线由6个功能段组成;加法操作使用其中的1、2、3、6功能段;乘法操作使用其中的1、4、5、6功能段;每个功能段的延迟时间均相等..流水线的输出端与输入端之间有直接数据通路;而且设置有足够的缓冲寄存器..用这条流水线计算向量点积i 60i i b a B A ⨯=⨯∑=;画出流水线时空图;计算流水线的实际吞吐率、加速比和效率.. 答:我们安排运算次序如下:把中间结果寄存器称为R;源操作数寄存器称为A 、B;最后结果寄存器称为F;并假设源操作数已经在寄存器中;则指令如下:I1: R0←A0B0 I8: R7←R0+R1 I2: R1←A1B1 I9:R8←R2+R3I3: R2←A2B2 I10: R9←R4+R5 I4: R3←A3B3 I11: R10←R6+R7 I5: R4←A4B4 I12: R11←R8+R9 I6: R5←A5B5I13: F ←R10+R11I7: R6←A6B6假设功能段的延迟为Δt..时空图如下图中的数字是指令号:1 2 3 4 5 6 7 8 9 101112131 2 3 4 5 6 71 2 3 4 5 6 78 9 10 11 12138 9 1011 12131 2 3 4 5 6 78 9 10 11 12131 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 整个计算过程需要24Δt;所以吞吐率为: 加速比为: 效率为:5. 一条有三个功能段的流水线如下图..每个功能段的延迟时间均相等;都为△t..其中功能段S 2的输出要返回到它自己的输入端循环一次..⑴ 如果每间隔一个△t 向流水线的输入端连续输入新任务;问这条流水线会发生什么情况⑵ 求这条流水线能够正常工作的最大吞吐率、加速比和效率.. ⑶ 有什么办法能够提高这条流水线的吞吐率;画出新的流水线.. 答:△t △t △t⑴如果每间隔一个△t向流水线的输入端连续输入新任务;流水线S2功能段存在资源冲突..见下表:⑵每间隔两个△t向流水线的输入端连续输入新任务如见下表所示可获得最佳性能..我们可以看出:在2n+2Δt的时间内;可以输出n个结果;如果指令的序列足够长n→∞;并且指令间不存在相关;那么;吞吐率为:加速比为:效率为:⑶如要提高这条流水线的吞吐率;可采用:将功能段S2重复设置一次;见下图:6. 一条有4个功能段的非线性流水线;每个功能段的延迟时间都相等;都为20ns;它的预约表如下:⑴ 写出流水线的禁止向量和初始冲突向量.. ⑵ 画出调度流水线的状态图..⑶ 求流水线的最小启动循环和最小平均启动距离.. ⑷ 求平均启动距离最小的恒定循环.. ⑸ 求流水线的最大吞吐率..⑹ 按照最小启动循环连续输入10个任务;求流水线的实际吞吐率.. ⑺ 画出该流水线各功能段之间的连接图.. 答: ⑴禁止向量F=6;4;2;冲突向量C=101010..输入△t⑵⑶∴流水线的最小启动循环为:1;7或3;5或5;3;最小平均启动距离为4..⑷由上表可知:平均启动距离最小的恒定循环为5..⑸采用最小平均启动距离为4的最小启动循环可获得流水线的最大吞吐率;以1;7为例:其他类似;最大吞吐率皆相同当任务数为偶数2n 时: 当任务数为奇数2n+1时: ∴ 流水线的最大吞吐率为:)s /(M 5.12ns2041t 41任务=⨯=∆ ⑹10个任务的实际吞吐率:利用上式可得偶数个任务TP 10=1/4△t=12.5M 任务/s.. ⑺该流水线的连接图为:7.一条由4个功能段组成的非线性流水线的预约表如下;每个功能段的延迟时间都为10ns..47⑴ 写出流水线的禁止向量和初始冲突向量.. ⑵ 画出调度流水线的状态图..⑶ 求流水线的最小启动循环和最小平均启动距离..⑷ 在流水线中插入一个非计算延迟功能段后;求该流水线的最佳启动循环及其最小平均启动距离..⑸ 画出插入一个非计算延迟功能段后的流水线预约表5行8列.. ⑹ 画出插入一个非计算延迟功能段后的流水线状态变换图.. ⑺ 分别计算在插入一个非计算延迟功能段前、后的最大吞吐率.. ⑻ 如果连续输入10个任务;分别计算在插入一个非计算延迟功能段前、后的实际吞吐率.. 答: ⑴禁止向量F=5;2;1;冲突向量C=10011..⑵⑶i=466最小启动循环为3;最小平均启动距离为3..⑷插入一个非计算延迟功能段后;最小平均启动距离为2因为预约表中每行至多2个×;相应地可改进最小启动循环为2..⑸⑹流水线的禁止向量为1;3;7;流水线的冲突向量为1000101;流水线的状态图如下:6C0-C065C0-C2-C255;4C0-C2 4.55;6C0-C2 5.5流水线的最小启动循环为2;最小平均启动距离为2..⑺插入前:插入后:⑻连续输入10个任务;插入前的实际吞吐率为:连续输入10个任务;插入后的实际吞吐率为:8. 在流水线处理机中;有独立的加法操作部件和乘法操作部件各一个;加法操作部件为4段流水线;乘法操作部件6段流水线;都在第一段从通用寄存器读操作数;在最后一段把运算结果写到通用寄存器中..每段的时间长度都相等;都是一个时钟周期..每个时钟周期发出一条指令..问可能发生哪几种数据相关写出发生相关的指令序列;分析相关发生的原因;并给出解决相关的具体办法..答:可能的数据相关性有:⑴“先写后读”RAW相关Read After 加法写..原因:还没有写好就已经读取寄存器中的数据了..DADD R1;R2;R3 ;R2+R3→R1DSUB R4;R1;R5 ;R1-R5→R4Read After 乘法写..原因:还没有写好已经读取寄存器中的数据了..DMUL R1;R2;R3 ;R2×R3→R1DSUB R4;R1;R5 ;R1-R5→R4本相关在流水线顺序执行和乱序执行时都可能发生..解决的方法是:利用编译程序调整指令的次序方法;延迟执行是避免数据相关最简单的方法;建立寄存器之间的专用路径..⑵“写—写”WAW相关Write After 乘法写..原因:后写的反而早执行乘法所化的时间长;后面一个写任务反而先完成;使最后写入的内容不正确..DMUL R1;R2;R3 ;R2×R3→R1DSUB R1;R4;R5 ;R4-R5→R1本相关只有在流水线乱序执行时才可能发生..解决的方法是:寄存器换名..⑶“先读后写”WAR相关Write After 任何读..原因:前面的读操作因为某种原因被推迟;要读的内容被后面的写操作修改了..DSUB R4;R1;R5 ;R1-R5→R4DADD R1;R2;R3 ;R2+R3→R1本相关只有在流水线乱序执行时才可能发生..解决的方法是:寄存器换名..9. 在下列不同结构的处理机上运行8×8的矩阵乘法C=A×B;计算所需要的最短时间..只计算乘法指令和加法指令的执行时间;不计算取操作数、数据传送和程序控制等指令的执行时间..加法部件和乘法部件的延迟时间都是3个时钟周期;另外;加法指令和乘法指令还要经过一个“取指令”和“指令译码”的时钟周期;每个时钟周期为20ns;C 的初始值为“0”..各操作部件的输出端有直接数据通路连接到有关操作部件的输入端;在操作部件的输出端设置有足够容量的缓冲寄存器..⑴处理机内只有一个通用操作部件;采用顺序方式执行指令..⑵单流水线标量处理机;有一条两个功能的静态流水线;流水线每个功能段的延迟时间均为一个时钟周期;加法操作和乘法操作各经过3个功能段..⑶多操作部件处理机;处理机内有独立的乘法部件和加法部件;两个操作部件可以并行工作..只有一个指令流水线;操作部件不采用流水线结构..⑷单流水线标量处理机;处理机内有两条独立的操作流水线;流水线每个功能段的延迟时间均为一个时钟周期..⑸超标量处理机;每个时钟周期同时发射一条乘法指令和一条加法指令;处理机内有两条独立的操作流水线;流水线的每个功能段的延迟时间均为一个时钟周期..⑹超流水线处理机;把一个时钟周期分为两个流水级;加法部件和乘法部件的延迟时间都为6个流水级;每个时钟周期能够分时发射两条指令;即每个流水级能够发射一条指令..⑺超标量超流水线处理机;把一个时钟周期分为两个流水级;加法部件和乘法部件延迟时间都为6个流水级;每个流水级能够同时发射一条乘法指令和一条加法指令..答:要完成上面的矩阵乘法;需要完成的乘法数目为8×8×8=512次;需要完成的加法数目为8×8×7=448次;下面分析处理机的结构会给性能带来什么样的影响..⑴通用操作部件采用顺序方式执行顺序执行时;每个乘法和加法指令都需要5个时钟周期取指令、指令分析、指令执行;所以所需要的时间为:⑵单流水线标量处理机;有一条两个功能的静态流水线因为有足够的缓冲寄存器;所以我们可以首先把所有的乘法计算完;并通过调度使加法流水线不出现停顿;所以所需要的时间为:123456785135145155165175189639649659661=①+②、2=1+③、3=2+④、4=3+⑤、5=4+⑥、6=5+⑦、7=6+⑧⑶多操作部件处理机;只有一条指令流水线由于只有一条指令流水线;所以只能一个时钟周期发射一条指令;由于操作部件不采用流水线;对于结果C矩阵的第一个元素;首先执行2次乘法;然后乘法和加法并行执行7次;此时C矩阵的第一个元素出来了;然后加法运算停顿3个时钟周期;再开始与乘法并行执行运算7次;如此下去;直到C的64个元素都出来..故执行时间为:⑷单流水线标量处理机;处理机内有两条独立的操作流水线由于只有一条指令流水线;所以只能一个时钟周期发射一条指令;对于乘法运算不存在数据相关;对于加法运算有数据相关;由于存在足够的缓冲寄存器;我们可以通过合适的调度消除加法的数据相关..因此;最佳情况下的执行时间为:12345678910111213141516171819202122 1=①+②、2=1+③、3=2+④、4=3+⑤、5=4+⑥、6=5+⑦、7=6+⑧⑸超标量处理机同一时钟周期可以有一条乘法指令和一条加法指令同时发射;对于乘法运算不存在数据相关性;对于加法运算有数据相关性;由于存在足够的缓冲寄存器;当运算完所有的乘法运算后;还要做一次加法运算..因此执行时间为:12345678910111213141516171819202122 1=①+②、2=1+③、3=2+④、4=3+⑤、5=4+⑥、6=5+⑦、7=6+⑧⑹超流水线处理机每个时钟周期发射两条指令;加法部件和乘法部件都为6个流水级..事实上相当于将时钟周期变成了10ns;而加法和乘法流水线变成了6级..因此执行时间为:⑺超标量超流水线处理机一个时钟周期分为两个流水级;加法部件和乘法部件都为6个流水级;每个流水级能同时发射一条加法和一条乘法指令..综合⑸和⑹的分析;我们可以知道;执行时间为:。
指令集的实现与流水线结构

18
Computer Architecture Spring 2016
算术流水线
19
Computer Architecture Spring 2016
算术流水线
20
Computer Architecture Spring 2016
算术流水线
21
Computer Architecture Spring 2016
4、流水线需要有“填充时间”(第一个任务流出结果所需的时间), 在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出 一个结果;
5、流水技术适合于大量重复的时序过程,只有输入端能连续地提供 任务,流水线的效率才能充分发挥。
8
Computer Architecture Spring 2016
部件级、处理机级及处理机间流水线
所谓部件级流水线又叫运算操作流水线(Arithmetic pipelines),它是把处理机的算术逻辑部件分段,以便为各 种数据类型进行流水操作。
所谓处理机级流水线,又叫指令流水线(Instruction pipelines),它是把解释指令的过程按照流水方式处理。
所谓处理机间流水线,又叫宏流水线(Macro pipelines)。
段空 号间
8 7 6
浮点加 1 2 3 … … n-1 n
定点乘 一
一二 一二三
5
1 2 3 … … n-1 n
4
1 2 3 … … n-1 n
3
1 2 3 … … n-1 n
2
1 2 3 … … n-1 n
1 1 2 3 … … n-1 n
一二三四
时间
静态流水线 11
Computer Architecture Spring 2016
流水线CPU技术获奖课件

FD
I E E EW
⑧
F
D
I E E EW
(b)8 条指令顺序
(c)8 条指令的流水线
图 4-12 流水线的相关延迟
指令发射:开启指令去处理器功能单元执行旳过程
静态调度:编译检测
编译器优化后,所需时间为
17个时钟周期 ① R1←M(Y)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
(R1)×(R2)->R3 (R4) + (R5)->R3
局部性有关:数据有关
(1) I1: ADD R1,R2,R3 ; I2: SUB R4,R1,R5 ;
(R2) + (R3)->R1 (R1) - (R5)->R4
第(1)组指令中,I1指令运算成果应先写入R1,然 后在I2指令中读出R1内容。因为I2指令进入流水线, 变成I2指令在I1指令写入R1前就读出R1内容,发生 RAW(写后读)有关。
② 增设一种存储器,将指令和数据分开存储;
③ 采用双端口存储器。
局部性有关:数据有关
在程序中,一条指令旳执行需等前一条指令执行完后才 干进行,则有数据有关。
例:SUB R1,R2,R3;(R2)(R3) R1
ADD R4,R1,R5;(R1)(R5) R4
时钟 1 2 3 4
指令
SUB 取指 译码 取数 执行
图 4-15 基于计分牌发射逻辑的流水线调度过程
动态调度-计分牌法
记分牌旳缺陷 依托流水线停止来处理有关性 没有消除数据有关 集中式调度
记分牌部件是性能瓶颈
动态调度-保存站法
FD
RS
RS
E
E
6计算机组成原理第6章流水线原理

结果
6.1 先行控制技术
• 先行控制(look-ahead)技术最早在IBM公司研制的 STRETCH机器中采用。目前,许多处理机中都已经采 用了这种技术,包括超流水处理机和超标量处理机等。
6.4 线性流水线性能分析
衡量流水线的主要指标有吞吐率,加速比和效率。
6.4.1 吞吐率TP
吞吐率(TP ── ThroughPut)指流水线在单位时间内执行的任务数, 可以用输入任务数或输出任务数表示。
TP n Tk
其中k表示流水线划分的段数。
当满足 ti 条t 件时,有 Tk (n k 1) t。
第6章 流水线原理及其 §1 重叠方式
通常提高指令执行速度的途径有如下三种: 1. 提高处理机的工作主频。 2. 采用更好的算法和设计更好的功能部件。 3. 多条指令并行执行,称为指令级并行技术。
• 可以从两个方面来开发处理机内部的并行性:
– 空间并行性:即在一个处理机内设置多个独 立的操作部件,并让这些操作部件并行工作, 这种处理机称为多操作部件处理机或超标量 处理机;
• 超长指令字技术VLIW:指让一条指令包含多个独立的操 作字段,并且分别控制多个功能部件并行工作的技术。
一.重叠解释方式
1.一条指令的几个过程段
1)取指令:根据PC(指令计数器)从M(存储器)取 出指令送到IR(指令寄存器)
2)译码分析:译出指令的操作性质,准备好所需数 据
3)执行:将准备好的数按译出性质进行处理,主要 涉及ALU(算术逻辑运算部件)
预备知识-流水线相关与冒险
流水线的相关与冒险
通过定向技术减少数据冒险引起的停顿
(定向技术也称为旁路或短路)
关键思想:在某条指令产生计算结果之前,其他指 令并不真正立即需要该计算结果,如果能够将该计 算结果从其产生的地方直接送到其他指令需要它的
地方,那么就可以避免停顿。
采用定向技术消除上例中的相关 工作过程演示
流水线的相关与冒险
指令i 指令i+1
指令i+2 指令i+3 指令i+4 指令i+5
IF
ID IF
EX ID
IF
MEM EX
ID stall
WB MEM
EX IF
WB
MEM ID IF WB EX ID IF WB MEM EX ID WB MEM EX WB MEM
流水线的相关与冒险
有时流水线设计者允许结构冒险的存在
写回周期(WB)
ALU运算指令和load指令在这个周期把结果 数据写入通用寄存器组。
ALU运算指令:结果数据来自ALU。 load指令:结果数据来自存储器系统。
在这个实现方案中:
分支指令需要4个时钟周期(如果把分支指令的执行 提前到ID周期,则只需要2个周期)。 store指令需要4个周期。 其他指令需要5个周期才能完成。
指令j写的名=指令i写的名
流水线的相关与冒险
名相关的两条指令之间并没有数据的传送。
如果一条指令中的名改变了,并不影响另外一条指
令的执行。
换名技术
换名技术:通过改变指令中操作数的名来消除名相关。
对于寄存器操作数进行换名称为寄存器换名。
既可以用编译器静态实现,也可以用硬件动态完成。
流水线原理——ILP
llxx@ 18
直到C6,数据才可用
指令调度
• 指令调度,是RISC微处理器编译技术之一。 • 指令调度是解决数据相关的最经济的方法,它可以解决RAW、WAR 和WAW数据相关。 • 假设有这样一个指令序列: I0: R1+R2R3 I1: R3+R4R5 I2: R7 OR R8R9 • 假定我们按下列方法重新安排指令次序: R1+R2 R3 R7 OR R8 R9 R3+R4 R5
从此开始,每个 周期流出一条指 令,IPC≈1
Execute Store res.
pipelined instruction execution
Time
llxx@
9
流水线分类
• 单功能流水线:只能完成一种功能的流水线,如浮点加法 流水线。 • 多功能流水线:流水线的各段可以进行不同的连接,从而 使流水线在不同的时间完成不同的功能。 • 静态流水线:在某一时间段内,流水线的各段只能按同一 种功能的连接方式工作,即只有当输入是一串相同性质的 操作时其性能才能得到发挥。 • 动态流水线:在某一段时间内,某些段正在实现某类操作 (定点乘),其他段却在实现另一类操作(浮点加)。 • 线性流水线:流水线的各段串行连接,没有反馈回路。 • 非线性流水线:流水线中除了串行的通路,还有反馈回来。 • 顺序流水线:流水线的流出顺序与其流入顺序相同。 • 乱序流水线:流水线的流出顺序与其流入顺序不同。
Pipelined
non-pipelined dish cleaning
Time
pipelined dish cleaning
Time
• 流水过程由多个相互联系的子过程组成,每个子过程称为 流水线的“级”或“段”。
流水线中相关-PPT精品
调度策略
对调度的要求
什么情况下起作用?
从前调度
被调度的指令必须与分支无关
任何情况
从目标处调度
必须保证在分支失败时执行被调度
分支成功时
的指令不会导致错误。有可能需要 (但由于复制指令,有
复制指令。
可能会增大程序空间)
必须保证在分支成功时执行被调度 从失败处调度 的指令不会导致错误。
(2) 采用定向技术消除上例中的相关 工作过程演示
12/63
3.3 流水线中的相关
(3) 当定向硬件检测到前面某条指令的结果寄存 器就是当前指令的源寄存器时,控制逻辑会 将前面那条指令的结果直接从其产生的地方 定向到当前指令所需的位置。
(4) 一个功能单元的输出不仅可以定向到其自身 的输入,而且还可以定向到其它单元的输入。 举例
41/63
3.3 流水线中的相关
(2) 在ID段增设一个加法器,这样可以把分支 开销减少一拍。 改进后流水线的分支操作 (表3.5)
43/63
表 3.5 改进后流水线的分支操作
流水段
分支指令操作
IF/ID.IR ← Mem[PC]; IF/ID.NPC,PC ←
IF
(if ID/EX.cond {ID/EX.NPC} else {PC+4}); (动画演示)
指令继续执行。 在本章中,我们约定:
当一条指令被暂停时,暂停在其后发射 (流出)的指令,但继续执行在其前发射的
指令。
3/63
3.3 流水线中的相关
3.3.1 流水线中的结构相关
1. 在流水线机器中,为了使各种指令组合能顺 利地重叠执行,需要把功能部件流水化,并 把资源重复设置。
2. 如果某种指令组合因资源冲突而不能顺利重 叠执行,则称该机器具有结构相关。
指令级并行
可弱化为:指令执行顺序的改变不能导致程序中发 生新的异常。
如果能做到保持程序的数据相关和控制相关, 就能保持程序的数据流和异常行为。
例:
DADDU R2,R3,R4
BEQZ R2,L1
LW
R1,0(R2)
L1 :
如果不保持关于R2的数据相关,程序的执 行结果就会改变。
软硬件结合方法:显式并行指令计算EPIC。
4.5 循环展开和指令调度
4.5.1 循环展开和指令调度的基本方法 为了充分发挥流水线的作用,必须设法让
它满负荷工作。因此要充分开发指令之间 存在的并行性,找出不相关的指令序列, 让它们在流水线上重叠并行执行。 增加指令间并行性最简单和最常用的方法
浮点计算
另一个浮点计算
3
浮点计算 浮点store(S.D)
2
浮点load(L.D) 浮点计算
1
浮点load(L.D) 浮点store(S.D)
0
Load指令的结果可以通过定向路径及时送给 store指令,所以延迟为0,不用插入停顿。
例4.6 对于下面的源代码,转换成MIPS汇编 语言,在不进行指令调度和进行指令调度两 种情况下,分析其代码一次循环所需的执行 时间。
1.流流水水线线处处理理机机的的实实际际CCPIP就I是理想流水线的
CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突
+ 停顿数据冲突+ 停顿控制冲突
CPI理想即理想CPI,是衡量流水线最高性能 的指标之一。
IPCIP(C:In每s个tru时c钟ti周on期s内P完er成C的y指cl令e 条)数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机系统结构实验报告
班级 实验日期 实验成绩
姓
名
学号
实
验
名
称
实验2 流水线及流水线中的冲突
实 验 目 的 、 要 求 实验目的:
1.加深对计算机流水线基本概念的理解。
2.理解MIPS结构如何用5段流水线来实现,理解各段的功能和基本操
作。
3.加深对数据冲突、结构冲突的理解,理解这两类冲突对CPU性能的影
响。
4.进一步理解解决数据冲突的方法,掌握如何 应用定向技术来减少数据
冲突引起的停顿。
实 验 内 容 、 步 骤 及 结 果 (简要描述实验内容、记录在调试过程中出现的问题及解决方法、记录实验执行的结果)
(1)启动MIPSsim。
(2)根据预备知识中关于流水线各段操作的描述,进一步理解流水线窗口
中各段的功能,掌握各流水寄存器的含义。(用鼠标双击各段,就可以看到
各流水寄存器的内容)
(4)选择配置菜单中的“流水方式”选项,使模拟器工作于流水方式下。
1)选择MIPSsim的“文件”—>“载入程序”选项来加载pipeline.s (在
模拟器所在文件夹下的“样例程序”文件夹中)。
2)关闭定向功能。这是通过“配置”—>“定向”(使该项前面没有√
号)来实现的。
3)用单步执行一个周期的方式(在“执行”菜单中)或按F7键执行该
程序,观察每一个周期中,各段流水寄存器内容的变化、指令的执行情况(“代
码”窗口)以及时钟周期图。
4)当执行到第13个时钟周期时,各段分别正在处理的指令是:
IF: LW $r4,60($r6)
ID: ADDI $r3,$r0,25
EX: ADDI $r1,$r1,-1
MEM: ADDI $r6,$r0,8
WB: ADDI $r2,$r1,$r0
画出这时的时钟周期图。
(6)这时各流水寄存器中的内容为:
IF/ID.IR: 0x8CC4003C
IF/ID.NPC: 0x00000030
ID/EX.A: 0x0000000000000000
ID/EX.B: 0x0000000000000000
ID/EX.Imm: 0x0000000000000019
ID/EX.IR: 0x20030019
EX/MEM.ALUo: 0x0000000000000004
EX/MEM.IR: 0x2021FFFF
MEM/WB.LMD: 0x0000000000000000
MEM/WB.ALUo: 0x0000000000000008
MEM/WB.IR: 0x20060008
(7)观察和分析结构冲突对CPU性能的影响,步骤如下:
1)加载structure_hz.s(在模拟器所在文件夹下的“样例程序”文件夹
中)。
2)执行该程序,找出存在结构冲突的指令对以及导致结构冲突的部件。
结构冲突的指令为连续的ADD
结构冲突的部件为Fadd浮点加法器
3)记录由结构冲突引起的停顿时钟周期数,计算停顿时钟周期数占总
执行周期数的百分比。
可以看到结构停顿的周期数为35,占总周期的67.30769%
4)把浮点加法器的个数改为4个。
5)再次重复步骤①~③的工作。
加法器个数增加后,结构停顿周期数为2,占总周期的10.52632%
6)分析结构冲突对CPU性能的影响,讨论解决结构冲突的方法。
结构冲突会是CPU执行指令的效率降低,从而使其性能下降
通过实验可知,增加引起结构冲突的部件个数可以有效减少结构冲突
(8)观察数据冲突并用定向技术来减少停顿,步骤如下:
1)全部复位。
2)加载data_hz.s(在模拟器所在的文件夹下的“样例程序”文件夹中)。
3)关闭定向功能。这是通过“配置”->“定向”(是该项前面没有√号)
来实现的。
4)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期
图,列出在什么时刻发生了RAW(先写后读)冲突。
如下图:周期数为3,4,6,9,12,13,16,17,20,23,25,28,31,
32,35,36,39,42,44,47,50,51,54,55,58,61,63
5)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数,
计算停顿时钟周期数占总执行周期数的百分比。
总周期数为65,RAW停顿数为31,占总周期比47.69231%
6)复位CPU 。
7)打开定向功能。这是通过“配置”->“定向”(是该项前面有√号)
来实现的。
8)用单步执行一个周期的方式(F7)执行该程序,同时查看时钟周期
图,列出在什么时刻发生了RAW(先写后读)冲突,并与步骤3的结果进
行比较。
定向时,总周期数为43,RAW停顿数为9,占总周期的20.93023%
9)记录数据冲突引起的停顿时钟周期数以及程序执行的总时钟周期数。
计算采用定向技术后性能提高的倍数。
性能提升:65/43=1.517
总 结 1. 通过实验,进一步加深了对流水线的理解。 2. 从实验中,可以明显了解到增加冲突部件能减少结构冲突;利用定向功
能可减少RAW冲突。
3. 解决流水线中的冲突问题可以有效提升CPU的性能。