充电 v.s. 放电

充电 v.s. 放电

2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

Solid State Drive (1991)

之前的持久存储介质都有致命的缺陷

  • 磁:机械部件导致 ms 级延迟
  • 坑 (光): 一旦挖坑,填坑很困难 (CD 是只读的)

密度和速度:光速运行的电路才是终极解决方案

  • Flash Memory “闪存”
  • 如何在电路中持久 1-bit?
    • 挖个坑
    • 把电子填进去 = 一个状态
    • 把电子放跑 = 另一个状态
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

1-Bit Flash Memory

center

2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

Flash Memory: 几乎全是优点

价格 容量 可靠性
- 大规模集成电路 极高 - 随便摔
顺序读取 随机读取
极高 极高

极为离谱的优点:电路的大规模并行

  • 容量越大,速度越快,快到 SATA 接口根本无法承受

但有一个意想不到的致命缺点

  • 和上面的电路有关
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

Wear Out

放电 (erase) 做不到 100% 放干净

  • 放电数千/数万次以后,就好像是 “充电” 状态了
  • Dead cell; “wear out”

有没有感觉有点害怕?

  • 我竟然还在用优盘给大家上课?
  • 很多文件应该写了上千次了?
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

USB Flash Disk (1999)

center

2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

USB Flash Disk (cont'd)

容量大、速度快、相当便宜

  • 很快就取代了软盘,成为了人手 nn 个的存储介质
    • Compact Flash (CF, 1994)
    • USB Flash Disk (1999, “朗科”)
  • “可移动” 特性
    • 存储个人文档
    • 内容 (系统) 分发
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

Flash Disk 与 NAND Flash

优盘, SD 卡, SSD 都是 NAND Flash

  • 但软件/硬件系统的复杂程度不同,效率/寿命也不同
    • 典型的 SSD
      • CPU, on-chip RAM, 缓存, store buffer, 操作系统 ...
      • 寿命: ~1 PiB 数据写入 (~1,000 年寿命)
    • SD 卡
      • SDHC 标准未规定
        • 黑心商家一定会偷工减料
      • 但良心厂家依然有 ARM 芯片

一定不要用便宜的优盘保存重要数据

  • PDD .9 包邮的优盘,芯片一毛钱都能省……
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

优盘和 SSD 的区别 (cont'd)

软件定义磁盘:SSD 里藏了一个完整的计算机系统

center

  • FTL: Flash Translation Layer
    • “Wear Leveling”: 用软件使写入变得 “均匀”
    • 像是 managed runtime (with garbage collection)
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

Wear Leveling

再一次,VR 眼镜

  • Logical block address (LBA) → Physical block address (PBA)

道理简单,实现困难

  • SSD 的 Page/Block 两层结构
    • Page (读取的最小单位, e.g., 4KB)
    • Block (写入的最小单位, e.g., 4MB)
    • Read/write amplification (读/写不必要多的内容)
  • Copy on write
  • “VR 眼镜” 本身也需要更新
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

FTL 带来的性能、可靠性、安全性问题

曾经:修电脑引发的血案?

  • (快速) 格式化是没用的
    • mmap.mmap(fd, prot=PROT_READ, length=2**40)
    • 我们有一个 “数据恢复” 实验

SSD: 似乎不妙?

  • Copy-on-write 意味着旧的数据还在!
    • logic block 被覆盖,physical block 依然存储了数据
  • 文件系统加密/Self-Encrypting Drive
    • 安全带来的缺点:数据就真的无法恢复了
2024 南京大学《操作系统:设计与实现》
充电 v.s. 放电

SSD 的可靠性:另一个故事

什么?硬件里的软件?

  • 其实非常复杂:算法, cache; store buffer; ...

谁写出来的?那可得有 bug 啊!

  • 让我们好好构造疯狂的 workloads,把它弄挂吧!

center

2024 南京大学《操作系统:设计与实现》