第06章指令级并行-软件方法.pptVIP

  1. 1、本文档共32页,可阅读全部内容。
  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文档。上传文档
查看更多
第06章指令级并行-软件方法

*/32 张晨曦 编著 华中科技大学 计算机学院 2 0 1 3 年 4 月 6.1 指令调度与循环展开 6.2 跨越基本块的静态流水指令调度 6.3 静态多指令流出: VLIW 6.4 显式并行指令计算EPIC 6.5 开发更多的指令级并行 第六章 指令级并行?软件方法 6.1.1 循环展开调度的基本方法 1. 指令调度 通过改变指令在程序中的位置,将相关指 令之间的距离加大到不小于指令执行延迟,将 相关指令转化为无关指令。 指令调度是循环展开的技术基础。 2. 编译器在完成这种指令调度时,受限于以下两 个特性: 程序固有的指令级并行性 流水线功能部件的执行延迟 6.1 指令级并行的概念 6.1 指令级并行的概念 表6.2 假设的流水线延迟 0 浮点数据存操作(SD) 浮点数据取操作(LD) 1 浮点计算 浮点数据取操作(LD) 2 浮点数据存操作(SD) 浮点计算 3 另外的浮点操作 浮点计算 延迟时钟周期数 使用结果指令 产生结果指令 分支指令使用上一条指令的结果作为分支条件, 将要等待一拍 分支指令有一个节拍的延迟槽 例6.1 对于下面的源代码,转换成MIPS汇编语言,在不进行指令调度和进行指令调度两种情况下,分析代码一次循环的执行时间。 for (i=1; i=1000; i++) x[i] = x[i] + s; 6.1 指令级并行的概念 解:(1) 变量分配寄存器 整数寄存器R1:循环计数器,初值为=8000? 中最高端地址元素的地址。 浮点寄存器F2:保存常数S。 假定最低端元素的地址为8。 (2) MIPS汇编语言后的程序 Loop: LD F0,0(R1) /*0(R1)即x的地址*/ ADDD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8/*为什么是8?*/ BNEZ R1,Loop 6.1 指令级并行的概念 (3) 程序执行的实际时钟 根据表6-2中给出的的延迟,实际时钟如下: 指令流出时钟 Loop: LD F0, 0(R1) 1 (空转) 2 ADDD F4, F0 , F2 3 (空转) 4 (空转) 5 SD 0(R1), F4 6 SUBI R1, R1, #8 7 (空转) 8 BNEZ R1, Loop 9 (空转) 10 每个元素的操作需要10个时钟周期,其中5个是空转周期。 6.1 指令级并行的概念 (4) 指令调度以后,程序的执行情况 SD放在分支指令的分支延迟槽中,BNEZ放在了空转周期! 对存储器地址偏移量进行调整 指令流出时钟 Loop: LD F0, 0(R1) 1 SUBI R1, R1 , #8 2 ADDD F4, F0 , F2 3 (空转) 4 BNEZ R1, Loop 5 SD 8(R1), F4 6 一个元素的操作时间从10个时钟周期减少到6个 5个周期是有指令执行的,1个空转周期。 6.1 指令级并行的概念 (5) 例子中的问题及解决方案 只有LD、ADDD和SD这3条指令是有效操作. 占用3个时钟周期 而SUBI、空转和BENZ这3个时钟周期都是附加的循环控制开销。 循环展开技术 多次复制循环体并相应调整展开后的指令和循环结束条件,增加有效操作时间与控制操作时间的比率。 也给编译器进行指令调度带来了更大的空间。 6.1 指令级并行的概念 例6.2 体现循环展开技术的特点 将例6.1中的循环展开成3次得到4个循环体,再对展开后的指令序列在不调度和调度两种情况下,分析代码的性能。 假定R1的初值为32的倍数,即循环 次数为4的倍数。 6.1 指令级

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档