ZNS奇偶校验交换到DRAM的制作方法

文档序号:30713486发布日期:2022-07-11 14:45阅读:167来源:国知局
ZNS奇偶校验交换到DRAM的制作方法
zns奇偶校验交换到dram
1.相关申请的交叉引用
2.本专利申请要求2020年5月27日提交的美国申请号16/884,569的优先权,该专利申请全文以引用方式并入本文。


背景技术:
技术领域
3.本公开的实施方案整体涉及存储设备,诸如固态驱动器(ssd)。
4.相关领域的描述
5.存储设备诸如ssd可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,ssd可表现出比硬盘驱动器(hdd)更低的延迟,尤其是对于随机读取和写入而言。通常,ssd的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。这些擦除块中的每个擦除块与逻辑块地址相关联,使得ssd和/或主机设备知道存储数据的位置。一个或多个擦除块可通过其相应的逻辑块地址分组在一起以形成多个分区。
6.通常,每个分区中的一个管芯专用于存储该分区的奇偶校验数据(诸如xor数据)。由于存储设备接收到用于将数据写入特定分区的命令,因此将与该命令相关联的该数据写入存储器设备,并且针对该数据同时生成奇偶校验数据以保护该数据。然后将该奇偶校验数据存储到存储设备内的随机存取存储器(ram)(诸如sram或dram)中。然而,由于ram昂贵,所以该存储设备通常包括非常有限量的ram。由于针对接收到的每个写入命令生成奇偶校验数据,因此该奇偶校验数据占用许多有价值的ram空间,这可减少可用于其他数据的ram空间的量,或可要求在存储设备中包括更大量的ram。因此,该存储设备的总成本可增加,或该存储设备的能力可受到限制。
7.因此,需要一种有效地操作存储设备的新方法。


技术实现要素:

8.本公开整体涉及操作存储设备的方法。该存储设备包括控制器,该控制器包括第一随机存取存储器(raml)、第二随机存取存储器(ram2)和被划分为多个分区的存储单元。接收将数据写入第一分区的第一命令,在ram1中生成第一xor数据,并且将第一命令的数据写入第一分区。当接收到将数据写入第二分区的第二命令时,将所生成的第一xor数据从ram1复制到ram2,并且将用于第二分区的第二xor数据从ram2复制到ram1。用第二命令更新第二xor数据,并且将第二命令的数据写入第二分区。将所更新的第二xor数据从ram1复制到ram2。
9.在一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括第一易失性存储器单元、耦接到非易失性存储单元和
第一易失性存储器单元的控制器和包括第二易失性存储器单元的控制器。该控制器被配置为:接收将数据写入一个或多个分区的命令,在第二易失性存储器单元中生成用于第一分区的第一奇偶校验数据,并且将用于第一分区的第一奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元。该控制器还被配置为:将用于第二分区的第二奇偶校验数据从第一易失性存储器单元复制到第二易失性存储器单元,在第二易失性存储器单元中更新用于第二分区的第二奇偶校验数据,并且在第二易失性存储器单元中更新用于第一分区的第一奇偶校验数据。
10.在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括第一易失性存储器单元、耦接到非易失性存储单元和第一易失性存储器单元的控制器和包括第二易失性存储器单元的控制器。该控制器被配置为:接收将数据写入非易失性存储单元中的第一分区的第一命令,生成用于与第一命令相关联的数据的第一奇偶校验数据,并且同时将与第一命令相关联的数据写入第一分区,其中第一奇偶校验数据存储在第二易失性存储器单元中。该控制器还被配置为:接收将数据写入非易失性存储单元中的第二分区的第二命令,将与第二分区相关联的第二奇偶校验数据从第一易失性存储器单元复制到第二易失性存储器单元,用与第二命令相关联的数据更新第二奇偶校验数据,并且同时将与第二命令相关联的数据写入第二分区。
11.在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括dram单元、耦接到非易失性存储单元和dram单元的控制器,以及包括sram单元的控制器。该控制器被配置为:接收将数据写入非易失性存储单元中的第一分区的第一命令,在sram单元中的第一位置用与第一命令相关联的数据更新第一奇偶校验数据,并且同时将与第一命令相关联的数据写入第一分区。该控制器还被配置为:接收将数据写入非易失性存储单元中的第二分区的第二命令,将所更新的第一奇偶校验数据从sram单元复制到dram单元,并且同时将与第二分区相关联的第二奇偶校验数据从dram单元复制到sram单元中的第二位置。该控制器还被配置为用与第二命令相关联的数据更新第二奇偶校验数据,并且同时将与第二命令相关联的数据写入第二分区。该控制器还被配置为:接收将数据写入非易失性存储单元中的第三分区的第三命令,从sram单元中的第一位置擦除所更新的第一奇偶校验数据,在sram单元的第一位置中生成第三奇偶校验数据,并且同时将与第三命令相关联的数据写入第一分区。
附图说明
12.因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
13.图1是示出根据一个实施方案的存储系统的示意框图。
14.图2是示出根据一个实施方案的操作存储设备以执行读取或写入命令的方法的框图。
15.图3a示出根据一个实施方案的在存储设备中使用的分区命名空间。
16.图3b示出根据一个实施方案的针对图3a的存储设备的分区命名空间的状态图。
17.图4a至图4f示出根据各种实施方案的在sram、dram或sram和dram中生成和/或更新奇偶校验数据或xor数据的示意性框图。
18.图5a至图5b示出根据各种实施方案的在存储设备中随时间更新飞行中数据的示意图。
19.为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
20.在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
21.本公开整体涉及操作存储设备的方法。该存储设备包括控制器,该控制器包括第一随机存取存储器(ram1)、第二随机存取存储器(ram2)和被划分为多个分区的存储单元。接收将数据写入第一分区的第一命令,在ram1中生成第一xor数据,并且将第一命令的数据写入第一分区。当接收到将数据写入第二分区的第二命令时,将所生成的第一xor数据从ram1复制到ram2,并且将用于第二分区的第二xor数据从ram2复制到ram1。用第二命令更新第二xor数据,并且将第二命令的数据写入第二分区。将所更新的第二xor数据从ram1复制到ram2。
22.图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可利用包括在存储设备106中的存储单元110,诸如非易失性存储器(nvm),来存储和检索数据。例如,存储单元110可以是任何类型的非易失性存储器,诸如mram、nand、nor或hdd。在以下描述中,出于简化和示例性目的,存储单元110被称为非易失性存储器(nvm)110。主机设备104包括主机dram 138。在一些示例中,存储系统100可以包括可作为存储阵列操作的多个存储设备,诸如存储设备106。例如,存储系统100可以包括多个存储设备106,其被配置为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(raid)冗余阵列。
23.存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备诸如存储设备106存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(nas)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频
游戏控制台、视频流设备等。
24.存储设备106包括控制器108、nvm 110、电源111、第一随机存取存储器(ram)或易失性存储器112,诸如动态随机存取存储器(dram)和接口114。控制器108可包括奇偶校验引擎或xor引擎124和第二ram或易失性存储器118,诸如静态随机存取存储器(sram)。在以下描述中,出于简化和示例性目的,第一ram或易失性存储器112被称为dram,并且第二ram或易失性存储器118被称为sram。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷电路板(pcb),存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因数包括但不限于2.5”数据存储设备(例如,hdd或ssd)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(pci)、pci扩展(pci-x)、pci express(pcie)(例如,pcie x1、x4、x8、x16、pcie mini卡、minipci等)。在一些示例中,存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
25.存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ata)(例如,串行ata(sata)和并行ata(pata))、光纤信道协议(fcp)、小型计算机系统接口(scsi)、串行附接scsi(sas)、pci、pcie、非易失性存储器标准(nvme)、opencapi、genz、高速缓存相干接口加速器(ccix)、计算快速链接(cxl)、开放信道ssd(ocssd)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
26.存储设备106包括nvm 110,其可以包括多个存储器设备。nvm 110可以被配置成存储和/或检索数据。例如,nvm 110的存储器设备可以从控制器108接收数据和指示存储器设备存储数据的消息。类似地,nvm 110的存储器设备可以从控制器108接收指示存储器设备检索数据的消息。在一些示例中,存储器设备中的每个存储器设备可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储器设备)。在一些示例中,存储器设备中的每个存储器设备可被配置为存储相对大量的数据(例如,128mb、256mb、412mb、1gb、2gb、3gb、8gb、16gb、22gb、54gb、128gb、256gb、412gb、1tb等)。
27.在一些示例中,nvm 110的每个存储器设备可包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(pcm)设备、电阻随机存取存储器(reram)设备、磁阻随机存取存储器(mram)设备、铁电随机存取存储器(f-ram)、全息存储器设备、硬盘驱动器(hdd)以及任何其他类型的非易失性存储器设备。
28.nvm 110可以包括多个闪存存储器设备。闪存存储器设备可以包括基于nand或nor的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在nand闪存存储器设备中,闪存存储器设备可以被分成多个块,这些块可以被分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个nand单元。nand单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应
单元可以电连接到相应位线。此外,nand闪存存储器设备可以是2d或3d设备,并且可以是单级单元(slc)、多级单元(mlc)、三级单元(tlc)、四级单元(qlc)或其他更高迭代次数的级单元。控制器108可在页面层级向nand闪存存储器设备写入数据以及从其读取数据,以及在块层级从nand闪存存储器设备擦除数据。
29.nvm 110的一部分可被格式化为逻辑块,使得nvm 110的容量被划分为多个分区。分区中的每个分区包括nvm 110的多个物理块或擦除块,并且该擦除块中的每个擦除块与多个逻辑块相关联。该逻辑块中的每个逻辑块与唯一lba或扇区相关联。分区中的每个分区可具有与nvm 110的一个或多个擦除块的容量对准的尺寸。当控制器108从诸如主机设备104接收命令时,控制器108可以从与nvm 110的多个擦除块相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。
30.存储设备106包括电源111,其可以向存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换言之,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
31.存储设备106还包括易失性存储器,该易失性存储器可由控制器108用来存储信息。易失性存储器可包括一个或多个易失性存储器设备。在一些示例中,控制器108可使用易失性存储器作为高速缓存。例如,控制器108可将高速缓存的信息存储在易失性存储器中,直到将高速缓存的信息写入nvm 110。易失性存储器112的示例包括但不限于ram、dram 112、sram118和同步动态ram(sdram(例如,ddr1、ddr2、ddr3、ddr3l、lpddr3、ddr4、lpddr4、ddr5、lpddr5等))。如图1所示,易失性存储器可消耗从电源111接收的电力。
32.各种类型的易失性存储器可用于不同的访问属性。例如,dram 112可被布置用于更长的突发访问,以改善相同访问总线的带宽(bw)。或者,dram 112可用于较小的访问,使得随机的小访问可具有更好的延迟。控制器108包括附加的可选sram和/或嵌入式mram 126。嵌入式mram 126是可在另一实施方案中使用的另一替代存储器。类似地,可针对不同的设计目的优化对mram 126的访问,但是ssd控制器108中嵌入式mram 126的数量可能对成本敏感。因此,选择多少数据和哪些数据进入高级非易失性存储器和高级易失性存储器将受制于系统权衡。
33.存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可经由切换模式(tm)总线128管理从nvm 110读取数据和/或将数据写入该nvm。控制器108可包括xor引擎124。数据可存储在dram 112、sram 118或dram 112和sram 118两者中。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该nvm 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该nvm 110。
34.控制器108可包括xor引擎124,该xor引擎具有生成xor奇偶校验信息的逻辑和/或特征。xor引擎124是一种奇偶校验引擎,并且出于示例性目的被称为xor引擎。然而,xor引擎124可包括奇偶校验引擎包括的其他实施方案。异或(xor)奇偶校验信息可用于改善存储设备106的可靠性,诸如使得其能够对往返于nvm写入失败或读取失败的数据进行数据恢复,或者使得其能够进行数据恢复以防电力丢失。可通过使用基于存储到存储设备106的数据生成或计算的xor奇偶校验信息来提供可靠性。数据可经过xor引擎124写入到nvm 110。xor引擎124可生成要写入到sram 118的奇偶校验流。sram 118和dram 112可各自包含可将数据写入的多个区域。数据可从sram 118中的sram区域122a-122n转移到dram 112中的dram区域116a-116n,反之亦然。
35.sram设备118和dram设备112各自单独包括一个或多个管芯。该一个或多个管芯中的每个管芯都包括一个或多个存储组,存储组由一个或多个存储库构成。该存储库由行和页构成。控制器108中的sram 118可在逻辑上或物理上分成不同的sram区或区域122a-122n,以供控制器108使用。类似地,dram 112可在逻辑上或物理上分成不同的dram区或区域116a-116n,以供控制器108使用。控制器108内的mram可在逻辑上或物理上分成不同的mram区或区域(未示出)。mram的外部附件通常具有供应商特定的结构和访问权限,此处不做介绍。
36.图2是示出根据一个实施方案的操作存储设备以执行读取或写入命令的方法200的框图。方法200可与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。方法200可以与设备一起使用,该设备具有主机设备和包括命令处理器的存储设备。
37.方法200开始于操作250,其中主机设备将命令作为条目写入提交队列中。在操作250处,主机设备可将一个或多个命令写入提交队列中。命令可以是读取命令或写入命令。主机设备可以包括一个或多个提交队列。主机设备可以任何顺序(即,提交顺序)将一个或多个命令写入提交队列,而不管一个或多个命令的顺序写入顺序(即,顺序处理顺序)如何。
38.在操作252中,主机设备写入一个或多个更新的提交队列尾指针并且敲响门铃或发送中断信号以向存储设备通知或发信号告知准备好执行的新命令。如果存在多于一个提交队列,则主机可以写入更新的提交队列尾指针并为提交队列中的每个提交队列发送门铃或中断信号。在操作254中,响应于接收到门铃或中断信号,存储设备的控制器从一个或多个提交队列获取命令,并且该控制器接收或dma读取该命令。
39.在操作256中,该控制器处理命令并将与该命令相关联的数据写入或转移到主机设备存储器。该控制器一次可以处理多于一个命令。该控制器可以按提交顺序或按顺序处理一个或多个命令。处理写入命令可包括:识别用于将与该命令相关联的数据写入的分区,将该数据写入该分区的一个或多个逻辑块地址(lba),以及推进该分区的写入指针以识别该分区内的下一个可用lba。
40.在操作258中,一旦该命令已被充分处理,该控制器就将对应于已执行命令的完成条目写入主机设备的完成队列,并且移动或更新cq头指针以指向新写入的完成条目。
41.在操作260中,该控制器生成中断信号或门铃并将其发送到主机设备。中断信号指示该命令已被执行并且与该命令相关联的数据在该存储器设备中可用。中断信号进一步通知主机设备完成队列已准备好被读取或处理。
42.在操作262中,主机设备处理完成条目。在操作264中,主机设备将更新的cq头指针写入存储设备并敲响门铃或向存储设备发送中断信号以释放完成条目。
43.图3a示出根据一个实施方案的在存储设备300中使用的分区命名空间(zns)302视图。存储设备300可将zns 302视图呈现给主机设备。图3b示出根据一个实施方案的存储设备300的zns 302的状态图350。存储设备300可以是图1的存储系统100的存储设备106。存储设备300可具有一个或多个zns 302,并且每个zns 302可具有不同的大小。除该一个或多个分区命名空间302之外,存储设备300可进一步包括一个或多个常规命名空间。此外,zns 302可以是用于sas的分区块命令(zbc)和/或用于sata的分区设备ata命令集(zac)。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
44.在存储设备300中,zns 302是可被格式化成逻辑块使得容量被划分为多个分区306a-306n(统称为分区306)的nvm的数量。nvm可以是图1的存储单元或nvm 110。分区306中的每个分区包括存储器单元的多个物理块或擦除块(未示出)或nvm 304,并且这些擦除块中的每个擦除块与多个逻辑块(未示出)相关联。分区306中的每个分区可具有与nvm或nand器件的一个或多个擦除块的容量对准的尺寸。当控制器308从诸如主机设备(未示出)或主机设备的提交队列接收命令时,控制器308可从与zns 302的多个擦除块(eb)相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一lba或扇区相关联。
45.在一个实施方案中,nvm 304为nand器件。该nand器件包括一个或多个管芯。该一个或多个管芯中的每个管芯包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个擦除块。该一个或多个擦除块中的每个擦除块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,mlc nand管芯可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16kb)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以频繁地访问用户数据粒度lba大小为512字节的nand。因此,如在下文描述中所提及的,nand位置等于512字节的粒度。因此,lba大小为512字节并且mlc nand的两个页面的页面大小为16kib,这导致每个字线32个lba。然而,nand位置大小不旨在进行限制,并且仅用作示例。
46.当将数据写入擦除块时,在分区306内对应地更新一个或多个逻辑块,以跟踪数据在nvm 304内的位置。数据可一次写入一个分区306,直到分区306变满,或写入多个分区306,使得多个分区306可部分变满。类似地,当将数据写入特定分区306时,数据可按nand位置的顺序或逐字线地一次一个块地写入多个擦除块,直到移动到相邻块(即,写入第一擦除块直到在移动到第二擦除块之前第一擦除块变满),或者可按nand位置的顺序或逐字线地一次多个块地写入多个擦除块,以平行的方式部分填充每个块(即,在写入每个擦除块的第二nand位置之前写入每个擦除块的第一nand位置)。每个nand位置的这种顺序编程是许多nand eb的典型非限制性要求。
47.当控制器308选择将存储每个分区的数据的擦除块时,控制器308将能够在分区开放时间选择擦除块,或者其可在达到填充该特定擦除块的第一nand位置或字线的需要时选择擦除块。当利用上述在开始下一个擦除块之前完全填充一个擦除块的方法时,这可能更加有差别。控制器308可使用时间差来在即时基础上选择更理想的擦除块。将哪个擦除块分
配和指定给每个分区及其连续lba的决定能够在控制器308内针对零个或多个并行分区一直发生。
48.分区306中的每个分区与分区起始逻辑块地址(zslba)或分区起始扇区相关联。该zslba是分区306中的第一可用lba。例如,第一分区306a与zaslba相关联,第二分区306b与zbslba相关联,第三分区306c与zcslba相关联,第四分区306d与zdslba相关联,并且第n分区306n(即,最后一个分区)与znslba相关联。每个分区306由其zslba标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序将数据写入nvm 110)。
49.当将数据写入分区306时,将写入指针310推进或更新为指向或指示分区306中用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针310指示对分区306的后续写入将在何处开始。后续写入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针310指示为下一个起始点的位置处附加到分区306。可将分区306内的lba的排序列表存储用于写入排序。每个分区306可具有其自身的写入指针310。因此,当接收到写入命令时,分区由其zslba标识,并且写入指针310确定在所识别的分区内数据的写入开始的位置。
50.图3b示出针对图3a的zns 302的状态图350。在状态图350中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不合数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于zslba(即,wp=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(zm)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可向主机提供活动状态下的推荐时间的描述。控制器308包括zm。分区元数据可存储在zm和/或控制器308中。
51.术语“写入”包括当用户数据尚未填充所有可用nand位置时,在擦除块中的0个或更多个nand位置和/或擦除块中的部分填充nand位置上编程用户数据。术语“写入”可进一步包括由于以下原因而将分区移动至满的:内部驱动器处理需要(因为误比特在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备300由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭或填充分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
52.活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器308将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
53.在开放分区和关闭分区中,写入指针指向分区中位于zslba和分区的最后lba的末端之间的某个位置(即,wp>0)。活动分区可根据由zm进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,zm可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用扇区或lba(即,
wp=分区容量(zcap))。在满的分区中,写入指针指向该分区的可写入容量的末端。仍可执行满的分区中存储的数据的读取命令。
54.分区可具有任何总的容量,诸如256mib或512mib。然而,每个分区的一小部分可能无法访问以将数据写入,但仍可被读取,诸如每个分区的存储xor数据的部分和的一个或多个被排除的擦除块。例如,如果分区306的总容量是512mib,那么zcap可以是470mib,这是可用于将数据写入的容量,而42mib不可用于写入数据。分区的可写入容量(zcap)等于或小于总分区存储容量。存储设备300可在分区重置时确定每个分区的zcap。例如,控制器308或zm可确定每个分区的zcap。当分区被重置时,存储设备300可确定该分区的zcap。
55.zm可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。在重置满的分区时,尽管该分区可能标记为可供写入的空分区,但该分区的数据可能不被立即清除。但是,在切换到开放和活动分区之前,必须擦除重置的分区。可在zm重置和zm开放之间的任何时间擦除分区。在重置分区时,存储设备300可确定重置分区的新zcap以及更新分区元数据中的可写入zcap属性。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
56.由于重置分区会清除存储在该分区中的所有数据或调度对存储在该分区中的所有数据的擦除,因此消除了对各个擦除块进行垃圾回收的需要,从而改善了存储设备300的整体垃圾回收过程。存储设备300可标记一个或多个擦除块以用于擦除。当将要形成新分区并且存储设备300预计zm开放时,则可擦除被标记用于擦除的一个或多个擦除块。存储设备300可进一步在擦除该擦除块时决定和创建该分区的物理支持。因此,一旦新分区被开放并且擦除块被选择以形成分区,该擦除块将被擦除。此外,每次重置分区时,可选择分区306的lba和写入指针310的新顺序,使得分区306能够容忍不按顺序接收命令。可任选地关闭写入指针310,使得可将命令写入为该命令指示的任何起始lba。
57.重新参考图3a,当主机发送写入命令以向分区306写入数据时,控制器308拉入该写入命令并将该写入命令标识成对新打开分区306的写入。控制器308选择一组eb以存储与新打开分区306的写入命令相关联的数据,并且新打开分区306切换到活动分区306。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器308被配置为从由主机设备填充的提交队列中dma读取新命令。
58.在刚切换到活动分区306的空分区306中,因为写入指针310将与zslba相关联的逻辑块指示为第一可用逻辑块,所以将数据指定给分区306和分区306的始于zslba的一组相关联顺序lba。可将该数据写入一个或多个擦除块或针对分区306的物理位置而已分配的nand位置。在将与写入命令相关联的数据写入分区306之后,写入指针310被更新为指向可用于主机写入的下一个lba(即,第一写入的完成点)。来自该主机写入命令的写入数据被顺序地编程到擦除块中被选择用于分区的物理支持的下一个可用nand位置中。
59.在一些实施方案中,nand位置可等于字线。在此类实施方案中,控制器可任选地在对由多个写入命令构成的整个字线进行编程之前在另一个存储器位置诸如dram或sram中聚集若干写入命令。长于字线的写入命令将能够编程完整的字线并用一些数据填充完整的字线,并且超出字线的多余数据将用于填充下一个字线。出于本说明书的目的,写入数据大小等于512字节的nand位置;然而,这并非旨在进行限制。
60.例如,控制器308可接收对第三分区306c的第一写入命令,或第一分区附加命令。
主机按顺序识别分区306的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区306c中的如写入指针310所指示的第一或下一个可用lba,并且将写入指针310推进或更新为指向可用于主机写入的下一个可用lba(即,wp>0)。如果控制器308接收到对第三分区306c的第二写入命令,或第二分区附加命令,则将与第二写入命令相关联的数据写入第三分区306c中的由写入指针310识别的下一个可用lba。一旦将与第二命令相关联的数据写入第三分区306c,则写入指针310就再次推进或更新为指向可用于主机写入的下一个可用lba。重置第三分区306c将写入指针310移动回到zcslba(即,wp=0),并且第三分区306c切换到空分区。
61.图4a至图4f示出根据各种实施方案的在第二ram或易失性存储器、第一ram或易失性存储器、或第一ram或易失性存储器和第二ram或易失性存储器两者中生成和/或更新奇偶校验数据或xor数据的示意性框图。图1的系统100将根据图4a至图4f使用。在以下描述中,出于简化和示例性目的,将非易失性存储单元110称为nvm,将第一ram或易失性存储器112(即,第一ram1)称为dram,并且将第二ram或易失性存储器118(即,第二ram2)称为sram。
62.通篇使用短语“xor或奇偶校验数据”作为飞行中数据的示例,并非旨在进行限制,因为飞行中其他形式的数据可以是相关的。换句话说,以下示例中讨论的xor或奇偶校验数据是飞行中数据,并且可包括未写入的主机数据。未写入的用户数据或主机数据可包括较小长度或较小数量的数据(例如,小于一个或多个字线的大小),这些数据被存储在停放位置或缓冲区中,直到数据的聚合大小达到最小大小(例如,一个或多个字线的大小),在这种情况下,将未写入的用户数据写入nvm 110。
63.视为飞行中数据的xor数据或奇偶校验数据被认为是奇偶校验缓冲区,并且可保护由于数据损坏、错误位传输、电力丢失和数据丢失的其他原因导致的数据丢失。例如,xor数据或奇偶校验数据可在sram中生成或更新,并且在复制到nvm 402之前暂时存储在sram和/或dram中。此外,例如,在电力故障的情况下,位于存储设备内的电容器(未示出),诸如图1的存储设备106,可存储足够量的能量来将数据从dram(诸如图1的dram 112)编程到nvm 402以帮助防止数据丢失。
64.在图4a至图4f中,奇偶校验数据或xor数据由“wxx”表示,其中“x”表示相关联命令的写入id。xor数据可存储在sram区域122a-122n或dram区域116a-116n中,或sram区域122a-122n和dram区域116a-116n两者中。sram区域122a-122n和dram区域116a-116n可以是任何合适的大小,诸如512字节。在以下描述中,出于简化目的,可将非易失性存储单元110称为nvm。
65.存储设备106从主机设备104接收一个或多个命令,并且该一个或多个命令在被写入nvm 110之前经过控制器108和控制器108内的xor引擎124。当与该一个或多个命令相关联的写入数据经过xor引擎124时,xor引擎124连续地生成或更新与这些命令中的每个命令的写入数据相关联的xor数据或奇偶校验数据,并且将与这些命令中的每个命令相关联的写入数据写入nvm 110中的分区。
66.xor数据或奇偶校验数据通常将从xor引擎124按顺序写入sram118。sram区域或dram区域可以是任何合适的大小,诸如512字节。xor引擎124可直接写入dram 112,但是对dram 112的写入通常比对sram 118的写入慢,并且直接写入dram 112可导致性能瓶颈、减慢整个写入过程。当接收到新命令时,控制器108或xor引擎124可擦除包含最旧数据的sram
区域122a-122n中的数据。可将sram 118上的奇偶校验数据复制到或重新写入dram 112。数据可按顺序或随机地写入dram区域116a-116n。换句话说,如果与第一分区相关联的xor数据或奇偶校验数据存储在第一dram区域116a中,可将用于第一分区的新xor数据或奇偶校验数据在第一dram区域116a中重新写入,或者可将新xor数据或奇偶校验数据写入新dram区域,诸如第五dram区域116e。
67.在图4a中,当接收到将数据写入第一分区的第一命令时,将与第一分区(诸如图3a的第一分区306a)相关联的第一奇偶校验数据w00或xor数据写入第一sram区域122a。同时,将与第一命令相关联的用户数据写入第一分区。在将第一奇偶校验数据w00处理并存储在第一sram区域122a中之后,将第一奇偶校验数据w00复制到或重新写入任何可用dram区域中的dram 112,诸如第一dram区域116a。在将第一奇偶校验数据w00写入第一dram区域116a时,当接收到将数据写入第二分区的第二命令时,在第二sram区域112b中生成与第二分区(诸如图3a的第二分区306b)相关联的第二奇偶校验数据w01或xor数据。同时,将与第二命令相关联的用户数据写入第二分区。在成功生成xor数据或奇偶校验数据之后,可将数据复制到或重新写入dram 112。
68.在图4b中,与第二分区相关联的第二奇偶校验数据w01或xor数据存储在第二sram区域122b中。然后将第二奇偶校验数据w01或xor数据复制到可用dram区域116a-116n,诸如第二dram区域116b。在第三sram区域122c中生成与第三分区相关联的第三奇偶校验数据w02或xor数据。在第二奇偶校验数据w01已成功地写入第二dram区域116b之后,将第三奇偶校验数据w02复制到第三dram区域116c。先前的第一xor数据w00在被复制到第一dram区域116a之后被存储在第一sram区域122a中,并且由于接收到新的写入命令而已被控制器108或xor引擎124擦除。在已擦除的第一sram区域122a中生成与写入第三分区的第三命令相关联的新的奇偶校验数据或xor数据w03的位置。
69.在图4c中,第一sram区域122a中的第三奇偶校验数据w03在可用位置(诸如第四dram区域116d)中重新写入dram 112。如果用于分区的奇偶校验数据存在于dram 112中的dram区域116a-166n中,并且接收到用于该相同分区的命令,则将用于该分区的现有奇偶校验数据转移或复制到sram 118。因此,将用新的奇偶校验数据更新用于该分区的现有奇偶校验数据,而不是重新生成用于该分区的全新奇偶校验数据。
70.在图4c中,接收将数据写入第一分区的命令,并且dram 112中的第一dram区域116a中相关联的第一奇偶校验数据w00从dram 112被拉取至sram 118中的第二sram区域122b以用新命令更新。在图4d中,将第二sram区域122b中的第一奇偶校验数据w00更新或重新写入dram112作为更新的第一奇偶校验数据w00

。位于第二sram区域122b中的所更新的第一奇偶校验数据或xor数据w00

包括对应于第一分区的新写入命令的奇偶校验数据或xor数据,以及已针对第一分区生成的先前奇偶校验数据或xor数据。
71.如果该数据尚未被擦除,则可更新sram 118中的现有奇偶校验数据。可将用于分区的新的奇偶校验数据或xor数据在当前存储该分区奇偶校验数据的sram区域122a-122n中更新,而不必从dram 112拉取奇偶校验数据。在图4e中,将所更新的第一奇偶校验数据w00

写入或复制到可用dram区域(诸如第五dram区域116e)中的dram 112。可将所更新的第一奇偶校验数据w00

写入新dram区域,诸如第五dram区域116e,如图4e所示,或者可将所更新的第一奇偶校验数据w00

写入或复制到当前存储过时的第一奇偶校验数据的dram区域,
诸如存储过时的第一奇偶校验数据w00的第一dram区域116a。此外,将与第四分区相关联的第三sram区域122c中的第四奇偶校验数据或xor数据w04写入第六sram区域116f。由于第三奇偶校验数据w03尚未从第一sram区域122a擦除,因此当接收到将数据写入到第三分区的命令时,将第三奇偶校验数据w03更新为w03


72.如果该数据尚未从sram 118中擦除,则可将sram 118中的现有奇偶校验数据多次更新。在图4f中,当接收到将数据写入第一分区的命令时,将第一更新的w00

在sram 118的第二sram区域122b中再次更新为重新更新的第一奇偶校验数据w00”。由于所更新的第一奇偶校验数据w00

尚未从sram 118擦除,因此可将所更新的第一奇偶校验数据w00

在其当前sram区域122b中重新更新。此外,从sram 118到dram 112的写入可替换存储在dram区域116a-116n中可能过时的现有相关奇偶校验数据。例如,sram 118的第一sram区域122a中第三更新的奇偶校验数据w03

可替换dram 112的第四dram区域116d中旧的或过时的第三奇偶校验数据w03。一旦分区填充有用户数据,就可将存储在sram或dram中的对应奇偶校验数据或xor数据写入相关联分区中的指定xor管芯。
73.图5a至图5b分别示出根据各种实施方案的在存储设备中随时间推移更新飞行中数据(诸如奇偶校验数据或xor数据)的示意图500、550。图5a至图5b的存储设备可以是图1的存储设备106。与在上述示例中一样,奇偶校验数据将用作飞行中数据的示例。下面使用的时间是代表性的,并且可在几秒或几分钟内发生。针对第一分区的写入命令被示出为水平条纹块,并且针对第二分区的写入命令被示出为垂直条纹块。例如,第一写入命令502针对第一分区,并且第二写入命令510针对第二分区。
74.在图5a的示意图500中,控制器包括三个用于存储主机写入命令的可用控制器ram或缓冲区域504a、504b、504c和一个用于存储奇偶校验数据的可用奇偶校验ram或缓冲区域506。控制器缓冲区域504a、504b、504c和奇偶校验缓冲区域506可以是图1的122a-122n的任何sram区域。控制器缓冲区域504a、504b、504c存储尚未写入nvm的数据。该存储设备还包括两个用于奇偶校验数据存储的可用ram区域508a、508b,其中每个区域对应于分区,使得第一ram区域508a对应于第一分区,并且第二ram区域508b对应于第二分区。上文为每个部件列出的区域数量并非旨在进行限制,而是提供可能的实施方案的示例。
75.在时间1,该控制器接收将数据写入第一分区的第一主机写入命令502。第一主机写入命令502的数据暂时存储在第一控制器区域504a中。在将第一主机写入命令502的数据写入nvm(诸如图1的nvm 110)之前或期间,xor引擎(诸如图1的xor引擎124)在奇偶校验缓冲区域506(诸如图1的sram区域122a)中生成用于第一分区的第一主机写入命令502的第一奇偶校验数据。
76.在时间2,该控制器接收将数据写入第二分区的第二主机写入命令510。第二主机写入命令510的数据暂时存储在第二控制器区域50ba中。在将第二主机写入命令510的数据写入nvm之前或期间,xor引擎124在奇偶校验缓冲区域506中生成用于第二分区的第二主机写入命令510的第二奇偶校验数据。将先前在奇偶校验缓冲区域506中的第一奇偶校验数据从控制器缓冲区复制到ram区域508a。ram区域508a可以是图1的第一dram区域116a。
77.在时间3,该控制器接收将数据写入第一分区的第三主机写入命令518。第三主机写入命令505的数据暂时存储在第三控制器区域504c中。在将第三主机写入命令518的数据写入nvm之前或期间,xor引擎124在奇偶校验缓冲区域506中生成用于第一分区的第三主机
写入命令518的第三奇偶校验数据。在时间2,将写入ram区域508a的第一奇偶校验数据复制到奇偶校验缓冲区域506。奇偶校验缓冲区域506包括用于第一分区的第一主机写入命令502的第一奇偶校验数据和用于第一分区的第三主机写入命令518的第三奇偶校验数据。在时间3,将先前在奇偶校验缓冲区域506中用于第二分区的第二主机写入命令510的第二奇偶校验数据从控制器缓冲区复制到ram区域508b。
78.在图5b的示意图550中,控制器包括三个用于主机写入命令的可用控制器ram或缓冲区域534a、534b、534c和一个用于奇偶校验数据的可用奇偶校验ram或缓冲区域536。控制器缓冲区域534a、534b、534c和奇偶校验缓冲区域536可以是图1的122a-122n的任何sram区域。控制器缓冲区域534a、534b、534c存储尚未写入nvm的数据。该存储设备还包括两个用于奇偶校验数据存储的可用ram区域538a、538b,其中每个区域对应于分区,使得第一ram区域538a对应于第一分区,并且第二ram区域538b对应于第二分区。上文为每个部件列出的区域数量并非旨在进行限制,而是提供可能的实施方案的示例。
79.在时间1,该控制器接收将数据写入第一分区的第一主机写入命令532。第一主机写入命令532的数据暂时存储在第一控制器缓冲区域534a中。在将用于第一分区的第一主机写入命令532的数据写入nvm之前或期间,xor引擎124在奇偶校验缓冲区域536中生成用于第一分区的第一主机写入命令532的第一奇偶校验数据。
80.在时间2,该控制器接收将数据写入第二分区的第二主机写入命令540。第二主机写入命令532的数据暂时存储在第二控制器缓冲区域534b中。因为第三控制器缓冲区域534c没有存储或填充数据,所以xor引擎124在时间2还没有生成用于第二主机写入命令540的第二奇偶校验数据,这是因为接收到的下一个主机写入命令可能要将数据写入第一分区。因此,通过保留奇偶校验缓冲区域536中的第一奇偶校验数据,如果接收到的下一个主机写入命令要将数据写入第一分区,则存储设备将能够在奇偶校验缓冲区域536中生成用于第一分区的奇偶校验数据,而不会从ram区域538a中拉取奇偶校验数据。
81.在时间3,该控制器接收将数据写入第一分区的第三主机写入命令548。第三主机写入命令532的数据暂时存储在第一控制器缓冲区域534c中。在将用于第一分区的第三主机写入命令548的数据写入nvm之前或期间,xor引擎124在奇偶校验缓冲区域536中生成用于第一分区的第三主机写入命令532的第三奇偶校验数据。奇偶校验缓冲区域536包括用于第一分区的第一主机写入命令532的第一奇偶校验数据和用于第一分区的第三主机写入命令548的第三奇偶校验数据两者。
82.在时间4,该控制器接收将数据写入第二分区的第四主机写入命令556。因为控制器缓冲区域534a、534b、534c当前正在存储数据,所以将奇偶校验缓冲区域536中用于第一分区的奇偶校验数据(第一奇偶校验数据和第三奇偶校验数据)复制到ram区域538a。在整个时间1至时间3中,第一控制器缓冲区域534a中的先前的写入命令(诸如第一主机写入命令532)已成功地写入nvm,并且第一控制器缓冲区域534a中的数据可被新的主机写入命令(诸如第四主机写入命令556)的数据覆盖。将第四主机写入命令556的数据写入第一控制器缓冲区域534a。在将用于第二分区的第四主机写入命令556的数据写入nvm之前或期间,xor引擎124在奇偶校验缓冲区域536中生成用于第二分区的第二主机写入数据540的第二奇偶校验数据和用于第二分区的第四主机写入命令556的第四奇偶校验数据两者。
83.作为比较,图5b的示意图550将数据向奇偶校验缓冲区域转移或复制和从奇偶校
验缓冲区域转移或复制到ram区域的次数比图5a的示意图500的次数更少。由于将数据向奇偶校验缓冲区域转移和从奇偶校验缓冲区域转移到ram区域需要时间,因此图5b的示意图550可以比图5a的示意图500更快且更有效的方式进行操作。
84.为了防止驱动器上的数据丢失,利用xor引擎创建奇偶校验数据。将奇偶校验数据从xor引擎写入sram。奇偶校验数据可被写入dram,从dram拉入sram以待更新,或者在sram内通过来自xor引擎的与相同奇偶校验数据有关的新写入命令来更新。同样地,更新奇偶校验信息的效率可提高,从而允许数据传输的更高速率。由于sram速度快但更昂贵,并且dram速度较慢但更便宜,因此dram和sram的使用都得到了更好的优化,从而减少了任何dram存取处罚。此外,由于针对分区已生成的奇偶校验数据可从dram拉入sram以待更新,因此不需要每次生成全新的奇偶校验数据或xor数据,从而减少备份或保护用户数据所花费的时间量。
85.在一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括第一易失性存储器单元、耦接到非易失性存储单元和第一易失性存储器单元的控制器和包括第二易失性存储器单元的控制器。该控制器被配置为:接收将数据写入一个或多个分区的命令,在第二易失性存储器单元中生成用于第一分区的第一奇偶校验数据,并且将用于第一分区的第一奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元。该控制器还被配置为:将用于第二分区的第二奇偶校验数据从第一易失性存储器单元复制到第二易失性存储器单元,在第二易失性存储器单元中更新用于第二分区的第二奇偶校验数据,并且在第二易失性存储器单元中更新用于第一分区的第一奇偶校验数据。
86.该控制器被配置为从第二易失性存储器擦除第一奇偶校验数据和第二奇偶校验数据。当第二易失性存储器单元的控制器缓冲区被填满容量时,将用于第一分区的第一奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元,该控制器缓冲区暂时存储要被写入非易失性存储单元的数据。该控制器被进一步配置为将与第一命令相关联的数据写入第一分区,同时生成用于第一分区的第一奇偶校验数据。该控制器被进一步配置为将与第二命令相关联的数据写入第二分区,同时更新用于第二分区的第二奇偶校验数据。该非易失性存储单元是nand存储器单元。该控制器包括xor引擎。该xor引擎被配置为:在第二易失性存储器单元中生成用于第一分区的第一奇偶校验数据,在第二易失性存储器单元中更新用于第二分区的第二奇偶校验数据,并且在第二易失性存储器单元中更新用于第一分区的第一奇偶校验数据。
87.在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括第一易失性存储器单元、耦接到非易失性存储单元和第一易失性存储器单元的控制器和包括第二易失性存储器单元的控制器。该控制器被配置为:接收将数据写入非易失性存储单元中的第一分区的第一命令,生成用于与第一命令相关联的数据的第一奇偶校验数据,并且同时将与第一命令相关联的数据写入第一分区,其中第一奇偶校验数据存储在第二易失性存储器单元中。该控制器还被配置为:接收将数据写入非易失性存储单元中的第二分区的第二命令,将与第二分区相关联的第二奇偶校验
数据从第一易失性存储器单元复制到第二易失性存储器单元,用与第二命令相关联的数据更新第二奇偶校验数据,并且同时将与第二命令相关联的数据写入第二分区。
88.该控制器被进一步配置为一旦第二易失性存储器单元的控制器缓冲区被填满容量,就将第一奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元,该控制器缓冲区暂时存储要被写入非易失性存储单元的数据。该控制器进一步包括xor引擎。该xor引擎被配置为生成第一奇偶校验数据并且更新第二奇偶校验数据。第一易失性存储器单元是dram单元,并且第二易失性存储器单元是sram单元。第一非易失性单元是nand存储器单元。该控制器被进一步配置为一旦生成第二奇偶校验数据,就将第二奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元。该控制器被进一步配置为:接收将数据写入非易失性存储单元中的第一分区的第三命令,在第二易失性存储器单元中用与第二命令相关联的数据更新第一奇偶校验数据,并且同时将与第二命令相关联的数据写入第二分区。该控制器还被配置为一旦更新第一奇偶校验数据,就将第一奇偶校验数据从第二易失性存储器单元复制到第一易失性存储器单元。
89.在另一个实施方案中,存储设备包括非易失性存储单元。该非易失性存储单元的容量被划分为多个分区。该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个擦除块。该存储设备进一步包括dram单元、耦接到非易失性存储单元和dram单元的控制器,以及包括sram单元的控制器。该控制器被配置为:接收将数据写入非易失性存储单元中的第一分区的第一命令,在sram单元中的第一位置用与第一命令相关联的数据更新第一奇偶校验数据,并且同时将与第一命令相关联的数据写入第一分区。该控制器还被配置为:接收将数据写入非易失性存储单元中的第二分区的第二命令,将所更新的第一奇偶校验数据从sram单元复制到dram单元,并且同时将与第二分区相关联的第二奇偶校验数据从dram单元复制到sram单元中的第二位置。该控制器还被配置为用与第二命令相关联的数据更新第二奇偶校验数据,并且同时将与第二命令相关联的数据写入第二分区。该控制器还被配置为:接收将数据写入非易失性存储单元中的第三分区的第三命令,从sram单元中的第一位置擦除所更新的第一奇偶校验数据,在sram单元的第一位置中生成第三奇偶校验数据,并且同时将与第三命令相关联的数据写入第一分区。
90.该控制器被配置为当擦除所更新的第一奇偶校验数据并且生成第三奇偶校验数据时,将所更新的第二奇偶校验数据从sram单元复制到dram单元。该控制器包括奇偶校验引擎,该奇偶校验引擎被配置为生成并更新用于该控制器的奇偶校验数据。当sram单元的控制器缓冲区被填满容量时,将所更新的第一奇偶校验数据从sram单元复制到dram单元,该控制器缓冲区暂时存储要被写入非易失性存储单元的数据。该控制器被进一步配置为在生成第三奇偶校验数据之后,将第三奇偶校验数据从sram单元复制到dram单元。该控制器被进一步配置为:接收将数据写入非易失性存储单元中的第一分区的第四命令,将第一奇偶校验数据从dram单元复制到sram单元,并且同时将与第三分区相关联的第三奇偶校验数据从sram单元复制到dram单元中的第二位置。该控制器还将用与第四命令相关联的数据更新第一奇偶校验数据,并且同时将与第四命令相关联的数据写入第一分区。
91.虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1