核心存储

核心存储介质对比

介质 英文全称 (Full Name) 类型/用途 速度/延迟 成本/密度
SRAM Static Random Access Memory 1;;缓存 (L1/L2/L3 CPU 缓存) 1;;最快 <1-20ns 1;;最高(密度最低,功耗高)
DRAM (RAM) Dynamic Random Access Memory 1;;主内存 (电脑内存条) 1;;极快 50~100ns 1;;(密度高,刷新周期耗电)
NAND Flash NAND Flash Memory 1;;非易失性存储 (SSD, U 盘, 手机存储) 1;; 20~100μs 1;;(密度最高,每位成本最低)
NOR Flash NOR Flash Memory 1;;代码存储 (BIOS, 固件, 小容量嵌入式) 1;;中等(可随机访问) 1;;中等(读快,擦写慢)

SRAM vs DRAM 存储特性对比表

维度 SRAM (以存储“中”字第一字节 0xE4 为例) DRAM (以存储“中”字第一字节 0xE4 为例)
微观结构 1;;6T (1;;6个晶体管):构成双稳态触发器。 1;;1T1;;1C (1;;11;;1电容):利用电荷存储。
存储原理 1;;正反馈锁存:电流将电路顶向“1”或“0”端,像1;;跷跷板 1;;电荷充放电:电容有电为“1”,无电为“0”,像1;;漏水的杯子。
读写速度 1;;极快:寻址后直接改变触发器状态,无电荷移动延迟。 1;;较慢:需经过电荷1;;感测1;;放大,读后还需1;;重写
功耗特性 1;;静态低功耗:只要不切换状态,维持电流极小。 1;;动态高功耗:由于电容漏电,必须每 1;;64ms 强制刷新。
存储密度 1;;低:6 个管子存 1 位,芯片面积大,容量难做高。 1;;极高:1 管 1 电容存 1 位,可堆叠百亿个单元。

存储“中”字时的功耗差异 (Power Dynamics)

笔记要点:DRAM 的功耗与容量成正比,而 SRAM 的功耗主要发生在开关瞬间。

电路复杂度与布线 (Circuit Complexity)

数据一致性:为什么 SRAM 才是真正的“随机存取”?

在存储“中”字时:

总结

SRAM

DRAM / RAM

NAND Flash Memory

NOR Flash Memory (补充)

内存为什么比硬盘快?

内存(RAM)比固态硬盘(SSD)快的最根本原因在于它们所采用的1;;半导体技术原理和1;;存取机制的本质不同。

内存:DRAM (Dynamic Random-Access Memory)

内存条采用的是 1;;DRAM (动态随机存取存储器) 技术。

固态硬盘:NAND Flash

固态硬盘的核心存储介质是 1;;NAND Flash 芯片。

内存的原理

物理形态与层级 (Hierarchy)

内存并非单一整体,而是严密的层级结构:

存储单元 (Memory Cell)

核心操作流程

  1. Activate (激活): 打开特定的 Row(行),将数据读入 Row Buffer。
  2. Read/Write (读写): 在 Row Buffer 中根据 Column(列)地址存取。
  3. Precharge (预充电): 关闭当前行,清除位线电荷,准备下一次激活。

关键性能指标 (Timing/Latency)

这些参数通常决定了内存的“体质”:

关键技术名词

常见状态判定

Bank

定义与层级

Bank 是内存颗粒(Die)内部最小的独立操作单元。

容量计算公式

一个 Bank 的容量由存储阵列的行列数决定:

Bank 容量 = 行数 (Rows) × 列数 (Columns) × 位宽 (Bit Width)

实例:三星/美光 8Gb DDR4 x8 颗粒
参数层级 逻辑数值 物理意义
行数 (Row Address) 216=65,536 16 位行地址线
列数 (Col Address) 210=1,024 10 位列地址线
颗粒位宽 (Width) x8 (8-bit) 每个存储单元存储 8 位数据
Bank 组织 4 Bank Groups × 4 Banks DDR4 标准的 16 个 Bank
计算过程:
  1. 单 Bank 容量: 65,536×1,024×8=536,870,912 bits=64MB
  2. 颗粒总容量: 64MB×16 (Banks)=1,024MB=8Gb

Bank 参数

