《在多层存储器结构中存储纠错码.pdf》由会员分享,可在线阅读,更多相关《在多层存储器结构中存储纠错码.pdf(18页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103984605 A (43)申请公布日 2014.08.13 CN 103984605 A (21)申请号 201410045165.0 (22)申请日 2014.02.07 13/762,765 2013.02.08 US G06F 11/10(2006.01) G06F 12/08(2006.01) (71)申请人 希捷科技有限公司 地址 美国加利福尼亚州 (72)发明人 RJ高斯 MA盖尔特纳 A帕塔波蒂安 (74)专利代理机构 上海专利商标事务所有限公 司 31100 代理人 何焜 (54) 发明名称 在多层存储器结构中存储纠错码 (57) 摘要 本申请公。
2、开了在多层存储器结构中存储纠错 码。用于管理存储器中数据的方法和装置。根据 一些实施例, 数据对象存储在多层存储器结构的 第一非易失性层中。生成在读取操作期间检测数 据对象中至少一个位错误的 ECC 数据集。ECC 数 据集被存储在多层存储器结构的不同的第二非易 失性层中。 (30)优先权数据 (51)Int.Cl. 权利要求书 2 页 说明书 10 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书10页 附图5页 (10)申请公布号 CN 103984605 A CN 103984605 A 1/2 页 2 1. 一种方法, 包括 : 在多。
3、层存储器结构的第一非易失性层中存储数据对象 ; 生成在读取操作期间检测数据对象中至少一个位错误的 ECC 数据集 ; 以及 在多层存储器结构的不同的第二非易失性层中存储所述 ECC 数据集。 2. 根据权利要求 1 所述的方法, 其中, 响应于与所述数据对象相关联的数据属性和与 所述第二非易失性层相关联的存储属性, 选择所述第二非易失性层。 3. 如权利要求 1 所述的方法, 其中所述多层存储器结构包括多个非易失性存储器层, 各个非易失性存储器层具有不同的数据传输属性并对应从最高到最低的顺序按优先级顺 序配置的存储器单元格结构。 4. 如权利要求 3 所述的方法, 其中在多层存储器结构中, 所。
4、述第一非易失性层是比起 所述第二非易失性层的较高层。 5. 如权利要求 3 所述的方法, 其中在多层存储器结构中, 所述第一非易失性层是比起 所述第二非易失性层的较低层。 6. 如权利要求 1 所述的方法, 其中所述存储步骤包括 : 响应于和数据对象的大小相关 的 ECC 数据的大小, 在所述多层存储器结构中从多个可用较低层选择所述第二非易失性 层。 7. 如权利要求 6 所述的方法, 其中所述存储步骤进一步包括 : 响应于相对于所述第一 非易失性层的数据 I/O 传输速率的所述第二非易失性层的数据 I/O 传输速率, 在所述多层 存储器结构中从所述多个可用较低层次选择所述第二非易失性层。 8。
5、. 如权利要求 1 所述的方法, 其中, 在共同的逝去时间间隔, 所述数据对象和 ECC 数据 同时存储到相应的第一和第二非易失性存储器层。 9. 如权利要求 1 所述的方法, 其中所述数据对象包括由请求者设备提供的至少一个用 户数据块用于存储在所述多层存储器结构中, 所述 ECC 数据包括适用于在读回操作期间检 测并校正数据块中多达至少一位错误的码字。 10. 如权利要求 1 所述的方法, 进一步包括 : 生成包括地址信息的元数据单元, 所述地 址信息识别所述第一非易失性存储层中所述数据对象的存储位置以及所述第二非易失性 存储器层中 ECC 数据的存储位置, 其中所述元数据单元被存储在多层存。
6、储器结构中的不同 的第三非易失性层中。 11. 如权利要求 1 所述的方法, 其中所述第一或第二层中所选之一包括可重写非易失 性存储器单元格, 以及所述第一或第二层的剩余一个包括可擦除非易失性存储器单元格。 12. 如权利要求 1 所述的方法, 其中所述多层存储器结构以顺序提供从最快层到最慢 层的多个层, 所述第二层慢于所述第一层, 以及其中所述方法进一步包括 : 在所述第一层中 存储第二数据对象以及相应的第二 ECC 数据集, 以校正第三层中所述第二数据对象中的至 少一位错误, 所述第三层快于所述第一层。 13. 如权利要求 1 所述的方法, 其中该多层存储器结构包括多个非易失性存储器层, 。
7、各 个非易失性存储器层具有不同的数据存储属性, 以及该方法进一步包括 : 通过匹配该数据 对象和 ECC 数据集的数据存储属性到各个所述第一和第二层而选择所述第一和第二层。 14. 一种装置, 包括 : 具有多个非易失性存储器层的多层存储器结构, 各个非易失性存储器层具有不同的数 权 利 要 求 书 CN 103984605 A 2 2/2 页 3 据传输属性和对应的存储器单元格结构, 所述存储器层按优先权顺序从最快到最慢数据 I/ O 数据传送速率能力进行配置 ; 存储管理器, 适于响应于由请求者提供的一个或多个数据块产生数据对象以生成 ECC 数据, 用于在读回操作期间检测所述数据对象中的。
8、多达所选量的读回比特错误, 以在所述 多层存储器结构的第一选定存储器层中存储所述数据对象, 并在所述多层存储器结构的不 同的第二选定存储层中存储所述 ECC 数据。 15. 如权利要求 14 所述的装置, 其中, 响应于与所述数据对象相关联的数据属性和与 所述第二存储层相关联的存储属性, 所述存储管理器选择所述第二存储器层。 16. 如权利要求 14 所述的装置, 其中, 所述第一选定存储器层包括相对较快的存储器, 以及所述第二选定存储器层包括相对较慢的存储器。 17. 如权利要求 14 的装置, 其中, 所述第一选定存储器层包括相对较慢的存储器, 以及 所述第二选定存储器层包括相对较快的存储。
9、器。 18. 如权利要求 14 所述的装置, 其中所述第一或第二存储器层中所选之一包括可擦除 非易失性存储器, 以及所述第一或第二存储器层的剩余一个包括可重写非易失性存储器。 19.如权利要求14所述的装置, 其中响应于相对于数据对象大小的ECC数据集的大小, 所述存储管理器在多层存储器结构中从多个可用较低层选择所述第二非易失性层。 20. 如权利要求 1 所述的方法, 其中所述存储管理器进一步生成包括地址信息的元数 据单元, 所述地址信息识别在所述第一选定存储器层中所述数据对象的存储位置以及所述 第二选定存储层中所述 ECC 数据的存储位置, 其中, 所述元数据单元被存储在在多层存储 器结构。
10、层中的不同的第三选定层。 权 利 要 求 书 CN 103984605 A 3 1/10 页 4 在多层存储器结构中存储纠错码 0001 发明概述 0002 本发明的各个实施例一般涉及管理在存储器中的数据。 0003 根据一些实施例, 数据对象存储在多层存储器结构的第一非易失性层中。生成适 于在读取操作期间检测数据对象中至少一位错误的 ECC 数据集。ECC 数据集被存储在多层 存储器结构的不同的第二非易失性层中。 0004 鉴于下文的详细讨论和附图, 可以理解表征本发明实施例的这些和其他特征和方 面。 0005 附图简述 0006 图 1 提供根据本发明的各种实施例的具有多层存储器结构的数据。
11、存储设备的功 能框图表示。 0007 图 2 是在图 1 的多层存储器结构中有用的可擦除存储器的示意表示。 0008 图 3 提供在图 1 的多层存储器结构中有用的可重写存储器的示意表示。 0009 图 4 示出从图 1 所选择的存储器层的配置。 0010 图 5 示出由图 1 的设备使用的数据对象、 ECC 数据和元数据单元的示例性格式。 0011 图 6 是根据一些实施例图 1 的设备的一部分的功能框图表示。 0012 图 7 更详细示出图 6 的数据对象引擎的各方面。 0013 图 8 更详细表示图 6 的 ECC 引擎的各方面。 0014 图 9 更详细示出图 6 的元数据引擎的各方面。
12、。 0015 图 10 示出根据一些实施例在较高层中存储 ECC 数据和在较低层中存储对应的数 据对象。 0016 0017 图 11 示出根据其他实施例在较高层中存储数据对象和在较低层中存 储对应的 ECC 数据集。 0018 图 12 提供根据一些实施例在数据写入操作期间执行的步骤。 0019 图 13 示出根据一些实施例在随后数据读取操作期间执行的步骤。 0020 图 14 描绘根据各种实施例的碎片收集单元 (GCU) 的操作生命周期。 0021 图 15 示出根据一些实施例在碎片收集操作期间执行的步骤。 0022 发明详述 0023 本发明总体上涉及管理在多层存储器结构中的数据。 00。
13、24 数据存储设备通常操作以在存储器中存储数据块。 该设备可使用数据管理系统以 跟踪块的物理位置, 以便可响应对所存储数据的读取请求而随后检索块。该设备可以被提 供在不同级或层具有不同类型的存储器的分层 (多层) 存储器结构。所述多层按所选优先级 顺序配置, 以适应具有不同属性和工作负荷能力的数据。 0025 各种存储器层可以是可擦除或可重写的。可擦除存储器 (例如, 闪速存储器, 写入 许多光盘介质等) 由可擦除非易失性存储器单元格组成, 在新的数据被写入给定存储器位 置之前所述可擦除非易失性存储器单元格一般需要擦除操作。因此, 在可擦除存储器中常 说 明 书 CN 103984605 A 。
14、4 2/10 页 5 见的是 : 向新的不同位置写入更新后数据集并将之前存储的数据版本标记为陈旧的。 0026 可重写存储器 (例如, 动态随机存取存储器 (DRAM) 、 阻抗随机存取存储器 (RRAM) 、 磁光盘介质, 等等) 可以是易失性或非易失性的, 并从可重写非易失性存储器单元格形成, 以便更新数据集可以被重写到给定位置的现有的旧版本数据, 而无需中间擦除操作。 0027 不同类型的控制信息 (诸如纠错码 (ECC) 数据和元数据) 可以存储在存储器结构中 以协助写入和随后读回用户数据。ECC 数据允许在从存储器读回的数据对象的副本中检测 和 / 或校正多达所选比特的错误量。元数据。
15、单元跟踪在存储器空间中存储的逻辑元件 (例 如, 逻辑块地址、 LBA) 和存储器空间的物理位置 (例如, 物理块地址、 PBA) 之间的关系。元数 据还可包括与所存储用户数据相关的状态信息和相关联的存储器位置, 诸如累计写入 / 擦 除 / 读取总量、 老化、 漂移参数、 估计或测量的磨损等。 0028 本公开的各种实施例提供一种改进方法以在多层存储器结构中管理数据。 如下面 所解释地, 数据对象由一个或多个用户数据块 (例如, LBA) 形成, 并且存储在多层存储器结 构中的选定层。 ECC数据集对于每个数据对象生成并存储在不同层中, 诸如比起用于存储数 据对象的层较低的层或较高的层。 可。
16、相对于和对应数据对象相关的数据属性以及相对于其 中存储 ECC 数据的所选层的存储器属性而选择 ECC 数据的大小和配置。元数据可进一步被 生成以跟踪数据对象和 ECC 数据的位置, 以及所述元数据可以被存储在不同于用于分别存 储数据对象和 ECC 数据的第三层。 0029 以这种方式, 具有特定存储特定属性的数据对象可以被成对或分组并存储在符合 这些属性的合适的存储器层中。ECC 数据可以被生成并存储在匹配 ECC 数据的属性的合适 存储层中, 以及期望或观察与该数据对象相关的工作负荷。 0030 开始浏览图1, 可以理解本文公开的各种实施例的这些和其他特征。 图1提供数据 存储设备 100。
17、 的功能框图表示。该设备 100 包括控制器 102 和多层结构存储器 104。该控 制器 102 提供设备 100 的最高级控制, 以及存储结构 104 从 / 向请求者实体 (诸如外部主机 设备 (未单独示出) ) 存储和检索用户数据。 0031 存储器结构 104 包括表示为 MEM1-3 的多个存储器层 106、 108 和 110。各个层中存 储器的数量和类型可以根据需要变化。一般地, 提供优先级顺序, 以至于存储器结构 104 的 较高层将由更小和 / 或更快的存储器构建, 以及存储器结构中的较低层可以由更大和 / 或 更慢的存储器构建。其它特征可确定各层的优先级顺序。 0032 。
18、为了提供一个具体示例, 系统 100 被设想为基于闪存的存储设备, 诸如固态驱动 器 (SSD) 、 便携式拇指驱动器、 记忆棒、 存储卡、 混合存储设备等, 以便较低存储器层中的至 少一个提供利用可擦除存储器的主要存储。 较高存储器层中的至少一个提供可重写非易失 性存储器, 诸如阻抗式随机存取存储器 (RRAM) 、 相变随机存取存储器 (PCRAM) 、 自旋力矩转 移随机存取存储器 (STRAM) 等。这仅是说明性地而不是限制性地。其他级别可并入到存储 器结构中, 诸如易失性或非易失性缓存级别、 缓冲器 等。 0033 图 2 示出由可擦除存储器单元格 122 的阵列组成的可擦除存储器 。
19、120, 所述可擦 除存储器单元格 122 在这种情况下由 (但不限于) 闪速存储器单元格表征。可擦除存储器 120可用作图1中存储器结构104的各种存储器层。 在闪速存储器单元格的情况下, 单元格 122 通常采取具有带浮置栅的一般 NMOS 场效应晶体管 (n 沟道金属氧化物半导体场效应晶 体管) 的可编程元件的形式, 所述浮置栅适于存储累积电荷。可相对于电压量建立每个闪速 说 明 书 CN 103984605 A 5 3/10 页 6 存储器单元格 122 的编程状态, 所述电压量需要被施加以控制单元格 122 的栅极用于将单 元格置于源极 - 漏极导通状态。 0034 图 2 中的存储。
20、器单元格被布置成许多行和列, 单元格 122 的每列连接到位线 (BL) 124, 以及单元格 122 的每行都连接到单独字线 (WL) 126。数据可沿着单元格的每行存储为 数据页, 该数据页可代表存储器的的选定单元 (诸如 8192 比特) 。 0035 如上面指出地, 可擦除存储器单元格 (诸如闪速存储器单元格 122) 可适于将数据 存储为每单元格的一个或多个比特的形式。然而, 为了储存新更新的数据, 单元格 122 需要 应用擦除操作, 以从相关联的浮置栅极移除积累的电荷。因此, 闪速存储器单元 122 的组合 可被设置成擦除块, 该擦除块表示可以作为单元格擦除的最小的单元格。 00。
21、36 图 3 示出由可重写存储器单元 132 的阵列组成的可重写存储器 130。每个存储器 单元格 132 包括与开关设备 (MOSFET) 136 串联的阻抗传感元件 (RSE) 134。每个 RSE134 是 相对于编程阻抗康具有不同的编程数据状态的可编程存储器元件。可重写存储器单元格 132 可以采取任何数量的合适形式, 诸如 RRAM、 STRAM、 PCRAM 等。 0037 如上面指出地, 可重写存储器单元格 (诸如图 3 中的单元格 134) 可以接收新的更 新数据, 而不需要擦除操作以将单元格复位到已知状态。各种单元格 132 通过位线 (BL) 138、 源线 (SL) 14。
22、0 和字线 (WL) 142 互连。可以设想其他布置, 包括仅将两条控制线 (例如, 位线和源极线) 互连到每个存储器单元格的交叉点阵列。 0038 图 4 示出在图 1 的多层存储结构 104 中有用的所选存储器层 150。存 储器层 150 被布置以提供分别用于数据对象、 ECC 数据和元数据的存储空间 152、 154 和 156。这仅仅是 示例性地而非限制性地, 因为各个层可以全部专用于一种数据类型 (例如, 数据对象) 的存 储, 或者可以专用于仅仅这三种不同类型数据集中的两者的存储。 0039 在给定的存储器层用于这些不同类型的数据集的实际空间数量也可以变化很大 ; 例如, 某一存。
23、储器层可以被布置以使得 90专用于数据对象的存储以及 10用于元数据。 如下文所说明地, 给定存储器层中的ECC数据和元数据 (例如, 图4中的存储器空间154、 156 中的数据) 可以不必涉及该层 (例如, 图 4 中存储器空间 152 中的数据集) 。 0040 但应理解 : 在存储器结构 104 中, 增加用于数据对象的整体可用存储空间, 以及在 具有较高水平的 I/O 数据传输率性能 (例如, 每时间单元传输的数据) 的较高层中增加数据 对象的可用空间可趋向于在请求者级别提高整体性能响应性水平。最终, 数据写和读操作 的一般目标在于以有效方式从 / 向请求者传输用户数据。 0041 。
24、图 6 示出由数据对象 162、 ECC 数据 (或 ECC 数据组) 164 和元数据 (或元数据单元) 166 组成的数据结构 160 的示例格式。在很多情况下, 数据对象 162 明显大于对应的 ECC 数 据164和元数据单元166, 诸如和对应数据对象相比, ECC数据和元数据单元在尺寸 (以总比 特计) 上大约是 10或更少。然而, 数据对象、 ECC 数据集和元数据单元的个体大小将取决 于数据对象中数据块 (LBA) 的数目, 所施加的 ECC 等级以及元数据粒度。如本文所用, 较低 元数据力度表示用户数据的更多 (更细) 描述, 以及较低粒度可倾向于导致较大的元数据单 元大小。。
25、 0042 在图 5 中提出各种数据集 162、 164 和 166 的示例性内容。可以提供内容的其他形 式和安排。数据对象 162 被管理为可寻址单元并由请求者 (主机) 提供的一个或多个数据块 构成。数据对象可以相应地包括头部信息, 用户数据和其他控制信息 (诸如哈希值) 。 说 明 书 CN 103984605 A 6 4/10 页 7 0043 头部信息提供合适的标识符信息, 诸如与存储在数据对象中的用户数据块相关联 的逻辑地址 (例如, LBA 值或 LBA 范围) 。其他数据 (诸如时间 / 日期时戳信息和状态信息) 可以被结合到头部。哈希值可以使用合适的 哈希函数 (诸如 SHA。
26、 哈希) 从用户数据块形成, 用于写入放大的快速拒绝处理。例如, 在写入操作期间, 哈希值可相比于相同 LBA 或 LBA 范 围的较新版本的一个或多个哈希值。如果哈希值匹配, 则新版本可不需要被存储到存储器 结构 104, 因为该操作可表示相同用户数据的重复集合。 0044 ECC 数 据 164 可 以 采 取 诸 如 周 期 性 纠 错 码 (诸 如 Bose、 Ray-Chaudhuri 和 Hocquenghem(BCH)码或里德所罗门码 低密度奇偶校验 (LDPC)码 异或 (XOR)值、 outercode、 IOEDC 值、 校验和) 的各种合适形式以及控制数据的其他形式, 所。
27、述控制数据可 以被计算以检测和 / 或纠正数据对象 162 中直到所选数量的比特错误。一种类型以上的 ECC 码数据可生成以作为所选数据对象的 ECC 数据集。 0045 可以根据数据对象的属性以及其中存储 ECC 数据的存储器层的属性 (例如, 写入 / 擦除 / 读取次数、 老化、 漂移参数, 等等) 选择并随后调整 ECC 数据的大小和强度。通常, ECC 码字的大小通常决定 ECC 的存储足迹 (码率) 的大小。类似地, 可根据操作期间对 ECC 的读 取 - 修改 - 写入操作的可能性而选择子码字的粒度。 0046 ECC 数据集的强度一般涉及 ECC 数据集如何有效用于检测并当使用。
28、时校正直到所 选数量的数据位错误。更强的 ECC 数据集比更弱的 ECC 数据集相比通常检测并纠正更多的 错误。 0047 分层 ECC 可用来加强 ECC 保护。第一种类型的代码 (诸如 BCH) 可以应用于数据对 象。第二种类型的代码 (诸如 Reed Solomon) 然后可以应用于一些或所有 BCH 码字。可以应 用其它层以实现整体所需强度。需要注意 : ECC 的强度可以基于相关数据的存储特性进行 选择 ; 呈现强性能 (高耐久性、 良好的保持特性, 低数据比特差错等) 的存储器层可需要使用 相对较弱的 ECC 方案。相反, 旧的磨损的或相对低耐力的存储器可以保证使用更强的 ECC。。
29、 由于在本实施例中, ECC 与数据对象分开存储, 提供灵活性以使得应用 ECC 的合适层而不需 要限制将 ECC 保持在于受保护数据对象的相同层中。 0048 元数据单元 166 使得设备 100 定位数据对象和 ECC 数据, 并相应地存储各种控制 信息, 诸如数据对象 (DO) 地址信息、 ECC 地址信息、 数据和 存储属性信息、 一个或多个前向 指针以及状态值。也可以使用其他元数据格式。地址信息 174 分别识别数据对象 162 和 ECC 数据 164 的物理地址, 并且也可以提供逻辑到物理地址的变换信息。物理地址将包括 哪个层 (例如, 图 1 中的 MEM1-3) 存储数据集,。
30、 以及其中使用合适的地址标识符 (诸如行存储 (缓存线) 、 模具、 阵列、 平面、 擦除块、 页、 位偏移和 / 或其他地址值) 存储数据集的相关层内 的物理位置。 0049 该数据属性信息表示与数据对象 (诸如状态、 修订级别、 时间戳数据、 工作量指标 等) 相关的属性。存储器属性信息构成和物理位置相关的参数属性, 在该物理位置存储数据 对象和 / 或 ECC 数据。示例包括 : 写入 / 擦除总数、 总读取次数、 估计或测量的磨损效果、 电 荷或阻抗漂移参数、 比特误码率 (BER) 测量、 老化等, 这些各属性集合可以由控制器进行维 护和 / 或基于之前的元数据项进行更新。 0050。
31、 正向指针可通过参考存储器结构 104 中的元数据的其它拷贝而使得检索最新版 本的数据集 (例如, 数据对象和 / 或 ECC 数据) 。状态值指相关数据集的当前状态 (例如, 过 说 明 书 CN 103984605 A 7 5/10 页 8 时、 有效性等) 。当需要时, 相对小的元数据 ECC 值可以在读回期间产生和附加到元数据单 元, 用于验证元数据。 0051 图 6 示出根据一些实施例可操作的设备 100 的存储管理器 170。存储管理器 170 可以形成为控制器功能的一部分。存储管理器 170 被示为包括多个操作模块, 包括数据对 象引擎 172、 ECC 引擎 174 和元数据。
32、引擎 176。这些各个引擎中的每个响应于由请求者提供 的数据块 (LBA) 而产生数据对象、 ECC 数据和元数据单元。 0052 图 1 的多层存储器结构 104 示于图 6 中以包括多个示例性的层, 包括 NV-RAM 模块 178、 RRAM 模块 180、 PCRAM 模块 182、 STRAM 模块 184、 存储器模块 186 和盘模块 188。这些 仅仅是示例性的, 任意数量的不同类型和配置的存储器模块可以根据需要用于各个层中。 0053 NV-RAM178包括具有备用电池或其他机制的易失SRAM或DRAM, 以将所存储数据保 持在非易失性状态。RRAM180 包括阻抗传感存储器。
33、单元格的阵列, 所述阻抗传感存储器单 元格响应于离子迁移通过接口相关于不同编程阻抗抗水平而存储数据。PCRAM182 包括相 变阻抗检测存储器单 元格的阵列, 所述相变阻抗检测存储器单元格根据材料在结晶 (低阻 抗) 和非晶 (高阻抗) 之间的相位变化而表现出不同的编程阻抗。 0054 STRAM184 包括每个具有至少磁隧道结的阻抗检测存储器单元格的阵列, 所述磁隧 道结由具有固定磁定向的材料的参考层和具有可变磁定向的自由层组成。 相对于自由层的 编程磁取向可建立每个 MTJ 的有效阻抗抗以及因此的编程状态。 0055 闪速存储器 186 包括闪速存储器单元格的阵列, 该闪速存储器单元格相关。
34、于在浮 动栅极结构上的累积电荷量而存储数据。不像 NV-RAM、 RRAM、 PCRAM 和 STRAM, 这些都设想 为包括可重写非易失性存储器单元格, 闪速存储器单元格是可擦除的, 因此在写入新数据 之前一般需要擦除操作。闪速存储器单元格可经配置为单级单元格 (SLC) 或多级单元格 (MLC) , 使得每个存储器器单元格存储一位 (在 SLC 的情况下) 或多个比特 (在 MLC 的情况 下) 。当需要时, 可重写存储器层中的存储器单元格也可以被配置为 MLC。 0056 盘存储器188可以是可旋转磁介质, 诸如硬盘驱动器 (HDD) 或类似的存储设备。 当 需要时, 可使用其他的序列、。
35、 组合和数量的层, 包括其他形式的固态和 / 或盘存储器、 远程 服务器存储器、 易失性和非易失性缓冲层、 处理器高速缓存、 中间高速缓存, 等等。 0057 可以预期 : 每一层将有自己相关的存储器存储属性 (例如, 容量、 数据单元大小、 I/ O 数据传输率、 耐力, 等等) 。最高阶层 (例如 NV-RAM178) 倾向于具有最快的 I/O 数据传输率 性能 (或其他合适的性能指标) , 以及最低阶层 (例如, 盘 188) 倾向于具有最慢性能。其余的 每个层将具有以大致连续方式的中间性能特性。至少一些层可具有以碎片收集单元 (GCU) 的形式配置的数据单元格, 所述碎片收集单元从分配。
36、池分配, 用于存储数据, 并在返回到分 配池用于后续分配之前在碎片收集操作期间周期性地复位。 0058 由图 6 中的存储管理器产生的各个数据对象、 ECC 数据和元数据可设想为存储在 不同的存储层 178-188 中。在一个示例中, 数据对象被存储在闪速存储器 186 中, 用于数据 对象的 ECC 数据存储在 RRAM 模块 180, 以 及元数据存储在 PCRAM 模块 182 中。对于每个数 据集选择合适的层, 以及数据集可根据观察的使用模式和测量内存参数而随后迁移到不同 层。 0059 图 7 示出根据一些实施例的图 6 的数据对象引擎 172。如果这些元数据已被预先 存储到存储器结。
37、构 104, 该数据对象引擎 172 从请求者接收数据块 (LBA) 以及在和现有版本 说 明 书 CN 103984605 A 8 6/10 页 9 数据块相关的设备 100 中存储的现有元数据 (MD) 。在数据库 190 中维持的存储层属性数据 也可以由引擎 172 使用。 0060 引擎 172 分析该数据块以确定该数据对象的合适格式和位置。该数据对象由 DO 产生器 192 使用数据块内容以及与该数据对象相关的各种数据相关属性产生。层选择模块 194 选择其中存储所产生数据对象的存储器结构 104 中的合适存储器层。 0061 数据对象 (包括整体数据对象大小) 的配置可以匹配于所选。
38、存储器层, 例如, 页级 别的数据集可以用于存储到闪速存储器 186, 以及 LBA 大小的数据集可以用于 RRAM、 PCRAM 和 STRAM 存储器 180、 182、 184。其它单元的尺寸都可以使用。数据对象的单元尺寸可或不 可对应到在请求者级别使用的单元尺寸, 例如, 请求者可传输名义上 512 字节的用户数据 块。 数据对象可以具有同样的用户数据容量, 或可具有一些更大或更小的用户数据量, 包括 请求者块大小的非整数倍的量。 0062 由 DO 层选择模块 194 识别的 DO 存储位置作为输入提供给存储器模块 104 以指示 数据对象 (DO) 存储在所选存储器层中的指定物理地。
39、址。数据对象和 DO 存储位置信息也被 传输到 ECC 和元数据引擎 174、 176。 0063 在图 8 中, ECC 引擎 174 被示为包括 ECC 发生器 202 和 ECC 层选择模块 204。ECC 引擎 174 使用数据对象、 该数据对象的物理位置 (例如, 其中的层和物理地址) 、 各种数据对 象的相关属性、 以及存储器层属性数据以为数据对象产生适当的尺寸, 强度和等级的 ECC 数据, 以及其中存储 ECC 数据的合适存储器层。 0064 图 7 中的元数据引擎 176 示出在图 9 中, 包括元数据 (MD) 发生器 212 和 MD 线选 择模块 214。MD 引擎 1。
40、76 使用多个输入 (诸如 DO 属性、 DO 存储位置、 ECC 存储位置、 现有 MD (如果有的话) 和数据库 190 的存储器层) 以选择元数据单元 166 的格式、 粒度和存储位置。 在某些情况下, 多个数据对象和/或ECC数据集可以被组合在一起并通过单独的元数据单 元描述。 0065 顶层MD数据结构 (诸如MD表216) , 其可被保持在单独的存储器位置或分布通过存 储器结构 104, 可被更新以反映元数据的物理位置以供将来参考。MD 数据结构 216 可以是 将逻辑地址 (例如, LBA) 关联到相关元数据单元的查找表的形式。 0066 因为 ECC 数据可趋向是数据对象大小的。
41、相对小的部分, 存储器结构 104 中的较高 层可以存储 ECC 数据的合适位置, 尤其是在反复回收和更新 ECC 的相对高的写入强度环境 中。图 10 示出在这些条件下在存储器结构 104 的高位存储器层 220 中存储 ECC 数据, 以及 将相应的数据对象存储到存储器结构中的相对较低存储器层 222 中。可以理解 : 各自较上 层和较低层 220、 222 可以对应于图 6 中的任意各个示例层或其他存储器层, 只要下层 222 和上层 220 相比在存储器结构 104 的优先级顺序中较低。 0067 相反, 如图 11 所描绘, 由于相对较小的 ECC 足迹, 希望将数据对象存储在较上层。
42、 220 并将 ECC 数据存储到较低层 222。和对应的数据对象相比, 在存储器结构 104 的较低层 存储 ECC 数据可以方便在数据对象写入和 ECC 写入之间进行速率匹配。 0068 例如, 如果ECC数据是数据对象大小的约10, 以及较低层222比较上层220慢约 10 倍 (10X) (例如, 较低 222 的数据 I/O 传输率大约是较上层 220 的数据传输速率的 10%) , 和将数据对象写入较上层 220 平行地将 ECC 写到较下层 222 可快于将这两个数据集写入较 少层220。 这是因为将ECC数据写到较低层和将数据对象写到较上层220花费相同时间量, 说 明 书 C。
43、N 103984605 A 9 7/10 页 10 两者可以在相同写入间隔期间推测性写入。 0069 在较慢的较低层 222 中存储 ECC 并不带来读回处理期间的任何显著延迟, 因为在 从较快的较上层 220 读回数据对象所需时间期间 ECC 可实质上从较低层 222 恢复。另外, 在较慢的较低层 222 中存储 ECC 释放较上层 220 中的空间用于存储其他数据对象集。 0070 使用本文所公开的分层 ECC (例如, 对于相关数据在不同层中存储 ECC) 使得 ECC 数 据集的大小显著增加以提高效率, 因为较大的码字提供 了 ECC 算法的更有效使用。每当更 新 ECC 子集时出现的。
44、写入放大是可以接受的, 因为和存储对应数据对象的存储器相比, ECC 可以位于具有更大持久性的存储器中。提供分层 ECC 也有利于产生不同的 ECC 方向, 诸如 经过多个闪速存储器页面。 可根据存储器和数据的存储和工作负荷属性而动态调整所利用 ECC 码字的大小和强度。当然, 将 ECC 数据写入可重写存储器层允许更新位置操作, 从而使 ECC 数据的更新版本可以直接写入到之前版本的 ECC 数据从而取代先前版本。 0071 分层 ECC 的另一优势在于 : 如上面所讨论的, 存储器的整个层可以专用于数据对 象的存储, 从而便于在最适于数据属性的位置中存储数据。 可替换地, 给定层可对于数据。
45、对 象和 ECC 数据 (以及元数据) 具有专用空间, 以及 ECC 数据 (和元数据) 描述在不同层中的数 据对象。这允许存储管理器动态地选择存储层的最佳利用作为数据存储层、 ECC 存储层、 数 据 +ECC 存储层等。随着给定层随着时间磨损并表现出降低的性能, 分配到 ECC 的存储器层 百分比可以增加 (以及更高等级的 ECC 可应用于在该层中存储的数据) 。基于存储和储存属 性的动态分配也使得自适应实现本地工作量水平, 从而提高缓存命中和其他高效的数据传 输。 0072 在一些情况下, 各个数据集 (数据对象、 ECC 数据集和元数据单元) 可以被分别存储 在相同或不同的相对较高的层。
46、, 并随着时间, 当前版本 (有效) 的数据集可以被顺序地迁移 到较低层。根据定义, 如果随着时间存储的给定部分 (诸如碎片收集单元) 具有陈旧 (旧版 本) 和有效 (当前版本) 的数据, 有效数据趋于在已被最久更新方面是 “最旧” 数据。碎片收 集处理期间降级有效数据集到较低层可以相应地允许每种类型的数据在存储器结构中实 现自身的合适等级。 0073 按照上述讨论可以随后对存储到存储器结构 104 的数据对象、 ECC 数据和元数据 单元执行数据访问操作。图 12 表示在读取操作期间可执行的各种步骤, 以向请求者返回之 前存储的用户数据。 0074 在读取操作期间, 在块230, 通过访问。
47、MD数据结构190或其他数据结构而定位和所 选 LBA 相关的元数据, 接收并服务于对所选 LBA 或 LBA 范围的读取请求。在框 232, 识别存 储元数据单元的物理位置并执行读取操 作以检索元数据单元到本地存储器。局部存储器 可以是设备 100 的易失性缓冲存储器。 0075 在框 234, 从元数据中提取数据对象的物理地址和 ECC 数据的物理地址, 并且这些 地址用于框 236 以执行各读取操作用于向本地存储器返回数据对象和 ECC 数据的副本。如 上文所讨论地, 可以并行执行来自两个不同存储器层的这些读取操作。 0076 在块 238, ECC 数据被应用到恢复数据对象的相关部分以。
48、检测和 / 或纠正比特错 误。也可在此时应用其他解码步骤 (诸如解密等) 。无差错的用户数据块在块 240 返回给请 求者, 以及元数据单元可以被更新以反映相关数据对象的读取次数的增加。涉及存储器的 其他参数也可以记录到存储器层数据结构, 诸如观察的误比特率 (BER) 、 递增读计数、 测量 说 明 书 CN 103984605 A 10 8/10 页 11 漂移参数等。 可以设想 : 虽然不一定需要, 在和以前相同的存储器层中维护新更新的元数据 单元。 0077 在可重写存储器的情况下, 对元数据的新更新 (例如, 递增读计数, 状态信息等) 可 重写到相关数据对象的现有元数据上。 对于存。
49、储到可擦除存储器层 (例如, 闪速存储器216) 的元数据, 元数据单元 (或其部分) 可需要写入到层中的新位置。 0078 最后, 基于该读取操作, 在方框 244, 对于数据对象、 ECC 数据和 / 或元数据单元中 的任何一个、 某些或全部执行格式和 / 或存储器层的调整。例如, 基于属性 (诸如相对高的 观察误比特率 (BER) 、 与所存储数据对象相关参数的检测漂移、 读计数、 老化等) , 存储管理 器 170(图 7) 可以进行以增加 ECC 数据等级 ; 例如, LDPC 值可以由 Reed Solomon 码增加或 替换, 以在对数据的后续读取操作期间提供更强的 ECC 功能。在一个实施例中, 如果在读回 数据对象期间检测到所选数量的读取比特错误, ECC 强度自动增加到下个更高水平。 0079 更新后的 ECC 数据可被存储在和以前一样的同一存储器层中, 或者可选择新的 层。如果新的层被选择时, 相关元数据单元将被更新以反映 。