映射管理
参考资料《深入浅出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可以有很好的顺序读性能,
对于随机读,映射关系分散,一次映射关系的加载基本只能满足一笔逻辑页的读,需要访问量词闪存才能完成读操作,性能相对会差