19.1.1 并行计算是计算的未来
19.1.2 并行计算的基本原理
并行计算的基本思想并不复杂,那就是将一个复杂的工作任务进行分解,然后,在多个处理器上同时执行这些分解后的子任务。
首先,我们先谈谈多核CPU中的“核”。
1 CPU与“核”
现在人们常说:最近我买了一台双核笔记本电脑。这里面的“核(core)”指代什么,它与CPU是什么关系?还有,人们还常说到“处理器(processor)”,貌似这三个都是指同样的东西。
下面我们就来讨论一下这些概念的含义,弄清楚它们到底指代什么。
学过物理的人都知道,现代计算机是构造于集成电路技术基础之上,任何一个集成电路,最底层的也是最小的工作单元是一个个的晶体管,多个晶体管构成逻辑模块(logic block),一组逻辑模块进而构成功能单元(functional unit),例如可完成基本算术运算功能的ALU(Arithmetic Logic Unit,算术逻辑单元)就是功能单元的一个例子。
多个功能单元组合起来,就构成了微处理器(micro-processor),微处理器最广为人知的名字就是CPU(Central Processing Unit,中央处理单元)。
最终生产出来的微处理器实际上是一块物理基片(die),经过封装之后就叫作处理器(processor)。
那么什么是“核(core)”呢?
核是微处理器中所有可用的功能单元的集合。
那些直接参与指令执行的功能单元的集合称为“执行核(execution core)”。
很明显,每个微处理器必定要有一个执行核,否则,它无法执行任何指令,也就不能称其为微处理器了。
现在就可很清楚“多核”的含义了。所谓多核,其实就是在同一块物理基片上集成两个以上的“执行核”,从而使处理器具备并行执行指令的能力。多核CPU,就是指拥有多个执行核的微处理器,基片封装好之后,就称为“多核处理器”。
再区分一下另两个概念:多处理器与多核处理器系统。
如前所述,多核处理器系统是指计算机中的处理器中包容了多个执行核,通常这种计算机只包容有一个多核处理器,否则,此系统应归入“多处理器”系统。
多处理器系统是指由多个处理器构成的计算机系统,每个处理器自身可以是单核或多核的。
简单地说:多处理器系统可以看作是一个主板上具有多个处理器插槽的计算机系统。
从应用软件开发者角度来看,多处理器与多核处理器系统其实是一样的,可以统一地将其看成是计算机中拥有多个可供使用的CPU。
下面,我们再来区分一下另外两个很容易弄混的概念——“并发”与“并行”。
2 并发与并行
“并行(Parallelism)”是指多个工作任务在拥有多核CPU(或多个单核CPU)的多处理器计算机上同时执行。在这些工作任务运行的过程中,除非有任务提前结束或者延迟启动,否则,在任一时间点总有两个以上的工作任务同时运行。
简单地说:只要是“同时”运行的,就可以称之为是“并行”的。
图 19‑1展示了并行执行的三个工作任务在三个处理器上同时运行的情形,图中黑色的长条表示任务的执行过程。
首先,我们先谈谈多核CPU中的“核”。

2 并发与并行
“并发(Concurrent)”,指“宏观”上计算机可以同时执行多个不相关的工作任务(是“并行”的),但在“微观”角度来看,这些工作任务并不是始终都在运行,每个工作任务都呈现出“走走停停”这种相互交替的状态。
这里的“宏观”,是指从应用程序开发者层次上看的,时间尺度较大,而“微观”则是指从操作系统的线程管理角度和计算机硬件工程师层次上看的,时间尺度很小。
图 19‑2展示了3个工作任务在单个处理器上交替执行的情形。
图 19‑2中,可以看到通过轮流使用单个处理器,尽管在任何时刻都只有一个工作任务在运行,但在一个比较长的时间间隔内,所有的工作任务都在“并行”运行中。由此可见,“并发”的好处之一就是使有限的处理器资源可以“并行”运行超过处理器个数的多个工作任务。正是由于“并发”有这样的好处,所以在操作系统级别,不管计算机本身是单核系统还是多核系统,都是采用微观上的“并发”来实现宏观上的“并行”,绝不允许一个工作任务长时间地独占某个处理器直到其运行结束。
再详细解释一下如何利用“并发”实现“并行”。
在单核计算机系统中,操作系统通过“微观”上让每个线程分时使用处理器实现“宏观”上工作任务的“并行”执行(因为工作任务具体是由线程负责完成的),而在多核计算机系统中,尽管在物理架构上直接支持“并行”,允许同时运行多个线程,但由于大多数情况下负责执行工作任务的线程数往往大于可获取的处理器个数,所以,操作系统仍是使用同样的分时调度策略为线程分配处理器。这时,同一个线程有可能在不同的时间段内在不同的处理器上运行。图 19‑3展示了属于同一工作任务的多个线程在4个处理器上“跳越”执行的情形。
理解“并行”与“并发”的区别,是我们开发 “并行程序”的第一步。



















