1、取指令3执行指令执行指令3一、指令流水原理一、指令流水原理2.指令的二级流水1.指令的串行执行取指令取指令部件完成总有一个部件空闲指令预取若 取指 和 执行 阶段时间上 完全重叠指令周期 减半速度提高1 倍执行指令执行指令部件完成取指令1执行指令1取指令2执行指令2取指令3执行指令3取指令2执行指令2取指令1执行指令11必须等 上条 指令执行结束,才能确定 下条 指令的地址,造成时间损失3.影响指令流水效率加倍的因素(1)执行时间 取指时间(2)条件转移指令 对指令流水的影响解决办法?取指令部件指令部件缓冲区执行指令部件猜测法24.指令的六级流水六级流水14 个时间单位串行执行6 9 54个时
2、间单位完成 一条指令6个时间单位COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令1指令2指令3指令4指令5指令6指令7指令8指令91 2 3 4 5 6 7 8 9 10 11 12 13 14t注释3二、流水线性能1.吞吐率单位时间内 流水线所完成指令 或 输出结果 的 数量?最大吞吐率?实际吞吐率连续处理n条指令的吞吐率为设m段的流水线各段时间为tTpmax=1tTp=m+(n-1)ntt42.加速比Spm段的 流水线的
3、速度 与等功能的 非流水线的速度 之比设流水线各段时间为t完成n条指令在m段流水线上共需T=m+(n-1)t t 完成n条指令在等效的非流水线上共需T=nmt Sp=m+(n-1)nm=nmm+n-1t t t 则5由于流水线有 建立时间 和 排空时间因此各功能段的 设备不可能 一直 处于 工作 状态流水线中各功能段的 利用率3.效率mt31245312453124531245 n-1 nn-1 nn-1 nn-1 nT时间S空间空间S4S3S2S1(n-1)t6m(m+n-1)t=mnt流水线各段处于工作时间的时空区流水线中各段总的时空区效率=3.效率mt312453124531245312
4、45 n-1 nn-1 nn-1 nn-1 nT时间S空间空间S4S3S2S1(n-1)t流水线中各功能段的 利用率7举例 用一条5个功能段的浮点加法器流水线计算?101iiAF分析首先需要考虑的是,10个数的的和最少需要做几次加法。每个功能段的延迟时间均相等,流水线的输出端和输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短的时间完成计算,画出流水线时空图,并计算流水线的实际吞吐率、加速比和效率。我们可以发现,加法的次数是不能减少的:9次;于是我们要尽可能快的完成任务,就只有考虑如何让流水线尽可能充满,这需要消除前后指令之间的相关。由于加法满足交换率和结合率,我们可以调整运
5、算次序如以下的指令序列,我们把中间结果寄存器称为R,源操作数寄存器称为A,最后结果寄存器称为F,并假设源操作数已经在寄存器中,则指令如下:8?I1:R1A1+A2?I2:R2A3+A4?I3:R3A5+A6?I4:R4A7+A8?I5:R5A9+A10?I6:R6R1+R2?I7:R7R3+R4?I8:R8R5+R6?I9:FR7+R8 这并这并不是唯一不是唯一可能的计算方法。假设功能段的延迟为可能的计算方法。假设功能段的延迟为t。时-空图如下,图中的数字是指令号。932 14 1 1 1 1 2 2 2 2 33334 4 4 4 5 5 5 5 5 6 6 6 6 6 7 7 7 7 7
6、8 8 8 8 8 9 9 9 9 921t部件m15432R1=A1+A2R2=A3+A4R3=A5+A6R4=A7+A8R5=A9+A10R6=R1+R2R7=R3+R4R8=R5+R6F=R7+R8R1R3R5R6R7R8FR2R4时间10整个计算过程需要 21t,所以吞吐率为:tTp?21914.221452159?ttS%86.4221559?ttE加速比为:效率为:11课后思考课后思考?151iiAF?201iiAF?1001iiAF?10001iiAF12本课到此结束本课到此结束谢谢大家谢谢大家13?取指(FI):从存储器取出一条指令并暂时存入指令部件的缓冲区。?指令译码(DI):确定操作性质和操作数地址的形成方式。?计算操作数地址(CO):计算操作数的有效地址,涉及到寄存器间址、间址、变址、基址、相对寻址等各种地址计算方式。?取操作数(FO):从存储器中取操作数(若操作数在寄存器中,则无需此阶段)。?执行指令(EI):执行指令所需的操作,并将结果存于目的位置(寄存器中)。?写操作数(WO):将结果存入存储器。返回14