存储技术全解析:从芯片到系统 DRAM、SRAM、HBM、ROM、NOR Flash、NAND Flash、eMMC、UFS

存储技术全解析:从芯片到系统

引言

在计算机和嵌入式系统中,各种存储技术扮演着不同的角色,它们的性能特点和应用场景各不相同。很多人对DRAM、SRAM、HBM、ROM、NOR Flash、NAND Flash、eMMC、UFS 等术语感到困惑,不清楚它们之间的区别和关系,以及哪些是片上存储,哪些是片外存储。本文将系统地解析这些存储技术,并以树莓派和x86个人电脑为例,说明它们在实际系统中的应用。

存储技术分类框架

存储技术可以按照数据保存的持久性分为两大类:

存储技术
│
├─ 易失性存储 (断电数据丢失)
│   ├─ SRAM (静态随机存取存储器)
│   └─ DRAM 家族 (动态随机存取存储器)
│       ├─ 传统DRAM
│       ├─ SDRAM (同步动态随机存取存储器)
│       ├─ DDR SDRAM (双倍数据率SDRAM)
│       │   ├─ DDR1/2/3/4/5
│       │   └─ LPDDR (低功耗DDR)
│       └─ HBM (高带宽内存)
│
└─ 非易失性存储 (断电数据保留)
    ├─ ROM 家族 (只读存储器)
    │   ├─ 掩膜ROM
    │   ├─ PROM (可编程ROM)
    │   ├─ EPROM (可擦除可编程ROM)
    │   └─ EEPROM (电可擦除可编程ROM)
    │
    ├─ Flash 家族
    │   ├─ NOR Flash
    │   └─ NAND Flash
    │
    └─ 新型非易失存储
        ├─ eMMC (嵌入式多媒体卡)
        ├─ SSD (固态硬盘)
        └─ UFS (通用闪存存储)

Flash存储技术详解

Flash存储是一种非易失性存储器,即使断电后也能保留数据。主要分为NOR Flash和NAND Flash两种类型。

NOR Flash与NAND Flash对比

特性NOR FlashNAND Flash
存储单元结构每个单元直接连接到位线和字线单元排列成串联结构
随机访问能力支持(可按字节访问)不支持(按页访问)
读取速度快(50-100ns)中等(25-50μs)
写入速度慢(5-10μs/字节)快(200-300μs/页)
擦除速度很慢(0.5-2s/块)快(1.5-3ms/块)
擦除单位较大块(64KB-128KB)较小块(4KB-16KB)
存储密度
成本/比特
耐久性(擦写次数)10万-100万次1千-10万次
错误率高(需要ECC错误纠正)
坏块管理通常不需要必需
XIP支持支持(可直接执行代码)不支持
典型容量范围几MB-几百MB几GB-几TB
典型应用BIOS/UEFI固件
微控制器程序存储
启动代码
SSD存储介质
SD卡/U盘
大容量数据存储

NOR Flash详解

工作原理
NOR Flash的存储单元直接连接到位线和字线,允许随机访问任何存储单元,类似于RAM的访问方式。

主要特点

  • 支持随机读取,可以按字节访问
  • 读取速度快,适合存储需要直接执行的代码
  • 支持XIP(Execute In Place),程序可以直接从Flash中执行
  • 写入和擦除速度较慢
  • 容量相对较小,成本较高

应用场景

  • 存储启动代码和固件
  • 微控制器内部程序存储
  • BIOS/UEFI芯片
  • 需要随机访问的小容量存储

NAND Flash详解

工作原理
NAND Flash的存储单元排列成串联结构,需要按页读取数据,不支持随机访问单个字节。
SLC MLC TLC QLC

主要特点

  • 高存储密度,适合大容量存储
  • 按页(2KB-16KB)读写,不支持随机字节访问
  • 写入和擦除速度快
  • 需要错误检测与纠正(ECC)和坏块管理
  • 成本较低

应用场景

  • 大容量数据存储
  • SSD(固态硬盘)
  • USB闪存驱动器
  • SD卡和TF卡
  • 智能手机和平板电脑存储

RAM技术详解

RAM(随机存取存储器)是一种易失性存储器,断电后数据会丢失。主要分为SRAM和DRAM两大类。

SRAM(静态随机存取存储器)

工作原理
使用双稳态电路(通常6个晶体管)存储每个位,只要有电源供应,数据就能保持不变。

主要特点

  • 速度极快(2-10纳秒访问时间)
  • 不需要刷新操作维持数据
  • 密度低,功耗高,成本高
  • 集成度低,占用芯片面积大

应用场景

  • CPU缓存(L1/L2/L3 Cache)
  • 微控制器内部的工作内存
  • 高速缓冲区

是否片上:通常集成在CPU/微控制器内部(片上),作为缓存或工作内存

DRAM(动态随机存取存储器)

工作原理
使用一个晶体管和一个电容存储每个位,需要定期刷新以防止数据丢失。

主要特点

  • 密度高,成本低,功耗中等
  • 需要定期刷新(通常每几毫秒)
  • 访问时间较长(50-100纳秒)
  • 集成度高,适合大容量存储

DRAM的主要类型

  1. 传统DRAM:早期的DRAM技术,现已很少使用。

  2. SDRAM(同步动态随机存取存储器)

    • 与系统时钟同步工作
    • 支持突发传输模式,提高吞吐量
    • 访问时间10-20纳秒
  3. DDR SDRAM(双倍数据率SDRAM)

    • 在时钟信号的上升沿和下降沿都传输数据
    • 有多代产品:DDR、DDR2、DDR3、DDR4、DDR5
    • 每代性能提升约一倍
      在这里插入图片描述
  4. LPDDR(低功耗DDR)

    • DDR的低功耗版本,专为移动设备设计,笔记本电脑常见
    • 牺牲部分性能换取更低功耗
    • 有多代产品:LPDDR2、LPDDR3、LPDDR4、LPDDR5

应用场景

  • 系统主内存
  • 图形卡内存
  • 大容量临时存储

是否片上:通常是独立芯片(片外),通过内存总线连接到CPU,以DIMM或SO-DIMM形式安装

HBM(高带宽内存)

HBM是一种革命性的DRAM技术,通过3D堆叠和宽总线接口实现超高带宽,主要用于高性能计算和图形处理应用。

工作原理
HBM将多个DRAM芯片垂直堆叠,并通过硅穿孔(TSV, Through-Silicon Via)技术互连,形成一个紧凑的"内存立方体",然后通过宽接口(通常1024位)与处理器通信。

架构特点

  1. 3D堆叠结构

    • 多个DRAM芯片(通常4-8层)垂直堆叠
    • 使用TSV(硅穿孔)技术进行层间互连
    • 每个堆栈形成一个"内存立方体"(memory cube)
  2. 2.5D封装技术

    • HBM与处理器芯片并排放置在硅中介层(silicon interposer)上
    • 中介层提供高密度互连,替代传统PCB布线
    • 大幅缩短信号路径,降低延迟和功耗
  3. 超宽接口

    • 每个HBM堆栈提供1024位宽接口
    • 相比DDR4的64位宽,带宽提升16倍
    • 工作频率相对较低(2-3.6Gbps),降低功耗

HBM各代技术规格对比

特性HBM1HBM2HBM2EHBM3HBM3E
发布年份20152016201920212023
每引脚带宽1Gbps2Gbps3.6Gbps6.4Gbps9.2Gbps
堆栈层数4层4-8层8-12层8-12层12-16层
每堆栈容量1-4GB2-8GB8-24GB16-32GB24-48GB
每堆栈带宽128GB/s256GB/s460GB/s819GB/s1.2TB/s
多堆栈总带宽512GB/s1TB/s1.84TB/s3.27TB/s4.8TB/s

HBM的优势

  • 超高带宽,远超传统DDR内存
  • 相比GDDR6,相同带宽下功耗低50%以上
  • 紧凑尺寸,节省PCB空间
  • 更低的工作频率,降低电磁干扰

HBM的局限性

  • 成本高,制造复杂
  • 需要特殊的2.5D封装技术
  • 容量扩展性有限
  • 供应链相对受限

应用场景

  • 高端GPU(如NVIDIA H100、AMD Instinct MI300)
  • AI加速器(如Google TPU)
  • 高性能计算(HPC)系统
  • 网络交换设备
  • 高端FPGA

是否片上:通常与处理器同封装但分离芯片,采用2.5D封装技术(硅中介层)

ROM和嵌入式存储技术详解

ROM(只读存储器)

ROM是一种非易失性存储器,主要用于存储固定的程序和数据。

主要类型

  1. 掩膜ROM

    • 内容在制造时固化,不可修改
    • 成本最低,适合大批量生产
  2. PROM(可编程ROM)

    • 可使用编程器写入一次数据,之后不可修改
    • 适合小批量生产
  3. EPROM(可擦除可编程ROM)

    • 可通过紫外线擦除数据,然后重新编程
    • 需要特殊的编程设备
  4. EEPROM(电可擦除可编程ROM)

    • 可电擦除可编程ROM,可按字节修改
    • 擦写次数有限(通常10万次左右)
    • 适合存储需要偶尔修改的配置数据

应用场景

  • 存储引导程序(BIOS/UEFI)
  • 微控制器程序存储
  • 存储固定配置数据

是否片上:可能是片上也可能是片外,取决于系统设计

eMMC(嵌入式多媒体卡)

eMMC是一种集成了NAND Flash和控制器的嵌入式存储解决方案,提供标准接口,简化系统设计。

主要特点

  • 将NAND Flash和控制器集成在一个封装中
  • 控制器处理坏块管理、磨损均衡、错误纠正等
  • 提供标准接口,简化系统设计
  • 容量通常从4GB到256GB不等
  • 性能介于原始NAND Flash和SSD之间

应用场景

  • 智能手机和平板电脑的主存储
  • 低端笔记本电脑
  • 嵌入式系统和单板计算机(如某些树莓派型号)

是否片上:片外,通常直接焊接在主板上

UFS(通用闪存存储)

UFS是一种高性能嵌入式存储标准,旨在替代eMMC,为移动设备提供更高性能和更低功耗。

工作原理
UFS基于SCSI架构,采用全双工通信和MIPI M-PHY物理层接口,支持命令队列和并发操作。

架构特点

  1. SCSI命令集

    • 采用成熟的SCSI命令协议
    • 支持复杂的命令队列和优先级管理
    • 兼容现有软件生态系统
  2. 全双工通信

    • 两条独立的单向数据通道
    • 同时支持读写操作
    • 显著提高并发性能
  3. MIPI UniPro协议栈

    • 采用分层协议架构
    • 提供可靠的数据传输和错误恢复
    • 支持服务质量(QoS)管理
  4. MIPI M-PHY物理层

    • 高速、低功耗的串行接口
    • 支持多种速率档位
    • 先进的电源管理功能

UFS各代技术规格对比

特性UFS 2.1UFS 3.0UFS 3.1UFS 4.0
发布年份2015201820202022
每通道速率600MB/s1450MB/s1450MB/s2100MB/s
总理论带宽1.2GB/s2.9GB/s2.9GB/s4.2GB/s
通道数2(全双工)2(全双工)2(全双工)2(全双工)
特殊功能基本功能深度休眠WriteBooster
性能调节
原子写入
更低功耗
更高可靠性
相对功耗基准-30%-30%-46%

UFS相比eMMC的优势

特性UFS 3.1eMMC 5.1
最大带宽2.9 GB/s400 MB/s
通信方式全双工半双工
命令处理多命令队列单命令处理
接口类型差分串行并行
功耗效率

应用场景

  • 高端智能手机
  • 平板电脑
  • 增强现实/虚拟现实设备
  • 汽车信息娱乐系统
  • 高性能嵌入式系统

片上与片外存储

片上存储(On-chip)

片上存储是指集成在处理器芯片内部的存储器,如:

  • SRAM:用于CPU缓存(L1/L2/L3)
  • 小容量ROM:用于存储启动代码
  • 微控制器内部Flash:用于存储程序代码

特点

  • 访问速度极快(直接通过片内总线)
  • 容量有限(受芯片面积限制)
  • 成本高(增加芯片复杂度)
  • 功耗低(无需外部接口)

片外存储(Off-chip)

片外存储是指与处理器芯片分离的独立存储设备,如:

  • DRAM:系统主内存
  • SSD/HDD:大容量存储
  • 外部Flash:扩展存储
  • HBM:虽然与处理器封装在一起,但仍是独立芯片

特点

  • 访问速度较慢(需要通过外部总线)
  • 容量大(不受处理器芯片面积限制)
  • 成本相对较低
  • 功耗较高(需要外部接口)

