一种固态硬盘的内存转换层对映架构及方法与流程

文档序号:15829145发布日期:2018-11-03 00:17阅读:215来源:国知局

本发明涉及固态硬盘领域,更具体地说,涉及一种固态硬盘的内存转换层对映架构及方法。

背景技术

内存转换层中最重要的是逻辑对物理映像表的对映方式。由闪存记忆的特性可知,一个已写入的储存页面,需经过抹除后,才可以写入新的数据。然而,抹除的最小单位储存区块却远大于写入的最小单位储存页面。因此,内存转换层运用了逻辑对物理映像表,当某个逻辑地址所对应到的物理地址中已写入数据时,内存转换层会将此写入数据导向到另外一个空的物理地址当中,并将此逻辑与物理的对应关系,更新到逻辑对物理映像表中。若要读取此逻辑地址的资料时,内存转换层会根据逻辑对物理映像表,找到所对应的物理地址。逻辑对物理映像表的设计将决定对内存的操作效率。其中,若抹除的次数越多,闪存内存的使用寿命越短。另外,在嵌入式的应用中,许多设计是将逻辑对物理映像表存放在ram中,因此逻辑对物理映像表的大小也是在设计时的考虑重点。依照地址映射设计方式的不同,可分成以下三大类:页面映射、块映射、以及4k映射。

对于块映射:在逻辑对物理映像表中建立逻辑储存区块对应到物理储存区块地址的映像表,每次写入数据时就必须要一块空的储存区块,然后将要写的储存页面之前的所有储存页面都由旧的储存区块循序搬移到新的储存区块。使用这种方式逻辑对物理映像表大小会最小。该技术的缺点:每次写入一个储存页面就要更新整个储存区块,所需垃圾回收负担很大,不利小档案存取。

对于页面映射:在逻辑对物理映像表中建立逻辑储存页面对应到物理储存页面地址的映像表,要更新数据时找空的储存页面写入,同时更改逻辑对物理映像表。但这种做法逻辑对物理映像表的大小比块映射大,但可以减少垃圾回收的负担。该技术的缺点:需要更多的空间来存放对应表。

对于4k映射:在逻辑对物理映像表中建立逻辑4k地址对应到物理4k地址的映像表,更新数据时更改逻辑对物理映像表。但这种做法逻辑对物理映像表的大小最大,垃圾回收负担最小。以256gb的固态硬盘(ssd)为例,使用这种方法的逻辑对物理映像表大小是(256gb/4kb)*4byte=256mb。该技术的缺点:逻辑对物理映像表在固态硬盘中要另外找位置来存,如此会占用固态硬盘最大的储存空间来存取这张表;在non-dramssd中,依照目前的映射方式,在作随机存取的时候,会一直从nandflash读取部分逻辑对物理映像表到静态随机存取内存中,并替换上一个映射到的部分逻辑对物理映像表,导致效能不佳。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述内存转换层中映射表占用静态随机存取内存空间过大、随机读取的效能低、以及映射表置换频率高的缺陷,提供一种固态硬盘的内存转换层对映架构及方法。

本发明解决其技术问题所采用的技术方案是:构造一种固态硬盘的内存转换层对映架构,包括:第一层映射表和第二层映射表,其中,

所述第一层映射表用于记录随机存取数据;

所述第二层映射表包括连续存取映射表和随机存取映射表,所述连续存取映射表用于记录写入单元的对映关系,所述随机存取映射表用于记录随机存取所述写入单元所对映的物理地址。

优选地,本发明所述的固态硬盘的内存转换层对映架构,对于所述第一层映射表:所述写入单元为基本映射单位,一个所述写入单元包含多个逻辑块号码;

对于所述第二层映射表:所述连续存取映射表记录全部所述写入单元所对映的物理地址;所述随机存取映射表用于在所述第一层映射表内的一个所述写入单元写满后,将所述写入单元写入闪存内存中,并更新所述随机存取映射表内所述写入单元所对映的物理地址。

优选地,本发明所述的固态硬盘的内存转换层对映架构,所述第一层映射表和第二层映射表存放在静态随机存储内存中。

优选地,本发明所述的固态硬盘的内存转换层对映架构,固态硬盘的控制器包含多个信道,每个所述信道支持多颗闪存内存。

优选地,本发明所述的固态硬盘的内存转换层对映架构,所述写入单元为所述控制器一次同时对闪存内存写入的单位。

优选地,本发明所述的固态硬盘的内存转换层对映架构,所述固态硬盘为non-dram固态硬盘。

另,本发明还提供一种固态硬盘的内存转换层对映方法,所述方法应用于上述的固态硬盘的内存转换层对映架构,包括数据写入过程:

