23
1 第第第 第第第第第

第五章 向量流水处理

  • Upload
    cassie

  • View
    84

  • Download
    0

Embed Size (px)

DESCRIPTION

第五章 向量流水处理. 第一节 向量流水处理. * 提高标量 流水线性能方法: 增加流水线段数,以减少 Δt ; 每个时钟同时启动多条指令; 减少相关,减少功能变换次数,增加处理指令条数。. * 向量操作特点 : 向量元素间操作相互独立,无数据相关; 向量元素间操作相同,无功能变换; 相当于标量循环,对指令访问带宽的要求不高。 向量操作很适合于流水处理或并行处理。. 载入缓冲器. 流水处理部件. 存储系统. 存储缓冲器. 一、向量处理方式 - PowerPoint PPT Presentation

Citation preview

Page 1: 第五章 向量流水处理

1

第五章 向量处理机

Page 2: 第五章 向量流水处理

2

第一节 向量处理方式

* 向量操作特点:分量的操作无数据冒险、无功能变换 * 向量操作实现:适于流水处理、并行处理

一、向量处理方式1 、横向处理方式 * 方法:每次处理完向量的一个分量 例—对于 D=A×(B+C) , N 次处理: di=ai×(bi+ci)

* 特点:产生 N 次冒险、 2N 次功能变换,不适于向量处理机

* 标量流水的性能提高方法: 硬件—增加流水线段数,每个时钟启动多条指令 / 操作 软件—减少冒险,减少功能变换,增加处理的指令数

Page 3: 第五章 向量流水处理

3

2 、纵向处理方式 * 方法:优先处理完向量的一个子操作 例—对于 D=A×(B+C) ,先处理 E=B+C 、再处理 D=A×E

* 特点:产生 1 次冒险、 1 次功能变换,适于向量处理机 * 向量处理机特征: M-M 型结构,向量长度不受限制

存储系统

载入缓冲器

存储缓冲器

流水处理部件

3 、纵横处理方式 * 方法:对向量分组 (n 个组 ) ,组内纵向处理、组间横向处理 * 特点:产生 N/n 次冒险、 N/n 次功能变换,适于向量处理机 * 向量处理机特征: R-R 型结构,组内长度 n 受限于硬件

存储系统 向量寄存器组 流水处理部件

Page 4: 第五章 向量流水处理

4

二、向量指令

1 、 R-R 型向量指令 -- 用于 R-R 型向量处理机 * 向量 - 向量类: ViΔVj→Vk 、 ΔVi→Vk

V1V0 V2

1 2 3 … m运算功能部件 ( 流水 )

* 向量 - 标量类: ViΔSj→Vk 、 ViΔVj→Sk 或 ΔVi→Sk( 规约 )

S1

V0

V2

1 2 3 … m运算功能部件

* 向量 -MEM 类: Vi→M(p:n) 、 M(p:n)→Vk( 存 / 取 ) , M(p:n)→ViΔSj 、 ViΔSj→M(p:n)( 压缩 / 还原 )

向量 = 压缩向量 Vi+ 位向量 Sj←┘

回下页

向量指令功能—等价于标量指令串 ( 循环 )

Page 5: 第五章 向量流水处理

5

2 、 M-M 型向量指令 -- 用于 M-M 型向量处理机 * 向量 - 向量类: M(p:n)ΔM(i:n-p+i)→M(j:n-p+j) 、 ΔM(p:n)→M(j:n-p+j)

* 向量 - 标量类: M(p:n)ΔSi→M(j:n-p+j) 、 M(p:n)ΔM(j:n-p+j)→Sk

3 、向量操作的指令实现 * 标量指令串:各分量操作的指令串行 / 流水 * 向量指令:各分量的操作流水 (1 套执行部件 )

*SIMD 指令:各分量的操作并行 (n 套执行部件 )

转上页

Page 6: 第五章 向量流水处理

6

