并行计算机的分类

博客 动态
0 299
羽尘
羽尘 2022-01-24 11:58:25
悬赏:0 积分 收藏

并行计算机的分类

一台并行计算机可以是一台具有多个内部处理器的单计算机,也可以是多个互联的计算机构成一个一体的高性能计算平台。术语并行计算机通常是指专门设计的部件。根据不同的分类法可以分成不同类型的并行计算机。

1.1 费林分类法

在操作系统中我们知道,程序根据高级程序设计语言设计,程序设计语言在实现程序的功能的时候,是转换为机器指令来告诉机器该干什么。大概在50年前Flynn(1996)创造了一种计算机分类方法,中文译为费林分类法,该分类基于两个独立维度的计算机体系结构,这两个维度即数据指令

根据以上提到这两个维度,我们可以划分为四大类,如图:

image-20220121215128524

1.1.1 SISD

Single Instruction,Single Data(SISD)

SISD机器是一种传统的串行计算机,它的硬件不支持任何形式的并行计算,所有的指令都是串行执行。并且在某个时钟周期(时间片)内,CPU只能处理一个数据流。因此这种机器被称作单指令流单数据流计算机。早期的计算机都是SISD机器,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等。


1.1.2 MIMD

Multiple Instruction,Multiple Data(MIMD)

在一个通用的多处理机系统中,每个处理器拥有一个独立的程序,由每个程序为每个处理器生成一个指令流,每条指令对不同数据进行操作。Flynn将这种形式的计算机分类为多指令流多数据流计算机

我们前面叙述的共享存储器或消息传递多处理机都属于MIMD类型。其已经经受了时间考验,至今仍然广泛地用于这种操作模式下的计算机系统中。例如多核CPU计算机。

image-20220121222628798


1.1.3 SIMD

Single Instruction,Multiple Data(SIMD)

如果对某些应用而言将计算机设计成由单一程序生成指令流,但是却有多个数据存在时,将会在性能上有很大的优势。打个比方,如果是一个学生(处理器)做很多张相同的试卷(数据流),那么越做肯定越快。

SIMD是采用一个指令流处理多个数据流。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。

Intel处理器实现的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说我们现在用的单核计算机基本上都属于SIMD机器。


1.1.4 MISD

Multiple Instruction,Single Data(MISD)

MISD是采用多个指令流来处理单个数据流。由于实际情况中,采用多指令流处理多数据流才是更有效的方法,因此MISD只是作为理论模型出现,仅仅只在1971年CMU的实验中出现过,也就是说,实际上并不存在SISD。


1.2 存储器结构分类法

1.2.1 共享存储器多处理机

这里说得比较晦涩难懂,实际上,这里和操作系统进程的共享存储是同一回事,详情可见计算机操作系统笔记2.1.4.2 共享存储。

再说的简洁点,这里指的共享存储器多处理机你完全可以理解为一个多核的计算机或者很多个单核的共用一份内存的计算机。

也就是说,处理器如果想要处理数据,那么就得跑去存储器拿数据。怎么知道数据在哪呢?通过存储器上的地址去拿。image-20220109094545183

在操作系统中我们学过,如果这个时候两个处理器要同时在一个存储器上拿东西,那它们一定要提前沟通好,也就是说,两个处理器对共享空间的访问是互斥的。它们提前沟通的工具是互联网络image-20220109094638515

多处理机系统由多台独立的处理机组成,每台处理机都能够独立执行自己的程序和指令流,相互之间通过专门的网络连接,实现数据的交换和通信,共同完成某项大的计算或处理任务。系统中的各台处理机由统一的操作系统进行管理,实现指令级以上并行,这种并行性一般是建立在程序段的基础上,也就是说,多处理机的并行是作业或任务级的并行。共享存储多处理机系统是指有一个可以被所有处理机访问的存储器系统。存储器系统由一个或多个存储器模块组成,所有的存储器模块使用一个统一的编址的地址空间。处理机可以用不同的地址访问不同的存储器模块。按存储器组织方式分类,共享存储多处理机系统分为集中式共享存储器系统分布式共享存储器系统

对共享存储器多处理机进行编程设计到在共享存储器中存有可由每个处理器执行的代码。每个程序所需的数据也将存于共享存储器中。(即程序段数据段都在共享内存中)。因此如果有需要的话,每个程序可以访问所有的数据。

程序员要想使用并行计算机的每个处理器来处理一件问题,那原有的高级程序语言就无法使用了。所以为了解决此问题,程序员们开发了一种新的、高级并行程序设计语言,它具有特殊的并行程序设计构造和语句,以声明共享变量和并行代码段。虽然想法很好,但是这类并行程序设计语言并不是使用很广泛。

比较广泛的做法是在普通的高级程序语言的基础上生成并行代码,你可以理解为嵌入式编码(类似于嵌入式SQL)。此时使用制定好规则的编程语言,然后用预处理器命令对程序的并行部分加以说明即可;这类实践比较著名的模型就是OpenMP。它去油编译器命令和构造的一个工业标准,可融入到C/C++中。

