CN117251101A - 应用于存储器的映射关系的写入方法以及存储器 - Google Patents
应用于存储器的映射关系的写入方法以及存储器 Download PDFInfo
- Publication number
- CN117251101A CN117251101A CN202210653468.5A CN202210653468A CN117251101A CN 117251101 A CN117251101 A CN 117251101A CN 202210653468 A CN202210653468 A CN 202210653468A CN 117251101 A CN117251101 A CN 117251101A
- Authority
- CN
- China
- Prior art keywords
- node
- logical address
- linked list
- address range
- written
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 44
- 239000007787 solid Substances 0.000 description 19
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000001680 brushing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开一种应用于存储器的映射关系的写入方法以及存储器。该方法包括:根据待写入映射关系中的第一逻辑地址,从缓存单元中的一级映射表得到第一逻辑地址所属的第一逻辑地址集合对应的第一链表;在第一逻辑地址与第一链表中的第一个结点存储的第一逻辑地址范围连续,且待写入映射关系中的第一物理地址与第一链表中的第一个结点存储的第一物理地址范围连续的情况下,更新第一逻辑地址范围;以及在更新后的第一逻辑地址范围覆盖了第一链表中的第二个结点存储的第二逻辑地址范围的情况下,释放第一链表中的第二个结点。该方法能够及时地判断出L2P映射表的无效结点并将其释放,从而减小L2P映射表所占用的缓存空间。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种应用于存储器的映射关系的写入方法以及存储器。
背景技术
固态硬盘(SSD,Solid State Drives)是用固态电子存储芯片制作的存储硬盘,存储硬盘包括控制器和存储介质。目前最主流的固态硬盘采用闪存存储介质(flash Memory)作为存储介质来存储数据,例如以NAND flash为例的非易失性存储器。
固态硬盘已经被广泛使用在各种场合,在使用SSD存储写数据时,需要用到FTL(flash Translation Layer,闪存转换层)的映射表,用于记录主机逻辑空间地址到闪存存储介质的物理地址之间的映射关系。因此,固态硬盘中不仅保存着用户写入的写数据,也保存着维护写数据映射关系的映射表。
目前主流的固态硬盘一般有两种硬件设计:一种是带有DRAM作为缓存单元;另一种是不带DRAM的(称为DRAM-Less固态硬盘)。DRAM-Less固态硬盘由于缓存单元容量有限,因此通常使用两级映射表来存储主机逻辑空间地址到存储介质的物理地址之间的映射关系,并且在处理写操作时,先将二级映射表写入到缓存单元中,然后在满足条件时刷新到存储介质;在处理读操作时,先检索缓存单元中的二级映射表,如果不能获得相应数据,再从存储介质上加载需要的二级映射表到缓存单元中,因此二级映射表的写入设计也将影响后续的读取性能。
发明内容
本发明的目的在于一种应用于映射关系的写入方法以及存储器,通过映射表设计和管理来提高主机的读写性能。
根据本发明的第一方面,提供一种应用于存储器的映射关系的写入方法,所述写入方法包括:
根据待写入映射关系中的第一逻辑地址,从缓存单元中的一级映射表得到所述第一逻辑地址所属的第一逻辑地址集合对应的第一链表,其中,所述一级映射表包括N个逻辑地址集合与N个链表的索引地址之间的对应关系,所述N个链表存储在所述缓存单元中的写缓存区,N为正整数;
在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围连续,且所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围连续的情况下,更新所述第一逻辑地址范围;以及
在更新后的第一逻辑地址范围覆盖了所述第一链表中的第二个结点存储的第二逻辑地址范围的情况下,释放所述第一链表中的第二个结点。
在一些实施例中,在所述更新所述第一逻辑地址范围之后,所述方法还包括:
在所述第一逻辑地址与上一次写入的第三逻辑地址不属于同一个链表的情况下,释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,其中,所述无效结点所存储的逻辑地址范围是前位结点所存储的逻辑地址范围的子集,所述前位结点在所述第二链表中且位于所述无效结点之前。
在一些实施例中,所述释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,包括:
遍历所述第二链表;
在所述第二链表中遍历到的当前结点所存储的逻辑地址范围覆盖了所述当前结点的后续结点所存储的逻辑地址范围的情况下,将所述当前结点的后续结点作为所述无效结点并进行释放。
在一些实施例中,在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围不连续,和/或,所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围不连续的情况下,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中。
在一些实施例中,所述第一链表中的每个结点采用起始逻辑地址、起始物理地址和计数值来存储一个逻辑地址范围和物理地址范围的对应关系。
在一些实施例中,判断所述第一逻辑地址与所述第一逻辑地址范围是否连续,通过如下方式:
判断所述第一逻辑地址是否等于所述第一个结点中的所述起始逻辑地址、所述计数值与1的和,若是,则连续,若否,则不连续;
判断第一物理地址与所述第一物理地址范围是否连续,通过如下方式:
判断所述第一物理地址是否等于所述第一个结点中的所述起始物理地址、所述计数值与1的和,若是,则连续,若否,则不连续。
在一些实施例中,所述缓存单元可申请的结点数量有限,所述写入方法还包括:在所述缓存单元的已申请结点大于第一阈值时,将各个链表的数据刷新到存储介质中。
在一些实施例中,所述写入方法还包括:如果根据所述待写入映射关系中的第一逻辑地址从所述一级映射表获得一空指针,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中,以及该空指针修改为指向所述新的空结点。
根据本发明的第二方面,提供一种存储器的控制器,与外部的存储介质耦接,所述控制器还包括缓存单元,所述控制器执行上述任一项所述的写入方法。
根据本发明的第三方面,提供一种存储器,包括:
耦接的控制器和存储介质;
所述控制器还包括缓存单元,所述控制器用于执行上述任一项所述的写入方法。
在一些实施例中,所述存储介质为闪存芯片。
本公开实施例提供的映射表的写入方法,及时判断出L2P映射表占用的无效结点并将其释放,从而减少L2P映射表所占用的缓存空间。这种方式有助于提升顺序读写操作的读写性能。进一步地,采用计数值使得单个结点存储多条映射关系数据,从而使得整个缓存单元可以存储更多的映射关系。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示出了根据本发明实施例的固态硬盘的示意性框图;
图2是用于示意Dram-less固态硬盘中的两级映射表的框图;
图3示出了本公开一实施例提供一种应用于存储器的映射关系数据的写入方法的流程图;
图4示出了本公开另一实施例提供一种应用于存储器的映射关系数据的写入方法的流程图。
具体实施方式
以下将参照附图更详细地描述本发明。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。此外,可能未示出某些公知的部分。
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1示出了根据本发明实施例的固态硬盘的示意性框图。
如图1所示,计算机系统100包括主机110和固态硬盘,固态硬盘包括控制器120和存储介质130,控制器120与主机110连接,用于与主机110交换数据。控制器120连接主机110与存储介质130,将主机110的写数据存入存储介质130。
控制器120包括主机接口121、处理器123、缓存单元124和存储器控制器128。控制系统120的主机接口121连接至主机110,以传输数据和读写指令。处理器123与主机接口121、缓存单元124和存储器控制器128相连接,处理器123对读写指令进行解析并执行读写操作。缓存单元124例如为SRAM,用于存储映射表,存储器控制器128控制写数据的传输和存储。处理器123还用于实现存储器控制的核心软件层,即FTL(flash Translation Layer,闪存转换层),FTL由若干程序组成,处理器123执行程序,使得在接收到读写指令时,能够对指令进行转换,从而完成对存储介质130的访问,因而主机110的文件系统和操作系统可以像访问自己的存储器一样访问存储介质。该FTL还有例如支持坏块管理、损耗均衡、垃圾回收、断电恢复、写平衡技术等特点。
存储介质130例如为闪存芯片阵列。为了提高数据读写性能,控制器120的存储器控制器128可以经由多个通道(例如CH0和CH2)对存储介质130的闪存芯片进行读写,每个通道连接一组闪存芯片。
缓存单元124可以使用SRAM和/或DRAM。比较而言,SRAM作为缓存,具有速度优势,但价格更昂贵且单位空间上存储容量更小。相应地,为了提升缓存空间利用率,Dram-less固态硬盘(无DRAM)采用二级映射表进行地址管理。
图2是用于示意Dram-less固态硬盘中的两级映射表的框图。如图2所示,缓存单元124包括用于存储一级映射表的缓存区1241和用于存储二级映射表的写缓存区1242。首先将所有逻辑地址LAA(logic allocate unit address)被等分成(n+1)个组(0至n),然后可以将一级映射表看作有(n+1)个元素的数组L1[n](下标从0开始)。数组L1[n]用于存储(n+1)个索引地址,该(n+1)个索引地址分别指向存储在存储介质130上的多个二级映射表(相当于一级映射表包括(n+1)逻辑地址集合与(n+1)个链表的索引地址之间的对应关系)。并且,由于在写操作中,二级映射表是先写入到写缓存区1242,然后再刷新到存储介质130,因此在二级映射表未刷新到存储介质130之前,二级映射表先按照链表例如链表1243组织起来并存储在写缓冲区1242,这时,链表1243的索引地址被添加到数组L1[n]的对应元素中,链表1243的索引地址即是链表1243的首个结点的索引地址,当链表1243刷新到存储介质130后,再将存储介质130对应的索引地址也添加到数组L1[n]的对应元素中。
如图上所示,链表1242由一个或多个结点组成。每个结点包含的L2P映射可由LAA、PAA、SEQ和NEXT组成。LAA表示当前结点所存储的至少一个映射关系的起始逻辑地址,PAA表示本结点所存储的至少一个映射关系的起始物理地址,SEQ表示以起始LAA为起始,其后存在SEQ条连续的映射关系数据。NEXT表示指向下一个结点的索引地址。因为SEQ的原因,一个结点可以存储(SEQ+1)条映射关系数据。当用户读取数据时,控制器120查询一级映射表,若发现主机要读取数据的逻辑地址处于某个结点对应的LAA范围内,则此逻辑地址对应的物理地址可以通过该结点的LAA、FAA以及SEQ计算得出。当用户写入数据时,控制器120根据写命令产生新的映射关系数据,该新的映射关系数据会被添加到相应链表中,但当控制器120在已有映射关系的逻辑地址重复写数据时,则会产生无效映射,例如根据用户的写命令新写入的逻辑地址范围是99-101,根据用户的写命令原来写入的逻辑地址范围是99-100,则前一个逻辑地址范围(99-101)和后一个逻辑地址范围(99-100)有重叠,由此,则在后一个逻辑地址范围内的重叠的逻辑地址范围所对应的映射关系变成了无效映射。如果在读取到有效映射前,需要先经过读取多个仅包括无效映射的无效结点,再读到有效映射,则花费了更多读取时间,从而影响到系统的读取性能。
图3示出了本公开第一实施例提供一种应用于存储器的映射关系的写入方法的流程图。在本实施例中,该存储器采用两级映射表存储映射关系,二级映射表同样采用链表存储,而一级映射表的各个表项则存储多个链表的索引地址,每个链表中的每个结点都存储逻辑地址范围和物理地址范围的对应关系,并存储有指向下一个结点的索引地址。在应强调的一点是,虽然图2中,每个结点采用起始逻辑地址(LAA)、起始物理地址(PAA)和计数值来存储一个逻辑地址范围和物理地址范围的对应关系,但本实施例并不强制如此,例如可以采用起始逻辑地址、结束逻辑地址、起始物理地址和结束物理地址这样的数据结构来存储逻辑地址范围和物理地址范围的对应关系。
参考图3所示,流程图包括以下步骤。
在步骤S301中,从一级映射表的相应表项获得待写入的映射关系中的逻辑地址所属的第一链表的第一个结点的索引地址。
参考图2以及上文,一级映射表所对应的数组空间在原始状态下,其存储的索引地址为空指针(NULL)。当接收到待写入的映射关系时,判断出该映射关系中的逻辑地址对应到数组空间的某个元素,并从该元素中取出索引地址,然后判断该索引地址是否指向了一个结点(即判断该索引地址是否不是空指针),如果是,则将其指向的结点称为第一链表的第一个结点,并执行以下步骤S302至S307,如果是空指针,则将申请一空结点,将待写入的映射关系写入到该空结点中,以及将一级映射表的相应表项更新为指向该空结点。
在步骤S302中,从第一链表的第一个结点中取出数据,根据数据确定第一链表的第一个结点的逻辑地址范围和物理地址范围。
在步骤S303中,判断待写入的映射关系中的逻辑地址与第一链表的第一个结点的逻辑地址范围是否连续,且待写入的映射关系中的物理地址与第一链表的第一个结点的物理地址范围是否连续。如果两个都连续,则执行步骤S304,否则执行步骤S307。
具体地,判断待写入的映射关系中的逻辑地址与第一链表的第一个结点的逻辑地址范围是否连续,包括:若待写入的映射关系中的逻辑地址=第一个结点中的起始逻辑地址+计数值+1,则待写入的映射关系中的逻辑地址与该第一个结点的逻辑地址范围连续;否则不连续。判断待写入的映射关系中的物理地址与该第一个结点的物理地址范围是否连续,包括:待写入的映射关系中的物理地址=第一个结点中的起始物理地址+计数值+1,则待写入的映射关系中的物理地址与该第一个结点的物理地址范围连续;否则不连续。
在步骤S304中,将待写入的映射关系写入到第一链表的第一个结点中。具体地,将第一个结点中的计数值加1。
在步骤S305中,判断更新后的第一链表的第一个结点的逻辑地址范围是否覆盖第一链表的第二个结点存储的逻辑地址范围,如果是,则执行步骤S306,否则程序结束。具体地,判断第二个结点存储的逻辑地址范围是否为更新后第一个结点中的逻辑地址范围的子集,若是,则判断为覆盖。在更新后的第一链表的第一个结点的逻辑地址范围覆盖了第一链表的第二个结点存储的逻辑地址范围的情况下,执行步骤S306。
在步骤S306中,释放第一链表的第二个结点。
在步骤S307中,申请一空结点,将待写入的映射关系中写入到该空结点,并将该空结点存储的索引地址指向第一链表的第一个结点,以及将一级映射表的相应表项更新为指向该空结点。
举例说明步骤S302至S307。
步骤一:假设初始状态下,第一链表的第一个结点old_node存储的数据为LAA=100,PAA=100,SEQ=1,Next=NULL,其LAA范围为:[100,101],第一个待写入的映射关系是LAA=100、PAA=200,与old_node存储的LAA不连续、PAA不连续,由步骤S301、S302、S303、S307至END,会申请一个新的结点new_node,并且将待写入的映射关系写到new_node中,最后new_node内存储了LAA=100、PAA=200、seq=0、next=“old_node的索引地址”,并且将一级映射表原来指向old_node的索引地址重新指向new_node,但是old_node不释放。如此当读取LAA=100时,按照链表从前往后依次读取结点数据,先在new_node结点将先找到LAA=100的映射关系,无需再往后读结点,因此读不会出错。
步骤二:第二个待写入的映射关系是LAA=101、PAA=201,与new_node存储的LAA连续且PAA连续,由步骤S301至S306再至END,先将new_node的数据更新为LAA=100、PAA=200、seq=1、next=“old_node的索引地址”,此时old_node的逻辑地址范围[100,101]被new_node的逻辑地址范围[100,101]覆盖,old_node存储的L2P映射都为无效映射,则步骤S305会跳转到S306,即释放了old_node。链表里存储的L2P映射有:LAA=100、PAA=200、seq=1、next=null。
步骤三:如步骤一之后要写入的两个映射关系是:LAA=99且PAA=300,以及LAA=100和PAA=301,则该两个映射关系与old_node(LAA=100,PAA=100,SEQ=1,Next=NULL)存储的LAA不连续、PAA不连续,则经由步骤S301、S302、S303、S307至END,会申请一个新的结点new_node1,最后new_node1内存储了LAA=99、PAA=300、seq=1、next=“old_node的索引地址”。如此当读取LAA=99或100时,按照链表从前往后依次读取结点数据,先在new_node1结点找到映射关系,无需再往后读结点,因此读不会出错。
步骤四:如步骤三之后要写入的映射关系为:LAA=101且PAA=302。则参考上述步骤,将该映射关系更新到new_node1中,更新后的new_node1变为:LAA=99、PAA=300、seq=2、next=“old_node的索引地址”,即new_node1的seq增加1。此时new_node1的LAA范围为:[99,101],覆盖了old_node的逻辑地址范围[100,101],需释放old_node。
综上,上述实施例提供的映射表的写入方法,能够及时地判断出无效L2P映射表占用的结点并将其释放,从而减小无效L2P映射对结点的占用,同时也减小了由于结点数量不足而触发刷表的频率,这种方式对于顺序读写操作的性能提升尤其明显。而且采用计数值SEQ使得单个结点存储多条映射关系,从而使得整个缓存单元可以存储更多的L2P映射关系,可以进一步提升顺序写和顺序读性能。
在一些实施例中,由于控制器的缓存单元可申请的结点数量有限,因此当已申请的结点数量大于设定的第一阈值,或者剩余可申请结点数量小于设定的第二阈值时,将结点数据刷新到存储介质上,如此可减小用户执行顺序写操作时更新的L2P映射表对结点的占用,进而降低了由于结点数量不足而触发刷表的频率,从而提升顺序写性能。
综上所述,通过减少无效映射对于结点的占用,能够提高读取场景下的读取性能,并且,由于最新的映射关系总是处于链表的前面,也能够保证读取到正确的映射关系。
图4示出了本公开另一实施例提供一种应用于存储器的映射关系的写入方法的流程图。在本实施例中,该存储器采用两级映射表存储映射关系,二级映射表同样采用链表存储,而一级映射表的各个表项则存储多个链表的索引地址,每个链表中的每个结点都存储逻辑地址范围和物理地址范围的对应关系,并存储有指向下一个结点的索引地址。在应强调一点是的,虽然图2中,每个结点采用起始逻辑地址(LAA)、起始物理地址(PAA)和计数值来存储一个逻辑地址范围和物理地址范围的对应关系,但本实施例并不强制如此,例如可以采用起始逻辑地址、结束逻辑地址、起始物理地址和结束物理地址这样的数据结构来存储逻辑地址范围和物理地址范围的对应关系。
参考图上所示,该流程图包括步骤S301-S304、S307、S308和S309。其中,S301-S304、S307可参见上文对图3的相应步骤的描述,这里就不再重复。
在步骤S308中,判断待写入的映射关系中的逻辑地址与上一次写入的逻辑地址是否属于同一个链表中,如果否,则执行步骤S309的对上一次写入的逻辑地址所属的链表进行结点合并操作。这样可以减少步骤S306执行过于频繁引起的开销较大进而对固件代码执行效率产生的影响。对于步骤S309的结点合并操作,目前提供以下两种方式:
第一种方式:对上一次更新的LAA所对应的一级映射表的逻辑页集合所指向的链表进行合并操作:遍历上一次更新的LAA所对应的一级映射表的逻辑页集合所指向的链表,若当前遍历到的结点所存储的LAA范围覆盖其后续结点的LAA范围,则释放其后续的无效结点;
第二种方式:判断当前第一个结点中的SEQ CNT是否达到设定的结点中存储的SEQCNT最大值(该最大值为L1[n]中一个元素所能对应的LAA范围的最大值),如果是,则后面的所有结点都是无效结点,直接释放后续所有无效结点。本方式的判断条件比第一种方式较难达到,但无需遍历全部结点,比第一种方式更加高效,性能更好。
将图4的实施例和图3的实施例比较可以发现,在顺序写操作的场景下(即根据写命令产生的逻辑地址是连续的),图3的实施例可能需要多次执行S306来释放无效映射占用的多个结点,同样情况下图4的实施例只需在写入不同链表时一起释放在同一个链表中的多个无效结点,降低释放无效结点操作的频率,因此性能相对较好。
应该理解的是,和随机写操作相比,顺序写操作是固态硬盘更为常见的写操作,因此本公开的核心思想是通过及时判定出无效L2P映射表占用的结点并将其释放,以提高顺序写性能和读性能,从而整体上提高固态硬盘的读写性能。而通过随机样本实验,我们发现,本公开实施例提供的技术方案整体上能够提高固态硬盘的读取性能。
依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种应用于存储器的映射关系的写入方法,其特征在于,所述方法包括:
根据待写入映射关系中的第一逻辑地址,从缓存单元中的一级映射表得到所述第一逻辑地址所属的第一逻辑地址集合对应的第一链表,其中,所述一级映射表包括N个逻辑地址集合与N个链表的索引地址之间的对应关系,所述N个链表存储在所述缓存单元中的写缓存区,N为正整数;
在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围连续,且所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围连续的情况下,更新所述第一逻辑地址范围;以及
在更新后的第一逻辑地址范围覆盖了所述第一链表中的第二个结点存储的第二逻辑地址范围的情况下,释放所述第一链表中的第二个结点。
2.根据权利要求1所述的写入方法,其特征在于,在所述更新所述第一逻辑地址范围之后,所述方法还包括:
在所述第一逻辑地址与上一次写入的第三逻辑地址不属于同一个链表的情况下,释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,其中,所述无效结点所存储的逻辑地址范围是前位结点所存储的逻辑地址范围的子集,所述前位结点在所述第二链表中且位于所述无效结点之前。
3.根据权利要求2所述的写入方法,其特征在于,所述释放所述第三逻辑地址所属的第二逻辑地址集合对应的第二链表中的无效结点,包括:
遍历所述第二链表;
在所述第二链表中遍历到的当前结点所存储的逻辑地址范围覆盖了所述当前结点的后续结点所存储的逻辑地址范围的情况下,将所述当前结点的后续结点作为所述无效结点并进行释放。
4.根据权利要求1所述的写入方法,其特征在于,在所述第一逻辑地址与所述第一链表中的第一个结点存储的第一逻辑地址范围不连续,和/或,所述待写入映射关系中的第一物理地址与所述第一链表中的第一个结点存储的第一物理地址范围不连续的情况下,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中。
5.根据权利要求1至4任意一项所述的写入方法,其特征在于,所述第一链表中的每个结点采用起始逻辑地址、起始物理地址和计数值来存储一个逻辑地址范围和物理地址范围的对应关系。
6.根据权利要求5所述的写入方法,其特征在于,判断所述第一逻辑地址与所述第一逻辑地址范围是否连续,通过如下方式:
判断所述第一逻辑地址是否等于所述第一个结点中的所述起始逻辑地址、所述计数值与1的和,若是,则连续,若否,则不连续;
判断第一物理地址与所述第一物理地址范围是否连续,通过如下方式:
判断所述第一物理地址是否等于所述第一个结点中的所述起始物理地址、所述计数值与1的和,若是,则连续,若否,则不连续。
7.根据权利要求1至4任一项所述的写入方法,其特征在于,所述缓存单元可申请的结点数量有限,所述写入方法还包括:在所述缓存单元的已申请结点大于第一阈值时,将各个链表的数据刷新到存储介质中。
8.根据权利要求1所述的写入方法,其特征在于,还包括:如果根据所述待写入映射关系中的第一逻辑地址从所述一级映射表获得一空指针,则从所述缓存单元申请新的空结点,并将所述待写入映射关系写入到所述新的空结点中,以及该空指针修改为指向所述新的空结点。
9.一种存储器的控制器,与外部的存储介质耦接,所述控制器还包括缓存单元,所述控制器执行如1至8任一项所述的写入方法。
10.一种存储器,包括:
耦接的控制器和存储介质;
所述控制器还包括缓存单元,所述控制器用于执行权利要求1-8任一项所述的写入方法。
11.根据权利要求10所述的存储器,所述存储介质为闪存芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210653468.5A CN117251101A (zh) | 2022-06-09 | 2022-06-09 | 应用于存储器的映射关系的写入方法以及存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210653468.5A CN117251101A (zh) | 2022-06-09 | 2022-06-09 | 应用于存储器的映射关系的写入方法以及存储器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117251101A true CN117251101A (zh) | 2023-12-19 |
Family
ID=89125206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210653468.5A Pending CN117251101A (zh) | 2022-06-09 | 2022-06-09 | 应用于存储器的映射关系的写入方法以及存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117251101A (zh) |
-
2022
- 2022-06-09 CN CN202210653468.5A patent/CN117251101A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347336B (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
KR101612922B1 (ko) | 메모리 시스템 및 메모리 시스템 관리 방법 | |
KR101086857B1 (ko) | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 | |
US7613870B2 (en) | Efficient memory usage in systems including volatile and high-density memories | |
US8583879B2 (en) | Data storage device, storing medium access method and storing medium thereof | |
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
US20040085849A1 (en) | Flash memory, and flash memory access method and apparatus | |
KR101077904B1 (ko) | 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
KR100526178B1 (ko) | 플래시 메모리 액세스 장치 및 방법 | |
KR101297442B1 (ko) | 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN111857552A (zh) | 存储管理方法、电子设备和计算机程序产品 | |
CN113419675B (zh) | 用于存储器的写操作方法及读操作方法 | |
US20240152454A1 (en) | Cache management method, solid state drive controller and solid state drive | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
US10585592B2 (en) | Disk area isolation method and device | |
CN111026678B (zh) | 基于固态硬盘的缓存设计方法、装置及计算机设备 | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 | |
CN117251101A (zh) | 应用于存储器的映射关系的写入方法以及存储器 | |
KR101020781B1 (ko) | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 | |
CN111190834B (zh) | 一种非对称读延迟感知的数据放置方法 | |
KR100859989B1 (ko) | 플래시 메모리의 공간정보 관리장치 및 그 방법 | |
CN108304331B (zh) | 基于NorFlash的环形队列式数据存储方法及装置 | |
CN116010298B (zh) | Nand型闪存地址映射的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |