CN108733319A - 用于非易失性存储器中的混合推拉数据管理的系统和方法 - Google Patents
用于非易失性存储器中的混合推拉数据管理的系统和方法 Download PDFInfo
- Publication number
- CN108733319A CN108733319A CN201810255208.6A CN201810255208A CN108733319A CN 108733319 A CN108733319 A CN 108733319A CN 201810255208 A CN201810255208 A CN 201810255208A CN 108733319 A CN108733319 A CN 108733319A
- Authority
- CN
- China
- Prior art keywords
- data
- driver
- sub
- xor
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 266
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000013523 data management Methods 0.000 title description 5
- 239000000872 buffer Substances 0.000 claims abstract description 107
- 239000010813 municipal solid waste Substances 0.000 claims abstract description 96
- 238000012937 correction Methods 0.000 claims abstract description 40
- 238000003860 storage Methods 0.000 claims description 64
- 239000000758 substrate Substances 0.000 claims description 19
- 230000004224 protection Effects 0.000 claims description 11
- 230000011218 segmentation Effects 0.000 claims description 11
- 241001269238 Data Species 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- 230000003362 replicative effect Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 20
- 230000008569 process Effects 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 10
- 230000000670 limiting effect Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000009826 distribution Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000005299 abrasion Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013341 scale-up Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 206010016256 fatigue Diseases 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000631 nonopiate Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000005191 phase separation Methods 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
公开了使用混合推拉技术来管理垃圾收集操作中的数据的系统和方法。该系统包括与明确数据类型相关联的多个非易失性存储器子驱动器,以及共享的易失性存储器垃圾收集缓冲器,该共享的易失性存储器垃圾收集缓冲器的大小仅可接收预定量的单个数据类型的主机数据和相关联的大数据组块校正数据。控制器识别并累积来自源块的单个数据类型的有效数据,并将其与该有效数据的XOR数据组合,以在缓冲器中生成受保护的数据条带。该控制器将受保护的数据条带写入到含有相同数据类型的数据的子驱动器。仅在将受保护的数据条带写入适当的子驱动器后,控制器才会在相同的源块中对相同或不同数据类型的数据重复该过程。
Description
技术领域
本发明涉及存储器系统,以及管理存储器系统中的数据的方法。
背景技术
诸如包含NAND闪速存储器的固态驱动器(SSD)之类的存储系统通常用于从消费产品到企业级计算机系统的范围的电子系统中。SSD的市场已经增加,并且其被私人企业或政府机构用于储存数据的接受程度变得越来越普遍。利用面向块(block-oriented)架构的SSD和相似的储存装置共享公共的问题:需要通过将稀疏分布的数据收集到更少数目的块中来创建写入新数据的空间。此过程称为“垃圾收集(garbage collection)”。在许多面向块的储存装置中,垃圾收集的需求一般是由于无法在存储器中写入到位,以及这些储存装置中的写入粒度(granularity)和擦除粒度之间的不匹配。
垃圾收集过程可能会给处理资源带来很大的负担,其继而可能会降低SSD的性能。垃圾收集涉及从要重复使用的非易失性存储器块中读取有效数据并将其写回新块。许多现实的数据工作负载,尤其是除均匀随机和顺序之外,对于不同的逻辑区域具有不同的写入密度,其中一些数据是“热”或频繁写入的,并且是“冷”或不太频繁写入。当不同温度的数据混合在相同的块中时,SSD可以经历显著的写入放大,其中写入放大是指写入或复制的数据的物理量超出所接收数据的逻辑量。
发明内容
根据一个方面,公开了用于管理存储器系统中的数据的方法。方法可以包含在存储器系统处接收主机数据写入,该存储器系统具有与多个非易失性存储器子驱动器通信的控制器。方法可以包含识别对于第一子驱动器的垃圾收集触发,并且响应于识别该垃圾收集触发在具有有效数据和废弃数据的第一子驱动器中选择源块。基于与其它子驱动器相关联的数据类型,该方法可以按数据类型继续将有效数据从源块分类到多个子驱动器中的至少一个其它的子驱动器。分类过程可以包含,将第一数据类型的预定量的有效数据从源块复制到易失性存储器缓冲器。该过程包含,为易失性存储器缓冲器中的预定量的数据生成大数据组块校正数据——诸如XOR数据,并且将生成的XOR数据分类到易失性存储器缓冲器的固定大小部分。将来自易失性存储器缓冲器的预定量的有效数据和XOR数据复制到预定接收第一数据类型的所有数据的子驱动器。仅在复制来自易失性存储器缓冲器的预定量的有效数据并且复制来自易失性存储器缓冲器的固定大小部分的XOR数据之后,过程才启动将下一预定量的单个数据类型的有效数据从源块复制到易失性存储器缓冲器。在一个实现方式中,易失性存储器缓冲器对于所有的数据类型是共享的缓冲器,但一次仅可以用于一种数据类型。易失性存储器缓冲器可以用于在任何给定时间仅累积单个数据类型的预定量的数据,并且仅用于存储针对该预定量生成的XOR数据的易失性存储器缓冲器的固定大小部分。将共享易失性存储器缓冲器的内容写入适当的子驱动器后,将通过共享缓冲器处理下一批次相同或不同的单个数据类型。
另一方面,非易失性存储器系统包含限定多个子驱动器的非易失性存储器,由所有多个子驱动器共享的易失性存储器,以及与多个子驱动器和易失性存储器通信的控制器。控制器可以配置为从多个子驱动器中的一个子驱动器中的当前编程的块中选择用于垃圾收集操作的源块,并且将来自所选的源块的仅第一数据类型的预定量的有效数据复制到易失性存储器。控制器还可以配置为,对预定量的有效数据生成当数据组块校正数据,并且将该大数据组块校正数据写入到易失性存储器中的固定大小缓冲器。然后控制器可以配置为,将大数据组块校正数据和预定量的有效数据写入到与第一数据类型专门相关联的子驱动器中,以形成受保护的数据条带。仅在将受保护的数据条带写入到适当的子驱动器之后,然后控制器才可以将预定量的有效数据从源块复制到易失性存储器。控制器配置为,对于每个给定的预定量的所选源块中的单个类型的有效数据,顺序地将给定的预定量和对于给定的预定量而生成的大数据组块校正数据写入到易失性存储器,并且将给定的预定量的有效数据和大数据组块校正数据写入到适当的子驱动器。
在又一方面,公开了非易失性存储器系统。系统可以包含限定多个子驱动器的非易失性存储器,其中多个子驱动器的部分各自包括打开的重定位块。系统还可以包含处于易失性存储器中的单个垃圾收集缓冲器,单个垃圾收集缓冲器具有少于任何打开的重定位块的总重定位容量的总缓冲器容量。系统可以包含在垃圾收集操作期间将第一数据类型的预定量的有效数据从源块复制到单个垃圾收集缓冲器的构件,以及对于单个垃圾收集缓冲器中的预定量的数据生成XOR数据的构件。系统还可以包含构件,其用于仅在从单个垃圾收集缓冲器复制预定量的有效数据和所述XOR数据,将预定量的单个数据类型的有效数据从源块复制到单个垃圾收集缓冲器,并且对进入单个垃圾收集缓冲器的下一预定量生成XOR数之后,才将预定量的有效数据和XOR数据从单个垃圾收集缓冲器写入预定接收第一数据类型的所有数据的多个子驱动器的子驱动器的打开的重定位块。
在不同的实现方式中,系统将不同的数据类型分类到子驱动器的适当的重定位块中,该重定位块专门配置为,通过聚合仅预定量的单个数据类型并对单个共享缓冲器中的该聚合数据生成的XOR数据而接收仅该单个数据类型,该单个共享缓冲器具有等于预定量和XOR数据量的固定大小,使得该预定量的不同数据类型的集合从相同的源块被顺序地拉出并且通过相同的固定大小的易失性存储器缓冲器被处理成与该数据类型相关联的适当的子驱动器的重定位块。在其它实现方式中,本文所描述的推拉垃圾收集操作中当前正在处理的预定量的单个数据类型可以储存在易失性存储器缓冲器的任何部分中,而易失性存储器缓冲器的固定大小部分仅用于为预定量的单个数据类型聚合XOR数据。
在其它实现方式中,系统和方法可以经配置,以使得垃圾收集操作仅使用易失性存储器缓冲器的固定大小部分,其中易失性存储器缓冲器的固定大小部分被调整大小以接收对预定量的单个数据类型生成的所有的XOR数据,但是仅具有部分预定量的单个数据类型的空间。在后面的实现方式中,随着单个数据类型的数据被接收,数据被写入易失性存储器的固定大小部分,并且然后在所有的预定量的该单个数据类型的数据被接收之前以零碎的方式写入到非易失性存储器。对该预定数据类型生成的所有XOR数据可以被累积在易失性存储器缓冲器的固定大小部分中,而预定量的单个数据类型的部分被复制到易失性存储器缓冲器的固定大小部分中并被写入非易失性存储器。在所有预定量的数据已经被接收和处理以生成XOR数据之后,然后XOR数据仅被复制到非易失性存储器中的重定位块中。
已经公开了用于在垃圾收集操作期间管理接收到的数据并且按预定数据类型将数据分类到非易失性存储器中的子驱动器的方法和系统,每个子驱动器被预先确定为接收相应的一个或多个数据类型的所有数据。该系统和方法可以通过利用作为目标重定位块大小的一部分的小XOR条带大小来许可减少在垃圾收集期间俘获的源块的数目,但是许可将块保护XOR数据应用于该数据的较小大小部分。另外,对于较低的RAM装置,较小的垃圾收集缓冲器可能很有吸引力。系统还可以利用较小的共享易失性存储器缓冲器区域并由于XOR条带的较小尺寸而减少XOR引擎要求的数目,以促进源块上的混合推拉垃圾收集操作。推拉数据管理系统和技术可以允许存储系统为多个源/目标GC对使用一个XOR缓冲器。
附图说明
图1A是示例性非易失性存储器系统的框图。
图1B是图示示例性储存模块的框图。
图1C是图示分层储存系统的框图。
图2A是图示非易失性存储器系统的控制器的示例性组件的框图。
图2B是图示非易失性存储器储存系统的非易失性存储器的示例性组件的框图。
图3是图示块和字线布置的非易失性存储器电路阵列的示例。
图4图示了图1A的非易失性存储器系统的示例性物理存储器组织。
图5示出了图4的物理存储器的一部分的放大视图。
图6图示了图5的非易失性存储器的物理超级块的示例,该超级块具有多个块,每块具有多个页和与相应的逻辑地址相关联的数据片段。
图7图示了图6的非易失性存储器的物理超级块的示例,该物理超级块具有由主机数据的元页和XOR数据的页组成的XOR条带。
图8图示了被分割成多个子驱动器的图2A的非易失性存储器的框图。
图9是图示管理诸如图6中示出的非易失性存储器中的数据流的一个实现方式的流程图。
图10图示了垃圾收集分类的混合推拉版本,其具有从源超级块分类到相应的不同的子驱动器的相应的打开的重定位超级块的不同数据类型的数据写入的交织的XOR条带的序列。
图11图示了用于流数据的交织XOR条带写入的混合推拉垃圾收集的替代版本。
图12图示了混合推拉垃圾收集技术的替代版本,其中子驱动器被分配来自源块的随机或连续数据。
图13是图示超级页中的损坏页的校正的混合推拉技术的示例性流程。
具体实施方式
为了解决写入放大问题并且减少可能在解决写入放大问题时生成的数据管理开销负担,公开了用于在垃圾收集操作期间将数据分类到非易失性存储器系统的不同子驱动器中的系统和方法。在公开的系统和方法中,可以使用混合推拉(hybrid push-pull)垃圾收集技术来完成分类。
“推”垃圾收集分类操作可以涉及从子驱动器中选择单个源块,并且然后基于有效数据的数据类型信息和与每个子驱动器相关联的数据类型,将有效数据从所选源块重新定位到每个其它子驱动器中的打开的重定位块。在来自所选源块的所有的有效数据已经被重新定位到不同子驱动器中的各个打开的重定位块时,垃圾收集操作可以结束。在非易失性存储器系统使用块故障恢复机制(诸如,可以包含异或(XOR)保护的大数据组块校正技术)时,则这种推式垃圾收集技术对于每个打开的重定位块需要维持分开的数据缓冲器,该数据缓冲器可以是随机存取存储器(RAM)缓冲器,诸如静态RAM(SRAM)或动态RAM(DRAM)缓冲器。这是因为在对该数据执行XOR操作之前需要为全块累积重新定位的数据,并且然后将数据储存在重定位块中。另外,使用此推技术,每个子驱动器都需要分开的XOR引擎。
“拉”垃圾收集分类技术涉及,使用与子驱动器相关联的数据类型的重新定位的数据来填充该子驱动器中的一个重定位块,然后选择另一重定位块用相同或不同数据类型来填充。换言之,拉技术聚焦于将数据从一个或多个源块拉入单个重定位块。拉技术可以减少所需缓冲器空间量以及所需XOR引擎的数目,因为在任何给定的时间仅一个重定位块打开。然而,拉技术可能俘获在源子驱动器中的源块中的特定类型的数据,因为可能需要源子驱动器中的若干不同块来聚集足够的该数据类型,从而填充与该数据类型相关联的子驱动器中的单个打开的重定位块。例如,如果特定数据类型的数据平均仅占给定源块中的数据的10%的,则对于该数据类型需要10个源块来累积该类型的足够有效数据以填充重定位块。源驱动器中大量的俘获的无效空间则一般可能导致更高的写入放大、更低的耐用性以及更低的性能。
本文所描述的是混合推拉垃圾收集技术,其中垃圾收集操作的目的是在为了附加的数据而查看其它源块之前尽可能多地清空当前所选的其有效数据的源块(如推技术中那样),而不是从多个源块中拉数据来填充仅一个打开的重定位块(如在拉技术中)。这种混合推拉技术的推方面可以通过将对于给定数据类型的必须被聚合推出的数据量减少到比完整块(或超级块)更小的部分来实现。这种混合推拉垃圾收集的拉方面源于以下过程,该过程仅拉特定数据类型的数据并在重定位块的易失性存储器数据缓冲器中累积该数据类型,但仅拉生成单个数据类型的数据和相关联的大数据组块校正数据(诸如对于该数据生成的XOR数据,本文中也称为XOR条带或超级页)的上述部分所需的数据量,其中每个部分是少于该数据类型的重定位块的预定量的单个数据类型。然后通过XOR引擎处理来自源块的该所拉的数据,以将XOR数据添加到固定大小的易失性存储器缓冲器,在该固定大小的易失性存储器缓冲器填充XOR数据时,其用于形成写入到重定位块的XOR条带。在将XOR条带写入到重定位块之前,可以将标准纠错码(ECC)保护应用于XOR条带的数据。例如,可以为XOR条带数据(为有效主机数据和该有效主机数据的XOR数据的两者)生成处于小码字形式的ECC保护,以防止更小粒度的位错误。因此,所描述的系统和方法在任何给定的时间仅从源块拉有效数据的一部分,然后才为仅该部分计算XOR保护并将所得到的XOR条带写入到重定位块,而不是将整个数据块传输到数据缓冲器并立即为该整个块计算XOR保护。然后,非易失性存储器系统可以从源块选择相同类型的数据,或重新定位到适当的子驱动器的不同类型的数据,直到从当前源块“推出”所有的有效数据。
现在参照图1A,示出了图示非易失性存储器的框图。非易失性存储器(NVM)系统100包含控制器102以及非易失性存储器,该非易失性存储器可以由一个或多个非易失性存储器裸芯104组成。如本文所使用的,术语“裸芯”指代形成在单个半导体基板上的非易失性存储器单元的集合,以及用于管理这些非易失性存储器单元的物理操作的相关联电路。控制器102与主机系统相接口,并向非易失性存储器裸芯104发送用于读取、编程以及擦除操作的命令序列。
控制器102(其可以是闪速存储器控制器)可以采取处理电路、一个或多个微处理器或处理器(在本文中也称为中央处理单元(CPU))、以及储存可由(微)处理器执行的计算机可读编程代码(例如,软件或固件)的计算机可读介质的形式,例如,逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器以及嵌入式微控制器。控制器102可以配置有硬件和/或固件以进行下面描述的并在流程图中示出的各种功能。另外,示出为控制器内部的一些组件也可以储存在控制器外部,并且可以使用其它组件。另外,短语“可操作地与……通信”可以意味着直接与……通信,或通过一个或多个组件间接(有线或无线)与……通信,这些组件可以或可以不在本文示出或描述。
如本文所使用的,闪速存储器控制器是管理储存在闪速存储器上的数据并且与主机(诸如,计算机或电子装置)通信的装置。除了本文所描述的特定功能之外,闪速存储器控制器还可以具有各种功能。例如,闪速存储器控制器可以格式化闪速存储器以确保存储器正确操作,映射出坏的闪速存储器单元,并且分配备用存储单元以替换将来出现故障的单元。备用单元的一些部分可以用来保持固件以操作闪速存储器控制器并实现其它的特征。在操作中,在主机需要从闪速存储器中读取数据或向其写入数据时,它将与闪速存储器控制器通信。如果主机将逻辑地址提供给要读取/写入的数据,闪速存储器控制器可以将从主机收到的逻辑地址转换到闪速存储器中的物理地址。闪速存储器控制器还可以进行各种存储器管理功能,诸如(但不限于)磨损均衡(分配写入,以避免反复写入特定的存储器块造成的磨损其它)和垃圾收集(在块满之后,仅将数据的有效页移动到新的块,这样满的块可以被擦除和重复使用)。
非易失性存储器裸芯104可以包含任意适合的非易失性储存介质,该非易失性储存介质包含NAND闪速存储器单元和/或NOR闪速存储器单元。存储器单元可以采取固态(例如,闪存)存储器单元的形式,并且可以是一次可编程的、少次可编程的或者多次可编程的。存储单元也可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC),或者使用现在已知或以后开发的其它存储单元级技术。另外,可以以二维或三维样式制造存储器单元。
控制器102与非易失性存储器裸芯104之间的接口可以是任何适合的闪存接口,诸如切换模式(Toggle Mode)200、400或800。在一个实施例中,存储器系统100可以是基于卡的系统,诸如安全数字(SD)卡或微型安全数字(micro-SD)卡。在替代实施例中,存储器系统100可以是嵌入式存储器系统的部分。
虽然在图1A所图示的示例NVM中,NVM系统100在控制器102与非易失性存储器裸芯104之间包含单个通道,但是本文所描述的主题不限于具有单个存储器通道。例如,在一些NAND存储器系统架构中,诸如在图1B和图1C中,取决于控制器能力,在控制器与NAND存储器装置之间可以存在2、4、8或更多通道。在任何本文所描述的实施例中,即使在附图中示出了单个通道,在控制器与存储器裸芯之间也可以存在多于单个的通道。
图1B图示了包含复数个NVM系统100的储存模块200。由此,储存模块200可以包含与主机接口并与储存系统204接口的储存控制器202,该储存系统204包含多个NVM系统100。储存控制器202与NVM系统100之间的接口可以是总线接口,诸如串行高级技术附件(SATA)或外围组件接口快速(PCIe)接口。在一个实施例中,储存模块200可以是固态驱动器(SSD),诸如在便携式计算装置(诸如,笔记本电脑和平板电脑)中可见的固态驱动器(SSD)。
图1C是图示分层储存系统的框图。分层储存系统210包含多个储存控制器202,储存控制器202中的每个储存控制器控制相应的储存系统204。主机系统212可以经由总线接口在分层储存系统内存取存储器。在一个实施例中,总线接口可以是非易失性存储器快速(NVMe)或以太网光纤通道(FCoE)接口。在一个实施例中,图1C中所图示的系统可以是由多个主机计算机可存取的可机架安装的大容量储存系统,诸如可以在数据中心或需要大容量储存的其它位置见到的可机架安装的大容量储存系统。
图2A是更详细地图示控制器102的示例性组件的框图。控制器102包含与主机相接口的前端模块108,与一个或多个非易失性存储器裸芯104相接口的后端模块110,以及进行现在将详细描述的功能的各种其它的模块。模块可以采取封装功能硬件单元的形式,例如,该封装功能硬件单元设计为与其它的组件、编程代码(例如,软件或固件)的部分或独立的硬件或软件组件一起使用,其中编程代码由通常进行相关功能的特定功能的(微型)处理器或处理电路来执行,独立的硬件或软件组件与更大的系统相接口。
控制器102的模块可以包含存在于控制器102的裸芯上的子驱动器数据路由模块112。如下所述,子驱动器数据路由模块112可以提供用于将数据从主机仅路由到非易失性存储器104的特定子驱动器的功能,以及用于在预定时间将有效数据从特定子驱动器移动到非易失性存储器104的其它子驱动器的功能。预定时间可以仅在对特定子驱动器进行垃圾收集操作的期间。在垃圾收集操作期间移动的数据可以是来自所选源块的特定数据类型的有效数据。
在垃圾收集操作的任何一部分中被移动的特定数据类型的预定量的有效数据是块段(block segment),其中块段被储存在易失性存储器中,块段被处理为包含XOR数据以及所得到的组合块段,并且XOR数据等于在打开的重定位块中完整的XOR数据条带。在操作的该部分完成之后,其中块段量的有效数据从源块被移动,并且该段的纠错数据被生成并被添加到写入到重定位块的最终XOR条带,然后数据路由模块112可以从源块选择相同或另一数据类型的数据,以足以填充相同目标子驱动器中的重定位块(如果再次选择相同的数据类型)的下一块段,或不同子驱动器中的重定位块(如果选择了不同的数据类型)的块段。因此,下面更详细描述的技术结合了拉式垃圾收集,其中在移动另一预定数量的有效数据之前重新定位预定数量的单个数据类型的有效数据。技术还并入推拉垃圾收集操作的方面,由于控制器102经由数据路由模块112从相同源块中抽取单个数据类型的块段量,直到从该所选源块无法提供足够量的该数据类型的数据。另外,因为块段相比于整个块是更细的粒度,所以在重新定位来自当前源块的所有完整块数据片段之后留下的源块中的特定数据类型的其余数据可以减少附加源块的数目,需要该附加源块以聚集足够的特定数据类型的数据来完成来自初始源块的有效数据的重定位。
如下面更详细的描述,数据类型信息可以由控制器102从主机接收的元数据来确定,或者可以是控制器102确定的关于数据差异元数据。例如,如果在控制器102处与主机数据一起接收到元数据,则在垃圾收集操作期间,子驱动器数据路由模块112可以使用该元数据将数据分类到适当的子驱动器。关于从主机接收的数据类型的元数据可以包含数据特征的标识,诸如数据是热数据或冷数据,或来自特定主机源的数据,或特定类型的数据(例如,数据库、视频等),或者对于数据流可以包含标识,该标识识别输入的数据分组属于两个或更多个分开的数据流中的哪个数据流。替代地,在主机未提供关于接收到的数据的数据类型的元数据时,控制器102可以查看数据的一个或多个方面或其在NVM系统100中的使用以确定数据的属性,诸如数据活动,也称为该数据的“温度”,并且然后记录所确定的数据温度,以将不同温度的数据分类到与这些不同温度相关联的相应的子驱动器中。
在一个实现方式中,当数据路由模块配置为确定数据类型而不是利用主机提供给它的提示或其它元数据时,在逻辑地址空间中,数据路由模块112可以单独地跟踪到单独逻辑块地址(LBA)的活动(例如,主机写入的数目或主机读取的数目),或者以连续LBA(在本文中称为LBA块)的预先设定部分中的较低粒度来跟踪。对于较低粒度追踪,然后子驱动器数据路由模块112可以将平均活动计数分配给包含在该特定LBA块中的所有LBA,然后可以将该平均活动计数用作温度的一个度量,当在子驱动器中启动垃圾收集操作时,基于与该LBA相关联的温度将与特定LBA相关联的数据移动到相同或另一子驱动器中的物理块。
子驱动器数据路由模块112也可以在NVM系统100中以不同方式管理子驱动器,使得仅一个子驱动器包含打开的主机写入块,因此是从主机接受主机数据的唯一的子驱动器。另外,除了接受主机数据的单个子驱动器,所有其它子驱动器包含打开的重定位块,以接受从垃圾收集操作重新定位的数据。换言之,在一个实现方式中,来自主机的所有数据必须首先进入专用于接收主机数据的单个子驱动器,并且所有其它子驱动器仅从其它彼此或单个专用子驱动器(在此称为分段子驱动器(staging sub-drive)))接收被重新定位的数据。
缓冲器管理器/总线控制114管理随机存取存储器(RAM)116中的缓冲器,并控制控制器102的内部总线判优。只读存储器(118)储存系统启动代码。虽然如在图2A中所图示的,与控制器102分离地定位,但是在其它实施例中,RAM 116和ROM 118中的一个或两个可以位于控制器102内。然而在其它的实施例中,RAM 116和ROM 118的部分可以都位于控制器102的内部和控制器的外部。另外,在一些实现方式中,控制器102、RAM 216和ROM 118可以位于分开的半导体裸芯上。RAM 116可以是一种或多种类型的RAM中的任一种,诸如SRAM或DRAM。
在NVM系统100中的RAM 116,(不管在控制器102外部、在控制器内部,还是在控制器102的外部和内部)可以含有若干项目,该项目包含用于NVM系统100的一个或多个逻辑到物理映射表的副本。RAM 116可以包含XOR缓冲器117,用于在垃圾收集过程期间收集从子驱动器117移动的有效数据的奇偶校验数据,其中XOR缓冲器117具有配置为接收一种数据类型的数据块段的所有XOR(奇偶校验)数据的固定大小,在将所收集的奇偶校验数据写入到与该数据类型相关联的指定的子驱动器中的重定位块之前,对于该数据块段的大组块纠错生成XOR(奇偶校验)信息。如下面更详细的描述,在一个实现方式中,XOR缓冲器117可以具有固定的大小,该大小被限制为对于将组成数据的块段的主机数据的多个裸芯页累积的XOR数据的裸芯页的大小。在该实现方式中,组成垃圾收集操作中被移动的单个数据类型的主机数据的块段的有效数据可以储存在RAM 116的任何其它部分中,诸如复制缓冲器119中。
替代地,XOR缓冲器117可以包含用于生成的所有XOR数据的空间以及用于生成XOR数据的一些或所有有效主机数据。因此,XOR缓冲器117可以是与预定量的XOR数据量的大小一样小的固定大小,并且仅含有XOR数据,或者在其它实施方式中可以与完整XOR条带(除了为该块段生成的XOR数据的裸芯页之外,由构成主机数据的块段的所有裸芯页组成的超级页)一样大。RAM 116还可以包含指示可用于非易失性存储器104中的当前未使用的物理块的空闲块列表121。
前端模块108包含主机接口120和物理层接口(PHY)122,其提供与主机或下一级储存控制器的电气接口。主机接口120的类型的选择可以取决于正在使用的存储器的类型。主机接口120的示例包含(但不限于)SATA、SATA Express、SAS、光纤通道、USB、PCIe和NVMe。主机接口120典型地便于传输数据、控制信号和时序信号。
后端模块110包含纠错控制器(ECC)引擎124,该纠错控制器引擎对从主机接收到的数据字节进行编码,并对从非易失性存储器读取的数据字节进行解码和纠错。使用单个异或(XOR)引擎125来为在XOR缓冲器117中累积的块段数据生成XOR数据。如下面更详细的描述,将单个类型的数据的块段“拉”入到单个缓冲器并且在XOR引擎125或其它形式的大数据组块校正引擎其它中处理该数据,然后拉取来自相同源块的相同或不同的单类型数据的另一块段,该技术允许减少用于XOR缓冲器的RAM 116的大小,并且允许单个XOR引擎125被重复用于非易失性存储器104的不同子驱动器中的不同目标块。
如本文所使用的,诸如XOR引擎125的大数据组块校正引擎指的是用于校正比ECC引擎124更大的比例错误(scale error)的校正机制。例如,可以使用ECC引擎124以及XOR引擎125来实现恢复由于某种原因已经损坏的数据(例如,由于非易失性存储器中的坏单元)的技术。ECC引擎124指的是用于应用被添加到随机读取或写入的数据的小组块的纠错码的硬件和/或软件,使得所得到的码字是相对小的。码字是数据的分组,该数据包含主机数据以及为保护该主机数据而生成的ECC数据。由ECC引擎124处理的每个ECC码字的示例性大小可以包含大小可以是1、2或4千字节(Kbytes)的主机数据和关联的ECC数据的分组。应用到主机数据以生成码字的ECC数据可以是数种类型的ECC中的任一种,诸如BCH码(或其它循环纠错码)或低密度奇偶校验(LDPC)码,其可用于恢复大数量的错误位,其中错误可能来自单独的存储单元。预期这种类型的ECC由ECC引擎124应用,并且在编程之前最后使用和在读取时首先使用。
尽管在本文中所讨论的大数据组块校正引擎(诸如XOR引擎125)本质上也是一种纠错码或ECC,但大数据组块引擎旨在实现用于保护比ECC引擎124更大的数据组块的代码。例如,可以使用XOR引擎125来生成防止整个页、块、平面或甚至裸芯的故障的代码。因此,基于这些“组块”应用代码,从而可以恢复整个组块。如本文所述(例如参见本文关于图13所描述的场景),示例性组块大小可以是裸芯页的大小,使得在不使用裸芯页本身的情况下可以恢复每个裸芯页,并且那么NVM系统100可以容忍裸芯故障。XOR编码是可用于大数据组块校正的代码中的简单的版本,其中每个组块的第N位被异或以创建XOR奇偶校验的第N位。使用XOR,典型地可以恢复组块中的一个,但不能恢复两个或更多的组块。其它的编码技术(除本文所描述的XOR编码以外或与本文所描述的XOR编码相互结合)也可以适用于大数据组块校正引擎125。例如,像Reed-Solomon(RS)的基于块的ECC可以用于恢复主机数据的多个组块。
命令定序器126生成要被发送到非易失性存储器裸芯104的命令序列(诸如编程和擦除命令序列)。存储器接口130将命令序列提供给非易失性存储器裸芯104,并从非易失性存储器裸芯104接收状态信息。在一个实施例中,存储器接口130可以是双数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制器层132控制后端模块110的总体操作。
在图2A中所图示的NVM系统100的附加组件包含介质管理层138,其进行非易失性存储器裸芯104的存储器单元的磨损均衡,并管理映射表和逻辑到物理映射或读取任务。NVM系统100还包含其它的分立组件140,诸如外部电气接口、外部RAM、电阻器、电容器或可以与控制器102相接口的其它的组件。在替代实施例中,物理层接口122、介质管理层138和缓冲器管理/总线控制器114中的一个或多个是在控制器102中非必要的可选组件。
图2B是更详细地图示非易失性存储器裸芯104的示例性组件的框图。非易失性存储器裸芯104包含外围电路141以及非易失性存储器阵列142。非易失性存储器阵列142包含用于储存数据的非易失性存储器单元。非易失性存储器单元可以是任何适合的非易失性存储器单元,包含二维和/或三维配置的NAND闪速存储器单元和/或NOR闪速存储器单元。外围电路141包含向控制器102提供状态信息的状态机152。非易失性存储器裸芯104还包含数据缓存156,该数据缓存156缓存从非易失性存储器阵列142的非易失性存储器单元中读取或编程到其中的数据。数据缓存156包括用于非易失性存储器阵列142的存储器页中的数据的每位的数据锁存器158的集合。因此,数据锁存器158的每个集合在宽度上可以是页,并且数据锁存器158的多个集合可以包含在数据缓存156中。例如,对于被布置为每页储存n位的非易失性存储器阵列142,数据锁存器158的每个集合可以包含N个数据锁存器,其中每个数据锁存器可以储存1位的数据。
在一个实现方式中,单独的数据锁存器可以是具有两个稳定的状态并可以储存1位的数据的电路,诸如由NAND门构成的置位/复位或SR锁存器。数据锁存器158可以用作仅在通电时保留数据的一种类型的易失性存储器。若干种已知类型的数据锁存器电路中的任何一种都可以用于数据锁存器158的每个集合中的数据锁存器。每个非易失性存储器裸芯104可以具有其自己的数据锁存器158的集合以及非易失性存储器阵列142。外围电路141包含向控制器102提供状态信息的状态机152。外围电路141还可以包含可以由控制器102用来向锁存器158传输数据和从锁存器158传输数据的附加输入/输出电路,以及并行操作的感测模块阵列,用以感测在非易失性存储器阵列142中的存储器单元的页的每个非易失性存储器中的电流。每个感测模块可以包含感测放大器,以检测与相应的感测模块通信的存储器单元的导通电流是处于参考电平之上还是之下。
在图3中图示了示例性NAND阵列。尽管在NAND阵列中提供了大量的全局位线,但是为简化说明,在图3中仅示出了四个这样的线302-308。若干串联连接的存储器单元串310-324连接在这些位线中的一个与参考电位之间。使用存储单元串314作为代表,多个电荷储存存储器单元326-332在串的任一端与选择晶体管334和336串联连接。在串的选择晶体管导通时,串连接在其位线与参考电位之间。然后该串内的一个存储器单元被编程或读取一次。
图3的字线338-344单独地延伸跨越存储器单元的若干串中的每串中的一个存储器单元的电荷储存元件,并且栅极346和350控制在串的每个端部处的选择晶体管的状态。使共享公共字线和控制栅极线338-350的存储器单元串形成被一起擦除的存储器单元的块352。此单元的块含有一次可物理擦除的最小数目的单元。一次编程存储器单元的一行(沿字线338-344中的一个字线的存储器单元)。常规的,以规定的顺序编程NAND阵列的行,在这种情况下,开始于沿字线344的行,字线344最靠近串的连接到地或另一公共电位的一端。接下来编程沿字线342的存储器单元的行,以此类推,遍及块352。
第二块354是类似的,其存储器单元的串被连接到与第一块352中的串相同的全局位线,但具有不同的字线集合和控制栅极线。通过行控制电路将字线和控制栅极线驱动到其适当的操作电压。如果系统中存在多于一个平面,则一个存储器架构使用在他们之间延伸的公共的字线。替代地,可以存在多于两个平面共享公共字线。在其它的存储器架构中,单独平面的字线被分开驱动。尽管图3中所图示的示例性NAND阵列已经被用于描述在正向上将数据写入到存储器块的过程,但为了在正向或反向上将数据写入存储器块,控制器可以改变存储器单元串的哪一端连接到地或其它公共电位。
在非易失性存储器104中的非易失性闪速存储器阵列142可以被布置在存储器单元的块中,其中存储器单元的块是擦除单位(即,一起物理擦除的存储器单元的最小的数目)。然而,为了增加并行性,可以以更大的元块单位操作块。可以将来自存储器单元的至少两个平面中的每一个平面的一个块逻辑连接在一起以形成元块。参照图4,示出了代表性的闪速存储器单元阵列的概念图示。存储器单元的四个平面或子阵列400、402、404和406可以在单个集成存储器单元芯片上、在两个芯片(在每个芯片上有两个平面)上或在四个分开的芯片上。对于下面的讨论,特定的布置是不重要的,并且在系统中可以存在其它数目的平面。平面可以被单独地分割成图4中示出的长方形的存储器单元的块,例如位于相应的平面400、402、404和406中的块408、410、412和414。在每个平面中可以存在几十个或几百个块。可以将块逻辑连接在一起以形成可以被作为单个单位擦除的元块。例如,块408、410、412和414可以形成第一元块416。用于形成元块的块不需要局限于处于其相应的平面内的相同的相对位置,如在由块420、422、424和426组成的第二元块418中所示出的。
单独块为了操作目的进而被分割成存储器单元的页,如在图5中所图示的,其中页可以对应于单独字线(诸如图4所示的块的字线338-344中的一个)。例如,块408、410、412和414中的每一个的存储器单元被各自分割成八个页P0-P7。替代地,在每个块内可以存在16、32或更多的存储器单元的页。页是块内数据编程的单位,含有一次编程的最小的数据量。一次可以读取的最小的数据单位可以小于页。元页500在图5中图示为由四个块408、410、412和414中的每个块的一个物理页形成。元页500包含在四个块的每个块中的页P2,但是元页的页未必需要在每个块内具有相同的相对位置。尽管可以编程更大的组群,但元页典型地是编程的最大单位。在图3-图4中所公开的块在本文中称为物理块,因为他们涉及如上所述的物理存储器单元的组。如本文所使用的,逻辑块是限定为具有与物理块相同大小的地址空间的虚拟单位。每个逻辑块可以包含与从主机接收的与数据相关联的一系列逻辑块地址(LBA)。然后将LBA映射到物理储存数据的非易失性存储器系统100中的一个或多个物理块。
在本文中,术语超级块(superblock)可以与术语元块(metablock)互换使用。超级块是分配构成块中的一个以专门含有元数据的元块,该元数据是关于元块的所有剩余的构成块的奇偶校验信息。例如,超级块的指定奇偶校验块的每页可以含有超级块的剩余块的页中的用户数据的异或(XOR)数据。在超级块中指定含有奇偶校验数据的块典型地是最后一个块,但是在其它的实现方式中可以使用任何块。附加地,超级块可以跨过多个裸芯,例如多达64个裸芯或更多。
参照图6,示出了超级块600及其组成部分的示例。如上所述,超级块600可以是固定数目的数据物理块602以及一个XOR块604,该XOR块604含有超级块600中的每个其它的块602的每个页的ECC数据,该ECC数据例如是异或(XOR)数据,以提供防止块故障的保护。每个块602由多个页606组成,每个页包含多个数据的片段608。每个数据片段608是与逻辑块地址(LBA)相关联的数据量,例如4千字节的数据片段。在图6的示例性数据片段608中所示出的LBA被提供简单地作为示例,以示出页606中的数据片段608与不连续的LBA相关联的情况。
图7提供了图6的超级块600的视图,图示了超级页(在本文中也称为XOR条带702)的概念,该超级页包括有效主机数据的块段(元页)706和为超级页中的有效主机数据生成的XOR数据页704。在一个实现方式中,超级页或XOR条带702是在垃圾收集操作期间对打开的重定位超级块的数据写入的粒度。在该示例中,每个XOR条带702包含具有31个主机数据页606的元页706以及一个XOR数据页704。提供了超级块600的使用32个块布置的示例仅用于说明,并且在不同的应用中可以实现为超级块600的其它预定大小。另外,虽然XOR数据页704不能从XOR缓冲器117写入,直到已经接收到主机数据页606的完整元页706,但是其中可以写入XOR数据的物理块602可以是任何物理块,而未必是NVM系统中的最后一个物理块。另外,每个XOR条带702的XOR页704不需要被写入到相同的物理块602。XOR数据页704可以被储存在相应的XOR条带702内的任何块602中。
在图8中,示出了适合的非易失性存储器800(对应于图2A-图2B中的非易失性存储器104)的概念图示。非易失性存储器800可以被分割成用于储存数据的子驱动器,包含分段子驱动器802和三个附加子驱动器804、806、808,附加子驱动器配置为储存与被确定具有特定数据类型的LBA相关联的数据。在一个实现方式中,仅分段子驱动器被示出为具有打开的主机写入块803,因为所有的主机数据写入专门指向分段子驱动器802。控制器102将在非易失性存储器系统100中被重新定位的数据仅路由到其它子驱动器,所以在分段子驱动器中不维持打开的重定位块。在其它的实现方式中,不需要分开的分段子驱动器,并且所有的子驱动器可以与来自每个其它子驱动器的唯一数据类型或多种数据类型相关联。在不同的实现方式中,任何存在多个垃圾收集目标的系统都可以利用上述系统和方法,其中多个垃圾收集目标具有要被重新定位的数据的单个源或多个源,并且对XOR引擎或XOR缓冲器空间的数目存在限制。单个源非分段驱动器应用的一个示例是碎片整理。多个源的示例是多个子驱动器同时的垃圾收集(其中多个源和目标在子超级块间隔处使用)。
子驱动器802-808中的每个子驱动器是一起管理的超级块600的集合。在不同的实现方式中,可以存在多于或少于图8中所示出的子驱动器的数目。另外,在非易失性存储器系统100中,子驱动器802-808中的每个子驱动器可以存在于分开的非易失性存储器裸芯104中、相同的非易失性存储器裸芯中,或每个子驱动器跨越多个非易失性存储器裸芯104。每个子驱动器可以包含仅一种类型的存储器单元(诸如SLC或MLC)或多种类型的存储器单元。
从主机(未示出)到子驱动器以及子驱动器之间的数据的路由,由控制器102中的子驱动器数据路由模块112管理。在一个实现方式中,子驱动器数据路由模块112可以配置为,使得初始从主机接收到非易失性存储器800中的所有的数据仅被发送到分段子驱动器802。不管进入数据的特定LBA的数据类型如何,从主机接收到的所有数据要写入到分段子驱动器中且不会从分段子驱动器802中移动,除非需要在分段子驱动器802中进行垃圾收集操作。
在分段子驱动器中进行垃圾收集操作是必要的时,数据路由模块112可以选择分段子驱动器802中的单个源块(例如,源超级块600),并基于有效数据的数据类型仅将有效数据复制到其它子驱动器,使得在垃圾收集操作中按数据类型完成有效数据的分类。尽管源超级块600含有主机数据和用于该主机数据的XOR数据,但除非需要其它恢复超级块600中的其它不可读取的数据,XOR数据被简单忽略,并不被视为源超级块中的有效数据部分。在一个实现方式中,由NVM系统100使用的逻辑到物理映射表可以配置为,使得XOR数据不被标记为有效数据,以便垃圾收集将不会无意中尝试重新定位XOR数据。另外,子驱动器数据路由模块112配置为使得,如果垃圾收集操作在其它子驱动器804-808中的任何子驱动中变成必要的,则来自所选子驱动器804-808中的已识别源超级块600的有效数据可以仅被移动到与有效数据的数据类型相关联的子驱动器的打开的重定位块中。
如本文中更详细的描述,用于管理垃圾收集操作的混合推拉数据管理方案最小化了NVM系统100的缓冲器大小和XOR引擎要求。这可以通过允许来自源超级块的有效数据经由易失性存储器缓冲器(诸如RAM 116中的XOR缓冲器117)的数据传输来实现,该数据传输仅以由相同数据类型的主机数据的元页量706组成的块段的增量来进行,随后进行异或以生成XOR页704。块段(元页706)与生成的XOR数据704的页的总和生成完整的XOR条带702。在一个实现方式中,NVM系统100仅包含单个XOR缓冲器117以及单个XOR引擎125。从所选源块中的数据片段单独地聚集单个数据类型的元页706,并且从所选源块(或在需要多于一个源块来找到足够的当前数据类型的数据来填充超级页时的源块)经由易失性存储器中的单个共享的XOR缓冲器并且经由单个XOR引擎125而顺序地处理单个数据类型的每个元页,该XOR引擎将生成XOR数据以添加到有效主机数据,并且在适当的数据类型子驱动器的期望的重定位超级块600中的完成XOR条带(超级页)702。
更具体地,在一个实现方式中,单个数据类型的有效主机数据被累积到易失性存储器(RAM 116)中,并且对于该有效主机数据生成的XOR数据被累积到固定大小的XOR缓冲器117中,直到该单个数据类型的预定大小的元页706被获取,并且在XOR引擎125中被处理从而获得XOR页704。一旦在XOR缓冲器117中被完全累积,则该XOR页704被写入到与该数据类型的数据相关联的子驱动器的打开的重定位块中以完成超级页702(XOR条带)。
在用XOR数据填充XOR缓冲器117并然后将该XOR数据写入到重定位块以完成XOR条带之后,XOR缓冲器被释放,并可以用于对于来自源块的下一批次的有效数据而生成的新XOR数据。下一批次有效主机数据是可以与先前的超级页相同或不同的数据类型的单个数据类型的数据,且被复制到RAM 166并通过XOR引擎125处理到另一XOR条带702中,该另一XOR条带被复制到与适当的数据类型相关联的子驱动器的打开的重定位块中。这种将来自源块的有效数据的仅一部分(例如,单独的超级页)顺序处理并储存到易失性存储器缓冲器中并且将该部分写入到适当的重定位块,可以避免对用于所有子驱动器的分开的易失性存储器缓冲器的需求,该需求在源块中的所有有效数据一次被推出并且仅在特定数据类型的整个超级块被累积时才被处理时变得必要。将来自源数据块中的单个数据类型的有效主机数据以相对较小的数量拉取到易失性存储器缓冲器116中,然后将已处理的主机数据和形成所得到的XOR条带的XOR数据处理并写入到适当的重定位块中,与传统的拉操作相比,这可以减少累积单个数据类型的有效数据量的必要的源块的数目,在传统的拉操作的情况下,填充重定位超级块所需的整个超级块必须从多个源块聚集。
图8示出了对于一个实现方式的进入非易失性存储器800的子驱动器802-808之中和之间的数据流可能性的示例。所有的主机数据810进入到分段子驱动器802中,并没有其它的子驱动器动从主机直接接收数据。当在分段子驱动器802中启动垃圾收集操作时,被选作分段子驱动器802内的操作的源超级块的超级块中的所有有效数据,沿着来自分段子驱动器802的数据路径812中适当的一个路径被传输到其它子驱动器804-808中的一个或多个。对于从分段子驱动器802重新定位的有效数据的每片段的目标子驱动器804-808的选择是基于分配给与该数据片段相关联的LBA的数据类型,或者对于与该数据片段相关联的LBA确定的数据类型。在分段子驱动器802中不支持打开的重定位超级块,并且因此在一个实现方式中不允许将数据重新定位回到分段子驱动器802内的另一超级块,使得分段子驱动器802中的垃圾收集操作总是导致有效数据被重新定位到另一子驱动器804-808中。
与此相反,当在子驱动器804-808中的任何其它子驱动器中启动垃圾收集操作时,来自已识别的子驱动器804-808的(多个)所选源超级块的有效数据可以被重新定位在已识别的子驱动器内,或被重新定位到除了分段子驱动器以外的任何子驱动器,如重定位路径814和816所示。再一次地,基于与该数据片段608相关联的LBA的数据类型,并且在任何特定时刻仅以相同数据类型的超级页和其XOR数据的量而不是超级块的量,将来自所选源超级块600的有效数据的单独片段608移动到特定子驱动器。
在一个实施例中,分配给NVM系统100中的每个子驱动器804、806、808(除了没有分配数据类型的分段子驱动器802之外)的一个或多个数据类型可以在制造时被设置为预定值。在一个实现方式中,每个数据类型可以仅被分配到一个子驱动器中。在替代实施例中,控制器102可以使用自适应算法来搜索优化的数据类型,以分配给每个子驱动器804、806、808。静态数据类型的示例可以包含数据流标识符、文件类型(基于提供给NVM系统100或由NVM系统100确定的文件扩展数据)、或一旦分配后就不变化的其它数据类型。基于动态标准的数据类型的一个示例是数据“温度”,其中温度可以是特定LBA处的数据被存取或写入的频率。在不同的实施例中,也可以将其它的数据类型(诸如随机数据或顺序数据)储存到相应的子驱动器中。
除了分段子驱动器802以外的子驱动器804、806、808可以仅与单个数据类型的数据相关联,其中每个子驱动器含有与每个其它子驱动器的数据类型不同的数据类型,或者子驱动器中的每一个可以专门与多个唯一的预定数据类型相关联,其中预定数据类型中的每一个可以仅在子驱动器中的一个中被发现。在不同的实现方式中,对子驱动器的数据类型的分配可以是静态的或动态的。例如,如果分配给每个子驱动器的数据类型与上面限定的“温度”相关联,则可以为每个子驱动器分配在NVM系统的整个寿命期间保持静态的固定的温度范围或专门与子驱动器相关联的温度范围,其可以基于温度的变化分布在NVM系统100的使用过程中动态地修订。
图9图示了利用具有如上所述的子驱动器和数据结构的NVM系统100的方法。参照图9,描述了非易失性存储器800的子驱动器802-808中的数据流的一个实现方式的流程图。从主机接收数据,并且控制器102的子驱动器数据路由模块112仅将接收到的主机数据路由给分段子驱动器以进行储存(在902、904处)。如上所述,在一个实现方式中,仅将分段子驱动器802配置为具有打开的主机写入超级块803以接收主机数据和由XOR引擎125为该主机数据生成XOR数据,并且没有其它子驱动器804、806、808被配置为直接接收主机数据,使得不需要维持除分段子驱动器802中的主机写入块之外的附加的主机写入块。周期性地,例如在对分段子驱动器802的每次主机写入之后,控制器102可以确定对于任何子驱动器802-808是否需要进行垃圾回收操作(在906处)。一个适合的垃圾收集触发可以是整个非易失性存储器104中的空闲块的数目低于预定的最小值。如果控制器102基于空闲块列表121检测到可用的空闲块太少,则可以启动垃圾收集操作。另一个垃圾收集触发可以是子驱动器中的过度调配(overprovisioning)量超过预定阈值,其中子驱动器的过度调配在本文中限定为物理储存容量与有效数据的比率。空闲块的数目或过度调配水平只是垃圾收集触发器的一些示例,并且可以预期不同或附加的垃圾收集触发器。
一旦被触发,垃圾收集操作中的第一步是要确定非易失性存储器104中的子驱动器在何处需要进行垃圾收集操作,并然后从该子驱动器中选择源超级块600(在908处)。一个子驱动器选择过程可以包含选择具有多于预定的有效页数目的子驱动器。在不同的实现方式中,可以使用若干子驱动器选择标准中的任何子驱动器选择标准。一旦子驱动器被识别,则可以从该子驱动器中选择源超级块。可以基于诸如最近最少被写入的超级块、具有最多废弃数据的超级块的若干标准中的任何标准,或基于不同的或组合的选择标准来进行源超级块选择。
不管被利用的子驱动器和超级块选择过程如何,在源超级块600被控制器102选择时,源超级块600的每个块602中的每个有效数据片段608的数据类型被确定(在910处)。NVM系统100可以配置为在垃圾收集操作期间将若干预定数据类型中的任何数据类型分类到预定接收该数据类型的子驱动器中。例如,可以对诸如文件类型、数据流归属(对于流式数据)、存取频率(“温度”)、随机或顺序数据以及任何其它数据类型特征的数据类型信息进行分类。对在NVM系统100中被分类的预定数据类型的数据类型的确定可以通过(例如伴随着在分段子驱动器802中接收到的数据的数据头信息)解释从主机与该数据一起接收到的元数据来完成,或者可以通过观察数据使用而生成,例如由控制器102跟踪NVM系统100中的数据存取频率。
在识别出所选源超级块600中的有效数据片段中的预定不同数据类型之后,控制器102确定有多少个预定大小的完整的元页706,换言之,每个数据类型的XOR条带702的非XOR数据部分可以从可用的有效数据片段608中聚集。控制器102接下来选择具有完整的数据元页706的数据类型,并将该数据复制到由子驱动器共享的易失性存储器(RAM116)(在912处)。当所选的数据类型的有效数据的每个页被累积在易失性存储器中(诸如在复制缓冲器119中)时,XOR引擎125(图2A)生成XOR数据页704的一部分。每个有效数据页可以立即写入到在适当的子驱动器中被聚集的XOR条带702,或者在其它的实现方式中,XOR条带702的有效数据的所有页可以首先在易失性存储器中被累积,并且当XOR缓冲器117中的XOR数据是完整的时仅被写入到XOR条带702(在914处)。控制器102通过写入来自XOR缓冲器117的XOR数据,来完成将XOR条带702写入到适当的子驱动器的打开的重定位块805、807、809中(在916处)。如果更多的有效数据保留在所选的源块中,则控制器102可以从源超级块中选择相同或不同的数据类型,并重复从源超级块中拉取该数据类型并为该数据生成XOR数据的过程(在918处)。
在其中易失性存储器116中的XOR缓冲器117的大小设定为保存对应于整个XOR条带702的数据量(主机和生成的XOR数据)的实现方式中,则所选数据类型的主机数据的所有页606和相关联的XOR数据704可以首先缓存在XOR缓冲器117中,并且然后在接收到最后一个主机数据和对于该XOR条带生成的XOR数据之后,一次写入非易失性存储器。替代地,在接收到用于XOR条带702的主机数据的每一页606或其它较小增量,并为接收到的数据的该页或较小增量生成奇偶校验信息之后,可将接收到的数据的该页或较小增量储存在RAM 116中的除了固定大小XOR缓冲器117以外的一般的位置。在已经接收到该XOR条带702的所有数据之前,该页或较小的增量可以以零碎(piece-meal)形式从RAM 116复制到非易失性存储器中,而对于该数据生成的XOR数据被累积在固定大小的XOR缓冲器117中。在其它实现方式中,在固定大小XOR缓冲器117被调整大小以保存XOR条带的全部XOR数据以及XOR条带的有效主机数据的全部或部分情况下,整个主机数据和生成的XOR数据在被写入非易失性存储器中的XOR条带之前可以首先在XOR缓冲器117中累积。
可以想到的是,有效XOR缓冲器117的最大大小是等于单个XOR条带702的空间量,并且XOR缓冲器117的最小大小可以是等于对于该XOR条带702生成的XOR数据页704的空间量(有时称为XOR上下文),并且该XOR条带702的全部有效主机数据被储存在RAM 116中的其它可用空间中。在XOR缓冲器117处于如上所述的最小大小的实现方式中,可以计算和更新对于在RAM116中接收的每个单独主机数据页606的XOR数据。然后主机数据页606可以在处理下一个主机数据页之前被立即写入非易失性存储器104,而在XOR引擎125中生成的最新XOR数据被保留在XOR缓冲器117中,并被添加到在该XOR条带702的XOR页704中的先前的累积奇偶校验信息。仅在接收到该XOR条带706的最后的主机数据页606之后,才可以将XOR数据页704写入到非易失性存储器104中。
在一个实施例中,RAM 116中的固定大小的XOR缓冲器117可以与用于储存每个XOR条带702的主机数据页606的RAM 116的部分分离。在此实现方式中,RAM 116可以将用于生成当前XOR条带702的单个数据类型的主机数据存储在RAM 116中的任何可用位置,同时累积单个数据类型的XOR数据,该单个数据类型对应于对XOR缓冲器117中的当前XOR条带被累积的单个数据类型。单个XOR缓冲器117将被限制为当前的XOR条带,并且在已经接收到对于XOR条带702的所有主机数据页之后被释放。该XOR条带702的主机数据页可以已经被写入到非易失性存储器中,因为它们已经被接收和处理,或者在它们全部被累积之后被一次累积和写入。
被设计为在NVM系统100中被保护的主机数据的量可以规定为XOR缓冲器117所选的固定大小。在图7的示例中,由XOR数据保护的数据量是裸芯页(数据页606)。在这种情况下,在XOR缓冲器117中为XOR数据保留的空间量(或者如果仅XOR数据要被储存在XOR缓冲器中,则是XOR缓冲器117的总大小)是页。如果期望保护两个主机数据页,则XOR缓冲器117将需要包含XOR数据的两个页。假设存储器中的全体RAM 116的数量有限,则将固定大小的XOR缓冲器117配置为具有更多RAM空间,该RAM空间将从用于复制缓冲器119的RAM中取走,以用于保存被处理的单个数据类型的有效数据。
在一个实施例中,每个数据类型的所有的完整元页706量被顺序地复制到RAM 116中,生成XOR条带702,其中XOR条带702的XOR页704部分由对源超级块的单个数据类型的有效数据的元页706的XOR操作生成,并且当来自RAM 116中的XOR缓冲器117的完整的XOR数据被写入到适当的打开的重定位超级块时,XOR条带702在适当的打开的重定位超级块805、807、809中被完成。在继续垃圾收集第二数据类型的所有完整的元页批次数据之前,对于第一数据类型的所有完整元页增量,在所选源块的垃圾收集期间,可以继续该序列。可以重复经由单个XOR缓冲器117和单个XOR引擎125的顺序储存和处理以及所得到的XOR条带的储存,直到已经顺序地处理存在的每个数据类型的所有完整的元块批次为止。替代地,不是在继续处理下一个数据类型的所有完整元块批次的数据之前处理一个数据类型的所有完整元块批次,而是控制器102可为每个数据类型的完整元块批次交织创建和储存XOR条带。
参照图10,示出了源超级块1002中的不同数据类型的交织垃圾收集的简化图示。在此示例中,分开数据类型的XOR条带702与源超级块1002交织,其中第一垃圾收集循环用单个XOR缓冲器117和单个XOR引擎125生成数据类型A的XOR条带702,并将其存储在与数据类型A相关联的打开的重定位块1004中,之后是到重定位块1006的数据类型B的第二垃圾收集循环。随后,控制器102则可以拉取数据类型C的数据以生成数据类型C的XOR条带702,并将其储存在重定位块1008中,其中每个重定位块1004、1006、1008处于与相应的数据类型相关联的分开的子驱动器中。可以重复类型A的数据、然后是类型B、然后是类型C的数据的这个移动XOR条带702的序列,直到每个数据类型的所有完整的元块批次的有效数据已经耗尽为止。还可以预期不同数据类型XOR条带702的其它的交织模式。请注意,在此实现方式中对于每个数据类型的垃圾收集操作不重叠,因为易失性存储器116中的单个XOR缓冲器117是可用的并且使用单个XOR引擎125,诸如图2A中所示。
在使用上述推拉技术进行垃圾收集期间的其它形式的数据类型分类可以包含,将某些子驱动器与单个数据类型相关联,同时将其它子驱动器与多个数据类型相关联,每个数据类型与专门相关联于任何其它子驱动器的一个或多个数据类型不同。例如,如图11所示,如果要分类的数据类型基是于数据流标识(诸如不同源或文件的流式视频数据),则可能有一些流太稀疏而无法高效地提供填充XOR条带的完整元块批次。在这些实例中,将这些稀疏流分离到唯一重定位块的好处可能受到限制。相应地,诸如重定位块1104之类的一个子驱动器中的重定位超级块可专用于接收较大流(流001)的XOR条带1108,而不同子驱动器中的重定位块1106可以与被聚集到混合XOR条带1110的多个混合数据流(流002和003)相关联。上述的推拉技术将如前所述实施,但具有用于包含多个预定数据流类型的混合流重定位块(和相关联的子驱动器)的XOR条带。例如,数据类型可以由主机提示被提供在一段或多段数据的数据头(header)中,或者可以由控制器102使用若干预定观察方法中的任何一种来确定。例如,数据流可以通过主机在写入数据时发送的标签来识别。
如图12所示,即使元数据或其它主机提示限于逻辑块地址(LBA)或其它逻辑到物理地址信息,NVM系统100也能够检测到子驱动器(诸如,分段子驱动器)的块中存在相当大的顺序数据,该顺序数据与随机数据混合在一起。为了本公开的目的,可以将随机数据视为具有少于预定数目的连续逻辑地址的LBA序列的数据。例如,在一个实现方式中,可以认为价值为相邻LBA数据的裸芯页(例如,32K字节)是连续的,并且可以与小于裸芯页组块中随机写入的数据相分离。当垃圾收集操作被触发并且子驱动器和源块1202被选择时,然后控制器102可以使用有限的LBA信息来将顺序数据和随机数据分离到相应的XOR条带702,该XOR条带702然后将分别写入到专用于接收顺序数据的子驱动器中的顺序重定位块1204,或写入到专用于仅接收随机数据的子驱动器中的随机数据重定位块1206。
不管将数据类型分离到分开的重定位块和相关联的子驱动器,或者用于在不同数据类型的XOR条带702之间进行切换的交织技术,在一个实现方式中,在每个数据类型的所有完整的元块批次都已经被垃圾收集之后,对于源块中的每个数据类型的剩余数据,可以选择下一源块,从该下一源块累积完整的元块批次,并为原始源块中的该剩余数据生成XOR数据条。以这种方式,原始源块可以收集其所有有效数据垃圾,使得在继续移动下一个源块中的各种数据类型的完整元块增量之前,原始源块可以被放置在空闲块列表中以供重复使用。因此,如上所述,在来自所选源超级块600的所有有效数据片段608已经被重新定位到XOR条带702增量中的适当的子驱动器之后,源超级块600可以被添加到维持在RAM 116中的空闲块列表121。根据需要,空闲块列表121中的块稍后可以在任何子驱动器中使用。
在一个实现方式中,已经描述了在在易失性存储器116中的NVM系统100,该NVM系统100具有单个XOR缓冲器117,以及用于为一个或多个预定数据类型的每个XOR条带生成XOR数据的单个XOR引擎125。这种NVM系统架构可以用如上所述的推拉垃圾收集技术来完成,其通过单独地且顺序地处理较小大小的XOR条带来最小化所俘获的过容量(over-capacity)。与等待进行XOR保护直到数据类型的完整数据块已被累积相比,较小大小的XOR条带可以通过在该数据类型可以写入到目标子驱动器之前需要更少的特定数据类型的聚合,而允许更快地清空源块。
在图13中示出了,以上讨论的混合推拉布置的大数组据块校正数据如何可以与较小比例的ECC保护结合使用的示例。图13中的流程包含,在一个实现方式中用于写入数据(例如,如上所述从一个或多个源超级块复制)以及用于读取数据的操作的示例性顺序的两者。图13的特定示例以使用上述推拉技术写入数据开始,并且然后说明可以如何使用针对已经损坏超出附加的较小比例ECC保护的校正能力(也称为不可校正的ECC或UECC错误)的数据的XOR保护的大组块数据校正来进行恢复。
参照图2A和图13,随着来自每个逻辑页1302的相同逻辑位置的数据1304被写入到RAM 116的XOR缓冲器117中,XOR数据(也称为奇偶校验组(P)1308)由XOR引擎125生成。通过在XOR引擎125中进行XOR操作1310,作为数据写入序列中的第一步骤形成该XOR数据1308。在生成ECC之前,加载到每个裸芯页1306中的每个码字1312的数据1304中的所有数据1304被异或。然后在ECC生成步骤中经由ECC引擎124生成ECC以生成新的码字1316。
在图13所图示的过程中,从原始码字1312一起异或的数据1304被示出为具有相同的背景图案以及对应的XOR数据(P)1308。然后生成对于初始数据1304以及XOR奇偶校验数据1308的ECC。初始数据1314和在ECC引擎124中生成并被添加到初始数据1314的相关联的ECC数据形成新的ECC码字1316。然后,码字1316被分别写入到非易失性存储器104中的适当的页1306。XOR数据1308也通过ECC引擎124被处理以生成新的码字1316,该新的码字1316也被存储在非易失性存储器104中以完成如先前所讨论的XOR条带。
在图13的示例中继续沿着流程路径向下,当读取来自XOR条带的数据时,码字1316首先从非易失性存储器104中读出,并且然后通过ECC引擎124处理,以纠正在读取过程期间可能在码字的数据1304中发现的较小比例错误中的任何错误。如果在组成裸芯页1306的物理页中的一个物理页内发现坏单元1318,并且发现了不可由码字1316的ECC数据1314纠正的错误1320,则大数据组块校正数据(在本文中是XOR奇偶校验)可用于通过XOR引擎125恢复数据。在图13的示例中,可以从XOR条带中的所有其它裸芯页1306(也被称为奇偶校验组)中读取裸芯页中具有相同偏移的所有其它码字数据(由图13中的相同背景图案指示)。在所有这些其它码字1316已经经由ECC引擎124通过初始纠错步骤之后,数据部分1304在XOR引擎125处的XOR操作1310中被一起异或,以生成恢复的码字的数据加载1322。
在本申请中,诸如本申请中所描述的半导体存储器装置可以包含诸如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)装置的易失性存储器装置,诸如电阻随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪速存储器(其也可以被认为是EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”)的非易失性存储器装置,以及其它能够储存信息的半导体元件。每种存储器装置可以具有不同的配置。例如,可以以NAND或NOR配置来配置闪速存储器装置。
存储器装置可以由无源和/或有源元件以任何组合形成。作为非限制性示例,无源半导体存储器元件包含ReRAM装置元件(其在一些实施例中包含诸如反熔丝、相变材料等的电阻率切换储存元件)以及可选地包含转向元件(诸如二极管等)。另外作为非限制性示例,有源半导体存储器元件包含EEPROM和闪速存储器装置元件,其在一些实施例中包含含有电荷存储区域的元件,诸如浮置栅极、导电纳米颗粒或电荷储存电介质材料。
多个存储器元件可以经配置,以使得他们串联连接或以使得每个元件可单独地存取。作为非限制性示例,以NAND配置的闪速存储器装置(NAND存储器)典型地含有串联连接的存储器元件。NAND闪速存储器阵列可以经配置,以使得阵列由存储器的多个串组成,其中串由共享单个位线且作为组存取的多个存储器元件组成。替代地,存储器元件可以经配置,以使得每个元件可单独地存取(例如,NOR存储器阵列)。NAND和NOR存储器配置是示例性的,并且存储器元件可以以其它方式配置。
位于基板内和/或上方的半导体存储器元件可以以二维或三维布置,诸如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件被布置在单个平面或单个存储器装置级中。典型地,在二维存储器结构中,存储器元件布置在基本平行于支撑存储器元件的基板的主表面延伸的平面(例如,在x-z方向平面中)。基板可以是在其上形成存储器元件层的晶片,或者可以是在形成存储器元件之后附连到存储器元件的载体基板。作为非限制性示例,基板可以包含诸如硅的半导体。
存储器元件可以以有序阵列(诸如多个行和/或列)布置在单个存储器装置级中。然而,存储器元件可以以非规则或非正交配置来布置。存储元件可以各自具有两个或更多个电极或接触线,诸如位线和字线。
三维存储器阵列经布置,以使得存储器元件占用多个平面或多个存储器装置级,从而形成三维(即,在x、y和z方向上,其中y方向基本垂直于基板的主表面并且x和z方向基本平行于基板的主表面)结构。
作为非限制性示例,三维存储器结构可以作为多个二维存储器装置级的堆叠而垂直布置。作为另一非限制性示例,三维存储器阵列可以作为多个垂直列(例如,列基本垂直于基板的主表面延伸,即在y方向上)而布置,其中每列中每列具有多个存储器元件。列可以以二维配置(例如,在x-y平面)布置,导致存储器元件的三维布置,其中元件位于多个垂直堆叠的存储器平面上。存储器元件在三维上的其它配置也可以构成三维存储器阵列。
作为非限制性示例,在三维NAND存储器阵列中,存储器元件可以耦接在一起以在单个水平(例如x-z)存储器装置级内形成NAND串。替代地,存储器元件可以耦接在一起以形成遍历多个水平存储装置级的垂直NAND串。可以设想其它的三维配置,其中一些NAND串含有单个存储器级中的存储器元件,而其它串含有跨过多个存储器级的存储器元件。三维存储器阵列还可以以NOR配置和以ReRAM配置设计。
典型地,在单片三维存储器阵列中,一个或多个存储器装置级形成在单个基板上方。可选地,单片三维存储器阵列还可以具有至少部分地位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可以包含诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器装置级的层典型地形成在阵列的下面的存储器装置级的层上。然而,单片三维存储器阵列的相邻存储器装置级的层可以被共享或者具有存储器装置级之间的中间层。
然后再次,二维阵列可以分开形成,并且然后封装在一起以形成具有存储器的多层的非单片存储器装置。例如,可以通过在分开的基板上形成存储器级并且之后将存储器级堆叠在彼此顶部,从而构件非单片堆叠存储器。在堆叠之前,可以将基板薄化或从存储器装置级移除,但是由于存储器装置级初始在分开的基板上形成,所以所得到的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以形成在分开的芯片上,并且然后封装在一起以形成堆叠芯片存储器装置。
典型地,需要关联电路来操作存储器元件和用于与存储器元件通信。作为非限制性示例,存储器装置可以具有用于控制和驱动存储器元件以完成诸如编程和读取的功能的电路。此关联的电路可以在与存储器元件相同的基板上和/或在分开的基板上。例如,用于存储器读取-写入操作的控制器可以位于分开的控制器芯片和/或在与存储器元件相同的基板上。
本领域的技术人员将认识到,此发明不限于所描述的二维和三维示例性结构,而是涵盖在本文所描述的发明的精神和范围内并且如本领域技术人员所理解的所有的相关的存储器结构。
旨在前面的详细描述被理解为本发明可以采用的所选形式的图示,而不是作为本发明的限定。仅包含旨在限定要求保护的发明的范围的以下权利要求(包含所有等同物)。最后,应该注意的是,本文描述的任何优选实施例的任何方面可以分开使用或彼此组合使用。
Claims (20)
1.一种用于管理存储器系统中的数据的方法,所述方法包括:
在所述存储器系统处接收主机数据写入,所述存储器系统具有与多个非易失性存储器子驱动器通信的控制器;
检测所述多个子驱动器中的第一子驱动器的垃圾收集触发;
响应于检测到所述垃圾收集触发,选择在具有有效数据和废弃数据的所述第一子驱动器中的源块;并且
由数据类型将所述有效数据从所述源块分类到所述多个子驱动器的至少一个其它的子驱动器中,所述分类包括:
将第一数据类型的预定量的有效数据从所述源块复制到易失性存储器;
对于所述易失性存储器中的所述预定量的有效数据生成大数据组块校正数据;
将所述预定量的有效数据和所述大数据组块校正数据从所述易失性存储器复制到预定接收所述第一数据类型的所有数据的所述多个子驱动器的子驱动器中;并且
仅在将所述预定量的有效数据和所述大数据组块校正数据从所述易失性存储器复制后,才将下一预定量的单个数据类型的有效数据从所述源块复制到所述易失性存储器。
2.如权利要求1所述的方法,其中所述单个数据类型是与所述第一数据类型相同的数据类型。
3.如权利要求1所述的方法,其中所述单个数据类型是与所述第一数据类型不同的数据类型。
4.如权利要求1所述的方法,其中生成大数据组块校正数据包括对于所述预定量的有效数据计算异或(XOR)数据。
5.如权利要求1所述的方法,其中生成大数据组块校正数据并复制所述预定量的有效数据和所述大数据组块校正数据包括:
将所述大数据组块校正数据附加到所述第一数据类型的预定量的有效数据以生成受保护的数据条带;并且
将所述受保护的数据条带从所述易失性存储器写入到预定接收所述第一数据类型的所有数据的所述多个子驱动器中的所述子驱动器中的打开的重定位块。
6.如权利要求5所述的方法,其中所述打开的重定位块包括超级块,所述超级块包括:
多个块,其配置为接收有效数据的;以及
大数据组块校正块,其配置为接收所述大数据组块校正数据,所述大数据组块校正数据对应于所述多个块中所接收到的所述有效数据。
7.如权利要求6所述的方法,其中:
所述预定量的有效数据包括等于所述多个块的总数的有效数据的若干页,所述多个块配置为在所述超级块中接收有效数据;并且
对于所述易失性存储中的所述预定量的有效数据生成大数据组块校正数据包括,对于所述预定量的有效数据计算异或(XOR)数据。
8.如权利要求1所述的方法,其中:
所述第一子驱动器包括分段子驱动器,所述分段子驱动器配置为不管数据类型而初始地接收所有的主机数据;并且
接收主机数据写入包括,仅在所述分段子驱动器处接收主机数据写入。
9.如权利要求8所述的方法,其中检测所述垃圾收集触发包括,检测所述分段子驱动器的过度调配级超过预定阈值。
10.一种非易失性储存系统,包括:
非易失性存储器,其限定多个子驱动器;
易失性存储器,其由所述多个子驱动器共享;以及
控制器,其与所述多个子驱动器和所述易失性存储器通信,所述控制器配置为:
从所述多个子驱动器之中的一个子驱动器中的当前已编程的块中选择用于垃圾收集操作的源块;
将仅第一数据类型的预定量的有效数据从所述所选源块复制到所述易失性存储器;
对于所述预定量的有效数据生成大数据组块校正数据;
将所述大数据组块校正数据写入到所述易失性存储器中的固定大小的缓冲器;
将所述大数据组块校正数据和所述预定量的有效数据写入到与所述多个子驱动器中与所述第一数据类型专门相关联的子驱动器中,以形成受保护的数据条带;并且
仅在将所述受保护的数据条带写入到与所述第一数据类型专门相关联的所述子驱动器之后,才将下一预定量的仅单个数据类型的有效数据从所述源块写入到所述易失性存储器;
其中所述控制器配置为,对于在所述所选源块中的每个给定的预定量的所述单个类型的有效数据,顺序地将所述给定的预定量的有效数据和对于所述给定的预定量而生成的大数据组块校正数据写入到所述易失性存储器,并且基于所述给定的预定量的有效数据的相应的数据类型,将所述给定的预定量的有效数据和大数据组块校正数据写入所述多个子驱动器中适当的一个子驱动器。
11.如权利要求10所述的非易失性存储器系统,其中所述源块包括:
超级块,其具有固定多个主机数据块;以及
大数据组块校正数据块。
12.如权利要求11素数的非易失性存储器系统,其中所述大数据组块校正数据是异或(XOR)数据。
13.如权利要求10所述的非易失性存储器系统,其中所述非易失性存储器包括使用三维存储器结构形成的基板。
14.如权利要求10所述的非易失性存储器系统,其中所述固定大小缓冲器具有固定大小,所述固定大小对应于有效数据的预定量的所述大数据组块校正数据的大小。
15.如权利要求12所述的非易失性存储器系统,其中所述受保护条带包括:
所述单个数据类型的有效主机数据的若干页,其对应于主机数据的所述固定多个块的数目;以及
对于所述单个数据类型的有效主机数据的所述若干页的XOR数据的页。
16.如权利要求15所述的非易失性存储器系统,其中所述固定大小的缓冲器具有等于所述XOR数据的页的固定大小。
17.一种非易失性储存系统,包括:
非易失性存储器,其限定多个子驱动器,其中所述多个子驱动器的每个子驱动器的一部分包括打开的重定位块;
单个垃圾收集缓冲器,其在易失性存储器中,所述单个垃圾收集缓冲器具有少于任何打开的重定位块的总重定位容量的总缓冲器容量。
构件,其用于在垃圾收集操作期间将第一数据类型的预定量的有效数据从源块复制到所述单个垃圾收集缓冲器;
构件,其用于对所述单个垃圾收集缓冲器中的所述预定量的有效数据生成异或(XOR)数据;以及
构件,其用于仅在从所述单个垃圾收集缓冲器复制所述预定量的有效数据和所述XOR数据,将预定量的单个数据类型的有效数据从所述源块复制到所述单个垃圾收集缓冲器之后,才将所述预定量的有效数据和所述XOR数据从所述单个垃圾收集缓冲器写入到预定接收所述第一数据类型的所有数据的所述多个子驱动器的子驱动器的打开的重定位块。
18.如权利要求17所述的非易失性存储器系统,其中所述打开的重定位块包括:
超级块,其包括配置为接收已重新定位主机数据的多个块;以及
XOR块,其配置为接收对于所述重新定位主机数据而生成的XOR数据。
19.如权利要求18所述的非易失性存储器系统,其中:
所述预定量的有效数和对于所述预定量的有效数据生成的XOR数据量的总和等于所述总缓冲器容量;
其中所述预定量的有效数据包括等于所述多个块的数目的主机数据的若干页;并且
所述XOR数据量等于所述XOR块的页。
20.如权利要求19所述的非易失性存储器系统,其中:
所述多个子驱动器中的一个子驱动器包括配置为初始地接收所有进入主机数据的分段子驱动器;并且
所述源块包括所述分段子驱动器的块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/488,884 US10101942B1 (en) | 2017-04-17 | 2017-04-17 | System and method for hybrid push-pull data management in a non-volatile memory |
US15/488,884 | 2017-04-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733319A true CN108733319A (zh) | 2018-11-02 |
CN108733319B CN108733319B (zh) | 2020-06-16 |
Family
ID=63679095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810255208.6A Expired - Fee Related CN108733319B (zh) | 2017-04-17 | 2018-03-19 | 用于非易失性存储器中的混合推拉数据管理的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10101942B1 (zh) |
CN (1) | CN108733319B (zh) |
DE (1) | DE102018105750A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258494A (zh) * | 2018-12-03 | 2020-06-09 | 爱思开海力士有限公司 | 数据存储装置及操作方法、具有数据存储装置的存储系统 |
CN111984602A (zh) * | 2020-09-23 | 2020-11-24 | 三星(中国)半导体有限公司 | 数据流的管理方法和装置 |
CN112527692A (zh) * | 2019-09-19 | 2021-03-19 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN113391758A (zh) * | 2020-03-13 | 2021-09-14 | 伊姆西Ip控股有限责任公司 | 在存储系统中管理条带的方法、设备和计算机程序产品 |
CN114270304A (zh) * | 2019-08-20 | 2022-04-01 | 美光科技公司 | 存储器组件的同一平面内的数据压缩 |
CN115373592A (zh) * | 2021-05-18 | 2022-11-22 | 美光科技公司 | 页线填充数据技术 |
US11687275B2 (en) | 2020-12-21 | 2023-06-27 | SK Hynix Inc. | Method for assigning plurality of channels of storage device for stream data writing, storage device and storage medium |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10714179B2 (en) * | 2016-10-07 | 2020-07-14 | Hewlett-Packard Development Company, L.P. | Hybrid memory devices |
US10496472B2 (en) * | 2017-10-18 | 2019-12-03 | Western Digital Technologies, Inc. | Combined XOR buffer memory for multiple open blocks of non-volatile memory |
US10877691B2 (en) * | 2017-12-29 | 2020-12-29 | Intel Corporation | Stream classification based on logical regions |
KR20190102390A (ko) * | 2018-02-26 | 2019-09-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20200122407A (ko) * | 2018-03-16 | 2020-10-27 | 마이크론 테크놀로지, 인크. | Nand 데이터 배치 스키마 |
US11106575B2 (en) * | 2018-09-28 | 2021-08-31 | Western Digital Technologies, Inc. | Systems and methods for data storage in a memory system |
KR20210017481A (ko) * | 2019-08-08 | 2021-02-17 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US11138124B2 (en) | 2019-10-30 | 2021-10-05 | International Business Machines Corporation | Migrating data between block pools in a storage system |
KR20210063764A (ko) * | 2019-11-25 | 2021-06-02 | 에스케이하이닉스 주식회사 | 메모리 시스템의 동작 방법 및 장치 |
US11204869B2 (en) * | 2019-12-05 | 2021-12-21 | Alibaba Group Holding Limited | System and method for facilitating data storage with low-latency input/output and persistent data |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11287989B2 (en) * | 2020-03-24 | 2022-03-29 | Western Digital Technologies, Inc. | Dynamic allocation of sub blocks |
US11211119B1 (en) | 2020-06-11 | 2021-12-28 | Western Digital Technologies, Inc. | QLC programming method with staging of fine data |
US11138071B1 (en) | 2020-06-22 | 2021-10-05 | Western Digital Technologies, Inc. | On-chip parity buffer management for storage block combining in non-volatile memory |
US11210168B1 (en) * | 2020-06-25 | 2021-12-28 | Micron Technology, Inc. | Error handling optimization in memory sub-system mapping |
US11513952B2 (en) * | 2020-07-01 | 2022-11-29 | Micron Technology, Inc. | Data separation for garbage collection |
US11568938B2 (en) | 2020-11-03 | 2023-01-31 | Western Digital Technologies, Inc. | QLC data programming |
US11861195B2 (en) | 2021-03-15 | 2024-01-02 | Western Digital Technologies, Inc. | TLC data programming with hybrid parity |
KR102385572B1 (ko) * | 2021-11-02 | 2022-04-13 | 삼성전자주식회사 | 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
CN103365788A (zh) * | 2013-08-06 | 2013-10-23 | 山东大学 | 实时闪存转换层使用的自适应局部垃圾回收方法 |
CN104347104A (zh) * | 2013-07-26 | 2015-02-11 | 艾弗伦茨科技公司 | 一种大容量存储设备 |
US20150134709A1 (en) * | 2013-11-08 | 2015-05-14 | Samsung Electronics Co., Ltd. | Hybrid buffer management scheme for immutable pages |
US20150186054A1 (en) * | 2013-12-26 | 2015-07-02 | Samsung Electronics Co., Ltd. | Storage device comprising volatile and nonvolatile memory devices, and related methods of operation |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239639B2 (en) | 2007-06-08 | 2012-08-07 | Sandisk Technologies Inc. | Method and apparatus for providing data type and host file information to a mass storage system |
US8261009B2 (en) | 2008-12-30 | 2012-09-04 | Sandisk Il Ltd. | Method and apparatus for retroactive adaptation of data location |
US9176864B2 (en) | 2011-05-17 | 2015-11-03 | SanDisk Technologies, Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
US9021231B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
-
2017
- 2017-04-17 US US15/488,884 patent/US10101942B1/en active Active
-
2018
- 2018-03-13 DE DE102018105750.4A patent/DE102018105750A1/de not_active Ceased
- 2018-03-19 CN CN201810255208.6A patent/CN108733319B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
CN104347104A (zh) * | 2013-07-26 | 2015-02-11 | 艾弗伦茨科技公司 | 一种大容量存储设备 |
CN103365788A (zh) * | 2013-08-06 | 2013-10-23 | 山东大学 | 实时闪存转换层使用的自适应局部垃圾回收方法 |
US20150134709A1 (en) * | 2013-11-08 | 2015-05-14 | Samsung Electronics Co., Ltd. | Hybrid buffer management scheme for immutable pages |
US20150186054A1 (en) * | 2013-12-26 | 2015-07-02 | Samsung Electronics Co., Ltd. | Storage device comprising volatile and nonvolatile memory devices, and related methods of operation |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258494A (zh) * | 2018-12-03 | 2020-06-09 | 爱思开海力士有限公司 | 数据存储装置及操作方法、具有数据存储装置的存储系统 |
CN111258494B (zh) * | 2018-12-03 | 2023-07-18 | 爱思开海力士有限公司 | 数据存储装置及操作方法、具有数据存储装置的存储系统 |
CN114270304A (zh) * | 2019-08-20 | 2022-04-01 | 美光科技公司 | 存储器组件的同一平面内的数据压缩 |
CN112527692A (zh) * | 2019-09-19 | 2021-03-19 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN113391758A (zh) * | 2020-03-13 | 2021-09-14 | 伊姆西Ip控股有限责任公司 | 在存储系统中管理条带的方法、设备和计算机程序产品 |
CN113391758B (zh) * | 2020-03-13 | 2024-06-07 | 伊姆西Ip控股有限责任公司 | 在存储系统中管理条带的方法、设备和计算机程序产品 |
CN111984602A (zh) * | 2020-09-23 | 2020-11-24 | 三星(中国)半导体有限公司 | 数据流的管理方法和装置 |
US11687275B2 (en) | 2020-12-21 | 2023-06-27 | SK Hynix Inc. | Method for assigning plurality of channels of storage device for stream data writing, storage device and storage medium |
CN115373592A (zh) * | 2021-05-18 | 2022-11-22 | 美光科技公司 | 页线填充数据技术 |
US11768627B2 (en) | 2021-05-18 | 2023-09-26 | Micron Technology, Inc. | Techniques for page line filler data |
CN115373592B (zh) * | 2021-05-18 | 2024-01-23 | 美光科技公司 | 用于页线填充数据的设备、非暂时性计算机可读介质及方法 |
Also Published As
Publication number | Publication date |
---|---|
US10101942B1 (en) | 2018-10-16 |
US20180300081A1 (en) | 2018-10-18 |
CN108733319B (zh) | 2020-06-16 |
DE102018105750A1 (de) | 2018-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733319A (zh) | 用于非易失性存储器中的混合推拉数据管理的系统和方法 | |
US9921956B2 (en) | System and method for tracking block level mapping overhead in a non-volatile memory | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
US10032488B1 (en) | System and method of managing data in a non-volatile memory having a staging sub-drive | |
US10102119B2 (en) | Garbage collection based on queued and/or selected write commands | |
US8572311B1 (en) | Redundant data storage in multi-die memory systems | |
US9176810B2 (en) | Bit error reduction through varied data positioning | |
CN108475232A (zh) | 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式 | |
CN109977034B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN108139970A (zh) | 用于直接写入多级单元存储器的系统和方法 | |
US10635326B2 (en) | Method and apparatus for wear-levelling non-volatile memory | |
US20140229655A1 (en) | Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure | |
US20160092129A1 (en) | System and method for folding partial blocks into multi-level cell memory blocks | |
DE112019000141T5 (de) | System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind | |
CN108376120A (zh) | 用于管理在非易失性存储器系统中写入块的系统和方法 | |
US20160210045A1 (en) | Systems and Methods for Generating Hint Information Associated with a Host Command | |
US11138069B2 (en) | Providing additional parity for non-standard sized parity data sets | |
US9239757B2 (en) | Method and apparatus for relocating data in non-volatile memory | |
US10776268B2 (en) | Priority addresses for storage cache management | |
US10268400B2 (en) | System and method for file detection and usage during compaction | |
CN105988738A (zh) | 服务混合负荷中有效使用数据锁存器的存储器裸芯和方法 | |
US11822814B2 (en) | Dynamic XOR bin mapping in memory devices | |
US11334256B2 (en) | Storage system and method for boundary wordline data retention handling | |
US11573893B2 (en) | Storage system and method for validation of hints prior to garbage collection | |
CN105573661B (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200616 |
|
CF01 | Termination of patent right due to non-payment of annual fee |