规格类型 行数 (Rows) 列数 (Cols) 位宽 (Bit Width) Bank 数量 Bank Group 预取 (Prefetch) 电压 (V) 单通道宽度 核心技术特性
DDR3 214216 1024 8 8 8n 1.5 / 1.35 64-bit 引入 ASR (自适应刷新)
DDR4 215218 1024 8 16 4 8n 1.2 64-bit 引入 Bank Group
DDR5 216218 1024 8 32 8 16n 1.1 32-bit x2 On-die ECC / PODL 信号
DDR6 (草案) 217 1024 8 32 ~ 64 8 ~ 16 32n/64n < 1.1 16-bit x4 PAM4 调制 / 双边采样
LPDDR5/X 216217 1024* 8 8 / 16 BG Mode 16n/32n 1.1 / 1.05 16-bit x2 WCK 差分时钟 / 动态频率

关键特性

内存寻址与位宽逻辑

计算机是怎样跑起来的#存储容量:CPU 寻址能力 vs 内存芯片容量
计算机是怎样跑起来的#存储器容量与引脚关系
计算机是怎样跑起来的#存储实例:将“中”字写入 TC5517 (SRAM)

物理层:1T1C 与存储单元

系统层:多颗粒并联 (Rank)

为了满足 CPU 64-bit 总线需求,内存条采用多颗粒并行工作的模式:

规格对比:x8 vs x16 颗粒

规格 颗粒寻址单位 组成 64-bit 所需颗粒 笔记要点
x8 8 Bits (1B) 8 个 并行度高,性能好,主流台式机常用。
x16 16 Bits (2B) 4 个 集成度高,成本低,多用于笔记本/嵌入式。

公式:地址线与容量关系

地址线的数量决定了寻址空间的上限:

从电荷到字符:DRAM 物理寻址与位宽并联深度解构 —— 以存储汉字“中”为例

要代表 DRAM 的真实物理场景,最经典且具代表性的芯片莫过于 MT41K512M8 (DDR3L 4Gb x8 颗粒)。与 SRAM 不同,DRAM 引入了 Bank 的逻辑分层,寻址过程涉及“行有效”与“列读写”的分时复用。
以下是 DRAM 颗粒存储“中”字首字节 0xE4 (1110 0100) 的真实物理映射场景:

1. DRAM 真实的寻址位分配与“位宽深度”

在 DRAM 中,地址线是复用的。为了减少引脚数量,CPU 先发送行地址再发送列地址

地址类型 地址引脚 物理含义 数量
Bank Address BA0 ~ BA2 选通 8 个独立的存储矩阵 (Banks) 8 Banks
Row Address A0 ~ A15 选通对应的 Wordline 216=65,536
Column Address A0 ~ A9 选通对应的 Bitlines 210=1,024
数据位宽 (Z轴) DQ0 ~ DQ7 8 位并行数据接口 8 Bits/Byte
物理场景结论: 当 CPU 访问逻辑地址 1 (假设处于 Bank 0) 时:

💡注意:这 8 个晶体管全部位于 同一个 Bank 内。DRAM 将一个 Bank 拆分为 8 个平行的数据平面 (Data Planes),每个平面贡献 1 位(Bit),共同组成一个字节(Byte)。

2. Wordline 与 Bitline 的物理确定

在 DRAM 的硅片内部,布线极其紧密:

3. 数据填充进 DRAM 单元 (1T1C) 的详细过程

DRAM 存储“中”字首字节 0xE4 (1110 0100) 依赖的是静电平衡。

第一步:行激活与感测 (Row Activation & Sensing)
第二步:数据覆盖 (Write Overdrive)
第三步:电荷封锁 (Precharge/Closing)

DRAM 真实物理映射表

物理维度 对应参数 存储“中”字 (0xE4) 的表现 物理本质
X轴 (行) Wordline 0 物理开启,激活全行 8192 个开关。 行选通
Y轴 (列) Column 1 逻辑定位,从行缓存中准确定位目标。 列选通
Z轴 (位深) DQ0 ~ DQ7 Bank 内部 8 个子阵列同步工作。 位宽并联
为什么 DRAM 结构最能代表现代计算机?
因为它体现了“以功耗换密度”的终极逻辑。相比 SRAM 昂贵的 6 个晶体管,DRAM 仅用一个微小的沟槽电容就存下了一个 Bit,这让你的手机能拥有 16GB 的内存来存放无数个“中”字。

原理视频

固态硬盘的原理

原理视频

总结

DRAM 采用的电容充放电原理实现了纳秒级的直接、随机存取。
NAND Flash 采用的浮栅电子存储原理虽然实现了数据持久性,但其复杂的页/块存取机制和必须的后台管理使其延迟只能停留在微秒级,因此速度远低于内存。

NAND闪存核心知识

核心分类:按每单元存储位数 (Bits per Cell)

