充电 v.s. 放电
充电 v.s. 放电
充电 v.s. 放电
Solid State Drive (1991)
之前的持久存储介质都有致命的缺陷
磁:机械部件导致 ms 级延迟
坑 (光): 一旦挖坑,填坑很困难 (CD 是只读的)
密度和速度:光速运行的
电路
才是终极解决方案
Flash Memory “闪存”
如何在电路中持久 1-bit?
挖个坑
把电子填进去 = 一个状态
把电子放跑 = 另一个状态
充电 v.s. 放电
1-Bit Flash Memory
充电 v.s. 放电
Flash Memory: 几乎全是优点
价格
容量
可靠性
低
- 大规模集成电路
极高
高
- 随便摔
顺序读取
随机读取
极高
极高
极为离谱的优点:电路的大规模并行
容量越大,速度越快,快到 SATA 接口根本无法承受
但有一个意想不到的致命
缺点
和上面的电路有关
充电 v.s. 放电
Wear Out
放电 (erase) 做不到 100% 放干净
放电
数千/数万次
以后,就好像是 “充电” 状态了
Dead cell; “wear out”
有没有感觉有点害怕?
我竟然还在用优盘给大家上课?
很多文件应该写了上千次了?
充电 v.s. 放电
USB Flash Disk (1999)
充电 v.s. 放电
USB Flash Disk (cont'd)
容量大、速度快、相当便宜
很快就取代了软盘,成为了人手
n
n
n
个的存储介质
Compact Flash (CF, 1994)
USB Flash Disk (1999, “朗科”)
“可移动” 特性
存储个人文档
内容 (系统) 分发
充电 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 包邮的优盘,芯片一毛钱都能省……
充电 v.s. 放电
优盘和 SSD 的区别 (cont'd)
软件定义磁盘:SSD 里藏了一个完整的计算机系统
FTL: Flash Translation Layer
“Wear Leveling”: 用软件使写入变得 “均匀”
像是 managed runtime (with garbage collection)
充电 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 眼镜” 本身也需要更新
Coding for SSDs
充电 v.s. 放电
FTL 带来的性能、可靠性、安全性问题
曾经:修电脑引发的血案?
(快速) 格式化是没用的
mmap.mmap(fd, prot=PROT_READ, length=2**40)
我们有一个 “数据恢复” 实验
SSD: 似乎不妙?
Copy-on-write 意味着旧的数据还在!
logic block 被覆盖,physical block 依然存储了数据
文件系统加密/Self-Encrypting Drive
安全带来的缺点:数据就真的无法恢复了
充电 v.s. 放电
SSD 的可靠性:另一个故事
什么?硬件里的软件?
其实非常复杂:算法, cache; store buffer; ...
谁写出来的?那可得有 bug 啊!
让我们好好构造疯狂的
workloads
,把它弄挂吧!