当前位置:文档之家› 第3章-指令级并行及其动态开发

第3章-指令级并行及其动态开发

高等计算机系统结构第3章-指令级并行及其动态开发流水线技术就是指令重叠执行技术,达到加快运算速度的目的。

三种流水线冲突:◆结构冲突(structure hazard):由硬件资源冲突引起(资源冲突)当硬件在指令重叠执行中不能支持指令所有可能的组合时发生的冲突。

(需要更多的硬件资源)◆数据冲突(data hazard):下一条指令要用到上一条指令的结果。

在同时执行的几条指令中,一条指令依赖于前一条指令的数据,却得不到时发出的冲突。

(需要定向,编译器调度)◆控制冲突(control hazard):由转移指令或其他改变PC指令引起.(尽早检测条件,计算目标地址,延迟转移,预测)由于这三种流水线冲突,导致流水线性能降低,不能运作在理想的重叠状态,需要插入停顿周期,从而使流水线性能降低。

指令之间可重叠执行性称为指令级并行性(Instruction Parallelism-ILP)。

因此进一步研究和开发指令之间的并行性,等于拓宽指令重叠执行的可能性,从而能进一步提高流水线的性能。

提高指令级并行度方法:◆流水线动态调度:依赖硬件技术广泛用于桌面电脑和服务去处理器中,包括Pentium III 和Pentium 4,Athlon,MIPS R10000/12000,Sun UltrSPARC III 等◆流水线静态调度:依赖软件技术更多的用于嵌入式处理器中,一些桌面电脑和服务产品也使用,如IA-64系统结构和Intel 的Itanium .术语:◆流水级(pipe stage):流水线由多个流水级组成,通常一条指令由n 级流水级完成。

每个流水级完成指令的部分任务。

◆吞吐量(throughput):单位时间内流出流水线的指令数。

◆机器周期(machine cycle):不同流水线完成指令功能不等,所需时间有长有短,因此设计流水线的关键是合理划分指令功能,使每一流水级完成指令功能的时间大致相等。

机器周期由最长流水级的时间决定,通常等于时钟周期。

第3章指令级并行及其动态开发 3.1 指令级并行概念Visualizing Pipelining第3章指令级并行及其动态开发Visualizing PipeliningI n s t r.O r d e r Time (clock cycles)Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Cycle 1Cycle 2Cycle 3Cycle 4Cycle 6Cycle 7Cycle 5One Memory Port/Structural HazardsI n s t r. O r d e rTime (clock cycles)LoadInstr 1Instr 2Instr 3Instr 4RegALU DMemIfetch RegRegALU DMemIfetch RegRegALU DMemIfetch RegRegALU DMemIfetch Reg Cycle 1Cycle 2Cycle 3Cycle 4Cycle 6Cycle 7Cycle 5RegALU DMemIfetch Reg结构冲突使得必须插入流水气泡I n s t r.O r d e r Time (clock cycles)Load Instr 1Instr 2Stall Instr 3Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Cycle 1Cycle 2Cycle 3Cycle 4Cycle 6Cycle 7Cycle 5Reg A L U DMem Ifetch RegBubble Bubble Bubble Bubble Bubble 改进方法: (1)增加硬件的拷贝数(2)使硬件流水化Data Hazards第3章指令级并行及其动态开发◆Consider the instruction sequence:DADD R1,R2,R3DSUB R4,R1,R3AND R6,R1,R7OR R8,R1,R9XOR R10,R1,R11◆The result in R1is produced after itis required by the last threeinstructions.Data Hazard on R1第3章指令级并行及其动态开发I n s t r.O r d e r DADD R1,R2,R3DSUB R4,R 1,R3AND R6,R 1,R7OR R8,R 1,R9XOR R10,R 1,R11Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Reg A L U DMem Ifetch Reg Time (clock cycles)IF ID/RF EX MEMWB◆RAW(Read after write):先写后读相关如:I: ADD R1,R2,R3J: SUB R4,R1,R3J指令读R1,但I指令还没将结果写入R1最普遍的一种数据冲突。

可以采用旁路机构克服(但不是所有的数据冲突可采用旁路的方法解决)。

◆WAW(Write after write) :写写相关如:I: SUB R1,R4,R3J: ADD R1,R2,R3K: MUL R6,R1,R7这种数据冲突主要出现在写操作过程多于一个流水线机器中,或前一条指令插入Stall,而后面指令继续执行下去的情况。