实际系统中的存储架构

树莓派存储架构

以树莓派4B为例:

片上(SoC内部)存储
  1. L1缓存

    • 类型:SRAM
    • 容量:32KB指令缓存 + 32KB数据缓存(每个核心)
    • 用途:最快速的CPU数据访问
  2. L2缓存

    • 类型:SRAM
    • 容量:1MB(共享)
    • 用途:二级CPU缓存
  3. ROM

    • 类型:掩膜ROM
    • 容量:几KB
    • 用途:存储初始引导代码
片外存储
  1. 主内存

    • 类型:LPDDR4 SDRAM
    • 容量:1GB/2GB/4GB/8GB(取决于型号)
    • 用途:操作系统和应用程序的运行内存
  2. 启动/系统存储

    • 类型:microSD卡(基于NAND Flash)
    • 容量:通常8GB-128GB(用户选择)
    • 用途:存储操作系统、应用程序和用户数据
  3. 可选扩展存储

    • 类型:USB外接硬盘/SSD
    • 容量:取决于外接设备
    • 用途:额外数据存储
树莓派启动流程
  1. SoC上电后,执行片上ROM中的代码
  2. ROM代码初始化基本硬件并从SD卡加载第一阶段引导加载程序
  3. 引导加载程序初始化SDRAM并加载操作系统内核
  4. 操作系统加载到SDRAM并开始执行
  5. 操作系统从SD卡加载其他组件和应用程序

x86个人电脑存储架构

现代x86个人电脑拥有更复杂的存储层次结构:

片上(CPU内部)存储
  1. L1缓存

    • 类型:SRAM
    • 容量:通常32KB-64KB指令缓存 + 32KB-64KB数据缓存(每个核心)
    • 用途:最快速的CPU数据访问
  2. L2缓存

    • 类型:SRAM
    • 容量:通常256KB-1MB(每个核心)
    • 用途:二级CPU缓存
  3. L3缓存

    • 类型:SRAM
    • 容量:通常4MB-64MB(所有核心共享)
    • 用途:三级CPU缓存
片外存储
  1. 主内存

    • 类型:DDR4 SDRAM(现代系统)
    • 容量:通常8GB-64GB
    • 用途:操作系统和应用程序的运行内存
    • 接口:DIMM插槽
  2. BIOS/UEFI存储

    • 类型:NOR Flash
    • 容量:通常8MB-32MB
    • 用途:存储系统固件(BIOS/UEFI)
    • 位置:主板上
  3. 主存储

    • 类型:SSD(基于NAND Flash)或HDD(机械硬盘)
    • 容量:SSD通常256GB-2TB,HDD通常1TB-8TB
    • 用途:存储操作系统、应用程序和用户数据
    • 接口:SATA、PCIe或M.2
x86 PC启动流程
  1. 系统上电后,CPU执行位于固定地址的指令,访问BIOS/UEFI(NOR Flash)
  2. BIOS/UEFI初始化基本硬件并识别启动设备
  3. 从启动设备(通常是SSD)加载操作系统引导加载程序
  4. 引导加载程序加载操作系统内核到主内存(DRAM)
  5. 操作系统接管控制权,初始化其他组件
  6. 应用程序从SSD加载到DRAM并执行

存储技术对比表

存储类型易失性典型访问时间密度成本功耗主要应用通常位置
SRAM易失2-10ns非常低非常高中-高CPU缓存片上
DRAM易失50-100ns主内存片外
SDRAM易失10-20ns主内存片外
DDR SDRAM易失5-15ns中-高中-高现代主内存片外
ROM非易失50-150ns非常低固件存储片上/片外
EEPROM非易失200-300ns中-高配置数据片上/片外
NOR Flash非易失读:50-100ns
写:5-10μs
擦:0.5-2s
低-中中-高代码存储片上/片外
NAND Flash非易失读:25-50μs
写:200-300μs
擦:1.5-3ms
大容量存储片外

常见问题解答

问:为什么有些存储是片上而有些是片外?

答:这主要取决于性能需求、成本和物理限制:

  • 片上存储提供最快的访问速度,但容量受限且成本高
  • 片外存储可提供更大容量,成本更低,但访问速度较慢
  • 高性能部件需要最快速的访问(如CPU缓存),必须集成在芯片内
  • 大容量存储由于物理尺寸限制无法集成在处理器芯片上

