现代计算机发展历程可以分为两个明显的发展时代:串行计算时代、并行计算时代。并行计算机是由一组处理单元组成的,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。因此,并行计算机的两个最主要的组成部分是计算节点和节点间的通信与协作机制。并行计算机体系结构的发展也主要体现在计算节点性能的提高以及节点间通信技术的改进两方面。

60年代初期,由于晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。这些技术发展的结果导致了并行计算机的出现,这一时期的并行计算机多是规模不大的共享存储多处理器系统,即所谓大型主机(Mainframe)。IBM360 是这一时期的典型代表。到了60 年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了。与单纯提高时钟频率相比,这些并行特性在处理器内部的应用大大提高了并行计算机系统的性能。

对并行计算机的分类有多种方法,其中最著名的是1966年由Flynn提出的分类法,称为Flynn分类法。Flynn分类法是从计算机的运行机制进行分类的。

Flynn根据指令流和数据流的不同组织方式,把计算机系统的结构分为以下四类:

  • 单指令流单数据流(Single Instruction stream Single Data stream -- SISD);
  • 单指令流多数据流(Single Instruction stream Multiple Data stream -- SIMD);
  • 多指令流单数据流(Multiple Instruction stream Single Data stream -- MISD);
  • 多指令流多数据流(Multiple Instruction stream Multiple Data stream -- MISD)。

其中指令流(instruction stream)指机器执行的指令序列;数据流(data stream)指指令流调用的数据序列,包括输入数据和中间结果。

SISD就是普通的顺序处理的串行机。SIMD和MIMD是典型的并行计算机。MISD在实际中代表何种计算机,也存在不同的看法,甚至有学者认为根本不存在MISD。有的文献把流水线结构的计算机看成MISD结构。

在一台SIMD计算机中,有一个控制部件(又称为控制单元,control unit)和许多处理单元(processing unit)。大量的处理单元通常构成阵列,因此SIMD计算机有时也称为阵列处理机。所有的处理单元在控制部件的统一控制下工作。控制部件向所有的处理单元广播同一条指令,所有的处理单元同时执行这条指令,但是每个处理单元操作的数据不同。控制部件可以有选择地屏蔽掉一些处理单元,被屏蔽掉的处理单元不执行控制部件广播的指令。

在MIMD计算机中没有统一的控制部件。在MIMD中,各处理器可以独立地执行不同的指令。实际上,在SIMD机中,各处理单元执行的是同一个程序,而在MIMD机上,各处理器可以独立执行不同的程序。在MIMD中,每个处理器都有控制部件,各处理器通过互连网络进行通信。MIMD结构比SIMD结构更加灵活。SIMD计算机通常要求实际问题包含大量的对不同数据的相同运算(例如向量运算和矩阵运算)才能发挥其优势。而MIMD计算机则无此要求,它可以适应更多的并行算法,因此可以更加充分地开掘实际问题的并行性。SIMD所使用的CPU通常是专门设计的,而MIMD可以使用通用CPU。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