第4章指令级并行(阅读).ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.1 指令级并行 指令级并行的概念 几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。 (ILP:Instruction-Level Parallelism) 本章研究:如何通过各种可能的技术,获得更多的指令级并行性。 硬件+软件技术 必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。 1.流水线处理机的实际CPI 理想流水线的CPI加上各类停顿的时钟周期数: CPI流水线 = CPI理想 + 停顿结构冲突 + 停顿数据冲突 + 停顿控制冲突 理想CPI是衡量流水线最高性能的一个指标。 IPC:Instructions Per Cycle (每个时钟周期完成的指令条数) 2.基本程序块 基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。 程序平均每5~7条指令就会有一个分支。 循环级并行:使一个循环中的不同循环体并行执行。 开发循环体中存在的并行性 最常见、最基本 是指令级并行研究的重点之一 例如,考虑下述语句: for (i=1; i=500; i=i+1) a[i]=a[i]+s; 每一次循环都可以与其他的循环重叠并行执行; 在每一次循环的内部,却没有任何的并行性。 3.最基本的开发循环级并行的技术 循环展开(loop unrolling)技术 采用向量指令和向量数据表示 4. 相关与流水线冲突 相关有三种类型: 数据相关、名相关、控制相关 流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。 流水线冲突有三种类型:结构冲突、数据冲突、控制冲突 相关是程序固有的一种属性,它反映了程序中指令之间的相互依赖关系。 具体的一次相关是否会导致实际冲突的发生以及该冲突会带来多长的停顿,则是流水线的属性。 5. 可以从两个方面来解决相关问题: 保持相关,但避免发生冲突。 指令调度 通过代码变换,消除相关。 6.程序顺序:由源程序确定的在完全串行方式下指令的执行顺序。 必须保持程序顺序 7. 控制相关并不是一个必须严格保持的关键属性。 8. 对于正确地执行程序来说,必须保持的最关键的两个属性是:数据流和异常行为。 保持异常行为是指:无论怎么改变指令的执行顺序,都不能改变程序中异常的发生情况。 即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。 弱化为:指令执行顺序的改变不能导致程序中发生新的异常。 如果我们能做到保持程序的数据相关和控制相关,就能保持程序的数据流和异常行为。 4.2 流水线的动态调度方法(简述) 流水线的静态调度 主要借助软件对指令执行顺序进行调度,减少流水线中因相关冲突而引起的停顿时间。 流水线的动态调度 主要通过硬件重新安排指令的执行顺序,减少流水的停顿。 流水线动态调度的优点 (1)能处理某些在编译时无法知道的相关情况。 (2)能简化编译程序设计。 (3)使代码有可移植性。 动态调度方法的主要缺点是硬件较为复杂。 4.2.1 流水的集中式动态调度 集中式动态调度 利用状态记录控制器(或记分牌 ScoreBoard)在程序执行过程中,对流水线中的各个功能部件的工作状态、进入流水线中的各条指令的工作状态、指令所使用的寄存器情况等进行集中的统一记录和调度。 集中式动态调度依靠硬件在程序运行过程中对可能出现的相关情况加以检测,从而保证流水线中的各个功能部件能最大限度地重叠工作。 集中式动态调度常用于解决乱序方式流水线中的相关冲突。 记分牌目的 记分牌技术的目标: 尽可能早地执行无关指令,在没有数据相关的情况下,达到每个时钟周期执行一条指令。 记分牌电路全盘负责指令的流出、执行以及相关检测。 要发挥指令乱序执行的好处,必须有多条指令同时处于执行阶段,这就要求有多个功能部件或功能部件流水化或两者兼有。 一般,采用多个功能部件。 如:CDC6600具有16个功能部件: 4个浮点部件、5个存储器访问部件、7个整数操作部件。 对于DLX,记分牌技术主要用于浮点部件,因为其他部件的操作延迟很小,可以不计。 DLX的部件是:1个浮点乘法器、1个浮点加法器、1个浮点除法部件和1个整数部件,其中整数部件用于处理所有的存储器访问、分支处理和整数操作。 RISC的超标量机也可以采用类似的方法。 记分牌的三个主要组成部分 指令状态:指明指令所处的阶段 功能部件状态:指出功能部件的工作状态 寄存器结果状态:指出功能部件将要回写结果到寄存器。如果不回写,则为空状态。 DLX记分牌的四级操作 将每条指令的执行按4步处理(主要考虑浮点等功

文档评论(0)

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

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

1亿VIP精品文档

相关文档