# 多核处理器

> 计算机科学 · CIE A-Level 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u4-multicore-processors/

本模块讲解多核处理器架构、性能优势、通过阿姆达尔定律计算加速比，以及多核设计的主要局限性，所有内容都是CIE 9618考试的核心考点。

**先修:** [单核CPU架构](https://www.owlsprep.com/zh/study/cie-9618-u4-single-core-cpu-architecture/); [并行处理基础](https://www.owlsprep.com/zh/study/cie-9618-u4-parallel-processing-intro/)

## 学习目标

- 区分单核与多核处理器架构
- 解释多核设计在不同工作负载下的性能优势
- 使用阿姆达尔定律计算最大理论加速比
- 评估多核处理器性能的局限性

## 什么是多核处理器？

多核处理器是一块包含多个独立处理单元（称为核心）的集成电路。每个核心都有自己的控制单元、ALU和寄存器，大多数设计中，芯片上所有核心共享公共缓存和系统内存总线。

**核心** — 多核芯片上的独立处理单元，能够独立于其他核心执行指令流。

**例题:** 解释为什么3GHz四核处理器的总时钟频率不是12GHz。

1. 3GHz指的是每个独立核心的最大时钟频率，不是总和
2. 每个核心执行指令时独立运行，因此时钟频率不会相加
3. 这款四核处理器的每个核心最高都能运行在3GHz，总时钟频率不是12GHz

> **tip**
>
> 这是选择题中最常见的考点之一，请记住：不同核心的时钟频率不会相加。

> **考试提示:** 在书面答题中随时准备纠正这个错误认知

## 多核设计的性能优势

多核处理器通过支持指令并行执行来提高系统整体吞吐量，主要给两类工作负载带来显著优势：

- **多任务处理**：多个独立程序可以同时在不同核心上运行，避免单核上时间分片带来的开销
- **可并行化工作负载**：设计为拆分为多线程的程序（例如视频剪辑、3D渲染）可以跨多个核心处理任务，减少总运行时间
- **能效更高**：多核芯片可以在更低功耗和发热量下，实现和更高时钟频率的单核芯片相同的吞吐量

**例题:** 用户同时运行浏览器、文字处理器和视频编辑器，解释为什么同代的2.5GHz四核处理器性能优于3.5GHz单核处理器。

1. 每个打开的应用程序都可以分配到一个独立核心，因此三个程序可以同时执行指令
2. 单核处理器必须在应用程序之间进行时间分片，切换操作会带来大量调度开销
3. 即使时钟频率更高，顺序执行加上切换开销意味着单核无法在这类工作负载下匹配四核的吞吐量

## 用于计算加速比的阿姆达尔定律

阿姆达尔定律是一个公式，基于程序可并行化代码的占比，计算可并行化程序在多核处理器上运行时能获得的最大可能加速比。

**阿姆达尔定律** — 计算最大理论加速比$S$，其中$p$ = 可并行化代码占比（0到1），$n$ = 核心数量。

*记法:* S = \frac{1}{(1-p) + \frac{p}{n}}

**例题:** 一个程序有65%的代码可以并行化，计算它在8核处理器上运行时的最大理论加速比。

1. 将并行百分比转换为占比：$p = 65/100 = 0.65$
2. 计算顺序执行部分占比：$1-p = 1 - 0.65 = 0.35$
3. 将数值代入阿姆达尔定律：
4. $$S = \frac{1}{0.35 + \frac{0.65}{8}} = \frac{1}{0.35 + 0.08125} = \frac{1}{0.43125} \approx 2.32$$
5. 最大理论加速比约为单核运行的2.32倍。

> **tip**
>
> 一定要将百分比转换为小数得到$p$，直接使用百分比数值会得到错误结果。

*计算器:* allowed

## 多核性能的局限性

由于存在多种瓶颈，多核处理器的实际加速比几乎总是低于阿姆达尔定律计算出的理论最大值：

- **顺序瓶颈**：代码中任何不可并行化的部分都会限制加速比，即使核心数量无限也是如此
- **并行开销**：将工作拆分为线程、同步结果、核心间通信都会带来额外处理开销
- **内存竞争**：所有核心共享主存访问权，因此同时访问内存会造成瓶颈
- **软件限制**：许多程序没有设计为使用多个核心，因此额外核心不会带来性能提升

**例题:** 解释为什么给运行15%顺序代码程序的8核处理器增加100个额外核心，几乎不会带来额外的加速比提升。

1. 首先计算8核心的加速比：$p = 0.85$，$S = \frac{1}{0.15 + 0.85/8} \approx 4.27$
2. 然后计算108核心的加速比：$S = \frac{1}{0.15 + 0.85/108} \approx 6.29$
3. 即使我们增加了100个额外核心，加速比仅提升了约2，远低于预期的增益
4. 占比15%的顺序代码部分是永久瓶颈，无论增加多少额外核心，都会限制进一步的加速比提升。

## 常见错误

- **错误做法:** 将所有核心的时钟频率相加得到总时钟频率
  - 原因: 每个核心独立运行，因此时钟频率不会相加
  - 正确做法: 多核芯片标称的时钟频率是每个独立核心的运行速度
- **错误做法:** 假设更多核心总能让程序执行更快
  - 原因: 不可并行化程序只能在一个核心上运行，和可用核心数量无关
  - 正确做法: 只有并行工作负载或多独立程序多任务才能获得加速比
- **错误做法:** 在阿姆达尔定律中直接使用百分比数值作为$p$
  - 原因: 阿姆达尔公式要求$p$是0到1之间的占比
  - 正确做法: 代入前将并行百分比除以100得到小数
- **错误做法:** 声称实际加速比等于阿姆达尔定律得到的理论值
  - 原因: 阿姆达尔定律没有考虑并行开销和内存竞争
  - 正确做法: 始终说明实际加速比会低于理论最大值

## 速查表

| 概念 | 核心要点/公式 |
| --- | --- |
| 多核处理器 | 一块CPU芯片上的多个独立核心 |
| 核心数量 | 可同时运行的独立指令流数量 |
| 时钟频率 | 标称速度 = 每个独立核心的速度，不是总和 |
| 阿姆达尔定律 | $S = \frac{1}{(1-p) + \frac{p}{n}}$ |
| $p$（阿姆达尔定律） | 可并行化代码占比 (0 < p < 1) |
| $n$（阿姆达尔定律） | 可用核心数量 |
| 最大加速比（无限核心） | $S = 1/(1-p)$ |
| 最大限制因素 | 顺序代码瓶颈 |

## 下一步

多核架构是从个人设备到数据中心的所有现代计算系统的基础。理解多核设计的性能权衡与限制，能帮助你准备并行计算和系统架构的更高级主题，这些内容经常在CIE 9618的试卷2和试卷4中考查。你在这里学到的概念，尤其是阿姆达尔定律，也会应用到GPU并行处理和分布式计算主题中。点击下方链接继续备考学习。

- [系统软件](https://www.owlsprep.com/zh/study/cie-9618-u5-overview/)
- [操作系统](https://www.owlsprep.com/zh/study/cie-9618-u5-operating-systems/)
- [系统软件的类型](https://www.owlsprep.com/zh/study/cie-9618-u5-types-of-system-software/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u4-multicore-processors/
