CN111164574A - 基于存储设备内部地址的冗余编码条带 - Google Patents
基于存储设备内部地址的冗余编码条带 Download PDFInfo
- Publication number
- CN111164574A CN111164574A CN201880063154.1A CN201880063154A CN111164574A CN 111164574 A CN111164574 A CN 111164574A CN 201880063154 A CN201880063154 A CN 201880063154A CN 111164574 A CN111164574 A CN 111164574A
- Authority
- CN
- China
- Prior art keywords
- volatile storage
- storage device
- stripe
- redundant
- data
- 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 claims abstract description 237
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000013507 mapping Methods 0.000 claims description 85
- 238000011084 recovery Methods 0.000 claims description 17
- 238000013480 data collection Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 29
- 238000012005 ligant binding assay Methods 0.000 description 22
- 239000000872 buffer Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 17
- 239000000758 substrate Substances 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 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
- 230000003936 working memory Effects 0.000 description 7
- 239000011232 storage material Substances 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 239000003990 capacitor Substances 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000008901 benefit Effects 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
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 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
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method 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
- 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
- 239000012782 phase change material Substances 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
- G06F3/064—Management of blocks
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- 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/26—Using a specific storage system architecture
- G06F2212/263—Network storage, e.g. SAN or NAS
-
- 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
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本文所公开的技术有效地使用在非易失性存储器系统中的非易失性存储设备中可用的存储器。在一个方面,管理器收集足够的数据以填充冗余编码条带的整个组块,并且请求将所述整个组块一起写入到选择的非易失性存储设备中。所选择的非易失性存储设备可返回写入所述整个组块的内部地址。所述管理器可存储标识存储每个组块的所述内部地址的条带映射。
Description
技术领域
本技术涉及非易失性存储器系统。
背景技术
半导体存储器设备已经变得越来越普遍用于各种电子设备。例如,非易失性半导体存储器用在蜂窝电话、数码相机、个人数字助理、移动计算设备、非移动计算设备、固态驱动器以及其他设备中。
电荷存储材料诸如导电浮栅或者非导电电荷俘获材料可用在一些类型的存储器单元中以存储表示数据状态的电荷。存储器单元可以是晶体管,其中电荷存储材料可驻留在沟道与控制栅极之间。电荷存储材料可与沟道和控制栅极两者绝缘。电荷存储材料可被竖直布置在三维(3D)堆叠的存储器结构中,或者被水平布置在二维(2D)存储器结构中。3D存储器结构的一个示例是位成本可扩展(BiCS)体系结构,该体系结构包括交替的导电层和介电层的堆叠。
一些类型的存储器单元可通过改变电荷存储材料中的电荷来编程,从而改变存储器单元晶体管的阈值电压(Vth)。在一种技术中,在沟道中
以低电压向控制栅极施加编程电压,以将电荷添加至电荷存储材料。在施加编程电压之后,通过向控制栅极施加验证电压并且测试存储器单元是否传导显著电流来测试存储器单元的阈值电压。可向控制栅极施加附加编程电压,接着施加验证电压,直到存储器单元的阈值电流在目标范围内。
其他类型的存储器单元可被编程为不同电阻级别。例如,电阻随机存取存储器(ReRAM)可在高电阻状态与低电阻数据状态之间可逆地切换。在一些存储器单元中,ReRAM单元可在两个以上不同电阻状态之间可逆地切换。每个电阻状态可对应于电阻范围。
附图说明
为了更详细地理解本公开,可通过参考各种实施方案的特征得到更具体的描述,该实施方案中的一些在附图中示出。然而,附图仅示出了更相关的本公开特征,因此不被认为是限制性的,因为描述可承认其他有效特征。
图1A是示出根据一些实施方案的包括非易失性存储器系统的分布式计算系统的框图。
图1B是示出根据一些实施方案的包括一个或多个非易失性存储设备的分布式计算系统的框图。
图2A是可实践实施方案的示例存储设备的框图。
图2B是示例存储设备的框图,描绘了图2A的控制器122的附加细节。
图2C描绘了存储器单元阵列的示例性结构。
图3是示出根据一些实施方案的主存储器的具体实施的框图。
图4是管理器系统的一个实施方案的框图。
图5A是冗余编码条带的示例。
图5B描绘了条带映射中一个条目的示例。
图5C描绘了在存储设备外部具有大型写串行化表的常规系统的示例。
图5D是消除了对存储设备外部的写串行化表的需求的非易失性存储设备的一个实施方案的框图。
图6是操作非易失性存储系统的过程600的一个实施方案的流程图。
图7提供了擦除块的物理地址和逻辑地址的一个实施方案的进一步细节。
图7A描绘了图7中条目704-2的进一步细节,示出了偏移716-1至716-m。
图7B描绘了基于擦除块虚拟化数据结构的一个实施方案中的条目的冗余条带的一个示例。
图7C描绘了冗余条带的每个组块为单个数据块的一个实施方案。
图7D是冗余编码条带的另一个示例。
图8是使用冗余条带中的组块来恢复ELBA的丢失数据的过程的一个实施方案的流程图。
图9示出了示例计算机系统的示意图。
根据共同实践,附图中示出的各种特征部可不按比例绘制。因此,为了清楚起见,可任意地扩展或缩减各种特征部的尺寸。此外,一些附图可不描述给定的系统、方法或设备的所有部件。最后,在通篇说明书和附图中,类似的附图标号可用于表示类似的特征部。
具体实施方式
本技术涉及操作非易失性存储器系统。本文所公开的技术有效地使用在非易失性存储器系统中的非易失性存储设备中可用的存储器。
在一些实施方案中,主机(或另选地,系统内非易失性存储设备外部的“主控制器”)具有被配置为收集足够数据(例如,随机写入)以填充冗余编码条带的整个组块的数据收集逻辑。主机还可具有被配置为发出将整个组块一起写入选择的非易失性存储设备中的命令的命令逻辑。例如,整个组块可被写入同一擦除块中。所选择的非易失性存储设备可返回写入所述整个组块的内部地址。主机可存储条带映射,该条带映射标识存储冗余编码条带的每个组块的内部地址。
本文中,“物理地址”是硬件地址(其通常在非易失性存储设备内)。因此,物理地址是物理位置的地址。如本文所用,术语“逻辑地址”是指向物理地址的指针。本文中,“内部逻辑地址”是存储与逻辑地址相关联的数据的非易失性存储设备的地址空间中的逻辑地址。如本文所用,术语“外部逻辑地址”是非易失性存储设备外部的地址空间中的逻辑地址,该设备存储与外部逻辑地址相关联的数据。例如,外部逻辑地址可以是主机的地址空间中的地址,该主机请求将与外部逻辑地址相关联的数据存储在非易失性存储设备中。本文中,“内部地址”是非易失性存储设备的地址空间中的地址。内部地址的两个示例是内部逻辑地址和物理地址。
本文中,“随机写入”是指不具有顺序地址的写入序列。例如,主机可以发出写入命令序列,其中逻辑地址是分散的。因此,随机写入序列可包括随机外部逻辑地址。相比之下,如本文所用的术语“顺序写入”是指具有顺序地址的写入序列。例如,主机可发出写入命令序列,其中逻辑地址按顺序排序。
在一些实施方案中,非易失性存储装置可用于使用基于冗余数据的保护方案(有时称为冗余编码)来存储数据。冗余编码的一个示例通常称为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 Over Fabric(NVMeOF)存储平台(例如,NVMeOF智能平台)中提供优势,因为NVMeOF允许构建高效NVMeOF控制器,该高效NVMeOF控制器可在有机硅中执行数千万IOPS。然而,在这一上下文中,存储控制器无法在没有显著效率损失的情况下执行RAID相关的任务,因此成为单个瓶颈。将冗余任务卸载到存储设备将在没有显著的性能可伸缩性损失的情况下允许将RAID/纠删码功能添加至NVMeOF存储平台。因此,与具有相同总容量和性能的直接附加存储(DAS)存储设备相比,构建高效的NVMeOF存储平台是可能的,该NVMeOF存储平台可承受例如两个驱动器故障,而存储开销(20+2RAID)仅为10%,同时在小块随机写入上的性能达到10M IOPS或更高,而成本增量很有限。
在一个实施方案中,非易失性存储设备具有映射逻辑,该映射逻辑被配置为将按时间顺序接收的写入请求中的外部LBA映射至非易失性存储设备的内部地址空间中的顺序地址。映射逻辑可被配置为将映射存储在非暂态存储装置中。例如,映射逻辑可将逻辑到物理转换表存储在非暂态存储装置中。在一个实施方案中,给定非易失性存储设备的映射逻辑被配置为将时间按顺序接收的写入请求中在给定非易失性存储设备处的随机外部逻辑地址映射至给定非易失性存储设备中的物理连续位置。在一个实施方案中,给定非易失性存储设备的映射逻辑被配置为将按时间顺序接收的写入请求中在给定非易失性存储设备处的随机外部逻辑地址映射至给定非易失性存储设备的顺序内部地址。
图1A是示出根据一些实施方案的分布式系统102的框图,该分布式系统包括通过网络101耦接到主机系统115(有时称为主机计算机系统、主机设备或主机)的非易失性存储器系统100的具体实施。需注意,可存在不止一个连接到非易失性存储器系统100的主机系统115。非易失性存储器系统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诸如固态磁盘驱动器(SSD)之间的读写命令和相关联数据的控制器。控制器130可以是非易失性存储器express(NVMe)控制器、冗余编码控制器(例如,独立磁盘冗余阵列(RAID)控制器),或用于控制访问非易失性存储设备的另一种类型的CPU或处理器。然而,在一些实施方案中,控制器130和存储设备120被包括在与其部件相同的设备(即,集成设备)中。此外,在一些实施方案中,存储设备120嵌入在主机设备(例如,计算机系统115)中,诸如移动设备、平板、其他计算机或计算机控制的设备,并且本文所述的方法至少部分地由嵌入式存储控制器执行。
在图1A,主控制器130包括冗余编码模块136。然而,冗余编码模块136可位于存储设备120或主机115中的一者中。冗余编码模块136可被配置为构成冗余编码条带。在一个实施方案中,每个冗余编码条带由每个非易失性存储设备120上的数据组块形成。在一个实施方案中,每个冗余编码条带基于内部地址形成,非易失性存储设备120在该内部地址处报告存储了条带的组块。例如,主控制器130或主机115可存储冗余条带映射,对于每个冗余编码条带,该冗余条带映射包含存储了冗余编码条带的每个组块的内部地址。
主机计算机系统115可以是任何合适的计算机设备,诸如计算机、膝上型计算机、平板设备、上网本、互联网信息亭、个人数字助理、移动电话、智能电话、游戏设备、计算机服务器或任何其他计算设备。在一些实施方案中,主机系统115是服务器系统,诸如数据中心中的服务器系统。在一些实施方案中,主机系统115包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户界面部件诸如键盘、触摸屏显示器、鼠标、触控轨迹板、数码相机,和/或任何数量的向主机计算机系统115添加功能的补充I/O设备。在一些实施方案中,主机计算机系统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和处理器通信的存储器接口是提供控制器与存储器管芯之间的电接口的电路。例如,存储器接口可以改变信号的格式或定时、提供缓冲区、隔离电涌,锁存I/O等。处理器可以经由存储器接口122d向控制电路110(或存储器管芯的任何其他部件)发出命令。
存储设备包括代码诸如一组指令,并且处理器可可操作为执行该组指令以提供本文所述的功能。另选地或除此之外,处理器可从存储器结构的存储设备126a访问代码,诸如一个或多个字线中的存储器单元的保留区域。
例如,控制器可使用代码来访问存储器结构,诸如用于编程操作、读取操作和擦除操作。代码可包括引导代码和控制代码(例如,一组指令)。引导代码是在引导或启动过程中初始化控制器并使控制器能够访问存储器结构的软件。控制器可使用代码来控制一个或多个存储器结构。在上电时,处理器122c从ROM 122a或存储设备区域126a取出引导代码以用于执行,并且引导代码初始化系统部件并且将控制代码加载到RAM 122b中。一旦控制代码被加载到RAM中,便由处理器执行。控制代码包括执行基本任务的驱动器,基本任务为诸如控制和分配存储器、对指令的处理区分优先次序,以及控制输入和输出端口。
一般来讲,控制代码可包括执行本文所述功能的指令,包括下文进一步讨论的流程图的步骤,并且提供电压波形,包括下文进一步讨论的那些。控制电路可以被配置为执行执行本文所述的功能的指令。
存储器单元可由无源和/或有源元件以任何组合形成。以非限制性示例的方式,无源半导体存储器元件包括ReRAM设备元件,在一些实施方案中,ReRAM设备元件包括电阻率切换存储元件,诸如反熔丝或相变材料,以及可选的转向元件,诸如二极管或晶体管。此外,以非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪存存储器设备元件,在一些实施方案中,该闪存存储器设备元件包括包含电荷存储区的元件,诸如浮栅、导电性纳米颗粒或电荷存储介电材料。
多个存储器元件可被配置为使得它们串联连接或者使得每个元件可被单独访问。以非限制性示例的方式,NAND配置中的闪存存储器设备(NAND存储器)通常包含串联连接的存储器元件。NAND串是包括存储器单元和SG晶体管的一组串联连接的晶体管的示例。
NAND存储器阵列可被配置为使得该阵列由存储器的多个串构成,其中串由共享单个位线并作为组被访问的多个存储器元件构成。另选地,可配置存储器元件,使得每个元件可被单独访问,例如NOR存储器阵列。NAND存储器配置和NOR存储器配置为示例,并且可以其他方式配置存储器元件。
通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可与存储器元件位于同一基板上和/或位于单独的基板上。例如,用于存储器读取-写入操作的控制器可定位在单独的控制器芯片上和/或定位在与存储器元件相同的基板上。
图2B是示例存储设备120的框图,描绘了控制器122的附加细节。在一个实施方案中,控制器122是闪存控制器。如本文所用,存储器控制器是管理存储器中存储的数据的设备。存储器控制器可与主机诸如计算机或电子设备通信。注意,在本文所述的各种实施方案的上下文中,图2B描述中的“主机”可指存储系统的控制器,诸如图1A中所示的主控制器130。然而,存储器控制器与主机之间可存在中介。除了本文所述的特定功能之外,存储器控制器还可具有各种功能。例如,存储器控制器可格式化存储器以确保存储器操作正确、标出坏的存储器单元,并且分配备用存储器单元以替换未来发生故障的单元。备用单元中的一些部分可用于保持固件以操作存储器控制器并且实现其他特征。在操作中,当主机需要从存储器读取数据或向闪存存储器写入数据时,它将与存储器控制器通信。如果主机提供要读/写数据的逻辑地址,则存储器控制器可将从主机接收的逻辑地址转换成存储器中的物理地址。(或者,主机可以提供物理地址)。闪存存储器控制器可还执行各种存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗否则将被重复写入的特定存储器块)和垃圾收集(在块已满之后,仅将有效的数据页面移动到新块,因此可以擦除并且重用完整块)。
控制器122与非易失性存储器管芯108之间的接口可以是任何合适的接口。在一个实施方案中,存储器系统100可为基于卡的系统,诸如安全数字(SD)或微型安全数字(micro-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。注意,在一个实施方案中,主机接口220用于与主控制器130通信。可以取决于所使用的存储器的类型来选择主机接口220的类型。主机接口220的示例包括但不限于SATA、SATA Express、SAS、光纤信道、USB、PCIe以及NVMe。主机接口220通常便于数据、控制信号和定时信号的传送。
后端模块210包括纠错控制器(ECC)引擎224,该ECC引擎对从主机接收的数据字节编码,并且对从非易失性存储器读取的数据字节解码和纠错。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,或硬件处理器,或微控制器;用于将主控制器130耦接到一个或多个主机系统115的主机接口302(图1A或图1B);用于将主控制器耦接到一个或多个通信总线(例如,图1A或图1B的连接135)的总线接口304;存储器306(本文中有时称为控制器存储器);以及用于将这些部件互连的一个或多个通信总线308。通信总线308可选地包括将系统部件互连并且控制其间通信的电路(有时称为芯片组)。
主控制器130一般促进从存储设备120中的非易失性存储器进出数据。主控制器130经由主机接口302通过网络101与主机系统115交换数据。在一些实施方案中,主控制器130可包括用于存储和访问存储设备(例如,存储设备120)阵列中数据的冗余编码控制器(例如,RAID控制器)。一个或多个处理器300执行存储器306中存储的模块、程序和/或指令,从而执行处理操作。在一些实施方案中,一个或多个处理器300由通信总线308耦接到存储设备120。在其他实施方案中,间接通过例如总线接口304,诸如基于PCI Express的总线接口(例如,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接收读写命令,分配存储设备中的存储装置缓冲区,并且将主机命令转换为存储设备命令,以促进远程DMA传输与主机系统115上的主机缓冲区与相关联的存储设备120上的存储装置缓冲区之间读写命令对应的数据。为了促进主机命令的转换,主机命令处理模块320可包括到SSD命令转换模块324的主机命令,该SSD命令转换模块将主机读写命令转换成适用于由存储设备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还包括冗余编码模块136以用于确定非易失性存储设备120以在其中存储任何给定写入命令或写入命令集的数据和奇偶校验信息,例如当使用特定冗余编码级别(例如,任何预定义的RAID级别,诸如RAID0到RAID6、RAID10、RAID01等)时。在一些实施方案中,冗余编码模块136与条带映射352或条带函数一起工作,以用于确定特定存储设备以在执行任何指定写入操作或一组写入操作时在其中存储数据和奇偶校验。在一些实施方案中,主控制器130在向特定存储设备120发送奇偶校验生成命令以针对所指定的数据生成奇偶校验数据时,还向这个存储设备提供条带映射或其他数据结构,以使得存储设备知道要向哪个其他存储设备转发所指定的数据以用于存储。
在一些实施方案中,主控制器130的存储器306还包括数据恢复模块390,以用于在存储设备120发生故障时或更一般地在无法从存储条带的一部分的存储设备120中所存储的信息读取条带的这部分中的数据时恢复数据。
每个以上所标识的元件可存储在一起形成存储器306的一个或多个先前提到的存储器设备中,并且对应于用于执行上述功能的指令集和数据。以上标识的模块或程序(即,指令集)不需要实现为单独的软件程序、过程或模块,并且因此这些模块的各种子集可以在各种实施方案中组合或以其他方式重新布置。在一些实施方案中,存储器306可存储以上识别的模块和数据结构的子集。此外,存储器306可存储以上未描述的附加的模块和数据结构。在一些实施方案中,存储器306或存储器306的计算机可读存储介质中存储的程序、模块和数据结构提供指令以用于实现下面参照图4、图6和图8所述的方法中的相应操作。
尽管图3示出了主控制器130,但是图3更多地旨在作为可存在于主控制器或非易失性存储器控制器中的各种特征的功能描述,而不是作为本文所述的实施方案的结构示意图。在实践中,并且如本领域的普通技术人员认识到,单独示出的项可以组合,并且一些项可以分开。此外,如上所指出,在一些实施方案中,主控制器130的一个或多个模块由主机计算机系统115的一个或多个模块实现,或作为存储设备120的一部分来实现。
图4是管理器系统400的一个实施方案的框图。在一个实施方案中,管理器系统400是图1A中主控制器130的一部分。在另一个实施方案中,管理器系统400是图1B中主机115的一部分。然而,管理器系统400不限于此。管理器系统400包括数据收集模块402、命令模块404、通信接口406、冗余编码模块416、数据恢复模块418、驱动器虚拟化逻辑408、驱动器虚拟化表410、条带映射422和正向映射高速缓存424。
在一些实施方案中,管理器系统400可收集冗余编码条带中组块的数据。简要参照图5A,描绘了冗余编码条带512。冗余编码条带512包含数据504(0)至504(m-1)的“m”个组块。在一个实施方案中,每个组块504被写入不同非易失性存储设备120。一个或多个组块可包含冗余码(例如,条带的奇偶校验组块)。组块504(0)的数据由数据块506(0)至506(n-1)表示。
每个数据块506与外部逻辑块地址(ELBA)相关联。例如,数据块506(0)与ELBA 0相关联,数据块506(1)与ELBA 1相关联,而数据块506(n-1)与ELBA n-1相关联。组块504的ELBA可以是随机地址。如本文所定义,随机地址不按顺序排序。换句话讲,给定组块的数据可以是随机数据。但是,组块中的数据可以是顺序的,而不是随机的。即,ELBA 506可按顺序排序。可能一些组块504的数据是随机的,而其他组块的数据是顺序的。可能在组块504内,一些数据是随机的,而一些是顺序的。
再次参照图4,数据收集模块402可被配置为收集冗余编码条带中组块的数据。命令模块404可被配置为发送在选择的非易失性存储设备120中写入冗余编码条带的数据组块的命令。命令可指示整个组块要被写入连续的一组存储器单元中,诸如在整个擦除块中或擦除块的连续部分中。
在一些实施方案中,选择的非易失性存储设备120返回存储组块的内部地址。这在本文中可称为“固定内部地址”。如上所论述,固定内部地址可以是非易失性存储设备120的地址空间中的地址(与例如ELBA相反)。此外,如果管理器400稍后发送请求以在固定内部地址处读取数据组块,则选择的非易失性存储设备120将返回其在提供固定内部地址时其存储的数据组块,即使选择的非易失性存储设备120将数据物理地移动至选择的非易失性存储设备120中的另一个位置。通信接口406可被配置为接收固定内部地址。在管理器希望获得或修改数据组块的情况下,管理器400可保存固定内部地址。
冗余编码模块416可被配置为构成冗余编码条带。在一个实施方案中,冗余编码模块416将条带映射422存储在非暂态存储器中。图5B描绘了条带映射422中的一个条目514的示例。条目514包含冗余条带标识符515,该冗余条带标识符在这种情况下为“条带1”。条目514包含条带(条带1)的每个组块的内部逻辑块地址(ILBA)516。例如,ILBA 516(0)是存储设备120(1)上存储的组块504(0)的内部地址。在一个实施方案中,ILBA引用写入数据的特定存储设备的内部擦除块。
数据恢复模块418可被配置为基于冗余编码条带的其他组块来恢复冗余编码条带的数据组块。在一个实施方案中,数据恢复模块418访问存储设备120的非易失性存储装置中存储的持久版本的正向映射以帮助数据恢复。下面论述进一步细节。
在一些实施方案中,存在可包含虚拟块地址(VBA)的虚拟地址空间。在一个实施方案中,虚拟块地址具有ELBA和一个或多个驱动器位。在一个实施方案中,驱动器虚拟化表(DVT)410包含从VBA到一个存储设备120的映射。当接收到对VBA的写入时,驱动器虚拟化模块408可确定写入应被发送至的存储设备120。驱动器虚拟化模块408可在DVT 410中创建(或更新)将VBA链接至存储设备120的唯一标识符的条目。在一个实施方案中,DVT 410包括从VBA映射至存储设备的地址映射表。需注意,这个唯一标识符不一定是VBA中的驱动器位。然而,一种选择是仅使用VBA中的驱动器位以标识要写入的存储设备120。
正向映射高速缓存424可包含正向映射的一部分的副本,该正向映射将VBA映射至条带ID(SID)。在一个实施方案中,正向映射是由VBA索引并且用于错误恢复的SID条目表,如稍后将解释。例如,在VBA处的读取可返回错误,然后触发错误的VBA可用作索引以查找正向映射中的SID,从而可定位到包含错误的条带。在定位到条带的情况下,可因此在稍后描述的条带映射的帮助下发起错误恢复。由于仅错误处理需要正向映射,所以在一个实施方案中,仅对其一部分进行高速缓存。
在一些实施方案中,模块402、404、416和/或418可存储在非暂态存储器(诸如图3中的存储器306或图9中的存储装置910或工作存储器940)中,并且可对应于用于执行上述功能的指令集和数据。这些指令可在处理器(例如,图3中的CPU 300或图9中的处理器990)上执行。以上所标识的模块或程序(即,指令集)不需要实现为单独的软件程序、过程或模块,因此这些模块的各种子集可在各种实施方案中组合或以其他方式重新布置。在一些实施方案中,程序、模块和数据结构提供指令以用于实现下面参照图6和图8所述的方法中的相应操作。
一些实施方案消除了对存储系统诸如图1A中的存储系统100内的存储设备120外部的大型崩溃安全写串行化表的需要。图5C描绘了在存储设备120外部具有大型写串行化表524的常规系统的示例。例如,大型写串行化表524可在主机系统或耦接到主机系统的存储系统的主控制器中。主机/主控制器520具有被配置为将随机虚拟块地址(VBA)串行化为串行外部逻辑块地址(LBA)的写串行化逻辑522。注意,VBA和ELBA用于在存储设备120中执行的写入。例如,在跨越存储设备120的虚拟地址空间中随机分布但是用于按时间顺序发生的写入的VBA可被转换成外部LBA序列。外部LBA序列可被发送至存储设备120。写串行化逻辑502存储写串行化表504中从VBA到LBA的映射。
注意,在具有许多存储设备的存储系统中,写串行化表524可能需要非常大。例如,常规的写串行化表524可能在非易失性存储设备中存储每4KB需要五个字节(假设页面大小为4KB)。例如,如果非易失性存储设备的总容量为1千万亿字节(PB),则写串行化表524的大小可能需要超过1万亿字节(TB)。在主机中的DRAM中存储写串行化表524的成本可能非常高。
本文所公开的实施方案消除了在存储设备120外部具有写串行化表524的需要。相反,在一些实施方案中,与写串行化相关联的映射被卸载到存储设备120。图5D为主机/主控制器的配置的一个实施方案的框图,该主机/主控制器具有多个非易失性存储设备120,该多个非易失性存储设备消除了对存储设备120外部的写串行化表的需要。如图所示,管理器400正在执行写串行化的任务,其中用于要按时间顺序执行的写入的多个VBA(VBA-1、VBA-2、VBA-3等)被串行化为条带442。管理器可使用本地存储器缓冲区(例如,非易失性存储器)在构建条带时临时存储要写入条带的VBA。条带442最终将被写入存储设备120中,其中各个组块分布在设备之间,并且分别在这些设备的某些外部LBA处。这个任务可由先前在图4中所示的冗余编码模块416执行。
管理器400采用不同过程执行和跟踪串行化写入,而不是如图5C中所示维护VBA到外部LBA的大型映射。以VBA-1为例,VBA-1被馈送至函数440,该函数提取要发送至存储设备的外部LBA以用于写入VBA-1。用于从VBA提取外部LBA的函数能够以多种方式实现,并且可包括位选择或哈希函数。同一VBA-1还通过写串行化过程而分配有设备ID,以确保用于条带的写入最终分布在存储设备之间。因此,可分配条带中的另一个VBA以写入到不同设备,从而产生不同设备ID。
在这种情况下,假设VBA-1分配有存储设备120-1的设备ID。因此,使用VBA作为设备ID的条目索引的DVT被更新以反映这一VBA设备ID配对,并且现在,具有(1)标识存储设备120-1的设备ID和(2)已从VBA-1提取的外部LBA的情况下,VBA-1的数据具有完整的写入目的地并且可被发送至存储设备120-1以用于写入。对于条带中包括任何计算的一个或多个奇偶校验组块的所有组块,管理器400能够以这种方式向存储设备120发送写入请求。为了稍后读取同一VBA-1,对DVT的简单查找将产生分配的设备ID,该设备ID以及从VBA-1提取的LBA将允许访问同一数据。
除了DVT 410之外,正向映射534还作为写入过程的一部分被更新,以反映VBA-1属于正在构造的条带。注意,一个或多个存储设备120可存储正向映射534的副本。然而,不需要所有存储设备120存储正向映射534的副本。在一个实施方案中,两个存储设备120存储正向映射534的副本。在一个实施方案中,正向映射534存储在非易失性存储设备120上的非易失性存储装置中(例如,阵列126中的存储器单元中)。因此,不需要整个正向映射534存储在管理器400或存储设备120的DRAM中。正向映射534能够以多种方式实现,包括但不限于地址转换表、B树或日志结构化合并树。
如上所指出,在一个实施方案中,正向映射534的一部分被高速缓存424在管理器400本地的存储器中。在这个示例中,与VBA-1索引对应的SID(条带ID)条目插槽被更新,以包含分配给正在构造的条带442的SID值。同样,由条带中其他VBA(例如,VBA-2和VBA-3)索引的插槽还分配有条带442的SID。
写请求序列具有可为随机的外部LBA。例如,外部LBA序列可随机分布在主机的地址空间中,以及存储设备本身中。在一个实施方案中,存储设备120中的地址映射模块150(如图所示的示例设备120-1)串行化随机分布的外部LBA。在一个实施方案中,映射模块150被配置为将从管理器400按时间顺序接收的写入请求中的随机外部LBA映射至顺序内部地址(例如,内部块地址(BA))。在一个实施方案中,映射模块150被配置为将写入数据组块的请求中的随机外部LBA映射至顺序内部地址(例如,内部块地址(BA))。在一个实施方案中,映射模块150被配置为将按时间顺序接收的写入请求中的随机外部LBA映射至存储设备120中的物理顺序位置。在一个实施方案中,映射模块150被配置为将写入数据组块的请求中的随机外部LBA映射至存储设备120中的物理顺序位置。在一个实施方案中,顺序内部地址在同一擦除块内。在一个实施方案中,顺序内部地址是物理地址。在一个实施方案中,顺序内部地址是内部逻辑地址。地址映射模块150可被配置为将随机外部LBA到顺序内部LBA的映射存储在地址映射存储装置550中。
写入逻辑552可被配置为将随机写入写入到连续区域(诸如擦除块的全部或一部分)中。需注意,写入逻辑552可与地址映射模块150一起工作,以使得随机写入被串行地写入擦除块中。在此上下文中,串行写入意味着擦除块内的数据块按其物理地址的次序写入。写入逻辑552可由元件来实现,该元件包括但不限于状态机112、片上地址解码器114、功率控件116、读/写电路128、解码器124,132中的一者或多者。
在一些实施方案中,写入逻辑552被配置为在非易失性存储设备120中将第一连续区域(例如,第一擦除块)中存储的数据组块移动至第二连续区域(例如,第二擦除块)。这个移动可出于多种原因,包括但不限于损耗均衡。组块可在移动之前和之后具有相同的内部逻辑地址(例如,ILBA)。地址映射模块150可被配置为在地址映射存储装置550中更新内部逻辑地址从第一连续区域到第二连续区域的映射。例如,内部逻辑地址的映射可从第一擦除块(或一些其他单位)改变为第二擦除块(或一些其他单位)。需注意,在移动之后保持内部逻辑地址相同是“固定内部地址”的示例。
在一个实施方案中,存储设备120的内部地址提供模块554被配置为提供写入数据组块的内部地址。在一个实施方案中,内部地址是固定内部地址,这意味着管理器400可访问使用内部地址写入的数据组块,而与可由存储设备120执行的内部数据移动无关。可向管理器400提供这个内部地址以更新条带映射422。在这种情况下,由分配给条带映射422的SID索引的条目将被更新,以反映条带422的第一组块已在由存储设备120返回的内部地址处写入。在一个实施方案中,所返回的内部地址引用写入VBA-1的擦除块。如稍后进一步解释,如果设备故障发生,条带映射将通过使管理器400能够访问条带组块来促进错误处理。此外,条带映射还允许管理器400以协调方式在存储设备120间发起垃圾回收,因为管理器400现在可查看在每个条带级别涉及的擦除块。然后,来自擦除块的有效数据可关于它们所属的条带进行垃圾回收。
一个或多个非易失性存储设备120可存储可由管理器400提供的条带映射422的副本。在一个实施方案中,条带映射422的副本存储在非易失性存储设备120上的非易失性存储装置中(例如,阵列126中的存储器单元中)。因此,如果在管理器400上的条带映射422的副本丢失,则其可从非易失性存储设备120被检索。
一个或多个非易失性存储设备120可存储可由管理器400提供的DVT 410的副本。在一个实施方案中,DVT 410的副本存储在非易失性存储设备120上的非易失性存储装置中(例如,阵列126中的存储器单元中)。因此,如果在管理器400上的DVT 410的副本丢失,则其可从非易失性存储设备120被检索。
图6是操作非易失性存储系统的过程600的一个实施方案的流程图。过程600可在图1A的系统102或图1B的系统104中实践,但不限于此。过程600的一些步骤可由管理器系统400实践,如将结合各种步骤所论述。过程600的一些步骤可在非易失性存储设备120中实践,如将结合各种步骤所论述。
步骤602包括管理器400收集冗余编码条带中组块的数据。此数据可以全部是随机数据、全部是顺序数据,或随机数据和顺序数据的某种组合。在至少一些情况下,数据全部是随机数据。在一个实施方案中,步骤602由数据收集模块402执行。
步骤604包括管理器400发送将数据组块写入选择的非易失性存储设备120中的命令。在一个实施方案中,命令指示非易失性存储设备120将整个组块写入连续区域中。在一个实施方案中,命令指示非易失性存储设备120将整个组块写入擦除块中。在一个实施方案中,组块的大小为擦除块的大小。然而,组块可小于擦除块。另外,组块可大于擦除块。在一个实施方案中,步骤604由命令模块404执行。
步骤606包括选择的非易失性存储设备120接收写入数据组块的命令。在一个实施方案中,前端模块中的主机接口220(见图2B)接收命令。
步骤608包括选择的非易失性存储设备120写入数据组块。在一个实施方案中,选择的非易失性存储设备120将整个组块写入擦除块内。组块可完全填充擦除块,但这不是必需的。在一些情况下,组块可基本上填充擦除块。在一个实施方案中,选择的非易失性存储设备120将整个组块写入连续的一组非易失性存储器单元内。在一个实施方案中,连续的一组非易失性存储器单元具有连续范围的物理地址。在一个实施方案中,写入逻辑552执行步骤608。
步骤610包括选择的非易失性存储设备120提供写入组块的内部地址。在一个实施方案中,这是擦除块的地址。这可以是擦除块的实际物理地址,但不是必需的。在一个实施方案中,这是擦除块的逻辑地址。在一个实施方案中,提供模块554的内部地址执行步骤610。
图7提供了擦除块的物理地址和逻辑地址的一个实施方案的进一步细节。需注意,内部地址不一定是擦除块的地址。例如,内部地址可基于擦除块内的偏移。还结合图7论述了擦除块内的偏移。需注意,内部地址可以是固定内部地址。
再次回到过程600的论述,步骤612确定是否填充冗余条带。此处,完全条带意味着装满数据而不包括冗余码(例如,奇偶校验)。下次通过过程600,管理器400可选择不同的非易失性存储设备120以写入数据组块。当条带已满(不包括冗余码)时,则在步骤614中,管理器400可计算冗余码。可重复步骤614-610以将冗余码组块存储到一个非易失性存储设备120。需注意,可存在不止一个冗余码组块(存储到不止一个非易失性存储设备)。在一个实施方案中,冗余编码模块416执行步骤612。
步骤618包括将冗余信息存储在条带映射422中。步骤618可基于写入组块的内部地址。图5B描绘了条带映射422的示例条目。如果SID为“12”,则可将“12”写入冗余条带标识符515。示例条带映射条目与图5A中的示例冗余条带502一致。在这个示例中,每个组块有一个内部地址516。例如,内部地址516(0)用于组块504(0),内部地址516(1)用于组块504(1),并且内部地址516(m-1)用于组块504(m-1)。内部地址516是指在步骤610中由存储设备返回的那些。在一个实施方案中,冗余编码模块416执行步骤618。
步骤620更新正向映射534。在一个实施方案中,使用如索引中的当前VBA,将SID的值写入到由VBA索引的插槽中。例如,如果当前SID为“12”,并且两个VBA即VBA“1”和VBA“10”在条带中,则将值“12”写入到由VBA“1”索引的插槽中,并且还写入到由VBA“10”索引的插槽中。在步骤620中,管理器400上的正向映射高速缓存424可被更新。而且,存储设备120上的正向映射534的持久副本可通过管理器400直接写入到适当的存储设备120来更新。如上所指出,存储设备120上的正向映射534的副本可存储在非易失性存储装置诸如阵列126中。
图7描绘了非易失性存储器系统700的一个实施方案。系统700具有管理器400和多个非易失性存储设备120-1至120-m。在一个实施方案中,非易失性存储器系统700消除了对存储设备120外部大型写串行化表的需要。一般地,管理器400可从例如软件应用程序(图7中未示出)接收的虚拟块地址(VBA)720开始。在这个示例中,VBA 720包括外部LBA 722和驱动器位724。驱动器位724是除外部LBA 722之外的一个或多个位。管理器400可将外部LBA传递至一个存储设备120,如下面将更充分地解释。然而,驱动器位不一定指向一个存储设备120。这样的可能原因是,管理器400可在存储设备120之间对写入进行负载平衡。另一个可能原因是,管理器400可选择要写入的存储设备,以便构成冗余条带。需注意,为了说明的目的,在图7中地址称为“块”地址。块可以是任何大小。在一个实施方案中,管理器400指定写入和/或读取操作的块大小。
在一个实施方案中,驱动器虚拟化表410包含从VBA 720到一个存储设备120的映射。当接收到对VBA的写入时,驱动器虚拟化模块408可确定写入应被发送至的存储设备120。驱动器虚拟化模块408可在驱动器虚拟化数据结构410中创建(或更新)将VBA链接至存储设备120的唯一标识符的条目。在一个实施方案中,驱动器虚拟化数据结构410包括从VBA映射至存储设备的地址的地址映射表。需注意,这个唯一标识符不一定是VBA中的驱动器位。然而,一种选择是仅使用VBA中的驱动器位以标识要写入的存储设备120。
在一个实施方案中,每个存储设备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。在步骤608的一个实施方案中,存储设备120按顺序次序将单位(例如,块)组块写入数据块。例如,在一个实施方案中,数据块706以其物理地址的次序写入。在一个实施方案中,数据块706的大小由管理器400决定。例如,主机115可指定针对给定ELBA要写入或读取的数据量。
擦除块虚拟化数据结构702具有条目704-1至704-n,每个条目指向一个擦除块714。存储设备120-2中从条目704-2到擦除块714-2的箭头表示一个此类指针。在一个实施方案中,每个条目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。
需注意,在一些实施方案中,VBA 720的数据由存储设备120使用地址映射模块150、映射结构750和擦除块虚拟化结构702从存储设备120读取。例如,管理器400可从VBA720开始,并且提取外部LBA 722。如在图5D的论述中所指出,管理器400可使用VBA 720以在DVT 410中查找设备ID。因此,管理器400可将ELBA 722发送至存储VBA 720的数据的正确存储设备120。一旦存储设备120接收到ELBA 722,存储设备120就可使用地址映射模块150、映射结构750和擦除块虚拟化结构702以定位ELBA 722的数据。需注意,在一些实施方案中,映射结构750的副本和擦除块虚拟化结构702被保持在控制器122上的RAM 122b中。还需注意,不需要将正向映射534用于正常读取。在一些实施方案中,这允许正向映射534被保持在存储器结构126中,从而释放RAM 122b的一部分。在一些实施方案中,正向映射534用于数据恢复。图8具有在数据恢复中使用正向映射534的实施方案的进一步细节。
图7B描绘了基于擦除块虚拟化数据结构702的一个实施方案中的条目的冗余条带的一个示例。描绘了多个冗余条带710-1至710-n。每个冗余条带710由每个非易失性存储设备120-1、120-2、120-m上的一个数据组块形成。在这个示例中,存在三个非易失性存储设备120,但是可存在更多或更少。冗余条带710-1基于存储设备120-1上的条目704-1、存储设备120-2上的条目704-27和存储设备120-m上的条目704-7而形成。在一个实施方案中,条目704是在过程600的步骤610中由存储设备120提供的内部地址。因此,在一个实施方案中,管理器400将这些条目存储在条带映射422中。图7A描绘了两个其他示例冗余条带710。冗余条带710-2基于存储设备120-1上的条目704-2、存储设备120-2上的条目704-11和存储设备120-m上的条目704-29而形成。冗余条带710-n基于存储设备120-1上的条目704-n、存储设备120-2上的条目704-36和存储设备120-m上的条目704-87而形成。在一个实施方案中,每个条目704指向擦除块。在这个示例中,每个组块的大小为一个擦除块。然而,组块的大小可大于或小于一个擦除块。
图7C描绘了冗余条带710的每个组块为单个数据块706的一个实施方案。图7C描绘了三个不同存储设备120-1、120-2和120-m上的擦除块虚拟化数据结构702的一部分。具体地,描绘了每个存储设备的一个条目704。针对存储设备120-1描绘了条目704-2-1,针对存储设备120-3描绘了条目704-2-2,并且针对存储设备120-m描绘了条目704-2-m。回顾在一个实施方案中,每个条目704指向一个擦除块714。每个条目704中描绘了若干个偏移716。回顾图7A,每个偏移716可指向一个数据块706。
图7C描绘了由存储设备120-1上条目704-2-1的偏移716-1、存储设备120-1上条目704-2-2的偏移716-20和存储设备120-m上条目704-2-m的偏移716-33形成的冗余编码条带710-2-1。因此,在这个示例中,冗余编码条带710-2-1由不同的条目偏移形成。这意味着冗余编码条带710可由擦除块714中的不同物理位置形成。然而,给定冗余编码条带710的偏移716在每个存储设备120上也可能相同。
在一个实施方案中,当请求存储设备120在过程600中写入数据组块时,存储设备120返回与条目704中的偏移716对应的地址。例如,存储设备120可返回ILBA(其中ILBA不需要指向擦除块714的开始)。这允许管理器400以一个数据块706的粒度构成条带映射422。需注意,如果存储设备120要移动数据块中被原始存储的数据组块(自行决定),则存储设备120可更新擦除块虚拟化数据结构702中的映射,以使得其返回的内部地址现在将指向数据组块已被移动的位置。这个移动可以是移动到另一擦除块714,或到擦除块714内的不同数据块706。
图7D是冗余编码条带710的又一个示例。在这个示例中,每个冗余编码条带710的组块大小为四个数据块706(由于偏移716与数据块706之间的对应关系,如图7A所描绘)。例如,偏移716-1、716-2、716-3和716-4可描述冗余编码条带710-a1的一个组块,如图7D所描绘。在一个实施方案中,在过程600的步骤610中,存储设备120返回用于组块开始的ILBA。例如,当写入冗余编码条带710-a1的组块时,存储设备120-1能够以偏移716-1返回条目704-2-1的ILBA;当写入冗余编码条带710-a2的组块时,存储设备120-1能够以偏移716-5返回条目704-2-1的ILBA。存储设备120可将ILBA返回至管理器400。管理器400可使用这些ILBA构成条带映射422。在图7D的示例中,每个存储设备120针对给定组块使用相同的偏移(但是可能条目不同)。然而,不需要针对给定冗余编码条带710的每个组块使用相同的偏移。
注意,在图7D的示例中,每个数据组块内的偏移按顺序排序。在一个实施方案中,各种偏移716对应于随机写入。在一个实施方案中,非易失性存储设备120将这些随机写入按顺序排序。需注意,偏移716可以是顺序的。因此,内部地址可以是顺序的。
图8是使用冗余条带中的组块来恢复VBA的丢失数据的过程800的一个实施方案的流程图。如果在存储设备120上读取某VBA的数据的尝试失败,则过程800可用于恢复数据,而整个存储设备120不发生故障。如果一个存储设备120发生故障,则这个过程800还可用于恢复数据。在过程800中,将论述存在三个“剩余存储设备”的示例,其中一个存储设备120在某VBA处的数据丢失。为了简单起见,仅论述一个VBA,但是过程800可用于恢复许多VBA的数据。在一个实施方案中,过程800由管理器400中的数据恢复模块418执行。在一个实施方案中,在过程600用于存储条带映射时使用过程800。在一个实施方案中,当过程600用于存储条带映射422时使用过程800,在过程600的步骤610中该条带映射422标识由存储设备120提供的组块的内部地址。在一个实施方案中,当过程600用于更新正向映射534时使用过程800。
步骤802读取正向映射534的副本以检索VBA的SID。管理器400可读取一个存储设备120中存储的正向映射534的一个副本。在一些情况下,正向映射高速缓存424可包含VBA的SID,在这种情况下,不需要读取存储设备120。需注意,如果存储设备120已发生故障,则在步骤802中可检索许多VBA的SID。可对每个SID执行步骤804-814。
步骤804使用条带映射422以检索SID的组块的内部地址。参照图5B的示例,可访问内部地址ILBA 0、ILBA 1…ILBA m-1。注意,在步骤804中可访问管理器400上的条带映射422。
步骤806包括从每个剩余存储设备120请求冗余条带的组块。为了举例,存在三个剩余存储设备120-1、120-2和120-m。例如,管理器400向存储设备120-1发送对ILBA 516(0)处的数据块的请求,向存储设备120-1发送对ILBA 516(1)处的数据块的请求,并且向存储设备120-m发送对ILBA 516(m-1)处的数据块的请求。
步骤808包括剩余存储设备(例如,120-1、120-2和120-m)访问映射数据结构以访问ILBA处的数据。在本示例中,存储设备120-1确定在哪里物理地存储ILBA 516(0)的数据。在本示例中,存储设备120-2确定在哪里物理地存储ILBA 516(1)的数据。在本示例中,存储设备120-m确定在哪里物理地存储ILBA 516(m-1)的数据。
在步骤810中,剩余存储设备将所请求的内部地址的数据返回至管理器400。
步骤812包括从在步骤810中返回的数据组块计算丢失数据。
步骤814包括恢复丢失数据。数据可被恢复到(丢失数据的)存储设备120-3,或恢复到一些其他存储设备120。
图9示出了可用于实现主机115、主控制器130或管理器400的一个实施方案的计算机系统900的示意图。计算系统900包括存储设备910诸如硬盘或便携式介质、用于与其他计算系统通信的网络接口920、用于执行软件指令的处理器930、工作存储器940诸如用于在从存储设备310加载软件指令之后存储软件指令的RAM,例如以及用户界面显示器950诸如一个或多个视频监视器。处理器990可实现为一个或多个CPU芯片、核心(例如,多核处理器)、FPGA、ASIC和/或DSP,和/或可为一个或多个ASIC的一部分。用户界面可作为一个或多个监视器提供。存储设备910和工作存储器940可被认为是有形的非暂态处理器或计算机可读存储设备,其上体现有处理器可读代码以用于对处理器930编程以执行用于提供本文所论述的功能的方法。用户界面显示器950可使用任何已知的显示方案,无论是图形、表格等。除了在屏幕上显示之外,还可提供输出诸如来自打印机的硬副本。
在一些实施方案中,数据收集模块402、命令模块4040、冗余编码模块416、数据恢复模块418和/或驱动器虚拟化模块408通过在处理器990上执行指令来实现。指令可存储在存储装置910或工作存储器940中。因此,过程600或800中的至少一些步骤可通过在处理器990上执行指令来实现。
本文所公开的第一实施方案包括一种系统,该系统包括:非暂态存储装置;数据收集模块,所述数据收集模块被配置为针对冗余编码条带的每个组块收集组块数据;命令模块,所述命令模块被配置为发出将所述冗余编码条带的所述组块数据写入多个非易失性存储设备中的选择的一个非易失性存储设备的命令;接口,所述接口被配置为针对所述冗余编码条带的每个组块,在所选择的非易失性存储设备中接收所述组块的内部地址;和冗余编码模块,该冗余编码模块被配置为将冗余条带映射存储到非暂态存储装置中,该冗余条带映射具有冗余条带标识符和非易失性存储设备中冗余编码条带的组块的内部地址。
在第二实施方案中,并且根据第一实施方案,该系统还包括数据恢复模块,该数据恢复模块被配置为向非易失性存储设备中的第一非易失性存储设备发送对冗余编码条带的组块的请求,该请求指定组块的内部地址。
在第三实施方案中,并且根据第一或第二实施方案,系统还包括逻辑,该逻辑被配置为指示多个非易失性存储设备中的至少一个非易失性存储设备将从虚拟地址映射至冗余条带标识符的正向映射存储到非易失性存储装置中。
在第四实施方案中,并且根据第三实施方案,数据恢复模块还被配置为:在非易失性存储设备上从非易失性存储装置读取正向映射,以检索虚拟地址的冗余条带标识符;使用所检索的冗余条带标识符以在所述冗余条带映射中检索内部地址;以及从非易失性存储设备中的多个非易失性存储设备请求数据组块,对组块的请求指定所检索的内部地址。
在第五实施方案中,并且根据第一至第四实施方案,每个数据组块包括各自具有外部逻辑地址的多个随机数据块。非易失性存储设备中的第一非易失性存储设备包括:地址映射模块,该地址映射模块被配置为在第一非易失性存储设备中将与数据组块相关联的外部逻辑地址映射至顺序内部地址;以及在第一非易失性存储设备中将映射存储在非暂态存储装置中。
在第六实施方案中,并且根据第一至第五实施方案,非易失性存储设备中的第一非易失性存储设备包括:写入逻辑,该写入逻辑被配置为在第一非易失性存储设备中将冗余编码条带的整个组块写入到非易失性存储器单元的连续区域;以及地址提供逻辑,该地址提供逻辑被配置为向接口提供在第一非易失性存储设备中写入组块的内部地址。
在第七实施方案中,并且根据第一至第六实施方案,多个非易失性存储设备中的第一个非易失性存储设备向冗余编码条带中的第一组块提供的内部地址为第一内部逻辑地址。
在第八实施方案中,并且根据第一至第七实施方案,非易失性存储设备还包括:非暂态存储装置;写入逻辑,所述写入逻辑被配置为将所述第一非易失性存储设备中的第一连续区域中存储的所述第一组块移动至所述第一非易失性存储设备中的第二连续区域;以及地址映射模块,该地址映射模块被配置为在非暂态存储装置中更新第一内部逻辑地址从第一连续区域到第二连续区域的映射。
在第九实施方案中,并且根据第八实施方案,第一连续区域是第一非易失性存储设备中第一擦除块的全部或一部分,其中第二连续区域是第一非易失性存储设备中第二擦除块的全部或一部分。
在第十实施方案中,并且根据第一至第九实施方案,每个数据组块包括各自具有外部逻辑块地址的多个随机数据块。系统还包括驱动器虚拟化逻辑,该驱动器虚拟化逻辑被配置为:对于与在写入请求中发送至多个非易失性存储设备中的一个非易失性存储设备的一个外部逻辑块地址相关联的每个虚拟块地址,将虚拟块地址转换成一个外部逻辑块地址和多个非易失性存储设备中的一个非易失性存储设备的标识符。
在第十一实施方案中,并且根据第一至第九实施方案,将冗余编码条带的组块数据写入多个非易失性存储设备中选择的一个非易失性存储设备中的命令指示选择的非易失性存储设备将整个组块写入擦除块的全部或一部分内。
本文所公开的一个实施方案包括一种方法,该方法包括:在多个非易失性存储设备中的每一个非易失性存储设备处,接收写入冗余编码条带的组块的请求;由每个所述非易失性存储设备在所述相应非易失性存储设备中将所述整个组块写入到非易失性存储器单元的连续区域;由每个所述非易失性存储设备在所述相应非易失性存储设备的内部地址空间中提供所述组块的固定内部地址;以及将冗余条带映射存储到非暂态存储装置中,该冗余条带映射具有冗余条带标识符和冗余编码条带的组块的固定内部地址。
本文所公开的一个实施方案包括非易失性存储系统,该非易失性存储系统包括:非暂态存储装置;数据收集装置,所述数据收集装置用于收集冗余编码条带的每个组块的随机写入;命令装置,所述命令装置用于向多个非易失性存储设备中的每一个非易失性存储设备发送将随机写入的一个所述组块写入所述非易失性存储设备的连续区域内的命令;写入装置,所述写入装置用于在每个相应非易失性存储设备中将所述冗余编码条带的每个相应组块写入非易失性存储器单元的连续区域中;地址提供装置,所述地址提供装置用于为每个所述组块提供在所述相应非易失性存储设备中写入所述组块的内部地址;和冗余编码装置,该冗余编码装置用于将冗余条带映射存储到非暂态存储装置中,该冗余条带映射具有冗余条带标识符和冗余编码条带的组块的内部地址。
在一个实施方案中,数据收集装置包括数据收集模块402、CPU 300、存储器306、处理器990、工作存储器940和/或存储装置910中的一者或多者,但不限于此。
在一个实施方案中,命令装置包括数据命令模块404、CPU 300、存储器306、处理器990、工作存储器940和/或存储装置910中的一者或多者,但不限于此。
在一个实施方案中,写入装置包括写入逻辑552、状态机112、片上地址解码器114上、功率控件116、读/写电路128、解码器124,132中的一者或多者,但不限于此。
在一个实施方案中,地址提供装置包括数据内部地址提供模块554/前端模块208、主机接口220、PHY 222中的一者或多者,但不限于此。
在一个实施方案中,冗余编码装置包括冗余编码模块416、CPU 300、存储器306、处理器990、工作存储器940和/或存储装置910中的一者或多者,但不限于此。
本文描述了很多细节,以提供对附图中所示的示例具体实施的全面理解。然而,可在没有许多明确细节的情况下实现一些实施方案,并且权利要求的范围仅受到权利要求中明确叙述的那些特征部和方面的限制。此外,并未详尽地描述已知的方法、部件和电路,以免不必要地模糊本文所述的具体实施的更相关方面。
本文所用的术语仅出于描述特定实施方案的目的,而非旨在限制权利要求。如在实施方案和所附权利要求的描述中所用,除非上下文另有明确指示,否则单数形式“一”、“一个”和“所述”也旨在包括复数形式。还应当理解,本文所用的术语“和/或”是指并且包括一个或多个相关联的列出项的任何和所有可能的组合。还应当理解,当用在本说明书中时,术语“包括”指定所述特征、整数、步骤、操作、元件和/或部件存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、部件和/或它们的组。
如本文所用,术语“如果”可被解释为意味着“当陈述先决条件为真时”或“在陈述先决条件为真时”或“响应于确定陈述先决条件为真”或“根据确定陈述先决条件为真”或“响应于检测陈述先决条件为真”,这取决于上下文。类似地,短语“如果确定[陈述先决条件为真]”或“如果[陈述先决条件为真]”或“当[陈述先决条件为真]时”可被解释为意味着“在陈述先决条件为真确定时”或“响应于确定陈述先决条件为真”或“根据确定陈述先决条件为真”或“在检测陈述先决条件为真时”或“响应于检测陈述先决条件为真”,这取决于上下文。
出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接到另一个元件,或者经由居间元件间接连接到另一个元件。当元件被提及直接连接到另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。
出于本文档的目的,术语“基于”可理解为“至少部分地基于”。
出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。
出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。
出于解释的目的,已参考特定的具体实施描述了前面描述。然而,以上例示性论述并非旨在为穷举性的或者将权利要求限制于所公开的精确形式。鉴于以上教导,许多修改和变型是可能的。选择并且描述了具体实施,以便最佳地解释操作原理和实际应用,从而使其他本领域技术人员能够理解。
Claims (20)
1.一种系统,包括:
非暂态存储装置;
数据收集模块,所述数据收集模块被配置为针对冗余编码条带的每个组块收集所述组块的数据;
命令模块,所述命令模块被配置为发出将所述冗余编码条带的所述组块的所述数据写入多个非易失性存储设备中的选择的一个非易失性存储设备的命令;
接口,所述接口被配置为针对所述冗余编码条带的每个组块,在所选择的非易失性存储设备中接收所述组块的内部地址;和
冗余编码模块,所述冗余编码模块被配置为将冗余条带映射存储到所述非暂态存储装置中,所述冗余条带映射具有冗余条带标识符和所述非易失性存储设备中针对所述冗余编码条带的所述组块的所述内部地址。
2.根据权利要求1所述的系统,还包括数据恢复模块,所述数据恢复模块被配置为:
向所述非易失性存储设备中的第一非易失性存储设备发送对所述冗余编码条带的组块的请求,所述请求指定所述组块的所述内部地址。
3.根据权利要求1所述的系统,还包括逻辑,所述逻辑被配置为指示所述多个非易失性存储设备中的至少一个非易失性存储设备将从虚拟地址映射至冗余条带标识符的正向映射存储到非易失性存储装置中。
4.根据权利要求3所述的系统,还包括数据恢复模块,所述数据恢复模块被配置为:
在非易失性存储设备上从所述非易失性存储装置读取所述正向映射,以检索虚拟地址的冗余条带标识符;
使用所检索的冗余条带标识符以在所述冗余条带映射中检索内部地址;以及
从所述非易失性存储设备中的多个非易失性存储设备请求数据组块,对所述组块的所述请求指定所检索的内部地址。
5.根据权利要求1所述的系统,其中每个所述数据组块包括各自具有外部逻辑地址的多个随机数据块,并且其中所述非易失性存储设备中的第一非易失性存储设备包括:
地址映射模块,所述地址映射模块被配置为:
在所述第一非易失性存储设备中将与数据组块相关联的所述外部逻辑地址映射至顺序内部地址;以及
在所述第一非易失性存储设备中将所述映射存储在所述非暂态存储装置中。
6.根据权利要求1所述的系统,其中所述非易失性存储设备中的第一非易失性存储设备包括:
写入逻辑,所述写入逻辑被配置为在所述第一非易失性存储设备中将所述冗余编码条带的所述整个组块写入到非易失性存储器单元的连续区域;和
地址提供逻辑,所述地址提供逻辑被配置为向所述接口提供在所述第一非易失性存储设备中写入所述组块的内部地址。
7.根据权利要求1所述的系统,其中所述多个非易失性存储设备中的第一个非易失性存储设备向所述冗余编码条带中的第一组块提供的所述内部地址为第一内部逻辑地址。
8.根据权利要求7所述的系统,其中所述第一非易失性存储设备还包括:
非暂态存储装置;
写入逻辑,所述写入逻辑被配置为将所述第一非易失性存储设备中的第一连续区域中存储的所述第一组块移动至所述第一非易失性存储设备中的第二连续区域;和
地址映射模块,所述地址映射模块被配置为在所述非暂态存储装置中更新所述第一内部逻辑地址从所述第一连续区域到所述第二连续区域的映射。
9.根据权利要求8所述的系统,其中所述第一连续区域是所述第一非易失性存储设备中第一擦除块的全部或一部分,其中所述第二连续区域是所述第一非易失性存储设备中第二擦除块的全部或一部分。
10.根据权利要求1所述的系统,其中每个所述数据组块包括各自具有外部逻辑块地址的多个随机数据块,并且还包括驱动器虚拟化逻辑,所述驱动器虚拟化逻辑被配置为:
对于与在写入请求中发送至所述多个非易失性存储设备中的一个非易失性存储设备的所述外部逻辑块地址中的一个外部逻辑块地址相关联的每个虚拟块地址,将所述虚拟块地址转换成所述外部逻辑块地址中的一个外部逻辑块地址和所述多个非易失性存储设备中的一个非易失性存储设备的标识符。
11.根据权利要求1所述的系统,其中将所述冗余编码条带的所述组块的所述数据写入所述多个非易失性存储设备中的所选择的一个非易失性存储设备中的所述命令指示所选择的非易失性存储设备将所述整个组块写入擦除块的全部或一部分内。
12.一种方法,包括:
在多个非易失性存储设备中的每个非易失性存储设备处,接收写入冗余编码条带的组块的请求;
由所述非易失性存储设备中的每个非易失性存储设备在所述相应非易失性存储设备中将所述整个组块写入到非易失性存储器单元的连续区域;
由所述非易失性存储设备中的每个非易失性存储设备在所述相应非易失性存储设备的内部地址空间中提供所述组块的固定内部地址;以及
将冗余条带映射存储到非暂态存储装置中,所述冗余条带映射具有冗余条带标识符和针对所述冗余编码条带的所述组块的所述固定内部地址。
13.根据权利要求12所述的方法,还包括:
向所述非易失性存储设备中的第一非易失性存储设备发送对所述冗余编码条带的组块的请求,所述请求指定所述组块的所述固定内部地址。
14.根据权利要求13所述的方法,还包括:
指示所述多个非易失性存储设备中的至少一个非易失性存储设备将从虚拟地址映射至冗余条带标识符的正向映射存储到非易失性存储装置中。
15.根据权利要求14所述的方法,还包括:
在非易失性存储设备上从所述非易失性存储装置读取所述正向映射,以检索虚拟地址的冗余条带标识符;
使用所检索的冗余条带标识符在所述冗余条带映射中检索内部地址;以及
从所述非易失性存储设备中的多个非易失性存储设备请求数据组块,对所述组块的所述请求指定所检索的内部地址。
16.根据权利要求12所述的方法,还包括:
由管理器系统收集所述冗余编码条带的所述组块中的每个组块的随机写入;以及
由所述管理器系统发送将所述组块中的每个组块的所有所述随机写入写入到所述非易失性存储设备中的每个非易失性存储设备上的连续区域中的命令。
17.根据权利要求16所述的方法,其中所述连续区域为擦除块。
18.一种非易失性存储系统,包括:
非暂态存储装置;
数据收集装置,所述数据收集装置用于收集冗余编码条带的每个组块的随机写入;
命令装置,所述命令装置用于向多个非易失性存储设备中的每个非易失性存储设备发送将随机写入的所述组块中的一个组块写入所述非易失性存储设备的连续区域内的命令;
写入装置,所述写入装置用于在每个相应非易失性存储设备中将所述冗余编码条带的每个相应组块写入非易失性存储器单元的连续区域中;
地址提供装置,所述地址提供装置用于为每个所述组块提供在所述相应非易失性存储设备中写入所述组块的内部地址;和
冗余编码装置,所述冗余编码装置用于将冗余条带映射存储到所述非暂态存储装置中,所述冗余条带映射具有冗余条带标识符和针对所述冗余编码条带的所述组块的所述内部地址。
19.根据权利要求18所述的非易失性存储系统,其中所述写入装置还用于:
在所述非易失性存储设备中的第一非易失性存储设备上将正向映射写入到非易失性存储器,所述正向映射从虚拟地址转换为冗余条带标识符。
20.根据权利要求19所述的非易失性存储系统,还包括数据恢复装置以用于:
在所述第一非易失性存储设备上从所述非易失性存储装置读取所述正向映射,以检索虚拟地址的冗余条带标识符;
使用所检索的冗余条带标识符在所述冗余条带映射中检索内部地址;
从所述非易失性存储设备中的多个非易失性存储设备请求数据组块,对所述组块的所述请求指定所检索的内部地址;以及
响应于指定所检索的内部地址的所述请求,基于从所述非易失性存储设备中的多个非易失性存储设备返回的组块来恢复冗余编码条带的组块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/722,685 US10379948B2 (en) | 2017-10-02 | 2017-10-02 | Redundancy coding stripe based on internal addresses of storage devices |
US15/722,685 | 2017-10-02 | ||
PCT/US2018/052376 WO2019070432A1 (en) | 2017-10-02 | 2018-09-24 | REDUNDANCY CODING BAND BASED ON INTERNAL ADDRESSES OF STORAGE DEVICES |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111164574A true CN111164574A (zh) | 2020-05-15 |
CN111164574B CN111164574B (zh) | 2023-10-24 |
Family
ID=65896063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063154.1A Active CN111164574B (zh) | 2017-10-02 | 2018-09-24 | 基于存储设备内部地址的冗余编码条带 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10379948B2 (zh) |
CN (1) | CN111164574B (zh) |
DE (1) | DE112018004256T5 (zh) |
WO (1) | WO2019070432A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113311993A (zh) * | 2021-03-26 | 2021-08-27 | 阿里巴巴新加坡控股有限公司 | 数据存储方法及数据读取方法 |
CN114077549A (zh) * | 2020-08-13 | 2022-02-22 | 美光科技公司 | 基于数据特性寻址区域命名空间和非分区存储器 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI666901B (zh) * | 2018-03-27 | 2019-07-21 | 緯穎科技服務股份有限公司 | 資料傳輸方法與使用此方法的主機系統 |
US10896089B2 (en) * | 2018-04-06 | 2021-01-19 | Western Digital Technologies, Inc. | System level data-loss protection using storage device local buffers |
US10635599B2 (en) * | 2018-07-26 | 2020-04-28 | Sandisk Technologies Llc | Memory controller assisted address mapping |
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 |
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 |
GB201814918D0 (en) * | 2018-09-13 | 2018-10-31 | Blancco Tech Group Ip Oy | Method and apparatus for use in sanitizing a network of non-volatile memory express devices |
US10679708B2 (en) * | 2018-09-17 | 2020-06-09 | Western Digital Technologies, Inc. | Pre-program read to counter wordline failures |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US11734175B2 (en) | 2019-08-22 | 2023-08-22 | SK Hynix Inc. | Storage device and method of operating the same |
KR20210034378A (ko) | 2019-09-20 | 2021-03-30 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
KR102717023B1 (ko) * | 2019-08-22 | 2024-10-15 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20210076497A (ko) | 2019-12-16 | 2021-06-24 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11762769B2 (en) | 2019-09-20 | 2023-09-19 | SK Hynix Inc. | Memory controller based on flush operation and method of operating the same |
US11210002B2 (en) * | 2020-01-29 | 2021-12-28 | Samsung Electronics Co., Ltd. | Offloaded device-driven erasure coding |
CN115543216B (zh) * | 2022-11-29 | 2023-03-21 | 苏州浪潮智能科技有限公司 | 磁盘阵列分布架构、分块计算方法、系统、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
US20150067244A1 (en) * | 2013-09-03 | 2015-03-05 | Sandisk Technologies Inc. | Method and System for Migrating Data Between Flash Memory Devices |
WO2015040711A1 (ja) * | 2013-09-19 | 2015-03-26 | 株式会社日立製作所 | ストレージ装置、ストレージ装置におけるデータの制御方法、及びストレージシステム |
Family Cites Families (22)
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 |
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 |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
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 |
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,685 patent/US10379948B2/en active Active
-
2018
- 2018-09-24 DE DE112018004256.1T patent/DE112018004256T5/de active Pending
- 2018-09-24 CN CN201880063154.1A patent/CN111164574B/zh active Active
- 2018-09-24 WO PCT/US2018/052376 patent/WO2019070432A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN103026346A (zh) * | 2010-07-27 | 2013-04-03 | 国际商业机器公司 | 包括固态存储器设备的存储系统中的逻辑到物理地址映射 |
US20150067244A1 (en) * | 2013-09-03 | 2015-03-05 | Sandisk Technologies Inc. | Method and System for Migrating Data Between Flash Memory Devices |
WO2015040711A1 (ja) * | 2013-09-19 | 2015-03-26 | 株式会社日立製作所 | ストレージ装置、ストレージ装置におけるデータの制御方法、及びストレージシステム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114077549A (zh) * | 2020-08-13 | 2022-02-22 | 美光科技公司 | 基于数据特性寻址区域命名空间和非分区存储器 |
CN113311993A (zh) * | 2021-03-26 | 2021-08-27 | 阿里巴巴新加坡控股有限公司 | 数据存储方法及数据读取方法 |
CN113311993B (zh) * | 2021-03-26 | 2024-04-26 | 阿里巴巴创新公司 | 数据存储方法及数据读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111164574B (zh) | 2023-10-24 |
DE112018004256T5 (de) | 2020-05-14 |
US20190102250A1 (en) | 2019-04-04 |
US10379948B2 (en) | 2019-08-13 |
WO2019070432A1 (en) | 2019-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111164574B (zh) | 基于存储设备内部地址的冗余编码条带 | |
CN111149091B (zh) | 基于跨多个装置的协调内部地址方案的冗余编码条带 | |
US10282252B2 (en) | RAID storage device and method of management thereof | |
CN109840215B (zh) | 未对齐写入的处理 | |
US10924552B2 (en) | Hyper-converged flash array system | |
CN110928807B (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
US11543987B2 (en) | Storage system and method for retention-based zone determination | |
CN113851172B (zh) | 存储器子系统映射中的错误处置优化 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
KR20230094943A (ko) | 저장 단편화를 정량화하고 성능 저하를 예측하기 위한 저장 시스템 및 방법 | |
CN113590503A (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
CN111435334B (zh) | 在存储器系统中检查有效数据的设备和方法 | |
US11847343B2 (en) | Storage system and method for non-blocking coherent re-writes | |
US11520695B2 (en) | Storage system and method for automatic defragmentation of memory | |
US11314428B1 (en) | Storage system and method for detecting and utilizing wasted space using a file system | |
US20200401525A1 (en) | Storage System and Method for Enabling Host-Driven Regional Performance in Memory | |
US20240256180A1 (en) | Data Storage Device and Method for Host-Assisted Deferred Defragmentation and System Handling | |
US12093537B2 (en) | Data storage device and method for swap defragmentation | |
CN112015339B (zh) | 一种存储器的数据保存系统,保存方法及存储系统 | |
US11429663B2 (en) | Storage system and method for host-assisted memory block color coding for faster media search | |
US20240069782A1 (en) | Storage device including nonvolatile memory device and operating method of storage device | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 |
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: 20240923 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. |