Parity(奇偶校验)和ECC(错误检查和纠正)_IC小鸽的博客-程序员宅基地

技术标签: ECC  parity  IC设计  RAM  

Parity(奇偶校验)

1、什么是parity?

奇偶校验是一种数据校验机制,用于判断数据在存储过程中是否发生了比特位错误。常用于存储结构中,如RAM。存储结构的最小单元为“字节”,即Byte。每个字节含有8比特,另外增加1比特作为校验位。如下图(1)所示,校验位为所以比特位异或产生,即当8比特有奇数个1时,校验位为1,当有偶数个1时校验位为0。

存储数据时,会对8比特数据进行异或运算得到校验位y0,并且随8比特数据一块存到RAM中。

当读取存储数据时,会对读出的8比特数据进行异或运算得到新的校验位y1,并与校验位y0进行对比,如果y1和y0不一致,则表示数据存取不一致,出现错误。

 

校验位:         y=x0^x1^x2^x3^x4^x5^x6^x7

2、parity有什么特点

优点

结构简单,只需异或计算就可以实现,数据量小时(8比特)实现代价小。

缺点

1、不能修正错误:只知道8比特中有部分比特发生错误,无法判断哪几个比特发送错误。

2、有偶数个比特位时,无法判断出错。如图所示,x5和x2均发生变化时,校验位仍未1,无法检测出错误。

3、数据位宽较大时实现代价大:如1024比特数据,需要256bit的校验位。

 

X7

X6

X5

X4

X3

X2

X1

X0

y

 

1

0

1

1

0

1

1

0

1

 

1

0

0

1

0

0

1

0

1

 

 

ECC(错误检查和纠正)

 

1、什么是ECC

通过上面的分析我们知道Parity机制是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,随着数据位每增加8比特,检验位需要增加1比特。当数据量为256字节时,需要256个比特位,并且出错的数据无法恢复。由此,一种存储检错纠错机制出现了,这就是ECC。ECC同样通过增加校验位来进行错误判断,但是能够进行错误纠正。

2、ECC有什么特点:

优点

1):大量数据位实现代价低8比特数据需要5个校验位,256字节(256*8比特)的数据值需要5个列校验位和11行校验位

2)能够纠正错误:在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断

缺点:

1):只能修复1比特错误

当数据只有单比特错误时,ECC能够进行错误修复;超过2比特的数据错误,将无法修复,ECC只能输出多比特错误信号。

2)不保证能检测超过2比特的错误

超过2比特的错误不一定能检测出来

 3、ECC是如何实现的:

 

实现细节

为什么能够单比特纠错

为什么不能纠正两比特的数据

为什么不能保证检测出多比特数据?

https://blog.csdn.net/qq_30866297/article/details/52104197--ECC原理

https://blog.csdn.net/nhczp/article/details/1700031

 

Parity与ECC的应用场景

 

IC设计中RAM模块输出信号有Parity信号和ECC信号。

parity 信号表示RAM中写入的数据data_in跟读出的数据是否一致。

ECC负责纠错,能够修正1bit的数据。

Parity是同一个data所有比特的异或,在data_in写入的时候进行异或计算得到parity_in,同时写入到RAM中,读出data的得到data_out,对data_out进行异或计算得到parity_out,若parity_out与parity_in不相等,则表示数据有错误

 

 

https://blog.csdn.net/ysmz4/article/details/9309287

https://blog.csdn.net/nhczp/article/details/1700031

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/icxiaoge/article/details/79996456

智能推荐

mysql 5.5.23_mysql 5.5.23的安装及配置_水墨江的博客-程序员宅基地

