体系结构第4章 第5讲.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 指令级并行 主要内容 4.1 指令级并行的概念 4.2 指令的动态调度 4.3 控制相关的动态解决技术 4.4 多指令流出技术 4.4 多指令流出技术 多指令流出处理器 实现一个时钟周期内流出多条指令时 达到CPI小于1 多流出处理器2种基本结构 超标量(Superscalar) 超标量每个时钟周期流出的指令数不定 可以编译器静态调度,也可以硬件动态调度 超长指令字( VLIW, Very long Instruction Word) 每个时钟周期流出的指令数是固定的,只能通过编译静态调度 超标量处理机 超标量处理机的原型来自于IBM实验室的“America”处理器 RS/6000第一个采用超标量技术 现在,几乎所有高性能处理器都是用该技术 超标量处理机的硬件支持每个时钟周期发出1-8条不存在相关的指令 如果指令流中的指令相关或不满足限制条件,则只能流出这条指令前面的指令,因此超标量处理器流出的指令数是不定的 我们的超标量处理机 假设有这样一个简单的超标量处理器,每个时钟周期它可以流出两条指令 一条指令可以是取指令、存指令、分支指令或整数运算操作 另一条指令可以是任意的浮点操作 这种配置与HP 7100结构类似 超标量处理机的理想执行情况 超标量处理机的技术问题 每个时钟周期流出两条指令意味着取指令和解码部件都是64位 假设:指令按要求组合成对,且与 64位边界对其,整数指令顺序在前 需要使得浮点部件流水化或增加相关部件来减少结构相关 另一个限制超标量流水线性能发挥的障碍是取操作和分支操作的延迟 分支指令肯定是指令组合的第一条指令,影响配对指令和后续两条指令,分支延迟也变为3条指令 超标量:例子执行情况 在超标量流水线上对上述代码进行调度,以获取更多地指令机并行度 超标量:例子结果分析 每次循环需12个时钟周期 每个迭代时2.4个时钟周期 前面在普通的流水线上,通过循环展和调度,可以达到每个迭代为3.5个时钟周期 超标量可以获得更好地性能,代价是硬件复杂性大幅度增加 4.4.3超长指令字技术 一台超标量机器每周期能够流出4-8条指令 由于必须要用硬件分析指令间的相关,为其实现带来了困难 另一种选择:长指令字(LIW,Long Instruction Word)或称为超长指令字(VLIW,Very Long Instruction Word)体系结构 第一种商用LIW机器是AP-120B,由Floating Point Systems开发 FPS-164是较新的机器,它的每个指令字含有对应于10个不同功能单元的10条指令 VLIW基本机构 VLIW采用多个独立的功能单元,多个不同的操作封装在一条长指令字中,每个功能单元在VLIW指令中都有一定的对应区域 一般每个功能单元占用16-24位 例如:2个整数、2个浮点、2个访存、1个分支,则该指令的长度为112-168位 VLIW硬件只是简单地将指令字中对应的部分送给各个功能单元,功能单元在哪一个时钟周期执行什么操作由编译器来确定 如果某个功能单元在某个周期没有任务,则执行NOP指令 VLIW例子 再次使用先前在解释循环展开及超标量机器时使用过的那段循环代码,来解释VLIW如何工作这一次,我们将循环展开n个副本 VLIW机器每条指令字包含 两个访存操作 两个浮点操作 一个整数或分支操作 得到如下指令序列 VLIW例子的指令执行情况,n=5 执行情况,n=7 结果分析 9拍产生7个结果 每个结果1.29拍 比前面的超标量,每个结果2.4拍,快接近2倍 9拍里面执行了23个操作 2.5操作/拍 指令槽利用率不高, 只有51% (23/45) 使用大量寄存器 7个循环,共计使用2×7+1=15个64位浮点寄存器 没有空指令的调度, n=3 8拍3个结果,每个结果2.66拍 指令槽利用率: 11/40 = 27.5% 寄存器:3×2+1=7个64位浮点寄存器 尽可能指令空间充满的调度, n=10 10拍10个结果,每个结果使用1拍 指令槽利用率:36/50 =72% 寄存器需求:10×2+1=23个64位浮点寄存器 VLIW的技术难题 第一,从线性代码片段中产生足够的操作需要进行激进的循环展开,这增大了代码大小 第二,无论指令是否被充满,没有被使用的功能单元也在指令字编码过程中占据了相应的位。将近一半的指令是被浪费掉的 在主存中压缩指令,在cache中解压缩指令 第三,VLIW带来了二进制代码兼容性问题 采用模拟的方法解决 第四章指令级并行总结 4.1 指令级并行的概念 循环展开调度的基本方法 4.2 指令的动态调度 记分牌 Tomasulo算法 4.3 控制相关的动态解决技术 分支预测缓冲 分支目标缓冲 4.4 多指令流出技术 超标量技术 超长指令字技术 谢谢! 计算机体

文档评论(0)

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

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

1亿VIP精品文档

相关文档