一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、装置、电子设备及存储介质与流程

2022-07-17 00:03:36 来源:中国专利 TAG:


1.本技术涉及电数据处理技术领域,具体涉及一种数据处理方法、装置、电子设备及存储介质。


背景技术:

2.采用闪存(flash芯片)的固态硬盘(solid state disk或solid state drive,简称ssd),ssd的主控制器需使用l2p表(logic lba to physical address,逻辑到物理地址映射表)进行闪存管理,比如从ssd读取数据、向ssd中写入数据、对ssd进行垃圾回收操作等闪存操作时,都需要从l2p表中获取被管理操作的闪存对应的物理地址,其中l2p通常缓存于固态硬盘的ddr(double data rate synchronous dynamic random access memory,双倍速率同步动态随机存储器)。
3.鉴于ddr的内在特性,其缓存的数据容易发生位反转(bitflip,也可称位翻转)现象,因而一旦l2p表中的物理地址值发生了位反转,即l2p表中物理地址被映射错误,而读写系统又未对该地址值进行有效纠错,则当系统按错误的物理地址去管理闪存的数据时,必然造成数据错误,甚至造成整个盘片进入一个非法状态。因此,当ddr缓存数据出现位反转现象后,若未能作有效纠错,将非常容易导致用户数据错误、丢失,甚至产生严重损失后果。
4.现有固态硬盘应用方案中,为了保证固态硬盘的ddr数据可靠,固态硬盘控制器通常基于ecc技术(error correcting code,错误检查及纠正技术)提供1 bit纠错、2bit检错功能。但是,ecc只能针对1bit位反转情形进行1bit纠错、2bit检错,当ddr的数据存在多位反转情况时,ecc显得无能为力。
5.因此,在面对存放于ddr的l2p表数据可能存在多位反转而需要进行数据检错及纠错时,亟需一种新的数据处理方案。


技术实现要素:

6.有鉴于此,本说明书实施例提供一种数据处理方法、装置、电子设备及存储介质,可提高了l2p表的数据可靠性,有利于提高固态硬盘执行数据操作时的安全性和可靠性。
7.本说明书实施例提供以下技术方案:本说明书实施例提供一种数据处理方法,应用于固态硬盘的控制器,所述数据处理方法包括:接收对l2p表的数据更新请求,其中所述l2p表缓存于固态硬盘的ddr中,所述数据更新请求中包含有待更新到所述l2p表中的第一物理地址数据;根据所述第一物理地址数据确定校验码的新值,其中所述校验码的新值由所述校验码的旧值与所述第一物理地址数据进行异或逻辑运算得到,所述校验码的旧值为生成所述校验码的新值前所述校验码对应的数值;将所述校验码的新值更新到目标存储器以更新所述校验码的旧值,以及将所述第一物理地址数据更新到所述l2p表中,其中所述目标存储器非所述ddr。
8.本说明书实施例还提供一种数据处理方法,应用于固态硬盘的控制器,所述数据处理方法包括:接收主机对固态硬盘发起的数据操作指令,其中所述数据操作指令中包含有被操作的目标闪存对应的逻辑地址数据;从l2p表中确定所述逻辑地址数据对应的目标物理地址数据,其中所述l2p表缓存于所述固态硬盘的ddr中;获取校验码的当前值,其中所述校验码的当前值为由缓存于所述l2p表中的所有物理地址数据在缓存进所述l2p表中前共同进行异或逻辑运算得到的数据,所述校验码的当前值缓存于目标存储器,所述目标存储器非所述ddr;根据所述校验码的当前值确定第一地址数据,其中所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述目标物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到;根据所述第一地址数据对所述目标闪存执行所述数据操作指令。
9.本说明书实施例还提供一种数据处理装置,应用于固态硬盘的控制器,所述数据处理装置包括:第一接收模块,接收对l2p表的数据更新请求,其中所述l2p表缓存于固态硬盘的ddr中,所述数据更新请求中包含有待更新到所述l2p表中的第一物理地址数据;第一确定模块,根据所述第一物理地址数据确定校验码的新值,其中所述校验码的新值由所述校验码的旧值与所述第一物理地址数据进行异或逻辑运算得到,所述校验码的旧值为生成所述校验码的新值前所述校验码对应的数值;第一控制模块,将所述校验码的新值更新到目标存储器以更新所述校验码的旧值,以及将所述第一物理地址数据更新到所述l2p表中,其中所述目标存储器非所述ddr。
10.本说明书实施例还提供一种数据处理装置,应用于固态硬盘的控制器,所述数据处理装置包括:第二接收模块,接收主机对固态硬盘发起的数据操作指令,其中所述数据操作指令中包含有被操作的目标闪存对应的逻辑地址数据;第二确定模块,从l2p表中确定所述逻辑地址数据对应的目标物理地址数据,其中所述l2p表缓存于所述固态硬盘的ddr中;第一获取模块,获取校验码的当前值,其中所述校验码的当前值为由缓存于所述l2p表中的所有物理地址数据在缓存进所述l2p表中前共同进行异或逻辑运算得到的数据,所述校验码的当前值缓存于目标存储器,所述目标存储器非所述ddr;第一计算模块,根据所述校验码的当前值确定第一地址数据,其中所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述目标物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到;第二控制模块,根据所述第一地址数据对所述目标闪存执行所述数据操作指令。
11.本说明书实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:本说明书中任一项所述的数据处理方法。
12.本说明书实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时执行本说明书中任一项所述的数据处理方法。
13.与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:在将每一个物理地址数据缓存进l2p表中时,预先根据这些物理地址数据生成对应的校验码,以便后续根据校验码对l2p表中的任意一个物理地址数据进行可靠的校验,而且通过该校验码后续可以对缓存于ddr的l2p表中数据进行多比特位反转的纠错,保证固态硬盘的数据可靠性。还有,校验码是由这些物理地址进行异或逻辑运算得到,占用极少数据量,可节省存储空姐,而且校验码与这些物理地址数据分开存储,即物理地址数据通过l2p表存储于ddr中,而校验码存储于其他存储器中,因而即使存放于ddr中的l2p表数据发生了位反转,后续只需要根据校验码反算出正确的物理地址数据,可利用反算得到的物理地址数据对l2p表的物理地址数据进行检测、校验、纠错等。
附图说明
14.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
15.图1是本技术中现有固态硬盘基于l2p表进行数据操作的示意图;图2是本技术中优化改进后的固态硬盘基于l2p表进行数据操作的示意图;图3是本技术中任意一个物理地址更新入l2p表中时数据处理方法的流程图;图4是本技术中对l2p表中任意一个物理地址数据进行维护检测的流程图;图5是本技术中任意一个物理地址更新入l2p表中时数据处理装置的结构示意图;图6是本技术中固态硬盘执行数据操作时数据处理方法的流程图;图7是本技术中固态硬盘执行数据操作时数据处理装置的结构示意图。
具体实施方式
16.下面结合附图对本技术实施例进行详细描述。
17.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
18.要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本技术,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例
来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
19.还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
20.另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践。
21.目前,现有固态硬盘控制器对ddr出现1 bit错误,可以根据ecc进行纠错,对2bit有检错功能。一旦存放在ddr中l2p出现多位翻转,将会导致错误或无效的数据被读出。
22.以图1为例,系统读lba(logical block address,逻辑区块地址)的8个sector(lba0到lba7)流程如下:1. 首先host发起一笔从lba0到lba7读操作;2. 固件收取到这笔操作命令后,将转化(convert)这笔命令的逻辑地址为翻译单元(logic translation unit,ltu,其中ltu基于4k),也就是转化为ltu0;3. 然后固件将从在ddr中的l2p表中查询实际nand的物理地址(flash physical address,fpa);4. 固件得到该fpa地址之后,发起对nand的读操作。
23.但是,在上述第3步读操作中,一旦存放在ddr中的物理地址发生了位反转,即ltu0所对应的fpa发生了位反转,将映射到错误的物理地址上,这时在第4步中将从一个错误的地址读取一个错误的数据。例如,假定ltu0中所对应fpa的值是0x1000a5,如果bit 0发生位反转,那么该fpa所对应的值变为0x1000a4,本应从nand物理位置0x1000a5中读取的数据,结果是将从0x1000a4中读取,显然读取数据有误。
24.现有方案中固态硬盘的控制器可以通过ecc技术提供1 bit纠错、2bit检错的功能,譬如以上例,fpa的值是0x1000a5,仅出现1bit位反转(bit 0)后变为0x1000a4,控制器进行ecc纠错后,可以对出错的1bit进行纠错。
25.但是,ecc技术只能提供1 bit纠错、2bit检错的功能,当存在多位出错(即多位发生位反转),虽然控制器基于ecc技术能够检测到数据有错,将无法纠正发生位反转的数据,但至于是哪两个bit位出错,以及反转位上真实数据应该是1还是0,显得无能为力。譬如fpa的值是0x1000a5,发生了两位错误(bit0,bit1),该值变化为0x1000a6。
26.有鉴于此,发明人通过对固态硬盘及其校验方式进行深入研究及改进探索后,本说明书实施例提出了一种对多位反转进行检错及纠错的数据处理方案:如图2所示,一方面,在每一个新物理地址(fpa)数据更新到l2p表时,首先利用该新物理地址数据生成当前l2p表对应的新校验码,其中校验码可按以下异或逻辑运算式产生:“新校验码=旧校验码

新物理地址”,然后将该新物理地址更新存入l2p表中,即该新物理地址数据可以通过ltu进行映射后存入到ddr中的l2p表中,以及将校验码存入到目标存储器中,其中目标存储器并非用于存放该l2p表的ddr,因而校验码与物理地址数据分开存放,比如目标存储器为容易发生位反转的存储器(如sram(static random-access memory,静态随机存取存储器)),而
且随着物理地址数据不断更新存入l2p表中时,校验码也随之更新,这样可以使用一个校验码来表征这个l2p表中物理地址数据的校验情况,而且校验码可以与物理地址具有相同比特位数的数据即可,可节省大量存储器资源;另一方面,在对l2p表中的任意一个物理地址进行检测时,即确定该物理地址在l2p表中是否发生了位反转时,可利用当前l2p表对应的校验码与当前存在于该l2p表中的所有物理地址(除待校验物理地址外)进行异或逻辑运算获得一个新物理地址数据,即形成待校验物理地址对应的新地址数据,从而可利用新地址数据对待校验物理地址发生位反转的具体比特位进行检测、纠错。
27.例如,将4byte物理地址数据(记为fpa)更新入l2p表的示意如下:第一次l2p表被更新入首个物理地址(记为fpa_0)时,可在目标存储器(如sram)中会开辟一个4 byte 存储空间(即存放校验码的存储空间),并将该存储空间标记为raid,以及将raid进行赋值,比如先将raid初始化为0,进而将原raid与需要更新入l2p表的fpa_0进行异或逻辑运算,以形成新校验码raid,或者直接将fpa_0对raid进行赋值,即raid=fpa_0;第二次l2p表被更新入第二个物理地址(记为fpa_1)时,将sram中原raid与需要更新入l2p表的fpa_1作异或逻辑运输以更新校验码,即新校验码raid=raid

fpa_1=fpa_0

fpa_1;第三次l2p表被更新入第三个物理地址(记为fpa_2),将sram中原raid与需要更新入l2p表的fpa_2作异或逻辑运输以获得新校验码,即raid=raid

fpa_2=fpa_0

fpa_1

fpa_2;以此类推,第n次l2p表被更新入第n个物理地址数据(记为fpa_n),将sram中原raid与需要更新入l2p表的fpa_n作异或逻辑运输以更新校验码,即新校验码raid=raid

fpa_n=fpa_0

fpa_1

fpa_2
⊕…⊕
fpa_n。
28.例如,针对l2p表中存在位反转的一个4byte的物理地址数据,检测哪些比特位发生了位反转的检测示意如下:基于前述示例的说明,现假设第一个物理地址数据(即fpa_0)发生了位反转,此时可通过校验码及其他物理地址数据反算获得一个新物理地址数据fpa_0
ˊ
,即fpa_0
ˊ
=raid

fpa_1

fpa_2
⊕…⊕
fpa_n,其中raid为当前l2p表(即已更新入前述第一个物理地址fpa_1至第n个物理地址fpa_n的l2p表)对应的校验码数据,因而可将获得的新物理地址数据fpa_0
ˊ
与当前l2p表存储的fpa_0按比特位进行比较,即可获知当前l2p表存储的fpa_0具体是哪些比特位发生了反转,以及发生了位反转的比特位上的反转前和反转后对应的数值是1还是0。
29.以存有三个物理地址数据更新入l2p表为例子,对校验码变化以及利用校验码检测比特位的位反转及真实值等进行示意说明如下:假设:fpa_0=0x1000(十六进制表示的数据),fpa_1=0x20a5,fpa_2=0x2000;第一次l2p被更新入fpa_0时,将fpa_0对应的校验码raid更新到sram中,即在sram中开辟一个4 byte存储空间,用于存储raid数据,此时 raid的数据为fpa_0,即raid=fpa_0;第二次l2p被更新入fpa_1时,sram中的raid与fpa_1进行异或逻辑运算后更新raid数据,即raid的新数据如下:raid=0x1000

