在现代计算机中,从移动设备到服务器,多处理器系统现在主导着计算机领域。传统上,这样的系统有两个(或更多)处理器,每个处理器都有一个单核CPU。各个处理器共享计算机总线,有时共享时钟、内存和外围设备。多处理器系统的主要优点是提高了吞吐量。也就是说,通过增加处理器的数量,我们期望在更短的时间内完成更多的工作。N个处理器的加速比不是N;它要小于N。当多个处理器在一个任务上协作时,为了保持所有部件正常工作,会产生一定的开销。这种开销,加上共享资源的争用,降低了额外处理器的预期收益。

最常见的多处理器系统使用对称多处理(SMP),其中每个对等CPU处理器执行所有任务,包括操作系统功能和用户进程。图1.8展示了一个典型的SMP架构,其中有两个处理器,每个处理器都有自己的CPU。注意,每个CPU处理器都有自己的寄存器集,以及一个私有或本地缓存。但是,所有处理器都在系统总线上共享物理内存(主存储)。

这个模型的好处是,许多进程可以同时运行——如果有N个CPU,那么可以有N个进程同时运行——并且不会导致性能显著恶化。但是,由于CPU是独立的,一个可能是空闲的,而另一个可能是过载的,从而导致效率低下。如果处理器共享某些数据结构,就可以避免这些低效率。这种形式的多处理器系统将允许进程和资源(如内存)在不同的处理器之间动态共享,并可以降低处理器之间的工作负载差异。但是这样额系统必须小心编写,我们将在第5章和第6章中看到。

多处理器【multiprocessor】的定义随着时间的推移而发展壮大,现在也包括多核【multicore】系统,其中多个计算核心驻留在一个芯片上。多核系统比多个带有单个核心的芯片(其实就是多处理器)更有效,因为片内通信比片内通信快。此外,一个多核芯片比多个单独核心的芯片耗能要少得多,这对移动设备和笔记本电脑来说都是一个重要问题。

在图1.9中,我们展示了一个双核设计,在同一个处理器芯片上有两个核。在这个设计中,每个核心都有自己的寄存器集,以及它自己的本地缓存,通常被称为一级缓存,或者L1缓存。还请注意,二级(L2)缓存对芯片来说是本地的,但由两个处理器核心而言却是共享的。大多数体系结构采用这种方法,结合本地缓存和共享缓存,本地低级别缓存通常比高级别共享要小,但是更快。除了架构上的考虑,如缓存、内存和总线争用,一个拥有N个核心的多核心处理器在操作系统中显示为N个标准CPU。这一特性给操作系统设计人员和应用程序带来压力,以有效地利用这些处理内核,这是我们在第4章中追求的问题。几乎所有的现代操作系统——包括Windows、mac OS和Linux,以及Android和iOS移动系统——都支持多核SMP系统。

向多处理器系统添加额外的CPU将增加计算能力;但是,正如前面提到的,这个概念的伸缩性不是很好,一旦我们添加了太多的CPU,系统总线的争用就会成为瓶颈,性能开始下降。另一种方法是为每个CPU(或一组CPU)提供自己的本地内存,这些内存可以通过快速的本地总线访问。CPU由共享系统互连[shared system interconnect]连接,因此所有CPU共享一个物理地址空间。这种方法称为非统一内存访问,或NUMA,如图1.10所示。优点是,当CPU访问本地内存时,不仅速度很快,而且不存在系统互连的争用。因此,当添加更多的处理器时,NUMA系统可以更有效地扩展。

NUMA系统的一个潜在缺陷是,当CPU必须跨系统互连访问远程内存时,会增加延迟,从而可能造成性能损失。换句话说,例如,CPU0不能像访问自己的本地内存那样快地访问CPU3的本地内存,从而降低性能。操作系统可以通过仔细的CPU调度和内存管理来最小化NUMA的损失,如5.5.2节和10.5.4节所讨论的那样。由于NUMA系统可以扩展以适应大量的处理器,它们在服务器和高性能计算系统上越来越流行。

最后,刀片服务器【blade servers】是将多个处理器板、I/O板和网络板放在同一个机箱中的系统。这些和传统的多处理器系统的不同之处在于,每个刀片处理器独立运行并运行自己的操作系统。一些刀片服务器板也是多处理器,这就模糊了计算机类型之间的界限。本质上,这些服务器由多个独立的多处理器系统组成。

计算机系统组件的定义

  • CPU — 执行指令的硬件.

  • Processor — 包含一个或者多个CPU的物理芯片

  • Core — CPU的基本计算单元

  • Multicore — 在一个相同的CPU上有多个计算核心

  • Multiprocessor — 包含多个处理器

虽然现在几乎所有的系统都是多核的,当我们指的是计算机系统上的一个单独计算单元时候,我们会用通用属于CPU,而当我们指的是CPU上的一个或者多个核心时,我们用core以及multocore

results matching ""

    No results matching ""