单指令流多数据流计算机是一种类型是阵列处理机,它采用一个控制单元控制许多处理单元,每个处理单元同步地执行同一指令流。由于每个处理单元的数据相互独立,可采取数据并行方式工作。处理单元的数目可成千上万,甚至上百万个。阵列处理机适合做大型数组运算,专用性较强。
简介单指令流多数据流(single instruction stream multi data stream,SIMD)是一种采用一个控制器来控制多个处理器,同时对一组数据(数据向量)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。在微处理器中,单指令流多数据流技术则是一个控制器控制多个平行的处理微元,例如Intel的MMX或SSE,以及AMD的3D Now!指令集。图形处理器(GPU)拥有强大的并发处理能力和可编程流水线,面对单指令流多数据流时,运算能力远超传统CPU。OpenCL和CUDA分别是广泛使用的开源和专利通用图形处理器(GPGPU)运算语言。单指令流多数据流计算机是一个由一台控制器、N台处理机、N个存储模块以及一个互联网络组成的计算机系统。控制器将指令送至所有的处理即,而所有活动的处理机同时执行同一条指令。这样,就有一股单指令流。每台活动的处理机与其相连的存储器中的数据执行指令。这样,就有多数据流。互连网络有时也叫交换网络,是给处理机与存储器模块提供通信的设备1。
类型阵列处理机
阵列处理机是由多个同样处理单元构成的、适于进行数组计算的处理机。阵列处理机内的各个处理单元是在同一个控制器统一控制下同步工作的。这种处理机是典型的单指令流多数据的计算机。第一台大型阵列处理机llliacIV是由lllinois大学和Burroughs公司于1973年合作完成的,它由64个处理单元和一台Burroughs 6700计算机构成。此后,Burroughs公司又设计了性能更高的BSP (Burroughs scientific processor)阵列处理机。为了满足图象处理等领域的应用需求,有些公司又推出一些由大量处理器构成的阵列处理机系统,例如美国的MPP、CM-1、MP-1、MP-2、英国的CLIP和DAP等。CM-1使用了65 536个处理单元,MP-2也由65 536个处理单元构成。为了适应图象或数字信号处理等的需要,又推出一些特殊应用的阵列处理机。在阵列处理机中,指令由控制器译码,所有处理单元同时对不同的数据执行同样的操作。阵列处理机通常不是一台独立的计算机,它需要一台宿主计算机作为用户界面,并将程序和数据装入阵列处理机。然而在新一代的阵列处理机中,已将宿主计算机的功能集成在一个系统中。阵列处理机可分成分布存储式和共享存储式两种类型。分布存储式阵列处理机中,每个处理单元包含运算部件和局部存储器两部分,各处理单元之间是通过数据交换网络相连的。共享存储式阵列处理机中处理单元与存储器模块是通过一个对准网络相连的。
向量计算机
从数学的概念上讲,标量(Scalar)是指单个量,而向量(Vector)是指一组标量。一条向量指令可以处理N个或N对操作数,我们把这N个互相独立的数称为向量,对这样一组数的运算称为向量处理。因此,向量指令的处理效率要比标量指令的处理效率高得多。向量计算机是另一类 SIMD 计算机。它采用 1条或多条流水线,在标量处理机上附加很强的向量处理能力,特别适于做大型科学工程计算。一个向量中的各个元素都要进行同样的运算, 一个运算(如加法或乘法)可以分成若干个步骤,将执行不同运算步骤的功能部件按先后次序连接形成一条流水线,不等前一个向量元素运算完,下一个向量元素就可以进入流水线。流水线允许多个向量元素在同一时间间隔内执行同一种运算的不同步骤, 即以时间上的重叠实现并行处理,从而提高计算速度。向量计算机往往采用很高的时钟频率,非常高速的器件和专门的散热技术,因而成本较高。Cray公司的YMP和C-90是向量巨型计算机的代表。高性能的大型计算机系统也提供向量处理部件,如VAX9000 和IBM 390/ VF。
并行计算机分类由于计算机技术十分复杂,很难用一种观点对并行计算机做精确的分类。较普遍采用的是 M .J .Flynn 于1966 年提出的分类方法,即按指令流与数据流为1个或多个将计算机分为4 类:单指令流单数据流(SISD)、单指令流多数据流( SIMD)、多指令流单数据流 (MISD)和多指令流多数据流( MIMD)计算机。所谓指令流是指计算机执行的指令序列,数据流是由指令流所调用的数据序列。根据上述分类,除 SISD 计算机以外,其余3类都属于并行计算机。但是,很难设想一台计算机的多个指令流可以加工同一数据流,因此,多数人认为 MISD 计算机实际上不能实现,也有人认为将同一数据流以流水线方式进入由多个处理机构成的脉动阵列是MISD 计算机。由于对数据流与指令流的理解不一样,一种计算机可能划归不同的类型。例如,最初 Flynn 认为流水线计算机属于 SISD 计算机,后来他又将流水线计算机归类于SIMD 计算机。
本词条内容贡献者为:
王慧维 - 副研究员 - 西南大学