流水线原理——ILP

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
llxx@ustc.edu.cn 13
结构相关消除
C1 C2 C3 C4 C5 C6 C7 C8 LOAD MEM REG ALU MEM I REG
指令1
MEM
REG
ALU
MEM
ቤተ መጻሕፍቲ ባይዱREG
指令2
MEM
REG
ALU
MEM
REG
指令3
MEM D
REG
ALU
MEM
REG
• 访存结构相关化解:哈佛结构
llxx@ustc.edu.cn 14
– 按一定的模式向延迟槽(delay slot)中填入某些指令
• 向前找?向后找?
– 无论分支是否成功,延迟槽中的指令都将被执行
llxx@ustc.edu.cn
22
减少转移损失—静态预测
• 大多数RISC微处理器一般都采用了静态转移预测。3种:
– 预测总是不会发生转移。
• 这是最简单最经济的转移预测策略。在转移实际发生之前,它预测指令执行 是顺序的。
数据相关
C1 C2 C3 ALU C4 C5 C6 C7 C8 ADD MEM REG MEM REG SUB MEM REG ALU MEM REG
AND
MEM
REG
ALU
MEM
REG
指令
MEM
REG
ALU
MEM
REG
• ADD R1, R2, R3 • SUB R4, R1, R5 • AND R6, R1, R7
流水线原理——ILP
中科大11系 李曦
Laundry Example
• 4 袋衣服:Wash(30), dry(40), and fold(20) • Sequential Laundry
– 需要花费 6 小时(4x(30+40+20)=360分钟)
• Pipelined Laundry: (Start work ASAP)
减少转移损失—动态预测
• 动态转移预测基于实际运行时的转移历史。
– 1位转移预测缓冲器。将所有转移指令地址放入一个缓冲器并配置一个状态 位用于记录这条指令是否发生了转移。
• 当取到一条新的转移指令时,查看缓冲器是否有这条指令。如果这条指令不在缓冲器,静 态的预测这条指令并在指令的状态输出已知时更新缓冲器。如果指令已在缓冲器中,根据 以前状态预测这条指令。如果预测正确,那是最好的;否则,更新缓冲器中的状态位。
– 编译器,指令调度。乱序执行,动态调度
llxx@ustc.edu.cn 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
llxx@ustc.edu.cn 5
指令六级流水时序
llxx@ustc.edu.cn
6
指令流水线时空图(Gantt chart)
Fetch-instr. Decode Fetch ops. 从此开始,每个 周期流出一条指 令,IPC≈1 Execute Instruction 1 Store res. 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 Pipelined
分支相关
• 假设指令3是一条条件转移指令,必须待指令2的结果出现 后(第7个时间单元),才能决定下一条指令是4(条件不满 足)还是15(条件满足)。 • 延迟槽(delay slot) • 流水线冻结(freeze)与排空(flush)
llxx@ustc.edu.cn
21
分支相关
• 分支预测技术(Prediction)
流水线停顿(stall)
C1 C2 C3 C4 C5 C6 C7 C8 LOAD MEM REG ALU MEM REG
指令1
MEM
REG
ALU
MEM
REG
指令2
MEM
REG
ALU
MEM
REG
指令3
MEM
REG
ALU
MEM
REG
• 气泡(bubble):流水线停顿一个周期
– 实现:不改变PC,重新取指,或清空流水线寄存器
• Bernstein条件:保证程序运行的结果可再现性
– 两个集合元素间满足以下3条关系:
• (1) R(p1) ∩ W(p2) = ∅ • (2) R(p2) ∩ W(p1) = ∅ • (3) W(p1) ∩ W(p2) = ∅
数据相关分类
• 写后读相关(RAW):j的执行要用到i的计算结果,j可能 在i写入其计算结果之前就先行对保存该结果的寄存器进行 读操作。
llxx@ustc.edu.cn 15
Bernstein条件-进程与时间无关的充分条件
• 例:p1:y=z+y;p2: z=x+z,假设x=1,y=2, z=3
– 如果先运行p1,则最后的结果是x=1,y=5,z=4; – 如果先运行p2,则x=1,y=6,z=4。 – 两次的结果不一样,即程序不可再现,所以p1,p2不 能并行的执行。 – p1的读集为 R(p1)={z,y}, p1的写集为W(p1)={y}
– 否则,消耗时间长的功能段将成为流水线的瓶颈,会造成流水线 的阻塞或断流。 – 每个功能段所需的时间一般为一个机器周期(cycle) 。
llxx@ustc.edu.cn 3
指令流水线结构
• 指令流水线是将指令的整个执行过程用流水线进 行分段处理。 • 指令流水线对机器性能的改善程度取决于把处理 过程分解成多少个相等的时间段数。
Pipelined
non-pipelined dish cleaning
Time
pipelined dish cleaning
Time
• 流水过程由多个相互联系的子过程组成,每个子过程称为 流水线的“级”或“段”。
– 一条流水线的段数被称为流水线的深度,或“流水深度”。
• 各个功能段所需时间尽量相等
llxx@ustc.edu.cn
17
数据定向技术(forwarding,bypassing)
C1 C2 C3 C4 C5 C6 C7 C8 ADD MEM REG ALU MEM REG
SUB
MEM
REG
ALU
MEM
REG
AND
MEM
REG
ALU
MEM
REG
指令
MEM
REG
ALU
MEM
REG
消除RAW • 方法一: 检测数据相关 ( 互锁,INTERLOCK),前推 • 方法二:禁止生成此类指令序列
– “读”快,“写”慢
• 写后写相关(WAW):j和i的目的操作数一样,写入顺 序错误,在目标寄存器中留下的是i的值而不是j的值。
– 后面的“写”快,前面的“写”慢
• 读后写相关(WAR):j可能在i读取某个源寄存器的内容 之前就先对该寄存器进行写操作,导致i读出的是错误的数 据。
– 后面的“写”快,前面的“读”慢
pipelined instruction execution
Time
llxx@ustc.edu.cn
7
运算流水线结构
• 流水技术还可用于部件级,如浮点加法运 Interstage buffers 算
llxx@ustc.edu.cn
8
流水线性能
• 流水线加速比(speedup)=流水级数
– 提高n,即“流水线吞吐率(throughput)”
llxx@ustc.edu.cn
4
流水线技术
• 将指令的处理过程分解为更细的几个阶段。
– 取指(FI):从存储器取出一条指令并暂时存入指令 部件的缓冲区。 – 指令译码(DI):确定操作性质和操作数地址的形成 方式。 – 计算操作数地址(CO):计算操作数的有效地址,涉 及到寄存器间址、间址、变址、基址、相对寻址等各 种地址计算方式。 – 取操作数(FO): 从存储器中取操作数(若操作数在 寄存器中,则无需此阶段)。 – 执行指令(EI):执行指令所需的操作,并将结果存 于目的位置(寄存器中)。 – 写操作数(WO):将结果存入存储器。
llxx@ustc.edu.cn
10
流水线的“相关”
• 冲突(hazard),依赖(dependencies ) • 结构相关:当指令在重叠执行的过程中, 硬件资源满足不了指令重叠执行的要求, 发生资源冲突时将产生结构相关。 • 数据相关:当一条指令需要用到前面指令 的执行结果,而这些指令均在流水线中重 叠执行时,就可能引起数据相关。 • 控制相关:当流水线遇到分支指令和其他 会改变PC值的指令时,会发生控制相关。
非流水线执行时间 n * k * t speedup= = lim k n k * t ( n 1) * t 流水线执行时间
Fetch-instr. Decode Fetch ops. 1 2 1 3 2 1 4 3 2 1 Instruction 1 5 4 3 2 1 6 5 4 3 2 7 6 5 4 3 8 7 6 5 4 8 7 6 5 8 7 6 8 7 8 Pipelined
从此开始,每个 周期流出一条指 令,IPC≈1
Execute Store res.
pipelined instruction execution
Time
llxx@ustc.edu.cn
9
流水线分类
• 单功能流水线:只能完成一种功能的流水线,如浮点加法 流水线。 • 多功能流水线:流水线的各段可以进行不同的连接,从而 使流水线在不同的时间完成不同的功能。 • 静态流水线:在某一时间段内,流水线的各段只能按同一 种功能的连接方式工作,即只有当输入是一串相同性质的 操作时其性能才能得到发挥。 • 动态流水线:在某一段时间内,某些段正在实现某类操作 (定点乘),其他段却在实现另一类操作(浮点加)。 • 线性流水线:流水线的各段串行连接,没有反馈回路。 • 非线性流水线:流水线中除了串行的通路,还有反馈回来。 • 顺序流水线:流水线的流出顺序与其流入顺序相同。 • 乱序流水线:流水线的流出顺序与其流入顺序不同。
– 需30+4x40+20=210分 (3.5小时)
• 约束:设备独立,作业时长相等,buffers?In-order?
流水线技术
顺序执行
Wash Dry 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Non-pipelined 1 2
指令级并行(ILP)
1 2 3 4 3 5 4 6 5 7 6 8 7 8
– 对于向后的转移预测转移会发生,向前的转移预测转移不会发生。
• 这种预测策略与循环的结构(profile)非常匹配。在循环中,向后的转移用 于迭代,向前的转移用于退出循环。由于迭代次数很多,而退出只有一次, 因此这种预测对循环是非常准确的。
– 预测转移总是发生。
• 只要转移指令在实际中进行转移的百分比远高于没有发生转移的情况,这种 转移预测策略可以很好的工作。
–静态预测:投机执行(Speculation)
• Taken • not taken • 向后的转移预测转移taken,向前的转移预测转移not taken
–动态预测:分支预测器(Branch predictor)
• 一位饱和计数器(saturating counter) • 两位饱和计数器
• 延迟分支(delayed branch):编译调度
llxx@ustc.edu.cn 11
结构相关
C1 C2 C3 C4 C5 C6 C7 C8 LOAD MEM REG ALU MEM REG
指令1
MEM
REG
ALU
MEM
REG
指令2
MEM
REG
ALU
MEM
REG
指令3
MEM
REG
ALU
MEM
REG
• 典型的结构相关由访存造成。
llxx@ustc.edu.cn 12
2位预测器 《COA》, William Stallings
减少转移损失—延迟转移
I0: I1: I2: ..... R1+R2R3 BRGT R5,R6, jump: R4+R7R8 ..... jump:
将代码重新 安排如下:
延迟转移是一个体系结构特性。 也就是说是软硬之间的一个协 议。硬件会执行任何跟在转移 指令后面的指令,不管转移是 否发生。软件负责调度一条有 用指令填入这个槽。若不能找 到有用指令就在代码中填入 NOP指令。
– 2位转移预测缓冲器。
• 转移预测过程与1位时相同,只是用两个状态位跟踪转移历史。 • 只有当连续两次预测不成功时才修改转移预测的方向。 • 用两位的目的是在特定条件下,如嵌套循环退出时,实现滞后作用。
动态转移预测可以稍微提高转移预测的精度,以硬件复杂性和成本为代价。
Branch Prediction State Diagram
相关文档
最新文档