
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java编程开发语言随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,Java编程开发都需要掌握哪些存储方法。
指令和数据
[小粒度]根据一个并行计算机能够同时执行的指令与处理数据的多少可以把并行计算机分为SIMDSingle-InstructionMultiple-Data单指令多数据并行计算机和MIMDMultiple-InstructionMultiple-Data多指令多数据并行计算机
[大粒度]按同时执行的程序和数据的不同又提出了SPMDSingle-ProgramMultuple-Data单程序多数据并行计算机和MPMDMultiple-ProgramMultiple-Data多程序多数据并行计算机
根据指令的同时执行和数据的同时执行,计算机系统可以分成以下四类:
单处理器,单数据(SISD)
单处理器,多数据(SIMD)
多处理器,单数据(MISD)
多处理器,多数据(MIMD)
SISD
单处理器单数据就是“单CPU的机器”,它在单一的数据流上执行指令。在SISD中,指令被顺序地执行。
对于每一个“CPU时钟”,CPU按照下面的顺序执行:
Fetch:CPU从一片内存区域中(寄存器)获得数据和指令
Decode:CPU对指令进行解码
Execute:该执行在数据上执行,将结果保存在另一个寄存器中
这种架构(冯·诺依曼体系)的主要元素有以下:
中心内存单元:存储指令和数据
CPU:用于从内存单元获得指令/数据,对指令解码并顺序执行它们
I/O系统:程序的输入和输出流
传统的单处理器计算机都是的SISD系统。下图表述了CPU在Fetch、Decode、Execute的步骤中分别用到了哪些单元:
MISD
这种模型中,有n个处理器,每一个都有自己的控制单元,共享同一个内存单元。在每一个CPU时钟中,从内存获得的数据会被所有的处理器同时处理,每一个处理器按照自己的控制单元发送的指令处理。在这种情况下,并行实际上是指令层面的并行,多个指令在相同的数据上操作。能够合理利用这种架构的问题模型比较特殊,例如数据加密等。因此,MISD在现实中并没有很多用武之地,更多的是作为一个抽象模型的存在。
SIMD
SIMD计算机包括多个独立的处理器,每一个都有自己的局部内存,可以用来存储数据。所有的处理器都在单一指令流下工作;具体说,就是有n个数据流,每个处理器处理一个。所有的处理器同时处理每一步,在不同的数据上执行相同的指令。
很多问题都可以用SIMD计算机的架构来解决。这种架构另一个有趣的特性是,这种架构的算法非常好设计,分析和实现。限制是,只有可以被分解成很多个小问题(小问题之间要独立,可以不分先后顺序被相同的指令执行)的问题才可以用这种架构解决。很多超级计算机就是使用这架构设计出来的。例如ConnectionMachine(1985年的ThinkingMachine)和MPP(NASA-1983).我们在六章GPUPython编程中会接触到高级的现代图形处理器(GPU),这种处理器就是内置了很多个SIMD处理单元,使这种架构在今天应用非常广泛。
MIMD
在费林分类中,这种计算机是广泛使用、也是强大的一个种类。这种架构有n个处理器,n个指令流,n个数据流。每一个处理器都有自己的控制单元和局部内存,让MIMD架构比SIMD架构的计算能力更强。每一个处理器都在独立的控制单元分配的指令流下工作;因此,处理器可以在不同的数据上运行不同的程序,这样可以解决完全不同的子问题甚至是单一的大问题。在MIMD中,架构是通过线程或进程层面的并行来实现的,这也意味着处理器一般是异步工作的。这种类型的计算机通常用来解决那些没有统一结构、无法用SIMD来解决的问题。如今,很多计算机都应用了这中间架构,例如超级计算机,计算机网络等。然而,有一个问题不得不考虑:异步的算法非常难设计、分析和实现。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。