2.07k likes | 2.23k Views
第五章 重叠、流水和现代处理器技术. 北京航空航天大学计算机学院 2005 年 4 月. 主要内容: 基本问题 流水线技术 向量流水技术 现代处理器技术. 基本问题. 如何提高 CPU 执行效率? T CPU =I N * CPI * T C I N : 执行程序中的指令总数; CPI :执行每条指令所需的平均时钟周期数; T C : 时钟周期的时间长度。. 基本问题. 其中: I i 表示第 i 种指令在程序中执行次数 ,CPI I 表示执行一条第 i 类指令所需的平均时钟周期数 , I N 为程序中所有的指令类数. 取指令 k.
E N D
第五章 重叠、流水和现代处理器技术 北京航空航天大学计算机学院 2005 年 4 月
主要内容: • 基本问题 • 流水线技术 • 向量流水技术 • 现代处理器技术
基本问题 如何提高CPU执行效率? TCPU =IN * CPI * TC IN: 执行程序中的指令总数; CPI :执行每条指令所需的平均时钟周期数; TC: 时钟周期的时间长度。
基本问题 其中:Ii表示第i种指令在程序中执行次数,CPII表示执行一条第i类指令所需的平均时钟周期数, IN为程序中所有的指令类数..
取指令k 分析k 取指令k+1 分析k+1 执行k+1 执行k 指令执行方式分析 顺序执行方式 一条指令的执行过程:取指令->分析->执行 • 执行n条指令所用的时间为: • 如每段时间都为t,则执行n条指令所用的时间为:T=3nt • 主要优点:控制简单,节省设备。 • 主要缺点:执行指令的速度慢,功能部件的利用率很低。
取指 分析 执行 取指 分析 执行 取指 分析 执行 一次重叠执行方式(一种最简单的流水线方式) 此时,执行n条指令的时间为:T=(2+2n)t 主要优点:指令的执行时间缩短功能部件的利用率明显提高 主要缺点:需要增加一些硬件控制过程稍复杂
取指k 分析k 执行k 取指k+1 分析k+1 执行k+1 取指k+2 分析k+2 执行k+2 二次重叠执行方式 把取第k+1条指令提前到分析第k条指令同时执行 • 如果三个过程的时间相等,执行n条指令的时间为:T=(2+n)t • 理想情况下同时有三条指令在执行 • 处理机的结构要作比较大的改变(必须采用先行控制方式)
主要内容: • 基本问题 • 流水线技术 • 向量流水技术 • 现代处理器技术
流水线技术 包含以下内容: • 流水线的分类 • 流水线的表示方法 • 流水线的特点 • 流水线的性能分析 • 非线性流水线技术
取指令 译码 执行 保存结果 t1 t2 t3 t4 流水线的分类 • 从流水线具有功能多少来看,可以分为单功能流水线和多功能流水线。 • 单功能流水线只能实现一种功能的流水处理。
输入 输入 1 1 输入 1 减阶 2 减阶 2 对阶移位 对阶移位 3 3 相加 4 相加 4 规格化 规格化 5 5 相乘 6 相乘 6 累加 累加 7 7 输出 输出 8 8 输出 8 流水线的分类 • 多功能流水线是指同一流水线的各段之间可以通过不同的连接方式实现多种不同的运算或功能。 流水功能段 浮点加、减法运算 定点乘法运算
流水线的分类 • 按多功能流水线的各段能否允许同时用多种不同功能连接流水,可把流水线分为静态流水线和动态流水线。 • 静态流水线在某一时间内各段只能按一种功能连接流水。 • 动态流水线的各段在同一时间内可按不同运算或功能连接。
输入 1 减阶 2 对阶移位 3 相加 4 规格化 5 相乘 6 累加 7 输出 8 流水线的分类 • 可同时进行浮点加、减运算和定点乘法运算的流水线
输出 反馈线 输入 S1 S2 S3 S4 流水线的分类 • 从流水线中各功能段之间是否有反馈回路,可以把流水线分为线性流水线和非线性流水线。
取指令 译码 执行 保存结果 t1 t2 t3 t4 流水线的表示方法 • 流水线的表示法有三种:连接图、时空图、预约表。主要考虑前二种。 1、简单流水线的连接图表示 • 流水线的每一个阶段称为流水步、流水步骤、流水段、流水线阶段、流水功能段、功能段、流水级、流水节拍等。 • 一个流水阶段与另一个流水阶段相连形成流水线。指令从流水线一端进入,经过流水线的处理,从另一端流出。 • 有些复杂指令 在执行阶段也采用流水线方式工作,称为操作流水线。
取指 译码 形成操作数地址 取操 作数 执行 保存 结果 流水线的表示方法 2、一种指令流水线 • 一般4至12个流水段,等于及大于8个流水段的称为超流水线处理机。
空间 执行k 执行k+1 执行k+2 执行k+3 分析k 分析k+1 分析k+2 分析k+3 0 t1 t2 t3 t4 t5 时间 流水线的表示方法 3、流水线的时空图 采用“时空图”表示流水线的工作过程。 一条简单流水线的时空图:
空间 NL1 NL2 NL3 NL4 NL5 MA1 MA2 MA3 MA4 MA5 EA1 EA2 EA3 EA4 EA5 ED1 ED2 ED3 ED4 ED5 时间 t1 t2 t3 t4 t5 t6 t7 t8 0 NL:规格化 MA:尾数加 ED:求阶差 EA:对阶 流水线的表示方法 一个浮点加法器流水线的时空图(由求阶差、对阶、尾数加和规格化4个流水段组成):
流水线的主要特点 • 在流水线的每一个功能部件的后面都要有一个缓冲器,称为锁存器、闸门寄存器等,它的作用是保存本流水段的执行结果。 • 各流水段的时间应尽量相等,否则回引起阻塞、断流等。 • 只有连续提供同类任务才能充分发挥流水线的效率。 • 在流水线的每一个流水线段中都要设置一个流水锁存器。 • 流水线需要有“装入时间”和“排空时间”。只有流水线完全充满时,整个流水线的效率才能得到充分发挥。
线性流水线的性能分析 • 衡量流水线性能的主要指标有:吞吐率、加速比和效率 1、吞吐率(Though Put) • 求流水线吞吐率的最基本公式: TP = n / Tkn为任务数, Tk为完成n个任务所用时间 • 各段执行时间相等,输入连续任务情况下完成n个连续任务需要的总时间为:Tk= (k+n-1) Dt k为流水线的段数,D t为时钟周期
空间 1 2 3 … … n-1 n S4 1 2 3 … … n-1 n S3 1 2 3 … … n-1 n S2 时间 1 2 3 … … n-1 n S1 kDt (n-1) Dt nDt (k-1)Dt T 线性流水线的性能分析
线性流水线的性能分析 • 吞吐率:最大吞吐率为: • 各段执行时间不相等、输入连续任务情况下:吞吐率为: • 最大吞吐率为:
输 入 输 出 S1 S2 S3 S4 Dt1=Dt Dt2=3Dt Dt3=Dt Dt4=Dt 空间 1 2 3 … n S4 1 2 3 … n S3 S2 1 2 3 … n 时间 1 2 3 … n S1 SDti (n-1)Dt2 Tk 线性流水线的性能分析 • 流水线各段执行时间不相等的解决办法
S2(3Dt) 输入 输出 S1 S2-1 S2-2 S2-3 S3 S4 Dt Dt Dt Dt Dt Dt S2-1 输入 输出 S1 S2-1 S3 S4 Dt1=Dt Dt3=Dt Dt4=Dt S2-1 Dt2=3Dt 线性流水线的性能分析 一是将“瓶颈”流水段细分(如果可分的话): 二是将 “瓶颈”流水段重复设置:
空间 1 2 3 4 5 6 … -2 -1 n S4 1 2 3 4 5 6 … -2 -1 n S3 3 6 … n S2-3 2 5 … n-1 S2-2 1 4 … n-2 S2-1 1 2 3 4 5 6 … -2 -1 n S1 时间 线性流水线的性能分析 流水段重复设置的流水线
线性流水线的性能分析 2、加速比(Speedup) • 计算流水线加速比的基本公式:S = 顺序执行时间T0 / 流水线执行时间Tk • 各段执行时间相等,输入连续任务情况下加速比为: • 最大加速比为: • 各段执行时间不等,输入连续任务情况下实际加速比为:
加速比 10 K=10 8 6 K=6 4 2 任务个数 1 1 2 4 8 16 32 64 128 线性流水线的性能分析
线性流水线的性能分析 3、效率(Efficiency) 计算流水线效率的一般公式: 各流水段执行时间相等,输入n个连续任务流水线的效率为: 流水线的最高效率为:
空间 1 2 3 … … n-1 n S4 1 2 3 … … n-1 n S3 1 2 3 … … n-1 n S2 时间 1 2 3 … … n-1 n S1 kDt (n-1) Dt nDt (k-1)Dt T 线性流水线的性能分析
线性流水线的性能分析 各流水段执行时间不等,输入n个连续任务流水线的效率为:
输 入 输 出 S1 S2 S3 S4 Dt1=Dt Dt2=3Dt Dt3=Dt Dt4=Dt 空间 1 2 3 … n S4 1 2 3 … n S3 S2 1 2 3 … n 时间 1 2 3 … n S1 SDti (n-1)Dt2 Tk 线性流水线的性能分析
线性流水线的性能分析 流水线的吞吐率、加速比与效率的关系: • 因为 • 因此:E=TP·Dt,S=k·E
线性流水线的性能分析 4、流水线性能分析举例 对于单功能线性流水线,输入连续任务的情况,通过上面给出的公式很容易计算出流水线的吞吐率、加速比和效率。 例5.2:用一条4段浮点加法器流水线求8个浮点数的和:Z=A+B+C+D+E+F+G+H
线性流水线的性能分析 • 解:Z = [(A+B) + (C+D)] + [(E+F) + (G+H)] 空间 1 2 3 4 5 6 7 规格化 1 2 3 4 5 6 7 尾数加 1 2 3 4 5 6 7 对阶 时间 1 2 3 4 5 6 7 求阶差 加数 A C E G A+B E+F A+B+C+D B D F H C+D G+H E+F+G+H Z A+B E+F A+B+C+D 结果 C+D G+H E+F+G+H
线性流水线的性能分析 • 7个浮点加法共用了15个时钟周期。流水线的吞吐率为: • 流水线的加速比为: • 流水线的效率为:
非线性流水线技术 什么是非线性流水线? 如果存在反馈回路,当一个任务在流水线中流过时,在同一个流水段中可能要经过多次。不能每一个时钟周期向流水线输入一个新任务。这样的流水线就是非线性流水线。 非线性流水线的调度问题就是要解决要隔多少个时钟周期向流水线输入一个新任务才能使流水线 的各个流水段都不发生冲突。 表示一个非线性流水线需要用到连接图和预约表。
反馈线 输出 输入 S1 S2 S3 S4 非线性流水线1的连接图 非线性流水线的预约表
反馈线 输出 输入 S1 S2 S3 S4 非线性流水线2的连接图 非线性流水线的预约表
非线性流水线技术 • 预约表横坐标表示流水线的时钟周期,纵坐标表示流水线的各个流水段,中间有“X”表示该流水段在这一个时钟周期处于工作状态,空白表示该流水段在这一个时钟周期不工作。 • 一行中可以有多个“X”,表示一个任务在不同时钟周期重复使用了同一流水段;一列中有多个“X”表示在同一个时钟周期同时占用了多个流水段。预约表的行数是流水线的段数,预约表的列数是一个任务从进入流水线到流水线中输出所经过的时钟周期数。 • 向一条非线性流水线的输入端连续输入两个任务之间的时间间隔称为非线性流水线的启动距离,以时钟周期数表示。
非线性流水线技术 • 当使用某些启动距离时,将在某些流水段发生冲突,即两个或两个以上任务同时争用一个流水段。引起非线性流水线流水段冲突的启动距离称为禁启动止距离。 • 不发生冲突的启动距离是一个循环数列。使非线性流水线的任何一个流水段在任何一个时钟周期都不发生冲突的循环数列称为非线性流水线的启动循环。
两个任务争用一个流水段S1 三个任务争用一个流水段S1 时间 流水段 1 2 3 4 5 6 7 8 9 10 11 … S1 X1 X1X2 X1X2X3 X2X3X4 … S2 X1 X1X2 X2X3 X3X4 … S3 X1 X2 X1 X3 X2 X4 … S4 X1 X2 X3 … 启动距离为3的流水线冲突情况
时间 流水段 1 2 3 4 5 6 7 8 9 10 11 … S1 X1 X1 X1 … X2 X2 X3 S2 X1 … X1 X2 X2 X1 S3 X1 … X2 X2 S4 X2 … X1 启动周期 重复启动周期 非线性流水线技术 启动距离为5的流水线预约表 (5)是一个循环,称为恒定循环。
非线性流水线技术 要正确地调度一条非线性流水线,首先要找出流水线的所有禁止启动距离。所有禁止启动启动距离组合在一起成为一个数列,称为禁止向量。 启动距离为(1,7)循环时的流水线预约表
非线性流水线技术 • 由预约表得到禁止向量的方法: • 将预约表的每一行中任意两个“X”之间的距离都计算出来,去掉重复的,这种数组成的一个数列就是这条非线性流水线的禁止向量。 例如:前述的非线性流水线,其禁止向量为(3,4,6)。 • 把一个启动循环内的所有启动距离相加,然后再除以这个循环内的启动距离个数,就得到这个启动循环的平均启动距离。 • 非线性流水线无冲突调度的主要目标是要找出具有最小平均启动距离的启动循环,按照这样的启动循环向非线性流水线的输入端输入任务,流水线的工作速度最快,而且所有流水段在任何时间都没有冲突。
非线性流水线技术 • 例子:一条有4个流水段的非线性流水线,每个流水段的延迟时间都相等,它的预约表如下图:
非线性流水线技术 (1)写出流水线的禁止向量和初始冲突向量 (2)画出调度流水线的状态图 (3)求流水线的最小启动循环和最小启动距离 (4)求平均启动距离最小的恒定循环。 解:(1)禁止向量为(2,4,6) 冲突向量:用二进制表示,长度是禁止向量的最大距离。冲突向量C=(C6C5C4C3C2C1),由禁止向量,C2=C4=C6=1,其余位为0,冲突向量为 C=(101010)。
非线性流水线技术 (2)由冲突向量构造一张图:将C放到一个6位逻辑右移移位器,当从移位器右移出0,用移位器中的值与初始冲突向量做“按位或”,得到一个新的冲突向量。当移位器移出1,不做任何处理。重复这个步骤。对产生的每一个新的冲突向量做同样处理。在初始冲突向量和所有形成的冲突向量之间,箭头连接。