Download presentation
Presentation is loading. Please wait.
Published byGülistan Şanlı Modified 5年之前
1
第6章 向量处理机 包仲贤 兰州兰州理工大学计算机与通信学院 2019年2月16日星期六 计算机系统结构 第六章 向量处理机
2
6.1 向量数据表示方式 6.2 向量处理机的结构 6.3 向量处理方式 6.4 向量处理机的关键技术 6.5 向量处理机实例
第6章 向量处理机 6.1 向量数据表示方式 6.2 向量处理机的结构 6.3 向量处理方式 6.4 向量处理机的关键技术 6.5 向量处理机实例
3
具有向量数据表示和向量指令系统的处理机 向量处理机是解决数值计算问题的一种高性能计算机 向量处理机属大型或巨型机,也可以用微机加一台向量协处理器组成 向量处理机一般都采用流水线结构,通常有有多条并行工作的流水线 必须把要解决的问题转化为向量运算,才能发挥向量处理机的效率
4
6.1 向量数据表示方式 6.1.1 从标量到向量 等间距向量表示法 带位移量的向量表示法 稀疏向量表示法
5
在标量处理机上用10多条指令,其中有8条指令要循环1000次。 采用多寄存器结构的两地址指令编写程序 存储器采用字节编址方式,字长为32位
6.1.1 从标量到向量 例6.1:一个简单的C语言程序如下: for (i = 10; i <= 1010; i++) c[i] = a[i] + b[i+5] ; 在向量处理机上, 可以只用一条指令: C(10:1010)=A(10:1010) + B(15 :1015) 一条向量指令可处理N个或N对操作数 在标量处理机上用10多条指令,其中有8条指令要循环1000次。 采用多寄存器结构的两地址指令编写程序 存储器采用字节编址方式,字长为32位
6
LOOP: LOAD R4,A(R3) ;读A向量的一个元素
在一般标量处理机中需要如下指令序列来实现(A、B、C分别是向量a、b、c在内存中的起始地址): START: LOAD R0, ST ;读循环初值10 LOAD R1, ED ;读循环终值1010 LOAD R2, L ;读内存地址增量4 MOVE R3, R2 MUL R3, R0 ;计算向量偏移量, ;初始值为40 LOOP: LOAD R4,A(R3) ;读A向量的一个元素
7
STORE R4, C(R3) ;写C向量的一个元素 ADD R3, R2 ;改变向量偏移量 INC R0 ;循环次数增1
LOAD R5, B(R3) ;读B向量的一个元素 ADD R4, R ;加一个元素 STORE R4, C(R3) ;写C向量的一个元素 ADD R3, R ;改变向量偏移量 INC R ;循环次数增1 CMP R0, R ;循环是否结束 BLE LOOP ;循环未结束转LOOP, ;否则继续 HALT ;停机 ST: ;循环初值 ED: ;循环终值 L: ;内存地址增量
8
6.1.2 等间距向量表示法 三个参数表示一个等间距向量: 向量起始地址:A 向量长度:L 向量间距:f
9
例如:我国研制的银河向量机,有8个向量寄存器V0~V7,每个向量寄存器由64个64位的寄存器组成,存储器字长64位,采用字节编址方式,则连续向量的间距为 f=8。向量指令采用三地址形式: 例如:Vi Vj OP Vk,向量长度(VL)= 50,则实际完成的运算是: V3,00~V3,49与V5,00~V5,49分别相加, 结果放在V1,00~V1,49中。
10
6.1.3 带位移量的向量表示法 用三个参数表示一个向量: 向量基地址:A 向量长度:L 向量位移量:f 向量有效长度:L-f 向量起始地址:A+f 优点:每个向量可以带有位移,能够通过控制向量实现可变增量。 能够表示稀疏向量。
11
带位移量的向量表示法
14
6.1.4 稀疏向量表示法 定义:0元素很多,非0元素很少的向量称为稀疏向量 采用压缩方法存储稀疏向量可以节省存储空间。 可以还原之后进行运算,也可以用压缩方法直接进行运算
16
存储器-存储器结构 多个独立的存储器模块并行工作 处理机结构简单
6.2 向量处理机的结构 主要采用两种方法: 存储器-存储器结构 多个独立的存储器模块并行工作 处理机结构简单 对存储系统的访问速度要求很高 寄存器-寄存器结构 运算通过向量寄存器进行 需要大量高速寄存器 对存储系统访问速度的要求降低
17
1. 存储器-存储器结构 向量处理机中有多个高速流水线运算部件, 存储器的访问速度是关键 采用多个存储体交叉和并行访问来提高存 储器速度
例如:CRAY-1有64个存储体,每个处理机访问4个存储体 STAR-100采用32个存储体交叉,每个存储体并行读出8个64位数据 我国研制的YH-1向量计算机有37个存储体
18
操作数缓冲栈 流水线 主存 储器 运算 部件 写结果缓冲栈
操作数缓冲栈和写结果缓冲栈主要用于解决访问存储器冲突。虽然采用质数个存储体能消除访问存储器的冲突,但是,数据经过多次运算之后,在存储体中分布必然发生改变 主要优缺点: 硬件结构简单, 造价低;速度相对较低 主存 储器 操作数缓冲栈 流水线 运算 部件 写结果缓冲栈
19
2. 寄存器-寄存器结构 把存储器-存储器结构中的缓冲栈改为向量 寄存器 运算部件需要的操作数从向量寄存器中读取,
运算的中间结果也写到向量寄存器中。 向量寄存器与标量寄存器的主要差别是: 一个向量寄存器能够保存一个向量, 连续访问一个向量的各个分量。 需要有标量寄存器和地址寄存器等。
20
采用寄存器-寄存器结构的主要优点: 降低主存储器的流量 例如:采用寄存器-寄存器结构的CRAY-1与采用存储器-存储器结构的STAR-100比较, 运算速度高3倍多, 而主存流量低2.5倍。
21
主存 储器 8MB 64个 个体 8个向量寄存器 8×64×64 12个 流水 线结 构的 运算 部件 缓冲寄存器 64×64 标量寄存器 8×64 缓冲寄存器 64×24 地址寄存器 8×24 指令缓冲寄存器 256×16 CRAY-1向量处理机结构
22
6.3 向量处理方式 有三种处理方式: 横向处理方式,又称为水平处理方式,横向加工方式等。向量计算是按行的方式从左至右横向地进行。 纵向处理方式,又称为垂直处理方式,纵向加工方式等。向量计算是按列的方式自上而下纵向地进行。 纵横处理方式,又称为分组处理方式,纵横向加工方式等。横向处理和纵向处理相结合的方式。
23
要根据向量运算的特点和向量处理机的类型选择向量的处理方式。
以一个简单的C语言编写的程序为例,说明向量的三种处理方式的工作原理。 for (i = 1;i <= n;i++) y[i] = a[i] ×( b[i] + c[i] );
24
1. 横向处理方式 也称为水平处理方式,横向加工方式等 逐个分量进行处理:假设中间结果为T(I) 计算第1个分量: T(1) =B(1)+C(1) Y(1) =A(1)×T(1) 计算第2个分量: T(2) =B(2)+C(2) Y(2) =A(2)×T(2) …… 计算最后一个分量: T(N) =B(N)+C(N) Y(N)=A(N)×T(N)
25
存在两个问题: 在计算向量的每个分量时,都发生写读数据相关。流水线效率低 如果采用多功能流水线,必须频繁进行流水线切换 横向处理方式对向量处理机不适合 即使在标量处理机中,也经常通过编译器进行指令流调度。
26
2. 纵向处理方式 也称为垂直处理方式,纵向加工方式等 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)
27
采用向量指令只需要2条: VADD B, C, T VMUL A, T, Y 这种处理方式适用于向量处理机 数据相关不影响流水线连续工作。 不同的运算操作只需要切换1次。 这种处理方式适用于存储器-存储器结构
28
3. 纵横处理方式 用于寄存器-寄存器结构的向量处理机中,向量寄存器的长度是有限的。 当向量长度N大于向量寄存器长度n时,需要分组处理。
分组方法:N=K·n+r 其中:r为余数, 共分K+1组。 组内采用纵向处理方式,组间采用横向处理方式。因此,也称为分组处理方式,纵横向 加工方式等。
29
运算过程为: 第1组:. T(1, n) = B(1, n) + C(1, n)
运算过程为: 第1组: T(1, n) = B(1, n) + C(1, n) Y(1, n) = A(1, n)×T(1, n) 第2组: T(n+1, 2n) = B(n+1, 2n)+C(n+1, 2n) Y(n+1, 2n) = A(n+1, 2n)×T(n+1, 2n) …… 最后第k+1组: T(kn+1, N) = B(kn+1, N) + C(kn+1, N) Y(kn+1, N) = A(kn+1, N) + T(kn+1, N)
30
每组用两条向量指令, 每组发生相关两次, 其中组内发生数据相关一次, 组间切换时发生相关一次。 主要优点: 减少访问主存储器的次数 例如:中间变量T不写入主存储器
31
6.4 向量处理机的关键技术 6.4.1 向量与标量性能的平衡
实际的应用问题中通常既有向量计算又有标 量计算,而且两类计算有一定的比例 向量平衡点(vector balance point):为了使向 量硬件设备和标量硬件设备的利用率相等, 一个程序中向量代码所占的百分比。 关键问题是:希望向量硬件和标量硬件都能 够充分利用,不要空闲。
32
例如:一个系统的向量运算速度为90Mfolps,
是向量运算,10%是标量运算。则向量平衡 点为0.9。硬件利用率最高。 向量处理机的向量平衡点必须与用户程序的 向量化程度相匹配。 IBM向量计算机的设计思想与上述方法不同, 它维持较低的向量与标量比例,定在3~5的 范围之间。这种做法能够适应通用应用问题 对标量和向量处理要求。
33
几种超级计算机的向量性能和标量性能 机器型号 向量性能 Mflops 标量性能 Mflops 向量平衡点 Cray IS 85.0 9.8 0.90 Cray 2S 151.5 11.2 0.93 Cray X-MP 143.3 13.1 0.92 Cray Y-MP 201.6 17.0 0.92 Hitachi S820 737.3 17.8 0.98 NEC SX2 424.2 9.5 0.98 Fujitsu VP400 207.1 6.6 0.97
34
6.4.2 向量链接技术 向量指令的类型 以CRAY-1向量处理机为例, 有四类指令,两种指令格式: (1) 向量与向量操作:ViVj OP Vk (2) 向量与标量操作:Vi Sj OP Vk (3) 向量取:Vi存储器 (4) 向量存:存储器 Vi
35
一种向量处理机的指令格式
36
V0 V1+V2 V0 V1+V2 V3 V4 × V5 V3 V0 × V4 (a)不相关的指令 (b)写读数据相关
向量运算中的相关和冲突 向量运算中的数据相关和功能部件冲突: 采用顺序发射顺序完成方式 (1)写读数据相关。 (2)读读数据相关,或向量寄存器冲突。 (3)运算部件冲突。 V0 V1+V2 V0 V1+V2 V3 V4 × V5 V3 V0 × V4 (a)不相关的指令 (b)写读数据相关
37
当前一条指令的结果寄存器可以作为后继指令的操作数寄存器时,多条有数据相关的向量指令并行执行,这种技术称为两条流水线的链接技术。
V0 V1+V2 V0 V1+V2 V3 V4+V5 V3 V1 × V4 (c)功能部件冲突 (d)读读数据相关 向量链接技术(chaining) 当前一条指令的结果寄存器可以作为后继指令的操作数寄存器时,多条有数据相关的向量指令并行执行,这种技术称为两条流水线的链接技术。
38
例如:有如下3条向量指令: 1: V3 A 2: V2 V0+V1 3: V4 V2×V3 第1、2条指令没有数据相关和功能部件冲突,可以同时开始执行。 第3条指令与第1、2条指令均存在写读数据相关,可以链接执行。
39
浮点加 1 2 3 4 5 6 浮点乘 1 2 3 4 5 6 7 Mem V0 V1 V2 V3 V4 1 2 3 4 5 6
40
执行的时间为: [(1+6+1)+N-1]+[(1+6+1)+N-1]+[(1+7+1)+N-1] = 3N+22 拍
三种执行方式比较: (1) 如果向量长度为N,三条指令采用串行方法 执行的时间为: [(1+6+1)+N-1]+[(1+6+1)+N-1]+[(1+7+1)+N-1] = 3N+22 拍 (2) 如果前两条指令并行执行,第三条指令串行 执行,则执行时间为: [(1+6+1)+N-1]+[(1+7+1)+N-1] = 2N+15 拍 (3) 如果采用链接技术,则执行时间为: (1+6+1)+(1+7+1)+(N-1)=17+N-1 = N+16 拍
41
实现链接的条件: (1)没有向量寄存器冲突和运算部件冲突。 (2)只有第一个结果送入向量寄存器的那一个 周期可以链接。 (3)先行的两条指令产生运算结果的时间必须 相等。 (4)两条向量指令的向量长度必须相等。
42
6.4.3 向量循环开采技术 当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,采用循环结构处理这个长向量,这种技术称为向量循环开采技术,也称为向量分段开采技术。 例6.2:A和B为长度N的向量。 for (i=1; i<N; i++) a[i]=5*b(i)+c; 当向量长度N为64或更小时,计算A数组的7条指令序列是:
43
1:S15.0 在标量寄存器内设置常数 2:S2C 将常数C装入标量寄存器 3:VLN 在VL寄存器内设置向量长度 4:VoB 将B向量读入向量寄存器 5:V1S1 Vo B数组的每个分量乘常数 6:V2S2+V1 C和5 B(x)相加 7:AV2 将结果向量存入A数组 当N超过64时,要采用向量循环开采技术。 在进入循环前,把N除以64,确定循环次数。 如果有余数,则在第一次循环中首先计算。
44
第4条到第7条指令组成循环 1:S1 在标量寄存器内设置常数 2:S2C 将常数C装入标量寄存器 3:VLN 在VL寄存器内设置向量长度 for (i=0; i>=N/64; i++) { 4:VoB 将B向量读入向量寄存器 5:V1S1 Vo B数组的每个分量乘常数 6:V2S2+V1 C和5 B(x)相加 7:AV 将结果向量存入A数组 }
45
6.4.4 向量递归技术 向量指令一般为3地址,但递归运算用两地址。 用递归向量技术求和: V0V0+V1 C0和C1分别是与向量寄存器V0和V1相关的分量计数器。初始时,计数器C0和C1都置成0,V00中的初始值也置成0。 浮点加法流水线的延迟时间为8个周期。 假定向量长度为64,只作一个向量循环。 在开始的8个周期,计数器C0一直为0,在此之后,每个周期期加1。C1每个周期加1。
46
第1次加法 第2次加法 第8次加法 V00=V00+V10=0+V10 V01=V00+V11=0+V11 ……
V056=V048+V156=V10+V18+V116+V124+V132+V140+V148+V156 V063=V055+V163=V17+V115+V123+V131+V139+V147+V155+V163 经过8次运算,得到8个结果,分别是8个数的和 第1次加法 第2次加法 第8次加法
47
6.5 向量处理机实例 6.5.1 典型向量处理机 CRAY Y-MP向量处理机 向量协处理器
48
6.5.1 典型的向量处理机 向量处理机主要出自美国和日本。 美国著名的向量计算机公司有: CRAY CDC TI等 日本公司有: NEC Fujitsu Hitachi等
49
典型向量处理机 美国和日本制造的向量处理机 机器型号 配置 特点 Cray IS 有10条流水线的 单处理机,12.5 ns,COS/CF7 2.1 第一台基于ECL 的超级计算机, 1976年问世 Cray 2S/4-256 256M字存储器 的4台处理机, 4.lns, COS或 UNIX/CF77 3.0 16K字的本地存 储器,移植了 UNIXV, 1985问世
50
机器型号 配置 特点 Cray X-MP 416 16M字存储器的 4台处理机,128 M字SSD, 8.5ns, COS CF77 5.0 使用共享寄存器 组用于IPC, 1983年问世 Cray Y-MP 832 128M字存储器的 8台处理机, 6ns, CF77 5.0 X-MP的改进 型, 1988年问世 Cray Y-MP C-90 每台处理机2条 向量流水线, 16 台处理机, 4.2ns, Unicos/CF77 5.0 最大的Cray机器 1991年问世
51
机器型号 配置 特点 CDC Cyber 205 有4条流水线的 单处理机, 20ns, 虚拟OS/FTN200 存储器到存储器 系统结构, 1982年问世 ETA 10E 单处理机, 10.5ns, ETAV/FTN 200 Cyber 205的后 继型号, 1985年问世 NEC SX-X/44 每台处理机4组 流水线, 4台处理 机, 2.9ns, F77SX, 22Gflops 1991年问世
52
5条流水线的单 处理机和双标量 处理机, 3.2ns, MSP. EX /F77 EX/VP
机器型号 配置 特点 Fujitsu VP2600/10 5条流水线的单 处理机和双标量 处理机, 3.2ns, MSP. EX /F77 EX/VP 使用可重构微 向量寄存器和 屏蔽, 1991年问世 Hitachi 820/80 512MB存储器, 18条流水线的单 处理机,4ns, FORT77/HAP V23-OC 64个通道,最大 传输速率 288MB/S, 1988年问世
53
6.5.2 CRAY Y-MP向量处理机 由1至8个处理机组成,共享中央存储器、I/O子系统、处理机通信子系统和实时钟。 中央存储器由256个交叉访问的存储体组成。每个处理机对4个存储器端口交叉访问。 CPU的时钟周期为6ns。 每个CPU由14个功能部件组成,分为向量、标量、地址和控制四个子系统。 使用了大量地址寄存器、标量寄存器、向量寄存器、中间寄存器和临时寄存器。 可以实现功能流水线灵活的链接。 I/O子系统支持三类通道,传输速率分别为6兆字节/秒,100兆字节/秒和1G字节/秒。
55
6.5.3 向量协处理器 以中小型机或微机作主机,向量处理部件作为外围设备,加速向量的处理速度。 向量协处理器是为中小型用户设计的,解决科学计算中大量向量处理任务的一种装置。 FPS-164是最典型的向量协处理器,美国浮点系统公司生产。每个向量处理器有两个乘加部件,两组向量寄存器,两组标量寄存器。向量寄存器有2组4个2K个操作数,每个操作数4个字节。 各向量处理器同步地运算,但它们处理的数据各不相同。 向量操作可以和标量处理器中的标量操作同时进行
56
FPS-164向量协处理器的结构
57
本章重点: 1.向量的表示方法 2.向量运算中的相关性与向量链接技术 3.向量循环和递归技术
Similar presentations