﻿# CPU 物理层次：从 Socket 到 Chiplet，芯片到底怎么拼装？

> 现代 CPU 不再是"一块硅片里塞满晶体管"那么简单。从主板上的 Socket，到封装里的 Die/Tile/Chiplet，再到核心簇（CCX/CCD）和共享的 Uncore，每一层封装选择都直接影响延迟、良率、扩展性和成本。本文把 CPU 的物理层次拆开，并对比 Intel/AMD/Apple 三条主流路线的取舍。


> 关联：[cpu-bus-architecture.md](/concepts/cpu/cpu-bus-architecture.md)（总纲）、[on-die-interconnect.md](/concepts/cpu/on-die-interconnect.md)（片内 Ring/Mesh/IFOP）、[cxl.md](/concepts/cpu/cxl.md)（CXL/UCIe/统一内存）

---

## 一、从外到内：四个层次

| 层次 | 英文名 | 是什么 | 典型例子 |
|------|--------|--------|---------|
| **Socket** | Socket / Package | 主板上的物理插槽和封装后的 CPU | 双路服务器 = 2 个 Socket |
| **Package** | Package | 金属盖下面的整个封装体 | 含一个或多个 Die/Tile |
| **Die / Tile / Chiplet** | Die / Tile / Chiplet | 封装内的单块硅片或切片 | Intel Tile、AMD CCD/IOD、Apple 单片 SoC |
| **Core Complex / CCD** | CCX / CCD | 一组核心 + 共享的 L3 | Zen 3 CCX = 8 核 + 32MB L3 |
| **Core** | Core | 一个完整的处理器核 | Golden Cove / Zen 4 |

```bash
Socket (主板上的物理插槽)
 └─ Package (你买到的那片"CPU")
     └─ Die 0 (Intel 单片) 或 Tile/Chiplet (现代多片)
         ├─ Core Complex 0 (一组核 + 共享 L3)
         │   ├─ Core 0 ── L1I + L1D + L2 (私有)
         │   ├─ Core 1 ── L1I + L1D + L2 (私有)
         │   └─ ...       L3 (此 CCX 内共享)
         ├─ Core Complex 1
         │   └─ ...
         ├─ [共享互联] ← Ring / Mesh / IFOP
         ├─ System Agent / Uncore
         │   ├─ L3 / LLC (部分架构中 LLC 跨所有核统一)
         │   ├─ IMC × N  (DDR 通道)
         │   └─ PCIe Root Complex
         └─ (可选) GPU / NPU / 其他加速器
```

### 1.1 Socket：不是只用来插 CPU

一个 Socket 除了提供 CPU 和主板之间的供电、引脚、机械固定之外，还决定了：

- **最大功耗上限**（TDP 设计约束）
- **引脚数量** → 可支持的 DDR 通道数、PCIe 通道数、UPI/GMI 链路数
- **内存/NUMA 拓扑** → 多路系统里每个 Socket 都有自己的本地 IMC

> 例如 Intel Xeon SP 的 LGA 4677 脚位要同时供出：DDR5 通道、PCIe 5.0 通道、UPI 2.0 链路、DMI 到 Chipset。引脚预算直接限制了单 Socket 的扩展能力。

### 1.2 Die：一片完整的硅

**Die** 是芯片制造和测试的最小单位。晶圆（wafer）切割后得到的一颗颗 Die。传统单片 CPU 里一个 Package 只有一个 Die，所有核心、L3、IMC、PCIe 控制器都在这一片上。

| 单片方案优点 | 单片方案缺点 |
|-------------|-------------|
| 核间延迟最低 | 芯片面积大，良率低 |
| LLC 天然统一 | 散热集中，频率受约束 |
| 内存访问路径短 | 单一工艺节点，成本优化空间小 |

> Intel 在 12 代以前的消费级和早期 Xeon 都是单片 Die；AMD 在 Zen 1 之前也基本是单片。

### 1.3 Tile / Chiplet：把大芯片切成小芯片

