【计算机体系结构】计算机体系结构(6) 并行处理技术(1) SIMD并行计算机、算法和互联网络

文章目录

并行处理技术是获取高性能计算的重要手段,计算机系统结构由低向高发展的过程,就是并行处理技术不断发展的过程。与器件的发展对提高计算机性能的作用相比,并行处理技术显得更重要——器件速度的改进受物理条件约束,不可能超过光速,而并行处理技术可以通过资源的重复来实现,其发展基本上是无穷尽的。因此,从这个意义上讲,它有着更为广阔的应用前景,将起到更为重要的作用。

6.1 并行处理技术的基本概念

所谓并行性是指在数值计算、数据处理、信息处理或人工智能求解过程中,可能存在某些可以同时进行运算或操作的部分。开发并行性的目的是,为了能进行并行处理,提高计算机系统求解问题的效率

并行性的双重含义是指同时性(或并行性)和并发性。所谓同时性是指两个或两个以上的事件在同一时刻发生,而并发性则是指两个或两个以上的事件在同一段时间间隔内发生

并行处理则是指一种相对于串行处理的信息处理方式,它着重开发计算过程中存在的并发事件。在进行并行处理时,其每次处理的规模大小可能是不同的,这可用并行性粒度来表示。有关并行性粒度大小 G G G 可用以下公式表示(假定系统中共有 P P P 个处理器) :
G = T W T C = ∑ i = 1 P t w i ∑ i = 1 P t c i G = \dfrac{T_W}{T_C} = \dfrac{ \displaystyle\sum^P_{i = 1} t_{wi}} { \displaystyle\sum^P_{i = 1} t_{ci}} G=TCTW=i=1Ptcii=1Ptwi 式中,分子为所有处理器的计算时间总和,而分母表示所有处理器的通信时间总和。当 T C TC TC 较大时, G G G 就较小,表明处理粒度较细。当处理粒度较细时,显然此时处理器间的通信量将加大,相反当粒度较粗时,通信量就较小

并行性有不同的等级,而且从不同角度观察时,会有不同的划分方法。程序执行过程通常可划分成以下 5 5 5 个等级——作业级、任务级、程序级(例行程序或子程序)、指令级指令内的操作级 3 3 3 级为粗粒度,主要是通过多处理机或多计算机系统实现,开发手段以软件为主,其中包括并行性算法分析、任务的调度与分配等;而 2 2 2 级为细粒度,主要是在单处理机中实现,开发手段以硬件为主,其中包括标量流水、超标量流水、超流水和超长指令字等。

并行性的开发途径有时间重叠、资源重复和资源共享。

  • 时间重叠:在并行性中引入时间因素。即让多个处理过程在时间上相互错开、重叠地使用同一部件,以赢得速度,如指令的流水执行方式。
  • 资源重复:在并行性中引入空间因素。即通过重复设置多个功能部件来提高处理性能或可靠性,如阵列处理机。
  • 资源共享:利用软件的方法,让多个用户按一定的时间顺序轮流使用一套资源,以提高系统资源的利用率。

从计算机系统结构的角度出发,根据并行性的三个途径,从计算机系统由低性能向高性能发展过程中可以看出,并行性正从两个不同的角度向同一方向发展

  • 一方面在单处理机上,通过时间重叠、资源重复和资源共享,分别向异构型多处理机系统、同构型多处理机系统和分布式处理系统方向发展。
  • 另一方面在多计算机系统中,通过功能专业化、多机互连、网络化等手段,分别向异构型多处理机系统、同构型多处理机系统和分布式多处理机系统的方向发展。

例如,在指令级内部,采用了多个子部件以流水方式执行指令,以提高单台计算机的执行速度。这一思想仍可应用于多台计算机组成的系统,如在高级语言向汇编语言转换过程中,是由编译程序完成翻译的。将翻译的全过程分为编译扫描、编译分析和目标程序生成三个子过程。为了提高效率,可由三台计算机组成流水方式执行。由于这三台计算机结构可以不一样(非对称型),故这样组成的多计算机系统称为异构型多计算机系统。

按照资源重复的思想,既然在一个计算机系统内可由多个相同的处理单元构成阵列处理机,那么用多台系统结构相同的计算机,也可以组成多计算机系统,这种系统结构称为同构型(对称型)多计算机系统。

按照资源共享的思想,单处理机采用多道程序和分时操作,并发展成为分布式多计算机系统。


6.2 SIMD 并行计算机(阵列处理机)

本节将讨论以 SIMD 方式工作、采用资源重复的并行性措施的阵列处理机。由于历史原因,习惯上也将阵列处理机(简称“阵列机”)称为并行处理机。这里首先讨论它的基本结构,然后是它的主要特点,最后简短讨论适合于在阵列机上进行加工的并行算法

