第5章(CQReview)指令级并行及其开发——硬件方法浅析.ppt

第5章(CQReview)指令级并行及其开发——硬件方法浅析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 指令级并行及其开发——硬件方法 张晨曦 刘依 曹强 (review) caoqiang@hust.edu.cn;5.1 指令级并行的概念 5.2 相关与指令级并行 5.3 指令的动态调度 5.4 动态分支预测技术 5.5 多指令流出技术;指令级并行:指指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。 (ILP:Instruction-Level Parallelism) 开发ILP的途径有两种 资源重复,重复设置多个处理部件,让它们同时执行相邻或相近的多条指令; 采用流水线技术,使指令重叠并行执行。 本章研究:如何利用各种技术来开发更多的指令级并行 (硬件的方法) ;开发ILP的方法可以分为两大类 主要基于硬件的动态开发方法 基于软件的静态开发方法 流水线处理机的实际CPI 理想流水线的CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突 + 停顿控制冲突 理想CPI是衡量流水线最高性能的一个指标。 IPC:Instructions Per Cycle (每个时钟周期完成的指令条数);5.1 指令级并行的概念;5.1 指令级并行的概念;;5.2 相关与指令级并行;5.2 相关与指令级并行;5.2 相关与指令级并行;5.2 相关与指令级并行;静态调度 依靠编译器对代码进行静态调度,以减少相关和冲突。 它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。 通过把相关的指令拉开距离来减少可能产生的停顿。 动态调度 在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。 ;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;;5.3 指令的动态调度;;;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;;5.3 指令的动态调度;5.3 指令的动态调度;5.3 指令的动态调度;指令流出 浮点运算指令 进入条件:有空闲保留站(设为r) 操作和状态表内容修改: if (Qi[rs] ≠ 0) // 检测第一操作数是否就绪 ? RS[r].Qj ? Qi[rs] ?; //第一操作数没有就绪,进行寄存器换名,即把将产生该操作数的保留站的编号放入当前保留站的Qj。该编号是一个大于0的整数。 else ? RS[r].Vj ? Regs[rs] ; //第一操作数就绪。把寄存器rs // 中的操作数取到当前保留站的Vj。 RS[r].Qj ? 0 ? //置Qj为0,表示当前保留站的Vj中 //的操作数就绪 。 ;if (Qi[rt] ≠ 0) // 检测第二操作数是否就绪 ? RS[r].Qk ? Qi[rt] ; //第二操作数没有就绪,进行寄存器换名,即把将产生该操作数的保留站的编号放入当前保留站的Qk。该编号是一个大于0的整数。 else ? RS[r].Vk ? Regs[rt] ; //第二操作数就绪。把寄存器rt中 //的操作数取到当前保留站的Vk。 RS[r].Qk ? 0 ? // 置Qk为0,表示当前保留站的Vk中

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档