|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 small5 于 2016-8-26 23:38 编辑
通常memory随着使用时长增加,会有一定几率有些比特单元会坏掉,从而可能会造成相关功能异常,导致系统崩溃。这种问题是因为软件读出了错误的数据,所以是可以修复的。
通常的memory都会预留备份存储单元区,用于修正制造产生的单元损坏和使用过程中产生的单元损坏,所以当检测到有某一字节有校验和错误时,只需用备份区的单元替换即可。
一般是通过CRC校验发现失效比特的位置,然后对其纠错,将纠错后的数据字节存储到事前在memory中建立好的备份存储单元区中,这样在每次读取错误字节时,用备份区的纠正后的字节替换,这样就完成了修复工作。
但是,即使通常校验工作是用硬件完成的,为了确定错误字节的位置,必须以字节为单位校验,这样是比较费时的。
如何加速这个修复过程呢?
可以对一整块存储区划分为横纵坐标,增加校验位宽为原来的4倍,也就是说,横轴为相邻的4字节,纵轴为等间隔n个单位的4字节,进行两组校验,横纵校验的结果形成了一组坐标,用于定位错误的数据字节。虽然,增加了一组校验运算,但是由于位宽增是原来的4倍,所以整体时间是缩短了。
对于纵轴的校验计算时需要硬件支持的,所以CRC校验模块在从存储器读取数据是需要支持地址等间隔的跳跃式读取,但这应该并不难实现。
|
|