当核心数上去之后，单片 Die 的面积和良率会急剧恶化。 industry's solution 是**把大芯片切成多个小芯片，再用高速互联拼起来**。

| 术语 | 谁在用 | 含义 |
|------|--------|------|
| **Chiplet** | AMD | 通用术语，小芯片 |
| **Tile** | Intel | 等同于 Chiplet，但强调平面/3D 封装 |
| **CCD** | AMD | Compute Chiplet Die，计算片 |
| **IOD** | AMD | IO Die，IO 片 |
| **SoC Tile / IO Tile** | Intel Meteor Lake+ | 不同功能片 |

```plantuml
@startuml
skinparam shadowing false
skinparam rectangle {
  BackgroundColor<<amd>> #FFCCBC
  BorderColor<<amd>> #E64A19
  BackgroundColor<<intel>> #BBDEFB
  BorderColor<<intel>> #1565C0
}
rectangle "AMD Zen 4 (Chiplet)" as AMD {
  rectangle "CCD0\n8 Core + 32MB L3\nTSMC N5" as CCD0
  rectangle "CCD1\n8 Core + 32MB L3\nTSMC N5" as CCD1
  rectangle "IOD\nIMC + PCIe + IFOP\nGF 12nm" as IOD
  CCD0 -- IOD : IFOP
  CCD1 -- IOD : IFOP
}
rectangle "Intel Meteor Lake (Tile)" as INTEL {
  rectangle "Compute Tile\nP-core+E-core\nTSMC N5" as COMP
  rectangle "Graphics Tile\nGPU\nTSMC N5" as GPU
  rectangle "SoC Tile\nMedia/Display/NPU\nTSMC N6" as SOC
  rectangle "IO Tile\nPCIe/DMI\nTSMC N6" as IO
  COMP -- GPU : Foveros/EMIB
  COMP -- SOC
  SOC -- IO
}
note right of AMD
  计算片用先进工艺(5nm)
  IO 片用成熟工艺(12nm)
  良率高、灵活扩展
end note
note right of INTEL
  功能不同的 Tile 用不同工艺
  Foveros 3D 堆叠+EMIB 横向连接
  跨 Tile 延迟比单片大
end note
@enduml
```

### 1.4 CCX / CCD：核心怎么组织成簇

| 术语 | 全称 | 含义 |
|------|------|------|
| **CCX** | Core Complex | AMD Zen 1-2 的术语：4 核共享一个 L3 |
| **CCD** | Core Chiplet Die | AMD Zen 2+ 的术语：一个计算 Chiplet，8 核共享一个 L3 |
| **P-core / E-core** | Performance / Efficiency core | Intel 混合架构：大核性能+小核能效 |

> AMD 的 CCD 是独立的计算单元，可以灵活堆叠（Zen 4 最多 12 个 CCD → 96 核）。代价是跨 CCD 的内存访问必须走 IOD 中转，延迟更高。

---

## 二、三条路线对比

```plantuml
@startuml
skinparam shadowing false
skinparam rectangle {
  BackgroundColor<<intel>> #BBDEFB
  BorderColor<<intel>> #1565C0
  BackgroundColor<<amd>> #FFCCBC
  BorderColor<<amd>> #E64A19
  BackgroundColor<<apple>> #C8E6C9
  BorderColor<<apple>> #2E7D32
}
rectangle "Intel 传统单片\n单 Die 包含所有核心+L3+Uncore\n~12代前消费级、早期Xeon\n━━━━━━━━━━━━━━━━━\n优点：低延迟、好优化\n缺点：大芯片良率低" <<intel>> as I1
rectangle "Intel Tile (Meteor Lake+)\nCompute/GPU/SoC/IO 四片Tile\n用 Foveros 3D/EMIB 拼装\n━━━━━━━━━━━━━━━━━\n优点：不同工艺混用\n缺点：跨片延迟" <<intel>> as I2
rectangle "AMD Chiplet (Zen 2+)\nCCD(计算片, TSMC N5) × N\nIOD(IO片, GF 12nm) × 1\nInfinity Fabric 互联\n━━━━━━━━━━━━━━━━━\n优点：良率高、灵活扩展\n缺点：跨片访问内存延迟" <<amd>> as A1
rectangle "Apple 统一内存\nCPU+GPU+NPU 同片\n共享统一内存池(LPDDR)\n━━━━━━━━━━━━━━━━━\n优点：零拷贝、低功耗\n缺点：不可扩展" <<apple>> as APP
I1 --> I2 : 演进
A1 --> APP : 不同思路
@enduml
```

