多处理器(Multiprocessor)的基本概念

1、多处理器概念

  • 多处理器(multiprocessor):至少含有两个处理器的计算机系统。与之对应的概念是单处理器,它仅包含一个处理器。
  • 任务级并行(task-level parallelism)进程级并行(process-level parallelism):通过同时运行独立程序的方法来利用多处理器。
  • 并行处理程序(parallel processing program):同时运行在多个处理器上的单一程序。
  • 集群(cluster):通过局域网连接的一组计算机,其作用等同于一个大型的多处理器。
  • 多核微处理器(multicore microprocessor):在单一集成电路上包含多个处理器(“核”)的微处理器。基本上目前所有的台式机和服务器都是多核微处理器。
  • 共享内存处理器(shared memory processor,SMP):共享一个物理地址空间的并行处理器。

2、SISD、MIMD、SIMD、SPMD和向量机

  • SISD:单指令流单数据流的单处理器
  • MIMD:多指令流多数据流的多处理器

在这里插入图片描述

  • SPMD:单程序多数据流。一种传统的MIMD编程模型,其中一个程序运行在所有处理器之上。
  • SIMD:单指令流多数据流。同样的指令在多个数据流上操作,和在向量处理器中的一样。
  • 数据级并行:对不同数据执行相同操作所获得的并行。
  • 阵列处理器:又称为并行处理机、SIMD的一种。
  • 向量体系结构:SIMD结构有三种变体:向量体系结构、多媒体SIMD指令集扩展和图形处理单元。
  • 向量机(或向量处理器):SIMD的一种。
  • 标量体系结构:常规的指令集体系结构。

3、硬件多线程

  • 硬件多线程(hardware multithreading):在线程阻塞时处理器可切换到另一线程的实现。和MIMD相关。
  • 进程(process):一个进程包含一个或多个线程、地址空间和操作系统。因此一次进程切换通常需要操作系统的介入,但是线程切换不需要。
  • 线程(thread):一个线程包含程序计数器、寄存器状态和内存栈。它是一个轻量级的进程;多个线程通常共享一个地址空间,而进程不是。
  • 硬件多线程主要有两种实现方法。
    • 细粒度多线程(fine-grained multithreading):每条指令执行之后都进行线程切换。
    • 粗粒度多线程(coarse-grained multithreading):仅在一些重要事件(如最后一级缓存缺失)之后进行线程切换。
  • 同时多线程(simultaneous multithreading,SMT):是硬件多线程的一个变种,利用多发射、动态调度微体系结构中的资源实现多线程,从而降低多线程的开销。

多处理器(Multiprocessor)的基本概念_第1张图片

4、共享内存多处理器(SMP)

  • SMP更加准确的的术语应该是共享地址多处理器(shared-address multiprocessor)

多处理器(Multiprocessor)的基本概念_第2张图片

问题:

  1. 如何分享数据?所有处理器共享单一地址空间
  2. 如何协同工作?所有处理器通过内存中的共享变量协同工作或通信。共享数据的使用必须通过原语来协调。
  3. 最多支持多少个处理器?

特点:

  • 硬件为所有处理器提供单一物理地址空间
  • 来同步共享变量
  • 单一地址空间的多处理器有两种类型:
    • 统一存储访问(Uniform Memory Access,UMA)多处理器:无论访存的是哪个处理器,也无论访存的是哪个字,访存时间的大致相同的处理器。
    • 非统一存储访问(Nonuniform Memory Access,NUMA)多处理器:某些存储访存速度高于其他访存,访存速度与访问哪个处理器及访问哪个字相关。
  • 同步(synchronization):对可能运行于不同处理器上的两个或更多进程的行为进行协调的过程。
  • 锁(lock):一个时刻仅允许一个处理器访问数据的同步装置。

5、SMP体系结构

首先明确SMP体系结构处于整个并行处理器类别的什么位置。前面提到,计算机系统一般分为以下4类:

  • 单指令单数据(SISD)流:单处理器执行单个指令流,对保存在单个内存中的数据进行操作。
  • 单指令多数据(SIMD)流:一个机器指令控制许多处理部件步伐一致地同时执行。每个处理部件都有一个相关的数据内存,因此,每条指令由不同的处理器在不同的数据集合上执行。向量和阵列处理器都属于这一类。
  • 多指令单数据(MISD)流:—系列数据被传送到一组处理器上,每个处理器执行不同的指令序列。这个结构从未实现过。
  • 多指令多数据(MIMD)流:一组处理器同时在不同的数据集上执行不同的指令序列。

