存储技术FTL基础知识学习1

有参考大神的博客和网页,,如果涉及侵权,请联系我,我删帖!!!

 

一.基本理论

1.FTL(Flash translation layer)由来:

闪存的读写单位为页,而页的大小一般为4KB或8KB,但我们的操作系统读写数据是按HDD(硬盘)的扇区尺寸进行的(512Byte(字节)),更麻烦的是闪存擦除以块作单位,而且未擦除就无法写入,这导致操作系统现在使用的文件系统根本无法管理SSD(固态硬盘),需要更换更先进、复杂的文件去解决这个问题,但会增加操作系统负担。而为了不加重操作系统的负担,SSD采用软件的方式把闪存的操作虚拟成磁盘的独立扇区操作,这就是FTL。因为FTL存在于文件系统和物理介质(闪存)之间,操作系统只需跟原来一样操作LBA(逻辑区块地址)即可,LBA(逻辑区块地址)到PBA(物理区块地址)的所有转换工作就全交给FTL负责。

2.关于LBA和PBA:

通俗的讲,LBA就等于我们平常使用的门牌地址(如:中华人民共和国广东省广州市中山四路26号)。而PBA全称为 Physics Block Address,相对于LBA来说,它就如GPS 定位所使用的经纬度(如上面地址的经纬度为:东经:113°16′40.0621″,北纬:23°07′ 37.6129″)。

在HDD上,由于HDD的数据可以直接覆盖,所以LBA和PBA的关系是1:1对应,不会变更,即LBA=PBA。在SSD上,由于SSD使用的存储介质NAND闪存有需要先擦除才能再写入的特性,和读写以页为单位,擦除以块(多个页组成)为单位的特性,导致LBA和 PBA的关系不再是固定不变的。导致LBA和 PBA的关系不再是固定不变的。因此SSD就需要一层叫做FTL的东西来作转换,以配合现有的文件系统。

NAND闪存的擦除/写入关系:

(闪存页大小一般为4KB或8KB,块一般有128至256页,详情请参考具体闪存颗粒数据手册)由于NAND闪存的特性,SSD的主控制器是使用LBA和PBA的映射表来管理闪存的。当有需要更新的数据要写入时,主控会把新数据写入到空 白的闪存空间(已擦除状态的)内,然后更新映射表数据,把LBA指向新的PBA。原来的PBA就成了无效数据,这个PBA若要再次写入数据就需先进行擦除 的操作。但这里会产生一个问题,闪存颗粒的寿命是按Program/Erase(编程/擦除,由于闪存不能覆盖,写入前必须擦除,所以习惯叫编程,不过为 方便大家阅读,后面我们依然叫写入)次数计算的,MLC(多阶存储单元闪存)的寿命一般在1000-10000次,SLC(单阶存储单元闪存)则在10万 次左右。(详情请参考具体闪存颗粒数据手册)。

3.FTL算法:

即一种LBA(逻辑区块地址)到PBA(物理区块地址࿰

你可能感兴趣的:(存储记录技术)