Transcript Document

第五章
重叠、流水和现
代处理器技术
北京航空航天大学计算机学院
2005 年 4 月
主要内容:
 基本问题
 流水线技术
 向量流水技术
 现代处理器技术
基本问题
如何提高CPU执行效率?
TCPU =IN * CPI * TC
IN : 执行程序中的指令总数;
CPI :执行每条指令所需的平均时钟周期数;
TC : 时钟周期的时间长度。
基本问题
执行整个程序所需CPU时钟周期
CPI 
程序中指令总数
N

 (CPI * I )
i
i 1
i
IN
其中:Ii 表示第i种指令在程序中执行次数,CPII表示执
行一条第i类指令所需的平均时钟周期数, IN 为程序中所有
的指令类数..
指令执行方式分析
顺序执行方式
一条指令的执行过程:取指令->分析->执行
 执行n条指令所用的时间为:
T 
n
 (t 取指令
i
 t 分析 i  t 执行 i )
i 1
 如每段时间都为t,则执行n条指令所用的时间为:T=3nt
 主要优点:控制简单,节省设备。
 主要缺点:执行指令的速度慢,功能部件的利用率很低。
取指令k 分析k 执行k 取指令k+1 分析k+1 执行k+1
一次重叠执行方式(一种最简单的流水线方式)
取指 分析 执行
取指 分析 执行
取指 分析 执行
此时,执行n条指令的时间为:T=(2+2n)t
主要优点:
指令的执行时间缩短
功能部件的利用率明显提高
主要缺点:
需要增加一些硬件
控制过程稍复杂
二次重叠执行方式
把取第k+1条指令提前到分析第k条指令同时执行
 如果三个过程的时间相等,执行n条指令的时间为:
T=(2+n)t
 理想情况下同时有三条指令在执行
 处理机的结构要作比较大的改变(必须采用先行
控制方式)
取指k
分析k 执行k
取指k+1 分析k+1 执行k+1
取指k+2 分析k+2 执行k+2
主要内容:
 基本问题
 流水线技术
 向量流水技术
 现代处理器技术
流水线技术
包含以下内容:
 流水线的分类
 流水线的表示方法
 流水线的特点
 流水线的性能分析
 非线性流水线技术
流水线的分类
 从流水线具有功能多少来看,可以分为
单功能流水线和多功能流水线。
 单功能流水线只能实现一种功能的流水处理。
取指令
t1
译码
t2
执行
t3
保存结果
t4
流水线的分类
 多功能流水线是指同一流水线的各段之间可以通过
不同的连接方式实现多种不同的运算或功能。
1
输入
1
输入
1
输入
2
减阶
2
减阶
3
对阶移位
3
对阶移位
4
相加
4
相加
5
规格化
5
规格化
6
相乘
6
相乘
7
累加
7
累加
8
输出
8
输出
流水功能段
8
输出
浮点加、减法运算
定点乘法运算
流水线的分类
 按多功能流水线的各段能否允许同时用
多种不同功能连接流水,可把流水线分
为静态流水线和动态流水线。
 静态流水线在某一时间内各段只能按一种功
能连接流水。
 动态流水线的各段在同一时间内可按不同运
算或功能连接。
输出
8
累加
7
相乘
6
规格化
5
相加
4
对阶移位
3
减阶
2
1
输入
流水线的分类
 可同时进行浮点加、减运算和定点乘法
运算的流水线
流水线的分类
 从流水线中各功能段之间是否有反馈回
路,可以把流水线分为线性流水线和非
线性流水线。
反馈线
输出
输入
S1
S2
S3
S4
流水线的表示方法
 流水线的表示法有三种:连接图、时空图、预约表。主
要考虑前二种。
1、简单流水线的连接图表示
取指令
t1
译码
t2
执行
t3
保存结果
t4
 流水线的每一个阶段称为流水步、流水步骤、流水段、流水线阶
段、流水功能段、功能段、流水级、流水节拍等。
 一个流水阶段与另一个流水阶段相连形成流水线。指令从流水线
一端进入,经过流水线的处理,从另一端流出。
 有些复杂指令 在执行阶段也采用流水线方式工作,称为操作流
水线。
流水线的表示方法
2、一种指令流水线
取指
译码
形成操
作数地址
取操
作数
执行
保存
结果
 一般4至12个流水段,等于及大于8个流水段
的称为超流水线处理机。
流水线的表示方法
3、流水线的时空图
采用“时空图”表示流水线的工作过程。
一条简单流水线的时空图:
空间
执行k 执行k+1 执行k+2 执行k+3
分析k 分析k+1 分析k+2 分析k+3
0
t1
t2
t3
t4
t5
时间
流水线的表示方法
一个浮点加法器流水线的时空图(由求阶差、对阶、
尾数加和规格化4个流水段组成):
空间
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:对阶
流水线的主要特点
 在流水线的每一个功能部件的后面都要有一个缓冲
器,称为锁存器、闸门寄存器等,它的作用是保存
本流水段的执行结果。
 各流水段的时间应尽量相等,否则回引起阻塞、断
流等。
 只有连续提供同类任务才能充分发挥流水线的效率。
 在流水线的每一个流水线段中都要设置一个流水锁
存器。
 流水线需要有“装入时间”和“排空时间”。只有
流水线完全充满时,整个流水线的效率才能得到充
分发挥。
线性流水线的性能分析
 衡量流水线性能的主要指标有:吞吐率、加速
比和效率
1、吞吐率(Though Put)
 求流水线吞吐率的最基本公式:
TP = n / Tk
n为任务数, Tk为完成n个任务所用时间
 各段执行时间相等,输入连续任务情况下完成
n个连续任务需要的总时间为:
Tk= (k+n-1) t
k为流水线的段数, t为时钟周期
线性流水线的性能分析
空间
S4
1
2
1
2
3 … … n-1 n
1
2
3 … … n-1 n
2
3 … … n-1 n
S3
S2
S1
1
3 … … n-1 n
kt
时间
(n-1) t
nt
(k-1)t
T
线性流水线的性能分析

吞吐率:
TP 
n
(k  n  1)t
最大吞吐率为:
n
1

TP max  Lim
n  ( k  n  1)t
t
 各段执行时间不相等、输入连续任务情况
下:
n
吞吐率为: TP  k
 t  (n  1) max( t , t ,  , t )
i
1
2
k
i 1
 最大吞吐率为:
TPmax
1

max( t1, t 2,  , tk )
线性流水线的性能分析
– 流水线各段执行时间不相等的解决办法
输
入
S1
t1=t
S2
t2=3t
S3
t3=t
S4
t4=t
输
出
空间
S4
S3
S2
S1 1
1
2
1
1
2
2
2
S t i
3
3
… n
… n
n
3
3
…
… n
(n-1)t2
Tk
时间
线性流水线的性能分析
一是将“瓶颈”流水段细分(如果可分的话):
输入
S2(3t)
S1
t
S2-1 S2-2 S2-3
t t t
S3
t
S4
t
输出
二是将 “瓶颈”流水段重复设置:
输入
S2-1
S1
t1=t
S2-1
S2-1
t2=3t
S3
t3=t
S4
t4=t
输出
线性流水线的性能分析
空间
S4
1 2 3 4 5 6
S3
1 2 3 4 5 6
S2-3
3
S2-2
S2-1
S1
6
2
1
1 2 3 4 5 6
…
…
…
…
…
5
4
…
-2 -1 n
-2 -1 n
n
n-1
n-2
-2 -1 n
时间
流水段重复设置的流水线
线性流水线的性能分析
2、加速比(Speedup)
• 计算流水线加速比的基本公式:
S = 顺序执行时间T0 / 流水线执行时间Tk
• 各段执行时间相等,输入连续任务情况下
加速比为:
•
k  n  t
k n
S

(k  n  1)t k  n  1
最大加速比为: S max  Lim k  n
n
k  n 1
k
• 各段执行时间不等,输入连续任务情况下实际
加速比为:
线性流水线的性能分析
k
S
n   ti
i 1
k
 ti  ( n  1)  max( t1, t 2,  , tk)
i 1
10
8
6
4
2
1
加速比
K=10
K=6
1 2 4 8 16 32 64 128
任务
个数
线性流水线的性能分析
3、效率(Efficiency)
计算流水线效率的一般公式:
n个任务占用的时空区
T0
E

k个流水段的总的时空区 k  Tk
各流水段执行时间相等,输入n个连续任务
流水线的效率为:
k  n  t
n
E

k  ( k  n  1)   t k  n  1
流水线的最高效率为:
n
E max  Lim
1
n   k  n  1
线性流水线的性能分析
空间
S4
1
2
1
2
3 … … n-1 n
1
2
3 … … n-1 n
2
3 … … n-1 n
S3
S2
S1
1
3 … … n-1 n
kt
时间
(n-1) t
nt
(k-1)t
T
线性流水线的性能分析
各流水段执行时间不等,输入n个连续任
务流水线的效率为:
k
E
n   ti
i 1
k
k  [ ti (n  1)  max(t1, t 2,  , tk )]
i 1
线性流水线的性能分析
输
入
S1
t1=t
S2
t2=3t
S3
t3=t
S4
t4=t
输
出
空间
S4
S3
S2
S1 1
1
2
1
1
2
2
2
S t i
3
3
… n
… n
n
3
3
…
… n
(n-1)t2
Tk
时间
线性流水线的性能分析
流水线的吞吐率、加速比与效率的关系:
– 因为
n
TP 
(k  n  1)t
S
k n
k  n 1
E
n
k  n 1
– 因此:E=TP· t ,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
BDFH
C+DG+H
E+F+G+H
Z
A+B E+F
A+B+C+D
结果
C+D G+H
E+F+G+H
线性流水线的性能分析
– 7个浮点加法共用了15个时钟周期。
流水线的吞吐率为:
–
n
7
1
TP  
 0  47
