CN104182292A - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN104182292A CN104182292A CN201310190526.6A CN201310190526A CN104182292A CN 104182292 A CN104182292 A CN 104182292A CN 201310190526 A CN201310190526 A CN 201310190526A CN 104182292 A CN104182292 A CN 104182292A
- Authority
- CN
- China
- Prior art keywords
- data
- check code
- address
- fault
- storage system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例公开了一种数据存储方法及装置,涉及计算机领域,实现了容错编码强度的动态调节。具体方案为:根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型;其中,数据簇是指受同一容错强度的容错编码保护的数据集合;根据容错编码类型获取第一数据的校验码;其中,第一数据为数据簇中的任意一个数据;获取校验码存储地址;其中,校验码存储地址为存储第一数据的校验码地址;根据第一数据的物理地址将第一数据写入存储系统;根据校验码存储地址将第一数据的校验码写入存储系统。本发明用于数据的存储过程中。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据存储方法及装置。
背景技术
随着计算机技术的不断发展,人们对计算机的处理能力、存储吞吐量以及网络带宽的要求不断提高,但却很容易忽视计算机内存的可用性和可靠性。内存作为计算机的五大部件之一,对计算机工作的稳定性和可靠性起着至关重要的作用,并且随着大数据时代的来临,一些软件所需的内存空间也越来越大,因此从发展趋势上看,计算机操作系统将会支持更大的内存,同时计算机的内存容量也会不断扩大。然而,随着存储元件密度的增加、计算机内存容量的扩大,内存发生错误的几率也将会随之增大。
现有技术中经常采用纠错编码技术来确保内存的可靠性,已有的纠错编码技术包括:错误的检测和纠正(Error Checking and Correcting,ECC)技术、惠普热拔插存储冗余阵列(Redundant Array of IndependentDisks,RAID)内存技术、虚拟化内存纠错(Virtualized ECC,VECC)技术等。在现有技术提供的纠错编码技术中不同技术采用的容错编码类型不同,这就使得不同的纠错编码技术的容错编码强度不同,且其相应的容错开销和容错能力也不同,但每一种纠错编码技术均采用单一的容错编码类型。
众所周知,在计算机系统中不同应用程序的容错能力存在差异,同一个应用程序在不同应用场景下数据出错的概率也千差万别,并且不同用户对不同应用程序的可靠性要求也各不相同。但由于一种纠错编码技术采用单一的容错编码类型,这就使得同一个计算机系统中对不同程序的容错能力全都是相同的,并不能根据不同应用程序对内存可靠性的要求来对内存的容错能力进行调节。因此,如何根据不同应用程序对内存可靠性的需要对容错编码的强度进行调节,已成为本技术领域的重要课题。
发明内容
本发明的实施例提供一种数据存储方法及装置,实现了容错编码强度的动态调节。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明的第一方面,提供一种数据存储方法,包括:
根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合;
根据所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据;
通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址;
根据所述第一数据的物理地址将所述第一数据写入存储系统;
根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
结合第一方面,在一种可能的实现方式中,在所述根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,当需要从所述存储系统中读取所述第一数据时,还包括:
根据所述第一数据的物理地址从所述存储系统中读取所述第一数据;
根据所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述通过地址映射逻辑获取校验码存储地址,包括:
根据所述容错编码类型获取数据位长与校验码位长之比;
根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址;
根据所述存储所述数据簇的区域的起始地址、所述存储所述数据簇对应的校验码集合的区域的起始地址、所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述通过地址映射逻辑获取校验码存储地址之后,还包括:
根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址;
所述根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统,包括:
根据所述校验码存储地址和所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述根据所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,包括:
根据所述校验码存储地址和所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
本发明的第二方面,提供一种数据存储装置,包括:
选取单元,用于根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合;
第一获取单元,用于根据所述选取单元得到的所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据;
第二获取单元,用于通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址;
写入单元,用于根据所述第一数据的物理地址将所述第一数据写入存储系统,并根据所述第二获取单元得到的所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
结合第二方面,在一种可能的实现方式中,当需要从所述存储系统中读取所述第一数据时,还包括:
读取单元,用于在所述写入单元根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,根据所述第一数据的物理地址从所述存储系统中读取所述第一数据,并根据所述第二获取单元得到的所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述第二获取单元,包括:
第一获取模块,用于根据所述容错编码类型获取数据位长与校验码位长之比;
确定模块,用于根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址;
第二获取模块,用于根据所述存储所述数据簇的区域的起始地址、所述确定模块得到的所述存储所述数据簇对应的校验码集合的区域的起始地址、所述第一获取模块得到的所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
第三获取单元,用于在所述第二获取单元通过地址映射逻辑获取校验码存储地址之后,根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址;
所述写入单元,具体用于根据所述第二获取单元得到的所述校验码存储地址和所述第三获取单元得到的所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,
所述读取单元,具体用于根据所述第二获取单元得到的所述校验码存储地址和所述第三获取单元得到的所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
本发明实施例提供的数据存储方法及装置,根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型,并根据该容错编码类型得到存储第一数据的校验码的校验码存储地址,最后根据第一数据的物理地址将第一数据写入存储系统,并根据校验码存储地址将第一数据的校验码写入存储系统,通过数据和校验码的独立寻址,使得用户可以根据应用程序的容错能力和/或工作场景的需求来调节容错编码的强度,实现了容错编码强度的动态调节,从而能够较好的在容错开销和容错力度之间得到权衡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种数据存储方法流程图;
图2为本发明另一实施例提供的一种数据存储方法流程图;
图3为本发明另一实施例提供的一种数据存储装置组成示意图;
图4为本发明另一实施例提供的另一种数据存储装置组成示意图;
图5为本发明另一实施例提供的又一种数据存储装置组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一实施例提供一种数据存储方法,如图1所示,该方法可以包括:
在现有纠错编码技术中,由于校验码的存储受到数据存储区域的影响,使得同一计算机中只能采用单一的容错编码类型来对数据进行编码,因此为了能够根据不同应用程序对存储系统可靠性的不同需求,选择不同的容错编码类型对需要存入存储系统的数据进行不同强度的编码,在本发明实施例中,通过数据和校验码的独立寻址,使得校验码的存储不再受到数据存储区域的影响。
101、根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型。
其中,数据簇是指受同一容错强度的容错编码保护的数据集合,也可以说,同一应用程序在存储系统中的数据受同一强度的容错编码保护。
102、根据容错编码类型获取第一数据的校验码。
其中,第一数据为数据簇中的任意一个数据;
103、通过地址映射逻辑获取校验码存储地址。
其中,校验码存储地址为存储第一数据的校验码的地址。
需要说明的是,本发明实施例中步骤102和步骤103的执行没有先后顺序,本发明实施例对步骤102和步骤103执行的先后顺序不作限制。
104、根据第一数据的物理地址将第一数据写入存储系统。
105、根据校验码存储地址将第一数据的校验码写入存储系统。
需要说明的是,本发明实施例中步骤104和步骤105的执行没有先后顺序,本发明实施例对步骤104和步骤105执行的先后顺序不作限制。
本发明实施例提供的数据存储方法,根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型,并根据该容错编码类型得到存储第一数据的校验码的校验码存储地址,最后根据第一数据的物理地址将第一数据写入存储系统,并根据校验码存储地址将第一数据的校验码写入存储系统,通过数据和校验码的独立寻址,使得用户可以根据应用程序的容错能力和/或工作场景的需求来调节容错编码的强度,实现了容错编码强度的动态调节,从而能够较好的在容错开销和容错力度之间得到权衡。
本发明另一实施例提供一种数据存储方法,如图2所示,该方法可以包括:
201、根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型。
其中,数据簇是指受同一容错强度的容错编码保护的数据集合,并且同一应用程序在存储系统中的数据受到同一强度的容错编码保护,默认情况下,数据簇为整个存储系统,也就是说整个存储系统的数据受统一强度的容错编码的保护。在本发明实施例中,对于计算机系统中的不同的应用程序,可以说对于一个数据簇,可以根据数据簇的容错能力和/或该数据簇的工作场景来选取容错编码类型。容错编码类型包括但不限于纠一位错检两位错(Single Error Correction-DoubleError Detection,SEC-DED)码、单半字节纠错-单字节检错(Single NibbleError Correcting-Double Nibble Error Detecting,SNC-DND)码、理德-所罗门(Reed Solomon,RS)码、纠多位错二元循环(Bose-Chaudhuri-Hocquenghem,BCH)码,不同的容错编码类型对应的容错编码强度不同,其相应的容错开销也不同,因此可以根据数据簇的容错能力和/或工作场景得到容错编码所需的强度,以此来确定容错编码类型。
其中,SEC-DED码是传统的内存容错技术所使用的编码,能够纠正一个比特的错误,其编码规则是每64比特的数据需要8比特的校验码组成72位的ECC码字,其数据位长与校验码位长之比为8;SNC-DND码(4-校验符号字)的数据粒度为128比特,所需的校验位为16比特,其数据位长与校验码位长之比为8,在内存系统中,一次访存操作存取的数据位宽是64比特,SNC-DND码容错开销不大,可纠正错误数多,但其保护的数据粒度为128比特,对于4比特位宽的内存芯片,这些数据交错分布在36块芯片上,每次访存需要激活36块芯片,带来很大的功耗开销;RS码(3-校验符号字)相比于传统SEC-DED编码,容错开销更大;BCH码容错开销与SEC-DED相当,但其只能对突发读到的数据进行保护。容错开销是指编码中数据位长与校验码位长之比。
202、根据容错编码类型获取第一数据的校验码。
其中,当数据簇中的数据需要写入存储系统时,便可以根据选取的容错编码类型来为需要写入存储系统的第一数据进行容错编码,并得到第一数据的校验码,其中第一数据为数据簇中的任意一个数据,也就是说第一数据是应用程序中执行过程中所需数据中的任意一个。
203、根据容错编码类型获取数据位长与校验码位长之比。
其中,当选取了容错编码类型之后,数据通过容错编码得到的校验码的位长与数据的位长是固定的,因此可以根据选取的容错编码类型获取数据位长与校验码位长之比。
204、根据存储系统中存储数据簇的区域的起始地址确定存储数据簇对应的校验码集合的区域的起始地址。
其中,当应用程序初始化时,计算机系统可以在存储系统中为该应用程序分配一个存储区域,以用来存储该应用程序的数据,也就说存储系统中存储数据簇的区域的起始地址是已知的。为了实现数据和校验码的独立寻址,在本发明实施例中可以预先设置一个存储数据簇的存储区域与存储该数据簇对应的校验码集合的区域的映射关系,那么此时便可以根据存储系统中存储数据簇的区域的起始地址确定存储数据簇对应的校验码集合的区域的起始地址。
205、根据存储数据簇的区域的起始地址、存储数据簇对应的校验码集合的区域的起始地址、数据位长与校验码位长之比以及第一数据的物理地址,通过地址映射逻辑获取校验码存储地址。
其中,当获取到存储数据簇的区域的起始地址、存储数据簇对应的校验码集合的区域的起始地址、数据位长与校验码位长之比之后,便可以通过地址映射逻辑,根据存储数据簇的区域的起始地址、存储数据簇对应的校验码集合的区域的起始地址、数据位长与校验码位长之比以及第一数据的物理地址,得到存储第一数据的校验码的校验码存储地址。其中,第一数据的校验码的校验码存储地址可以根据下述公式得到:
CECR地址=CRIA+(CIA-PA)/r
其中,可配置校验码存储区域(Configurable Error CorrectionRegion,CECR)地址为第一数据的校验码的校验码存储地址,CECR起始地址索引(CECR Index Address,CRIA)为存储数据簇对应的校验码集合的区域的起始地址,数据簇起始索引地址(Cluster IndexAddress,CIA)为存储数据簇的区域的起始地址、物理地址(PhysicalAddress,PA)为第一数据的物理地址,r为数据位长与校验码位长之比。
可选的,基于现有内存的读取的规则,需要在获取到存储第一数据的校验码的校验码存储地址之后,根据第一数据的物理地址和数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址,以便可以准确的将第一数据的校验码写入存储系统,或者从存储系统中准确的读取到第一数据的校验码。其中,校验码偏移地址可以通过下述公式得到:Code offset=PA mod r,其中Code offset为第一数据对应的校验码偏移地址,PA为第一数据的物理地址,r为数据位长与校验码位长之比。
需要说明的是,本发明实施例中的步骤202可以在步骤205之后执行,本发明实施例在此不作限制。
206、根据第一数据的物理地址将第一数据写入存储系统。
207、根据校验码存储地址将第一数据的校验码写入存储系统。
可选的,基于现有内存读取的规则,可以根据校验码存储地址和校验码偏移地址将第一数据的校验码写入存储系统。
需要说明的是,本发明实施例中步骤206和步骤207的执行没有先后顺序,本发明实施例对步骤206和步骤207执行的先后顺序不作限制。
208、当需要从存储系统中读取第一数据时,根据第一数据的物理地址从存储系统中读取第一数据。
可选的,若需要读取第一数据的校验码时,可以在读取第一数据的校验码之前,根据第一数据所在数据簇采用的容错编码类型得到数据位长与校验码位长之比,并根据存储系统中存储数据簇的区域的起始地址确定存储数据簇对应的校验码集合的区域的起始地址,然后根据存储数据簇的区域的起始地址、存储数据簇对应的校验码集合的区域的起始地址、数据位长与校验码位长之比以及第一数据的物理地址,通过地址映射逻辑获取校验码存储地址,以便根据校验码存储地址从存储系统中读取到第一数据的校验码。
209、根据校验码存储地址从存储系统中读取第一数据的校验码,以便于根据第一数据的校验码检测从存储系统读取的第一数据与写入存储系统的第一数据是否一致。
可选的,基于现有内存读取的规则,可以根据校验码存储地址和校验码偏移地址从存储系统中读取第一数据的校验码。
需要说明的是,本发明实施例中步骤208和步骤209的执行没有先后顺序,本发明实施例对步骤208和步骤209执行的先后顺序不作限制。
本发明实施例提供的数据存储方法,根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型,并根据该容错编码类型得到存储第一数据的校验码的校验码存储地址,最后根据第一数据的物理地址将第一数据写入存储系统,并根据校验码存储地址将第一数据的校验码写入存储系统,通过数据和校验码的独立寻址,使得用户可以根据应用程序的容错能力和/或工作场景的需求来调节容错编码的强度,实现了容错编码强度的动态调节,从而能够较好的在容错开销和容错力度之间得到权衡。
并且,通过数据和校验码的独立寻址,使得校验码的存储不受到存储系统数据存储区域的约束,支持可变粒度访存操作,从而使得数据及校验码的存储更加灵活;校验码存储地址通过地址映射逻辑得到,对系统上层透明,且实现简单。
本发明另一实施例提供一种数据存储装置,如图3所示,包括:选取单元31、第一获取单元32、第二获取单元33、写入单元34。
选取单元31,用于根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合。
第一获取单元32,用于根据所述选取单元31得到的所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据。
第二获取单元33,用于通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址。
写入单元34,用于根据所述第一数据的物理地址将所述第一数据写入存储系统,并根据所述第二获取单元33得到的所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
进一步的,当需要从所述存储系统中读取所述第一数据时,如图4所示,所述装置还可以包括:读取单元35。
读取单元35,用于在所述写入单元34根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,根据所述第一数据的物理地址从所述存储系统中读取所述第一数据,并根据所述第二获取单元33得到的所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
进一步的,所述第二获取单元33可以包括:第一获取模块331、确定模块332、第二获取模块333。
第一获取模块331,用于根据所述容错编码类型获取数据位长与校验码位长之比。
确定模块332,用于根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址。
第二获取模块333,用于根据所述存储所述数据簇的区域的起始地址、所述确定模块332得到的所述存储所述数据簇对应的校验码集合的区域的起始地址、所述第一获取模块331得到的所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
进一步的,所述装置还可以包括:第三获取单元36。
第三获取单元36,用于在所述第二获取单元33通过地址映射逻辑获取校验码存储地址之后,根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址。
所述写入单元34,具体用于根据所述第二获取单元33得到的所述校验码存储地址和所述第三获取单元36得到的所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
进一步的,所述读取单元35,具体用于根据所述第二获取单元33得到的所述校验码存储地址和所述第三获取单元36得到的所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
进一步的,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
本发明实施例提供的数据存储装置,根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型,并根据该容错编码类型得到存储第一数据的校验码的校验码存储地址,最后根据第一数据的物理地址将第一数据写入存储系统,并根据校验码存储地址将第一数据的校验码写入存储系统,通过数据和校验码的独立寻址,使得用户可以根据应用程序的容错能力和/或工作场景的需求来调节容错编码的强度,实现了容错编码强度的动态调节,从而能够较好的在容错开销和容错力度之间得到权衡。
并且,通过数据和校验码的独立寻址,使得校验码的存储不受到存储系统数据存储区域的约束,支持可变粒度访存操作,从而使得数据及校验码的存储更加灵活;校验码存储地址通过地址映射逻辑得到,对系统上层透明,且实现简单。
本发明另一实施例提供一种数据存储装置,如图5所示,包括:至少一个处理器41、存储器42、通信接口43和总线44,该至少一个处理器41、存储器42和通信接口43通过总线44连接并完成相互间的通信,其中:
所述总线44可以是工业标准体系结构(Industry StandardArchitecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,EISA)总线等。该总线44可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述存储器42用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器42可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
所述处理器41可能是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
所述通信接口43,主要用于实现本实施例的设备之间的通信。
所述处理器41,用于执行所述存储器42中存储的可执行程序代码,具体的用于执行以下操作:
所述处理器41,用于根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合;根据所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据;通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址;根据所述第一数据的物理地址将所述第一数据写入存储系统,并根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
进一步的,当需要从所述存储系统中读取所述第一数据时,所述处理器41,还用于在所述根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,根据所述第一数据的物理地址从所述存储系统中读取所述第一数据,并根据所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
进一步的,所述处理器41,还用于根据所述容错编码类型获取数据位长与校验码位长之比;根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址;根据所述存储所述数据簇的区域的起始地址、所述存储所述数据簇对应的校验码集合的区域的起始地址、所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
进一步的,所述处理器41,还用于在所述通过地址映射逻辑获取校验码存储地址之后,根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址;根据所述校验码存储地址和所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
进一步的,所述处理器41,还用于根据所述校验码存储地址和所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
进一步的,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
本发明实施例提供的数据存储装置,根据数据簇的容错能力和/或数据簇的工作场景选取容错编码类型,并根据该容错编码类型得到存储第一数据的校验码的校验码存储地址,最后根据第一数据的物理地址将第一数据写入存储系统,并根据校验码存储地址将第一数据的校验码写入存储系统,通过数据和校验码的独立寻址,使得用户可以根据应用程序的容错能力和/或工作场景的需求来调节容错编码的强度,实现了容错编码强度的动态调节,从而能够较好的在容错开销和容错力度之间得到权衡。
并且,通过数据和校验码的独立寻址,使得校验码的存储不受到存储系统数据存储区域的约束,支持可变粒度访存操作,从而使得数据及校验码的存储更加灵活;校验码存储地址通过地址映射逻辑得到,对系统上层透明,且实现简单。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据存储方法,其特征在于,包括:
根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合;
根据所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据;
通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址;
根据所述第一数据的物理地址将所述第一数据写入存储系统;
根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
2.根据权利要求1所述的数据存储方法,其特征在于,在所述根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,当需要从所述存储系统中读取所述第一数据时,还包括:
根据所述第一数据的物理地址从所述存储系统中读取所述第一数据;
根据所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
3.根据权利要求1或2所述的数据存储方法,其特征在于,所述通过地址映射逻辑获取校验码存储地址,包括:
根据所述容错编码类型获取数据位长与校验码位长之比;
根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址;
根据所述存储所述数据簇的区域的起始地址、所述存储所述数据簇对应的校验码集合的区域的起始地址、所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
4.根据权利要求3所述的数据存储方法,其特征在于,在所述通过地址映射逻辑获取校验码存储地址之后,还包括:
根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址;
所述根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统,包括:
根据所述校验码存储地址和所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
5.根据权利要求4所述的数据存储方法,其特征在于,所述根据所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,包括:
根据所述校验码存储地址和所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
6.根据权利要求1-5中任一项所述的数据存储方法,其特征在于,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
7.一种数据存储装置,其特征在于,包括:
选取单元,用于根据数据簇的容错能力和/或所述数据簇的工作场景选取容错编码类型;其中,所述数据簇是指受同一容错强度的容错编码保护的数据集合;
第一获取单元,用于根据所述选取单元得到的所述容错编码类型获取第一数据的校验码;其中,所述第一数据为所述数据簇中的任意一个数据;
第二获取单元,用于通过地址映射逻辑获取校验码存储地址;其中,所述校验码存储地址为存储所述第一数据的校验码的地址;
写入单元,用于根据所述第一数据的物理地址将所述第一数据写入存储系统,并根据所述第二获取单元得到的所述校验码存储地址将所述第一数据的校验码写入所述存储系统。
8.根据权利要求7所述的数据存储装置,其特征在于,当需要从所述存储系统中读取所述第一数据时,还包括:
读取单元,用于在所述写入单元根据所述校验码存储地址将所述第一数据的校验码写入所述存储系统之后,根据所述第一数据的物理地址从所述存储系统中读取所述第一数据,并根据所述第二获取单元得到的所述校验码存储地址从所述存储系统中读取所述第一数据的校验码,以便于根据所述第一数据的校验码检测从所述存储系统读取的所述第一数据与写入所述存储系统的所述第一数据是否一致。
9.根据权利要求7或8所述的数据存储装置,其特征在于,所述第二获取单元,包括:
第一获取模块,用于根据所述容错编码类型获取数据位长与校验码位长之比;
确定模块,用于根据所述存储系统中存储所述数据簇的区域的起始地址确定存储所述数据簇对应的校验码集合的区域的起始地址;
第二获取模块,用于根据所述存储所述数据簇的区域的起始地址、所述确定模块得到的所述存储所述数据簇对应的校验码集合的区域的起始地址、所述第一获取模块得到的所述数据位长与校验码位长之比以及所述第一数据的物理地址,通过地址映射逻辑获取所述校验码存储地址。
10.根据权利要求9所述的数据存储装置,其特征在于,还包括:
第三获取单元,用于在所述第二获取单元通过地址映射逻辑获取校验码存储地址之后,根据所述第一数据的物理地址和所述数据位长与校验码位长之比,通过地址映射逻辑获取校验码偏移地址;
所述写入单元,具体用于根据所述第二获取单元得到的所述校验码存储地址和所述第三获取单元得到的所述校验码偏移地址将所述第一数据的校验码写入所述存储系统。
11.根据权利要求10所述的数据存储装置,其特征在于,
所述读取单元,具体用于根据所述第二获取单元得到的所述校验码存储地址和所述第三获取单元得到的所述校验码偏移地址从所述存储系统中读取所述第一数据的校验码。
12.根据权利要求7-11中任一项所述的数据存储装置,其特征在于,所述容错编码类型包括但不限于以下任意一种:纠一位错检两位错SEC-DED码、单半字节纠错-单字节检错SNC-DND码、理德-所罗门RS码、纠多位错二元循环BCH码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310190526.6A CN104182292A (zh) | 2013-05-21 | 2013-05-21 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310190526.6A CN104182292A (zh) | 2013-05-21 | 2013-05-21 | 一种数据存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104182292A true CN104182292A (zh) | 2014-12-03 |
Family
ID=51963366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310190526.6A Pending CN104182292A (zh) | 2013-05-21 | 2013-05-21 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182292A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512337A (zh) * | 2015-12-31 | 2016-04-20 | 联想(北京)有限公司 | 一种数据管理方法及存储装置 |
CN105991240A (zh) * | 2015-03-18 | 2016-10-05 | 英飞凌科技股份有限公司 | 具有部分奇偶校验保护的spc传感器接口 |
CN108762975A (zh) * | 2018-05-24 | 2018-11-06 | 深圳市德名利电子有限公司 | 一种ecc数据存储方法、系统及存储介质 |
CN109669802A (zh) * | 2018-11-13 | 2019-04-23 | 北京时代民芯科技有限公司 | 一种用于edac验证的可配置存储器验证系统 |
CN110401458A (zh) * | 2019-07-30 | 2019-11-01 | 北京无线电测量研究所 | 数据校验编码方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015752A1 (en) * | 2002-07-16 | 2004-01-22 | Patella Benjamin J. | Detection of bit errors in maskable content addressable memories |
CN101031971A (zh) * | 2004-08-02 | 2007-09-05 | 皇家飞利浦电子股份有限公司 | 数据存储和重放设备 |
CN101339525A (zh) * | 2008-08-22 | 2009-01-07 | 北京星网锐捷网络技术有限公司 | 一种对数据进行错误检测的方法、系统和设备 |
CN102272855A (zh) * | 2008-12-30 | 2011-12-07 | 韩商英得联股份有限公司 | 存储器控制器及存储器管理方法 |
-
2013
- 2013-05-21 CN CN201310190526.6A patent/CN104182292A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015752A1 (en) * | 2002-07-16 | 2004-01-22 | Patella Benjamin J. | Detection of bit errors in maskable content addressable memories |
CN101031971A (zh) * | 2004-08-02 | 2007-09-05 | 皇家飞利浦电子股份有限公司 | 数据存储和重放设备 |
CN101339525A (zh) * | 2008-08-22 | 2009-01-07 | 北京星网锐捷网络技术有限公司 | 一种对数据进行错误检测的方法、系统和设备 |
CN102272855A (zh) * | 2008-12-30 | 2011-12-07 | 韩商英得联股份有限公司 | 存储器控制器及存储器管理方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991240A (zh) * | 2015-03-18 | 2016-10-05 | 英飞凌科技股份有限公司 | 具有部分奇偶校验保护的spc传感器接口 |
US10164737B2 (en) | 2015-03-18 | 2018-12-25 | Infineon Technologies Ag | SPC sensor interface with partial parity protection |
CN105991240B (zh) * | 2015-03-18 | 2019-06-25 | 英飞凌科技股份有限公司 | 具有部分奇偶校验保护的spc传感器接口 |
US10594440B2 (en) | 2015-03-18 | 2020-03-17 | Infineon Technologies Ag | SPC sensor interface with partial parity protection |
US11356201B2 (en) | 2015-03-18 | 2022-06-07 | Infineon Technologies Ag | SPC sensor interface with partial parity protection |
CN105512337A (zh) * | 2015-12-31 | 2016-04-20 | 联想(北京)有限公司 | 一种数据管理方法及存储装置 |
CN108762975A (zh) * | 2018-05-24 | 2018-11-06 | 深圳市德名利电子有限公司 | 一种ecc数据存储方法、系统及存储介质 |
CN108762975B (zh) * | 2018-05-24 | 2021-06-08 | 深圳市德明利技术股份有限公司 | 一种ecc数据存储方法、系统及存储介质 |
CN109669802A (zh) * | 2018-11-13 | 2019-04-23 | 北京时代民芯科技有限公司 | 一种用于edac验证的可配置存储器验证系统 |
CN110401458A (zh) * | 2019-07-30 | 2019-11-01 | 北京无线电测量研究所 | 数据校验编码方法及系统 |
CN110401458B (zh) * | 2019-07-30 | 2022-05-17 | 北京无线电测量研究所 | 数据校验编码方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9817749B2 (en) | Apparatus and method of offloading processing from a data storage device to a host device | |
CN101256842B (zh) | 纠错码控制器和包括该纠错码控制器的存储器系统 | |
US9037946B2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
US9602134B2 (en) | Operating method of error correction code decoder and memory controller including the error correction code decoder | |
KR102190683B1 (ko) | 메모리 데이터 에러 정정 방법 | |
US20170269992A1 (en) | Data reliability information in a non-volatile memory device | |
US20150019918A1 (en) | Method and Apparatus for Reducing Read Latency | |
US11409601B1 (en) | Memory device protection | |
US10552048B2 (en) | Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks | |
US10248497B2 (en) | Error detection and correction utilizing locally stored parity information | |
CN104182292A (zh) | 一种数据存储方法及装置 | |
CN103218271B (zh) | 一种数据纠错方法及装置 | |
US20160253239A1 (en) | Data storage device and operating method thereof | |
KR20180086816A (ko) | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 | |
US11714704B2 (en) | Modified checksum using a poison data pattern | |
KR102652293B1 (ko) | 메모리 관리방법 | |
CN108345514B (zh) | 存储器件、存储系统及其操作方法 | |
KR102414202B1 (ko) | 계층적 디코더를 이용한 오류 정정 | |
US9043655B2 (en) | Apparatus and control method | |
KR20190069998A (ko) | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 | |
CN116569264A (zh) | 使用有毒数据单位修改奇偶校验数据 | |
KR20180078426A (ko) | 데이터 저장 장치의 에러 정정 코드 처리 방법 | |
CN116783654A (zh) | 自适应错误校正以提高系统存储器可靠性、可用性和可服务性(ras) | |
CN103092727B (zh) | Flash存储介质上的数据纠错方法和装置 | |
US11437119B2 (en) | Error read flow component |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141203 |
|
RJ01 | Rejection of invention patent application after publication |