映射表更新方法、装置、计算机设备及存储介质

文档序号:152808 发布日期:2021-10-26 浏览:32次 >En<

阅读说明:本技术 映射表更新方法、装置、计算机设备及存储介质 (Mapping table updating method and device, computer equipment and storage medium ) 是由 王猛 徐伟华 甘金涛 于 2021-07-20 设计创作,主要内容包括:本申请涉及一种映射表更新方法、装置、计算机设备及存储介质,其中该方法包括:获取映射表更新请求;根据所述映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;将所述逻辑物理映射表日志进行分段;在所述逻辑物理映射表日志的分段中轮流进行日志记录;当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。本发明通过将主机的写入引起的映射表更新与映射表刷新到NAND上隔离出来,大大降低了映射表刷新引起的延迟。(The application relates to a mapping table updating method, a mapping table updating device, computer equipment and a storage medium, wherein the method comprises the following steps: acquiring a mapping table updating request; establishing a logical physical mapping table log according to the mapping table updating request, wherein the logical physical mapping table log records logical address information and physical address information submitted by a mapping table management module; segmenting the logical physical mapping table log; performing log recording on the streams in turn in the segments of the logical-physical mapping table log; when all the entries in a certain segment are written to full, the next segment is allocated to carry out host write updating log recording, and simultaneously the written log in the log of the logical-physical mapping table is updated to the logical-physical mapping table, so that the rewritten part of the logical-physical mapping table is refreshed to the NAND. The invention isolates the mapping table update caused by the writing of the host from the mapping table refreshing on the NAND, thereby greatly reducing the delay caused by the mapping table refreshing.)

映射表更新方法、装置、计算机设备及存储介质

技术领域

本发明涉及固态硬盘技术领域,特别是涉及一种映射表更新方法、装置、计算机设备及存储介质。

背景技术

SSD(Solid State Disk,固态硬盘)已经被广泛应用于各种场合,目前在PC市场,已经逐步替代传统的HDD(Hard Disk Drive,机械硬盘),从可靠性和性能方面为用户提供较好的体验。由于NAND的特性,需要在内存中维护一个较大的逻辑到物理的映射表,通常简称为L2P表。主机访问的数据最小寻址单元为LBA(512Byte),连续的LBA会被分割为LPA(4KB典型)。L2P的索引即为LPA,而其值则为存放用户数据的NAND物理地址。

在传统技术中,当主机写入数据时,会分配对应的物理地址且更新映射表,且周期性地需要把发生变化的L2P刷新到NAND上去,以加速掉电重建的时间。在映射表刷新到NAND期间,对应的映射表内容不能被改变,因此需要同步执行,期间不能响应主机写,故而会对性能产生较大的影响。

发明内容

基于此,有必要针对上述技术问题,提供一种映射表更新方法、装置、计算机设备及存储介质。

一种映射表更新方法,所述方法包括:

获取映射表更新请求;

根据所述映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;

将所述逻辑物理映射表日志进行分段;

在所述逻辑物理映射表日志的分段中轮流进行日志记录;

当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。

在其中一个实施例中,所述将所述逻辑物理映射表日志进行分段的步骤还包括:

初始时刻所述逻辑物理映射表日志各个分段及分段内的各个条目记录均为空;

当条目内写入逻辑地址信息和物理地址信息后,则所述条目记录为非空;

若当前整个分段中所有的条目均为非空后,则所述分段记录为非空。

在其中一个实施例中,所述在所述逻辑物理映射表日志的分段中轮流进行日志记录的步骤还包括:

逻辑物理映射表日志维护写指针,所述写指针用于指示所述逻辑物理映射表日志当前可写入的空条目;

映射表管理模块根据主机写入的逻辑地址分配对应的物理地址;

将映射表管理模块提交的逻辑地址信息和物理地址信息记录到所述逻辑物理映射表日志中对应的空条目;

待所述逻辑地址信息和物理地址信息记录完成后递增写指针;

如果写指针移动到下一个分段,则将前一个分段标识为满状态。

在其中一个实施例中,所述方法还包括:

