计算机系统结构精品教学(吉林大学)第4章 指令级并行.pptxVIP

计算机系统结构精品教学(吉林大学)第4章 指令级并行.pptx

  1. 1、本文档共132页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 指令级并行小节章节名主要内容4.1?指令级并行的概念指令级并行?4.2?指令的动态调度动态调度思想,Tomasulo算法?4.3?动态分支预测技术什么是动态分支预测,分支历史表,分支目标缓冲器,基于硬件的前瞻技术?4.4?多指令流出技术自学?4.5循环展开和指令调度自学4.1 指令级并行4.1.1 指令级并行的概念几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。 (ILP:Instruction-Level Parallelism)开发指令级并行的方法:静态方法—软件动态方法—硬件4.1 指令级并行目标 – 降低流水线处理机的实际CPI理想流水线的CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突 + 停顿控制冲突理想CPI是衡量流水线最高性能的一个指标。概念 -- 基本程序块基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。程序平均每5~7条指令就会有一个分支。跨基本块开发指令级并行4.1 指令级并行方法1 — 从循环入手:使一个循环中的不同循环体并行执行。开发循环体中存在的并行性是指令级并行研究的重点之一例如,考虑下述语句: for (i=1; i=500; i=i+1) a[i]=a[i]+s;每一次循环都可以与其他的循环重叠并行执行;在每一次循环的内部,却没有任何的并行性。 最基本的开发循环级并行的技术循环展开(loop unrolling)技术采用向量指令和向量数据表示4.1 指令级并行方法2 – 从相关与流水线冲突入手相关是程序固有的一种属性,它反映了程序中指令之间的相互依赖关系;具体的一次相关是否会导致实际冲突的发生,以及该冲突会带来多长的停顿,则是流水线的属性。可以从两个方面来解决相关问题:保持相关,但避免发生冲突 ,如 指令调度通过代码变换,消除相关 ,如 换名技术尽可能开发并行性,在影响程序正确性的情况下保持程序顺序。程序顺序:由源程序确定的在完全串行方式下指令的执行顺序。4.1 指令级并行对于控制相关 -- 并不是一个必须严格保持的关键属性。重点:对于正确地执行程序来说,必须保持的最关键的两个属性是:数据流和异常行为。保持异常行为是指:无论怎么改变指令的执行顺序,都不能改变程序中异常的发生情况。即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。上述条件经常被弱化为:指令执行顺序的改变不能导致程序中发生新的异常。如果我们能做到保持程序的数据相关和控制相关,就能保持程序的数据流和异常行为。 4.1 指令级并行例1: DADDUR2,R3,R4 BEQZR2,L1 //R2==0, 跳到L1. LW R1,0(R2) L1 :。。。如果把DADDU调度到BEQZ之后,程序结果就会改变。如果LW调度到BEQZ之前,可能会导致访存保护异常。4.1 指令级并行数据流:指数据值从其产生者指令到其消费者指令的实际流动。 分支指令使得数据流具有动态性,因为它使得给定指令的数据可以有多个来源。仅仅保持数据相关性是不够的,只有再加上保持控制顺序,才能够保持程序顺序。 数据相关+实际控制顺序 = 数据流4.1 指令级并行例2: DADDUR1,R2,R3 BEQZ R4,L1 DSUBUR1,R5,R6 L1 :… OR R7,R1,R84.1 指令级并行 有时,不遵守控制相关既不影响异常行为,也不改变数据流。可以大胆地进行指令调度,把失败分支中的指令调度到分支指令之前。 举例: DADDU R1,R2,R3 BEQZ R12,Skipnext DSUBU R4,R5,R6 DADDU R5,R4,R9Skipnext:OR R7,R8,R94.2 指令的动态调度静态调度依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。通过把相关的指令拉开距离来减少可能产生的停顿。动态调度在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。4.2 指令的动态调度 优点:能够处理一些在编译时情况不明的相关(比如涉及到存储器访问的相关),并简化了编译器;能够使本来是面向某一流水线优化编译的代码在其他的流水线(动态调度)上也能高效地执行。以硬件复杂性的显著增加为代价4.2 指令的动态调度4.2.1 动态调度的基本思想 到目前为止我们所使用流水线的最大的局限性:指令必须按序流出和执行考虑下面一段代码:DIV.D F4,F0,F2SUB.D F10,F4,F6 ADD.D F12,F6,F14 SUB.D指令与DIV.D指令关于F4相关,导致流水线停顿。 ADD.D指令与流水线中的任何指令都没有关系,但也因此受

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档