Review-05/08:向量体系结构 向量处理机基本概念 基本思想:两个向量的对应分量进行运算,产生一个结果向量 向量处理机基本特征 VSW一条指令包含多个操作 单条向量指令内所包含的操作相互独立 以已知模式访问存储器多体交叉存储系统 控制相关少 向量处理机基本结构 向量指令并行执行 向量运算部件的执行方式流水线方式 向量部件结构多“道”结构多条运算流水线 向量处理机性能评估 向量指令流执行时间: Convey, Chimes, Start-up time 其他指标:R,N/2,N 两个问题 向量处理机中的存储器访问 向量处理机中的优化技术 1/272021 中国科学技术大学
Review-05/08:向量体系结构 • 向量处理机基本概念 – 基本思想:两个向量的对应分量进行运算,产生一个结果向量 • 向量处理机基本特征 – VSIW-一条指令包含多个操作 – 单条向量指令内所包含的操作相互独立 – 以已知模式访问存储器-多体交叉存储系统 – 控制相关少 • 向量处理机基本结构 – 向量指令并行执行 – 向量运算部件的执行方式-流水线方式 – 向量部件结构-多“道”结构-多条运算流水线 • 向量处理机性能评估 – 向量指令流执行时间: Convey, Chimes, Start-up time – 其他指标: R , N1/2 , NV • 两个问题 – 向量处理机中的存储器访问 – 向量处理机中的优化技术 1/27/2021 中国科学技术大学 2
=a×X+Y) Assuming vectors X,Y are length 64 LD FO a .load scalar a LV V1.Rx load vector x Scalar ys. vector MULTS V2.F0.V1 vector-scalar mult LV V3, Ry load vector Y ADDV V4..V3 add SV Ry v4 LD FO a .store the result ADDI R4, Rx, #512 last address to load loop: LD F2, O(Rx) load XO 578(2+9*64)vs MULTD F2, F0xF2 :a*XO 321(1+564)ops(18× Ld F4, O( Ry) :load YO 578(2+964)vs. ADDD F4, F2-F4 a*XO+ YO 6 instructions(96X) SD F4,0(Ry): store into YO ADDI RxRx. #8 increment index to x 64 operation vectors no loop overhead ADDI Ry, Ry, #8 increment index to y SUB R20, R4, Rx compute bound also 64X fewer pipeline hazards BNZ R20, loop check if done 1/272021 中国科学技术大学
DAXPY (Y = a × X + Y) 1/27/2021 中国科学技术大学 3
ector stride 假设处理顺序相邻的元素在存储器中不顺序存储。例如 d。10i=1,100 do10j=1,100 A(主,)=0.0 do10k=1,100 A(,j)=A(,j)+B(i,k)*C(k,) B或C的两次访问不会相邻(相隔800byte) · stride向量中相邻元素间的距离 IvWs (load vector with stride) instruction Strides=>会导致体冲突 (e.g. stride 32 and 16 banks) 1/272021 中国科学技术大学
Vector Stride • 假设处理顺序相邻的元素在存储器中不顺序存储。例如 do 10 i = 1,100 do 10 j = 1,100 A(i,j) = 0.0 do 10 k = 1,100 10 A(i,j) = A(i,j)+B(i,k)*C(k,j) • B 或 C 的两次访问不会相邻 (相隔800 bytes) • stride: 向量中相邻元素间的距离 => LVWS (load vector with stride) instruction • Strides => 会导致体冲突 (e.g., stride = 32 and 16 banks) 1/27/2021 中国科学技术大学 4
Memory operations Load/ store操作成组地在寄存器和存储器之间移 动数据 三类寻址方式 Unit stride(单步长 · Fastest LV VI, R1 //1=MR1.R1+63]load, stride=1 Non-unit (constant) stride(常数步长) LVWS VI, R1, R2//V1=MR1.R1+63*R2]load, stride=R2 Indexed( gather-scatter)(间接寻址) LVI VI, R1, V2 //V1-MR1+V2i, i =0.63]indir ("gather") 等价于寄存器间接寻址方式 对稀疏矩阵有效 ·用于向量化操作的指令增多 1/272021 中国科学技术大学
Memory operations • Load/store 操作成组地在寄存器和存储器之间移 动数据 • 三类寻址方式 – Unit stride (单步长) • Fastest LV V1,R1 //V1=M[R1..R1+63] load, stride=1 – Non-unit (constant) stride (常数步长) LVWS V1,R1,R2 //V1=M[R1..R1+63*R2] load, stride=R2 – Indexed (gather-scatter) (间接寻址) LVI V1,R1,V2 //V1=M[R1+V2i,i=0..63] indir.("gather") • 等价于寄存器间接寻址方式 • 对稀疏矩阵有效 • 用于向量化操作的指令增多 1/27/2021 中国科学技术大学 5
emory Banking 独立存储体方式:由多个相互独立的存储体(Bank)构成存储器组织 可独立访问存储体,各存储体共享数据和地址总线( minimize pin cost) 每个周期可以启动和完成一个bank的访问 如果N个存储器访问不同的bank可以并行执行 Bank Bank Bank Bank MDRI MAR MDRI MAR MDR MAR MDRII MAR Data bi Address bus CPU 1/272021 中国科学技术大学
Memory Banking • 独立存储体方式:由多个相互独立的存储体(Bank) 构成存储器组织。 可独立访问存储体,各存储体共享数据和地址总线 (minimize pin cost) • 每个周期可以启动和完成一个bank的访问 • 如果N个存储器访问不同的bank可以并行执行 1/27/2021 中国科学技术大学 6
Interleaved Vector Memory System Cray-1, 16 banks 4 cycle bank busy time 12 cycle latency Bank busy time: Time before bank ready to accept next request if stride =1& consecutive elements inter/ea ved across banks number of banks > bank latency then can sustain 1 element/cycle throughput Base Stride Vector Registers Address Generator 0123456789 ABCDEF Memory Banks 1/272021 中国科学技术大学
Interleaved Vector Memory System 1/27/2021 中国科学技术大学 • Cray-1, 16 banks, 4 cycle bank busy time, 12 cycle latency – Bank busy time: Time before bank ready to accept next request – If stride = 1 & consecutive elements interleaved across banks & number of banks >= bank latency, then can sustain 1 element/cycle throughput 0 1 2 3 4 5 6 7 8 9 A B C D E F + Base Stride Vector Registers Memory Banks Address Generator 7
EXampleappF F-15 Suppose we want to fetch a vector of 64 elements starting at byte address 136, and a memory access takes 6 clocks. How many memory banks must we have to support one fetch per clock cycle? With what addresses are the banks accessed? When will the various elements arrive at the cpu? 1/272021 中国科学技术大学
Example(AppF F-15) Suppose we want to fetch a vector of 64 elements starting at byte address 136,and a memory access takes 6 clocks. How many memory banks must we have to support one fetch per clock cycle? With what addresses are the banks accessed? When will the various elements arrive at the CPU? 1/27/2021 中国科学技术大学 8
Bank Cycle no. 5 0 144 2 busy 15 busy b 160 busy busy busy busy l68 5 busy busy busy busy busy 176 6 busy busy busy busy busy 184 192 busy b busy busy 8 busy 200 busy busy busy busy 9 busy busy 208 busybusy busy 10 busy busy busy 216 busy busy 11 busy busy busy b USV 224 busy 12 busy busybusybusybusy 232 13 busy b busy 240 14 busy busy busy busy 248 15 256 busy busy busy busy busy 16 busy 264 busy b busy Figure F7 Memory addresses (in bytes) by bank number and time slot at which access begins. Each memory bank latches the element address at the start of an access and is then busy for 6 clock cycles before returning a value to the CPU. Note that the CPU cannot keep all eight banks busy all the time because it is limited to supplying one new address and receiving one data item each cycle 1/272021 中国科学技术大学
1/27/2021 中国科学技术大学 9
t#l: Vector Chaining ·寄存器定向路径的向量机版本 首次在Cray-1上使用 V2‖V3 V4 5 MULV v3, v1, v2 ADDⅴ5Av3,V4 Chain Chain Load Unit u A Memory 1/272021 中国科学技术大学
Vector Opt#1: Vector Chaining 1/27/2021 中国科学技术大学 10 • 寄存器定向路径的向量机版本 • 首次在Cray-1上使用 Memory V1 Load Unit Mult. V2 V3 Chain Add V4 V5 Chain LV v1 MULV v3,v1,v2 ADDV v5, v3, v4
Chaining Advantage 不采用链接技术,必须处理完前一条指令的最后一个元素, 才能启动下一条相关的指令 Load Mul Time Add 采用链接技术,前一条指令的第一个结果出来后,就可以启 动下一条相关指令的执 Load Mul Add 1/272021 中国科学技术大学
Vector Chaining Advantage 1/27/2021 中国科学技术大学 11 • 采用链接技术,前一条指令的第一个结果出来后,就可以启 动下一条相关指令的执行 Load Mul Add Load Mul Time Add • 不采用链接技术,必须处理完前一条指令的最后一个元素, 才能启动下一条相关的指令