三、向量访问与存放1 、向量访问 * 访问模式:按行、按列、按对角线访问 * 访问特征:访问各分量时,步长可变2 、向量存放 * 存取操作: 按序访问指令要求的各分量的 MEM 单元 ( 对应于访问模式 )

带宽需求—较高 ←分量操作流水 +MEM 较慢 MEM 组织—多体交叉 MEM 、流水方式访问 * 向量存放: 按行 / 按列、错位存放 ( 避免相邻分量在同一体中 )

Page 7: 第五章 向量流水处理

7

第二节 向量处理机结构一、 M-M 向量处理机结构1 、向量处理机结构 * 基本结构:

存储系统 载入缓冲器

存储缓冲器

向量处理部件

译码器指令

数据 A

数据 B

数据 C向量处理部件

* 对存储系统的带宽要求: 若 T 流水拍 =Δt ,存储系统的带宽 B≥3/Δt

若 T 存储体 R/W=2Δt ,存储系统的带宽 B≥6/Δt

Page 8: 第五章 向量流水处理

8

2 、存储系统性能设计(1) 提高存储系统带宽 存储体与三条总线连接,同时只能被一条总线访问(2) 提高向量存取性能 通常多体交叉 + 并行 ( 左图 ) ,冲突时多体交叉 + 串行 ( 右图 ) 段

4

0 1 2 3

段3

0 1 2 3 4

段2

0 1 2 3 4 5

段1

0 1 2 3 4 5 6

M7 RA7 RA7 RB7 RB7

M6 RA6 RA6 RB6 RB6

M5 RA5 RA5 RB5 RB5

M4 RA4 RA4 RB4 RB4

M3 RA3 RA3 RB3 RB3

M2 RA2 RA2 RB2 RB2 W2

M1 RA1 RA1 RB1 RB1 W1 W1

M0 RA0 RA0 RB0 RB0 W0 W0

段4

0 1 2 3

段3

0 1 2 3 4

段2

0 1 2 3 4 5

段1

0 1 2 3 4 5 6

M7 RB5 RB5 RA7 RA7

M6 RB4 RB4 RA6 RA6 W2

M5 RB3 RB3 RA5 RA5 W1 W1

M4 RB2 RB2 RA4 RA4 W0 W0

M3 RB1 RB1 RA3 RA3

M2 RB0 RB0 RA2 RA2

M1 RA1 RA1 RB7 RB7

M0 RA0 RA0 RB6 RB6

回下页

M

数据 A 数据 B 数据 C

M M M M M M M

Page 9: 第五章 向量流水处理

9

(3) 解决向量访问冲突 ① 向量采用错位方式存储 方式—不同行首个元素错位、同一行其余元素连续 效果—避免向量访问模式导致的冲突  ②增加可变延迟器 效果—解决指令访问需求导致的冲突

存储系统

地址形成器

可变延迟器

向量处理部件

译码器指令

B

向量控制

可变延迟器

功能选择延迟选择

向量处理部件

A

C

转上页

Page 10: 第五章 向量流水处理

10

二、 R-R 向量处理机结构1 、 向量处理机结构

标量寄存器 标量功能部件

向量寄存器

向量指令控制部件

向量存取部件

指令处理部件 ···

向量处理机

大容量存储器

主计算机

I/O (用户)

向量功能部件

向量功能部件

* 指令处理部件:标量指令直接控制,向量指令传递控制 * 向量寄存器 (V) :每拍存取一个分量的标量寄存器组 * 向量存取部件: 设置多个缓冲器,缓冲主存与 V 速度差 M-M 型向量处理机简单得多 ( 只需缓冲几个分量 )

Page 11: 第五章 向量流水处理

11

2 、存储系统性能设计(1) 提高存储系统带宽 存储体只需连接一条总线 --V 暂存大量数据(2) 提高向量存取性能 ① 采用多体交叉存储器,提高存取性能; ② 设置数据缓冲器,减少存取频率; (见下页图) ③ 设置地址缓冲器,采用成组交换,保持存取速度(3) 解决向量访问冲突 向量采用错位方式存储, 从空间上解决存储体访问冲突; 增加可变延迟器,从时间上解决存储体访问冲突; 设置向量存取指令, 通过指令串行执行来控制访问冲突

