篑 第四章指令级并行 41指令级并行的概念 1.流水线的性能受限于流水线中指令之间的相关 性 结构相关 数据相关(写后读RAW读后写WAR写后写 狗 WAW) 控制相关 CP流水线=CP理想+停顿结构相关+停顿写后读+停顿读 后写 +停顿写后写+停顿 控制相关 本章研究的内容:如何消除这些停顿使得进入流水
1. 流水线的性能受限于流水线中指令之间的相关 性: • 结构相关 • 数据相关(写后读RAW,读后写WAR,写后写 WAW) • 控制相关 CPI流水线= CPI理想+停顿结构相关+停顿写后读+停顿读 后写 +停顿写后写+停顿控制相关 本章研究的内容:如何消除这些停顿,使得进入流水 线的指令序列运行时能有更好的并行性 第四章 指令级并行 4.1 指令级并行的概念
篑 2.本章所研究的提高指令级并行的技术 体()循环展开控制相关停顿 条|(态海水词度数塌反 (4)分支预测:控制相关停顿 狗 (5)推断 所有数据/控制相关停顿 (6)多指令流出:提高理想cPI 其他技术:如向量计算机(不在本章讨论) 研究范围:一个基本程序块如一个循环体
2. 本章所研究的提高指令级并行的技术 (1)循环展开: 控制相关停顿 (2)基本流水线调度: 数据写后读停顿 (3)指令动态调度: 各种数据相关停顿 (4)分支预测: 控制相关停顿 (5)推断: 所有数据/控制相关停顿 (6)多指令流出: 提高理想CPI 其他技术: 如向量计算机(不在本章讨论) 研究范围: 一个基本程序块,如一个循环体
3.本章主要针对DLX浮点流水线来进行研究并作如下 的假设: 体 匚产生结果指令使用结果指令停顿周期数 浮点计算 另外的浮点计算3 浮点计算 浮点存操作(SD)_2 浮点取操作①LD)浮点计算 狗 浮点取操作(LD)浮点存操作(SD)|0 而对DLX整型流水线除了分支指令有一个时钟周期 延迟,其余指令没有延迟(为方便起见)
3. 本章主要针对DLX浮点流水线来进行研究,并作如下 的假设: 产生结果指令 使用结果指令 停顿周期数 浮点计算 另外的浮点计算 3 浮点计算 浮点存操作(SD) 2 浮点取操作(LD) 浮点计算 1 浮点取操作(LD) 浮点存操作(SD) 0 而对DLX整型流水线,除了分支指令有一个时钟周期 延迟,其余指令没有延迟(为方便起见)
4.1.1循环展开调度的基本方法 提高指令级并行的最基本方法 (1)指令调度 (2)循环展开 一般由编译器来完成。 指令调度:通过改变指令在程序中的位置,将相关指令 之间的距离加大到不小于指令执行延迟的时 钟数,使相关指令成为实际上的无关指令
4.1.1 循环展开调度的基本方法 提高指令级并行的最基本方法: (1)指令调度 (2)循环展开 一般由编译器来完成。 指令调度:通过改变指令在程序中的位置,将相关指令 之间的距离加大到不小于指令执行延迟的时 钟数,使相关指令成为实际上的无关指令
例:for(i=1;i<=1000;i++) x[]=x[+s; 考虑对应的DLX汇编语言实现 约定:x[0]的内存地址为0(为简单起见) R1的初值为X[1000]的地址 F2中存放的值为常量s LOOP. LD FO,O(RI) ADDD F4 F0-F2 SD0(R1),F4 SUBI RI, R1#8 BNEZ RI LOOP
例: for (i=1; i<=1000; i++) x[i]=x[i] + s; 考虑对应的DLX汇编语言实现. 约定:x[0] 的内存地址为 0 (为简单起见) R1的初值为x[1000]的地址 F2中存放的值为常量 s LOOP: LD F0,0(R1) ADDD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,LOOP