SSD核心技术:FTL算法。
1、什么是FTL?
FTL是Flash Translation Layer(闪存转换层),完成主机(HOST)逻辑地址空间到闪存Flash物理地址空间的翻译,或者说映射(Mapping)。
FTL算法分成两类,一种基于主机端实现,另一种基于设备端实现:
可以从那些方面评价FTL算法?
SSD使用的储存介质有哪些?
我们需要了解SSD具有哪些特性,从而学习不同的特性条件下,FTL算法需要去做什么来帮助提高SSD的性能。
2、 FTL-映射管理
映射粒度 | 原理 | 映射表 | 优点 | 缺点 | |
块映射 | 闪存的块 | 一个用户逻辑块可映射到任意的闪存物理块,映射前后块中页内偏移不变。 | 占储存空间小 | 连续大尺寸的数据读写性能好、顺序读写性能好、随机读性能好 | 小尺寸数据的写入性能差、随机写性能差 |
页映射 | 闪存的页 | 一个逻辑页可以映射到任意的一个物理页中 | 占储存空间大 | 随机读写性能好、顺序读写性能好 | |
混合映射 | 块、页映射的结合 | 一个用户逻辑块可映射到任意的闪存物理块,映射后块中页内偏移不固定。 | 占储存空间一般 | 顺序读写性能好、随机读性能好 | 随机写性能差 |
SSD主要采用页映射方式:
映射表计算例子:
假设:SSD总容量256GB,逻辑页大小4KB,映射表单元大小4字节(4B)
逻辑页数:256GB/4KB = 64MB
映射表总大小:4B X 64MB = 256MB
映射表占比:256MB/256GB = 1/1000(约等于)
在SSD里映射表可以有不同的储存方式,不同的储存方式对应的SSD架构有所不同。
(1)绝大多数SSD选择带板载DRAM方式储存映射表。
(2)不带板载,采用二级映射储存,SRAM+主机内存。
(3)用HMB方式,采用主机内存存放映射表。
3、 FTL-垃圾回收
由于SSD具有数据不可覆盖的特性,数据无效后依然会保留在SSD上,如果要写入新的数据到无效数据的位置上,就必须先把无效数据擦除,然后才能写入,此时需要用到SSD的垃圾回收机制。