43
第第第 第第第第第 第第第 第第第第第

第六章 向量处理机

  • Upload
    teal

  • View
    215

  • Download
    0

Embed Size (px)

DESCRIPTION

第六章 向量处理机. 6.1 向量处理的基本概念. 什么是向量处理? 例如:一个简单的 C 语言程序如下: for (i = 1; i

Citation preview

Page 1: 第六章  向量处理机

第六章 向量处理机第六章 向量处理机

Page 2: 第六章  向量处理机

6.1 6.1 向量处理的基本概念向量处理的基本概念什么是向量处理?什么是向量处理? 例如:一个简单的例如:一个简单的 CC 语言程序如下:语言程序如下:

for (i = 1; i <n; i++)for (i = 1; i <n; i++){{

a[i] = b[i] +c[i] ;a[i] = b[i] +c[i] ; b[i] =2*a[ i+1] ;b[i] =2*a[ i+1] ; }}

在标量处理机在标量处理机上用下述指令实现:上用下述指令实现:

Page 3: 第六章  向量处理机

A 、 B 、 C 分别是向量 a 、 b 、 c 在内存中的起始地址:INITIALIZE I=1

1010 if (i>N ) GOTO 20

read b[I]

read c[I]

add b[I]+c[I]

store a[I]b[I]+c[I]

read a[I+1]

multiply 2*a[I+1]

store b[I] 2*a[I+1]

increment I I+1

goto 10

2020 Stop

常量常量 22 ,, aa ,, bb ,, cc中每一个元素都称为中每一个元素都称为一个标量。该指令序一个标量。该指令序列称为标量指令序列,列称为标量指令序列,执行过程为标量处理执行过程为标量处理过程,每一条指令只过程,每一条指令只处理一个或一对数据。处理一个或一对数据。

Page 4: 第六章  向量处理机

上述程序用向量化指令序列实现为: a[1:n]=b[1:n]+c[1:n]

temp[1:n]=a[2:n+1]

b[1:n]=2*temp[1:n]

将 n 个独立的数构成的整体称为向量,对这一组数的运算称为向量处理。一条向量处理指令可以处理 n 个或 n 对操作数。

Page 5: 第六章  向量处理机

11 )向量处理机是解决数值计算问题的一种高性能计算机结)向量处理机是解决数值计算问题的一种高性能计算机结构构

22 )由于向量内各个元素间很少相关,而且对向量中各元素)由于向量内各个元素间很少相关,而且对向量中各元素一般又是执行同一操作,向量处理机一般都采用流水线一般又是执行同一操作,向量处理机一般都采用流水线结构,有多条流水线并行工作结构,有多条流水线并行工作

33 )一条向量指令对应一个循环的数组运算,一条向量指令)一条向量指令对应一个循环的数组运算,一条向量指令包含大量的数据运算包含大量的数据运算

44 )向量处理机通常属大型或巨型机,也可以用微机加一台)向量处理机通常属大型或巨型机,也可以用微机加一台向量协处理器组成向量协处理器组成

55 )一般向量计算机中包括有一台高性能标量处理机)一般向量计算机中包括有一台高性能标量处理机66 )必须把要解决的问题转化为向量运算,向量处理机才能)必须把要解决的问题转化为向量运算,向量处理机才能

充分发挥作用充分发挥作用

Page 6: 第六章  向量处理机

向量处理机与标量处理机比较:向量处理机与标量处理机比较:1)1) 向量操作比一串标量指令操作更快向量操作比一串标量指令操作更快2)2) 向量流水处理机还可使访存和有效地址计算流水化向量流水处理机还可使访存和有效地址计算流水化3)3) 通过设置多个向量运算部件并且允许多个向量操作同时通过设置多个向量运算部件并且允许多个向量操作同时

进行,可开发对不同元素进行多个向量操作的并行性进行,可开发对不同元素进行多个向量操作的并行性

Page 7: 第六章  向量处理机

向量处理方式向量处理方式要根据向量运算的特点和向量处理机的类型选择向量的处理要根据向量运算的特点和向量处理机的类型选择向量的处理

方式。方式。有三种处理方式:有三种处理方式:

11 ..横向处理方式横向处理方式,,又称为水平处理方式,横向加工方式又称为水平处理方式,横向加工方式等。向量计算是按行的方式从左至右横向地进行。等。向量计算是按行的方式从左至右横向地进行。22 ..纵向处理方式纵向处理方式,,又称为垂直处理方式,纵向加工方式又称为垂直处理方式,纵向加工方式等。向量计算是按列的方式自上而下纵向地进行。等。向量计算是按列的方式自上而下纵向地进行。33 ..纵横处理方式纵横处理方式,,又称为分组处理方式,纵横向加工方又称为分组处理方式,纵横向加工方式等。横向处理和纵向处理相结合的方式。式等。横向处理和纵向处理相结合的方式。

以一个简单的以一个简单的 CC 语言编写的程序为例,说明向量的三种处语言编写的程序为例,说明向量的三种处理方式的工作原理。理方式的工作原理。for (i = 1for (i = 1 ;; i <= ni <= n ;; i++)i++)

y[i] = a[i] ×( b[i] + c[i] );y[i] = a[i] ×( b[i] + c[i] );

Page 8: 第六章  向量处理机

横向处理方式横向处理方式 也称为水平处理方式,横向加工方式等也称为水平处理方式,横向加工方式等

逐个分量进行处理:假设中间结果为逐个分量进行处理:假设中间结果为 T[I]T[I]计算第计算第 11 个分量:个分量: T[1]T[1] == B[1]B[1] ++ C[1] Y[1] C[1] Y[1] == A[1]×A[1]×T[1]T[1]计算第计算第 22 个分量:个分量: T[2]T[2] == B[2]B[2] ++ C[2] Y[2] C[2] Y[2] == A[2]×A[2]×T[2]T[2]…………最后一个分量: 最后一个分量: T[N]T[N] == B[N]B[N] ++ C[N] Y[N]C[N] Y[N] == A[N]×A[N]×T[N]T[N]

存在两个问题:存在两个问题:在计算向量的每个分量时,都发生写读数据相关。流水线效率低在计算向量的每个分量时,都发生写读数据相关。流水线效率低如果采用多功能流水线,必须频繁进行流水线切换如果采用多功能流水线,必须频繁进行流水线切换

横向处理方式对向量处理机不适合横向处理方式对向量处理机不适合即使在标量处理机中,也经常通过编译器进行指令流调度。即使在标量处理机中,也经常通过编译器进行指令流调度。

Page 9: 第六章  向量处理机

纵向处理纵向处理 也称为垂直处理方式,纵向加工方式等也称为垂直处理方式,纵向加工方式等

T[1] = B[1] + C[1]T[1] = B[1] + C[1]T[2] = B[2] + C[2]T[2] = B[2] + C[2]…………T[n] = B[n] + C[n]T[n] = B[n] + C[n]Y[1] = A[1]×T[1]Y[1] = A[1]×T[1]Y[2] = A[2]×T[2]Y[2] = A[2]×T[2]…………Y[N] = A[N] ×T[N]Y[N] = A[N] ×T[N]

采用向量指令只需要采用向量指令只需要 22 条:条:VADDVADD BB , , CC , , TTVMULVMUL AA , , TT , , YY

这种处理方式适用于向量处理机,这种处理方式适用于向量处理机,数据相关不影响流数据相关不影响流水线连续工作。不同的运算操作只需要切换水线连续工作。不同的运算操作只需要切换 11 次。次。

Page 10: 第六章  向量处理机

纵横处理方式纵横处理方式 将长度为 n 的向量分成若干组,每组长度为

m ,组内按纵向方式处理,依次处理各组。 用于寄存器 - 寄存器结构的向量处理机中

向量寄存器的长度是有限的,例如,每个向量寄存器有 64 个寄存器。当向量长度 N大于向量寄存器长度 n 时,需要分组处理。

分组方法: n = K·m+r ,其中: r 为余数,共分 k+1 组。

组内采用纵向处理方式,组间采用横向处理方式。因此,也称为分组处理方式,纵横向加工方式等。

Page 11: 第六章  向量处理机

6.2 6.2 向量处理机结构向量处理机结构向量处理机的基本思想是把两个向量的对应分量进行运向量处理机的基本思想是把两个向量的对应分量进行运

算,产生一个结果向量。最算,产生一个结果向量。最关键问题关键问题是存储器系统能是存储器系统能够满足运算部件带宽的要求。够满足运算部件带宽的要求。

主要采用两种方法:主要采用两种方法:1. 1. 存储器-存储器结构存储器-存储器结构多个独立的存储器模块并行工作多个独立的存储器模块并行工作处理机结构简单,对存储系统的访问速度要求很高处理机结构简单,对存储系统的访问速度要求很高

2. 2. 寄存器-寄存器结构寄存器-寄存器结构运算通过向量寄存器进行运算通过向量寄存器进行需要大量高速寄存器,对存储系统访问速度的要求降低需要大量高速寄存器,对存储系统访问速度的要求降低

Page 12: 第六章  向量处理机

存储器-存储器结构存储器-存储器结构下图说明一个具有 8 个存储体的向量处理机:

M

M

流水结构加法器A

B

C=A+B

三条互相独立的数据通路,可并行三条互相独立的数据通路,可并行工作,同一个存储模块同时只能为工作,同一个存储模块同时只能为一个通路服务一个通路服务

M

M

M

M

M

M

Page 13: 第六章  向量处理机

向量处理示例 1 :求 C=A+B ,设 A 、 B 、 C 的存储形式如图:

……C[4]B[6]A[0]

……C[5]B[7]A[1]

……C[6]B[0]A[2]

……C[7]B[1]A[3]

……C[0]B[2]A[4]

……C[2]B[3]A[5]

……C[3]B[4]A[6]

……C[4]B[5]A[7]

模块 0

模块 1

模块 2

模块 3

模块 4

模块 5

模块 6

模块 7

A 、 B 、 C 在主存储器中的存放情况

Page 14: 第六章  向量处理机

流水段 1流水段 2流水段 3流水段 4

W4W4RB6RB6RA0RA0

W5W5RB7RB7RA1RA1

W6RA2RA2RB0RB0

RA3RA3RB1RB1

W0W0RA4RA4RB2RB2

W1W1RA5RA5RB3RB3

W2W2RA6RA6RB4RB4

W3W3RA7RA7RB5RB5

76543210

76543210

76543210

76543210

M0

M1

M2

M3M4

M5

M6

M7

0 1 2 3 4 5 6 7 8 9 10 11 12

两个向量在流水线方式下分量相加的时序图两个向量在流水线方式下分量相加的时序图时间(时钟周期)时间(时钟周期)

Page 15: 第六章  向量处理机

在流水线的输入端和输出端增加缓冲器可以消除争在流水线的输入端和输出端增加缓冲器可以消除争用存储器现象。用存储器现象。

可变延迟器

可变延迟器

主存储器

流水结构加法器

A

B

C

延迟延迟 44 个时钟周个时钟周期期

延迟延迟 22 个时钟周期个时钟周期

Page 16: 第六章  向量处理机

W0RB8RB8RA8RA8RB0RB0RA0RA0

RB9RB9RA9RA9RB1RB1RA1RA1

RB10RA10RA10RB2RB2RA2RA2

RA11RA11RB3RB3RA3RA3

RA12RB4RB4RA4RA4

RB5RB5RA5RA5

RB6RB6RA6RA6

RB7RB7RA7RA7

76543210

76543210

6543210

543210

M0

M1

M2

M3M4

M5

M6

M7

0 1 2 3 4 5 6 7 8 9 10 11 12

流水段 1流水段 2流水段 3流水段 4

存储器发生冲突时两个向量相加的时序图存储器发生冲突时两个向量相加的时序图

Page 17: 第六章  向量处理机

寄存器寄存器 -- 寄存器结构寄存器结构 把存储器 - 存储器结构中的缓冲栈改为向量寄存器,

运算部件需要的操作数从向量寄存器中读取,运算的中间结果也写到向量寄存器中。

向量寄存器与标量寄存器的主要差别是:一个向量寄存器能够保存一个向量,

例如: 64 个 64位寄存器。连续访问一个向量的各个分量。

需要有标量寄存器和地址寄存器等。 采用寄存器 - 寄存器结构的主要优点:降低主存储

器的流量。例如:采用寄存器 - 寄存器结构的 CRAY-1 与采用存储器 - 存储器结构的 STAR-100 比较,运算速度高 3倍多,而主存流量低 2.5倍。

STAR-100 的主存储器流量: 32×8W/1.28us=200MW/SCRAY-1 的主存储器流量: 4W/50ns=80MW/S

Page 18: 第六章  向量处理机

V7V6

V5

CRAY-1CRAY-1 向量处理机结构向量处理机结构

存储器

V4

32

10

V3V2

V1V0

S7S6

S5S4

S3S2

S1S0

A7A6

A5A4

A3A2

A1A0

标量缓冲寄存器

地址缓冲寄存器

加 1记数移位

逻辑运算整数加标量部件

整数乘整数加地址部件

移位逻辑运算整数加向量部件

迭代求倒浮点乘浮点加向量部件

VM (向量屏蔽)

RTC (实时时钟计数器)

XA

VL

P

NIP CIP

LIP执行指令执行缓冲

寄存器

+1

01.15

T0.T63

B0.B63

0..63

向量控制

向量控制(向量长度)

交换控制

标量寄存器

地址寄存器

向量寄存器 ViVjVk

Page 19: 第六章  向量处理机

.

.

.

Vi

.

.

.

Vj

12...n

.

.

.

Vk

.

.

.

ViSj

.

.

.

Vk

存储器

.

.

.

Vk

.

.

.

Vi

存储器

功能部件

功能部件

功能部件

功能部件

12...n

12...n

12...n

第 1 种向量 - 向量指令

第 2 种向量 - 标量指

第 3 种向量 - 存储器指

令CRAY-1CRAY-1 的四种向量指令的四种向量指令

运算流水线

第 4 种向量 - 存储器指

Page 20: 第六章  向量处理机

5. 向量归约指令( vector reduction instruction ) : 操作数来自寄存器,操作结果为标量数据,如从一个向量中找出最大值、最小值和中间值等。

6. 聚集 -散射指令( gather and scatter instruction ) : 将两个向量寄存器(分别存放数据和变址值)聚集分布在存储器中的向量元素,或者把向量元素散射到存储器中。聚集指令根据变址值把存储器中某个稀疏向量的非 0 元素取出放到向量寄存器中。散射指令进行相反的操作,把一个向量以稀疏向量的形式存入存储器中,其 0项由变址值指出。

7. 屏蔽指令(masking instruction ) :利用屏蔽向量将一个向量压缩或者展开成一个较短或较长的索引向量。

Page 21: 第六章  向量处理机

1.1. 向量处理机系统结构的设计目标 向量处理机系统结构的设计目标

2.2.提高向量处理机性能的常用技术提高向量处理机性能的常用技术

6.3 6.3 提高向量处理机性能的办法提高向量处理机性能的办法

Page 22: 第六章  向量处理机

向量处理机系统结构的设计目标向量处理机系统结构的设计目标 较好地维持向量较好地维持向量 //标量性能平衡标量性能平衡 向量平衡点(向量平衡点( vector balance point)vector balance point) 定义定义为:为:为了使向量硬件设备和标量硬件设备的利为了使向量硬件设备和标量硬件设备的利用率相等,一个程序中向量代码所占的百分比。用率相等,一个程序中向量代码所占的百分比。

例如:系统在向量模式下能够达到例如:系统在向量模式下能够达到 9Mflops9Mflops ,,在标量模式下能够达到在标量模式下能够达到 1Mflops1Mflops 的运算速度,的运算速度,假设代码的假设代码的 90%90% 是向量运算,是向量运算, 10%10% 是标量运是标量运算,这样花在两种模式上的计算时间相等,那算,这样花在两种模式上的计算时间相等,那么向量平衡点为么向量平衡点为 0.90.9 。。

Page 23: 第六章  向量处理机

几种超级计算机的向量性能和标量性能几种超级计算机的向量性能和标量性能(了解)(了解)

机器型号机器型号

Fujitsu VP400Fujitsu VP400

Cray ISCray IS

Cray 2SCray 2S

Cray X-MPCray X-MP

Cray Y-MPCray Y-MP

Hitachi S820Hitachi S820

NEC SX2NEC SX2

向量性能向量性能MflopsMflops

标量性能标量性能MflopsMflops 向量平衡点向量平衡点

85.085.0 9.89.8 0.900.90

151.5151.5 11.211.2 0.930.93

143.3143.3 13.113.1 0.920.92

201.6201.6 17.017.0 0.920.92

737.3737.3 17.817.8 0.980.98

424.2424.2 9.59.5 0.980.98

207.1207.1 6.66.6 0.970.97

Page 24: 第六章  向量处理机

可扩展性随处理机数目的增加而提高可扩展性随处理机数目的增加而提高 可扩展性的三个目标:规模可扩展性、可扩展性的三个目标:规模可扩展性、换代可扩展性、问题可扩展性。换代可扩展性、问题可扩展性。

提供高性能的提供高性能的 I/OI/O 和易访问的网络和易访问的网络

Page 25: 第六章  向量处理机

提高向量处理机性能的常用技术提高向量处理机性能的常用技术多功能部件并行操作 提高相邻的两条或多条向

量指令的执行速度链接技术

加快条件语句和稀疏矩阵的处理 使循环向量化,以提高向量处理的速度加快向量的归约操作

Page 26: 第六章  向量处理机

多功能部件的并行操作1. 向量寄存器冲突( Vi冲突)2. 功能部件冲突 向量寄存器冲突( Vi冲突):并行工作的各向量指令的源向量

或者结果向量使用相同的 Vi 。包括源向量冲突、结果向量冲突、先读后写的向量冲突和源目向量相关。

V3 V1 + V2 V3 V1 + V2V6 V1*V5 V3 V4 * V5源向量冲突 结果向量冲突

V3 V1 + V2 V3 V1 + V2V1 V4*V5 V5 V3 * V4先读后写的向量冲突 源目向量相关

发生源目向量相关的两条指令在不发生其它 Vi冲突和功能部件冲突的前提下,可通过链接机构将两条向量指令的处理过程链接起来,实现两条指令的流水处理。

Page 27: 第六章  向量处理机

功能部件冲突:指同一功能部件被一条以上的要求并行工作的向量指令所使用。如下面两条指令由于都使用了向量加法部件,因此,存在向量加法部件使用冲突。

V3 V1+ V2V6 V4 +V5

向量链接技术 (chaining) 指在不出现向量寄存器冲突和功能部件冲突时,通过链接机构将有源目向量相关的前后两条或多条向量指令进行链接而实现并行处理的技术。 机器会自动检查每一条向量指令是否可能与它前一条或两条向量指令(两个向量长度相同且首元素时间对准时)存在源目向量相关(同时无向量寄存器冲突和功能部件冲突),若存在,则在前一条或两条指令的第一个结果分量都到达向量寄存器组且可以作为本条向量指令的源操作数时,立即启动本条指令工作而形成链。有了链接技术,就可以使一些存在源目向量相关的指令也能并行处理。 CRAY-1 共有 8个向量寄存器组,一般可以有 2-5 个功能部件链接在一起工作。

Page 28: 第六章  向量处理机

例如:求向量运算 D=A*( B+C ),若向量的长度 N《 =64 ,向量的分量为浮点熟,且向量 B 、 C已取到 V0 、 V1 中。试分析采用下述三条指令实现功能而采用的链接技术。

V3 A / 访存取 A 向量 /V2 V0 + V1 /B 向量和 C 向量相加 /V4 V2×V3 /浮点乘,存 D 向量 /

[ 分析 ] :第一、二条指令没有向量寄存器冲突和功能部件冲突,故这两条向量指令可以并行执行;第三条指令与第一、二条指令均无功能部件冲突,但存在向量寄存器冲突,由于向量寄存器冲突属于源目向量相关,因此只要第一条指令中的结果 V3 的第一个分量与第二条指令的结果响亮 V2 的第一个分量均产生,就可以通过链接机构将这一对分量直接送往浮点乘功能部件,链接执行第三条指令。 如下页图所示,访存与浮点加并行执行,再与浮点乘链接执行,执行上述三条指令,获得第一个结果分量并存入 V4 ,所需要的拍数(也称为链接流水线的流水时间)为:

1 6 1 1 7 1 = 17拍启动访存 访存 存 V3 送浮乘部件 浮乘 存 V4 由于每一拍可取得一个结

果分量存入 V4 ,因此获得全部结果分量所需拍数

为 17+( N-1 )送浮加部件 浮加 存 V2 送浮乘部件

Page 29: 第六章  向量处理机

.

.

.

V0

.

.

.

V1

12...6

.

.

.

V2

存储器

.

.

.

V3

浮点加

访存

12...6

并行与潋接操作过程图

12...7

.

.

.

V4

浮点乘

Page 30: 第六章  向量处理机

实现链接的条件:(1) 没有向量寄存器冲突和运算部件冲突。(2) 只有第一个结果送入向量寄存器的那一个周期可以链接。(3) 先行的两条指令产生运算结果的时间必须相等。(4) 两条向量指令的向量长度必须相等。

Page 31: 第六章  向量处理机

例:在 CRAY-1 机上,设向量的长度均为 64 ;所用浮点功能部件的执行时间分别为:相加需 6拍,相乘需 7拍,从存储器读数需 6拍,存入寄存器及启动功能部件各需 1拍。问下列各指令组中,组内哪些指令可以链接?哪些指令不可以链接?不能链接的原因是什么?并分别计算出下列各指令组全部完成所需要的拍数。( 1) V2V0*V1

V3 存存存V4V3+V5

( 2) V0 存存存V1V2+V3V4V5*V6

( 3) V0存储器V2V0*V1V3V0+V4

解 :(1) 第三条向量指令与第二条向量指令有源目向量相关,可以链接执行;第一条向量指令与第二、三条向量指令无关,可以与它们并行执行。

1 6 1 1 7 1 64-1 = 79拍启动访存 访存 存 V3 送浮加部件 浮加 存 V4 第

一分量存 V4 其它分量送浮乘部

件浮乘 浮乘 存 V2送浮

加部件

Page 32: 第六章  向量处理机

(2) 三条向量指令都无关,所以,三条向量指令可以并行执行。1 6 1 1 64-1 = 72拍

启动访存送浮加部件送浮加部件送浮乘部件送浮乘部件

访存浮加浮乘

存 V0

存 V1

浮乘

存 V4 第一分量

存 V4 其它分量

(3) 第二条向量指令与第一条向量指令有源目向量相关,可以链接执行;第三条向量指令与第二条向量指令有源向量冲突,故只能等到第二条向量指令执行完毕后,才能执行第三条向量指令。

1 6 1 1 7 1 64-1 1 6 1 64-1 = 151拍

启动访存

访存

存V0

送浮乘部件送浮乘部件

浮乘

存V2

送浮加部件送浮加部件

浮加

存V3

注意: 1 )在分析向量指令的处理时,特别关注无关向量指令的并行执行,源目向量相关的向量指令的链接执行,除源目向量相关外其它发生向量寄存器冲突的向量指令的串行执行,功能部件冲突的向量指令的串行执行以及向量内部各分量流水处理之间的区别。 2 )启动、输出延迟(各 1拍)

Page 33: 第六章  向量处理机

加快稀疏矩阵的执行速度稀疏矩阵:许多元素为 0 的矩阵。解决办法:稀疏向量程序段

DO 10 I=1 , NA( K( I )) =A( K( I )) B( K( I ))

完成对稀疏向量 A 和 B 求和,其中 K 、 M 为指标向量,指明 A 、 B 中的非 0 元素。

4

100

4251

600400250200

0200400

0600250

0

100101102103104105106

1234

1234

I= I=

存储器地址

稠密向量寄存器A( K( I )) 稀疏向量 A( I )指标向量寄存器

K( I )VL 寄存器

基址寄存器

聚合操作

Page 34: 第六章  向量处理机

4

100

4251

600400250200

0200400

0600250

0

100101102103104105106

1234

1234

I= I=

存储器地址

稠密向量寄存器A( K( I )) 稀疏向量 A( I )指标向量寄存器

K( I )VL 寄存器

基址寄存器

散射操作

Page 35: 第六章  向量处理机

当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,采用循环结构处理这个长向量,这种技术称为向量循环开采技术,也称为向量分段开采技术。例如: A 和 B 为长度 N 的向量。for (i=1; i<N; i++) a[i]=5*b(i)+c;当 N 为当 N 为 64 或更小时,产生 A 数组的 7 条指令序列是:

1 : S1¬5.0 在标量寄存器内设置常数2 : S2C 将常数 C装入标量寄存器3 : VLN 在 VL 寄存器内设置向量长度4 : VoB 将 B 向量读入向量寄存器5 : V1S1* Vo B 数组的每个分量和常数相乘6 : V2S2 + V1 C 和 5*B(x) 相加7 : AV2 将结果向量存入 A 数组

向量循环开采技术向量循环开采技术

Page 36: 第六章  向量处理机

6.5 6.5 向量处理机的性能评价向量处理机的性能评价衡量向量处理机性能的主要指标有: 向量指令处理时间 Tvp

最大性能 R半性能向量长度 n1/2

向量方式的工作速度优于标量串行工作时所需的向量长度的临界值1 、向量指令处理时间 Tvp

执行一条向量长度为 n 的向量指令的时间 Tvp , Ts 为向量流水线的建立时间,包括向量起始地址设置、计数器加 1 、条件转移指令执行等, Tvf 第一对向量元素通过流水线的时间, t 为流水线时钟周期,则有:

Tvp = Ts+Tvf+(n-1)t=[s + e + (n - 1)] t

其中: s 为向量流水线建立时间所需的时钟周期数。 e 为完成第一对向量元素操作所需的子操作数。

Page 37: 第六章  向量处理机

把几条能在一个时钟周期内同时开始执行的向量指令称为一个编队,同一个编队中的指令一定不存在功能部件冲突和数据相关。

例 1 :假设一台向量处理机中功能部件的启动开销为:取数和存数部件为12 个时钟周期、乘法部件为 7 个时钟周期、加法部件为 6 个时钟周期。先把序列向量操作分成编队,然后计算每个编队的开始时间、获得第一个结果元素的时间和获得最后一个结果元素的时间。

LV V1 , Rx ;取向量 x

MULTSV V2 , F0 , V1 ;向量和标量相乘

LV V3 , Ry ;取向量 Y

ADDV V4 , V2 , V3 ;加法

SV Ry , V4 ;存结果

解:第一条指令 LV 为第一个编队。 MULTSV 指令和第二条 LV 指令为第二个编队。 ADDV 指令为第三个编队。 SV 指令为第四个编队。

Page 38: 第六章  向量处理机

如果采用向量链接技术(不考虑访问存储器的冲突),需要:12 + 7 + 6 + 12 + n – 1 = 36 + n 个周期。

如果考虑向量长度大于向量寄存器长度时,则需要分段开采。向量长度为 n 的一组向量操作的整个执行时间为:

其中: Tloop 为执行标量代码的开销,Tstart 为每个编队的向量启动开销, MVL 是向量寄存器的长度。 Tloop 可以看作是一个常数, Cray 1 机的 Tloop 约等于 15 。

chimestartloopn TnTTMVL

nT

Page 39: 第六章  向量处理机

例 2 :在一台向量处理机上实现 A = B×s 操作,其中 A 和 B 是长度为 200 的向量, s 是一个标量。向量寄存器长度为 64 。各功能部件的启动时间与上例相同。求总的执行时间。解:因为向量长度超过了向量寄存器的长度,所以要采取分段开采方法。每次循环主要由下面三条向量指令组成:

LV V1 , Rb ;取向量 BMULTVS V2 , V1 , Fs ;向量和标量相乘SV Ra , V2 ;存向量

假设 A 和 B 的分别放在 Ra 和 Rb之中, s 在 Fs 中。三条指令之间存在有写读数据相关,因此必须把它们分成 3 个编

队, Tchime= 3 。T200 = 4×(15 + Tstart) + 200×3

= 60 +( 4×Tstart ) + 600

= 660 +( 4×Tstart )其中: Tstart=12 + 7 + 12 = 31 ,

因此, T200 = 660 + 4×31 = 784

每个结果元素的平均这些时间为: 768/200 = 3.9 个周期。

Page 40: 第六章  向量处理机

例 3 :在某台向量处理机上执行代码代码如下:1 : LV V1 , Rx ;取向量 x2 : MULTSV V2 , F0 , V1;向量和标量相乘3 : LV V3 , Ry ;取向量 Y4 : ADDV V4 , V2 , V3 ;加法5 : SV Ry , V4 ;存结果考虑访问存储器冲突,向量寄存器长度为 n 、各功能部件的启

动时间与上例相同。求总的执行时间。解:指令 1 、 2 ,指令 3 、 4 和指令 5 分成三个编队,前两个编队中两条指令采用向链接技术执行。Tchime=3 , Tloop=15 , Tstart=12+7+12+6+12=49 , VL=64 。

64+4n=

3n64+n=3n 491564

n=

TnTTMVL

nT chimestartloopn

Page 41: 第六章  向量处理机

2 、最大性能 R

•R 表示当向量长度为无穷大时的向量流水线的最大性能。•常在评价峰值性能时使用,单位为 MFLOPS 。

最大性能 R 表示为:

其中: n 为向量长度;

Tn 为一组向量操作的整个执行时间。•对于例 3 ,假设时钟频率为 200MHZ 。每个循环有 2个浮点操作:

RTn

n

n

n

lim

lim

×浮点运算次数 时钟频率循环所花费的时钟周期数

浮点运算次数 时钟频率

RMHZnn

MHZMFLOPS

n

2 2004 64

2 2004

100lim

Page 42: 第六章  向量处理机

3 、半性能向量长度 n1/2

•为达到一半 R 值所需的向量长度称为半性能向量长度 n1/2 。

•主要评价向量流水线建立时间对性能的影响。

CRAY-1 的 n1/2 = 10 ~ 20 , CYBER 205 的 n1/2 = 100 。

由 MFLOPS 定义可知:

对于例 3 ,如果向量处理机的时钟频率为 200MHz 。

因为: R=100MFLOPS ,因此有:

100 / 2 = 2 n1/2 / Tn1/2×200

假设: n1/2 64 ,因此: Tn1/2 = 64 + 3 n1/2

解得: 100 / 2 = 2 n1/2 / (64 + 3 n1/2)×200

n1/2 = 12.8 所以: n1/2 = 13

MFLOPS =n

n 1/ 2

1/ 2

执行 循环时的浮点运算次数执行 循环的时钟周期数

时钟周期秒

- 10 6

Page 43: 第六章  向量处理机

4 、向量和标量的平衡点 nv

向量和标量的平衡点 nv表示向量流水方式的工作速度优于标量串行方式时所需的向量长度临界值。若向量的长度 n>nv ,则表示向量流水方式的工作速度优于标量串行方式;反之,则表示采用标量串行方式处理各元素时,速度优于向量流水方式。

例:某向量处理机其向量流水方式的执行速率 RV=10MFLOPS ,标量方式执行速率 RS=1MFLOPS ,设 a 是程序中可向量化的百分比。要求:

1) 推导该向量机的平均执行速率 Ra 的公式2) 为使平均执行速率 Ra=7.5MFLOPS ,则 a 的值应取何值?解: 1) aRvaRsa

Ra901

1

111

1

./*/)( ——=

+=

a901

157

..

—=

a≈0.963

2)