s11:在固态硬盘写入数据过程中,第一层映射表记录写入的逻辑块号码;

s12:在所述逻辑块号码写满一个写入单元后,判断所述写入单元为连续写入还是随机写入;

s13:若为连续写入,则更新第二层映射表的连续存取映射表内所述写入单元所对映的物理地址,并将所述写入单元的数据写入闪存内存中;

s14:若为随机写入,则将所述写入单元的数据写入所述闪存内存中,并更新所述第二层映射表的随机存取映射表中所述写入单元所对映的物理地址。

优选地,本发明所述的固态硬盘的内存转换层对映方法,还包括数据更新过程:

s21:在所述固态硬盘更新数据过程中,所述第一层映像表记录随机写入的所述逻辑块号码;

s22:在所述逻辑块号码写满一个所述写入单元后,更新所述第二层映射表的所述随机存取映像表内所述写入单元对映的物理地址,并将所述写入单元的数据写入所述闪存内存中。

优选地,本发明所述的固态硬盘的内存转换层对映方法,所述数据更新过程还包括:

s23:所述第一层映像表写满所述逻辑块号码后,选择包含所述逻辑块号码最多的所述写入单元;

s24:按照所述写入单元的所述连续存取映像表对映的物理地址读取数据,并更新随机写入所述写入单元内所述逻辑块号码的数据;

s25:将更新后的数据写入所述闪存内存中,并将所述写入单元的物理地址更新至所述第二层映射表的所述连续存取映像表;

s26:释放所述第一层映射表内所述写入单元的所述逻辑块号码。

优选地,本发明所述的固态硬盘的内存转换层对映方法,还包括数据读取过程:

s31:在所述第一层映射表查找所述逻辑块号码是否存在;

s32:若存在,则从所述第二层映射表的所述随机存取映像表得到所述逻辑块号码的物理地址;

s33:若不存在,则在所述第二层映射表的所述连续存取映射表中得到所述逻辑块号码的物理地址。

实施本发明的一种固态硬盘的内存转换层对映架构及方法,具有以下有益效果:该内存转换层对映架构包括:第一层映射表和第二层映射表,其中,第一层映射表用于记录随机存取数据;第二层映射表包括连续存取映射表和随机存取映射表,连续存取映射表用于记录写入单元的对映关系,随机存取映射表用于记录随机存取写入单元所对映的物理地址。通过实施本发明,缩小内存转换层中映射表的大小,节省sram的使用;在随机存取的情况下增加了映射表的命中率,进而提升了随机读取的效能以及减少映射表频繁的置换。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明一种固态硬盘的内存转换层对映架构的结构示意图;

图2是本发明一种固态硬盘的内存转换层对映方法的流程示意图;

图3是本发明一种固态硬盘的内存转换层对映方法中数据更新过程的流程示意图;

图4是本发明一种固态硬盘的内存转换层对映方法中数据读取过程的流程示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

图1是本发明一种固态硬盘的内存转换层对映架构的结构示意图。

具体的,本发明中的固态硬盘包括non-dram固态硬盘,固态硬盘的控制器包含多个信道,每个信道支持多颗闪存内存(nand),其中,闪存内存包含多条用户数据,每条用户数据有对应的逻辑分配地址(logicalallocationaddress,laa)。本发明以写入单元(programunit,pu)作为映像最小单位,写入单元为控制器一次同时对闪存内存写入的单位。例如,控制器有n(n为正整数)个信道,每一信道可支持m(m为正整数)颗闪存内存,闪存内存一次写入的最小单位为page,则一次写入的写入单元的大小就是page*m*n。

该固态硬盘的内存转换层对映架构包括:第一层映射表和第二层映射表,其中,第二层映射表包括连续存取映射表和随机存取映射表。第一层映射表和第二层映射表存放在静态随机存储内存中。

1.第一层映射表用于记录随机存取数据。

具体的,写入单元为基本映射单位,一个写入单元包含多个逻辑块号码。第一层映射表记录随机写入的逻辑块号码。当逻辑块号码的数量写满一个写入单元后,将该写入单元写入闪存内存(nand)中,并更新第二层映射表的随机存取映射表中写入单元所对映到的物理地址。因为静态随机存取内存(sram)存储空间有限,一般无法在sram上记录太多逻辑块号码,而必须更新逻辑对物理映像表(从闪存内存置换上需要被更新的逻辑对物理映像表)。然后因为写入单元映像的关系,缩小了逻辑对物理映像表的大小,这样就可节省空间来存放更多的逻辑块号码,并只需记录开始写入的实体位置即可。

2.第二层映射表包括连续存取映射表和随机存取映射表。