Tk 15  t
t
流水线的加速比为:
–
T 0 4  7  t
S

 1  87
Tk
15  t
流水线的效率为:
T0
4  7  t
E

 0  47
k  Tk 4 15  t
非线性流水线技术
什么是非线性流水线?
如果存在反馈回路,当一个任务在流水线中流过时,
在同一个流水段中可能要经过多次。不能每一个时钟周
期向流水线输入一个新任务。这样的流水线就是非线性
流水线。
非线性流水线的调度问题就是要解决要隔多少个时钟
周期向流水线输入一个新任务才能使流水线 的各个流
水段都不发生冲突。
表示一个非线性流水线需要用到连接图和预约表。
反馈线
输出
输入
S1
S2
S3
S4
非线性流水线1的连接图
时间
流水段
S1
S2
S3
S4
1
2
3
4
X
5
6
X
X
X
X
X
X
非线性流水线的预约表
7
反馈线
输出
输入
S1
S2
S3
S4
非线性流水线2的连接图
时间
流水段
S1
1
2
X
4
5
6
X
S2
X
S3
X
S4
3
X
X
X
X
非线性流水线的预约表
7
非线性流水线技术
 预约表横坐标表示流水线的时钟周期,纵坐标表示流水
线的各个流水段,中间有“X”表示该流水段在这一个时
钟周期处于工作状态,空白表示该流水段在这一个时钟
周期不工作。
 一行中可以有多个“X”,表示一个任务在不同时钟周期
重复使用了同一流水段;一列中有多个“X”表示在同一
个时钟周期同时占用了多个流水段。预约表的行数是流
水线的段数,预约表的列数是一个任务从进入流水线到
流水线中输出所经过的时钟周期数。
 向一条非线性流水线的输入端连续输入两个任务之间的
时间间隔称为非线性流水线的启动距离,以时钟周期数
表示。
非线性流水线技术
 当使用某些启动距离时,将在某些流水段发生
冲突,即两个或两个以上任务同时争用一个流
水段。引起非线性流水线流水段冲突的启动距
离称为禁启动止距离。
 不发生冲突的启动距离是一个循环数列。使非
线性流水线的任何一个流水段在任何一个时钟
周期都不发生冲突的循环数列称为非线性流水
线的启动循环。
两个任务
争用一个
流水段S1
时间
流水段
S1
1
2
3
X1
4
三个任务
争用一个
流水段S1
5
X 1X2
X1
X1X 2
S3
X1
X2
X1
7
8
9
X1X2X3
S2
S4
6
11
X3
X 3X4 …
X
1
2
X
X
2
3
启动距离为3的流水线冲突情况
…
…
X2X3X 4
X2X3
X
10
X4
…
…
非线性流水线技术
启动距离为5的流水线预约表
时间
流水段
1
S1
X1
2
4
5
X1
S2
X1
S3
X1
S4
3
6
7
X2
X1
X1
启动周期
9
10
X2
X2
X1
X1
8
11
…
X3
…
…
X2
X2
X2
X2
重复启动周期
(5)是一个循环,称为恒定循环。
…
…
非线性流水线技术
要正确地调度一条非线性流水线,首先要找出流水线的
所有禁止启动距离。所有禁止启动启动距离组合在一起
成为一个数列,称为禁止向量。
时间
流水段
S1
1
2
3
X1 X2
5
6
X1 X2
S3
X1 X2
X1 X 2
7
8
9
10
11
X1 X2 X3 X4
X 1 X2
S2
S4
4
X1 X2
X1 X2
X3
X4
X3
X4
X3
12
13
X3
X4
X3
14
启动距离为(1,7)循环时的流水线预约表
16
X3
X4
X4
X3
X4
15
X4
非线性流水线技术
 由预约表得到禁止向量的方法:
 将预约表的每一行中任意两个“X”之间的距离都计算
出来,去掉重复的,这种数组成的一个数列就是这条非
线性流水线的禁止向量。
例如:前述的非线性流水线,其禁止向量为(3,4,
6)。

把一个启动循环内的所有启动距离相加,然后再除以
这个循环内的启动距离个数,就得到这个启动循环的平
均启动距离。
 非线性流水线无冲突调度的主要目标是要找出具有最小
平均启动距离的启动循环,按照这样的启动循环向非线
性流水线的输入端输入任务,流水线的工作速度最快,
而且所有流水段在任何时间都没有冲突。
非线性流水线技术
 例子:一条有4个流水段的非线性流水线,
每个流水段的延迟时间都相等,它的预约
表如下图:
时间
流水段
S1
S2
S3
S4
1
2
3
4
5
6
X
7
X
X
X
X
X
X
非线性流水线技术
(1)写出流水线的禁止向量和初始冲突向量
(2)画出调度流水线的状态图
(3)求流水线的最小启动循环和最小启动距离
(4)求平均启动距离最小的恒定循环。
解:(1)禁止向量为(2,4,6)
冲突向量:用二进制表示,长度是禁止向量的
最大距离。冲突向量C=(C6C5C4C3C2C1),由
禁止向量,C2=C4=C6=1,其余位为0,冲突向
量为 C=(101010)。
非线性流水线技术
(2)由冲突向量构造一张图:将C放到一个6位逻
辑右移移位器,当从移位器右移出0,用移位器
中的值与初始冲突向量做“按位或”,得到一个
新的冲突向量。当移位器移出1,不做任何处理。
重复这个步骤。对产生的每一个新的冲突向量做
同样处理。在初始冲突向量和所有形成的冲突向
量之间,箭头连接。
7*表示大于等于7
101010
7*
3 7*
1
111111
当右移2、4、6位,
时移出位为1,表示用
这些启动距离输入新
任务要发生冲突,不
做任何处理。
5
7*
101111
5
3
101011
5
当右移1、3、5和大于等于7位时,移出位是0,表示
用这些启动距离输入新任务不会发生冲突。
非线性流水线技术
(3)从状态图中可以找到 简单循环
许多不发生流水段冲突
的启动循环。,只要找
(1,7)
到简单循环,进而确定
(3,5)
平均启动距离最小的启
(5,7)
动循环。它们是:
(1,7)、(3,5,7)、 (3,5,7)
(5,3,7)
(5,7)等
(3,5)
(5)
最小启动循环是具有最
小平均最小启动距离的
(7)
启动循环。
平均启动距离
4
4
6
5
5
4
5
7
非线性流水线技术
 最小循环为(1,7)、(3,5)
 最小恒定循环为(5)
时间
流水
S1
S2
S3
S4
1
2
3
X1
4
5
6
X2
7
8
X1
11
12
X2
X2
13
14
X3
15
16
X3 …
X4
X2 X3
X1 X2
X1
10
X3 X2
X1
X2 X1
X1
9
X4
X3
…
X3
X4
…
X3
最小启动循环为(3,5)的流水线工作状态
X4 …
非线性流水线技术
最小启动循环为(1,7)的流水线工作状态
时间
流水段
S1
S2
1
2
3
4
5
6
7
8 9 10 11 12 13 14 15
X1 X2 X3 X4
X1 X2
X1 X2
X1 X2
X3
X3 X4
X3 X4
S3
X1 X2 X1 X2
X3 X4 X3 X4
S4
X1 X2
X3 X4
非线性流水线技术
恒定启动循环(5)的流水线工作状态
时间
流水段
S1
S2
S3
S4
1
2
3
4
5
X1
X1
X1
X1
X1
启动周期
6
7
8
9 10 11 12 13 14 15
X2 X1
X3 X2
X1 X2
X2 X3
X2
X2
X3
X2
X3
X3
重复启动周期
主要内容:
 基本问题
 流水线技术
 向量流水技术
 现代处理器技术
向量流水技术
• 向量处理的特点
• 向量处理机的基本结构
• 向量处理的方法
• 向量处理的关键技术
向量流水处理的主要特点
1、向量流水处理的主要特点
(1) 各个元素的操作一般相同且数据相互独立,
不存在相关。非常适合于流水处理;
(2) 一条向量指令相当于一个标量循环,可降低对
指令访问带宽的要求;
(3) 一般采用多体交叉存储,支持跨步长度访问
向量处理机的基本概念
具有向量数据表示和向量指令系统的处理机称为向量处
理机。
向量处理机是解决数值计算问题的一种高性能计算机结构。
向量处理机一般都采用流水线结构,往往有多条流水线并行
工作。
向量处理机通常属大型或巨型机,也可以用微机加一台向量
协处理器组成。
一般向量计算机中包括有一台高性能标量处理机。
必须把要解决的问题转化为向量运算,向量处理机才能充分
发挥作用。
一个典型向量求解问题:
Y = a*X + Y
其中X和Y为向量, 初始值存放在存储器中, a为标量。
通常, 根据这一求解表达式是单精度还是双精度操作, 分
别称为SAXPY(Single-precision AX plus Y)或DAXPY循环,
表示是单精度或双精度的A乘X后再加Y。
若用向量机来完成同样操作, 则有:
LD
F0,a
;标量a装入F0
LV
V1,Rx
;装入向量X, LV为向量取指令
MULTV
V2,F0,V1
;向量X与标量a相乘
LV
V3,Ry
;装入向量Y
ADDV
V4,V2,V3
;向量加aX+Y
SV
Ry,V4
;存结果向量, SV为向量存指令
向量机只需执行6条指令, 从而可大大降低对指令带
宽要求
向量处理机的基本结构
向量处理机的基本结构形式
按向量操作对象及结果主要存放方式分类:
1)存储器—存储器工作方式向量机
利用多个独立的存储器模块并行工作。
2)寄存器—寄存器工作方式向量机
主要利用向量寄存器。
存储器-存储器结构
主
存
储
器
操作数
缓冲栈
写结果
缓冲栈
流水线
运算
部件
◎ 采用多个存储体交叉和并行访问来提高存储器速度;
◎ 操作数缓冲栈和写结果缓冲栈主要用于解决访问存储器冲
突;
◎ 主要优缺点:硬件结构简单,造价低。速度相对比较低。
◎ 早期的向量处理多采用这种存储器-存储器结构。
寄存器-寄存器结构(Cray-1)
寄存器-寄存器结构
 把存储器-存储器结构中的缓冲栈改为向量寄存器,运算部件