在MIMD 结构中,处理器是通用的,因为它们必须能够处理执行相应的数据转换所需的所有指令。MIMD可以根据处理器的通信方式进一步地细化,如图4.8所示。如果每个处理器都有一个专用内存,那么每个处理部件都可以被看做一个独立的计算机。计算机间的通信或者借助于固定的路径,或者借助于某些网络设施,这类系统称做集群( cluster ),或者多计算机系统。如果处理器共享一个公用内存,每个处理器都访问保存在共享内存中的程序和数据,处理器之间通过该内存互相通信,则这类系统称为共享内存多处理器系统。
多处理器(Multiprocessor)的基本概念_第3张图片
共享内存多处理器系统的一个常用的分类是基于如何把进程分配给处理器。最基本的两种方法是主/从对称

主/从结构中,操作系统内核总是在某个特定的处理器上运行,其他处理器只用于执行用户程序,还可能执行一些操作系统实用程序。主处理器负责调度进程或线程。当一个进程/线程是活跃时,如果从处理器需要服务(如一次IO调用),它必须给主处理器发送请求,并等待服务的执行。这种方法是非常简单的,只需要对单处理器多道程序操作系统做少许改进。一个处理器控制了所有的内存和IO资源,因而可以简化冲突解决方案。该方法的缺点如下

  • 主处理器的失效将导致整个系统失效。
  • 由于主处理器必须单独完成所有的调度和进程管理,它可能成为性能瓶颈。

对称多处理系统中,内核可以在任何处理器上执行,并且通常是每个处理器从可用的进程或线程池中进行自己的调度工作。内核可以由多进程或多线程构成,允许部分内核并行执行。SMP方法增加了操作系统的复杂性,它必须确保两个处理器不会选择同一个进程,并且确保进程不会由于某种原因从队列中丢失,因此必须采用相关技术以决定和同步对资源的占用声明。

6、SMP的组织结构

图4.9说明了SMP的一般组织结构。

  • SMP中有多个处理器,每个都含有它自己的控制单元、算术逻辑单元和寄存器;
  • 每个处理器都可以通过某种形式的互连机制访问一个共享内存和IO设备;
  • 共享总线就是一个通用方法。

处理器可以通过内存(留在共享地址空间中的消息和状态信息)互相通信,还可以直接交换信号。内存通常被组织成允许同时有多个对内存不同独立部分的访问。

在现代计算机中,处理器通常至少有专用的一级高速缓存。高速缓存的使用带来了新的设计问题。由于每个本地高速缓存包含一部分内存的映像,如果修改了高速缓存中的一个字,可以想象得到,这使得在其他高速缓存中这个字都变成无效的。为避免这一点,当发生更新时,别的处理器必须被告知发生了更新。这个问题称做高速缓存的一致性问题,通常用硬件解决而不是由操作系统解决。
多处理器(Multiprocessor)的基本概念_第4张图片

7、多处理器操作系统的设计思考

SMP操作系统管理处理器和其他计算机资源,使得用户可以把整个系统看做是与多道程序单处理器系统相同的形式。用户可构造使用多进程或多线程的应用程序,而无需考虑用到一个处理器还是多个处理器。因此,多处理器操作系统必须提供多道程序系统的全部功能,再加上适应多个处理器的附加功能。关键的设计问题如下:

  • 同时的并发进程或线程:为允许多个处理器同时执行相同的内核代码,内核例程必须是可重入的(reentrant)。多个处理器执行内核的相同或不同部分时,必须对内核表和管理结构进行合适的管理,以避免死锁或非法操作。
  • 调度:调度可以由任何处理器执行,因此必须避免冲突。如果使用了内核级多线程,则可能出现在多个处理器上同时从同一个进程中调度多个线程的机会。
  • 同步:因为多个活动进程都可能访问共享地址空间或共享I/O资源,因而需注意提供有效的同步。同步是保证互斥和事件排序的机制,锁(lock)是多处理器操作系统中一个通用的同步机制。
  • 存储管理:多处理器上的存储管理必须处理在单处理器机器上发现的所有问题。此外,为达到最佳性能,操作系统需要尽可能地利用硬件并行性,如多端口内存;还必须协调不同处理器上的分页机制,以保证当多个处理器共享页或段时页面的一致性,以及决定页面置换的策略。
  • 可靠性和容错:当处理器失效时,操作系统应该提供适当的功能降低。调度程序和操作系统的其他部分必须知道处理器的失效情况,并且据此重新组织管理表。

你可能感兴趣的:(计算机组成原理,其他)