对于第二层映射表:连续存取映射表记录全部写入单元所对映的物理地址;随机存取映射表用于在第一层映射表内的一个写入单元写满后,将写入单元写入闪存内存中,并更新随机存取映射表内写入单元所对映的物理地址。

a、连续存取映射表存放在静态随机存取内存(sram)上,用于记录写入单元的对映关系。例如,一个写入单元pu有16个逻辑块号码lbn,则会在第二层映射表的连续存取映射表的写入单元的第一个位置记录0到15的逻辑块号码所对映的物理地址。根据该连续存取映像表,可推出pu0记录lbn0-lbn15、pu1记录lbn16-lbn31·······,依次类推,该连续存取映像表可记录全部的写入单元所对映到的物理地址,而不用另外记录lbnx、lbny····的实体位置,从而使以往的逻辑对物理映像表变为原来的(1/pu)倍,从而大大节省sram空间。

b、随机存取映射表用于记录随机存取写入单元所对映的物理地址。第一层映像表记录随机写入的逻辑块号码,当逻辑块号码写满一个写入单元后,就将该写入单元写入nand中,并更新第二层映射表中随机存取映像表的写入单元所对映的物理地址。

在写入的时候,当凑满一个写入单元pu的逻辑块号码后,判断该写入单元的数据是连续写入或是随机写入。以连续写入为例,凑满后会更新第二层映射表的连续存取映像表的写入单元所对映到物理地址并将数据写入nand中。

再更新的部分,随机写入则将随机写入的逻辑块号码记录在第一层映像表,凑满一个写入单元的逻辑块号码后,更新第二层随机存取映像表的写入单元所对映到的物理地址,再将数据写入nand中。等到第一层映像表纪录满随机写入的逻辑块号码后,算出最多逻辑块号码被随机写入的写入单元后,依照该写入单元的连续存取映像表的物理地址将数据读取出来,依据随机存取映像表,更新随机写入此写入单元内逻辑块号码的数据,再将更新后的数据写入nand中,并把该写入单元的物理地址更新至第二层映射表的连续存取映像表,最后将该写入单元的逻辑块号码从第一层映射表释放掉。

在读取的时候,首先会去第一层映射表查取是否有对映的逻辑块号码存在,若有就能够从第二层映射表的随机存取映像表得到其物理地址。假设第一层映射表没有查到,则到第二层映射表的连续存取映像表得到其物理地址,使用此方法不需置换逻辑对物理映射表l2p,因此可以提升随机存取的效能。

图2是本发明一种固态硬盘的内存转换层对映方法的流程示意图。

具体的,本发明中的固态硬盘包括non-dram固态硬盘,固态硬盘的控制器包含多个信道,每个信道支持多颗闪存内存。本发明以写入单元(programunit,pu)作为映像最小单位,写入单元为控制器一次同时对闪存内存写入的单位。例如,控制器有n(n为正整数)个信道,每一信道可支持m(m为正整数)颗闪存内存,闪存内存一次写入的最小单位为page,则一次写入的写入单元的大小就是page*m*n。

该固态硬盘的内存转换层对映架构包括:第一层映射表和第二层映射表,其中,第二层映射表包括连续存取映射表和随机存取映射表。第一层映射表和第二层映射表存放在静态随机存储内存中。

该方法应用于上述的固态硬盘的内存转换层对映架构,包括数据写入过程:

s11:在固态硬盘写入数据过程中,第一层映射表记录写入的逻辑块号码。

具体的,写入单元为基本映射单位,一个写入单元包含多个逻辑块号码。第一层映射表记录随机写入的逻辑块号码,当逻辑块号码的数量写满一个写入单元后,将该写入单元写入闪存内存(nand)中,并更新第二层映射表的随机存取映射表中写入单元所对映到的物理地址。因为静态随机存取内存(sram)存储空间有限,一般无法在sram上记录太多逻辑块号码,而必须更新逻辑对物理映像表(从闪存内存置换上需要被更新的逻辑对物理映像表)。然后因为写入单元映像的关系,缩小了逻辑对物理映像表的大小,这样就可节省空间来存放更多的逻辑块号码,并只需记录开始写入的实体位置即可。

s12:在逻辑块号码写满一个写入单元后,判断写入单元为连续写入还是随机写入。

s13:若为连续写入,则更新第二层映射表的连续存取映射表内写入单元所对映的物理地址,并将写入单元的数据写入闪存内存中。

