资源描述:
《多指令流出技术VLIW和Superscalar简介.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、多指令流出技术:VLIW和Superscalar简介周学海xhzhou@ustc.edu.cnReview#1/2Reservationsstations:寄存器重命名,缓冲源操作数避免寄存器成为瓶颈避免了Scoreboard中无法解决的WAR,WAWhazards允许硬件做循环展开不限于基本块(IU先行,解决控制相关)贡献DynamicschedulingRegisterrenamingLoad/storedisambiguation360/91后PentiumII;PowerPC604;MIPSR10000;HP-PA8000;Alpha21
2、264使用这种技术动态调度方案可以用硬件动态完成循环展开通过重命名机制来消除WAR和WAW相关ReorderBuffer:提供了撤销指令运行的机制指令以发射序存放在ROB中指令顺序提交分支预测对提高性能是非常重要的推断执行是利用了ROB撤销指令执行的机制Superscalar和VLIW:CPI<1(IPC>1)小结#2/2如何使CPI<1(1/2)前面所述的各种技术主要通过减少数据相关和控制相关,使得CPI=1(CPI接近1)是否能够使CPI<1?两种基本方法Superscalar:每个时钟周期所发射的指令数不定(1-8条)由编译器或硬件完成调度
3、IBMPowerPC,SunUltraSparc,DECAlpha,HP8000该方法对目前通用计算是最成功的方法新的概念InstructionsPerClock(IPC)vs.CPI如何使CPI<1?(2/2)另一种方法(Very)LongInstructionWords(V)LIW:每个时钟周期流出的指令数(操作)固定(4-16)由编译器调度,实际上由多个单操作指令构成一个超长指令目前比较成功的应用于DSP,多媒体应用1999/2000HP和Intel达成协议共同研究VLIWIntelArchitecture-64(Merced/A-64)6
4、4-bitaddressStyle:“ExplicitlyParallelInstructionComputer(EPIC)”用于多发射处理器的五种主要方法SuperscalarDLXSuperscalarDLX:每个时钟周期发射2条指令,1条FP指令和一条其他指令–每个时钟周期取64位;左边为Int,右边为FP–只有第一条指令发射了,才能发射第二条–需要更多的寄存器端口,因为如果两条指令中第一条指令是对FP的load操作(通过整数部件完成),另一条指令为浮点操作指令,则都会有对浮点寄存器文件的操作TypePipeStagesInt.instru
5、ctionIFIDEXMEMWBFPinstructionIFIDEXMEMWBInt.instructionIFIDEXMEMWBFPinstructionIFIDEXMEMWBInt.instructionIFIDEXMEMWBFPinstructionIFIDEXMEMWB原来1cycleload延时在Superscalar中扩展为3条指令Review:具有最小stalls数的循环展开优化1Loop:LDF0,0(R1)2LDF6,-8(R1)3LDF10,-16(R1)4LDF14,-24(R1)5ADDDF4,F0,F26ADDDF8,
6、F6,F27ADDDF12,F10,F28ADDDF16,F14,F29SD0(R1),F410SD-8(R1),F811SUBIR1,R1,#3212SD16(R1),F1213BNEZR1,LOOP14SD8(R1),F16;8-32=-2414clockcycles,or3.5periterationLDtoADDD:1CycleADDDtoSD:2Cycles采用Superscalar技术的循环展开IntegerinstructionFPinstructionClockcycleLoop:LDF0,0(R1)1LDF6,-8(R1)2LD
7、F10,-16(R1)ADDDF4,F0,F23LDF14,-24(R1)ADDDF8,F6,F24LDF18,-32(R1)ADDDF12,F10,F25SD0(R1),F4ADDDF16,F14,F26SD-8(R1),F8ADDDF20,F18,F27SD-16(R1),F128SD-24(R1),F169SUBIR1,R1,#4010BNEZR1,LOOP11SD+8(R1),F2012循环展开5次以消除延时(+1duetoSS)12clocks,or2.4clocksperiteration(1.5X)多发射的问题如果Integer和F
8、P操作很容易区分组合,那么对这类程序在下列条件满足的情况下理想CPI=0.5:程序中50%为FP操作没有任何相关如果在同一时刻发射的指令