读取非易失性计算机存储器的系统和方法

文档序号:6655933阅读:178来源:国知局
专利名称:读取非易失性计算机存储器的系统和方法
技术领域
本公开一i^涉及用于读取非易失性计算机存储器的系统和方法。
背景技术
用户对像个人数字助理(PDA)、 MP3播放器、便携式存储系统、增强型 手机(cell phone)系统、以及照相机这样一类的便携式设备的需求日益增加。 传统的非易失性储存器存储系统(例如软磁盘、硬盘驱动器、以及光驱动)一 般不适合在便携式设备中使用,原因在于它们遭受机械故障、超重、大尺寸以 及高能量消耗。结果,便携式设备的制造致力于固态存储系统,例如闪存以及 电可擦除可编程只读存储器(EEPROM)。
在固态存储设备(例如闪存)上对数据的存取以及存储利用虚拟化的地址。 固态存储设备易于随着使用而耗损,并且同样,固态存储设备内部的扇区可能 失去存储无误差数据的能力。为了减少固态存储设备耗损的问题,微控制器通 常会平衡存储器扇区之间的f好目。例如,当 被提供给闪存设备时,该数据 可以被存储在第一扇区,并且当数据被更新时,微控制器可以将数据存储在第 二扇区,从而M^、了第一扇区的耗损。因此,数据块的物理位置可能变化。为 了促进这种平衡且为了寻址变化的物理地址,微控制器通常生成一种列表,该 列表被用来把由计算系统使用的基于位置的地址转换为闪存设备内部所使用的 虚拟地址。通31i^种方式,系统可以利用基于相同位置的地址来寻址一组 , 同时微控制器可以根据平衡助、议将该信息存储在闪存的变化扇区内或者闪存内 部的不同地址上。当扇区在闪存设备内部是坏的时,微控制器可以生成坏数据 扇区的日划寸以阻止 存储在这种坏数据扇区内。
典型地通过读取娄娥扇区和校验系统数据内特定的代石别直 行坏扇区的 编目以及扇区日则t的生成。 一般,与数据扇区的所有数据有关的ECC被包含 在用于纠正和校验数据中的噪声的数据扇区内。例如,当存储数据时基于数据 来计算ECC并随 —起存储。当存取类娜时,从数据中计算新的ECC并与 随数据一起被存储的ECC进行比较。如果新的ECC和所存储的ECC之间存
5在差别,则数撤艮可能被破坏并且扇区可能是坏的。在许多例子中,ECC可以 ICT来在传输给随后的存储系统或处理器之前纠正数据。
这种检错、纠错、以及坏 块的编目对于多级单元闪存变得愈发重要。
多级单元(MLC)闪存比传统的单级单元闪存具有更大的存储密度。但是,多 级单元闪存典型地具有更高的差错率且可能耗损更决。同样,纠错以及扇区编 目对刊頃失性固态存储设备而言鹏越有用。
但是,读取数据、计算ECC以及纠正受破坏的数据的过程是漫长的过程。 同样,执行任务(例如日划寸数据扇区)消耗系统资源。在一个例子中,日划寸任 务可能降低戶,接的存储器总线的性能。同样,需要用于读取非易失性存储器 的改进的系统和方法。


