1、取指令取指令 3执行指令执行指令 3一、指令流水原理一、指令流水原理2.指令的二级流水指令的二级流水1.指令的串行执行指令的串行执行取指令取指令 取指令部件取指令部件 完成完成总有一个部件总有一个部件 空闲空闲指令预取指令预取若若 取指取指 和和 执行执行 阶段时间上阶段时间上 完全重叠完全重叠指令周期指令周期 减半减半 速度提高速度提高 1 倍倍执行指令执行指令 执行指令部件执行指令部件 完成完成取取指令指令 1执行执行指令指令 1取取指令指令 2执行执行指令指令 2取取指令指令 3执行执行指令指令 3取指令取指令 2执行指令执行指令 2取指令取指令 1执行指令执行指令 1.必须等必须等 上
2、条上条 指令执行结束,才能确定指令执行结束,才能确定 下条下条 指令的地址,指令的地址,造成时间损失造成时间损失3.影响指令流水效率加倍的因素影响指令流水效率加倍的因素(1)执行时间执行时间 取指时间取指时间(2)条件转移指令条件转移指令 对指令流水的影响对指令流水的影响 解决办法?取指令取指令部件部件指令部件缓冲区执行指令部件猜测法.4.指令的六级流水指令的六级流水六级流水六级流水14 个时间单位个时间单位串行执行串行执行6 9 54个时间单位个时间单位完成完成 一一条指令条指令6 个时间单位个时间单位COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWOD
3、IFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令指令 1指令指令 2指令指令 3指令指令 4指令指令 5指令指令 6指令指令 7指令指令 8指令指令 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14t注释注释.二、流水线性能二、流水线性能 1.吞吐率吞吐率 单位时间内单位时间内 流水线所完成指令流水线所完成指令 或或 输出结果输出结果 的的 数量数量 最大吞吐率最大吞吐率 实际吞吐率实际吞吐率 连续处理连续处理 n 条指令的吞吐率为条指令的吞吐率为设设 m 段的流水线各段时间为段的流水线各段时
4、间为t tTpmax=1t tTp=m +(n-1)nt tt t.2.加速比加速比 Sp m 段的段的 流水线的速度流水线的速度 与等功能的与等功能的 非流水线的速度非流水线的速度 之比之比 设流水线各段时间为设流水线各段时间为 t 完成完成 n 条指令在条指令在 m 段流水线上共需段流水线上共需 T=m +(n-1)t t 完成完成 n 条指令在等效的非流水线上共需条指令在等效的非流水线上共需 T=nmt Sp=m +(n-1)nm=nmm+n-1 t t t 则则.由于流水线有由于流水线有 建立时间建立时间 和和 排空时间排空时间因此各功能段的因此各功能段的 设备不可能设备不可能 一直一
5、直 处于处于 工作工作 状态状态 流水线中各功能段的流水线中各功能段的 利用率利用率3.效率效率 mt31245312453124531245 n-1 nn-1 nn-1 nn-1 nT时间时间S空间空间空间空间S4S3S2S1(n-1)t.m(m+n-1)t =mnt 流水线各段处于工作时间的时空区流水线各段处于工作时间的时空区流水线中各段总的时空区流水线中各段总的时空区 效率效率=3.效率效率 mt31245312453124531245 n-1 nn-1 nn-1 nn-1 nT时间时间S空间空间空间空间S4S3S2S1(n-1)t流水线中各功能段的流水线中各功能段的 利用率利用率.举例
6、举例 用一条用一条5 5个功能段的浮点加法器流水线计算个功能段的浮点加法器流水线计算 分析分析首先需要考虑的是,首先需要考虑的是,10个数的的和最少需要做几次加法。个数的的和最少需要做几次加法。每个功能段的延迟时间均相等,流水线的输出端和输入端之每个功能段的延迟时间均相等,流水线的输出端和输入端之间有直接数据通路,而且设置有足够的缓冲寄存器。要求用间有直接数据通路,而且设置有足够的缓冲寄存器。要求用尽可能短尽可能短的时间完成计算,画出的时间完成计算,画出流水线时空图流水线时空图,并计算流水,并计算流水线的线的实际吞吐率实际吞吐率、加速比加速比和和效率效率。我们可以发现,加法的次数是不能减少的:
7、我们可以发现,加法的次数是不能减少的:9次次;于是我们要尽可能快的完成任务,就只有考虑如何让流水线于是我们要尽可能快的完成任务,就只有考虑如何让流水线尽可能尽可能充满,这需要消除这需要消除前后指令前后指令之间的之间的相关相关。由于加法满足交换率和结合率,我们可以调整运算次序如以下的指令序列,由于加法满足交换率和结合率,我们可以调整运算次序如以下的指令序列,我们把我们把中间结果寄存器中间结果寄存器称为称为R,源操作数寄存器源操作数寄存器称为称为A,最后,最后结果寄存器结果寄存器称为称为F,并假设源操作数已经在寄存器中,则指令如下:,并假设源操作数已经在寄存器中,则指令如下:.I1:R1A1+A2
8、I2:R2A3+A4I3:R3A5+A6I4:R4A7+A8I5:R5A9+A10I6:R6R1+R2I7:R7R3+R4I8:R8R5+R6I9:FR7+R8 这并这并这并这并不是唯一不是唯一不是唯一不是唯一可能的计算方法。假设功能段的延迟为可能的计算方法。假设功能段的延迟为可能的计算方法。假设功能段的延迟为可能的计算方法。假设功能段的延迟为tt。时。时。时。时-空图如下,图中的空图如下,图中的空图如下,图中的空图如下,图中的数字数字数字数字是是是是指令号指令号指令号指令号。.32 1 4 1 1 1 1 2 2 2 2 3 3 3 34 4 4 4 5 5 5 5 5 6 6 6 6 6
9、7 7 7 7 7 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时间.整个计算过程需要整个计算过程需要21t21t,所以吞吐率为:,所以吞吐率为:加速比为:加速比为:效率为:效率为:.课后思考课后思考.本课到此结束本课到此结束谢谢大家谢谢大家.取指(取指(FI):从存储器取出一条指令并暂时:从存储器取出一条指令并暂时存入指令部件的缓冲区。存入指令部件的缓冲区。指令译码(指令译码(DI):确定操作性质和操
10、作数地:确定操作性质和操作数地址的形成方式。址的形成方式。计算操作数地址(计算操作数地址(CO):计算操作数的有效:计算操作数的有效地址,涉及到寄存器间址、间址、变址、基地址,涉及到寄存器间址、间址、变址、基址、相对寻址等各种地址计算方式。址、相对寻址等各种地址计算方式。取操作数(取操作数(FO):从存储器中取操作数从存储器中取操作数(若若操作数在寄存器中,则无需此阶段操作数在寄存器中,则无需此阶段)。执行指令(执行指令(EI):执行指令所需的操作,并:执行指令所需的操作,并将结果存于目的位置将结果存于目的位置(寄存器中寄存器中)。写操作数(写操作数(WO):将结果存入存储器。:将结果存入存储器。返回.感谢亲观看此幻灯片,此课件部分内容来源于网络,感谢亲观看此幻灯片,此课件部分内容来源于网络,如有侵权请及时联系我们删除,谢谢配合!如有侵权请及时联系我们删除,谢谢配合!