需要的操作数从向量寄存器中读取,运算的中间结果也写到
向量寄存器中。



向量寄存器与标量寄存器的主要差别是:
一个向量寄存器能够保存一个向量,例如:64个64位寄存器。
采用寄存器-寄存器结构的主要优点:降低主存储器的流量。
例如:寄存器-寄存器结构的CRAY-1与存储器-存储器结
构的STAR-100比较,运算速度高3倍多(时钟周期为40:
12.5),主存储器流量低2.5倍。
1976年,CRAY公司
推出CRAY-1向量机
,开始了向量机的蓬
勃发展,其峰值速度
为0.1 Gflops。
Cray 1
1985年,CRAY-2,1G flops
1990年, SX-3, 22G flops
1991年,Cray-YMP-C90,16Gflops
Cray 2
Cray XMP/4
CRAY Y-MP816系统结构
1991年
多向量处理器
时间并行+空间并行
256交叉存储
16MB-1GB
大量使用寄存器
64位浮点/定点
1983年12月,银河-I巨型计算机由国防科技大学计算机
研究所研制成功。
银河-II并行巨型计算机由国防科技大学计算机研究所
于1992年11月研制成功。
银河1
银河2
向量处理方法
向量处理方式有三种类型:
1.横向处理方式:向量计算是按行的方式从左至右横向地进行。
也称水平处理方式,横向加工方式等。
2.纵向处理方式:向量计算是按列的方式自上而下纵向地进行。
也称垂直处理方式,纵向加工方式等。
3.纵横处理方式:横向处理和纵向处理相结合的方式。
也称分组处理方式,纵横向加工方式等。
以一个简单的C语言编写的程序为例,说明向量的三种处理方式的
工作原理。
for (i = 1;i <= N;i++)
y[i] = a[i] ( b[i] + c[i] );
横向处理方式
逐个分量进行处理:假设中间结果为T(I)。
计算第1个分量:
计算第2个分量:
T(1) =
Y(1) =
T(2) =
Y(2) =
B(1) + C(1)
A(1)  T(1)
B(2) + C(2)
A(2)  T(2)
……
计算最后一个分量:T(N) = B(N) + C(N)
Y(N) = A(N)  T(N)
即逐个求Y中的N个分量, 先进行相加t1←b1+c1, 其中t1为暂存单元,
然后相乘y1←t1×a1。
横向处理方式
 存在两个问题:
 在计算向量的每个分量时,都发生写读数据相关。
流水线效率低。
 如果采用多功能流水线,必须频繁进行流水线切换。
 结论:
 这种加工方式不适合于向量流水处理。
纵向处理方式
先纵向加工所有B和C向量中元素对的相加操作, 中间结果暂存
到t1~tN中, 然后再纵向加工所有对应元素的乘法操作。
T(1) = B(1) + C(1)
T(2) = B(2) + C(2)
……
T(n) = B(n) + C(n)
Y(1) = A(1)  T(1)
Y(2) = A(2)  T(2)
……
Y(n) = A(n)  T(n)
用向量指令形式表示时, 变成:
T=B+C
Y=T×A
纵向处理方式
 特点:
流水线功能的切换只需一次。可获得较高的吞吐率。
数据相关不影响流水线连续工作,可采用向量链接技
术。
 结论:
这种处理方式适用于向量处理机。
纵横处理方式
纵横向加工(或称为分组加工)
以寄存器—寄存器方式工作的向量机都采用这种加工方式。因为向量
寄存器的长度有限(如CRAY-1的长度为64)。当向量长度超过向量寄存器
可表示的最大限度n时, 就不得不分组加以处理。假设向量长度为N, 则
有N=kn+r, 其中n≤N, r<n,n、k、r均为正整数, k为组数, r为余数(余
下的部分也作为一组处理)。它的加工方式是: 组内纵向加工, 组间为横
向加工。
第一组计算:
t1~n=b1~n+c1~n
y1~n=a1~n+t1~n
再算第二组:
tn+1~2n=bn+1~2n+cn+1~2n
yn+1~2n=an+1~2n+tn+1~2n
向量处理的关键技术
 向量与标量性能的平衡
 向量链接技术
 向量循环开采技术
向量与标量性能的平衡
实际的应用问题中通常既有向量计算又有标量计算,
而且两类计算有一定的比例。
向量平衡点(vector balance point):
为了使向量硬件设备和标量硬件设备的利用率相等,一个程序中
向量代码所占的百分比。
 关键问题是:向量硬件和标量硬件都能充分利用,都不空
闲。
向量处理机的向量平衡点必须与用户程序的向量化
程度相匹配。
向量与标量性能的平衡
几种超级计算机向量和标量的性能
机器型号
向量性能
(Mflops)
Cray
IS
Cray
2S
Cray
X-MP
Cray
Y-MP
hitachi
NEC
Fujitsu
S820
SX2
VP4000
85.0 151.5 143.3 201.6 737.3 424.2
207.1
标量性能
(Mflops)
9.8
11.2
13.1
17.0
17.8
9.5
6.6
向量平衡
点
0.90
0.93
0.92
0.92
0.98
0.98
0.97
向量链接技术
向量运算中的相关和冲突
向量运算中的数据相关和功能部件冲突主要有:
• 写读数据相关;
• 读读数据相关,或向量寄存器冲突;
• 运算部件冲突。
V0V1+V2
V3V4  V5
(a)不相关的指令
V0V1+V2
V3V4+V5
(c)功能部件冲突
V0V1+V2
V3V0  V4
(b)写读数据相关
V0V1+V2
V3V1  V4
(d)读读数据相关
向量链接技术
利用向量指令间存在的先写后读的数据相关性来加快向量指令序
列执行速度的技术称为链接技术。具体的说,结果寄存器可能成为
后继指令的操作数寄存器,两条有数据相关的向量指令并行执行。
例如:ADDV
MULTV
V1,V2,V3
;V1←V2+ V3
V4,V1,V5
;V4←V1×V5
分析:这两条指令间对V1向量寄存器存在先写后读相关, 通常必
须等加法指令做完后才可开始乘法指令, 但如果使向量寄存器(例中
的V1)在同一时钟周期内, 既接收一个功能部件送来的运算结果, 又
可把这一结果作为下一个向量指令运算所需的源操作数送给另一个
功能部件, 那就可使这两个部件链接起来进行操作。当链接进入充
分流水操作状态后, 在一个时钟周期内就可同时获取两个操作结果
。
向量链接技术
以CRAY-1为例,设有如下向量运算:
D = A×(B+C)
假设向量长度≤64, 且B和C已由存储器取至V0和V1, 则下面3条
向量指令就可完成上述运算:
LD
V3,A
;V3←a
ADDV
V2,V0,V1
;V2←V0+V1
MULTV
V4,V2,V3
;V4←V2×V3
向量链接技术
LD
V3,A
;V3←a
ADDV
V2,V0,V1
;V2←V0+V1
MULTV
V4,V2,V3
;V4←V2xV3
设被加工向量长度为N
情况一:若这三条指令全部用串行方法则所需时间为:
[(1+6+1)+N-1]+[(1+6+1))+N-1]+[(1+7+1)+N-1]=3N+22
情况二:若前两条指令并行执行, 第三条指令串行执行, 则所需时
间为:
[(1+6+1)+N-1]+[(1+7+1)+N-1]=2N+15拍
情况三:采用并行和链接加速技术后, 执行所需时间为:
(1+6+1)+(1+7+1)+(N-1)=17+N-1=N+16拍
向量链接技术
链接的条件:
1
链接两条或多条指令存在先写后读相关
2
只有当前一指令的第一个结果分量送入结果向量寄存器的那一个时钟
周期方可链接
3
当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,
要求先行的两条指令产生运算结果的时间必须相等, 即要求有关功能
部件的延迟时间相等
4
链接的两条向量指令的向量长度必须相等
5
针对不同的向量机, 可能对链接还有其他特殊限制。如CRAY-1中, 允
许自存储器取数操作参与链接, 但不允许向存储器写数操作实现链接,
因为CRAY-1并不提供这种链接功能。
向量循环开采技术
当向量的长度大于向量寄存器的长度时,必须把长
向量分成长度固定的段,采用循环结构处理这个长向
量,这种技术称为向量循环开采技术,也称为向量分
段开采技术。
例如:A和B为长度N的向量。
for (i=1; i<=N; i++)
a[i]=5*b(i)+c;
向量循环开采技术
当N为64或更小时,产生A数组的7条指令序列是:
• 1:S15.0
• 2:S2C
• 3:VLN
• 4:V0B
• 5:V1S1  V0
• 6:V2S2+V1
• 7:AV2
在标量寄存器内设置常数
将常数C装入标量寄存器
在VL寄存器内设置向量长度
将B向量读入向量寄存器
B数组的每个分量和常数相乘
C和5B(i)相加
将结果向量存入A数组
第4、5、6、7条指令可以采用向量链接执行。当N
超过64时,就需要采用向量循环。
向量循环开采技术
向量的分段开采:
low=1
VL=(N mod MVL)
*找出零头长度值
do 20 j=0, (N/MVL)
*外循环
do 10 i=low, low+VL-1
*以长度VL操作
4:V0B
5:V1S1  V0
6:V2S2+V1
主要操作
7:AV2
10 continue
low=low+VL
*下一向量的开始
VL=MVL
*将长度值恢复成MVL
20 contine
经分段处理后, 第一段长度为n mod MVL, 而以后各段的长度均为
MVL(向量寄存器的长度)。
主要内容:
 基本问题
 流水线技术
 向量流水技术
 现代处理器技术
