计算机组成与设计(6)-----从客户端到云的并行处理器介绍

思维导图

引言

    这篇文章中的主要内容是对并行处理器的简单总结。在广告词中我们经常听见四核,八核什么的,其实,他们就是并行处理器的一种,还有不同于此类的其他处理器。

首先,多处理器是有较小的计算器连接构成的。为了利用多个处理器,一般有两种方法。其一是任务级并行,其二是并行处理程序

  • 多处理器:至少含有两个处理器的计算机系统。
  • 任务级并行:使用多个处理器同时运行独立的程序
  • 并行处理程序:同时运行在多个处理器上的单一程序

    如上文所述,并行处理器是有差别的,有集群和多核微处理器之分。而多核微处理器一般会共享一个单独的物理地址空间,所以称之为共享内存处理器

  • 集群:通过局域网连接一组计算机,其作用等同于一个大型的多处理器
  • 多核微处理器:在单一的集成电路上包含多个处理器的微处理器。目前,基本上所有的台式电脑用的都是此类处理器。一个处                           理器称为一“核“。
  • 共享内存处理器:共享一个物理地址空间的处理器

    事实上,并行程序的实现具有相当程度的困难。打个比方来说,当前任务是需要写一篇文章,一个人写,则比较流畅,但是花费的时间相当的多,让多个人互相配合写一篇文章,所花销的时间久比较少,但是,由于是多个人配合我完成一篇文章,所以会遇到每个人到底干那一部分,如何分配,相互之间如何通讯,开销几何等等一系列的问题,这就是创建并行处理程序的难点。

使用加速比可以部分的衡量并行处理所提高的速度。

  • 加速比:加速比 = 改进前的执行时间 / ((改进前的执行时间 - 受影响的执行时间) + 受影响的执行时间、改进量)

    假如在某一个任务的分配过程中,其中某一个处理器所执行的任务量是其他任务的几倍,那么,这个这个任务完必须等到任务量最多的处理器执行完成,这会相当大程度的影响到加速比。如何分配任务量就是负载均衡了。

一.并行硬件的分类

在20世界60年代提出了一种并行硬件的分类方法并沿用至今。其原理是根据指令流的数量和数据流的数量进行分类。

根据分类依据,理论上存在SISD和MISD,其中SISD有实现的例子,即Intel Pentium4,MISD则至今都没有实现。

1.1 SIMD

  • SIMD:单指令流多数据流。同样的指令在多个数据流上操作。

SIMD有两种获得并行的方法:

    SIMD在使用for循环语句处理数组是最为有效,因为需要对数据进行相同的处理,而为了在SIMD中并行工作,就必须有大量结构相同的数据。一般称之为数据级并行

  • 数据级并行:对不同数据执行相同操作所获得的并行

第二种称之为向量机,使用大量的寄存器和流水线获得并行

  • 向量机:从存储器中手机数据源,并将之按顺序放在一大组寄存器中,然后在寄存器中使用流水化的执行单元一次操作,最                后将结果写回存储器

1.2MIMD

  • MIMD:多指令流多数据流

    实现MIMD编程模型的常用方式是将编程人员编写的单一程序通过运行在MIMD计算机的所有处理器上,使用条件控制语句使不同的处理器执行不同的代码片段,这种方式称之为SPMD

  • SPMD:单程序多数据流,一个程序运行在所有处理器上

1.2.1硬件多线程

    因为MIMD是依靠多个进程或者线程来努力是多个处理器处理忙碌的状态,所以需要使用硬件多线程技术,以允许多个线程以重叠的方式共享一个处理器的功能单元

  • 硬件多线程:在线程阻塞是可以切换到另一线程的实现

硬件多线程的实现方式有三种:

  • 粗粒度多线程:仅在重要事件之后进行线程切换
  • 细粒度多线程:在每条指令之后都进行线程切换
  • 同时多线程:利用多发射,动态调度微体系机构中的资源实现多线程,从而减低开销。

其运作原理如下图:

二.常用的多处理器

    由于需要对原有程序进行重写,是之在并行硬件上很好的运行,设计者会使用两种方法来简化如何共享地址空间的工作。一种是共享内存处理器,一种是集群。

2.1共享内存处理器(SMP)

  • 共享内存处理器:为程序员提供跨越所有处理器的单一物理地址空间的多处理器。程序不需要考虑数据在什么地方。

而共享内存处理器有两种类型:

  • 统一存储访问:无论访存那个处理器或那个字,时间大致相同
  • 非统一存储访问:访存速度和访存那个处理器,那个字相关

由于数据是共享的,所以需要同步,同步的一种方式则是使用锁

  • 同步:对可能运行与多个处理上的多个进程的行为进行协调的过程
  • 锁:一个时刻仅允许一个处理器访问数据的同步装置

以下是概念图:

2.2集群:

让每个处理器都具有自己私有的物理地址空间也可以解决共享地址空间的问题

  • 集群:通过标准的网络开关将I/O链接起来的计算机集合,以此来构建消息传递机制的多处理器

    这种多处理器必须通过显示的消息传递进行通信,传统上也称为消息传递计算机。只需要系统提供发送消息例程和接收消息例程,协调工作就可以通过消息传递完成。

  • 发送消息例程:具有私有存储器的机器中一个处理器将消息发送给另一个处理器的例程
  • 接收消息例程:具有私有存储器的机器中一个处理接收来自其他处理器消息的例程

以下是概念图:

                                         

2.3图形处理单元

    由于图形和游戏行业的蓬勃发展,处理器必须提高处理图形数据的能力,又由于图形和游戏开发与微处理器开发有不同的目标,所以采用了另一套处理风格和术语,将处理器称之为GPU,即图形处理单元,以区分CPU。

GPU在本质上是由多个SIMD处理器组成的MIMD处理器,只对数据级并行问题的处理有效果。

2.3.1  NVIDIA GPU  体系结构

    GPU通过SIMD线程调度器准备好的SIMD指令线程送给分派单元,然后,使用线程块调度器将线程块分配到多线程SIMD处理器上

下图为概念图:

2.3.2  NVIDIA GPU  存储结构

    我们称每个多想成SIMD处理器专用的片上存储器为局部存储器,整个GPU和所有线程块共享的片外存储器则叫GPU存储器

下图为概念图:

 

注:本篇文章由《计算机组成与设计》第六章-从客户端到云的并行处理器  总结而来,由于本人非计算机专业出身,许多知识实在是理解不能,总结有相当多的遗漏,乃是我看不懂所致,更别说其中内容肯定有大量的理解错误,万望大家提出批评,我好改正。

猜你喜欢

转载自blog.csdn.net/zh328271057/article/details/83477026