FTL-映射管理

映射管理

参考资料《深入浅出SSD》

映射的种类

1.块映射

1)划分标准,以闪存的块为映射粒度

2)注意,一个用户逻辑块可以映射到任意一个闪存的物理块,但是映射前后每个页在块中的偏移不变

3)优缺点,映射表只存储块的映射->所需存储映射表的空间小;

      连续大尺寸的读写性能好,但是小尺寸的写性能很差;

    (即使只写一个逻辑页,也需要把整个物理块数据读上来,然后改变逻辑页的数据再整个块写入->性能差)

4)用户空间被化成一个个逻辑区域,每个区域与闪存块的大小相同

2.页映射

1)划分标准,以闪存的页为映射粒度 ,一个逻辑页可以映射到任一物理页中

2)注意,由于闪存页远比闪存块多,因此需要更多的空间来存储映射表

3)优缺点,性能很好,尤其体现在随机写上

4)用户空间被化成一个个逻辑区域,每个区域与闪存页的大小相同

3.混合映射

1)划分标准,块映射和页映射的结合

2)一个逻辑块映射到任一物理块,但是块中的每个页的偏移并不是固定不变的,块内采用页映射的方式,一个逻辑块的逻辑页可以映射

  到对应物理块的任一页,因此它所需要的空间以及性能都是介于块映射和页映射之间的。

3)用户空间划分成一个个逻辑区域,逻辑区域和闪存块大小相同,每个逻辑块对应一个闪存块,但逻辑块内部有分成一个个逻辑页,与对应闪存页

  随机对应

映射原理

1.用户通过LBA访问SSD,每个LBA代表一个逻辑块(逻辑页,用户访问SSD的基本的单元,大小:512B/4KB/8KB)

2.SSD内部,SSD主控是以闪存页(物理页)为基本单元读写闪存的

3.用户写入一个逻辑页数据,SSD主控会找一个物理页把数据写入,SSD内部的映射表记录了这条映射

4.下次用户再读这个逻辑页时,可以通过映射表中的映射关系找到闪存物理页中存储的数据

5.案例

SSD内部维护一张逻辑页到物理页地址转换的映射表

        V

用户每写入一个逻辑页,就会产生一个新的映射关系,

这个新的映射关系会加入或者更改映射表

        V

当读取某个逻辑页时,SSD主控首先查找映射表,找到该逻辑页对应的物理页,

然后访问闪存读取相应的数据

6.映射表的大小

SSD大小为256G,逻辑块数据大小为4KB -> 256GB/4KB = 64M个逻辑数据块; 

每个逻辑数据块在闪存空间都有一个存储位置,即一个映射,闪存大小用4字节表示;

存储64M个逻辑数据块在闪存中的地址需要64M*4B = 256M大小的映射表。

总结:映射表大小为SSD容量的1/1024(物理地址用4B表示,映射页大小为4KB)

7.对于带DRAM的SSD,DRAM的作用就是用来存储映射表的,优点是映射关系可以快速访问,如图

例子:SSD工作时,只需查找DRAM中的映射表,获取到物理地址后读取闪存中的数据,只需访问一次闪存

 

8.不带DRAM的SSD,一般采用二级映射,如图

 二级表是L2P表(Logical Address to Physical address),它被分成一块一块的,小部分缓存在RAM,大部分都存在闪存上

    一级映射常驻RAM,存储这些块在闪存中的物理地址,它不是很大,如图

例子:SSD工作时,首先查看逻辑页对应的映射关系是否在RAM内,如果在直接根据映射关系读取闪存中的数据,

如果不在,首先需要把映射关系从闪存中读取出来,然后再根据这个映射关系读取数据,需要读取量词闪存,底层有效带宽减少

 

9.对于顺序读,映射关系连续,一次映射块的读可以满足很多用户数据的读,不带DRAM的SSD可以有很好的顺序读性能,

   对于随机读,映射关系分散,一次映射关系的加载基本只能满足一笔逻辑页的读,需要访问量词闪存才能完成读操作,性能相对会差

原文地址:https://www.cnblogs.com/marton/p/12587494.html