网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机系统结构-4-指令级并行分解.ppt

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 要求: 取指令和解码部件都是64位。 编译结果要求指令按要求组合成对,且与64位边 界对齐,整数指令顺序在前。 只有第一条指令流出后才可以流出第二条指令。 如果第二条指令不满足条件就只流出第一条指令。 2. DLX两路超标量指令流的示意图 指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令 IF IF ID ID IF IF EX EX ID ID IF IF MEM MEM EX EX ID ID IF IF WB WB MEM MEM EX EX ID ID WB WB MEM MEM EX EX WB WB MEM MEM WB WB 流水线工作情况 图4.16 两路超标量指令执行示意图 3.通过对指令流出部件采用流水技术,可以很大地 提高指令流出的速率,但同时必须采用流水化的 功能部件或多个独立的功能部件。 4.并行流出一条整数指令和一条浮点指令,除了一 般的冲突监测机制,只要增加少量的硬件。 5.指令相关情况 浮点数据访存指令将使用整数部件,会增 加访存的结构冲突。监测是否存在结构相 关只需检查两条指令的操作码。 浮点寄存器端口的访问冲突: 限制浮点数据存取(访存)指令单独执行。 给每个浮点寄存器设置两个的端口,一个读端口,一条写端口,通过增加资源来消除结构相关。 当指令组合中包含浮点取指令,且后面的浮点指令 与之相关时,硬件必须能够检测出来,从而限制后 面浮点指令的流出。除了这种情况,其它可能存在 的相关检测和单流出流水线是相同的。另外,还需 要添加一些额外的相关专用通路来避免不必要的流 水线空转。 限制超标量流水线的性能发挥的障碍: 取操作指令的结果不能在本周期或下一个周期使 用,所以后续三条指令不能使用其结果。 分支延迟也变为三条指令,因为分支指令肯定是 指令组合的第一条指令。 例4.9 下面是前面我们使用的循环程序段,在超标 量DLX流水线上将如何调度? Loop: LD F0,0(R1) ;F0=数组元素 ADDD F4,F0,F2 ;加上在F2中的标量 SD 0(R1),F4 ;存结果 SUBI R1,R1,#8 ;将指针减少8(每个DW) BNEZ R1,Loop ;R1不等于0,转移 解:展开并经过调度的指令序列如图4.17所示。 Loop: LD LD LD LD LD SD SD SD SD SUBI BNEZ SD F0(R1) F6,-8(R1) F10,-16(R1) F14,-24(R1) F18,-32(R1) 0(R1),F4 -8(R1),F8 -16(R1),F12 -24(R1),F16 R1,R1,#40 R1,Loop 8(R1),F20 ADDD ADDD ADDD ADDD ADDD F4,F0,F2 F8,F6,F2 F12,F10,F2 F16,F14,F2 F20,F18,F2 1 2 3 4 5 6 7 8 9 10 11 12 整数指令 浮点指令 时钟周期 超标量流水线上展开的代码每次循环需12个时钟周期,即每个迭代是2.4个时钟周期。而在普通的DLX流水线上,没有调度的迭代1次为9个时钟周期,性能提高了3.75倍;调度后为6个时钟周期,性能提高了2.5倍;展开4次并调度后每个迭代为3.5个时钟周期,性能提高了1.4倍。 6.超标量处理器与超长指令字处理器相比有两个 优点: (1)超标量结构对程序员是透明的,因为处理 器能自己检测下一条指令能否流出,从而 不需要排列指令来满足指令流出; (2)即使是没有经过编译器对超标量结构进行 调度优化的代码或是旧的编译器生成的代 码也可以运行,当然运行的效果不会很好。 要想达到很好的效果,方法之一: 使用动态超标量调度技术。 4.4.2 动态多指令流出技术 扩展Tomasulo算法:支持两路超标量。 即每个时钟周期流出两条指令。 (一条是整数指令,另一条是浮点指令) 1.要求 指令按顺序流向保留站,否则信息记录机制 会太复杂。 将整数寄存器和浮点寄存器分开,只要不使 用相同的寄存器就可同时将一条整数指令和 一条浮点指令送到它们的保留站中去。 限制相关指令的并行执行。 2.有两种方式可以实现两路超

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档