博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并行处理思想与弗林(Flynn)分类
阅读量:2442 次
发布时间:2019-05-10

本文共 1448 字,大约阅读时间需要 4 分钟。

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

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。

转载地址:http://hviqb.baihongyu.com/

你可能感兴趣的文章
Mac的Movavi屏幕捕获–录制视频的简单解决方案
查看>>
stl 容器适配器_C ++ STL堆栈容器适配器– std :: stack
查看>>
如何开始虚拟现实(VR)开发?
查看>>
Fresco Android教程
查看>>
c++中将字符串转化为数字_在C和C ++中将十进制数转换为罗马数字
查看>>
unity 粒子系统反弹_零反弹-最佳电子邮件验证系统
查看>>
rail_deviceid_C和C ++中的Rail Fence密码程序[加密和解密]
查看>>
数字转日期 pl/sql_交换两个数字的PL / SQL程序
查看>>
stl set容器_C ++ STL设置容器– std :: set
查看>>
HTML和HTML5之间的区别
查看>>
阿姆斯壮数_阿姆斯壮编号的PL / SQL程序
查看>>
如何使用Android Studio将网站转换为Android App
查看>>
c++ stl容器 map_C ++ STL映射容器– std :: map
查看>>
改善网站安全性的5种方法
查看>>
c++stl和std_C ++ STL转发列表容器– std :: forward_list
查看>>
Android Google Analytics(分析)集成教程
查看>>
回文编号的Pl / SQL程序
查看>>
解决错误:左值必须作为赋值的左操作数
查看>>
android mvp示例_Android日期选择器示例
查看>>
android mvp示例_Android使用SwipeRefreshLayout示例向下拉或向下滑动以刷新
查看>>