CN109947368A - 数据可靠性检测方法、装置、计算机设备及存储介质 - Google Patents
数据可靠性检测方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109947368A CN109947368A CN201910219186.2A CN201910219186A CN109947368A CN 109947368 A CN109947368 A CN 109947368A CN 201910219186 A CN201910219186 A CN 201910219186A CN 109947368 A CN109947368 A CN 109947368A
- Authority
- CN
- China
- Prior art keywords
- data
- crc register
- redundancy check
- check code
- value
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 36
- 239000007787 solid Substances 0.000 claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 23
- 108010001267 Protein Subunits Proteins 0.000 claims description 8
- 238000013481 data capture Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及数据可靠性检测方法、装置、计算机设备及存储介质,该方法包括获取命令;判断命令是否为写命令;若是,获取待写入数据;根据待写入数据计算校验值,以得到冗余校验码;将冗余校验码与待写入数据进行打包,形成数据包;将数据包写入固态硬盘内;若否,则获取固态硬盘内的数据包;根据数据包判断对应数据是否发生错误;若是,则重新获取数据包,并返回根据数据包判断对应数据是否发生错误。本发明有效保证DDR中数据的准确性,提升了固态硬盘的数据可靠性,改善了固态硬盘的读写安全性。
Description
技术领域
本发明涉及固态硬盘数据处理方法,更具体地说是指数据可靠性检测方法、装置、计算机设备及存储介质。
背景技术
DDR(双倍速率同步动态随机存储器,Double Data Rate)作为主机端和固态硬盘之间的桥梁,会有大量的数据在DDR中进行缓存。
固态硬盘数据发送流程如下:主机端将需要存放的数据和发送命令发给NVME(非易失性内存主机控制器接口规范,Non-Volatile Memory express);
NVME将命令进行解析并发送给后端NFC(固态硬盘控制器,Nand FlashController),将数据搬移至DDR进行缓存。NFC通过命令对NAND进行写操作,将需要存放的数据从DDR存放入NAND中。
固态硬盘数据读取流程如下:主机端发送读取命令给NVME;NVME将命令进行解析并发送给后端NFC;NFC通过命令对NAND进行读操作,并将需要读取的数据从NAND中存放入DDR中;NVME从DDR中搬运给PC端。
在读写过程中,DDR承担了数据缓存的作用,大量的数据写入读出DDR的过程中,在大量的数据搬移的过程中,容易造成数据某些比特位的翻转导致数据丢失和错乱,若不进行数据检测,则会导致数据不可靠和固态硬盘的读写性能出现影响。
因此,有必要设计一种新的方法,实现提高了DDR中数据的安全性,改善了固态硬盘的读写安全性。
发明内容
本发明的目的在于克服现有技术的缺陷,提供数据可靠性检测方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:数据可靠性检测方法,包括:
获取命令;
判断所述命令是否为写命令;
若是,获取待写入数据;
根据所述待写入数据计算校验值,以得到冗余校验码;
将冗余校验码与待写入数据进行打包,形成数据包;
将数据包写入固态硬盘内;
若否,则获取所述固态硬盘内的数据包;
根据所述数据包判断对应数据是否发生错误;
若是,则重新获取数据包,并返回所述根据所述数据包判断对应数据是否发生错误。
其进一步技术方案为:根据所述待写入数据计算校验值,以得到冗余校验码,包括:
配置CRC寄存器,以得到CRC寄存器的初始值;
获取所述待写入数据的字节,以形成待处理字节;
将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
将中间数值存储于CRC寄存器内;
根据CRC寄存器内的中间数值判断是否需要进行再次异或;
若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;
将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
若否,则CRC寄存器内的中间数值作为冗余校验码;
判断所述字节是否处理完成;
若是,则判断所述数据的所有字节是否都已计算校验值;
若是,则输出所述冗余校验码。
其进一步技术方案为:所述根据CRC寄存器内的中间数值判断是否需要进行再次异或,包括:
将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
判断所述新数值的低位是否为1;
若是,则需要进行再次异或;
若否,则不需要进行再次异或。
其进一步技术方案为:所述判断所述字节是否处理完成之后,还包括:
若否,则返回所述根据CRC寄存器内的中间数值判断是否需要进行再次异或。
其进一步技术方案为:所述将冗余校验码与待写入数据进行打包,形成数据包,包括:
将冗余校验码放置待写入数据的后端,以形成数据包。
其进一步技术方案为:所述根据所述数据包判断对应数据是否发生错误,包括:
分析所述数据包,以得到冗余校验码以及对应数据;
通过对应数据计算校验值,以形成待比较冗余校验码;
判断待比较冗余校验码与冗余校验码是否一致;
若是,则对应数据未发生错误;
若否,则对应数据发生错误。
本发明还提供了数据可靠性检测装置,包括:
命令获取单元,用于获取命令;
命令判断单元,用于判断所述命令是否为写命令;
数据获取单元,用于若是,获取待写入数据;
校验值计算单元,用于根据所述待写入数据计算校验值,以得到冗余校验码;
打包单元,用于将冗余校验码与待写入数据进行打包,形成数据包;
写入单元,用于将数据包写入固态硬盘内;
数据包获取单元,用于若否,则获取所述固态硬盘内的数据包;
判断单元,用于根据所述数据包判断对应数据是否发生错误;
重获取单元,用于若是,则重新获取数据包。
其进一步技术方案为:所述校验值计算单元包括:
配置子单元,用于配置CRC寄存器,以得到CRC寄存器的初始值;
字节获取子单元,用于获取所述待写入数据的字节,以形成待处理字节;
第一异或子单元,用于将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
第一存储子单元,用于将中间数值存储于CRC寄存器内;
再次异或判断子单元,用于根据CRC寄存器内的中间数值判断是否需要进行再次异或;
再次异或子单元,用于若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;若否,则CRC寄存器内的中间数值作为冗余校验码;
第二存储子单元,用于将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
第一判断子单元,用于判断所述字节是否处理完成;
第二判断子单元,用于若是,则判断所述数据的所有字节是否都已计算校验值;
输出子单元,用于若是,则输出所述冗余校验码。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过在写入数据时,根据数据与CRC寄存器的初始值进行校验值的计算,在获取冗余校验码时,可以根据CRC寄存器内的中间数值进行再次异或,根据获取的冗余校验码对读取数据包时对应的数据进行校验,以检测数据是否发生错误,当发生错误时,则重新获取数据,有效保证DDR中数据的准确性,提升了固态硬盘的数据可靠性,改善了固态硬盘的读写安全性。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据可靠性检测方法的流程示意图;
图2为本发明实施例提供的数据可靠性检测方法的子流程示意图;
图3为本发明实施例提供的数据可靠性检测方法的子流程示意图;
图4为本发明实施例提供的数据可靠性检测方法的子流程示意图;
图5为本发明实施例提供的数据可靠性检测装置的示意性框图;
图6为本发明实施例提供的数据可靠性检测装置的校验值计算单元的示意性框图;
图7为本发明实施例提供的数据可靠性检测装置的再次异或判断子单元的示意性框图;
图8为本发明实施例提供的数据可靠性检测装置的数据判断单元的示意性框图;
图9为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的数据可靠性检测方法的示意性流程图。该数据可靠性检测方法应用于带有固态硬盘的设备中,该设备与主机端进行数据交互。
图1是本发明实施例提供的数据可靠性检测方法的流程示意图。如图1所示,该方法包括以下步骤S110至S200。
S110、获取命令。
在本实施例中,命令是指从主机端下发至固态硬盘的数据处理命令。
主机端将需要存放的数据和发送命令发给NVME。
S120、判断所述命令是否为写命令。
NVME将命令进行解析并发送给NFC,当命令是写命令时,NFC将数据进行计算CRC校验值。
S130、若是,获取待写入数据。
在本实施例中,待写入数据是指从主机端下发至固态硬盘,需存储与固态硬盘的数据。
S140、根据所述待写入数据计算校验值,以得到冗余校验码。
在本实施例中,上述的冗余校验码是指用于校验待写入数据的校验码。
冗余校验码是指CRC(循环冗余校验码,Cyclic Redundancy Check),其是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
在一实施例中,请参阅图2,上述的步骤S140可包括步骤S141~S1411。
S141、配置CRC寄存器,以得到CRC寄存器的初始值。
在本实施例中,CRC寄存器用于存储冗余校验值。
S142、获取所述待写入数据的字节,以形成待处理字节。
在本实施例中,待处理字节是指待写入数据的每个字节,先从待写入数据的起始字节开始进行计算校验值,以使得数据存储至固态硬盘的安全性。
S143、将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值。
在本实施例中,中间数值是指由待处理字节与所述CRC寄存器的初始值进行异或所得的数值。
S144、将中间数值存储于CRC寄存器内。
每次异或后得到结果都存储于CRC寄存器,借助CRC寄存器对中间数值进行后续处理。
S145、根据CRC寄存器内的中间数值判断是否需要进行再次异或。
在一实施例中,请参阅图3,上述的步骤S145可包括步骤S1451~S1454。
S1451、将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
S1452、判断所述新数值的低位是否为1;
S1453、若是,则需要进行再次异或;
S1454、若否,则不需要进行再次异或。
S146、若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值。
目标数值是指将CRC寄存器内的中间数值与CRC寄存器内的中间数值生成的多项式进行异或形成的数值。
该CRC寄存器内的中间数值生成的多项式是指x16+x15+x2+1,该x是指CRC寄存器内的中间数值。
S147、将目标数值存储于所述CRC寄存器内,以形成冗余校验码。
S148、若否,则CRC寄存器内的中间数值作为冗余校验码;
S149、判断所述字节是否处理完成;
若否,则返回所述步骤S145。
S1410、若是,则判断所述数据的所有字节是否都已计算校验值;
S1411、若是,则输出所述冗余校验码。
若否,则返回所述步骤S142。
将数据的每一比特放入CRC寄存器中,通过将数据与CRC寄存器的初始值进行异或来判断是否需要与CRC生成多项式异或,并将结果保存在CRC寄存器中,循环计算存放数据的每一个字节的数据,生成对应的冗余校验码。
S150、将冗余校验码与待写入数据进行打包,形成数据包。
在本实施例中,数据包是指包括数据以及冗余校验码且待存储至固态硬盘中的包。
具体地,将冗余校验码放置待写入数据的后端,以形成数据包。
当然,于其他实施例,还可以将冗余校验码放置在待写入数据的前端,以形成数据包。
S160、将数据包写入固态硬盘内。
具体地,NFC通过命令对NAND进行写操作,将需要存放的数据以及校验位从DDR存放入NAND中。
S170、若否,则获取所述固态硬盘内的数据包。
在本实施例中,若需要读取数据时,则需要读取数据包,以得到数据和冗余校验码,利用冗余校验码校验数据是否在搬移过程中出现丢失和/或错误。
将数据与冗余校验码一起从固态硬盘中读取到DDR中,再进行数据校验。
S180、根据所述数据包判断对应数据是否发生错误。
在一实施例中,请参阅图4,上述的步骤S180可包括步骤S181~S185。
S181、分析所述数据包,以得到冗余校验码以及对应数据;
S182、通过对应数据计算校验值,以形成待比较冗余校验码;
S183、判断待比较冗余校验码与冗余校验码是否一致;
S184、若是,则对应数据未发生错误;
S185、若否,则对应数据发生错误。
从固态硬盘中读取数据包,当在数据读取时如果数据计算所得的待比较冗余校验码与冗余校验码不一致,说明数据中有比特位翻转,此时可以要求主机重新发送该笔数据。
S190、若是,则重新获取数据包,并返回所述步骤S180;
S200、若否,则输出固态硬盘内的数据包内对应的数据。
生成冗余校验码来检测写入DDR中的数据是否会出现比特位翻转引起的数据错误和丢失,有效保证DDR中数据的准确性,提升了固态硬盘的数据可靠性。
上述的S182步骤可参照上述的冗余校验码形成过程进行获取待比较冗余校验码。
上述的数据可靠性检测方法,通过在写入数据时,根据数据与CRC寄存器的初始值进行校验值的计算,在获取冗余校验码时,可以根据CRC寄存器内的中间数值进行再次异或,根据获取的冗余校验码对读取数据包时对应的数据进行校验,以检测数据是否发生错误,当发生错误时,则重新获取数据,有效保证DDR中数据的准确性,提升了固态硬盘的数据可靠性,改善了固态硬盘的读写安全性。
图5是本发明实施例提供的一种数据可靠性检测装置300的示意性框图。如图5所示,对应于以上数据可靠性检测方法,本发明还提供一种数据可靠性检测装置300。该数据可靠性检测装置300包括用于执行上述数据可靠性检测方法的单元,该装置可以被配置于带固态硬盘的设备中。
具体地,请参阅图5,该数据可靠性检测装置300,包括:
命令获取单元301,用于获取命令;
命令判断单元302,用于判断所述命令是否为写命令;
数据获取单元303,用于若是,获取待写入数据;
校验值计算单元304,用于根据所述待写入数据计算校验值,以得到冗余校验码;
打包单元305,用于将冗余校验码与待写入数据进行打包,形成数据包;
写入单元306,用于将数据包写入固态硬盘内;
数据包获取单元307,用于若否,则获取所述固态硬盘内的数据包;
数据判断单元308,用于根据所述数据包判断对应数据是否发生错误;
重获取单元309,用于若是,则重新获取数据包。
在一实施例中,如图6所示,所述校验值计算单元304包括:
配置子单元3041,用于配置CRC寄存器,以得到CRC寄存器的初始值;
字节获取子单元3042,用于获取所述待写入数据的字节,以形成待处理字节;
第一异或子单元3043,用于将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
第一存储子单元3044,用于将中间数值存储于CRC寄存器内;
再次异或判断子单元3045,用于根据CRC寄存器内的中间数值判断是否需要进行再次异或;
再次异或子单元3046,用于若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;若否,则CRC寄存器内的中间数值作为冗余校验码;
第二存储子单元3047,用于将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
第一判断子单元3048,用于判断所述字节是否处理完成;
第二判断子单元3049,用于若是,则判断所述数据的所有字节是否都已计算校验值;
输出子单元30410,用于若是,则输出所述冗余校验码。
在一实施例中,请参阅图7,上述的再次异或判断子单元3045包括:
数值处理模块30451,用于将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
低位判断模块30452,用于判断所述新数值的低位是否为1;若是,则需要进行再次异或;若否,则不需要进行再次异或。
在一实施例中,请参阅图8,上述的数据判断单元308包括:
分析子单元3081,用于分析所述数据包,以得到冗余校验码以及对应数据;
计算子单元3082,用于通过对应数据计算校验值,以形成待比较冗余校验码;
校验码判断子单元3083,用于判断待比较冗余校验码与冗余校验码是否一致;若是,则对应数据未发生错误;若否,则对应数据发生错误。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述数据可靠性检测装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述数据可靠性检测装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。
请参阅图9,图9是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500是带固态硬盘的设备。
参阅图9,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种数据可靠性检测方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种数据可靠性检测方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
获取命令;
判断所述命令是否为写命令;
若是,获取待写入数据;
根据所述待写入数据计算校验值,以得到冗余校验码;
将冗余校验码与待写入数据进行打包,形成数据包;
将数据包写入固态硬盘内;
若否,则获取所述固态硬盘内的数据包;
根据所述数据包判断对应数据是否发生错误;
若是,则重新获取数据包,并返回所述根据所述数据包判断对应数据是否发生错误。
在一实施例中,处理器502在实现所述根据所述待写入数据计算校验值,以得到冗余校验码步骤时,具体实现如下步骤:
配置CRC寄存器,以得到CRC寄存器的初始值;
获取所述待写入数据的字节,以形成待处理字节;
将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
将中间数值存储于CRC寄存器内;
根据CRC寄存器内的中间数值判断是否需要进行再次异或;
若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;
将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
若否,则CRC寄存器内的中间数值作为冗余校验码;
判断所述字节是否处理完成;
若是,则判断所述数据的所有字节是否都已计算校验值;
若是,则输出所述冗余校验码。
在一实施例中,处理器502在实现所述根据CRC寄存器内的中间数值判断是否需要进行再次异或步骤时,具体实现如下步骤:
将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
判断所述新数值的低位是否为1;
若是,则需要进行再次异或;
若否,则不需要进行再次异或。
在一实施例中,处理器502在实现所述判断所述字节是否处理完成步骤之后,还实现如下步骤:
若否,则返回所述根据CRC寄存器内的中间数值判断是否需要进行再次异或。
在一实施例中,处理器502在实现所述将冗余校验码与待写入数据进行打包,形成数据包步骤时,具体实现如下步骤:
将冗余校验码放置待写入数据的后端,以形成数据包。
在一实施例中,处理器502在实现所述根据所述数据包判断对应数据是否发生错误步骤时,具体实现如下步骤:
分析所述数据包,以得到冗余校验码以及对应数据;
通过对应数据计算校验值,以形成待比较冗余校验码;
判断待比较冗余校验码与冗余校验码是否一致;
若是,则对应数据未发生错误;
若否,则对应数据发生错误。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
获取命令;
判断所述命令是否为写命令;
若是,获取待写入数据;
根据所述待写入数据计算校验值,以得到冗余校验码;
将冗余校验码与待写入数据进行打包,形成数据包;
将数据包写入固态硬盘内;
若否,则获取所述固态硬盘内的数据包;
根据所述数据包判断对应数据是否发生错误;
若是,则重新获取数据包,并返回所述根据所述数据包判断对应数据是否发生错误。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述待写入数据计算校验值,以得到冗余校验码步骤时,具体实现如下步骤:
配置CRC寄存器,以得到CRC寄存器的初始值;
获取所述待写入数据的字节,以形成待处理字节;
将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
将中间数值存储于CRC寄存器内;
根据CRC寄存器内的中间数值判断是否需要进行再次异或;
若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;
将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
若否,则CRC寄存器内的中间数值作为冗余校验码;
判断所述字节是否处理完成;
若是,则判断所述数据的所有字节是否都已计算校验值;
若是,则输出所述冗余校验码。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据CRC寄存器内的中间数值判断是否需要进行再次异或步骤时,具体实现如下步骤:
将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
判断所述新数值的低位是否为1;
若是,则需要进行再次异或;
若否,则不需要进行再次异或。
在一实施例中,所述处理器在执行所述计算机程序而实现所述判断所述字节是否处理完成步骤之后,还实现如下步骤:
若否,则返回所述根据CRC寄存器内的中间数值判断是否需要进行再次异或。
在一实施例中,所述处理器在执行所述计算机程序而实现所述将冗余校验码与待写入数据进行打包,形成数据包步骤时,具体实现如下步骤:
将冗余校验码放置待写入数据的后端,以形成数据包。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述数据包判断对应数据是否发生错误步骤时,具体实现如下步骤:
分析所述数据包,以得到冗余校验码以及对应数据;
通过对应数据计算校验值,以形成待比较冗余校验码;
判断待比较冗余校验码与冗余校验码是否一致;
若是,则对应数据未发生错误;
若否,则对应数据发生错误。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.数据可靠性检测方法,其特征在于,包括:
获取命令;
判断所述命令是否为写命令;
若是,获取待写入数据;
根据所述待写入数据计算校验值,以得到冗余校验码;
将冗余校验码与待写入数据进行打包,形成数据包;
将数据包写入固态硬盘内;
若否,则获取所述固态硬盘内的数据包;
根据所述数据包判断对应数据是否发生错误;
若是,则重新获取数据包,并返回所述根据所述数据包判断对应数据是否发生错误。
2.根据权利要求1所述的数据可靠性检测方法,其特征在于,根据所述待写入数据计算校验值,以得到冗余校验码,包括:
配置CRC寄存器,以得到CRC寄存器的初始值;
获取所述待写入数据的字节,以形成待处理字节;
将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
将中间数值存储于CRC寄存器内;
根据CRC寄存器内的中间数值判断是否需要进行再次异或;
若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;
将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
若否,则CRC寄存器内的中间数值作为冗余校验码;
判断所述字节是否处理完成;
若是,则判断所述数据的所有字节是否都已计算校验值;
若是,则输出所述冗余校验码。
3.根据权利要求2所述的数据可靠性检测方法,其特征在于,所述根据CRC寄存器内的中间数值判断是否需要进行再次异或,包括:
将CRC寄存器内的中间数值向右移一位,且高位补零,以得到新数值;
判断所述新数值的低位是否为1;
若是,则需要进行再次异或;
若否,则不需要进行再次异或。
4.根据权利要求2所述的数据可靠性检测方法,其特征在于,所述判断所述字节是否处理完成之后,还包括:
若否,则返回所述根据CRC寄存器内的中间数值判断是否需要进行再次异或。
5.根据权利要求1至4任一项所述的数据可靠性检测方法,其特征在于,所述将冗余校验码与待写入数据进行打包,形成数据包,包括:
将冗余校验码放置待写入数据的后端,以形成数据包。
6.根据权利要求5所述的数据可靠性检测方法,其特征在于,所述根据所述数据包判断对应数据是否发生错误,包括:
分析所述数据包,以得到冗余校验码以及对应数据;
通过对应数据计算校验值,以形成待比较冗余校验码;
判断待比较冗余校验码与冗余校验码是否一致;
若是,则对应数据未发生错误;
若否,则对应数据发生错误。
7.数据可靠性检测装置,其特征在于,包括:
命令获取单元,用于获取命令;
命令判断单元,用于判断所述命令是否为写命令;
数据获取单元,用于若是,获取待写入数据;
校验值计算单元,用于根据所述待写入数据计算校验值,以得到冗余校验码;
打包单元,用于将冗余校验码与待写入数据进行打包,形成数据包;
写入单元,用于将数据包写入固态硬盘内;
数据包获取单元,用于若否,则获取所述固态硬盘内的数据包;
数据判断单元,用于根据所述数据包判断对应数据是否发生错误;
重获取单元,用于若是,则重新获取数据包。
8.根据权利要求7所述的数据可靠性检测装置,其特征在于,所述校验值计算单元包括:
配置子单元,用于配置CRC寄存器,以得到CRC寄存器的初始值;
字节获取子单元,用于获取所述待写入数据的字节,以形成待处理字节;
第一异或子单元,用于将待处理字节与所述CRC寄存器的初始值进行异或,以得到中间数值;
第一存储子单元,用于将中间数值存储于CRC寄存器内;
再次异或判断子单元,用于根据CRC寄存器内的中间数值判断是否需要进行再次异或;
再次异或子单元,用于若是,则CRC寄存器内的中间数值与CRC寄存器内的中间数值生成多项式进行异或,以得到目标数值;若否,则CRC寄存器内的中间数值作为冗余校验码;
第二存储子单元,用于将目标数值存储于所述CRC寄存器内,以形成冗余校验码;
第一判断子单元,用于判断所述字节是否处理完成;
第二判断子单元,用于若是,则判断所述数据的所有字节是否都已计算校验值;
输出子单元,用于若是,则输出所述冗余校验码。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219186.2A CN109947368A (zh) | 2019-03-21 | 2019-03-21 | 数据可靠性检测方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910219186.2A CN109947368A (zh) | 2019-03-21 | 2019-03-21 | 数据可靠性检测方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947368A true CN109947368A (zh) | 2019-06-28 |
Family
ID=67010795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910219186.2A Pending CN109947368A (zh) | 2019-03-21 | 2019-03-21 | 数据可靠性检测方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947368A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110756977A (zh) * | 2019-11-13 | 2020-02-07 | 中国航发动力股份有限公司 | 一种电子束焊接参数采集监视系统、方法及处理终端 |
CN111737255A (zh) * | 2020-06-02 | 2020-10-02 | 通号城市轨道交通技术有限公司 | 一种联锁监测数据的存储方法及系统 |
CN113296682A (zh) * | 2020-02-24 | 2021-08-24 | 北汽福田汽车股份有限公司 | 整车控制器的数据读取和写入方法 |
CN114448565A (zh) * | 2021-12-30 | 2022-05-06 | 北京奕斯伟计算技术有限公司 | 循环冗余校验计算方法、装置、电子设备及存储介质 |
CN114741231A (zh) * | 2022-04-19 | 2022-07-12 | 深圳鲲云信息科技有限公司 | 基于存储器的数据读写方法、装置、设备及存储介质 |
CN114756404A (zh) * | 2022-06-15 | 2022-07-15 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115129509A (zh) * | 2022-06-30 | 2022-09-30 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、介质 |
CN115297341A (zh) * | 2022-07-18 | 2022-11-04 | 西安电子科技大学芜湖研究院 | 一种视频数据传输方法、装置、电子设备及可读存储介质 |
CN115987460A (zh) * | 2023-03-21 | 2023-04-18 | 深圳华锐分布式技术股份有限公司 | 基于校验码的数据传输方法、装置、设备及介质 |
CN116566399A (zh) * | 2023-05-19 | 2023-08-08 | 合芯科技有限公司 | 基于向量多项式乘和指令的crc32c数据检错方法、系统、终端及介质 |
CN116861493A (zh) * | 2023-08-31 | 2023-10-10 | 上海芯联芯智能科技有限公司 | 一种校验码生成方法、处理器及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101273338A (zh) * | 2005-09-30 | 2008-09-24 | 英特尔公司 | 数据集及数据集“异或”的dma传送 |
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
TW201117219A (en) * | 2009-09-10 | 2011-05-16 | Hewlett Packard Development Co | Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information |
CN106788909A (zh) * | 2017-03-31 | 2017-05-31 | 重庆邮电大学 | 基于gmr卫星通信协议的crc计算方法及装置 |
US20170177438A1 (en) * | 2015-12-22 | 2017-06-22 | Western Digital Technologies, Inc. | Selective buffer protection |
-
2019
- 2019-03-21 CN CN201910219186.2A patent/CN109947368A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101273338A (zh) * | 2005-09-30 | 2008-09-24 | 英特尔公司 | 数据集及数据集“异或”的dma传送 |
CN101625653A (zh) * | 2009-08-13 | 2010-01-13 | 青岛海信电器股份有限公司 | 一种多媒体产品本地数据处理校验方法 |
TW201117219A (en) * | 2009-09-10 | 2011-05-16 | Hewlett Packard Development Co | Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information |
US20120124448A1 (en) * | 2009-09-10 | 2012-05-17 | Ted Emerson | Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information |
US20170177438A1 (en) * | 2015-12-22 | 2017-06-22 | Western Digital Technologies, Inc. | Selective buffer protection |
CN106788909A (zh) * | 2017-03-31 | 2017-05-31 | 重庆邮电大学 | 基于gmr卫星通信协议的crc计算方法及装置 |
Non-Patent Citations (1)
Title |
---|
周长忠等: "Modbus-RTU循环冗余校验的PLC程序实现", 《电气技术》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110756977A (zh) * | 2019-11-13 | 2020-02-07 | 中国航发动力股份有限公司 | 一种电子束焊接参数采集监视系统、方法及处理终端 |
CN113296682A (zh) * | 2020-02-24 | 2021-08-24 | 北汽福田汽车股份有限公司 | 整车控制器的数据读取和写入方法 |
CN111737255A (zh) * | 2020-06-02 | 2020-10-02 | 通号城市轨道交通技术有限公司 | 一种联锁监测数据的存储方法及系统 |
CN114448565A (zh) * | 2021-12-30 | 2022-05-06 | 北京奕斯伟计算技术有限公司 | 循环冗余校验计算方法、装置、电子设备及存储介质 |
CN114448565B (zh) * | 2021-12-30 | 2024-06-21 | 北京奕斯伟计算技术股份有限公司 | 循环冗余校验计算方法、装置、电子设备及存储介质 |
CN114741231A (zh) * | 2022-04-19 | 2022-07-12 | 深圳鲲云信息科技有限公司 | 基于存储器的数据读写方法、装置、设备及存储介质 |
CN114756404B (zh) * | 2022-06-15 | 2024-04-05 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114756404A (zh) * | 2022-06-15 | 2022-07-15 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115129509A (zh) * | 2022-06-30 | 2022-09-30 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、介质 |
CN115129509B (zh) * | 2022-06-30 | 2024-06-25 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、介质 |
CN115297341A (zh) * | 2022-07-18 | 2022-11-04 | 西安电子科技大学芜湖研究院 | 一种视频数据传输方法、装置、电子设备及可读存储介质 |
CN115987460A (zh) * | 2023-03-21 | 2023-04-18 | 深圳华锐分布式技术股份有限公司 | 基于校验码的数据传输方法、装置、设备及介质 |
CN116566399B (zh) * | 2023-05-19 | 2023-11-07 | 合芯科技有限公司 | 基于向量多项式乘和指令的crc32c数据检错方法、系统、终端及介质 |
CN116566399A (zh) * | 2023-05-19 | 2023-08-08 | 合芯科技有限公司 | 基于向量多项式乘和指令的crc32c数据检错方法、系统、终端及介质 |
CN116861493B (zh) * | 2023-08-31 | 2024-03-29 | 上海芯联芯智能科技有限公司 | 一种校验码生成方法、处理器及电子设备 |
CN116861493A (zh) * | 2023-08-31 | 2023-10-10 | 上海芯联芯智能科技有限公司 | 一种校验码生成方法、处理器及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947368A (zh) | 数据可靠性检测方法、装置、计算机设备及存储介质 | |
CN102623069B (zh) | 随机激励闪存模型验证方法 | |
US8271252B2 (en) | Automatic verification of device models | |
CN110459259A (zh) | 存储设备写错误纠错能力的测试方法、系统及存储介质 | |
CN109189405A (zh) | 一种验证程序Flash数据一致性的方法及系统 | |
CN111221693B (zh) | 一种NOR flash配置模块验证方法、系统、装置和存储介质 | |
CN110825569B (zh) | 一种硬盘稳定性测试方法及测试系统 | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
CN103793032B (zh) | 用于确定上电复位的方法和装置 | |
CN105247488A (zh) | 在硬件中提供对数据帧区段的线速率合并的高性能读取-修改-写入系统 | |
CN111274120B (zh) | 一种接口文档的验证方法和装置 | |
CN108628734A (zh) | 一种功能程序调试方法和终端 | |
CN109086186B (zh) | 日志检测方法及装置 | |
CN103365772B (zh) | 软件测试自动评价装置以及方法 | |
US6963997B2 (en) | Transaction logging and intelligent error reporting in an expectation-based memory agent checker | |
CN110442474B (zh) | 一种数据一致性验证方法、系统及数据验证端 | |
CN109885432A (zh) | NVMe前端测试方法、装置、计算机设备及存储介质 | |
US10970442B1 (en) | Method of debugging hardware and firmware of data storage | |
CN108196975A (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
CN114492269B (zh) | 闪存控制器的验证系统 | |
CN115859877A (zh) | 一种仿真测试中信息同步方法、装置、设备及存储介质 | |
CN109829083A (zh) | Spd数据自动验证方法、装置、计算机设备及存储介质 | |
CN109634826A (zh) | 控制器极限性能分析方法、装置、计算机设备及存储介质 | |
CN109344083A (zh) | 一种程序调试方法、装置、设备及可读存储介质 | |
CN108600312A (zh) | 一种基于文件分块的多线程并行下载方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190628 |
|
RJ01 | Rejection of invention patent application after publication |