返回博客列表
工具效率··16 分钟阅读

SoC 架构基础学习卡片

从 SoC 定义、片上模块、多核分类、软件部署和核间通信理解芯片级系统架构基础。

下面按“技术学习卡片”帮你梳理。你这段材料的主线其实是:

SoC是什么 → SoC里有什么 → 为什么要多核 → 多核怎么分类 → 多核软件怎么部署 → 核间怎么通信

1. 一句话理解 SoC

SoC,System on Chip,片上系统。

一句话:

SoC = 把一个电子系统需要的核心硬件和软件运行环境,尽量集成到一颗芯片里。

过去一个系统可能需要:

CPU芯片 + DSP芯片 + 存储芯片 + 外设芯片 + 总线 + 板级互连

SoC 的思路是:

把这些关键模块集成到一颗芯片上。

所以 SoC 不是“一个 CPU”,而是:

一个芯片级系统。

2. SoC 和普通 CPU 的区别

对比项CPUSoC
核心作用通用计算完整系统集成
包含内容主要是处理器核和缓存CPU、DSP、NPU、总线、存储控制器、外设、加速器等
关注点计算能力系统级性能、功耗、带宽、外设、协同
典型例子服务器 CPU手机芯片、基站芯片、嵌入式通信芯片

一句话:

CPU 是 SoC 里的一个重要部件,但 SoC 不等于 CPU。

3. SoC 基本构成

一个典型 SoC 通常包括:

通用 CPU
DSP
网络处理器
总线 / NoC
存储系统
系统外设
专用加速器
调试接口

逐个理解。


3.1 通用 CPU

作用:

运行操作系统、控制逻辑、协议栈、高层软件。

适合处理:

复杂控制
分支逻辑
操作系统任务
通用业务流程

例如无线系统里:

RRC、部分MAC控制、系统管理、配置控制

3.2 DSP 处理器

DSP = Digital Signal Processor,数字信号处理器。

作用:

高效处理信号处理类计算。

适合:

滤波
FFT/IFFT
矩阵运算
调制解调
信道估计
均衡

无线通信里 DSP 很常见,因为物理层大量是信号处理。


3.3 网络处理器

作用:

处理报文转发、协议解析、包处理、队列调度等网络相关任务。

适合:

高速报文收发
流表查找
QoS调度
报文分类
协议处理

3.4 总线 / 片上互连

SoC 里模块很多,必须有通信通道。

总线或 NoC 负责:

CPU访问内存
CPU访问外设
加速器读写数据
多个核之间交换信息

你可以把它理解为:

SoC内部的高速公路系统。

如果总线设计不好,就会出现:

算力很强,但数据搬不过来。

这就是典型瓶颈。


3.5 存储系统

包括:

Cache
SRAM
DDR控制器
片上共享内存
DMA

存储系统决定:

数据能不能及时喂给计算单元。

很多芯片性能瓶颈不是算力,而是:

访存带宽
访存延迟
Cache命中率
数据搬移开销

3.6 系统外设

比如:

UART
SPI
I2C
PCIe
Ethernet
GPIO
Timer
DMA
中断控制器

作用是让 SoC 和外部世界交互。


3.7 专用加速器

专用加速器是 SoC 里非常关键的一类模块。

作用:

把某些高频、重计算、固定模式的任务用硬件加速。

例如:

AI加速器
加解密引擎
FEC编码/译码
FFT加速器
包处理加速器
压缩解压缩加速器

优点:

速度快
功耗低
面积可控

缺点:

灵活性差
适用范围窄
软件适配复杂

3.8 调试接口

例如:

JTAG
Trace
性能计数器
日志接口
片上调试模块

作用:

定位软件、硬件、性能、时序问题。

芯片系统复杂后,调试能力非常重要。没有调试能力,SoC 不是不能跑,而是出了问题很难定位。


4. SoC 关键技术

你材料里标题有“SoC关键技术”,但内容没展开。建议你按这几个方向记:

低功耗设计
片上互连设计
存储层次设计
多核协同
硬件加速
软硬件协同
安全与隔离
可调试性

4.1 低功耗设计

SoC 必须控制功耗。

常见技术:

动态电压频率调整 DVFS
时钟门控 Clock Gating
电源门控 Power Gating
多电源域
低功耗状态管理

一句话:

不用的模块少供电,低负载时降频降压。

4.2 片上互连

SoC 模块之间要通信。

