Vector Instruction Set Advantages 格式紧凑 一条指令包含N个操作 ·表达能力强,一条指令能告诉硬件: N个操作之间无相关性 使用同样的功能部件 访问不相交的寄存器 与前面的操作以相同模式访问寄存器 访问存储器中的连续块(unit- stride load/ store) 以已知的模式访问存储器( (strided load/ store) 可扩展性好 可以在多个并行的流水线上运行同样的代码(anes) 2021/1/29 计算机体系结构 17
Vector Instruction Set Advantages • 格式紧凑 − 一条指令包含N个操作 • 表达能力强, 一条指令能告诉硬件: − N个操作之间无相关性 − 使用同样的功能部件 − 访问不相交的寄存器 − 与前面的操作以相同模式访问寄存器 − 访问存储器中的连续块 (unit-stride load/store) − 以已知的模式访问存储器 (strided load/store) • 可扩展性好 − 可以在多个并行的流水线上运行同样的代码 (lanes) 2021/1/29 计算机体系结构 17
Vector Instructions Instr. Operands Operation Comment ADDv V1, v2, V3 V1=V2+V3 vector vector ADDSv V1,FO, v2 V1=F0+V2 scalar t vector MULTV V1, V2, V3 V1=V2XV3 vectorⅹ vector MULSV V1, FO,V2 V1=FOxV2 scalar x vector LV V1,R1 V1=M[R1.R1+63] load, stride=1 LVWS V1, R1, R2 V1=MRI. R1+63*R2] load, stride=R2 LVI V1, R1,V2 V1=M[R1+V2i, i=0.63] indir ("gather") Ceq VM, V1, V2 VMASKi=(Vli=v2i)? comp. netmask MOV TLR R1 ec. Len. Reg. =RI set vector length MOV VM, RI Vec Mask= r1 set vector mask 2021/1/29 计算机体系结构 18
Vector Instructions Instr. Operands Operation Comment • ADDV V1,V2,V3 V1=V2+V3 vector + vector • ADDSV V1,F0,V2 V1=F0+V2 scalar + vector • MULTV V1,V2,V3 V1=V2xV3 vector x vector • MULSV V1,F0,V2 V1=F0xV2 scalar x vector • LV V1,R1 V1=M[R1..R1+63] load, stride=1 • LVWS V1,R1,R2 V1=M[R1..R1+63*R2] load, stride=R2 • LVI V1,R1,V2 V1=M[R1+V2i,i=0..63] indir.("gather") • CeqV VM,V1,V2 VMASKi = (V1i=V2i)? comp. setmask • MOV VLR,R1 Vec. Len. Reg. = R1 set vector length • MOV VM,R1 Vec. Mask = R1 set vector mask 2021/1/29 计算机体系结构 18
向量处理机的基本组成单元 Vector Registe:固定长度的一块区域,存放单个向量 至少2个读端口和一个写端口(一般最少16个读端口,8个写端口) 典型的有8-32向量寄存器,每个寄存器存放64到128个64位元素 Vector functiona/ Units(F全流水化的,每一个 clock启动一个新的操作 一般4到8个FUs: FP add, FP mult, FP reciprocal(1/X), integer add, logica, shift;可能有些重复设置的部件 Vector loaa-Stoeωits(SUs全流水化地load或 store一个向量,可能会配置多个LSU部件 Scalar registers.:存放单个元素用于标量处理或存储地址 用交叉开关连接( Cross-bar)FUs,LSUs, registers 2021/1/29 计算机体系结构 19
向量处理机的基本组成单元 • Vector Register: 固定长度的一块区域,存放单个向量 − 至少2个读端口和一个写端口(一般最少16个读端口,8个写端口) − 典型的有8-32 向量寄存器,每个寄存器存放64到128个64位元素 • Vector Functional Units (FUs): 全流水化的,每一个 clock启动一个新的操作 − 一般4到8个FUs: FP add, FP mult, FP reciprocal (1/X), integer add, logical, shift; 可能有些重复设置的部件 • Vector Load-Store Units (LSUs): 全流水化地load 或 store一个向量,可能会配置多个LSU部件 • Scalar registers: 存放单个元素用于标量处理或存储地址 • 用交叉开关连接(Cross-bar) FUs , LSUs, registers 2021/1/29 计算机体系结构 19
Man memory vecter FP addsubtract latore FPrmultpty FP divide veder reuters Integer L aEter 2021/1/29 算机体系结构
2021/1/29 计算机体系结构 20
Vector arithmetic execution 使用较深的流水线(=>fast clock)执行向量元素的操作 123 由于向量元素相互独立,简化 了深度流水线的控制(=>no azaras Six stage multiply pipeline V3<-V1*v2 2021/1/29 计算机体系结构
Vector Arithmetic Execution • 使用较深的流水线(=> fast clock) 执行向量元素的操作 • 由于向量元素相互独立,简化 了深度流水线的控制 (=> no hazards!) 2021/1/29 计算机体系结构 V 1 V 2 V 3 V3 <- v1 * v2 Six stage multiply pipeline 21