这是划分NAND类型最基本、最重要的维度。根本的 trade-off 在于:位数越多,容量和成本效益越高,但性能与耐用性越低。
P/E是 Program/Erase Cycle(编程/擦除周期)的缩写
10 万次 P/E 的意义是什么?
闪存单元是基于电子捕获释放存储数据的。每次进行擦除或编程操作时,都会对存储单元的 氧化层(Oxide Layer) 造成微小的物理磨损

类型 英文全称
(Full English Name)
简称 每单元位数 性能与耐用性 存储密度与成本 主要应用场景
SLC Single-Level Cell 单级单元 1 bit ➊ 最高
• 速度极快
• 寿命极长 (~10万次 P/E)
➊ 最低
• 单位容量成本最高
企业级服务器、工业控制、军事、高速缓存
MLC Multi-Level Cell 多级单元 2 bit ➋ 较高
• 速度较快
• 寿命较长 (3千-1万次 P/E)
➋ 中等 早期消费级高端SSD、高端嵌入式系统
TLC Triple-Level Cell 三级单元 3 bit ➌ 中等
• 速度与寿命平衡 (0.5千-3千次 P/E)
➌ 较高 现代消费级SSD主流、U盘
QLC Quad-Level Cell 四级单元 4 bit ➍ 较低
• 速度较慢
• 寿命较低 (0.5千-1千次 P/E)
➍ 高
• 容量大,成本低
大容量仓储型SSD、读取密集型应用
PLC Penta-Level Cell 五级单元 5 bit ➎ 最低
• 速度和寿命挑战最大
➎ 最高
• 容量最大,成本最低
发展中,未来用于归档存储等极端冷数据场景
直观趋势总结:
SLC → MLC → TLC → QLC → PLC

关键技术:按物理结构堆叠方式

为了突破平面制造的物理极限,NAND发展出了3D堆叠技术。

类型 核心原理 优势 劣势 现状
2D NAND
(平面NAND)
存储单元在芯片表面单层平铺 技术成熟,早期成本低 • 制程微缩遇瓶颈
• 单元干扰严重
• 容量提升困难
已基本被淘汰,多见于老旧设备
3D NAND
(立体NAND)
存储单元垂直堆叠,如建摩天大楼 大幅提升存储密度
• 可放宽单元尺寸,改善性能和耐用性
• 是实现大容量的关键技术
制造工艺复杂 当前市场绝对主流
重要概念澄清:

固态硬盘的寿命

  1. 选择逻辑:在选择SSD时,首先要理解自己的需求。追求极致性能和耐用性选SLC;追求性价比和主流体验选TLC;追求超大容量和最低成本且写入不频繁则考虑QLC。
  2. 技术结合3D NAND技术有效地缓解了高位数存储(如TLC/QLC)在性能和寿命上的劣势,使得TLC能够成为消费级市场的主流,也让QLC和未来的PLC成为可能。
  3. P/E Cycle (擦写循环次数):是衡量NAND闪存寿命的关键指标,指一个存储块可以被成功擦除和写入的总次数。它直观地体现了从SLC到PLC耐用性的递减。

要理解这个概念和它能用多久,我们需要将其转化为实际的数据写入量(TBW)和寿命。

1. P/E 次数的实际概念

2. 如何计算实际寿命(TBW)

P/E 次数本身并不能直接告诉你 SSD 能用多久,还需要结合两个关键因素来计算出 总写入字节数 (TBW - Total Bytes Written)

TBW=(SSD 标称容量)×(P/E 循环次数)×(磨损均衡系数)
概念 解释
SSD 标称容量 硬盘的总大小(例如:500GB, 1TB)。
磨损均衡系数 (WAF/WA) WAF (Write Amplification Factor),写入放大因子。由于 SSD 需要进行垃圾回收和磨损均衡,实际写入到闪存的量通常大于主机写入的量。SSD 主控越好,WAF 越接近 1。高性能 SSD 通常假设 WAF 为 3 或 4。

3. 寿命估算(以 1TB TLC SSD 为例)

假设你购买了一块 1TB 的 TLC SSD,取 P/E 次数的中间值 1,500 次,以及一个常见且合理的 WAF 3

  1. 理论总写入量 (TWB):$$\text{TWB} = 1 \text{ TB} \times 1,500 \text{ 次} \times (1 / 3) \approx 500 \text{ TB}$$

注意: 厂商通常直接给出 TBW 值,这个值已经考虑了磨损均衡。一个 1TB TLC SSD 常见的官方 TBW 承诺值大约在 400 TB 到 600 TB 之间。

  1. 寿命年限估算: 现在我们需要假设你的每日写入量 (DWPD)
