用于flash存储器的高可靠性数据读取方法

文档序号:8269685阅读:889来源:国知局
用于flash存储器的高可靠性数据读取方法
【技术领域】
[0001] 本发明涉及一种存储设备读写方法,具体涉及一种用于flash存储器的高可靠性 数据读取方法。
【背景技术】
[0002] 现有nandfIash内存由若干物理块组成,如图1所示,物理块包含若干个物理页, 物理页包括管理字节区、若干个由至少两个扇区组成的用户数据区和若干个分别与所述用 户数据区一一对应的错误校验区(ECC),每个错误校验区(ECC)用于校验并纠错其负责的 用户数据区的错误代码,所述管理字节区用来建立逻辑页与物理页之间或者建立逻辑块与 物理块之间的对应关系。 管理理字节:一般是存储控制器厂家根据自己的管理算法定义的几个字节,在实际应 用中需要单独读取这部分数据用来建立逻辑页与物理页之间或者建立逻辑块与物理块之 间的对应关系和提供其它用户管理信息。
[0003] Ik用户数据:包含用户数据两个扇区的数据。
[0004] LBA: logical block address,逻辑块地址对应于用户一个扇区(512个字节)的 数据,PC主端与存储类设备通信是以一个扇区(512个字节)为单位进行读写的。
[0005] ECC: error correction code,错误校验(代码)。nandflash物理特性上使得其 数据读写过程中会发生一定几率的错误,需要有个对应的错误检验和纠正的机制,所以存 储控制器一般都提供ECC用于用户数据的检测和纠正.Nandflash的ECC,常见的算法有 BCH和海明码; 当用户只需要Ik用户数据中前一个扇区或后一个扇区的数据,如果将整个Ik的数据 都加载到存储控制器缓存中,势必存储控制器缓存需要多增加一个扇区大小的容量;另外 本来只需要对一个扇区进行纠错,如果对整个Ik用户数据都进行纠错的话,必然降低了 对nandflash的读速度。因此如何提高了对nandflash存储设备的读写速度,成为本领域 技术人员努力的方向。

【发明内容】

[0006] 本发明目的是提供一种用于flash存储器的高可靠性数据读取方法,该方法提高 了对flash存储器的读写速度,且保证了读写信息准确性且硬件利用率高。
[0007] 为达到上述目的,本发明采用的技术方案是:一种应用于nandflash存储设备的 快速读写方法,所述nandflash存储器由若干物理块组成,物理块包含若干个物理页,物理 页包括管理字节区、若干个由左、右两个扇区组成的用户数据区和若干个分别与所述用户 数据区一一对应的具有纠错功能的错误校验区(ECC),每个错误校验区(ECC)用于校验并 纠错其负责的用户数据区中错误代码,所述管理字节区用来建立逻辑页与物理页之间的对 应关系或者建立逻辑块与物理块之间的对应关系; 还包括一组ECC控制寄存器用于对管理字节区、用户数据区及错误校验区分别控制是 否进行纠错,此ECC控制寄存器包括: 管理字节使能位,用于控制是否对所述管理字节区进行纠错; 左扇区数据使能位,用于控制是否对所述用户数据区中一个扇区进行纠错处理; 右扇区数据使能位,用于控制是否对所述用户数据区中另一个扇区进行纠错处理; 错误校验使能位,用于控制是否对所述错误校验区(ECC)进行纠错处理; 管理字节长度控制位,用于配置管理字节的长度,从而控制对物理页中使能的区域进 行纠错,而对物理页中关闭的区域不进行纠错; 所述用户数据区包括一个第一用户数据区和至少一个第二用户数据区,所述错误校验 区(ECC)包括一个第一错误校验区(ECC)和至少一个第二错误校验区(ECC),所述第一错误 校验区(ECC)用于将其相应的第一用户数据区和管理字节区合在一起进行校验纠错编码; 在对nandflash进行读操作时:当在逻辑上读用户数据区中左扇区时,则使能ECC控制 寄存器中左扇区数据使能位,如果左扇区位于第一用户数据区内,则配置ECC控制寄存器 中管理字节长度控制位有效(长度为8),发送读命令将用户管理信息读入BCH模块解码查 错,但不加载到控制器缓存中,将左扇区数据读到BCH模块解码查错,并加载到控制器缓存 中进行纠错,再将右扇区读到BCH模块解码查错,但不加载到控制器缓存中,否则,发送读 命令将左扇区数据读到BCH模块解码查错,并加载到控制器缓存中进行纠错,再将右扇区 读到BCH模块解码查错,但不加载到控制器的缓存中; 当在逻辑上读用户数据区中右扇区时,则使能ECC控制寄存器中右扇区数据使能位, 如果右扇区位于第一用户数据区内,则配置ECC控制寄存器中管理字节长度控制位有效 (长度为8),发送读命令将用户管理信息和左扇区数据读入BCH模块解码查错,但不加载到 控制器缓存中,将右扇区数据读到BCH模块解码查错,并加载到控制器缓存中进行纠错,否 贝1J,发送读命令将左扇区读到BCH模块解码查错,但不加载到控制器的缓存中,将扇区数据 读到BCH模块解码查错,并加载到控制器缓存中进行纠错; 当在逻辑上读一个由左、右两个扇区组成的用户数据区时,则使能ECC控制寄存器中 左、右扇区数据使能位,如果用户数据区为第一用户数据区,则配置ECC控制寄存器中管理 字节长度控制位有效(长度为8),发送读命令将用户管理信息读入BCH模块解码查错,但不 加载到控制器缓存中,将用户数据区数据读到BCH模块解码查错,并加载到控制器缓存中 进行纠错,否则,发送读命令将用户数据区数据读到BCH模块解码查错,并加载到控制器缓 存中进行纠错; 在对nandflash进行写操作时:当对第一用户数据区中写数据时,将用户管理信息与 待写入第一用户数据区的数据经BCH模块进行编码生成BCH码,再将用户管理信息、待写入 第一用户数据区的数据和BCH码分别写入用户管理信息区、第一用户数据区和第一错误校 验区(ECC); 当对第二用户数据区中写数据时,则管理字节长度控制位无效,再将待写入第二用户 数据区的数据经BCH模块进行编码生成BCH码,再将待写入第二用户数据区的数据和BCH 码分别写入第二用户数据区和第二错误校验区(ECC)。
[0008] 上述技术方案中的进一步改进方案如下: 1.上述方案中,所述物理页包括4个用户数据区,4个错误校验区(ECC)。
[0009] 2.上述方案中,所述用户管理信息区长度为8个字节,包括4个字节的管理字节 和4个字节的CRC校验码。
[0010] 由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果: 本发明用于flash存储器的高可靠性数据读取方法,其硬件在ECC控制寄存器提供了 一个机制去使能或关闭相关区域数据是否需要纠错,所以如果我们只需要读取前一个扇区 数据到存储控制器缓存中时,我们可以只使能左扇区数据区域,让整个Ik数据+BCH码需要 经过ECC通道进行查错,但只需要读左扇区数据到存储控制器缓存中进行纠错;基于上面 同样的原因,我们在实际读取数据时,可能只需要读取右扇区数据到存储控制器缓存中,而 且存储控制器缓存就只能提供一个扇区的容量可用(多读出的数据会覆盖掉前面的有用数 据),因此,我们在只需要读取后一个扇区数据到存储控制器缓存中时,可以配置ECC控制 寄存器,只使能右扇区数据区域,将整个Ik数据+BCH码经过ECC通道进行查错,但只读右 扇区数据到存储控制器缓存中进行纠错;又提高了对nandflash存储设备的读写速度。
【附图说明】
[0011] 附图1为现有技术nandflash存储器结构示意图; 附图2为本发明nandflash存储器结构示意图; 附图3为本发明管理字节读操作流程图; 附图4为本发明ECC控制寄存器结构示意图; 附图5为本发明用户数据读操作流程图; 附图6为本发明用户数据写操作流程图。
【具体实施方式】
[0012] 下面结合附图及实施例对本发明作进一步描述: 实施例:一种用于flash存储器的高可靠性数据读取方法,所述nandflash存储器由若 干物理块组成,物理块包含若干个物理页,物理页包括管理字节区、若干个由左、右两个扇 区组成的用户数据区和若干个分别与所述用户数据区一一对应的具有纠错功能的错误校 验区(ECC),每个错误校验区(ECC)用于校验并纠错其负责的用户数据区中错误代码,所述 管理字节区用来建立逻辑页与物理页之间的对应关系或者建立逻辑块与物理块之间的对 应关系; 还包括一组ECC控制寄存器用于对管理字节区、用户数据区
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1