(即各指令在流水线中所需级数不同时引起WAW)◆WAR(Write after read):先读后写相关如:I: SUB R4,R1,R3J: ADD R1,R2,R3K: MUL R6,R1,R7J指令写R1在I指令读R1前完成,导致I指令读出一个错误的新值这种冲突出现在某些指令写结果较早,而某些指令读源操作数较迟的情况。

因为流水线的自然结构是指令读操作数在写操作数之前,因此种类冲突很少。

以下情形可出现WAR冲突复杂指令支持自动增量的寻址模式需要较迟读操作指令乱序执行使用旁路减少数据冲突引起的停顿(1)第3章指令级并行及其动态开发Minimizing Data Hazard Stalls By Forwarding ◆Forwarding also called bypassing or short-circuiting .◆Forwarding looks at where a result isactually generated, and where it is actually needed, and connects those points in the pipeline.(旁路思想即把结果直接送到需要它的功能部件)Forwarding to Avoid Data Hazard第3章指令级并行及其动态开发Time (clock cycles)I n s t r.O r d e rDADD R 1,R2,R3DSUB R4,R 1,R3AND R6,R 1,R7OR R8,R 1,R9XOR R10,R 1,R11Reg A L UDMemIfetch RegReg A L UDMemIfetch RegReg A L UDMemIfetch RegReg A L UDMemIfetch RegReg A L UDMemIfetch Reg从EX/MEM 和MEM/WB 流水线寄存器到DSUB 和AND 的输入被旁路到ALU 部件的第一个输入端。

OR 操作通过旁路接收数据并非所有的数据冲突可采用旁路的方法解决。

LD R1,0(R2)DSUB R4,R1,R5AND R6,R1,R7OR R8,R1,R9R1最早等到第四拍MEM 结束,才能得到.(即才能从Data Memory 读入,存入暂存器)DSUB 所用的R1最迟在第三拍EX 开始是要准备好,与LD 相差一拍Time (clock cycles)I n s t r.O r d e r LD R1, 0(R2)DSUB R4,R1,R6AND R6,R1,R7OR R8,R1,R9RegALU DMemIfetch RegRegALUDMemIfetch RegRegALUDMemIfetch RegRegALU DMemIfetch Reg说明:这里和结构冲突有些不一样,插入的气泡没有直接影响指令的取入,气泡仅使DSUB 指令进入EX 级推迟一个流水节拍。

气泡是纵向冒出的,造成第4个流水节拍没有启动,而第6个流水节拍时也没有结束指令。

Time (clock cycles)OR R8,R 1,R9I n s t r.O r d e rLD R1, 0(R2)DSUB R4,R1,R6AND R6,R 1,R7Reg A L UDMemIfetch RegRegIfetch A L UDMemRegBubbleIfetchA L UDMemRegBubbleReg Ifetch A L UDMemBubbleRegDependences◆两条指令是相互独立的,则是并行的,其执行顺序允许重排;◆两条指令是相关的,则不是并行的,其执行顺序不允许重排;◆明确指令相关性对 调度的可行性程序并行程度的多少如何利用程序的并行性至关重要。

◆存在三类相关性 数据相关性 名字相关性 控制相关性第3章指令级并行及其动态开发数据相关性(data dependences)◆定义:指令j 相对于指令i 存在数据相关性,则下列条件之一必定成立:指令i 产生的结果被指令j 所用,或指令j 与指令k 数据相关,以及指令k 与指令i 数据相关。

(即存在相关)◆相关性是程序的一种性质◆存在相关性仅仅指出存在冲突(hazard)的可能性,但是否会造成可检测到的冲突,以及是否会造成真正的停顿则是流水线组织的性质。

◆相关性的主要特性相关性预示存在冲突的可能性; 相关性决定必须遵循的计算顺序;相关性决定可被利用的并行性的上限。

第3章指令级并行及其动态开发数据相关性(2)◆消除数据相关性的方法,即克服数据相关性对指令级并行性的限制的方法有两类:保持相关性不变,但设法避免造成冲突----调度法调度法。

即调度指令,将不相关指令插入停顿周期,或改变指令顺序,达到避免出现停顿,又保持相关性不变。

通过变换代码消除相关性----代码变换法代码变换法。

相关主题