6.1.1 FTL是什么?
FTL——Flash Translation Layer,闪存转换层,主要作用是完成主机逻辑地址空间到闪存物理地址空间的翻译,这就是所谓的映射。
SSD把每一笔用户逻辑数据写入闪存地址空间,便记录下该逻辑地址到物理地址的映射关系,下次主机想读取该数据时,固件根据这个映射关系,从闪存中读取该数据返回给用户,这是FTL的最原始也是最基本的功能。
6.1.2 FTL其他重要功能都有什么?
基于闪存的特性,FTL还需要身兼数职
1、更新映射表,垃圾回收
由于闪存不能覆盖写,写一笔新的数据,必须将其写入到一个新的位置,此时SSD固件维护的映射表会更新,以跟踪每个逻辑块最新数据存储在闪存的位置;
往新位置写入数据的同时,老位置上的数据会变成垃圾数据,当闪存可用空间不足时,FTL会进行垃圾回收GC—Garbage Collection。
2、磨损均衡
因为闪存是有寿命的,所以我们在写入时不能可劲的往几个闪存块写数据,不然PEC会很快耗尽,变成坏快。FTL需要做到将写入尽量平摊到SSD的每个闪存块,做到雨露均沾,让每个闪存块磨损的差不多,从而保证SSD能写入更多数据,这就是常说的磨损均衡—Wear Leveling。
3、降低读干扰问题
为了避免读干扰在多次读取某个闪存块,对闪存存储单元数据可靠性的影响,在某个闪存块的读取次数达到一定阈值时,FTL会把这个闪存块的数据搬走,降低数据出错的可能。
4、避免数据保持问题
为了避免数据保持问题,SSD在上电时,FTL会定期扫描闪存,当发现数据保持问题,就会执行数据刷新操作,把闪存块搬移到新的闪存块。
5、坏快管理
FTL可以对出厂坏快和使用过程中产生的坏快进行管理
6、支持配置SLC
FTL支持将QLC或TLC配置成SLC,提高SSD的突发性能和提高数据的可靠性
6.13 FTL的类型有那些?
1、Host-Based:FTL是在Host主机端实现的,使用的计算机/主控SOC的cpu和内存资源。
2、Device-Based:FTL是在Device设备端实现的,使用的SSD的设备控制器和RAM资源,会将前段主机的读写请求转换成对后端闪存的读写请求。现在主流的SSD基本是使用Device-Based。
注:From eMMC JEDEC Standard No. 84-B51 Page 6