通过群联的GuaranteedFlush™确保数据正确性

作者 | 2021 年 2 月 15 日 | 全部, 消费者, 企业, 技术

NAND 闪存是一种非易失性存储器,由数百万个浮栅晶体管组成,这些晶体管捕获栅极内的电子。这些浮栅晶体管可以被认为是存储单元。当数百万个存储单元连接起来时,它们形成一个阵列。每个数组由块组成,每个块包含多个页。

图 1 给出了 NAND 阵列 f 原理图的简要说明。

 

每个字线 (WL) 构成一个页,这是 NAND 中读/编程操作的基本单位。然而,在单级单元(SLC)、多级单元(MLC)和三级单元(TLC)类型的NAND中,每个WL的页数是不同的。

图2显示MLC NAND中的两个页(下页和上页)共享相同的WL,以及TLC NAND中的三个页(下页、中页和上页)共享相同的WL。共享相同 WL 的页面称为配对页面。

 

 

由于 NAND 闪存的物理特性,NAND 编程操作需要遵循以下两条黄金法则:

  1. 编程操作需要遵循根据NAND Flash特性指定的顺序。
  2. 如果字线(WL)上的编程操作未完成,则无法保证该WL的数据完整性。

 

对于MLC或TLC NAND闪存来说,单页数据编程将不是一步操作。 MLC/TLC页需要编程两次或三次才能完成数据编程要求。这种现象是闪存的物理特性。

 

配对页面中用户数据的完整性问题

 

在当前的消费类固态硬盘(SSD)市场中,MLC和TLC闪存是最受欢迎的内存类型。 MLC和TLC闪存可以以更低的成本提供更大的存储容量,尤其是TLC。但MLC和TLC闪存的编程操作比SLC复杂。如果以TLC flash为例,则需要对同一WL上的配对页进行3次编程才能完成整个操作。

图3说明了TLC闪存的完整编程操作。只有当对WL_x的第三次编程操作完成时,WL_x中存储的数据才成为可靠数据。

 

不幸的是,编程操作的这种复杂性增加了数据损坏的风险。由于数据的完整性仅发生在整个编程序列完成之后(即第一编程+第二编程+第三编程),因此在编程操作完成之前发生的任何意外事件将导致数据损坏或丢失。

图 4 显示了如果任何意外事件中断数据编程操作将会发生的情况。在这种情况下,在WL_2的编程操作完成之前发生断电,这意味着仅保证WL_0/WL_1中存储的数据。换句话说,其他数据可能会因断电而损坏。

 

群联专有技术GuaranteedFlush™旨在防止我们的存储设备因编程操作期间的任何意外中断而导致数据损坏。

GuaranteedFlush™ 并不针对每个数据编程命令运行。相反,一旦存储设备收到 FLUSH_CACHE 命令,GuaranteedFlush™ 就会在后台触发。因此,该技术保证了在 FLUSH_CACH 命令之前编程到器件中的所有数据的完整性。

图5是GuaranteedFlush™能够覆盖的用户数据范围的图示。

 

 

GuaranteedFlush™是多层算法的实现。有两种基本方法可用于保护用户数据免受突然断电的影响。

 

概念1:虚拟数据补偿

第一种方法是加快编程操作。不同类型的NAND Flash的编程顺序可能不同。无论编程顺序如何变化,单个WL上数据编程的持续时间决定了由于意外中断而导致数据丢失的风险。如果这个时间越长,发生中断的可能性就越高。为了解决这个问题,将虚拟数据插入到特定的WL中,以确保允许存储用户数据的WL完成整个编程操作(即,第一编程+第二编程+第三编程),如图6所示。

 

通过将虚拟数据插入到随后的WL中,可以完成用户数据编程操作。这样,即使任何意外事件中断即将进行的编程序列,也可以保证用户数据的完整性。

 

概念二:实时数据备份

第二种可用于保护 SSD 免受配对页面效应导致的数据损坏的方法是直接将数据备份到页面,而不会首先遇到配对页面问题。配置为SLC模式的页面能够满足此要求。这可能感觉像是一种保护用户数据安全的激进方法。然而,SLC模式的容量是TLC内存的三分之一。实时数据备份的实现成为另一个问题。

 

选择群联,保障数据安全

GuaranteedFlush™是群联的另一项专有技术,旨在确保意外断电期间数据的正确性。 GuaranteedFlush™增强了群联SSD产品的可靠性。

 

 

 

加速创新的基础™

zh_CN简体中文