转下页 转下二页

Page 12: 第五章 向量流水处理

12

S7

标量寄存器 S0

V0

V7 向量寄存器组 (8×64 个 )

数据暂存器 T

地址暂存器B

地址寄存器 A (8×24 位 )

加向量功能部件

逻辑运算移位

加浮点功能部件

迭代求倒数相乘

向量控制

向量长度寄存器 VL

向量屏蔽寄存器 VM

向量控制

CRAY-1 向量流水处理部分简图

中间暂存器: Cache 功能,成组传送 数据缓冲器 T—64×64bit ,自动控制交换 地址缓冲器 B—64×24bit ,指令控制交换

回上页

Page 13: 第五章 向量流水处理

13

第三节 增强向量处理性能方法一、多功能部件并行操作

* 并行操作条件: (1) 不存在向量寄存器使用冲突 不允许出现 RAW 、 WAR 、 WAW 、 RAR 相关 反例: V4←V1 + V2

V5←V2×V3

(2) 不存在功能部件使用冲突 反例:只有一个乘法部件时, V3←V1×V2

V6←V4×V5

* 思想:使多个功能部件并行操作,以提高向量处理性能

Page 14: 第五章 向量流水处理

14

二、链接技术

示例:分析⑴ V3←A ,⑵ V2←V0+V1 ,⑶ V4←V2×V3

执行性能 解:⑴与⑵ -- 可以并行操作 ( 无 V及部件冲突 ) ; ⑵与⑶ -- 不可并行操作 ( 存在 RAW 冒险 ) , 但可流水操作 ( 链接技术可解决 RAW 冒险 )

存储器

V0

1 2 3 4 5 6浮点加

1 2 3 4 5 6访存

1 2 3 4 5 6 7浮点乘

V1

V2

V3

V4

A

为实现同步,数据传送 (进入 / 流出部件 ) 需 1 拍时间

回下页

* 思想:采用“相关专用通路”思想,解决 V 的 RAW 冒险

Page 15: 第五章 向量流水处理

15

* 链接条件: (1) 不存在功能部件使用冲突、向量寄存器使用冲突; (2) 先行指令第一个结果分量送入目的 V 的那个时钟周期方可链接 (转发 ) ,否则不行; (3) 先行指令有两个时,部件延迟必须相同

