CN116757158A - 基于半导体存储的数据管理方法 - Google Patents
基于半导体存储的数据管理方法 Download PDFInfo
- Publication number
- CN116757158A CN116757158A CN202311006460.0A CN202311006460A CN116757158A CN 116757158 A CN116757158 A CN 116757158A CN 202311006460 A CN202311006460 A CN 202311006460A CN 116757158 A CN116757158 A CN 116757158A
- Authority
- CN
- China
- Prior art keywords
- character
- data segment
- data
- sequence
- encoded
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 239000004065 semiconductor Substances 0.000 title claims abstract description 39
- 238000013523 data management Methods 0.000 title abstract description 9
- 238000012937 correction Methods 0.000 claims abstract description 86
- 230000006837 decompression Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims description 2
- 238000007906 compression Methods 0.000 abstract description 13
- 230000006835 compression Effects 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及数据纠错编码技术领域,具体涉及基于半导体存储的数据管理方法,包括:将待存储数据转换为字符序列,构建目标霍夫曼树,获取待编码字符的参考字符,根据参考字符在目标霍夫曼树中与待编码字符之间的位置关系对待编码字符进行编码,得到第一编码,对第一编码设置纠错码得到第二编码,进而得到编码结果。对编码结果进行纠错解压时,根据第二编码的特征将编码结果分为多个数据段,根据不符合第二编码的数据特征的数据段获取纠错数据段,对待纠错数据段进行纠错得到无错序列,对无错序列进行解压。本发明较于现有的数据纠错算法编码长度更短,纠错码对压缩效率的影响非常低,不影响数据的存储效率,同时纠错结果准确。
Description
技术领域
本发明涉及数据纠错编码技术领域,具体涉及基于半导体存储的数据管理方法。
背景技术
半导体存储设备是一类电子式数字存储设备,通过半导体介质来存储和读取数字信息。为了提高半导体存储设备的数据存储效率,需要对数据进行压缩存储。霍夫曼编码为最常用的数据压缩算法。
在将数据存储到半导体存储设备的过程中,可能受到电磁干扰等多种因素影响,导致数据错误。部分半导体存储设备如可编程只读存储器(PROM)仅能写入数据,不能修改数据。因此对霍夫曼编码的压缩数据进行存储时,若一个比特位发生了错误,则会导致之后的所有字符都会解码错误,从而使得可编程只读存储器存储的数据无法正确解码,导致可编程只读存储器报废。因此需要设置纠错码对霍夫曼编码的压缩数据进行纠错,确保存储在半导体存储设备中的数据可正确解码。
现有的数据纠错算法,如低密度奇偶校验码,纠错码的位数与数据的位数相同,极大的影响了压缩效率,使得数据的存储空间增大,影响数据的存储效率。
发明内容
本发明提供基于半导体存储的数据管理方法,以解决现有的问题。
本发明的基于半导体存储的数据管理方法采用如下技术方案:
本发明一个实施例提供了基于半导体存储的数据管理方法,该方法包括以下步骤:
获取待存储数据,将待存储数据转换为字符序列;根据字符序列中每种字符的频率构建目标霍夫曼树;
将字符序列中每个字符依次作为待编码字符,对待编码字符进行编码,包括:
当待编码字符为字符序列中第一个字符时,将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码;当待编码字符不为字符序列中第一个字符时,根据字符序列获取待编码字符的参考字符,根据参考字符获取待编码字符的第一编码;根据待编码字符的第一编码设置纠错码,获取第二编码;将字符序列中每个字符的第二编码构成字符序列的编码结果;
获取编码结果的数字摘要,作为目标数字摘要;对编码结果以及目标数字摘要进行存储;
对编码结果进行纠错解压,包括:
将编码结果分为多个数据段,根据数据段中的纠错码获取待纠错数据段,根据目标数字摘要对所有待纠错数据段进行纠错得到无错序列;对无错序列进行解压。
优选的,所述根据字符序列中每种字符的频率构建目标霍夫曼树,包括的具体步骤如下:
将字符序列中字符的种类数记为M,构建一个M+1层的二叉树,要求该二叉树包含M+2个叶子节点,该二叉树的所有左分支都为叶子节点,除最后一个右分支外,所有右分支都为父节点;按照频率从大到小的顺序将每种字符依次分配给二叉树的第2层到最后一层的左叶子节点,将最终得到的二叉树记为目标霍夫曼树。
优选的,所述根据字符序列获取待编码字符的参考字符,包括的具体步骤如下:
获取字符序列中距离待编码字符最近且在待编码字符之前的N种字符,作为待编码字符的参考字符,其中N为预设的回溯阈值。
优选的,所述根据参考字符获取待编码字符的第一编码,包括的具体步骤如下:
若待编码字符的参考字符在目标霍夫曼树中均位于待编码字符的深层或同层,将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码;
若存在待编码字符的参考字符在目标霍夫曼树中位于待编码字符的浅层,获取所有参考字符中最浅层的参考字符作为起始字符,将目标霍夫曼树中起始字符的父节点到待编码字符的路径的编码,作为待编码字符的第一编码。
优选的,所述根据待编码字符的第一编码设置纠错码,获取第二编码,包括的具体步骤如下:
获取待编码字符的第一编码中1的个数,在第一编码之后补充多个0,使得1的个数与0的个数相同,将得到的结果作为待编码字符的第二编码,将第二编码中所有0作为纠错码。
优选的,所述将编码结果分为多个数据段,包括的具体步骤如下:
将编码结果中1到0称为一次跳变;将编码结果分为多个数据段,使每个数据段均以1为开头,以0为结尾,且每个数据段中数据的跳变次数为1。
优选的,所述根据数据段中的纠错码获取待纠错数据段,包括的具体步骤如下:
数据段中所有的0为数据段的纠错码,若数据段中1的个数与数据段中纠错码的长度相同,将数据段记为正常数据段,若数据段中1的个数与数据段中纠错码的长度不相同,将数据段记为错误数据段;当一个正常数据段的前一个数据段以及后一个数据段均为错误数据段时,将该正常数据段置为错误数据段;将所有相邻的错误数据段合并为一个错误数据段;将合并之后的每个错误数据段与前一个数据段以及后一个数据段进行合并,得到待纠错数据段。
优选的,所述根据目标数字摘要对所有待纠错数据段进行纠错得到无错序列,包括的具体步骤如下:
遍历修改待纠错数据段中一个或多个比特位,得到多个可能数据段;对待纠错数据段所有的可能数据段进行筛选得到候选数据段;
将待纠错数据段的任意一个候选数据段作为待纠错数据段的目标候选数据段,将编码结果中每个待纠错数据段利用每个待纠错数据段的目标候选数据段进行替换,得到一个预纠错序列;将待纠错数据段的每个候选数据段分别作为待纠错数据段的目标候选数据段,得到多个预纠错序列;
根据目标数字摘要获取预纠错序列中的无错序列。
优选的,所述对待纠错数据段所有的可能数据段进行筛选得到候选数据段,包括的具体步骤如下:
对每个可能数据段进行游程编码,将游程编码中编码对象构成一个编码对象序列,将游程长度构成长度序列;若可能数据段的编码对象序列以1为开始0为结尾,且所有的1和0交替出现,同时可能数据段的长度序列中所有的奇数位的数值与其下一个偶数位的数值相同时,将该可能数据段作为候选数据段。
优选的,所述根据目标数字摘要获取预纠错序列中的无错序列,包括的具体步骤如下:
对每个预纠错序列进行哈希处理,得到每个预纠错序列的数字摘要;获取将每个预纠错序列的数字摘要和目标数字摘要的汉明距离,将汉明距离最小的预纠错序列作为无错序列。
本发明的技术方案的有益效果是:本发明根据字符序列的频率构建目标霍夫曼树,在对字符序列进行编码的过程中,获取待编码字符的参考字符,根据参考字符在目标霍夫曼树中与待编码字符之间的位置关系对待编码字符进行编码,得到第一编码,相较于传统的霍夫曼编码缩短了数据的编码长度;现有的数据纠错算法,如低密度奇偶校验码,纠错码的位数与编码结果的位数相同,极大的影响了压缩效率,使得数据的存储空间增大,影响数据的存储效率,本发明根据待编码字符的第一编码中1的个数设置纠错码,对第一编码进行选择性扩充,得到第二编码,使得纠错码的长度尽可能短,将纠错码对压缩效率的影响降到非常低,不影响数据的存储效率;本发明纠错码以及数字摘要对数据进行纠错,确保了纠错结果的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于半导体存储的数据管理方法的步骤流程图;
图2为目标霍夫曼树;
图3为传统的霍夫曼树。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于半导体存储的数据管理方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
下面结合附图具体的说明本发明所提供的基于半导体存储的数据管理方法的具体方案。
请参阅图1,其示出了本发明一个实施例提供的基于半导体存储的数据管理方法的步骤流程图,该方法包括以下步骤:
S001.获取待存储数据,对待存储数据进行预处理,获取字符序列。
获取需要存储在半导体存储设备中的数据,作为待存储数据。
需要说明的是,为了尽可能节省待存储数据的存储空间,使得半导体存储设备可存储更多的数据,需要对待存储数据进行压缩。为了便于压缩,首先需要将待存储数据转换为统一的数据类型。
在本发明实施例中,将待存储数据编码为二进制数据,利用base64编码对二进制数据进行编码,将编码得到的所有字符按照顺序组成一个字符序列。需要说明的是,在本发明实施例中,将待存储数据编码为二进制数据的编码方法为GB2312编码,在其他实施例中,实施人员可根据实际实施情况设置编码方法。
至此,实现了待存储数据的预处理,得到了字符序列。
S002.对字符序列进行压缩同时设置纠错码。
需要说明的是,在将数据存储到半导体存储设备的过程中,可能受到电磁干扰等多种因素影响,导致数据错误。部分半导体存储设备如可编程只读存储器(PROM)仅能写入数据,不能修改数据。霍夫曼编码为每种字符赋予不同长度的编码,最终的编码结果中不同长度的编码混杂,在对编码结果进行解码时,需按照顺序进行解码,若编码结果中一个比特位发生了错误,则会导致之后的字符都解码错误,从而使得可编程只读存储器存储的数据无法正确解码,导致可编程只读存储器报废。因此需要设置纠错码对错误的编码进行纠正,确保所有字符都可被正确解码。现有的数据纠错算法,如低密度奇偶校验码,纠错码的位数与编码结果的位数相同,极大的影响了压缩效率,使得数据的存储空间增大,影响数据的存储效率。因此本发明实施例在霍夫曼编码过程中,首先根据每种字符的频率构建霍夫曼树,根据已编码字符与当前字符在霍夫曼树中的位置关系,对当前字符缩短长度进行编码,结合字符的编码中1和0的分布设置较短的纠错码,使得纠错码对压缩效率的影响降到最低。
在本发明实施例中,获取字符序列中每种字符的频率。将字符序列中字符的种类数记为M,构建一个M+1层的二叉树,要求该二叉树包含M+2个叶子节点,该二叉树的所有左分支都为叶子节点,除最后一个右分支外,所有右分支都为父节点。按照频率从大到小的顺序将每种字符依次分配给二叉树的第2层到最后一层的左叶子节点。将最终得到的二叉树记为目标霍夫曼树。例如当字符序列为{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}时,构建的目标霍夫曼树如图2所示。
需要说明的是,若根据目标霍夫曼树对字符序列进行编码,每种字符在目标霍夫曼树中对应的编码的长度均不相同,编码中包含的1的个数均不相同,因此可根据每个字符的编码中1的个数来设置纠错码。若存储过程中发生错误,在解码时划分的编码中1的个数与纠错码不对应时,即可知道编码发生了错误,此时对编码进行调整,使得编码中1的个数与纠错码对应。为了避免设置纠错码之后严重影响字符序列的压缩效率,在根据目标霍夫曼树对字符序列进行压缩过程中,可结合已编码的字符在目标霍夫曼树中的位置,缩短当前字符的编码长度,同时缩短纠错码的长度,确保字符序列的压缩效率。
在本发明实施例中,预设一个回溯阈值N,其中本实施例以N=5为例进行叙述,本实施例不进行具体限定,其中N可根据具体实施情况而定。
将字符序列中每个字符依次作为待编码字符,依次对每个待编码字符进行编码:
当待编码字符为字符序列中第一个字符时,将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码,将待编码字符标记为1。例如当字符序列为{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}时,第一个字符A的第一编码为01。
当待编码字符不为字符序列中第一个字符时,获取字符序列中距离待编码字符最近且在待编码字符之前的N种字符,作为待编码字符的参考字符。需要说明的是,当字符序列中在待编码字符之前的字符不足N种时,将字符序列中在待编码字符之前的每种字符分别作为待编码字符的参考字符。例如当字符序列为{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}时,阈值N=2时,第2个字符C的参考字符为A,第3个字符A的参考字符为A、C,第8个字符C的参考字符为C、A。
若待编码字符的参考字符在目标霍夫曼树中均位于待编码字符的深层或同层,则将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码,将待编码字符标记为1。例如当字符序列为{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A},阈值N=2时,第3个字符A的参考字符为A、C,参考字符A在目标霍夫曼树中位于字符A的同层,参考字符C在目标霍夫曼树中位于字符A的深层,此时第3个字符A的第一编码为01。
若存在待编码字符的参考字符在目标霍夫曼树中位于待编码字符的浅层,则获取所有参考字符中最浅层的参考字符作为起始字符,将目标霍夫曼树中起始字符的父节点到待编码字符的路径的编码,作为待编码字符的第一编码,将待编码字符标记为0。例如当字符序列为{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A},阈值N=2时,第8个字符C的参考字符为C、A,参考字符C在目标霍夫曼树中位于字符C的同层,参考字符A在目标霍夫曼树中位于字符C的浅层,则将参考字符A作为起始字符,将目标霍夫曼树中起始字符A的父节点到字符C之间的路径的编码10作为字符C的第一编码。
需要说明的是,在目标霍夫曼树中,每种字符对应的编码均为一个或连续多个1开头,一个0结尾。目标霍夫曼树中任意一个浅层字符的父节点到深层字符的路径的编码也均为一个或连续多个1开头,一个0结尾,因此每个待编码字符的第一编码均为一个或连续多个1开头,一个0结尾,所有待编码字符的第一编码的区别仅为1的个数的区别,因此可结合待编码字符的第一编码中1的个数为待编码字符设置纠错码。
在本发明实施例中,获取待编码字符的第一编码中1的个数L,在第一编码之后补充L-1个0得到待编码字符的第二编码,使得第二编码中1的个数与0的个数相同。将第二编码中所有的0作为待编码字符的纠错码。例如字符序列{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}中第8个字符C的第一编码为10,其中1的个数L=1,L-1=0,此时在第一编码之后补充0个0,得到第8个字符C的第二编码10,第二编码10中的0即为纠错码。
至此,实现了对待编码字符的编码操作。
将字符序列中每个字符的第二编码按照顺序拼接在一起构成一个二进制串,作为字符序列的编码结果。将字符序列中每个字符的标记按照顺序拼接在一起构成一个二进制串,作为标记序列。
至此,实现了字符序列的压缩以及纠错码的设置,得到了编码结果。
需要说明的是,采用传统的霍夫曼编码算法对字符序列{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}进行编码时,构建的霍夫曼树如图3所示。编码结果为000100100100000110011011011011100,编码长度为33,若采用现有的数据纠错算法,纠错位数与编码长度相同,添加纠错码之后的编码长度为66。本发明实施例对字符序列{A,C,A,D,C,A,A,C,D,C,D,E,E,B,A}进行编码的结果为10101011001010101011001100101100101010,编码结果中已包含了纠错码,长度为38。因此本发明实施例中的方法相较于现有的数据纠错算法编码长度更短,纠错码对压缩效率的影响非常低,不影响数据的存储效率。
S003.对编码结果进行存储。
对编码结果进行哈希处理,得到编码结果的数字摘要。将编码结果、数字摘要以及标记序列、目标霍夫曼树存储在半导体存储设备中。
至此,完成了编码结果的存储。
S004.根据纠错码对编码结果进行还原。
当需要读取存储在半导体存储设备中的数据时,需要对编码结果进行解压,同时根据编码结果中的纠错码对发生存储错误的比特位进行纠错,具体为:
将编码结果中1到0称为一次跳变。将编码结果分为多个数据段,使每个数据段均以1为开头,以0为结尾,且每个数据段中数据的跳变次数为1。例如编码结果:10101111001010101011101000101100101010划分为数据段之后为10,10,111100,10,10,10,1110,1000,10,1100,10,10,10。
对每个数据段进行判断:若当前数据段中1的个数与0的个数相同,则将当前数据段记为正常数据段,若当前数据段中1的个数与0的个数不相同,则当前数据段存在错误,将当前数据段记为错误数据段。
若一个正常数据段的前一个数据段以及后一个数据段均为错误数据段,则将该正常数据段置为错误数据段。将所有相邻的错误数据段合并为一个错误数据段。使得合并之后每个错误数据段的前一个数据段以及后一个数据段均为正常数据段。将合并之后每个错误数据段与前一个数据段以及后一个数据段进行合并,得到待纠错数据段。例如数据段10,10,111100,10,10,10,1110,1000,10,1100,10,10,10中111100,1110,1000为错误数据段,其中1110和1000相邻,则将1110和1000合并为一个错误数据段11101000。将合并之后每个错误数据段与前一个数据段以及后一个数据段进行合并,得到待纠错数据段1011110010和101110100010。
对每个待纠错数据段进行纠错:
遍历修改待纠错数据段中一个或多个比特位,得到多个可能数据段,对每个可能数据段进行游程编码,将游程编码中编码对象构成一个编码对象序列,将游程长度构成长度序列。若可能数据段的编码对象序列中以1为开始0为结尾,且所有的1和0交替出现,同时可能数据段的长度序列中所有的奇数位的数值与其下一个偶数位的数值相同时,将该可能数据段作为候选数据段。
例如待纠错数据段1011110010的可能数据段包括1111000010、1010110010、1111110010、1000110010、1011110000、1111100000等。可能数据段1111000010的游程编码为{1:4,0:4,1:1,0:1}对应的编码对象序列为{1,0,1,0},长度序列为{4,4,1,1},编码对象序列{1,0,1,0}以1为开始0为结尾,且所有的1和0交替出现,长度序列{4,4,1,1}中第1个位置的数值与第2个位置的数值相同,第3个位置的数值和第4个位置的数值相同,此时可能数据段1111000010为候选数据段。可能数据段1111110010的游程编码为{1:6,0:2,1:1,0:1}对应的编码对象序列为{1,0,1,0},长度序列为{6,2,1,1},编码对象序列{1,0,1,0}以1为开始0为结尾,且所有的1和0交替出现,长度序列{6,2,1,1}中第1个位置的数值与第2个位置的数值不相同,因此可能数据段1111110010不为候选数据段。同理,1010110010、1011110000、1111100000为候选数据段,1000110010不为候选数据段。
将待纠错数据段的任意一个候选数据段作为待纠错数据段的目标候选数据段,将编码结果中每个待纠错数据段利用该待纠错数据段的目标候选数据段进行替换,得到一个预纠错序列。同理,将待纠错数据段的每个候选数据段分别作为待纠错数据段的目标候选数据段,得到多个预纠错序列。
对每个预纠错序列进行哈希处理,得到每个预纠错序列的数字摘要。
需要说明的是,由于哈希算法的抗撞击性,若数据内容发生一点较小的改变,则会使得得到的数字摘要大不相同。存储在半导体存储器的数字摘要也可能发生存储错误,但存储错误仅会改变数字摘要的一小部分内容,因此通过比较每个预纠错序列的数字摘要与存储在半导体存储器的数字摘要的相似性,即可得到准确的编码结果。
在本发明实施例中,获取将每个预纠错序列的数字摘要和存储在半导体存储器的数字摘要的汉明距离,将汉明距离最小的预纠错序列作为无错序列。
至此,实现了存储在半导体存储设备上的编码结果的纠错。
将无错序列分为多个数据串,使每个数据串均以1为开头,以0为结尾,且每个数据串中数据的跳变次数为1。对每个数据串末尾的0进行删减,使得每个数据串末尾仅有一个0。
对每个数据串依次进行解码:
将标记序列中第个数值作为第/>个数据串的标记。当数据串的标记为1时,获取目标霍夫曼树中编码与该数据串相同的字符,作为该数据串对应的字符。
当数据串的标记为0时,获取该数据串之前的所有数据串对应的字符中,距离该数据串最近的N种不同的字符,作为该数据串的参考字符,获取此N个参考字符中在目标霍夫树中位于最浅层的参考字符作为起始节点,其中,N为回溯阈值。以目标霍夫曼树中起始字符的父节点为开始向下游走,游走的路径的编码与该数据串相同,将游走停止时的节点对应的字符作为该字符串对应的字符。
将所有数据串对应的字符按照顺序构成字符序列。
至此,获取了字符序列。
需要说明的是,标记序列在存储过程中也可能发生错误,此时会导致标记序列中错误的比特位在字符序列中对应位置的字符解码错误,其他字符不受影响,此时错误在可接受的范围内。若要确保完全无错,在将标记序列存储在半导体设备之前,可对标记序列采用现有的数据纠错方法或本发明实施例中的纠错方法进行编码。
对字符序列利用base64编码进行解码,得到二进制数据,利用数据获取模块S101中设置的编码方法对二进制数据进行解码,得到的结果即为所要读取的数据。
通过以上步骤,实现了半导体存储设备中的数据纠错。
本发明实施例根据字符序列的频率构建目标霍夫曼树,在对字符序列进行编码的过程中,获取待编码字符的参考字符,根据参考字符在目标霍夫曼树中与待编码字符之间的位置关系对待编码字符进行编码,得到第一编码,相较于传统的霍夫曼编码缩短了数据的编码长度;现有的数据纠错算法,如低密度奇偶校验码,纠错码的位数与编码结果的位数相同,极大的影响了压缩效率,使得数据的存储空间增大,影响数据的存储效率,本发明根据待编码字符的第一编码中1的个数设置纠错码,对第一编码进行选择性扩充,得到第二编码,使得纠错码的长度尽可能短,将纠错码对压缩效率的影响降到非常低,不影响数据的存储效率;本发明纠错码以及数字摘要对数据进行纠错,确保了纠错结果的准确性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于半导体存储的数据管理方法,其特征在于,该方法包括以下步骤:
获取待存储数据,将待存储数据转换为字符序列;根据字符序列中每种字符的频率构建目标霍夫曼树;
将字符序列中每个字符依次作为待编码字符,对待编码字符进行编码,包括:
当待编码字符为字符序列中第一个字符时,将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码;当待编码字符不为字符序列中第一个字符时,根据字符序列获取待编码字符的参考字符,根据参考字符获取待编码字符的第一编码;根据待编码字符的第一编码设置纠错码,获取第二编码;将字符序列中每个字符的第二编码构成字符序列的编码结果;
获取编码结果的数字摘要,作为目标数字摘要;对编码结果以及目标数字摘要进行存储;
对编码结果进行纠错解压,包括:
将编码结果分为多个数据段,根据数据段中的纠错码获取待纠错数据段,根据目标数字摘要对所有待纠错数据段进行纠错得到无错序列;对无错序列进行解压。
2.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据字符序列中每种字符的频率构建目标霍夫曼树,包括的具体步骤如下:
将字符序列中字符的种类数记为M,构建一个M+1层的二叉树,要求该二叉树包含M+2个叶子节点,该二叉树的所有左分支都为叶子节点,除最后一个右分支外,所有右分支都为父节点;按照频率从大到小的顺序将每种字符依次分配给二叉树的第2层到最后一层的左叶子节点,将最终得到的二叉树记为目标霍夫曼树。
3.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据字符序列获取待编码字符的参考字符,包括的具体步骤如下:
获取字符序列中距离待编码字符最近且在待编码字符之前的N种字符,作为待编码字符的参考字符,其中N为预设的回溯阈值。
4.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据参考字符获取待编码字符的第一编码,包括的具体步骤如下:
若待编码字符的参考字符在目标霍夫曼树中均位于待编码字符的深层或同层,将待编码字符在目标霍夫曼树中的编码作为待编码字符的第一编码;
若存在待编码字符的参考字符在目标霍夫曼树中位于待编码字符的浅层,获取所有参考字符中最浅层的参考字符作为起始字符,将目标霍夫曼树中起始字符的父节点到待编码字符的路径的编码,作为待编码字符的第一编码。
5.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据待编码字符的第一编码设置纠错码,获取第二编码,包括的具体步骤如下:
获取待编码字符的第一编码中1的个数,在第一编码之后补充多个0,使得1的个数与0的个数相同,将得到的结果作为待编码字符的第二编码,将第二编码中所有0作为纠错码。
6.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述将编码结果分为多个数据段,包括的具体步骤如下:
将编码结果中1到0称为一次跳变;将编码结果分为多个数据段,使每个数据段均以1为开头,以0为结尾,且每个数据段中数据的跳变次数为1。
7.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据数据段中的纠错码获取待纠错数据段,包括的具体步骤如下:
数据段中所有的0为数据段的纠错码,若数据段中1的个数与数据段中纠错码的长度相同,将数据段记为正常数据段,若数据段中1的个数与数据段中纠错码的长度不相同,将数据段记为错误数据段;当一个正常数据段的前一个数据段以及后一个数据段均为错误数据段时,将该正常数据段置为错误数据段;将所有相邻的错误数据段合并为一个错误数据段;将合并之后的每个错误数据段与前一个数据段以及后一个数据段进行合并,得到待纠错数据段。
8.根据权利要求1所述的基于半导体存储的数据管理方法,其特征在于,所述根据目标数字摘要对所有待纠错数据段进行纠错得到无错序列,包括的具体步骤如下:
遍历修改待纠错数据段中一个或多个比特位,得到多个可能数据段;对待纠错数据段所有的可能数据段进行筛选得到候选数据段;
将待纠错数据段的任意一个候选数据段作为待纠错数据段的目标候选数据段,将编码结果中每个待纠错数据段利用每个待纠错数据段的目标候选数据段进行替换,得到一个预纠错序列;将待纠错数据段的每个候选数据段分别作为待纠错数据段的目标候选数据段,得到多个预纠错序列;
根据目标数字摘要获取预纠错序列中的无错序列。
9.根据权利要求8所述的基于半导体存储的数据管理方法,其特征在于,所述对待纠错数据段所有的可能数据段进行筛选得到候选数据段,包括的具体步骤如下:
对每个可能数据段进行游程编码,将游程编码中编码对象构成一个编码对象序列,将游程长度构成长度序列;若可能数据段的编码对象序列以1为开始0为结尾,且所有的1和0交替出现,同时可能数据段的长度序列中所有的奇数位的数值与其下一个偶数位的数值相同时,将该可能数据段作为候选数据段。
10.根据权利要求8所述的基于半导体存储的数据管理方法,其特征在于,所述根据目标数字摘要获取预纠错序列中的无错序列,包括的具体步骤如下:
对每个预纠错序列进行哈希处理,得到每个预纠错序列的数字摘要;获取将每个预纠错序列的数字摘要和目标数字摘要的汉明距离,将汉明距离最小的预纠错序列作为无错序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311006460.0A CN116757158B (zh) | 2023-08-11 | 2023-08-11 | 基于半导体存储的数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311006460.0A CN116757158B (zh) | 2023-08-11 | 2023-08-11 | 基于半导体存储的数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116757158A true CN116757158A (zh) | 2023-09-15 |
CN116757158B CN116757158B (zh) | 2024-01-23 |
Family
ID=87961183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311006460.0A Active CN116757158B (zh) | 2023-08-11 | 2023-08-11 | 基于半导体存储的数据管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116757158B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117118456A (zh) * | 2023-10-25 | 2023-11-24 | 山东德源电力科技股份有限公司 | 基于深度融合的磁控开关控制数据处理方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030066006A1 (en) * | 1999-11-10 | 2003-04-03 | Sharma Debendra Das | ECC code mechanism to detect wire stuck-at faults |
US20040054651A1 (en) * | 2002-06-28 | 2004-03-18 | International Business Machines Corporation | Apparatus for encoding and decoding |
CN101080874A (zh) * | 2004-12-15 | 2007-11-28 | 日本电气株式会社 | 纠错编码装置以及在其中使用的纠错编码方法 |
US20090055704A1 (en) * | 2005-09-01 | 2009-02-26 | Nippon Telegraph And Telephone Corporation | Error correction method and apparatus |
CN103236847A (zh) * | 2013-05-06 | 2013-08-07 | 西安电子科技大学 | 基于多层哈希结构与游程编码的数据无损压缩方法 |
US20140281816A1 (en) * | 2013-03-15 | 2014-09-18 | Samsung Electronics Co., Ltd. | Memory controller and method of operating the same |
CN107102820A (zh) * | 2017-04-17 | 2017-08-29 | 北京得瑞领新科技有限公司 | 一种nand闪存设备的数据处理方法及装置 |
CN107483059A (zh) * | 2017-07-31 | 2017-12-15 | 广东工业大学 | 一种基于动态霍夫曼树的多路数据编解码方法及装置 |
US20190140658A1 (en) * | 2017-10-30 | 2019-05-09 | drivewarp, LLC | System and method for high-speed transfer of small data sets |
CN110518917A (zh) * | 2019-07-17 | 2019-11-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于Huffman编码的LZW数据压缩方法及系统 |
CN113076219A (zh) * | 2021-04-27 | 2021-07-06 | 中国人民解放军国防科技大学 | 一种高能效的片上存储器错误检测与纠错电路及实现方法 |
CN115459781A (zh) * | 2022-08-25 | 2022-12-09 | 东南大学 | 一种基于静态交织编码的长序列dna存储编码方法 |
-
2023
- 2023-08-11 CN CN202311006460.0A patent/CN116757158B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030066006A1 (en) * | 1999-11-10 | 2003-04-03 | Sharma Debendra Das | ECC code mechanism to detect wire stuck-at faults |
US20040054651A1 (en) * | 2002-06-28 | 2004-03-18 | International Business Machines Corporation | Apparatus for encoding and decoding |
CN101080874A (zh) * | 2004-12-15 | 2007-11-28 | 日本电气株式会社 | 纠错编码装置以及在其中使用的纠错编码方法 |
US20090055704A1 (en) * | 2005-09-01 | 2009-02-26 | Nippon Telegraph And Telephone Corporation | Error correction method and apparatus |
US20140281816A1 (en) * | 2013-03-15 | 2014-09-18 | Samsung Electronics Co., Ltd. | Memory controller and method of operating the same |
CN103236847A (zh) * | 2013-05-06 | 2013-08-07 | 西安电子科技大学 | 基于多层哈希结构与游程编码的数据无损压缩方法 |
CN107102820A (zh) * | 2017-04-17 | 2017-08-29 | 北京得瑞领新科技有限公司 | 一种nand闪存设备的数据处理方法及装置 |
CN107483059A (zh) * | 2017-07-31 | 2017-12-15 | 广东工业大学 | 一种基于动态霍夫曼树的多路数据编解码方法及装置 |
US20190140658A1 (en) * | 2017-10-30 | 2019-05-09 | drivewarp, LLC | System and method for high-speed transfer of small data sets |
CN110518917A (zh) * | 2019-07-17 | 2019-11-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于Huffman编码的LZW数据压缩方法及系统 |
CN113076219A (zh) * | 2021-04-27 | 2021-07-06 | 中国人民解放军国防科技大学 | 一种高能效的片上存储器错误检测与纠错电路及实现方法 |
CN115459781A (zh) * | 2022-08-25 | 2022-12-09 | 东南大学 | 一种基于静态交织编码的长序列dna存储编码方法 |
Non-Patent Citations (2)
Title |
---|
THOMAS WENISCH ET.AL: "Combined Error Correcting and Compressing Codes", 《PROCEEDINGS. 2001IEEE INTERNATIONAL SYSPOSIUM ON INFORMATION THEORY》, pages 1 - 7 * |
朱怀宏, 吴楠, 夏黎春: "利用优化哈夫曼编码进行数据压缩的探索", 微机发展, no. 05, pages 1 - 6 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117118456A (zh) * | 2023-10-25 | 2023-11-24 | 山东德源电力科技股份有限公司 | 基于深度融合的磁控开关控制数据处理方法 |
CN117118456B (zh) * | 2023-10-25 | 2024-01-26 | 山东德源电力科技股份有限公司 | 基于深度融合的磁控开关控制数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116757158B (zh) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116757158B (zh) | 基于半导体存储的数据管理方法 | |
US7190287B2 (en) | Method of generating Huffman code length information | |
CN114328000B (zh) | 1型2型分段纠错内码的dna存储级联编码与解码方法 | |
JP5913748B2 (ja) | セキュアで損失のないデータ圧縮 | |
CN116805537B (zh) | 用于心肺康复管理系统的数据处理方法 | |
CN117097441B (zh) | 基于数据分析的载波通信系统传输效率优化方法 | |
CA2398955C (en) | Method for compressing data | |
CN115993939B (zh) | 存储系统重复数据删除方法及装置 | |
JPH10164374A (ja) | パタン符号化方式及び復号化方式とこの方式を用いた符号化装置及び復号化装置 | |
CN113687976B (zh) | 面向dna信息存储的编码和解码方法与装置 | |
CN116471337A (zh) | 一种基于bwt和lzw的报文压缩与解压缩方法及设备 | |
CN115913248A (zh) | 一种直播软件开发数据智能管理系统 | |
CN113300723A (zh) | 基于最大似然删除位置搜索的mgc码快速译码方法 | |
CN107896136B (zh) | 一种雷达航迹报文编码方法 | |
CN113114274A (zh) | 一种基于分段关键集合的简化极化码连续消除列表译码器 | |
CN113839678A (zh) | 一种哈夫曼解码系统、方法、设备及计算机可读存储介质 | |
US20060125660A1 (en) | Digital data compression robust relative to transmission noise | |
EP0871294B1 (en) | Method and apparatus for compression and decompression of data | |
CN101882973B (zh) | 一种cmmb接收机译码方法 | |
CN115426076B (zh) | 一种用于极化码的编码和译码方法、通信装置 | |
US6578119B2 (en) | Method and device for memory management in digital data transfer | |
TWI384377B (zh) | 資料編碼及解碼方法 | |
CN116130009A (zh) | 脱氧核糖核酸存储通信方法、系统及存储介质 | |
US11640265B2 (en) | Apparatus for processing received data | |
US20220284304A1 (en) | Codes to detect insertion and deletion errors in a dense storage medium |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |