指令级并行及其动态开发.docVIP

  1. 1、本文档共99页,可阅读全部内容。
  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文档。上传文档
查看更多
指令级并行及其动态开发

第三章 指令级并行及其动态开发 “谁第一?” “美国。” “谁第二?” “没有第二,先生” 对话发生于观看帆船竞赛的两个人之间,这个后来叫做“美国杯”的帆船竞赛每几年就要举行一次。 灵感来自John Cocke命名的,由IBM公司研制的称为“美国” 的处理器,这个处理机就是第一个采用超标量结构的RS/6000系列微处理器。 3.1 指令级并行:概念及挑战 1985年以来,包括那些嵌入式处理器在内的所有处理器,都使用流水线方式使指令的执行可以重叠进行以提高效率。这种潜在的重叠被称为指令级并行(ILP),因为在这里指令可以并行处理。在本章和下一章中,我们将深入探讨扩展并行思想的一系列技术,这些技术主要表现在增加指令之间的并行度。本章的内容比附录A的内容更加深入,如果你们对附录A中的内容还不够熟悉的话,请先复习其中的内容。 在本章的开始部分,先介绍由数据冒险和控制冒险所带来的一些限制,然后进入我们的主题,学习如何才能通过提高处理器的并行性以最终提高处理器的运算能力。这一小节将介绍很多这两章要用到的基本概念,本章也有一些基础知识并不建立在这一小节上,但这些概念对本章的其他小节和第四章来说也是十分重要的。 提高指令级并行度有两种不同的方法,本章主要介绍动态的和以硬件为主的技术,而静态的和更依赖于软件的一些技术将在下一章中介绍。实际上,这种动态和静态,以硬件为主和以软件为主的划分并不是绝对的,其中的一种技术常常对另一种技术也有用。不过,为了清楚起见,我们还是把他们分开来研究,并在适当的地方会指出那些方法是可以借鉴过来的。 以硬件为主的动态技术被用在以桌面电脑和服务器为主的许多处理器中,包括PentiumⅢ和Pentium4,Athlon,MIPS R10000/12000,Sun UltraSPARCⅢ,PowerPC603、G3、G4和Alpha21264等等。而我们下一章所关注的静态的以软件为主的相关技术则被更多地用在嵌入式处理器中,虽然一些桌面和服务器产品,如IA-64体系和Intel的Itanium也使用了很多这种静态技术。 本章我们将分别从程序和处理器两个方面来讨论它们对指令级并行性的限制。我们还将研究程序结构和硬件结构之间的一些相当重要的映射关系,这对我们理解和掌握某些问题是至关重要的,这些问题包括一个程序实体是否会影响,和在什么情况下会影响处理器的性能。 我们知道,流水线机器的CPI(执行每条指令所用的时钟周期数)等于基本CPI加上各种暂停所使用周期数的和: 流水线CPI = 理想流水线CPI + 结构暂停 + 写读暂停 + 读写暂停 + 写写暂停 + 控制暂停 其中,理想流水线CPI是指可实现的最大指令流量。减少等式右边的每一项,可以减少总的流水线CPI,从而增加IPC(每个时钟周期的指令流量)。在本章中将看到,我们要介绍的增加IPC的技术使得处理结构、数据和控制方面的问题如何显得更为重要。上面的等式描述了本章中将要讨论的用以减少流水线实际CPI的各种技术。图3.1表示一些将要讨论的技术及它们对CPI的影响。 技术 减少等式右边的某项 章节 继续执行和绕行 潜在的数据暂停 A.2 延迟分支和简单分支调度 控制暂停 A.2 基本动态调度(记分板) 由真相关性产生的数据暂停 A.8 重命名的动态调度 数据暂停、反依相关和输出相关产生的暂停 3.2 动态分支预测 控制暂停 3.4 每个周期发射多条指令 理想CPI 3.6 预测 所有数据暂停和控制暂停 3.7 动态内存非二义化 涉及内存的写读暂停 3.2,3.7 循环展开 控制暂停 4.1 基本编译器流水线调度 写读暂停 A.2,4.1 编译器进行相关性分析 理想CPI和数据暂停 4.4 软件流水和路径调度 理想CPI和数据暂停 4.3 编译器预测 理想CPI和数据暂停 4.4 图3.1 附录A、第三章和第四章将要讨论的主要技术及影响到的上面CPI等式中的相关项目。其中,数据暂停是指各种各样的数据冒险造成的暂停,就是写读(先写后读)暂停、读写(先读后写)暂停或写写(写后再写)暂停。 在详细讨论上述技术以前,需对这些技术所涉及到的概念加以解释说明,它们决定了指令级并行性可以被开发的程度。 3.1.1 指令级并行性 在本章和下一章中讨论的所有技术都是用于开发指令序列中的并行性的。从上面可以看出,这种类型的并行性就叫做指令级并行性或ILP(instruction-level parallelism)。在一个基本块(除了入口和出口之外没有其它分支的线性指令序列)中可开发的并行性是很小的。例如,在第三章中看到的定点程序中平均动态转移频率在15%到20%之间,即每4条到7条指令中间将执行一条分支指令。由于这些指令很可能是相互

文档评论(0)

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

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

1亿VIP精品文档

相关文档