330 likes | 679 Views
第八章 SIMD 计算机. SIMD 计算机也称并行处理机,又称阵列处理机,主要应用于要求大量高速向量或矩阵运算的场合。. 并行性概念. 并行性 (parallelism) :指在数值计算、数据处理、信息处理或是人工智能求解过程中可能存在某些可同时进行运算或操作的部分。 开发并行性的目的在于能够并行处理,以提高计算机系统求解问题的效率。 并行性的含义: 【 同时时 (Simultaneity) 】 :两个或两个以上事件在同一时刻发生。 【 并发性 (Concurrency) 】 :两个或两个以上事件在同一时间间隔内发生。
E N D
第八章 SIMD计算机 SIMD计算机也称并行处理机,又称阵列处理机,主要应用于要求大量高速向量或矩阵运算的场合。
并行性概念 并行性(parallelism):指在数值计算、数据处理、信息处理或是人工智能求解过程中可能存在某些可同时进行运算或操作的部分。 开发并行性的目的在于能够并行处理,以提高计算机系统求解问题的效率。 并行性的含义: 【同时时(Simultaneity)】:两个或两个以上事件在同一时刻发生。【并发性(Concurrency)】:两个或两个以上事件在同一时间间隔内发生。 实现并行性技术的途径: 【资源重复(resource replication)】:在并行性概念中引入空间因素,通过重复设置硬件资源来提高可靠性或性能,如备份系统、容错系统、阵列机等。 【时间重叠(time interleaving)】:在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度,如流水线等。【资源共享(resource sharing)】:指利用软件的方法让多个任务按一定的时间顺序轮流地使用同一套资源,以提高其利用率,相应地提高整个系统性能。如分时系统、分布式系统、计算机网络等。
并行处理机模型 并行处理机(Parallel Processor)是将重复设置的N个处理单元PE0~PEN-1,按照一定方式互连组成阵列,在单一控制部件CU控制下,同时对处理单元各自分配到的数据并行完成同一条指令所规定的操作。因此,并行处理机采用互连网络连接成阵列构型,也称阵列处理机(Array Processor)。 并行处理机所有处理单元同时执行从控制部件广播来的同一条指令,但使用不同的数据,因此,并行处理机是指令操作级并行的单指令流多数据流处理机(SIMD)。 控制器 PE0 PE1 PE2 Pen-1 P0 P1 P2 Pn-1 …… M0 M1 M2 Mn-1 互连网络 H·J·Siegel提出的并行处理机模型
一种典型的阵列处理机 标量处理机 大容量存储器 标量指令 I/O用户 指令 阵列控制 部件 控制部件存储器 (程序与数据) 主机 向量指令 广播总线 数据总线 网络控制 PE0 PE1 PEN-1 LM0 LM1 LMN-1 互连网络
并行处理机执行过程: 1)主机(或称管理主机)通常是一种通用计算机,运行操作系统,用于用户程序的汇编及向量化编译,完成系统维护、输入输出、大容量存储器的管理、作业调度、文件管理等操作系统功能。 2)程序和数据装入控制存储器。 3)阵列控制部件(CU)是一台功能专用的处理机,负责译码,有自己的存储器,存放系统程序、用户程序和标量数据。 4)阵列控制部件(CU) 译码后,如果是标量操作或控制操作,则直接由同控制部件相连的标量处理机执行;如果是向量操作,则将它广播到所有PE并行执行。 4)划分后的数据集合通过向量数据总线被分配到所有PE的本地存储器PEM, PEMi对PEi来说,是本地存储器;而PEMj(j<>i)对PEi来说,则是远程存储器。PEi访问本地存储器中的数据。 5)PE通过数据寻径网络互连,数据寻径网络执行PE间的通讯,如移数、置换和其他寻径操作。控制部件通过执行程序来控制数据寻径网络,PE的同步由控制部件的硬件实现。
并行处理机特点: 1)从CU看,指令是串行执行的,即每次只能执行一条指令;从PE看,各PE 同时执行同一条指令,数据并行处理,产生多个数据流,因此具有数据并行性(SIMD)。 2)各PE通过互连网络实现相互连接,控制部件对控制程序进行译码,其结果用于控制网络的寻径。 3)PE之间的同步由控制部件的硬件实现,保证各PE在同一个周期执行同一条指令,并且可以通过对屏蔽位的设置,控制一个PE是否执行当前指令。 4)并行处理机五元组模型: M=(N,C,I,M,R) 其中:N为PE数量,C为控制部件直接执行的指令集,包括标量指令和程序流控制指令,I为各PE同时执行的指令集,M为屏蔽方案集,即划分允许操作和禁止操作的方案集,R为数据寻径功能集,即互连网络模式。 5)并行处理机利用的是资源重复,而非时间重叠;利用并行性中的同时性,而非并发性。 6)标量指令与向量指令可以并发执行。 7)从PE方面看,由于各PE相同,因而可以将并行处理机看成是同构型并行处理机;但从整体看,并行处理机是由标量处理机、处理机单元阵列、主机构成的异构型多处理机系统。
8)并行处理机是以某一类算法为背景的专用计算机。这是由于并行处理机中通常采用简单、规整的互连网络实现处理单元之间的连接操作,从而限定了它所适用的求解算法类别。8)并行处理机是以某一类算法为背景的专用计算机。这是由于并行处理机中通常采用简单、规整的互连网络实现处理单元之间的连接操作,从而限定了它所适用的求解算法类别。 • 9)并行处理机的研究必须与并行算法研究密切结合,以使它的求解算法的适应性更强些,应用面更广些。 • 10)并行处理机的五个部分组成: • ▉ 处理单元PE阵列 • ▉ 标量处理机▉ 阵列控制部件 • ▉ 互连网络▉ 输入输出处理主机 并行处理机有两种典型结构: • 分布存储器并行处理机 • 共享存储器并行处理机
分布式存储器结构的阵列处理机 标量处理机 大容量存储器 标量指令 I/O用户 指令 阵列控制 部件 控制部件存储器 (程序与数据) 主机 向量指令 广播总线 数据总线 网络控制 PE0 PE1 PEN-1 LM0 LM1 LMN-1 互连网络
目前制造的SIMD计算机几乎都是基于分布式存储器结构。之间的主要区别在于数据寻径网络。典型产品:ILLiac IV、Goodyear的MPP、AMT(Active Memory Technology)的DAP 610、Thinking Machines公司的CM-2、MasPar计算机公司的MP-1等。
集中式共享存储器结构的阵列处理机 标量处理机 大容量存储器 标量指令 I/O 用户 指令 阵列控制 部件 控制部件存储器 (程序与数据) 主机 向量指令 广播总线 网络控制 数据总线 PE0 PE1 PEN-1 互连网络 SM0 SM1 SMN-1
特点: 1)典型例子:Burroughs公司和依里诺大学联合研制的BSP(Burroughs Scientific Processor),16个PE,17个存储体,16×17对准网络。 2)由多个存储体组成的多体交叉存储器经互连网络为全部处理单元所共享。 3)共享存储器采用多模块交叉存储器,并且,为了避免发生PE访问共享存储器冲突,PE数与存储器数应互质,而且, “处理单元数<=共享存储器数”。 4)适用于处理单元数目不大的情况,否则,解决存储器访问冲突将耗费大量的系统资源,大大降低系统的性能价格比。
并行处理机的特点 • 运行效率取决于计算程序向量化程度。 • 具有较为固定的结构,使之与一定的算法相联系,因此,系统结构的研究必须与算法的研究结合起来。 • 模块性好,生产和维护方便 • 可靠性高,容易实现容错和重构 • 效率低(与流水线处理机、向量处理机等比较)。通常作为专用计算机,因此,在很大程度上依赖于并行算法。它依靠的是资源重复,而不是时间重叠,它的每个处理单元要担负多种处理功能,其效率要低一些。另一方面,它依靠增加PE个数,与流水线处理机主要依靠缩短时钟周期相比,其提高速度的潜力要大得多。 • 依赖于互连网络和并行算法。互连网络决定了PE之间的连接模式,也决定了并行处理机能够适应的算法。 • 实际有效速度除了向量运算速度外,还取决于标量运算速度和编译过程中的时间开销。如果一台机器的向量处理速度极高,但标量处理速度只是每秒一百万次,那么对于标量运算占10%的题目来说,总的有效速度就不过是每秒一千万次(为什么?)。
典型的SIMD计算机( ILLiac IV ) • 1)ILLiac IV阵列处理机是世界上最早采用SIMD结构的计算机,由美国宝来公司和依里诺依大学1965年研制并于1972年生产。 • 2)可以认为ILLiac IV处理机包括两个部分,即ILLiac IV 阵列和ILLiac IV 输入输出系统,也可以看成由3种类型处理机组成: • 专门用于数组运算的处理单元阵列 • 阵列控制器 • 一台标准的Burroughs B6700计算机
ILLiac IV阵列 PE0 PE1 PE7 PE8 PE9 PE15 i-8 i-1 i i+1 i+8 PE56 PE57 PE63
特点: 1)64个PE组成8×8阵列结构 2)两个PE之间通信可以使用软件寻径,而且中间过程不会超过7步。 3)可以证明,在N×N阵列中,两个PE间最短距离不会超过N-1步。 4)处理单元存储器PEM分属于每一个处理单元,各有2048×64位存储容量,64个PEM联合组成阵列存储器,存储数据和指令。整个阵列存储器可以接受阵列控制器CU的访问,读出8个字的信息块到CU的缓冲器中。阵列存储器也可以经过1024位的总线与I/O开关相连。每个PE只能访问自己的PEM,分布在各个PEM中的公共数据只能先读至CU后,再经CU的公共数据总线CDB广播到64个处理单元中去。 5)阵列存储器具有双重变址机构:控制器CU实现所有处理单元的公共变址,每个处理单元PE还可单独变址,最终操作数有效地址对PEi来说,由下式决定: ai=a+(b)+(ci) 式中, a是指令地址;(b)是CU中央变址寄存器内容;(ci)是PEi的局部变址寄存器内容。
阵列控制器 • 阵列控制器CU实际上是一台小型计算机。CU除了能对矩阵的处理单元实行控制外,还能利用自己的内部资源执行一整套指令,用以完成标量运算。CU的标量运算操作与各PE的数组操作是时间重叠的。 • 阵列控制器CU同处理单元阵列之间有4条信息通路: • (1)CU总线。PEM经CU总线把PEM指令和数据传送到阵列控制器CU,以8个64位字为一个信息块。 • (2)公共数据总线(Common Data Bus)。64位总线,用于向64个处理单元同时广播公共数据。例如,作为公共乘数的常数不必在64个PEM中重复存放,可以由CU的某个寄存器送往各处理单元。 • (3)模式位线(Mode Bit Line)。每个PE经模式位线将其模式寄存器状态送到CU中,送来的信息包括该处理单元“活动状态”。 CU将送来的64个模式位组合成一个模式字,以便执行测试指令。 • (4)指令控制线。传送处理单元微操作控制信号、读写控制信号。
阵列控制器CU功能: • 对指令流进行控制和译码,执行标量操作指令。 • 向各处里单元发出执行数组操作指令所需的控制信号。 • 产生和向所有处理单元广播公共的地址部分。 • 产生和向所有处理单元广播公共的数据。 • 接收和处理由各PE(计算出错时)、系统I/O操作以及管理主机B6700所产生的陷阱中断信号。 输入输出系统 ILLiac IV输入输出系统有下列系统组成: 1)磁盘文件系统DFS。两套大容量并行读写磁盘系统及其控制器。每套磁盘系统有13台磁盘机,总容量109位。每台磁盘机有128道,每道1个磁头,并行读写,数据宽度256位,最大传输率512×106bit/s,平均等待时间19.6ms。 2)I/O分系统。包括3部分:输入输出开关IOS、控制描述字控制器CDC和输入输出缓冲存储器BIOM。 输入输出开关IOS功能有二:其一,将DFS或可能连上的实时装置转接到阵列存储器,进行大批数据的I/O传送;其二,作为DFS与PEM之间的缓冲,平衡两边不同的数据宽度。
控制描述字控制器CDC对阵列控制器CU的I/O请求进行管理。控制描述字控制器CDC对阵列控制器CU的I/O请求进行管理。 CU提出中断请求,CDC使B6700中断,由B6700响应输入/输出请求,并通过CDC给CU送响应代码,在CU中设置好必要的控制状态字。然后,CDC促使B6700启动PEM加载过程,由DFS向PEM送程序和数据。在PEM加载完成后,由CDC向CU传送控制信号,使CU开始执行Illiac IV的程序。 BIOM在DFS和B6700之间,使两者之间传送频带平衡(B6700存储器经CPU输送数据的频宽80×106bit/s,而DFS传送数据宽度500×106bit/s)。实际上,BIOM用4个PEM做成,总容量8192×64位。 3)B6700管理机基本组成:CPU(可选多1个)、32字内存(可扩展至512K字) B6700管理机作用:管理全部系统资源,完成用户程序的编译或汇编,作业调度、存储分配、产生输入/输出控制描述字从CDC、中断处理等。
BSP计算机 BSP计算机是由美国宝来公司和依里诺依大学于1979年制造,是共享存储器结构的SIMD计算机典型代表。 文件存储器系统 系统管理机 B7700/7800 程序和数据 250K字/s 文件存储器 4~64M字 文件存储控制器 并行处理机 控制处理机 指令/控制存储器 256K字 并行存储器 0.5~8M字 操作系统和维护信息 控制 维护单元 控制 处理单元 入口和出口 对准网络 并行处理机 控制器 16个算术单元
BSP并行存储器无冲突访问 设并行存储器的存储体数M=7(质数),运算单元数N=6。若有一个4×5数组 a00 a01 a02 a03 a04 a10 a11 a12 a13 a14 a20 a21 a22 a23 a24 a30 a31 a32 a33 a34 要求存储后按同一列、同一行、主对角线、反对角线访问都不会发生存储体冲突。 地址映象算法: 1)先将二维数组按列或行顺序变换为一维数组,形成一个一维线性地址空间,地址用a表示。 2)将地址a变换成并行存储器地址(j,i),其中j是存储体体号,i是体内地址,且 j=a mod m i=[a/n] 其中m,n分别为存储体数和处理单元数。
数组 元素 地址a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 体号j 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 体内 地址 i 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 体号 0 1 2 3 4 5 6 体内地址 0 1 2 3 4
阵列处理机的常用算法(以ILLiac IV 为例) 阵列处理机的处理器阵列结构是为适合一定类型的计算问题而设计的专门结构,因此对这一类问题表现出很高的性能。 1、矩阵加 将两个8×8的矩阵A和B相加时,只需要把A和B同一位置的一对元素存放在同一个PEM中,那么,64个PE就可同时并行地完成64对元素的相加,得到结构矩阵C=A+B,处理速度为顺序处理的64倍。 a a+1 a+2 A(0,0) A(0,1) A(7,7) B(0,0) B(0,1) B(7,7) C(0,0) C(0,1) C(7,7) PEM0 PEM1 PEM63 矩阵相加存储器分配
存储器分配好后,只需3条汇编指令就可一次实现矩阵相加:存储器分配好后,只需3条汇编指令就可一次实现矩阵相加: LDA ALPHA ;全部(a)由PEM送PE的RGA ADRN ALPHA+1 ;全部(a+1)与(RGA)进行浮点加,结果送RGA STA ALPHA+2 ;全部(RGA)由PE送PEM的a+2单元 2、矩阵乘 若A和B为两个8×8的矩阵,则C=A×B的64个元素为: 7 Cij= ∑ aikbkj 0<=i,j<=7 k=0
a0,0 a0,1 … a0,7 a1,0 a1,1 … a1,7 …… a7,0 a7,1 … a7,7 b0,0 b0,1 … b0,7 b1,0 b1,1 … b1,7 …… b7,0 b7,1 … b7,7 × a0,0×b0,0+a0,1×b1,0+…+a0,7×b7,0 … a0,0×b0,7+a0,1×b1,7+…+a0,7×b7,7 a1,0×b0,0+a1,1×b1,0+…+a1,7×b7,0 … a1,0×b0,7+a1,1×b1,7+…+a1,7×b7,7 …… a7,0×b0,0+a7,1×b1,0+…+a7,7×b7,0 … a7,0×b0,7+a7,1×b1,7+…+a7,7×b7,7 = 如果顺序执行C=A×B,那么,计算每个元素cij需要做8次乘法,7次加法,共需做15次乘/加运算。 在ILLIAC IV的处理机上,操作数B的64个元素存储在64个PEM中。当每次计算元素cij时,就把操作数A的8个元素aik(0<=k<=7)播送到相应的8个PE中,然后并行地一次完成8个中间积的运算。最后对8个中间积做7次加法,累加得到cij。
3、累加和 对于8×8的处理阵列,需要把一行或一列的8个处理单元中的操作数累加求出累加和,即将N个数的顺序相加过程变为并行相加的过程。 对于累加和这样的递归操作,为了加快并行计算,常采用递归折叠算法。 值 A0 A1 A2 A3 A4 A5 A6 A7 PE 0 1 2 3 4 5 6 7 第一步 A0+A1 A2+A3 A4+A5 A6+A7 第二步 A0+A1+A2+A3 A4+A5+A6+A7 第三步 A0+A1+A2+A3+A4+A5+A6+A7 一般而言,对于在P个单元上实现P个元素累加求和,需要折叠[lbP]次,并行相加[lbP]次,并行传送数据的次数根据各PE间互连网络的拓扑结构不同而有很大差异。 在求累加和过程中,并非每个处理单元始终参加运算,因此,需要借助屏蔽方式。
题:A和B都是元素为浮点表示的64×64的二维数组,一次浮点加法的计算过程由取数、求阶差、对阶、尾数加、规格化和存数共6个段组成。若每个段的执行时间均为Δt,请分别求出在下列结构不同的处理机上完成C=A+B所需时间及相对于顺序处理的加速比。题:A和B都是元素为浮点表示的64×64的二维数组,一次浮点加法的计算过程由取数、求阶差、对阶、尾数加、规格化和存数共6个段组成。若每个段的执行时间均为Δt,请分别求出在下列结构不同的处理机上完成C=A+B所需时间及相对于顺序处理的加速比。 (1)顺序处理方式的处理机 (2)具有浮点加法流水线的流水处理机,且浮点加法流水线分为6个段,各段执行时间均为Δt。 (3)8×8的阵列处理机,且处理阵列上的每个处理器只能顺序处理浮点加运算。 (4)8×8的阵列处理机,且处理阵列上的每个处理器均能流水处理浮点加运算。 (4)64×64的阵列处理机。
a0,0 a0,1 … a0,63 a1,0 a1,1 … a1,63 …… a63,0 a63,1 … a63,63 b0,0 b0,1 … b0,63 b1,0 b1,1 … b1,63 …… b63,0 b63,1 … b63,63 + a0,0 + b0,0 a0,1 + b0,1 … a0,63 + b0,63 a1,0 + b1,0 a1,1 + b1,1 … a1,63 + b1,63 …… a63,0+b63,0 a63,1+b63,1 … a63,63+b63,63 = 解: (1)顺序处理方式下,需要顺序执行的浮点加法次数为64×64=4096,每次浮点加运算所需时间为6Δt,则全部运算所需时间为: T1=4096×6Δt=24576Δt (2)需要流水执行的浮点加法次数为64×64=4096,则一个K=6段浮点加法流水线处理全部运算所需时间为: T2=(k+n-1)Δt=(6+4096-1)Δt=4101Δt 加速比: S2=T1/T2=5.9
(3)对于8×8的处理阵列,每个处理器需要处理64×64二维数组中的一个8×8子数组,因此,每个处理器需要执行的浮点加法次数为8×8。每次浮点加法运算需要时间6Δt。每个处理器顺序执行64次浮点加法所需时间为64×6Δt=384Δt。64个处理器并行处理,同时完成各自的64次浮点加运算,所以,全部运算所需时间为:(3)对于8×8的处理阵列,每个处理器需要处理64×64二维数组中的一个8×8子数组,因此,每个处理器需要执行的浮点加法次数为8×8。每次浮点加法运算需要时间6Δt。每个处理器顺序执行64次浮点加法所需时间为64×6Δt=384Δt。64个处理器并行处理,同时完成各自的64次浮点加运算,所以,全部运算所需时间为: T3=384Δt 加速比: S2=T1/T3=64 (4)对于8×8的处理阵列,每个处理器需要处理64×64二维数组中的一个8×8子数组,因此,每个处理器需要执行的浮点加法次数为8×8。K=6段的浮点加法流水线处理64次浮点加运算需要时间(k+n-1)Δt=(6+64-1)Δt=67Δt。64个处理器并行处理,同时完成各自的64次浮点加运算,所以,全部运算所需时间为: T4=67Δt 加速比: S2=T1/T4=366.8
(5) 对于64×64的处理阵列,每个处理器只需执行一次浮点加运算,所需时间为6Δt,所以,全部运算所需时间为: T5=6Δt 加速比: S2=T1/T5=4096
题:分别计算在下列各处理机中,计算点积 8 S= ∑ aibi i=1 • 所需时间及相对于顺序处理方式的加速比。 • (1)顺序处理方式处理机 • (2)具有一个流水加法器和一个流水乘法器的流水处理机,且加法器和乘法器可以同时工作。 • (3)8个处理单元之间用双向环互连的并行处理机,相邻PE之间传送一次数据需时间△t。 • 假设各处理机或处理单元取数和存数的时间忽略不计,完成一次加法需2△t,完成一次乘法需4△t。
解:计算点积 8 S= ∑ aibi i=1 需要做8次乘法和7次加法。 (1)顺序处理机时间 T1=8×4Δt+7×2Δt= 32Δt+14Δt=46Δt (2)在流水处理机上, 7次加法存在数据相关,流水乘和流水加引入连接,时空图如下: 加 乘 由时空图可知,计算点积S需要时间 T2=17×2Δt=34Δt 相对于顺序执行的加速比 S2=T1/T2=46Δt/34Δt=1.35
(3)由8个PE组成双向环,每个PE有自己的局部PEM,向量A和B的元素对ai和bi存储在相应的PEM中。(3)由8个PE组成双向环,每个PE有自己的局部PEM,向量A和B的元素对ai和bi存储在相应的PEM中。 8个PE并行做1次乘法得到8个乘积分别存于各自的PE中,用时4Δt。 有了乘积后,接下来做累加和(折叠): 值 A0 A1 A2 A3 A4 A5 A6 A7 PE 0 1 2 3 4 5 6 7 第一步 A0+A1 A2+A3 A4+A5 A6+A7 第二步 A0+A1+A2+A3 A4+A5+A6+A7 第三步 A0+A1+A2+A3+A4+A5+A6+A7 传送 传送 传送 Δt 2Δt 2Δt 2Δt Δt 2Δt 计算点积S需要时间 T3= 4Δt+10Δt=14Δt 相对于顺序执行的加速比 S3=T1/T3=46Δt/14Δt=3.3