不能回避的问题
 So Easy ??? No!
 进一步的思考:采用流水线技术所带来
的问题。
取指令
t1
译码
t2
执行
t3
I: add r1,r2,r3
J: sub r4,r1,r3
保存结果
t4
流水线的主要障碍: 相关(Hazard)
研究相关性,不但可作为是否可指令调度的
依据,而且可了解程序固有的并行性以及可以获
得的并行性。
 相关



意味指令的运行、结果产生的顺序有要求,
意味指令的并行运行和改变顺序可能会产生问题,
是否意味指令的流水线运行一定会产生停顿。
流水线的主要障碍: 相关(Hazard)
 流水线3类相关
 结构相关: 硬件不能支持两条指令同时访问
同一个资源
• two dogs fighting for the same bone
 数据相关: 指令依赖于前面尚在流水线中的
指令的执行结果
 控制相关: 在判断转移条件之前,就试图决
策转移方向(分支指令、跳转指令)
 解决相关性问题,提高处理器执行效率,是推
动处理器新技术产生的动力源泉。
结构相关-单口存储器
 指令和数据共用同一个存储器
 存储器为单口存储器
 冲突发生条件
 Instr 1
• 存储器访问指令
• 读写存储器
 Instr 2
• 取指令
结构相关-单口存储器
时间(时钟周期)
Instr 2
DMem
DMem
Ifetch
Reg
DMem
Reg
DMem
Reg
ALU
Instr 1
Reg
ALU
Ifetch
ALU
Load
ALU
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
Ifetch
Instr 3
Ifetch
Instr 4
存储器冲突
Reg
Reg
Reg
DMem
Reg
结构相关解决方案之一:气泡
时间(时钟周期)
Instr 3
DMem
Ifetch
Reg
DMem
Reg
Ifetch
气泡
Reg
气泡
Ifetch
Reg
DMem
Reg
气泡
气泡
Reg
ALU
指 Instr 1
令
执
行 Instr 2
次
序 Stall
Reg
ALU
Ifetch
ALU
Load
ALU
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7
气泡
DMem
Reg
消除结构相关
 原因:资源争用
 方法1: 等待
第一步:检测
第二步:插入等待(空操作/气泡)
 方法2: 投入更多的硬件资源
 双存储器(“Harvard Architecture”)
 多端口存储器(寄存器堆)
三类数据相关
Read After Write (RAW)
先写后读(写未完成,读即发出)
 InstrJ在InstrI完成写之前读
I: add r1,r2,r3
J: sub r4,r1,r3
 起因:基于变量的通讯
 RAW相关是程序相关性中最本质的相关性
之一。
三类数据相关
 Write After Read (WAR)
先读后写
 InstrJ在InstrI完成读之前进行写操作
I: sub r4,r1,r3
J: add r1,r2,r3
K: mul r6,r1,r7
 反相关
 起因:r1的重用
三类数据相关
 Write After Write (WAW)
写后写
 InstrJ在InstrI完成写之前进行写操作
I: sub r1,r4,r3
J: add r1,r2,r3
K: mul r6,r1,r7
 输出相关
 起因是r1的重用
三类数据相关(一般性定义)
无妨假设处理器执行如下形式的操作:rk (ri) op (rj)
则:
rk (ri) op (rj)
rm (rk) op (rn)
称为RAW(Read After Write)相关;
ri(rk) op (rj)
rk (rm) op (rn)
称为WAR(Write After Read)相关;
rk (ri) op (rj)
rk (rm) op (rn)
称为WAW(Write After Write)相关。
三类数据相关(判别)
指令的范围(Range)和域(Domain):
R(i): 指令i所修改的寄存器(或存储器单元)的集合。
D(i): 指令i所读取的寄存器(或存储器单元)的集合。
假设指令j在程序的执行顺序中是指令i的后续指令。
若指令j提前于指令i执行,则可能引起:
RAW相关冲突,如果 R(i)  D(j)  Ø;
WAR相关冲突,如果 D(i)  R(j)  Ø;
WAW相关冲突,如果 R(i)  R(j)  Ø;
RAW相关的解决策略-流水线旁路
or
r8,r1,r9
xor r10,r1,r11
Reg
DMem
Ifetch
Reg
DMem
Ifetch
Reg
DMem
Ifetch
Reg
ALU
and r6,r1,r7
Ifetch
DMem
ALU
sub r4,r1,r3
Reg
ALU
add r1,r2,r3 Ifetch
ALU
指
令
执
行
次
序
ALU
时间 (时钟周期)
Reg
Reg
Reg
Reg
DMem
Reg
Ifetch
Reg
ALU
RAW相关的解决策略-流水线旁路
DMem
Reg
RAW相关仍然存在-Load指令
 旁路未能解决所有问题
and r6,r1,r7
or
r8,r1,r9
DMem
Ifetch
Reg
DMem
Reg
Ifetch
Ifetch
Reg
Reg
Reg
DMem
ALU
sub r4,r1,r6
Reg
ALU
ld r1, 4(r2) Ifetch
ALU
指
令
执
行
次
序
ALU
时间 (时钟周期)
Reg
DMem
Reg
流水线互锁-解决Load引发的RAW相关
and r6,r1,r7
or r8,r1,r9
Reg
DMem
Ifetch
Reg
Bubble
Ifetch
Bubble
Reg
Bubble
Ifetch
Reg
DMem
Reg
Reg
DMem
ALU
sub r4,r1,r6
Ifetch
ALU
ld r1, 4(r2)
ALU
指
令
执
行
次
序
ALU
时间 (时钟周期)
Reg
DMem
WAR和WAW相关
 WAR:
 WAW:
I: sub r4,r1,r3
J: add r1,r2,r3
K: mul r6,r1,r7
I: sub r1,r4,r3
J: add r1,r2,r3
K: mul r6,r1,r7
 这两类相关由寄存器重用引起;
 指令顺序不能改变;
 在单功能流水线中不可能发生。
多功能流水线
ALU
IF
ID
Issue
I: Fmul r1,r4,r3
GPR’s
J: add r1,r2,r3
FPR’s
K: mul r6,r1,r7
I: Fdiv r4,r1,r3
J: add r1,r2,r3
K: mul r6,r1,r7
Fadd
WB
Fmul
Fdiv
定点指令:1 clock
浮点指令:3 clocks
多功能流水线
 对于多功能流水线:
 由每个功能单元的执行时间不同(如定点和
浮点运算)WAR和WAW相关可能引起执行
错误。
 解决WAR和WAW相关的最简单的方法:停
顿(暂停)。
 指令的可以按程序顺序发射(In-orderIssue),但完成顺序则可能与程序顺序不同,
即乱序完成(Out-of-order Complete)。
数据相关的解决策略-指令调度
指令调度:通过改变指令在程序中的位置,将
相关指令之间的距离加大到不小于指令执行延
迟的时钟数,使相关指令成为实际上的无关指
令。
 指令调度(静态)通常由编译完成。
 指令调度(动态)通常采用硬件实现。
硬件动态调度算法
 动机
 编译时某些情况无法判断,可以利用那些只
有运行时才能看到的信息;
 简化编译器设计;
 代码的可移植性好。
 核心思路
 允许暂停后的指令执行;
 寄存器重命名。
硬件动态调度算法
记分板(Scoreboard)
命名起源于CDC 6600,其基本结构:
浮点乘
浮点乘
寄
存
器
文
件
浮点除
浮点加
定点部件
记分板
硬件动态调度算法
其基本控制阶段:
 发射(Issue)
 指令译码
 检测结构相关、写写相关
 当前指令被阻塞后续指令被阻塞
 读操作数(Read operands)
 在没有数据相关的前提下读取操作数
 执行(Execution)
 功能部件执行完后通知记分板控制系统
 写回结果(Write Result)
 记分板检测功能部件的写回,若发现有相关冲突则暂停
硬件动态调度算法
记分板主要部件:
 指令状态表指令处于哪个阶段
 功能部件状态表功能部件当前状态,9个域






Busy—是否正在使用
Op—运算类型(+/-)
Fi—目标寄存器
Fj, Fk—源寄存器
Qj, Qk—产生Fj,Fk的功能部件
Rj, Rk—Fj, Fk就绪标志
 寄存器结果状态表指示哪个功能部件将写入该
寄存器。如果没有指令写该寄存器,则为空。
硬件动态调度算法
 记分板算法对CDC6600的加速比:
 对FORTRAN语言,性能提高1.7倍;
 对手写汇编程序,性能提高2.5倍。
 6600记分板局限性:
 指令窗口小指令调度有限;
 功能部件少结构冒险(整数load/store部件);
 结构冒险暂停发射。
硬件动态调度算法
Tomasulo算法
1. 采用于IBM 360/91浮点部件(1967年);
2. 将记分牌技术和寄存器重命名技术结合起来,
更有效地解决写后写、读后写相关;
 1967年,IBM公司的Robert Tomasulo 开创性的提出了解决
