用于模拟每单元单个位的 NAND 闪存的每单元多个位的 NAND 闪存的控制器 技术领域 本公开一般涉及闪存器件, 并更具体地涉及通过一种类型的 NAND 闪存器件 ( 例如 每单元多个位 (Multiple Bit per Cell)(“MBC” ) 闪存器件 ) 来模拟另一类型的 NAND 闪 存器件 ( 例如每单元单个位 (Single Bit per Cell)(“SBC” ) 闪存器件 )。
背景技术 多年来已知闪存器件、 一种非易失存储器器件。 闪存器件包括存储器单元的阵列, 其中每个存储器单元由通常具有浮置栅极区、 漏极区和源极区的半导体晶体管来实现。存 储器单元可以具有通过控制在浮置栅极内存储的电荷量来实现的两个或更多不同的状态。 即, 每个状态与存储在浮置栅极内的不同电荷量相关。 为了实际使用存储器单元, 其每个状 态与二进制值相关。
一种闪存器件是基于公知为 “每单元单个位” (SBC) 的技术的, 其意味着 SBC 存储 器器件中的每个存储器单元存储一位。每单元存储一位意味着该单元被配置为处于 ( 即存 储 ) 两种可能状态之一。通常, 该单元的一个状态与存储在该单元的浮置栅极中的零电荷 相关。该状态是该单元的 “未写入” 状态, 并且通常这表示二进制数字 “1” 。该单元的另一 状态通常与浮置栅极中的某些负电荷量相关。该状态是该单元的 “已写入” 状态, 并且通常 这表示二进制数字 “0” 。 浮置栅极中的负电荷的存在导致该单元的晶体管的阈值电压增加, 以及由此, 必须被施加到晶体管的控制栅极以便致使晶体管导电的电压增加。
闪存器件能够执行三种操作 : 向存储器单元中写 ( 由于历史原因, 经常称作 “编 程” ) 数据、 从存储器单元读数据、 以及从存储器单元擦除数据。这些操作由外部主机设备 发起, 但是由控制器本地处理。向存储器单元中写二进制数字 ( 即 “0” 或 “1” ) 涉及改变晶 体管的浮置栅极中的电荷以由此改变该单元的阈值电压。 读取存储在存储器单元中的二进 制数字涉及检查该单元的阈值电压的电平 - 如果阈值电压处于较高状态, 则将位值译为逻 辑值 “0” 。但是, 如果阈值电压处于较低状态, 则将位值译为逻辑值 “1” 。实际上, 不需要准 确地读取该单元的阈值电压。而是, 正确地标识该单元当前处于两个状态中的哪一个状态 就足够了。为了实现这点, 必须将单元的阈值电压与其值在两个状态之间的参考电压相比 较, 并确定该单元的阈值电压是在参考值以下还是以上。
对于许多种闪存, 例如 NAND 闪存, 不能在各个存储器单元上进行写和擦除操作, 而是, 在各组存储器单元上进行这些操作。在 “页” 上进行写操作, “页” 相对小 ( 对于 NAND 闪存器件来说, 通常是 512 字节、 2K 字节或者 4K 字节 ), 而在 “块” 上进行擦除操作, “块” 大 于页 ( 对于 NAND 闪存器件来说, 通常是 32K 字节或 128K 字节 )。
另一种闪存器件是基于公知为 “每单元多个位” (MBC) 的技术。在 MBC 存储器器件 中, 每个存储器单元存储 N 位 (N ≥ 2), 这意味着 MBC 存储器单元被配置为存储 2N 个状态。 例如, 存储 2 位的存储器单元存储四个状态, 其每个与四个二进制值 “00” 、 “01” 、 “10” 、 “11” 之一相关。
由于单元的状态由该单元的阈值电压表示, 因此存储两位的 MBC 单元支持该单元 的阈值电压的四个不同范围。对于 SBC 单元, MBC 单元的每个状态实际上是一个电压范围 而不是单个电压。当读取单元的内容 ( 即所存储的二进制值 ) 时, 该单元的阈值电压必须 与校正电压范围正确地相关。例如在 Harari 的美国专利 No.5434825 中讨论了 MBC 快闪器 件。
当最初构思闪存技术的概念时, MBC NAND 快闪器件相对不成熟, 而 SBC 器件很普 遍。因此, 利用闪存技术的主机的传统设计是面向 SBC 的, 这导致其与 MBC 器件不兼容。因 此, 即使 MBC NAND 技术已经成熟、 比 SBC 器件更具成本效率 ( 至少在每美元的兆字节方面 ) 并已经在市场上可获得, 但是基于 MBC 的 NAND 器件也不能由符合 SBC 的主机设备使用, 这 阻止了 MBC 技术的进一步发展, 即使 MBC 器件比 SBC 器件提供了每个相同物理区域的更多 存储容量。即使包含使用每单元的相同数量的位来存储数据的存储器单元, 如果存储器件 是由不同的存储器厂商供应的, 因为不存在对于 NAND 接口的标准, 并且不同的厂商可以并 且确实使用不同种类的 NAND 接口, 因此也可能存在其他的技术不匹配。
克服此兼容性问题 ( 即, 使得 MBC 快闪器件和符合 SBC 的主机能够彼此交互 ) 并 不容易, 因为 SBC 器件和 MBC 器件在几个技术方面中本质不同。例如, SBC 器件和 MBC 器件 利用不同大小的数据页和数据块。另外, 因为 SBC 单元的两个状态之间的电压间隔 ( “误差 余量” ) 大于在 MBC 的每两个相邻状态之间存在的误差余量, 因此 SBC 单元提供了更高水平 的可靠性, 由于此原因, 通常使用 SBC 单元来引导 (boot) 计算机系统。为了补偿其相对低 的可靠性, MBC 器件使用更强的误差校正方案, 例如更强的纠错码 (ECC)。
随着 SBC 闪存器件提供了更高的可靠性和更快的响应性, 已经做出努力来将 SBC 的能力与 MBC 组合。但是, 这些努力指向仅改善 MBC 闪存器件的特定技术方面。一些现有 技术致力于引导方面, 即其提供在 MBC 闪存器件中的特定区域中存储初始化 ( 即引导 ) 程 序, 以获得与由 “真正的” SBC 技术提供的可靠性类似的引导可靠性。其他现有技术致力于 可靠性方面, 并提供了更强的误差校正机制。其他现有技术致力于响应速度方面并允许在 MBC 器件中专用和使用 SLC 缓存, 等等。但是, 现有技术未教导将 SBC 数据写入 MBC 闪存器 件中作为常规 MBC 数据, 或者从 MBC 数据中读取 SBC 数据。 发明内容
结合意为示例和图示而非在范围上限制的系统、 工具和方法来描述和图示以下示 例实施例及其方面。
作为本公开的一部分, 提供了一种用于将主机数据写入到闪存器件中的方法, 该 方法包括 : 通过闪存器件的控制器从主机设备接收写指令, 用于将主机数据写入被分组成 单独可写的器件页的 NAND 闪存单元阵列中。控制器可以将主机数据与补充数据集合, 由此 创建可存储在所述器件页中的一个或多个中的器件数据, 然后将所述器件数据写入所述器 件页中的一个或多个中。
作为本公开的一部分, 提供了一种用于从闪存器件读取主机数据的方法, 该方法 包括步骤 : 从主机设备接收读指令, 用于从被分组成单独可读的器件页的 NAND 闪存单元的 阵列中读取主机数据, 所述主机数据是被存储在器件页中的器件数据的一部分 ; 从所述器 件数据解析所述主机数据 ; 以及将解析的主机数据发送到主机设备。作为本公开的一部分, 提供了一种执行用于从闪存器件擦除主机数据的擦除指令 的方法, 该方法包括步骤 : 从主机设备接收擦除指令, 用于从被分组成可单独擦除的器件块 的 NAND 闪存单元的阵列中擦除主机数据, 所述主机数据是被存储在器件块中的器件数据 的一部分 ; 将所述主机数据标记为被擦除 ; 以及向主机设备发送主机数据已经被擦除的消 息。该方法还可以包括实际擦除包含主机数据的器件块的步骤。
作为本公开的一部分, 提供了一种用于闪存器件的控制器, 其实现写入、 读取和擦 除方法。该控制器可以包括 : 主机 NAND 接口, 用于从 NAND 主机设备接收主机数据 ; 以及数 据集合器, 用于将主机数据与补充数据集合, 由此创建器件数据。 该控制器可以将器件数据 写入与闪存器件相关的 NAND 闪存单元的阵列的器件页中。该控制器还包括数据解析器, 用 于当控制器执行数据写入操作时, 解析补充数据, 并当控制器执行数据读取操作时, 解析主 机数据。
主机数据可以被构造用于按每单元 M 位地存储数据的存储器单元的 NAND 阵列, 并 且 NAND 闪存单元可以被设计为按每单元 N 位地存储数据, 其中 N 和 M 是整数并且 N 大于 M。 在一个示例实施例中, N 等于 2 并且 M 等于 1。在另一示例实施例中, N 等于 4 并且 M 等于 1。在另一示例实施例中, N 等于 4 并且 M 等于 2。
除了以上所述的示例方面和实施例以外, 通过参考附图并通过学习以下详细描 述, 进一步的方面和实施例将变得显而易见。附图说明
在参考的附图中图示了示例实施例。意要在此公开的示例实施例是图示的而不 是限制性的。但是, 当结合附图阅读时, 参考以下详细描述可以更好地理解本公开, 在附图 中:
图 1 示意性图示了根据本公开的一个示例实施例的闪存器件 ;
图 2 示出了根据本公开的一个示例实施例的用于由闪存器件处理主机命令序列 的示例方法 ; 以及
图 3 示出了根据本公开的示例实施例的伪 PPP 的使用。
将认识到, 为了简化并清楚图示, 图中所示的元件不是必须按比例绘出的。此外, 在认为适当时, 可以在各图中重复参考标记以指示相同、 相应或者类似的元件。 具体实施方式
通过参考本发明的示例实施例的此具体实施方式, 将更好地理解权利要求书。此 具体实施方式不是意要限制本发明的范围而是提供示例。
如上所述, NAND 闪存器件被设计为在分别处理的页中存储数据。取决于主机设备 所发起的操作的类型 ( 即, 将主机数据写到闪存器件中、 从闪存器件中读取主机数据或者 从闪存器件中擦除主机数据 ), “分别处理的页” 可以指代 “分别可写” 或者 “分别可读” 的 页。当涉及 “擦除” 操作时, 按块来擦除数据, 其中每个块由几页构成。 “页” 的大小和块的 大小取决于 NAND 闪存器件的类型, 并且如上所述, 由同一闪存器件处理各种大小的数据页 并不容易, 因为通常 NAND 闪存器件被设计或者至少被最优化用于特定的页和块大小。由于 此原因, 被设计用于某种页大小的主机设备通常不能、 至少不能高效地与被设计用于不同页大小的闪存器件交互。
通常, 源自主机设备的 “命令序列” 可以包括数据 ( 下文中称为 “主机数据” )、 与 闪存器件内的物理页相关的逻辑页地址以及用于闪存器件使用该逻辑地址将主机数据写 到物理页中的写指令。通过将主机逻辑地址映射到相应器件页的逻辑地址、 然后将器件页 的逻辑地址映射到器件页的物理地址来执行从主机逻辑地址到器件页的物理地址的映射。 或者, “命令序列” 可以包括逻辑地址和用于闪存器件使用该逻辑地址从闪存器件的物理页 中读取主机数据的读指令, 或者包括逻辑地址和用于使用该逻辑地址从闪存器件中擦除主 机数据的擦除指令。 “命令序列” 还可以包括可以由闪存器件使用的管理数据和其他类型的 数据或信息。从主机设备转发到闪存器件的命令序列在下文中被称为 “主机命令序列” 。因 为在 NAND 快闪器件中, 数据被分组成页, 可以说 “主机数据” 被分组成 “主机页” 。
图 1 示出了根据本公开的一个示例实施例的闪存器件 ( 在 102 示出 )。NAND 闪存 系统 100 包括 NAND 主机设备 101 和 NAND 闪存器件 102, 该 NAND 闪存器件 102 与主机设备 101 接口。闪存器件 102 包括主机接口 (I/F)105、 控制器 103 和用于按每单元 N 位来存储 数据的 NAND 存储器单元 130 的阵列, 其中 N 等于或大于 2。
主机设备 101 经由主机 I/F 105 将主机命令序列转发 ( 在 104 示出 ) 到闪存器件 102。主机命令序列包括用于存储在闪存器件 102 中的主机数据, 该主机数据被分组成小于 器件页的大小的、 按主机大小的页。例如, 如果主机设备 101 是被设计为与 SBC 闪存器件交 互的 SBC 器件, 则主机数据具有 SBC 数据的大小和其他特性, 同样, 主机命令序列是或者类 似于 SBC 命令序列。SBC 页的大小通常小于 4K 字节 ( 例如 2K 字节 )。 可存储在存储器单元阵列 130 中的数据在下文中被称作 “器件数据” , 而在存储器 单元阵列 130 内的用于存储器件数据的存储器单元的组在此被称为 “器件页” 。器件页具有 与其相关的指示页在存储器单元阵列 130 内的相对位置的物理地址以及指示由主机设备 101 所认知的页的相对位置的逻辑地址两者。 通常, 使用翻译表来将一种类型的地址翻译成 另一类型。
例如, 如果闪存器件是 MBC 器件, 则器件页具有 MBC 页的大小和其他特性, 同样, 作 为可由控制器 103 内部使用的命令序列的器件命令序列被构建或者构造 (format) 为符合 MBC 技术。MBC 页的大小通常至少是 4K 字节。注意, 在本公开的背景下, 无论所涉及的技术 如何 ( 例如 SBC、 MBC 等 ), 主机数据都小于器件数据。
闪存器件通常包括整体快闪控制器 ( 在图 1 中未示出 ), 用于管理存储器器件与其 主机设备之间的数据交换以及各种内部处理 ( 例如磨损均衡 (wear leveling))。 如果闪存 器件和其主机设备使用相同的页大小和相同的块大小而工作, 则闪存器件可以不使用诸如 图 1 的控制器 103 的控制器而与其主机设备交互。但是, 本公开适用于符合不同技术 ( 例 如 SBC vs.MBC) 的主机设备 101 和闪存器件 102, 而且还适用于基于相同技术 ( 例如 MBC) 但使用不兼容的 NAND 接口的主机设备和闪存器件。如上所述, 主机设备 101 可以符合 SBC 技术, 而闪存器件 102 可以符合 MBC 技术。控制器 103 按如下所述的方式来解决主机 101 和闪存器件 102 之间的技术差异。
控制器 103 包括主机命令解析器 (parser)(“HCP” )110、 控制电路 150、 数据集合 器 (aggregator)120 和数据解析器 140。HCP 110 连接到 ( 在 106 示出 ) 主机 I/F 105、 数 据集合器 120( 在 121 示出 ) 和控制电路 150( 在 151 示出 )。数据集合器 120 可以连接到
诸如 RAM 160 的随机存取存储器 (“RAM” ) 以临时存储主机数据以及可能的其他数据 ( 例 如哑数据 (dummy data))。数据集合器 120 连接到 ( 在 142 示出 ) 数据解析器 140。数据 集合器 120 和数据解析器 140 连接到 NAND 存储器单元阵列 130( 分别在 131 和 141 示出 )。 “哑数据” 指的是可由控制器 103 标识为除了表示在器件页内的空闲空间外不具有任何含义 的数据的特定数据, 并且不可由诸如主机设备 101 的外部设备访问。
控制器 103 被适配或配置为经由主机 I/F 105 从主机设备 101 接收主机命令序 列 ( 例如 SBC 命令序列 ) 来处理主机数据, 该主机数据可能是 SBC 数据。主机命令解析器 (HCP)110 被适配或配置为从该主机命令序列产生器件命令序列以与可应用于存储器单元 阵列 130 的器件页操作 ( 例如 MBC 操作 ) 一致地处理该主机数据。 “处理主机数据” 在此指 的是如下情况 : 其中, 主机命令序列可能实际上包括用于存储在 ( 写入或被编程到 ) 闪存器 件中的主机数据, 或者主机数据已经被存储在闪存器件中并需要从存储器单元阵列 130 中 读出或擦除。
主机命令解析器 (HCP)110 通过将主机命令序列解析为主机操作码 (opcode) (“HOC” )111、 主机逻辑地址 (“HLA” )112 和主机数据 113, ( 如需要的话 ) 翻译可由闪存 器件 102 使用的操作码, 来产生器件命令序列。如下所述处理从主机命令序列解析的数据 ( 即主机数据 )。 “主机数据” 可以指与要处理 ( 即, 写入、 读取或擦除 ) 的数据相关的数据、 元数据和 / 或管理数据。 替换实施例可以包括更多、 更少、 其他的或者功能上等效的模块、 组件或元件。例 如, 传统的闪存器件包括快闪管理器, 即管理入口 (ingress) 和出口 (egress) 数据以及诸 如磨损均衡、 逻辑地址到物理地址的翻译和反过来的翻译的其它内部处理的一种控制器。 因此, 图 1 的控制器 103 可以是与快闪管理器交互的单独的器件, 或者快闪管理器的功能性 可以被集成、 嵌入或结合到控制器 103 中。尽管在图 1 中被示出为单独的组件, 但是主机接 口 105 可以是控制器 103 的构成部分。尽管在图 1 中被示出为控制器 103 的构成部分, 但 是 RAM 160 或翻译表 154 或者两者可以存在于控制器 103 的外部。
“写” 操作
如果在检查了主机操作码 111 后, HCP 110 确定主机命令序列包括将主机数据写 入存储器单元阵列 130 中的写指令, 则如果该写指令不是兼容存储器器件的, 则 HCP 110 将 主机的写命令翻译成可由闪存器件 102 使用的写指令。否则 ( 即, 不需要指令翻译 ), 控制 电路 150 可以照原样利用该主机写指令。从而, HCP 110 将原始写指令或 ( 即如果该写指 令不可由闪存器件 102 使用 ) 其翻译转发 ( 在 151 示出 ) 到控制电路 150。然后控制电路 150 可以控制数据集合器 120 的操作 ( 在 153 示出 ) 以及如需要的话还可以控制数据解析 器 140 的操作 ( 在 152 示出 ), 以遵循主机设备发出的写指令。
参考标记 170 指定在所接收的主机命令序列中的从主机设备 101 接收的示例主机 数据。如果操作码 111 是写指令, 这意味着控制器 103 必须将主机数据 170 写到存储器单 元阵列 130 中。在这些情况下, HCP 110 将作为示例主机数据 113 的主机数据 170 转发 ( 在 121 示出 ) 到数据集合器 120 用于处理。
参考标记 173、 174 和 175 指定仅具有与器件页相同大小 ( 例如 4KB) 的器件数据 能被写入的、 或者能从其读取具有与器件页相同大小的数据的示例器件页。为了简化, 图1 仅示出了三个示例器件页 ( 即器件页 173、 174 和 175), 而实际上存储器单元阵列 130 将具
有大量器件页。因为主机数据 170 小于器件页 ( 例如器件页 175), 并且由于与每个页大小 相关的各种技术复杂性, 主机数据 170 不能照原样被写入存储器单元阵列 130 中, 而是必须 在控制器 103 将其写入存储器单元阵列 130 中之前被控制器 103 处理。
为了将主机数据 170( 或者用于该主题的任何其他主机数据 ) 写入存储器单元阵 列 130 中, 控制器 103 包括数据集合器 120, 其被适配或配置为创建可存储在存储器单元阵 列 130 中的一个或多个器件页中、 例如在器件页 175 中的器件数据。数据集合器 120 通过 将主机数据 170 与补充数据集合来创建器件数据。 在完成数据集合处理后, 数据集合器 120 将新创建的器件数据写到 ( 在 131 示出 ) 例如器件页 173、 174 和 175 中的一个或多个中。
数据集合器 120 可以使用各种选择将主机数据与补充数据集合。根据第一选择, 补充数据是从主机设备 101 接收的并被在闪存器件 102 中排队的其他主机数据。该选择包 含等待直到从主机设备 101 接收到足够数量的新主机数据并将其在例如随机存取存储器 (RAM)160 中排队。
在没有足够数量的主机数据被排队在闪存器件 102 中的情况下, 可以采用第二选 择, 其包含从存储器单元阵列 130 中读取剩余的补充数据。为了便于第二选择, 控制电路 150 向数据解析器 140 发送 ( 在 152 示出 ) 器件页 173、 174 和 175 的与需要的一样多的物 理地址, 数据解析器 140 可以从这些物理地址读取剩余的补充数据 ( 即使不存在不足够数 量的主机数据被排队在闪存器件 102 中的情况也能够采用此第二选择 )。数据解析器 140 通过使用物理地址从被寻址的器件页提取相应的器件数据来从存储器单元阵列 130 读取 数据。如果要读取的数据是主机数据, 则数据解析器 140 从器件数据解析主机数据。
第三选择包含仅在规定的时间段内没有主机数据到达的情况下从存储器单元阵 列 130 提取补充数据。第四选择包含将当前接收的主机数据临时存储在存储器单元阵列 130 中的某器件页中 ( 即器件页 173、 174、 175 或任何其他的器件页中 ), 并在接收到附加的 主机数据后, 稍后将该当前接收的主机数据与补充数据集合。
关于器件页的物理地址, 如果控制电路 150 例如通过使用翻译表 154 发现潜在的 补充数据被存储在一个具体器件页中, 则控制电路 150 可以仅将该具体器件页 ( 例如器件 页 175) 的物理地址发送 ( 在 152 示出 ) 到数据解析器 140。但是, 如果控制电路 150 发现 潜在的补充数据被分布在存储器单元阵列 130 内的几个器件页之中, 则控制电路 150 将分 别对应于这几个器件页的几个物理地址发送 ( 在 152 示出 ) 到数据解析器 140。
然后, 数据解析器 140 利用从控制电路 150 发送的物理地址从存储器单元阵列 130 中提取 ( 在 141 示出 ) 器件数据, 数据解析器 140 可以从该器件数据中解析所需的补充数 据。然后, 数据解析器 140 可以将该补充数据转发 ( 在 142 示出 ) 到数据集合器 120, 该数 据集合器 120 将其与主机数据集合由此创建新的器件数据。然后, 数据集合器 120 将该器 件数据写到 ( 在 131 示出 ) 已经从控制电路 150 发送了 ( 在 153 示出 ) 其物理地址的目标 器件页中 ( 例如器件页 175), 以由此完成 “写” 指令 111。注意, 如以下结合图 3 所讨论的, 该补充数据可以是哑数据。 即, 要存储在器件页中的主机数据可以与哑数据集合, 并且该器 件页将被控制器 103 认为是仅包含主机数据。通过示例, 示出示例器件页 175 包含主机数 据 176、 主机数据 177 和哑数据 178。在此示例中, 数据集合器 120 接收了主机数据 176 并 决定等待附加的主机数据 177, 然后将主机数据 176 和主机数据 177 两者写入闪存单元阵 列 130 中。在等待附加的主机数据 ( 即主机数据 177) 时, 数据集合器 120 将主机数据 176临时保存在 RAM 160 中。然后, 数据集合器 120 接收了主机数据 177, 并将主机数据 176 与 主机数据 177 以及哑数据 178 集合。最终, 数据集合器 120 将得到的集合数据写到器件页 175 中, 如图 1 所示。
注意, 代替将器件页的物理地址发送到数据解析器 140( 如 152 所示 ) 以及数据集 合器 120( 如 153 所示 ), 控制电路 150 可以使用器件页的物理地址来从存储器单元阵列 130 中读取感兴趣的器件数据, 并视具体情况将其发送到数据解析器 140 或者数据集合器 120。
“读” 操作
如果接收的操作码 111 被控制电路 150 译为 “读” 指令, 则控制电路 150 执行 “读” 指令, 在其器件控制电路 150 将主机逻辑地址 112 翻译成存储器单元阵列 130 内的器件页 ( 下文中被称为 “被请求的器件页” ) 的物理地址, 其中应该从该器件页读取主机数据 ( 下 文中被称为 “被请求的主机数据” )。因为主机数据被存储在器件页中作为器件数据的一部 分, 因此需要从存储在所涉及的器件页中的器件数据解析被请求的主机数据 ( 即要读取的 主机数据 )。因此, 控制电路 150 将被请求的器件页的物理地址转发 ( 在 152 示出 ) 到数据 解析器 140。然后, 数据解析器 140 利用被请求的器件页的物理地址来读取 ( 在 141 示出 ) 被请求的器件数据。然后, 数据解析器 140 从提取的器件数据中解析被请求的主机数据, 并 经由主机 I/F 105 将被请求的主机数据发送 ( 在 143 示出 ) 到主机设备 101, 以由此完成 “读” 命令 111。 注意, 代替将被请求的器件页的物理地址发送到数据解析器 140( 如 152 所示 ), 控 制电路 150 可以使用被请求的器件页的物理地址来取得被请求的器件数据并将其发送到 数据解析器 140。
“擦除” 操作
如果所接收的操作码 111 被控制电路 150 译为 “擦除” 指令, 则控制电路 150 执行 “擦除” 指令。不同于对 “页” 执行的 “写” 和 “读” 操作, 在 NAND 闪存器件中按 “块” 地擦除 数据。 “主机块” 由多个主机页构成, 并且 “器件块” 由多个器件页构成。因此, 如果控制电 路 150 标识擦除主机数据的擦除指令, 则控制电路 150 查考翻译表 154, 以得到存储了包括 要被擦除的主机数据的器件数据的存储器单元阵列 130 中的器件块的地址。然后, 控制电 路 150 在翻译表 154 中将主机数据标记为被擦除, 并向主机设备 101 发送消息 : 主机数据已 经被擦除。控制电路 150 实际上可以稍后在适当的时间或者方便时从存储器单元阵列 130 擦除主机数据。为了实际擦除主机数据, 控制电路 150 将与主机数据相关的主机逻辑地址 112 翻译成包含该主机数据的器件块的相应物理地址, 然后控制电路 154 擦除该器件块。
图 2 示出了根据本公开的用于由闪存器件处理主机命令序列的示例方法。将结合 图 1 描述图 2, 并假设主机设备 101 符合 SBC 技术, 而闪存器件 102 符合 MBC 技术。如上所 述, 不解决使设备相互区别的各个技术方面, SBC 主机设备和 MBC 闪存器件不能交互。除了 区别页的大小和块的大小之外, 在 SBC 闪存器件中在新数据被写入页之前擦除该整个页。 然而, 如果新数据可以被写到该页中的足够大的空闲空间中, 可以省略 “擦除” 步骤, 这是本 领域中通常称为部分页编程 (“PPP” ) 的特征。与 SBC 闪存器件相反, MBC 闪存器件总是在 新数据可以被写入页中之前擦除该整个页。另外, SBC 闪存器件将数据随机地写入页中, 而 MBC 闪存器件按顺序将数据写入页中, 即数据被写入页 0 中, 然后写入页 1 中、 页 2 中, 等等。 如以上结合图 1 所述, 控制器 103 通过使用主机命令解析器 110、 数据集合器 120 和数据解
析器 140 来解决这些技术差别。
在步骤 201, NAND 闪存器件 102 的控制器 103 从主机设备 101 接收 ( 在图 1 中的 104 示出 ) 主机命令序列, 在此示例中该主机命令序列是 SBC 命令序列。在步骤 202, 主机 命令解析器 (HCP)110 将 SBC 命令序列解析为 SBC 操作码 111、 SBC 逻辑地址 112 和主机数 据 113, 在此示例中该主机数据 113 是 SBC 数据。在步骤 203, 检查操作码是否是 “写” 指令。 如果 SBC 操作码是 “写” 指令 ( 在 203 示出为 “是” ), 则在步骤 204, 控制电路 150 指令 ( 在 153 示出 ) 数据集合器 120 集合或合并 SBC 数据 113 与可能是其他 SBC 数据的补充数据, 以由此创建可存储在 MBC 单元阵列 130 的一个或多个器件页中的器件数据 ( 在此示例中是 MBC 数据 )。由于控制电路 150 指令 ( 在 153 示出 ) 数据集合器 120 将包括 SBC 数据的所 创建的器件数据 ( 即 MBC 数据 ) 写入 MBC 单元阵列 130 的 ( 一个或多个 ) 器件页中, 因此 在步骤 205, SBC 数据被写入 ( 一个或多个 ) 相应的 MBC 页中。
补充数据可以是从主机设备 101 接收并被排队在闪存器件 102 中的其他主机数 据。补充数据可以是已经被存储在 NAND 闪存单元阵列 130 中作为其他器件数据的一部分 并从其解析的主机数据。补充数据可以是哑数据。关于写操作, 存储器单元阵列 130 的器 件页被分组成块并在每个块内以逻辑的方式 (logically-wise) 相继被写入, 使得这些器 件页的物理地址不一定连续。 换句话说, 数据可以被写入不连续的、 零散的或者不规则放置 的器件页中, 并且存储在不连续的、 零散的或者不规则放置的器件页中的数据就像它们被 存储在连续的器件页中那样被导入 (introduce) 主机设备。 响应于主机设备 101 使用 PPP 方案写入或试图写入主机数据, 可以使用伪部分页 编程 (“PPP” ) 方案由控制器 103 将主机数据写入闪存单元阵列 130 中。使用伪 PPP 方案 包括使用哑数据作为补充数据。可以由控制器 103 将主机数据写入例如与已经被写入的器 件页不相邻的器件页中, 以改善电力故障保护。
但是, 如果 SBC 操作码 111 不是 “写” 指令 ( 在步骤 203 处示出为 “否” ), 则在步 骤 204, 检查操作码是否是 “读” 指令。如果 SBC 操作码是用于从存储器单元阵列 130 中读 取 SBC 数据的 “读” 指令 ( 在步骤 206 处示出为 “是” ), 其中 SBC 数据是存储在器件页中的 MBC 数据的一部分, 则在步骤 207, 控制电路 150 命令 ( 在 152 示出 ) 数据解析器 140 从存 储器单元阵列 130 中读取 ( 示出在 141)MBC 数据, 并从该 MBC 数据解析 SBC 数据。在步骤 208, 控制电路 150 命令 ( 示出在 152) 数据解析器 140 将解析的 SBC 数据发送到主机设备 101, 以由此完成读操作。
但是, 如果 SBC 操作码 111 不是 “读” 指令 ( 在 206 处示出为 “否” ), 则操作码 111 是用于从存储器单元阵列 130 擦除 SBC 数据的 “擦除” 指令, 其中 SBC 数据是存储在器件块 中的 MBC 数据的一部分。在步骤 209, 控制器 103 将 SBC 数据内部地 ( 例如, 在翻译表 154 中 ) 标记为被擦除, 并向主机设备 101 发送消息 : SBC 数据已经被擦除。在可选步骤 210, 控 制器 103 在使用逻辑地址 112 来标识包含该 SBC 数据的 MBC 块的相应物理地址后, 从该 MBC 块中实际擦除该 SBC 数据。
注意, 通过使用诸如图 1 的控制器 103 的控制器, SBC 主机设备可以与 MBC 闪存器 件工作 ( 即, 向 MBC 闪存器件发出 “写” 、 “读” 和 “擦除” 指令 ), 就像 MBC 闪存器件是 SBC 闪 存器件一样。还注意, 本公开不限于与 NAND MBC 闪存器件工作的 NAND SBC 主机设备。本 公开还适用于任意的 NAND 主机设备和 NAND 闪存器件, 假如主机数据被分组成小于器件页
的主机页。例如, 如果与 MBC 主机设备相关的数据页小于与 MBC 闪存器件相关的数据页, 则 本公开适用于与 MBC 闪存器件工作的 MBC 主机设备。
模拟 SBC 部分页编程 (“PPP” )
图 3 示出了根据本公开的部分页编程 ( “PPP” ) 的示例模拟, 这是由 SBC 闪存器件 使用的特征。如果主机器件 101( 根据一个示例, 其是 SBC 器件 ) 希望使用 PPP, 其可以正常 使用它, 并且闪存器件 102 将通过使用伪 -PPP 方案来响应由主机设备发出的结果 “写” 指 令, 如下所述。通常, 如果主机设备希望将各种数据元素写在一个逻辑 SBC 页中, 则伪 PPP 方案包含将这些数据元素写在 MBC 闪存器件中的单个物理 MBC 页中。
将结合图 1 描述图 3。为了简化, 将假设主机设备 101 是 SBC 器件 ( 即, 其处理被 分组成 SBC 页的数据 ), 并且闪存器件 102 是 MBC 器件。主机设备 101 将 SBC 数据 ( 被指定 为 310、 311 和 312) 发送到闪存器件 102, 每次一个数据元素。因为 SBC 主机器件可以使用 部分页编程 (PPP), 因此图 3 图示了 MBC 闪存器件 102 可以如何处理 PPP, 即使传统 MBC 闪 存器件未被设计来应对这些操作。
为了主机设备 101 将 SBC 数据 310 发送到 MBC 闪存器件 102, 主机设备 101 将示 例 SBC 数据 310 写到其逻辑地址是 301 的 SBC 页中, 并在时间 t1, 按相应的 “写” 命令序列 将 SBC 页 301 发送到嵌入的闪存器件 102 中。数据页 301 内的存储空间 320 是无数据的或 空的, 并且在 SBC 存储器件中, 可以单独将附加的数据写入页 301 中而不用擦除数据 310, 由 于这个原因, 按在此所述的方式将数据写入页 301 中被称为 “部分页编程” 。MBC 闪存器件 102 经过主机接口 105 接收数据 310, 并具有几种选择来将数据 310 写入 MBC 单元阵列 130 中以完成由主机设备 101 发出的写命令。一种选择包含使用数据集合器 120 来将数据 310 与补充数据集合, 以由此建立可以被写入存储器单元阵列 130 的 MBC 页中的数据结构 ( 即 器件数据 )。根据此选择, 且如上所述, 补充数据可以是仍要在输出器件 102 中被接收的其 他主机数据, 或者是被排队在闪存器件 102 中的主机数据, 或者是已经被存储在存储器单 元阵列 130 中的数据。将要在以下详细描述的第二选择是按类似 PPP 的方式 ( 类似 PPP 操 作在此被称为 “伪 -PPP” ) 通过闪存器件 102 处理数据 310。为了实现伪 PPP 选择, 数据 310 可以被存储在 MBC 页 330 中, 同时使得存储空间 331 为空, 或者数据集合器 120 可以将数据 310 与哑数据集合以创建 MBC 数据, 并将创建的 MBC 数据写入存储器单元阵列 130 中。
在时间 t2, SBC 主机设备 101 将数据 311 写入逻辑页 301 中的空闲空间 320 中, 并 将页 301 发送到闪存器件 102 来存储。将数据 311 写入页 301 中得到页 301 中的更小的空 闲空间 ( 在 321 示出 )。因为在一些 MBC 闪存器件中, 物理页可以被写入仅一次而不首先擦 除它们, 因此即使存储器单元阵列 130 中的物理页 330 仍然具有空闲空间 ( 即空间 331), 但数据 311 也不能被写入物理页 330 中。即, 根据图 3 所示的示例, 使得闪存器件将当前接 收的数据写入存储器单元阵列 130 中的新的空闲 MBC 物理页中。但是为了按类似 PPP 操作 的方式动作, 数据解析器 140 从物理页 330 中提取数据 310, 并且数据集合器 120 将其与当 前接收的数据 311 相集合 ( 即将其附于 (append to) 当前接收的数据 311)。然后, 数据集 合器 120 将数据 310 和所附的数据 311 写入存储器单元阵列 130 内的新的空闲物理页 340 中。同样, 当主机设备 101 在时间 t3 向闪存器件 102 发送数据 312 时, 即使物理页 340 仍 然具有足够的空闲空间 ( 即空间 341), 数据 312 也不能被写入物理页 340 中。而是, 数据解 析器 140 从物理页 340 中提取数据 310 和数据 311, 并且数据集合器 120 将数据 310 和数据311 与所接收的数据 312 集合 ( 即将其附于所接收的数据 312)。然后, 数据集合器 120 将 数据 310、 数据 311 和新附上的数据 312 写入存储器单元阵列 130 内的新的空闲 MBC 物理页 350 中。作为操作的替换模式, 数据 310、 311 和 312 可以分别被写入物理页 330、 340 和 350 中, 然后, 数据集合器 120 可以将其集合并全部写入存储器单元阵列 130 内的新的空闲物理 页中。物理 MBC 页 330、 340 和 350 物理上彼此相邻, 因为根据图 3 的示例, MBC 页连续被写 入。
如果诸如主机设备 101 的主机设备使用部分编程 ( 即 PPP) 来将与数据 310、 311 和 312 类似的各个数据元素写入与逻辑页 301 类似的逻辑页中, 则其可能就像所包含的闪 存器件 ( 即闪存器件 102) 是 SBC 闪存器件那样而进行。所包含的闪存器件然后将通过使 用上述的伪 PPP 方案来将各个主机设备数据元素写入相同的物理 MBC 页中 ( 在此示例中写 入 MBC 页 350 中 ) 来响应主机发出的写指令。注意, 主机设备 101 不知道伪 PPP 方案, 并且 就主机设备 101 而言, 闪存器件 102 已经将数据元素 310、 311 和 312 写入一个物理 SBC 页 中。
控制器 103 维持用于将来自主机设备 101 的 SBC 页的逻辑地址翻译为存储器单元 阵列 130 内的 MBC 页 ( 即器件页 ) 的物理地址的翻译表 154。通过使用翻译表 154, 控制器 103 追踪存储器单元阵列 130 内的器件页的物理地址, 它们用于存储数据, 并且控制器 103 在每次数据解析器 140 从存储器单元阵列 130 提取数据或者数据集合器 120 向存储器单元 阵列 130 中写入数据时更新翻译表 154。另外, 就在从主机设备接收到存储器命令时, 或者 响应于这样的命令, 控制器 103 可能偶尔需要临时或永久地、 全部或部分地在存储器单元 阵列 130 中重新排列或重新定位器件数据。在这样做时, 控制器 103 利用在重新排列和重 新定位数据时所包含的临时和最终的逻辑和物理地址或其部分来更新翻译表 154。在闪存 管理的背景下处理翻译表本身是本领域公知的, 因此在此不再详细描述。
页间依赖性、 P/E 周期和可靠性
在闪存中, 每个快闪单元可以存储的位越多, 存在越多的操作问题, 这需要解决以 便使得快闪单元有用。尽管下面将参照 MBC 闪存和 SBC 闪存, 但是同样的原理适用于每单 元存储两位的 MBC 器件和每单元存储多于两位的 MBC 器件。
关于页间依赖性, MBC 闪存器件在电力故障期间易于出现致命的数据写 / 读错误。 这部分地由于两页之间的物理接近 (closeness)。另一方面, SBC 闪存器件较不易于出现这 样的错误。因此, 不像 SBC 主机器件那样, MBC 主机器件需要采取特别的预防措施来应对电 力故障。因此, 如果 SBC 主机器件按连续主机页的形式发送主机数据, 则数据集合器将主机 页写入物理器件页的特别序列中 ( 通常是不相邻的 ), 使得电力故障的影响将被最小化。 换 句话说, 连续接收的主机页不一定按照连续器件页的顺序被存储在器件页中。有时 ( 即取 决于主机设备发送的数据的类型 ), 将需要内部地备份数据的至少一部分, 作为应对电力故 障的另外手段。
关于编程 / 擦除 (P/E) 周期和可靠性, MBC 闪存中的成功 P/E 周期的最大数量比 SBC 闪存中的低得多, 并且其可靠性不利地受较低数量的 P/E 周期影响。一些 SBC 主机器 件使用中等的或较不严格的闪存管理算法, 因为假设 SBC 器件提供更高的 P/E 限制和更好 的可靠性, 这对于许多类型的 SBC 闪存是成立的。因此, 控制电路 150 致使主机数据按照如 下方式被传送到存储器单元阵列 130 中的器件页 : 结果将是输出到 SBC 主机器件的 P/E 周期的数量增加。换句话说, 通过使用在翻译表 154 中保存的信息, 控制电路 150 标识每个 器件页经历了多少 P/E 周期, 然后控制电路 150 致使数据集合器 120 将主机数据写入磨损 (worn-out) 较小的器件页中。否则 ( 如果控制器 103 未进行上述预防步骤 ), 在所谓的 “标 准” SLC 闪存中, SBC 主机设备在稍后可能希望读取的数据将比预期的快得多地被破环。 “更 快” 意味着在更少的 P/E 周期中。
闪存器件的可靠性取决于不同于 P/E 周期的其他因素。例如, 其取决于错误的数 量和闪存单元保留数据的能力。为了达到主机设备期望的可靠性, 控制电路 150 可能必须 使用一个或多个内部参数 ( 即与器件页的功能有关的参数 ) 来重新定位存储器单元阵列 130 内的器件数据。
为了便于上述的预防手段 ( 即将各个主机数据写入物理器件页的特定序列中, 将 主机数据传送到器件页, 以及重新定位器件页内的器件数据 ), 数据集合器采用相应的映射 算法, 并用所包含的逻辑和物理地址以及与数据位置有关的信息来更新翻译表 154, 与数据 位置有关的信息与上述的各个性能方面相关。
在本发明的说明书和权利要求书中, 每个动词 “包含” 、 “包括” 和 “具有” 及其变化 形式用于指示动词的一个或多个宾语不是必须是该动词的一个或多个主语的元件、 组件、 要素或部分的完整列举。
在此使用冠词 “一个” 来指代一个或多于一个 ( 即至少一个 ) 的冠词的语法对象, 这取决于上下文。通过示例, 取决于上下文, “一个要素” 可以移位一个或多于一个的要素。
在此使用术语 “包括” 意味短语 “包括但不限于” , 并可与其互换地使用。
在此使用术语 “或者” 和 “和” 意味术语 “和 / 或” , 并且可与其互换地使用, 除非上 下文另外明确指出。
在此使用术语 “诸如” 意味短语 “诸如但不限于” , 并可与其互换地使用。
因此描述了本发明的示例实施例, 将对本领域技术人员显而易见的是, 所公开的 示例实施例的修改将在本发明的范围内。例如, 主机设备不是必须是 SBC 主机设备, 因为本 公开加以必要的修正同样可适用于其他类型的主机设备和其他类型的 NAND 快闪器件。从 而, 尽管以上未特别描述, 但是仍然意图并暗示所公开的发明的另外的替换、 修改和改进在 本发明的精神和范围内。