计算机基础与网络-硬件部分

FTL

FTL(Flash Translation Layer)NAND flash 管理的核心 ,NAND flash 的设备包括我们经常碰到的SDeMMCUFSSSD、 等,通常 FTL 由这些设备的固件提供实现

1. 组成

一个典型的 Flash 芯片由 Packagedieplaneblockpage 组成
flash芯片

1.1. Package

也就是 chipFlash芯片 ,就是我们经常在 M.2SSD上看到的NAND flash颗粒:
Package

1.2 Die

一个NAND颗粒是由一颗或者多颗Die封装在一起而成,这种封装可是平排的,也可以是层叠的。die内部可以通过3D 堆叠技术扩展容量,Die也是可以单独执行命令和返回状态的最小单位:

Package

1.3 Plane

一个die可以包含几个Plane

1.4 Block

重要的概念,它是擦除操作的最小单位

1.5 Page

也很重要,它是写入动作的最小单位

2. 原理

Flash芯片 最小单位是 Page,并且只能将1改成0,若把0改回1,则需要擦除操作,但是擦除操作只能在block的上面操作,而 NAND flash 的寿命是由其擦写次数决定的,FTL 就可以用来平衡整块 flash的整体擦写次数

2.1. 原理

系统维护了一个逻辑 Block 地址(LBA,logical block addresses )物理Block地址(PBA, physical block addresses)的对应关系

2.2. 颗粒度问题

实际使用中常用的是log-block mapping,它从我们现代的log文件系统中学到经验,也充分利用了pageblock的不同特性

2.3. 寿命均衡(Wear Levelling)

具体擦写策略待考

2.4. 垃圾回收(GC,Garbage Collection)

具体GC策略待考

2.5. LBA/PBA表存储

在大部分的NAND Flash里,还有些空闲块,叫OP(Over Provisioning),利用它可以处理坏块、存储LBA/PBA表、给GCWear Levelling留下腾挪空间、减少写入放大(Write Amplification)