二级映射表数据映射方法、装置、存储介质及电子设备与流程

文档序号:23350213发布日期:2020-12-18 16:55阅读:206来源:国知局
二级映射表数据映射方法、装置、存储介质及电子设备与流程

本发明涉及存储芯片数据存储技术领域,特别涉及一种二级映射表数据映射方法、装置、存储介质及电子设备。



背景技术:

目前在固件领域,针对大容量ssd(solidstatedisk或solidstatedrive,指固态硬盘或固态驱动器)的映射机制一般采用逐级化简的方式;例如针对1tb的ssd,以4kb大小为单位进行映射索引,每条映射项需要4bytes空间,1tb的ssd需要1gb大小的一级映射空间;同样的索引方式,一级映射表也按照4kb的映射索引,每条映射项需要4bytes空间,1gb的一级映射表需要1mb大小的二级映射空间;但是对于dram-less(非易失性内存)类型的主控芯片来说,1mb的sram(staticrandom-accessmemory,静态随机存取存储器)同样是巨大的空间开销;因此常见的做法是将二级映射表,通过三级映射表来索引,三级映射表的大小就只需要1kb的大小;

这样的好处是三级映射表足够小,可以常驻在sram,但引入的问题是:

1、增加了读写过程中查询元数据的开销;如果需要访问二级映射表,需要从三级映射表中获取地址,然后从nand(闪存)介质中读取;

2、针对二级映射表的管理也需要采用一级映射表的管理机制,包括内存页面配额的设置、nand空间的分配和回收;

3、二级映射表的访问会触发三级映射表的读写,增加了系统的读写负担。



技术实现要素:

本发明所要解决的技术问题是:提供一种二级映射表数据映射方法、装置、存储介质及电子设备,在支持大容量ssd的空间访问的同时,避免了引入三级映射表所造成的问题。

为了解决上述技术问题,本发明采用的技术方案为:

一种二级映射表数据映射方法,包括步骤:

在nand上预先分配一个二级映射表存储区;

接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区;

将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种二级映射表数据映射装置,包括:

分配模块,用于在nand上预先分配一个二级映射表存储区;

存储模块,用于接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区;

保存模块,将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序存储有上述所示的二级映射表数据映射方法。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所示的二级映射表数据映射方法。

本发明的有益效果在于:一种二级映射表数据映射方法、装置、存储介质及电子设备,通过物理页的结构来对二级映射表数据表数据进行存储,一方面,通过物理页面地址可以访问对应的物理页,因此在内存中只需要存储有物理页面地址即可,从而支持大容量ssd的空间访问。同时因为没有采用三级映射表来实现大容量ssd的空间访问,从而避免了引入三级映射表的开销,不仅简化了firmware(固件)的管理还可以提升系统的性能。

附图说明

图1为本发明实施例的二级映射表数据映射方法的流程示意图;

图2为本发明实施例涉及的新数据块的选取流程示意图;

图3为本发明实施例涉及的blockstripe的说明示意图;

图4为本发明实施例的二级映射表数据映射方法的数据存储示意图;

图5为现有技术中的三级映射表的数据存储示意图;

图6为本发明实施例的二级映射表数据映射装置的模块连接示意图;

图7为本发明实施例的电子设备的结构示意图。

标号说明:

1、二级映射表数据映射装置;2、电子设备;11、分配模块;12、存储模块;21、处理器;22、存储器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1至图4,本发明实施例提供了一种二级映射表数据映射方法,包括步骤:

在nand上预先分配一个二级映射表存储区;

接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区;

将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中。

从上述描述可知,通过物理页的结构来对二级映射表数据表数据进行存储,一方面,通过物理页面地址可以访问对应的物理页,因此在内存中只需要存储有物理页面地址即可,从而支持大容量ssd的空间访问。同时因为没有采用三级映射表来实现大容量ssd的空间访问,从而避免了引入三级映射表的开销,不仅简化了firmware(固件)的管理还可以提升系统的性能。

进一步地,所述二级映射表存储区至少能够存储n个物理页,所述n根据ssd的容量所需要的二级映射空间确定。

从上述描述可知,ssd的容量和映射索引的空间大小均为预先固定的,由此可以计算出写满整个ssd时所需要的二级映射数据所占用的二级映射空间,而对于预设大小的物理页来说,可以根据写满整个ssd时二级映射空间来得到所需要的物理页的个数,从而保证所分配的二级映射表存储区足够存储写满整个ssd时所需要的二级映射数据。

进一步地,每一个所述物理页包括控制头信息和已存储二级映射表数据,所述控制头信息中包括头部信息和n个所述物理页一一对应的物理页面地址,所述头部信息包括魔术字和crc值;

所述二级映射表数据映射方法还包括以下步骤:

当接收到二级映射表数据读取请求时,根据所述二级映射表数据读取请求计算出所需要读取的目标二级映射表数据所存储的目标物理页以及在所述目标物理页中的目标物理地址;

判断所述目标物理页中存储的魔术字和预设魔术字是否一致,若一致,则计算所述目标物理页中除所述头部信息以外的其他数据的crc值,判断计算出来的crc值与所述目标物理页中存储的crc值是否一致,若一致,则从所述目标物理地址读取目标二级映射表数据。

从上述描述可知,通过魔术字(magicword)和crc(cyclicredundancycheck,循环冗余校验)值来防止物理页的存储数据被篡改以及保证物理页的存储数据的完整性。

进一步地,得到所述n的步骤包括如下:

通过第一不等式计算所分配的物理页的个数n,所述第一不等式为:

(a-(b+c*n))*n≥m

所述a为单个所述物理页的存储空间,所述b为所述头部信息的存储空间,所述c为单个所述物理页面地址的存储空间,所述m为ssd的容量所需要的二级映射空间。

从上述描述可知,通过上述公式以快速得到所需要的物理页的个数,从而分配足够的空间进行存储。

进一步地,所述在nand上预先分配一个二级映射表存储区具体包括以下步骤:

分配一条处于空闲状态的blockstripe来作为存储所述二级映射表数据的二级映射表存储区;

所述接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区具体包括以下步骤:

按照从左到右的预设顺序,在所述二级映射表存储区上每次分配一个物理页;

接收待存储二级映射表数据,将所述待存储二级映射表数据写入到所分配的物理页上,直到当前分配的物理页写满数据,继续分配一个新的物理页来存储新的二级映射表数据。

进一步地,当每一个物理页写满数据时,还包括以下步骤:

根据当前分配的物理页所对应的物理页面地址对内存进行更新。

进一步地,还包括以下步骤:

若所分配的blockstripe的空间已存满,则将内存中所存储的n个物理页面地址所对应的物理页上的数据整体搬移至新分配的blockstrip上。

从上述描述可知,针对二级映射表的nand空间进行顺序分配,在后续垃圾回收时,只需要将n个物理页的数据整体搬移至新分配的blockstripe中,老的blockstripe则进行整体回收,避免出现过多垃圾回收的操作。

请参照图6,本发明另一实施例提供了一种二级映射表数据映射装置1,包括:

一种二级映射表数据映射装置1,包括:

分配模块11,用于在nand上预先分配一个二级映射表存储区;

存储模块12,用于接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区;

保存模块13,将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中。

其中,关于分配模块11、存储模块12和保存模块13所实现的具体过程和对应的效果,可以参照上述实施例的二级映射表数据映射方法中的相关描述。

本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序存储有上述实施例的二级映射表数据映射方法。

其中,关于本实施例中的计算机程序中包含的二级映射表数据映射方法的具体实现过程和对应效果,可以参照上述实施例的二级映射表数据映射方法中的相关描述。

请参照图7,本发明另一实施例提供了一种电子设备2,包括存储器22、处理器21及存储在存储器22上并可在处理器21上运行的计算机程序,所述处理器21执行所述计算机程序时实现上述实施例的二级映射表数据映射方法。

其中,关于本实施例中处理器21所实现的二级映射表数据映射方法的具体实现过程和对应效果,可以参照上述的实施例的二级映射表数据映射方法中的相关描述。

本申请的二级映射表数据映射方法和对应的装置、存储介质及电子设备2主要应用于对任何ssd需要二级映射表数据映射的应用场景,尤其是大容量的ssd,比如500gb、1tb等等的ssd,以下结合具体的应用场景进行说明:

根据以上所述,并结合图1至图4,本发明的实施例一为:

一种二级映射表数据映射方法,包括步骤:

s1、在nand上预先分配一个二级映射表存储区;

其中,二级映射表存储区至少能够存储n个物理页,n根据ssd的容量所需要的二级映射空间确定。

在本实施例中,ssd的容量为1tb,映射索引的空间大小为4kb,则需要1mb的二级映射空间,单个物理页的存储空间为16kb,每个物理页面地址项为4bytes,则需要多个物理页进行存储。

如图2上述为单个物理页的存储结构,其中,每一个物理页包括控制头信息和已存储二级映射表数据,控制头信息中包括头部信息和n个物理页一一对应的物理页面地址,头部信息包括魔术字和crc值。图2中的head即为头部信息,page_0为物理页的索引,page_0address至page_naddress即为n个物理页一一对应的n个物理页面地址。

由此,每一个16k的物理页并不能全部用来存储二级映射表数据。因此,在计算所需要的物理页的个数n时通过第一不等式来计算,第一不等式为:

(a-(b+c*n))*n≥m

其中,a为单个物理页的存储空间,b为头部信息的存储空间,c为单个物理页面地址的存储空间,m为ssd的容量所需要的二级映射空间。

对应于本实施例,即为(16*1024-(8+4*n))*n>=1024*1024(1mb),求得n为66,即需要66个物理页,这样,由于每个二级映射表项的大小为4bytes,则每个物理页除去控制头信息的大小之外的部分还可以存储4028个二级映射表项。

对于本实施例来说,更具体地,该预设魔术字保存在固件(firmware)中,当需要进行比较时,从该固件中读取该预设魔术字。

在本发明实施例中,每个物理页中的头部信息中保存的魔术字根据实际需要进行设置,可将所有的物理页的头部信息中的魔术字设置为统一的字段或者字符,如0xabcdefbc,则此时该固件中保存的预设魔术字即为0xabcdefbc,若物理页中的头部信息中的魔术字设置成不同的字段或者字符,则该固件中保存有对应关系表,该对应关系表中保存有每一物理页的魔术字对应的预设魔术字。当物理页中的头部信息的魔术字不一样时,在进行魔术字比较时,需要先获取该需要比较的物理页的标识信息,该标识信息包括编号或者关键字等,根据该标识信息读取该固件中保存的对应关系表的预设魔术字,根据读取的预设魔术字与该物理页中的魔术字进行比较。

本实施例中,先比较魔术字,该魔术字的比较结果表示该物理页中保存的数据是否为二级映射表数据,再计算crc值则是判断该二级映射表数据是否有篡改,如果有数据变化则计算的crc和保存的crc会不一致。

s2、接收待存储二级映射表数据,将待存储二级映射表数据按照物理页的结构存储在二级映射表存储区。

在本实施例中,将二级映射表数据和控制头信息整体打包写到nand(闪存)上,减少了需要额外单独写三级映射表的开销,不仅简化了流程还可以提升性能。

例如系统下发了lba(logicblockaddress,逻辑区块地址)56842365的写请求,该写请求的数据写到了paa(logicareaaddress,物理地址)为0x345e23d4;按照4k的映射管理,首先计算lba->laa:

laa(7105295)=56842365/8(8sector=4kb)

通过laa计算二级映射表的索引:

二级映射表索引(6938)=7105295/1024(4kb/paa大小4bytes=1024);

如果使用三级映射表的机制,则需要计算二级映射表索引在三级映射表中的位置:

三级映射表索引(6)=6398/1024(4kb/paa大小=1024);

因此使用三级映射表的机制,一次写需要更新一级映射表、二级映射表和三级映射表;而使用本实施例,通过计算好的二级映射表索引(6938),可以直接算出二级映射数据落在66个物理页中索引为1(6938/4028)的物理页,直接更新该物理页和控制器头信息中索引为1的paa,保存下即可,减少一次更新三级映射表的操作。

s3、将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中;

这样,对于1tb的ssd来说,内存只需要维护66个物理页面地址即264bytes即可,而在上电扫描过程中,只要找到最新的page数据,即可以找到66个物理页面地址,恢复所有的二级映射表数据。

其中,每次分配新的物理页,并且写完成后,都需要将更新的物理页面地址保存在内存中,以使得内存里保存的均为有效的物理页面地址。

s4、当接收到二级映射表数据读取请求时,根据二级映射表数据读取请求计算出所需要读取的目标二级映射表数据所存储的目标物理页以及在目标物理页中的目标物理地址;

判断目标物理页中存储的魔术字和预设魔术字是否一致,若一致,则计算目标物理页中除头部信息以外的其他数据的crc值,判断计算出来的crc值与目标物理页中存储的crc值是否一致,若一致,则从目标物理地址读取目标二级映射表数据。

根据以上所述,并结合图1至图4,本发明的实施例二为:

一种二级映射表数据映射方法,在上述实施例一的基础上,步骤s1具体包括以下步骤:

分配一条处于空闲状态的blockstripe来作为存储二级映射表数据的二级映射表存储区;

如图4所示,channel即为数据通道,block即为数据块,为ssd的最小擦除单元,plane即为数据面,为ssd的最小执行单元,lun即为逻辑单元号,target即为目标,blockstripe即每个plane上的相同位置的block组成的条带块。

其中,步骤s2具体包括以下步骤:

s21、按照从左到右的预设顺序,在二级映射表存储区上每次分配一个物理页;

如图4所示,我们假设分的是blockn,按照上述实施例一中对1tb的ssd的分析,每一个物理页中存储有4028个二级映射表项,由此,每产生一个二级映射表项,则先分配一个物理页。

s22、接收待存储二级映射表数据,将待存储二级映射表数据写入到所分配的物理页上,直到当前分配的物理页写满数据,根据当前分配的物理页所对应的物理页面地址对内存进行更新,继续分配一个新的物理页来存储新的二级映射表数据;

在本实施例中,将二级映射表项填入到所分配的物理页中,如分配到图4中的page0,待page0这个物理页分配完成后继续分配page1的空间,如此循环直到整条blockstripe都分配完成。

s23、若所分配的blockstripe的空间已存满,则将内存中所存储的n个物理页面地址所对应的物理页上的数据整体搬移至新分配的blockstrip上。

一旦整条blockstripe的空间分配完后,而这条blockstripe只用来存储二级映射表数据,因此,整条blockstripe最多只有66个物理页里的数据为有效数据,此时,只需要将66个物理页的数据整体搬移至新分配的blockstripe中,老的blockstripe则进行整体回收。

而现有技术中如5所示使用三级映射表的方式,一旦blockstripe分配完成则需要将256(三级映射表大小为1kb,每个paa大小为4bytes,所以三级映射表为256个paa)个paa的数据搬迁至新的blockstripe上,因此本实施例能避免出现过多垃圾回收的操作。

请参照图4,本发明的实施例三为与上述实施例一或二中的二级映射表数据映射方法相对应的一种二级映射表数据映射装置1,包括:

分配模块11,用于在nand上预先分配一个二级映射表存储区;

存储模块12,用于接收待存储二级映射表数据,将所述待存储二级映射表数据按照物理页的结构存储在所述二级映射表存储区;

保存模块13,将存储所述待存储二级映射表数据的所有物理页面地址保存在内存中。

本发明的实施例四为与上述实施例一或二中的二级映射表数据映射方法对应的一种计算机可读存储介质,其上存储有计算机程序,计算机程序存储有如上实施例一或二中的二级映射表数据映射方法。

请参照图5,本发明的实施例五为与上述实施例一或二中的二级映射表数据映射方法相对应的一种电子设备2,包括存储器22、处理器21及存储在存储器22上并可在处理器21上运行的计算机程序,其中,处理器21执行计算机程序时实现上述实施例一或二中的二级映射表数据映射方法。

在本申请所提供的五个实施例中,应该理解到,所揭露的方法、装置、存储介质以及电子设备2,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

综上所述,本发明提供的一种二级映射表数据映射方法、装置、存储介质及电子设备,通过物理页的结构来对二级映射表数据表数据进行存储,一方面,通过物理页面地址可以访问对应的物理页,因此在内存中只需要存储有物理页面地址即可,从而支持大容量ssd的空间访问。同时因为没有采用三级映射表来实现大容量ssd的空间访问,从而避免了引入三级映射表的开销,不仅简化了firmware(固件)的管理还可以提升系统的性能。针对二级映射表的nand空间进行顺序分配,在后续垃圾回收时,只需要将n个物理页的数据整体搬移至新分配的blockstripe中,老的blockstripe则进行整体回收,避免出现过多垃圾回收的操作。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1