上述问题的方法-------寄存器重命名(Rrgister Renaming)。
 寄存器重命名技术使得在不改变指令系统前提下实际寄存
器数量得到增加。换句话说,可以使用比ISA(Industry
Standard Architecture) 更多的寄存器而依然保持与ISA的兼
容性。
硬件动态调度算法
FP操作
队列
读数缓冲区
丛主存来
写缓冲区
Add1
Add2
Add3
Mult1
Mult2
去主存
保留站
FP加法器
FP乘法器
Common Data Bus (CDB)
硬件动态调度算法
保留站的组成:
 Op:功能单元运算类型 (+或–)
 Vj, Vk: 源操作数值
 Qj, Qk: 产生源操作数的保留站
 Qj,Qk=0  数据就绪
 Busy: 保留站或相关FU忙
 寄存器结果状态表
 指示哪个FU要写哪个寄存器
 如果没有将写入寄存器的未决指令,则该域为空
硬件动态调度算法
 发射—丛FP操作队列中取指令
 如果保留站空闲(没有结构冒险) ,则
 控制单元发射指令&发送操作数(对寄存器进行换名)
 执行—对操作数进行操作(EX)
 如果两个操作数都就绪执行
 如果未就绪监控CDB
 写回—完成执行 (WB)
 通过CDB将结构写入所有等待的功能单元中
 标记保留站可用
 公共数据总线: 数据 + 源 (“来源”总线)
 64位数据 + 4位功能单元源地址
 如果与期望的功能单元匹配则写入 (产生结果)
 广播模式
硬件动态调度算法
Tomsulo算法的基本思想:
 只要操作数一有效就取至保留栈;
 要执行的指令将从保留栈中取得操作数;
 一条指令发射时,取操作数的寄存器被重新命
名为该寄存器保留站的名称。
通过指令发射逻辑和保留站的结合实现寄存器
重命名。
调度算法如何提高执行效率?
例:
执行时间
I1 LD
I2 LD
f2,
f4,
34(r2)
45(r3)
I3
MULTD
f6,
f4,
f2
3
I4
SUBD
f8,
f5,
f2
1
I5 DIVD
f4,
f2,
f8
4
I6
f10,
f6,
f4
1
ADDD
1
很长
顺序发射:
1 (2,1) . . . . . . 2 3 4 4 3 5 . . . 5 6 6
1
2
4
3
5
6
分析
 指令4与指令3无关,是否可以在指令3等待指令2
完成之前,先执行指令4?
 进一步思考,指令是否可以通过乱序发射(Outof-order Issue)或乱序执行(Out-of-order
Execution)提高执行效率?
 实现方法?对一组指令的数据相关情况进行分析,
找出无RAW,WAR,WAW相关冲突指令,送入空
闲执行单元(即无结构相关)执行。
乱序发射(乱序执行)
例:
执行时间
I1 LD
I2 LD
f2,
f4,
34(r2)
45(r3)
I3
MULTD
f6,
f4,
f2
3
I4
SUBD
f8,
f5,
f2
1
I5 DIVD
f4,
f2,
f8
4
I6
f10,
f6,
f4
1
ADDD
1
很长
顺序发射:
1 (2,1) . . . . . . 2 3 4 4 3 5 . . . 5 6 6
乱序发射(执行):
1 (2,1) 4 4 . . . . 2 3 . . 3 5 . . . 5 6 6
1
2
4
3
5
6
乱序发射(执行)
并未提高流水线的
效率!
原因分析

问题:
–
–

什么因素限制了流水线中指令执行的条数?
程序中的那些特征限制了流水线中的可执行指
令的数目?
结论:
–
–
寄存器的数目是限制流水线中可执行指令条数
的关键因素。
仅使用少量寄存器通常不能使流水线工作在满
负荷状态。
如何解决?
例:
执行时间
I1 LD
I2 LD
f2,
f4,
34(r2)
45(r3)
I3
MULTD
f6,
f4,
f2
3
I4
SUBD
f8,
f5,
f2
1
I5 DIVD
f4’,
f2,
f8
4
I6
f10,
f6,
f4’
1
ADDD
1
很长
顺序发射:
1 (2,1) . . . . . . 2 3 4 4 3 5 . . . 5 6 6
乱序发射:
1 (2,1) 4 4 5 . . . 2 3 5 . 3 6 6
寄存器重命名
1
2
4
3
5
6
流水线的效率
提高了!
硬件动态调度算法
记分板
Tomasulo
窗口
<=14指令
<=5指令
结构冒险
暂停
暂停
WAR
通过换名避免
暂停
WAW
通过换名避免
暂停
控制相关
 控制相关:在判断转移条件之前,就试图决策
转移方向(分支指令、跳转指令)
 为解决控制相关问题,必须能够进行转移预测。
 如果预测在

编译时进行(或固定)
----控制相关的静态解决技术

执行时进行动态进行
----控制相关的动态解决技术
转移预测
 动机:
由于转移引起的流水线效率降低极大的影响
了处理器的性能。
现代处理器中的转移预测机制可以很大程度
上(> 95%)消除转移引起的性能下降。
 需要硬件的支持:
指令预测单元的基本构件:BHT(Branch
History Table),BTB(Branch Target Buffer)
静态转移预测
向后转移
90%
向前转移
50%
JZ
JZ
统计表明,转移指令中转移发生的概率为
60~70%。
动态转移预测
动态转移预测就是通过对程序中分支指令过去的行为
考察,预测当前转移指令的行为。
 时间相关性
一条分支指令的历史行为很可能决定着该指令当前的行
为。
 空间相关性
一些分支指令的行为可能是相互关联的。考虑空间相关
性问题,例:
if (x[i] < 7) y+=1;
if (x[i] < 5) c-=4;
如果第一个语句的条件不成立,则第二条语句的条件亦
不成立。
转移预测方法
 基本思想:基于该分支指令的历史记录----根据该
分支指令在最近一次或几次的运行情况(转移成功或失
败),来预测该分支指令的本次运行情况(转移成功或失
败)。
 实现方法:建立一片缓冲区,记录各运行过的分支
指令的运行情况(转移成功或失败)。
 缓冲区如何寻址----根据分支指令地址的低位,究竟
多少位取决于缓冲区大小。
 缓冲区的内容 ----预测位,其长度(多少位)决定能
记录该指令前多少次运行情况。
转移预测方法
转移指令的执行过程:
(1)现场保留。
(2)按预测方向取后继指令。
(3)得到分支结果后
如果预测成功,继续运行;
如果预测失败,恢复保留的现场,从分支处重新执行;
(4)修改预测位。
得到分支结果
分支指令
i-1
i+1
i+2
p+1
p+2
i
转移预测方法
(1)预测位长度为1
预测位内容:记录该指令最近一次分支是否成功,
如 “1”表示分支成功, “0”表示分
支失败。
预测方法: 如果该指令最近一次分支成功则预测
分支成功,反之则预测分支失败。
预测位修改:如果实际运行该指令发现分支成功,则
置预测位为“1”,反之为“0”。
分支不成功
1
分支成功
0
分支成功
分支不成功
转移预测方法
(2)预测位长度为n
n
预测位内容:为 0 到 2 -1 计数器,每次分支结果
出来后,如分支成功则加 1,分支失
则减 1,计数器值增加到 2n-1 后不
再增加,减小到 0 后不再减小。
预测方法: 如果计数器值大于或等于最大值的一
n-1
半 2 ,预测分支成功,反之预测分
支失败。
转移预测方法
N 为 2 时的预测位:
分支预测成功
分支不成功
10
11
分支成功
分支成功
分支不成功
分支成功
分支不成功
00
01
分支预测不成功
分支成功
分支不成功
转移预测方法
Fatch PC
0 0
k
I-Cache
Instructions
Opcode
BHT Index
Offset
2k-Entry BHT,
2bits/Entry
+
Branch?
Target PC
Taken / ¬Taken
转移预测方法
实际试验:
(1)预测位为 2 和预测位为 n 的预测性能差别不大。
(2)预测缓冲区大小增加到 4096 个记录项后预测性
能不再明显增加(只用取指令地址的低 12 位)
(3)在预测位为 2 ,预测缓冲区为 4096 个记录项情
况下,预测准确率为82%99%,即预测失败率为
1%18%。
起作用的前提:目标地址的计算要快于分支结果计
算。
转移预测方法
进一步减少分支延迟:分支目标缓冲
分支指令无延迟的前提:
 分支预测成功
 分支预测和目标地址计算都在 IF 阶段就能完成。
基本思想:设立一个缓冲区(称为分支目标缓冲区,或
BTB ),其中存放最近一次运行时分支成功的分支指令
的信息(指令地址、分支目标 PC ),如果当前指令属于
分支目标缓冲(与其中某一条指令的地址相同),则确定
该指令是分支指令,并预测分支成功,从分支目标缓
冲直接获得目标 PC ;反之,则顺序取指令(普通指令
或预测分支失败的分支指令)。
转移预测方法
当前 PC
查找、比较
地址标示
分支目标 PC
分
支
目
标
缓
冲
命中?
Y
认为本指令是分支指令并且分支成功,
以分支目标 PC 作为下一条指令地址
N
认为本指令不是分支成功的分支指令,
按普通指令处理
转移预测方法
当前 PC 值访问指令存储器和查询 BTB
No
取指令
No
成功分支指令?
BTB 中存在?
Yes
以分支目标 PC 值送 PC
No
普通指令
作为下一条
指令地址
Yes
当前分支成功?
Yes
指令译码
指令执行
以当前指令 PC
值和分支目标
预测错误,清除取
来 的 指 令并 从 分
PC 送入 BTB 中
作为一个新项
支 的 另 外一 个 目
标 取 指 令, 删 除
BTB 中对应项
预测成功,后继指
令无延迟执行
转移预测方法
Fatch PC
PC Entry
Valid
PC Entry
Valid
Target
I - Cache
k
BTB Index
=
Match
现代处理器
 超标量处理器
 超流水线处理器
 超标量超流水线处理器
 三种处理器的比较
 VLIW处理器