当某一分段写满后,把已经写满的分段中的日志条目依次更新到逻辑物理映射表上;

当分段内所有的条目均更新到逻辑物理映射表后,清除逻辑物理映射表日志中分段的记录,并标识所述分段为空;

周期性地将逻辑物理映射表上的被修改的表项刷新到NAND上。

一种映射表更新装置,所述装置包括:

获取模块,所述获取模块用于获取映射表更新请求;

日志建立模块,所述日志建立模块用于根据所述映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;

日志分段模块,所述日志分段模块用于将所述逻辑物理映射表日志进行分段;

日志记录模块,所述日志记录模块用于在所述逻辑物理映射表日志的分段中轮流进行日志记录;

日志更新模块,所述日志更新模块用于当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。

在其中一个实施例中,所述日志分段模块还用于:

初始时刻所述逻辑物理映射表日志各个分段及分段内的各个条目记录均为空;

当条目内写入逻辑地址信息和物理地址信息后,则所述条目记录为非空;

若当前整个分段中所有的条目均为非空后,则所述分段记录为非空。

在其中一个实施例中,所述日志记录模块还用于:

逻辑物理映射表日志维护写指针,所述写指针用于指示所述逻辑物理映射表日志当前可写入的空条目;

映射表管理模块根据主机写入的逻辑地址分配对应的物理地址;

将映射表管理模块提交的逻辑地址信息和物理地址信息记录到所述逻辑物理映射表日志中对应的空条目;

待所述逻辑地址信息和物理地址信息记录完成后递增写指针;

如果写指针移动到下一个分段,则将前一个分段标识为满状态。

在其中一个实施例中,所述日志更新模块还用于:

当某一分段写满后,把已经写满的分段中的日志条目依次更新到逻辑物理映射表上;

当分段内所有的条目均更新到逻辑物理映射表后,清除逻辑物理映射表日志中分段的记录,并标识所述分段为空;

周期性地将逻辑物理映射表上的被修改的表项刷新到NAND上。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。

上述映射表更新方法、装置、计算机设备及存储介质通过获取映射表更新请求;根据所述映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;将所述逻辑物理映射表日志进行分段;在所述逻辑物理映射表日志的分段中轮流进行日志记录;当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。本发明重新定义了一种映射表更新方法,建立逻辑物理映射表日志,主机的写操作不会直接更新逻辑物理映射表,而是依次写入逻辑物理映射表日志中,通过将主机的写入引起的映射表更新与映射表刷新到NAND上隔离出来,大大降低了映射表刷新引起的延迟。

附图说明

图1为典型的SSD内部写入流程的示意图;

图2为本发明所引入的逻辑物理映射表日志表的示意图;

图3为一个实施例中映射表更新方法的流程示意图;

图4为另一个实施例中映射表更新方法的流程示意图;

图5为再一个实施例中映射表更新方法的流程示意图;

图6为一个实施例中映射表更新策略的示意图;

图7为一个实施例中映射表释放更新的示意图;

图8为一个实施例中映射表更新装置的结构框图;

图9为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

目前,参考图1所示的一个典型的SSD内部写入流程,具体包括:主机提交写命令到SSD的前端模块。SSD前端模块将命令分割成映射单元(LPA,典型如4KB)。提交操作请求到缓冲区管理模块,分配写缓冲区。根据所分配的缓冲区,建立与主机的数据传输,且在完成数据传输后告知主机命令完成。映射表管理模块负责根据逻辑地址分配对应的物理地址。映射表管理模块,根据访问的逻辑地址(LPA)以及分配的物理地址(PPA),更新内存中的映射表(L2P)。提交操作请求到后端模块,后端模块根据物理地址发起对NAND写请求。等待NAND写操作请求完成。在此过程中,映射表的更新直接作用在L2P上。由于内存中的L2P表是掉电不保存的,重新上电后需要重建,此时需要扫描NAND上的用户数据区进行恢复。为了减少扫描的数量,需要周期性地将L2P表刷新到NAND上。然而,由于主机写入和映射表刷新都需要操作L2P表,存在冲突,故在刷新映射表到NAND上需要暂停主机的数据写入响应,故而会导致较大的延迟,性能一致性比较差。

