嵌入式芯片 SRAM / PSRAM 与手机 DDR / eMMC 全面对比分析
本文以 BK7258(Cortex-M33 三核 AIoT 芯片)和 ATS308X(Cortex-M55 穿戴芯片)为嵌入式代表,以骁龙 / 天玑 / A 系列为手机平台代表,从技术原理、性能参数、软件可见性和测试影响四个维度,系统对比两类存储方案。
一、总体架构对比
| 对比维度 | 嵌入式芯片(BK7258 / ATS308X) | 手机平台 |
|---|---|---|
| 运行内存 | SRAM(片内静态 RAM)+ PSRAM(外挂伪静态 RAM) | DDR LPDDR(动态 RAM) |
| 非易失存储 | Flash(NOR Flash)+ SD NAND | eMMC / UFS |
| 运行内存容量 | SRAM: 640KB ~ 992KB;PSRAM: 8~64MB | 4GB ~ 16GB LPDDR |
| 非易失存储容量 | Flash: 16~20MB;SD NAND: 512MB | 64GB ~ 1TB |
| CPU 架构 | Cortex-M33 / M55(MCU 级,240~480MHz) | Cortex-A 系列(AP 级,1~3GHz) |
| 操作系统 | RTOS / 裸机 | Android / iOS(Linux 内核) |
| 功耗 | 极低(可 μA 级休眠) | 高(需主动散热) |
架构示意图
【嵌入式 BK7258 架构】
┌─────────────────────────────┐
│ BK7258 SoC │
│ ┌─────────────┐ │
│ │ SRAM 640KB │ ← 中断栈/主栈/驱动 (最快, 裸机可独立运行)
│ │ Cortex-M33 │ │
│ └─────────────┘ │
│ Flash 16MB (XIP执行固件) │
└──────┬──────────┬───────────┘
│ │
PSRAM 16MB SD NAND 512MB
(代码/堆/缓冲) (音频/资源文件)
【手机平台架构】
┌──────────────────────────────┐
│ Snapdragon SoC │
│ Cortex-A (1~3GHz) │
│ GPU / DSP / NPU │
└──────┬──────────┬────────────┘
│ │
LPDDR 8GB eMMC/UFS 256GB
(OS+多任务) (系统+App+媒体)
二、SRAM vs DDR --- 运行内存对比
2.1 SRAM(静态随机存储器)
SRAM 是直接集成在芯片内部的高速存储,不需要刷新,访问延迟极低。
- BK7258:内置 640KB SRAM
- ATS308X:内置 992KB SRAM,分为多个 64KB 的 bank(ram0~ram16),用于中断栈、主栈、空闲栈、DE 驱动、JPEG 临时缓冲、UI 栈、日志缓冲等
- 特点 :
- ✅ 延迟最低(CPU 直接访问,1~2 个时钟周期)
- ✅ 不需要刷新,功耗极低
- ✅ 裸机状态下可独立运行算法(关闭 PSRAM 和 CorePLL,仅用 RC64M 时钟,功耗最优)
- ❌ 容量极小(KB 级),无法运行大代码
- ❌ 成本高,芯片面积大
2.2 PSRAM(伪静态随机存储器)
PSRAM 是外挂在芯片外面的大容量 RAM,内部本质是 DRAM 但集成了刷新控制器,对外接口像 SRAM。
- BK7258:外挂 16MB PSRAM
- ATS308X:支持 8MB / 16MB / 32MB / 64MB PSRAM(不同型号配置不同)
- 用途:存放函数代码(ER_RAMFUNC)、data 段、BSS 段、system_heap、音频/视频缓冲、UI 显示缓冲等
- 特点 :
- ✅ 容量比 SRAM 大很多(MB 级),可运行 OS + UI + 音视频
- ✅ 接口简单(无需复杂 DDR 控制器)
- ❌ 速度比 SRAM 慢,需要通过 cache 访问(cache line 32 bytes)
- ❌ 功耗比 SRAM 高(PSRAM 时钟依赖 CorePLL,两者功耗较大)
- ❌ 裸机低功耗模式下无法访问 PSRAM(OS 下变量默认在 PSRAM 中)
2.3 手机 DDR / LPDDR
- 容量:4~16GB,是嵌入式 PSRAM 的 250~1000 倍
- 带宽:LPDDR5 可达 6.4GB/s+,PSRAM 通常仅几百 MB/s
- 特点 :
- ✅ 超大容量,支持多任务、大型应用、GPU 渲染
- ✅ 高带宽,支持 1080p/2K 屏幕渲染、AI 推理
- ❌ 需要复杂 DDR 控制器 + PMIC 配合
- ❌ 功耗高(即使 LPDDR 也远超 PSRAM)
- ❌ 无法做 μA 级休眠
2.4 关键差异一览
容量: SRAM (640KB) < PSRAM (16MB) < LPDDR (8GB)
≈ 0.00008GB ≈ 0.016GB ≈ 8GB
速度: SRAM > PSRAM (via cache) > LPDDR (via DDR controller)
延迟: SRAM (1-2 cycle) < PSRAM (cache hit ~10 cycle) < LPDDR (~50-100 cycle)
功耗: SRAM (最低) < PSRAM (中) < LPDDR (最高)
三、Flash + SD NAND vs eMMC --- 非易失存储对比
3.1 NOR Flash(嵌入式)
- BK7258:16MB Flash
- ATS308X:SiP 封装 20MB Flash
- 用途:存储固件代码、配置文件、OTA 镜像
- 特点:支持 XIP(片上执行),读取速度快,但容量小(MB 级),写入慢
3.2 SD NAND(嵌入式)
- BK7258:512MB SD NAND(CSNP4GCR01-BPW)
- 用途:存储音频文件、表情包资源、日志等大文件
- 特点:容量比 Flash 大,比 eMMC 小,接口简单(SD 协议)
3.3 手机 eMMC / UFS
- 容量:64GB ~ 1TB,是 SD NAND 的 128~2000 倍
- 特点 :
- ✅ 超大容量,存储整个 OS + Apps + 媒体文件
- ✅ UFS 支持全双工串行读写,速度远超 SD NAND
- ❌ 封装面积大,功耗高
- ❌ 不支持 XIP
四、SRAM 和 PSRAM 能等视为手机 DDR 吗?
4.1 功能角色:可以类比为 DDR
| 嵌入式芯片 | 手机平台 | 角色对应 |
|---|---|---|
| SRAM(片内) | DDR 的一部分(内核紧密耦合内存 TCM) | 最快访问的运行内存 |
| PSRAM(外挂) | DDR 的主体(应用代码/堆/缓冲) | OS 代码、堆、显示缓冲等 |
| Flash + SD NAND | eMMC / UFS | 非易失存储(固件/资源文件) |
从"芯片运行时把代码和数据放在哪里"这个角度看,PSRAM 确实相当于手机 DDR 的角色------OS 镜像加载到 PSRAM 执行,堆分配在 PSRAM,音视频/显示缓冲也在 PSRAM。
4.2 技术原理:本质不同
| 维度 | SRAM | PSRAM | DDR / LPDDR |
|---|---|---|---|
| 底层原理 | 静态 RAM(触发器存储,无需刷新) | 伪静态 RAM(内部是 DRAM,集成了刷新控制器,对外接口像 SRAM) | 动态 RAM(需外部 DDR 控制器持续刷新) |
| 是否需要刷新 | 否 | 内部自动刷新(对外透明) | 需 DDR 控制器主动刷新 |
| 接口复杂度 | 最简单(直接总线访问) | 简单(类似 SRAM 接口) | 复杂(需 DDR PHY + 控制器 + 训练) |
| 集成方式 | 片内集成 | 芯片外挂 | 芯片外挂(PoP 或板级) |
关键区别 :PSRAM 虽然内部本质是 DRAM,但它把刷新逻辑封装在芯片内部,CPU 像访问 SRAM 一样直接读写,不需要复杂的 DDR 控制器。这是 PSRAM 与 DDR 最本质的技术差异。
4.3 性能与容量:不在同一量级
| 维度 | SRAM(BK7258) | PSRAM(BK7258) | 手机 LPDDR |
|---|---|---|---|
| 容量 | 640 KB | 16 MB | 4~16 GB |
| 与 DDR 倍数 | ≈ DDR 8GB 的万分之一 | ≈ DDR 8GB 的 1/500 | --- |
| 带宽 | 最高(CPU 直连) | 中等(需 cache 中转) | 最高(LPDDR5 可达 6.4GB/s+) |
| 访问延迟 | 最低(1~2 cycle) | 中等(cache miss 时显著增加) | 较高(但带宽大,整体吞吐高) |
4.4 软件可见性:最大差异
| 维度 | SRAM | PSRAM | DDR |
|---|---|---|---|
| 软件分配控制 | 需链接脚本精确指定哪个变量/栈放 SRAM | OS 下变量默认在 PSRAM | 操作系统统一管理,应用无感知 |
| 裸机可用性 | ✅ 裸机可直接运行 | ❌ 裸机无法访问(依赖 CorePLL 时钟) | --- 手机无裸机概念 |
| Cache 管理 | 不需要(CPU 直连) | 需要(DMA2D 与 CPU 共享时需手动 cache clean/invalidate) | 硬件一致性协议自动处理 |
| 低功耗控制 | 可独立关闭 PSRAM + CorePLL,仅用 SRAM 跑算法(功耗最优) | 关闭后不可访问 | 无法完全关闭 |
4.5 结论
| 问题 | 答案 |
|---|---|
| SRAM 可以等视为 DDR 吗? | ❌ 不可以。SRAM 是片内高速存储,角色更像 CPU 的 L1 Cache / TCM,容量太小(KB 级),不承担"主存"角色 |
| PSRAM 可以等视为 DDR 吗? | ⚠️ 功能上可以类比(都是主运行内存),但技术原理不同(PSRAM 内置刷新,无需 DDR 控制器),且容量差 500 倍,软件需手动管理 cache |
| 两者合在一起等视为 DDR 吗? | ⚠️ 接近,但仍不能等视。SRAM+PSRAM 一起承担了 DDR 的角色,但 SRAM 更像 cache/TCM,PSRAM 才是真正对应 DDR 主存的部分,且两者在功耗管理、裸机可用性、cache 管理上与 DDR 有本质差异 |
一句话总结:PSRAM 在功能上最接近手机 DDR,但两者在技术原理、容量量级和软件管理复杂度上完全不在同一层面,不能简单等视。
五、手机中有类似 SRAM 的片内存储吗?
5.1 手机 SoC 中对应 SRAM 的片内存储
手机 SoC(如骁龙、天玑、A 系列)内部有多层片内存储,它们在功能角色上与 BK7258 的 SRAM 高度对应:
| 嵌入式芯片(BK7258) | 手机 SoC 对应物 | 功能角色对应 |
|---|---|---|
| SRAM(640KB):中断栈、主栈、idle 栈、DE 驱动、JPEG 临时缓冲、UI 栈、日志缓冲等 | L1 I-Cache / D-Cache(每核 32~128KB) | 最快访问的片内存储,存放中断栈、热点代码/数据 |
| SRAM 中专用区域(如 share ram 给 BT 使用) | SoC 内部 SRAM / TCM(几百 KB~几 MB) | SoC 集成的专用 SRAM,给特定硬件模块(modem、DSP、安全子系统)独占使用 |
| SRAM 中 lvgl_heap、vglite_heap | L2 Cache(256KB~1MB+,多核共享) | 第二层高速缓存,GPU/DMA 等硬件模块共享 |
| PSRAM(16MB):OS 代码、堆、UI 缓冲、显示缓冲 | LPDDR(4~16GB) | 主运行内存 |
5.2 为什么说功能对应但不可等视
SRAM 在嵌入式芯片中是"主存"的一部分
在 BK7258 / ATS308X 这类 MCU 上,SRAM 是软件直接可见、可分配的主存:
- 链接脚本精确指定每个变量放在哪个 SRAM bank(如 ram3 放中断栈 2K、ram4 放主栈 1.5K、ram5 放 idle 栈 4K、ram6 放 DE 驱动 6K 等)
- 裸机低功耗模式下,关闭 CorePLL 和 PSRAM 后,仅靠 SRAM 就能独立运行算法
- 裸机使用的变量需加
__act_s2_sleep_data修饰符链接到 SRAM,调用的函数需加sleepfunc链接到 SRAM
手机 SoC 的 L1 Cache / TCM 对软件不可见
手机 SoC 的 L1/L2 Cache 由硬件自动管理 ,应用软件无法直接分配变量到 L1 Cache:
- Cache 行的内容由硬件预取和替换算法自动决定
- 操作系统和应用看到的内存地址空间是统一的 DDR 空间
- 只有内核驱动(如安全子系统、modem 固件)才能使用 SoC 内部 SRAM / TCM,且通常由厂商预分配
SoC 内部专用 SRAM 确实存在
手机 SoC 内部确实集成有专用 SRAM,但用途完全不同:
| 手机 SoC 内部 SRAM | 用途 | 软件可见性 |
|---|---|---|
| Modem SRAM | 蜂窝 modem 固件运行 | 仅 modem 子系统可见 |
| DSP SRAM | 音频 DSP / HiFi DSP 代码和数据 | 仅 DSP 可见 |
| 安全子系统 SRAM | TrustZone / Secure Boot | 仅安全世界可见 |
| GPU 注册表 SRAM | GPU 内部寄存器和 tile buffer | 仅 GPU 可见 |
这些 SRAM 的角色与 BK7258 中 SRAM 的 share ram(BT 8K + media 24K)或 DSP 占用区域完全对应------都是特定硬件模块独占的片内存储。
5.3 总结对比
| 维度 | 嵌入式 SRAM(BK7258) | 手机 SoC 片内存储 |
|---|---|---|
| 是否存在 | ✅ 是(640KB) | ✅ 是(L1 Cache + SoC 内部 SRAM) |
| 功能对应 | 中断栈、主栈、驱动、缓冲 | L1 Cache 承担热数据,SoC SRAM 给特定模块 |
| 软件可分配 | ✅ 链接脚本直接指定变量到 SRAM | ❌ 应用不可直接分配(L1 自动管理) |
| 裸机可用 | ✅ 关闭 PSRAM 后仅 SRAM 可用 | 无裸机概念 |
| 容量 | 640KB ~ 992KB | L1: 32~128KB/核;SoC SRAM: 几百 KB~几 MB |
| 低功耗独立运行 | ✅ 关 CorePLL + PSRAM,仅 SRAM 跑算法 | ❌ 无法关闭 DDR 独立运行 |
一句话总结 :手机 SoC 内部确实有类似 SRAM 的片内存储(L1 Cache、SoC 专用 SRAM),功能角色对应。但关键差异在于------嵌入式芯片的 SRAM 是软件可直接分配、可在裸机低功耗模式下独立运行的主存;而手机 SoC 的片内存储对应用软件基本不可见,由硬件自动管理或仅特定子系统使用。
六、对测试的影响
| 测试场景 | 嵌入式(SRAM/PSRAM) | 手机(DDR/eMMC) |
|---|---|---|
| 内存泄漏 | PSRAM 仅 16MB,泄漏几十 KB 就可能 OOM;需长运 7×24h 监控内存增幅 ≤10% | DDR 8GB,容忍度高得多 |
| Cache 一致性 | PSRAM 通过 cache 访问,DMA2D 和 CPU 同时访问需手动 cache clean/invalidate | DDR 有硬件一致性协议(CCI/DSU),软件无需手动管理 |
| 功耗测试 | SRAM 可独立低功耗运行(关 PSRAM 省 CorePLL 功耗) | DDR 无法完全关闭,功耗基线高 |
| 存储读写 | Flash 写入慢且有寿命限制,OTA 需断电保护 | eMMC 有 F2FS 磨损均衡,断电恢复更完善 |
| 裸机 vs OS | 裸机模式不能访问 PSRAM,算法只能用 SRAM | 手机无裸机概念 |
| Coredump | 需 dump SRAM + PSRAM 区域(地址范围 imageram_start ~ imageram_end) | 完整 DDR dump,容量大 |
对测试工程师而言 :嵌入式平台最大的挑战在于内存资源极度受限下的稳定性和 cache 一致性,这是手机测试中几乎不会遇到的问题。PSRAM 仅 16MB 的容量意味着内存泄漏的容忍度极低,长运测试中的内存监控是必测项;而 cache 一致性问题(CPU 与 DMA2D 共享 PSRAM 区域时)是真实存在的 bug 来源,需要专项覆盖。
本文基于 BK7258(Beken)和 ATS308X(Actions Semiconductor)嵌入式芯片平台资料整理,与手机平台(骁龙 / 天玑 / Apple A 系列)公开规格进行对比分析。