- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
*/25 */25 4.4 多指令流出技术 一个时钟周期内流出多条指令, CPI<1。 多指令流出处理器有三种基本结构: 超标量(Superscalar) 每个时钟周期流出的指令数不定,它既可 以通过编译器静态调度,也可以通过记分牌或 Tomasulo算法动态调度, 超流水(Super Pipeline) 将每个功能部件进一步流水化,特别是取 指令或指令流出被分解为多个段,使得一个功 能部件在一拍中可以处理多条指令。 第四章 指令级并行 超长指令字VLIW(Very Long Instruction Word,简记为VLIW) 每个时钟周期流出的指令数是固定的,它 们构成一条长指令,或说是一个混合指令包, 这种处理器目前只能通过编译静态调度。 4.4 多指令流出技术 采用前面假设的流水线延迟,并且采用相同的代 码,即将1个标量和数组相加: 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.4 多指令流出技术 4.4.1 静态超标量技术 在典型的超标量处理器中,每个时钟周期可 流出1到8条指令。 流出的指令必须不相关且满足某些限制条件。 超标量处理器的指令序列可以采用静态调度 或动态调度。 DLX处理器是怎样实现超标量的呢? 假设:每个时钟周期流出两条指令: ① 取(load)指令、存(store)指 令、分支指令或整数运算操作, ② 任意的浮点操作。 4.4 多指令流出技术 1. 要求: 取指令和解码部件都是64位。 编译结果要求指令按要求组合成对,且与64位边 界对齐,整数指令顺序在前。 只有第一条指令流出后才可以流出第二条指令。 如果第二条指令不满足条件就只流出第一条指令。 2. DLX两路超标量指令流的示意图 4.4 多指令流出技术 指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令 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 两路超标量指令执行示意图 4.4 多指令流出技术 3.通过对指令流出部件采用流水技术,可以很大地 提高指令流出的速率,但同时必须采用流水化的 功能部件或多个独立的功能部件。4.并行流出一条整数指令和一条浮点指令,除了一 般的冲突监测机制,只要增加少量的硬件。5.指令相关情况 浮点数据访存指令将使用整数部件,会增 加访存的结构冲突。监测是否存在结构相 关只需检查两条指令的操作码。 浮点寄存器端口的访问冲突: 4.4 多指令流出技术 限制浮点数据存取(访存)指令单独执行。 给每个浮点寄存器设置两个的端口,一个读端口,一条写端口,通过增加资源来消除结构相关。 当指令组合中包含浮点取指令,且后面的浮点指令 与之相关时,硬件必须能够检测出来,从而限制后 面浮点指令的流出。除了这种情况,其它可能存在 的相关检测和单流出流水线是相同的。另外,还需 要添加一些额外的相关专用通路来避免不必要的流 水线空转。 限制超标量流水线的性能发挥的障碍: 4.4 多指令流出技术 取操作指令的结果不能在本周期或下一个周期使用,所以后续三条指令不能使用其结果。 分支延迟也变为三条指令,因为分支指令肯定是指令组合的第一条指令。 例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
文档评论(0)