6.2.1 阵列机的基本结构

阵列机通常由一个控制器 CU N N N处理器单元 PE M M M存储器模块 M 及一个互连网络部件 IN 所组成。由 CU 控制将指令广播给系统中的各个 PE ,而所有活跃的 PE 将以同步方式执行相同的指令(单指令流),它们从相应的存储模块中取得自己所需的数据对象(多数据流)。IN 用来使各个 PE 之间或是 PEM 之间实现方便的通信连接。IN 有时也称为对准 Alignment排列 Permutation 网络。有关互连网络的问题,在下一节作进一步讨论。

为了形式化地表示阵列机的特征,可用以下的参数加以描述:
C = ( N , F , I , M ) C= (N, F, I, M) C=(N,F,I,M) 式中, N N NPE 数; F F F 为确定互连网络结构及连接拓扑的互连参数 I I I指令集,它能进行标量、向量、数据传送通路操作和网络变换操作等; M M M屏蔽方式集合,每一种方式将 PE 集合分为活跃和非活跃两类 PE 的子集。这种描述模型,为评价不同的阵列机结构提供了比较基础。

根据存储器模块是以分布方式存取还是集中方式存取,阵列机可分为两种基本结构:分布式存储器的阵列机集中共享存储器的阵列机

1. 分布式存储器的阵列机

分布式阵列机的基本结构如图6.1(a)所示。这种阵列机的主要结构特征如下:

  • CU 中具有自己的存储器,以存放系统程序和用户程序,此外,它也可存放各个 PE 所需的共享数据
  • CU 的主要功能是对指令译码和判别它应在何处执行。对于标量或控制类指令,CU 本身中含有运算部件可以直接执行;若是向量指令,它就将此指令广播给各个 PE 去执行。
  • 具有 N N N 个相同的处理单元 PE,它由处理器 Pi 和局部存储器 Mi 组成。只要数据分配得当,各个 Pi 主要将从自己的 Mi 中获取数据进行操作。各个 PE 将通过 IN 实现相互间必要的数据交换,因此,IN 是单向的
  • 各个 PE 同步执行来自 CU 的操作命令,但是并不一定每个操作非得所有 PE 都参加,CU 将对 PE 实行屏蔽控制,只有那些未被屏蔽的活跃 PE 才可参加操作。
  • CU 还控制互连网络 IN,使各个 PE 之间通过 IN ,实现相互之间必要的数据交换。当相互需要交换数据的两个 PE 不直接相连时,就需要经过它们之间的中间 PE来完成连接。
    在这里插入图片描述

2. 共享存储器的阵列机

图6.2(b)中示出了这种类型的阵列机结构。与图6.2(a)中分布式存储器的阵列机结构比较,区别主要在于:

  • 每个 PE 没有局部存储器。存储器模块以集中形式为所有 PE(通过 IN )共享
  • 互连网络受 CU 控制,用来构成 PEM 之间的数据交换通路。要求互连网络具有同时连接 PEMMPE 的双向性。系统中的一个 PE ,可以与任何另一个 PE 实现数据交换(只要有任何一个存储模块,同时与这两个 PE 相连接) 。当两个需交换数据的 PE 之间没有共享的存储模块时,可能需要经过多次的传送之后,方可实现交换。

6.2.2 阵列机的主要特点

阵列机是以单指令流多数据流方式工作的,它具有以下特点:

  1. 它采用资源重复方法引入空间因素,即在系统中设置多个相同的处理单元开发并行性,这与利用时间重叠的流水线处理机是不一样的。此外,它是利用并行性中的同时性、而不是并发性,所有处理单元必须同时进行相同操作。
  2. 它是以某一类算法为背景的专用计算机。这是由于阵列机中通常都采用简单、规整的互连网络,实现处理单元间的连接操作,从而限定了它所适用的求解算法类别。因此,「对互连网络设计的研究」就成为阵列机研究的重点之一。
  3. 阵列机的研究必须与并行算法研究密切结合,以便使它的求解算法的适应性更强一些,应用面更广一些。
  4. 从处理单元来看,由于都是相同的,因而可将阵列机看成是一个同构型并行机。但它的控制器实质上是一个标量处理机,而为了完成I/O操作以及操作系统的管理,尚需一个前端机。因此,实际的阵列机系统是由上述三部分构成的一个异构型多处理机系统。

6.2.3 典型 SIMD 计算机举例

1. ILLIAC-Ⅳ阵列计算机(阵列机)

由美国宝来 Burroughs 公司和伊利诺斯大学在1965年开始研制,并于1972年由宝来公司生产的 ILLIAC-Ⅳ 阵列机,是 SIMD 并行计算机的一个典型代表。它可分为两大部分,即 ILLIAC-Ⅳ 阵列和 ILLIAC-Ⅳ 输入输出系统。实际上,它是由三种类型处理机组成的一个异构多机系统:一是专门用于数组运算的处理单元阵列;二是阵列控制器,它既是处理单元阵列的控制部分,又是一台相对独立的小型标量处理机;三是一台标准的宝来公司的 B6700 计算机,由它担负 ILLIAC-Ⅳ 输入输出系统和操作系统管理功能,如图6.2所示。
在这里插入图片描述

(1) ILLIAC-Ⅳ 阵列

ILLIAC-Ⅳ 阵列计算机共有 64 64 64PE,由控制器 CU 统一控制。系统由一台 B6700 作为宿主机进行管理,每个 PE 有自己的局存 PEM ,容量 2 K 2K 2K 字,字长 64 64 64 位。每个 PE 拥有 4 4 4 64 64 64 位寄存器,分别用做累加器、操作数寄存器、数据路由寄存器通用寄存器。此外,尚有 1 1 1 16 16 16变址器 1 1 1 8 8 8方式寄存器,后者是用来存放 PE 屏蔽信息的。这是一种闭螺线阵列,每个 PE 只能与 4 4 4 个近邻的 PE 直接相连,即PEPEi - 1PEi + 1PEi - 8PEi + 8(Mod 64) 4 4 4 个近邻直接相连。

因此,从一个 PE 要将数据达到另一个 PE 时,可能中间要经过若干个其他 PE 转送。传送步数 S ≤ N − 1 S≤\sqrt{N}- 1 SN 1 ,这里 N N NPE 数。对于 ILLIAC-Ⅳ 来讲,由于 N = 64 N = 64 N=64 ,故 S ≤ 7 S≤7 S7 。例如,从 PE9PE45 的距离以这一路径为最短:PE9 → PE1 → PE57 → PE56 → PE48 → PE47 → PE46 → PE45

ILLIAC-Ⅳ 阵列机的每一个处理单元 PE 6 6 6 个可编程序寄存器 RGA, RGB, RGR, RGS, RGX, RGM 以及加/乘算术单元 AU逻辑单元 LU移位单元 SU地址加法器 ADA 等。

  • RGA累加寄存器,存放第一操作数和操作结果。
  • RGB操作数寄存器,存放加、减、乘、除等二元操作的第二操作数。
  • RGR被乘数寄存器,也是互连寄存器,用于 PE 与经过东、西、南、北 4 4 4 个互连通路之一的另一个处理单元之间的数据直接传送。
  • RGS通用寄存器,程序用来暂存中间结果。上述这 4 4 4 个寄存器都是 64 64 64 位的。操作数来自以下 4 4 4 个方面:PE 本身的寄存器、PE 的处理单元存储器 PEMCU 的公共数据总线 CDBPE 4 4 4 个近邻处理单元。
  • RGX 16 16 16 位的变址寄存器,它利用地址加法器 ADA 修改指令地址,并将形成的有效地址经过存储器地址寄存器 MAR ,输入存储器逻辑部件 MLU
  • RGM 8 8 8 位的模式寄存器,RGM 中的 EE1 位是“活动”标志位,用来控制 RGA, RGS 和处理单元存储器 PEME 位还控制 RGX活动标志位的设立,使得我们可以单独控制 64 64 64 个处理单元中的每一个处理单元,只有那些处于活动状态的处理单元,才执行单指令流规定的共同操作
    RGM 的其他 6 6 6 位分别是:FF1 位保存运算出错(上溢、下溢)标志,G, H, I, J 位保存测试结果。RGM 经常处于 CU 的监督之下,一旦出错,就发出 CU 陷阱中断。

处理单元存储器 PEM 分属于每一个处理单元,各有 2048 × 64 2048× 64 2048×64 位存储容量,PEM 的取数时间不大于 350 n s 350ns 350ns 64 64 64PEM 联合组成阵列存储器,存放数据和指令。

整个阵列存储器可以接受阵列控制器 CU 的访问,读出 8 8 8 个字的信息块到 CU 的缓冲器中。阵列存储器也可经过 1024 1024 1024 位的总线与 I/O 开关相连。每个 PE 只能直接访问自己的 PEM 。分布在各个 PEM 中的公共数据只能先读至 CU 后,再经 CU 的公共数据总线 CDB 广播到 64 64 64 个处理单元中去。