超标量处理器-定义和典型结构
 超标量处理机:
一个时钟周期内能够同时发射多条指令的处理机称为
超标量处理机,它必须有两条或两条以上能够同时工
作的指令流水线。
 超标量处理机典型结构:
多条指令流水线、多个功能部件。
先进的超标量处理机有:定点处理部件CPU,浮点处
理部件FPU,图形加速部件GPU,大量的通用寄存器,
两个一级高速Cache,标量处理机的指令级并行度大于
1。
超标量处理器
 Motorola公司的MC88110:
 10个操作部件:
• 整数(2)、位操作、浮点加、浮点乘、浮点除、
图形(2)、Load/Store和指令分配转移部件。
 两个寄存器堆:
• 整数部件通用寄存器堆,32个32位寄存器;
• 浮点部件扩展寄存器堆,32个80位寄存器。每个
寄存器堆有8个端口,分别与8条内部总线相连接,
有一个缓冲深度为4的先行读数栈和一个缓冲深
度为3的后行写数栈。
超标量处理器
 两个独立的高速Cache:
一个数据Cache和一个指令Cache,容量各为8KB,
采用两路组相联方式。
 一个转移目标指令Cache:
在有两路分支时,存放其中一路分支上的指令。
超标量处理器-MC88110的结构
整数
部件
整数
部件
位
操作
浮点
加
乘法
部件
除法
部件
图形
部件
图形
部件
内部总线
读数存
数部件
通用寄
存器堆
扩展寄
存器堆
数据Cache (8KB)
目标
指令
指令分配
转移部件
指令Cache (8KB)
系统总线
32位地址总线
32位数据总线
超标量处理器-单发射和多发射
单发射处理器:





每个周期只取一条指令、只译码一条指令,只执
行一条指令,只写回一个运算结果;
取指部件和译码部件各设置一套;
可以只设置一个多功能操作部件,也可以设置多
个独立的操作部件;
操作部件中可以采用流水线结构,也可以不采用
流水线结构;
设计目标是每个时钟周期平均执行一条指令,
ILP的期望值1。
超标量处理器
单发射处理器的指令流水线时空图
I1
I2
I3
1
IF
2
ID
IF
3
EX
ID
IF
4
5
6
WR
EX WR
ID EX WR
时钟
周期
指令
IF:取指令 ID:指令译码
EX:执行指令
WR:写回结果
超标量处理器
FA1
FA3
浮点加法部件
来自指
令Cache
IF
FA2
MD1 MD2 MD3
ID
乘除法部件
AL
定点ALU部件
WR
通用寄存器
后行写数栈
LS
取数存数部件
由4个操作部件组成的单发射处理器
超标量处理器
 多发射处理器:
 每个周期同时取多条指令、同时译码多条指令,同
时执行多条指令,同时写回多个运算结果;
 需要多个取指令部件,多个指令译码部件和多个写
结果部件
 设置多个指令执行部件,复杂的指令执行部件一般
采用流水线结构
 设计目标是每个时钟周期平均执行多条指令,ILP
的期望值大于1
超标量处理器
I1
I2
I3
I4
I5
1
IF
IF
IF
I6
I7
I8
I9
指令
2
ID
ID
ID
IF
IF
IF
3
EX
EX
EX
ID
ID
ID
IF
IF
IF
4
WR
WR
WR
EX
EX
EX
ID
ID
ID
5
6
WR
WR
WR
EX
EX
EX
WR
WR
WR
多发射处理器的指令流水线时空图
时钟
周期
超标量处理器
FA1
FA2
FA3
浮点加法部件
IF
IF
ID
ID
MD1 MD2 MD3
乘除法部件
AL
定点ALU部件
LS
取数存数部件
WR
WR
超标量处理器
 先行指令窗口:
能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相
关性分析和功能部件冲突的检测。窗口的大小:一般为2至8条指令,
采用目前的指令调度技术,每个周期发射2至4条指令比较合理。
例如:
Intel公司的i860、i960、Pentium处理机,Motolora公司的MC88110
处理机,IBM公司的Power 6000处理机等每个周期都发射两条指令;
TI公司生产的SuperSPARC处理机以及Intel的Pentium III处理机等每个
周期发射三条指令。
 操作部件的个数多于每个周期发射的指令条数。4个至16个操作部
件
 超标量处理机的指令级并行度:1<ILP<m;m为每个周期发射的
指令条数。
超标量处理器
FA1
IF
ID
FA2
FA3
浮点加法部件
MD1 MD2 MD3
IF
ID
乘除法部件
AL
IF
ID
先行指
令窗口
定点ALU部件
LS
取数存数部件
WR
WR
超流水线处理器
 两种定义:
一个周期内能够分时发射多条指令的处理机称为 超流水线处
理器。
指令流水线有8个或更多功能段的流水线处理机称为超流水线
处理器。
 提高处理机性能的不同方法:
超标量处理器是通过增加硬件资源为代价来换取处理器性能。
超流水线处理器则通过各硬件部件充分重叠工作来提高处理器
性能。
 两种不同并行性:
超标量处理器采用的是空间并行性。
超流水线处理器采用的是时间并行性。
超流水线处理器

指令执行时序
 每隔1/n个时钟周期发射一条指令,流水线周期为
1/n个时钟周期;
 在超标量处理机中,流水线的有些功能段还可以进
一步细分;
例如:ID功能段可以再细分为译码、读第一操作
数和读第二操作数三个流水段。也有些功能段不能
再细分,如WR功能段一般不再细分。
超流水线处理器
I1
I2
I3
I4
I5
I6
I7
I8
I9
1
IF
2
ID
3
4
5
6
时钟
周期
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
指令
每个时钟周期分时发送3条指令的超流水线
超流水线处理器

典型处理机结构:
 MIPS R4000处理机每个时钟周期包含两个流水段,
是一种很标准的超流水线处理机结构。指令流水
线有8个流水段
 有两个Cache,指令Cache和数据Cache的容量各
8KB,每个时钟周期可以访问Cache两次,因此在
一个时钟周期内可以从指令Cache中读出两条指令,
从数据Cache中读出或写入两个数据。
 主要运算部件有整数部件和浮点部件。
超流水线处理器
译 码
数 据
Cache
标 志
标 志
存 入
缓 冲 / 对 准 器
指 令
Cache
译 码
IB U S
写 入 缓 冲 器
数 据
标 志
地 址
DBUS
系 统 控 制
存 储 管 理 部 件
浮 点
寄 存 器 堆
浮 点 流 水 线 专 用 通 路
指 令 快 表
指 令 C ache
控 制
快 表 TL B
浮 点 控 制 寄 存 器
浮 点 乘 法 部 件
DVA
数 据 C ache
控 制
浮 点 除 法 部 件
浮 点 加 法 部 件
流 水 线
控 制
转 换 部 件
求 平 方 根 部 件
IV A
地 址 部 件
程 序 计 数 器
通 用 寄 存 器 堆
算 术 逻 辑 部 件 ALU
装入对准器/存入驱动器
整 数 乘 法 / 除 法 部 件
MIPS
R4000 超 流 水 线 处 理 机 结 构
超流水线处理器
IF
IS
指令
Cache
RF
EX
DF
DS
TC
指令
译码
读寄
存器堆
ALU
IF:取第一条指令
RF:读寄存器堆,指令译码
EX:执行指令
DS:取第二个数据
校验;WB:写回结果
数据
Cache
标
志
检
验
IS:取第二条指令
DF:取第一个数据
TC:数据标志
MIPS R4000处理机的流水线操作
WB
寄存
器堆
超流水线处理器
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
RF EX DF DS TC WB
IF
IS
流
水
线
周
期
主时
钟
周期
RF EX DF DS TC WB
当前CPU周期
MIPS R4000正常指令流水线工作时序
超流水线处理器
 如果在LOAD指令之后的两条指令中,任何一条指令
要在它的EX流水级使用这个数据,则指令流水线要暂
停一个时钟周期。
 采用顺序发射方式。
运
行
I1
I2
I3
I4
I5
I6
DF
EX
RF
IS
IF
暂停
DS
DF
TC
DS
运行
WB
TC WB
EX DF
RF EX
IS
RF
IF
IS
Load指令
使用Load数据
DS
DF
EX
RF
TC
DS
DF
EX
WB
TC WB
DS TC WB
DF DS TC WB
超流水线处理器

超流水线处理器性能
 指令级并行度为(1,n)的超流水线处理机,执行N条指令所
的时间为:
T (1 , n )  ( k 
N 1
n
) t
 超流水线处理机相对于单流水线普通标量处理机的加速
比为:
T (1,1)
( k  N  1)  t
S (1, n ) 

N 1
T (1, n )
(k 
)t
n
超流水线处理器
 即:
n ( k  N  1)
S (1, n ) 
nk  N  1
 超流水线处理机的加速比的最大值为:
S (1, n) MAX
n(k  N  1) / N
 lim
n
N  ( nk  N  1) / N
超标量超流水线处理器
将超标量与超流水线技术结合在一起,
就成为超标量超流水线处理器
 指令执行时序:
超标量超流水线处理器在一个时钟周期内分
时发射指令n次,每次同时发射指令m条,每
个时钟周期总共发射指令m × n条。
超标量超流水线处理器
I1
I2
I3
I4
I5
I6
I7
I8
I9
I10
I11
I12
1
IF
IF
IF
2
ID
ID
ID
3
EX
EX
EX
4
5
WR
时钟周期
WR
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
IF
ID
EX
WR
指令
IF
ID
EX
WR
每时钟周期发射3次,每次3条指令
超标量超流水线处理器

典型处理机结构:
 DEC公司的Alpha处理机采用超标量超流水线结构。主要由四个
功能部件和两个Cache组成:整数部件EBOX、浮点部件FBOX、
地址部件ABOX和中央控制部件IBOX。
 中央控制部件IBOX可以同时从指令Cache中读入两条指令,同时
对读入的两条指令进行译码,并且对这两条指令作资源冲突检
测,进行数据相关性和控制相关性分析。如果资源和相关性允
许,IBOX就把两条指令同时发射给EBOX、ABOX和FBOX三个
指令执行部件中的两个。
 指令流水线采用顺序发射乱序完成的控制方式。在指令Cache中
有一个转移历史表,实现条件转移的动态预测。在EBOX内还有
多条专用数据通路,可以把运算结果直接送到执行部件。
超标量超流水线处理器

Alpha 21064处理机共有三条指令流水线
整数操作流水线和访问存储器流水线分为7个流水段,其中,取指
令和分析指令为4个流水段,运算2个流水段,写结果1个流水段。
浮点操作流水线分为10个流水段,其中,浮点执行部件FBOX的
延迟时间为6个流水段。
 所有指令执行部件EBOX、IBOX、ABOX和FBOX中都
设置由专用数据通路。

Alpha 21064处理机的三条指令流水线的平均段数为8段,
每个时钟周期发射两条指令。
因此,Alpha 21064处理机是超标量超流水
线处理机。
超标量超流水线处理器
指 令 C ache( 8K B )
转移历史
表
区号
指令
EB O X
IB O X
FB O X
乘法器
预取器
加法器
资源冲突检测
乘法器/
加法器
移位器
PC计算
指令快表
逻辑单元
定点寄存器堆
(32× 64)
总
线
除法器
接
流水线
控制
浮点寄存器堆
(32× 64)
部
地址发生器
数据快表
读数缓冲器
件
数 据 C ache( 8K B )
区号
数据
Alpha
21064 处理机结构
除法器
数据总线
128位
口
ABOX
写数缓冲器
地址总线
34位
外 部 C ache
控制
超标量超流水线处理器
7个流水段的整数操作流水线
0
IF
1
SWAP
IF
SWAP
I0
I1
A1
A2
WR
2
I0
3
I1
4
A0
5
A1
取值
交换双发射指令、转移预测
指令译码
访问通用寄存器堆,发射校验
计算周期1,IBOX计算新的PC值
计算周期2,查指令快表
写整数寄存器堆,指令Cache命中检测
6
WR
超标量超流水线处理器
7个流水段的访问存储器流水线
0
IF
IF
SWAP
I0
I1
AC
TB
HM
1
SWAP
2
I0
3
I1
4
AC
5
TB
6
HM
取值
交换双发射指令、转移预测
指令译码
访问通用寄存器堆,发射校验
ABOX计算有效数据地址
查数据快表
写读数缓冲栈,数据Cache命中/ 不命中检测
超标量超流水线处理器
10个流水段的浮点操作流水线
0
IF
1
SWAP
IF
SWAP
I0
I1
F1-F5
FWR
2
I0
3
I1
4
F1
5
F2
6
F3
取值
交换双发射指令、转移预测
指令译码
访问通用寄存器堆,发射校验
浮点计算流水线
写回浮点寄存器堆
7
F4
8
F5
9
FWR
超标量超流水线处理器-性能
 指令级并行度为(m,n)的超标量超流水线处理机,连
续执行N条指令所需要的时间为:
N m
T ( m, n )  ( k 
)t
m n
 超标量超流水线处理机相对于单流水线标量处理机
的加速比为:
S (1,1)
( k  N  1)  t
S (m , n ) 

S (m , n ) (k  N  m )t
mn
m  n  ( k  N  1)
S ( m, n ) 
mnk  N  m
 在理想情况下,超标量超流水线处理机加速比的最
大值为: S(m, n)MAX=m n
三种指令级并行处理器性能比较
 超标量处理机、超流水线处理机和超标量超流
水线处理机相对于单流水线普通标量处理机的
性能曲线。
相对性能
超标量
2.5
2.0
1.5
1.0
0.5
0.0
超流水线
超标量
超流水线
1
2
3
4
5
6
7
8
指令级
并行度
三种指令级并行处理器性能比较
 从三种指令级并行处理机的性能曲线中,可以
得出如下结论:
1、三种处理机的性能关系
超标量处理机的相对性能最高,其次是超标量超流
水线处理机,超流水线处理机的相对性能最低,主
要原因如下:
(1) 超标量处理机在每个时钟周期的一开始就同时
发射多条指令,而超流水线处理机则要把一个时钟
周期平均分成多个流水线周期,每个流水线周期发
射一条指令;因此,超流水线处理机的启动延迟比
超标量处理机大。
三种指令级并行处理器性能比较
(2) 条件转移造成的损失,超流水线处理机要比超标
量处理机大。
(3) 在指令执行过程中的每一个功能段,超标量处理
机都重复设置有多个相同的指令执行部件,而超流
水线处理机只是把同一个指令执行部件分解为多个
流水级;因此,超标量处理机指令执行部件的冲突
要比超流水线处理机小。
三种指令级并行处理器性能比较
2、实际指令级并行度与理论指令级并行度
的关系
当横坐标给出的理论指令级并行度比较低时,处理
机的实际指令级并行度的提高比较快。
当理论指令级并行度进一步增加时,处理机实际指
令级并行度提高的速度越来越慢。
在实际设计超标量、超流水线、超标量超流水线处
理机的指令级并行度时要适当,否则,有可能造成花
费了大量的硬件,但实际上处理机所能达到的指令级
并行度并不高。
目前,一般认为,m 和 n 都不要超过4。
三种指令级并行处理器性能比较
3、最大指令级并行度
一个特定程序由于受到本身的数据相关和控制相
关的限制,它的指令级并行度的最大值是有限的,是
有个确定的值。这个最大值主要由程序自身的语义来
决定,与这个程序运行在那一种处理器上无关。对于
某一个特定的程序,图中的三条曲线可能最终都要聚
集到同一个点附近。当然,对于不同程序而言,这个
聚集点的位置也是不同的。
VLIW(超长指令字)处理器
1983年,Yale大学Fisher教授首先提出。
一条长指令来实现多个操作的并行执行,
以减少对存储器的访问,这种长指令可达上百
位(甚至上千位)。
如下面的图。每拍启动一条长指令,执
行3个操作,相当于3条指令,要求并行度为3。
VLIW(超长指令字)处理器
IF
ID
IF
IF
EX
WR
EX
EX
ID
EX
WR
EX
EX
ID
EX
WR
EX
EX
每拍启动1条指令,要求并行度=3
VLIW(超长指令字)处理器
主要特点:
 单一的控制流。只有一个控制器,每个周期启动一
条长指令。
 超长指令字被分成多个控制字段,每个字段直接独
立的控制每个功能部件。
 含有大量的数据通路和功能部件,由于编译器在编
译时间已经考虑可能出现的数据相关和资源相关,
故控制硬件比较简单。
 在编译阶段完成超长指令中多个可并行执行操作的
调度(超长指令字的生成是由编译器完成)。
VLIW(超长指令字)处理器
VLIW处理器的结构框图
RF(寄存器堆)
主
存
LD/ST1
VLIW中的操作字段:
LD/ST2
FADD
FMUL
LD/ST1
LD/ST2
FADD
FMUL
存/取1
存/取2
浮点加
浮点乘
VLIW(超长指令字)处理器
D-cache
主
存
存储器操作部件
1
I-cache
2
2条指令并行
取出并同时译码
指
令
调
度
ALU
FPU
转移控制部件
状态
记录部件
超标量处理器的典型结构
RF
寄存器
堆
VLIW(超长指令字)处理器
区分一条指令和一个操作:
一个操作是指一个计算单位,如加、取、
转移等。这在顺序结构中就是一条指令。而一
条VLIW指令是包含一组同时发出的操作。编
译器的任务就是要确定哪些操作可以组合在一
条指令中。组合在一条VLIW指令中的所有操
作是同时开始执行的。
VLIW(超长指令字)处理器
 VLIW与超标量处理器的比较
 VLIW处理器的控制部分相对超标量处理器而言简
单,因此可以在相同的芯片面积内放入更多的存储
和计算资源;
 VLIW处理器的数据相关、资源冲突等分析由编译
器完成(静态),超标量处理器则由内部硬件完成
(动态);
例题
 例题1
假设一条指令的执行过程分为“取指令”、“分析”
和“执行”三段,每一段的执行时间分别为Δt、2Δt和
3Δt。在下列各种情况下,分别写出连续执行n条指令
所需要的时间表达式。
(1)顺序执行方式。
(2)仅“取指令”和“执行”重叠。
(3) “取指令”、“分析”和“执行”重叠
例题
 [解答1]
(1)顺序执行需要的时间如下:
T  (  t  2  t  3  t)  n  6n  t
(2)取指令和执行重叠,即一次重叠执行方式,我们假设第n+1条
指令的取指令和第n条指令的执行同时结束,那么所需要的时间为:
T   t  (2 t  3 t)  n  5n t   t
(3)取指令、分析和执行重叠
T  (t  2t  3t )  3(n  1)t  3nt  5t
例题
 例题2
