第六章 流水线
流水线1------19(手动打星星)
1、什么是流水线?
将⼀重复的处理过程分解为若⼲⼦过程,每个⼦过程都可有效地在其专⽤功能段上与其它⼦过程同时执⾏,这种技术称为流⽔线技术。
PS:流水线的特点?
①流⽔过程由多个相关的⼦过程组成,这些⼦过程称为流⽔线的“级”或“段”(Stage)。段的数⽬称为流⽔线的“深度”。
② 每个⼦过程由专⽤的功能段实现,各功能段的时间应基本相等,通常为1个时钟周期(1拍)。
③流⽔线需要经过⼀定的通过时间才能稳定。
④流⽔技术适合于⼤量重复的时序过程。
2、流水线的分类?
-
单功能 v.s 多功能
– 单功能流⽔线,是指只能完成⼀种固定功能的流⽔
线。
– 多功能流⽔线,是指各段可以进⾏不同的连接,从⽽
完成不同的功能。 -
静态流水线 和 动态流水线
按同⼀时间内流水段的连接方式划分– 静态流水线,是指在同⼀时间内,流⽔线的各段只能按同⼀种功能的连接⽅式⼯作。
例如:TI ASC的流水线。适合于处理⼀串相同的运算操作。– 动态流水线,是指在同⼀时间内,当某些段正在实现某种运算时,另⼀些段却在实现另⼀种运算。
会使流水线的控制变得很复杂。 -
级别: 部件级 vs 指令级 vs 宏
4、流水线的瓶颈在哪里?
当流水线各段时间不相等时,流水线中最慢的那段就构成了流水线的瓶颈。瓶颈将直接影响流水线水线的吞吐率。
5、如何消减瓶颈?有哪两种方法?
– 细分瓶颈段(将大的瓶颈段划分为小的时间段)
– 重复设置瓶颈段(也就是增加机器或人手,看下图就能理解)
1、 总执行时间T
- 非流水
若流水线有m段,各段时间相同均为△t,则顺序执行n 个任务时,所用时间T顺的表达式为
T顺 = n* m*△t; - 流水
若流水线有m段,各段时间相同均为△t,则当采用流水线执行n 个任务时,所用时间T的表达式为
T = m *△t + (n - 1) *△t;
2、 最大吞吐率
最大吞吐率TPmax是指流⽔线在达到稳定状态后所得到的吞吐率。
- 假设流水线各段的时间相等,均为△t 0,则:
TPmax = 1/△t 0 - 假设流水线各段时间不等,第i段时间为△t i ,则:
TPmax = 1/ max{△t i }
– 最大吞吐率取决于流⽔线中最慢⼀段所需的时间,该段称为流⽔线的瓶颈
3、吞吐率
设流⽔线由m段组成,完成n个任务的吞吐率称为实际吞吐率,记作TP。
4、加速比S
加速比是指流水线速度与等功能的⾮流⽔线速度之比。
加速比 S = T非流水 / T流水
5、效率
从时-空图上看,效率就是n个任务所占的时空区与m个段总的时空区之比
根据这个定义,可以计算流⽔线各段时间不等时的
流⽔线效率
E = n 个任务占⽤的时空区 / m个段总的时空区
1、流水线中的相关
流⽔线中的相关是指相邻或相近的两条指令因存在某种关联,后⼀条指令不能在原先指定的时钟周期
开始执⾏。
2、分别简述结构相关、数据相关以及控制相关
结构相关: 当指令在重叠执⾏过程中,硬件资源满⾜不了指令重叠执⾏的要求,发⽣资源冲突时将产⽣“结构相关”。
数据相关: 当⼀条指令的结果还未有效⽣成,该结果就被作为后续指令的操作数时,就发⽣了“数据相关”.
控制相关: 当流⽔线遇到分⽀指令和其它会改变PC值的指令时就发⽣“控制相关”。
3、结构相关的原因?优化方案?
- 导致结构相关的常⻅原因:(概括:资源冲突)
– 功能部件不是全流水
– 重复设置的资源数量不足 - 解决⽅法:
①增加资源副本
②延迟(暂停)流水线
③改变资源以便它们能并发的使用
4、数据相关的原因?
当指令在流⽔线中重叠执⾏时,流⽔线有可能改变指令读/写操作数的顺序,使之不同
于它们在非流⽔实现时的顺序,这将导致数据相关。
5、数据相关分几类?哪些可能会造成冲突?
- 写后读( RAW ) —— i 写j 读 : 如果j 在i 完成写之前从R 中读出数据,将得到错误
的结果!
➢ 最常⻅的数据相关,严重制约了CPU的性能,是程
序最重要的特征之⼀! - 写后写( WAW ) —— i 写j 写: 如果j 在i 之前完成写操作,R中将保存错误的结果!
➢ 当流⽔线中有多个段可以写回,⽽且当流⽔线暂停某条指令的执⾏
时,其后的指令可以继续前进时,可能引起这种类型的相关。 - 读后写(WAR ) —— i 读j 写 :如果j 先将数据写⼊R,i 将读出错误的结果!
➢ 这种相关很少发⽣。当有些指令在流⽔段后半部分读源操作
数,另⼀些指令在流⽔线前半部分写结果,可能引起这种类型的
相关。 - 读后读(RAR ) —— i 读j 读 :不引起数据相关!
6、数据相关有哪些解决⽅案?
解决⽅法:向流⽔线中插⼊暂停周期(等啊!!!!)
- 采⽤直通(forwarding)技术(少等⼀个节拍)
控制逻辑将前⾯指令的结果从其产⽣的地⽅直接连通到当前指令所处的位置。 - 增加专⽤硬件(实现等)
增加流⽔线互锁(pipeline interlock)硬件。互锁硬件先要检测流⽔线中指令的数据相关性,当互锁硬件发现数据相关时,使流⽔线⼯作停顿下来,直到相关消失为⽌。 - 利⽤编译器(看能不能绕过等待)
流⽔线调度/指令调度:编译器可以对指令重新排序或插⼊空操作指令,使得加载任何冲突数据的操作被延迟,但对程序逻辑或输出不受影响。
7、控制相关的原因?使执行顺序发⽣改变的指令有哪两类?
当流⽔线遇到分支指令和其它会改变PC值的指令时就发⽣“控制相关”
8、优化控制相关有哪些方法?
- 冻结(freeze)流⽔线 <—等呗
- 预取分⽀⽬标(prefetch branch target)
- 多流(multiple streams)
- 循环缓冲器(loop buffer)
- 分⽀预测(branch prediction)
1、简述冻结流水线方法?
⼀旦在指令译码段检测到分⽀指令,就在转移⽬标地址确定之前保存或删除所有紧随分⽀指令之后的指令,当分⽀指令从执⾏段流出、确定出新的PC值时,流⽔线才继续依据新PC值填充流⽔线。
2、简述预取分支目标法?
- 当条件分⽀指令被识别时,除了紧随其后的指令外,分⽀⽬标也被预取放在当前流⽔线,并保存到分⽀指令被执⾏。
- 如果分⽀跳转发⽣,已预取到的⽬标指令可⽴刻执⾏。
3、简述多流法?
- 在条件分⽀的两路上同时启动取指令操作,并将指令保存到分⽀指令被实际执⾏时。
- 分⽀指令执⾏时,“真”的执⾏通路即刻可以获得。
4、简述循环缓冲器法?
循环缓冲器是⼀个⼩的、⾮常⾼速的存储器(buffer),保存着最近获取的n条顺序的指令。如果分⽀发⽣,硬件⾸先检查分⽀⽬标是否在缓冲器中。如果在,下⼀条指令从缓冲器中获取。
5、简述分支预测法?它和上面的方法有何区别?(不晓得)
猜选 i+1 和 p 中的⼀个分⽀继续流⼊流⽔线。(赌:不转移!)
6、何为静态分支预测? 分几类?
静态分支预测:在编译阶段静态完成的预测。
分类:可以采⽤的预测⽅法:(对赌策略)
• 预测分⽀不会发⽣(predict never taken)(总赌不转移)
“出错检测处理”
• 预测分⽀总是发⽣(predict always taken)(总赌转移)
“循环”
• 由编译器预测(有先验预测)
• 测试法(profiling)(作弊,有后验预测)
实际运⾏该程序(⼀般是在模拟器上) ,然后将有关信息送给
编译器。
•剖面法
7、从性能优化的⻆度看,分支跳转/不跳转有何影响?
1、何为动态分⽀预测?简述其原理。
通过记录分⽀指令的近期运⾏历史,并以此作为预测的依据,来提⾼分⽀预测的准确度。
- 分支历史表
2、概述1-bit分⽀预测⽅法?
3、概述2-bit分⽀预测⽅法?
这个图比较好理解一些些
1、什么是超标量流⽔线?
超标量流⽔线(Superscalar)
简单来说:内置多个流⽔线⼀起跑!借助硬件资源重复来实现空间的并⾏,实现IPC > 1!
2、什么是超流⽔流⽔线?
超流⽔线(Super Pipeline)
将流⽔线的IF、ID、ALU等关键步骤进⼀步细分为多个stages,故称为super-pipeline
3、超标量、超流⽔以及超标量超流⽔流⽔线,三者效率对⽐结果? 给出2条原因。
超标量处理机的相对性能最⾼,其次是超标量超流⽔线处理机,超流⽔线处理机的相对性能最低。主要有三⽅面原因:
- 超标量处理机在每个时钟周期的开始就同时发射多条指令,⽽超流⽔线处理机则要把⼀个时钟周期平均分成多个流⽔线周期,每个流⽔线周期发射⼀条指令,指令之间的启动延时比超标量处理机⼤;
- 条件转移造成的损失,超流⽔线处理机比超标量处理机⼤;
- 在指令执⾏过程中的每⼀个功能段,超标量处理机都设置有多个相同的操作部件,⽽超流⽔线处理机只是把同⼀条指令执⾏部件分解为多个流⽔级。因此,超标量处理机指令执⾏部件的冲突比超流⽔线处理机小。
4、什么是N发射处理机?(不晓得)
5、VLIW是什么?
超⻓指令字VLIW(Very Long Instruction Word,简记为VLIW)
将⼀次“发射”(Issue)的多个指令打包成⼀条⻓指令,或者说“超⻓指令字”(VLIW-Very Long Instruction Word) ,采⽤这种技术的处理器被称为VLIW处理器
由编译器静态推测来完成“指令打包”和“相关”处理
1、什么是乱序执⾏?有哪两种经典实现⽅法?
- 记分牌法
- Tomasulo Algorithm(算法)
2、Tomasulo算法引⼊了哪三种⽅法解决了数据相关问题?(不晓得,数据重定向技术?)



