并行性和并行架构的类别

多层次的并行性现在是所有四类计算机设计的驱动力,能源和成本是主要的制约因素。应用中基本上有两种并行性:

  1. 数据级并行(Data-Level Parallelism, DLP)的产生是因为有许多数据项可以同时被操作。

  2. 任务级并行(Task-Level Parallelism, TLP)的产生是因为工作任务的产生,这些任务可以独立运行,而且基本上是并行的。

计算机硬件又可以通过四种主要方式利用这两种应用并行性:

  1. 指令级并行(Instruction-Level Parallelism,ILP )在编译器的帮助下,利用流水线等思想在适度水平上利用数据级并行,在中等水平上利用投机执行等思想(speculative execution)。

  2. 矢量架构(vector architectures)、图形处理器单元(GPU)和多媒体指令集(multimedia instruction sets)通过将一条指令应用于并行的数据集合来利用数据级并行性。

  3. 线程级的并行性(Thread-Level Parallelism )利用了数据级的并行性或任务级的并行性,在一个紧密耦合的硬件模型中,允许并行线程之间进行交互。

  4. 请求级并行(Request-Level Parallelism)利用了由程序员或操作系统指定的基本解耦的任务之间的并行性。

当Flynn(1966)研究了60年代的并行计算工作时,他发现了一个简单的分类,其缩写我们至今仍在使用。他们的目标是数据级并行和任务级并行。他考察了多处理器中最受限制的部件的指令所要求的指令流和数据流的并行性,并将所有计算机归入四类中的一类:

  1. 单指令流,单数据流(SISD)--这一类是单处理器。程序员认为它是标准的顺序计算机,但它可以利用ILP。第三章介绍了使用ILP技术的SISD架构,如超标量和投机执行。

  2. 单指令流,多数据流(SIMD)--同一指令由多个处理器使用不同数据流执行。SIMD计算机通过对多个数据项并行应用相同的操作来利用数据级的并行性。每个处理器都有自己的数据存储器,但有一个单一的指令存储器和控制处理器,负责获取和分配指令。第四章涉及DLP和利用它的三种不同的架构:矢量架构、标准指令集的多媒体扩展和GPU。

  3. 多指令流,单数据流(MISD)--迄今为止,还没有建立这种类型的商用多处理器,但它完善了这种简单的分类。

  4. 多指令流,多数据流(MIMD)--每个处理器获取自己的指令并对自己的数据进行操作,它的目标是任务级并行。一般来说,MIMD比SIMD更灵活,因此更普遍适用,但它本质上比SIMD更昂贵。例如,MIMD计算机也可以利用数据级的并行性,尽管其开销可能比在SIMD计算机中看到的要高。这种开销意味着颗粒大小必须足够大,才能有效地利用并行性。第五章介绍了紧密耦合的MIMD架构,它利用了线程级的并行性,因为多个合作的线程是并行运行的。第六章涵盖了松散耦合的MIMD架构--特别是集群和仓库级计算机--利用了请求级并行性,许多独立的任务可以自然地并行进行,几乎不需要通信或同步。

这个分类法是一个粗略的模型,因为许多并行处理器是SISD、SIMD和MIMD类别的混合体。尽管如此,它对于为我们在本书中看到的计算机的设计空间提供一个框架是很有用的。

Last updated