0x20a5=0x30a5;第三次l2p被更新入fpa_2时,sram中的raid与fpa_2进行异或逻辑运算后更新
raid数据,即raid的新数据如下:raid=0x30a5

0x2000=0x1000

0x20a5

0x2000=0x10a5。
30.因此,当前存放了前述三个物理地址数据的l2p表,其对应的校验码为4byte的数据:0x10a5。
31.现假设fpa_0 发生了bit0和bit 1的位反转,即fpa_0由数据0x1000变为数据0x1003;进而,基于前述进行反算后,获得一个新物理地址数据fpa_0
ˊ
,其中fpa_0
ˊ
=raid

fpa_1

fpa_2,亦即fpa_0
ˊ
=0x10a5

0x20a5

0x2000=0x1000;可见,根据新物理地址数据fpa_0
ˊ
,获知fpa_0中出现多比特位的位反转,而且利用新物理地址数据fpa_0
ˊ
,不仅能够获知具体是哪些比特位发生了位反转,还能获知这些发生了位反转的比特位的真实值,甚至可以对发生了位反转的物理地址数据进行纠错,比如将fpa_0由错误数据0x1003纠正为正确数据0x1000。
32.因此,通过在物理地址进入l2p表时,即该物理地址在l2p表中形成映射关系时,同时利用该物理地址产生校验码,即使物理地址不断进入到l2p表中,因校验码不断被更新,所以l2p表中所有物理地址均对应一个校验码,进而通过该校验码,可以对l2p表中任意一个物理地址数据进行反算来进行位反转的检测、校验、纠错等,有效解决了固态硬盘因ddr存在的位反转特性导致l2p表中的数据不可靠的问题,保证了固态硬盘的数据操作安全、可靠。
33.以下结合附图,说明本技术各实施例提供的技术方案。
34.如图3所示,本说明书实施例提供一种数据处理方法,该数据处理方法可以应用于固态硬盘的控制器中,有利于固态硬盘在实时维护硬盘数据的可靠性。其中,所述数据处理方法可包括以下流程步骤:步骤s202、接收对l2p表的数据更新请求,其中所述l2p表缓存于固态硬盘的ddr中,所述数据更新请求中包含有待更新到所述l2p表中的第一物理地址数据。
35.在固态硬盘中,采用l2p表存放逻辑区块地址(lba)到物理区块地址之间的映射关系,而且l2p表存放于ddr中。因此,固态硬盘的控制器(也称主控制器)可以通过该l2p表对各个物理区块存储单元进行有效管理,比如固态硬盘的控制器需要对一个物理区块进行操作(比如读取数据、写入数据等)时,接收到文件系统发出的逻辑区块地址,然后根据该逻辑区块地址从l2p表中寻找到相应的物理区块地址,最后根据寻找到的物理区块地址对该物理区块地址对应的存储单元进行操作。
36.实施中,当有新数据要写入固态硬盘时,主控制器将该新数据写入到空白的闪存空间(即已擦除状态的存储空间)内,然后对应更新l2p表中的数据,这时主控制器通常接收到一个数据更新请求,通过该数据更新请求对l2p表的数据(即逻辑区块地址到物理区块地址之间映射关系)进行更新,其中更新请求中可以附带有需要更新的物理区块地址(比如记作第一物理地址数据)。因此,控制器在接收到对l2p表的数据进行更新的更新请求时,可从该请求从提取出相应的物理地址数据。
37.需要说明的是,更新请求中的物理地址数据,可以为直接存放于请求中的指定数据,也可以为根据请求中的相关数据而进一步确定的数据,这里对物理地址数据在请求中的形式不作限定。
38.步骤s204、根据所述第一物理地址数据确定校验码的新值,其中所述校验码的新值由所述校验码的旧值与所述第一物理地址数据进行异或逻辑运算得到,所述校验码的旧值为生成所述校验码的新值前所述校验码对应的数值。
39.正如前述示意说明,每一个待更新入l2p表中的物理地址,在进入l2p表前均用于生成l2p表对应的校验码,即校验码均根据进入l2p表的物理地址生成,具体生成方式是:新物理地址与校验码的旧值进行异或逻辑运算,从而异或结果为校验码的新值。
40.需要说明的是,校验码的新值和旧值仅是相对而言的,即在下一个新物理地址进入l2p表时,先前属于校验码的新值即为当前计算使用的旧值,具体可参照前述示意说明,这里不再赘述。
41.步骤s206、将所述校验码的新值更新到目标存储器以更新所述校验码的旧值,以及将所述第一物理地址数据更新到所述l2p表中,其中所述目标存储器非所述ddr。
42.实施中,鉴于ddr存在位反转的特性,因而校验码并不存放于该ddr中,而是存放于其他存储器(这里可称作目标存储器),避免校验码发生位反转的可能。因此,目标存储器可以不同于存放l2p表的ddr,比如读写速度高且可靠性高的sram,比如虽然读写速度稍低但掉电仍可保持数据的存储器(如闪存、eeprom等)。
43.在利用第一物理地址数据确定出校验码的新值的同时,可将该第一物理地址数据更新入l2p表中,即在l2p表中形成该第一物理地址数据与文件系统中的逻辑区块地址之间的映射关系。
44.需要说明的是,物理地址数据更新入l2p表的方式,可根据固态硬盘的文件系统需要实施,比如前述示例中,可以采用ltu生成l2p表的数据(即映射关系),这里不作限定。
45.通过上述步骤s202至s206,在每一个物理地址数据更新入l2p时,同时利用该物理地址数据产生校验码,并将校验码存放于其他存储器中,以便后期可利用该校验码对存放于l2p表中的每一个物理地址数据的位反转情况进行检测、校验甚至纠错,保证了存放于ddr中的l2p表的数据安全、可靠,有利于提高固态硬盘进行数据操作的可靠性。
46.还有,鉴于校验码是更新入l2p表的每一个物理地址数据依次进行异或逻辑运算得到,不仅校验码占用极少存储空间,比如校验码的字节长度可以与物理地址数据的字节长度相同,如物理地址为4byte,则整个l2p表所对应的校验码也只占用4byte存储空间,因而校验码可以通过固态硬盘内部的任意存储器存储该校验码,而无需额外设置专门存储器。
47.以及,可利用该校验码反算出l2p表中任一物理地址对应的地址数据,以便基于反算获得的地址数据对该物理地址进行校验,比如检测哪些比特位发生了位反转,比如针对发生了位反转的比特位进行纠错等等。
48.因此,即使存放于ddr中的l2p表的数据,存在多个比特位发生了位反转,仍可利用本说明书实施例提供的校验码进行校验。
49.在一些实施方式中,可将校验码存放于固态硬盘内部的sram中,即目标存储器可优选固态硬盘内部的sram,这时所述数据处理方法还可包括:在所述sram中创建一目标存储单元,所述目标存储单元用于存储所述校验码。
50.正如前述示例说明,可在sram中开辟一个存储单元,该存储单元的空间大小可为l2p表中任一物理地址数据需要占用的存储空间大小,比如l2p表中存储的每一个物理地址
数据为4byte,则在sram中开辟4byte存储单元用于存放校验码。
51.通过将校验码存放于固态硬盘内部的sram中,不仅无需额外设计其他存储器,而且可利用sram的特性(比如高速读写),保证物理地址数据更新入l2p表时的数据处理效率,以及可以保障校验码的可靠性。
52.在一些实施方式中,在物理地址数据更新入ddr中的l2p表后,还可以实时地对l2p表的数据进行检测,因而所述数据处理方法还可包括:检测缓存于所述l2p表中的第二物理地址数据是否存在位反转。
53.实施中,在存放于l2p表中的物理地址数据发生多位反转时,虽然ecc技术不能检测出具体是哪些比特位发生了反转,但通过ecc技术仍可以获知该物理地址数据存在错误,因而对l2p表中的物理地址数据检测是否存在位反转情况,仍可基于固态硬盘已有的ecc技术进行检测,既可充分利用固态硬盘自身已有功能进行检测,又无需增加额外检测功能,有利于保障固态硬盘处理数据的效率。
54.需要说明的是,对l2p表中的物理地址数据检测是否存在位反转,可采用前述的ecc技术,也可采用其他检测方式,具体可根据固态硬盘应用需要进行选型。
55.优选地,针对l2p表中需要进行位反转情况检测的物理地址,可基于本说明书提供的校验码,先反算出该物理地址对应的地址数据,进而根据反算获得的地址数据与该物理地址进行比对来确定该物理地址是否存储位反转。
56.如图4所示,在检测缓存于所述l2p表中的第二物理地址数据是否存在位反转时,可以包括以下步骤:步骤s402、从所述目标存储器获取所述校验码的当前值。
57.当对l2p表中的物理地址数据(为便于示意说明,这里记为第二物理地址数据)进行位反转情况检测时,可基于当前l2p对应的校验码进行检测,即需要从目标存储器中获取到当前l2p表对应校验码的当前值,以便基于该当前值进行物理地址的反算。
58.需要说明的是,从目标存储器从获取校验码的当前值的获取方式,可根据具体固态硬盘的应用场景采用相应的获取方式,比如目标存储器为sram时,获取方式对应于从sram中读取该校验码,因而不对获取校验码的方式作限定。
59.步骤s404、根据所述校验码的当前值确定第一地址数据,其中所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述第二物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到。
60.在基于校验码的当前值进行物理地址的反算时,是将校验码的当前值与l2p表中除需要检测的物理地址数据外的其他物理地址数据通过异或逻辑运算进行反算,反算的示意过程可参考前述示例中的相关示意说明,不再赘述。
61.步骤s406、确定所述第二物理地址数据是否与所述第一地址数据是否一致,并当所述第二物理地址数据与所述第一地址数据不一致时,执行步骤s408,否则可以执行步骤s410;步骤s408、确定所述第二物理地址数据存在位反转;步骤s410、确定所述第二物理地址数据无位反转。
62.需要说明的是,步骤s406中对两个数据的一致性确定中,可以基于这两个数据直接进行数值比较确定,也可以基于这两个数据按比特位进行比较确定,这里不作限定。
63.基于l2p表对应的校验码以及l2p表中的其他物理地址数据,可以准确、可靠地反算出待检测的该物理地址数据在更新入l2p表前的真实值(即前述的第一地址数据),进而基于该真实值可以确定存放于l2p表中的该物理地址数据是否存在位反转情况。
64.在一些实施方式中,在确定所述第二物理地址数据存在位反转后,还可以基于本说明书实施例提供的数据处理方法确定出具体是哪些比特位发生了位反转,也可以确定出反射位反转的比特位的真实值,还可以对发生位反转的比特位进行纠错。
65.在一种示例中,所述数据处理方法还可包括:根据所述第一地址数据确定所述第二物理地址数据中发生位反转的比特位。
66.正如前述示例说明,鉴于第一地址数据为第二物理地址数据对应的可靠真实值,因而可将第一地址数据和第二物理地址数据按比特位进行比较,从而可根据比特位的比较结果准确获得哪些比特位发生了位反转。因此,即使l2p表中的第二物理地址数据的多个比特位发生了位反转,仍然可以准确、可靠地确定出发生位反转的具体比特位。
67.在一种示例中,所述数据处理方法还可包括:根据所述第一地址数据对所述第二物理地址数据中发生位反转的比特位进行纠错。
68.正如前述示例说明,鉴于第一地址数据为第二物理地址数据对应的可靠真实值,因而可以根据第一地址数据对第二物理地址数据中发生了位反转的比特位进行纠错,以将第二物理地址数据纠正回正确数据。
69.在一些实施方式中,在确定出第二物理地址数据哪些比特位存在位反转情况后,还可根据固态硬盘的应用方案进行相关示例实施,比如可对ddr的存储单元发生位反转的次数进行统计,然后可根据统计有针对性地对ddr的存储单元进行维护,维护可包括如修复、提示、避开这些存储单元进行存放等等,可以进一步降低存放于ddr中的l2p表数据发生位反转的可能性。
70.基于相同发明构思,本说明书实施例提供与前述任意一个实施例所述的方法对应的装置、电子设备及计算机存储介质。
71.如图5所示,本说明书实施例提供的一种数据处理装置500,应用于固态硬盘的控制器,其中所述数据处理装置500可包括:第一接收模块501、第一确定模块503和第一控制模块505。
72.具体地,第一接收模块501用于接收对l2p表的数据更新请求,其中所述l2p表缓存于固态硬盘的ddr中,所述数据更新请求中包含有待更新到所述l2p表中的第一物理地址数据;第一确定模块503用于根据所述第一物理地址数据确定校验码的新值,其中所述校验码的新值由所述校验码的旧值与所述第一物理地址数据进行异或逻辑运算得到,所述校验码的旧值为生成所述校验码的新值前所述校验码对应的数值;第一控制模块505用于将所述校验码的新值更新到目标存储器以更新所述校验码的旧值,以及将所述第一物理地址数据更新到所述l2p表中,其中所述目标存储器非所述ddr。
73.在每一笔物理地址数据需要更新入l2p表中时,可利用该物理地址数据生成校验码的新值,因而校验码随着更新入l2p表的物理地址数据而随之更新,而且由于校验码是更新入l2p表的每一笔物理地址数据共同异或逻辑运算得到,进而整个l2p表只需对应一个校
验码,而且这样的异或逻辑运算还便于后期通过反算来获得原来物理地址数据对应的可靠真实值,有利于通过该真实值对l2p表中的物理地址数据的可靠性进行保障。
74.还有,因校验码是这些物理地址数据进行异或逻辑运算得到,因而校验码占用存储空间的字节数可以与任意一个物理地址数据占用的字节数相同,即校验码占用极少的存储空间,因而可以利用固态硬盘内部的存储器存放该校验码,而无需为该校验码设计其他存储器。
75.可选地,所述数据处理装置500还包括:检测模块(图5中未示出),该检测模块可以用于检测缓存于所述l2p表中的第二物理地址数据是否存在位反转。
76.可选地,该检测模块在检测缓存于所述l2p表中的第二物理地址数据是否存在位反转时,可以执行以下操作:从所述目标存储器获取所述校验码的当前值;根据所述校验码的当前值确定第一地址数据,其中所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述第二物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到;确定所述第二物理地址数据是否与所述第一地址数据是否一致,并当所述第二物理地址数据与所述第一地址数据不一致时,确定所述第二物理地址数据存在位反转。
77.可选地,该检测模块还可以用于执行以下操作:在确定所述第二物理地址数据存在位反转后,根据所述第一地址数据确定所述第二物理地址数据中发生位反转的比特位;和/或,在确定所述第二物理地址数据存在位反转后,根据所述第一地址数据对所述第二物理地址数据中发生位反转的比特位进行纠错。
78.可选地,当所述目标存储器包括sram时,所述数据处理装置500还包括:sram操作模块(图5中未示出),该sram操作模块用于在所述sram中创建一目标存储单元,所述目标存储单元用于存储所述校验码。
79.基于相同发明构思,本说明书实施例提供一种数据处理方法,以在固态硬盘进行数据操作时,对从l2p表中获得的物理地址进去可靠的数据处理,以保证固态硬盘进行安全、可靠的数据操作。
80.如图6所示,本说明书实施例提供一种数据处理方法,可包括:步骤s602、接收主机对固态硬盘发起的数据操作指令,其中所述数据操作指令中包含有被操作的目标闪存对应的逻辑地址数据。
81.在对固态硬盘内部的数据进行数据操作(如读取数据、写入数据、擦除等等),通常是主机发出操作指令,并给出相应数据操作对应的逻辑地址数据,以便固态硬盘的控制器根据该逻辑地址数据通过l2p表后执行数据操作。
82.需要说明的是,主机(host)可为需要对固态硬盘内的数据发起数据操作的相关设备,比如数据系统、文件系统、读写器等设备,这些设备可以为固态硬盘内部的设备,也可为固态硬盘外部的设备,这里不作限定。
83.步骤s604、从l2p表中确定所述逻辑地址数据对应的目标物理地址数据,其中所述l2p表缓存于所述固态硬盘的ddr中。
84.正如前述示意说明,l2p表存放于固态硬盘内部的ddr中,而且l2p表的数据包含有逻辑地址与物理地址之间的映射关系,因而在接收到逻辑地址数据后,可基于l2p表获取该
逻辑地址对应的物理地址。
85.但是,鉴于ddr的特性,容易造成l2p表中的物理地址数据发生位反转,即l2p表的数据容易存在错误,一旦根据错误的物理地址数据去执行数据操作,将引起固态硬盘出现错误的数据操作,甚至是非法的数据操作。因此,本说明书中提供的数据处理方法中还需要针对该物理地址数据作进一步数据处理后再执行数据操作。
86.步骤s606、获取校验码的当前值,其中所述校验码的当前值为由缓存于所述l2p表中的所有物理地址数据在缓存进所述l2p表中前共同进行异或逻辑运算得到的数据,所述校验码的当前值缓存于目标存储器,所述目标存储器非所述ddr。
87.正如前述示例说明中,可根据校验码进行物理地址反算,来获得物理地址的可靠真实值,因而需要获取到校验码的当前值,即当前l2p表中所有物理地址数据共同对应的校验码。
88.步骤s608、根据所述校验码的当前值确定第一地址数据,即根据校验码反算出第一地址数据,其中反算如下:所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述目标物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到。
89.通过校验码和l2p表中除目标物理地址数据外的其他所有物理地址数据共同反算出目标物理地址数据在更新入l2p表前对应的可靠真实值(即第一地址数据)。需要说明的是,反算过程可参照前述说明内容,不再赘述。
90.步骤s610、根据所述第一地址数据对所述目标闪存执行所述数据操作指令。
91.实施中,在根据所述第一地址数据对所述目标闪存执行所述数据操作指令,可以直接根据所述第一地址数据对所述目标闪存执行所述数据操作指令,也可以根据所述第一地址数据确定目标物理地址数据正确后,再根据目标物理地址数据执行数据操作指令,这里不再限定。
92.通过上述步骤s602至s610,基于校验码和l2p表的物理地址数据反算出数据操作的目标物理地址数据对应的可靠真实值,从而可以根据该真实值去执行数据操作,保证了固态硬盘执行数据操作的安全性和可靠性。
93.在一些实施方式中,固态硬盘在执行数据操作中,还可对l2p表的数据正确性进行检测维护,因而所述数据处理方法还可包括:根据所述第一地址数据,确定所述目标物理地址数据是否存在位反转。通过对位反转情况进行检测,可保障l2p表中的物理地址是正确、可靠的,有利于保证固态硬盘基于l2p表进行数据操作的可靠性和安全性。
94.需要说明的是,位反转的检测维护可以在接收到数据操作指令时进行,也可为在空闲时段进行,这里不作限定。
95.在一些实施方式中,在确定所述目标物理地址数据存在位反转后,还可针对位反转情况进行相关维护操作。
96.在一种示例中,可根据所述第一地址数据确定所述目标物理地址数据中发生位反转的比特位,即确定出目标物理地址数据中哪些比特位发生了位反转。因此,即使多个比特位发生了位反转,基于真实、可靠的第一地址数据可以准确地检测出哪些比特位发生了位反转。
97.在一种示例中,可根据所述第一地址数据对所述目标物理地址数据中发生位反转的比特位进行纠错,即基于真实、可靠的第一地址数据可以准确地将发生了位反转的比特
位进行纠错,将目标物理地址纠正为正确的地址。
98.基于相同发明构思,本说明书实施例还提供一种用于对固态硬盘进行数据操作的数据处理装置。
99.如图7所示,本说明书实施例还提供一种数据处理装置700,应用于固态硬盘的控制器,其中所述数据处理装置700包括:第二接收模块701、第二确定模块703、第一获取模块705、第一计算模块707和第二控制模块709。
100.具体地,第二接收模块701用于接收主机对固态硬盘发起的数据操作指令,其中所述数据操作指令中包含有被操作的目标闪存对应的逻辑地址数据;第二确定模块703用于从l2p表中确定所述逻辑地址数据对应的目标物理地址数据,其中所述l2p表缓存于所述固态硬盘的ddr中;第一获取模块705用于获取校验码的当前值,其中所述校验码的当前值为由缓存于所述l2p表中的所有物理地址数据在缓存进所述l2p表中前共同进行异或逻辑运算得到的数据,所述校验码的当前值缓存于目标存储器,所述目标存储器非所述ddr;第一计算模块707用于根据所述校验码的当前值确定第一地址数据,其中所述第一地址数据由所述校验码的当前值与已缓存于所述l2p表中除所述目标物理地址数据外的所有其他物理地址数据进行异或逻辑运算得到;第二控制模块709用于根据所述第一地址数据对所述目标闪存执行所述数据操作指令。
101.可选地,所述数据处理装置700还包括:纠错模块(图7中未示出),该纠错模块用于根据所述第一地址数据,确定所述目标物理地址数据是否存在位反转。
102.可选地,该纠错模块具体用于执行以下操作:在确定所述目标物理地址数据存在位反转后,根据所述第一地址数据确定所述目标物理地址数据中发生位反转的比特位;和/或,根据所述第一地址数据对所述目标物理地址数据中发生位反转的比特位进行纠错。
103.基于相同发明构思,本说明书实施例提供与前述任意一个实施例所述数据处理方法对应的一种用于数据处理的电子设备,所述电子设备包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行:如本说明书中任意一项实施例所述的数据处理方法。
104.基于相同发明构思,本说明书实施例提供一种用于数据处理的计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时执行如本说明书中任意一实施例提供的所述数据处理方法。
105.需要说明的是,所述计算机存储介质可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
106.在可能的实施方式中,本技术还可以提供将数据处理实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行前述任意一个实施例所述方法中的若干步骤。
107.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本技术中的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个
独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
108.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例侧重说明的都是与其他实施例的不同之处。尤其,对于后面说明的产品实施例而言,由于其与方法是对应的,描述比较简单,相关之处参见系统实施例的部分说明即可。
109.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献