第七章指令级并行.pdf

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章指令级并行

第四章 指令级并行 4.1 指令级并行的概念 1. 流水线的性能受限于流水线中指令之间的相关 性: • 结构相关 • 数据相关(写后读RAW,读后写WAR,写后写WAW) • 控制相关 CPI流水线= CPI理想+停顿结构相关+停顿写后读+停顿读后写 +停顿写后写+停顿控制相关 本章研究的内容:如何消除这些停顿,使得进入流 水线的指令序列运行时能有更好的并行性 2. 本章所研究的提高指令级并行的技术 (1)循环展开: 控制相关停顿 (2)基本流水线调度: 数据写后读停顿 (3)指令动态调度: 各种数据相关停顿 (4)分支预测: 控制相关停顿 (5)推断: 所有数据/控制相关停顿 (6)多指令流出: 提高理想CPI 其他技术: 如向量计算机(不在本章讨论) 研究范围: 一个基本程序块,如一个循环体 3. 本章主要针对DLX浮点流水线来进行研究,并作如下 的假设: 产生结果指令 使用结果指令 停顿周期数 浮点计算 另外的浮点计算 3 浮点计算 浮点存操作(SD) 2 浮点取操作(LD) 浮点计算 1 浮点取操作(LD) 浮点存操作(SD) 0 而对DLX整型流水线,除了分支指令有一个时钟周期 延迟,其余指令没有延迟 (为方便起见)。 4.1.1 循环展开调度的基本方法 提高指令级并行的最基本方法: (1)指令调度 (2)循环展开 一般由编译器来完成。 指令调度:通过改变指令在程序中的位置,将相关指令 之间的距离加大到不小于指令执行延迟的时 钟数,使相关指令成为实际上的无关指令。 例: for (i=1; i=1000; i++) x[i]=x[i] + s; 考虑对应的DLX汇编语言实现. 约定:x[0] 的内存地址为 0 (为简单起见) R1的初值为x[1000]的地址 F2中存放的值为常量 s LOOP: LD F0,0(R1) ADDD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,LOOP 实际运行: (1) LOOP: LD F0,0(R1) (2) (空转) (3) ADDD F4,F0,F2 (4) (空转) (5) (空转) (6) SD 0(R1),F4 (7)

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档