第章 指令级并行.ppt

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

4.4.3 超长指令字技术 依靠编译器在编译时找出指令之间潜在的并行性,并通过指令调度把可能出现的数据冲突减少到最小,最后把能并行执行的多条指令组装成一条很长的指令。 这种指令字经常是100到几百位 控制硬件比较简单 超标量处理机较超长指令字处理机的优点 超标量结构对程序员透明 没有经过编译器优化调度的代码仍然可以运行 4.4.4 多流出处理器受到的限制 程序内在的指令级并行性 最简单、最根本的因素 超标量处理器硬件实现的限制 动态调度的超标量结构需要大量的硬件资源 并且设计复杂、实现困难 超长指令字处理器固有的技术限制 程序代码长度增加 锁步机制导致同步限制 机器代码的不兼容性 显式并行指令计算 EPIC EPIC (Explicitly Parallel Instruction Computing) 结合VLIW和Superscalar的特点,软硬件相互协作 ,提高指令级并行处理能力 设计理念: 在编译期间设计需要的执行计划 编译器选择运行期间才能确定的信息,构造和优化执行计划 将执行计划有效地传递给硬件 IA-64 (Intel Architecture-64) Intel-HP合作开发的、基于EPIC的64位微处理器体系结构。HP更愿意称其为安腾处理器系列结构IPF (Itanium Processor Family Architecture) IA-64的主要特点 显式并行性 编译器与处理器间的协作机制 利用指令级并行度的大量资源 128个整数寄存器、128个浮点寄存器、64个一位判定寄存器、8个分支寄存器和大量应用寄存器 对多个执行部件和存储端口的支持 增强的指令级并行 推测执行(用以减少存储器时延的影响) 判定执行(用以消除分支) 低开销的循环软件流水线操作 分支预测减少分支损耗 改善软件性能 对软件模块的专门支持 高性能浮点结构 特殊多媒体指令 IA-64指令编码格式 128位,3个指令捆绑而成一个指令束(Bundle) 每个指令为41位,称为指令槽(Slot) 另外,有5位模板域(Template) 模板显式指明并行性 程序中以指令组(Group)实现并行语义 IA-64的分支判定(Predication) 允许编译程序同时执行来自多个条件分支的指令,进而消除错误分支产生的延迟 程序中显式指明判定标记,硬件利用64个判定寄存器 IA-64的数据推测(Data Speculation) 允许编译程序将数据读取(Load)提到一个或多个数据存储(Store)之前,即使编译程序无法确定数据读取和存储是否为同一个存储器地址单元 硬件配合先行读取地址表ALAT IA-64的控制推测(Control Speculation) 将存储器操作数读取提到分支之前,并可以延缓异常的处理 硬件配合通用寄存器的附加位NaT和NaTVal 软件流水线(Software Pipelining) 一种重叠执行循环体的软件方法,用以提高循环程序的并行性 Observation: if iterations from loops are independent, then can get more ILP by taking instructions from different iterations Software pipelining: reorganizes loops so that each iteration is made from instructions chosen from different iterations of the original loop 把原来不同循环体间的指令交织在一起形成新的循环体 IA-64的软件流水线 硬件配合循环记数寄存器LC和后序记数寄存器EC、特殊的分支指令和寄存器循环 mov lc=199 // LC=循环次数-1 mov ec=4 // EC=后序阶段+1 mov pr.rot=116 ;; // 设置p16=1,其他判定寄存器=0 L1: (p16) ld4 r32=[r5],4 (p18) add r35=r34,r9 (p19) st4 [r6]=r36,4 br.ctop L1 ;; 安腾处理器结构图 4.5 循环展开和指令调度 在程序的一个基本块(除入口和出口外没有其他分支的顺序指令序列)中可以利用的并行性通常是很小的 为了能够获得更多的性能提高,就必须开发多个基本块之间的指令级并行 常见的基本块是循环体 一次循环体内的指令间并行性很小,但在多次循环体的指令间却往往存在并行性(循环级并行性) 循环展开(loop unrolling)展开循环体若干次,通过换名和指令调度,将循环级并行性转化为指令级并行 指令调度受限于两个特性: 程序固有的指令级

文档评论(0)

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

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

1亿VIP精品文档

相关文档