数据存储中错误检查和纠正算法设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•混合使用前向纠错与后向纠错 有的场合,发送方和接收方既便于联系又不存在严格的性能与复杂度限制, 这时可以混合采用前向纠错与后向纠错技术,以便于利用两种方法的优势。 比如在Internet上的数据传输和存储,前向纠错和后向纠错就混合使用。在 TCP等协议的作用下,错误的数据可以被重传。在某些传输设备和应用层的 部分应用中,也存在前向纠错编码的设计以保护数据。
数据存储错误的特性
数据存储与传输中,有时会发生随机的写入错误。 由于介质的物理特性,在数据保存过程中,由于外界环境影响,可能造成少量数 据在存储过程中发生改变。但是在正常使用时,错误的发生率极低,且分布随机。 实践中数据一般按小区块存储。这样,在每个小区块中,一般只可能发生随机 1bit错误。本课题主要研究随机1bit错误的错误检查与纠错算法实现。
数据存储中的错误检查和纠正算法设计
学生:鄂元哲 指导老师:罗明
一、课题背景
•数据存储的概念 数据存储是数据流在加工过程中产生的临时文件或加工过程中需要查找的信息。 数据以某种格式记录在计算机内部或外部存储介质上。 •常见的存储介质 1.硬盘:在平整的磁性表面存储和检索数据 2.闪存:一般指电子式可清除程序化非易失存储器 3.光盘:用激光扫描的记录和读出方式保存信息的一种介质
常见的纠错方法
•重传、重读(后向纠错) 通过接收方请求发送方重传出错的数据来恢复数据的方法叫后向纠错。 优势:后向纠错易于理解,并且当误码率低时开销比较小。 劣势:后向纠错要求接收方与发送方可以即时通信请求重传。对于不方便通信的场合, 或者是数据存储这种接收方和发送方时间上分离的场合无法应用。
•前向纠错编码 前向纠错(英语:Forward error correction,缩写FEC)是一种在单向通信系 统中控制传输错误的技术,通过连同数据发送额外的信息进行错误恢复,以 降低误码率(bit error rate, BER)。 优势:前向纠错在信道误码率较小时,可以只凭收到的信息还原出原值,无 需联系发送方,这使它能应用于数据存储等场合。 劣势:增大了开销,增加系统实现的复杂度。
常见的错误检查方法
错误检查和纠错的原理: 数据存储中随机发生的错误就像是数字通信中遇到的随机噪声。根据香农定理, 只要为存储的数据增加冗余度,数学上就存在一种编码方式,可以无差错地传输 和存储信息。 在通信学中,这种增加冗余度来校验和纠错的技术叫做冗余校验。
1.重复码 通过在发送时重复发送同样的比特流来进行错误检查与纠错。 优势:逻辑简单,有很好的纠错能力 劣势:带宽或者存储空间利用率极低,设想某一系统发送信息时重复三次比 特流,那么带宽利用率仅1/3。
2.奇偶校验法
奇偶校验位是一个表示给定位数的二进制数中1的个数是奇数还是偶数的二进 制数。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位 中1的个数是奇数,那么偶校验位就置为1,从而使得总的1的个数是偶数。如 果给定一组数据位中1的个数是偶数,那么奇校验位就置为1,使得总的1的个 数是奇数。
优势:散列函数类型的纠错码原理都利于理解,其中奇偶校验、检验和与循 环冗余检查实现上比较方便,但是带来了比较严重的散列冲突。精心设计一 个散列冲突低,散列值变化幅度大的散列函数可以帮助我们避免散列冲突导 致的误判,但是会带来实现难度的上升,并导致更多的性能开销。 劣势:由于散列函数一般有单向性,难以根据散列函数值计算输入值。因此 这几种方法一般用于错误检查,难以定位错误具体位置。也无法用于纠错。
二、国内外研究方向
数据存储中的错误检查与纠正算法是计算机、通信、网络等方面的热点技术,从 上个世纪计算机发明、无线通信应用以来,人们就一直在纠错算法的理论和实现 等方向进行研究工作。并且还极大促进了信息论、编码理论等相关学科的发展。 如今纠错算法中已经有了大量的成熟高效的算法和其软硬件实现方案,下面我们 将从错误检查技术、纠错技术、现有的部分实现方案等方面回顾前人的成果。同 时,通过总结现有方案的优劣来确定我们的思考方向和实现思路。
关于错误检测算法的总结:
常见的错误检测算法主要是考虑到减少性能开销和降低实现的复杂度。它们 在数据存储的错误检查上效果非常显著。因此在生活中也有很多应用:例如, 身份证上的校验码、数字证书与签名系统、下载时的MD5值等等。但是,数 据存储不仅要求能检查出存储的数据是否出错,很多时候,我们还希望能够 恢复已经出错的数据。因此,人们除了对算法的检查性能有要求以外,还希 望算法有着定位错误位置、修正小错误的能力,这就需要我们研究纠错算法。
三、对纠错算法需求的分析和方案设计
纠错算法需要满足的要求 结合前面所了解的资料和课题的情况,我们对纠错算法有如下要求: 1.具有检查出1bit错误和定位错误bit的基本功能。 2.尽可能有一定健壮性,因为纠错码本身也是需要存储的数据,需要防止1bit错误出现在 纠错码中导致无法检查确定数据的正确性。 3.尽可能使用数电上的常见逻辑,便利硬件实现。
Hale Waihona Puke Baidu
5.散列函数(hash函数) 传输或存储信息时,同时传输或存储原信息和其哈希值(算法事前约定)。 在读取时,计算原信息的哈希值并和接收到的哈希值比较。实际上,检验和 法和循环冗余检查法,甚至是奇偶校验位法都可以视作是特殊的散列函数法, 但它们的散列冲突几率很高。设计优秀的散列函数可以尽可能避免散列冲突。
优势:算法简单,易于实现
劣势:无法指明错误发生的位置,也无纠错能力。另外,若一串数据中出现 偶数个bit位的错误,那么奇偶校验就无法检出。
3.检验和(checksum) 检验和(checksum),在数据处理和数据通信领域中,用于校验目的地一组数 据项的和。它通常是以十六进制为数制表示的形式。如果校验和的数值超过 十六进制的FF,也就是255. 就要求其补码作为校验和。 4.循环冗余检查(CRC) 循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到 的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确 性和完整性。