图1是示出示例性存储系统的框图。 图2是示出示例性存储器的框图。
图3、 4和5是示出象在图1中戶^的存储系统这样一类存储系统使用的 示例性方法的流程图。
具体实施例方式
在特定的实施例中,本公开涉及具有处理器和非易失性存储设备的存储系 统。非易失性存储设备被配置用于存储具有数据扇区或页面的数据块。数据的 每个扇区或页面都包括用户数据区和冗余存储区。每个冗余存储区都包括具有 循环冗余校验码(CRC)的第一部分以及具有纠错码(ECC)的第二部分。当 生成闪存日划寸时,系统可以读取每个冗余存储区的第一部分并利用有关的循环 冗余校验码(CRC)来校验差错。如果发现冗余部分的数据出错,系统可以利 用在冗余存储区或*数据扇区上所存储的ECC码来执行数据纠正。
例如,冗余存储区的第一部分可以包括系统数据和对数据块编目有用的数 据,例如一个或多个重写标记、逻辑地址数据、格式预定数据、安全码、数据 管理标记、以及识别扇区内数据类别的标记。在一个示范性实施例中,系统扫 描所有块内的所有数据扇区或特定扇区的第一部^*校验±央偏区状态以建立好 的或坏的扇区或块的列表。在另一例子中,系统扫描一组用于逻辑地址信息的 扇区来建立逻辑到物理的地址映射。在另一的例子中,系统扫描扇区来搜索特 定的标记。在另一例子中,系统在允许扇区被复帝倒另一个存储器(即,畐体保护)之前校验安全码。例如,CRC代码可以与第一部分一起被包括以有助于 测试第一部分来确定*新己,据中是否具有差错或噪声。
在一示范性实施例中,本公开涉及一种读取非易失性计算机存储器的一部 分的方法,其包J舌读取与非易失性计算机存储器的数据扇区相关联的冗余存储 区的第一部分。冗余存储区的第一部分包括与数据扇区相关联的数据。冗余存 储区的第一部分包括循环冗余校验码。
在另一示范性实施例中,本公开涉及一种读取非易失性计^m存储器的方 法。该方^^皿取非易失性计算机存储器的第一数据扇区的第一冗余存储区 的第一部分,以及读取第二冗余存储区的第一部分。该第一冗余存储区包括与 第一数据扇区相关联的数据。该第一冗余存储区的第一部分包括与第一冗余存 储区的第一部分相关联的第一循环冗余校验码。该方法也包括读取非易失性计 算机存储器的第二数据扇区的第二冗余存储区的第一部分。该第二冗余存储区 包括与第二数据扇区相关联的数据。该第二冗余存储区的第一部分包括第二循 环冗余校验码。
在另一示范性实施例中,本公开涉及一种非易失性计算机存储设备,其包 括具有第一用户数据和第一冗余存储器的第一存储元件。该第一冗余存储器包 括第一部分和第二部分。该第一冗余存储器的第一部分包括第一循环冗余校验 码,且该第一冗余存储器的第二部分包括第一纠错码。该非易失性计算机存储 设备也包括具有第二用户数据和第二冗余存储器的第二存储元件。该第二冗余 存储器包括第一部分和第二部分。该第二冗余存储器的第一部分包括第二循环 冗余校验码,且该第二冗余存储器的第二部分包括第二纠错码。
在另一示范性实施例中,本公开涉及一种具有处理器、可存取处理器的动 态存储器和可存取处理器的非易失性存储器的系统。该非易失性存储器包括具 有第一用户数据和第一冗余存储器的第一存储元件。该第一冗余存储器包括第 一部分和第二部分。该第一冗余存储器的第一部分包括第一循环冗余校验码, 且该第一冗余存储器的第二部分包括第一纠错码。该非易失性存储器也包括具 有第二用户数据和第二冗余存储器的第二存储元件。该第二冗余存储器包括第 一部分和第二部分。该第二冗余存储器的第一部分包括第二循环冗余校验码, 且该第二冗余存储器的第二部分包括第二纠错码。
图i示出了示范性的存储系统ioo。该示范性的存储系统100包括处理器102和非易失性存储设备106 (例如闪存)。闪存的示范性实施例包括单级单元 闪存以及多级单元闪存。处理器102可以被连接到动态存储器,例如随机存取 存储器(RAM) 104,其可以存储闪存日则寸140、坏i央数据150、 CRC估计程 序160、以及可选地存储ECC程序。闪存日划寸140、坏块数据150、和CRC 估计禾旨160可以被存储在RAM 104中或可以合并到处理器102中。
存储设备106被配置用于存储数据块,所述 ±央包括页面或扇区,例如 示出的扇区108、 110和112。数据的4^扇区(例如108、 110和112)都具 有用户 区(120、 124和128)以及冗余存储区(122、 126和130)。在一 个示范性实施例中,用户数据区(120、 124和128)包括用户数据并且冗余存 储区(122、 126和130)包括系统 。当处理器102正生成闪存日鄉140时, 处理器可以存取冗余存储器的第一部分并且禾佣CRC估计禾號160来确定冗 余存储器的第一部分内部是否存在差错。如果不存在差错,处理器可以继续估 计存储器随后的块。如果存在差错,处理器可以存取冗余存储器的包括ECC 代码的第二部分,皿行ECC校验,或者在冗余存储器或旨 扇区上执 行纠错。
在一个示范性实施例中,动态存储器包括指令和逻辑来执行CRC和ECC 操作,并且执行用于日鄉以舰存储块进行编目的日划寸和编目操作。例如,动 态存储器可以包 腿辑以及可由处理器操作附旨姊执行CRC操作,比较ECC 代码,或利用ECC码执行纠错。在另一个例子中,系统可以存储识别所使用 的块的数据,例如地址换算表。在另一个例子中,动态存储器包括可由处理器 执行的映射f,逻辑来产生表示非易失性存储器的区域的日划寸的数据。响应于 读取第一冗余存储区的第一部分而不是读取数据扇区来产生该映射。
图2描述了一种示范性存储设备,其包含非易失性存储器的数据的两种代 表性的扇区或页面。数据的第一扇区包括第一用户数据区120和冗余存储区 122。冗余存储区122被进一步分,一部分202和第二部分204。第一部分202 包括第一 CRC代码220和其他的冗余数据222。第二部分204包括第一纠错码 (ECC) 224。类似地,第二扇区包括第二用户数据区124和第二冗余存储区 126。第二冗余存储区126被进一步分成第一部分212和第二部分214。第^ 分212包括第二 CRC代码230和其他的冗余数据232。第二部分214可以包括 纠错码(ECC) 206和其他的冗余数据234。通常,其他的冗余数据区(222,232,和234)可以包括系统数据和对编目i^:t^W用的数据,例如重写,射己、 逻辑地址数据、格式预定数据、安全码、数据管理标记、以及识别扇区中数据 类别的标己。在一个示范性实施例中,重写fei己包括指示块状态、页面状态、 和更新状态的^i己。在一个特定的实施例中,CRC代码220和230与重写^i己 并且尤其与土央状态、页面状态、以及更新状态l斜己有关。例如,CRC代码(220 和230)可以被用来校验重写fei己、诸如块状态、页面状态、以及更新状态标 记中的噪声或差错。
当估计扇区差错时,系统可以读取冗余存储器的第一部分,例如第一部分 202。系统可以估计与第一部分202有关的第一 CRC代码220来确定是否存在 差错。 一检测至嗟错,系统就可以存取第一冗余存储器122的第二部分204来 获得第一纠错码(ECC) 224并在包括第一用户数据区120的齡数据i央上执 行ECC操作,例如ECC校验或纠错。
为了生;^储设备的映射,系统可以读取非易失性存储器的被选部分。在 一个示范性实施例中,存储设备是闪存设备,例如多级单元闪存设备。图3是 说明用于读取非易失性存储器的被选部分的示范性方法的流程图。方法300包 括读取非易失性计算机存储器的页面或扇区的冗余存储区的第一部分,如步骤 302所示。第一部分可以包括与非易失性计算机存储器内部的数据扇区相关联
的数据,例如系统数据。冗余存储区的第一部分可以包括循环冗余校验码 (CRC)代码。在特定的实施例中,冗余区为16字节且冗余存储区的第一部 分为7字节。在另一个示范性实施例中,用户数据区为2048字节,冗余区为64 字节,以及冗余区的第一部分为28字节。冗余区也可以包括具有纠错码(ECC) 的第二部分。如步骤304所示,例如通过估计与第一部分的数据有关的循环冗 余校验(CRC)代码,系统确定是否检测到存储器差错。
在另一示范性实施例中,系统可以响应于检测存储器差错来执行纠错例行 程序。例如,如步骤306所示,存储设备可以读取旨数据扇区,如步骤308 所示,产生纠错码用于和所存储的与冗余数据的部分有关的纠错码进行比较或 者在,数据扇区上执行ECC纠正。可选地,ECC操作可以在冗余存储区上 被执行。通常,用来读取冗余区的第一部分和校验CRC的时间比读取和执行 旨数据扇区的ECC操作的时间要少的多。
作为这,作的结果,系统可以产生存储器扇区布局表,如步骤310所示。存储器扇区布局表可以被存储在微处理器中或随机存取存储器(RAM)设备
中。可选地,这些操作可以被用来校验安全码的值,识别具有特定标签(例如 识别在扇区中所存储的数据类型的标签)的扇区,或者产生坏的或好的数据扇 区或块的映射。
在一个示范性实施例中,非易失性存储器包括多个页面。在一个例子中, 每个页面都包括用户数据区和冗余存储区。例如,多个页面中的第一个包括第 一用户数据区和第一冗余存储区,并且多个页面中的第二个包括第二用户数据 区和第二冗余存储区。在一个t寺定的实施例中,第一冗余存储区和第二冗余存 储区包括系统数据,并且第一用户数据区和第二用户数据区包括用户数据。
如图4所示的方fe^括i卖取非易失性计算l几存储器的第一数据扇区的第一
冗余存储区的第一部分,以及读取非易失性计算机存储器的第二数据扇区的第 二冗余存储区的第一部分。第一冗余存储区包括与非易失性存储器内部的第一 数据扇区相关联的系统数据并且第二冗余存储区包括与非易失性存储器内部的 第二数据扇区相关联的系统数据。第一冗余存储区的第一部分包括与第一冗余
存储区的第一部分相关联的第一循环冗余校验(CRC)码。第二冗余存储区的 第一部分包括与第二冗余存储区的第一部分相关联的第二循环冗余校验码。在 一个示范性实施例中,第一冗余存储区的第一部分以及第二冗余存储区的第二 部分可以进一步包S^辑地址数据、格式预定数据、和数据管理l射己。
系统可以读取第一冗余存储区的第一部分,如图4的步骤402所示,并确 定存储器是否有差错,如步骤404所示。例如,系统可以估计第一 CRC代码 来确定第一冗余存储区的第一部分是否有差错。另外,系统可以读取第二冗余 存储区的第一部分,如步骤406所示,确定在第二冗余存储区中是否检测到存 储器差错,如步骤408所示。
图5描述了示出用于读取非易失性存储器的附加方法的流程图。方法500 包括读取非易失性计算机存储器的扇区或页面的冗余存储区的第一部分,如步 骤502所示。该冗余存储区与非易失性计^m存储器内部的扇区相关联。冗余 存储区的第一部分包括与冗余存储区第一部分相关联的第一纠错码(ECC), 且第二部分包括与数据扇区相关联的第二纠错码(ECC)。在一个特定的实施 例中,冗余存储区的第一部分包括重写标记,例如块状态、页面状态和更新状 态标记。该第一 ECC可被用来检测差错和噪声以及纠正重写*斜己中的差错和
10噪声。在另一个示范性实施例中,冗余存储区的第一部分包括一个或多个重写 标记、管理标记、逻辑地址信息、安全码和识别扇区内数据类别的标签。第一
ECC可IOT来检测和纠正第一部分中的差错。
该方法进一步包擬,第一纠错码来执行检差或纠错,如步骤504所示。 例如检错可以利用第一 ECC在冗余存储区或其部分区域(例如在第一部分) 上执行。当检测到差错状况,该第一 ECC可以被用来纠正冗余存储区,或者 在冗余存储区的第二部分中所存储的第二 ECC被用于在数据扇区上执行检错 和/或纠错,如步骤506所示。
上述主题应被认为是示范性的,而非限制性的,并且所附的权利要求旨在 覆盖所有落入本发明的真实范围的这种修改、改进、及其他实施例。因此,在 化法律所允许的最大程度上,本发明的范围应当由接下来的权利要求书及其等 同物所允许的最宽解释来确定,并不受到前述详细说明的约束或限制。
权利要求
1、读取非易失性计算机存储器的一部分的方法,该方法包括读取非易失性计算机存储器的数据扇区的冗余存储区的第一部分,所述冗余存储区的第一部分包括与数据扇区相关联的数据;其中,冗余存储区的第一部分包括循环冗余校验码。
2、 权利要求1的方法,其中冗余存储区包括冗余存储区的第二部分中所存储的纠错码。
3、 权利要求2的方法,进一步包括估计循环冗余校验码,以关于冗余存 储区的第一部分来确定是否检测到存储器差错。
4、 权利要求3的方法,进一步包括在检测存储器差错之后读取数据扇区并且响应于检测到存储器差错来执行纠错例衍聘。
5、 权利要求4的方法,进一步包括在执行纠错例行,歸之前从冗余存储区的第二部分读取纠错码。
6、 权利要求3的方法,进一步包括基于冗余存储区的第一部分内部所包含的所述数据来产生存储器扇区布局表。
7、 权利要求3的方法,进一步包括基于冗余存储区的第一部分内部所包含的戶;M数据来建立坏扇区日,。
8、 权利要求3的方法,进一步包括基于冗余存储区的第一部分内部所包含的戶,类媚来识别在扇区中所存储的数据类型。
9、 权利要求3的方法,进一步包括基于冗余存储区的第一部分内部所包含的所述数据来校验安全码的值。
10、 权利要求1的方法,其中冗余存储区的第一部分包括从由重写*斜己、 逻辑地址数据、格式预定数据、安全码、数据管理标记以及识别扇区内数据类 别的标签组成的组中所选择的 。
11、 权利要求6的方法,其中存储器扇区布局表被存储在随机存取存储设 备中。
12、 权利要求1的方法,其中非易失性计算机存储器为闪存设备。
13、 权利要求12的方法,其中闪存设备为多级单元闪存设备。
14、 权利要求1的方法,其中冗余区为16字节,并且其中冗余存储区的第一部分为7字节。
15、 权利要求1的方法,其中冗余区为64字节,并且其中冗余存储区的 第一部分为28字节。
16、 权利要求1的方法,其中用来读取冗余区的第一部分和估计循环冗余 校验的时间小于读取数据扇区和禾佣纠错5辣执行纠错码操作的时间。
17、 读取非易失性计穀几存储器的方法,该方 跑括 读取非易失性计算机存储器的第一数据扇区的第一冗余存储区的第一部分,第一冗余存储区包括与第一数据扇区相关联的数据,第一冗余存储区的第 一部分包括与第一冗余存储区的第一部分相关联的第一循环冗余校验码;以及 读取非易失性计算机存储器的第二数据扇区的第二冗余存储区的第一部 分,第二冗余存储区包括与第二数据扇区相关联的数据,第二冗余存储区的第 一部分包括第二循环冗余校验码。
18、 权利要求17的方法,其中第一冗余存储区包括第一冗余存储区的第二部分中所存储的第一纠错码,并且其中第二冗余存储区包括第二冗余存储区 的第二部分中所存储的第二纠错码。
19、 权利要求18的方法,进一步包括估计第一循环冗余校验码来关于第一冗余存储区的第一部分确定是否检测到存储器差错,以及估计第二循环冗余 校验码来关于第二冗余存储区的第一部分确定是否检观倒存储器差错。
20、 权利要求17的方法,其中与第一数据扇区相关联的数据以及与第二 数据扇区相关联的数据包括从由逻辑地址数据、格式预定数据、和数据管理标 记组成的组中所选择的数据。
21、 权利要求17的方法,其中非易失性存储器包括多个块,多个块中的 第一个包括第一数据扇区并且多个块中第二个包括第二数据扇区。
22、 权利要求17的方法,其中第一冗余存储区和第二冗余区包括系统数 据,并且其中第一数据扇区和第二麵扇区进一步包括用户数据。
23、 一种非易失性计算机存储设备包括具有第一用户数据和第一冗余存储器的第一存储元件,第一冗余存储器包 括第一部分和第二部分,第一冗余存储器的第一部分包括第一循环冗余校验码 且第一冗余存储器的第二部分包括第一纠错码;具有第二用户数据和第二冗余存储器的第二存储元件,第二冗余存储器包括第一部分和第二部分,第二冗余存储器的第一部分包括第二循环冗余校验码 且第二冗余存储器的第二部分包括第二纠错码。
24、 权利要求23的非易失性计算机存储设备,其中第一循环冗余码与第一冗余存储器的第一部分内所存储的数据的检错相关联。
25、 权利要求24的非易失性计算机存储设备,其中第二循环冗余码与第 二冗余存储器的第一部分内所存储的数据的检错相关联。
26、 权利要求23的非易失性计^a存储设备,其中第一纠错码与在第一 用户数据内以及第一冗余存储器内所存储的数据的纠错相关联。
27、 一种系统包括;处理器;可存取处理器的动态存储器;以及可存取处理器的非易失性存储器,戶服非易失性存储器包括 具有第一用户数据和第一冗余存储器的第一存储元件,第一冗余存储器包括第一部分和第二部分,第一冗余存储器的第一部分包括第一循环冗余校验码且第一冗余存储器的第二部分包括第一纠错码;以及具有第二用户数据和第二冗余存储器的第二存储元件,第二冗余存储器包括第一部分和第二部分,第二冗余存储器的第一部分包括第二循环冗余校验码且第二冗余存储器的第二部分包括第二纠错码。
28、 权利要求27的系统,其中动态存储器包括表示非易失性存储器的区 土或的映射的数据,非易失性存储器的区±或包括第一存储元件和第二存储元件。
29、 权利要求27的系统,其中动态存储器包括可由处理器执行来估计第一循环冗余校验码以检测第一存储元件内部的差错的程序逻辑,并且其中动态 存储器进一步包括可由处理器执行来利用第一纠错码纠正第一存储元件内部的 差错的程序逻辑。
30、 权利要求28的系统,其中动态存储器包括可由处理器执行的日划诉呈 序逻辑来产生表示非易失性存储器的区域的映射的数据,并且其中响应于读取 第一冗余存储器的第一部分以及响应于读取第二冗余存储器的第一部分、而不 读取第一用户数据以及不读取第二用户数据来产生日划寸。
全文摘要
本公开涉及一种读取非易失性计算机存储器的一部分的方法,该方法包括读取非易失性计算机存储器的数据扇区的冗余存储区的第一部分。冗余存储区的第一部分包括与数据扇区相关联的数据。冗余存储区的第一部分包括循环冗余校验码。
文档编号G06F11/10GK101427323SQ200580017567
公开日2009年5月6日 申请日期2005年9月20日 优先权日2004年11月4日
发明者D·C·贝克, G·D·阿博特, J·泽维 申请人:西格马特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1