使用场景 每日写入量 (DWPD) 寿命估算 (500TBW)
轻度家用 10 GB / 天 500,000 GB/10 GB/天50,000 天137 年
重度游戏/工作 50 GB / 天 500,000 GB/50 GB/天10,000 天27 年
极端专业用户 200 GB / 天 500,000 GB/200 GB/天2,500 天6.8 年
企业级 0.3 DWPD 每天写入容量的 30% 10 年 (企业级常见质保期)

结论:能用多久?

对于一个标准的消费级 TLC SSD (P/E 1,0003,000 次):

  1. 实际寿命非常长: 在绝大多数普通用户的日常使用中,SSD 都会在 P/E 寿命耗尽之前,因为其他组件故障或被淘汰而退役。
  2. 放心使用: 如果你不是每天进行大量的视频编辑、数据库日志写入或持续的数据清理工作,你几乎不需要担心 TLC SSD 的耐久性问题。它能轻松为你服务 5 年到 10 年以上
  3. 关注 TBW: 购买 SSD 时,应主要关注厂商提供的 TBW 指标和质保年限

固态硬盘的“稳态”(Steady State)

固态硬盘(SSD)的 稳态(Steady State) 是指在 长时间、连续的重度负载 下,SSD 性能达到一个相对稳定和持续的水平,不再发生剧烈波动的状态。

1. 为什么需要稳态?(SSD的特性)

与机械硬盘(HDD)不同,SSD 的性能并不是恒定不变的,它会随着数据写入量的增加而变化。这种变化主要由两个内部操作引起:

2. 稳态的三个阶段

阶段 特点 性能表现
1. 出厂状态 (FOB / Fresh Out of Box) 硬盘全新,所有存储单元都是空的(已擦除)。 最高峰值性能
因为 SSD 可以直接将数据写入干净的块,无需进行垃圾回收。
2. 转换状态 (Transition) 硬盘开始被写入数据,SLC 缓存被填满,内部数据碎片化开始出现。 性能开始剧烈波动和下降,因为 SSD 必须同时处理主机写入请求和内部垃圾回收任务。
3. 稳态 (Steady State) 硬盘长期在高负载下运行,大部分存储空间都被数据占据,垃圾回收机制持续高强度运行。 性能稳定在最低的持续水平
此时的性能反映了 SSD 控制器和固件在最恶劣条件下,平衡主机 I/O 和内部维护工作的真实能力

3. 稳态性能的实际意义

稳态性能是衡量 企业级 SSD重度专业工作站 SSD(如数据库服务器、虚拟化环境、视频编辑渲染)的黄金标准

缓存刷新的一致性、CPU 缓存写入、MESI 机制、软件可见性

缓存刷新的一致性

内存写入时进行“刷新”(Flush)操作,本质上是为了解决高速缓存(Cache)主内存(Main Memory) 之间的数据一致性(Coherence)可见性(Visibility) 问题。

概念 目的 风险
写入缓存 提升性能:CPU先将数据写入速度更快的 L1/L2 缓存。 数据不一致:最新数据只在 CPU 缓存中,主内存仍是旧值(“脏数据”)。
刷新/写回 保证数据一致性:将 CPU 缓存中的**“脏数据”**强制写回主内存。 确保其他 CPU 核心或设备能够读到最新的数据。

CPU 缓存写入:从“脏数据”到一致性根源

“刷新”操作的本质在于 CPU 采用写回 (Write-Back) 策略带来的数据不一致风险。

1. 核心写入策略对比

策略 描述 性能与一致性影响
写穿透 (Write-Through) 数据同时写入 CPU 缓存和主内存。 写入慢,但主内存数据总是最新的,刷新需求低。
写回 (Write-Back) 数据只写入 L1/L2 缓存,标记为 M (Modified)。延迟写回主内存。 写入快,但主内存数据易过时(“脏”)。强制刷新机制成为必需。

💡 关键点: 现代高性能系统主要采用 写回 策略。只有当缓存行被替换(Victim Cache 机制)或被其他核心/设备请求时,才会将 M 状态的 “脏数据” 写回主内存。

2. 缓存层级与职责

缓存层级 性质 核心作用
L1/L2 核心独占(Private Cache) 写入操作发生地。持有 M/E 状态。
L3 核心共享(Shared Cache) 仲裁者。协调 L1/L2 间的数据请求,并通过嗅探机制管理同步。

MESI 机制:硬件同步的完整执行流

MESI 协议是 Intel/AMD CPU 用来保证缓存一致性的基础,定义了缓存行的四种状态:

状态 英文 描述 读/写权限
M Modified (已修改) 缓存行已被修改,且与主内存不一致(脏数据),只有本核心持有 可读写
E Exclusive (独占) 缓存行与主内存一致,且只有本核心持有 可读写(写操作不需要通知其他核心)
S Shared (共享) 缓存行与主内存一致,且多个核心持有 只读
I Invalid (无效) 缓存行数据是旧的,不可用。
多核场景下(核心 B 修改 A,核心 A 读取 A),数据可见性的自动保证依赖于 MESI 协议的状态转移总线嗅探

3. 核心 B (修改者) 的写操作流程

步骤 涉及核心 核心 B 状态转移 同步机制 目的
加载/修改 B S/E M 内部操作 A 的最新值只在核心 B 缓存中(脏数据)。
广播失效 B A N/A Invalidate (使无效) 广播 告知所有核心:A 副本已失效。
核心 A 响应 A S I 嗅探 (Snooping) 核心 A 标记自己的 A 副本为无效,强制下次重载。

4. 核心 A (读取者) 的读操作与数据来源

步骤 涉及核心 核心 B 状态转移 数据来源 性能影响
请求嗅探 L3/总线 M (核心 B) N/A 发现最新数据由核心 B 持有。
数据传输 B A M S 核心 B 的 L1/L2 缓存 避免访问较慢的主内存,显著降低读写延迟。
接收同步 A I S N/A 核心 A 获得最新数据,并标记为共享状态。
核心 A 尝试读取 A,发现状态为 I,触发 Cache Miss。系统采用缓存到缓存传输 (Cache-to-Cache Transfer)

软件可见性:内存屏障与可见性保证

硬件(MESI)保证了缓存一致性,但软件层面的指令重排 (Instruction Reordering) 仍可能破坏程序预期的操作顺序,需要软件干预。

5. 内存屏障 (Memory Barrier/Fence) 的作用

内存屏障是一组特殊的 CPU 指令,用于禁止编译器和 CPU 对屏障前后的指令进行重排,从而强制实现预期的内存操作顺序和可见性。

屏障类型 作用 核心保障
写屏障 (Store Fence) 确保屏障前的所有写操作(Store)在屏障后的操作开始前完成。 强制刷新/写回缓存中的脏数据到主内存,保证其他核心的可见性
读屏障 (Load Fence) 确保屏障后的所有读操作(Load)必须读取最新的数据。 强制失效/重新加载数据,使缓存中的旧数据不可用,保证读取的最新性

6. 应用与系统层面的职责划分

层面 实例 解决问题 同步机制
应用层 Redis (单线程) 逻辑操作的原子性和有序性。 核心串行执行
应用层 Java/C++ 并发 指令重排引起的多线程可见性。 内存屏障 (通过 volatile, synchronized 等)
系统层 OS / CPU 硬件 物理内存在多核间的可见性与一致性。 MESI 协议、总线嗅探、Cache-to-Cache Transfer

Redis 特例: 由于 Redis 核心是单线程模型,应用逻辑层面的操作天然有序且原子,因此它 不依赖于(或不需要显式的) 应用级内存屏障来保证数据一致性,将可见性的责任完全交给底层硬件(MESI)。

磁盘性能参考

机械硬盘(HDD)

4K随机读写IOPS

机械硬盘的4K性能相对较低,因为它们依赖物理磁头移动定位数据位置,这导致了更高的延迟和更低的IOPS值。

4K随机读写速率

机械硬盘在4K随机读写方面的表现远不如SSD,这是因为它们依赖于物理磁头移动来定位数据位置,导致较高的延迟和较低的数据传输率。

固态硬盘(SSD)

4K随机读写IOPS

4K随机读写速率

磁盘读写速度计算

磁盘速率、IO对比

Pasted image 20251016111550

SATA HDD

操作 数值 A 符号 数值 B 符号 结果
I/O reads 3011 ÷ 500 iops 6.022s
I/O writes 777 ÷ 300 iops 2.590s
I/O read bytes 32M ÷ 166M 0.193s
I/O write bytes 19M ÷ 159M 0.119s
总和 8.924s

SATA SSD

操作 数值 A 符号 数值 B 符号 结果
I/O reads 3011 ÷ 7347 iops 0.410s
I/O writes 777 ÷ 10580 iops 0.073s
I/O read bytes 32M ÷ 483M 0.066s
I/O write bytes 19M ÷ 450M 0.042s
总和 0.591s

NVME

操作 数值 A 符号 数值 B 符号 结果
I/O reads 3011 ÷ 17450 iops 0.173s
I/O writes 777 ÷ 43792 iops 0.018s
I/O read bytes 32M ÷ 4232M 0.008s
I/O write bytes 19M ÷ 3936M 0.005s
总和 0.204s