基于此,本发明提供了一种映射表更新方法,具体地,该方法重定义了一种映射更新方法,将主机的写入引起的映射表更新与映射表刷新到NAND上隔离出来。具体地,可参考图2所示的逻辑物理映射表日志表的示意图。在传统的L2P映射表之上,建立一个逻辑物理映射表日志表(L2P_Log),主机的写入引起的映射表更新都会写入到L2P_Log区域先。L2P_Log区域进行分段,轮流进行日志记录。当某一段满时,分配下一段进行主机写入更新日志记录,同时在后台将L2P_Log中已经写入的日志Merge到L2P表中,进而将L2P表被改写的部分刷新到NAND上。由于将主机写入引发的映射表更新与映射表刷新到NAND上隔离出来,大大降低了映射表刷新引起的延迟。

在一个实施例中,如图3所示,提供了一种映射表更新方法,该方法包括:

步骤302,获取映射表更新请求;

步骤304,根据映射表更新请求建立逻辑物理映射表日志,逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;

步骤306,将逻辑物理映射表日志进行分段;

步骤308,在逻辑物理映射表日志的分段中轮流进行日志记录;

步骤310,当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将逻辑物理映射表被改写的部分刷新到NAND上。

在本实施例中,提供了一种映射表更新方法,其具体的实现步骤如下:

首先,获取映射表更新请求,并根据映射表更新请求建立逻辑物理映射表日志,该逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息。接着,将逻辑物理映射表日志进行分段。

在一个实施例中,将逻辑物理映射表日志进行分段的步骤还包括:初始时刻所述逻辑物理映射表日志各个分段及分段内的各个条目记录均为空;当条目内写入逻辑地址信息和物理地址信息后,则条目记录为非空;若当前整个分段中所有的条目均为非空后,则分段记录为非空。

本实施例中,在传统的L2P映射表的基础上,内存中新建了一个逻辑物理映射表日志(L2P_LOG)。该日志每个记录描述:映射表管理模块提交修改请求的逻辑地址(LPA)以及物理地址(PPA)信息。具体地,可以将该日志进行分段,按顺序循环分配使用:分段1、分段2…分段N、分段1…。

在初始时刻,L2P_LOG各个分段且其内各个条目记录均为空,当条目内写入记录后,则非空;当整个分段的每个条目均非空后,对应的分段非空。当分段写满后,后台会启动把对应的分段修改信息合并到L2P表中,此后即可标记分段为空,可重新使用。

最后,当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将逻辑物理映射表被改写的部分刷新到NAND上。

在本实施例中,通过获取映射表更新请求;根据映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;将所述逻辑物理映射表日志进行分段;在所述逻辑物理映射表日志的分段中轮流进行日志记录;当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。本方案重新定义了一种映射表更新方法,建立逻辑物理映射表日志,主机的写操作不会直接更新逻辑物理映射表,而是依次写入逻辑物理映射表日志中,通过将主机的写入引起的映射表更新与映射表刷新到NAND上隔离出来,大大降低了映射表刷新引起的延迟。

在一个实施例中,如图4所示,提供了一种映射表更新方法,该方法中在逻辑物理映射表日志的分段中轮流进行日志记录的步骤还包括:

步骤402,逻辑物理映射表日志维护写指针,写指针用于指示逻辑物理映射表日志当前可写入的空条目;

步骤404,映射表管理模块根据主机写入的逻辑地址分配对应的物理地址;

步骤406,将映射表管理模块提交的逻辑地址信息和物理地址信息记录到逻辑物理映射表日志中对应的空条目;

步骤408,待逻辑地址信息和物理地址信息记录完成后递增写指针;

步骤410,如果写指针移动到下一个分段,则将前一个分段标识为满状态。

在本实施例中,提供了一种映射表更新方法,该方法的映射表更新策略可参考图6所示,实现步骤如下:

