Flynn分类法
前言
SISD(Single instruction sigle data)
: 单指令流单数据流机器SIMD(Single instruction multiple data)
: 单指令流多数据流机器MISD(Multiple instruction sigle data)
: 多指令流单数据流机器MIMD(Multiple instruction Multiple data)
: 多指令流多数据流机器SPMD(Single program multiple data)
: 单程序流多数据流模型MPMD(Multiple program multiple data)
: 多程序流多数据流模型PU(Processing unit)
: 处理单元,摘抄于 CPUCPU(Central processing unit)
: 中央处理器,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元
Flynn于1972年提出了计算平台的Flynn分类法,主要根据指令流和数据流来分类,共分为四种类型的计算平台,分别是 SISD、SIMD、MISD、MIMD.
目录
Flynn总览
Single instruction | Multiple instruction | Single program | Multple program | |
---|---|---|---|---|
Single data | SISD | MISD | ||
Multiple data | SIMD | MIMD | SPMD | MPMD |
SISD
SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期内,CPU只能处理一个数据流。因此这种机器被称作单指令流单数据流机器。
早期的计算机都是SISD机器,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等。
SIMD
SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。
Intel处理器实现的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说我们现在用的单核计算机基本上都属于SIMD机器。
MISD
MISD是采用多个指令流来处理单个数据流。由于实际情况中,采用多指令流处理多数据流才是更有效的方法,因此MISD只是作为理论模型出现,没有投入到实际应用之中。
MIMD
MIMD机器可以同时执行多个指令流,这些指令流分别对不同数据流进行操作。最新的多核计算平台就属于MIMD的范畴,例如Intel和AMD的双核处理器等都属于MIMD。
SPMD
单程序: 所有任务都执行同一个程序的拷贝,而这里的程序可以是线程,消息传递,数据并行甚至混合
多数据: 不同的任务操作于不同的数据
SMPD通常需要指定任务的执行逻辑,也就是不同的任务可能会根据分支和逻辑关系,去执行整个程序的某个部分,也就是说,不是所有的任务都必须执行整个程序——有可能只是整个程序的某个部分。
eg.译者注:如果不强调这一点,SPMD就退化成了数据并行模型了。
MPMD
和SPMD一样,多程序多数据模型实际上也是一种可以架构在其它并行编程模型基础上的“高级”并行编程模型
多程序: 任务可以同时执行不同的程序,这里的程序可以是线程,消息传递,数据并行或者它们的混合
多数据: 所有的任务可以使用不同的数据
MPMD应用并不像SPMD应用那么常见,但是它可能更适合于特定类型的程序
总结
根据实际需求选择不同特性的机器,这篇文章属于扫盲类的,不过在实际工作中应该能让我少走弯路吧!!!