阵列存储器的另一个特点是它具有双重变址机构:控制器 CU 实现所有处理单元的公共变址,每一个处理单元 PE 还可以单独变址。双重变址机构增加了各处理单元存储器之间数据分配的灵活性

(2) 阵列控制器

阵列控制器 CU 实际上是一台小型控制计算机,它除了能对阵列的处理单元实行控制以外,还能利用自己的内部资源执行一整套指令,用以完成标量的运算操作CU 的标量操作与各 PE 的数组操作是时间重叠的。

阵列控制器 CU 同处理单元阵列之间有 4 4 4 条信息通路:

  • CU 总线处理单元存储器 PEM 经过 CU 总线,把指令和数据送往阵列控制器 CU,以 8 8 8 64 64 64 位字为一个信息块。这里的指令是指分布存放在 PEM 中用户程序的指令,而数据可以是处理所需要的公共数据。指令和数据先被送到 CU再由 CU 的广播功能把它们送到各处理单元
  • 公共数据总线 Common Data Bus, CDBCDB 64 64 64 位总线,用于 64 64 64 个处理单元同时广播公共数据的通路。例如,作为公共乘数的常数就不必在 64 64 64PEM 中重复存放,可以由 CU 的某一个寄存器送往各处理单元。另外,指令的操作数和地址部分也要经过 CDB 送来
  • 模式位线 Mode Bit Line每一个 PE 都可以经过模式位线,把它的模式寄存器中的状态送到 CU 中来,送来的信息中包括该处理单元的“活动”状态位。从 64 64 64PE 送往 CU 的模式位,在 CU 的累加寄存器中拼成一个模式字,以便在 CU 内部执行一定的测试指令,对这个模式字进行测试,并根据测试结果来控制程序的转移动作。
  • 指令控制线。处理单元微操作控制信号和处理单元存储器地址、读/ 写控制信号都经过约 200 200 200 条指令控制线,由 CU 送到阵列处理单元 PE 和存储器逻辑部件 MLU

概括起来,阵列控制器 CU 的功能有以下 5 5 5 个方面:

  • 对指令流进行控制和译码,执行标量操作指令。
  • 向各处理单元发出执行数组操作指令所需的控制信号。
  • 产生和向所有处理单元广播公共的地址部分。
  • 产生和向所有处理单元广播公共的数据。
  • 接收和处理由各 PE(计算出错时)、系统I/O操作以及主机 B6700 所产生的陷阱中断信号。
(3) 输入输出系统

ILLIAC-Ⅳ 输入输出系统由磁盘文件系统 DFSI/O分系统B6700 组成。磁盘文件系统 DFS 是两套大容量并行读写磁盘系统及其相应的控制器。每套磁盘系统有 13 13 13 台磁盘机,总容量为 1 0 9 10^9 109 位。每台磁盘机有 128 128 128 道,每道有一个磁头,并行读写,数据宽度为 256 256 256 位,最大传输率为 502 × 1 0 6 b i t / s 502 × 10^6 bit/ s 502×106bit/s,平均等待时间为 19.6 m s 19. 6ms 19.6ms 。如果 DFS 的两个通道同时发送或接收数据,则数据宽度为 512 512 512 位,最大传输率可达 1 0 9 b i t / s 10^9 bit/s 109bit/s

I/O分系统包括 3 3 3 部分,即输入输出开关 IOS控制描述字控制器 CDC输入输出缓冲存储器 BIOM

  • IOS 的功能有两个:一是开关功能,用以把 DFS 或可能连上的实时装置转接到阵列存储器,进行大批数据的I/O传送;二是作为 DFSPEM 之间的缓冲,以平衡两边不同的数据宽度。
  • CDC 的功能是对阵列控制器 CU 的 I/O 请求进行管理CU 提出 I/O 请求时,CDC 将使 B6700 管理计算机中断,由 B6700 响应输入/输出请求,并通过 CDCCU送回相应的响应代码,在 CU 中设置好必要的控制状态字。然后,CDC 促使 B6700 启动 PEM 的加载过程,由 DFSPEM 送入程序和数据。在 PEM 加载完毕后,又由 CDCCU 传送控制信号,使 CU 开始执行 ILLIAC-Ⅳ 的程序。
  • BIOM 处在 DFSB6700 之间,是为了使二者之间传送频宽能够匹配B6700 存储器经 CPU 输送数据的频宽是 80 × 1 0 6 b i t / s 80×10^6 bit/s 80×106bit/s ,而 DFS 输送数据的频宽是 500 × 1 0 6 b i t / s 500×10^6 bit/s 500×106bit/s ,二者之间相差 6 6 6 倍多。因此,必须设立 BIOM 作为 B6700DFS 之间的缓冲。BIOMB6700 48 48 48 位字变换为 ILLIAC-Ⅳ 64 64 64 位字,同时按双字 128 128 128 位的数据宽度输送给 DFS 。实际上,BIOM 是用 4 个 PEM 做成的,总容量为 8192 × 64 8 192×64 8192×64 位。

