闪存转换层
闪存转换层(Flash Translation Layer),是对闪存文件系统读、写、抹除操作的管理。
闪存的硬件特性
[编辑]闪存(Flash Memory)具有以下的硬件特性:
- 一个记忆单元经过写入(program),将可由逻辑1变成逻辑0,但无法再经由写入将此单元恢复到逻辑1,需经过抹除(erase)才可恢复逻辑1。
- 一般闪存中抹除的最小单位称为块,读取(read)和写入的最小单位称为区,一个块的大小远大于一个区。
- 抹除的操作时间一般大于读取和写入的操作时间。
因为以上的硬件特性,闪存的写入往往需要耗费大量的时间在抹除操作上。因此在闪存文件系统中,会经由闪存转换层(Flash Translation Layer)来进行对读、写、抹除操作的管理。
一般闪存转换层需要包含的功能有:
- 逻辑地址到物理地址的映射
- 断电恢复(Power-off recovery)
- 耗损平均(Wear-leveling)
闪存转换层(Flash Translation Layer)中最核心的部分,是逻辑地址到物理地址的映射表。由闪存的硬件特性可知,一个已写入的区,需经过抹除后,方可再写入(reprogram)新的资料。然而,抹除的最小单位块却远大于写入的最小单位区,即使只是想要更新一个块当中某一个区的资料,我们仍需要做整个块的抹除。此时,若想要保存此块中其他区的资料,则需要在抹除前事先搬移到其他块,假设有n次搬移需进行,则将再花费n次读取以及n次写入的操作,耗费相当多的时间。
因此,闪存转换层中运用了逻辑地址到物理地址的映射表,当某个逻辑区所对应到的物理区中已写入资料时,FTL会将此写入资料导向到另外一个空的物理区当中,并将此logical与物理区的对应关系,更新到映射表当中。若要读取此逻辑区的资料时,FTL会根据映射表当中的信息,找到所对应的物理区。
在实现上,逻辑地址到物理地址的映射的设计将决定对闪存的操作效率。其中,若抹除的次数越多,则闪存文件系统的性能将会越差。另外,在嵌入式的应用中,许多设计是将映射表存放在RAM中,因此映射表的大小也是在设计时的考量重点。
依照地址映射设计方式的不同,可分成以下三大类:
- 区映射
在区映射的方式中,每一个逻辑,都可以对应到一个物理区。此方式具有最好的闪存访问效率,但缺点是映射表的大小将会很大。对于嵌入式的应用而言,RAM是昂贵的资源,越大的映射表,将导致越高的成本。
- 块映射
在块映射的方式中,每一个逻辑块对应到一个物理块。在块映射方式中,映射表只记录了逻辑块和物理块的对应信息,因此映射表的大小减少很多。而要找到一个逻辑区所对应到的物理区时,只要找到在对应的物理块中同样偏移量的位置即可。
- 混合映射
在混合映射的方式中,同时使用了块映射与区映射的方式。
- ^ A survey of Flash Translation Layer, Tae-Sun Chung,Dong-Joo Park, Sangwon Parkc, Dong-Ho Lee, Sang-Won Lee, Ha-Joo Song, Journal of Systems Architecture 55 (2009) 332–343] (PDF). Journal of Systems Architecture. 2009. (原始内容 (PDF)存档于2020-09-21).