一条线性流水线有4个功能段组成,每
个功能段的延迟时间都相等,都为Δt。
开始5个Δt,每间隔一个Δt向流水线输入
一个任务,然后停顿2个Δt,如此重复
。求流水线的实际吞吐率、加速比和效
率。
例题
 [解答2]
流水线的时空图如下:
功能段 4
1
功能段 3
1
功能段 2
功能段 1
1
1
2
2
2
Δt
2
3
3
3
3
4
4
4
4
6
5
5
5
5
6
6
7
7
7
6
7
2Δt 3Δt 4Δt 5Δt 6Δt 7Δt 8Δt 9Δt 10Δt 11Δt 12Δt 13Δt 14Δt 15Δt
例题
我们可以看出,在(11n+1)Δt的时间内,可以输出5n
个结果,如果指令的序列足够长(n→∞),并且指令间
不存在相关,那么,吞吐率可以认为满足:
Tp 
5n
5
5


( n  )
(11n  1)t (11  1 / n)t 11t
加速比为:
5n  4t
20n
20
20
S



( n  )
(11n  1)t 11n  1 11  1 / n 11
从上面的时空图很容易看出,效率为:
T0
20nt
5
5
E



( n  )
k  Tk
4  (11n  1)t 11  1 / n 11
例题
 例题3
用一条5个功能段的浮点加法器流水线计算
10
F   Ai
i 1
每个功能段的延迟时间均相等,流水线的输出端和输
入端之间有直接数据通路,而且设置有足够的缓冲寄
存器。要求用尽可能短的时间完成计算,画出流水线
时空图,并计算流水线的实际吞吐率、加速比和效率。
例题
 [解答3]
首先需要考虑的是10个数的的和最少需要做几次加法。我们可以发现,
加法的次数是不能减少的:9次;于是要尽可能快的完成任务,就只有
考虑如何让流水线尽可能充满,这需要消除前后指令之间的相关。由于
加法满足交换率和结合率,我们可以调整运算次序如以下的指令序列,
我们把中间结果寄存器称为R,源操作数寄存器称为A,最后结果寄存
器称为F,并假设源操作数已经在寄存器中,则指令如下:
I1:
R1←A1+A2
I2:
R2←A3+A4
I3:
R3←A5+A6
I4:
R4←A7+A8
I5:
R5←A9+A10
I6:
R6←R1+R2
I7:
R7←R3+R4
I8:
R8←R5+R6
I9:
F←R7+R8
例题
时空图(略,请参考课堂讲过的例题,注意这并不是唯一
可能的计算方法。)
整个计算过程需要21Δt,所以吞吐率为:
9
3
Tp 

21t
7 t
加速比为:
效率为:
9  5t
45
S 

 2.1429
21t
21
T0
9  5t
3
E


k  Tk
5  21t 7
例题
 例题4
一条线性静态多功能流水线由6个功能段组成,加
法操作使用其中的1、2、3、6功能段,乘法操作使
用其中的1、4、5、6功能段,每个功能段的延迟时
间均相等。流水线的输入端与输出端之间有直接数
据通路,而且设置有足够的缓冲寄存器。现在用这
条流水线计算:
6
F   ( Ai  Bi )
i 1
画出流水线时空图,并计算流水线的实际吞吐率、
加速比和效率。
例题
 [解答4]
为了取得较高的速度,我们需要一次将乘法作完,设
源操作数存放在寄存器A、B中,中间结果存放在寄存
器R中,最后结果存放在寄存器F中,则执行的指令序
列如下所示:
I1:
I2:
I3:
I4:
I5:
I6:
I7:
I8:
I9:
I10:
I11:
R1←A1*B1
R2←A2*B2
R3←A3*B3
R4←A4*B4
R5←A5*B5
R6←A6*B6
R7←R1+R2
R8←R3+R4
R9←R5+R6
R10←R7+R8
F←R9+R10
例题
 这并不是唯一可能的计算方法。假设功能段的延迟为
Δt。时空图(不完全)如下,图中的数字是指令号。
1
2
1
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
1
2
3
4
5
6
2
3
4
5
6
7
8
7
1
2
3
4
5
6
7
8
8
12
14
9
9
9
9
13
15
16
18
10
19
11
10
11
10
10
17
11
11
例题
整个计算过程需要22Δt,所以吞吐率为:
11
Tp 
19 t
加速比为:
11  4t 44
S

19 t
19
效率为:
T0
11 4t
22
E


k  Tk
6 19t
57
例题
 例题5
在下列不同结构的处理器上运行8×8的矩阵乘法
C=A×B,计算所需要的最短时间。只计算乘法指令和
加法指令的执行时间,不计算取操作数、数据传送和程
序控制等指令的执行时间。加法部件和乘法部件的延迟
时间都是3个时钟周期,另外,加法指令和乘法指令还
要经过一个“取指令”和“指令译码”的时钟周期,每
个时钟周期为20ns,C的初始值为“0”。各操作部件的
输出端有直接数据通路连接到有关操作部件的输入端,
在操作部件的输出端设置有足够容量的缓冲寄存器。
例题
1. 处理器内只有一个通用操作部件,采用顺序方式执
行指令。
2. 单流水线标量处理器,有一条两个功能的静态流水
线,流水线每个功能段的延迟时间均为一个时钟周
期,加法操作和乘法操作各经过3个功能段。
3. 多操作部件处理器,处理机内有独立的乘法部件和
加法部件,两个操作部件可以并行工作。只有一个
指令流水线,操作部件不采用流水线结构。
4. 单流水线标量处理器,处理机内有两条独立的操作
流水线,流水线每个功能段的延迟时间均为一个时
钟周期。
例题
5. 超标量处理器,每个时钟周期同时发射一条乘法
指令和一条加法指令,处理机内有两条独立的操
作流水线,流水线的每个功能段的延迟时间均为
一个时钟周期。
6. 超流水线处理器,把一个时钟周期分为两个流水
级,加法部件和乘法部件的延迟时间都为6个流水
级,每个时钟周期能够分时发射两条指令,即每
个流水级能够发射一条指令。
7. 超标量超流水线处理器,把一个时钟周期分为两
个流水级,加法部件和乘法部件延迟时间都为6个
流水级,每个流水级能够同时发射一条乘法指令
和一条加法指令。
例题
 [解答4]
要完成上面的矩阵乘法,我们可以计算需要完成的各种操
作的数量(假定A和B都是8×8的矩阵。C语言代码如下:
int k;
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
{
sum=0;
for(k=0;k<8;k++)
{
sum+=A[i][k]×B[k][j]
}
C[i][j]=sum;
}
需要完成的乘法数目为8×8×8=512次;需要完成的加法数
目为8×8×7=448次;
例题
下面我们分析处理机的结构会给性能带来什么样的影响。
(1)顺序执行时,每个乘法和加法指令都需要5个时钟周
期(取指令、指令分析、指令执行);所以所需要的时
间为:
T  ( 512  448 )  5  20 ns  96000 ns  96 ms
例题
(2)单流水线标量处理机,采用两功能静态流水线时;
因为有足够的缓冲寄存器,所以我们可以首先把所有
的乘法计算完,并通过调度使加法流水线不出现停顿,
所以所需要的时间为:
T  T第一条指令进入流水线  T乘法  T加法
 [ 2 (3  512  1)(3  448  1)
]  20 ns
 19320 ns
例题
(3)多操作部件处理机,只有一条指令流水线。
由于只有一条指令流水线,所以只能一个时钟周
期发射一条指令,我们可以考察加法部件的执行过
程,对C矩阵的第一个元素,当乘法部件完成两次
计算后,加法部件启动运行7次,然后对其余的元
素,加法部件停顿3个时钟周期,然后运行7次。故
执行时间为:
T  [2  (3  2  3  7)  63 (3  3  7)] 20ns
 30820ns
例题
(4)单流水线标量处理机,有两条独立的操作流水
线;
由于只有一条指令流水线,所以只能一个时
钟周期发射一条指令,由于存在足够的缓冲寄
存器,我们可以通过合适的调度消除数据相关。
故执行时间为:
T  [ 2  3  (512  1)  3]  20 ns  10380 ns
例题
(5)超标量机,能同时发射一条加法和一条乘法指令,
有两条独立的操作流水线。
其执行过程和(3)很相象,乘法流水线一直在运行,
而加法流水线因为数据相关而存在停顿。我们可以换
个角度,来考察乘法流水线的运行情况。从第3个时钟
周期,乘法流水线一直忙碌,在乘法流水线完成所有
计算后,加法流水线还需要完成最后一次计算。所以
执行时间为:
T  [2  3  (512  448 )  1]  20 ns  19280 ns
例题
(6)超流水线处理机,每个时钟周期发射两条指令,加
法部件和乘法部件都为6个流水级。
事实上相当于将时钟周期变成了10ns,而加法和乘
法流水线变成了6级。这样和(4)类似有执行时间为:
T  [2  6  (512  448)  1]  10ns  9670 ns
例题
(7)超标量超流水线处理机,一个时钟周期分为两个流
水级,加法部件和乘法部件都为6个流水级,每个流水
级能同时发射一条加法和一条乘法指令。综合(5)和
(6)的分析,我们可以知道,执行时间为:
T  [ 2  6  ( 512  1)  6 ]  10 ns  5250 ns
线性流水线的性能分析
 流水线各段的设备量或各段的价格不相等时:
流水线的效率为:
即:
n个任务占用的加权时空区
E
k个流水段的总的加权时空区
k
E
n   ai  ti
i 1
k
k
 a [ a  t  (n  1)  max(t , t ,, t )]
i
i 1
i
i
1
i 1
 其中,ai < k,且
k
a
i 1
i
k
2
n