B6700 管理计算机的基本组成是:单中央处理器(另一个 CPU 可选), 32 K 32K 32K 字内存(可扩充至 512 512 512 字),经由多路开关控制连接的一批外围设备(包括一台容量为 1012 1012 1012 位的激光外存储器以及 ARPA 网络接口)。B6700 的作用是:管理 ILLIAV-Ⅳ 的全部系统资源,完成用户程序的编译或汇编,为 ILLIAC-Ⅳ 进行作业调度、存储分配、产生输入/输出控制描述字送至 CDC 、处理中断,以及提供操作系统所具备的其他服务。

2. BSP 计算机

BSP 计算机是由美国宝来公司和伊利诺斯大学于1979年制造的,它是共享存储器结构SIMD 计算机的典型代表。BSP 并不是一台独立运行的计算机,它是附属于系统管理机的一台后端处理机
在这里插入图片描述

BSP 计算机及系统管理机的组成框图如图6.3所示。它由系统管理计算机 B7700/B7800BSP 处理机两大部分组成,前者可视为后者的前端机。系统管理机负责 BSP 程序编译、与远程终端及网络的数据通信、外围设备管理等,大多数 BSP 作业调度和操作系统活动也是在系统管理机上完成。BSP 处理机由控制处理机、文件存储器、并行存储器模块以及对准网络等组成,如图6.4所示。

(1) 并行处理机

它以 160 n s 160ns 160ns 的时钟周期进行向量计算。所有 16 16 16 个算术单元 AE 对不同的数据组(从并行处理机控制器广播来)进行同一种指令操作。大部分的算术运算能在 2 2 2 个时钟周期 320 n s 320ns 320ns 内完成。BSP 的执行速度最高可达 50 MFLOPS 50\textrm{MFLOPS} 50MFLOPS

进行向量运算的数据存储在 17 17 17 个并行存储器模块中。每个模块的容量可达 512 K 512K 512K 字,时钟周期为 160 n s 160ns 160ns 。数据在存储器模块和 AE 之间以每秒 100 100 100 兆字的速率进行传输。 17 17 17 个存储器模块的组织形成了一个无冲突访问存储器,它容许对任意长度以及跳距不足 17 17 17 倍数的向量实现无冲突存取。

16 16 16AE 是以 SIMD 方式、在单一微序列控制下同步工作的。在每个 AE 中,只有最原始的操作才采用硬连线方式,控制字的宽度为 100 100 100 位,除实现浮点操作以外,AE 还有较强的非数值处理能力。浮点加、减和乘都能在两个时钟周期内完成。采用两个时钟周期可使存储器频宽与 AE 进行三元操作(由三个操作数产生一个结果的操作)时的频宽相平衡。浮点除要用 1200 n s 1 200ns 1200ns ,是用 Newton-Raphson 迭代算法产生倒数来实现的。在每个 AE 中设有只读存储器,以给出除法和平方根迭代的第一次近似值。浮点字长为 48 48 48 位,尾数为 36 36 36 位有效值,阶码为 10 10 10 位,以 2 2 2 为底。数的精度可达到十进制 11 11 11 位。AE 在关键部位设置了双字长累加器和双字长寄存器,这就能使双精度运算直接用硬件实现。AE 还可以用软件方法实现三倍精度的算术运算。可以估算得出来,在 BSP 中用FORTRAN来表达很大范围的计算问题中,其速度可达 20 ~ 40 MFLOPS 20~40\textrm{MFLOPS} 2040MFLOPS

BSP 可以对下列四类操作进行并行计算:
① 16 个算术单元实现并行运算;
② 存储器的读取/存取,存储器与算术运算单元间的数据传输;
③ 在并行处理机控制器中的变址值、向量长度和循环控制计算;
④ 线性向量操作描述字在标量处理机中的生成。

(2) 控制处理机

除了用以控制并行处理机以外,还提供了与系统管理机相连的接口。标量处理机则处理存储在控制存储器中的全部操作系统和用户程序的指令。它以 12 MHz 12\textrm{MHz} 12MHz 的时钟频率执行用户程序的串行或标量部分,最高速度可达 1.5 MFLOPS 1.5 \textrm{MFLOPS} 1.5MFLOPS

全部的向量指令以及某些成组的标量指令,被送给并行处理机控制器。在经过合格性检查后,控制器将它们转换为微序列,去控制 16 16 16AE 操作。双极型控制存储器的容量为 256 K 256K 256K 字,周期为 160 n s 160 ns 160ns ,每个字长 48 48 48 位另加 8 8 8 位奇偶校验位,提供单错校正双错检测 SECDED 的能力。控制维护单元则是系统管理机与控制处理机其余部分之间的接口,用来进行初始化、监控命令通信和维护。

(3) 文件存储器

一个半导体辅助存储器BSP 的计算任务文件从系统管理机加载到它上面。然后对这些任务进行排队,由控制处理机加以执行。文件存储器是 BSP 直接控制下惟一的外部设备,而其他的外部设备则都由系统管理机来控制。在BSP 程序执行过程中所产生的暂存文件和输出文件,在将它们送给系统管理机输出给用户之前,是存在文件存储器中的。文件存储器的数据传输率较高,大大地缓解了 I/O 受限问题。

(4) 对准网络

包含完全交叉开关,和用来实现数据从一个源广播至几个目的地、以及当几个源寻找一个目的地时能分解冲突的硬件。这就需要在算术单元阵列和存储器模块之间,具备通用的互连特性。而存储器模块和对准网络的组合功能,则提供了并行存储器的无冲突访问能力。算术单元也利用输出对准网络,实现一些诸如数据压缩和扩展操作、以及快速傅立叶变换算法等专用功能。

BSP 中,存储器—存储器型的浮点运算是流水进行的BSP 的流水线组织由 5 5 5 个功能级组成。 16 16 16 个操作数先从存储器模块中取出,通过输入对准网络送给 AE 进行处理,再将结果经输出对准网络,送给存储器模块存储起来。这几级的操作都是重叠进行的(参见图6.4)。

请注意,在物理上,输入对准和输出对准都是在一个实际对准网络中进行的,这里的划分只是对流水级的功能划分而已。除了在 16 16 16AE 中显示出的空间并行性,以及读取、对准和存储的流水线操作外,AE 中的向量运算还可以同标量处理机中的标量处理重叠起来。这就使得系统既适合于处理长向量和短向量,也能处理单独的标量,系统的功能很强也很灵活。

(5) 质数存储系统

BSP 并行存储器由 17 17 17 个时钟周期为 160 n s 160ns 160ns 的存储模块组成。由于每个周期存取 16 16 16 个字,因此每个字的最大有效存储周期时间为 10 n s 10ns 10ns 。这与算术单元完成浮点加和乘的速率很好地平衡。因为每次运算需要两个变量,算术单元中设有中间寄存器其运算速度为 320 n s / 16 320ns/ 16 320ns/16 次,即 20 n s / 次 20 ns/ 次 20ns/

由于程序和标量都存放在控制存储器中,因此只有数组存取(包括 I/O)才用到并行存储器。这样,对于三元向量来说,因为在两次算术运算中需要用到 3 3 3 个变量,产生 1 1 1 个结果,共访问存储器 4 4 4 次,所以在并行存储器和浮点运算之间的频带保持完全平衡;对于长向量来说,由于中间结果都存在寄存器中,每次运算只需要一个操作数,因此并行存储器有足够的频宽,留给输入和输出信息使用。


6.3 SIMD 并行计算机算法

SIMD 并行计算机是从求解诸如有限差分、矩阵运算、信号处理、线性规划等一系列计算为背景发展起来的。下面以图像平滑算法为例,讲述该算法如何在并行机上实现。

该算法是用来平滑输入图像的灰度级, I I I S S S 分别表示输入和输出图像。假定 I I I S S S 均含有 512 × 512 512×512 512×512 个像素。 I I I 中的每个点是一个 8 8 8 位无符号整数,用来表示 256 256 256 个灰度级——每个像素的灰度级是用来表示像素的黑色程度,以 0 0 0 表示白色,以 255 255 255 表示黑色。平滑后图像中的每个点 S ( i , j ) S(i, j) S(i,j) I ( i , j ) I( i, j) I(i,j) 和它的 8 8 8 个最邻近的像素的灰度级的平均值。 S S S 中的上、下、左、右边线上的像素,由于在 I I I 中的相应像素没有 8 8 8 个邻近像素,因而置为 0 0 0

若用具有 1024 1 024 1024PE 的阵列机来实现上述算法,可如图6.5(a)所示那样排列成 32 × 32 32×32 32×32 方阵。在每个 PE 中存储一个 16 × 16 16×16 16×16 的子图像块(整个 I 图像为 512 × 512 512×512 512×512 像素块)。 PE0 中存储行 0 ~ 15 0~15 015 和列 0 ~ 15 0~15 015 的子图像块,PE1 中存储行 0 ~ 15 0~15 015 和列 16 ~ 31 16~31 1631 的子图像块,依此类推。每个 PE 平滑自己的子图像,而所有 PE 可同时进行平滑操作。在每个 16 × 16 16×16 16×16 子图像的边界处,为了计算已平滑的值,数据必须在 PE 间传送。图6.5(b)中示出了所必须传送的数据。
在这里插入图片描述
阵列机的每个 PE 都有类似于单处理单元的数据传送模式。要对 512 × 512 512×512 512×512 图像完成平滑操作,在上述的每块为 16 × 16 16×16 16×16 大小的子图像块上用并行处理方法来完成平滑,则需 16 × 16 = 256 16×16 = 256 16×16=256 次并行的平滑操作。在操作过程中,总共所需的并行数据元素的传送数为 4 × 16 + 4 = 68 4×16 + 4 = 68 4×16+4=68 ——上,下,左,右 4 4 4 边每边需 16 16 16 次,而 4 4 4 个对角上每个需 1 1 1 次,参见图6.5(b)。

对同样大小的图像,若用串行算法来完成,虽然此时不需要进行 PE 间的数据传送,但总共却需要 512 × 512 = 262144 512×512 = 262 144 512×512=262144 次平滑操作。因此,并行算法就比串行算法快 1024 1 024 1024 倍。如果计入 PE 间传送所需时间,并假定每次并行数据传送时间相当于一次平滑操作时间,则改进倍数仍可达到:
262144 / ( 256 + 68 ) = 809 262 144/( 256 + 68) = 809 262144/(256+68)=809 另外,就所占比例而言,数据传送所需时间几乎可以忽略不计。

6.3.1 矩阵加

阵列处理机解决矩阵加是最简单的一维情况。两个 8 × 8 8×8 8×8 的矩阵 A , B A, B A,B 相加,所得的结果矩阵 C C C 也是一个 8 × 8 8×8 8×8 的矩阵。只需把 A , B , C A, B, C A,B,C 居于相应位置的分量存放在同一个 PEM 内,且在全部 64 64 64PEM 中,让 A , B , C A, B, C A,B,C 的各分量地址均对应取相同的地址 α , α + 1 , α + 2 α,α+ 1, α+ 2 α,α+1,α+2 ,如图6.6所示。
在这里插入图片描述这样,实现矩阵加只需用下列三条 ILLI-AC-Ⅳ 汇编指令:

LDA ALPHA 			;全部 (α) 由 PEMi 送 PEi 的累加器 (RGAi)
ADRN ALPHA + 1 		;全部 (α+1)(RGAi) 浮点加, 结果送 (RGAi)
STA ALPHA + 2 		;全部 (RGAi) 由 PEi 送 PEMi 的 (α+2) 单元, 0≤i≤63

从这个例子可以明显看出,阵列处理机的单指令流( 3 3 3 条指令顺序执行)多数据流( 64 64 64 个元素并行相加) 以及数组并行中的“全并行”工作特点。由于是全部 64 64 64 个处理单元在并行操作,速度就提高为顺序处理的 64 64 64 倍。同时也可以看出,对于具有分布式存储器的阵列处理机,能否发挥其并行性与信息在存储器的分布密切相关。而信息分布算法又与系统结构及所解题目直接相关,因此,存储单元分配算法的设计比较麻烦

6.3.2 矩阵乘

矩阵乘是二维数组运算,比矩阵加要复杂。设 A , B , C A, B, C A,B,C 3 3 3 8 × 8 8×8 8×8 的二维矩阵,给定 A A A B B B ,计算 C = A × B C = A×B C=A×B 64 64 64 个分量可用公式:
C i j = ∑ k = 0 7 a i k × b k j   ( 0 ≤ i ≤ 7 ∧ 0 ≤ j ≤ 7 ) C_{ij} = \sum^7_{k = 0} a_{ik} \times b_{kj}\ (0≤i≤7 \land 0≤j≤7) Cij=k=07aik×bkj (0i70j7)SISD 计算机上求解,可执行用FORTRAN语言编写的下列程序:

DO 10 I = 0, 7
DO 10 J = 0, 7
C(I, J) = 0
DO 10 K = 0, 7
10 C(I, J) = C(I, J) + A(I, K) × B(K, J)

需经 I , J , K I, J, K I,J,K 三重循环完成。每重循环执行 8 8 8 次,共需 512 512 512 次乘、加的时间,且每次还要包括执行循环控制判别等其他操作所需的时间。

