首页/计算机组成原理/中央处理器/多核处理器 🔗 在 Obsidian 中打开
计算机组成原理 · 中央处理器

多核处理器

重要度 ⭐⭐⭐⭐中央处理器多核处理器并行CPU
速查
多核 = 一个芯片上集成多个独立处理核心,属 MIMD。核心问题是 Cache 一致性(各核 L1 可能缓存同一数据的不同副本),靠监听协议(MESI)目录协议解决。

速查

项目
定义一个芯片上集成多个处理核心
分类同构多核(相同核心)/ 异构多核(不同类型核心)
通信共享 Cache / 共享内存 / 片上网络 NoC
属于MIMD 架构
优势多线程并行、功耗效率高

核心概念

什么是多核处理器

多核处理器在一个芯片(Die)上集成多个独立的处理核心(Core),每个核心拥有自己的流水线、寄存器组和 L1 Cache,可以各自独立地执行不同的指令流

同构 vs 异构多核

类型说明典型例子适用场景
同构多核所有核心结构完全相同Intel Core i7(多个 x86 核)通用计算、易于调度
异构多核核心类型不同ARM big.LITTLE(大核 + 小核)移动 / 功耗敏感场景

核间通信方式

方式说明
共享 Cache多核共享 L2 / L3 Cache,靠 Cache 一致性协议维护正确性
共享内存通过共享主存通信,需要锁 / 信号量等同步机制
消息传递核间显式收发消息(MPI 编程模型)
片上网络 NoC核间通过网络拓扑(环形 / Mesh)互连,核数多时优于总线

多核的组织结构

多核处理器芯片 核心 0 流水线 L1 Cache(私有) L2 Cache 核心 1 流水线 L1 Cache(私有) L2 Cache 核心 2 流水线 L1 Cache(私有) L2 Cache 共享 L3 Cache(所有核心共用) 互连总线 / 片上网络 NoC 内存控制器 → 主存
图:典型多核芯片 —— L1 / L2 私有,L3 共享,核间经片上互连访问内存控制器
层次记忆越靠近核心越私有、越小、越快:L1(每核私有)→ L2(多为私有)→ L3(全芯片共享)→ 主存。共享层次正是核间通信一致性维护发生的地方。

Cache 一致性问题

多核系统中每个核心有自己的 L1 Cache,可能缓存同一主存单元的多个副本

  • 核心 A 修改了变量 X → 核心 B 的 Cache 中仍是旧值不一致
  • 若两核都写回主存,先后顺序还会导致更新丢失

两类一致性协议

协议机制适用规模
监听协议(Snooping)各 Cache 控制器侦听总线上的读写事务,据此更新 / 作废本地副本,典型实现为 MESI核数较少(总线可承载)
目录协议(Directory)用一张集中目录记录每个块被哪些核缓存及其状态,点对点发无效消息核数多、NoC 互连

MESI 四状态

状态含义本 Cache 有效?与主存一致?其他核有副本?
M Modified已修改,独占脏块(脏)
E Exclusive独占干净块
S Shared共享干净块
I Invalid无效(未缓存或被作废)
写作废(Write-Invalidate)核心思想任一核要某块前,必须先把其他核的该块副本全部置为 I,从而保证同一时刻最多一个核持有可写副本(M 或 E)。

关键性质

性质说明
核心数现代处理器常见 4 ~ 64 核
共享 L3多核通常共享最后一级 Cache(LLC)
Cache 一致性必须由硬件协议保证,软件不可见
功耗效率多个低频核比单个高频核更节能(功耗 $\propto$ 频率 $\times$ 电压$^2$)
并行模型MIMD(每个核独立执行各自的指令流与数据流)
编程模型共享内存(OpenMP / pthread)或消息传递(MPI)
为什么转向多核单核靠提频提性能撞上了功耗墙:动态功耗 $P \approx C V^2 f$,提频还要提压,功耗呈立方级增长。改用多个较低频核心,在相同功耗下可获得更高的总吞吐

常见考法

考法解题套路
多核 vs 多处理器多核 = 一个芯片多个核;多处理器 = 多个芯片
Cache 一致性问题指出各核私有 Cache 可能持有同一数据的不一致副本
MESI 协议Modified / Exclusive / Shared / Invalid 四状态及转换
同构 vs 异构同构:核心相同;异构:不同类型核心(大小核)
多核的 Flynn 分类MIMD
加分点问"核心数翻倍性能是否翻倍"时,用 Amdahl 定律作答:设可并行比例为 $p$、核数为 $m$,则 $S = \dfrac{1}{(1-p) + p/m}$,串行部分 $(1-p)$ 决定了加速上限 $\dfrac{1}{1-p}$。

易错点

必记
  1. 多核 $\neq$ 多处理器:多核是一个芯片上的多个核心。
  2. 多核属于 MIMD,不是 SIMD。
  3. Cache 一致性是多核特有的关键问题(单核不存在)。
  4. 核心数增加 $\neq$ 线性性能提升(受并行度、通信与同步开销限制)。
  5. 异构多核比同构多核更节能(小核处理轻负载)。
  6. 多核不能提升单线程性能,只提升多线程 / 多任务吞吐。

核心结论

  1. 多核处理器在一个芯片上集成多个处理核心。
  2. 属于 MIMD 架构,每个核独立执行不同的指令流。
  3. Cache 一致性是多核系统的关键问题,由 MESI 等硬件协议解决。
  4. 同构多核适合通用计算,异构多核适合功耗敏感场景。
  5. 多核提升多线程性能,但不能提升单线程性能。

记忆卡片

多核处理器属于哪种 Flynn 分类?
MIMD(多指令流多数据流)。
Cache 一致性问题是什么?
多核各自 Cache 可能缓存同一数据的不同副本,导致读到旧值。
MESI 的四种状态?
Modified / Exclusive / Shared / Invalid。
同构与异构多核的区别?
同构:核心结构相同;异构:不同类型核心(如 big.LITTLE 大小核)。
多核能提升单线程性能吗?
不能,只提升多线程并行性能。
监听协议 vs 目录协议?
监听靠总线广播侦听,适合少核;目录集中记录共享者,适合多核 NoC。
哪些 Cache 是私有的?
L1(必然私有)、L2(多为私有);L3 通常全芯片共享。
写作废协议的不变式?
任一时刻,最多一个核持有可写副本(M 或 E)。

交互动画 · MESI Cache 一致性演示

写作废(Write-Invalidate)监听协议 · 变量 X 核心 0 核心 1 核0 L1 Cache X = — I 核1 L1 Cache X = — I 共享总线(各 Cache 控制器在此侦听) 主存 X = 0
M 已修改 E 独占 S 共享 I 无效
试一试依次点击「核0 读 X」→「核1 读 X」(两核都变 S)→「核0 写 X=5」,观察核 1 的副本被作废为 I,核 0 变为 M。这就是写作废协议的完整流程。

相关知识点

hardware-multithreading sisd-simd-mimd superscalar-pipeline

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。