向量处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1.4 稀疏向量表示法
定义:0元素很多,非0 0 A2 0 A4 压缩 元素很少的向量称为 A2 A7 0 稀疏向量 A4 0 采用压缩方法存储稀疏 0 压缩位向量 A A7 0 0 1 0 1 0 0 1 向量可以节省存储空 压缩向量 B 稀疏向量 B 间。 B0 B0 B4 0 还原 可以还原之后进行运算, B7 0 0 也可以用压缩方法直 B4 0 接进行运算 压缩位向量 A 0
第6章 向量处理机
6.1 向量数据表示方式 6.2 向量处理机的结构 6.3 向量处理方式 6.4 向量处理机的关键技术 6.5 向量处理机实例 6.6 向量处理机的性能评价 6.7 向量处理机的发展
具有向量数据表示和向量指令系统的处理机 向量处理机是解决数值计算问题的一种高性能计算机 向量处理机属大型或巨型机,也可以用微机加一台向 量协处理器组成 向量处理机一般都采用流水线结构,通常有有多条并 行工作的流水线 必须把要解决的问题转化为向量运算,才能发挥向量 处理机的效率
6.2 向量处理机的结构
主要采用两种方法:
存储器-存储器结构
多个独立的存储器模块并行工作 处理机结构简单 对存储系统的访问速度要求很高
寄存器-寄存器结构
运算通过向量寄存器进行 需要大量高速寄存器 对存储系统访问速度的要求降低
1. 存储器-存储器结构
向量处理机中有多个高速流水线运算部件, 存储器的访问速度是关键 采用多个存储体交叉和并行访问来提高存 储器速度 例如:CRAY-1有64个存储体,每个处理机 访问4个存储体 STAR-100采用32个存储体交叉,每个存储 体并行读出8个64位数据 我国研制的YH-1向量计算机有37个存储体
要根据向量运算的特点和向量处理机的类 型选择向量的处理方式。
以一个简单的C语言编写的程序为例,说明向 量的三种处理方式的工作原理。
for (i = 1;i <= n;i++) y[i] = a[i] ×( b[i] + c[i] );
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)
6.1.2 等间距向量表示法
三个参数表示一个等间距向量: 向量起始地址:A 向量长度:L 向量间距:f
长 度 L VI,0 VI,1 VI,2 …… VI,L-1 A A+f A+2f …… A+(L-1)f
例如:我国研制的银河向量机,有8个向量寄存 器 V0 ~V7 ,每个向量寄存器由 64 个64 位的寄 存器组成,存储器字长64位,采用字节编址方 式,则连续向量的间距为 f=8。向量指令采用 三地址形式:
采用寄存器-寄存器结构的主要优点: 降低主存储器的流量 例如:采用寄存器-寄存器结构的CRAY-1与 采用存储器-存储器结构的STAR-100比较, 运算速度高3倍多, 而主存流量低2.5倍。
主存 储器 8MB 64个 个体
8个向量寄存器 8×64×64
缓冲寄存器 64×64 缓冲寄存器 64×24
存在两个问题: 在计算向量的每个分量时,都发生写读数 据相关。流水线效率低 如果采用多功能流水线,必须频繁进行流 水线切换
横向处理方式对向量处理机不适合 即使在标量处理机中,也经常通过编译器 进行指令流调度。
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)
6.1 向量数据表示方式 6.1.1 从标量到向量 6.1.2 等间距向量表示法 6.1.3 带位移量的向量表示法 6.1.4 稀疏向量表示法
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位
例如:一个系统的向量运算速度为90Mfolps, 标量运算速度为10Mfolps。如果程序的90% 是向量运算,10%是标量运算。则向量平衡 点为0.9。硬件利用率最高。 向量处理机的向量平衡点必须与用户程序的 向量化程度相匹配。 IBM向量计算机的设计思想与上述方法不同, 它维持较低的向量与标量比例,定在3~5的 范围之间。这种做法能够适应通用应用问题 对标量和向量处理要求。
1 0 0 0 1 0 0 1 B7
稀疏向量 A
压缩向量 A
0
压缩位向量 A 0 1 0 1 0 0
1wenku.baidu.com
压缩向量 C=A + B C0=B0 C2=A2 C4=A4+B4 C7=A7+B7
压缩向量 C=AB C4=A4B4 C7=A7B7
压缩位向量 C=AB 0 0 0 0 1 0 0 1 压缩位向量 C=AB 1 0 1 0 1 0 0 1
操作数缓冲栈和写结果缓冲栈主要用于解决 访问存储器冲突。数据经过多次运算之后, 在存储体中分布必然发生改变 主要优缺点: 硬件结构简单, 造价低;速度相对较低
主存 储器
操作数缓冲栈
写结果缓冲栈
流水线 运算 部件
2. 寄存器-寄存器结构
把存储器-存储器结构中的缓冲栈改为向量
寄存器运算部件需要的操作数从向量寄存 器中读取,运算的中间结果也写到向量寄存 器中。 向量寄存器与标量寄存器的主要差别是: 一个向量寄存器能够保存一个向量,连续 访问一个向量的各个分量。需要有标量寄存 器和地址寄存器等。
1FF80 B-4 起始地址 1FFA0 B-3 1FFC0 B-2 位移量-4 1FFE0 B-1 20000 B0 基地址 20020 B1 有效长度 8 20040 B2 20060 B3 B 向量:A=20000,L=4,f=-4 0 1 0 0 1 0 1 40000 40004 控制向量:A=40000,L=12,f=4 1
30000 C0 基地址 30020 C1 位移量 2 30040 C2:C2 起始地址 30060 C3:A5 + B-3 30080 C4:C4 长度 10 300A0 C5:C5 有效长度 8 300C0 C6:A8 + B0 300E0 C7:C7 30100 C8:A10 + B2 30120 C9:A11 + B3 C 向量:A=30000,L=10,f=2
标量寄存器 8×64 地址寄存器 8×24
12个 流水 线结 构的 运算 部件
指令缓冲寄存器 256×16 CRAY-1向量处理机结构
6.3 向量处理方式
有三种处理方式: 横向处理方式,又称为水平处理方式,横向加 工方式等。向量计算是按行的方式从左至右 横向地进行。 纵向处理方式,又称为垂直处理方式,纵向加 工方式等。向量计算是按列的方式自上而下 纵向地进行。 纵横处理方式,又称为分组处理方式,纵横向 加工方式等。横向处理和纵向处理相结合的 方式。
在一般标量处理机中需要如下指令序列来实现 (A、B、C分别是向量a、b、c在内存中的 起始地址):
START: LOAD R0, LOAD R1, LOAD R2, MOVER3, MUL R3, ST ED L R2 R0 ;读循环初值10 ;读循环终值1010 ;读内存地址增量4
LOOP:
;计算向量偏移量, ;初始值为40 LOAD R4,A(R3) ;读A向量的一个元素
每组用两条向量指令,
每组发生相关两次,
其中组内发生数据相关一次,
组间切换时发生相关一次。 主要优点: 减少访问主存储器的次数 例如:中间变量T不写入主存储器
6.4 向量处理机的关键技术 6.4.1 向量与标量性能的平衡
实际的应用问题中通常既有向量计算又有标 量计算,而且两类计算有一定的比例 向量平衡点(vector balance point):为了使向 量硬件设备和标量硬件设备的利用率相等, 一个程序中向量代码所占的百分比。 关键问题是:希望向量硬件和标量硬件都能 够充分利用,不要空闲。
带位移量的向量表示法
10000 A0 基地址 10020 A1 10040 A2 位移量 4 10060 A3 10080 A4 起始地址 100A0 A5 100C0 A6 长度 12 100E0 A7 有效长度 8 10100 A8 10120 A9 10140 A10 10160 A11 A 向量:A=10000 ,L=12 ,f=4
采用向量指令只需要2条: VADD B, C, T VMUL A, T, Y
这种处理方式适用于向量处理机 数据相关不影响流水线连续工作。 不同的运算操作只需要切换1次。
这种处理方式适用于存储器-存储器结构
3. 纵横处理方式
用于寄存器-寄存器结构的向量处理机中,向 量寄存器的长度是有限的。 当向量长度N大于向量寄存器长度n时,需要 分组处理。 分组方法:N=K· n+r 其中:r为余数, 共分K+1组。 组内采用纵向处理方式,组间采用横向处理 方式。因此,也称为分组处理方式,纵横向 加工方式等。
LOAD ADD STORE ADD INC CMP BLE
HALT ST: 10 ED: 1010 L: 4
R5, B(R3) R4, R5 R4, C(R3) R3, R2 R0 R0, R1 LOOP
;读B向量的一个元素 ;加一个元素 ;写C向量的一个元素 ;改变向量偏移量 ;循环次数增1 ;循环是否结束 ;循环未结束转LOOP, ;否则继续 ;停机 ;循环初值 ;循环终值 ;内存地址增量
向量指令格式 向量加法指令 OP VADD i 1 j 3 K 5
例如:Vi Vj OP Vk,向量长度(VL)= 50,则 实际完成的运算是: V3,00~V3,49与V5,00~V5,49分别相加, 结果放在V1,00~V1,49中。
6.1.3 带位移量的向量表示法
用三个参数表示一个向量: 向量基地址:A 向量长度:L 向量位移量:f 向量有效长度:L-f 向量起始地址:A+f 优点:每个向量可以带有位移,能够通过控制向量实 现可变增量。 能够表示稀疏向量。
运算过程为: 第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)
10000 A0 基地址 10020 A1 10040 A2 位移量 4 10060 A3 10080 A4 起始地址 100A0 A5 100C0 A6 长度 12 100E0 A7 有效长度 8 10100 A8 10120 A9 10140 A10 10160 A11 A 向量:A=10000 ,L=12 ,f=4
1FF80 B-4 起始地址 1FFA0 B-3 1FFC0 B-2 位移量-4 1FFE0 B-1 20000 B0 基地址 20020 B1 有效长度 8 20040 B2 20060 B3 B 向量:A=20000,L=4,f=-4 0 1 0 0 1 0 1 40000 40004 控制向量:A=40000, L=12, f=4 1
几种超级计算机的向量性能和标量性能
向量性能 标量性能 向量平衡点 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 机器型号