首先,L2P_LOG维护写指针,该写指针用于指示当前可写入的空条目。接着,映射表管理模块根据主机的写请求,为LPA L分配物理地址PPA L。此时,映射表管理模块不直接更新L2P表,而是将(LPA L,PPA L)记录到L2P_LOG。待日志记录完成后,递增写指针。最后,如果写指针移动到下一个分段,则前一个分段标志为满状态。

在一个实施例中,如图5所示,提供了一种映射表更新方法,该方法还包括:

步骤502,当某一分段写满后,把已经写满的分段中的日志条目依次更新到逻辑物理映射表上;

步骤504,当分段内所有的条目均更新到逻辑物理映射表后,清除逻辑物理映射表日志中分段的记录,并标识分段为空;

步骤506,周期性地将逻辑物理映射表上的被修改的表项刷新到NAND上。

在本实施例中,提供了一种映射表更新方法,该方法中关于L2P_LOG到L2P合并的策略,可以用来将已经满的分段进行释放以满足后续的日志写入,其具体的实现过程可参考图7所示,包括:

当分段1写满后,日志的写指针移动到后续的分段,可以继续响应主机的写入/更新映射表的需求。内部可以根据不同的策略需求(例如:闲置/主机负载轻…),把分段1中的日志条目依次应用到L2P表上。当分段内所有的条目均应用到L2P后,即可清除L2P_LOG分段1中的记录,且标识该分段为空,后续可以继续记录主机写入的映射表分配信息。

进一步地,内部可以周期性地将L2P上的被修改的表项刷新到NAND上。

在本实施例中,由于有多个分段,故在执行S0/S1/S2时,仍然可以继续响应主机的写入/更新映射表的需求,从而消除了映射表刷新到NAND时L2P访问互斥需求带来的延迟,提升了性能一致性。

应该理解的是,虽然图1-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,提供了一种映射表更新装置800,该装置包括:

获取模块801,所述获取模块用于获取映射表更新请求;

日志建立模块802,所述日志建立模块用于根据所述映射表更新请求建立逻辑物理映射表日志,所述逻辑物理映射表日志中记录映射表管理模块提交的逻辑地址信息和物理地址信息;

日志分段模块803,所述日志分段模块用于将所述逻辑物理映射表日志进行分段;

日志记录模块804,所述日志记录模块用于在所述逻辑物理映射表日志的分段中轮流进行日志记录;

日志更新模块805,所述日志更新模块用于当某一分段中的所有条目都已经写满时,分配下一分段进行主机写入更新日志记录,同时将所述逻辑物理映射表日志中已经写入的日志更新到逻辑物理映射表中,进而将所述逻辑物理映射表被改写的部分刷新到NAND上。

在一个实施例中,日志分段模块803还用于:

初始时刻所述逻辑物理映射表日志各个分段及分段内的各个条目记录均为空;

当条目内写入逻辑地址信息和物理地址信息后,则所述条目记录为非空;

若当前整个分段中所有的条目均为非空后,则所述分段记录为非空。

在一个实施例中,日志记录模块804还用于:

逻辑物理映射表日志维护写指针,所述写指针用于指示所述逻辑物理映射表日志当前可写入的空条目;

映射表管理模块根据主机写入的逻辑地址分配对应的物理地址;

将映射表管理模块提交的逻辑地址信息和物理地址信息记录到所述逻辑物理映射表日志中对应的空条目;

待所述逻辑地址信息和物理地址信息记录完成后递增写指针;

如果写指针移动到下一个分段,则将前一个分段标识为满状态。

在一个实施例中,日志更新模块805还用于:

当某一分段写满后,把已经写满的分段中的日志条目依次更新到逻辑物理映射表上;

当分段内所有的条目均更新到逻辑物理映射表后,清除逻辑物理映射表日志中分段的记录,并标识所述分段为空;

周期性地将逻辑物理映射表上的被修改的表项刷新到NAND上。

关于映射表更新装置的具体限定可以参见上文中对于映射表更新方法的限定,在此不再赘述。

在一个实施例中,提供了一种计算机设备,其内部结构图可以如图9所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种映射表更新方法。

本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据读取方法、数据写入方法及数据读写方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类