多指令流出技术.ppt

上传人:本田雅阁 文档编号:2573816 上传时间:2019-04-11 格式:PPT 页数:25 大小:345.51KB
返回 下载 相关 举报
多指令流出技术.ppt_第1页
第1页 / 共25页
多指令流出技术.ppt_第2页
第2页 / 共25页
多指令流出技术.ppt_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《多指令流出技术.ppt》由会员分享,可在线阅读,更多相关《多指令流出技术.ppt(25页珍藏版)》请在三一文库上搜索。

1、4.4 多指令流出技术,一个时钟周期内流出多条指令, CPI1。 多指令流出处理器有三种基本结构:,超标量(Superscalar) 每个时钟周期流出的指令数不定,它既可 以通过编译器静态调度,也可以通过记分牌或 Tomasulo算法动态调度, 超流水(Super Pipeline) 将每个功能部件进一步流水化,特别是取 指令或指令流出被分解为多个段,使得一个功 能部件在一拍中可以处理多条指令。,第四章 指令级并行,超长指令字VLIW(Very Long Instruction Word,简记为VLIW) 每个时钟周期流出的指令数是固定的,它 们构成一条长指令,或说是一个混合指令包, 这种处理

2、器目前只能通过编译静态调度。,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处理器是怎样实现

3、超标量的呢? 假设:每个时钟周期流出两条指令: 取(load)指令、存(store)指 令、分支指令或整数运算操作, 任意的浮点操作。,4.4 多指令流出技术,1. 要求:,取指令和解码部件都是64位。 编译结果要求指令按要求组合成对,且与64位边 界对齐,整数指令顺序在前。 只有第一条指令流出后才可以流出第二条指令。 如果第二条指令不满足条件就只流出第一条指令。,2. DLX两路超标量指令流的示意图,4.4 多指令流出技术,指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令 整数指令 浮点指令,IF IF,ID ID IF IF,EX EX ID ID IF IF,MEM ME

4、M 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.指令相关情况,浮点数据访存指令将使用整数部件,会增 加访存的结构冲突。监测是否存在结构相 关只需检查两条指令的操作码。 浮点寄存器端口

5、的访问冲突:,4.4 多指令流出技术,限制浮点数据存取(访存)指令单独执行。 给每个浮点寄存器设置两个的端口,一个读端口,一条写端口,通过增加资源来消除结构相关。,当指令组合中包含浮点取指令,且后面的浮点指令 与之相关时,硬件必须能够检测出来,从而限制后 面浮点指令的流出。除了这种情况,其它可能存在 的相关检测和单流出流水线是相同的。另外,还需 要添加一些额外的相关专用通路来避免不必要的流 水线空转。 限制超标量流水线的性能发挥的障碍:,4.4 多指令流出技术,取操作指令的结果不能在本周期或下一个周期使 用,所以后续三条指令不能使用其结果。 分支延迟也变为三条指令,因为分支指令肯定是 指令组合

6、的第一条指令。,例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(

7、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次并

8、调度后每个迭代为3.5个时钟周期,性能提高了1.4倍。,4.4 多指令流出技术,6.超标量处理器与超长指令字处理器相比有两个 优点: (1)超标量结构对程序员是透明的,因为处理 器能自己检测下一条指令能否流出,从而 不需要排列指令来满足指令流出; (2)即使是没有经过编译器对超标量结构进行 调度优化的代码或是旧的编译器生成的代 码也可以运行,当然运行的效果不会很好。 要想达到很好的效果,方法之一: 使用动态超标量调度技术。,4.4 多指令流出技术,4.4.2 动态多指令流出技术,扩展Tomasulo算法:支持两路超标量。 即每个时钟周期流出两条指令。 (一条是整数指令,另一条是浮点指令) 1.

9、要求,指令按顺序流向保留站,否则信息记录机制 会太复杂。 将整数寄存器和浮点寄存器分开,只要不使 用相同的寄存器就可同时将一条整数指令和 一条浮点指令送到它们的保留站中去。 限制相关指令的并行执行。,4.4 多指令流出技术,2.有两种方式可以实现两路超标量。 (1) 将指令流出段进一步流水化,使指令流出的 速度是基本机器周期的两倍。 (2) 对流出的指令组合进行限制.只有浮点的取 操作指令或是从整数寄存器将数据送入浮点寄 存器的传送操作,才会产生相关而导致两条指 令不能同时执行。如果对流出的指令组合限制 减少,指令组合的复杂度增加,可能出现的相 关情况会更多,对硬件相关检测的要求就会大 提高。

10、,4.4 多指令流出技术,3.使用结果队列可以减少存储器取操作或数据传送 操作对保留站的需求量,可以使等待操作数的存操 作指令提早流出。 4.动态调度对数据传送是最有效的,而静态调度对 寄存器-寄存器操作的代码序列最有效。 通过队列实现存储器操作和数据传送操作,而 脱离对其他功能部件的保留站依赖的结构,称为解 耦(decoupled,也可称为退耦)结构。,4.4 多指令流出技术,例4.10 下面的代码运行于采用Tomasulo算法的两路动态超标量DLX流水线上。现做以下假设: (1)无论是否相关,每个时钟周期能流出一条整 数指令和一条浮点指令; (2)有1个整数部件,用于整数运算和地址计算;

11、有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)

12、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

13、 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条指令

14、, IPC=5/3=1.67条/拍 虽然指令的流出率比较高,但是执行效率并不是很高,16拍共执行15条指令,平均指令执行速度为15/16=0.94条/拍。,4.4 多指令流出技术,4.4.3 超长指令字技术,采用多个独立的功能部件,将多条指令的操作 组装成固定格式的指令包,形成一条非常长的 指令。 超长指令字的格式固定,处理过程简单,采用 超长指令字的处理器所需硬件量比超标量要少。 下面讨论流出通道较宽的超长指令字处理器。,4.4 多指令流出技术,1.超长指令字处理器的指令包括: 两个整数操作、两个浮点操作、两个访存操 作和一个分支操作, 每个操作可能占用16到24位,从而指令长度 达到112

15、到168位。 2.指令中每一个操作字段称为操作槽。 3.超长指令字处理器中功能部件的数量和指令中包 含的操作数量是对应的。 4.假设有一种技术可以产生满足超长指令字要求的 代码段,这个代码段用来构建超长指令字。 5.下面看一个最基本的超长指令字处理器的操作过 程。,4.4 多指令流出技术,例4.11 假设超长指令字每个时钟周期可同时流出两 条访存指令、两条浮点指令和一条整数指令 或分支指令。给出在此处理器上数组元素循 环加一个标量的展开后的代码序列。尽可能 展开循环以消除空操作,忽略分支指令的延 迟槽。 解 代码序列入图4.19所示,展开5遍循环可以 消除空操作。,4.4 多指令流出技术,LD

16、 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个时钟

17、周期。8个时钟周期内流出了17条指令,每个时钟周期2.1条。8个时钟周期共有操作槽85=40个,有效槽的比例为42.5%。 功能部件使用效率不高是超长指令字的不足之一。,4.4.4 多流出处理器受到的限制,1.处理器中指令流出能力是有限的,它主要受 以下方面的影响: (1) 程序内在的指令级并行性; (最简单、最根本的因素) 所需要的无关指令数等于流水线的深度 乘以可以同时工作的功能部件数。 (2) 硬件实现的困难; 多指令流出的处理器需要大量的硬件资源。 (3) 超标量和超长指令字处理器固有的技术限制。,4.4 多指令流出技术,2. 设计多流出处理器的主要难点:,访存的开销 硬件的复杂性 编译器技术的难度,4.4 多指令流出技术,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1