简单系统用总线。复杂系统用 NoC。

NoC = Network on Chip,片上网络。

作用:

解决多核、多加速器、多主设备并发访问带来的互连瓶颈。

4.3 存储层次设计

典型层次:

寄存器
L1 Cache
L2 Cache
L3 Cache / 共享缓存
片上 SRAM
DDR
外部存储

越靠近 CPU:

速度越快
容量越小
成本越高

越远离 CPU:

容量越大
速度越慢
延迟越高

4.4 软硬件协同

SoC 不是单纯硬件问题。

关键是:

哪些功能放软件?
哪些功能放硬件?
哪些功能用加速器?
数据怎么搬?
中断怎么触发?
任务怎么调度?

这是架构设计的核心。


5. 为什么从单核走向多核?

你材料里这部分很关键。

不是因为大家天然喜欢多核,而是单核遇到了物理限制。


5.1 功耗限制

频率提升会显著增加功耗。

粗略理解:

频率越高,动态功耗越大。
电压越高,功耗按平方增长。

单核继续堆频率,会带来:

发热大
散热难
能效差
可靠性下降

所以不能一直靠单核提频。


5.2 互连线延迟

芯片越来越大,线越来越长。

问题是:

晶体管变快了,但线延迟没有同比变快。

结果:

数据从芯片一端传到另一端越来越慢。

这限制了超大单核继续扩展。


5.3 设计复杂度

单核想继续提升性能,就要做:

更深流水线
更复杂乱序执行
更大缓存
更复杂分支预测
更多执行单元

复杂度会爆炸。

相比之下,多核更容易扩展:

复制多个相对简单的核,让任务并行执行。

5.4 一句话总结

多核不是单核性能路线的锦上添花,而是单核继续扩展遇到功耗、互连和复杂度瓶颈后的必然选择。

6. 多核架构分类

主要分两类:

同构多核
异构多核

6.1 同构多核

定义:

所有处理器核结构相同。

例如:

4个一样的ARM核
8个一样的CPU核

优点:

编程模型简单
任务迁移方便
软件适配容易
负载均衡容易

缺点:

对不同类型任务的能效不一定最优
专用任务加速能力不足

适合:

通用计算
线程并行
服务器类任务
业务类型相对统一的场景

6.2 异构多核

定义:

SoC 中存在不同类型的处理器核或计算单元。

例如:

CPU + DSP
CPU + NPU
CPU + GPU
CPU + 专用通信加速器

优点:

不同任务放到最适合的计算单元上
性能更高
功耗更低
适合复杂业务

缺点:

编程复杂
代码移植性差
核间通信开销大
调度复杂
调试复杂

通信 SoC 常常是异构多核,因为无线系统里任务类型差异很大:

控制面逻辑适合CPU
信号处理适合DSP
AI推理适合NPU
FEC/FFT适合专用加速器
报文处理适合网络处理器

7. AMP 和 SMP

多核软件部署主要分两类:

AMP:非对称多处理
SMP:对称多处理

7.1 SMP:对称多处理

定义:

一个操作系统统一管理所有 CPU 核。

特点:

所有核地位基本相同
应用不需要固定绑定某个核
操作系统负责调度任务到不同核
核间共享内存和OS资源

优点:

编程简单
资源统一管理
进程线程调度方便
IPC机制成熟

缺点:

对异构核支持有限
实时性控制可能弱一些
OS调度开销存在
核间竞争共享资源

适合:

通用多核CPU
同构多核
Linux多核系统

7.2 AMP:非对称多处理

定义:

每个 CPU 核或核组运行独立操作系统,或者运行同一操作系统的独立实例。

例如:

A核跑Linux
B核跑RTOS
C核跑裸机程序
DSP跑专用任务

优点:

隔离性强
实时性好
适合异构多核
每个核可以做专用任务

缺点:

编程复杂
核间通信需要专门机制
资源管理复杂
调试复杂

适合:

通信SoC
实时系统
CPU + DSP 异构系统
安全隔离场景

7.3 SMP 和 AMP 对比

对比项SMPAMP
OS 数量一个 OS 管所有核多个 OS 或独立运行环境
编程难度较低较高
实时性一般更好
资源管理OS统一管理需要人工规划
核间通信OS IPCIPI、共享内存、硬件队列
适合架构同构多核异构多核

一句话:

SMP 像一个领导管所有人;
AMP 像多个小团队各干各的,需要专门机制协同。

