ComputerArchitectureSpring20161计算机体系结构Lesson3.指令集的实现与流水线结构讲课教师:韩军,周晓方复旦大学微电子学院ComputerArchitectureSpring20162内容提要2.指令处理过程的RTL描述3.流水线结构的作用及其实现1.实现指令的基本数据通路5.中断、异常及其处理方法4.流水线冲突及其解决方法ComputerArchitectureSpring2016流水线的基本概念3ComputerArchitectureSpring20164ComputerArchitectureSpring20165ComputerArchitectureSpring20166ComputerArchitectureSpring2016流水线技术的定义所谓流水技术,是指将一个重复的时序过程,分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。t1t2t3t4t5t6t7时间空间工序1工序2工序3工序4描述流水线工作的时空图7ComputerArchitectureSpring2016流水线的特点1、流水过程由多个相联系的子过程组成,每个子过程称为流水线的“级”或“段”。流水线的段数也称为流水线的“深度”或“流水深度”;2、每个子过程由专用的功能段实现;3、各个功能段所需时间应尽量相等,否则,时间长的功能段将成为流水线的瓶颈,会造成流水线的“堵塞”和“断流”。这个时间一般为一个时钟周期(拍)或一个机器周期;4、流水线需要有“填充时间”(第一个任务流出结果所需的时间),在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果;5、流水技术适合于大量重复的时序过程,只有输入端能连续地提供任务,流水线的效率才能充分发挥。8ComputerArchitectureSpring2016流水线的分类可按不同的观点进行分类:1、单功能流水线和多功能流水线。(按功能)2、静态流水线和动态流水线(按同一时间段的连接方式)3、部件级、处理机级及处理机间流水线(按流水级别)4、标量流水处理机和向量流水处理机(按数据表示)5、线性流水线和非线性流水线(按是否有反馈)9ComputerArchitectureSpring2016单功能流水线求阶差对阶相加规格化单功能流水线输入相乘累加输出求阶差对阶相加规格化输入输出23451678多功能流水线(TIASC)求阶差对阶相加规格化输入输出单功能流水线输入相乘累加输出这些没有实际操作的节拍也要流水10ComputerArchitectureSpring2016静态流水线123……n-1n123……n-1n123……n-1n123……n-1n123……n-1n123……n-1n一二三四一二三一二一浮点加定点乘空间时间段号1234568711ComputerArchitectureSpring2016动态流水线123……n-1n123……n-1n123……n-1n123……n-1n123……n-1n123……n-1n一二三四四五六四五四浮点加定点乘空间时间段号12345687五六七一二三一二三一二三12ComputerArchitectureSpring2016部件级、处理机级及处理机间流水线所谓部件级流水线又叫运算操作流水线(Arithmeticpipelines),它是把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作。所谓处理机级流水线,又叫指令流水线(Instructionpipelines),它是把解释指令的过程按照流水方式处理。所谓处理机间流水线,又叫宏流水线(Macropipelines)。它是由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。13ComputerArchitectureSpring2016标量流水处理机和向量流水处理机所谓标量流水处理机(scalarpipelinesprocessor),是指处理机不具有向量数据表示,仅对标量数据进行流水处理。所谓向量流水处理机(vectorpipelinesprocessor),是指处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。14ComputerArchitectureSpring2016OUTS1S2S3S4IN线性流水线与非线性流水线a)线性流水线:流水过程中,从输入至输出每功能段仅经过一次,不存在反馈。b)非线性流水线:存在反馈,某些流水功能段允许被通过数次。15ComputerArchitectureSpring201616理想化的流水线•Uniformsubcomputations.可以将总体计算任务划分为具有均匀延迟的子任务。•Identicalcomputations.同样的计算任务在流水线上反复执行。•Independentcomputations.各次计算任务直接没有依赖性。流水线的目的是在相对较少的成本下提升系统的吞吐率。理想流水线代表了现实流水线所能达到的吞吐率的上界。ComputerArchitectureSpring201617算术流水线ComputerArchitectureSpring201618算术流水线ComputerArchitectureSpring201619算术流水线ComputerArchitectureSpring201620算术流水线ComputerArchitectureSpring201621算术流水线ComputerArchitectureSpring201622流水线的性能与成本ComputerArchitectureSpring201623指令流水线•把指令的处理也转变为流水线化的计算过程。•相比算术流水线,指令流水线的实现与理想化假设相距甚远。–把指令处理划分为均衡的subcomputation比较困难–不同指令的subcomputation不尽相同,因此硬件需求也不一致–指令之间存在相关性,无法成为完全独立的计算过程要设计指令流水线,首先要了解指令集的RTL映射与设计ComputerArchitectureSpring201624从指令集到处理器的实现•1.分析指令集对数据通路的需求–从寄存器传输的角度解析指令的行为–数据通路包含了指令所定义寄存器对应的存储单元–数据通路必须支持各种寄存器传输•2.数据通路的时钟驱动策略•3.整合数据通路以满足各项需求•4.分析各条指令的实现方案以确定寄存器传输过程的控制逻辑•5.整合控制逻辑ComputerArchitectureSpring201625•所有MIPS指令的宽度都是32bits.有三种格式:–R-type–I-type–J-type•不同的域的定义:–op:指令操作码–rs,rt,rd:源操作数,目的操作数–shamt:移位量–funct:对应特定op指定更多的操作类型–address/immediate:地址偏移/立即数–targetaddress:跳转指令的目的地址optargetaddress026316bits26bitsoprsrtrdshamtfunct0611162126316bits6bits5bits5bits5bits5bitsoprsrtimmediate0162126316bits16bits5bits5bitsMIPS指令格式ComputerArchitectureSpring201626•RTL描述了指令在硬件实现上的具体意义•所有行为都从指令获取开始op|rs|rt|rd|shamt|funct=MEM[PC]op|rs|rt|Imm16=MEM[PC]instRegisterTransfersADDUR[rd]–R[rs]+R[rt];PC–PC+4SUBUR[rd]–R[rs]–R[rt];PC–PC+4ORiR[rt]–R[rs]|zero_ext(Imm16);PC–PC+4LOADR[rt]–MEM[R[rs]+sign_ext(Imm16)];PC–PC+4STOREMEM[R[rs]+sign_ext(Imm16)]–R[rt];PC–PC+4BEQif(R[rs]==R[rt])thenPC–PC+4+sign_ext(Imm16)]||00elsePC–PC+4从指令逻辑映射到寄存器传输级(RTL)ComputerArchitectureSpring201627•加法器•多路选择器•算术逻辑运算单元3232AB32SumCarry3232AB32ResultOP32AB32Y32SelectAdderMUXALU组合逻辑的表征ComputerArchitectureSpring201628•寄存器–由DFlipFlop构成•N-bit输入和输出•具有写有效信号(WriteEnable)–WriteEnable:•无效(0):数据输出不变•有效(1):数据输出更新为输入值ClkDataInWriteEnableNNDataOut时序逻辑的表征MUXClkDataInWriteEnableNNDataOutNNComputerArchitectureSpring201629•寄存器堆(RegisterFile)32个寄存器组成:–2个32-bit输出总线:busAandbusB–1个32-bit输入总线:busW•寄存器的选择:–RA(number)选择相应的寄存器输出数据到busA(data)–RB(number)选择相应的寄存器输出数据到busB(data)–RW(number)选择相应的寄存器写入busW(data)上的数据,(Enable=1)•时钟输入(CLK)–写操作由时钟所控制,必须由时钟边沿来驱动和同步–读操作不须等待时钟边沿,选择寄存器,立刻得到其输出值:•RAorRBvalid=busAorbusBClkbusWWriteEnable3232busA32busB555RWRARB3232-bitRegisters存储单元:寄存器堆ComputerArchitectureSpring201630•理想存储器–1个输入总线:DataIn–1个输出总线:DataOut•访存操作–根据Address选择相应的数据字输出到DataOut–WriteEnable=1:根据address将DataInbus上的数据写入到选择相应的数据字上。•时钟输入(CLK)–只影响写操作–对于读操作,存储器像组合逻辑一样工作:•Addressvalid=DataOutClkDataInWriteEnable3232DataOutAddress存储单元:理想存储器ComputerArchitectureSpring201631•所有时序逻辑器件由同一时钟延驱动•CycleTime=CLK-to-Q+LongestDelayPath+Setup+ClockSkew•(CLK-to-Q+ShortestDelayPath-ClockSkew)HoldTimeClkDon’tCareSetupHold............SetupHold时钟ComputerArchitectureSpring201632内容提要2.指令处理过程的RTL描述3.流水线结构的作用及其实现1.实现指令的基本数据通路5.中断、异常及其处理方法4.流水线冲突及其解决方法ComputerArchitectureSpring201633•指令共同的RTL操作–取指令:mem[PC]–更新程序计数器:•顺序代码:PC-PC+4•分支和跳转:PC-“somethingelse”32InstructionWordAddressInstructionMemoryPCClkNextAddressLogic取指单元的实现ComputerArchitectureSpring201634•R[rd]-R[rs]opR[rt]Example:addUrd,rs,rt–Ra,Rb,Rw这3个信号由指令的rs,rt,andrd决定–ALUctr和RegWr:指令译码产生的控制