如果在 SIMD 阵列处理机上运算,可用 8 8 8 个处理单元并行计算矩阵 C ( I , J ) C( I, J) CI,J 的某一行或某一列,即将 J J J 循环或 I I I 循环转化成一维的向量处理,从而消去了一重循环。以消去 J J J 循环为例,可执行用FOR-TRAN 语言编写的下列程序:

DO 10 I = 0, 7
C(I, J) = 0
DO 10 K = 0, 7
10 C(I, J) = C(I, J) + A(I, K) × B(K, J)

J = 0 ~ 7 J = 0~7 J=07 各部分同时在 PE0 ~ PE7 上运算,这样只需 I , K I,K I,K 二重循环,速度可提高 8 8 8 倍,即只需 64 64 64 次乘、加时间。其程序流程图如图6.7所示。
在这里插入图片描述

需要说明的是,其执行过程虽与 SISD 的类似,但实际的解决方式是不同的。每次控制部件执行的 PE 类指令表面上是标量指令,实际上已等效于向量指令,如向量取、向量存、向量加、向量乘等,是 8 个 PE 并行地执行同一条指令。每次播送时,利用阵列处理机的播送功能,将处理单元 PEK 中累加寄存器 RGAK 的内容,经控制部件 CU 播送到全部 8 8 8 个处理单元的 RGA 中去。

然而,为了让各个处理单元 PEi 尽可能只访问所带局部存储器 PEMi ,以保证高速处理,就必须要求对矩阵 A , B , C A,B, C A,B,C 各分量在局部存储器中的分布,采用如图6.8所示的方案。
在这里插入图片描述

如果把 ILLIAC-Ⅳ 64 64 64 个处理单元全部利用起来并行运算,即把 K 循环的运算也改为并行,还可以进一步提高速度,但需要在阵列存储器中重新恰当地分配数据,同时还要使 8 8 8 个中间积 A ( I , K ) × B ( K , J ) A(I, K)×B( K, J) A(I,K)×B(K,J) 能够并行相加(其中, 0 ≤ K ≤ 7 0≤K≤7 0K7),这就要用到下面的累加和并行算法。即使如此,就 K K K 的并行来说,速度的提高也不是 8 8 8 倍,而只是 8 / log ⁡ 2 8 8/ \log_2 8 8/log28 ,接近于 2.7 2.7 2.7 倍。

6.3.3 累加和

这是一个将 N N N 个数的顺序相加转为并行相加的问题。为得到各项累加的部分和以及最后的总和,要用到处理单元中的活跃标志位。只有处于活跃状态的处理单元才能执行相应的操作。为叙述方便取 N = 8 N = 8 N=8 ,即有 8 8 8 个数 A ( I )   ( 0 ≤ i ≤ 7 ) A(I) \ (0 \le i \le 7) A(I) (0i7) 顺序累加。

SISD 计算机上可以写成下列FORTRAN程序:

C = 0
DO 10 I = 0, 7
10 C = C + A(I)

这是一个串行程序,需要 8 8 8 次加法时间。在阵列处理机上用成对递归相加算法,只需 l o g 2 8 = 3 log_2 8 = 3 log28

### 多级互连网络设计计算机体系结构中的应用 #### 定义与特性 多级互连网络(Multistage Interconnection Networks, MINs)用于实现大规模并行处理系统的节点间通信。这类网络由多个阶段组成,每阶段包含若干个开关模块,这些模块负责数据包的路由选择转发[^2]。 #### 构成要素 MIMD(Multiple Instruction Multiple Data流)SIMD(Single Instruction Multiple Data流)类型的高性能计算机会广泛运用到这种架构上。具体来说,一个多级互连网络是由\( a \times b\) 的交换组件以及它们之间的固定链接所组成的;其中每个这样的单元具有\( a \)个入口\( b \)个出口,并且一般情况下\( a=b=2^k \),这里\( k\geq1 \)[^3]。 #### 设计考量因素 当构建一个有效的MIN时,设计师们会考虑如下几个方面: - **延迟时间**:指信号从源端传输至目标所需的时间长度; - **吞吐量**:即单位时间内能够成功传递的数据总量; - **可靠性**:确保即使某些路径失效也能维持正常运作的能力; - **成本效益比**:平衡硬件开销与性能表现的关系。 为了优化上述参数,在实际部署过程中可能会采取不同的策略来调整拓扑结构、增加冗余度或是改进算法等措施。 ```python def calculate_network_performance(latency, throughput, reliability): """ A simple function to demonstrate how different factors affect network performance. Args: latency (float): The time delay of signal transmission through the network. throughput (int): Amount of data that can be transferred per unit time. reliability (float): Probability of successful message delivery. Returns: float: An overall score representing network efficiency. """ return (throughput * reliability) / latency ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值