多核程序设计(曲冠南)第四章 指令级并行.pptVIP

多核程序设计(曲冠南)第四章 指令级并行.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 指令级并行 循环级并行性 基本程序块 基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。 程序平均每5~7条指令就会有一个分支。 第四章 指令级并行 循环级并行 循环级并行:使一个循环中的不同循环体并行执行。 开发循环体中存在的并行性 最常见、最基本 是指令级并行研究的重点之一 例如,考虑下述语句: for (i=1; i=500; i=i+1) a[i]=a[i]+s; 每一次循环都可以与其他的循环重叠并行执行; 在每一次循环的内部,却没有任何的并行性。 第四章 指令级并行 循环展开调度基本方法 基本思想:把循环展开后,通过重命名和指令调度来开发更多的并行性。 调度: 通过改变指令在程序中的位置,将相关指令之间的距离加大到不小于指令执行延迟的周期数,这样就可以将相关的指令转化为无关指令。 编译器完成这种指令调度的能力受限于两个特性: 程序固有的指令级并行性; 流水线功能部件的执行延迟。 本节中,我们使用的浮点流水线延迟为: 产生结果的指令 使用结果的指令 延迟(时钟周期数) 浮点计算 另一个浮点计算 3 浮点计算 浮点store(S.D) 2 浮点load(L.D) 浮点计算 1 浮点load(L.D) 浮点store(S.D) 0 第四章 指令级并行 循环展开调度基本方法 假设指令i在前,指令j在后;所谓的“延迟”,是由于发生冲突造成的停顿时间。(采用定向技术,没有结构冲突) 例4.6 对于下面的源代码,转换成MIPS汇编语言,在不进行指令调度和进行指令调度两种情况下,分析其代码一次循环所需的执行时间。 for (i=1; i=1000; i++) x[i] = x[i] + s; 第四章 指令级并行 循环展开调度基本方法 - 实例 把该程序翻译成MIPS汇编语言代码: Loop:L.D F0,0(R1) // 取一个向量元素放入F0 ADD.D F4,F0,F2 // 加上在F2中的标量 S.D F4, 0(R1) // 保存结果 DADDIU R1,R1,#-8 //指针减8(每个数据占8个字节) BNE R1,R2,Loop // 如果R1不等于R2,未结束,继续 其中: 整数寄存器 R1:指向向量中的当前元素,初值为向量中最高端元素的地址) 整数寄存器 R2:8(R2)指向最后一个元素。 浮点寄存器 F2:用于保存常数 s。 第四章 指令级并行 循环展开调度基本方法 - 实例 不进行指令调度的情况下,程序的实际执行情况: 指令流出时钟 Loop: L.D F0,0(R1) 1 (空转) 2 ADD.D F4,F0,F2 3 (空转) 4 (空转) 5 S.D F4, 0(R1) 6 DADDIU R1,R1,# -8 7 (空转) 8 BNE R1,R2,Loop 9 (空转) 10 每个元素的操作需要10个时钟周期,其中5个是空转周期。 第四章 指令级并行 循环展开调度基本方法 - 实例 指令调度以后,程序的执行情况如下: 把DADDIU指令调度到了L.D指令和ADD.D指令之间的“空转”拍。 把S.D指令放到了分支指令的延迟槽中。 对存储器地址偏移量进行调整。 第四章 指令级并行 循环展开调度基本方法 - 实例 Loop: L.D F0,0(R1) (空转) ADD.D F4,F0,F2 (空转) (空转) S.D F4, 0(R1) DADDIU R1,R1,#-8 (空转) BNE R1,R2,Loop (空转) Loop: L.D F0, 0(R1)

文档评论(0)

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

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

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档