CN111149091B - 基于跨多个装置的协调内部地址方案的冗余编码条带 - Google Patents
基于跨多个装置的协调内部地址方案的冗余编码条带 Download PDFInfo
- Publication number
- CN111149091B CN111149091B CN201880063221.XA CN201880063221A CN111149091B CN 111149091 B CN111149091 B CN 111149091B CN 201880063221 A CN201880063221 A CN 201880063221A CN 111149091 B CN111149091 B CN 111149091B
- Authority
- CN
- China
- Prior art keywords
- data
- volatile storage
- address
- storage devices
- internal
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 223
- 238000000034 method Methods 0.000 claims abstract description 65
- 238000013507 mapping Methods 0.000 claims description 117
- 238000013519 translation Methods 0.000 claims description 45
- 238000004891 communication Methods 0.000 claims description 18
- 238000011084 recovery Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 35
- 238000005192 partition Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 20
- 239000000872 buffer Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 239000000758 substrate Substances 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 239000011232 storage material Substances 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 5
- 239000003990 capacitor Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种系统和方法涉及操作非易失性存储器系统。本文中所公开的技术高效地使用在非易失性存储器系统中的非易失性存储装置中可用的存储器。在一些方面中,非易失性存储装置跨所述非易失性存储装置执行冗余编码条带,所述冗余编码条带由具有跨所述存储装置用协调方案指派的内部地址的数据分块形成。在一些方面中,非易失性存储装置跨所述非易失性存储装置在相应非易失性存储装置中的相同内部地址处执行冗余编码条带。
Description
背景技术
本发明技术涉及非易失性存储器系统。
半导体存储器装置在各种电子装置中的应用越来越广泛。例如,非易失性半导体存储器用于蜂窝电话、数码相机、个人数字助理、移动计算装置、非移动计算装置、固态驱动器和其它装置。
导电浮动栅极或不导电电荷捕集材料等电荷存储材料可用于某些类型的存储器单元中,以存储表示数据状态的电荷。存储器单元可以是晶体管,其中电荷存储材料可以位于通道和控制栅极之间。电荷存储材料可以与通道和控制栅极绝缘。电荷存储材料可以竖直地布置在三维(3D)堆叠存储器结构中,或者水平地布置在二维(2D)存储器结构中。3D存储器结构的一个实例是位成本可扩展(BiCS)架构,其包括交替的导电层和介电层的堆叠。
一些类型的存储器单元可以通过改变电荷存储材料中的电荷来编程,从而改变存储器单元晶体管的阈值电压(Vth)。在一种技术中,编程电压被施加到控制栅极上,在通道中施加低电压以向电荷存储材料添加电荷。施加编程电压后,通过向控制栅极施加验证电压并测试存储器单元是否传导显著电流来测试存储器单元的阈值电压。可以施加额外的编程电压到控制栅极,然后施加验证电压,直到存储器单元的阈值电流在目标范围内。
其它类型的存储器单元可以编程成不同的电阻水平。例如,电阻性随机存取存储器(ReRAM)可以在高电阻状态和低电阻数据状态之间可逆地切换。在一些存储器单元中,ReRAM单元可以在超过两个不同的电阻状态之间可逆地切换。每个电阻状态可以对应一个电阻范围。
附图说明
为了使本公开的理解可以更详细,更特定的描述可以参考各个实施例的特征,其中的一些实施例在附图中示出。但是,附图仅示出本公开的更相关的特征,因此不应被视为具有限制性,因为描述可承认其它有效特征。
图1A是根据一些实施例的示出包含非易失性存储器系统的分布式计算系统的框图。
图1B是根据一些实施例的示出包含一个或多个非易失性存储装置的分布式计算系统的框图。
图2A是其中可以实践实施例的示例存储装置的框图。
图2B是示例存储装置的框图,描绘了图2A的控制器122的额外细节。
图2C描绘存储器单元阵列的示例性结构。
图3是根据一些实施例的示出主控制器的实施方案的框图。
图4是操作非易失性存储装置的过程的一个实施例的流程图。
图5描绘在存储装置外部具有大型写入序列化表的常规系统的实例。
图6是不需要存储装置外部的写入序列化表的系统的一个实施例的框图。
图7描绘其中可以实践实施例的非易失性存储器系统的一个实施例。
图7A描绘图7的项704-2的其它细节。
图7B描绘其中分块大小对应于一个数据块的冗余编码条带的实例。
图7C描绘其中分块大小对应于多个数据块的冗余编码条带的实例。
图8是将冗余条带写入到非易失性存储装置的过程的一个实施例的流程图。
图9是使用冗余条带中的分块恢复ELBA的丢失数据的过程的一个实施例的流程图。
图10示出计算机系统的示意图。
根据惯例,图中所示的各种特征可能并非按比例绘制。因此,为了清晰起见,可能任意扩大或减小各种特征的尺寸。此外,一些图式可能并未描绘给定系统、方法或装置的所有组件。最后,在整个说明书及图式中,相似参考标号可以用于表示相似特征。
具体实施方式
本发明技术涉及操作非易失性存储器系统。本文中所公开的技术高效地使用在非易失性存储器系统中的非易失性存储装置中可用的存储器。在一些实施例中,跨非易失性存储装置在相应非易失性存储装置中的相同内部地址处执行冗余编码条带。
本文中,“物理地址”是硬件地址(其通常在非易失性存储装置内)。因此,物理地址是物理位置的地址。如本文中所使用,术语“逻辑地址”是物理地址的指针。本文中,“内部逻辑地址”是存储与逻辑地址相关联的数据的非易失性存储装置的地址空间中的逻辑地址。如本文中所使用,术语“外部逻辑地址”是在存储与外部逻辑地址相关联的数据的非易失性存储装置外部的地址空间中的逻辑地址。作为一个实例,外部逻辑地址可为请求将与外部逻辑地址相关联的数据存储在非易失性存储装置中的主机的地址空间中的地址。本文中,“内部地址”是非易失性存储装置的地址空间中的地址。内部地址的两个实例是内部逻辑地址和物理地址。
本文中,“随机写入”是指不具有连续地址的写入序列。例如,主机可以发出其中逻辑地址分散的写入命令序列。因此,随机写入序列可包括随机外部逻辑地址。相比之下,在本文使用“连续写入”时,这个术语是指具有连续地址的写入序列。例如,主机可以发出其中逻辑地址依序排序的写入命令序列。
在一些实施例中,非易失性存储可用于使用基于冗余数据的保护方案来存储数据,所述基于冗余数据的保护方案有时称为冗余编码。冗余编码的一个实例通常被称为独立磁盘冗余阵列(RAID)。许多类型或级别的冗余编码和RAID是众所周知的,并且本公开并不假定完整描述所有类型或级别的冗余编码和RAID。
在一个实施例中,非易失性存储系统具有冗余编码逻辑,所述冗余编码逻辑配置成使用非易失性存储装置上的数据分块构成冗余编码条带。冗余编码条带可以是RAID条带,但是并不一定是RAID条带。在一个实施例中,冗余编码条带中的每一个由具有跨非易失性存储装置用协调方案指派的内部地址的数据分块形成。在一个实施例中,方案(在非易失性存储装置之间)协调外部逻辑地址如何转换成内部地址。地址转换协调可以通过多种方式来执行。
在一个实施例中,为了使用具有用协调地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码条带由在非易失性存储装置中的每一个上具有相同内部地址的数据形成。内部地址可为内部逻辑地址或物理地址。应注意,这与由在不同非易失性存储装置上具有相同外部逻辑地址的分块形成冗余编码条带的情况大不相同。
在一个实施例中,为了使用具有用协调地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码条带由具有根据固定转换方案指派的内部地址的数据分块形成。如本文所定义,术语“固定转换方案”意指其中特定存储装置上的数据分块的地址被定义为固定或预定义数学关系的地址转换方案。
在一个实施例中,为了使用具有用协调地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码条带由具有根据一个或多个转换查找表指派的内部地址的数据分块形成,所述一个或多个转换查找表并入有所述多个非易失性存储装置中的每一个内部的固定或预定义数学关系。
包括多个非易失性存储装置的一些存储器系统采用日志结构类型的组织来在非易失性存储装置中存储数据。日志结构的组织可以将具有“时间局部性”(即,在时间上紧密地一起执行)的来自主机的写入数据转换成在非易失性存储装置上具有“空间局部性”的布局,即使数据在主机地址空间中可能不是空间本地的也如此。例如,来自主机的随机写入可以在物理位置方面依序写入到非易失性存储装置。此类日志结构类型的组织可以增强非易失性存储装置的性能。例如,可以减少写入放大。
在具有多个非易失性存储装置的系统中实施日志结构的组织的一种可能方式是使在系统(例如,固态驱动器)内的非易失性存储装置外部的逻辑维持从一个地址空间(例如,虚拟地址空间)映射到另一地址空间(例如,外部逻辑地址空间)的表格。作为实例,在大致某些时间点进行的虚拟地址空间中的随机写入可以映射到外部逻辑地址空间中的序列。为了论述,地址将被称为“块地址”。因此,表格可以将虚拟地址空间中的虚拟块地址(VBA)映射到外部逻辑地址空间中的外部逻辑块地址(外部LBA)。此类映射表在本文中可以被称为“写入序列化”映射表。
可以向非易失性存储装置发送在外部LBA的序列处写入数据的一个或多个写入命令。一些非易失性存储装置可以在外部LBA和内部地址之间映射,这可以限定非易失性存储装置中的物理位置。例如,非易失性存储装置可具有在非易失性存储装置中将外部LBA映射到物理块地址(PBA)的数据结构(例如,逻辑到物理转换表)。应注意,一些非易失性存储装置在外部LBA和PBA之间可具有额外“内部逻辑地址”(内部LBA)。因此,一些非易失性存储装置可以从外部LBA映射到内部LBA,并从内部LBA映射到PBA。
但是,在具有多个存储装置提供较大的总存储容量的系统环境中,此类日志结构类型的组织可能需要大型崩溃安全映射表来从虚拟地址空间映射到外部逻辑地址空间。例如,可能需要大型崩溃安全映射表来从VBA映射到外部LBA。在非易失性存储装置的非易失性存储存储器单元中存储此类表格可能会对非易失性存储装置的性能产生不利影响。一个可能的选择方案是在动态RAM(DRAM)中存储映射表。但是,给定表格大小,DRAM的成本可能相当大。例如,表格可能每五个字节需要4k页来存储。例如,对于1PB的存储,表格可能需要>1TB的DRAM。
另外,VBA到外部LBA的映射可能需要垃圾数据收集和/或数据压缩。但是,垃圾数据收集可能是资源密集型的。例如,垃圾数据收集可消耗多个CPU核心和多个GB的内存。数据压缩通过读取并接着写入数据块来执行数据移动,因此所有写入放大在数据总线上都变得完全可见。最后,奇偶校验计算也对多个CPU核心、存储器带宽和CPU高速缓冲存储造成了极大负载(通过丢弃)。特别是存储器带宽开销极大,因为它通常是用来存储应用程序的最稀缺的系统资源。
本文中所公开的实施例利用非易失性存储装置的内部能力来实现存储系统环境中的高效逻辑结构化。在一个实施例中,利用非易失性存储装置中的逻辑到物理映射表来卸载基于主机或基于存储系统控制器的写入序列化映射表。这大大减少了系统/主机级的大内存需求。通过利用存储装置支持的优化,主机软件或存储系统控制器可以更简单,并且可以释放更多的资源来执行计算任务,以更低的成本提供更高的性能。因为写入序列化映射的性能可以随着存储装置的数目线性地扩展,所以整个系统变得更具可扩展性。
本发明的某些实施例可以提供NVMe优于Fabric(NVMeOF)存储平台(例如,NVMeOF智能平台)的优点,因为NVMeOF允许构建高效的NVMeOF控制器,该控制器可以在硅酮中执行数千万IOPS。但是,在这种情况下,存储控制器无法在不显著降低效率的情况下执行与RAID相关的任务,因此成为单个瓶颈。将冗余任务卸载到存储装置将允许在NVMeOF存储平台中添加RAID/擦除编码功能,同时不会显著降低性能可扩展性。因此,构建高效的NVMeOF存储平台是可能的,与具有相同总容量和性能的直连存储(DAS)存储装置相比,它可以承受(举例来说)两次驱动器故障,存储开销仅为10%(20+2RAID),而在小块随机写入上的性能为10IOPS或更高,成本增量非常有限。
在一个实施例中,非易失性存储装置具有映射逻辑,所述映射逻辑配置成将按时间顺序依序接收到的写入请求中的外部LBA映射到非易失性存储装置的内部地址空间中的连续地址。映射逻辑可配置成在非暂时性存储装置中存储映射。作为一个实例,映射逻辑可在非暂时性存储装置中存储逻辑到物理转换表。在一个实施例中,给定非易失性存储装置的映射逻辑配置成将在给定非易失性存储装置处按照时间顺序依序接收到的写入请求中的随机外部逻辑地址映射到给定非易失性存储装置中的物理连续位置。在一个实施例中,给定非易失性存储装置的映射逻辑配置成将在给定非易失性存储装置处按照时间顺序依序接收到的写入请求中的随机外部逻辑地址映射到给定非易失性存储装置的连续内部地址。
图1A是根据一些实施例的示出包含非易失性存储器系统100的实施方案的分布式系统102的框图,所述分布式系统102通过网络101耦合到主机系统115(有时称为主控计算机系统、主机装置或主机)。应注意,可能有超过一个主机系统115连接到非易失性存储器系统100。非易失性存储器系统100包含非易失性存储装置120-1到120-m(有时也被称作信息存储装置或数据存储装置或存储器装置)。
在一些实施例中,存储装置120包含任何数目个(即,一个或多个)存储器装置,包含但不限于永久性存储器或非易失性半导体存储器装置,例如快闪存储器装置。例如,快闪存储器装置可配置成用于适用于例如云计算的应用的企业存储,用于数据库应用、主要和/或辅助存储或用于高速缓存存储(或将存储)在例如硬盘驱动器的辅助存储装置中的数据。另外和/或可替代地,快闪存储器装置还可配置成用于相对较小规模的应用,例如个人计算机、笔记本电脑和平板电脑的个人快闪驱动器或硬盘更换。
存储装置120包含存储器结构126。在一个实施例中,存储器结构126含有快闪存储器单元(例如,NAND或NOR)。但是,存储器结构126不限于快闪存储器单元。存储器结构126的其它实例包含电阻性随机存取存储器(“ReRAM”)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”)。
存储器结构126可以是二维(2D)或三维(3D)的。存储器结构可包括一个或多个存储器单元阵列。存储器结构可包括整体式3D存储器结构,其中多个存储器层级在例如晶片的单个衬底上方(而不是在单个衬底中)形成,中间没有介入其它衬底。存储器结构126可包括任何类型的非易失性存储器,所述非易失性存储器在具有安置在硅衬底上方的有源区域的存储器单元阵列的一个或多个物理层级中整体形成。存储器结构可以在具有与存储器单元的操作相关联的电路系统的非易失性存储器装置中,不管相关联的电路系统是在衬底上方还是在衬底内。
在图1A中,主机系统115通过网络101耦合到非易失性存储系统100的主要存储控制器130。但是,在一些实施例中,主机系统115包含存储控制器或主要存储控制器130的一部分作为组件和/或作为子系统。例如,在一些实施例中,存储控制器130的一些或全部功能性由主机系统115内的软件或硬件实施。在说明性非易失性存储器系统100内,主控制器130通过连接135耦合到网络101和一个或多个存储装置120。主控制器130是用于控制对存储装置120的存取及联网主机系统115和存储装置120之间的读取和写入命令与相关联数据的双向处理的控制器,所述存储装置120例如是固态磁盘驱动器(SSD)。控制器130可以是非易失性存储器快速(NVMe)控制器、冗余编码控制器(例如,独立磁盘冗余阵列(RAID)控制器)或用于控制对非易失性存储装置的存取的另一类型的CPU或处理器。但是,在一些实施例中,控制器130和存储装置120作为组件被包含在相同装置(即,集成装置)中。此外,在一些实施例中,存储装置120嵌入在主机装置(例如,计算机系统115)中,例如移动装置、平板电脑、其它计算机或计算机控制的装置,并且本文所描述的方法至少部分地由嵌入式存储控制器执行。
在图1A中,主控制器130包含冗余编码模块136。但是,冗余编码模块136可位于存储装置120或主机115中的一个中。冗余编码模块136可配置成构成冗余编码条带。在一个实施例中,每一个冗余编码条带由每一个非易失性存储装置120上的数据分块形成。在一个实施例中,每一个冗余编码条带由具有跨存储装置120用协调方案指派的内部地址的数据形成。在一个实施例中,每一个冗余编码条带由在非易失性存储装置120中具有相同内部地址的数据形成。在一个实施例中,每一个冗余编码条带由具有根据固定转换方案指派的内部地址的数据分块形成。在一个实施例中,每一个冗余编码条带由具有根据一个或多个转换查找表指派的内部地址的数据分块形成,所述一个或多个转换查找表并入有所述多个非易失性存储装置中的每一个内部的固定或预定义数学关系。
主控计算机系统115可以是任何合适的计算机装置,例如计算机、笔记本电脑、平板装置、上网本、互联网查询一体机、个人数字助理、移动电话、智能手机、游戏装置、计算机服务器或任何其它计算装置。在一些实施例中,主机系统115是服务器系统,例如数据中心中的服务器系统。在一些实施例中,主机系统115包含一个或多个处理器、一种或多种类型的存储器、显示器和/或其它用户接口组件,例如键盘、触摸屏显示器、鼠标、触控板、数码相机和/或任何数目个辅助I/O装置,用于向主控计算机系统115添加功能性。在一些实施例中,主控计算机系统115不具有显示器和其它用户接口组件。
存储装置120分别包含存储器结构126和地址映射模块150。地址映射模块150可配置成将地址从主机115的地址空间或由主控制器130在系统级处维持的地址空间(外部地址空间,因为它在存储装置外部)转换(或映射)到存储装置120的内部地址空间。地址映射模块还可配置成在非暂时性存储装置中存储映射。在一个实施例中,非暂时性存储装置是DRAM。作为一个实例,地址映射模块150可包含外部逻辑地址到物理地址转换表,其可以从主控制器130所提供的外部逻辑地址映射到存储装置120的物理地址。在一个实施例中,映射模块150从外部逻辑地址映射到内部逻辑地址,并从内部逻辑地址映射到物理地址。因此,外部逻辑地址可以通过内部逻辑地址映射到物理地址。在一个实施例中,主控制器130将供主机115使用的地址空间(虚拟块地址)转换到控制器130提供给各个存储装置120的外部逻辑地址空间。在主机与不具有主控制器的存储装置120通信的某些实施例中,虚拟块地址到外部逻辑地址的转换可由主机执行。
图1B描绘其中可以实践实施例的另一示例系统104。在图1B中,主机系统115通过网络101和连接135与存储装置120通信。网络101和连接135有时称为数据连接,但通常除了数据之外,还传送命令,并且任选地传送元数据、错误校正信息和/或除了将存储在存储装置120中的数据值和从存储装置120读取的数据值之外的其它信息。在图1B中,主机系统115包含冗余编码模块136。但是,冗余编码模块136可位于一个存储装置120中。
图2A是其中可以实践实施例的示例存储装置120的框图。存储装置120可包含一个或多个存储器裸片108。存储器裸片108包含存储器单元的存储器结构126(例如存储器单元阵列),控制电路系统110和读取/写入电路128。存储器结构126可通过字线经由行解码器124和通过位线经由列解码器132来寻址。读取/写入电路128包含多个感测块51、52、……、53(感测电路系统),并且允许存储器单元页并行读取或编程。通常,控制器122被包含在与所述一个或多个存储器裸片108相同的存储器系统100(例如,可装卸式存储卡)中。控制器可以与存储器裸片分离。命令和数据通过线118在控制器和所述一个或多个存储器裸片108之间传送。
存储器结构可以是2D或3D的。存储器结构可包括一个或多个存储器单元阵列,包含3D阵列。存储器结构可包括整体式3D存储器结构,其中多个存储器层级在例如晶片等单个衬底上方(而不是在单个衬底中)形成,中间没有介入其它衬底。存储器结构可包括任何类型的非易失性存储器,所述非易失性存储器在具有安置在硅衬底上方的有源区域的存储器单元阵列的一个或多个物理层级中整体形成。存储器结构可以在具有与存储器单元的操作相关联的电路系统的非易失性存储器装置中,不管相关联的电路系统是在衬底上方还是在衬底内。
控制电路系统110与读取/写入电路128配合来对存储器结构126执行存储器操作,并且包含状态机112、芯片上地址解码器114和功率控制模块116。状态机112提供对存储器操作的芯片级控制。可以提供存储区域113,例如,用于操作参数和软件/代码。在一个实施例中,状态机可由软件编程。在其它实施例中,状态机不使用软件,并且完全实施为硬件(例如,电路)。
芯片上地址解码器114提供由主机或存储器控制器使用的地址到由解码器124和132使用的硬件地址之间的地址接口。功率控制模块116控制在存储器操作的实施例期间供应给字线、选择栅极线、位线和源极线的功率和电压。它可包含用于字线、SGS和SGD晶体管和源极线的驱动器。在一个方法中,感测块可包含位线驱动器。
在一些实施方案中,一些组件可以组合。在各种设计中,除存储器结构126以外的一个或多个组件(呈单独或组合形式)可被视为至少一个控制电路,所述控制电路配置成执行本文中所描述的技术,包含本文所描述的过程的步骤。例如,控制电路可包含控制电路系统110、状态机112、解码器114和132、功率控制模块116、感测块51、52……、53、读取/写入电路128、控制器122等等中的任一个或组合。控制电路还可被称作管理电路。
芯片外控制器122(其在一个实施例中是电路)可包括处理器122c、例如ROM 122a和RAM 122b等存储装置(存储器)。在一些实施例中,RAM 122b用于存储一个或多个地址映射数据结构(例如但不限于,地址映射表)。大体来说,地址映射数据结构在两个地址之间进行映射。在一个实施例中,地址映射数据结构在外部逻辑地址和内部逻辑地址之间进行映射。在一个实施例中,地址映射结构在内部逻辑地址和物理地址之间进行映射。地址映射数据结构的实例包含但不限于地址转换表、B树和日志结构的合并树。
在一些实施例中,存储装置区域126a用于保持地址映射数据结构的副本。应注意,所保持的副本可以是来自此存储装置120或另一存储装置120的地址映射数据结构。因此,所保持的副本可在另一存储装置120无法存取其地址映射数据结构例如在RAM 122b(或另一位置)中的副本的情况下使用。
还可提供存储器接口122d。与ROM、RAM和处理器通信的存储器接口是提供控制器和存储器裸片之间的电接口的电路。例如,存储器接口可改变信号格式或时序,提供缓冲区,与浪涌(surge)隔离,锁存I/O等等。处理器可通过存储器接口122d向控制电路系统110(或存储器裸片的任何其它组件)发出命令。
存储装置包括代码,例如指令集,并且处理器可用于执行指令集以提供本文中所描述的功能性。替代地或另外,处理器可存取来自存储器结构的存储装置126a的代码,例如来自一个或多个字线中存储器单元的预留区域的代码。
例如,代码可供控制器用于存取存储器结构,例如以用于编程、读取和擦除操作。代码可包含启动代码和控制代码(例如,指令集)。启动代码是在启动或发动过程期间初始化控制器并使得控制器能够存取存储器结构的软件。代码可供控制器用于控制一个或多个存储器结构。在通电后,处理器122c从ROM 122a或存储装置126a获取启动代码以供执行,并且启动代码初始化系统组件并将控制代码载入到RAM 122b中。一旦控制代码被载入到RAM中,它就可以由处理器执行。控制代码包含执行基本任务的驱动器,所述基本任务例如是控制和分配存储器、优先化指令的处理和控制输入和输出端口。
一般来说,控制代码可包含用于执行本文中所描述的功能的指令,包含下文进一步论述的流程图步骤,并提供包含下文进一步论述的那些的电压波形。控制电路可配置成执行指令以执行本文中所描述的功能。
存储器单元可由无源和/或有源元件的任何组合形式形成。借助于非限制性实例,无源半导体存储器元件包含ReRAM装置元件,其在一些实施例中包含电阻率开关存储元件,例如反熔丝或相变材料,和任选地转向元件,例如二极或晶体管。进一步借助于非限制性实例,有源半导体存储器元件包含EEPROM和快闪存储器装置元件,其在一些实施例中包含含有电荷存储区域的元件,例如浮动栅极、导电纳米粒子或电荷存储介电材料。
多个存储器元件可配置成使得它们串联连接,或者使得每个元件能够单独存取。借助于非限制性实例,呈NAND配置的快闪存储器装置(NAND存储器)通常含有串联连接的存储器元件。NAND串是一组串联连接的包括存储器单元和SG晶体管的晶体管的实例。
NAND存储器阵列可配置成使得阵列由多个存储器串构成,其中串由共享单个位线并作为群组存取的多个存储器元件构成。可替代地,存储器元件可配置成使得每个元件可以单独存取,例如,NOR存储器阵列。NAND和NOR存储器配置是实例,且存储器元件可以其它方式配置。
存储器元件的操作和与存储器元件的通信通常需要相关联的电路系统。作为非限制性实例,存储器装置可具有用于控制和驱动存储器元件来实现编程和读取等功能的电路系统。这种相关联的电路系统可以与存储器元件在相同的衬底上和/或在单独衬底上。例如,用于存储器读写操作的控制器可位于单独的控制器芯片上和/或与存储器元件在相同的衬底上。
图2B是示例存储装置120的框图,描绘了控制器122的额外细节。在一个实施例中,控制器122是快闪控制器。如本文中所使用,存储器控制器是管理存储在存储器中的数据的装置。存储器控制器可以与计算机或电子装置等主机通信。应注意,在本文所描述的各种实施例的上下文中,图2B的描述中的“主机”可以指存储系统的控制器,例如图1A中示出的主控制器130。但是,存储器控制器和主机之间可存在中间方。除了本文中所描述的特定功能性之外,存储器控制器还可具有各种功能性。例如,存储器控制器可以对存储器进行格式化以确保存储器恰当地操作,从不良存储器单元映射出去,并分配备用存储器单元来替代未来发生故障的单元。备用单元的某一部分可用于使固件保持操作存储器控制器和实施其它特征。在操作中,当主机需要从存储器读取数据或将数据写入到存储器时,它将与存储器控制器通信。如果主机提供将读取/写入数据的逻辑地址,那么存储器控制器可将从主机接收到的逻辑地址转换成存储器中的物理地址。(可替代地,主机可提供物理地址)。快闪存储器控制器还可执行各种存储器管理功能,例如但不限于耗损均衡(分配写入以免特定存储器块耗损,否则所述特定存储器会被重复写入)和垃圾数据收集(在块全满之后,只将有效数据页移动到新块,因此全满的块可以进行擦除和重复使用)。
控制器122和非易失性存储器裸片108之间的接口可以是任何合适的接口。在一个实施例中,存储器系统100可以是基于卡的系统,例如安全数字(SD)或微型安全数字(微型SD)卡。在替代实施例中,存储器系统可以是嵌入式存储器系统的一部分。例如,存储器可以嵌入于主机内,例如呈安装在个人计算机中的固态磁盘(SSD)驱动器的形式。
在一些实施例中,存储装置120在控制器122和非易失性存储器裸片108之间包含单个通道,但是本文中所描述的主题不限于具有单个存储器通道。
控制器122包含与主机介接的前端模块208、与所述一个或多个非易失性存储器裸片108介接的后端模块210,以及执行现将详细描述的功能的各个其它模块。
控制器的组件可以采用设计成与其它组件一起使用的封装式功能性硬件单元(例如,电路)、可由微处理器或通常执行相关功能中的特定功能的处理电路系统等处理器执行的程序代码(例如,软件或固件)的一部分或与大型系统介接的独立硬件或软件组件的形式。例如,每个模块可包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、离散电路的组合、栅极或任何其它类型的硬件或其组合。替代地或另外,每个模块可包含存储在处理器可读装置(例如,存储器)中用于对处理器进行编程以供控制器执行本文中所描述的功能的软件。图2B中描绘的架构是可以(也可以不)使用图2A中描绘的控制器122的组件(例如,RAM、ROM、处理器、接口)的一个示例实施方案。
控制器122可包含修复电路系统212,其用于重新调节存储器单元或存储器块。重新调节可包含作为执行错误字线维护的一部分,刷新其当前位置中的数据或将数据重新编程为新字线或块,如下所述。
再次参考控制器122的模块,缓冲区管理器/总线控制器214管理随机存取存储器(RAM)216中的缓冲区并控制控制器122的内部总线仲裁。RAM可包含DRAM和/或SRAM。DRAM或动态随机存取存储器是一种半导体存储器类型,其中存储器以电荷的形式存储。DRAM中的每个存储器单元由晶体管和电容器制成。数据存储在电容器中。电容器由于泄漏而释放电荷,因此DRAM是易失性装置。为了将数据保持在存储器中,装置必须定期刷新。相比之下,只要有电力供应,SRAM或静态随机存取存储器就可以保持值。
只读存储器(ROM)218存储系统启动代码。尽管图2B中示出为位置与控制器分离,但是在其它实施例中,RAM 216和ROM 218中的一个或两个可以位于控制器内。在又其它实施例中,RAM和ROM的部分可以位于控制器122内和控制器之外。此外,在一些实施方案中,控制器122、RAM 216和ROM 218可以位于单独的半导体裸片上。
前端模块208包含主机接口220和物理层接口(PHY)222,所述物理层接口222提供与主机或下一层级的存储控制器的电接口。应注意,在一个实施例中,主机接口220用于与主控制器130通信。主机接口220的类型的选择可取决于所使用的存储器类型。主机接口220的实例包含但不限于SATA、SATA快速、SAS、光纤通道、USB、PCIe和NVMe。主机接口220通常有助于数据、控制信号和时序信号的传送。
后端模块210包含错误校正控制器(ECC)引擎224,其对从主机接收到的数据字节进行编码,并对从非易失性存储器读取的数据字节进行解码和错误校正。ECC引擎224具有一个或多个解码器244和一个或多个编码器256。在一个实施例中,ECC引擎224包括低密度奇偶校验(LDPC)解码器。在一个实施例中,解码器244包含硬解码器和软解码器。一个或多个解码器244的输出可以提供给主机。
命令定序器226生成将传输到非易失性存储器裸片108的命令序列,例如编程和擦除命令序列。独立裸片冗余阵列(RAID)模块228管理RAID奇偶校验的生成和故障数据的恢复。RAID奇偶校验可用作对写入到存储器系统100中的数据的完整性的另一层保护。在一些情况下,RAID模块228可以是ECC引擎224的一部分。应注意,RAID奇偶校验可以添加作为一个或多个额外裸片,如通用名所表示,但是它还可以添加在现有裸片内,例如,作为额外平面或额外块或块内的额外字线。存储器接口230将命令序列提供到非易失性存储器裸片108并从非易失性存储器裸片接收状态信息。控制层232控制后端模块210的总体操作。
存储装置120的额外组件包含介质管理层238,其执行非易失性存储器裸片108的存储器单元的耗损均衡。存储器系统还包含其它离散组件240,例如外部电气接口、外部RAM、电阻器、电容器或可以与控制器122介接的其它组件。在替代实施例中,物理层接口222、RAID模块228、介质管理层238和缓冲区管理/总线控制器214中的一个或多个是控制器122中不必要的任选组件。
介质管理层(MML)238可以集成为可处理错误且与主机或主控制器130介接的管理部分。在一个实施例中,MML 238是快闪转换层(FTL),并且对应于先前图中描绘的地址映射模块150-1到150-m。MML可以是快闪管理中的模块,并且可以负责NAND管理的内部构件。具体地说,MML 238可包含存储器装置固件中将来自主机的写入转换成到裸片108的快闪存储器等存储器结构126的写入的算法。可能需要MML 238,因为:1)快闪存储器的耐用性可为有限的;2)快闪存储器只能以多个页的形式写入;和/或3)快闪存储器只有在它作为块擦除时才能写入。MML 238理解快闪存储器的这些潜在限制,但是主机可能无法发现这些限制。因此,MML 238尝试将来自主机的写入转换成到快闪存储器的写入。可以使用MML 238识别和记录错误位。错误位的这种记录可用于评估块和/或字线(字线上的存储器单元)的健康状况。在一个实施例中,对应于图1A的地址映射模块150的MML 238配置成在通过主机接口220接收到的命令中的外部地址和供装置120使用的内部地址之间进行映射。在一个实施例中,MML 238配置成在非暂时性存储装置中存储一个或多个地址映射结构。非暂时性存储装置的实例包含但不限于RAM 216、ROM 218和非易失性存储器裸片108中的非易失性存储器单元。
控制器122可以与一个或多个存储器裸片108介接。在一个实施例中,控制器和多个存储器裸片(一起构成存储器系统100)实施固态驱动器(SSD),所述固态驱动器可以进行模拟为网络附加存储(NAS)装置、替代为网络附加存储装置,或作为主机内部的硬盘驱动器的代替物来用作网络附加存储装置,等等。另外,无需使SSD充当硬盘驱动器。
图2C描绘存储器单元阵列126的示例性结构。在一个实施例中,存储器单元阵列划分成M个存储器单元块。块是擦除单位。也就是说,每个块含有一起擦除的最小数目个存储器单元。每个块通常划分成数个页。页是编程单位。一个或多个数据页通常存储在一个存储器单元行中。页可存储一个或多个扇区。扇区包含用户数据和开销数据。开销数据通常包含已经根据扇区的用户数据计算出来的错误校正码(ECC)的奇偶校验位。控制器的一部分在数据编程到阵列中时计算ECC奇偶校验,并且在从阵列读取数据时对其进行校验。可替代地,ECC和/或其它开销数据存储在不同于与它们相关的用户数据的页中,甚至存储在不同块中。应注意,术语“擦除块”在本文中用于指代一起擦除的最小数目个存储器单元。因此,图2C中的块是擦除块的一个实施例。擦除块可含有“数据块”。擦除块可含有“数据块”。在一些实施例中,数据块由一个或多个页形成。数据块可包括连续存储器单元群组。
图2C还示出存储器阵列126的块i的更多细节。块i包含X+1个位线和X+1个NAND串。块i还包含64个数据字线(WL0-WL63)、2个虚拟字线(WL_d0和WL_d1)、漏极侧选择线(SGD)和源极侧选择线(SGS)。每个NAND串的一个端子通过漏极选择栅极(连接到选择线SGD)连接到对应位线,另一端子通过源极选择栅极(连接到选择线SGS)连接到源极线。因为存在六十四个数据字线和两个虚拟字线,所以每个NAND串包含六十四个数据存储器单元和两个虚拟存储器单元。在其它实施例中,NAND串可具有多于或少于64个数据存储器单元和更多或更少的虚拟存储器单元。数据存储器单元可存储用户或系统数据。虚拟存储器单元通常不用于存储用户或系统数据。一些实施例不包含虚拟存储器单元。
图3是根据一些实施例的示出主控制器130的实施方案的框图。在一些实施例中,主控制器130包含:一个或多个处理器300,其有时称为CPU或硬件处理器或微控制器;主机接口302,其用于将主控制器130耦合到一个或多个主机系统115(图1A或1B);总线接口304,其用于将主控制器耦合到一个或多个通信总线(例如,连接135,图1A或1B);存储器306(本文中有时称为控制器存储器);以及一个或多个通信总线308,其用于将这些组件互连。通信总线308任选地包含将系统组件互连并控制系统组件之间的通信的电路系统(有时称为芯片组)。
主控制器130大体上有助于使数据进出存储装置120中的非易失性存储器。主控制器130通过网络101经由主机接口302与主机系统115交换数据。在一些实施例中,主控制器130可包含冗余编码控制器(例如,RAID控制器),用于存储和存取存储装置(例如,存储装置120)阵列中的数据。一个或多个处理器300执行存储在存储器306中的模块、程序和/或指令,并由此执行处理操作。在一些实施例中,一个或多个处理器300通过通信总线308耦合到存储装置120。在其它实施例中,耦合是通过例如总线接口304间接进行的,所述总线接口304例如是基于PCI快速的总线接口(例如,NVMe)。还可使用包含SATA或SAS总线接口的其它总线接口。
存储器306包含高速随机存取存储器,例如DRAM、SRAM、DDR RAM或其它随机存取固态存储器装置,并且可包含非易失性存储器,例如一个或多个磁盘存储装置、光盘存储装置、快闪存储器装置或其它非易失性固态存储装置。存储器306任选地包含位置远离处理器300的一个或多个存储装置。存储器306或者存储器306内的非易失性存储器装置包括非暂时性计算机可读存储介质。在一些实施例中,存储器306或存储器306的计算机可读存储介质存储以下程序、模块和数据结构或其子集或超集:通信模块310、一个或多个主机命令队列330;转换表340;RDMA引擎350;RDMA传入队列360和RDMA传出队列370;和/或SSD缓冲区状态信息表或数据结构380。这些引擎/模块中的一些可以实施为硬件电路系统和/或固件/软件和硬件电路系统的组合。
通信模块310可用于与存储装置120等其它组件和主机系统115通信。总线控制模块315可用于执行总线协议并通过总线在组件之间传送数据。
主机命令处理模块320可以从主机系统115接收读取和写入命令,分配存储装置中的存储缓冲区,并将主机命令转换成存储装置命令以促进对应于读取和写入命令的数据在主机系统115上的主机缓冲区和相关联存储装置120上的存储缓冲区之间的远程DMA传送。为了促进主机命令的转换,主机命令处理模块320可包含主机命令到SSD命令转换模块324,其将主机写入和读取命令转换成适合存储装置120执行的命令,并且任选地促进嵌入在主机命令中的地址的虚拟化。主机命令处理模块320可进一步包含主机命令执行模块328,其促进例如通过设置和执行远程DMA数据传送来执行接收到的主机命令,并将转换后的存储装置命令发送到相应存储装置120以供执行。
一个或多个主机命令队列330可用于跟踪从主机115接收到的命令和它们相关联的转换后的命令。
在一些实施例中,转换表340可用于将接收到的主机命令中的地址或名称空间转换成存储装置标识符或存储装置地址。
在一些实施例中,RDMA引擎350可用于在主机缓冲区和与一个或多个存储装置120相关联的一个或多个所分配存储缓冲区之间传送数据。在一些实施例中,RDMA引擎350使用转换后的命令、地址和/或与转换后的命令相关联的缓冲区指针来实现远程直接存储器存取(RDMA)操作;每个RDMA引擎350一旦配置成具有针对主机和存储装置缓冲区的指针和将要传送的数据量的计数或其它指示符,就独立于一个或多个处理器300而在指定的主机缓冲区和存储缓冲区之间传送数据。
RDMA传入队列360和RDMA传出队列370可用于促进RDMA操作。根据一些实施例,主机命令处理模块320和RDMA引擎350可以使用RDMA传入队列350和RDMA传出队列370来跟踪尚未完成的读取操作和写入操作。
SSD缓冲区状态信息表或数据结构380可用于促进存储装置120中的存储缓冲区的分配,根据一些实施例,主机命令处理模块320使用SSD或存储装置状态信息表或数据结构380来跟踪哪些存储缓冲区已经被分配以及哪些可用于分配。
在一些实施例中,主控制器130的存储器306还包含一个或多个RDMA缓冲区382,用于暂时存储在主机和SSD或存储装置之间传送的数据或信息。
任选地,主控制器130的存储器306进一步包含用于确定非易失性存储装置120的冗余编码模块136,例如在使用特定冗余编码级(例如,任何预定义RAID级,例如RAID0到RAID6、RAID10、RAID01等等)时,所述非易失性存储装置120存储任何给定写入命令或一组写入命令的数据和奇偶校验信息。在一些实施例中,冗余编码模块136结合条带映射图352或条带功能来确定在执行任何指定写入操作或一组写入操作时存储数据和奇偶校验的特定存储装置。在一些实施例中,当向特定存储装置120发送奇偶校验生成命令以生成指定数据的奇偶校验数据时,主控制器130还向所述存储装置提供条带映射图或其它数据结构,使得存储装置知晓指定数据要转发到哪一其它存储装置以供存储。
在一些实施例中,主控制器130的存储器306进一步包含数据恢复模块390,用于在存储装置120出现故障时或更一般来说在条带的一部分中的数据无法从存储在存储条带的所述部分的存储装置120中的信息读取时恢复数据。
上方识别的元件每一个可以存储在先前提及的一起形成存储器306的存储器装置中的一个或多个中,并且对应于用于执行上文所描述的功能的指令集和数据。上方识别的模块或程序(即,指令集)无需实施为单独的软件程序、过程或模块,因此在各种实施例中,这些模块的各个子集可以组合或以其它方式重新布置。在一些实施例中,存储器306可以存储上方识别的模块和数据结构的子集。此外,存储器306可以存储上文没有描述的额外模块和数据结构。在一些实施例中,存储在存储器306或存储器306的计算机可读存储介质中的程序、模块和数据结构提供用于实施在下文参考图4、8和9描述的方法中的相应操作的指令。
尽管图3示出主控制器130,但是相比于作为本文中所描述的实施例的结构示意图,希望图3更多的是可存在于主控制器或非易失性存储器控制器中的各个特征的功能性描述。实际上,所属领域的技术人员应认识到,单独示出的项可组合,并且一些项可间隔开。此外,如上文所提到,在一些实施例中,主控制器130的一个或多个模块由主控计算机系统115的一个或多个模块实施,或者实施为存储装置120的部分。
图4是操作非易失性存储装置的过程400的一个实施例的流程图。过程400可在图1A的系统102、图1B的系统104中执行,但不限于此。出于说明的目的,将参考图1A和1B中的元件。应注意,过程400不限于系统102或104。
步骤402包含在非易失性存储装置120处接收写入请求。在一个实施例中,主机115通过例如网络101和/或连接135将写入请求发送到非易失性存储装置120。在一个实施例中,主机115通过例如网络101将写入请求发送到主控制器130。主控制器130可以通过例如连接135将写入请求转发到非易失性存储装置120。主控制器130可以在将来自主机的写入请求转发到存储装置120之前修改它们。在一些实施例中,写入请求含有与要写入的数据相关联的外部逻辑地址。本文中,这些逻辑地址可以称为“外部逻辑地址”,因为它们是指在非易失性存储装置120外部的地址空间。在一个实施例中,在外部逻辑地址已经转换为供主机115使用的地址之后,外部逻辑地址是主机115或主控制器130的地址空间中的地址。在一个实施例中,写入请求由前端模块(图2B的208)接收。
步骤404包含将写入请求中的外部逻辑地址映射到非易失性存储装置120的内部地址。在一个实施例中,步骤404在每个存储装置120内由地址映射模块150执行。在一个实施例中,内部地址是非易失性存储装置120的内部寻址方案中的地址。将在下文论述的图7描绘了非易失性存储装置120的内部寻址方案的一个实施例。内部地址可为内部逻辑地址或物理地址。应注意,在一个实施例中,映射模块150执行两个映射。映射模块150可以从外部逻辑地址映射到内部逻辑地址。并且,映射模块150可以从内部逻辑地址映射到物理地址。应注意,在一些实施例中,非易失性存储装置120可以将数据从第一物理位置移动到第二物理位置(其中,所述第一物理位置具有第一物理地址,第二物理位置具有第二物理地址)。在此情况下,映射模块150可以改变所移动数据的内部逻辑地址的映射以指代第二物理地址,而不是第一物理地址。
在一个实施例中,步骤406包含使用具有跨非易失性存储装置120用协调方案指派的内部地址的数据分块构成冗余编码条带。在一个实施例中,步骤406包含使用在非易失性存储装置120中具有相同内部地址的数据分块构成冗余编码条带。可替代地,在一个实施例中,步骤406包含使用具有根据非易失性存储装置120的固定转换方案指派的内部地址的数据分块构成冗余编码条带。
冗余编码条带可包括数个非易失性存储装置120中的每一个上的一个分块。下文将论述的图7和7B示出冗余编码条带的实例。内部地址可以是内部逻辑地址或物理地址(应注意,在此实例中,物理地址是一种类型的内部地址)。在一个实施例中,步骤406由主控制器130中的冗余编码模块136执行。应注意,冗余编码模块136可以称为冗余编码逻辑。应注意,整个或部分主控制器130可集成到非易失性存储装置120中的一个或多个中。因此,冗余编码模块136可以是非易失性存储装置120中的一个或多个。在一个实施例中,步骤406由主机115中的冗余编码逻辑执行。冗余编码模块136可位于其它地方。
步骤408包含基于外部逻辑地址到内部逻辑地址的映射而恢复冗余条带的丢失数据分块的任选步骤。应注意,映射可以存储在非易失性存储装置120中的一个或多个中的非暂时性存储装置中。图9的过程900是步骤408的一个实施例。在一个实施例中,步骤408由主控制器130中的冗余编码模块136执行。在一个实施例中,步骤408由主机115中的冗余编码模块136执行。在一个实施例中,步骤408由一个或多个存储装置120中的冗余编码模块执行。冗余编码模块136可位于其它地方。
一些实施例在例如图1A中的存储系统100的存储系统内不需要在存储装置120外部的大型崩溃安全写入序列化表。图5描绘具有在存储装置120外部的大型写入序列化表504的常规系统的实例。例如,大型写入序列化表504可在主机系统或耦合到主机系统的存储系统的主控制器中。主机/主控制器500具有配置成将随机虚拟块地址(VBA)序列化成连续外部逻辑块地址(LBA)的写入序列化逻辑502。应注意,VBA和LBA用于将在存储装置120中执行的写入。例如,跨横跨存储装置120的虚拟地址空间随机分散但用于按照时间顺序依序进行的写入的VBA可以转换成外部LBA序列。外部LBA序列可以发送到存储装置120。写入序列化逻辑502在写入序列化表504中存储从VBA到LBA的映射。
应注意,写入序列化表504在具有许多存储装置的存储系统中可能需要是极大的。例如,常规写入序列化表504在非易失性存储装置中每存储4KB可能需要五个字节(假设4KB的页大小)。例如,如果非易失性存储装置具有1拍字节(PB)的容量,那么写入序列化表504的大小可能需要超过1太字节(TB)。在主机中的DRAM中存储写入序列化表504的成本可能极高。
本文中所公开的实施例不需要具有在存储装置120外部的写入序列化表504。在一些实施例中,序列化从存储装置120中卸载。图6是不需要在存储装置120外部的写入序列化表的系统的一个实施例的框图。主机/主控制器600将写入请求发送到存储装置120-1到120-m。写入请求序列具有可为随机的外部LBA。例如,外部LBA的序列可以随机分布在主机(或其它装置)的地址空间中。
在一个实施例中,存储装置120中的地址映射模块150将随机分布的外部LBA顺序化。在一个实施例中,映射模块150配置成将按照时间顺序依序接收到的写入请求中的随机外部LBA映射到连续内部地址(例如,内部块地址(BA))。在一个实施例中,连续内部地址在相同擦除块内。在一个实施例中,连续内部地址是物理地址。在一个实施例中,连续内部地址是内部逻辑地址。地址映射模块150可配置成在地址映射存储装置650中存储随机外部LBA到连续内部LBA的映射。在一个实施例中,映射模块150配置成将按照时间顺序依序接收到的写入请求中的随机外部LBA映射到存储装置120中的物理连续位置。在一个实施例中,物理连续位置具有连续物理地址范围。
在一个实施例中,冗余编码模块136使用非易失性存储装置120-1到120-m中的每一个上的数据分块形成冗余编码条带。在一个实施例中,给定冗余编码条带由在不同存储装置120上具有相同内部地址的数据分块形成。应注意,如果冗余编码条带要由具有相同外部LBA的分块形成,那么在非易失性存储装置外部可能需要有从虚拟地址映射到外部逻辑地址的大型表格。例如,在图5的常规系统中,冗余编码条带可由具有相同外部LBA的分块形成。但是,这需要在存储装置120外部的大型(且昂贵的)写入序列化表504。一些实施例提供了更具成本效益的解决方案。
还应注意,在一个实施例中,通过每个非易失性存储装置120-1到120-m将其冗余条带的分块写入到相同内部地址,可以跨多个非易失性存储装置120-1到120-m在相同内部地址处进行连续数据写入。例如,考虑到其中四个不同非易失性存储装置120分别存储冗余编码条带中的一个数据分块的情况。主机/主控制器600可以将主机/主控制器600按照时间顺序依序接收到的四个随机外部LBA发送到这四个不同非易失性存储装置120。在一个实施例中,这四个不同非易失性存储装置120中的每一个写入到相同内部地址。这可以实现跨非易失性存储装置以协调方式进行随机外部LBA的序列化。还应注意,非易失性存储装置可以写入到跨存储装置用协调方案指派的内部地址,而不是写入到相同内部地址。例如,写入到相同内部地址的一个替代方案是写入到根据固定转换方案指派的内部地址。
图7描绘非易失性存储器系统700的一个实施例。系统700具有一个主要存储控制器130和数个非易失性存储装置120-1到120-m。在一个实施例中,非易失性存储器系统700不需要在存储装置120外部的大型写入序列化表504。一般来说,主要存储控制器130可以从例如主机(在图7中未描绘)接收虚拟块地址(VBA)720。在此实例中,VBA 720包含外部LBA722和驱动位724。驱动位724是除了外部LBA 722之外的一个或多个位。如实例中所示,位是最低有效位,使得外部LBA可以通过VBA中位的简单移位来获得。主要存储控制器130可以将外部LBA传递到存储装置120中的一个,如下文将更充分地解释。但是,驱动位不一定指向存储装置120中的一个。造成这一情况的可能原因是主要存储控制器130可以跨存储装置120负载均衡写入。另一可能原因是主控制器130可以选择存储装置来写入以便构成冗余条带。应注意,出于说明的目的,地址在图7中被称为“块”地址。块可以是任何大小。在一个实施例中,主机115指定用于写入和/或读取操作的块大小。
在一个实施例中,驱动虚拟化表(DVT)734含有从VBA 720到存储装置120中的一个的映射。在接收到到VBA的写入时,驱动虚拟化逻辑732可以确定应该将写入发送到的存储装置120。驱动虚拟化逻辑732可以在驱动虚拟化数据结构734中创建(或更新)条目,所述条目将VBA链接到应该执行写入的存储装置120的唯一标识符。在一个实施例中,驱动虚拟化数据结构734包含从VBA映射到存储装置的地址的地址映射表。应注意,这种唯一标识符不一定是VBA中的驱动位。但是,一个选择方案是只使用VBA中的驱动位来识别要写入的存储装置120。在其它实施例中,存储装置的识别不一定依赖于将驱动位用作VBA的部分。
每个存储装置120具有地址映射模块150、外部LBA(ELBA)到内部LBA(ILBA)映射结构750、擦除块虚拟化结构702和数个擦除块714-1到714-m。箭头705表示从外部逻辑地址到内部逻辑地址的映射。箭头707表示从内部逻辑地址到物理地址的映射。不需要擦除块虚拟化结构702。因此,在一个实施例中,外部逻辑地址直接映射到物理地址。
ELBA到ILBA映射结构750可包含表格、B树等。擦除块虚拟化结构702可包含表格、B树等。此类映射结构702、750可以存储在非易失性存储装置120内的非暂时性存储装置中。映射结构702、750可以存储在易失性或非易失性存储装置中。应注意,存储装置120可以采用共同的内部寻址方案。
在一个实施例中,每个擦除块含有作为一个单元擦除的一组非易失性存储器单元。在一个实施例中,擦除块是擦除的存储器单元的最小单位。每一个擦除块714具有数个数据块706-1到706-m。在一个实施例中,数据块706的大小由主机115指定。例如,主机115可以指定给定ELBA的要写入或读取的数据量。
擦除块虚拟化数据结构702具有条目704-1到704-n,其中每一个条目指向一个擦除块714。每一个条目704具有偏移。图7A描绘条目704-2的其它细节,示出了偏移716-1到716-m。每个偏移716参考擦除块714-2中的数据块706-1到706-m中的一个。应注意,条目704-2可参考不同物理擦除块714,在此情况下,偏移716将参考新擦除块714中的数据块706。
在一个实施例中,ILBA是擦除块虚拟化数据结构702中的特定条目和偏移。擦除块虚拟化数据结构702中的每一个偏移可参考特定数据块706。每个数据块706可具有一物理块地址(PBA)。因此,每个ILBA可以参考特定PBA。在存储装置120将数据块706中的数据移动到另一数据块的情况下,地址映射模块150可以更新ILBA和数据已经移动到的数据块的新PBA之间的映射。
图7中描绘了数个冗余编码条带710-1到710-n。在此实例中,每个冗余编码条带710在存储装置120-1通过120-m中的每一个上包含一个数据分块。在此实例中,每个分块对应于擦除块虚拟化数据结构702中的一个条目704。例如,冗余编码条带710-2由存储装置120-1到120-m中的每一个中的条目704-2限定。应注意,给定冗余编码条带710的每个分块具有相同内部逻辑地址。但是,应注意,并不要求给定冗余编码条带710的每个分块具有相同物理地址。例如,存储装置120-1的条目704-2可指向与存储装置120-2的条目704-2不同的物理擦除块714。
确保条带的每个分块在存储装置内具有相同内部逻辑地址的示例机制将如下文关于图8进一步描述。最终结果是利用每个存储装置已经实施以便执行其内部地址映射的固有功能和数据结构,将通常在系统/电平级处执行的序列化卸载到每个存储装置内。因此,系统/主机级处的存储器要求大幅度降低,因为它不必再完全跟踪映射数据来支持整个系统地址空间(例如,VBA)的序列化,如下文将在图8中进一步解释。
应注意,并不要求分块大小等于一个物理擦除块。例如,分块的大小可等于一个数据块706。在这种情况下,相应分块的内部逻辑地址跨相应存储装置120仍然是相同的。图7B描绘其中分块大小对应于一个数据块706的冗余编码条带710的实例。描绘了冗余编码条带710-2-1到710-2-m。图7B仅示出擦除块虚拟化数据结构702的一部分。具体地说,图7B描绘了来自图7的擦除块虚拟化数据结构702的条目704-2的一个实施例的另一粒度级别。记住条目704-2可具有偏移716-1到716-m,如图7A中所描绘。在图7B的实例中,每个冗余编码条带针对每个存储装置120包括一个偏移。例如,冗余编码条带710-2-2包括来自每个存储装置120-1、120-2和120-m的偏移716-2。应注意,每个偏移716可对应于一个数据块706。因此,在此实例中,分块大小对应于一个数据块706。另外应注意,给定冗余编码条带710的每个分块具有相同内部逻辑地址。
作为又另一实例,冗余编码条带710中的分块大小实际上可以是两个或更多个数据块706。例如,偏移716-1、716-2、716-3和716-4可描述冗余编码条带710-a1的一个分块,如图7C中所描绘。在图7C中,每个冗余编码条带710-a1、710-a2、710-a3到710-aq具有四个数据块706。
应注意,在图7、7B和7C的实例中,不同冗余编码条带的分块大小是一致的。但是,冗余编码条带710中的分块大小有可能不同于另一冗余编码条带710中的分块大小(即使这些分块存储在相同擦除块中)。
在一个实施例中,每个存储装置120上的相同一组偏移716用于每个特定冗余编码条带710。因此,分块大小不限于图7、7B和7C的实例。
图8是将冗余条带写入到非易失性存储装置120的过程800的一个实施例的流程图。在过程800中,条带的各个分块写入到非易失性存储装置中的相同内部地址。过程800是使用具有跨存储装置用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块形成冗余编码条带的一个实施例。出于说明的目的,将参考图7的系统700;但是,过程800不限于系统700。过程800的一些步骤可由主控制器130执行,而其它步骤可由存储装置120执行。应注意,整个或部分主控制器130可在存储装置120外部。但是,整个或部分主控制器130可在存储装置120中的一个或多个内部。另外,在某些实施例中,主控制器130的功能可由主机系统执行。在这种情况下,当图8指示主控制器功能时,所述功能可由主机系统执行。
为了说明,将关于其中使用两个非易失性存储装置120来存储来自主机的数据并使用一个非易失性存储装置120来存储冗余代码(例如,奇偶校验)的实例论述过程800。为了论述,每一装置120将存储冗余条带的一个分块。在过程800中,每个存储装置120将它的分块写入到相同内部地址。参考图7,存储装置120-1和120-2可用于存储来自主机的数据,并且一个或多个存储装置120-m可用于存储冗余代码(例如,奇偶校验)。
步骤802包含主控制器130从主机系统115接收写入请求。在一个实施例中,写入请求含有VBA。在一个实施例中,VBA具有ELBA和驱动位。为了说明,写入请求可以是写入数据分块。分块可为任何大小,例如,512字节、1KB、2KB、4KB、16KB等。在一个实施例中,分块将写入一个或多个页。但是,并不要求分块等于整数数目个页。数据自身无需在写入请求中提供。实际上,写入请求可含有指示数据在例如主机存储器中的位置的描述符。在一个实施例中,分块对应于一个数据块706的大小。在主机系统115正执行主控制器的功能的情况下,这可以是任选的步骤。
步骤804包含主控制器130选择要将写入请求发送到的非易失性存储装置120。步骤804可包含主控制器130存取驱动虚拟化数据结构734。应注意,驱动虚拟化数据结构734可以存储VBA到存储装置映射。在主机系统115正执行主控制器的功能的情况下,驱动虚拟化数据结构734可以驻留在主机系统的存储器中。在一个实施例中,主控制器确定VBA的数据是否已经存储在存储装置120中的一个中。如果是,那么主控制器可以选择存储装置120来存储VBA的新数据。如果VBA的数据没有存储在存储装置120中的任一个中,那么主控制器130可以选择存储装置120中的一个。作为一个实例,主控制器130可选择存储装置120-1来存储冗余条带的一个分块。
步骤806包含主控制器130更新DVT 734(若需要)。步骤806可由驱动虚拟化逻辑732执行。在一个实施例中,此动作在VBA和在步骤804中选择的非易失性存储装置120之间创建链接。
步骤808包含主控制器130从VBA中提取ELBA并将写入请求转发到选定的非易失性存储装置120。主控制器可以在转发写入请求之前修改它。例如,VBA可以通过例如特定位的移位而变成ELBA,以从VBA中提取ELBA。因此,在一个实施例中,发送到选定的非易失性存储装置120的写入请求含有来自具有VBA的原始写入请求的ELBA。步骤808可由驱动虚拟化逻辑732执行。
步骤810包含选定的非易失性存储装置将数据写入到选定物理擦除块714中的开放数据块706。物理擦除块714可能已经被选定,因为选定的非易失性存储装置正处于用数据填充选定的物理擦除块714的过程中。例如,如果非易失性存储装置在大致相同的时间接收数个随机写入,那么非易失性存储装置可以依序利用随机写入填充选定的物理擦除块714。例如,在一个实施例中,按照数据块706的物理地址的顺序来写入数据块706。因此,开放数据块可能只是物理数据块地址序列中的下一数据块706。应注意,物理擦除块714可与虚拟擦除块地址相关联,所述虚拟擦除块地址与偏移一起组成ILBA。但是,如下文进一步解释,在某些实施例中,执行一定级别的协调,以确保选择用于条带内的分块的虚拟擦除块地址跨存储分块的相应存储装置是相同的。步骤810可由各种元件执行,所述元件包含但不限于状态机112、芯片上地址解码器114、功率控制116、处理器122c、读取/写入电路128、解码器124、132中的一个或多个。
步骤812包含选定的非易失性存储装置更新ELBA到ILBA映射结构750,使得ELBA映射到ILBA。例如,ELBA可以映射到ILBA,包含虚拟擦除块地址704和偏移716。如上文所提到,物理擦除块714可能已与虚拟擦除块地址相关联。偏移716可由物理数据块地址指定。例如,参考图7A,如果数据写入到物理数据块地址706-2,那么这可以对应于偏移716-2。步骤812可由地址映射模块150执行。
步骤814是确定冗余条带是否充满数据。如果否,那么过程返回到步骤802。此处,全满条带意指充满除冗余代码(例如,奇偶校验)之外的数据。下一次遍历过程800时,主控制器可以选择不同非易失性存储装置120来将数据写入。应注意,过程800每次迭代时,不同的非易失性存储装置120可以将它的冗余条带的分块写入到相同内部地址。步骤814可由冗余编码模块136执行。冗余编码模块可在主机系统115、主控制器130、存储装置120中或其它地方。
应注意,通过每个非易失性存储装置120将它的冗余条带的分块写入到相同内部地址,可以导致连续数据跨多个非易失性存储装置120写入在相同内部地址处。例如,考虑其中四个不同非易失性存储装置120分别存储冗余编码条带中的一个数据分块的情况。并且,考虑在步骤802中在主控制器处接收到的(VBA内的)ELBA是随机ELBA。每个非易失性存储装置120可以存储按照时间顺序依序被主控制器接收到的四个随机ELBA中的一个的数据。此外,按照时间顺序依序被主控制器接收到的这四个随机ELBA可以跨多个非易失性存储装置120存储在相同内部地址处,因为非易失性存储装置120以协调方式将这些ELBA序列化到相同内部地址。
在步骤816中,当条带全满时,主控制器130计算冗余代码(例如,奇偶校验),并指示将冗余代码写入到与条带中的其它分块的内部地址相同的内部地址。应注意,主控制器130可以指示不同于已经使用的存储装置120。步骤816是指示将冗余代码写入到跨存储装置用协调的外部逻辑地址到内部地址转换方案指派的内部地址的一个实施例。
以下实例将用于示出过程800的一个实施例的其它细节。在步骤802中,主控制器130从主机115接收在VBA“5”处写入4KB数据块的请求。在步骤804中,主控制器130选择非易失性存储装置120-1来写入数据。在步骤806中,主控制器130更新驱动虚拟化数据结构734,使得VBA“5”指向选定的非易失性存储装置120-1。在步骤808中,主控制器130从VBA中提取ELBA。在此实例中,假设两个最低有效位是驱动位,ELBA是“1”,它是通过将二进制的VBA“5”右移两个位得到的。主控制器130向非易失性存储装置120-1发送在ELBA 1处写入数据块的命令。在一个实施例中,写入可以首先发送到将累积写入用于奇偶校验计算的另一存储装置,例如,120-m,并且所述存储装置可以将写入转发到存储装置120-1。
在步骤810中,非易失性存储装置120-1将传入写入序列化到ELBA“1”,并将4KB数据分块写入到虚拟擦除块地址“12”所引用的物理擦除块。虚拟擦除块地址“12”是任意实例。为了示例,物理擦除块是“367”,它只是任意实例。非易失性存储装置120-1在偏移“25”处写入4KB数据分块,偏移“25”同样是任意实例。因此,参考图7,非易失性存储装置120-1将4KB数据分块写入到数据块706-25处的物理擦除块714-367。
在步骤812中,非易失性存储装置120-1更新从ELBA到ILBA的映射。在此实例中,虚拟擦除块地址是“12”,偏移是“25”。为了示例,每物理擦除块714具有512个数据块706。因此,擦除块虚拟化数据结构702中每条目704具有512个偏移716。因此,ILBA是“6169”((512x12)+25)。ELBA“1”映射的ILBA是“6169”。步骤812可由地址映射模块150执行。
接下来,针对另一写入请求重复过程800。在步骤802中,主控制器130从主机115接收在VBA“1027”处写入4KB数据块的请求。在步骤804中,主控制器130选择非易失性存储装置120-2来写入数据。在步骤806中,主控制器130更新驱动虚拟化数据结构,使得VBA“1027”指向选定的非易失性存储装置120-2。在步骤808中,主控制器130从VBA中提取ELBA。在此实例中,ELBA是“256”(例如,二进制右移两个位(1027>>2))。主控制器130向非易失性存储装置120-2发送在ELBA“256”处写入数据块的命令。在一个实施例中,写入可以首先发送到将累积写入用于奇偶校验计算的另一存储装置,例如,120-m,并且所述存储装置可以将写入转发到存储装置120-2。
在步骤810中,非易失性存储装置120-2将4KB数据分块写入到虚拟擦除块地址“12”所引用的物理擦除块。应注意,这是非易失性存储装置120-1写入它的冗余条带的分块的相同虚拟擦除块地址。在一个实施例中,非易失性存储装置彼此协调,使得跨条带使用相同虚拟擦除块地址。因为条带含有时间接近的序列化写入,所以选定的虚拟擦除块地址可以相应地跨存储装置协调。例如,非易失性存储装置可以采用对等通信。在一个实施例中,主控制器130辅助进行协调。为了示例,物理擦除块是“647”,它只是任意实例。应注意,这不是存储装置120-1写入其分块的相同物理擦除块;但是,不排除写入到相同物理擦除块。非易失性存储装置120-2在偏移“25”处写入4KB数据分块,偏移“25”是供非易失性存储装置120-1使用的相同偏移。偏移还与存储装置120-1协调,就像虚拟擦除块地址一样。因此,参考图7,非易失性存储装置120-2将4KB数据分块写入到数据块706-25处的物理擦除块714-647。因此,尽管这两个装置120-1、120-2可以写入到不同物理块,但是在此实施例中,它们写入到相同内部逻辑地址。因此,冗余条带的这两个分块写入到相同内部逻辑地址(在两个不同的装置120中)。在一个实施例中,存储装置彼此通信以便写入到相同内部逻辑地址。例如,存储装置可具有对等通信,以便彼此共享关于哪一内部逻辑地址用于写入第一分块且因此应该用于其它分块的信息。在一个实施例中,写入冗余条带中的分块的第一存储装置可以通知主控制器内部逻辑地址,使得主控制器可以指示其它存储装置要写入冗余条带的其它分块的内部逻辑地址。如上文所提到,在其中主机系统执行主控制器的功能的某些实施例中,主机系统115可以辅助进行协调(例如,主机系统115可辅助广播要使用的内部逻辑地址)。
在步骤812中,非易失性存储装置120-2更新其ELBA到ILBA的映射。在此实例中,虚拟擦除块地址是“12”,偏移是“25”。ELBA“256”映射的ILBA是“6169”。应注意,这与通过非易失性存储装置120-1写入的分块的ILBA相同。但是,在此实例中,ELBA是不同的。
继续此实例,冗余条带现在是全满的。应注意,在此实例中,分块的大小是一个数据块706。如上文所提到,并不要求分块的大小是一个数据块。在步骤816中,主控制器130根据存储在装置120-1和120-2中的两个数据分块计算冗余代码(例如,奇偶校验)。主控制器130指示非易失性存储装置120-m在ILBA“6169”处存储冗余代码,ILBA“6169”与冗余条带的其它分块的ILBA相同。应注意,这可以在虚拟擦除块“12”和偏移“25”处。可替代地,如上文所描述,存储装置120-m可能已经接收到那些到装置120-1和120-2的写入,并且相应地,可以计算到相同ILBA的奇偶校验和写入。在此实例中,非易失性存储装置120-m可以自由地将冗余代码的分块写入到任何物理擦除块,只要所述物理擦除块当前链接到虚拟擦除块“12”即可。为了示例,非易失性存储装置120-m将分块写入到数据块706-25处的物理擦除块714-168。如果非易失性存储装置120-m将分块移动到不同的物理擦除块,那么非易失性存储装置应该更新虚拟擦除块“12”到新物理擦除块的映射。还应注意,非易失性存储装置120-m可以更新其ELBA到ILBA的映射。在一个实施例中,当主控制器发送写入奇偶校验分块的请求时,它将ELBA设置成等于ILBA。
将冗余条带的所有分块写入到相同ILBA是将冗余条带的所有分块写入到相同内部地址的一个实施例。应注意,将冗余条带的所有分块写入到相同ILBA是跨存储装置用协调的外部逻辑地址到内部地址转换方案写入冗余条带的分块的一个实施例。并不要求所有分块都写入到相同ILBA。如下文进一步描述,在一个实施例中,作为在每一装置120上使用相同内部地址(例如,ILBA或PBA)的替代方案,使用固定转换方案。
接下来,为了论述,主机发送写入VBA“5”的另一请求。记住,在此实例中,第一写入是到VBA“5”。在一个实施例中,新冗余条带将由要写入以用于此写入的分块形成。在步骤802中,主控制器130从主机115接收在VBA“5”处写入4KB数据块的请求。在步骤804中,主控制器130存取DVT 734以确定VBA“5”存储在非易失性存储装置120-1中。因此,主控制器130选择非易失性存储装置120-1来接收写入请求。不需要在步骤806中更新DVT 734。在步骤808中,主控制器130从VBA中提取ELBA。在此实例中,ELBA是“1”。主控制器130向非易失性存储装置120-1发送在ELBA“1”处写入数据块的命令。
在步骤810中,非易失性存储装置120-1将4KB数据分块写入到不同于先前用于ELBA“1”的偏移的偏移。在一个实施例中,当要在ELBA处写入新数据时,非易失性存储装置120-1不会覆写数据块。实际上,非易失性存储装置120-1将新数据写入到不同数据块。此数据块可以在与先前用于ELBA“1”的物理擦除块相同的物理擦除块714中。如果这是下一随机写入,那么非易失性存储装置120-1可以使偏移增加。因此,非易失性存储装置可以在偏移“26”处写入,而不是使用偏移“25”。为了示例,非易失性存储装置120-1可以在物理擦除块714-367中的数据块706-26处写入4KB数据分块。记住,先前写入是到物理擦除块714-367中的数据块706-25(参考图7)。
在步骤812中,非易失性存储装置120-1更新从ELBA到ILBA的映射。在此实例中,虚拟擦除块地址是“12”,偏移是“26”。因此,ILBA是“6170”((512x 12)+26)。因此,ELBA“1”现在映射到ILBA“6170”。但是,应注意,物理地处于物理擦除块714-367中的数据块706-25中的数据保持不变。因此,即使此数据结合ELBA“1”可能不是有效的,它仍然可结合它的冗余条带使用。例如,如果非易失性存储装置120-2发生故障,则可以使用装置120-1的物理擦除块714-367中的数据块706-25中的数据(以及装置120-m中的奇偶校验分块)来恢复从非易失性存储装置120-2丢失的数据分块。因此,通过针对冗余条带中的所有分块使用相同内部地址,可以恢复数据。在完成步骤812之后,将用写入到其它存储装置中的其它ELBA填充新条带,其中在步骤816处计算和写入最终奇偶校验。
使用不同存储装置120上的相同内部地址(例如,相同ILBA)构成冗余编码条带的实例只是使用跨存储装置用协调方案指派的内部地址构成冗余编码条带的一个实例。在一个实施例中,冗余编码条带由(每个存储装置120上的)数据分块形成,其中内部地址是根据固定转换方案指派的。如上文所提到,“固定转换方案”是基于预定数学关系限定特定存储装置上的数据分块的地址的地址转换方案。例如,在具有3个存储装置(2数据+1奇偶校验)的简单实例中,可以相对于基础ILBA指派ILBA,其中每一装置具有ILBA(装置)=ILBA(基础)+N(偏移),其中N是装置的索引。因此,分块可以写入到:装置“0”的ILBA“25”(25+0)、装置“1”的ILBA“26”(25+1)和装置“2”的ILBA“27”(25+2)。所属领域的技术人员应了解,限定数学关系具有无限的可能性。在理解了任何选定的数学关系能够跨存储装置以协调和预定的方式启用地址转换之后,将针对每一情形选择特定关系,而不需要在主机或主控制器级处使用大型映射表。
到目前为止,所示出的实例已经论述了在各种实施例中使用如图7中所示的配置来实现转换。为了在另一方向上扩展概念,在一个实施例中,冗余编码条带由(每个存储装置120上的)数据分块形成,其中内部地址是根据所述多个非易失性存储装置中的每一个内部的一个或多个查找表指派的。查找表可并入有从一个地址到另一地址的固定转换关系。在一个实施例中,擦除块虚拟化结构702用作查找表,且并入有例如上文提到的简单偏移关系。在另一实施例中,可以在擦除块虚拟化结构702和块写入的最终物理地址之间添加一个或多个额外查找表。例如,为了获得另一转换后的地址,作为查找擦除块虚拟化结构702的结果而获得的地址可以馈送到另一表格以供查找。这意味着各个实施例的协调地址转换方案包含其中通过一系列分层表查找逐步完成转换的实施方案。不管存储装置内部所使用的表格有多少,只要条带中的分块的ILBA可以在不使用主控制器或主机中的总映射表的情况下恢复,就可以实现这一点。
图9是使用冗余条带710中的分块恢复ELBA的丢失数据的过程900的一个实施例的流程图。在一个实施例中,过程900由主控制器130中的冗余编码模块136执行。在一个实施例中,当使用过程400来构成冗余编码条带时,使用过程900。过程900是过程400的步骤408的一个实施例。在一个实施例中,当使用过程800来用在每个存储装置120上具有相同内部地址的分块构成冗余编码条带时,使用过程900。
过程900描述恢复与一个ELBA相关联的丢失数据的技术。如果需要,可以针对其它ELBA重复过程900。过程900将参考结合过程800写入与ELBA“5”和“256”相关联的数据的实例来论述。为了示例,存储装置120-2无法读取与ELBA“256”相关联的数据。为了示例,这在存储装置120-1接收到ELBA“5”的第二写入之后的某一时间进行。
步骤902包含存取与ELBA“256”相关联的ILBA。在一个实施例中,主控制器130请求非易失性存储装置120中的一个提供ELBA“256”映射到的ILBA。在非易失性存储装置120-2能够存取它的ELBA到ILBA映射数据结构750的情况下,非易失性存储装置120-2可以返回ILBA。在此实例中,非易失性存储装置120-2将返回“6169”。应注意,在一个实施例中,此ILBA实际上识别了冗余编码条带,因为所有非易失性存储装置120针对给定冗余编码条带使用ILBA。
应注意,非易失性存储装置120-2有可能无法存取它的ELBA到ILBA映射数据结构750。在一个实施例中,其它非易失性存储装置120中的至少一个维持非易失性存储装置120-2的ELBA到ILBA映射数据结构750的副本。此副本可以维持在存储器结构126中的非易失性存储器单元中。因此,主控制器130可以从不同的非易失性存储装置120获得ILBA。同样地,在非易失性存储装置120-1出现故障的情况下,其它非易失性存储装置120中的至少一个维持非易失性存储装置120-1的ELBA到ILBA映射数据结构750的副本。这同样适用于其它非易失性存储装置120的ELBA到ILBA映射数据结构750。
步骤904包含存取每个其余存储装置120中的冗余条带的分块。在本实例中,主控制器130向存储装置120-1和120-m请求此分块。在一个实施例中,主控制器130发送对由发生故障的存储装置120-2提供的相同ILBA处的数据分块的请求。在本实例中,主控制器130请求存储在ILBA“6169”处的数据分块。应注意,此存取绕过了控制器首先将在内部转换到ILBA的ELBA发送到存储装置的典型步骤。在一个实施例中,通过知晓ILBA跨条带内的所有装置是相同的,控制器能够直接在ILBA处对构成条带的所有存储装置进行读取请求。如已经论述的,在所有实施例中,并不要求ILBA跨条带内的所有装置是相同的。在步骤904的一个实施例中,主控制器130发送对根据固定转换方案确定的ILBA处的数据分块的请求。
步骤906包含依然存在的(surviving)存储装置(例如,120-1和120-m)存取映射数据结构以存取ILBA“6169”处的数据。在本实例中,存储装置120-1确定ILBA“6169”映射到数据块706-25处的物理擦除块714-367。应注意,这对应于存储装置120-1结合ELBA 1首先写入的数据。在本实例中,存储装置120-m确定ILBA“6169”映射到数据块706-25处的物理擦除块714-168。因此,存储装置120-1返回数据块706-25处的物理擦除块714-367处的数据,并且存储装置120-1返回数据块706-25处的物理擦除块714-168处的奇偶校验数据。
步骤908包含根据在步骤906中返回的数据分块计算丢失数据。
步骤910包含恢复丢失数据。数据可恢复到存储装置120-2,或恢复到某一其它存储装置120。
应注意,在某些实施例中,因为来自多个存储装置的擦除块组合成条带,所以在垃圾数据收集动作之后,受影响条带上的奇偶校验应该重建。因此,在一个实施例中,垃圾数据收集在存储装置当中以协调方式执行。例如,它可以通过主机系统或主控制器以协调方式完成。在另一实例中,用来垃圾数据收集的条带(以及擦除块(若扩展))的选择需要在存储装置当中进行协调。
另外,具有驱动内RAID配置的存储装置可用于所公开的系统实施例,但是驱动内RAID有可能被替代,以便为了存储容量或过度提供,释放用于驱动内RAID的奇偶校验块。
在一个实施例中,不使用上文所描述的系统RAID/擦除编码方案,即,没有存储装置120指派作为奇偶校验驱动。在所述实施例中,上文所描述的地址映射机构仍然是相同的,但是省略了奇偶校验计算和存储功能。仍然实现了将写入序列化卸载到单独的存储装置的优势,最显著的是降低了主机/系统级处的映射表存储器要求。在这种情况下,冗余由某一其它方法提供,例如,通过外部镜像处理提供。
图10示出可用于实施主机115、主控制器130或主机/主控制器600的一个实施例的计算机系统1000的示意图。计算系统1000包含硬盘或便携式媒体等存储装置1010、用于与其它计算系统通信的网络接口1020、用于执行软件指令的处理器1030、例如用于在软件指令从存储装置1010载入之后存储软件指令的RAM等工作存储器1040,以及一个或多个视频监视器等用户接口显示器1050。处理器1090可以实施为一个或多个CPU芯片、核心(例如,多核处理器)、FPGA、ASIC和/或DSP,和/或可以是一个或多个ASIC的一部分。用户接口可以提供作为一个或多个监视器。存储装置1010和工作存储器1040可被视为其上体现有处理器可读代码的有形非暂时性处理器或计算机可读存储装置,用于将处理器1030编程成执行用于提供本文所论述的功能性的方法。用户接口显示器1050可使用任何已知的显示方案,不管是图形的、表格的还是类似的。除了屏幕显示之外,还可以提供例如来自打印机的硬拷贝的输出。
本文中所公开的第一实施例包含一种系统,包括:多个非易失性存储装置。每个非易失性存储装置可包括多个非易失性存储器单元、非暂时性存储装置和配置成接收在非易失性存储装置的非易失性存储器单元中存储数据的写入请求的通信接口。写入请求中的一个可包括外部逻辑地址。每个非易失性存储装置可进一步包括映射逻辑,所述映射逻辑配置成在非暂时性存储装置中存储写入请求中的外部逻辑地址到非易失性存储装置的内部地址之间的映射。非易失性存储系统可进一步包括配置成构成冗余编码条带的冗余编码逻辑。每一个冗余编码条带可以由所述多个非易失性存储装置中的每一个上的数据分块形成。每一个冗余编码条带可以由具有跨存储装置用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块形成。
在第二实施例中,根据第一实施例,要使用具有用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码逻辑进一步配置成使用具有相同内部地址的数据分块形成冗余编码条带。
在第三实施例中,根据第一实施例,要使用具有用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码逻辑进一步配置成使用具有根据固定地址转换方案指派的内部地址的数据分块形成冗余编码条带。
在第四实施例中,根据第一实施例,要使用具有用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块构成冗余编码条带,冗余编码逻辑进一步配置成使用具有根据所述多个非易失性存储装置中的每一个内部的一个或多个查找表指派的内部地址的数据分块形成冗余编码条带。
在第五实施例中,根据第一到第四实施例中的任一个,非易失性存储装置系统进一步包括恢复逻辑,所述恢复逻辑配置成基于所存储的外部逻辑地址到内部地址之间的映射而恢复存储在非易失性存储装置中的一个中的冗余编码条带中的数据分块。
在第六实施例中,根据第五实施例,恢复逻辑进一步配置成:存取多个非易失性存储装置中的第一非易失性存储装置存储与外部逻辑地址中的第一外部逻辑地址相关联的数据分块的内部地址;存取第一非易失性存储装置存储与第一外部逻辑地址相关联的数据分块的相同内部地址处的多个非易失性存储装置中的其它非易失性存储装置的数据分块;以及基于其它非易失性存储装置的数据分块,恢复与第一外部逻辑地址相关联的数据分块。
在第七实施例中,根据第一到第六实施例中的任一个,系统进一步包括逻辑,所述逻辑配置成协调与按照时间顺序依序接收到的写入请求中的随机外部逻辑地址相关联的数据到多个非易失性存储装置中的若干非易失性存储装置中用协调的外部逻辑地址到内部地址转换方案指派的内部地址的写入。
在第八实施例中,根据第七实施例,冗余编码逻辑进一步配置成使用与按照时间顺序依序接收到的写入请求中的随机外部逻辑地址相关联的数据分块形成冗余编码条带。
在第九实施例中,根据第一到第八实施例中的任一个,非易失性存储装置系统进一步包括驱动虚拟化逻辑,所述驱动虚拟化逻辑配置成:接收各自包括具有外部逻辑地址和至少一个另外位的虚拟地址的写入请求;以及针对包括虚拟地址的写入请求中的若干写入请求,向选定非易失性存储装置发送指示选定非易失性存储装置写入与虚拟地址中的外部逻辑地址相关联的数据的写入请求。
在第十实施例中,根据第九实施例,驱动虚拟化逻辑进一步配置成在非暂时性存储装置中维持驱动虚拟化数据结构,所述驱动虚拟化数据结构指示针对虚拟地址中的每一个将写入请求发送到的选定非易失性存储装置。
在第十一实施例中,根据第一到第十实施例中的任一个,其中要构成冗余编码条带,冗余编码逻辑进一步配置成:根据主机数据计算每个冗余编码条带的冗余代码;以及指示多个非易失性存储装置在用协调的外部逻辑地址到内部地址转换方案指派的内部地址处写入主机数据和冗余编码条带的冗余代码。
在第十二实施例中,根据第一到第十一实施例中的任一个,系统包括具有控制器和多个非易失性存储装置的数据存储系统。冗余编码逻辑驻留在控制器中。
在第十三实施例中,根据第一到第十二实施例中的任一个,系统包括以通信方式耦合到多个非易失性存储装置的主机系统。冗余编码逻辑驻留在主机系统中。
一个实施例包含一种方法,包括在多个非易失性存储装置中的每一个处接收各自包括外部逻辑地址的多个写入请求。所述多个非易失性存储装置共享共同的内部逻辑寻址方案。所述方法进一步包括在所述多个非易失性存储装置中的每一个处,将所述外部逻辑地址映射到所述共同的内部逻辑寻址方案中的内部逻辑地址。所述方法进一步包括将所述映射存储在所述多个非易失性存储装置中的若干非易失性存储装置中的非暂时性存储装置中。所述方法进一步包括通过主控制器构成冗余编码条带。所述冗余编码条带中的每一个由所述多个非易失性存储装置中的每一个上的数据分块形成。所述冗余编码条带中的每一个由具有所述共同的内部逻辑寻址方案中的相同内部逻辑地址的数据形成。
一个实施例包含一种方法,包括在多个非易失性存储装置中的每一个处接收各自包括外部逻辑地址的多个写入请求。所述多个非易失性存储装置共享共同的内部逻辑寻址方案。所述方法进一步包括在所述多个非易失性存储装置中的每一个处将所述外部逻辑地址映射到所述共同的内部逻辑寻址方案中的内部逻辑地址。所述方法进一步包括将所述映射存储在所述多个非易失性存储装置中的若干非易失性存储装置中的非暂时性存储装置中。所述方法进一步包括通过主控制器构成冗余编码条带。所述冗余编码条带中的每一个由所述多个非易失性存储装置中的每一个上的数据分块形成。所述冗余编码条带中的每一个由具有跨所述存储装置用协调的外部逻辑地址到内部地址转换方案指派的内部地址的数据分块形成。
一个实施例包含一种非易失性存储系统,包括:用于构成冗余编码条带的冗余编码构件,所述冗余编码构件进一步用于向多个非易失性存储装置发送各自在相同内部地址处写入冗余编码条带的数据分块的写入请求,所述写入请求中的每一个具有外部逻辑地址;用于在所述多个非易失性存储装置处接收所述写入请求的通信构件;用于写入具有跨所述存储装置用协调的外部逻辑地址到内部地址转换方案指派的内部地址的冗余条带的分块的写入构件;以及用于将所述写入请求中的所述外部逻辑地址映射到所述多个非易失性存储装置的内部地址的地址映射构件,所述映射构件进一步用于将所述映射存储在非暂时性存储装置中。
一个实施例包含一种非易失性存储系统,包括:用于构成冗余编码条带的冗余编码构件,所述冗余编码构件进一步用于向多个非易失性存储装置发送各自在相同内部地址处写入冗余编码条带的数据分块的写入请求,所述写入请求中的每一个具有外部逻辑地址;用于在所述多个非易失性存储装置处接收所述写入请求的通信构件;用于在所述多个非易失性存储装置中的每一个上的相同内部地址处写入冗余条带的分块的写入构件;以及用于将所述写入请求中的所述外部逻辑地址映射到所述多个非易失性存储装置的内部地址的地址映射构件,所述映射构件进一步用于将所述映射存储在非暂时性存储装置中。
在一个实施例中,冗余编码构件包含冗余编码模块136、处理器122c、CPU 200、驱动虚拟化逻辑732中的一个或多个,但不限于此。
在一个实施例中,通信构件包含接口122d、前端模块208、主机接口220、PHY 222中的一个或多个,但不限于此。
在一个实施例中,写入构件包含处理器122c、CPU 200、状态机112、芯片上地址解码器114、功率控制116、读取/写入电路128、解码器124、132中的一个或多个,但不限于此。
在一个实施例中,地址映射构件包含地址映射模块150、处理器122c、CPU 200、状态机112、功率控制116、读取/写入电路128中的一个或多个,但不限于此。
在一个实施例中,非易失性存储系统进一步包括用于基于所存储的外部逻辑地址到内部地址的映射而恢复存储在非易失性存储装置中的一个中的冗余编码条带中的数据分块的数据恢复构件。数据恢复构件可包含冗余编码模块136、地址映射模块150、处理器122c、CPU 200、状态机112、功率控制116、芯片上地址解码器114、读取/写入电路128、解码器124、132中的一个或多个,但不限于此。
为了提供对附图中所示的示例实施方案的透彻理解,本文中描述了许多细节。但是,一些实施例可以在没有许多具体细节的情况下实践,并且权利要求书的范围只受在权利要求书中具体列举的那些特征和方面限制。此外,众所周知的方法、组件和电路没有详尽描述,以免对本文中所描述的实施方案的更相关的方面产生不必要的混淆。
本文所使用的术语仅用于描述特定实施例的目的,且并不希望限制权利要求书。如实施例及所附权利要求书的描述中所使用,单数形式“一”及“所述”意在同样包含复数形式,除非上下文另有清楚指示。还应理解,如本文使用的术语“和/或”指代并且涵盖一个或多个相关联的列举项的任何和所有可能组合。应进一步理解的是,当在本说明书中使用时,术语“包括(comprises和/或comprising)”指定所陈述的特征、整数、步骤、操作、要素和/或组件的存在,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、要素、组件和/或其群组。
如本文中所使用,取决于上下文,术语“如果”可被解释为表示“当所陈述的先决条件为真时”或“在所陈述的先决条件为真后”或“响应于确定所陈述的先决条件为真”或“根据确定所陈述的先决条件为真”或“响应于检测到所陈述的先决条件为真”。类似地,取决于上下文,短语“如果确定[所陈述的先决条件为真]”或“如果[所陈述的先决条件为真]”或“当[所陈述的先决条件为真]时”可被解释为表示“在确定所陈述的先决条件为真后”或“响应于确定所陈述的先决条件为真”或“根据确定所陈述的先决条件为真”或“在检测到所陈述的先决条件为真后”或“响应于检测到所陈述的先决条件为真”。
出于本文的目的,说明书中对“实施例”、“一个实施例”、“一些实施例”或“另一实施例”的引用可用于描述不同的实施例或相同的实施例。
出于本文的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其它部分)。在一些情况下,当元件被称为连接或耦合到另一元件时,所述元件可以直接连接到另一元件或经由中间元件间接连接到另一元件。当一个元件被称为直接连接到另一个元件时,则在所述元件和另一元件之间没有中间元件。如果两个装置直接或间接连接,使得这两个装置可以在它们之间传送电子信号,则这两个装置“通信”。
出于本文的目的,术语“基于”可以被理解为“至少部分基于”。
出于本文的目的,在没有额外上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能并不暗示对象的排序,而是可以用于识别目的以识别不同的对象。
出于本文的目的,术语“一组”对象可以指“一组”一个或多个对象。
出于阐释的目的,已参考具体实施方案描述了前述描述。然而,以上说明性论述并不意图为详尽的或将权利要求限于所公开的精确形式。鉴于以上教示,许多修改及变化是可能的。为了最佳解释实际应用和操作原理,选择并描述了实施方案,由此启发所属领域的其他技术人员。
Claims (25)
1.一种非易失性存储系统,其包括:
多个非易失性存储装置,每个非易失性存储装置包括:
多个非易失性存储器单元;
非暂时性存储装置;
通信接口,其配置成接收在所述非易失性存储装置的非易失性存储器单元中存储数据的写入请求,所述写入请求中的若干写入请求包括外部逻辑地址;
映射逻辑,其配置成在所述非暂时性存储装置中存储所述写入请求中的外部逻辑地址与所述非易失性存储装置的内部地址之间的映射;以及
冗余编码逻辑,其配置成构成冗余编码条带,所述冗余编码条带中的每一个由所述多个非易失性存储装置中的每一个上的数据分块形成,所述多个非易失性存储装置中的每一个上的所述数据分块具有使用外部逻辑地址到内部地址转换方案由所述映射逻辑指派的内部地址,所述外部逻辑地址到内部地址转换方案跨所述多个非易失性存储装置来协调所述外部逻辑地址到所述内部地址的序列化。
2.根据权利要求1所述的系统,其中为了构成所述冗余编码条带,所述冗余编码逻辑进一步配置成:
使用具有相同内部地址的数据分块形成冗余编码条带。
3.根据权利要求1所述的系统,其中为了构成所述冗余编码条带,所述冗余编码逻辑进一步配置成:
使用具有根据固定地址转换方案指派的内部地址的数据分块形成冗余编码条带。
4.根据权利要求1所述的系统,其中为了构成所述冗余编码条带,所述冗余编码逻辑进一步配置成:
使用具有根据所述多个非易失性存储装置中的每一个内部的一个或多个查找表指派的内部地址的数据分块形成冗余编码条带。
5.根据权利要求1所述的系统,其进一步包括恢复逻辑,所述恢复逻辑配置成
基于所存储的所述外部逻辑地址与所述内部地址之间的映射,恢复存储在所述非易失性存储装置中的一个中的冗余编码条带中的数据分块。
6.根据权利要求5所述的系统,其中所述恢复逻辑进一步配置成:
存取所述多个非易失性存储装置中的第一非易失性存储装置存储与所述外部逻辑地址中的第一外部逻辑地址相关联的数据分块的内部地址;
存取所述第一非易失性存储装置存储与所述第一外部逻辑地址相关联的所述数据分块的相同内部地址处的来自所述多个非易失性存储装置中的其它非易失性存储装置的数据分块;以及
基于来自其它非易失性存储装置的所述数据分块,恢复与所述第一外部逻辑地址相关联的所述数据分块。
7.根据权利要求1所述的系统,其进一步包括逻辑,所述逻辑配置成协调与按照时间顺序依序接收到的写入请求中的随机外部逻辑地址相关联的数据到所述多个非易失性存储装置的若干非易失性存储装置中用所述协调的外部逻辑地址到内部地址转换方案指派的所述内部地址的写入。
8.根据权利要求7所述的系统,其中所述冗余编码逻辑进一步配置成使用与按照时间顺序依序接收到的所述写入请求中的所述随机外部逻辑地址相关联的数据分块形成冗余编码条带。
9.根据权利要求1所述的系统,其进一步包括驱动虚拟化逻辑,所述驱动虚拟化逻辑配置成:
接收各自包括具有外部逻辑地址和至少一个另外位的虚拟地址的写入请求;以及
针对包括虚拟地址的所述写入请求中的若干写入请求,向选定非易失性存储装置发送指示所述选定非易失性存储装置写入与所述虚拟地址中的所述外部逻辑地址相关联的数据的写入请求。
10.根据权利要求9所述的系统,其中所述驱动虚拟化逻辑进一步配置成:
在非暂时性存储装置中维持驱动虚拟化数据结构,所述驱动虚拟化数据结构指示针对所述虚拟地址中的每一个将写入请求发送到的所述选定非易失性存储装置。
11.根据权利要求1所述的系统,其中要构成所述冗余编码条带,所述冗余编码逻辑进一步配置成:
根据主机数据计算每个冗余编码条带的冗余代码;以及
指示所述多个非易失性存储装置使用所述外部逻辑地址到内部地址转换方案指派的所述内部地址处写入所述主机数据和冗余编码条带的所述冗余代码。
12.根据权利要求1所述的系统,还包括控制器,其中所述冗余编码逻辑驻留在所述控制器中。
13.根据权利要求1所述的系统,其进一步包括以通信方式耦合到所述多个非易失性存储装置的主机系统,其中所述冗余编码逻辑驻留在所述主机系统中。
14.一种用于操作多个非易失性存储装置的方法,所述方法包括:
在所述多个非易失性存储装置中的每一个处接收各自包括外部逻辑地址的多个写入请求,所述多个非易失性存储装置共享共同的内部逻辑寻址方案;
在所述多个非易失性存储装置中的每一个处映射出所述外部逻辑地址与所述共同的内部逻辑寻址方案中的内部逻辑地址之间的映射;
将所述映射存储在所述多个非易失性存储装置中的若干非易失性存储装置中的非暂时性存储装置中;以及
通过主控制器构成冗余编码条带,所述冗余编码条带中的每一个由所述多个非易失性存储装置中的每一个上的数据分块形成,所述多个非易失性存储装置中的每一个上的所述数据分块具有所述共同的内部逻辑寻址方案中的相同内部逻辑地址,所述共同的内部逻辑寻址方案跨所述多个非易失性存储装置将所述外部逻辑地址序列化到所述内部逻辑地址。
15.根据权利要求14所述的方法,其进一步包括:
基于所存储的所述外部逻辑地址与所述内部逻辑地址之间的映射,恢复存储在所述非易失性存储装置中的一个中的冗余编码条带中的数据分块。
16.根据权利要求15所述的方法,其中恢复所述数据分块进一步包括:
存取所述多个非易失性存储装置中的第一非易失性存储装置存储与所述外部逻辑地址中的第一外部逻辑地址相关联的数据分块的内部逻辑地址;
存取所述第一非易失性存储装置存储与所述第一外部逻辑地址相关联的所述数据的相同内部逻辑地址处的来自所述多个非易失性存储装置中的其它非易失性存储装置的数据分块;以及
基于来自其它非易失性存储装置的所述数据分块,恢复与所述第一外部逻辑地址相关联的所述数据分块。
17.根据权利要求14所述的方法,其进一步包括:
在所述非易失性存储装置中的若干非易失性存储装置中的相同内部逻辑地址处,写入按照时间顺序依序被所述主控制器接收到的写入请求中的随机外部逻辑地址的数据。
18.根据权利要求14所述的方法,其进一步包括:
通过所述主控制器接收各自包括虚拟地址的写入请求,所述虚拟地址包括外部逻辑地址和驱动位;
通过所述主控制器针对所述写入请求中的每一个而选择所述多个非易失性存储装置中的一个;
针对包括虚拟地址的所述写入请求中的每一个,通过所述主控制器向选定非易失性存储装置发送写入与所述虚拟地址中的所述外部逻辑地址相关联的数据的请求;以及
通过所述主控制器在非暂时性存储装置中维持驱动虚拟化数据结构,所述驱动虚拟化数据结构指示针对所述虚拟地址中的每一个将写入请求发送到的所述选定非易失性存储装置。
19.根据权利要求14所述的方法,其中将所述映射存储在所述多个非易失性存储装置中的若干非易失性存储装置中的所述非暂时性存储装置中进一步包括:
在所述多个非易失性存储装置中的所述若干非易失性存储装置中的所述非暂时性存储装置中维持所述写入请求中的所述外部逻辑地址到虚拟擦除块地址之间的映射和针对物理擦除块内的数据块的指针;以及
在所述多个非易失性存储装置中的所述若干非易失性存储装置中的所述非暂时性存储装置中维持虚拟擦除块地址和物理擦除块的物理擦除块地址之间的映射,所述物理擦除块目前存储与映射到所述虚拟擦除块地址的所述外部逻辑地址相关联的有效数据。
20.根据权利要求14所述的方法,其中构成所述冗余编码条带进一步包括:
通过冗余编码逻辑从来自主机的写入请求收集足够的主机数据以填充整个冗余编码条带;
通过所述冗余编码逻辑计算所述冗余编码条带中的所述主机数据的冗余代码;以及
通过所述冗余编码逻辑指示所述多个非易失性存储装置在相同内部逻辑地址处写入所述整个冗余编码条带中的所述主机数据和所述冗余代码。
21.根据权利要求20所述的方法,其中指示所述多个非易失性存储装置在相同内部逻辑地址处写入所述整个冗余编码条带中的所述主机数据和所述冗余代码进一步包括:
指示一组所述多个非易失性存储装置各自将来自请求者的所述数据分块写入到所述多个非易失性存储装置的所述共同的内部逻辑寻址方案中的相同地址;以及
指示所述多个非易失性存储装置中的至少一个将所述冗余代码的分块写入到所述多个非易失性存储装置的所述共同的内部逻辑寻址方案中来自所述请求者的所述数据写入到的相同地址。
22.一种非易失性存储系统,其包括:
冗余编码构件,其用于构成冗余编码条带,所述冗余编码构件进一步用于向多个非易失性存储装置发送在所述多个非易失性存储装置中的每一个上的相同内部地址处写入冗余编码条带的数据分块的写入请求,所述写入请求中的每一个具有跨所述多个非易失性存储装置被序列化为所述相同内部地址的外部逻辑地址;
通信构件,其用于在所述多个非易失性存储装置处接收所述写入请求;
写入构件,其用于在所述多个非易失性存储装置中的每一个上的相同内部地址处写入冗余条带的数据分块;以及
地址映射构件,其用于映射出所述写入请求中的所述外部逻辑地址与所述多个非易失性存储装置的内部地址之间的映射,所述地址映射构件进一步用于将所述映射存储在非暂时性存储装置中。
23.根据权利要求22所述的系统,其进一步包括:
数据恢复构件,其用于基于所存储的所述外部逻辑地址与所述内部地址之间的映射,恢复存储在所述多个非易失性存储装置中的一个中的冗余编码条带中的数据分块。
24.根据权利要求23所述的系统,其中所述数据恢复构件进一步用于:
存取所述多个非易失性存储装置中的第一非易失性存储装置存储与所述外部逻辑地址中的第一外部逻辑地址相关联的数据分块的内部地址;
存取所述第一非易失性存储装置存储与第一外部逻辑地址相关联的所述数据的相同内部地址处的来自所述多个非易失性存储装置中的其它非易失性存储装置的数据分块;以及
基于来自其它非易失性存储装置的所述数据分块,恢复与所述第一外部逻辑地址相关联的所述数据分块。
25.根据权利要求22所述的系统,其中所述写入构件进一步用于:
在非易失性存储装置中的若干非易失性存储装置中的相同内部逻辑地址处,写入在所述非易失性存储装置中的所述若干非易失性存储装置处按照时间顺序依序接收到的写入请求中的随机外部逻辑地址的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/722,666 | 2017-10-02 | ||
US15/722,666 US10474528B2 (en) | 2017-10-02 | 2017-10-02 | Redundancy coding stripe based on coordinated internal address scheme across multiple devices |
PCT/US2018/052389 WO2019070433A1 (en) | 2017-10-02 | 2018-09-24 | REDUNDANCY CODING BAND BASED ON COORDINATED INTERNAL ADDRESS SCHEME THROUGH MULTIPLE DEVICES |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111149091A CN111149091A (zh) | 2020-05-12 |
CN111149091B true CN111149091B (zh) | 2023-09-12 |
Family
ID=65897297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063221.XA Active CN111149091B (zh) | 2017-10-02 | 2018-09-24 | 基于跨多个装置的协调内部地址方案的冗余编码条带 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10474528B2 (zh) |
CN (1) | CN111149091B (zh) |
DE (1) | DE112018004252T5 (zh) |
WO (1) | WO2019070433A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10649843B2 (en) | 2018-08-03 | 2020-05-12 | Western Digital Technologies, Inc. | Storage systems with peer data scrub |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US10740259B1 (en) * | 2019-04-19 | 2020-08-11 | EMC IP Holding Company LLC | Host mapping logical storage devices to physical storage devices |
US10990537B1 (en) | 2020-01-07 | 2021-04-27 | International Business Machines Corporation | Logical to virtual and virtual to physical translation in storage class memory |
US11579970B2 (en) * | 2020-07-30 | 2023-02-14 | Micron Technology, Inc. | Maintenance command interfaces for a memory system |
US12111724B2 (en) * | 2021-03-17 | 2024-10-08 | Micron Technology, Inc. | Redundant array management techniques |
US20230333990A1 (en) * | 2022-04-18 | 2023-10-19 | Samsung Electronics Co., Ltd. | Systems and methods for address translation |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727976A (zh) * | 2008-10-15 | 2010-06-09 | 晶天电子(深圳)有限公司 | 一种多层闪存装置、固态硬盘和分割非易失性存储器系统 |
CN102203865A (zh) * | 2008-09-10 | 2011-09-28 | 茵芬尼特麦默里有限公司 | 用于数据储存设备的非易失性双存储晶片 |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
WO2015034954A1 (en) * | 2013-09-03 | 2015-03-12 | Sandisk Technologies Inc. | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
CN105960639A (zh) * | 2014-01-31 | 2016-09-21 | 谷歌公司 | 分布式存储系统中的优先化数据重构 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530948A (en) | 1993-12-30 | 1996-06-25 | International Business Machines Corporation | System and method for command queuing on raid levels 4 and 5 parity drives |
US7934074B2 (en) | 1999-08-04 | 2011-04-26 | Super Talent Electronics | Flash module with plane-interleaved sequential writes to restricted-write flash chips |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
US9118698B1 (en) | 2005-12-02 | 2015-08-25 | Branislav Radovanovic | Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US8151082B2 (en) | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
US8250283B1 (en) | 2009-05-22 | 2012-08-21 | Google Inc. | Write-distribute command for RAID mirroring |
US8473648B2 (en) | 2010-12-16 | 2013-06-25 | Lsi Corporation | System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8806160B2 (en) * | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9009565B1 (en) * | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9405623B2 (en) | 2013-09-25 | 2016-08-02 | Xyratex Technology Limited | Method of, and apparatus for, layout rectification of erasure encoded storage systems |
US9448924B2 (en) | 2014-01-08 | 2016-09-20 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
US9639268B2 (en) * | 2014-08-21 | 2017-05-02 | Datrium, Inc. | Distributed data storage system with key-based addressing |
US10380026B2 (en) | 2014-09-04 | 2019-08-13 | Sandisk Technologies Llc | Generalized storage virtualization interface |
WO2016051512A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9720596B1 (en) * | 2014-12-19 | 2017-08-01 | EMC IP Holding Company LLC | Coalescing writes for improved storage utilization |
US11099746B2 (en) * | 2015-04-29 | 2021-08-24 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with one read port and one or more write ports per cycle |
TWI531963B (zh) * | 2015-06-04 | 2016-05-01 | Accelstor Inc | Data storage systems and their specific instruction enforcement methods |
US10230398B2 (en) | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
-
2017
- 2017-10-02 US US15/722,666 patent/US10474528B2/en active Active
-
2018
- 2018-09-24 DE DE112018004252.9T patent/DE112018004252T5/de active Pending
- 2018-09-24 CN CN201880063221.XA patent/CN111149091B/zh active Active
- 2018-09-24 WO PCT/US2018/052389 patent/WO2019070433A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102203865A (zh) * | 2008-09-10 | 2011-09-28 | 茵芬尼特麦默里有限公司 | 用于数据储存设备的非易失性双存储晶片 |
CN101727976A (zh) * | 2008-10-15 | 2010-06-09 | 晶天电子(深圳)有限公司 | 一种多层闪存装置、固态硬盘和分割非易失性存储器系统 |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
WO2015034954A1 (en) * | 2013-09-03 | 2015-03-12 | Sandisk Technologies Inc. | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
CN105960639A (zh) * | 2014-01-31 | 2016-09-21 | 谷歌公司 | 分布式存储系统中的优先化数据重构 |
Also Published As
Publication number | Publication date |
---|---|
DE112018004252T5 (de) | 2020-05-14 |
US10474528B2 (en) | 2019-11-12 |
WO2019070433A1 (en) | 2019-04-11 |
CN111149091A (zh) | 2020-05-12 |
US20190102249A1 (en) | 2019-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164574B (zh) | 基于存储设备内部地址的冗余编码条带 | |
CN111149091B (zh) | 基于跨多个装置的协调内部地址方案的冗余编码条带 | |
CN109840215B (zh) | 未对齐写入的处理 | |
CN108694128B (zh) | 存储器系统和用于数据存储的方法 | |
KR102368071B1 (ko) | 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 | |
US10459636B2 (en) | System and method for managing data in non-volatile memory systems having multiple mapping layers | |
US10445246B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9921956B2 (en) | System and method for tracking block level mapping overhead in a non-volatile memory | |
US10101942B1 (en) | System and method for hybrid push-pull data management in a non-volatile memory | |
US11836354B2 (en) | Distribution of logical-to-physical address entries across multiple memory areas | |
US20180341606A1 (en) | Offloaded Disaggregated Storage Architecture | |
US9990277B2 (en) | System and method for efficient address translation of flash memory device | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
US20140281173A1 (en) | Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same | |
US20130246891A1 (en) | Physical page, logical page, and codeword correspondence | |
KR20160075229A (ko) | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
US10705907B1 (en) | Data protection in a heterogeneous random access storage array | |
US11543987B2 (en) | Storage system and method for retention-based zone determination | |
US10268400B2 (en) | System and method for file detection and usage during compaction | |
JP7293458B1 (ja) | ストレージフラグメンテーションを定量化し性能低下を予測するための記憶システム及び方法 | |
CN114600074A (zh) | 块装置的构造 | |
CN117999547A (zh) | 用于存储器子系统中的两遍次编程的虚拟管理单元方案 | |
CN111309642A (zh) | 一种存储器及其控制方法与存储系统 | |
CN111367825B (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240919 Address after: Delaware, USA Patentee after: SANDISK TECHNOLOGIES Inc. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |