指令级并行

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因为程序往往平均每5~7条指令就会有一 个分支,而且指令之间还可能存在相关, 所以在基本程序块中能开发的并行性是很 有限的,很可能比基本块的大小要小很多。
为了明显地提高性能,必须跨越多个基本 块开发指令的并行性。
2019/10/25
6
3. 开发指令级并行常用的方法
(1)开发循环级并行
循环级并行(Loop-level parallelism): 循环程序不同迭代之间存在的并行性。
CPI理想即理想CPI,是衡量流水线最高性能 的指标之一。
2019/10/25
4
IPC(Instructions Per Cycle )
IPC:每个时钟周期内完成的指令条数。 IPC是CPI的倒数。 提高IPC的途径之一是减少CPI流水线 。
2019/10/25
5
2. 基本程序块
基本程序块:一段除了入口和出口以外不 包含其他分支的一个线性代码段。
2019/10/25
相关的存在限制了指令级并行(ILP)的开发。
2019/10/25
9
流水线冲突的三种类型:结构冲突、数据冲突、 控制冲突。
结构冲突:由硬件资源冲突造成。
数据冲突:由数据相关和名相关造成。
控制冲突:由控制相关造成。
具体的一次相关是否会导致实际冲突的发生以 及该冲突会带来多长的停顿,根据流水线的属 性而定。
LOGO
第4章 指令级并行
主讲: 顾一禾
2019/10/25
顾一禾 制作 2013 第5版
本章学习内容
指令级并行的基本概念 指令的动态调度 动态分支预测技术 多指令流出技术
2019/10/25
2
4.1 指令级并行
指令之间存在的潜在并行性称为指令级 并行。(ILP:Instruction-Level Parallelism)
程序顺序:由源程序确定的在完全串行方式 下指令的执行顺序。
控制相关并不是一个必须严格保持的关键属性。
当存在控制相关时,在对程序的正确性没有 影响的前提下,可以不遵守控制相关的依赖 关系,执行本来不该执行的指令。
2019/10/25
12
必须保持的最关键的两个属性
要正确地执行程序,必须保持的最关键的两个 属性是:数据流和异常行为。
例: for (i=1; i≤500; i=i+1) a[i]=a[i]+s;
在每一次循环的内部,没有任何的并行性。 每一次循环都可以与其他的循环重叠并行执
行。 开发循环级并行性是增加指令之间并行性的最
简单和最常用的方法。
2019/10/25
7
开发循环级并行的基本技术
采用循环展开技术 采用向量指令和向量数据表示
BEQZ R4,L1
DSUBU R1,R5,R6
L1 :…
OR
R7,R1,R8
OR指令中使用的R1值取决于BEQZ指令分支的是否 成功。即OR与DADDU或DSUBU指令相关。
必须通过保持控制相关,避免对数据流的修改, 以保证数据流的正确。
★DSUBU不能被移到BEQZ之前。
2019/10/25
2019/10/25
Baidu Nhomakorabea
10
解决相关与冲突的方法
① 保持相关,但避免发生冲突。 方法:指令调度,包括静态调度和动态调度。
②通过代码变换,消除相关。
2019/10/25
11
解决相关与冲突时需注意的问题
由于相关的存在,在开发指令级并行时,如果 可能影响到程序的正确性,就必须注意保持程 序顺序。
例:
DADDU
R2,R3,R4
BEQZ
R2,L1
LW
R1,0(R2)
L1 :
如果不保持关于R2的数据相关,程序的执行结果 就会改变。
如果不保持控制相关,把LW指令移到BEQZ之前, 就有可能产生一个新的“访存保护”异常(如果 R2=0)。
2019/10/25
14
数据流:指数据值从其产生者指令到其消费者 指令的实际流动。
保持异常行为:无论怎么改变指令的执行顺序, 都不能改变程序中异常的发生情况。
原来程序中是怎么发生的,改变执行顺序后 还是怎么发生。
可弱化为:指令执行顺序的改变不能导致程 序中发生新的异常。
如果能做到保持程序的数据相关和控制相关, 就能保持程序的数据流和异常行为。
2019/10/25
13
R7,R8,R9
如果已知R4在Skipnext后不再被使用,而且 DSUBU指令不会产生异常,那么就可以把DSUBU 指令移到BEQZ之前。
因为这个移动不会改变数据流。
2019/10/25
18
开发指令的并行性的方法
硬件方法:指令的动态调度、动态分支预测、 多指令流出技术。
软件方法:指令的静态调度、循环展开技术。 软硬件结合方法:显式并行指令计算EPIC。
分支指令使得数据流具有动态性,因为它使 得给定指令的数据可以有多个来源。
仅仅保持数据相关性是不够的,一条指令可 能与多条先前的指令数据相关,程序顺序决 定了哪条指令真正是所需数据的产生者。
只有再加上保持控制顺序,才能够保持程序顺 序。
2019/10/25
15
例:
DADDU R1,R2,R3
2019/10/25
8
(2)解决相关与流水线冲突问题
相关是程序固有的一种属性,它反映了程序中 指令之间的相互依赖关系。
相关的三种类型:数据相关、名相关、控制相 关。
如果两条指令相关,它们就不能并行执行,或 只能部分重叠执行。
由于相关的存在,使得指令流中的下一条指令 不能在指定时钟周期执行,就是发生了流水线 冲突。
16
有时,不遵守控制相关既不影响异常行为, 也不改变数据流。在这种情况下,可以大胆 地进行指令调度,把失败分支中的指令调度 到分支指令之前。
2019/10/25
17
例:
DADDU
R1,R2,R3
BEQZ R12,Skipnext
DSUBU R4,R5,R6
DADDU R5,R4,R9
Skipnext: OR
只有将硬件技术和软件技术互相配合, 才能够最大限度地挖掘出程序中存在的 指令级并行。
2019/10/25
3
1. 流水线处理机的实际CPI
流水线处理机的实际CPI就是理想流水线 的CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突+ 停 顿控制冲突
相关文档
最新文档