向量流水处理机的开发途径是时间重叠。
超标量处理机和向量处理机是两种不同的处理器架构。
超标量处理机是一种多指令流水线处理器,它可以同时执行多条指令,通过重叠执行来提高处理器的效率。它可以从指令流中提取多条指令,并将它们分发到不同的功能单元上执行,以实现指令级并行。超标量处理机的主要特点是具有多个功能单元,可以同时执行多条指令。
而向量处理机是一种专门用于执行向量操作的处理器。它通过在单个指令中同时操作多个数据元素,以实现数据级并行。向量处理机的主要特点是具有特殊的向量寄存器和向量指令,可以高效地执行向量计算任务。
因此,超标量处理机和向量处理机在处理器架构上有所不同。超标量处理机主要通过指令级并行来提高处理器的效率,而向量处理机主要通过数据级并行来提高处理器的效率。
向量处理机分为:向量流水线处理机和阵列处理机两类。
- 向量流水处理机是以
时间重叠
途径开发的 - 阵列处理机是以
资源重复
途径开发
6.1 向量的流水处理与向量流水处理机
6.1.1 向量的处理和向量的流水处理
向量纵向处理是向量的处理方式;
分组纵横处理既是向量的处理方式,也是向量的流水处理方式。
向量处理的一个显著特点是只要不出现功能部件使用冲突和源向量寄存器使用冲突,通过链接机构可使有数据相关的向量指令仍能大部分时间并行执行。
因此,可以总结为:
- 横向(水平)处理方式
- 是向量的处理方式, 但
不是
向量的流水处理方式
- 纵向(垂直)处理
- 是向量的处理方式,也是向量的流水处理方式
- 分组纵横处理
- 是向量的处理方式,也是向量的流水处理方式
举例:计算D=A×(B+C)其中A,B,C,D 都是有N个元素的向量。
- 横向
- 采用逐个求D向量元素的方法
- 即:访存取、、 元素再求, 再取、、 求
- 宜于在标量处理机上采用循环程序实现,但是难以使流水线连续流动(频繁出现先写后读的操作数相关)
- 纵向
- 采取对整个向量按相同操作都执行完之后再转去执行别的操作
- 即:先执行 `,再执行
- 分组纵横
- CRAY-1向量流水处理机改成把流水线输入、输出端连到容量足够大的向量寄存器组,采用面向寄存器-寄存器型结构的流水线处理机。向量寄存器组与主存之间采用成组传送
- 若向量的长度N太长,超出了向量寄存器组中寄存器个数, 则将该向量分割为若干组,使每组都可以放入向量寄存器组。
- 每一组中采用纵向方式处理, 组之间则采用软件方法编制循环程序方式依次循环处理。
CRAY-1是一台由Cray Research(后来成为Cray Inc.)设计和制造的超级计算机,于1976年发布。它是世界上第一台商用的超级计算机,以其卓越的性能和创新的设计而闻名。
CRAY-1的特点之一是其独特的向量流水线(Vector Pipeline)处理机架构。向量流水线处理机是一种处理向量数据的计算机架构,其中计算单元可以在一条指令的多个阶段中处理不同的数据元素。这有助于提高计算性能,特别是对于科学和工程领域中需要大量数学运算的应用。
CRAY-1的向量流水线处理机架构包括多个处理单元,这些处理单元可以同时执行多个相同类型的运算。它使用了64位的数据字长,并且在硬件层面上实现了对向量操作的支持,这使得CRAY-1在处理科学和工程计算中的大规模数值数据时非常高效。
总的来说,CRAY-1是一台里程碑式的超级计算机,其向量流水线处理机架构为后来的超级计算机设计提供了启示,成为超级计算领域的先驱之一。
向量的流水处理:(cray-1向量流水处理机)
cray-1为向量运行提供的六个流水线单功能部件与流水经过时间(这里需要记住):
功能部件 | 流水经过时间(拍), |
整数加 | 3 |
逻辑运算 | 2 |
移位 | 4 |
浮点加 | 6 |
浮点乘 | 7 |
浮点迭代求倒数 | 14 |
访存 | 6 |
存寄存器 | 1 |
例题:
求向量D=A×(B+C), 向量为浮点数,各向量元素个数均为N, 参照 CRAY-1方式分解为3条向量指令:
V_3
←存储器; 访存取A送入V_3
寄存器 (启动访存+访存+写寄存器 =1+6+1)V_2←V_0+V_1; B+C→K
(送入加法流水线+浮点加 + 写寄存器 =1+6+1)V_4←V_2×V_3; K×A→D
(送入乘法流水线+浮点乘 + 写寄存器 =1+7+1)
当采用下列三种方式工作时,各需要多少拍才能得到全部结果
CRAY-1 各部件流水经过时间:
浮点加 6拍, 浮点乘 7拍, 存入寄存器 1拍, 主存取值 6拍
- 1,2,3串行执行
- 8拍 + (N-1) + 8拍 + (N-1) + 9拍 + (N-1),
每一个操作都有一个加N-1
- 22+3N(拍)
- 1、2 并行执行后, 再执行3
- max{7,7}+(N-1) + 9 + (N-1)
- 15+2N(拍)
- 采用链接技术(节省前一个N-1的时间)
- max{7,7} + 9 + (N-1)
- 16+N(拍)
处理机的访存操作通常是以单个数据单元为目标进行的,即一次访问一个数据。这是因为内存中的数据单元通常被分配地址,并且处理机通过指定地址来访问数据。
然而,有一些高级的处理机和内存架构支持一些特殊的指令或技术,使得在一次访存操作中可以同时获取多个数据。这通常涉及到向量处理、并行访存或类似的技术。例如,SIMD(单指令多数据)指令集允许一条指令同时对多个数据执行相同的操作。
向量处理机相关概念:
①向量处理机是有向量数据表示的处理机,分向量流水处理机和阵列处理机两类。向量流水处理机是以时间重叠途径开发的,而阵列处理机是以资源重复途径开发的。
②所谓冲突,指的是并行工作的各向量指令的源向量或结果向量使用了相同的。
③CRAY-1向量处理是一个典型的像俩个处理机,它的一个显著特点是只要不出现功能部件使用冲突和源向量寄存器使用冲突,通过链接机构可使有数据相关的向量指令仍能大部分时间并行执行。
④链接技术是提高计算机整体运算速度的一个非常重要的措施。
6.1.2 向量流水处理的结构
流水线在连续流动时,才能获得高的吞吐量,对于向量运算,由于每个向量的所有元素都执行相同的操作,而且每个向量各元素之间相互无关,因此可以保证流水线的畅通。向量处理机不仅支持向量数据的表示,同时通过多功能部件、连接技术等机制实现对向量数据的并行处理。所以,向量处理机一般采用流水线结构,并且通过多条流水线并行地处理不相关的向量数据。
6.1.3 通过并行、链接提高性能
向量流水线并行条件:
- 功能部件不冲突
- 源寄存器不冲突
- 结果寄存器不冲突
- 数据不相关
链接技术:
- 链接条件:
- 空间:无向量寄存器、功能部件冲突
- 时间:
- 仅上一指令的第 1 个结果分量送入结果向量寄存器的时钟周期可链接。
- 若后一指令源操作数分别是前两指令的结果寄存器,前两指令产生结果时间必须相等。向量长度必须相等。
<具体的还是结合题目讲的比较清楚>
6.2 阵列处理机的原理
(1)阵列处理机的构形主要有采用 分布式 存储器阵列构形和采用 集中式共享 存储器阵列构形。(p193)
分布式 存储器阵列构形:它是采用分布式存储器阵列处理机的构形。各处理单元有局部存储器(PEM)存放被分布的数据,只能被本处理单元直接访问。
在控制部件内还有一个存放程序和数据的主存储器,整个系统是在控制部件的控制下运行用户程序和部分系统程序的。在执行主存储器中的用户程序时,所有指令都在控制部件中进行译码,把只适合串行处理的标量或控制类指令留给控制部件自己执行,而把适合于并行处理的向量类指令“播送”给各个PE,控制处于“活跃”的那些PE并行执行。
集中式共享 存储器阵列构形:
系统存储器是由K个存储分体集中组成,经ICN为全部N个处理单元所共享。为使各处理单元对长度为N的向量中各个元素都能同时并行处理,存储分体个数K应等于或多于处理单元数N。各处理单元在访主存时,为避免发生分体冲突,也要求有合适的算法能将数据合理地分配到各个存储分体中。
(2)阵列处理机与流水线处理机的区别。(p195,简答题)
① 阵列处理机利用的是资源重复,流水线处理机利用的是时间重叠;
② 阵列处理机利用的是并行性中的同时性,流水线处理机利用的是并行性中的并发性;
③ 阵列处理机使用简单、规整的互连网络来确定处理单元之间的连接,流水线处理机的功能部件一般比较固定。
为什么会出现阵列处理机的概念?
并行处理技术是获取高性能计算的重要手段,计算机系统结构由低向高发展的过程,就是并行处理技术不断发展的过程。与器件的发展对提高计算机性能的作用相比,并行处理技术显得更重要——器件速度的改进受物理条件约束,不可能超过光速,而并行处理技术可以通过资源的重复来实现,其发展基本上是无穷尽的。因此,从这个意义上讲,它有着更为广阔的应用前景,将起到更为重要的作用。
并行性的双重含义是指同时性(或并行性)和并发性。所谓同时性是指两个或两个以上的事件在同一时刻发生,而并发性则是指两个或两个以上的事件在同一段时间间隔内发生(交替、轮流)。
程序执行过程通常可划分成以下 5 个等级
- 作业级
- 任务级
- 程序级(例行程序或子程序)
- 指令级
- 指令内的操作级
前 3 级为粗粒度,主要是通过多处理机或多计算机系统实现,开发手段以软件为主,其中包括并行性算法分析、任务的调度与分配等;而后 2 级为细粒度,主要是在单处理机中实现,开发手段以硬件为主,其中包括标量流水、超标量流水、超流水和超长指令字等。
并行性的开发途径有时间重叠、资源重复和资源共享。
- 时间重叠:在并行性中引入时间因素。即让多个处理过程在时间上相互错开、重叠地使用同一部件,以赢得速度,如指令的流水执行方式。
- 资源重复:在并行性中引入空间因素。即通过重复设置多个功能部件来提高处理性能或可靠性,如阵列处理机。
- 资源共享:利用软件的方法,让多个用户按一定的时间顺序轮流使用一套资源,以提高系统资源的利用率。
从计算机系统结构的角度出发,根据并行性的三个途径,从计算机系统由低性能向高性能发展过程中可以看出,并行性从两个不同的角度向同一方向发展。
这里我们将讨论以 SIMD
方式工作、采用资源重复的并行性措施的阵列处理机。由于历史原因,习惯上也将阵列处理机(简称“阵列机”)称为并行处理机。这里首先讨论它的基本结构,然后是它的主要特点,最后简短讨论适合于在阵列机上进行加工的并行算法。
6.2.1 阵列处理机的构形和特点
构型1:
具有分布式存储器阵列的阵列处理机构型
- 各处理单元有局部存储器存放被分布的数据,只能被本处理单元直接访问
- 控制部件内有一个存放程序和数据的 主存储器
- 执行主存储器中的用户程序时,所有指令都在控制部件中进行译码
- 把只适合串行处理的标量或控制类指令留给控制部件直接执行
- 把适合并行处理的向量类指令”播送“给各个处理单元
- 各个处理单元(PE)之间通过ICN(Interconnection Network)交换数据
采用这种构型的阵列处理机是SIMD(单指令流多数据流)的主流
典型的机器有: ILLIAC IV、MPP、DAP、CM-2、MP1、DAP6000
构型2:
具有集中式共享存储器的阵列处理机构型
- 系统存储器由 K 个存储分体集中组成, 经ICN(互联网络)为全部N个处理单元共享
- 为了可以并行处理, K≥N N:处理单元
- 各处理单元在访主存时为避免分体冲突,要求有合理的算法将数据合理地分配到各个存储分体中
- ICN用于在处理单元与存储器分体之间进行转接构成数据通路, 有的阵列处理机称它为”对准网络“
采用集中式共享存储器的阵列处理机构型的典型机器有BSP
阵列处理机的特点:
- 利用多个处理单元对向量或数组所包含的各个分量进行同时计算,从而易于获得很高的处理速度
- 与同样擅长向量处理的流水线处理机比,阵列处理机利用的是资源重复,而不是时间重叠
- 利用的是并行性中的同时性, 而不是并发性
- 阵列处理机提高速度主要是靠增大处理单元数
6.2.2 ILLIAC IV的处理单元阵列结构
ILLIAC IV 的处理单元是累加器型运算器。
ILLAC(埃利卡) IV阵列处理机上处理单元的互连结构. 它采用如下图所示的分布存储器构形.
其中 为处理部件(包含64位的算术处理单元, 局部存储器, 存储逻辑部件 MLU) , 64个处理部件 排列成8x8 (8是,也是方阵的阶)方阵,任何一个 只与其上, 下, 左, 右 4个近邻的直接相连 ,同一列两端的 PU连成环, 每一行右端的 PU与下一行左端的 PU 相连, 最下面一行右端的 PU与最上面一行左端的PU 相连, 从而形成一个闭合的螺线形状, 称其为闭合螺线阵列.
普遍来讲, 个处理单元组成的阵列()中, 任意两个处理单元 之间的最短距离不超过 步。
ILLIAC IV的题, 画出的图必须是方阵!!
一道题目:
6.2.3 ILLIAC IV的并列算法举例(了解即可)
这一段是网上找的大佬的例子,自己也不是很明白,大家自己再查查资料吧。
矩阵加
阵列处理机解决矩阵加是最简单的一维情况
两个矩阵相加减,即它们相同位置的元素相加减!
**注意:**只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的.
两个8x8 的矩阵相加:
将矩阵A、B、C相应位置的分量存放在同一个PEM中, 且在全部64个PEM中, 让A、B、C的各分量地址均对应取相同地址 。
累加和
这是一个将N个数的顺序相加转换为并行相加的问题。
为得到各项累加的部分和最后的总和,要用到处理单元中的活跃标志位.
只有处于活跃状态的处理单元才能执行相应的操作。
为叙述方便,取N=8, 即有8个数A(I)顺序累加, 其中 0≤i≤7。
计算步骤:
- 令 K=0
【扩展】 附加阵列处理器
附加阵列处理器是连接到通用计算机上的辅助处理器,用于增强和改进计算机在数值计算任务中的性能。它通过在并行处理中使用多个功能单元来提供出色的性能。
所附阵列处理器包括具有输入/输出接口和本地存储器接口的公共处理器。
主存和本地内存是链接的。
【扩展】 SIMD阵列处理器
SIMD指的是用多个并行处理器组织一台计算机。处理单元被设计成在单个控制单元的监督下一起工作,从而产生单个指令流和多个数据流。
阵列处理器的一般如下所示。它由几个相同的处理单元(pe)组成,每个处理单元都有其本地内存M、一个ALU和寄存器包含在每个处理器单元中。主控制单元控制处理元件的动作。它还解码指令并决定如何执行指令。
由Burroughs公司制造的ILLIAC IV计算机是最著名的SIMD阵列处理器。单指令多数据(SIMD)处理器是高度专业化的计算机。它们只适用于可以表述为向量或矩阵的数值问题;它们不适合其他类型的计算。
更详细的图:
分布式存储器的阵列机和共享存储器的阵列机:
6.3 SIMD计算机的互联网络
6.3.1 互连网络的设计目标与互连函数
SIMD 系统互联网络的设计目标:
(1) 结构要简单以降低成本;
(2) 互联要灵活,以满足算法和应用需要;
(3) 处理单元间信息交换所需传送的步数要少,以提高速度性能;
(4) 规整性、模块性要好,以便可以采用基本构件来组合、增强系统的可扩充性,也便于超大规模集成电路实现。
(1)在SIMD 系统的互连网络的设计目标中,为了降低成本,要求 结构 不要过分复杂;为满足算法和应用的需要,要求 互连 要灵活。(p201)
(2)ILLICA Ⅳ 阵列处理机中,PE 之间所用的互连函数是 :(p203)
(3)混洗交换单级网络,最远的两个单元建立连接需要n−1 次混洗和 n 次交换。(p205)
理解:以 n = 3 为例,先用混洗互连函数可以得到虚线部分连线,因为这样不足以让全 0 和全 1 的处理单元和其他的连接,添加了Cube0 交换函数,也就是实线部分。让 0 和 7 连接需要经过 0 → 1 → 2 → 3 → 6 → 7 ,2 次混洗,3 次交换。
(4)多级立方体网络对各个交换开关的控制方式。(p205,简答题) 级控制:同一级的所有开关只用一个控制信号控制,同时只能处于同一种状态;
单元控制:每一个开关都由自己独立的控制信号控制,可各自处于不同的状态;
部分级控制:第 i 级的所有开关分别用 i + 1 个信号控制,其中 0 ≤ i ≤ n − 1 ,n 为级数。
(5)实现全排列网络的两种方法。(p213,简答题)
① 在多级互连网络的输出端设置锁存器,使数据在时间上顺序通行两次; ② 将
级的互连网络和它的逆网络连在一起,省去中间完全重复的一级,得到总级数为
的全排列网络。
6.3.2 互联网络应抉择的几个问题
互联网络操作方式有:
- 同步
- 异步
- 同步与异步
的组合 3 种。
互连网络概念:
处理单元之间需要传送数据,但是当处理单元很多的时候不可能每个单元都两两直接连接,成本太高,就要用互连网络的方式,不同的互连网络就对应不同互连函数,代表不同的连接模式。不同网络的互连函数如下表所示。
(1)立方体单级网络(Cube)
连接结构类似立方体:4 个处理单元用二维立方体(正方形)连接,每个单元和另外 2 个单元连接;8 个处理单元用三维立方体(正方体)连接,每个单元和另外 3 个单元连接;以此类推。
如本题,16 个单元用 4 个二进制位表示,每个单元和另外 4 个单元连接。3 号(0011) 所连接的单元为 2(0010)、1(0001)、7(0111)、11(1011) 。
(2)PM2I 单级网络
PM2I 的含义是
对应着它的互连函数,代表 j 号处理单元可以直接连接哪些单元号。
如, i 取值范围就是 0 到 3 对应 4 位,N 为 16 对应处理单元个数,mod 代表取余。i 取到 3 的时候两个结果是一样的,所以写互连函数的时候是
对于 3 号: 3 ± 1 = 2 , 4 3 ± 2 = 1 , 5 3 ± 4 = − 1 , 7 → 15 , 7 3 ± 8 = − 5 , 11 → 11 , 11
(3)混洗交换和蝶形,简单记下互连函数即可。
单级网络 | 互连函数 | N 为处理单元个数 | |
立方体 | 对应位取反 | 1 对 n | |
PM2I | 加减 | 1 对 2 n − 1 | |
混洗交换 | 最左位挪到最右边 | 1 对 1 | |
蝶形 | 最高位最低位互换 | 1 对 1 |
6.3.3 基本的单级互连网络
1.立方体单级网络cube
立方体(Cube)单级网络的名称来源于三维立方体结构。
立方体结构的每个顶点(网络的结点)代表一个处理单元, 共8个处理单元, 用xyz三位二进制码编号。
它所能实现的入、出端连接如同立方体各顶点间能实现的互连一样, 即:每个处理单元只能连接到其二进制编号的某一位取反的其它三个处理单元上。
所以三维立方体单级网络有三种互联函数:Cube0
, Cube1
,Cube2
。 函数表示只在右起第i位上0,1互反。
推广到n维时, N个结点的立方体单级网络共有
种互联函数。
当n>3时,称为超立方体网络。 单级立方体网络的最大距离为n, 即:反复使用单级网络, 最多经n次传送就可以实现任意一对入、出端的连接。
任意两点之间至少有n条不同的路径, 容错性高。
2.PM2I单级网络
PM2I 单级网络是" 加减"
单级网络的简称。
能实现与j号处理单元之间相连的是号为
的处理单元。
它共有2n个互联函数。
对于有N=8的三维PM2I互联网络的函数, 有
等六个不同的互联函数。
分别为:
3.混洗交换单极网络
包含两个互联函数
- 全混
- 输入端编号的二进制位数为输入端编号的二进制码
- 其实就是把二进制编号的最高位移动到最低位。
- 交换
- 单纯的全混互联网络无法实现全0和全1两个处理单元与其他单元的连接, 所以需要增加函数
- 在混洗交换网络中,最远的的两个入、出端号是全0和全1,他们的连接需要n次交换和n-1次混洗, 所以最大距离为2n−1
4.蝶形单级网络
蝶形互联网络是将二进制编号的最高位与最低位互换位置。互联函数的一般式为:
输入端编号的二进制位数为输入端编号的二进制码。
6.3.4 基本的多级互连网络
不同的多级互联网络反应在所用的交换开关的功能多少、拓扑结构和控制方式上各有不同。
1.多级立方体网络
2.多级混洗交换网络
3.多级PM2I网络
4.基准网络
5.多级交叉开关网络
<这个后面专题专门介绍>
6.3.5 全排列网络
可实现N个入端的所有N!种排列的网络称全排列网络,即N个端所有一到一的传送都不会发生传送路径使用冲突的互连网络。
这里有可能出简答题的。
实现全排列网络的出方法有:
1.在多级互连网络的输出端设置锁存器,使输出端的数据再一次通过多级互连网络;
2.将两个多级互连网络,即一个正网络和一个逆网络串接起来,合并掉中间的一级,组成级的多级网络。
6.4 共享主存构型的阵列处理机中并行存储器的无冲突访问
<这个问题,后面结合题目专题来解释吧>
6.5 脉动阵列流水处理机
脉动阵列流水处理机是一种特殊的处理器架构,结合了脉动阵列和流水线的特点。它是一种高度并行的处理器架构,用于执行大规模数据并行的任务。
在脉动阵列流水处理机中,处理器被组织成一个二维的脉动阵列结构,每个处理器都有自己的本地寄存器和局部存储器。数据和指令被分割成多个块,并在脉动阵列中流动,每个处理器都可以同时处理一个块的数据。
流水线技术被应用于脉动阵列中的每个处理器,以实现指令级并行。每个处理器都有多个流水线级别,可以同时执行多个指令的不同阶段。这样,整个脉动阵列流水处理机可以同时执行多个指令,大大提高了处理器的效率。
脉动阵列流水处理机适用于需要大规模数据并行处理的任务,例如图像处理、信号处理、科学计算等。它的并行性能和计算能力很高,可以有效地处理大规模的数据集和复杂的计算任务。
6.5.1 脉动阵列结构的原理
脉动阵列结构是由一组处理单元 PE 构成的阵列,阵列中的输入数据流和结果数据流可各自沿多个方向同步地向前推进。
脉动阵列结构的特点:(p218,简答题)
(1)结构简单、规整,模块化强,可扩充性好。
(2)PE间数据通信距离短、规则,使数据流和控制流的设计、同步控制等均简单规整。
(3)具有极高的计算并行性,可通过流水获得很高的运算效率。
(4)阵列与外界I/O通信量少,降低了对系统主存和I/O系统频宽的要求。
(5)脉动阵列结构的构形与特定计算任务和算法密切相关, 具有专用性,这对VLSI是不利的。
如果兴趣所致,想了解更多的信息;可以参考下这里:https://zhuanlan.zhihu.com/p/375705286
6.5.2 通用脉动阵列结构
【扩展】 阵列处理机和向量处理机的不同
阵列和向量处理机几乎相同,但略有不同。
- 阵列处理器使用多个处理元素并行(同步)处理大数组元素。
- 向量处理器使用多个向量管道并行工作
阵列处理器的优点
- 阵列处理器提高了系统的整体性能。
- 由于阵列计算机中的并行处理器与主机同步运行,从而提高了系统的整体容量。由于阵列计算机中的每个处理单元都有其本地内存,因此它为系统增加了额外的内存。
- 由于阵列计算机中的并行处理器在庞大的数据阵列上进行计算,它有助于解决高并行性的困难。
- 阵列处理器同时对所有数组元素执行计算,这加快了计算速度。