评价存储器的一个重要指标就是它的可靠性,在一般的数据存储中,几个位的错误可能不是很关键的问题,如果但是发生在某个敏感的数据上,这个小小的故障可能会导致严重的后果。因此,必须采取一些措施来及时检出并纠正出错的数据。目前常用的方法有:奇偶校验、crc校验、重复码校验等。
ecc校验是在奇偶校验的基础上发展而来的,它将数据块看作一个矩阵,利用矩阵的行、列奇偶信息生成ecc校验码。它能够检测并纠正单比特错误和检测双比特错误,但对双比特以上的错误不能保证检测。它克服了传统奇偶校验只能检出奇数位出错、校验码冗长、不能纠错的局限性。文中在高速大容量固态存储器的硬件结构基础上,详细介绍了ecc校验码的生成规则以及ecc校验流程,并用c语言和vhdl语言两种方法实现了该算法。
1、 存储器的硬件结构及芯片介绍
本存储器是以fpga为控制核心,用64片flash芯片构成存储阵列,采用cpci接口实现数据的高速率存储。flash存储阵列分为16组,每组4片,每组flash芯片共用数据和控制总线。该存储器的硬件结构图,如图1所示。
存储板上的存储芯片用的是samsung公司的高速大容量固态存储芯片k9w8g08u1 m nand flash memory,其容量为1 g×8 bit,分为8 192个块,每个块又分为64页,1页有(2 k+64)byte,其中一页有64 bit的空闲区。存储板上的控制芯片是ahera公司的高端fpga芯片ep3se110f1152c4,它负责数据的缓冲和整个存储器的时序控制,并负责以页为单位生成校验码,并把校验码存人到页的空闲区内。下面以1页2 048 bit为单位介绍校验码的生成以及校验流程。
2 、egg算法分析及校验流程
2.1 egg校验码生成规则
flash在读写数据的时候是以页为单位进行的,一页有2 048个数据,所以可以以2 048 bit为单位生成校验码。每个数据有8位信息组成,可以把这2 048个数据看成2 048×8的矩阵,这样就可以分别生成行校验码和列校验码来分别校验。ecc校验中,每2 048个数据生成4个字节的校验码,这32位的校验码分成3个部分:6位的列校验信息,22位的行校验信息,其余的4位置1,ecc校验码组成,如表1所示。
其中p4_l,p4_2,p2_1,p2_2,p1_1,p1_2是列校验码,而p8_1,p8_2,p16_1,p16_2,p32_1,p32_2,p64_1,p64_2,p128_1,p128_2,p256_1,p256_2, p512_1,p512_2,p1024_1,p1 024_2, p2 048_1, p2 048_2, p4 096_1,p4096_2,p8192_1,p8192_2是行校验码。行列校验码生成表,如表2所示。
2.2 ecc校验流程
当向nand flash的页中写入数据的时候,每2 048 bit生成4 bit的ecc校验码,称之为写ecc校验码,保存到每一页的空闲数据区中。
当从nand flash中读取数据的时候,每2 048 bit生成4 bit的ecc校验码,称之为读ecc校验码。校验的时候,根据上述ecc生成原理不难推断:将从页空闲区中读出的写ecc校验码和读ecc校验码按位异或,若结果为0,则表示不存在错;若4 bit的异或结果中存在14 bit为1,表示存在1 bit错误,且可纠正;若4个bit的异或结果中只存在1 bit为1,表示空闲区中的校验码出错;其他情况均表示出现了无法纠正的错误,校验流程图,如图2所示。
3、 ecc算法的实现
3.1 c语言实现ecc算法
以一页数据2 048个字节作为测试数据产生ecc校验码,数据是0x00~0xff,循环8次产生2048个数据,数据序列,如图3所示。
按前面的ecc校验码生成规则,2 048个数据应该生成4个校验码,生成的校验码,如图4所示,其中ecccode1,ecccode2,ecccode3,ecccode4是生成的4个校验码。
现在假设读出的数据中有一位数据发生了翻转,出现了一位数据错误的情况,即假设数据的第2 bit的最低位发生了翻转,0×0l变成了o×00,此时读出的数据序列,如图5所示。
3.2 利用vhdl语言实现egg算法
文中以0x00~oxff循环8次产生2 048个数据,利用vhdl语言编程,在quartusii7.2下进行了仿真,得到了如图7所示的校验码。其中ecccodel =00000000,ecccode2=00000000,ecccode3=11000000,ecccode4=000000ll是生成的4个校验码,从图中可以看到利用vhdl语言得到的校验码和用c语言得到的ecc校验码是相同的。
4 、结束语
文中介绍了ecc算法的一种实现方法,说明了ecc的校验流程,最后用两种方法实现ecc校验算法。ecc校验算法简单,软硬件均能实现,它能够检测并纠正单比特错误和检测双比特错误,所以可以为数据存储和通信系统提供一种强有力的差错检测手段。
地平线引入国际公司高管!陈黎明博士履新地平线任总裁
在5G时代,中兴通讯突围胜算几何
SiC MOSFET的温度特性及结温评估研究进展
罗德与施瓦茨在电磁兼容测试领域的技术实力
华为数字能源助力客户累计绿色发电4435亿度
使用C语言和VHDL语言在高速大容量固态存储器实现ECC算法
建设品牌目标,新意互动将重新洗牌
关于LED闪灯分析
经纬恒润强势入选北京市第一批两业融合试点企业
松下超级电池工厂登陆欧洲
GMR巨磁传感不止有高精度
销售/租赁 HP35670A HP35670A Agilen
分析氧化锆氧气传感器在环境分析仪中的应用解决方案
浅谈电阻温度检测器(RTD)传感器电阻测量
医院能耗监测管理系统解决方案
利用高速信号链提高医学系统成像质量的研究
母线隔离开关发热怎么处理
蓝牙耳机哪款性价比高,推荐几款超高性价比蓝牙耳机
通过驱动器源极引脚将开关损耗降低约35%
iPhone7最新曝光:双摄像头新增配色 防水是好是坏?