状态机和状态

从计算模型到计算机系统

  • 我们需要 “造出” 状态图、纸带……
  • 核心:“纸、铅笔、橡皮”

在物理世界中实现状态

实现 Random Access

  • 磁铁 (1960s)
  • SRAM: Flip-flop
  • DRAM: 电容

在物理世界中实现持久化

Persistence: “A firm or obstinate continuance in a course of action in spite of difficulty or opposition.”

  • 我们希望更大、更多的数据能 “留下来” (并且被操作系统有效地管理起来)

持久存储器的抽象

1
2
typedef uint8_t block[4096]; // 4KB
block persist_memory[244140625]; // 1TB
  • 一个巨大的 bit/byte array
    • 允许按 block 读写

磁存储

“持久化” 可能没有想象的那么困难

一个 “能反复改写的状态”

  • 当然,要能寻址 + 用电路改写

电磁感应:物理和数字世界的桥梁

1D 存储设备:把 Bits “卷起来” (磁带:1928)

  • 纸带 (今天是塑料) 上均匀粘上铁磁性颗粒
  • 只需要一个机械部件 (转动) 定位
    • 读取:放大感应电流
    • 写入:电磁头 (电磁铁) 改变磁畴磁化方向

磁带:作为存储设备的分析

成本与风险

价格 容量 可靠性
低 - 廉价材料 存在机械部件、存在丢失风险

读写性能

顺序读写 随机读写
勉强 (需要等待定位) 几乎完全不行

今天的应用场景

  • 冷数据的存档和备份

磁鼓 (Magnetic Drum, 1932)

1D → 1.5D (1D x 𝑛)

  • 用旋转的二维平面存储数据 (无法内卷,容量变小)
  • 读写延迟不会超过旋转周期 (随机读写速度大幅提升)

c25-2-1.webp

疯狂内卷:磁盘 (Hard Disk, 1956)

1.5D → 2.5D (2D x n)

  • 在二维平面上放置许多磁带

c25-2-2.webp

磁盘:克服各种工程挑战

c25-2-3.webp

c25-2-4.webp

磁盘:作为存储设备的分析

成本与风险

价格 容量 可靠性
低 - 高密度低成本 高 - 2.5D,上万磁道 存在机械部件

读写性能

顺序读写 随机读写
较高 勉强 (需要等待定位)

今天的应用场景

  • 计算机系统的主力数据存储
    • 我们的服务器:4 x 4TB HDD (RAID0)

磁盘:性能调优

为了读/写一个扇区

  • 读写头需要到对应的磁道
    • 7200rpm → 120rps → “寻道” 时间 8.3ms
  • 转轴将盘片旋转到读写头的位置
    • 读写头移动时间通常也需要几个 ms

通过缓存/调度等缓解

  • 例如著名的 “电梯” 调度算法
    • 成为了历史的尘埃
  • Advanced Host Controller Interface (AHCI); Native Command Queuing (NCQ)

软盘 (Floppy Disk, 1971)

把读写头和盘片分开——实现数据移动

  • 计算机上的软盘驱动器 (drive) + 可移动的盘片
    • 8" (1971), 5.25" (1975), 3.5" (1981)
      • 最初的软盘成本很低,就是个纸壳子
      • 3.5 英寸软盘为了提高可靠性,已经是 “硬” 的了

软盘:作为存储设备的分析

成本与风险

价格 容量 可靠性
低 - 低成本材料 高 - 裸露介质,密度受限

读写性能

顺序读写 随机读写

今天的应用场景

  • 存盘按钮

坑存储

坑:天然容易 “阅读” 的数据存储

跨越千年的持久化存储方法

c25-3-1.webp

Compact Disk (CD, 1980)

在反射平面 (1) 上挖上粗糙的坑 (0)

  • 激光扫过表面,就能读出坑的信息来
    • 飞利浦 (碟片) 和索尼 (数字音频) 发明
    • ~700 MiB,在当时是非常巨大的容量

c25-3-2.webp

光盘的复制

c25-3-3.webp

挖坑技术的进展

  • CD (740 MB): 780nm 红外激光
  • DVD (4.7 GB): 635nm 红色激光
  • Blue Ray (100 GB): 405nm 蓝紫色激光 (仍难逃被淘汰)

光盘:作为存储设备的分析

成本与风险

价格 容量 可靠性
极低 - “压盘” 复制 高 - 多种保护层

读写性能

顺序读取 随机读取
一般

最大的困难:挖坑容易填坑难

  • CD/R: 用激光器烧出一次性的坑 + append-only 数据结构
  • CD/RW: PCM (Phase-change Material)

今天的应用场景

  • 作为数字收藏

电存储

Solid State Drive (1991)

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

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

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

  • Flash Memory “闪存”
  • 如何在电路中持久 1-bit?
    • 挖个坑
    • 把电子填进去 = 一个状态
    • 把电子放跑 = 另一个状态

1-Bit Flash Memory

c25-4-1.webp

Flash Memory: 几乎全是优点

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

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

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

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

  • 和上面的电路有关

Wear Out

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

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

有没有感觉有点害怕?

  • 很多文件应该写了上千次了?

USB Flash Disk (1999)

c25-4-2.webp

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

  • 很快就取代了软盘,成为了人手 𝑛 个的存储介质
    • Compact Flash (CF, 1994)
    • USB Flash Disk (1999, “朗科”)
  • “可移动” 特性
    • 存储个人文档
    • 内容 (系统) 分发

Flash Disk 与 NAND Flash

优盘, SD 卡, SSD 都是 NAND Flash

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

优盘和 SSD 的区别

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

c25-4-3.webp

  • FTL: Flash Translation Layer
    • “Wear Leveling”: 用软件使写入变得 “均匀”
    • 像是 managed runtime (with garbage collection)

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 眼镜” 本身也需要更新
    • Coding for SSDs

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

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

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

SSD: 似乎不妙?

  • Copy-on-write 意味着旧的数据还在!
    • logic block 被覆盖,physical block 依然存储了数据
  • 文件系统加密/Self-Encrypting Drive
    • 安全带来的缺点:数据就真的无法恢复了

SSD 的可靠性:另一个故事

什么?硬件里的软件?

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

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

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

c25-4-4.webp

无论是内存还是持久存储,最终胜出的仍然是电——它的密度和速度是其他介质难以比拟的。但同时我们也看到,NAND Flash 作为持久存储时有着巨大的缺陷——写入寿命。但我们也看到了工业界竟然敢于试制这样跨时代的产品,在十多年的争议中终究成为了今天存储的主角。如果更快的 non-volatile memory 到来又退场,我们的计算机系统是否会发生翻天覆地的变化?