myql5.5.23安装:1.安装一些需要的库yuminstallgcc-c++gperfncurses-develreadline-devellibaio-develbisonncurses-developenssl-develcmakeyumgroupinstallDevelopmenttools2.mysql5.5以后用cmake编译了,安装cmake(c...

C语言和网络安全结合,LICENSE_非相乃摄的博客-程序员宅基地

Mozilla Public License, version 2.01. Definitions1.1. “Contributor”means each individual or legal entity that creates, contributes to thecreation of, or owns Covered Software.1.2. “Contributor Version...

mysql常用汉字库_(转载)常用的Mysql数据库操作语句大全_杨修之死的博客-程序员宅基地

打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p退出数据库:exit用户管理:1、新建用户:>CREATE USER name IDENTIFIED BY 'ssapdrow';2、更改密码:>SET PASSWORD FOR name=PASSWORD('fdddfd');3、权限管理>SHOW GRANTS FOR name; //查看...

第四范式联合浪潮商用机器发布AI一体机,接入AI像使用手机一样简单_AI科技大本营的博客-程序员宅基地

9月10日,第四范式携手浪潮商用机器在京联合发布了AI软硬件一体机产品“Prophet AIO”。“AIO”寓意为打造“AI in One”的AI产业应用全闭环,产品设计基于第四范式先知(Prophet)企业AI核心系统与浪潮OpenPOWER硬件架构的融合集成。同时,双方正式宣布成立AI一体机联合实验室,持续赋能行业用户强大的AI业务支撑与开发能力,加速AI行业落地进程。第四范式×浪潮商...

Linux系统管理实践(1):远程登录到Linux_chuifuhuo6864的博客-程序员宅基地

1、从Windows下登录到Linux服务器: 方法很多,登录到终端可用原始的telnet或者用比较流行的PuTTY工具,登录到图形界面可用VNC。 登录到终端: 若对安全要求不高,可直接在命令行程序cmd中用telnet登录。一般建议用更安全的ssh协议登录,常用登...

随便推点

android性能分析_xingxiliang的博客-程序员宅基地

Romain GuyphotographyaboutAndroid Performance Case StudyDecember 1st, 2012,Android.Note: this article is also available as a stand-alone document.Falcon ProI re

数据仓库项目——数据准备_Thomas_White的博客-程序员宅基地

使用idea编写,模拟数据产生pom.xml <!--版本号统一--> <properties> <slf4j.version>1.7.20</slf4j.version> <logback.version>1.0.7</logback.version> </properties> <dependencies> <!--

14.7 使用Opencv实现低通滤波_/home/liupc的博客-程序员宅基地_opencv低通滤波

点击此处返回总目录 本次课介绍实现低通滤波。 关于高频、低频、滤波的一些知识见 《14.3 使用Numpy实现高通滤波》 一、实现方法 步骤一:傅里叶变换 步骤二:去掉...

Django中使用极验Geetest滑动验证码_weixin_30500289的博客-程序员宅基地

一,环境部署1.创建一个django测试项目  此处省略...二,文档部署1.下载安装python对应的SDK  使用命令从Github导入完整项目:git clone https://github.com/GeeTeam/gt3-python-sdk.git  手动下载压缩包文件:https://github.com/GeeTeam/gt3-python-sdk/a...

读书_Enjoy_endless的博客-程序员宅基地

又有好久没有来啦,最近在忙些什么,确实做了一个很大的选择,对与不对只有走过了才知道,虽然年龄已经不小啦,但是还没到轻易放弃的时候,努力在去拼搏一把吧!今天读了一篇文章,感觉非常不错,拿来与大家分享,先截取内部文字一段:图书馆从早上六点,如果你不能到那里排队,你这一天与图书馆座位已经无缘了。所以大部分人凌晨四点就起来了,带着一个冷馒头,从厨房吃剩下的或者从同学那偷来的,俞敏洪经常偷我馒头。然后借...

pytorch中Mini-batch批处理实现函数xx.unsqueeze(0)_清梦枕星河~的博客-程序员宅基地_unsqueeze(0)

在进行特征图可视化时,发现了一个函数运行之后输入图像的tensor的维度发生了变化,不能直接转化为numpy数据进行图像显示,这个函数是**.unsqueeze(0)** 下面贴出该函数运行过后tensor维度的变化截图:运行前:tensor的维度是(3,224,224)含义是3通道大小为224*224的图像转化为了一个tensor向量,运行如下语句后:image_info = image_info.unsqueeze(0)结果是:这时输入的张量tensor维度比输入前多了一维,可以发现t