8. 异构多核通信方式

异构多核最大的问题是:

不同核之间怎么通信?

你材料里提到三种:

IPI中断
共享内存
硬件消息队列

8.1 IPI 中断

IPI = Inter-Processor Interrupt,处理器间中断。

作用:

一个处理器主动打断另一个处理器,让它处理某件事。

类比:

A核给B核打电话:你醒一下,有事处理。

特点:

适合通知
不适合传大数据
延迟较低
常和共享内存配合使用

典型流程:

A核把数据写到共享内存
A核发IPI通知B核
B核收到中断
B核去共享内存读取数据

8.2 共享内存

定义:

多个核可以访问同一段内存地址空间。

作用:

传递大量数据
共享状态
核间交换缓冲区

优点:

数据传递效率高
适合大块数据
实现灵活

问题:

需要同步机制
需要考虑Cache一致性
需要避免读写冲突
需要锁/信号量/环形队列

你要特别记住:

共享内存不是“写进去就完事”,还要解决谁写、谁读、什么时候读、Cache是否一致。

8.3 硬件消息队列

硬件消息队列是专门为核间通信设计的硬件机制。

作用:

用硬件完成消息投递、通知、排队、保序、反压等功能。

优点:

比纯软件共享内存更可靠
比单纯IPI能承载更多通信语义
可以支持QoS、保序、溢出、反压

适合:

核间高频消息
报文处理
多核并发任务调度
加速器与CPU协同

9. IPC 邮箱

IPC = Inter-Process Communication,也可以理解为核间消息通信机制。

你材料里提到两类邮箱:

快速邮箱
普通邮箱

9.1 快速邮箱

特点:

目的处理器在硬件连线时固定
不可配置
通过 mailbox 直接上报中断

优点:

路径短
速度快
延迟低

缺点:

灵活性差
目的核固定

适合:

固定核间快速通知
实时性要求高的场景

9.2 普通邮箱

特点:

源处理器和目的处理器都可配置
通过 IPC 上报中断

优点:

灵活
适合多核之间动态通信

缺点:

路径相对复杂
延迟可能略高

10. 邮箱工作模式

你材料里提到两种模式:

自动应答
自动链接

10.1 自动应答模式

核心:

一次消息传递,一个源可以指定多个目的核。
所有目的核都清除了各自中断后,才向源自动发应答中断。

类比:

你发一条通知给多个同事。
只有所有同事都确认收到,系统才告诉你“全部确认完成”。

适合:

一对多广播通知
需要确认所有目的核都收到的场景

10.2 自动链接模式

核心:

多个消息按顺序发给目的核;
当前 mailbox 消息被确认接收后,下一条 mailbox 自动发送;
所有消息都确认后,再向源发应答。

类比:

快递按顺序派送。
第一个签收后,才自动派第二个。
全部签收后,给发件人回执。

适合:

多消息有顺序依赖
需要硬件自动串联发送
减少软件反复触发

11. POE 队列

POE = Packet Order Enforcer,可以理解为一种支持保序的硬件消息/报文队列机制。

它解决的问题是:

多核并发处理时,报文可能乱序。
POE用于保证必要场景下的顺序。

11.1 POE 两种消息类型

报文消息

支持核与核之间、加速器与核之间的报文消息交互。

适合:

报文处理
网络转发
协议处理
加速器协同

核间消息

支持核间自定义消息交互。

适合:

控制消息
任务通知
状态同步
配置下发

11.2 POE 支持 QoS 调度

说明它不仅是 FIFO 队列,还可以根据优先级管理消息。

例如:

高优先级控制消息优先处理
低优先级普通报文后处理

11.3 支持报文保序

多核并发处理报文时,一个流的报文可能被不同核处理。

如果不控制,会出现:

后到的报文先处理完
先到的报文后处理完

这会导致乱序。

POE 的价值是:

既允许多核并发,又尽量保证必要的报文顺序。

11.4 支持消息溢出到 DDR

片上队列容量有限。

如果消息太多,可以溢出到 DDR:

队列满了,不直接丢;
部分消息暂存到DDR。

代价:

DDR访问延迟更高
吞吐和实时性可能下降

11.5 支持中断通知核,也支持 WFE 通知核

中断通知:

消息来了,打断CPU处理。

WFE = Wait For Event。

可以理解为:

核处于等待事件状态;
消息到来后唤醒它。

