发明内容
本发明实施例提供数据写入方法、数据读取方法和数据存储器,可以提高对数据的ECC纠错能力。
本发明实施例提供的一种数据写入方法,包括:
存储器接收待写入数据对应的扇区地址;所述每一个扇区地址标识至少两个扇区;
接收待写入数据,根据所述扇区地址将待写入数据写入对应的扇区;
将所述每一个扇区的地址按照对应的扇区数目进行分割,并将分割后的地址分片分别写入对应的至少两个扇区;
将错误检查和纠正ECC码写入所述每个扇区的冗余字段中。
本发明实施例提供的一种数据读取方法,包括:
获取待读取数据对应的扇区地址,所述每一个扇区地址标识至少两个扇区;
根据所述扇区地址读取对应的至少两个扇区内的数据;
根据扇区冗余字段存储的ECC码对数据进行错误纠正检查。
本发明实施例提供的一种数据存储器,包括:
存储控制器,用于接收读/写命令,对存储单元进行数据的读/写操作;
存储单元,用于保存所述存储控制单元写入的数据;所述存储单元内每连续的至少两个扇区用一个扇区地址标识;所述扇区地址按照扇区地址对应的扇区数目进行划分,所述至少两个扇区分别保存所述扇区地址的部分地址分片。
本发明实施例采用将每一个扇区地址标识至少两个扇区;并将每一个扇区的地址按照对应的扇区数目进行分割,并将分割后的地址分片分别写入对应的至少两个扇区,每个扇区保存部分扇区地址,可以释放更多的空间为ECC码使用,使得ECC纠错的能力大大提高。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供数据写入方法、数据读取方法和数据存储器,以下分别进行详细说明。
实施例一、一种数据写入方法,流程图如图1所示,包括:
A1,存储器接收待写入数据对应的扇区地址,所述每一个扇区地址标识至少两个扇区;
可以理解,每个扇区地址标识的扇区个数可以根据具体情况进行选择,考虑的因素可以包括:空间的利用(一个扇区地址标识的扇区个数越多,在写入小数据时,浪费的空间越多),资源的占用等因素。
对于一个扇区地址标识两个扇区的情况,所述根据所述扇区地址将待写入数据写入对应的扇区的过程包括:
将数据所述扇区地址对应的数据写入所述两个扇区的第一个扇区里,将所述数据的剩余部分写入所述两个扇区的第二个扇区里。本实施例中,所述扇区地址用4个字节,当然扇区的地址的长度与存储空间大小有关系,存储空间越多,则需要更大的扇区地址的寻址范围,则扇区地址则越长。
A2,接收待写入数据,根据所述扇区地址将待写入数据写入对应的扇区;
A3,将所述每一个扇区的地址按照对应的扇区数目进行分割,并将分割后的地址分片分别写入对应的至少两个扇区;
一个扇区地址标识两个扇区的情况下,对于一个4字节的扇区地址,进行扇区地址的分割,也写入地址分片可以采用以下方式:
将扇区地址分割为高2字节和低2字节;
将高2字节写入所述第一个扇区的冗余中;将所述第二字节写入所述第二扇区的冗余中。
A4,将错误检查和纠正ECC码写入所述每个扇区的剩余冗余字段中。
可以理解,本实施例中,步骤A2~步骤A4数据的写入并无绝对顺序;具体的执行顺序可以依据应用环境进行选择。
本发明实施例中,可以在每一个扇区内存储数据存储状态标识;数据存储状态标识可以用1个字节或者1个位来表示;
当扇区内存在数据时,将扇区内的数据存储状态标识,置为有效状态;当扇区内不存在数据时,将所述扇区内的数据存储状态标识,置为无效状态。上层管理通过该存储状态标识对该扇区内数据的存储状态进行识别。
如图2所示,是本实施例中,数据写入完成后,存储器中第N个扇区和第N+1个扇区对应的16字节冗余的示意图,其中字节0和字节1存储扇区地址分片(本例中是低两字节或者高两字节),字节2为存储状态标识,字节3至字节15用于保存ECC码,由于ECC码由12字节扩充到了13字节,因此可以纠错8位。
实施例二、一种数据读取方法,流程如图3所示,包括:
B1,获取待读取数据对应的扇区地址,所述每一个扇区地址标识至少两个扇区;
B2,根据所述扇区地址读取对应的至少两个扇区内的数据;
以每一个扇区地址标识两个扇区为例,读取数据的过程可以为:
查找扇区地址对应的两个扇区;依次读取两个扇区内的数据。
依次读取两个扇区内的数据的过程包括:
获取第一个扇区内的数据存储状态标识,若所述第一个扇区内的数据存储标识被置为有效状态,则读取第一个扇区的数据;读取完成后,获取第二个扇区内数据存储标识,若所述第二个扇区内的数据存储标识被置为有效状态,则继续读取第二个扇区的数据。
B3,根据扇区冗余字段存储的ECC码对数据进行错误纠正检查。
错误纠正检查的过程可以包括:
判断数据是否有错,如果有错,则扇区冗余字段存储的ECC码对数据进行纠错。
本发明实施例二提供的数据读取方法,可以实现对实施例一中存储的数据的读取和ECC纠错,提高ECC纠错的能力。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、FLASH、磁盘或光盘等。
实施例三、一种数据存储器,结构示意图如图4所示,包括:
存储控制器410,用于接收读/写命令,对存储单元进行数据的读/写操作;
存储单元420,用于保存所述存储控制单元410写入的数据;所述存储单元420内每连续的至少两个扇区用一个扇区地址标识;所述扇区地址按照扇区地址对应的扇区数目进行划分,将划分后的扇区地址分别保存在每个扇区的冗余中。本实施例中,一个扇区地址标识两个扇区或更多的扇区,下面以一个扇区标识两个扇区为例进行说明。
在不设置数据存储状态标识的情况下:
所述存储单元内所述扇区地址标识的每一个扇区包含512字节的数据存储区,有16字节的冗余存储区;所述16字节的冗余存储区中2字节用于存储扇区地址的低/高2字节,14字节用于存储ECC码。
在设置数据存储状态标识的情况下:
所述存储单元内所述扇区地址标识的每一个扇区包含512字节的数据存储区,有16字节的冗余存储区;所述16字节的冗余存储区中2字节用于存储扇区地址的低/高2字节,13字节用于存储ECC码,1字节用于保存数据存储状态标识,所述数据存储状态标识的值用于指示数据存储区是否有数据。
以上对本发明实施例所提供的数据写入方法、数据读取方法和数据存储器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。