《多指令流出技术》PPT课件.ppt_第1页
《多指令流出技术》PPT课件.ppt_第2页
《多指令流出技术》PPT课件.ppt_第3页
《多指令流出技术》PPT课件.ppt_第4页
《多指令流出技术》PPT课件.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.4 多指令流出技术,一个时钟周期内流出多条指令, CPI1。 多指令流出处理器有三种基本结构:,超标量(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.4 多指令流出技术,解:展开并经过调度的指令序列如图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倍。,4.4 多指令流出技术,6.超标量处理器与超长指令字处理器相比有两个 优点: (1)超标量结构对程序员是透明的,因为处理 器能自己检测下一条指令能否流出,从而 不需要排列指令来满足指令流出; (2)即使是没有经过编译器对超标量结构进行 调度优化的代码或是旧的编译器生成的代 码也可以运行,当然运行的效果不会很好。 要想达到很好的效果,方法之一: 使用动态超标量调度技术。,4.4 多指令流出技术,4.4.2 动态多指令流出技术,扩展Tomasulo算法:支持两路超标量。 即每个时钟周期流出两条指令。 (一条是整数指令,另一条是浮点指令) 1.要求,指令按顺序流向保留站,否则信息记录机制 会太复杂。 将整数寄存器和浮点寄存器分开,只要不使 用相同的寄存器就可同时将一条整数指令和 一条浮点指令送到它们的保留站中去。 限制相关指令的并行执行。,4.4 多指令流出技术,2.有两种方式可以实现两路超标量。 (1) 将指令流出段进一步流水化,使指令流出的 速度是基本机器周期的两倍。 (2) 对流出的指令组合进行限制.只有浮点的取 操作指令或是从整数寄存器将数据送入浮点寄 存器的传送操作,才会产生相关而导致两条指 令不能同时执行。如果对流出的指令组合限制 减少,指令组合的复杂度增加,可能出现的相 关情况会更多,对硬件相关检测的要求就会大 提高。,4.4 多指令流出技术,3.使用结果队列可以减少存储器取操作或数据传送 操作对保留站的需求量,可以使等待操作数的存操 作指令提早流出。 4.动态调度对数据传送是最有效的,而静态调度对 寄存器-寄存器操作的代码序列最有效。 通过队列实现存储器操作和数据传送操作,而 脱离对其他功能部件的保留站依赖的结构,称为解 耦(decoupled,也可称为退耦)结构。,4.4 多指令流出技术,例4.10 下面的代码运行于采用Tomasulo算法的两路动态超标量DLX流水线上。现做以下假设: (1)无论是否相关,每个时钟周期能流出一条整 数指令和一条浮点指令; (2)有1个整数部件,用于整数运算和地址计算; 有1个独立的浮点功能部件; (3)指令流出和写结果各占用1个时钟周期; (4)有1个具有独立分支预测能力的分支预测部件, 分支指令只能单独流出,没有分支延迟; (5)因为写结果占用1个周期,所以产生结果的延 迟为:整数运算1个周期,存储器取数操作2 个周期,浮点运算3个周期;,4.4 多指令流出技术,列表表示出循环前面三遍循环各个指令的流出、开始执行、访存和将结果写到CDB的时间。需要分析的源代码为: 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.18所示。,4.4 多指令流出技术,1 1 1 1 1 2 2 2 2 2 3 3 3 3 3,LD ADDD SD SUBI BNEZ LD ADDD SD SUBI BNEZ LD ADDD SD SUBI BNEZ,F0,0(R1) F4,F0,F2 0(R1), F4 R1,R1,#8 R1,Loop F0,0(R1) F4,F0,F2 0(R1), F4 R1,R1,#8 R1,Loop F0,0(R1) F4,F0,F2 0(R1), F4 R1,R1,#8 R1,Loop,流出 1 1 2 2 3 4 4 5 5 6 7 7 8 8 9,执行 2 5 3 4 6 7 10 8 9 11 12 15 13 14 16,访存 3 9 8 14 13 19,写CDB 4 8 5 9 13 10 14 18 15,说明 流出第一条指令 等待LD的结果 等待ADDD的结果 等待SD计算0(R1)的ALU 等待SUBI的结果 等待BNEZ流出和结果 等待LD的结果 0(R1)等待ALU,等待ADDD的结果 等待ALU 等待SUBI的结果 等待BNEZ流出和结果 等待LD的结果 0(R1)等待ALU,等待ADDD的结果 等待ALU 等待SUBI的结果,遍数 指 令,从图中可以看出: 程序基本可以达到3拍流出5条指令, IPC=5/3=1.67条/拍 虽然指令的流出率比较高,但是执行效率并不是很高,16拍共执行15条指令,平均指令执行速度为15/16=0.94条/拍。,4.4 多指令流出技术,4.4.3 超长指令字技术,采用多个独立的功能部件,将多条指令的操作 组装成固定格式的指令包,形成一条非常长的 指令。 超长指令字的格式固定,处理过程简单,采用 超长指令字的处理器所需硬件量比超标量要少。 下面讨论流出通道较宽的超长指令字处理器。,4.4 多指令流出技术,1.超长指令字处理器的指令包括: 两个整数操作、两个浮点操作、两个访存操 作和一个分支操作, 每个操作可能占用16到24位,从而指令长度 达到112到168位。 2.指令中每一个操作字段称为操作槽。 3.超长指令字处理器中功能部件的数量和指令中包 含的操作数量是对应的。 4.假设有一种技术可以产生满足超长指令字要求的 代码段,这个代码段用来构建超长指令字。 5.下面看一个最基本的超长指令字处理器的操作过 程。,4.4 多指令流出技术,例4.11 假设超长指令字每个时钟周期可同时流出两 条访存指令、两条浮点指令和一条整数指令 或分支指令。给出在此处理器上数组元素循 环加一个标量的展开后的代码序列。尽可能 展开循环以消除空操作,忽略分支指令的延 迟槽。 解 代码序列入图4.19所示,展开5遍循环可以 消除空操作。,4.4 多指令流出技术,LD LD LD SD SD SD,F0,0(R1) F10,-16(R1) F18,-32(R1) 0(R1),F4 -16(R1),F12 8(R1),F20,LD LD SD SD,F6,-8(R1) F14,-24(R1) -8(R1),F8 24(R1),F16,ADDD ADDD ADDD,F4,F0,F2 F12,F10,F2 F20,F18,F2,ADDD ADDD,F8,F6,F2 F16,F14,F2,SUBI BNEZ,R1,R1,#40 R1,Loop,访存指令1 访存指令2 浮点指令1 浮点指令2 整数/转移指令,这段程序的运行时间为8个时钟周期,每遍循环平均1.6个时钟周期。8个时钟周期内流出了17条指令,每个时钟周期2.1条。8个时钟周期共有操作槽85=40个,有效槽的比例为42.5%。 功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论