FTL那些事(0)之写在前面的话

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

 

作者:李大虾

 

前言:本系列文章总共七篇,分别是写在前面的话、Mapping、Hot/Cold data、GC/WL、Power off Recovery、Cache Manager、写在后面的话。所涉及内容默认读者具有Nand基础知识。

 

    FTL是它的简称,全称是Flash Translation Layer,是搭建在Flash之上的核心软件层,现在的设计主要针对Nand设备,主要内容与其说管理Nand Flash,不如说补足传统文件系统与Nand设备之间的短板。目前FTL尚无统一的标准和规范,但已经形成相应的技术框架,如下图所示,FTL跟着控制器走,左图是外部主控FTL依赖CPU和DRAM,右图是内部主控FTL依赖MCU和SRAM。

 

针对FTL内部也具有了一些成熟的技术模块,比如:

Interface Adapter:在内部FTL中主要关联eMMC/SCSI/SATA/PCIe/NVMe等接口,而在外部FTL中主要关联Linux Block Device。

Address Translation:俗称Mapping机制,负责逻辑地址到物理地址的映射,接下来的很多技术模块都以该机制为核心进行。众所周知,Nand Flash具有写时擦除以及后来顺序写的”顽疾”,因此不得不异地更新。

Garbage Collection:简称GC,上述”顽疾”的延续,回收异地更新产生的脏数据所占空间的回收工作。

Wear Leveling:简称WL,磨损均衡,避免某一个Nand Block很快坏去,使所有Block的PE Cycle均衡发展。

Power off Recovery:简称POR,掉电恢复,因为某些人为或自然外力的原因导致数据没有成功写入到Nand中,决定系统要从可能出现ECC或具有Log系统功能中恢复到掉电前的安全状态。

Parallelization and Load Balancing:在Multi-Die甚至Multi-Plane的Nand系统中,在并行处理中确保性能的完美展现。

Cache Manager:Cache不仅可以存放用户数据,也可以存放FTL Metadata,对系统的整体性能有着天然的优势。

Error Handler:处理读写操作中遇到的Fatal Error或ECC Error状况,以及Bad Block或Weak Block的管理。

 

除此之外,我们还需要知道FTL的一些前世今生的历史,读史可以明智。在SLC时代,与其一起成长的软件技术有YAFFS/YAFFS2,它是第一个专门为Nand设计的,并具有WL和POR功能的嵌入式文件系统;以及JFFS/JFFS2,建立可以挂载Nand Driver的MTD设备之上的日志文件系统。随着容量的增加,MLC技术的到来,JFFS2的继往开来者UBIFS/UBI也随之到来,还有与其形成竞争关系的LogFS。尽管百花齐放,它们都是建立在MTD之上将FTL理念和文件系统概念融合的产物,或者说FTL是它们剥离的产物,但它们的局限性也很明显,越来越难以匹配Nand技术的发展。下图是研究者对它们的对比分析结果,在此表示感谢:

 

 

从上面分析结果来看,不由让人想起一些考察FTL优劣的因素,综合来看就是时空效率和稳定性的Trade-off,空间是指RAM的使用量和Flash的利用率,时间是指读写操作性能,稳定性主要体现在寿命和容错上,具体来说分为五大因素:

Translation Performance:涉及到Cache管理和Mapping Table/Tree的组织方式,导致的查找效率高低,这将直接影响到读写速度。

RAM Overhead:涉及到SRAM/DRAM的资源占用多少,以及Cache管理不当导致命中失效进而频繁地从Flash处更新Mapping Table镜像信息,进而影响性能。特别是SRAM和熊猫一样不像柴米油盐随意。

Block Utilization:这不仅关系到Block在Erase之前写入的数据量,也关系到另一个叫Write Amplification(简称WA,写放大)的概念,一方面因为设计不当导致的每笔用户数据写入会产生额外开销,另外一方面由GC或WL等FTL行为导致数据迁移所致。

Garbage Collection Performance:在写过程中触发GC会导致写速度产生波动现象,特别是频繁的GC或者每次GC数据量较大。

Fault Tolerance:错误产生的类型有很多,比如Bad Block、突然掉电、Bitflips、UECC等,如何能容错不至于变成”砖头”变的尤为重要。

 

如有讨论,请联系李大虾(mailto:lishizelibin@163.com)或关注微信公众号大虾谈(DaXiaTalking)。

 

回归到文件系统上,趋于智能设备发展的大势,传统文件系统并非碌碌无为,也在不断针对非机械存储盘增加新特性。以ext4来说,增加Trim功能,支持大Block Size(>4KB,<=64KB);再如Btrfs针对SSD进行专门的优化,其COW(Copy-on-Write)技术避免了对同一个物理单元反复写动作,尽量减少SSD内部FTL GC的发生,同时优化底层块分配,尽量分配到大Size(比如2MB)的连续块进行操作,方便了SSD内部FTL对数据的组织,进而优化性能。甚至还诞生了如F2fs这种专门为Nand设计的新型文件系统,充分考虑了Nand特性,充分考虑了FTL及Flash几何结构参数感知,特别优化了移动设备的大量小文件读写操作,扩大了随机写区域,使得在小文件操作上有得天独厚的优势,并支持后台Cleaning及Greedy和转移数据最少的Section选择算法,支持Multi-head Logs用于动态和静态Hot与Cold数据分离等等需要应用在Nand Flash上的考量问题。

 

尽管如此多的针对性优化和新特性,但是大多建立在具有FTL的设备之上。因此FTL作为Nand底层核心技术不容小觑。该项技术也成为很多厂商不愿外人所知的技术信息,其所具有的挑战伴随着Nand发展一直存在,厂商也因此可以用新技术Nand相关设备抢占市场;而Linux Mainline却因为MTD停滞不前,也给了学术界生存的土壤,对此方面研究的Paper层峦叠起,可见FTL的优劣直接影响到Nand设备的寿命、可靠性和性能上的优劣。本系列文章将从概念上对FTL那些事娓娓道来。

分类目录 SSD.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。