* 上例时间分析: 全串行: 2*[(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=N+16

注意:不同向量机对向量指令的链接要求有所不同

转上页

Page 16: 第五章 向量流水处理

16

三、条件语句和稀疏向量的加速处理1 、加速条件语句 * 思想:条件语句循环向量化,以提高流水线效率 * 条件语句循环向量化方法: —向量屏蔽控制技术 用条件语句循环生成 VM ,用带 VM 的向量指令实现 * 向量屏蔽控制技术所需支持: 具有 VM 置位和复位指令,具有带 VM 的运算命令2 、加速稀疏矩阵处理 *稀疏矩阵存储: 压缩向量 + 位向量 *稀疏矩阵操作:聚合 (稀疏→稠密 ) 、散射 (稠密→稀疏 )

*所需支持:带索引 ( 位向量 ) 的存、取指令

Page 17: 第五章 向量流水处理

17

四、加速向量归约操作

* 向量规约操作: 拍拍,加法,乘法 pmbaBAs i

n

ii )(

1

* 操作实现方法:⑴ 向量乘法 C=A×B ;⑵ 对 C累加求和 *累加求和加速方法: ⑴ 递归折叠求和—多次向量加法,向量长度不断减半 ☆⑵递归向量求和— V0←V0+C ,对 V0 少数分量求和

回下页

* 递归向量加法的实现方法: V0←V0+V1 ,设加法需 8 个时钟 ⑴V0 各分量← 0( 乘法为 1) , V0和 V1 的计数器← 0 ; ⑵首个结果分量 (V00) 产生前, V0 计数器保持为 0 , V1

计数器每个时钟加 1 ; ⑶末个结果分量 (V063) 产生前, V0和 V1 计数器每个时

钟加 1 , V0 的最后 8 个分量 (V056~V063)为 V10

至 V163之和

Page 18: 第五章 向量流水处理

18

V00,V10

V00,V11

V00=V10

V01=V11

V07,V115 V015=V17+V115

V063=V17+V115+…+V163

t0 t8 t16 t72

V00,V17

V00,V18

V01,V19

V07=V17

V08=V10+V18

V09=V11+V19…

……

V048,V156

V049,V157

V056=V10+V18+…+V156

V057=V11+V19+…+V157

V055,V163

t56…

*两种方法的性能比较: 折叠求和— T=p*(n/2+…+1) ,上例 T=8*63

递归求和— T=p+n+p*(n/2p+…+1) ,上例T=8+64+8*7

转上页

Page 19: 第五章 向量流水处理

19

五、向量化编译技术1 、通用优化方法 公共子表达式消除、常数调入、复制语句传递等2 、循环体优化 固定表达式移出、归约变量消除,向量指令表示等

3 、向量寄存器优 化分配 重新分配向量寄存器,减少向量寄存器使用冲突4 、向量指令并行化 重新排序向量指令,减少流水功能切换频率,争取功能部件操作并行、向量指令链接

Page 20: 第五章 向量流水处理

20

六、向量指令性能分析1 、向量执行时间 一条向量指令— Tvp=Tst+n·Ir

Tst— 启动时间, Ir— 启动率, n— 向量长度

S

TTst Ir

n

*影响因素: 向量长度、指令间的功能冲突和数据相关性 * 提高性能方法: 增加 n— 提高流水效率,减小 Tst 对 Tvp影响; ( 成本 /利用率 )

减小 Tst— 提高短向量处理性能

一组向量指令— Tall=∑Tvp=(Tst +n·Ir)m , m为向量指令数或分组数

Page 21: 第五章 向量流水处理

21

2 、最大性能 R∞

用于衡量向量流水线的峰值性能

nTnR

nn

/limlim

时钟频率浮点运算次数

钟周期数指令序列执行所需的时时钟频率数指令序列中浮点运算次

例:机器主频为 200MHz ,存取、加、乘运算分 别需12 、 6 、 7 个时钟周期,支持链接技术,向量寄存器长度MVL=64 ,向量每次分组代码开销为 15Tc ;计算Y=a×X+Y 的指令串为 ① V0←Mx ;② V1←F0×V0 ;③ V2←My ;④ V3←V1+V2 ;⑤My←V3 ;求 R∞ 解:指令编成①和②、③和④、⑤共 3 组,各组串行执行; 向量启动开销=(12+7)+(12+6)+12=49Tc ;

6443)64(3)1549(64/ nnnnnTn

MFLOPS1004MHz2002

/)644(limMHz2002

n

nnR

回下页

Page 22: 第五章 向量流水处理

22

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

衡量向量流水线建立时间对处理性能的影响

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

2/1

2/1

2

1n

nR

上例:设 n1/2< 64 ,则 Tn1/2 = (0+64)+3*n1/2

转上页 回下页

又 1/2R∞ 时, 50MFLOPS

=(2*n1/2*200MHz)/Tn1/2

则 Tn1/2 = 8*n1/2 因 (0+64)+3*n1/2 = 8*n1/2

故 n1/2 = 12.8≈13

Page 23: 第五章 向量流水处理

23

4 、向量流水优于标量的向量长度 nv

衡量向量流水建立时间、标量和向量速度比 上例:标量循环一次 T=10+49=59Tc , 10为建立循环时间; 则 64+3nv=59nv ; nv=64/56≈2 * 三种性能指标关系示 意图:

向量长度 n

向量处理时间串行标量

向量流水

斜率 =1/R∞

nv n1/2

T0

向量长度 n

向量处理速率

R∞

向量流水

串行标量

n1/2

R∞/2

转上页