| 项目 | 值 |
|---|---|
| 定义 | 一个芯片上集成多个处理核心 |
| 分类 | 同构多核(相同核心)/ 异构多核(不同类型核心) |
| 通信 | 共享 Cache / 共享内存 / 片上网络 NoC |
| 属于 | MIMD 架构 |
| 优势 | 多线程并行、功耗效率高 |
多核处理器在一个芯片(Die)上集成多个独立的处理核心(Core),每个核心拥有自己的流水线、寄存器组和 L1 Cache,可以各自独立地执行不同的指令流。
| 类型 | 说明 | 典型例子 | 适用场景 |
|---|---|---|---|
| 同构多核 | 所有核心结构完全相同 | Intel Core i7(多个 x86 核) | 通用计算、易于调度 |
| 异构多核 | 核心类型不同 | ARM big.LITTLE(大核 + 小核) | 移动 / 功耗敏感场景 |
| 方式 | 说明 |
|---|---|
| 共享 Cache | 多核共享 L2 / L3 Cache,靠 Cache 一致性协议维护正确性 |
| 共享内存 | 通过共享主存通信,需要锁 / 信号量等同步机制 |
| 消息传递 | 核间显式收发消息(MPI 编程模型) |
| 片上网络 NoC | 核间通过网络拓扑(环形 / Mesh)互连,核数多时优于总线 |
多核系统中每个核心有自己的 L1 Cache,可能缓存同一主存单元的多个副本:
| 协议 | 机制 | 适用规模 |
|---|---|---|
| 监听协议(Snooping) | 各 Cache 控制器侦听总线上的读写事务,据此更新 / 作废本地副本,典型实现为 MESI | 核数较少(总线可承载) |
| 目录协议(Directory) | 用一张集中目录记录每个块被哪些核缓存及其状态,点对点发无效消息 | 核数多、NoC 互连 |
| 状态 | 含义 | 本 Cache 有效? | 与主存一致? | 其他核有副本? |
|---|---|---|---|---|
| M Modified | 已修改,独占脏块 | 是 | 否(脏) | 否 |
| E Exclusive | 独占干净块 | 是 | 是 | 否 |
| S Shared | 共享干净块 | 是 | 是 | 是 |
| I Invalid | 无效(未缓存或被作废) | 否 | — | — |
| 性质 | 说明 |
|---|---|
| 核心数 | 现代处理器常见 4 ~ 64 核 |
| 共享 L3 | 多核通常共享最后一级 Cache(LLC) |
| Cache 一致性 | 必须由硬件协议保证,软件不可见 |
| 功耗效率 | 多个低频核比单个高频核更节能(功耗 $\propto$ 频率 $\times$ 电压$^2$) |
| 并行模型 | MIMD(每个核独立执行各自的指令流与数据流) |
| 编程模型 | 共享内存(OpenMP / pthread)或消息传递(MPI) |
| 考法 | 解题套路 |
|---|---|
| 多核 vs 多处理器 | 多核 = 一个芯片多个核;多处理器 = 多个芯片 |
| Cache 一致性问题 | 指出各核私有 Cache 可能持有同一数据的不一致副本 |
| MESI 协议 | Modified / Exclusive / Shared / Invalid 四状态及转换 |
| 同构 vs 异构 | 同构:核心相同;异构:不同类型核心(大小核) |
| 多核的 Flynn 分类 | MIMD |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。