CN112148525B - 实现更快且经过调节的装置初始化时间 - Google Patents
实现更快且经过调节的装置初始化时间 Download PDFInfo
- Publication number
- CN112148525B CN112148525B CN202010212101.0A CN202010212101A CN112148525B CN 112148525 B CN112148525 B CN 112148525B CN 202010212101 A CN202010212101 A CN 202010212101A CN 112148525 B CN112148525 B CN 112148525B
- Authority
- CN
- China
- Prior art keywords
- memory
- index
- logical
- data
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000013507 mapping Methods 0.000 claims description 121
- 238000011084 recovery Methods 0.000 claims description 65
- 230000002159 abnormal effect Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 18
- 230000036541 health Effects 0.000 claims description 17
- 238000003860 storage Methods 0.000 description 112
- 239000010410 layer Substances 0.000 description 28
- 238000013519 translation Methods 0.000 description 21
- 239000007787 solid Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- 238000013500 data storage Methods 0.000 description 10
- 239000000758 substrate Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000011066 ex-situ storage Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013481 data capture Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000036449 good health Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供一种用以在意外关机之后通电时最小化和限制存储器初始化时间的方法和存储器设备。代替仅依赖于在存储器意外断电时丢失的高速缓存的日志表,本文中所公开的所述方法和设备保留在预定义存储器位置内重建所述日志表所需的信息。这些预定义位置被优化成使得在通电时的单个读取操作期间,并行感测将跨越存储器结构内的所有裸片和平面捕获某一数目的字线的初始化信息。
Description
背景技术
固态驱动器可能会经历两种类型的断电关机:正常关机(GSD)和不正常关机(UGSD)。正常关机确保在断电之前在非易失性存储器上存储/刷新地址映射表,借此使得在固态驱动器下一次通电时能够更快地初始化固态驱动器。
不正常关机是在没有警告的情况下突然终止固态驱动器电力的情况。这可能发生在电力故障、电池断电或例如安全数字(SD)的某些固态驱动器通信协议中。
UGSD增大固态驱动器下一次通电期间的初始化时间,因为必须通过读取在最后刷新地址映射表之后修改的每一数据块来重建地址映射表。在多个打开的存储器擦除块,以及更大大小的存储器擦除块的情况下,初始化时间延迟会进一步增大。一些协议在初始化期间维持严格的时间约束(例如,对于SD为一秒)。因此,初始化时序裕量变得至关重要。
发明内容
本发明涉及用于在存储操作期间以某种方式管理逻辑到物理寻址数据,以便甚至在不正常关机事件之后实现更快且经过调节的存储器装置初始化时间的方法和设备。
本文中所公开的一种方法包括将数据块写入到存储器阵列的字线。此方法进一步包括生成存储器阵列上的数据块中的每一个的逻辑块地址与物理地址之间的索引。最后,此方法包括响应于数据块数目满足刷新阈值,将索引存储到后续字线。
本文中所公开的另一方法包括确定已发生不正常关机事件。此方法进一步包括将地址映射表从存储器阵列读取到易失性存储器中。此方法进一步包括在单个读取操作中读取一个或多个索引,每一索引包括在地址映射表最后写入到存储器阵列之后所写入的数据块的逻辑块地址。最后,此方法包括更新易失性存储器中的地址映射表,以将一个或多个索引的逻辑块地址与在地址映射表写入到存储器阵列之后所存储的数据块相关联,使得初始化操作满足时序度量。
本文中所公开的设备包括存储器阵列,所述阵列包括多个存储器裸片,存储器裸片中的每一个包括一对平面,所述平面中的每一个包括包含字线集合的物理擦除块,字线中的每一个包括非易失性存储器单元。此设备进一步包括逻辑擦除块,其包括来自存储器裸片中的每一个的物理擦除块。此设备进一步包括配置成根据预定义时间表将地址映射表存储到存储器阵列的粗略恢复电路。最后,此设备包括精细恢复电路,其配置成响应于控制器将数据块存储到逻辑擦除块的预定数目个逻辑字线,将索引存储在后续逻辑字线上,预定数目配置成使得地址映射表在初始化操作期间的恢复满足时序度量。
附图说明
为容易地识别对任何特定元件或动作的论述,附图标记中的一个或多个最高有效数字指的是首次介绍所述元件的图号。
图1示出根据一个实施例的系统100。
图2为在另一实施例中的实例存储器装置102的框图。
图3为示出NAND串300的一个实施例的示意性框图。
图4为示出存储器阵列400的一个实施例的示意性框图。
图5示出根据一个实施例的存储器装置500。
图6示出根据一个实施例的恢复单元520。
图7示出根据一个实施例的数据块和索引的布局700。
图8示出根据一个实施例的配置成用于可预测初始化的存储器阵列800。
图9示出根据一个实施例的配置成用于具有动态调谐的刷新距离的可预测初始化的存储器阵列900。
图10示出根据一个实施例的现有技术正常关机事件过程1000。
图11示出根据一个实施例的现有技术不正常关机事件过程1100。
图12示出根据一个实施例的写入不正常关机事件和初始化过程1200。
具体实施方式
尽管在快闪存储器方面描述示例性实施例,但更一般来说,所述技术可以应用于其它类型的非易失性存储器。
本文中公开用以管理固态驱动器装置的初始化时间的系统、方法和设备的实施例。在某些实施例中,系统、方法和设备配置成减少固态驱动器装置的初始化时间。在某些实施例中,系统、方法和设备配置成跨越多个初始化循环使初始化时间保持处于确定范围内。在某些实施例中,系统将增大的写入放大转换为更快的装置初始化时间。
针对数据块集合,跟踪数据块的逻辑块地址与其对应物理地址之间的关系,并基于刷新距离(下文所描述的)将所述关系记录在下一字线或后续字线中。所述关系连同其它用户数据一起存储在字线上的一个或多个单独的数据块中的一个或多个索引中。对于单层级单元(SLC)、多层级单元(MLC)和三层级单元(TLC),可以基于其在装置的整个寿命中在指定协议限制内维持所要初始化时延的性能,进一步调谐存储一个或多个索引的方法。
在一个实施例中,基于接收一个或多个索引的擦除块的健康状况,调适存储一个或多个索引的频率。可以跨越非易失性存储器(例如,快闪)的多个编程/擦除循环监视擦除块的健康状况,以随着擦除块的老化维持受控的初始化时延。另外,擦除块的健康状况可以是基于来自擦除块的,在擦除块的整个寿命中被解码的数据块的误码率(不可校正误码率UBER或可校正误码率BER中的任一个或两个)。
在另一实施例中,存储一个或多个索引是基于主机装置存储器存取模式,例如依序存取模式或随机存取模式。刷新距离可以基于主机装置存储命令行为的随机性来配置。
一个或多个索引可以以Z形模式存储在非易失性存储器中的下一或后续字线中,以实现一个或多个索引的经过改进的并行读取存取。
在某些实施例中,从所有物理块并行地感测或读取存储一个或多个索引的所有数据块,且以低时延有效地生成逻辑块地址与物理地址之间的关系。这是因为逻辑地址与物理地址的关系以压缩形式存在于存储介质上,而不是常规方法中依序感测到的关系。此外,错误校正码(ECC)解码限于存储一个或多个索引的数据块,且整个擦除块中的所有数据块并不需要所述解码。
取决于系统中打开的块的数目和可用于初始化的时间,系统可以结合进行主机装置写入命令来确定用于将一个或多个索引写入非易失性存储器中的频率。随着非易失性存储器老化,跨越SLC和TLC块进行感测引起的时延变化,以及ECC解码所涉及的延迟都可能影响系统用于写入一个或多个索引的动态频率。
在正常操作期间,地址映射表(或其高速缓存部分)处于易失性存储器中且频繁地发生改变。在某些实施例中,系统以某些间隔将存储器阵列的地址映射表的尚未被刷新(即,保留)的经过修改部分存储到非易失性存储器。替代地,系统以某些间隔将存储器阵列的地址映射表的完整副本存储到非易失性存储器。地址映射表的经过修改部分或整个表的副本的这种存储在本文中称为“母版刷新”。所使用的间隔可以是基于时间周期或基于写入特定数据量。
以预定间隔执行母版刷新连同所要求解决方案的某些实施例一起确保在固态驱动器的操作期间的任一时间点处,在意外断电的不正常关机(UGSD)的情况下,仅需要一个感测来重新初始化固态驱动器。调整母版刷新的频率可能需要多于一个感测来完成初始化操作。对于不同装置配置,可以基于例如擦除块的健康状况的各种参数、基于擦除块内的某些字线的健康状况、基于预定健康状况度量、系统启动处所需的时序度量、主机命令模式、例如SLC或TLC的擦除块类型、打开的擦除块数目、母版刷新频率等调谐系统以满足所需初始化时延。
设计因素可以包含(但不限于)由每一索引涵盖的数据块数目、由每一索引涵盖的字线数目,以及母版刷新相对于写入到存储器阵列的索引数目的频率等。在固态驱动器的操作期间的任一点处打开的擦除块的数目和类型也可以是设计因素。
图1为示出根据本发明的用于改进固态存储装置中的性能的系统100的一个实施例的示意性框图。系统100包含下文所描述的存储器装置102、主机装置108、至少一个主机装置114和计算机网络116。
系统100包含至少一个存储器装置102,其包括存储控制器104和一个或多个存储器裸片106。在一些实施例中,系统100可以包含两个或更多个存储器装置。每一存储器装置102可以包含两个或更多个存储器裸片106,例如快闪存储器、nano随机存取存储器(“nanoRAM或NRAM”)、磁阻性RAM(“MRAM”)、动态RAM(“DRAM”)、相变RAM(“PRAM”)等。在另外的实施例中,数据存储器装置102可以包含其它类型的非易失性和/或易失性数据存储装置,例如动态RAM(“DRAM”)、静态RAM(“SRAM”)、磁性数据存储装置、光学数据存储装置和/或其它数据存储技术。关于图5和图2更详细地描述存储器装置102。
本文中也被称为存储装置的存储器装置102可以是如此处所描绘的主机装置108内的组件,且可以使用系统总线连接,例如外围组件互连高速(“PCI-e”)总线、串行高级技术附件(“串行ATA”)总线等。在另一实施例中,存储器装置102在主机装置108外部,且是使用通用串行总线(“USB”)连接、电气电子工程师学会(“IEEE”)1394总线(“火线”)等连接。在其它实施例中,存储器装置102使用外围组件互连(“PCI”)高速总线连接到主机装置108,所述总线使用外部电或光学总线扩展或总线联网解决方案,例如无限频带或PCI高速高级切换(“PCIe-AS”)等。
在各种实施例中,存储器装置102可以呈双列直插式存储器模块(“DIMM”)、子卡或微模块的形式。在另一实施例中,存储器装置102为机架安装式刀片内的组件。在另一实施例中,存储器装置102含有在直接集成到较高层级组合件(例如,母板、膝上型计算机、图形处理器)上的封装内。在另一实施例中,包括存储器装置102的个别组件直接集成到较高层级组合件上,而无需中间封装。
在另外的实施例中,代替作为DAS直接连接到主机装置108,数据存储器装置102可以经由数据网络连接到主机装置108。例如,数据存储器装置102可以包含存储区域网络(“SAN”)存储装置、网络附接存储(“NAS”)装置、网络共享等。在一个实施例中,系统100可以包含数据网络,例如因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、令牌环、无线网络、光纤通道网络、SAN、NAS、ESCON等或网络的任何组合。数据网络还可以包含来自IEEE802系列网络技术的网络,例如以太网、令牌环、Wi-Fi、Wi-Max等。数据网络可以包含服务器、开关、路由器、电缆线、无线电,以及用于促进主机装置108与数据存储器装置102之间的联网的其它设备。
系统100包含连接到存储器装置102的至少一个主机装置108。可以使用多个主机装置且其可以包括:主机、服务器、存储区域网络(“SAN”)的存储控制器、工作站、个人计算机、膝上型计算机、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或部件、数据库或存储部件、数据获取或数据捕获系统、诊断系统、测试系统、机器人、便携式电子装置、无线装置等。在另一实施例中,主机装置108可以是客户端,且存储器装置102自主地对从主机装置108发送的服务数据请求进行操作。在此实施例中,主机装置108和存储器装置102可以使用计算机网络、系统总线、直接附接存储(DAS)或适于计算机与自主式存储器装置102之间的连接的其它通信构件连接。
所描绘实施例展示作为主机装置108的部分,与存储客户端112通信的用户应用程序110。在一个实施例中,用户应用程序110是在存储客户端112上或结合所述存储客户端操作的软件应用程序。存储客户端112管理文件和数据,且利用存储控制器104和相关联存储器裸片106的功能和特征。存储客户端的代表性实例包含(但不限于)服务器、文件系统、作业系统、数据库管理系统(“DBMS”)、卷管理器等。存储客户端112与存储器装置102内的存储控制器104通信。
在一个实施例中,系统100包含通过一个或多个计算机网络连接到一个或多个主机装置108的一个或多个客户端。主机装置114可以是主机、服务器、SAN的存储控制器、工作站、个人计算机、膝上型计算机、手持式计算机、超级计算机、计算机集群、网络交换机、路由器或部件、数据库或存储部件、数据获取或数据捕获系统、诊断系统、测试系统、机器人、便携式电子装置、无线装置等。计算机网络116可以包含因特网、广域网(“WAN”)、城域网(“MAN”)、局域网(“LAN”)、令牌环、无线网络、光纤通道网络、SAN、网络附接存储(“NAS”)、ESCON等或网络的任何组合。计算机网络116还可以包含来自IEEE 802系列网络技术的网络,例如以太网、令牌环、WiFi、WiMax等。
计算机网络116可以包含服务器、开关、路由器、电缆线、无线电,以及用于促进主机装置108或主机装置与主机装置114或客户端的联网的其它设备。在一个实施例中,系统100包含作为对等体经由计算机网络116进行通信的多个主机装置。在另一实施例中,系统100包含作为对等体经由计算机网络116进行通信的多个存储器装置102。所属领域的技术人员将认识到包括一个或多个计算机网络和相关设备的其它计算机网络,所述设备具有一个或多个客户端或其它计算机与一个或多个存储器装置102或连接到一个或多个主机装置的一个或多个存储器装置102之间的单个或冗余连接。在一个实施例中,系统100包含通过计算机网络116而无需主机装置108连接到主机装置114的两个或更多个存储器装置102。
在一个实施例中,存储客户端112通过包括输入/输出(I/O)接口的主机装置接口502(关于图5描述)与存储控制器104通信。例如,存储器装置500可以支持由国际信息技术标准委员会(“INCITS”)维持的ATA接口标准、ATA分组接口(“ATAPI”)标准、小型计算机系统接口(“SCSI”)标准和/或光纤通道标准。
在某些实施例中,存储器装置的存储介质被分成卷或分区。每一卷或分区可以包含多个扇区。传统地,扇区为512字节的数据。一个或多个扇区组织成块(本文中可互换地称作块和数据块)。
在一个实例实施例中,数据块包含八个扇区,所述块为4KB。在例如那些与作业系统对接的某些存储系统中,数据块被称为集群。在例如那些与UNIX、Linux或类似作业系统对接的其它存储系统中,数据块简称为块。块或数据块或集群表示存储介质上由存储管理器管理的最小存储空间物理量,所述存储管理器例如存储控制器、存储系统、存储单元、存储装置等。
在一些实施例中,存储控制器104可以配置成在一个或多个非对称一次写入存储介质,例如存储器裸片106内的固态存储存储器单元上存储数据。如本文中所使用,“一次写入”存储介质是指每次在上面写入或编程新数据时被重新初始化(例如,擦除)的存储介质。如本文中所使用,“非对称”存储介质是指对于不同存储操作具有不同时延的存储介质。许多类型的固态存储介质(例如,存储器裸片)是非对称的;例如,读取操作可能比写入/编程操作快得多,且写入/编程操作可能比擦除操作快得多(例如,读取存储介质可能比擦除快数百倍,且比编程存储介质快数十倍)。
存储器裸片106可以分割成可以作为群组擦除的存储器分区(例如,擦除块),以便尤其考虑到存储器裸片106的非对称性质等。因而,就地修改单个数据段可能需要擦除包括数据的整个擦除块,并将经过修改的数据连同原始不变数据一起重写到擦除块。这会带来低效的“写入放大”,从而会过度损耗存储器裸片106。因此,在一些实施例中,存储控制器104可以配置成异地写入数据。如本文中所使用,“异地”写入数据是指将数据写入到不同介质存储位置,而非“就地”重写数据(例如,对数据的原始物理位置进行重写)。异地修改数据可以避免写入放大,这是由于无需擦除和复制具有要修改数据的擦除块上的现有有效数据。此外,异地写入数据可以从许多存储操作的时延路径中去除擦除(例如,擦除时延不再为写入操作的关键路径的部分)。
由存储管理器管理数据块具体包含针对读取操作、写入操作或维持操作,对特定数据块进行寻址。块存储装置可以将可用于跨越存储介质进行用户数据存储的n个块与从0编号到n的逻辑地址相关联。在某些块存储装置中,逻辑地址可以介于每卷或分区0到n的范围内。在常规块存储装置中,还被称作逻辑块地址(LBA)的逻辑地址直接映射到物理存储介质上的特定数据块。在常规块存储装置中,每一数据块映射到物理存储介质上的特定物理扇区集合。
然而,某些存储装置并不直接或必定将逻辑地址与特定物理数据块相关联。这些存储装置可以仿真常规块存储接口以维持与块存储客户端112的兼容性。
在一个实施例中,存储控制器104提供块I/O仿真层,其充当块装置接口或API。在此实施例中,存储客户端112通过此块装置接口与存储装置通信。在一个实施例中,块I/O仿真层根据此块装置接口从存储客户端112接收命令和逻辑地址。结果,块I/O仿真层提供与块存储客户端112的存储装置兼容性。
在一个实施例中,存储客户端112通过包括直接接口的主机装置接口502与存储控制器104通信。在此实施例中,存储装置直接交换特定于非易失性存储装置的信息。使用直接接口的存储装置可以使用多种组织构造在存储器裸片106中存储数据,所述组织构造包含(但不限于)块、扇区、页、逻辑块、逻辑页、擦除块、逻辑擦除块、ECC码字、逻辑ECC码字或以有利于存储器裸片106的技术特性的任何其它格式或结构。
存储控制器104从存储客户端112接收逻辑地址和命令,并执行与存储器裸片106相关的对应操作。存储控制器104可以支持块I/O仿真、直接接口或这两个。
图2为示例性存储器装置102的框图。存储器装置102可以包含存储控制器104和存储器阵列202。每一存储器裸片106可以包含裸片控制器204和呈三维阵列形式的至少一个非易失性存储器阵列206,以及读取/写入电路208。
在此上下文中,“存储器阵列”是指组织成具有行和列的阵列结构的存储器单元(还被称作存储单元)集合。因此,非易失性存储器阵列为具有如下存储器单元的存储器阵列,所述存储器单元被配置成使得用于表示所存储数据的存储单元的特性(例如,阈值电压电平、电阻电平、导电性等)保持存储单元的性质,而不需要使用电源来维持所述特性。
存储器阵列可使用行标识符和列标识符来寻址。所属领域的技术人员认识到,存储器阵列可以包括平面内的存储器单元集合、存储器裸片内的存储器单元集合、平面集合内的存储器单元集合、存储器裸片集合内的存储器单元集合、存储器封装内的存储器单元集合、存储器封装集合内的存储器单元集合,或具有其它已知存储器单元设置架构和配置。
存储器阵列可以包含在存储或存储器系统内的数个组织层级处的存储器单元集合。在一个实施例中,平面内的存储器单元可以组织成存储器阵列。在一个实施例中,存储器裸片的多个平面内的存储器单元可以组织成存储器阵列。在一个实施例中,存储器装置的多个存储器裸片内的存储器单元可以组织成存储器阵列。在一个实施例中,存储系统的多个存储器装置内的存储器单元可以组织成存储器阵列。
非易失性存储器阵列206可经由行解码器210通过字线和经由列解码器212通过位线来寻址。读取/写入电路208包含多个感测块SB1、SB2……SBp(感测电路),且允许并行地读取或编程存储器单元页。在某些实施例中,跨越存储器阵列的一行的每一存储器单元一起形成物理页。
物理页可以包含沿着存储器阵列的一行的用于单个平面或用于单个存储器裸片的存储器单元。在一个实施例中,存储器裸片包含由两个相等大小的平面构成的存储器阵列。平面为准许在使用某些物理行地址和某些物理列地址的两位置上执行某些存储操作的存储器阵列分区。在一个实施例中,存储器裸片的一个平面的物理页包含四个数据块(例如,16KB)。在一个实施例中,存储器裸片的物理页(也被称为“裸片页”)包含各自具有四个数据块的两个平面(例如,32KB)。
命令和数据经由数据总线222在主机装置108与存储控制器104之间传送,且经由总线220在存储控制器104与一个或多个存储器裸片106之间传送。存储控制器104可以包括关于图5更详细地描述的逻辑模块。
非易失性存储器阵列206可以是二维的(2D-在单个制造平面中布置)或三维的(3D-在多个制造平面中布置)。非易失性存储器阵列206可以包括包含3D阵列的一个或多个存储器单元阵列。在一个实施例中,非易失性存储器阵列206可以包括整体式三维存储器结构(3D阵列),其中多个存储器层级形成于例如晶片的单个衬底上方(而不形成于衬底中),而不具有介入衬底。非易失性存储器阵列206可以包括任何类型的非易失性存储器,其整体形成于具有安置于硅衬底上方的有源区域的存储器单元阵列的一个或多个物理层级中。非易失性存储器阵列206可以处于非易失性固态驱动器中,所述固态驱动部件有与存储器单元的操作相关联的电路,而不管相关联电路是在衬底上方还是衬底内。字线可以包括安置于衬底上方的层中的含有存储器单元的层的区段。多条字线可以借助于沟槽或其它不导电隔离特征形成于单层上。
裸片控制器204与读取/写入电路208配合,以对非易失性存储器阵列206的存储器单元执行存储器操作,且包含状态机214、地址解码器216和电力控制218。状态机214提供存储器操作的芯片层级控制。
地址解码器216提供由主机或存储控制器104使用的地址到由行解码器210和列解码器212使用的硬件地址之间的地址接口。电力控制218控制在存储器操作期间供应到各种控制线的功率和电压。电力控制218和/或读取/写入电路208可以包含用于字线、源栅选择(SGS)晶体管、漏栅选择(DGS)晶体管、位线、衬底(2D存储器结构中)、电荷泵和源极线的驱动器。在某些实施例中,电力控制218可以检测突然断电并采取预防措施。电力控制218可以包含各种第一电压生成器(例如,驱动器),以生成本文中所描述的电压。在一个方法中,感测块可以包含位线驱动器和感测放大器。
在一些实施方案中,可以组合组件中的一些。在各种设计中,除了非易失性存储器阵列206外,组件中的一个或多个(单独或组合)可以被视为配置成执行本文中描述的技术的至少一个控制电路或存储控制器。例如,控制电路可以包含裸片控制器204、状态机214、地址解码器216、列解码器212、电力控制218、控制处理器512、错误校正单元514、感测块SB1、SB2……SBp、读取/写入电路208、存储控制器104等等中的任一个或其组合。
在一个实施例中,主机装置108为包含一个或多个处理器、一个或多个处理器可读存储装置(RAM、ROM、快闪存储器、硬盘驱动器、固态存储器)的计算装置(例如,膝上型计算机、桌上型计算机、智能手机、平板计算机、数码相机),所述存储装置存储用于对存储控制器104进行编程以执行本文中所描述的方法的处理器可读代码(例如,软件)。主机还可以包含额外系统存储器、与一个或多个处理器通信的一个或多个输入/输出接口和/或一个或多个输入/输出装置,以及所属领域中众所周知的其它组件。
通常需要相关联电路来操作存储器单元并与存储器单元通信。作为非限制性实例,存储器装置可以具有用于控制和驱动存储器单元以实现例如编程和读取的功能的电路。此相关联电路可以处在与存储器单元相同的衬底上和/或单独衬底上。例如,用于存储器读写操作的存储控制器可以位于单独的存储控制器芯片上和/或与存储器单元相同的衬底上。
所属领域的技术人员将认识到,所公开的技术和装置不限于所描述的二维和三维示例性结构,而是涵盖如本文中所描述且如所属领域的技术人员所理解的所述技术的精神和范围内的所有相关存储器结构。
图3描绘包括多个存储器单元的NAND串300的一个实施例。在一些实施例中,图3中所描绘的NAND串300包含串联连接,且位于第一选择晶体管310与第二选择晶体管312之间的四个晶体管(晶体管302、晶体管304、晶体管306和晶体管308)。在一些实施例中,晶体管302、晶体管304、晶体管306和晶体管308各自包含具有电荷捕获层330的控制栅极。在一个实施例中,控制栅极322、控制栅极324、控制栅极326和控制栅极328连接到字线或包括字线的一部分。在另外的实施例中,晶体管302、晶体管304、晶体管306和晶体管308为存储器单元、存储元件等,在本文中也被称为存储器单元。在一些实施例中,单个存储器单元可以包含多个晶体管。
在一些实施例中,第一选择晶体管310经由漏极选择栅极/选择栅极漏极(SGD)将NAND串300选通/连接到位线314。在某些实施例中,第二选择晶体管312经由源极选择栅极/选择栅极源极(SGS)将NAND串300选通/连接到源极线316。在另外的实施例中,通过将电压施加到对应选择栅极318来控制第一选择晶体管310。在一些实施例中,通过将电压施加到对应选择栅极320来控制第二选择晶体管312。
如图3中所示,在一个实施例中,源极线316连接到NAND串300中的每一晶体管/存储器单元的源极引线。在一些实施例中,NAND串300可以包含已被编程的一些存储器单元和尚未被编程的一些存储器单元。
图4为描绘包括多个NAND串的存储器阵列400的电路图。使用NAND结构的存储器阵列的架构可以包含相当大数目个NAND串。例如,图4示出包含NAND串404、NAND串420、NAND串436和NAND串452的存储器阵列400。在描绘的实施例中,每一NAND串包含漏极选择晶体管(选择晶体管408、选择晶体管424、选择晶体管440和选择晶体管456)、源极选择晶体管(选择晶体管418、选择晶体管434、选择晶体管450、选择晶体管466)和存储器单元(410、412、414、416、426、428、430、432、442、444、446、448、458、460、462、464)。存储器单元可以是并有电荷捕获层468的晶体管。虽然为简单起见示出每NAND串四个存储器单元,但一些NAND串可以包含任何数目个存储器单元,例如,三十二个、六十四个等存储器单元。
在一个实施例中,NAND串404、NAND串420、NAND串436和NAND串452分别由源极选择晶体管418、选择晶体管434、选择晶体管450和选择晶体管466连接到源极线402。源极选择线SGS可以用于控制源极侧选择晶体管418、434、450、466。在一个实施例中,各种NAND串分别由漏极选择晶体管408、选择晶体管424、选择晶体管440和选择晶体管456连接到位线406、位线422、位线438和位线454,如所示。漏极选择晶体管可以由漏极选择线SGD控制。在一些实施例中,选择线未必需要共用于NAND串当中;也就是说,可以为不同的NAND串提供不同的选择线。
如上文所描述,每一字线WL0到WLn包括一个或多个存储器单元。在描绘的实施例中,位线406、位线422、位线438和位线454中的每一个与相应NAND串404、NAND串420、NAND串436和NAND串452包括存储器阵列400的列、存储块、擦除块等。这些列也可以称为通道。在一些实施例中,字线WL0到WLn包括存储器阵列400的行、存储块、擦除块等。在一些实施例中,每一字线WL0到WLn连接一行中的每一存储器单元的控制栅极。替代地,控制栅极可以由字线WL0到WLn自身提供。在一些实施例中,字线WL0到WLn可以包含数十个、数百个、数千个、数百万个等存储器单元。
在一个实施例中,每一存储器单元配置成存储数据。例如,当存储一位数字数据时,每一存储器单元的可能阈值电压(“VTH”)的范围可以被分成指派有逻辑数据“1”和“0”的两个范围。如本文中所使用,阈值电压是指施加到存储器单元的栅极的足以激活存储器单元的电压的幅度。在存储器单元为NAND晶体管的实施例中,阈值电压为施加到晶体管的栅极端子的使晶体管在其源极端子与漏极端子之间传导电流的充分电压。在NAND型快闪存储器的一个实例中,VTH在存储器单元被擦除之后可以为负且被定义为逻辑“1”。在一个实施例中,VTH在编程操作之后为正且被定义为逻辑“0”。
在一些实施例中,当VTH为负且尝试读取时,存储器单元将接通以指示正存储逻辑“1”。在另外的实施例中,当VTH为正且尝试读取操作时,存储器单元将并不接通,这指示正存储逻辑“0”。每一存储器单元还可以存储多个层级的信息,例如多位数字数据。在此类实施例中,VTH值的范围被分成数据的层级数目个范围。例如,如果可以在每一存储器单元中存储四个层级的信息,则将存在指派有数据值“11”、“10”、“01”和“00”的四个VTH范围。
在NAND型存储器的一个实例中,VTH在擦除操作之后可以为负且被定义为“11”。正VTH值可以用于“10”、“01”和“00”的状态。在一个实施例中,编程到存储器单元中的数据与存储器单元的阈值电压范围之间的特定关系取决于存储器单元所采用的数据编码方案。
参考图5,存储器装置500包括存储控制器104和存储器裸片106。存储控制器104管理存储器裸片106,且可以包括各种硬件和软件控制器、驱动器和软件,包含主机装置接口502、命令/数据输入路径504、串行器506、快闪转译层508、地址映射表510、控制处理器512、易失性存储器516和数据输出路径518。存储器裸片106包含存储器阵列202。
存储器装置500还可以包含恢复单元520,其实施本文中所公开的方法且相对于图6更详细地加以描述。
如上文所描述,虽然某些存储装置在存储客户端112(或主机装置)看来是块存储装置,但某些存储装置并不直接将特定逻辑地址与特定物理数据块(在所属领域中也称为扇区)相关联。此类存储装置可以使用地址映射表510。地址映射表510提供由存储客户端112使用的逻辑地址与存储控制器104存储数据处的物理地址之间的抽象层级。地址映射表510将逻辑地址映射到存储器裸片106上存储的数据块的物理地址。此映射关系允许使用例如逻辑块地址的逻辑标识符在逻辑地址空间中参考数据。逻辑标识符并不指示数据在存储器裸片106上的物理位置,而是对数据的抽象参考。
存储控制器104管理物理地址空间中的物理地址。在一个实例中,连续逻辑地址可以实际上存储在不连续物理地址中,这是由于地址映射表510跟踪且识别存储器裸片106内的适当物理位置以执行数据操作。
此外,在某些实施例中,逻辑地址空间可以基本上大于物理地址空间。此“精简布建”或“稀疏地址空间”实施例允许用于数据参考的逻辑标识符的数目大大超出可能的物理地址数目。
在一个实施例中,地址映射表510包含将逻辑地址映射到物理地址的图或索引。图可以呈B树、内容可寻址存储器(“CAM”)、二叉树和/或哈希表等形式。在某些实施例中,地址映射表510为具有表示逻辑地址且包括对应物理地址的节点的树。
存储控制器104保留对应于物理数据块的存储装置上的数据的逻辑地址与物理地址之间的关系。随着分配的数据块、存储/写入的数据块的数目增大,取决于存储控制器104的配置,存储控制器104的性能可能会受到影响。具体来说,在某些实施例中,存储控制器104配置成依序地存储数据并使用存储空间恢复过程,所述过程重新使用存储解除分配/未使用的数据块的存储器单元。具体来说,存储控制器104可以在存储器裸片106上依序地将数据写入存储器单元的一个或多个物理结构内,所述数据依序地存储在存储器裸片106上。
由于依序地存储数据,存储控制器104实现高写入处理量和每秒较高数目个I/O操作(“IOPS”)。存储控制器104包含重新使用数据存储器单元以提供充分存储容量的存储空间恢复或垃圾收集过程。存储空间恢复过程重新使用用于地址映射表510中标记为解除分配、无效、未使用,或以其它方式指定为可用于存储空间恢复的数据块的存储器单元。
主机装置接口502可以由命令/数据输入路径504在发送和报告所发送和接收到的数据和命令中的延迟方面进行配置。主机装置接口502进一步向命令/数据输入路径504发送传入存储命令和用于处理的数据。命令/数据输入路径504从主机装置接口502接收用于处理的数据。数据接着发送到串行器506。命令/数据输入路径504进一步向控制处理器512发送关于工作负载的控制信号。工作负载属性可以包含接收到的读取存储命令的百分比、接收到的写入存储命令的百分比、队列深度、定向于不连续或随机地址的存储命令的百分比、与存储命令相关联的数据的平均传送长度、启动器计数、端口计数、每秒输入/输出(IOPS)度量等。
串行器506从命令/数据输入路径504接收数据。串行器506执行将例如数据封隔器或对象状态的数据结构转译成可以存储(例如,在文件或存储器缓冲器中)的格式的过程。串行器506可以由控制信号管理。此控制信号可以影响快闪转译层队列深度。经过处理的数据接着发送到快闪转译层508。在一些实施例中,经过处理的数据更改快闪转译层508的快闪转译层队列深度,从而更改快闪转译层508同时处理的命令数目。
快闪转译层508接收经过处理的数据以及一个或多个控制信号以确定快闪转译层队列深度。快闪转译层508可以经由控制信号与地址映射表510交互以确定适当的物理地址,以将数据和命令发送到存储器裸片106和易失性存储器516。在一个实施例中,快闪转译层508还从存储器裸片106接收数据输出。
存储器裸片106执行存储操作(读取、写入、擦除),且如果存储命令具有输出数据,则传回数据输出。
地址映射表510存储存储器装置500上的数据块的地址位置,以供快闪转译层508利用。具体来说,快闪转译层搜索地址映射表510,以确定存储命令中包含的逻辑块地址是否在地址映射表510中具有条目。如果是,则使用与逻辑块地址相关联的物理地址以在存储器裸片106上定向存储操作。
在所示出的实施例中,存储器裸片的存储器单元是非对称一次写入存储介质。因此,到存储器单元的每一写入操作都需要将新物理地址指派到数据的逻辑块地址。通常,逻辑块地址保持相同且物理地址发生改变,从而使得存储控制器104可以快速地服务写入存储命令。
在一个实施例中,地址映射表510或其部分存储在易失性存储器516中。快闪转译层508频繁地参考地址映射表510以服务读取命令,并更新地址映射表510以跟踪每一写入命令(具有新逻辑块地址的新写入和更新先前指派的逻辑块地址的数据的写入)的新物理地址。结果,地址映射表510的状态和内容可以频繁且有规律地发生改变。
所属领域的技术人员将了解,整个地址映射表510可能过大而无法一次装入易失性存储器516中。因此,对于此类实施例,并非将整个地址映射表510加载到易失性存储器516中,可以将高速缓存管理逻辑和高速缓存条目加载到易失性存储器516中。对于此类实施例,母版刷新意指易失性存储器516中的任何经过修改的地址映射表条目被刷新或存储到存储器裸片106。所属领域的技术人员应理解,如果论述了易失性存储器中的地址映射表的完整副本,则可以代替完整副本在易失性存储器中使用映射表高速缓存条目集合和映射表高速缓存逻辑。
存储控制器104用某些元数据将数据写入到存储器裸片106。元数据可以包含每一数据块的逻辑块地址,或数据块集合,以及关于多少数据块与逻辑块地址相关联的指示符。数据块被依序地写入到存储器裸片106上。因此,存储控制器104可以读取存储器裸片106上的每一数据块且(必要时)重新创建地址映射表510。
理想地,存储控制器104管理地址映射表510,使得无需读取存储于存储器阵列202中的数据块中的每一个来恢复地址映射表510。存储控制器104在关机事件(正常或不正常)之后执行以进入操作状态的一系列步骤和操作在本文中被称作初始化操作。
通常,为最小化初始化操作所需的时间,存储控制器104周期性地将地址映射表510的完整副本存储到存储器裸片106。在地址映射表510无法装入易失性存储器516中的实施例中,存储控制器104周期性地将在易失性存储器中的地址映射表510的经过修改部分存储到存储器裸片106。
在某些实施例中,存储控制器104在正常关机事件期间将地址映射表510的经过修改部分存储到存储器裸片106。在地址映射表510无法装入易失性存储器516中的实施例中,存储控制器104在正常关机事件期间将在易失性存储器中的地址映射表510的经过修改部分存储到存储器裸片106。当存储控制器104在正常关机事件之后再次通电时,作为初始化过程的部分,存储控制器104将完整地址映射表510加载到易失性存储器516中。在地址映射表510无法装入易失性存储器516中的实施例中,作为初始化过程的部分,存储控制器104将地址映射表510的预定部分集合加载到易失性存储器516中。存储控制器104无需另外步骤来获得地址映射表510(或在易失性存储器516中的地址映射表510的部分)在正常关机之前的状态。
如果存储控制器104经历不正常关机事件且存储控制器104已周期性地存储地址映射表510的完整副本,则存储控制器104从存储器阵列(例如,存储器裸片)加载地址映射表510的最近已知完整副本。接下来,存储控制器104读取在存储了地址映射表510的最近已知完整副本时与不正常关机事件发生时之间存储的每一数据块。根据在此初始化操作过程期间读取的每一数据块,存储控制器104用所读取的数据块中记录的物理地址变化来更新新加载的地址映射表510。一旦读取了所有数据块,且地址映射表510被更新,则地址映射表510反映其在不正常关机事件之前的状态。初始化操作接着完成且存储控制器104可以开始服务存储客户端。
恢复单元520与快闪转译层508和地址映射表510协调,以管理恢复地址映射表510在不正常关机事件之前的原始状态所需的时间。在某些实施例中,恢复单元520配置成使得存储控制器104和/或用以调谐和配置存储控制器104的用户和/或存储客户端112能够设置初始化操作的恢复时间,使得初始化操作满足时序度量。
时序度量为定义初始化操作应花费多长时间的最大时间、时间范围或其它指定时间。时序度量可以在行业标准性能规范中阐述。对于某些存储器装置,可以以10微秒、100毫秒、1到2秒、一分钟等来测量时序度量。
有利地,恢复单元520使得制造商、存储客户端112或存储控制器104能够定义时序度量的参数,且恢复单元520将与快闪转译层508、地址映射表510和存储器阵列202一起起作用以满足时序度量。
在一个实施例中,恢复单元520使用用于确定性地管理初始化操作时间的至少两种技术。第一种,恢复单元520管理存储控制器104执行地址映射表510的母版刷新的频率。刷新地址映射表510为可能影响存储控制器104赋予存储客户端的性能水平的维持操作。此潜在性能成本激励恢复单元520尽可能少地进行母版刷新。然而,恢复单元520越频繁地进行母版刷新,可以写入到存储器阵列202,且将需要被读取以将地址映射表510重建/恢复到其在不正常关机事件之前的状态的数据块的量越小。
第二种,恢复单元520管理如何在存储器阵列上存储跟踪逻辑块地址与物理地址之间的关系的信息,以用于在母版刷新完成之间写入的数据块。逻辑块地址与物理地址的关系为一对一关系,每一逻辑块地址在存储器阵列202中仅具有一个物理地址。此关系还被称作逻辑到物理映射关系,简称为L2P。跟踪逻辑块地址与物理地址之间的关系的信息称为索引或映射关系。如本文中所使用,索引含有可以从其确定多个数据块的逻辑块地址和对应物理地址的信息。结果,当重建地址映射表510时,存储控制器104仅需要读取一个索引来确定由一个索引表示的多个数据块的逻辑块地址和对应物理地址。在一个实施例中,索引可以包括索引表示的数据块中的每一个的逻辑标识符(例如,逻辑块地址)。在一些实施例中,除了描述逻辑标识符(例如,逻辑块地址)的标识符信息之外,索引还可以包含描述由索引表示的数据块位于存储器裸片上的物理存储位置(例如,物理地址)的位置信息。在一个实施例中,位置信息表示物理存储位置,而不明确地包括物理存储位置。在一个实例中,索引可以包含数据块索引表示中的一个或多个的偏移,其中所述偏移是与存储索引的物理位置的偏移。在另一实例中,位置信息可以是逻辑擦除块内的偏移或逻辑页内的偏移。在另一实施例中,位置信息包括计数和偏移,且通过知道由索引表示的数据块数目并将所述数目与数据块大小相乘来导出物理存储位置,其中数据块具有已知固定大小。此信息连同索引中的索引条目排序一起可以准许导出物理存储位置。索引可以组织成任何合适的数据结构。可能索引数据结构的实例包含(但不限于)键值对、链表、开始逻辑块地址和开始物理地址,以及指示多少依序寻址的数据块与此开始逻辑块地址和开始物理地址相关联的计数等。
通过管理母版刷新的频率和如何在存储器阵列202上存储映射关系或索引数据,存储控制器104管理初始化操作所需的时间。
易失性存储器516可以从快闪转译层508和数据输出路径518发送和接收数据(经过处理的数据、数据输出等)。易失性存储器516为用于在将数据从一个位置移动到另一位置时临时存储数据的物理存储器存储区。例如,易失性存储器516可以存储未在快闪转译层508中主动排队的经过处理的数据,并在快闪转译层508请求后发送另外经过处理的数据。快闪转译层508可以对数据输出路径518的数据输出执行类似过程。
数据输出路径518确定主机装置数据传送(例如,数据输出的传送)的调度和主机装置响应的调度。数据输出路径518与主机装置接口502通信以发送和接收此数据和命令。主机装置数据传送和主机装置响应的调度可以受到控制信号的影响。数据输出路径518可以由控制信号更改以延迟数据传送或响应帧。数据输出路径518进一步向控制处理器512发送关于工作负载的控制信号。工作负载属性可以包含读取百分比、队列深度、随机百分比、传送长度、启动器计数、端口计数和每秒输入/输出(IOPS)。
图6更详细地示出根据一个实施例的恢复单元520。恢复单元520包含索引生成器606、粗略恢复电路602和精细恢复电路604。恢复单元520与快闪转译层508、易失性存储器516中的地址映射表510和存储器阵列202交互。
在一个实施例中,存储器阵列202包含多个存储器裸片。每一存储器裸片可以包含两个物理平面。每一物理平面可以包含多个物理擦除块,且每一物理擦除块可以包含各自包含非易失性存储器单元的字线集合。如下文更详细地描述,来自每一存储器裸片的物理擦除块可以组织成逻辑擦除块。在一个实施例中,逻辑擦除块包含来自每一存储器裸片内的非易失性存储器阵列的同一行的物理擦除块。逻辑擦除块使得存储控制器能够在几个存储操作中读取和写入大量数据。
粗略恢复电路602管理驻存在易失性存储器516中的地址映射表510的副本到存储器阵列202的存储(例如,母版刷新)。在一个实施例中,粗略恢复电路602根据预定义时间表将地址映射表510的副本存储到存储器阵列202。可以基于时间表或存储控制器104已写入的数据块的设置量或已完成的存储操作的设置量来定义预定义时间表。粗略恢复电路602可以与存储控制器104通信,以收集关于经过的时间周期、已写入的数据块数目或已完成的存储操作数目的信息,以便确定何时进行下一母版刷新且仍满足预定义时间表。
在一个实施例中,粗略恢复电路602在初始化操作期间从存储器阵列202检索地址映射表510的所存储副本。粗略恢复电路602还可以将地址映射表510加载到易失性存储器516中。
精细恢复电路604与索引生成器606协调以生成一个或多个索引,并将其存储在存储器阵列202内。在一个实施例中,精细恢复电路604以某种方式存储一个或多个索引,使得优化了可以在单个读取操作中从存储器阵列202读取多少索引。在另一实施例中,精细恢复电路604以某种方式存储一个或多个索引,使得优化了是否可以以最少错误数从存储器阵列202读取索引。在另一实施例中,精细恢复电路604以将多个索引分组到存储器阵列202上的单个数据块内的方式存储一个或多个索引。
索引生成器606生成索引。在一个实施例中,精细恢复电路604跟踪自从索引被写入到存储器阵列202以来存储的数据块的逻辑块地址。精细恢复电路604向索引生成器606提供此逻辑块地址集合和关于那些数据块物理地存储在存储器阵列202上的位置的信息,从而使得索引生成器606可以生成准确的索引。如上文所描述,索引的格式、本质和组织可以在不同实施例中不同。
索引生成器606构建含有可以从其确定数据块的逻辑块地址和对应物理地址的信息的索引。在一个实施例中,索引生成器606将索引存储到存储器阵列202。每一索引可以含有可以从其确定早期写入到存储器阵列202的某些数据块的逻辑块地址的信息。在一个实施例中,索引可以包含索引表示的每一数据块的逻辑块地址。在另一实施例中,索引可以包含一个数据块的单个逻辑块地址,且精细恢复电路604可以导出索引表示的其它数据块的逻辑块地址。
在一个实施例中,在存储控制器104将数据块存储到逻辑擦除块的预定数目个逻辑字线之后,精细恢复电路604将第一索引存储在逻辑擦除块的后续字线的一对平面中的第一平面上。接下来,在存储控制器104将数据块存储到另一预定数目个逻辑字线之后,精细恢复电路604将第二索引存储在另一后续逻辑字线的所述对平面中的第二平面上。在此实施例中,精细恢复电路604策略性地将第一索引和第二索引放置在存储器裸片的不同字线的不同平面上,使得可以在单个读取操作中读取第一索引和第二索引。因此,此单个读取操作加速对索引的读取,这使得精细恢复电路604能够在所要时序度量内执行地址映射表510的恢复。
如本文中所使用,例如物理页、物理字线、物理擦除块、物理平面、物理存储器裸片等的“物理”结构是指系统的控制器、管理器、模块或其它逻辑组件可以在系统或设备的组织中的一个或多个物理抽象层级内的某个层级处控制和/或通信的单个物理结构。类似地,例如逻辑页、逻辑字线、逻辑擦除块、逻辑平面、逻辑存储器裸片等的“逻辑”结构是指系统的控制器、管理器、模块或其它逻辑组件可以在系统或设备的组织中的一个或多个物理抽象层级内的某个层级处控制和/或通信的两个或更多个相同类型的单个物理结构的集合。应注意,“物理”结构和“逻辑”结构中的一个或另一个或这两个可以具有不同的地址,所述地址可以用于相对于具有类似本质和类型的其它结构识别一个“物理”结构或“逻辑”结构。
图7示出根据一个实施例的数据块和索引的布局700。在图7中,为简单和清晰起见,使用比所生产的产品中可能使用的元件和组件少的元件和组件展示实例实施例。
非易失性存储器阵列704中的逻辑擦除块702的实施例展示为包括两个存储器裸片,每一裸片具有平面0和平面1。每一存储器裸片的每一平面包含多个字线。跨越平面的字线和跨越存储器裸片的字线在本文中可互换地称为逻辑字线(例如,710、712)。在图7中展示的实例实施例中,逻辑字线由WL0、WL1、WL2、WL3等指示。在描绘的实施例中,存储控制器以预定义顺序将数据写入到逻辑字线。在所示出的实施例中,写入到逻辑擦除块702的第一数据块(DB)被写入到WL0(具体来说存储器裸片0,平面0,列DB0)。第二数据块为存储器裸片0的平面0上的WL0中的下一可用数据块DB1。此写入顺序一直进行到逻辑字线WL0的所有数据块都被写入为止,接着存储控制器在称为下一字线或可以称为后续字线的WL1上写入下一数据块。如本文中所使用,后续字线是在存储控制器结束将数据块写入到当前字线之后,存储控制器根据存储控制器的写入顺序或写入顺序方法准备将数据块写入到的任何字线(逻辑或物理)。应注意,下一字线和后续字线可能并非同一字线。在所示出的实施例中,WL1为下一字线,因为其为接收数据块的下一字线,且WL1为后续字线,因为WL1在写入顺序上跟随WL0。然而,虽然WL1是WL0之后的下一字线;但WL1、WL2或WL3各自为后续字线,因为其在写入顺序上跟随在写入到WL0后。对于逻辑字线,字线当中可能存在此相同关系。也就是说,WL1为下一逻辑字线,因为WL1为接收数据块的下一逻辑字线,且WL1为后续逻辑字线,因为WL1在写入顺序上跟随WL0。然而,虽然WL1为WL0之后的下一逻辑字线;但WL1、WL2或WL3各自为后续逻辑字线,因为其在写入顺序上跟随在写入到WL0后。
逻辑擦除块702由来自非易失性存储器阵列206中的每一存储器裸片的一个物理擦除块(PEB)(例如,PEB 706和PEB 708)构成。在某些实施例中,用于形成逻辑擦除块702的PEB在非易失性存储器阵列704的同一行中,然而,其它实施例可以使用来自非易失性存储器阵列704的存储器裸片中的一个或多个中的不同行的PEB。
展示构成逻辑擦除块702的逻辑字线中的四个,每一字线被分成16个数据块(DB)。在此实施例中,主机装置108可能已发布8个写入命令(WC)。主机装置108已从标记为“WC1”、“WC2”等等的DB中开始相应地将那些8个命令中的数据写入到物理存储器上的逻辑擦除块702。应注意,虽然为简单起见,这些命令在此实例中展示为在物理上是同时的,但对于所公开的方法,来自连续写入命令的数据无需在物理上接近。
对于每一写入命令(“WCn”),指派逻辑块地址,使得主机装置108可以无需跟踪由存储器装置102使用的物理地址来参考数据。地址映射表510在易失性存储器中记录逻辑块地址716(LBA)与物理地址718之间的关系714,如所示。
在此实施例中,来自WC1的数据使用WL0上的7个数据块空间。WC2数据使用3个数据块,且WC3使用6个数据块。当写入的逻辑字线数目和/或写入的数据块数目满足预定逻辑字线(或物理字线)数目和/或预定数据块数目时,精细恢复电路604生成索引并将索引存储在非易失性存储器阵列704上。
恢复单元520可以使用多种准则来定义精细恢复电路604何时将生成索引,并将索引存储在非易失性存储器阵列704上。在一个实施例中,恢复单元520跟踪自从最后母版刷新和/或索引被写入以来已写入多少数据块。当数据块数目达到预定数目,例如4、8、12、16、32等时,恢复单元520生成索引并将索引存储在非易失性存储器阵列704上。此预定数据块数目在本文中被称作刷新阈值。
在另一实施例中,恢复单元520跟踪自从最后母版刷新和/或索引被写入以来已写入多少字线和/或逻辑字线。当字线和/或逻辑字线数目达到预定数目,例如1、4、8、12、16、32等时,恢复单元520生成索引并将索引存储在非易失性存储器阵列704上。此预定字线和/或逻辑字线数目在本文中被称作刷新阈值(还被称作下文较多描述的刷新距离)。
在图7的所示出实施例中,刷新阈值是每一逻辑字线一次的。因此,精细恢复电路604将索引A 720存储在后续逻辑字线712上。后续字线712为存储控制器最后写入数据块的逻辑字线710的后续字线。索引A 720包含用于识别存储在WL0上的16个数据块DB中的每一个的逻辑块地址的信息。在此实例中,三个索引被写入到非易失性存储器阵列206(索引A720、索引B 722和索引C 724)。索引A 720可以被称为第一索引。索引B 722可以被称为第二索引。
在此实例中,索引A 720存储与WC1、WC2和WC3相关联的映射地址信息。具体来说,索引A 720存储DB 1a到3f(16个DB,3个写入命令)中的数据的映射地址信息。如果发生不正常关机事件,且如果地址映射表510中的对应条目丢失,则恢复单元520在初始化操作期间读取索引A 720以重建地址映射表510。
在一个实施例中,精细恢复电路604配置成将索引存储在非易失性存储器的任何存储器裸片的任何平面的数据块列(DB0、DB1、DB2、DB3)中的任一个中。这意指精细恢复电路604可以将索引存储在与给定写入命令相关联的数据块间。替代地,精细恢复电路604可以将索引存储在逻辑字线的平面内的预定义位置处。在图7中,索引A 720、索引B 722和索引C 724例如各自在逻辑字线内的平面的第一数据块位置中。
在某些实施例中,精细恢复电路604配置成将索引存储在数据块列(DB0、DB1、DB2、DB3)中,使得在非易失性存储器阵列704上读取所有索引的数据时需要不超过一个读取操作。这意指逻辑擦除块702的每一列将仅包含一个索引。在所描绘的实例中,第一索引——索引A 720存储在逻辑字线WL1上,且第二索引——索引B 722存储在逻辑字线WL2(还被称作另一后续逻辑字线)上。替代地,精细恢复电路604可以将第一索引——索引A 720存储在逻辑字线WL1上,并将第二索引——索引B 722存储在同一逻辑字线WL1(还被称作后续逻辑字线)上。
如图7中所示,针对大量数据的写入命令可以跨越多个逻辑字线存储DB。在一个实施例中,精细恢复电路604可以将索引B 722存储在逻辑字线WL2,裸片0,平面1且DB0中以促进读取索引B 722。如所示出,索引B 722分割了WC4的19个DB。在此情况下,索引B 722可以包含单个写入命令的所有数据块的逻辑到物理寻址信息。精细恢复电路604可以导出在索引B 722之后写入的数据块的逻辑块地址和物理地址信息。替代地,在写入的数据跨越22个逻辑字线(如由WC4所示)的情况下,索引B 722可以含有用于单个写入命令的寻址信息,且所述写入命令取用的DB中的一些可以将其寻址信息存储在后续索引,即索引C 724中。在此实例中,索引B 722存储与WC4相关联的映射地址信息。具体来说,索引B 722存储DB 4a到4v(22个DB,1个写入命令)中的数据的映射地址信息。在此实例中,索引C 724存储与WC5和WC6相关联的映射地址信息。具体来说,索引C 724存储DB 5a到8g(21个DB,4个写入命令)中的数据的映射地址信息。
应注意,虽然每一逻辑字线上的DB可能被留用于索引,但所述逻辑字线的剩余部分可用于用户数据。在一些实施例中,如果索引的大小小于DB的4KB,则可以对DB进行填补,且仅在后续DB上写入用户数据。然而,在其它实施例中,索引和用户数据的一部分可以共享单个DB。在此情况下,从那里开始的用户数据可能具有未对齐的存取,且一些存储器配置可能未被最佳地设计用于此类存取,因此此类设计可能避免在索引与用户数据之间共享DB。然而,在扇区层级处具有快闪转译层(FTL)粒度的架构可能不会具有此共享难题,这是由于其可以使用一个扇区(例如,512字节)的数据块大小。
在一些实施例中,可以在写入命令层级而非DB层级处保存索引。在此情况下,相比于重建构众多随机写入所需的信息,用于长依序写入的寻址信息可能被压缩。在此情况下,索引B 722可以仅存储与WC4相关的少量数据,然而索引C 724可以存储用于WC5、WC6、WC7和WC8的数据。
图8示出根据一个实施例的配置成用于可预测初始化的存储器阵列800。逻辑擦除块802包含16个裸片(D0到D15)且包含多于64条逻辑字线。在此实施例中,精细恢复电路604使用两条逻辑字线的刷新阈值。在某些实施例中,恢复单元520将刷新阈值表征为刷新距离。刷新距离为在存储另一索引之前要写入的字线(逻辑或物理,包含用于任何索引的数据块)数目的计数。在图8中,刷新距离810为二。
主机装置数据可以从逻辑字线WL0开始写入到逻辑擦除块802。恢复单元520写入涵盖所写入逻辑字线WL0和WL1的数据块的索引804。恢复单元520将索引804写入到邻近于最后被编程逻辑字线816的后续逻辑字线818上,例如裸片0,平面0(D0P0)的WL2上的第一数据块。在存储控制器104再写入两条逻辑字线的数据块之后,恢复单元520将涵盖WL4之前的最后被编程逻辑字线的数据块(WL2、WL3和WL4的部分)的第二索引806写入到D0 P1。对于每两条字线的数据,将索引存储在DB中以捕获所述数据的逻辑到物理地址映射关系。
在另一实施例中,刷新距离为一。在一条逻辑字线的刷新距离,且使用Z形模式(下文所描述)的情况下,重建地址映射表所需的索引数据被较频繁地捕获。这意指从不正常关机事件恢复的时间窗较短。在替代实施例中,可以将刷新阈值(或刷新距离)设置成使得可以保证满足不正常关机事件之后的初始化时序度量。例如,如果存储器装置允许1秒的启动硬限制,则存储器装置可以配置成使得在最差情况情境中,重建地址映射表所需的所有索引连同任何其它初始化步骤一起将花费小于1秒。
恢复单元520可以以Z形模式808将索引写入到DB,即在字线被填充时将索引写入到下一裸片平面的第一DB处,直到已使用D15 P1的第一DB为止。此Z形模式808允许在下一启动(初始化操作)处迅捷地从这些DB读取信息。
有利地,非易失性存储器阵列包含感测放大器,和定位于阵列的一端处(顶部或底部或这两个,图8中在底部处)的裸片数据锁存器812。此配置准许存储控制器104用一个单个读取操作814读取整个逻辑页。单个读取操作814感测沿着逻辑页的存储器单元(沿着逻辑擦除块802的一行的每一字线的每个单元)的每一数据块中存储的数据值。通过设置裸片数据锁存器812以反映对应存储器单元中的值来将感测到的数据值存储在裸片数据锁存器812中。精细恢复电路604配置成仅从存储器裸片请求对应于索引的数据块。以此方式,在单个读取操作814中读取存储在非易失性存储器阵列中的每一索引。在描绘的实施例中,对于16裸片布置和两条逻辑字线的刷新阈值,通过单个读取循环重建构来自64条逻辑字线上的索引。
有利地,在某些实施例中,刷新距离(或刷新阈值)可由恢复单元调整。在一个实施例中,恢复单元基于非易失性存储器阵列中使用的存储器单元类型来调整刷新阈值。例如,如果存储器单元为单层级单元,则恢复单元可以使用较大刷新距离,因为这些存储器单元往往更可靠(例如,解码错误校正码所需的时间较少)。相反,如果存储器单元为多层级单元,则恢复单元可以使用较短刷新距离,因为这些存储器单元往往较不可靠。在另一实施例中,恢复单元基于逻辑字线、逻辑字线集合、逻辑擦除块、特定存储器裸片或存储器阵列整体的健康状况度量来调整刷新阈值。
类似地,由恢复单元使用以存储索引的布局在所述领域中可以是可配置的。在一个实施例中,恢复单元响应于主机装置的预期性能要求变化而调整索引的布局。
现参考图8,恢复单元520与存储控制器协调以执行初始化操作。初始化操作包含将表示逻辑地址映射信息在最后关机事件(正常或不正常)之前的准确状态的地址映射表加载到易失性存储器中,以及其它步骤。如果存储控制器确定已发生不正常关机事件,则存储控制器起始初始化操作。在初始化操作期间,恢复单元传信粗略恢复电路602将地址映射表的最近已知正确版本从非易失性存储器加载到易失性存储器。接下来,精细恢复电路读取自从存储地址映射表的最近已知正确版本以来存储在非易失性存储器上的每一索引。在一个实例中,恢复电路使用单个读取操作读取存储在非易失性存储器上的每一索引。接下来,精细恢复电路和/或恢复单元在易失性存储器中更新地址映射表的副本,以反映如在单个读取操作期间读取的索引中所定义的逻辑到物理地址映射关系变化。一旦地址映射表处在易失性存储器中,初始化操作的此部分完成。
图9示出根据一个实施例的配置成用于具有动态调谐的刷新距离的可预测初始化的存储器阵列900。
随着擦除块(逻辑或物理)展示降级迹象,这意指某些逻辑字线比其它字线更可靠,恢复单元可以动态地配置刷新阈值。对于健康状况较差的逻辑字线(例如,WL0到WL11),可以将第一刷新距离906设置成一条逻辑字线的第一值,如图8中所示出。如果逻辑字线(例如,WL12到WL28)高度可靠(也称为健康状况较好),则可以将第二刷新距离910增大到三条字线的第二值,如此处所示。
在一条逻辑字线的第一刷新距离906和三条字线的第二刷新距离910的情况下,可以以Z形模式写入索引902、第二索引904和第三索引908,使得在不正常关机事件之后启动时,可以跨越裸片数据锁存器912并行地感测重建地址映射表所需的数据。
在替代实施例中,可以将刷新阈值设置成使得可以保证满足不正常关机事件之后的初始化时序度量。例如,如果存储器装置允许1秒的启动硬限制,则存储器装置可以配置成使得在最差情况情境中,重建地址映射表所需的所有索引信息和执行其它初始化步骤将花费小于1秒。
在一个实施例中,恢复单元基于逻辑字线、逻辑字线集合、逻辑擦除块、特定存储器裸片或存储器阵列整体的健康状况度量来调整一个或多个刷新阈值/刷新距离。健康状况度量为一种度量或其它指示符,其告知某一逻辑字线、逻辑字线集合、逻辑擦除块或存储器裸片在存储数据和检索上面存储的数据方面的可靠程度。恢复单元可以使用的一种健康状况度量为PE计数,还被称作编程和擦除循环的频率。PE计数为逻辑擦除块已被写入且随后被擦除的频率的度量。高PE计数指示非易失性存储器单元已被大量使用且可能受到损耗,使得所述单元现在较不可靠。较不可靠的存储器单元仍可以用于存储和读取数据,然而,可能需要会增大进行读取操作的时延的某些错误恢复技术。恢复单元可以使用的另一健康状况度量为逻辑擦除块内的数据块的误码率(BER)。在某些实施例中,恢复单元可以使用逻辑擦除块内的数据块的平均BER。
图10示出根据一个实施例的现有技术正常关机事件过程1000。
在正常操作期间,主机装置将写入命令发送到存储器装置(步骤1002)。存储器装置在易失性存储器中维持地址映射表。在步骤1004中,当数据被写入到存储器时,用使每一数据块的逻辑块地址与那些数据块在存储器装置中的物理位置相关的条目更新地址映射表。周期性地,通过母版刷新操作将地址映射表从易失性存储器“刷新”到NAND快闪存储器(步骤1006)。
当主机装置向存储器装置指示其正关机,且指示存储器同样关机时,发生正常关机事件(步骤1008)。在存储器断电(步骤1012)之前将易失性存储器中的地址映射表保存到NAND快闪存储器(步骤1010)。
在正常关机事件之后,在下一启动时执行的初始化操作1018可能极其简单。简单地使存储器装置通电(步骤1014),且从NAND快闪存储器检索地址映射表(步骤1016)。
图11示出根据一个实施例的现有技术不正常关机事件过程1100。
步骤1102、步骤1104和步骤1106中展示的正常操作与图10中示出的操作相同。然而,在不正常关机事件中,未从主机装置接收到警告,且存储器意外断电(步骤1108)。结果,易失性存储器中的地址映射表未被刷新到NAND快闪存储器,且因此丢失。
在再次使存储器通电(步骤1110)时,这会带来长得多的初始化操作1116。当最后关机事件为不正常关机事件时,存储器装置必须在启动时执行日志记录操作(步骤1112)。在日志记录期间,必须审查在最后母版刷新后写入的所有DB以确定每一数据块的每一物理地址的逻辑块地址,且必须根据这些日志记录结果重建构日志表或地址映射表(步骤1114)。
此日志记录所需的时间取决于在发生最后母版刷新之后写入多少数据。在一些情况下,日志记录可能花费几秒。在准许有限存储器初始化时间的系统中,此日志记录可能会使存储器启动超出所需界限并带来系统错误或故障。
图12示出根据一个实施例的写入不正常关机事件和初始化过程1200。如在图10和图11中,随着正常操作进行,主机装置将写入命令发送到存储器装置以写入用于存储的数据(步骤1202)。将写入的数据块的逻辑块地址与物理地址之间的关系记录在易失性存储器中的地址映射表中(步骤1204)。周期性地将地址映射表刷新到存储器(步骤1206)。
通过本文中所公开的方法和设备,可以预定义或动态地设置或动态地调整N条字线(逻辑或物理)的刷新阈值。随着数据被写入到存储器(步骤1208),对于所写入的每N条字线,将那些N条字线的逻辑块地址到物理地址映射关系写入到下一字线上的索引中(步骤1210)。这在操作期间带来一定写入放大1222,这是由于额外数据被有规律地写入到存储器阵列。然而,在存储器意外断电,从而导致易失性存储器中的地址映射表丢失(步骤1212)的情况下,可能实现快得多的初始化操作1220。当再次使存储器装置通电(步骤1214)时,每N条字线地读取存储器阵列上的数据块的索引(步骤1216)。
在一个实施例中,恢复单元确定已发生不正常关机事件。粗略恢复电路将地址映射表从非易失性存储器读取到易失性存储器中。精细恢复电路在一个读取操作中从非易失性存储器读取一个或多个索引并加载索引信息。精细恢复电路接着可以更新地址映射表,以将自从地址映射表被存储在非易失性存储器中以来存储的数据块的索引中所含有(明确地或隐含地)的逻辑块地址与索引中所含有(明确地或隐含地)的物理地址相关联。恢复单元充分快地执行确定、读取步骤和更新步骤,使得初始化操作在所定义时序度量内完成。
以此方式,除了在最后母版刷新处记录的内容之外,可以基于感测到的索引重建易失性存储器中的地址映射表(步骤1218)。进行日志记录以审查个别DB的需要可以限于在写入索引之后所写入的相对较少数目个DB。
在本发明内,可以将不同的实体(其可以不同地称作“单元”、“电路”、其它组件等)描述或要求为“配置成”执行一个或多个任务或操作。配置成[执行一个或多个任务]的[实体]的此表述在本文中用于指结构(即,例如电子电路的物理物体)。更具体来说,此表述用于指示此结构布置成在操作期间执行一个或多个任务。即使结构当前未被操作,也可以将结构称为“配置成”执行一些任务。“配置成将信用分配到多个处理器核心的信用分配电路”意图涵盖例如具有在操作期间执行此功能的电路的集成电路,即使所论述的集成电路当前未被使用(例如,未连接到电力供应器)也如此。因此,描述或叙述为“配置成”执行一些任务的实体是指物理物体,例如装置、电路、存储可执行以实施任务的程序指令的存储器等。此短语在本文中并不用于指无形物体。
术语“配置成”并不意指“可配置成”。例如,将不认为未编程的FPGA“配置成”执行一些特定功能,尽管其在编程之后可以是“可配置成”执行所述功能的也如此。
在所附权利要求书中叙述结构“配置成”执行一个或多个任务明确地不意图为所述权利要求元素援引35U.S.C.§112(f)。因此,本申请案中并不另外包含“用于”[执行功能]“的构件”结构的权利要求书不应依据35U.S.C§112(f)解释。
如本文中所使用,术语“基于”用于描述影响确定的一个或多个因素。此术语并不排除额外因素会影响确定的可能性。也就是说,确定可能仅仅基于指定因素或基于指定因素以及其它未指定的因素。考虑短语“基于B确定A”。此短语指定B为用于确定A或影响A的确定的因素。此短语并不排除A的确定还可以基于例如C的某一其它因素。此短语还意图涵盖仅仅基于B确定A的实施例。如本文中所使用,短语“基于”与短语“至少部分地基于”同义。
如本文中所使用,短语“响应于”描述触发效果的一个或多个因素。此短语并不排除额外因素会影响或以其它方式触发效果的可能性。也就是说,效果可能仅仅响应于那些因素,或可能响应于指定因素以及其它未指定因素。考虑短语“响应于B而执行A”。此短语指定B为触发A的执行的因素。此短语并不排除也可以响应于例如C的某一其它因素而执行A。此短语还意图涵盖仅仅响应于B而执行A的实施例。
如本文中所使用,除非另外陈述,否则术语“第一”、“第二”等用作在其之前的名词标记,且并不暗示任何类型的排序(例如,空间、时间、逻辑等)。例如,在具有八个寄存器的寄存器组中,术语“第一寄存器”和“第二寄存器”可以用于指八个寄存器中的任两个,而非例如仅逻辑寄存器0和1。
当在权利要求书中使用时,术语“或”用作包含性的而非排他性的或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任一个,以及其任何组合。
Claims (20)
1.一种方法,其包括:
跨越存储器阵列的第一平面和第二平面将数据块写入到字线;
生成第一索引,所述第一索引使写入到存储器阵列的某些数据块的逻辑块地址与物理地址相关;
响应于写入到所述存储器阵列的所述数据块的数目满足刷新阈值,将所述第一索引存储到所述第一平面的后续字线;
生成第二索引,所述第二索引使写入到所述存储器阵列的某些数据块的逻辑块地址与物理地址相关;以及
响应于写入到所述存储器阵列的所述数据块的所述数目满足所述刷新阈值,将所述第二索引存储到所述第二平面的后续字线。
2.根据权利要求1所述的方法,其进一步包括通过同时读取所述第一索引和第二索引来恢复所述存储器阵列的地址映射表,使得初始化操作满足时序度量。
3.根据权利要求1所述的方法,其进一步包括周期性地将地址映射表存储在所述存储器阵列上。
4.根据权利要求1所述的方法,其中所述索引包括在地址映射表存储于所述存储器阵列上之后所写入的所述数据块的所述逻辑块地址与所述物理地址之间的关系。
5.根据权利要求1所述的方法,其中所述存储器阵列包括存储器裸片阵列,每一存储器裸片包括物理擦除块,所述物理擦除块包括所述字线,所述存储器裸片阵列包括逻辑擦除块,所述逻辑擦除块包括来自所述存储器裸片中的每一个的物理擦除块,其中所述刷新阈值包括填充所述逻辑擦除块的逻辑字线的数据块的数目,且所述后续字线包括邻近于最后被编程逻辑字线的逻辑字线。
6.根据权利要求1所述的方法,其进一步包括:
响应于确定最后关机事件为不正常关机事件,执行初始化操作,所述初始化操作包括:
将地址映射表从所述存储器阵列读取到易失性存储器中;
使用单个读取操作从所述存储器阵列读取一个或多个索引,所述一个或多个索引是在所述地址映射表被写入到所述存储器阵列之后存储的;以及
更新所述易失性存储器中的所述地址映射表,以将所述一个或多个索引的所述逻辑块地址与在所述地址映射表被写入到所述存储器阵列之后存储在所述存储器阵列上的所述数据块相关联。
7.根据权利要求1所述的方法,其进一步包括:
响应于所述存储器阵列的存储器单元包括单层级单元,将所述刷新阈值设置为第一值;以及
响应于所述存储器阵列的所述存储器单元包括多层级单元,将所述刷新阈值设置为第二值。
8.根据权利要求1所述的方法,其进一步包括基于所述存储器阵列的健康状况度量来配置所述刷新阈值。
9.根据权利要求8所述的方法,其中所述健康状况度量包括包含所述字线的物理擦除块已完成编程和擦除循环的频率。
10.根据权利要求1所述的方法,其中存储所述第一索引包括将所述第一索引写入到所述后续字线的预定义位置处的数据块,且其中存储所述第二索引包括将所述第二索引写入到所述后续字线的另一预定义位置处的数据块。
11.根据权利要求10所述的方法,响应于所述数据块的所述数目满足所述刷新阈值:
跨越所述存储器阵列的第一平面、第二平面和第三平面将第二数据块集合写入到字线;
生成第三索引,所述第三索引使所述存储器阵列上的所述第二数据块集合的数据块的所述逻辑块地址与所述第二数据块集合的数据块的所述物理地址相关;以及
响应于所述第二数据块集合的所述数据块的数目满足所述刷新阈值,将所述第三索引写入到所述后续字线。
12.根据权利要求11所述的方法,其中将所述第一索引、所述第二索引和所述第三索引写入成使得单个读取操作读取所述第一索引、所述第二索引和所述第三索引。
13.根据权利要求1所述的方法,其中所述刷新阈值包括刷新距离,所述刷新距离包括借助于索引跟踪的所述字线的所述数据块的数目。
14.一种方法,其包括:
确定发生不正常关机事件;
将地址映射表从存储器阵列读取到易失性存储器中;
在单个读取操作中读取一个或多个索引,每一索引包括在所述地址映射表最后写入到所述存储器阵列之后所写入的数据块的逻辑块地址以及所述数据块的对应物理地址;以及
更新所述易失性存储器中的所述地址映射表,以将所述一个或多个索引的所述逻辑块地址与在所述地址映射表被写入到所述存储器阵列之后所存储的所述数据块相关联,使得初始化操作满足时序度量。
15.一种设备,其包括:
存储器阵列,其包括多个存储器裸片,所述存储器裸片中的每一个包括一对平面,所述平面中的每一个包括物理擦除块,所述物理擦除块包括字线集合,所述字线中的每一个包括非易失性存储器单元;
逻辑擦除块,其包括来自所述存储器裸片中的每一个的物理擦除块;
粗略恢复电路,其配置成根据预定义时间表将地址映射表存储到所述存储器阵列;以及
精细恢复电路,其配置成响应于控制器将数据块存储到所述逻辑擦除块的预定数目个逻辑字线,将第一索引存储在后续逻辑字线的一对平面的第一平面上,并响应于所述控制器将数据块存储到另一预定数目个逻辑字线,将第二索引存储在所述一对平面的第二平面上,所述预定数目和所述另一预定数目配置成使得所述地址映射表在初始化操作期间的恢复满足时序度量。
16.根据权利要求15所述的设备,其中精细恢复电路配置成将所述第二索引存储在所述后续逻辑字线上。
17.根据权利要求15所述的设备,其中精细恢复电路配置成将所述第二索引存储在另一后续逻辑字线上。
18.根据权利要求15所述的设备,其进一步包括配置成管理第一逻辑擦除块的第一刷新距离和第二逻辑擦除块的第二刷新距离的恢复单元,所述恢复单元配置成基于所述第一逻辑擦除块和所述第二逻辑擦除块中的每一个的健康状况度量,确定所述第一刷新距离和所述第二刷新距离。
19.根据权利要求18所述的设备,其中响应于所述第二逻辑擦除块的所述健康状况度量比所述第一逻辑擦除块的所述健康状况度量差,所述第一刷新距离大于所述第二刷新距离。
20.根据权利要求18所述的设备,其中所述健康状况度量包括所述第一逻辑擦除块和所述第二逻辑擦除块中的每一个已完成编程和擦除循环的频率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/453,146 US10877900B1 (en) | 2019-06-26 | 2019-06-26 | Enabling faster and regulated device initialization times |
US16/453,146 | 2019-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148525A CN112148525A (zh) | 2020-12-29 |
CN112148525B true CN112148525B (zh) | 2024-07-19 |
Family
ID=73891800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010212101.0A Active CN112148525B (zh) | 2019-06-26 | 2020-03-24 | 实现更快且经过调节的装置初始化时间 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10877900B1 (zh) |
CN (1) | CN112148525B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113299333A (zh) | 2020-02-21 | 2021-08-24 | 硅存储技术股份有限公司 | 由闪存单元构成的eeprom仿真器中的损耗均衡 |
US11262933B2 (en) * | 2020-07-01 | 2022-03-01 | EMC IP Holding Company LLC | Sharing memory resources between asynchronous replication workloads |
US11733931B1 (en) * | 2020-07-13 | 2023-08-22 | Meta Platforms, Inc. | Software defined hybrid flash storage memory controller |
US11527300B2 (en) | 2020-08-26 | 2022-12-13 | Western Digital Technologies, Inc. | Level dependent error correction code protection in multi-level non-volatile memory |
US11436083B2 (en) | 2020-09-04 | 2022-09-06 | Western Digital Technologies, Inc. | Data address management in non-volatile memory |
US11836074B2 (en) * | 2020-10-07 | 2023-12-05 | Micron Technology, Inc. | Multiple flash translation layers at a memory device |
KR20220133003A (ko) * | 2021-03-24 | 2022-10-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11733925B2 (en) * | 2021-08-30 | 2023-08-22 | Micron Technology, Inc. | Enabling multiple data capacity modes at a memory sub-system |
US11842062B2 (en) * | 2022-02-09 | 2023-12-12 | Western Digital Technologies, Inc. | Method of handling irregular MetaBlock wear leveling and UGSD boot time improvement |
US20230359766A1 (en) * | 2022-05-04 | 2023-11-09 | Western Digital Technologies, Inc. | Data Storage Device and Method for Token Generation and Parameter Anonymization |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598386A (zh) * | 2013-10-31 | 2015-05-06 | Lsi公司 | 通过追踪和利用二级映射索引重复利用固态驱动器块 |
US9384795B1 (en) * | 2015-04-29 | 2016-07-05 | Qualcomm Incorporated | Fully valid-gated read and write for low power array |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5222047A (en) | 1987-05-15 | 1993-06-22 | Mitsubishi Denki Kabushiki Kaisha | Method and apparatus for driving word line in block access memory |
US5488694A (en) | 1992-08-28 | 1996-01-30 | Maspar Computer Company | Broadcasting headers to configure physical devices interfacing a data bus with a logical assignment and to effect block data transfers between the configured logical devices |
US5828623A (en) | 1996-02-23 | 1998-10-27 | Integrated Device Technology, Inc. | Parallel write logic for multi-port memory arrays |
JP4173642B2 (ja) | 1999-02-22 | 2008-10-29 | 株式会社ルネサステクノロジ | メモリカードのデータ書き込み方法 |
US6978384B1 (en) * | 2000-09-19 | 2005-12-20 | Verizon Corp. Services Group, Inc. | Method and apparatus for sequence number checking |
US6948026B2 (en) | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
JP4572859B2 (ja) * | 2006-03-31 | 2010-11-04 | 日本電気株式会社 | キャッシュメモリ制御装置、方法及びプログラム並びにディスクアレイ装置 |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US7791952B2 (en) * | 2007-01-30 | 2010-09-07 | Micron Technology, Inc. | Memory device architectures and operation |
KR100837282B1 (ko) * | 2007-06-14 | 2008-06-12 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템,그것의 프로그램 방법 및 읽기 방법 |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
JP5161696B2 (ja) * | 2008-08-07 | 2013-03-13 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム |
KR101028929B1 (ko) | 2008-12-31 | 2011-04-12 | 성균관대학교산학협력단 | 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치 |
US8489801B2 (en) | 2009-03-04 | 2013-07-16 | Henry F. Huang | Non-volatile memory with hybrid index tag array |
US8874825B2 (en) | 2009-06-30 | 2014-10-28 | Sandisk Technologies Inc. | Storage device and method using parameters based on physical memory block location |
US8473690B1 (en) | 2009-10-30 | 2013-06-25 | Netapp, Inc. | Using logical block addresses with generation numbers as data fingerprints to provide cache coherency |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8239619B2 (en) | 2010-07-09 | 2012-08-07 | Macronix International Co., Ltd. | Method and apparatus for high-speed byte-access in block-based flash memory |
US9424930B2 (en) | 2010-09-15 | 2016-08-23 | Sandisk Technologies Llc | Apparatus, system, and method for non-volatile storage element programming |
EP2652623B1 (en) | 2010-12-13 | 2018-08-01 | SanDisk Technologies LLC | Apparatus, system, and method for auto-commit memory |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US8379454B2 (en) | 2011-05-05 | 2013-02-19 | Sandisk Technologies Inc. | Detection of broken word-lines in memory arrays |
US9645758B2 (en) | 2011-07-22 | 2017-05-09 | Sandisk Technologies Llc | Apparatus, system, and method for indexing data of an append-only, log-based structure |
US8775901B2 (en) | 2011-07-28 | 2014-07-08 | SanDisk Technologies, Inc. | Data recovery for defective word lines during programming of non-volatile memory arrays |
US8730722B2 (en) | 2012-03-02 | 2014-05-20 | Sandisk Technologies Inc. | Saving of data in cases of word-line to word-line short in memory arrays |
US9218279B2 (en) | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9292434B2 (en) * | 2013-08-22 | 2016-03-22 | CNEXLABS, Inc. | Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device |
US9208878B2 (en) * | 2014-03-25 | 2015-12-08 | International Business Machines Corporation | Non-volatile memory based on retention modulation |
KR20180080589A (ko) * | 2017-01-04 | 2018-07-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI639917B (zh) * | 2017-04-25 | 2018-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及映射表重建方法 |
KR102395538B1 (ko) * | 2017-04-28 | 2022-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10635331B2 (en) * | 2017-07-05 | 2020-04-28 | Western Digital Technologies, Inc. | Distribution of logical-to-physical address entries across bank groups |
US10884947B2 (en) * | 2017-11-17 | 2021-01-05 | SK Hynix Inc. | Methods and memory systems for address mapping |
-
2019
- 2019-06-26 US US16/453,146 patent/US10877900B1/en active Active
-
2020
- 2020-03-24 CN CN202010212101.0A patent/CN112148525B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598386A (zh) * | 2013-10-31 | 2015-05-06 | Lsi公司 | 通过追踪和利用二级映射索引重复利用固态驱动器块 |
US9384795B1 (en) * | 2015-04-29 | 2016-07-05 | Qualcomm Incorporated | Fully valid-gated read and write for low power array |
Also Published As
Publication number | Publication date |
---|---|
CN112148525A (zh) | 2020-12-29 |
US10877900B1 (en) | 2020-12-29 |
US20200409860A1 (en) | 2020-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148525B (zh) | 实现更快且经过调节的装置初始化时间 | |
CN111149096B (zh) | 借助于主机内存缓冲区范围的自适应装置服务质量 | |
US9552290B2 (en) | Partial R-block recycling | |
KR102533207B1 (ko) | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 | |
CN113448497A (zh) | 子块的动态分配 | |
CN113921063A (zh) | 热区标签和热区离群值检测 | |
US11714722B2 (en) | Power loss recovery for memory devices | |
US11231883B1 (en) | Detecting last page written in multi-plane non-volatile memory | |
US11256620B1 (en) | Cache management based on memory device over-provisioning | |
US10877853B2 (en) | Data storage device and operation method optimized for recovery performance, and storage system having the same | |
US11567777B2 (en) | Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array | |
CN113946283B (zh) | 存储器装置的分区命名空间中的部分区存储器单元处置 | |
CN113076218B (zh) | Nvm芯片读数据错误快速处理方法及其控制器 | |
US12086062B2 (en) | Managing power loss in a memory device | |
US20190361608A1 (en) | Data storage device and operation method for recovery, and storage system having the same | |
KR20200121068A (ko) | 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러 | |
US20230420059A1 (en) | Data Storage Device and Method for Predicting Future Read Thresholds | |
US20230402112A1 (en) | Storage System and Method for Inference of Read Thresholds Based on Memory Parameters and Conditions | |
US20230402072A1 (en) | Storage System and Method for Circuit-Bounded-Array-Based Time and Temperature Tag Management and Inference of Read Thresholds | |
WO2024097494A1 (en) | Storage system and method for circuit-bounded-array-based time and temperature tag management and inference of read thresholds | |
KR20230114671A (ko) | 공간 증명 블록체인 시스템들에서의 저장 디바이스 스로틀링 | |
CN118215905A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240829 Address after: California, USA Patentee after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |