您好、欢迎来到现金彩票网!
当前位置:双彩网 > 线性流水线 >

流水线原理及其在CPU设计中的应用案例ppt

发布时间:2019-07-01 05:39 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  第6章 流水线原理及其在CPU设计中的应用 流水线技术是重要的加快处理器运算速度的基本技术之一。 本章介绍了流水线的基本概念、原理。 线性流水线原理、性能分析 非线性流水线原理、性能分析 通过模型机给出了CPU指令级流水线的具体实施方案。 相关概念及相关处理 结构相关 数据相关 控制相关 6.1 概述 来看一个例子 假设有4个工人要到医院去体检,每个人都要按照顺序检查内科、外科、五官科。怎样做?见图示。 6.1 概述 流水线:流水线是一种并行工作方式,它有以下特点: 有一批可以重复运行的任务; 每一个任务能被分解成多个子任务; 使用多个功能部件; 不同的功能部件完成不同的子任务; 多个功能部件并行运行。 6.1 概述 计算机中怎样引入流水线技术? 计算机级流水; 处理器级流水; 指令级流水。 6.2 指令流水线概念及指令的重叠运行方式 为了能够实现指令级流水工作,必须将指令的整个运行阶段划分成几个子功能段。一种粗略的划分方式为: 取指令阶段、译码阶段、执行阶段(见图6.1)。 重叠概念:将每一条指令的整个运行阶段分解为更小的功能段,使得多条指令在时间上并行运行,称为时间重叠,简称为重叠。 6.2 指令流水线概念及指令的重叠运行方式 1.顺序运行方式 顺序运行方式:设总共有n条指令需要运行。若第i条指令与第i+1条指令的各功能段之间都没有时间上的重叠。当第i条指令与第i+1条指令之间没有等待时间时(见图6.2),这样的串行运行方式称为顺序运行方式。 顺序运行方式运行n条指令所用的时间为(见图6.2) 6.2 指令流水线概念及指令的重叠运行方式 2.一次重叠运行方式 指令的一次重叠:第i条指令与第i+1条指令有一个功能段在时间上重叠,称为指令的一次重叠(见图6.3)。 6.2 指令流水线概念及指令的重叠运行方式 设重叠部分的工作时间相等,则完成n条指令时间为(见图6.3) 比较(6.1)式与(6.2)式,当n 1时有 6.2 指令流水线概念及指令的重叠运行方式 3.二次重叠运行方式 指令的二次重叠:第i条指令与第i+1条指令有两个功能段在时间上重叠,称为指令的二次重叠(见图6.4)。 6.2 指令流水线概念及指令的重叠运行方式 如果重叠部分时间相等,则运行n条指令所用的时间为(见图6.4)。 显然有 6.2 指令流水线概念及指令的重叠运行方式 于是,当n 1时有 因此,指令的二次重叠运行速度要高于一次重叠的运行速度;指令的一次重叠运行速度要高于顺序运行的速度。可见,相邻指令重叠段数越多,指令的运行速度就越快。 6.2 指令流水线概念及指令的重叠运行方式 指令级流水线 指令以流水线方式工作的前提 在硬件上能将整个指令的运行阶段分解为一些更小的子功能段; 指令也能划分成对应于硬件子功能段的子任务; 为了能够完成指令的运行,子功能段的输出数据要能被其他子功能段所使用。因此,需要在各个子功能段之间加上状态部件(见图6.5)。 6.2 指令流水线概念及指令的重叠运行方式 流水线的瓶颈 若各个子功能段的工作时间不相等,则工作时间长的子功能段成为流水线给出了具有瓶颈功能段的流水线的例子。 站在输出端看,整个流水线的速度取决于速度最慢的子功能段,快速子功能段不能充分发挥能力。 6.2 指令流水线概念及指令的重叠运行方式 两个基本概念: 指令周期:指令从开始到运行完毕所使用的最短时间,即采用非流水线运行方式下完整运行一条指令的最短时间。 流水周期:设流水线方式下,若每一个功能段所需最短时间相等,则该最短时间称为流水周期。若功能段所需时间不等,则选择瓶颈段经历时间作为流水周期。 6.4 流水线的分类 单功能流水线与多功能流水线 单功能流水线:各功能段之间只能进行固定的连接,只完成一种功能。 多功能流水线:各功能段之间可以进行不同的连接,实现不同功能。图6.11给出了一个实例 6.5 流水线 流水线 线 线性流水线的性能分析 线性流水线吞吐率的上确界( 工程上称为最大吞吐率) 因为TP是n的一元函数,而k 1,求导得 说明TP n 是n的严格单调增函数,所以上确界(最大吞吐率)为 6.5.1 线性流水线的性能分析 一般而言,假设某一线性流水线有k个功能段,每个功能段的工作时间分别是Δti(i 1,2,…,k),则其吞吐率为 6.5.1 线性流水线的性能分析 具有瓶颈段的线性流水线 线性流水线的性能分析 事实上,线性流水线的吞吐率要低于最大吞吐率,主要原因: 线性流水线存在“装入”和“排空”时间; 输入的任务往往是不连续的; 程序本身存在数据相关。 6.5.1 线性流水线的性能分析 线性流水线的加速比 式中Tk为k 段流水线按照流水线的运行方式处理完n个任务所用时间,TS为按照顺序运行方式完这 n 个任务所用的时间。 6.5.1 线性流水线,所以 故S n 是n的严格单调增函数,所以加速比的上确界Smax为 6.5.1 线性流水线的性能分析 结论:当n k时,线性流水线各段工作时间相等的情况下,线性流水线的最大加速比近似等于该线性流水线的段数。 根据加速比公式可以画出图6.17的曲线。可以看出n较大时加速比接近于它的渐近线。k越多,它能够获得的加速比理论值越大,但是n 实际不可能很大,原因是: 6.5.1 线性流水线的性能分析 实际应用的影响 一般程序存在数据相关、转移、中断等情况,使连续输入的n受到限制。 物理实现 实现成本; 寄存器数量; 布线 线性流水线的性能分析 一般而言,每个功能段的工作时间为 , 则k段线性流水线完成n个连续任务的实际加速比为 6.5.1 线性流水线的性能分析 流水线的效率 效率反映资源利用率。 6.5.1 线性流水线的性能分析 各功能段的工作时间相等的线性流水线的效率为 上面的效率表达式也是n的严格单调增函数,故其上确界为 6.5.1 线性流水线的性能分析 各功能段的工作时间不相等的效率 6.5.1 线性流水线的性能分析 每一个功能加权后,得到: 6.5.2 线性流水线的特点 流水线中处理的必须是连续任务。 每一个任务分解为几个有联系的子任务,每一个子任务由一个专门的功能部件实现。 每一个功能部件后面都要有一个缓冲寄存器,用于保存本段的运行结果。 流水线中各段的时间应尽量相等,否则,产生瓶颈问题。 6.6 非线 引言 非线性流水线中存在回路,不能像线性流水线那样每隔一个流水周期输入一个任务,否则,会出现流水线(或功能部件)冲突问题。 非线性流水线的调度就是要提供一个方案,按照该方案所确定的流水周期向流水线中输入新任务,各功能部件都不发生冲突,而且流水线的性能指标达到最高。 6.6.2 预约表 几个名词: 流线连接:相邻功能段之间的前向直接连接线之间的连接线。 前馈连接:不相邻功能段之间的前向直接连接线之间的连接线。 反馈连接:功能段之间的反向连接线之间的连接线之间的连接线 预约表 预约表: 图6.19和图6.20画出了图6.18给出的非线性流水线的X功能和Y功能的各个功能段被使用的情况,这两个图中的表就是预约表,描述了一个功能在运行过程中数据流通过流水线的时间与空间(各功能段)之间的关系。 6.6.2 预约表 预约表的行数表示功能段数,列数表示给定功能的运行时间。 横坐标表示流水线的工作时间,单位为流水周期。纵坐标表示流水线的功能段。 X和Y表示该功能段在这一流水周期处于的工作状态。 每一张预约表对应一个特定功能的运行过程。 一条非线性流水线一般需要一个结构图和预约图来共同表示。 6.6.3 启动距离分析 启动距离:向一条非线性流水线的输入端输入两个相邻任务之间的流水周期数。 禁止启动距离:引起冲突的启动距离。 一些启动距离会产生冲突,另一些不会产生冲突。会产生冲突的启动距离实例见例6.1,该例中启动距离为2、5均可产生冲突,预约表分别见图6.21、图6.22。 6.6.3 启动距离分析 禁止向量:将预约表中的每一行中任意两个标记之间的距离都算出,去掉重复的,求得一个10进制数列,将该数列按照递减方式排列成一个向量,称为禁止向量,记为Vf。求出图6.19的禁止向量Vf= 7,5,4,2 。 允许启动距离:不会引起冲突的启动距离。 允许启动序列:由允许启动距离构成的数列。 6.6.3 启动距离分析 允许启动循环:当一个启动序列是一个循环数列时,这样的循环数列称为允许启动循环。 启动循环的平均允许启动距离: 其中dav为启动循环的平均启动距离,C 为启动循环阶,di i 1,2,...,C 为启动循环的启动距离。 恒定循环:一阶启动循环又称为恒定循环。 6.6.4 迭加原理与无冲突调度方法 非线性流水线无冲突调度的目标是找出平均允许启动距离最小的启动循环。根据该原理导出状态图的画法规则。 零输入调度向量:某时刻 旧任务 对后继任务影响综合效果,记为: 6.6.4 迭加原理与无冲突调度方法 零状态调度向量:假设在某一时刻 已经进入但还没有流出流水线的任务总是 ,并假设 为空,即只考虑新任务 对后继任务调度的影响时,用二进制向量 表示,称为零状态调度向量。 6.6.4 迭加原理与无冲突调度方法 迭加原理:假设在某一时刻 已经进入但还没有流出流水线的任务总数是 ,同时考虑新、旧任务对后继任务调度的影响时,综合效果用二进制向量 表示,它是零输入调度向量与零状态调度向量按位求逻辑或的运算结果(证明见教材 6.6.4 迭加原理与无冲突调度方法 由 6.30 得到递推公式 为了保证流水线不冲突,后继任务的调度应该是允许距离,得到: 6.6.4 迭加原理与无冲突调度方法 将(6.32)式代入(6.31)式得到迭加原理数学表达的递推公式: 6.6.4 迭加原理与无冲突调度方法 将(6.32)式代入(6.31)式得到迭加原理数学表达的另一种递推公式: (6.34)式反映了两个相邻任务的调度向量之间的关系,而(6.35)式反映了两个相邻任务的零输入调度向量之间的关系。 6.6.4 迭加原理与无冲突调度方法 零状态调度向量 的求解方法: 先根据预约表求得禁止向量 。 将零状态调度向量表示成一个 维的二进制向量 ,如果 是禁止启动距离,则规定 ;如果 是允许启动距离,则规定 ,显然总有 ,对应于最止启动距离( 中最大的那个)。 6.6.4 迭加原理与无冲突调度方法 引入记号 表示初始调度向量,得到一般无冲突调度方法: 1 将初始调度向量 送入一个m+1位具有逻辑右移功能的移位寄存器; 2 当从移位寄存器移出的位为0时,用移位寄存器中的值与零状态调度向量作“按位或”运算,得到一个新的调度向量; 6.6.4 迭加原理与无冲突调度方法 3 若移位寄存器移出的位为1,不作任何处理; 4 对于 2 和 3 重复m+1次; 5 对于中间形成的每一个新的调度向量,按 2 和 3 的方法做。 6.6.4 迭加原理与无冲突调度方法 无冲突调度方法特殊情况-零状态调度向量是常数 根据前面的讨论知道, 仅仅考虑 作用,即任务 刚刚进入流水线时 时刻 ,流水线中没有任何其他旧任务(即在时刻 流水线为空)时后继任务 的调度向量。应该指出的是,如果在流水线的整个工作过程中,预约表没有改变,则 与任务无关,即 6.6.4 迭加原理与无冲突调度方法 于是可以将 看成常向量,并记为Z。因此有 此时 6.34 可以写成: 6.6.4 迭加原理与无冲突调度方法 如果假设在第一个X1输入流水线之前,流水线是空的,在这种情况下,满足如下初始条件: 此时按照(6.37)式有: 6.6.4 迭加原理与无冲突调度方法 根据(6.37)式、(6.38)式得到特殊情况下无冲突调度方法: 将零状态调度向量Z 送入一个m+1位具有逻辑右移功能的移位寄存器; 当从移位寄存器移出的位为0时,用移位寄存器中的值与零状态调度向量做“按位或”运算,得到一个新的调度向量; 若移位寄存器移出的位为1,不作任何处理; 6.6.4 迭加原理与无冲突调度方法 对于2和3重复m+1次; 对于中间形成的每一个新的调度向量,按2和3的方法做。 关于允许启动距离 d 的讨论 6.6.4 迭加原理与无冲突调度方法 允许启动距离的最大值是: 将最止启动距离的范围 代入上式有: 于是,允许启动距离的取值范围为: 6.6.4 迭加原理与无冲突调度方法 以图6.19为例示例运用迭加原理寻找状态图调度方法: 假设一批任务X1,X2,…,Xn要无冲突地输入流水线,并假设在第一个任务X1输入流水线之前,流水线是空的,将第一个任务X1进入时刻作为初始时刻,即T X1+0 。则零状态调度向量Z 01011010 就反映了X1刚刚输入流水线后,准备向流水线 的允许和禁止流水周期数。由于Z 01011010 的1、3、6、8位是0,表示经过1、3、6、8个流水周期后可以无冲突地向流水线 迭加原理与无冲突调度方法 于是新任务X2流入流水线地时刻为 ,这时,流水线中已经存在有两个任务X2和X3,后面的新任务 再流入流水线时,在流水线有关,还与已经迁移了d个流水周期的任务X1有关。对于X3的后继任务X4、 X4的后继任务X5等等,情况相同。根据迭加原理推出的无冲突调度方法,得到以下几个无冲突调度方案。在下面的例子中,假设算子“→”的优先级高于“∨”的优先级。 6.6.4 迭加原理与无冲突调度方法 启动循环(1,8) 启动循环(3) 启动循环(6) 把上面的工作画在一张图上,可以直观的看出流水线的调度方案。这张图称为状态图。见图6.27。状态图说明了流水线持续输入任务的情况下流水线的允许启动距离状态的变迁。 6.7 非线 引言 时空图在分析非线性流水线时并不方便,而且不能反映各参数之间的内在联系。本书作者给出了计算非线性流水线参数公式,并给出了各参数之间关系的数学表达式。 6.7 非线 非线性流水线的Tk的求法 假设任务总数为n。启动循环为 d1+d2+…+dC ,启动距离的个数为C,非线性流水线的功能段数为K,预约表中的标记总数为K1,预约表中的列数为N,每个功能段的运行时间是Δt,Tk表示对某一K 段非线性流水线,输入N 个任务时从输入到流出该非线性流水线 非线性流水线的性能分析 设某时刻Tstart t,向流水线输入初始任务,则向流水线输入的第一个新任务的起始时刻是t+d1,向流水线个新任务的时刻为t+d1+d2,如此推下去,输入C 个新任务的起始时刻是t+d1+d2+…+dC ,输入C +1个新任务的起始时刻是t+ d1+d2+…+dC +d1,向流水线个新任务的起始时刻是 6.7 非线性流水线的性能分析 设总任务为n,分别是 X0,X1,…,Xn-1,并设 根据 6.42 式有: 其中 表示最后一个任务流出流水线的结束时刻,N表示最后一个任务的排空流水周期数 由(6.43)式可以得到: 6.7.3 非线性流水线的吞吐率、效率、加速比及其关系 非线性流水线的吞吐率有以下公式 当各段同权时,效率公式为 非线 非线性流水线的吞吐率、效率、加速比及其关系 由上面几个公式得到非线性流水线的吞吐率、效率、加速比之间的关系: 6.7.3 非线性流水线的吞吐率、效率、加速比及其关系 通过上面两个公式可以得到线性流水线 非线性流水线的吞吐率、效率、加速比及其关系 定义:输入任务 时的非性流水线的吞吐率、效率、加速比分别记为 。利用(6.45)式~(6.47)式可以求得: 6.7.3 非线性流水线的吞吐率、效率、加速比及其关系 类似的可以求得: 6.7.3 非线性流水线的吞吐率、效率、加速比及其关系 根据以上公式可以求出这三个参数TPmax、ηmax、Smax 之间的关系。 对于给定的流水线,Δt是常数。对于特定的任务,K1、K、N也是常数,因此从 6.52 ~ 6.54 可以看出三个性能参数取决于平均启动距离dav,并且与dav成反比。不同的调度方案dav是不同的,为了获得TPmax、ηmax、Smax的 最大值,应当选择dav最小的方案。 6.7.3 非线性流水线的吞吐率、效率、加速比及其关系 从 6.52 式~ 6.54 式可以直接求得线性流水线 模型机的指令级流水线 模型机流水线的数据路径 模型机流水线的控制 相关及处理 结构相关 数据相关 控制相关 流水线 模型机流水线的数据路径 在模型机中load指令划分为5个流水周期,它们是IF、ID、EX、MEM、WB周期。图6.30是第4章的一个单周期的数据路径,包括5个阶段: (1)IF:取指令子功能段。 (2)ID:指令译码/读寄存器堆子功能段。 (3)EX:执行或计算地址子功能阶段。 (4)MEM:存储器访问子功能段。 (5)WB:写回子功能段。 6.8.1 模型机流水线中所示的单周期数据路径中,指令的每一步在图中由左至右映射到数据路径上。写回过程与PC的更新过程是例外,第一种导致数据相关、第二种导致控制相关。 根据前面的讨论,为了使得流水线能正常工作,在每一个子功能段的后面应当有一个寄存器,保存该子功能段的输出结果。图6.31画出了这样的寄存器,称为流水线寄存器。需要注意的是写回阶段后面没有流水线 模型机流水线的数据路径 为了处理数据相关,需要将指令的源寄存器号和目的寄存器号沿着流水线。 为了讨论方便,也采用另一种表示流水线数据的路径的方法,这种方法假定每一条指令有它独立的数据路径,然后把这些数据路径放在同一时间轴上表示它们之间的关系。如图6.33所示。 6.8.1 模型机流水线是一种简化的流水线图形表示。 IM表示取指阶段的指令存储器和程序计数器PC等。 Reg表示指令译码/读寄存器堆阶段的寄存器堆和符号扩展。 ALU表示算术逻辑单元ALU和计算转移地址的加法器Add等。 DM表示存储器访问,这一阶段也将转移地址写入PC(如果转移成功)。 6.8.2 模型机流水线的控制 本节介绍如何在流水线的数据路径中加入控制: 首先,标识已有的数据路径上的控制信号线章中单周期数据路径相同的标识方式(见图4.20和表4.12),如表6.2所示。 为了详细说明流水线的控制过程,根据流水线将控制线分成五组:取指令、指令译码/读寄存器、指令执行/地址计算、存储器访问、写回。 6.8.2 模型机流水线的控制 情况分别如下: 取指令、指令译码/读寄存器无需设置流水线控制器。 指令执行/地址计算:设置信号有RegDst、ALUOp和ALUSrc。 存储器访问:设置信号有Branch、MemRead、和MemWrite。 写回:设置信号有 MemtoReg和RegWrite。 6.9 相关及其处理 6.9.1相关概念 在流水线的体系结构中,关键的性能屏障是存在流水线断流。当一组新的输入不能注入流水线时,就发生断流。这是由于相关引起的。 相关是流水线的主要障碍,它使得指令流中下一条指令无法在紧接着的流水周期内运行,相关将会降低流水线可能获得的理想性能。 6.9.1 相关概念 相关有以下几种情况: 结构相关 数据相关 控制相关 6.9.2 结构相关 结构相关产生原因:一种特定体系结构的实现没有足够的资源支持某些种类的指令在时间上重叠。 实例:存储器资源有限,不支持访问存储器指令和取指令的重叠。见图6.36。 结果:指令串行化,降低处理器效率。 解决方案:断流法(让流水线中的一部分指令正常运行而另一部分指令被延迟运行),见图6.37。 6.9.2 结构相关 常见的结构(资源)相关: 资源没有充分重复设置,不足以让流水线中的若干条指令同时运行。如一个流水周期写两次寄存器。 部分功能部件没有充分流水运行,一系列使用该部件的指令不能按照每个流水周期前进一拍的速率流水运行。如瓶颈段流水线 数据相关 数据相关产生原因:流水线中的流水指令改变了操作数的读写顺序,使得顺序与逻辑指令序列不同。 将以流水方式运行的指令序列称为流水指令序列,简称流水指令。 逻辑指令序列也就是通常意义下的指令序列。 6.9.3 数据相关 实例( PGM6.1 ): add R1,R2,R3 //add指令写寄存器R1 sub R4,R1,R5 //第一个操作数依赖于add指令的运算结果 and R6,R7,R1 //第二个操作数依赖于add指令的运算结果 or R8,R1,R9 //第一个操作数依赖于add指令的运算结果 xor R10,R1,R11 //第一个操作数依赖于add指令的运算结果 add指令后的所有指令都用到了add结果,如图6.40所示。 6.9.3 数据相关 数据相关解决方案 采用编译技术解决数据相关 采用前传技术 需要断流的数据相关 6.9.3 数据相关 1.采用编译技术解决数据相关 通过编译器禁止像PGM6.1中具有相关性的五条指令,避免数据相关。例如在add和sub之间插入两条没有相关性的指令消除数据相关。若没有这种指令则插入一定数量的nop指令。参看图6.40。 add R1,R2,R3 nop nop sub R4,R1,R5 and R6,R1,R7 or R8,R1,R9 xor R10,R1,R11 6.9.3 数据相关 2.采用前传技术 前传技术是将某一指令的操作结果尽快传递给它的后继指令,而不必等到该指令完全运行完毕的一种技术。 一般来说,指令只在流水线中的特定功能段和特定的时刻产生操作结果或接受前传。 图6.41是一条6段流水线 数据相关 前传技术是流水线中广泛采用的一种技术,它将流水线中某一个功能段的输出结果超越它的直接前驱功能段,而前向传递给需要该功能段输出数据的其他功能段。 图6.47是前传技术的示意图。 6.9.3 数据相关 前传技术在模型机中不仅在R型指令中使用,在其他指令中也使用,例如: PGM6.2 add R1,R2,R3 load R8,0 R1 store R8, 58 R1 图6.48画出了该序列的所有可能的前传,这些前传可以使得指令序列PGM6.2在流水线中正常流动,而不会断流。 6.9.3 数据相关 3.需要断流的数据相关 前传虽然可以解决一些数据相关问题,但并非所有的数据相关都可以采用前传的方法来解决。例如: PGM6.3 load R1,0 R2 add R3,R1,R4 sub R5,R1,R6 or R7,R1,R8 就不能通过前传解决。其带前传的流水线 数据相关 在这种情况下,需要断流流水线,让需要结果的操作一直等到该结果产生为止。 图6.51画出了load指令与add指令之间通过断流解决数据相关的简化流水线图。 这里,除了需要一个前传单元以外,还需要一个相关检测单元。图6.52给出了相关检测单元和前传单元的流水线 控制相关 控制相关产生原因: 流水线中的转移指令(分支指令)或其他改写PC(除PC正常增量以外)的指令造成的相关。 控制相关解决方案: 转移断流法: 一旦发现有转移指令就对该指令之后的直接后继指令进行重新取指令的操作。见图6.53。 6.9.4 控制相关 猜测法: 在条件转移指令后,选择一个分支方向,让后继指令进入流水线运行。实现方法是直接取下一条指令,好像转移指令只是一条普通的指令那样,流水线看起来也没有特殊之处。但是只要转移条件满足(即转移成功)时,就需要用空操作代替取来的指令,并到目标地址重新取指令。 6.9.4 控制相关 借助于编译技术: 转移延迟技术:在流水线中,转移指令后面加上延迟槽,并在延迟槽中填入适当的指令,以提高流水线吞吐率的一种技术。见图6.58、图6.59。 延迟槽深度为1的5段模型机流水线所示。 分支取消技术:转移指令带有对分支能否被选中(即转移是否成功)的预测。当预测准确时,延迟槽中的指令像通常那样流水运行,否则就把延迟槽中的指令变成空操作指令。见图6.62、图6.63。 延迟槽深度为1的5段模型机流水线 流水线的基本性能问题 需要解决的问题 流水线增大了 CPU的指令吞吐率,但没有减少每一条指令各自的运行时间。 限制了流水线的深度。 除了流水线延迟引起的限制,流水线的不平衡和流水线的附加开销也引入了某些限制。前者因为时钟不能快于最慢的流水线功能段,后者是因为流水线 超标量流水线概念 一般的流水线处理器只有一条指令级流水线,流水线除了有装入和排空时间外,还有数据相关、转移等的影响,因此,一般流水线标量处理器每个流水周期平均完成的指令的条数小于1,即它的指令级并行度ILP l。为了提高指令及并行度,可以采用超标量处理器,使用超标量流水线(superscalar pipelining)。 通常把一个流水周期内能够同时发射多条指令的处理器称为超标量处理器。 6.12 本章小结 本章介绍了流水线的基本概念、原理及其在CPU设计中的应用,包括: 指令流水线概念及指令的重叠运行方式 时空图 流水线的分类 流水线的性能指标与线性流水线性能分析 非线性流水线 非线性流水线的性能分析 模型机的指令级流水线 相关及其处理 结构相关 数据相关 控制相关 流水线的基本性能问题 超标量流水线概念 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 串行工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 流水工作方式图示 图6.1 将一条指令分解为取指令阶段、译码阶段、执行阶段 图6.2 指令的顺序运行 图6.3 指令的一次重叠运行方式 图6.4 指令的二次重叠运行方式 图6.5 用于流水线的指令的各个子功能段之间应当加寄存器 图6.6 有“瓶颈”段的流水线 时空图:流水线的时间-空间关系图 图6.8 一条浮点流水线个功能段构成的线个功能段构成的非线 多功能流水线 流水线个功能段的线 将线性流水线的“瓶颈”段再细分成若干子功能段 图6.16 “瓶颈”功能段并联重复设置 图6.17线的非线的非线时流水线给出的非线给出的非线 一个非线单周期数据路径的功能段划分 图6.31 单周期CPU的各个功能段之间带有流水线 寄存器堆的WriteReg端的写编号来自流水线寄存器MEM/WB,而它是由流水线寄存器ID/EX传递过来的 图6.33 流水线数据路径的简化图形表示 图6.34 当指令在流水线中传递时控制信号的使用 图6.35 在流水线寄存器中带有控制信号的流水线 结构相关引起的访问存储器资源冲突 图6.37将指令3推迟(断流)1个流水周期进入流水线,可以解决存储器结构相关问题 图6.38 将存储器分成指令存储器IM和数据存储器DM以避免访问存储器资源冲突 图6.39 将存储器分成指令存储器IM和数据存储器DM来解决存储器资源相关 图6.40 数据相关的简化流水线 单周期与2周期前传 图6.43 单数据相关发生在S3、S5功能段 图6.44 单周期与2周期数据相关发生在S3功能段,单周期数据相关还发生在S5功能段 图6.45 在流水线的不同功能段出现的单周期与多周期前传 图6.46 模型机EX功能段的1CC前传和2CC前传简图 图6.47 前传的流水线的前传数据路径简化图 图6.49含有R型指令前传单元的数据路径 图6.50 load指令引起的数据相关 图6.51 load指令与add指令之间通过断流解决数据相关 6.52 带有数据相关检测单元的数据路径 图6.53 转移指令的最简单处理方法的简化流水线 在猜测转移不成功分支策略情况下的流水线 猜测法(猜测转移不成功分支策略下)在转移成功时会引起流水线 模型机含有控制相关的数据路径 图6.58 流水序列中有无延迟槽的比较 图6.59 流水指令序列延迟槽填入指令I2 图6.60 转移不成功时,使用延迟槽加速指令的运行速度 图6.61 转移成功时,使用延迟槽加速指令的运行速度 图6.62 向前转移流水序列中有无延迟槽的比较 图6.63 在延迟槽中填入目标指令 图6.64 对于循环分支,在延迟槽中填入目标指令有助于减少流水线 转移不成功时,使用分支取消技术 图6.66 PGM6.4流水指令序列延迟槽填入转移不成功分支的第一条指令I3 表6.2 模型机流水线的控制信号 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF断流 ID断流 EX断流 MEM 断流 WB断流 load 指令1 指令2 指令3 断流一个流水周期 CC1 CC2 CC3 CC4 CC5 时间(流水周期数) 单端口存储器的load指令引起结构相关时的流水线没有指令进入流水线(正常情况下应该是指令3进人流水线)。当一条指令被断流后,流水线中所有该指令之后的指令都会被断流。流水线中该指令之前的指令还是正常运行。因为读入的指令被断流,断流周期将流过流水线 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB load 指令1 指令2 指令4 指令3 CC1 CC2 CC3 CC4 CC5 时间(流水周期数) 由于将存储器分成了指令存储器IM和数据存储器DM,存储器访问load指令不会引起结构相关。在流水周期4指令3正常进入了流水线,因此没有产生流水线断流。这种采用资源重复设置的方法是一种解决流水线断流的方案,但是增加了硬件成本 S1 S2 S3 S4 S5 S6 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 时间(流水周期) 1 2 3 4 5 6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 指令i 指令i+1 指令i+2 指令i与指令i+1在功能段S3是单周期数据相关,指令i与指令i+2在功能段S3是2周期数据相关 S1 S2 S3 S4 S5 S6 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 S3功能段单周期前传 S1 S2 S3 S4 S5 S6 S3功能段2周期前传 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 时间(流水周期) 1 2 3 4 5 6 S1 S2 S3 S4 S5 S6 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 时间(流水周期) 1 2 3 4 5 6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 指令i 指令i+1 指令i+2 指令i与指令i+1在功能段3、功能段5是单周期数据相关,指令i 、 i+1与指令i+2没有数据相关 S1 S2 S3 S4 S5 S6 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 时间(流水周期) 1 2 3 4 5 6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 指令i 指令i+1 指令i+2 指令i与指令i+1在功能段3、功能段5是单周期相关,指令i与指令i+2在功能段3是2周期相关 S1 S2 S3 S4 S5 S6 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 时间(流水周期) 1 2 3 4 5 6 S3功能段单周期前传 S1 S2 S3 S4 S5 S6 S3功能段单周期前传、2周期前传 S1/S2 S2/S3 S3/S4 S4/S5 S5/S6 S5功能段单周期前传 S5功能段单周期前传 P C M u x M u x A L U E X M W B M W B W B I D / E X E X / M E M M E M / W B M u x I F / I D I n s t r u c t i o n M u x R d R t R t R s 指 令 存 储 器 寄 存 器 堆 前传 单元 数 据 存 储 器 主 控 制 单 元/WB.rd P C M u x M u x M u x A L U E X M W B M W B W B I D / E X E X / M E M M E M / W B M u x 0 M u x I F / I D I n s t r u c t i o n I D / E X . M e m R e a d I F / I D W r i t e P C W r i t e R t R s R d R t . 数 据 存 储 器 R.IF/ID.rs R.IF/ID.rt I.IF/ID.rt R.IF/ID.rd R.EX/MEM.rd R.MEM/WB.rd 寄 存 器 堆 指 令 存 储 器 前传单元 主 控 制 单 元 相关检 测单元 本图是对转移指令最简单处理方法的简化流水线图形描述。当在ID段发现有转移指令后就忽略转移指令的直接后继指令,并计算地址,按新地址重新取指令。这种转移指令的处理方式使得不管转移是否成功,在模型机的5段流水线个流水周期的断流 IF ID EX MEM WB IF 清空 清空 清空 清空 IF ID EX MEM IF ID EX MEM WB 转移指令i 忽略直接后继 转移指令的目标或直接后继 转移指令的目标或直接后继+1 时间(流水周期数) 1 2 3 4 5 6 7 8 9 WB IF ID EX MEM WB 转移指令的目标或直接后继+2 原始指令流 … ib+k-1 … ib+2 ib+1 ib 转移成功 … … … it+2 it+1 it 转移目标 新指令流 长为k-1的延迟槽 ib 转移成功 it 转移目标 k 流水线的段数 △t 流水周期 b 延迟槽的大小 ib+k-1 ib+k-2 … ib+2 ib+1 ib 指令流 △t 流水周期 转移指令+1是流水指令序列中转移指令的直接后继指令,也是对应的逻辑指令序列中的转移不成功分支的第一条指令。当在ID段发现转移不成功时,流水线中已经读取到了正确的指令,只需继续运行,流水线不断流 IF ID EX MEM WB IF ID EX MEM IF ID EX MEM WB 转移不成功 转移指令+1 转移指令+2 转移指令+3 时间(流水周期数) 1 2 3 4 5 6 7 8 9 WB IF ID EX MEM WB IF ID EX MEM WB 转移指令+4 转移指令+1是流水指令序列中转移指令的直接后继指令,也是对应的逻辑指令序列中的转移不成功分支的第一条指令。当在ID段发现转移成功时,流水线中读取到的是错误指令,流水线个流水周期,然后到目标地址重新取指令 IF ID EX MEM WB IF ID EX MEM IF ID EX MEM WB 转移成功 转移指令+1 转移目标指令 转移目标指令+1 时间(流水周期数) 1 2 3 4 5 6 7 8 9 WB IF 空闲 空闲 空闲 空闲 IF ID EX MEM WB 转移目标指令+2 P C 4 M u x M u x M u x A L U E X M W B M W B W B I D / E X 0 E X / M E M M E M / W B M u x I F . F l u s h I F / I D M u x M u x 相关检 测单元 指 令 存 储 器 寄 存 器 堆 数 据 存 储 器 前传 单元 符号 扩展 左移 2位 主 控 制 单 元 a 无延迟槽 b 有延迟槽 I1 I2 If then Ic I3 I4 : Ic Ic+1 : 延迟槽 I1 I2 If then Ic I3 I4 : Ic Ic+1 : a 无延迟槽 b 延迟槽填I2 I1 If then Ic I3 I4 : Ic Ic+1 : I2 I1 I2 If then Ic I3 I4 : Ic Ic+1 : 当转移不成功时,转移指令的直接后继指令I2从延迟槽取出,进入流水线继续运行,流水线没有出现断流 IF ID EX MEM WB IF ID EX MEM IF ID EX MEM WB 转移不成功 延迟槽指令I2 指令I3 指令I4 时间(流水周期数) 1 2 3 4 5 6 7 8 9 WB IF ID EX MEM WB IF ID EX MEM WB 指令: 当转移成功时,转移指令的直接后继指令I2(从延迟槽取出)已经进入流水线并继续运行,流水线没有出现断流。这与前面的猜测法是不同的 IF ID EX MEM WB IF ID EX MEM IF ID EX MEM WB 转移成功 延迟槽指令I2 转移目标指令Ic 指令Ic+1 时间(流水周期数) 1 2 3 4 5 6 7 8 9 WB IF ID EX MEM WB IF ID EX MEM WB 指令: a 无延迟槽 b 有延迟槽 Ic I1 I2 If then Ic I3 I4 I5 : Ic I1 I2 If then Ic I3 I4 I5 : 延迟槽 a 无延迟槽 b 延迟槽填入Ic Ic I1 I2 If then Ic I3 I4 I5 : Ic I1 I2 If then Ic I3 I4 I5 : Ic 取指令i 译码i 执行i 取指令i+1 译码i+1 执行i+1 取指令i+2 译码i+2 执行i+2 指令i: 指令i+1: 指令i+2: 时间t 取 指 令 IF 指 令 译 码 ID 指 令 执 行 EX 输 入 输 出 IF/ID ID/EX EX/OUT 快速S1 快速S2 快速S3 快速S1 慢速S2 快速S3 慢速S1 慢速S2 慢速S3 输入 输入 输入 快速输出 慢速输出 慢速输出 a b c 取指令k 取指令k+1 取指令k+2 取指令k+3 译码k 译码k+1 译码k+2 译码k+3 执行k 执行k+1 执行k+2 执行k+3 空间 S 执行 译码 取指令 时间t 时空图的横坐标t表示流水线的执行时间;纵坐标S表示空间,其含义是流水线的各个子功能段,对应于流水线执行指令的各个子过程。在时空图中,流水线的一个子功能段通常也简称为功能段 将浮点流水线加法器分解为求阶差、对阶、尾数加、规格化4个子功能段。图中画出了该流水线的时空图,并假设求阶差、对阶、尾数加、规格化4个子功能段所需要的时间相等 求阶差1 求阶差2 求阶差3 求阶差4 求阶差5 对阶1 对阶2 对阶3 对阶4 对阶5 尾数加1 尾数加2 尾数加3 尾数加4 尾数加5 规格化1 规格化2 规格化3 规格化4 规格化5 求阶差 对阶 尾数加 规格化 空间功能块 0 t1 t2 t3 t4 t5 t6 t7 t8 时间t S1、S2、S3分别表示流水线个子功能段。输入数据从S1功能段输入,完成操作后由S1功能段输出,并作为S2功能段的输入信号,在S2功能段完成相应的操作后,从S2的另一端输出,再作为S3功能段的输入信号,在S3功能段完成相应的操作后,从S3的输出端输出。从而完成了全部操作,数据流出了流水线。数据在流水线中的各个功能段流过时,每一个功能段都流过1次,而且仅仅流过1次 S1 S2 S3 输入 输出 S1、S2、S3分别表示流水线个子功能段。非线性流水线指的是在流水线的各个功能段之间除了有串行的连接之外,还有反馈回路。由于反馈回路的存在,会使得非线性流水线的分析变得复杂。但有时系统中会出现反馈回路,因此,对反馈回路的分析是有着实际应用价值的 S1 S2 S3 输入 输出 a.定点乘法 输入 求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 输入 求阶差 对阶 尾数加 规格化 尾数乘 累加 输出 b.浮点加法 A B A B 1 1 1 1 2 2 2 2 3 3 3 3 … … … … … … … … n-1 n n-1 n-1 n-1 n n n 空间 S1 S4 S3 S2 功能段“空闲”区 功能段“忙”区 功能段“空闲”区 Tk S1 输入 输出 S2 S4 S3 Δt1 Δt Δt2 3Δt Δt3 Δt Δt4 Δt 这是一个具有4个功能段的线性流水线。该流水线的各个功能段的工作时间不相等。S1、S3、S4功能段的工作时间为Δt1 Δt3 Δt4 Δt,S2功能段的工作时间为Δt2 3Δt。当线性流水线中各段的工作时间不完全相等时,线性流水线中就存在“瓶颈”段。图中的S2功能段就是这条流水线表示第一个任务从进入到流出流水线,Δti 表示功能段Si(i 1,…,4)需要使用的时间 S1 S2 S3 S4 1 2 3 … n 1 2 3 … n 1 2 3 … n 1 2 3 … n 空间 n-1 maxΔti T1 时间 将线性流水线的“瓶颈”部分再细分,如图所示。即把第二个功能段再分成三个串联起来的子功能段,分别记为S2-1、S2-2、S2-3,这样,每一个功能段及子功能段的延迟时间均为Δt。根据线性流水线的吞吐率的表达式可以知道,这样做可以提高线Δt 输出 输入 S2-1 S2-2 S2-3 S1 S3 S4 Δt1 Δt Δt3 Δt Δt4 Δt Δt2 3Δt 输入 输出 如果“瓶颈”功能段不能再细分时,则采用若干个相同的“瓶颈”功能段并联重复设置的方法来提高线性流水线的吞吐率。其控制逻辑比较复杂,需要设置一个数据分配器和一个数据收集器 1 1 2 4 8 16 32 64 128 n 2 4 6 8 10 加速比S k 6 k 10 图中画出了k 6和k 10两条线性流水线的加速比曲线。可以看出,当n较大时,加速比曲线接近于它的渐进线。线性流水线的段数k越大,其加速比的上确界也越大 S1 输入 S2 S3 X输出 Y输出 这时一条由三个功能段组成的非线性流水线。有一个输入端,两个输出端。两个输出端分别是X输出端和Y输出端。由于非线性流水线存在反馈连接,因此输出端的位置较为灵活,不必在一定要位于S3功能段的右边 时间(流水周期Δt) 1 2 3 4 5 6 7 8 S3 S2 S1 功能段 X X X X X X X X 预约表中的X表示在对应的流水周期,相应的功能段处于忙碌状态;而表中的空格则表示在对应的流水周期,相应的功能段处于空闲状态 时间(流水周期Δt) 1 2 3 4 5 6 S3 S2 S1 功能段 Y Y Y Y Y Y 表中的Y表示在对应的流水周期,相应的功能段处于忙碌状态,而表中的空格则表示在对应的流水周期,相应的功能段处于空闲状态 S3 S2 S1 时间(流水周期Δt) 1 2 3 4 5 6 7 8 X1 X2 X3 X1 X1 X1X2 X1X2 X2X3 X1X2X3 X1 X4 X1X2 X3X4 X2X3X4 X2X3 X4 9 10 11 … … … 图中Xi(i 1,2,…)表示按照X功能的预约表,以启动距离2输入的第i个任务。可以看出,在第4个流水周期任务X1和X2同时争用S2功能段,从而产生冲突。这种情况还发生在其它的一些功能段 S3 S2 S1 1 2 3 4 5 6 7 8 X1 X1 X1 X1 X1 X1 9 10 11 … … … X1 X2 X2 X1 X2 X2 X2 时间(流水周期Δt) 图中Xi(i 1,2,…)表示按照X功能的预约表,以启动距离5输入的第i个任务。可以看出,在第6个流水周期任务X1和X2同时争用S1功能段,从而产生冲突。这种情况还发生在其它的一些功能段 S3 S2 S1 1 2 3 4 5 6 7 8 X1 X1 X1 X1 X1 X1 9 10 11 … … … X1 X2 X5 12 13 14 15 16 17 18 19 20 21 X2 X2 X2 X3 X2 X1 X3 X4 X4 X5 X3 X4 X4 X5 X3 X4 X4 X7 重复周期 … X2 X3 X3 X4 X2 X3 X5 X6 X5 X5 X6 X6 X7 X2 X3 X4 X5 X6 X5 X6 重复周期 重复周期 重复周期 对图6.19给出的非线,… 构成了一个启动循环 S3 S2 S1 1 2 3 4 5 6 7 8 X1 X1 X1 X1 X1 X1 9 10 11 … … … X1 X3 12 13 14 15 16 17 18 19 20 21 X2 X1 X2 X2 X3 X2 X4 X4 重复周期 … X2 X2 X2 X3 X3 X3 X4 X2 X2 X3 重复周期 X3 对图6.19给出的非线,… 构成了一个启动循环 S3 S2 S1 1 2 3 4 5 6 7 8 X1 X1 X1 X1 X1 X1 9 10 11 … … … X3 X4 X1 X2 X5 12 13 14 15 16 17 18 19 20 21 X2 X2 X2 X2 X2 X2 X2 X1 X3 X4 X3 X4 X3 X4 X3 X4 X3 X4 X3 X4 X3 X4 X5 X6 X2 和X1的启动距离为1 X3 和X2的启动距离为8 X4 和X3的启动距离为1, 如此等等。 X1流出时刻 X2流出时刻 重复周期 … 对图6.19给出的非线… 构成了一个启动循环 1 2 3 4 S3 S2 S1 功能段 X X X S4 X 时间(流水周期Δt) 对于允许启动距离p 1的一阶启动循环,其预约表呈对角线形状 图中画出了流水线从零状态调度向量到各个调度向量之间的状态迁移。最重要的是启动距离,因为它们给出了流水线的无冲突调度方案。虽然启动距离为8的那些数据可以改成大于8的任何正整数,但是这样做会降低流水线的工作速度,因此图中只保留了数据8。这里m 7 3 8 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 8 3 6 8 6 零状态调度向量Z 调度向量 调度向量 t1 t2 t3 t4 t5 t6 S1 X X S2 X S3 X X X 中画出了流水线从零状态调度向量到各个调度向量之间的状态迁移。最重要的是启动距离,因为它们给出了流水线的无冲突调度方案。虽然启动距离为5的那些数据可以改成大于5的任何正整数,但是这样做会降低流水线的工作速度,因此图中只保留了数据5。这里m 4 3 5 0 1 0 1 0 0 1 0 1 1 0 1 1 1 1 1 5 3 5 零状态调度向量Z 调度向量 调度向量 4 0 M u x 0 1 P C 0 M u x 1 1 M u x Address 指令存储器 Read Reg1 Read Reg2 Wrige Reg Write Data Read Data1 Read Data2 寄存器堆 Address Read Data Write Data 数据存储器 符号 扩展 左移 两位 Add ALU Zero Add 16 32 IF功能段 ID功能段 EX功能段 MEM功能段 WB功能段 4 0 M u x 0 1 P C 0 M u x 1 1 M u x Address 指令存储器 Read Reg1 Read Reg2 Wrige Reg Write Data Read Data1 Read Data2 寄存器堆 Address Read Data Write Data 数据存储器 符号 扩展 左移 两位 Add IF/ID ID/EX EX/MEM MEM/WB ALU Zero Add 16 32 4 0 M u x 0 1 P C 0 M u x 1 1 M u x Address 指令存储器 Read Reg1 Read Reg2 Wrige Reg Write Data Read Data1 Read Data2 寄存器堆 Address Read Data Write Data 数据存储器 符号 扩展 左移 两位 Add IF/ID ID/EX EX/MEM MEM/WB ALU Zero Add 16 32 内科 外科 五官科 考察一下4个工人在医院体检的两种不同方式 W1 内科 外科 五官科 W1 内科 外科 五官科 W1 内科 外科 五官科 W2 内科 外科 五官科 W2 内科 外科 五官科 W2 内科 外科 五官科 W3 内科 外科 五官科 W3 内科 外科 五官科 W3 内科 外科 五官科 W4 内科 外科 五官科 W4 内科 外科 五官科 W4 内科 外科 五官科 内科 外科 五官科 这种工作方式的缺点是什么? 答案:效率低 内科 外科 五官科 W1 内科 外科 五官科 W2 W1 内科 外科 五官科 W3 W2 W1 内科 外科 五官科 W4 W3 W2 内科 外科 五官科 W4 W3 内科 外科 五官科 W4 内科 外科 五官科 内科 外科 五官科 返回主调处 时间t 取指令 译码 执行 取指令i 译码i 执行i 取指i+1 译码i+1 执行i+1 时间t i: i+1: 指令流 取指i 译码i 执行i 取指i+1 译码i+1 执行i+1 取指i+2 译码i+2 执行i+2 时间t i: i+1: i+2: 指令流 6.43 6.44 (6.45) (6.46) (6.47) (6.48) (6.49) (6.51) (6.50) (6.52) (6.53) (6.54) (6.55) (6.56) (6.57) 6.20 并行系统效率的一般概念,涉及到可扩展性,等效率函数等概念。 6.22 6.21 6.23 6.24 (6.32) (6.31) (6.34) (6.35) 6.37 6.38 6.39 6.40 6.41 * 国家级教材:张代远 计算机组成原理教程(第二版) * * 国家级教材:张代远 计算机组成原理教程(第二版) * 本章研究的是指令级流水线) 请观察模型机的指令级流水线 时空图 常采用时空图来描述流水线。 时空图反映了流水线的时间-空间关系。 在时空图中,横坐标是流水线的运行时间;纵坐标是流水线的空间,即各子功能段。 假设一个浮点流水线加法器可以分解为求阶差、对阶、尾数加、规格化四个子功能段,就可以画出流水线)。 线性流水线和非线性流水线 线性流水线:各个功能段串连,数据从一个功能段输出,流入另一个功能段,每一个功能段流过一次,仅流过一次。见图6.9。 非线性流水线:除了串行连接外,还有反馈回路。见图6.10。 6.4 流水线) 吞吐率:指在单位时间内完成任务数量或输出结果数量 式中n为任务数;Tk 为k段流水线处理完n个任务所有时间。TP也称为流水线 流水线的性能指标与线性流水线性能分析 吞吐率的一般定义式 加速比:顺序工作方式所用时间与流水方式所用时间的比值。 式中Tk表示k段流水线按照流水线方式处理完n个任务所需要的时间,Ts为按照顺序运行方式处理完这n个任务所需要的时间。 (6.7) 加速比的一般定义式 效率:流水线的各个功能段的利用率。 η的分子是流水线功能段“忙”区占用的面积,分母是“忙”区和“空闲”区的面积之和。图6.12可以帮助理解该公式。 (6.8) 线性流水线的吞吐率 假设线性流水线的各段工作时间相等,记为Δt ,输入的n个任务连续,则一条k段线性流水线的吞吐率TP可以由下面公式计算: (6.10) 6.15 (6.16) 6.17 6.18 6.19 * * * *

  “原创力文档”前称为“文档投稿赚钱网”,本网站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】

http://jubileeny.net/xianxingliushuixian/235.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有