SoC 的定义、组成与分类¶
1. 什么是 SoC¶
SoC(System on Chip,片上系统)是在一颗芯片中集成计算、存储、通信、控制和专用加速能力的完整系统。它通常不仅包含 CPU,还包含片上存储、外部存储控制器、总线或 NoC、外设控制器、中断控制器、时钟/复位/电源管理、安全模块以及调试基础设施。
“System”是理解 SoC 的关键:单独看每个 IP 都可能工作正常,但系统是否正确,还取决于地址是否可达、时钟是否有效、复位是否释放、电源域是否开启、访问权限是否允许、内存属性是否一致以及软件初始化顺序是否正确。
2. SoC 与相近概念¶
| 概念 | 典型含义 | 主要特征 |
|---|---|---|
| CPU | 中央处理器核或处理器集群 | 执行通用指令,本身未必构成完整系统 |
| MPU | Microprocessor Unit | 通常需要外部 DRAM 和较完整 OS,常带 MMU |
| MCU | Microcontroller Unit | CPU、Flash、SRAM、定时器和外设高度集成,强调实时和低功耗 |
| SoC | System on Chip | 面向特定系统集成多类计算、存储、I/O 和管理模块 |
| ASIC | 专用集成电路 | 按特定需求固化实现;SoC 通常属于复杂 ASIC |
| FPGA | 可编程逻辑器件 | 逻辑可重配置,也可能包含硬核 CPU 并形成可编程 SoC |
| SiP | System in Package | 多颗裸片或器件封装在同一封装内,不等同于单片 SoC |
| Chiplet | 小芯粒 | 把大型系统拆成多个 Die,通过 Die-to-Die 接口互联 |
边界并不绝对。例如高端 MCU 也可能带 Cache、MPU、外部 DDR 控制器;应用处理器则常被直接称为 SoC。
3. 七类基本组成¶
3.1 计算子系统¶
- 通用 CPU:运行 Bootloader、OS、驱动和应用。
- 实时 CPU/MCU:承担低延迟控制、系统管理或安全任务。
- GPU:图形渲染及通用并行计算。
- NPU/AI Accelerator:矩阵、卷积和张量运算。
- DSP:音频、通信和信号处理。
- 视频/图像单元:ISP、Codec、Display Controller。
阅读架构资料时,需要记录每类处理器的指令集、核数、Cache、是否参与硬件一致性、可访问的地址范围以及启动责任。
3.2 存储子系统¶
- BootROM:固化第一阶段启动代码。
- OTP/eFuse:保存生命周期、安全配置、芯片校准值或密钥材料。
- SRAM:低延迟片上存储,可能作为启动 RAM、共享 RAM 或 TCM。
- Cache:减少处理器访问下一级存储的平均延迟。
- DDR Controller:调度来自片上主设备的内存请求。
- DDR PHY:处理训练、采样、电气时序和外部 DDR 信号。
- Flash/eMMC/UFS Controller:连接非易失启动及大容量存储。
3.3 互联子系统¶
- APB/AHB/AXI 等 AMBA 总线。
- Crossbar 或分层 Bus Matrix。
- NoC Router、Network Interface 和链路。
- 协议桥、位宽转换器、时钟域跨越单元。
- 地址译码、仲裁、QoS、访问过滤及超时监控。
互联不只是“连线”。它决定哪些主设备能访问哪些目标、访问顺序如何保证、拥塞如何传播、错误怎样返回,以及多个设备争用 DDR 时谁优先。
3.4 I/O 子系统¶
- 低速控制类:GPIO、UART、SPI、I2C、PWM、ADC。
- 存储类:SD/eMMC、NAND、NOR、UFS。
- 高速通信类:USB、PCIe、Ethernet、CAN、MIPI。
- 控制器通常负责协议逻辑,PHY 负责模拟/高速电气接口。
一个外设可用通常至少依赖 Pinmux、Clock、Reset、Power、MMIO、IRQ 和 DMA 中的若干项。
3.5 系统控制子系统¶
- Interrupt Controller:汇聚、屏蔽、路由和仲裁中断。
- Timer/Watchdog:计时、调度、超时恢复。
- Clock Controller:选择时钟源、分频、门控。
- Reset Controller:生成、同步和分发复位。
- Power Management Unit:控制电源域、隔离、保持和唤醒。
- System Controller:芯片模式、Boot Strap、引脚复用、生命周期状态。
3.6 安全与可靠性子系统¶
- Root of Trust、Secure Boot、加解密引擎。
- TrustZone/PMP/Firewall/IOMMU 等隔离机制。
- TRNG、密钥存储、Debug Authentication。
- ECC、Parity、错误记录、故障注入和 RAS。
3.7 调试与可观测性子系统¶
- JTAG/SWD、Debug Port、Cross Trigger。
- 指令/数据 Trace、片上 Trace Buffer。
- Performance Monitor Unit。
- NoC/DDR 带宽计数器和错误监视器。
- Crash 寄存器、Reset Cause、Always-on 日志区。
架构阶段若没有设计可观测性,量产后的偶发问题会非常难定位。
4. IP、Subsystem 与顶层 SoC¶
IP 是可复用的功能模块,例如 UART Controller;Subsystem 是多个 IP 和局部互联形成的功能集合,例如包含 CPU、L2 Cache、GIC 接口和调试单元的 CPU Subsystem;顶层 SoC 负责连接各 Subsystem,并定义全局地址、时钟、复位、电源、安全和中断规则。
典型层级如下:
SoC Top
├── Application Processor Subsystem
│ ├── CPU Cluster
│ ├── Shared Cache
│ └── Local Interrupt/Debug
├── Memory Subsystem
│ ├── DDR Controller
│ └── DDR PHY
├── High-speed I/O Subsystem
│ ├── PCIe Controller
│ ├── USB Controller
│ └── Shared PHY/PLL
├── Peripheral Subsystem
│ ├── APB Bridge
│ ├── UART/SPI/I2C/GPIO
│ └── DMA
└── Always-on Subsystem
├── PMU
├── RTC/Watchdog
└── Boot/Reset Controller
5. 硬件视角与软件视角¶
硬件工程师关注端口、协议、时序、时钟域、复位域、综合约束和状态机;软件工程师看到的是地址、寄存器、中断号、Clock ID、Reset ID、Power Domain ID 和驱动接口。两者通过以下“软硬件契约”连接:
- Register Specification:寄存器偏移、字段、复位值和访问副作用。
- Address Map:每个目标的地址窗口及安全属性。
- Interrupt Map:中断源、编号、触发类型和路由能力。
- Clock/Reset/Power Binding:依赖关系及启停顺序。
- Memory Map/Boot Contract:镜像位置、入口、保留区和传参方式。
- Coherency Contract:设备是否一致、DMA 地址宽度及 Cache 维护责任。
6. 常见 SoC 分类¶
6.1 应用处理器 SoC¶
强调多核 CPU、GPU/NPU、大容量 DDR、高速 I/O 和 Linux/Android 等复杂 OS,通常具备 MMU、硬件 Cache 一致性及多电源域。
6.2 实时控制 SoC¶
强调确定性、快速中断、TCM、锁步核、功能安全和丰富工业接口,可能运行 RTOS 或裸机程序。
6.3 异构 SoC¶
同时包含应用核、实时核和多个加速器。主要难点是资源所有权、跨核通信、共享内存一致性、启动顺序和故障隔离。
6.4 FPGA SoC¶
硬核处理系统与可编程逻辑互联。设计者还需处理逻辑侧地址窗口、AXI 端口、比特流加载、中断聚合和时钟约束。
7. 评价一颗 SoC 的维度¶
- 功能:计算单元、接口和编解码能力是否满足需求。
- 性能:算力、延迟、内存带宽、互联拥塞和实时性。
- 功耗:静态功耗、动态功耗、DVFS、休眠状态和唤醒成本。
- 面积与成本:Die 面积、封装、外部器件和 PCB 复杂度。
- 安全:启动链、隔离、密钥、调试权限和升级机制。
- 可靠性:ECC、故障恢复、温度范围、寿命和安全等级。
- 软件生态:工具链、BSP、驱动、上游支持和文档质量。
- 可调试性:日志、Trace、计数器和故障寄存器是否充分。
8. 初学者常见误区¶
- 把 SoC 等同于 CPU。 CPU 只负责执行指令,许多系统问题来自互联、DDR、时钟或外设。
- 认为地址表只是软件信息。 地址范围实际上对应互联中的译码和路由规则。
- 认为寄存器能读写就表示模块正常。 配置通路可用不代表数据通路、PHY 或 DMA 已工作。
- 认为关闭 Clock 等同于下电。 Clock Gate、Power Gate 和 Reset 是不同控制维度。
- 忽略访问发起者。 CPU 能访问某区域,不表示 DMA、GPU 或安全核也能访问。
- 忽略复位后的默认状态。 安全墙、Pinmux、Clock Gate 和中断屏蔽往往默认关闭功能。