### 2.1 对比表

| 维度 | Intel 单片（Raptor Lake 前） | Intel Tile（Meteor Lake+） | AMD Chiplet（Zen 2+） | Apple SoC（M 系列） |
|------|---------------------------|---------------------------|----------------------|-------------------|
| **封装层** | 单 Die | 4 Tile | 多个 CCD + 1 IOD | 单 Die / 单片 SoC |
| **工艺策略** | 统一工艺 | 按功能选工艺 | 计算片先进，IO 片成熟 | 统一最先进工艺 |
| **核间延迟** | 最低 | 跨 Tile 有惩罚 | 同 CCD 低，跨 CCD 高 | 极低 |
| **内存延迟** | 低 | 中等 | 跨片访问略高 | 低（但内存不可扩展）|
| **扩展性** | 受 Die 面积限制 | 可增减 Tile | 加 CCD 即可，极强 | 固定规格 |
| **典型场景** | 游戏/桌面 | 笔记本/移动端 | 服务器/数据中心 | 笔记本/移动 |
| **代表型号** | Raptor Lake | Meteor Lake / Arrow Lake | EPYC Genoa | M3 / M4 |

### 2.2 为什么三条路都指向同一个趋势？

无论 Intel 的 Tile、AMD 的 Chiplet 还是 Apple 的统一内存，本质都是**在"单片集成"和"模块化扩展"之间做取舍**：

- **性能敏感 + 核心数少** → 单片或统一 SoC（Apple）
- **核心数多 + 成本敏感** → Chiplet（AMD）
- **功耗/面积敏感 + 功能异构** → Tile（Intel）

> 一句话：**现代 CPU 是高度异构的微型分布式系统**。理解物理层次，才能理解为什么跨 CCD 访问慢、为什么 Apple 内存焊死、为什么 Intel 消费级换 Tile 后某些游戏反而轻微倒退。

---

## 三、从物理层次看性能

| 场景 | 物理层次影响 | 如何优化 |
|------|------------|---------|
| 单线程内存延迟 | 单片 < Tile < 跨 CCD | 绑定到同 CCD 或本 Socket |
| 多核扩展 | Chiplet 可加 CCD；单片受 Die 面积限制 | 选择合适 SKU、NUMA 绑定 |
| 功耗 | 单片/GPU 同片功耗密度高；Tile/Chiplet 可分散 | 功耗墙、散热设计 |
| 成本/良率 | 面积越大，良率按指数下降；Chiplet 切片挽救良率 | 服务器多核选 Chiplet |

---

## 四、一句话总结

> **CPU 的物理层次是性能的第一层约束：Socket 决定接口规模，Package 决定能放多少 Die，Die/Tile/Chiplet 决定工艺和成本，Core Complex 决定核间共享与延迟——选错一层，软件优化再猛也救不回来。**

---

*关联：[cpu-bus-architecture.md](/concepts/cpu/cpu-bus-architecture.md)（总纲）、[on-die-interconnect.md](/concepts/cpu/on-die-interconnect.md)（片内 Ring/Mesh/IFOP）、[cxl.md](/concepts/cpu/cxl.md)（CXL/UCIe/统一内存）、[core-and-uncore.md](/concepts/cpu/core-and-uncore.md)（核心三段式 + Uncore）*

