250 likes | 400 Views
第五章 向量流水处理. 第一节 向量流水处理. * 提高标量 流水线性能方法: 增加流水线段数,以减少 Δt ; 每个时钟同时启动多条指令; 减少相关,减少功能变换次数,增加处理指令条数。. * 向量操作特点 : 向量元素间操作相互独立,无数据相关; 向量元素间操作相同,无功能变换; 相当于标量循环,对指令访问带宽的要求不高。 向量操作很适合于流水处理或并行处理。. 载入缓冲器. 流水处理部件. 存储系统. 存储缓冲器. 一、向量处理方式
E N D
第一节 向量流水处理 *提高标量流水线性能方法: 增加流水线段数,以减少Δt; 每个时钟同时启动多条指令; 减少相关,减少功能变换次数,增加处理指令条数。 *向量操作特点: 向量元素间操作相互独立,无数据相关; 向量元素间操作相同,无功能变换; 相当于标量循环,对指令访问带宽的要求不高。 向量操作很适合于流水处理或并行处理。
载入缓冲器 流水处理部件 存储系统 存储缓冲器 一、向量处理方式 以向量操作D=A×(B+C)为例。 1、横向处理方式 循环处理di=ai×(bi+ci)。 *特点:产生N次相关、2N次功能变换;不适用于向量处理 2、纵向处理方式 循环处理ei=bi+ci,再循环处理di=ai×ei。 *特点:产生1次相关、1次功能变换,适用于向量处理。 思考—针对不同的N,硬件可采用哪些结构实现? 纵向处理方式只适合于MEM-MEM型结构的处理方式。
存储系统 向量寄存器组 流水处理部件 3、纵横处理方式 对向量分组(n个元素),组内纵向处理、组间横向处理。 *特点:产生N/n次相关、N/n次功能变换; 很适合于REG-REG型结构的处理方式。 思考—如何确定向量寄存器中元素个数n?
V1 V2 V0 S1 V2 运算功能部件 V0 1 2 3 … m 1 2 3 … m 运算功能部件 二、向量指令 1、 R-R型的向量指令类型 ①向量-向量类:ViΔVj→Vk或ΔVj→Vk ②向量-标量类:SiΔVj→Vk ViΔVj→Sk或ΔVj→Sk(向量规约) ③向量-MEM类:M→Vk或Vi→M; M→VlΔVA或VlΔVA→M(压缩与还原) 回下页
2、 M-M型的向量指令类型 ①向量-向量类:M1(1:n)ΔM2(1:n)→M(1:n) 或ΔM1(1:n)→M(1:n) ②向量-标量类:SiΔM1(1:n)→M(1:n) M1(1:n)ΔM2(1:n)→Sk 3、 向量指令操作特点 向量指令是各分量之间的流水操作; 标量指令是各指令之间的流水操作; SIMD指令是各指令内部的操作并行。 转上页
三、向量访问模式与处理带宽问题 1、向量访问模式 向量一般按行、或按列存储。 向量访问各分量时步长可变,一般有按行、按列、或按对角线等方式访问。 2、向量存取指令与处理带宽 向量存取指令按访问模式存取相关分量从/到向量寄存器或向量缓冲器的相邻分量中; 要求存储器带宽较大,必须解决多个分量流水访问的冲突问题(如多个相邻分量在同一存储体内)。
指令 译码器 存储系统 数据A 载入缓冲器 向量处理部件 数据B 向量处理部件 数据C 存储缓冲器 第二节 向量处理机结构 一、M-M向量处理机结构 1、 向量处理机结构 *M-M结构对存储系统带宽要求较高: 若向量处理部件流水间隔为Δt,存储系统带宽应达到3/Δt; 若读/写操作为2Δt,则存储系统带宽应达到6/Δt。
数据A 数据B 数据C M M M M M M M M 2、 存储系统设计 (1)提高存储系统带宽 存储器与三条总线连接, 同时只能被一条总线访问。 (2)提高向量存取性能 向量存取采用流水方式(左图),不同向量并行存取(右图) 回下页
指令 译码器 向量控制 功能选择 延迟选择 地址形成器 A 可变延迟器 向量处理部件 存储系统 B 向量处理部件 可变延迟器 C (3)解决向量访问冲突 ①向量采用错位方式存储,解决按行、列、对角线访问时流水操作的存储体冲突; ②增加可变延迟器,可解决访问的操作冲突。 转上页
标量功能部件 主 存 大容量 存储器 标量寄存器 指令 处理部件 向量指令 控制部件 向量功能部件 主计 算机 ··· 向量功能部件 向量存取 部件 向量寄存器 I/O(用户) 向量处理机 二、R-R向量处理机结构 1、 向量处理机结构 *指令处理部件:标量指令直接控制,向量指令传递控制; *向量寄存器:V; *向量存取部件:设置多级缓冲器,缓冲主存与向量寄存器速度差,M-M型向量处理机简单得多(只需缓冲几个分量)。
2、 存储系统设计 (1)提高存储系统带宽 对MEM的带宽需求相对M-M型向量处理机要低得多; 一般采用单总线即可。 (2)提高向量存取性能 ①向量存储从无序到错位存储,提高向量存取性能; ②设置指令、数据缓冲器,减少存取频率; (见下页图) ③设置地址缓冲器,实现成组交换,提高存取性能。 (3)解决向量访问冲突 向量采用错位存储,从空间上解决访问的存储体冲突; 增加可变延迟器,从时间上解决访问的存储体冲突; 设置向量存取指令,指令串行执行可解决访问的操作冲突 转下页 转下二页
迭代求倒数 相乘 逻辑运算 移位 主 存 加 浮点 功能 部件 加 向量 功能 部件 地址暂存器B V7向量寄存器组(8×64个) 向量控制 数据暂存器T 向量屏蔽寄存器 VM 地址寄存器A V0 S7 向量控制 CRAY-1向量流水处理部分简图 标量寄存器S0 向量长度寄存器 VL 中间缓冲器: 地址寄存器A(8×24bit),中间寄存器B (64×24bit), 中间寄存器T(64个64bit)。 回上页
第三节 增强向量处理性能方法 一、多功能部件并行操作 使向量机中多个功能部件能并行操作,提高向量处理性能 *并行操作条件: (1)不存在向量寄存器使用冲突 不允许出现RAW、WAR、WAW、RAR相关。 例如:V4←V1+V2 V5←V2×V3 (2)不存在功能部件使用冲突 每种功能部件一般只设置一个。 例如:V3←V1×V2 V6←V4×V5
V4 V3 V0 V2 V1 1 2 3 4 5 6 7 A 浮点乘 存储器 1 2 3 4 5 6 1 2 3 4 5 6 访存 浮点加 二、链接技术 采用“相关专用通路”思想,解决向量寄存器的RAW相关。 例:执行指令⑴V3←A,⑵V2←V0+V1,⑶V4←V2×V3 解:访存与浮点加可并行操作; 访存和浮点加与浮点乘有RAW相关性,链接技术可解决RAW相关,进行流水操作,以减少执行时间。 因同步要求,数据进入、流出功能部件需1拍时间。 回下页
*链接条件: (1)不存在功能部件使用冲突; (2)共用向量寄存器的向量长度、起始地址、偏移量、步长均相等; (3)参与链接的先行指令产生结果周期相同(链接指令为多操作数时,若某操作数为Vi时可认为周期相同); (4)只有在先行指令产生第一结果分量的那个时钟方可链接,否则不行。 *上例时间分析: 全串行: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。 注意:不同向量机对向量指令的链接要求有所不同。 转上页
三、条件语句和稀疏向量的加速处理 1、加速条件语句 标量循环语句向量化,可提高流水线效率。 *条件语句循环向量化方法:利用向量屏蔽控制技术实现。 即用条件语句循环生成VM,用带VM向量指令实现 *向量屏蔽控制技术的系统支持: 增加VM置位和复位指令,增加带VM运算命令。 2、加速稀疏矩阵处理 *存储:压缩向量和位向量; *操作:带VM运算指令。 *系统支持:带VM的存取指令、运算指令。
*加速方法: ⑴ C=A×B; --向量流水操作 ⑵ s= C。 --向量归约操作 四、加速向量归约操作 *应用需求: *常规方法: ⑴ C=A×B; --向量流水操作 ⑵ 对C进行递归折叠求和。--标量循环(n次)操作 *向量归约操作的实现方法: ⑴ 向量归约部件和向量归约指令; ⑵ 可归约的向量加法部件+对部分分量折叠求和。 回下页
*可归约的向量加法部件的实现方法: 常规向量加法—V0←V1+V2,源和目标向量各不相同; 带归约向量加法—V0←V0+V1,源和目标向量相同。 实现—见下页图,设加法运算需8个时钟周期 ⑴置V0各分量为0(乘法为1),V0和V1计数器均为0; ⑵V0计数器为0,V1计数器每时钟加1,直到第一个结果分量出来; ⑶V0和V1计数器每时钟加1,直到V1计数器等于向量计算长度为止,V0的最后8个分量为V10至V163之和。 转上页 回下页
t0 t8 t16 … t56 t72 V00,V10 V00,V11 V00=V10 V01=V11 … V00,V17 V00,V18 V01,V19 V07=V17 V08=V10+V18 V09=V11+V19 … V07,V115 V015=V17+V115 … … V048,V156 V049,V157 V056=V10+V18+…+V156 V057=V11+V19+…+V157 … V063=V17+V115+…+V163 V055,V163 *常规方法与加速方法性能比较: 常规方法— T=p*(n/2+…+1),上例T=8*63; 加速方法— T=p+n+p*(n/2p+…+1),上例T=8+64+8*7 转上页
五、向量化编译技术 1、通用优化方法 公共子表达式消除、常数调入、复制语句传递等。 2、循环体优化 固定表达式移出、归约变量消除,向量指令表示等。 3、向量寄存器优化分配 重新分配向量寄存器,减少向量寄存器使用冲突。 4、向量指令并行化 重新排序向量指令,减少流水功能转换频率,争取功能部件操作并行、向量指令链接。
S n T Tst Ir 六、向量指令性能分析 1、向量执行时间 Tvp=Tst+n·Ir Tst --启动时间,Ir --启动率,n—向量长度 对M-M型结构,Tst为取数等待及流水线深度时间; 对R-R型结构,Tst仅为流水线深度时间。 *影响因素: 向量长度、向量指令间功能和数据相关性。 向量流水线深度对Tvp的影响较小。 *提高性能方法: 增加n,可提高流水效率,减小Tst对Tvp影响; 尽量减小Tst,提高短向量的处理性能。
2、最大性能R∞ 用于衡量向量流水线的峰值性能。 例:机器时钟频率为200MHz,存取、加、乘指令分别需12、6、7个时钟周期,计算Y=a×X+Y需要指令①Mx→V0;②F0×V0→V1;③My→V2;④V1+V2→V3;⑤V3→My。 指令可编成①和②、③和④、⑤共3队,各队串行执行; 向量启动开销=12+7+12+6+12=49Tc; 执行标量代码开销(归入向量启动开销)设为15Tc; 回下页
3、半性能向量长度n1/2 衡量向量流水线建立时间对处理性能的影响。 上例:设n1/2<64, 转上页 回下页
向量处理时间 向量处理速率 串行标量 向量流水 R∞ 斜率=1/R∞ 向量流水 R∞/2 T0 串行标量 向量长度n 向量长度n nv n1/2 n1/2 4、向量流水优于标量的向量长度nv 衡量向量流水建立时间、标量和向量速度比对处理性能的影响。 上例:标量循环一次T=10+49=59Tc,10为建立循环时间; 则64+3nv=59nv; nv=64/56≈2。 *三种性能指标关系示意图: 转上页