采用的基本技术 Technique Reduces Section Forwarding and bypassing Potential data hazard stalls A.2 Delayed branches and simple branch scheduling Control hazard stalls A.2 Basic dynamic scheduling(scoreboarding) Data hazard stalls from true dependences A.8 Dynamic scheduling with renaming Data hazard stalls and stalls from antidependences 3.2 and output dependences namic branch prediction Control stalls 3.4 Issuing multiple instructions per cycle Ideal cpi 3.6 Speculation Data hazard and control hazard stalls 3.5 Dynamic memory disambiguation Data hazard stalls with memory 3.2,3.7 Loop unrolling Control hazard stalls 4.1 Basic compiler pipeline scheduling Data hazard stalls A.2.4.1 Compiler dependence analysis Ideal CPl data hazard stalls 4.4 Software pipelining, trace scheduling Ideal CPi data hazard stalls 4.3 Compiler speculation Ideal CPI data control stalls 计算机体系结构
2021/2/7 计算机体系结构 7 采用的基本技术
本章遵循的指令延时 产生结果的指令使用结果的指令所需延时 印 ALU op Another FP ALU op FP ALU op Store double oad double FP ALU op oad double Store double 32100 Integer op nteger op (当使用结果的指令为 BRANCH指令时除外) 计算机体系结构 8
2021/2/7 计算机体系结构 8 本章遵循的指令延时 • (当使用结果的指令为BRANCH指令时除外) 产生结果的指令 使用结果的指令 所需延时 FP ALU op Another FP ALU op 3 FP ALU op Store double 2 Load double FP ALU op 1 Load double Store double 0 Integer op Integer op 0
52基本块内的指令级并行 基本块的定义: 直线型代码,无分支;单入口;程序由分支语句连接 基本块构成 循环级并行 for(i=1;i<=1000;i++)X()=X()+s; 计算x)时没有数据相关;可以并行产生1000个数据 问题:在生成代码时会有 Branch指令-控制相关 预测比较容易,但我们必须有预测方案 向量处理机模型 load vectors x and y (up to some machine dependent max then do result-vec= Xvec t yec in a single instruction
2021/2/7 9 5.2 基本块内的指令级并行 • 基本块的定义: – 直线型代码,无分支;单入口;程序由分支语句连接 基本块构成 • 循环级并行 – for (i = 1; i <= 1000; i++) x(i) = x(i) + s; – 计算x(i)时没有数据相关;可以并行产生1000个数据; – 问题:在生成代码时会有Branch指令-控制相关 – 预测比较容易,但我们必须有预测方案 – 向量处理机模型 • load vectors x and y (up to some machine dependent max) • then do result-vec = xvec + yvec in a single instruction
◎简单循环及其对应的汇编程序 for(i=1;<=1000;++) X()=Ⅺ()+S; oop: LD FO, O(R1) F0=vector element ADDd F4,F0, F2 : add scalar from f2 SD O(R1), F4 store result SUBI R1R18 decrement pointer 8B (DW) BNEZ R1, Loop branch R1=zero NOP delayed branch slot 计算机体系结构
2021/2/7 计算机体系结构 10 简单循环及其对应的汇编程序 for (i=1; i<=1000; i++) x(i) = x(i) + s; Loop: LD F0,0(R1) ;F0=vector element ADDD F4,F0,F2 ;add scalar from F2 SD 0(R1),F4 ;store result SUBI R1,R1,8 ;decrement pointer 8B (DW) BNEZ R1,Loop ;branch R1!=zero NOP ;delayed branch slot
FP循环中的相关 Loop D F0,O(R1) Fo=vector element ADDD F4 F0 F2 add scalar from f2 SD 0(R1,F4 store result SUB R1,R1,8 ,decrement pointer &B (DW) BAEZ R1, Loop branch R1l=zero NOP delayed branch slot 产生结果的指令 使用结果的指令 所需延时 FP ALU op Another FP ALU op FP ALU op Store double oad double FP ALU op Load double Store double 32100 Integer op Integer op 计算机体系结构
Loop: LD F0,0(R1) ;F0=vector element ADDD F4,F0,F2 ;add scalar from F2 SD 0(R1),F4 ;store result SUBI R1,R1,8 ;decrement pointer 8B (DW) BNEZ R1,Loop ;branch R1!=zero NOP ;delayed branch slot 2021/2/7 计算机体系结构 11 FP 循环中的相关 产生结果的指令 使用结果的指令 所需延时 FP ALU op Another FP ALU op 3 FP ALU op Store double 2 Load double FP ALU op 1 Load double Store double 0 Integer op Integer op 0