区别:

中断更强制;
WFE更偏低功耗等待/事件唤醒。

11.6 支持消息反压

反压就是:

下游处理不过来时,通知上游慢一点或暂停发送。

为什么重要?

如果没有反压:

消息越堆越多
队列溢出
丢包
延迟失控
系统雪崩

反压是高吞吐系统里非常关键的稳定机制。


12. 一张图式主线

SoC
├── 处理单元
│   ├── CPU:通用控制
│   ├── DSP:信号处理
│   ├── NPU/GPU:AI/并行计算
│   └── 加速器:专用任务

├── 互连和存储
│   ├── 总线/NoC
│   ├── Cache/SRAM/DDR
│   └── DMA

├── 多核架构
│   ├── 同构多核
│   └── 异构多核

├── 软件部署
│   ├── SMP:一个OS管所有核
│   └── AMP:多个OS/运行环境,各核独立

└── 核间通信
    ├── IPI中断
    ├── 共享内存
    ├── IPC邮箱
    └── POE消息队列

13. 你最容易混的点

13.1 SoC 不是 CPU

SoC 包含 CPU,但还包括很多系统模块。

13.2 多核不是一定同构

通信芯片里异构多核非常常见。

13.3 AMP 和 SMP 的核心区别不是“核多少”

而是:

一个OS统一管理,还是多个运行环境分别管理。

13.4 IPI 不是用来传大数据的

IPI 主要用来通知。

大数据一般走共享内存或硬件队列。

13.5 共享内存不是天然安全

必须考虑:

同步
互斥
Cache一致性
内存屏障
读写顺序

14. 和无线通信系统的关系

SoC 架构和无线基站、终端芯片关系很强。

例如:

CPU:协议栈控制、OAM、调度控制
DSP:PHY信号处理
加速器:LDPC、Polar、FFT、加解密
网络处理器:报文转发、QoS、隧道处理
共享内存:核间数据交换
硬件队列:报文和任务分发
IPI:核间事件通知

无线系统本质是:

实时性强
吞吐大
并行度高
控制逻辑复杂
信号处理密集

所以非常适合异构 SoC。


15. 自测问题

Q1:SoC 和 CPU 的区别是什么?

CPU 是通用处理器,SoC 是把 CPU、DSP、存储、外设、加速器、互连等集成在一颗芯片上的系统。

Q2:为什么单核会向多核演进?

因为单核继续提升频率和复杂度会受到功耗、互连线延迟和设计复杂度限制。

Q3:同构多核和异构多核的区别是什么?

同构多核的核结构一致;异构多核包含不同类型的核,比如 CPU + DSP + 加速器。

Q4:SMP 和 AMP 的区别是什么?

SMP 是一个 OS 管理所有核;AMP 是不同核运行独立 OS 或独立实例,需要专门通信机制。

Q5:IPI 的作用是什么?

一个处理器向另一个处理器发送中断,用于通知事件。

Q6:共享内存的主要风险是什么?

同步、互斥、Cache一致性和读写顺序问题。

Q7:硬件消息队列相比 IPI 的优势是什么?

不仅能通知,还能承载消息、保序、QoS、反压、溢出管理等功能。


16. 一句话总结

SoC 是把一个完整电子系统集成到一颗芯片上。
多核是突破单核功耗、互连和复杂度瓶颈的主流路线。
通信 SoC 通常采用异构多核架构,用 CPU、DSP、加速器分别处理控制、信号处理和专用计算任务。
SMP 偏统一管理,AMP 偏独立运行;异构多核通信依赖 IPI、共享内存、IPC邮箱和硬件消息队列。

你下一步不要泛泛背 SoC 概念,建议抓住这条工程主线:

任务类型 → 放到哪个计算单元 → 数据怎么搬 → 核间怎么通知 → 如何保证实时性和顺序

这才是 SoC 架构真正的学习抓手。

Connect

持续跟踪通信仿真、AI 辅助研发与技术管理

如果你也关注系统仿真、AI for RAN、研发效能和团队管理,欢迎通过邮件交流具体问题和实践经验。

也欢迎围绕仿真平台、AI Coding 落地、技术团队管理等主题交流具体问题和实践经验。

Next Reading

优先推荐标签或分类相关的文章;没有足够相关内容时,补充最新文章。

向福星

无线通信算法工程师,关注系统仿真、AI for RAN、研发效能和技术团队管理。

了解作者