闪存转换层(Flash Translation Layer),是对闪存文件系统读、写、抹除操作的管理。

闪存的硬件特性 编辑

闪存(Flash Memory)具有以下的硬件特性:

  • 一个记忆单元经过写入(program),将可由逻辑1变成逻辑0,但无法再经由写入将此单元恢复到逻辑1,需经过抹除(erase)才可恢复逻辑1。
  • 一般闪存中抹除的最小单位称为块,读取(read)和写入的最小单位称为区,一个的大小远大于一个区。
  • 抹除的操作时间一般大于读取和写入的操作时间。

因为以上的硬件特性,闪存的写入往往需要耗费大量的时间在抹除操作上。因此在闪存文件系统中,会经由闪存转换层(Flash Translation Layer)来进行对读、写、抹除操作的管理。

一般闪存转换层需要包含的功能有:

逻辑地址到物理地址的映射[1] 编辑

闪存转换层(Flash Translation Layer)中最核心的部分,是逻辑地址到物理地址的映射表。由闪存的硬件特性可知,一个已写入的区,需经过抹除后,方可再写入(reprogram)新的资料。然而,抹除的最小单位块却远大于写入的最小单位区,即使只是想要更新一个块当中某一个区的资料,我们仍需要做整个块的抹除。此时,若想要保存此块中其他区的资料,则需要在抹除前事先搬移到其他块,假设有n次搬移需进行,则将再花费n次读取以及n次写入的操作,耗费相当多的时间。
因此,闪存转换层中运用了逻辑地址到物理地址的映射表,当某个逻辑区所对应到的物理区中已写入资料时,FTL会将此写入资料导向到另外一个空的物理区当中,并将此logical与物理区的对应关系,更新到映射表当中。若要读取此逻辑区的资料时,FTL会根据映射表当中的信息,找到所对应的物理区。
在实现上,逻辑地址到物理地址的映射的设计将决定对闪存的操作效率。其中,若抹除的次数越多,则闪存文件系统的性能将会越差。另外,在嵌入式的应用中,许多设计是将映射表存放在RAM中,因此映射表的大小也是在设计时的考量重点。
依照地址映射设计方式的不同,可分成以下三大类:

  • 区映射

在区映射的方式中,每一个逻辑,都可以对应到一个物理区。此方式具有最好的闪存访问效率,但缺点是映射表的大小将会很大。对于嵌入式的应用而言,RAM是昂贵的资源,越大的映射表,将导致越高的成本。

  • 块映射

在块映射的方式中,每一个逻辑块对应到一个物理块。在块映射方式中,映射表只记录了逻辑块和物理块的对应信息,因此映射表的大小减少很多。而要找到一个逻辑区所对应到的物理区时,只要找到在对应的物理块中同样偏移量的位置即可。

  • 混合映射

在混合映射的方式中,同时使用了块映射与区映射的方式。