一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有数据的最小写入大小的存储设备的制作方法

2022-07-10 18:57:43 来源:中国专利 TAG:

具有数据的最小写入大小的存储设备
1.相关申请的交叉引用
2.本技术要求2020年4月24日提交的美国申请号16/858,332的优先权,该申请全文以引用方式并入本文。


背景技术:
技术领域
3.本公开的实施方案整体涉及存储设备,诸如固态驱动器(ssd)。
4.相关领域的描述
5.存储设备诸如ssd可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,ssd可表现出比硬盘驱动器(hdd)更低的延迟,尤其是对于随机读取和写入而言。通常,ssd的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。擦除块中的每个擦除块与逻辑块地址相关联,使得ssd和/或主机设备知道数据的存储位置。一个或多个擦除块可通过其相应的逻辑块地址分组在一起以形成多个分区。
6.主机设备可向存储设备发送任何大小的写入命令。然后,当接收到命令时,存储设备可以将命令写入存储器设备,而不管命令的大小如何。然而,将若干小命令写入存储器设备可能需要大量时间,从而减缓编程时间以及降低存储设备的总体编程效率。
7.因此,需要一种操作存储设备的新方法,该方法优化控制器资源效率以使存储设备的吞吐量最大化。


技术实现要素:

8.本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被划分为多个分区的存储单元。该存储单元包括多个管芯,其中每个管芯包括两个平面。选择来自管芯的每个平面的一个擦除块以用于分区形成。每个擦除块包括多条字线。分区包括专用于存储奇偶校验数据的一个或多个管芯平面和专用于存储用户数据的多个管芯。该分区还包括专用于控制器元数据的空间。该存储设备限制主机设备来以最小写入大小发送写入命令以增加编程效率。该最小写入大小等于来自该分区中专用于存储用户数据的每个管芯的每个平面的一个擦除块的一条字线减去专用于元数据的该空间。
9.在一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯。该多个管芯中的每个管芯包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:控制器,该控制器耦接到该非易失性存储单元。该控制器被配置为:确定用于写入从主机设备接收的数据的命令的最小写入大小,其中该最小写入大小基于分区中专用于存储用户数据的擦除块的数量、每个擦除块的字线的每单元页数、每个擦除块中的字线的数量以及专用于存储该存储设备的元数据的空间量来确定。该控制器被进一步配置为:限
制该主机设备来以该最小写入大小发送用于写入数据的命令。
10.在另一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个平面,这些平面中的每个平面包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:控制器,该控制器耦接到该非易失性存储单元。该控制器被配置为:计算用于写入从主机设备接收的数据的命令的最小写入大小,其中该最小写入大小被计算为写入分区内专用于存储用户数据的每个管芯的每个平面的一个擦除块的完整字线大小。该控制器被进一步配置为:限制该主机设备来以该最小写入大小发送用于写入数据的命令。
11.在另一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个平面,这些平面中的每个平面包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:用于接收以最小写入大小写入从主机设备接收的数据的命令的装置,其中该最小写入大小通过以下来设定:将分区中专用于存储用户数据的擦除块的数量乘以字线的每单元页数乘以字线大小,并且减去专用于存储该存储设备的元数据的空间量。
附图说明
12.因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
13.图1是示出根据一个实施方案的存储系统的示意框图。
14.图2是示出根据一个实施方案的操作存储设备以执行读取命令或写入命令的方法的框图。
15.图3a示出了根据一个实施方案的在存储设备中利用的分区命名空间视图。
16.图3b示出了根据一个实施方案的针对图3a的存储设备的分区命名空间的状态图。
17.图4a示出了根据一个实施方案的包括选自多个管芯的多个擦除块的分区。
18.图4b示出了根据一个实施方案的图4a的分区的擦除块。
19.为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
20.在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限
制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
21.本公开整体涉及操作存储设备的方法。该存储设备包括控制器和被划分为多个分区的存储单元。该存储单元包括多个管芯,其中每个管芯包括两个平面。选择来自管芯的每个平面的一个擦除块以用于分区形成。每个擦除块包括多条字线。分区包括专用于存储奇偶校验数据的一个或两个管芯和专用于存储用户数据的多个管芯。该分区还包括专用于控制器元数据的空间。该存储设备限制主机设备来以最小写入大小发送写入命令以增加编程效率。该最小写入大小等于来自该分区中专用于存储用户数据的每个管芯的每个平面的一个擦除块的一条宇线减去专用于元数据的该空间。
22.图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在存储设备106中的非易失性存储装置110(诸如非易失性存储器)来存储和检索数据。例如,存储单元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、非易失性存储器110(nvm 110)、电源111、易失性存储器112和接口114。控制器108包括内部易失性存储器120或缓冲器。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷电路板(pcb),存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.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、非易失性存储器express(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可以包括多个存储器设备或介质单元。nvm 110可以被配置成存储和/或检索数据。例如,nvm 110的介质单元可以从控制器108接收数据和指示介质单元存储数据的消息。类似地,nvm 110的介质单元可以从控制器108接收指示介质单元检索数据的消息。在一些示例中,介质单元中的每个介质单元可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个介质单元)。在一些示例中,每个介质单元可以被配置为存储相对大量的数据(例如,128mb、256mb、512mb、1gb、2gb、4gb、8gb、16gb、32gb、64gb、128gb、256gb、512gb、1tb等)。
27.在一些示例中,nvm 110的每个介质单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(pcm)设备、电阻随机存取存储器(reram)设备、磁阻随机存取存储器(mram)设备、铁电随机存取存储器(f-ram)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
28.nvm 110可以包括多个闪存存储器设备或介质单元。闪存存储器设备可以包括基于nand或nor的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在nand闪存存储器设备中,闪存存储器设备可以被分成多个块,这些块可以被分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个nand单元。nand单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,nand闪存存储器设备可以是2d或3d设备,并且可以是单级单元(slc)、多级单元(mlc)、三级单元(tlc)或四级单元(qlc)。控制器108可在页面层级向nand闪存存储器设备写入数据以及从其读取数据,以及在块层级从nand闪存存储器设备擦除数据。
29.存储设备106包括电源111,其可以向存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换言之,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增力口。
30.存储设备106还包括易失性存储器112,该易失性存储器可由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。在一些示例中,控制器108可以使用易失性存储器112作为高速缓存。例如,控制器108可以将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入非易失性存储器110。如图1所示,易失性
存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(ram)、动态随机存取存储器(dram)、静态ram(sram)和同步动态ram(sdram(例如,ddr1、ddr2、ddr3、ddr3l、lpddr3、ddr4、lpddr4、ddr5、lpddr5等))。
31.可以在不同访问特性的情况下使用各种类型的易失性存储器。例如,dram可以被布置用于更长突发访问以实现相同访问总线的改善的带宽(bw)。另选地,可以在更小访问的情况下使用dram,使得随机小访问可以具有更好的延迟。控制器包括附加的任选sram 112和/或嵌入式mram。嵌入式mram是可以在另一个实施方案中使用的另一个另选存储器。类似地,可以出于不同的设计目的来优化对mram的访问,但是ssd控制器中的嵌入式mram的量可能是成本敏感的。因此,选择多少数据以及哪些数据进入优质非易失性存储器和优质易失性存储器将受到系统折衷的影响。
32.存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可以经由切换模式(tm)总线(未示出)管理从nvm 110读取数据和/或将数据写入该nvm。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该nvm 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该nvm 110。在一些实施方案中,当存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送到nvm 110之前将与写入命令相关联的数据暂时存储在内部易失性存储器120中。
33.图2是示出根据一个实施方案的操作存储设备以执行读取命令或写入命令的方法的框图。图2是示出根据一个实施方案的操作存储设备以执行读取命令或写入命令的方法200的框图。方法200可以与存储系统100一起使用,该存储系统具有主机设备104和包括控制器108的存储设备106。
34.方法200开始于操作250,其中主机设备将命令作为条目写入提交队列中。在操作250处,主机设备可以将一个或多个命令写入提交队列中。命令可以是读取命令或写入命令。主机设备可以包括一个或多个提交队列。
35.在操作252中,主机设备写入一个或多个更新的提交队列尾指针并且敲响门铃或发送中断信号以向存储设备通知或发信号告知准备好执行的新命令。如果存在多于一个提交队列,则主机可以写入更新的提交队列尾指针并为提交队列中的每个提交队列发送门铃或中断信号。在操作254中,响应于接收到门铃或中断信号,存储设备的控制器从一个或多个提交队列获取命令,并且该控制器接收该命令。
36.在操作256中,控制器处理命令并将与该命令相关联的数据写入或传输到主机设备存储器。该控制器一次可以处理多于一个命令。该控制器可以按提交顺序或按顺序处理一个或多个命令。处理写入命令可以包括:标识用于将与命令相关联的数据写入的分区,将该数据写入该分区的一个或多个逻辑块地址(lba),以及推进该分区的写入指针以标识该分区内的下一个可用lba。
37.在操作258中,一旦该命令已被充分处理,控制器就将对应于所执行的命令的完成条目写入主机设备的完成队列,并且移动或更新cq头指针以指向新写入的完成条目。
38.在操作260中,控制器生成中断信号或门铃并将其发送到主机设备。中断信号指示该命令已被执行并且与该命令相关联的数据在该存储器设备中可用。中断信号进一步通知主机设备完成队列已准备好被读取或处理。
39.在操作262中,主机设备处理完成条目。在操作264中,主机设备将更新的cq头指针写入存储设备并敲响门铃或向存储设备发送中断信号以释放完成条目。
40.图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)。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
41.在存储设备300中,zns 302是可以被格式化成逻辑块使得容量被分成多个分区306a-306n(统称为分区306)的nvm的量。分区306中的每个分区包括介质单元或nvm 304的多个物理块或擦除块(未示出),并且该擦除块中的每个擦除块与多个逻辑块(未示出)相关联。当控制器308从诸如主机设备(未示出)或主机设备的提交队列接收命令时,控制器308可以从与zns 302的多个擦除块(eb)相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一lba或扇区相关联。
42.在一个实施方案中,nvm 304为nand器件。该nand器件包括一个或多个管芯。该一个或多个管芯中的每个管芯包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个擦除块。该一个或多个擦除块中的每个擦除块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,mlc nand管芯可以使用上页面和下页面来达到完整字线的每个单元中的两个页面(例如,每页16kib)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以频繁地访问用户数据粒度lba大小为512字节的nand。
43.当将数据写入擦除块时,在分区306内对应地更新一个或多个逻辑块,以跟踪数据在nvm 304内的位置。数据可一次写入一个分区306,直到分区306变满,或写入多个分区306,使得多个分区306可部分变满。类似地,当将数据写入特定分区306时,数据可按nand位置的顺序逐页或逐字线地一次一块地写入多个擦除块,直到移动到相邻块(即,写入第一擦除块直到在移动到第二擦除块之前第一擦除块变满),或者可按nand位置的顺序逐页或逐字线地一次多块地写入多个擦除块,来以并行方式部分填充每个块(即,在写入每个擦除块的第二nand位置或页面之前写入每个擦除块的第一nand位置或页面)。每个nand位置的这种顺序编程是许多nand eb的典型非限制性要求。
44.分区306中的每个分区与分区开始逻辑块地址(zslba)相关联。zslba是分区306中的第一可用lba。例如,第一分区306a与zaslba相关联,第二分区306b与zbslba相关联,第三分区306c与zcslba相关联,第四分区306d与zdslba相关联,并且第n分区306n(即最后一个分区)与znslba相关联。每个分区306由其zslba标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序来将数据写入nvm 110)。
45.当将数据写入分区306时,写入指针310被推进或更新以指向或指示分区306中的用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针310指示对分区306的后续写入将在何处开始。后续写
入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针310指示为下一个起始点的位置处附加到分区306。分区306内的lba的排序列表可被存储用于写入排序。每个分区306可以具有其自身的写入指针310。因此,当接收到写入命令时,分区306由其zslba标识,并且写入指针310确定在所标识的分区306内数据的写入开始的位置。
46.图3b示出了针对图3a的zns 302的状态图350。在状态图350中,每个分区可处于不同状态,诸如空的、活动的、满的或脱机。当分区为空的时,该分区不含数据(即,分区中的任何擦除块当前均未存储数据),并且写入指针位于zslba(即,wp=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(zm)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可由zm或控制器向主机提供活动状态下的推荐时间的描述。控制器可包括zm。
47.术语“写入”包括当用户数据未填充所有可用字线时,在擦除块中的0个或更多字线、擦除和/或擦除块中的部分填充字线上编程用户数据。术语臼写入”还可以包括由于以下原因而关闭分区:内部驱动器处理需要(因为错误位在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备300由于资源限制(如太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
48.活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。从主机设备中拉入的新数据或正在重定位的有效数据可以写入开放分区。有效数据可从一个分区(例如,第一分区302a)移动到另一个分区(例如,第三分区302c)以用于垃圾回收目的。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器308将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
49.在开放分区和关闭分区中,写入指针指向分区中位于zslba和分区的最后lba的末端之间的某个位置(即,wp>0)。活动分区可根据由zm进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,zm可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用扇区或lba(即,wp=分区容量(zcap))。仍可执行满的分区中存储的数据的读取命令。
50.zm可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。在重置满的分区时,尽管该分区可能标记为可供写入的空分区,但该分区的数据可能不被立即清除。但是,在切换到活动分区之前,必须擦除重置的分区。可在zm重置和zm开放之间的任何时间擦除分区。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
51.由于重置分区会清除存储在分区中的数据或调度对存储在分区中的数据的擦除,因此消除了对各个擦除块进行垃圾回收的需要,从而改善了存储设备300的总体垃圾回收过程。存储设备300可以标记一个或多个擦除块以用于擦除。当将要形成新分区并且存储设
备300预计zm开放时,则可以擦除被标记用于擦除的一个或多个擦除块。存储设备300还可以在擦除该擦除块时决定并创建该分区的物理支持。因此,一旦新分区被开放并且擦除块被选择以形成分区,该擦除块将被擦除。此外,每次重置分区时,可选择分区306的lba和写入指针310的新顺序,从而使分区306能够容忍不按顺序接收命令。可任选地关闭写入指针310,使得命令可被写入为命令指示的任何起始lba。
52.重新参考图3a,当主机发送写入命令以向分区306写入数据时,控制器308拉入写入命令并将写入命令标识为对新打开分区306的写入。控制器308选择一组eb以存储与新打开分区306的写入命令相关联的数据,并且新打开分区306切换到活动分区306。如本文所用,控制器308发起、接收或拉入写入命令包括接收写入命令或直接存储器访问(dma)读取该写入命令。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器308被配置为从由主机设备填充的提交队列中dma读取新命令。
53.在刚切换到活动分区306的空分区306中,数据在zslba处开始被写入分区306,因为写入指针310将与zslba相关联的逻辑块指示为第一可用逻辑块。数据可被写入已针对分区306的物理位置而分配的一个或多个擦除块。在将与写入命令相关联的数据写入分区306之后,写入指针310被更新为指向分区306中的下一个可用块,以跟踪下一个写入起始点(即,第一写入的完成点)。另选地,控制器308可选择用于将数据写入的活动分区。在活动分区中,将数据写入由写入指针310指示为下一个可用块的逻辑块。
54.例如,控制器308可接收第一写入命令或第一分区附加命令或将该第一写入命令拉入到第三分区306c。主机按顺序标识分区306的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区306c中的如由写入指针310所指示的第一或下一个或多个可用lba,并且写入指针310被推进或更新以指向可用于主机写入的下一个可用lba(即,wp>0)。如果控制器308接收第二写入命令或者将第二写入命令拉入到第三分区306c,则与第二写入命令相关联的数据被写入第三分区306c的由写入指针310标识的下一个或多个可用lba。一旦将与第二命令相关联的数据写入第三分区306c,则写入指针310就再次推进或更新以指向可用于主机写入的下一个可用lba。重置分区306c将写入指针310移动回到zcslba(即,wp=0),并且分区306c切换到空分区。
55.图4a示出了根据一个实施方案的由选自多个管芯402的多个擦除块404构成的分区400。分区400可为图3a的zns 302的分区306。分区400可为图1的耦接到控制器108的存储单元110的分区。
56.存储设备(诸如图1的存储设备106)耦接到存储单元,诸如图1的nvm 110,该存储单元包括多个管芯402。尽管示出了32个管芯402,但可包括任何数量的管芯。每个管芯402由一对平面406构成,并且每个平面406由多个擦除块404构成。
57.通过从32个管芯402中的30个管芯的每个平面406中选择擦除块404并将对应于擦除块404的逻辑块地址分配或关联到分区400来形成分区400。分区400的擦除块404的配置是一个实施方案的示例。在另一个实施方案中,分区400的所选择的擦除块404可以是非顺序的(即,不是每个平面中的相同擦除块)。
58.在总共32个管芯402中,30个管芯402可以用于存储数据,一个奇偶校验管芯402a可以用于存储奇偶校验数据(例如,xor数据、内部纠错码(ecc)、外部ecc等),并且一个奇偶
校验或用户数据管芯402b可以用于存储用户数据或奇偶校验数据。在一个实施方案中,分区400可以包含要用于用户数据的31个管芯402和要用于奇偶校验数据的1个管芯402a。例如,raid 4利用用于奇偶校验数据的1个管芯。在另一个实施方案中,分区400可以包含要用于用户数据的30个管芯402和要用于奇偶校验数据的2个管芯402a、402b。例如,raid 6利用用于奇偶校验数据的2个管芯。此类实施方案不旨在是限定性的或限制性的,并且是分区400的可能配置的示例。此外,可存在未列出或未描述的其他实施方案。
59.尽管通篇称为“奇偶校验管芯”,但可能的实施方案可以包括奇偶校验平面,其中管芯的仅一个平面与奇偶校验数据相关联。另外,存储用户数据的每个擦除块的一条字线(例如,30个或31个管芯的每个平面的每个擦除块的字线60)的奇偶校验数据可以存储在任何擦除块的对应奇偶校验字线(例如,字线60)中,其中用户数据未存储在奇偶校验字线(例如,字线60)中。在此类实施方案中,奇偶校验字线可以存储在分区400内的多个不同擦除块或平面或管芯中。此外,当编程到非易失性存储单元时,管芯的单个平面(而不是管芯的两个平面)可以被编程到非易失性存储单元。在本文的描述中,列出的关于奇偶校验管芯的实施方案适用于奇偶校验平面或奇偶校验字线,并且不旨在是限制性的。此外,虽然用于存储奇偶校验数据的管芯402a被示出为分区400内的最后一个管芯402,但任何管芯402可以用于存储奇偶校验数据。
60.在分区400内,奇偶校验管芯402a被划分用于存储奇偶校验数据以用于管芯失效保护。奇偶校验或用户数据管芯402b可以被划分用于存储附加的奇偶校验数据或可以用于用户数据。奇偶校验管芯402a存储p奇偶校验数据,其为标准奇偶校验数据。奇偶校验或用户数据管芯402b在用于奇偶校验数据时存储q奇偶校验数据,其具有与p奇偶校验数据相同的大小。然而,使用高斯数学对存储在每个eb的特定字线上的主机数据计算q奇偶校验数据。奇偶校验数据包括可以防止单管芯失效和/或双管芯失效的擦除编码。擦除编码还可以为平面损失失效提供一定量的保护。
61.在编码理论中,擦除码是在位擦除(而不是位错误)的假设下的前向纠错(fec)码,其将k个符号的消息转换为带有柞个符号的更长消息(码字),使得可以从柞个符号的子集中恢复原始消息。各种擦除码类别的示例是旋风码、喷泉(即,无速率擦除)码、奇偶校验和reed-solomon码。例如,reed-solomon码是一组纠错码(ecc),其中码能够检测和纠正多个符号错误。
62.在一个实施方案中,由ecc解码器用于纠正错误的纠错信息可以是指由编码器生成用于纠错码的冗余和/或编码位。在各种实施方案中,纠错码可以是各种类型的纠错码中的一种纠错码,诸如块码、卷积码、bose-chaudhuri-hocquenghem(bch)码、低密度奇偶校验(ldpc)码、汉明码、reed-solomon码、涡轮码等。在某个实施方案中,纠错码可以是系统纠错码,使得每个ecc数据块或码字可以存储由编码器接收用于纠错码的数据以及奇偶校验位或校验位。ecc也可以包括错误检测码(edc),其中edc可以是标记值、逻辑地址、循环冗余码(crc)或将遵循ecc解码的任何其他ecc误纠校验。误纠校验检测ecc是否已将值校正为无效结果。误纠校验是必需的,因为存在未使用ecc但edc仍然检测到失效的实例。
63.分区400可以具有任何容量(zcap),诸如256mib或512mib。然而,分区400的一小部分可能不可访问而不能将数据写入,但仍可被读取,诸如分区400的存储奇偶校验数据的部分(例如,奇偶校验管芯402a和/或奇偶校验或用户数据管芯402b)。例如,如果分区400的总
容量为512mib,那么zcap可能为470mib,这是可用于将数据写入的容量,而42mib不可用于写入数据。
64.图4b示出了根据一个实施方案的图4a的分区400的示例性擦除块404。图4b是tlc存储器中的擦除块404的示例。如上所述,未列出的其他类型的存储器单元可以适用于实施方案。擦除块404包括多条字线,诸如wl0 460、wl1 470、wl2480和wen 490。字母“n”表示适用于擦除块404内的最后一条字线的值。例如,擦除块404可以由256条字线构成。然而,擦除块404可以由多于256条字线或少于256条字线构成。
65.此外,每条字线包含一定数量的页面,其中该数量对应于存储器单元的类型。例如,slc存储器每条字线具有1个页面,mlc存储器每条字线具有2个页面,tlc存储器每条字线具有3个页面等等。在图4b中,擦除块404是tlc存储器,并且每条字线包括上页面472、中间页面474和下页面476,如wl1 470中所示。在以下描述中,包括256条字线的tlc存储器擦除块将用作示例;然而,此类示例仅出于解释目的,并且不旨在是限制性的。
66.擦除块404中的tlc存储器中的字线的总大小(诸如wl1 470)为48kib(即,16kib*3页)。由于在管芯中存在两个平面,因此平行于wl1存在相同大小的字线(未示出)。管芯402中的两个擦除块404(每个平面406一个擦除块)的组合字线大小(下文称为“字线”)为:1管芯*2eb/管芯*3页/eb*16kib/页=96kib,其中单个擦除块字线为48kib,其为字线的大小的一半。此外,由于专用于存储元数据的空间,96kib的管芯字线大小和48kib的擦除块字线大小可能更小。因此,tlc存储器中的管芯的每个平面中的一条字线的总组合大小为96kib减去专用于存储元数据的空间。先前的值是可能的实施方案的示例,并且列出的值既不是限定性的也不是限制性的。
67.根据一个实施方案,超级字线或多条字线由来自分区的每个管芯的管芯字线(即来自分区的存储用户数据的每个管芯并且来自管芯的每个平面的一个擦除块的一条字线的总和)构成,使得分区包括256条超级字线。在一个实施方案中,管芯的每个平面为分区提供一个相同的擦除块(即,每个平面的eb1)。在另一个实施方案中,管芯的每个平面为分区提供一个不相同的擦除块(即,每个平面的不同擦除块)。例如,在raid 6具体实施中,如果分区包括专用于存储用户数据的30个管芯,则超级字线将为96kib*30管芯减去专用于存储元数据的空间。类似地,在raid 4具体实施中,如果分区包括专用于存储用户数据的31个管芯,则超级字线将为96kib*31管芯减去专用于存储元数据的空间。
68.换句话讲,分区的可写入数据的超级字线容量(即,总容量减去由于控制器元数据而失去的空间)可以通过下式求解:#管芯*2(eb/管芯)*(页/eb)*字线(wl)大小-元数据。尽管通篇使用术语“元数据”,但元数据可以是指数据开销。因此,出于示例性目的,元数据可以与数据开销可互换地使用。元数据可以是内部跟踪信息,诸如存储在存储设备的超级字线上的分区逻辑块地址。存储在超级字线上的分区逻辑块地址包括奇偶校验数据和/或控制器调试信息的位置。超级字线大小可以用作用于写入从主机接收的数据的命令的最小写入大小,如下所述。
69.例如,对于tlc存储器(即,每单元3个页面),在一个管芯分配用于奇偶校验数据的情况下,用户数据的超级字线容量求解如下:31管芯*2所选择的eb/管芯*3页/eb*16kib/页-16kib=2960kib。16kib/页是指存储器单元内每页的wl数据大小。16kib是指元数据数据大小。wl数据大小和元数据数据大小的值仅仅是可能的大小的示例,并且不旨在是限制
性的。另外,分区的元数据可以与单个eb中的单条字线、单个eb中的多条字线或跨多个eb的多条字线相关联。此外,元数据可以与单个eb中的单条字线的一部分、单个eb中的多条字线的一部分或跨多个eb的多条字线的一部分相关联。
70.此外,公式适用于其他形式的存储器单元,诸如slc、mlc、qlc和存储器单元的其他更高迭代。页数/单元是指特定类型的存储器单元可以包含的页面的数量。如果两个管芯被分配用于tlc存储器内的奇偶校验数据,则公式将求解如下:30管芯*2eb/管芯*3页/eb*16kib/页-16kib=2864kib。在单个管芯402中,存在两个平面406,并且擦除块404选自用于分区形成的每个平面406。
71.存储设备的控制器(诸如图1的存储设备106的控制器108)可以计算和设定用于将从主机接收的数据写入一个或多个分区的命令的最小写入大小。用于写入针对tlc存储器的从主机接收的数据的命令的最小写入大小可以基于96kib的管芯wl大小减去专用于存储元数据的空间,使得组合的管芯wl(诸如wl0460)将一次写入达满容量。
72.易失性存储器(诸如图1的易失性存储器112)可以具有专用于存储飞行中数据的区域,诸如奇偶校验数据和尚未写入nvm 110的大小小于最小写入大小的由主机发送的未写入主机或用户数据。例如,易失性存储器112区域可以专用于存储写入命令,该写入命令包括小于一条字线的数据、等于一条字线的数据或多于一条字线的数据。当由控制器108将数据写入分区时,主机可以被限制为以最小写入大小发送写入命令。可以聚合写入专用于存储飞行中数据的易失性存储器112区域或内部易失性存储器120的未写入主机或用户数据,直到实现分区的最小写入大小要求。
73.此外,为了更好地优化写入过程并增加编程效率,最小写入大小可以被选择为填充分区400中的每个擦除块404中的一条字线(即,分区的每个擦除块中的一条管芯wl被同时写入)。因此,最小写入大小可以被设定为超级字线大小。在图4a中的示例中,在31个管芯402(或eb对)用于用户数据并且1个管芯402a(或eb对)用于奇偶校验数据的情况下,需要约2960kib的数据(即,96kib*31用户管芯)来填充分区400中的每个可用管芯402中的组合管芯字线达最大容量,不包括因元数据失去的空间。所提及的最小写入大小不旨在是限定性的或限制性的,并且其他最小写入大小可以存在于其他类型的存储器单元。此外,所提及的最小写入大小可以大于或小于本文所述的超级字线大小,诸如分区的每个擦除块中的两条或更多条管芯字线或分区的每个擦除块中的管芯字线的一半。
74.在一个实施方案中,将奇偶校验数据写入分区的单个擦除块的全体字线。在另一个实施方案中,将奇偶校验数据相同地写入每个擦除块的一条字线(即,每个擦除块的wl0)。在另一个实施方案中,将奇偶校验数据非相同地写入每个擦除块的一条字线(即,每个擦除块上的不同字线)。在一个实施方案中,专用于分区内的奇偶校验数据的字线的总数等于分区的一个或多个擦除块的倍数。
75.在一个实施方案中,因元数据失去的空间可以来自字线。在另一个实施方案中,因元数据失去的空间可以来自擦除块404。在另一个实施方案中,因元数据失去的空间可以来自平面406。在另一个实施方案中,因元数据失去的空间可以来自管芯402。在另一个实施方案中,因元数据失去的空间可以来自分区400。
76.例如,主机(诸如图1的主机104)存储要发送到存储设备(诸如图1的存储设备106)的数据,直到满足阈值或最小写入大小(当限制为最小写入大小时)。阈值可以是先前计算
的2960kib的超级字线容量。当存储设备106从主机104接收到2960kib的数据时,控制器(诸如控制器108)将确定数据是否将足以填充跨分区400中的管芯402中的每个管芯的一条字线(诸如wl2 480)。如果所接收的数据将不会填充跨分区400中的所有管芯402的一条字线达最大容量,则控制器108可以对数据写入命令进行排队,直到存储的总聚合写入大小足以填充跨分区400中的所有管芯402的每条字线达最大容量。
77.在一个实施方案中,最小写入大小是擦除块404的字线容量减去因元数据失去的空间。在另一个实施方案中,最小写入大小是跨管芯402的两个平面406的组合管芯字线的大小减去因元数据失去的空间。在另一个实施方案中,最小写入大小是分区400中存储用户数据的超级字线的大小减去因元数据失去的空间。在另一个实施方案中,最小写入大小是分区400中存储用户数据的一条或多条超级字线的大小减去因元数据失去的空间。
78.如果最小写入大小是平面的字线,则缓冲器可以用于每个平面和相关奇偶校验平面。例如,对于两条字线写入,其中每条字线位于管芯的平行平面上,在数据位于内部易失性存储器中时利用四个缓冲器。当平面的一条字线被写入非易失性存储单元(即,不是平行写入)时,释放两个缓冲器(即,使其返回到可用缓冲器池)。所释放的缓冲器是字线缓冲器和与字线相关联的奇偶校验缓冲器。类似地,如果两条字线均被写入非易失性存储单元(即,是平行写入),则使所有利用的缓冲器都返回到可用缓冲器池。奇偶校验缓冲器可以与每个管芯的平面相关联,使得奇偶校验缓冲器将存在,直到所有相同平面被写入非易失性存储单元。当最后的利用的平面被写入非易失性存储单元时,奇偶校验缓冲器也被写入非易失性存储单元,从而导致未利用的内部易失性存储器。
79.可以通过同时写入跨分区内的所有管芯的字线来优化到分区的写入过程。通过限制主机具有最小写入大小或允许控制器存储数据直到实现最小写入大小(诸如用于填充跨分区内的所有管芯的每个擦除块中的字线达最大容量的大小),可以改善总体写入性能和编程效率。
80.在一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯。该多个管芯中的每个管芯包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:控制器,该控制器耦接到该非易失性存储单元。该控制器被配置为:确定用于写入从主机设备接收的数据的命令的最小写入大小,其中该最小写入大小基于分区中专用于存储用户数据的擦除块的数量、每个擦除块的字线的每单元页数、每个擦除块中的字线的数量以及专用于存储该存储设备的元数据的空间量来确定。该控制器被进一步配置为:限制该主机设备来以该最小写入大小发送用于写入数据的命令。
81.该多个分区中的每个分区包括相同数量的擦除块并且具有相同的可写入分区容量。该最小写入大小被确定为写入该分区的每个管芯中的两条完整字线减去专用于存储元数据的该空间量。该分区的每个管芯包括两个平面,并且该最小写入大小被确定为写入该分区的每个管芯的每个平面中的一条完整字线减去专用于存储元数据的该空间量。每条字线的一部分包括专用于存储元数据的该空间量。每个擦除块的一部分包括专用于存储元数据的该空间量。此外,每个分区中的至少一个管芯专用于存储管芯失效保护数据。
82.在另一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯,该多个管
芯中的每个管芯包括多个平面,这些平面中的每个平面包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:控制器,该控制器耦接到该非易失性存储单元。该控制器被配置为:计算用于写入从主机设备接收的数据的命令的最小写入大小,其中该最小写入大小被计算为写入分区内专用于存储用户数据的每个管芯的每个平面的一个擦除块的完整字线大小。该控制器被进一步配置为:限制该主机设备来以该最小写入大小发送用于写入数据的命令。
83.该最小写入大小基于该多条字线的每单元页数来计算。每个分区的一部分包括供该存储设备写入的元数据容量。该最小写入大小被计算为考虑该元数据容量。该控制器被进一步配置为:从该主机设备接收大小小于该最小写入大小的一个或多个写入命令;保持该一个或多个写入命令,直到该一个或多个写入命令聚合到该最小写入大小;并且当该一个或多个写入命令聚合到该最小写入大小时,将该一个或多个写入命令写入该非易失性存储单元。每个分区包括专用于存储用户数据的多个用户数据管芯、第一奇偶校验管芯和第二奇偶校验管芯。该第一奇偶校验管芯专用于存储p奇偶校验数据并且该第二奇偶校验管芯专用于存储q奇偶校验数据。
84.在另一个实施方案中,一种存储设备包括:非易失性存储单元,其中该非易失性存储单元的容量被划分为多个分区,并且其中该非易失性存储单元包括多个管芯,该多个管芯中的每个管芯包括多个平面,这些平面中的每个平面包括多个擦除块,并且这些擦除块中的每个擦除块包括多条字线。该存储设备还包括:用于接收以最小写入大小写入从主机设备接收的数据的命令的装置,其中该最小写入大小通过以下来设定:将分区中专用于存储用户数据的擦除块的数量乘以该字线的每单元页数乘以字线大小,并且减去专用于存储该存储设备的元数据的空间量。
85.该最小写入大小被设定为与字线的大小对准。该存储设备还包括:用于计算命令的该最小写入大小的装置;以及用于限制该主机设备来以该最小写入大小发送用于写入数据的命令的装置。存储设备的一个或多个分区单独包括32个管芯,并且该一个或多个分区中的每个分区的32个管芯中的至少30个管芯专用于存储用户数据。此外,该一个或多个分区中的每个分区的32个管芯中的至少一个管芯专用于存储奇偶校验数据。另外,该一个或多个分区中的每个分区的32个管芯中的第一管芯专用于存储p奇偶校验数据,并且该一个或多个分区中的每个分区的32个管芯中的第二管芯专用于存储q奇偶校验数据。
86.虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献