另外,我们也可以多开几条线程,这样的话给人的感觉也像是并行计算的样子,不同线程中含有为各个处理器执行的规整的高级语言代码序列,这些代码序列可以用来访问共享单元。但是需要注意的是,实际上用线程的方法不是并行而是并发

使用一个规则的顺序编程语言,并修改语法以说明并行性。这也是一种常用的共享存储器多处理机模型,常用的模型是UPC(即统一并行C,Unified Parallel C)。

共享存储器多处理机是很一种很不错的并行计算机,综上所述,其方便了对数据的共享。

image-20220109100519263

对于上图所示的基于总线互联结构的小型共享存储器多处理机系统是很流行的。这种在很多系统中都有广泛应用。但是用硬件来达到所有处理器的快速访问是很困难的,特别是在有大量存储器时。因此大多数大型的共享存储器系统具有某种形式的层次或分布式存储器结构,以此来使得处理器能够更快的速度访问物理上相近的处理单元。


1.2.2 消息传递多计算机

另外一种多处理机系统的形式可以通过互联网络连接多台完整的计算机来构成。这里实际上对应了操作系统笔记中2.1.4.4 消息传递。

多处理机系统的形式可以通过互联网络连接多台完整的计算机来构成。如下图所示:image-20220109101015821

每台计算机由一个处理器和本地主存储器组成,其他处理器不可访问该本地的主存储器。换句话来讲,就是一台计算机的处理器只能访问它对应本地的主存储器,而无法访问其他计算机上的主存储器。不同的计算机之间是用互联网来建立联系的,通常来说,多个电脑之间通过互联网传递的消息含有的可能是程序所指明的其他计算机处理器进行计算时所需的数据。这种多处理器系统我们通常称为消息传递多处理机(message-passing multiprocessor),或简称多计算机。你可以理解为多计算机实质上是真正意义上的分布式存储器计算机(不是分布式共享存储器哈)。

我们在操作系统常提到进程这个概念,在多计算机上,我们可以把一个问题分成多个并发进程,它们可在各台计算机上分别执行。如果有6个进程和6个计算机,则我们可在每台计算机上执行一个进程;如果进程数大于计算机数,那么其中一台计算机中如果是多核可以采用并行执行,如果是单核可以采用分时方式执行。进程间将通过发送消息的原语来联系对方。同样地,发送消息可以采用两种方式,一种是直接通信方式,一种是间接通信方式,如果想详细了解,可以前往教材或者操作系统笔记中了解。

消息传递多计算机比共享存储器多处理机更容易在物理上进行扩展,也就是说它可以构成较大规模。一般规模比较小的叫做机群(Cluster),规模比较大的叫做超级计算机(SuperComputer),规模很大的叫做数据中心(DataCenter)


1.2.3 分布式共享存储器

对于程序员来说,消息传递多计算机并没有像共享存储器多处理机那么好用,因为它通常需要程序员在它们的代码中使用显式的消息传递调用,即用原语来进行数据交换。而这又非常容易出错,且很难调试,所以在程序中写的代码很类似于低级的汇编语言。(你想想是不是嘛?你要写代码去调硬件,那不就是汇编嘛。)数据不能共享且必须拷贝,在一些具体的应用中这就很可能成为问题,因为要拷贝,数据冗余不说,还要多次拷贝,多次操作。但是消息传递多处理还是有很多优点的:它不需要专门的同步机制以控制对数据的同时访问。如果使用这些机制,将会明显提高并行程序的执行时间。

由于意识到从编程观点而言期望使用共享存储器范例,一些研究人员开始追求分布式共享存储器系统的概念。从名字上面看,存储器物理地分布在每个处理器中,但每个处理器使用单一的存储器地址空间对整个存储器进行访问。当一个处理器要访问的单元不在本地存储器中时,必须使用消息传递方法在处理器和存储单元之间以某种自动方式进行数据的传递,以隐藏存储器是分布的这一事实。当然,远程访问将导致更大的延迟,而且比起本地访问来,此延迟常常是相当大的。

简单来说就是,分布式共享存储器的内存在物理上分离,逻辑上统一。


1.2.4 共享存储器多处理机体系结构

根据1.6.2.1 讲述的共享存储器多处理机结构,我们还能按存储器组织方式分类,共享存储多处理机系统分为集中式共享存储器系统(Unirom Memory Access,UMA)分布式共享存储器系统(Non-Unirom Memory Access,NUMA)

集中式共享存储器系统由于直接访问存储器,所以拥有高效率,并且每个处理器到达存储器的时间都相等。但是当CPU太多,很可能不能一起连在同一个存储器上,而且效能可能也会达到某个程度上不去。例如commercial servers(商用服务器)

而分布式共享存储器系统不能直接访问存储器,其跨连接的访问存储器速度较慢,但是其CPU的增多提高了计算效率;在CPU增多提高的效率大于访问存储器时间效率损失时,我们也可以理解为是一种高效。例如HPC server(高效能服务器)

image-20220121231702457

posted @ 2022-01-23 22:01 尘鱼好美 阅读(21) 评论(1) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2333 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员