计算机编程模型简介

任何计算机都是在数据上执行指令,无论串行还是并行。指令流(算法)告诉计算机每步做什么,而数据流(算法的输入)被这些指令所操作和影响。
一个被广泛使用的并行系统分类方式,是根据程序执行时处理器能同时看到的指令流和数据流个数而定,分为以下4种:

单指令流,单数据流 Single Instruction stream, Single Data stream (SISD)
多指令流,单数据流 Multiple Instruction stream, Single Data stream (MISD)
单指令流,多数据流 Single Instruction stream, Multiple Data stream (SIMD)
多指令流,多数据流 Multiple Instruction stream, Multiple Data stream (MIMD)
单指令流单数据流计算机
一个SISD计算机由单一的处理单元来接收单个指令并对单个数据进行操作。至今几乎所有的计算机仍然遵循这个由冯诺依曼于上世纪40年代发明的约定。

这被称为是顺序执行,不包含任何的并发性。


多指令流单数据流计算机
MISD计算机有n个处理器,每个都有其自己的控制单元,共享一个共同的存储器单元。
在每个步骤中,从存储器接收一个数据元素是由所有的处理器同时处理,每一个根据从控制单元接收的指令。并行性是通过让处理器对于相同的数据执行不同的操作。

这类计算机要求单个数据被提交给多个操作,每个操作都以原有形式接收数据,比如分类问题。该类型计算机有其特定应用范围。


单指令流多数据流计算机
SIMD计算机有n个相同的处理器,每个都有其自己的本地存储器,可以存储数据。
一个由中央控制单元发出的单指令流控制所有处理器的工作。有N个数据流,每1个处理器操作1个数据。
所有处理器是同步操作的,在每一步中,处理器对于不同的数据元素执行相同的指令。

SIMD计算机比MISD更通用。许多应用问题可以通过SIMD计算机并行算法求解。
另一个有趣的特点是,这些计算机算法比较容易设计,分析和实现。局限是只有可被细分为一组相同子问题的那些计算才可以被处理。

有很多的计算,不适合这种模式:这种问题通常使用下面的MIMD计算机解决。


多指令流多数据流计算机
MIMD并行计算机是最通用和最强大的。有n个处理器,指令流和数据流。
每个处理器拥有其控制单元和其本地存储器,使得它们比SIMD计算机更强大。
每个处理器在控制单元发出的指令流控制下运行,执行不同的指令和操作不同的数据流。

并行计算的MIMD模型是最普遍和最强大的,但异步算法很难设计,分析和实现。所以在实践上通常用来作为SIMD模式的补充。



参考链接:

http://www.techbrood.com/?q=simd+tutorial


by iefreer

你可能感兴趣的:(c++,architecture,软件)