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