问:为什么需要这么多不同类型的存储?

答:计算机系统使用多层次存储架构来平衡性能、容量和成本:

  • 越靠近CPU的存储越快但容量小且昂贵(如SRAM缓存)
  • 越远离CPU的存储越慢但容量大且便宜(如硬盘/SSD)
  • 不同应用场景需要不同的性能和容量特性
  • 通过组合使用这些技术,系统可以在性能和成本之间取得最佳平衡

问:Flash存储器会"磨损"是什么意思?

答:Flash存储单元有有限的擦写寿命:

  • 每个存储单元在被擦除后会轻微退化
  • 达到擦写次数上限后(NAND约1千-10万次,NOR约10万-100万次),单元可能无法可靠存储数据
  • 这就是所谓的"磨损"
  • 现代Flash存储设备使用"磨损均衡"技术,确保所有存储单元均匀使用,延长整体寿命

问:HBM和普通DRAM有什么根本区别?

答:HBM和普通DRAM使用相同的基础存储单元技术,但在架构和接口上有根本区别:

  • HBM采用3D堆叠结构,通过TSV实现层间互连
  • HBM使用超宽数据总线(1024位),而DDR SDRAM使用64位总线
  • HBM与处理器通过硅中介层紧密集成,缩短信号路径
  • HBM针对带宽优化,而非延迟,工作频率实际低于DDR SDRAM

总结

存储技术是一个复杂而多样化的领域,不同类型的存储技术各有优缺点和适用场景:

  • NOR Flash:适合存储需要直接执行的代码,如BIOS和微控制器程序
  • NAND Flash:适合大容量数据存储,是SSD、SD卡和U盘的基础
  • SRAM:速度极快但容量小,主要用于CPU缓存
  • DRAM:容量大但需要刷新,是系统主内存的主要选择
  • ROM:用于存储固定的程序和数据,如启动代码
  • eMMC:集成了NAND Flash和控制器,适合嵌入式系统的主存储
  • SSD:集成了NAND Flash和控制器,是现代计算机的主存储设备,提供高性能和大容量
  • UFS:提供高性能和低延迟,是eMMC的升级版
  • HBM:用于高性能计算和图形处理,提供极高带宽
### STM32微控制器中FLASH存储器的结构与用途 #### 主存储器 主存储器是用于存储用户程序代码的区域,通常占据FLASH的主要部分。这部分主要用于存放应用程序,其容量由具体芯片型号决定,例如256K FLASH或512K FLASH表示的就是该区域的大小[^1]。 #### 启动程序代码(系统存储区) 系统存储区是一个用户不可访问的区域,在芯片出厂时已固化了启动代码。此区域负责实现诸如串口、USB以及CAN等ISP烧录功能,确保设备能够正常初始化并运行必要的通信协议。 #### 用户选择字节(选项字节) 选项字节位于特定位置,共有16字节的空间,用来配置各种特性如FLASH的读写保护、待机/停机复位机制、软件或硬件看门狗等功能。通过修改相应的寄存器可以调整这些设置。 #### 掉电后的数据保持能力 FLASH是一种即使在电源断开之后仍然能够保留所储存信息类型的非易失性存储介质之一。除了应用于STM32这样的嵌入式系统外,在其他领域也有广泛应用,比如EEPROMNOR FLASHNAND FLASHeMMC等形式都属于此类别,并且各自有着不同的应用场景和技术特点[^2]。 #### 非易失性存储器概述 作为一类重要的非易失性存储解决方案,FLASH不仅限于上述提到的应用场景;更广泛地说,任何基于持久化记忆需求的地方都可以见到它的身影——无论是传统的ROM还是现代的固态驱动器(SSD),甚至是早期的技术产品像光盘、软盘乃至机械硬盘都是为了满足相似的需求而存在,尽管它们的具体工作原理有所区别[^3]。 ```python # 示例:如何查询STM32 Flash属性 (伪代码) def get_flash_properties(): flash_size = read_register("FLASH_SIZE_REG") # 假设有一个函数可以从指定寄存器获取flash大小 protection_status = check_protection_bits() # 获取当前flash保护状态 return { 'size': flash_size, 'protected': protection_status } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值