固态硬盘磁盘阵列映射的方法及其固态硬盘的制作方法

文档序号:6372227阅读:314来源:国知局

专利名称::固态硬盘磁盘阵列映射的方法及其固态硬盘的制作方法
技术领域
:本发明涉及固态硬盘存储
技术领域
,尤其涉及一种固态硬盘磁盘阵列映射的方法及其固态硬盘。
背景技术
:固态硬盘(SolidStateDisk、IDEFLASHDISK)用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片)组成。固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空等、导航设备等领域。参见图1,在一个中国申请号为200710036050.5,发明名称为“基于RAID技术的固态硬盘存储卡”的发明专利中,通过PCI(PeripheralComponentInterconnect,外设组件互连标准)、PCIE(PCI-Express,最新的总线和接口标准)>PCI-X(PeripheralComponentsInterconnect,并连的PCI总线)到SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)的转接卡RAID(RedundantArraysofInexpensiveDisks,磁盘阵列)控制器,提高了系统的容量/读写速度和l/0(input/output,输入输出接口)处理能力。该装置需要有接口规范转接装置的存在,使得多个SSD之间形成RAID的保护装置。但是,对于应用量较大的单个固态硬盘的应用场景下,该方案则无法实施。参见图2图3,在一个中国申请号为201010285233.2,发明名称为在固态存储器中实现RAID”,介绍了在固态存储系统中实现数据存储的系统和技术,着重介绍了一种RAID装置的组成部分尤其是数据纠错保护策略,对于映射策略以及RAIDMeta(RedundantArraysofInexpensiveDisksMeta-information,磁盘阵列兀素可提供有关页面的兀信息),数据的维护未提出有效的解决方案。固态硬盘中的映射策略是整个系统的核心部分,引入RAID支持后,采用何种映射以及RAIDMeta数据管理策略对于产品的内存开销、写放大、设计复杂度等方面影响甚大。如图2所示,LA_X为主机依次写入数据块的逻辑地址,固件中对应分配有PA_X_Y(x为独立可操作的NAND设备号,Y为NAND设备内的最小编程单位全局页地址)物理地址,则系统中需要维护如下两个表逻辑地址到Stripe(条带)的关联和Stripe到物理地址组的关联。在此情形下,对于落在同一个Stripe内的LA地址没有做任何约束,当一个现有条带内的个别数据(如LA_0)被改写后,必须占用新的条带StripeM(其内其他三个数据块发生了变化)。如此,相关映射表的维护代价相当大。另外一方面,当LA_0被复写后,先前旧的LA_0中的数据可能被垃圾回收掉,乃至物理上被擦除。当LA_2001数据出错时,因为此条带内的ΡΑ_0_0的数据已经被擦除,无法用其余4个物理数据来恢复LA_2001的数据。综上可知,现有的固态硬盘磁盘阵列映射技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容针对上述的缺陷,本发明的目的在于提供一种固态硬盘磁盘阵列映射的方法及其固态硬盘,减少了固态硬盘对于额外转接接口部件的依赖性,降低了固态硬盘的制作成本。为了实现上述目的,本发明提供一种固态硬盘磁盘阵列映射的方法,所述方法包括在固态硬盘的逻辑地址层与物理地址层之间设置虚拟地址层;将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。根据所述的方法,所述逻辑地址层的每四个用户数据和所述虚拟地址层的每四个用户数据和一个校验数据组成一个条带,其中所述虚拟地址层的第一到第四个用户数据分别对应于所述逻辑地址层的四个用户数据。根据所述的方法,所述逻辑地址层的逻辑地址与所述条带以及与所述虚拟地址层的虚拟地址之间的映射关系公式为给定的LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为4*Q+04*Q+3;其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址。根据所述的方法,所述虚拟地址与物理地址之间维持一个固定深度的映射表g_v2p_table[MAX_VA]。根据所述的方法,在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。为了实现本发明的另一发明目的,本发明还提供了一种固态硬盘,包括逻辑地址层和物理地址层,所述固态硬盘包括虚拟地址层,设置于所述固态硬盘的逻辑地址层与物理地址层之间;所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。根据所述的固态硬盘,所述逻辑地址层的每四个用户数据和所述虚拟地址层的每四个用户数据和一个校验数据组成一个条带,其中所述虚拟地址层的第一到第四个用户数据分别对应于所述逻辑地址层的四个用户数据。根据所述的固态硬盘,所述逻辑地址层的逻辑地址与所述条带以及与所述虚拟地址层的虚拟地址之间的映射关系公式为给定的LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为4*Q+04*Q+3;其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址;所述虚拟地址与物理地址之间维持一个固定深度的映射表g_v2p_tabIe[MAX_VA]。根据所述的固态硬盘,在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。根据所述的固态硬盘,所述固态硬盘包括磁盘阵列管理模块,用于将建立所述虚拟地址层;并将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;再将所述虚拟地址层的用户数据块分别映射到对应的所述物理地址层上;和/或映射管理模块,用于将建立所述虚拟地址层;并将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;再将所述虚拟地址层的用户数据块分别映射到对应的所述物理地址层上。本发明通过在固态硬盘的逻辑地址层与物理地址层之间设置虚拟地址层;将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。由于在固态硬盘内部所使用的逻辑到物理地址映射的基础上引入了虚拟地址层,提供了固态硬盘的内建RAID支持,无须引入额外的接口规范或者主机端的参与,并且在引入虚拟地址层后,有效降低了RAIDMeta数据管理/内存需求等方面的开销,使得内建RAID功能的固态硬盘产品化成本降低。图I是现有技术中的固态硬盘与PC的连接示意图;图2是现有技术中的逻辑地址到物理地址的映射示意图;图3是现有技术中的逻辑地址到物理地址的映射示意图;图4是本发明第一实施例提供的固态硬盘的结构示意图;图5是本发明一个实施例提供的固态硬盘的结构示意图;图6是本发明一个实施例提供的条带的结构示意图;图7是本发明的一个实施例提供的逻辑地址-虚拟地址-物理地址的间接映射的示意图;图8是本发明一个实施例提供主机复写逻辑地址的示意图;图9是本发明一个实施例提供的固态硬盘磁盘阵列映射的方法流程图。具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参见图4,在本发明的第一实施例中提供了一种固态硬盘100,包括逻辑地址层10和物理地址层20,固态硬盘100包括虚拟地址层30,设置于固态硬盘100的逻辑地址层10与物理地址层20之间;逻辑地址层10的用户数据块分别映射到对应的虚拟地址层30上;虚拟地址层30再将所述用户数据块分别映射到对应的物理地址层20上。参见图5,在本发明的一个实施例中,固态硬盘100包括磁盘阵列管理模块40,用于将建立虚拟地址层30;并将逻辑地址层10的用户数据块分别映射到对应的虚拟地址层30上;再将虚拟地址层30的用户数据块分别映射到对应的物理地址层20上;和/或映射管理模块50,用于将建立虚拟地址层30;并将逻辑地址层10的用户数据块分别映射到对应的虚拟地址层30上;再将所述虚拟地址层30的用户数据块分别映射到对应的物理地址层20上。在该实施例中,固态硬盘100采用内建RAID的方式,减少对于额外转接接口部件的依赖性,降低了产品成本开销;适用于单个或者多个固态硬盘100等各种应用场景。并且通过虚拟地址层30对数据的映射的转换,保证了用户数据的可恢复性。在本发明的第二实施例中,逻辑地址层10的每四个用户数据和虚拟地址层30的每四个用户数据和一个校验数据组成一个条带,其中虚拟地址层30的第一到第四个用户数据分别对应于逻辑地址层10的四个用户数据。在该实施例中,提出了基于虚拟地址的RAID映射/管理策略,在维持对用户寻址方式不变的前提下,可以不需要额外内存开销即可实现RAID条带的管理。在本发明的第三实施例中,逻辑地址层10的逻辑地址与所述条带以及与虚拟地址层30的虚拟地址之间的映射关系公式为给定的LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为4*Q+04*Q+3;其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址。另外,所述虚拟地址与物理地址之间维持一个固定深度的映射表g_v2p_table[MAX_VA]。在该实施例中,如图4所示,主机访问操作如下主机PC端基于逻辑地址来访问固态硬盘100,访问范围可以是LA_0LA_MAX。经过固态硬盘100内部映射管理模块50后,被转化成虚拟地址,进一步地被转换成对应的PA(物理地址)该物理地址是可以在固态硬盘100内可以直接寻址到NAND阵列进行操作的地址。Stripe(条带):是指RAID中具有数据容错/恢复功能的数据块组。如每四个逻辑地址数据块产生一个校验数据块,则对于主机访问范围LA_0LA_MAX,可以分为若干个组,每个组属于一个Stripe。例如StripeO内包含LA_0,LA_1,LA_2,LA_3逻辑地址的用户数据块,分别映射到VA_0,VA_1,VA_2,VA_3(VA_4为对应的校验数据块的虚拟地址);StripeI内包含LA_4,LA_5,LA_6,LA_7逻辑地址的用户数据块,分别映射到VA_5,VA_6,VA_7,VA_8(VA_9为对应的校验数据块的虚拟地址)。对以上的Stripe和LA之间的关系归纳抽象下,则可以表达为StripeN内包含LA_4*N,LA_4*N+1,LA_4*N+2,LA_4*N+3逻辑地址的用户数据块,对应虚拟地址为VA_5*N,VA_5*N+1,VA_5*N+2,VA_5*N+3(VA_5*N+4为该Stripe内的校验数据块的虚拟地址)。在本发明的一个实施例中,映射表如图6所示,在LA与PA之间引入了VA层次,存在如下的关系StripeN的LA组成如下用户数据LA_4*N,LA_4*N+1,LA_4*N+2,LA_4*N+3;校验数据不占用有效LA地址,对主机隐藏。StripeN的VA组成如下用户数据VA_5*N,VA_5*N+1,VA_5*N+2,VA_5*N+3,校验数据VA_5*N+4。LA与Stripe以及VA之间的映射可以由公式推导出来给定LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系该LA所在的Stripe为Q;该LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为4*Q+04*Q+3;VA与PA之间维持一个固定深度的映射表深度为总的页数量。因此全局地维护一个g_v2p_table[MAX_VA],这也是基于页映射常用的表项,其具体的存储策略可以视内存大小全部/部分地加载在内存中。三个地址描述LA/VA/PA,LA到VA的映射如前所描述;而要真正对NAND进行读写操作,需要将VA地址转换成PA地址。g_v2p_table正是这样的目的。其索引为VA,值为PA,MAX_VA为最大的VA数目。从每4个LA对应4个VA以及一个校验数据块VA(共5个VA),所以存在如下关系MAX_VA=MAX_LA*5/4。在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。参见图7,在本发明的另一个实施例中,主机读取LA_0数据N=4*0+0根据g_v2p_table映射表,读取VA_0所在的PA数据。如果数据校验正确,则直接返回给主机。如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验块的产生规则来恢复VA_0的数据。参见图8,主机复写LA_2数据N=4*0+2。当主机复写了LA_2的数据时,为保证StripeO的校验数据的有效性,需要按照如下的规则进行写操作将新的数据写入到PA_2_101地址,更改g_v2p_table[VA_2]=PA_2_101。根据旧的LA_2(VA_2)、旧的VA_4以及新的LA_2’的数据产生新的校验数据块,写入到PA_4_124中,更改g_v2p_table[VA_4]=PA_4_124。在此情形下,StripeO的组成仍然维持VA_0VA_4,其实际的物理地址可以根据g_v2p_table查询获得。即使旧的VA_2所在的PA_2_100物理页被擦除,StripeO内的各个用户数据块的校验数据块仍然有效,因为该StripeO内的各个数据块都是最新的用户有效数据,不会被垃圾回收掉,且其校验数据块也是根据此组用户数据计算产生。因此,可以根据旧的VA_2,旧的VA_4以及新写入的LA_2'(VA_2)数据,生成新的校验数据,写入VA_4中。参见图9,在本发明的一个实施例中,提供了一种固态硬盘100内建RAID映射方法,在固态硬盘100内部所使用的逻辑到物理地址映射的基础上引入了虚拟地址层30,提供了一种固态硬盘100磁盘阵列映射的方法,所述方法包括步骤S901中,磁盘阵列管理模块40/映射管理模块50在固态硬盘100的逻辑地址层10与物理地址层20之间设置虚拟地址层30;步骤S902中,磁盘阵列管理模块40/映射管理模块50将逻辑地址层10的用户数据块分别映射到对应的虚拟地址层30上;步骤S903中,磁盘阵列管理模块40/映射管理模块50再将虚拟地址层30的用户数据块分别映射到对应的物理地址层20上。在该实施例中,固态硬盘100的内建RAID支持,无须引入额外的接口规范或者主机端的参与。引入虚拟地址层30后,有效降低了RAIDMeta数据管理/内存需求等方面的开销,使得内建RAID功能的固态硬盘100产品化成本降低。在本发明的一个实施例中,逻辑地址层10的每四个用户数据和虚拟地址层30的每四个用户数据和一个校验数据组成一个条带,其中虚拟地址层30的第一到第四个用户数据分别对应于逻辑地址层10的四个用户数据。所述校验数据的作用是当StripeN内任意一个用户数据丢失的时候,可以由条带内其他数据以及这个校验数据恢复出来。主机访问是基于逻辑地址LA的,任意一个StripeN内的VA_5*N+4没有映射到任何逻辑地址,所以主机是没有办法访问到该数据的。并且主机能够访问到的LA,有且都有一个唯一的VA地址与之对应(VA_5*N,VA_5*N+1,VA_5*N+2,VA_5*N+3中某一个)。逻辑地址层10的逻辑地址与所述条带以及与虚拟地址层30的虚拟地址之间的映射关系公式为给定的LA(逻辑地址)地址N,存在N=4*Q+R(0<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+RStripeQ内LA地址分别为4*Q+04*Q+3;N=4*Q+R(0<=R<4)实际是对于一个逻辑地址LA_N,对于N,Q为N除以4后整数值,R为对应的余数。因为从前面可知,每4个连续的逻辑地址的用户数据组成了一个Stripe.当采用N=4*Q+R表示后,我们可以方便知道其所在的Stripe为Q,偏移为R。其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址。所述虚拟地址与物理地址之间维持一个固定深度的映射表g_V2P_tabIe[MAX_VA]。在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。综上所述,本发明通过在固态硬盘的逻辑地址层与物理地址层之间设置虚拟地址层;将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。由于在固态硬盘内部所使用的逻辑到物理地址映射的基础上引入了虚拟地址层,提供了固态硬盘的内建RAID支持,无须引入额外的接口规范或者主机端的参与,并且在引入虚拟地址层后,有效降低了RAIDMeta数据管理/内存需求等方面的开销,使得内建RAID功能的固态硬盘产品化成本降低。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。权利要求1.一种固态硬盘磁盘阵列映射的方法,其特征在于,所述方法包括在固态硬盘的逻辑地址层与物理地址层之间设置虚拟地址层;将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。2.根据权利要求I所述的方法,其特征在于,所述逻辑地址层的每四个用户数据和所述虚拟地址层的每四个用户数据和一个校验数据组成一个条带,其中所述虚拟地址层的第一到第四个用户数据分别对应于所述逻辑地址层的四个用户数据。3.根据权利要求2所述的方法,其特征在于,所述逻辑地址层的逻辑地址与所述条带以及与所述虚拟地址层的虚拟地址之间的映射关系公式为给定的LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为:4*Q+04*Q+3;其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址。4.根据权利要求3所述的方法,其特征在于,所述虚拟地址与物理地址之间维持一个固定深度的映射表g_v2p_table[MAX_VA]。5.根据权利要求4所述的方法,其特征在于,在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。6.一种固态硬盘,包括逻辑地址层和物理地址层,其特征在于,所述固态硬盘包括虚拟地址层,设置于所述固态硬盘的逻辑地址层与物理地址层之间;所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。7.根据权利要求6所述的固态硬盘,其特征在于,所述逻辑地址层的每四个用户数据和所述虚拟地址层的每四个用户数据和一个校验数据组成一个条带,其中所述虚拟地址层的第一到第四个用户数据分别对应于所述逻辑地址层的四个用户数据。8.根据权利要求7所述的固态硬盘,其特征在于,所述逻辑地址层的逻辑地址与所述条带以及与所述虚拟地址层的虚拟地址之间的映射关系公式为给定的LA地址N,存在N=4*Q+R(O<=R<4);则存在如下的关系所述LA所在的Stripe为Q;所述LA对应的VA地址为5*Q+R;StripeQ内LA地址分别为:4*Q+04*Q+3;其中,LA表示逻辑地址;Stripe表示条带;VA表示虚拟地址;所述虚拟地址与物理地址之间维持一个固定深度的映射表g_v2p_table[MAX_VA]。9.根据权利要求8所述的固态硬盘,其特征在于,在主机读取LA_0数据N=4*0+0时,根据所述g_v2p_table映射表,读取VA_0所在的物理地址下的用户数据;如果数据校验正确,则直接返回给主机;如果数据校验错误,则读取StripeO内其他VA的数据VA_1/VA_2/VA_3/VA_4,根据校验数据的产生规则恢复VA_0的数据。10.根据权利要求69任一项所述的固态硬盘,其特征在于,所述固态硬盘包括磁盘阵列管理模块,用于将建立所述虚拟地址层;并将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;再将所述虚拟地址层的用户数据块分别映射到对应的所述物理地址层上;和/或映射管理模块,用于将建立所述虚拟地址层;并将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;再将所述虚拟地址层的用户数据块分别映射到对应的所述物理地址层上。全文摘要本发明适用于固态存储
技术领域
,提供了一种固态硬盘磁盘阵列映射的方法及其固态硬盘,所述方法包括在固态硬盘的逻辑地址层与物理地址层之间设置虚拟地址层;将所述逻辑地址层的用户数据块分别映射到对应的所述虚拟地址层上;所述虚拟地址层再将所述用户数据块分别映射到对应的所述物理地址层上。借此,本发明减少了固态硬盘对于额外转接接口部件的依赖性,降低了固态硬盘的制作成本。文档编号G06F11/10GK102830942SQ20121021758公开日2012年12月19日申请日期2012年6月28日优先权日2012年6月28日发明者王猛,徐伟华申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1