本发明涉及存储,特别涉及一种应用于存储器的映射关系的写入方法以及存储器。
背景技术:
1、固态硬盘(ssd,solid state drives)是用固态电子存储芯片制作的存储硬盘,存储硬盘包括控制器和存储介质。目前最主流的固态硬盘采用闪存存储介质(flash memory)作为存储介质来存储数据,例如以nand flash为例的非易失性存储器。
2、固态硬盘已经被广泛使用在各种场合,在使用ssd存储写数据时,需要用到ftl(flash translation layer,闪存转换层)的映射表,用于记录主机逻辑空间地址到闪存存储介质的物理地址之间的映射关系。因此,固态硬盘中不仅保存着用户写入的写数据,也保存着维护写数据映射关系的映射表。
3、目前主流的固态硬盘一般有两种硬件设计:一种是带有dram作为缓存单元;另一种是不带dram的(称为dram-less固态硬盘)。dram-less固态硬盘由于缓存单元容量有限,因此通常使用两级映射表来存储主机逻辑空间地址到存储介质的物理地址之间的映射关系,并且在处理写操作时,先将二级映射表写入到缓存单元中,然后在满足条件时刷新到存储介质;在处理读操作时,先检索缓存单元中的二级映射表,如果不能获得相应数据,再从存储介质上加载需要的二级映射表到缓存单元中,因此二级映射表的写入设计也将影响后续的读取性能。
技术实现思路
1、本发明的目的在于一种应用于映射关系的写入方法以及存储器,通过映射表设计和管理来提高主机的读写性能。
2、根据本发明的第一方面,提供一种应用于存储器的映射关系的写入方法,所述写入方法包括:
3、根据待写入映射关系中的第一逻辑地址,从缓存单元中的一级映射表得到所述第一逻辑地址所属的第一逻辑地址集合对应的第一链表,其中,所述一级映射表包括n个逻辑地址集合与n个链表的索引地址之间的对应关系,所述n个链表存储在所述缓存单元中的写缓存区,n为正整数;
4、在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围连续,且所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围连续的情况下,更新所述第一逻辑地址范围;以及
5、在更新后的第一逻辑地址范围覆盖了所述第一链表中的第二个结点存储的第二逻辑地址范围的情况下,释放所述第一链表中的第二个结点。
6、在一些实施例中,在所述更新所述第一逻辑地址范围之后,所述方法还包括:
7、在所述第一逻辑地址与上一次写入的第三逻辑地址不属于同一个链表的情况下,释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,其中,所述无效结点所存储的逻辑地址范围是前位结点所存储的逻辑地址范围的子集,所述前位结点在所述第二链表中且位于所述无效结点之前。
8、在一些实施例中,所述释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,包括:
9、遍历所述第二链表;
10、在所述第二链表中遍历到的当前结点所存储的逻辑地址范围覆盖了所述当前结点的后续结点所存储的逻辑地址范围的情况下,将所述当前结点的后续结点作为所述无效结点并进行释放。
11、在一些实施例中,在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围不连续,和/或,所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围不连续的情况下,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中。
12、在一些实施例中,所述第一链表中的每个结点采用起始逻辑地址、起始物理地址和计数值来存储一个逻辑地址范围和物理地址范围的对应关系。
13、在一些实施例中,判断所述第一逻辑地址与所述第一逻辑地址范围是否连续,通过如下方式:
14、判断所述第一逻辑地址是否等于所述第一个结点中的所述起始逻辑地址、所述计数值与1的和,若是,则连续,若否,则不连续;
15、判断第一物理地址与所述第一物理地址范围是否连续,通过如下方式:
16、判断所述第一物理地址是否等于所述第一个结点中的所述起始物理地址、所述计数值与1的和,若是,则连续,若否,则不连续。
17、在一些实施例中,所述缓存单元可申请的结点数量有限,所述写入方法还包括:在所述缓存单元的已申请结点大于第一阈值时,将各个链表的数据刷新到存储介质中。
18、在一些实施例中,所述写入方法还包括:如果根据所述待写入映射关系中的第一逻辑地址从所述一级映射表获得一空指针,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中,以及该空指针修改为指向所述新的空结点。
19、根据本发明的第二方面,提供一种存储器的控制器,与外部的存储介质耦接,所述控制器还包括缓存单元,所述控制器执行上述任一项所述的写入方法。
20、根据本发明的第三方面,提供一种存储器,包括:
21、耦接的控制器和存储介质;
22、所述控制器还包括缓存单元,所述控制器用于执行上述任一项所述的写入方法。
23、在一些实施例中,所述存储介质为闪存芯片。
24、本公开实施例提供的映射表的写入方法,及时判断出l2p映射表占用的无效结点并将其释放,从而减少l2p映射表所占用的缓存空间。这种方式有助于提升顺序读写操作的读写性能。进一步地,采用计数值使得单个结点存储多条映射关系数据,从而使得整个缓存单元可以存储更多的映射关系。
1.一种应用于存储器的映射关系的写入方法,其特征在于,所述方法包括:
2.根据权利要求1所述的写入方法,其特征在于,在所述更新所述第一逻辑地址范围之后,所述方法还包括:
3.根据权利要求2所述的写入方法,其特征在于,所述释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,包括:
4.根据权利要求1所述的写入方法,其特征在于,在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围不连续,和/或,所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围不连续的情况下,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中。
5.根据权利要求1至4任意一项所述的写入方法,其特征在于,所述第一链表中的每个结点采用起始逻辑地址、起始物理地址和计数值来存储一个逻辑地址范围和物理地址范围的对应关系。
6.根据权利要求5所述的写入方法,其特征在于,判断所述第一逻辑地址与所述第一逻辑地址范围是否连续,通过如下方式:
7.根据权利要求1至4任一项所述的写入方法,其特征在于,所述缓存单元可申请的结点数量有限,所述写入方法还包括:在所述缓存单元的已申请结点大于第一阈值时,将各个链表的数据刷新到存储介质中。
8.根据权利要求1所述的写入方法,其特征在于,还包括:如果根据所述待写入映射关系中的第一逻辑地址从所述一级映射表获得一空指针,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中,以及该空指针修改为指向所述新的空结点。
9.一种存储器的控制器,与外部的存储介质耦接,所述控制器还包括缓存单元,所述控制器执行如1至8任一项所述的写入方法。
10.一种存储器,包括:
11.根据权利要求10所述的存储器,所述存储介质为闪存芯片。