- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 指令级并行
张晨曦 刘依
www.A
微信公众号: arch365
4.1 指令级并行的概念
4.2 指令的动态调度
4.3 动态分支预测技术
4.4 多指令流出技术
4.5 循环展开和指令调度
几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。
(ILP:Instruction-Level Parallelism)
本章研究:如何通过各种可能的技术,获得更多的指令级并行性。
硬件+软件技术
必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。
4.1 指令级并行
4.1.1 指令级并行的概念
4.1 指令级并行
流水线处理机的实际CPI
理想流水线的CPI加上各类停顿的时钟周期数:
CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突 + 停顿控制冲突
理想CPI是衡量流水线最高性能的一个指标。
IPC:Instructions Per Cycle
(每个时钟周期完成的指令条数)
基本程序块
基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。
程序平均每5~7条指令就会有一个分支。
4.1 指令级并行
循环级并行:使一个循环中的不同循环体并行执行。
开发循环体中存在的并行性
最常见、最基本
指令级并行研究的重点之一
例如,考虑下述语句:
for (i=1; i=500; i=i+1)
a[i]=a[i]+s;
每一次循环都可以与其他的循环重叠并行执行;
在每一次循环的内部,却没有任何的并行性。
4.1 指令级并行
最基本的开发循环级并行的技术
循环展开(loop unrolling)技术
采用向量指令和向量数据表示
相关与流水线冲突
相关有三种类型:
数据相关、名相关、控制相关
流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。
流水线冲突有三种类型:结构冲突、数据冲突、控制冲突
4.1 指令级并行
相关是程序固有的一种属性,它反映了程序中指令之间的相互依赖关系。
具体的一次相关是否会导致实际冲突的发生以及该冲突会带来多长的停顿,则是流水线的属性。
可以从两个方面来解决相关问题:
保持相关,但避免发生冲突。
指令调度
通过代码变换,消除相关。
程序顺序:由源程序确定的在完全串行方式下指令的执行顺序。
只有在可能会导致错误的情况下,才保持程序顺序。
4.1 指令级并行
控制相关并不是一个必须严格保持的关键属性。
对于正确地执行程序来说,必须保持的最关键的两个属性是:数据流和异常行为。
保持异常行为是指:无论怎么改变指令的执行顺序,都不能改变程序中异常的发生情况。
即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。
弱化为:指令执行顺序的改变不能导致程序中发生新的异常。
如果我们能做到保持程序的数据相关和控制相关,就能保持程序的数据流和异常行为。
4.1 指令级并行
举例说明
DADDU R2,R3,R4
BEQZ R2,L1
LW R1,0(R2)
L1 :
数据流:指数据值从其产生者指令到其消费者指令的实际流动。
分支指令使得数据流具有动态性,因为它使得给定指令的数据可以有多个来源。
仅仅保持数据相关性是不够的,只有再加上保持控制顺序,才能够保持程序顺序。
4.1 指令级并行
举例:
DADDU R1,R2,R3
BEQZ R4,L1
DSUBU R1,R5,R6
L1 :…
OR R7,R1,R8
有时,不遵守控制相关既不影响异常行为,也不改变数据流。
可以大胆地进行指令调度,把失败分支中的指令调度到分支指令之前。
4.1 指令级并行
举例:
DADDU R1,R2,R3
BEQZ R12,Skipnext
DSUBU R4,R5,R6
DADDU R5,R4,R9
Skipnext:OR R7,R8,R9
静态调度
依靠编译器对代码进行静态调度,以减少相关和冲突。
它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。
通过把相关的指令拉开距离来减少可能产生的停顿。
动态调度
在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。
4.2 指令的动态调度
4.2 指令的动态调度
能够处理一些在编译时情况不明的相关(比如涉及存储器访问的相关),并简化了编
您可能关注的文档
最近下载
- YS-900A-G故障录波及测距装置说明书.pdf VIP
- 建筑幕墙施工与验收规范讲解:课件示例.ppt VIP
- CSC-150数字式母线保护装置(国网六统一版本)说明书.pdf VIP
- 第8课 用制度体系保证人民当家作主 课件 中职高教版中国特色社会主义.pptx
- 丹佛斯双涡轮离心压缩机-应用手册-TT、TG.pdf VIP
- 《建筑幕墙工程施工技术》课件.ppt VIP
- 2023年全国社会保障基金理事会招聘考试真题.docx
- CSC-336C数字式非电量保护装置说明书.pdf VIP
- 中国银行房屋抵押贷款合同7篇.docx VIP
- 中国智能仓储市场调研报告(2025)-AIoT星图研究院.docx
原创力文档


文档评论(0)