基于hmb的映射表管理方法、装置及计算机设备
技术领域
本发明涉及存储系统
技术领域
,特别是涉及一种基于HMB的映射表管理方法、装置、计算机设备及存储介质。背景技术
SSD(固态硬盘)已经被广泛应用于各种场合,目前在PC市场,已经逐步替代传统的HDD,从可靠性和性能方面为用户提供较好的体验。在SSD上,一般有一个比较大的DRAM,存放映射表等数据(主机访问的逻辑地址到存放数据的NAND物理地址),对于一个512GB的SSD来说,通常需要配置512MB 的DRAM。随着接口技术的演进,PCIe Gen 4时代可以提供更高的带宽;同时,由于整机的功耗/成本需求,对于SSD提出来更高的要求。综合这些因素,在主流的PCIe Gen 4 4通道的SSD上,一般需要采用没有DRAM的方案,而仅在 SSD SOC内部保留10MB左右的SRAM.
在此场景下,需要动态在SRAM/NAND上置换映射表,以满足主机的读写请求。进一步地,可以通过HMB技术,分配部分主机的内存给到SSD当作映射表缓存,可以加载更多的表项到内存中,提供更大范围的高速读写性能。
目前,现有的SSD中,其对于SOC SRAM与HMB映射表缓冲区管理模型为对等模型,主要用于扩充内存中的映射表数量。但对于PCIe Gen 4的高速性能场景需求,其读写IOPS达到1M,对应一个IO只能有1us的处理时间。当映射表位于HMB中时,随机读写对应的映射表访问会需要实时透过PCIe总线到主机端内存查询映射表,这个每个请求带来近1us的额外开销,从而极大地影响了随机读写性能。此外,由于HMB映射表缓冲区和SOC SRAM映射表缓冲区为对等模型,一旦映射表从NAND上加载进来后,一般不会再移动,故而导致上述的开销一直存在。
发明内容
基于此,有必要针对上述技术问题,提供一种基于HMB的映射表管理方法、装置、计算机设备及存储介质。
一种基于HMB的映射表管理方法,所述方法包括:
映射表管理模块根据主机下发的读写请求到映射表Cache模块中查询对应的映射表项;
在所述映射表Cache模块中检查对应映射表项,判断所述映射表项是否在 SOCSRAM映射表缓冲区中;
若所述映射表项不在SOC SRAM映射表缓冲区中,则继续判断HMB是否使能;
若HMB已使能,则继续判断所述映射表项是否在HMB映射表缓冲区中;
若所述映射表项不在HMB映射表缓冲区中,则从NAND存储区加载映射表到HMB映射表缓冲区;
将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应映射表项给映射表管理模块。
在其中一个实施例中,在所述判断所述映射表项是否在SOC SRAM映射表缓冲区中的步骤之后还包括:
若所述映射表项在SOC SRAM映射表缓冲区中,则直接返回所述映射表项给映射表管理模块。
在其中一个实施例中,在所述继续判断HMB是否使能的步骤之后还包括:
若HMB未使能,则从NAND存储区加载映射表到SOC SRAM映射表缓冲区,并返回对应映射表项给映射表管理模块。
在其中一个实施例中,在所述继续判断所述映射表项是否在HMB映射表缓冲区中的步骤之后还包括:
若所述映射表项在HMB映射表缓冲区中,则将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应表项给映射表管理模块。
一种基于HMB的映射表管理装置,所述装置包括:
查询模块,所述查询模块用于映射表管理模块根据主机下发的读写请求到映射表Cache模块中查询对应的映射表项;
第一判断模块,所述第一判断模块用于在所述映射表Cache模块中检查对应映射表项,判断所述映射表项是否在SOC SRAM映射表缓冲区中;
第二判断模块,所述第二判断模块用于若所述映射表项不在SOC SRAM映射表缓冲区中,则继续判断HMB是否使能;
第三判断模块,所述第三判断模块用于若HMB已使能,则继续判断所述映射表项是否在HMB映射表缓冲区中;
第一加载模块,所述第一加载模块用于若所述映射表项不在HMB映射表缓冲区中,则从NAND存储区加载映射表到HMB映射表缓冲区;
第二加载模块,所述第二加载模块用于将对应映射表项加载到SOC SRAM 映射表缓冲区中,并返回对应映射表项给映射表管理模块。
在其中一个实施例中,所述装置还包括第一返回模块,所述第一返回模块用于:
若所述映射表项在SOC SRAM映射表缓冲区中,则直接返回所述映射表项给映射表管理模块。
在其中一个实施例中,所述装置还包括第二返回模块,所述第二返回模块用于:
若HMB未使能,则从NAND存储区加载映射表到SOC SRAM映射表缓冲区,并返回对应映射表项给映射表管理模块。
在其中一个实施例中,所述装置还包括第三返回模块,所述第三返回模块用于:
若所述映射表项在HMB映射表缓冲区中,则将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应表项给映射表管理模块。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述基于HMB的映射表管理方法、装置、计算机设备及存储介质通过映射表管理模块根据主机下发的读写请求到映射表Cache模块中查询对应的映射表项;在所述映射表Cache模块中检查对应映射表项,判断所述映射表项是否在 SOC SRAM映射表缓冲区中;若所述映射表项不在SOC SRAM映射表缓冲区中,则继续判断HMB是否使能;若HMB已使能,则继续判断所述映射表项是否在HMB映射表缓冲区中;若所述映射表项不在HMB映射表缓冲区中,则从 NAND存储区加载映射表到HMB映射表缓冲区;将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应映射表项给映射表管理模块。本发明根据不同映射表存储区的性能,在不同工作模式下定义了不同的映射表Cache模型,可以有效降低映射表查询的延迟。对于主机经常访问的数据,其映射表会被加载到最快的SOC SRAM中,从而保证主机的读写性能最优。
附图说明
图1为一个典型的SSD内部访问流程的流程示意图;
图2为一个现有技术中当映射表存放于HMB中时的读流程的流程示意图;
图3为一个实施例中基于HMB的映射表管理方法的流程示意图;
图4为一个实施例中映射表Cache模型的示意图;
图5为另一个实施例中基于HMB的映射表管理方法的流程示意图;
图6为一个实施例中基于HMB的映射表管理装置的结构框图;
图7为另一个实施例中基于HMB的映射表管理装置的结构框图;
图8为再一个实施例中基于HMB的映射表管理装置的结构框图;
图9为又一个实施例中基于HMB的映射表管理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,为一个典型的SSD内部访问流程。其具体实现过程包括:主机提交读命令到SSD的前端模块。SSD前端模块将命令分割成映射单元(LPA,典型如4KB)。提交操作请求到缓冲区管理模块,分配读写缓冲区。如果为写命令,则根据所分配的缓冲区,建立与主机的数据传输,且在完成数据传输后告知主机命令完成。如果为读命令,则提交操作请求到映射表管理模块。映射表管理模块负责根据逻辑地址分配对应的物理地址(写命令)或者把逻辑地址转换成NAND物理地址(读命令),其根据逻辑地址,向映射表Cache模块发起查询/修改请求。映射表Cache模块,根据可使用的内存大小,存放部分逻辑到物理的映射表,其中,每个映射表项的索引为逻辑地址,值为存放对应数据的 NAND物理地址。存在两种类型的映射表缓冲区,其中一种为SOC SRAM映射表缓冲区,存在于SSD控制器内,出厂自带一定大小的SRAM,典型为数MB,另一种为HMB映射表缓冲区,SSD运行后,可以向主机申请借用部分主机内存,用作映射表缓冲区。由于HMB映射表缓冲区实体在主机端,如果映射表管理模块发起的请求落于此,需要与主机端通讯;而SOC SRAM位于SSD控制器内部,访问极快。映射表Cache模块根据其内缓存的映射表,处理映射表管理模块对应的访问请求;特别地,当访问的请求不在映射表缓冲区时,需要从NAND上对应的映射表存储区域进行加载。映射表管理模块提交操作请求到后端模块,后端模块根据物理地址发起对NAND读/写请求。等待NAND读/写操作请求完成。如果为读命令,此时数据会加载到NAND Cache Register中。数据Ready后,启动数据从NAND Cache Register到主机的传输。
由于主机的访问具备一定的空间聚集性,故对应的映射表一般常驻在有限的映射表缓冲区中,从而能够实现较高的读写性能。
目前,由于HMB映射表缓冲区和SOC SRAM映射表缓冲区的访问延迟存在一定的差异,在高速的IOPS应用场景下,会对性能造成较大的影响。如图2 所示,以一个典型的读请求为例:S0:主机下发读命令。S1:SSD前端模块将命令分割成映射单元(LPA,典型如4KB)。S2:提交到读写缓冲区模块,分配读写缓冲区。S3:提交请求到映射表管理模块。S4:映射表管理模块查询对应映射表(假设为LPA A)是否加载。S5:映射表已经加载,且位于HMB映射表缓冲区。 S6:透过PCIe总线,获取对应的映射表数据,查询到对应LPA A的用户数据 NAND物理存放地址。S7:提交后端模块,并根据所查询到的NAND物理地址,从用户数据存储区域加载数据并返回主机。
整个过程中S6需要实时从主机端HMB映射表缓冲区中查询表项,基本带来约1us的延迟。而在PCIe Gen 4时代,SSD的随机读IOPS高达1M,对应每个 IO处理时间仅1us,故此处额外的1us映射表查询开销对性能将带来极大影响。此外,由于HMB映射表缓冲区和SOCSRAM映射表缓冲区为对等模型,一旦映射表从NAND上加载进来后,一般不会再移动,故而导致上述的开销一直存在。
基于此,本发明提供了一种基于HMB的映射表管理方法,在该方法中根据不同映射表存储区的性能,在不同工作模式下定义了不同的映射表Cache模型,可以有效降低映射表查询的延迟:
1、在三种映射表存储区域中,NAND区域访问最慢(大约为100us级别), HMB区域次之(大约1us级别),而SOC SRAM最快(为ns级别)。
2、当HMB未使能时,将SOC SRAM用作NAND映射表存储区的Cache,对于主机访问请求,如果命中Cache则直接读写,否则从NAND上加载到Cache 中。
3、当HMB使能时,将SOC SRAM用作HMB的Cache(记为L1 Cache),而HMB用作NAND映射表存储区的Cache(记为L2 Cache)。对于主机访问请求,如果命中L1 Cache,则直接读写;否则检查L2 Cache,命中则加载到L1 Cache 中读写;如果也不在L2 Cache,则从NAND映射表存储区加载到L1/L2 Cache。
基于本发明,对于主机经常访问的数据,其映射表会被加载到最快的SOC SRAM中,从而保证主机的读写性能最优。
在一个实施例中,如图3所示,提供了一种基于HMB的映射表管理方法,该方法包括:
步骤302,映射表管理模块根据主机下发的读写请求到映射表Cache模块中查询对应的映射表项;
步骤304,在映射表Cache模块中检查对应映射表项,判断映射表项是否在SOCSRAM映射表缓冲区中;
步骤306,若映射表项不在SOC SRAM映射表缓冲区中,则继续判断HMB 是否使能;
步骤308,若HMB已使能,则继续判断映射表项是否在HMB映射表缓冲区中;
步骤310,若映射表项不在HMB映射表缓冲区中,则从NAND存储区加载映射表到HMB映射表缓冲区;
步骤312,将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应映射表项给映射表管理模块。
具体地,如图4所述为本实施例中提出的映射表动态Cache模型。其中,传统的SSD映射表Cache模型包括:
-存在两个独立的映射表缓冲区对NAND映射表缓冲区进行加速。
-当HMB未使能时,仅SOC SRAM提供Cache服务,其可缓存的映射表项则较小。
-当主机访问的逻辑地址对应的表项落在Cache中时:如在SOC SRAM映射表缓冲区,其访问性能高,对应的映射表访问接口则表现为高速;如在HMB 映射表缓冲区,其访问性能低,对应的映射表访问接口则表现为低速。
-当主机访问的逻辑地址对应的表项不在Cache中时:则从NAND映射表存储区加载对应映射表,放置于当前可用的映射表缓冲区(SOC SRAM/HMB)。
而在本实施例中提供的SSD映射表Cache模型包括:
-HMB未使能时,工作在一级Cache模型,SOC SRAM作为NAND映射表存储区的L1Cache,该场景下的行为与传统SSD Cache模型下类似。
-HMB使能时候,则工作在二级Cache模型。HMB映射表缓冲区,作为 NAND映射表存储区的L2 Cache;SOC SRAM映射表缓冲区,作为HMB映射表缓冲区的L1 Cache。对于映射表管理模块的访问请求,优先从L1 Cache中进行检索,如果命中则直接处理;如果不命中,则在L2Cache中进行检索,依次类推,直到NAND映射表存储区。当发生L1 Cache不命中时,除了从L2 Cache 中查询,同时会将其对应的内容加载到L1 Cache中,以保障后续的高速访问。
显然,当HMB未使能时,建立一级Cache模型,SOC片内SRAM当作 NAND上存储的映射表数据的缓存,加速对主机读写命令的响应。当HMB使能时,建立二级Cache模型,HMB分配的映射表内存区作为NAND上存储的映射表数据的L2缓存,而SOC片内SRAM作为HMB映射表内存区的L1缓存。通过根据不同存储区域的访问速度以及工作场景,建立不同的Cache模型,可有效地加速没有DRAM的SSD访问性能。
在本实施例中,通过映射表管理模块根据主机下发的读写请求到映射表 Cache模块中查询对应的映射表项;在所述映射表Cache模块中检查对应映射表项,判断所述映射表项是否在SOC SRAM映射表缓冲区中;若所述映射表项不在SOC SRAM映射表缓冲区中,则继续判断HMB是否使能;若HMB已使能,则继续判断所述映射表项是否在HMB映射表缓冲区中;若所述映射表项不在HMB映射表缓冲区中,则从NAND存储区加载映射表到HMB映射表缓冲区;将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应映射表项给映射表管理模块。本方案根据不同映射表存储区的性能,在不同工作模式下定义了不同的映射表Cache模型,可以有效降低映射表查询的延迟。对于主机经常访问的数据,其映射表会被加载到最快的SOC SRAM中,从而保证主机的读写性能最优。
在一个实施例中,在判断映射表项是否在SOC SRAM映射表缓冲区中的步骤之后还包括:若映射表项在SOC SRAM映射表缓冲区中,则直接返回映射表项给映射表管理模块。
在一个实施例中,在继续判断HMB是否使能的步骤之后还包括:若HMB 未使能,则从NAND存储区加载映射表到SOC SRAM映射表缓冲区,并返回对应映射表项给映射表管理模块。
在一个实施例中,在继续判断映射表项是否在HMB映射表缓冲区中的步骤之后还包括:若映射表项在HMB映射表缓冲区中,则将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应表项给映射表管理模块。
在一个实施例中,如图5所示,提供了一个完整地实现基于HMB的映射表管理方法,其具体的实现步骤包括:
步骤5.1、映射表管理模块根据主机读写请求到映射表Cache模块,查询对应映射表项。
步骤5.2、映射表Cache模块检查对应表项。
步骤5.3、判断是否在SOC SRAM映射表缓冲区中;如是,直接返回对应表项给映射表管理模块;如否,继续步骤5.4。
步骤5.4、是否HMB使能;如否,从NAND存储区加载映射表到SOC SRAM 映射表缓冲区,且返回对应表项给映射表管理模块;如是,继续步骤5.5。
步骤5.5、是否在HMB映射表缓冲区中;如是,将对应表项加载到SOC SRAM映射表缓冲区中,且返回对应表项给映射表管理模块;如否,继续步骤 5.6。
步骤5.6、从NAND存储区加载映射表到HMB映射表缓冲区。
步骤5.7、将对应表项加载到SOC SRAM映射表缓冲区中,且返回对应表项给映射表管理模块。
步骤5.8、返回对应表项给映射表管理模块。
在本实施例中,可以保障主机频繁访问的数据对应的映射表落在高速的 SOCSRAM Cache中,从而可以提供较高的性能。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种基于HMB的映射表管理装置600,该装置包括:
查询模块601,所述查询模块用于映射表管理模块根据主机下发的读写请求到映射表Cache模块中查询对应的映射表项;
第一判断模块602,所述第一判断模块用于在所述映射表Cache模块中检查对应映射表项,判断所述映射表项是否在SOC SRAM映射表缓冲区中;
第二判断模块603,所述第二判断模块用于若所述映射表项不在SOC SRAM 映射表缓冲区中,则继续判断HMB是否使能;
第三判断模块604,所述第三判断模块用于若HMB已使能,则继续判断所述映射表项是否在HMB映射表缓冲区中;
第一加载模块605,所述第一加载模块用于若所述映射表项不在HMB映射表缓冲区中,则从NAND存储区加载映射表到HMB映射表缓冲区;
第二加载模块606,所述第二加载模块用于将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应映射表项给映射表管理模块。
在一个实施例中,如图7所示,提供了一种基于HMB的映射表管理装置 600,该装置还包括第一返回模块607,所述第一返回模块用于:
若所述映射表项在SOC SRAM映射表缓冲区中,则直接返回所述映射表项给映射表管理模块。
在一个实施例中,如图8所示,提供了一种基于HMB的映射表管理装置 600,该装置还包括第二返回模块608,所述第二返回模块用于:
若HMB未使能,则从NAND存储区加载映射表到SOC SRAM映射表缓冲区,并返回对应映射表项给映射表管理模块。
在一个实施例中,如图9所示,提供了一种基于HMB的映射表管理装置 600,该装置还包括第三返回模块609,所述第三返回模块用于:
若所述映射表项在HMB映射表缓冲区中,则将对应映射表项加载到SOC SRAM映射表缓冲区中,并返回对应表项给映射表管理模块。
关于基于HMB的映射表管理装置的具体限定可以参见上文中对于基于 HMB的映射表管理方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于HMB的映射表管理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种用于数据存储及数据灾备的存储分层技术