常见的硬件设备打印机是输入设备!电脑硬件组成图片
第一分组发明毛病、第二分组校验准确、第三分组校验准确(简朴奇偶校验没法发明两个比特的毛病),那末列分组穿插考证得出的结论是在第 2 列发作毛病……
第一分组发明毛病、第二分组校验准确、第三分组校验准确(简朴奇偶校验没法发明两个比特的毛病),那末列分组穿插考证得出的结论是在第 2 列发作毛病。很较着,两个比特翻转的毛病招致列分组校验结论堕落了打印机是输入装备。
海明校验码算法设想的中心机想就是多设置几个校验位,然后接纳穿插考证的方法来完成毛病比特位的定位。
因为需求分外的 8 比特冗余校验位,以是 ECC 内存中的颗粒数比一般内存要多打印机是输入装备。关于 1R * 8 的内存来讲常见的硬件装备,ECC 内存需求 9 个颗粒。关于 1R * 4 的内存来讲,因为一个内存颗粒的位宽是 4 ,以是需求多两个颗粒才够。
成绩曾经弄大白了。可是我们「开辟内功修炼」公家号的气势派头是不但要晓得,还要弄懂道理。以是我们再接着看 ECC 纠错算法是怎样事情的。
简朴的奇偶校验能够用来发明单比特翻转。留意重点枢纽字是“发明”和“单比特”。该算法只能用作发明常见的硬件装备,没法纠错。并且也只针对单比特翻转有用常见的硬件装备,没法处置两个比特同时翻转的状况。
在实践中,内存中 64 比特数据中 3 个大概更多比特同时发作的几率十分十分的低。别的就是内存在运转上请求速率要充足的快,海密码用硬件完成起来机能消耗约莫只要 2% - 3%。以是固然海密码不克不及应对 3 比特以上的比特翻转,但今朝仍旧普遍地使用在效劳器真个内存的毛病查抄和改正上。在 SSD 硬盘中因为使用处景的差别,接纳的是撑持多比特翻转校验和纠错的 LDPC 码。
关于状况2:假定原始数据中 1 的个数为奇数个,以是校验位需求设置为 1 ,以包管全部数组中 1 的个数是偶数个。因为校验位并非真实的用户数据,以是其实不影响数据的准确读取。
那末1)全矩阵校验的结论是没有毛病、2)列分组校验结论是第 2 列发作毛病,3)行分组校验结论也是没有毛病。
其道理是在要监测的数据前面参加 1 比特的数据,用来包管全部二进制数组中(包罗校验位)的 1 的个数是偶数。
假如有 1 比特位发作了翻转的话,一定会招致二进制数组中 1 的个数酿成了奇数个。如许,我们经由过程察看数据中 1 的个数是否是偶数个就可以够晓得有无单比特翻转发作了。
以是,开篇的成绩我们就有谜底了。一般的内存条中局部颗粒都用来存储真实的数据。而 ECC 内存中除数据外,还需求存储 8 比特的校验位。
第一行分组校验经由过程、第二行分组校验经由过程、第三行分组校验失利、第四行分组校验经由过程。那末按照行分组的穿插干系,就可以够揣度出堕落数据发作在第 5 行。
那末为何 ECC 内存有了分外的 8 比特的冗余校验数据便可以发明和改正毛病了呢?我们先来看下最简朴的奇偶校验。
再分离上面列分组的校验成果,就可以揣度出是第 5 行,第 6 列地位的数据堕落了。因为二进制数据只要 0 和 1 两种取值,那末发明毛病就可以够将其改正过来。这就是海密码对单比特毛病查抄和纠错的完成道理。
开篇我们看到了两个内存条,一个有 8 个玄色颗粒,别的一个有 9 个内存颗粒。这是由于 ECC 内存除每次供给给 CPU 64 位的用户数据之外,还需求分外供给 8 比特的数据作为冗余校验位常见的硬件装备。这些冗余校验位的功用是用来完成对单比特毛病的发明和纠错,关于两个比特的毛病能做到发明毛病,但没法纠错。
为理解决纠错和两个数据堕落的成绩常见的硬件装备,Richard Hamming 于 1950 年在简朴奇偶校验算法的根底上提出了也叫海明校验码算法。Richard Hamming 自己也由于该算法得到了 1968 年的图灵奖。该固然至今曾经已往了 70 多年,但至今仍旧普遍使用在效劳器的 ECC 内存上。
这两个内存条中,为何一个是 8 个颗粒,另外一个是 9 个颗粒呢?这个故事还要从比特翻转提及。
我们利用小我私家电脑在办公的时分,因为内存次要都用来处置图片、视频等数据。即便内存呈现了比特翻转,能够影响的只是一个像素值,很难觉得出来,没有太大的影响。即便是比特翻转真的发作在枢纽的体系代码招致运转出成绩,也不是甚么大事,重启一次就处理了。
我们假定用户数据的第 29、第 30 比特位发作了毛病常见的硬件装备。那末由因而同时发作了两个毛病,那末全部矩阵中的校验必定是没法发明的,校验经由过程。
海密码中包罗 64 比特的用户数据和 8 比特的冗余校验码,以是统共有 72 比特的数据。这 72 比特的数据能够看作一个 9 行 8 列的二维矩阵。
海密码发明了有了毛病,但没法晓得毛病的详细地位。呈现这类状况,本次内存 IO 返回数据取消,从头读取就行了。
由于基于海密码的 ECC 内存不克不及处置 3 比特或以上的比特翻转打印机是输入装备,以是在宁静对立范畴里有个特地的标的目的是研讨怎样实如今内存中报酬成心制作 3 比特翻转完成进犯举动。和怎样对立 3 比特翻转进犯。
但在效劳器使用中,处置的普通都长短常主要的计较,多是一笔定单买卖,也多是一笔存款。别的就是效劳器常常是持续要运转几个月以至是几年,没有法子经由过程重启的方法来处理成绩。因而效劳器比照特翻转毛病的容忍度很低。需求有手艺计划可以必然水平处理比特翻转成绩所带来的影响。
海密码关于单比特毛病能够完成纠错,但关于两比特同时发作毛病就只能发明毛病,没有法子定位毛病的地位,也就没法完成纠错了。
接下来我们看下海密码算法是怎样完成对单比特翻转的发明和纠错的。我们假定在这些数据中呈现了单比特翻转。再详细一点,好比说第 30 号用户数据比特位堕落了。
第二层校验是列分组校验。在列上,接纳了 3 种方法对 8 列停止差别方法的二分法分组,每种分组都设想一个校验比特位,用来完成全部分组的奇偶校验。
我们的电脑在运转的时分,CPU 不断都需求和内存停止数据交互。但在交互的过程当中,因为四周电磁场的滋扰,会有几率发作比特翻转。
比拟没有利用 ECC 手艺的小我私家电脑内存,内存颗粒中局部都用来存储数据便可。在 ECC 内存中每 64 比特的数据都需求分外的 8 比特数据作为校验位,用来帮助发明大概改正毛病。
需求提的是,海密码在 3 比特大概更多比彪炳现毛病的状况下,能够会误判为准确。但由于在 64 比特中有 3 比特同时呈现毛病的几率太低了,以是海密码仍旧普遍地使用在效劳器的 ECC 内存中。
ECC 就是如许一种内存手艺。它的英文全称是 “Error Checking and Correcting”,对应的中文称号就叫做“毛病查抄和改正”。从它的称号中我们能够看出,ECC 不单能发明内存中的毛病,并且还能够停止改正。
如今的 CPU 都是 64 位的,每次和内存通讯都要传输 64 比特的数据。1R * 8 范例的内存中的 1R 指的是该内存条只要一个 rank,8 指的是在每次 64 比特的内存 IO 过程当中,每一个内存颗粒别离供给 8 比特的数据。如许计较一下,64 比特的数据就需求 8 个内存颗粒配合来构成。
按照 3 个列分组别离校验的时分,发明第一个列分组方法校发明毛病,第二个列分组方法校验经由过程,第三个列分组方法校验发明毛病。按照各个分组之间的包罗干系,就可以够揣度出是毛病是发作在第 6 列。
关于状况1:假定原始数据中曾经是偶数个 1 了,以是校验位设置为 0 就可以够了,如许团体上 1 的个数是偶数个。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186