具体的,a、连续存取映射表存放在静态随机存取内存(sram)上,用于记录写入单元的对映关系。例如,一个写入单元pu有16个逻辑块号码lbn,则会在第二层映射表的连续存取映射表的写入单元的第一个位置记录0到15的逻辑块号码所对映的物理地址,根据该连续存取映像表,可推出pu0记录lbn0-lbn15、pu1记录lbn16-lbn31·······,依次类推,该连续存取映像表可记录全部的写入单元所对映到的物理地址,而不用另外记录lbnx、lbny····的实体位置,从而使以往的逻辑对物理映像表变为原来的1/pu倍,从而大大节省sram空间。

s14:若为随机写入,则将写入单元的数据写入闪存内存中,并更新第二层映射表的随机存取映射表中写入单元所对映的物理地址。

具体的,随机存取映射表用于记录随机存取写入单元所对映的物理地址。第一层映像表记录随机写入的逻辑块号码,当逻辑块号码写满一个写入单元后,就将该写入单元写入nand中,并更新第二层映射表中随机存取映像表的写入单元所对映的物理地址。

图3是本发明一种固态硬盘的内存转换层对映方法中数据更新过程的流程示意图。

优选地,本发明的固态硬盘的内存转换层对映方法,还包括数据更新过程:

s21:在固态硬盘更新数据过程中,第一层映像表记录随机写入的逻辑块号码;

s22:在逻辑块号码写满一个写入单元后,更新第二层映射表的随机存取映像表内写入单元对映的物理地址,并将写入单元的数据写入闪存内存中。

优选地,本发明的固态硬盘的内存转换层对映方法,数据更新过程还包括:

s23:第一层映像表写满逻辑块号码后,选择包含逻辑块号码最多的写入单元;

s24:按照写入单元的连续存取映像表对映的物理地址读取数据,并更新随机写入该写入单元内逻辑块号码的数据;

s25:将更新后的数据写入闪存内存中,并将写入单元的物理地址更新至第二层映射表的连续存取映像表;

s26:释放第一层映射表内写入单元的逻辑块号码。

综上,随机写入则将随机写入的逻辑块号码记录在第一层映像表,凑满一个写入单元的逻辑块号码后,更新第二层随机存取映像表的写入单元所对映到的物理地址,再将数据写入nand中。等到第一层映像表纪录满随机写入的逻辑块号码后,算出最多逻辑块号码被随机写入的写入单元后,依照该写入单元的连续存取映像表的物理地址将数据读取出来,依据随机存取映像表,更新随机写入此写入单元内逻辑块号码的数据,再将更新后的数据写入nand中,并把该个写入单元的物理地址更新至第二层映射表的连续存取映像表,最后将该写入单元的逻辑块号码从第一层映射表释放掉。

图4是本发明一种固态硬盘的内存转换层对映方法中数据读取过程的流程示意图。

具体的,数据读取过程包括:

s31:在第一层映射表查找逻辑块号码是否存在;

s32:若存在,则从第二层映射表的随机存取映像表得到逻辑块号码的物理地址;

s33:若不存在,则在第二层映射表的连续存取映射表中得到逻辑块号码的物理地址。

综上,在读取的时候,首先会去第一层映射表查取是否有对映的逻辑块号码存在,若有就能够从第二层映射表的随机存取映像表得到其物理地址。假设第一层映射表没有查到,则到第二层映射表的连续存取映像表得到其物理地址,使用此方法不需置换逻辑对物理映射表l2p,因此可以提升随机存取的效能。

现举例说明本发明的有益效果:

1、缩小内存转换层中映射表的大小以节省sram的使用。

例如,假设4plane256gb大小的ssd,一个写入单元(pu)的大小是16kb(page大小)*4(plane大小)=64kb。假设使用这种方法的第一层映像表能记录512笔逻辑块号码(lbn),其大小是512*4byte=2kb;第二层连续存取逻辑对物理映像表(l2p)大小是(256gb/64kb)*4byte=16mb,第二层随机存取l2p映射表大小是(512/16)*4byte=128byte。由此可见,该发明大幅减少了l2p映射表的大小,能够减少使用静态随机存取内存(sram)的空间。

2、因为使用两层l2p映射表的架构,一定能在静态随机存取内存sram中查询到逻辑地址(la)相对映的物理地址(pa),不需要到nand中查询逻辑对物理映像表(l2p)。其他方法在sram中因为大小的限制,只有部分的l2p在sram中,如果没有查询到的话,则需要从nand中置换其他部分的l2p。因此,本发明使用两层l2p映射表能减少映射表频繁的置换,且在随机存取的情况下的增加映射表的命中率,进而提升了随机读取的效能。

以上实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据此实施,并不能限制本发明的保护范围。凡跟本发明权利要求范围所做的均等变化与修饰,均应属于本发明权利要求的涵盖范围。

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