依序编程的存储器子系统中的异步断电处置的制作方法

文档序号:32484253发布日期:2022-12-10 00:26阅读:35来源:国知局
依序编程的存储器子系统中的异步断电处置的制作方法

1.本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及依序编程的存储器子系统中的异步断电处置。


背景技术:

2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
3.根据下文提供的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。
4.图1a说明根据实施例的包含存储器子系统的实例计算系统。
5.图1b说明根据一实施例的图1a的存储器子系统的额外细节。
6.图2是根据各种实施例的说明被配置成支持基于区的映射的数据结构的实例的框图。
7.图3是根据一实施例的在高频率更新表(hfut)内进行索引的映射数据结构的框图。
8.图4是根据各种实施例的采用日记和高频率更新表以减小映射数据结构的大小并且允许响应于异步断电(apl)进行清空的映射数据结构的框图。
9.图5是根据一实施例的用于高效处置依序编程的存储器子系统内的apl的方法的流程图。
10.图6是根据另一实施例的用于高效处置依序编程的存储器子系统内的apl的方法的流程图。
11.图7是根据一实施例的用于在从apl重启之后恢复映射数据结构的方法的流程图。
12.图8是根据一实施例的用于在从apl重启之后验证经恢复映射数据结构的方法的流程图。
13.图9是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
14.本公开的方面针对于依序编程的存储器子系统中的异步断电处置。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1a描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
15.存储器装置可以为非易失性存储器装置。非易失性存储器装置的一个实例为与非
(nand)存储器装置。下文结合图1a描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。封装中的裸片可指配给一或多个通道以用于与存储器子系统控制器通信。每一裸片可由一或多个平面组成。平面可分组成逻辑单元(lun)。对于一些类型的非易失性存储器装置(例如,nand装置),每一平面由物理块集组成。每一块由页集组成。每一页由存储器单元(“单元”)集组成。单元是存储信息的电子电路。在下文中,块是指用于存储数据的存储器装置的单元,且可包含存储器单元群组、字线群组、字线或单独存储器单元。
16.可由存储器子系统执行数据操作。数据操作可为主机发起的操作。举例来说,主机系统可在存储器子系统上发起数据操作(例如写入、读取、擦除等)。主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便在存储器子系统处的存储器装置中存储数据且从存储器子系统的存储器装置读取数据。
17.如由主机请求指定的待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(lba)、名字空间),其为主机系统与主机数据相关联的位置。逻辑地址信息(例如,lba、名字空间)可为主机数据的元数据的部分。元数据还可包含错误处置数据(例如,ecc码字、奇偶检验码)、数据版本(例如,用以区分所写入数据的新旧)、有效位图(其lba或逻辑传送单元含有有效数据)等等。为简单起见,在下文提及“数据”的情况下,此类数据可理解为至少指代主机数据,但也可指代例如媒体管理数据和/或系统数据等其它数据。
18.存储器装置的单元(或简称为“媒体”)可从裸片(上部层级)到平面、到块、到页(下部层级)以阶层式方式组织。块集(也被称作块条带)可为跨越不同裸片的平面排列以使得块分组在一起以用于数据存储的块集。对块集的写入允许更多的主机数据可跨多个裸片同时被并行写入和读取。一或多个块集的多个块可识别为数据群组。
19.在各种实施例中,主机文件系统可通过局部性将主机数据分组且将主机数据依序写入到存储器子系统。文件系统可接着将不同局部性的数据作为并行依序流写入到存储器子系统,每一流具有其自身的局部性,例如其中不同主机应用可各自写入到其自身的流。“局部性”可以指时间局部性或空间局部性。存储器子系统控制器(例如,包含处理装置)通常在主机数据的部分(例如,4kb)中随机地对媒体写入,且接着使用元数据将lba空间映射到媒体的物理地址空间。然而,当以数据局部性分组写入较大群组的主机数据(例如,100mb或更大)时,可跨越多个裸片将“数据群组”作为较大组块依序写入到一个或多个块集。为了简化此类数据群组的映射,可在lba空间内将区(例如,与数据群组相关联的逻辑地址空间)的lba依序进行排序且映射到物理地址空间内的依序进行排序的物理地址。可一次性写入(例如,编程)数据区且相应地映射所述区的存储器子系统在区名称空间(zns)中操作,例如其中逻辑地址区被命名/识别为群组。有利的是,使用zns用于逻辑到物理(ltp)地址映射极大地减少用以跟踪ltp映射的元数据的量。
20.当存储器装置可操作且意外断电时,发生异步断电(apl)。存储器装置被设计成处置apl事件以便不会丢失存储于易失性存储器中的数据。常见技术包含拍摄存储于易失性存储器中的数据结构的快照,以日记形式记录元数据以捕获数据结构的最近改变,以及在检测到apl之后即刻清空日记以便可重建数据结构。以日记形式进行记录的概念是将元数据缓冲于可以用于重建较大数据结构的较小数据结构中。清空是在断电之后即刻将数据写
入出到非易失性存储器(nvm)以保存数据的动作。
21.常规存储器装置以不同方式处置apl,以力图平衡apl的不同特性,例如清空到nvm的数据量、保留易失性存储器数据所需使用的电力电容器的数目、启动和apl修复时间,以及备份数据(例如,拍摄快照和清空数据)涉及的写入放大。传统的存储器装置依赖于获得逻辑到物理(ltp)映射数据结构的快照并且不断清空诸多日记以确保在apl之后数据是一致的。这包含使用例如扫描开放块集(例如,块条带)和修复开放块集的技术。
22.给定依序写入到nvm装置的性质,可以同时简化apl设计和技术的方式简化基于zns的存储器子系统中的映射以确保一致地恢复并且视需要修复数据结构。举例来说,主机写入模式在区内是依序的并且使用原子写入单元以保证依序写入经分组数据。另外,电力电容器的使用可允许取决于部署的电力电容器的数目,在发生apl之后清空一定量的主机数据。另外,映射数据结构以更大粒度存储经依序写入区带的依序映射以使得映射数据结构可更小。
23.即使有与zns相关的优点,但zns客户正在请求的作用中区的数目也会使apl设计进一步复杂化。作用中区是开放的并且具有连续递增的写入指针,而区的剩余部分(例如,非作用中区)具有不移动的写入指针。这使得处置apl在使用传统技术(例如快照、日记记录和扫描)来确定多个作用中区的最后写入位置时特别具有挑战性。另外,快照和日记连续清空会增大用于当前未被主动修改的数据组块的写入放大。
24.本公开的方面通过采用高频率更新表(hfut)以及日记数据结构一致地跟踪指示存储于易失性存储器中的映射数据结构的改变的元数据来解决以上和其它缺陷。hfut以及可能地日记数据结构可存储于紧密耦合存储器(tcm)中,且因此可被快速更新,进而提高性能。hfut可用以跟踪写入指针且任选地也跟踪与正被写入的作用中区的写入指针对应的索引,而不考虑是在lba空间还是在物理地址空间中。因为仅针对作用中区中的写入指针更新hfut,所以使得hfut小于原本维持映射数据结构中的所有写入指针所需的额外存储空间。因此,hfut的使用减小映射数据结构的大小,进而使响应于apl事件进行的映射数据结构清空是合理的并且使其在电力电容器和写入放大方面的影响更小。
25.举例来说,在一个实施例中,映射数据结构是将lba空间的区映射到区状态并映射到lba空间内的区索引的区映射数据结构。在此实施例中,写入指针可对应于区写入指针提交值和区写入指针完成值。在此实施例中,hfut可为存储每个作用中区的区写入指针提交值和区写入指针完成值的作用中区表。
26.在另一实施例中,映射数据结构是将区识别符映射到块集识别符的区到块集(ztbs)数据结构。在此实施例中,写入指针是与nvm装置中与在作用中区内写入相对应的位置相关的值,且因此指向物理地址空间。hfut可为存储nvm装置的与写入指针对应的最后经写入页(lwp)值的写入跟踪器表(wtt)。
27.在这些实施例中,在映射数据结构和hfut之间发生转变时清空作用中区的状态改变和指向作用中区内的写入指针的状态改变。这些改变在映射数据结构和高频率更新表之间的清空转变时引起日记数据结构内的更新。响应于apl事件,清空日记数据结构。如所论述,还可清空hfut和映射数据结构。响应于在apl事件之后通电,存储器子系统可通过存取日记数据结构和被映射数据结构索引的hfut,执行映射数据结构的恢复和重建。下文论述用于执行这类恢复和重建的不同方法和算法。
28.本公开的优点包含但不限于至少三个类别的益处,包含运行时间益处、准备时间益处(例如,在通电之后可再次操作的时间)以及在响应于apl事件被清空的数据量方面的益处。在运行时间益处方面,不需要连续清空日记,也不需要映射数据结构(例如,基表)的快照,原因是不会频繁地更新映射数据结构中的数据。在准备时间益处方面,重建映射数据结构不需要进行扫描,日记重放时间减到最小,且可通过数据结构(包含hfut)执行写入错误检测。在清空的数据量方面,有可能清空索引到hfut中的整个映射数据结构。此外,在响应于apl事件被清空的数据量整体减小的情况下,写入放大和对电力电容器的需求降到最低。所属领域的技术人员将明白在下文论述的存储器子系统内的存储器分配和apl设计处置的其它优点。
29.图1a说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。每个存储器装置130或140可以是一或多个存储器组件。
30.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so-dimm)以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
31.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
32.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1a说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到
……”
或“与
……
耦合”通常是指组件或装置之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件或装置),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
33.主机系统120可包括处理器芯片组和由所述处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器),以及存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用例如存储器子系统110将数据写入到存储器子系统110并从存储器子系统110读取数据。
34.主机系统120可经由可在系统总线上通信的物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)、开放nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取存储器组件(例如,存储器装置130)。物理主机接
口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1a说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
35.存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
36.非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包括例如二维nand(2d nand)和三维nand(3d nand)。
37.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)可存储一个位每单元。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)和四层级单元(qlc)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
38.虽然描述了非易失性存储器组件,例如nand型快闪存储器(例如,2d nand、3dnand)和3d交叉点非易失性存储器单元阵列,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、“或非”(nor)快闪存储器和电可擦除可编程只读存储器(eeprom)。
39.存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以进行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
40.存储器子系统控制器115可包含处理器117(例如,处理装置),其被配置成执行存储在本地存储器119中的指令。在所示出的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流和例程的指令,包含处理存储器子系统110与主机系统120之间的通信。
41.在一些实施例中,本地存储器119可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然在图1a中的实例
存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是替代地可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
42.通常,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令来实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ecc)操作、加密操作、高速缓存操作,及与存储器装置130相关联的逻辑地址(如,逻辑块地址(lba)、名称空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
43.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
44.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与同一存储器装置封装或存储器裸片内用于存储器管理的本地控制器(例如,本地媒体控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
45.在一些实施例中,控制器115包含错误校正码(ecc)编码器/解码器111。ecc编码器/解码器111可对写入存储器装置130的数据执行ecc编码,且对从存储器装置130读取的数据执行ecc解码。可执行ecc解码以对ecc码字进行解码以校正原始读取数据中的错误,且在许多情况下还报告原始读取数据中的位错误的数目。
46.图1b示出根据一实施例的图1a的存储器子系统110的额外细节。在实施例中,存储器子系统110还包含不同类型的易失性存储器118以加速存储器管理并促进对存储于存储器装置130和140中的主机数据的存取。在各种实施例中,易失性存储器包含存储器装置140a、紧密耦合存储器(tcm)160和易失性存储器装置125。在一些实施例中,控制器115在处理器117内包含处理装置的多个部分(或多个单独的处理装置),包含命令产生处理器112、转译处理器113和命令执行处理器114。
47.在各种实施例中,存储器装置140a是易失性存储器,例如dram或其它主存储器,其存储区描述符数据结构121和块集映射数据结构123,这是因为这些数据结构通常太大而无法存储在控制器115上。处理器117可另外包含tcm 160,其为可用作高速缓存器并位于处理器117的裸片上的易失性存储器。tcm 160可存储每个高频率更新表(hfut)162并且还存储每个日记数据结构166。控制器115可另外包含易失性存储器装置125,例如静态随机存取存储器(sram)装置,其为位于控制器115上的单独存储器裸片。易失性存储器装置125可存储逻辑到物理(ltp)映射数据结构,例如映射数据结构126,并且任选地在一或多个日记数据结构166在特定设计中太大而无法存储于tcm 160中的情况下还存储所述一或多个日记数
据结构166。在各种实施例中,处理器117可基于与对应映射数据结构126相关地存储的识别符,确定高频率更新表162在易失性存储器中的位置。参考图2更详细地论述一些映射数据结构126,包含块集映射数据结构123。
48.此外,如先前参考一或多个存储器装置130、140论述,多个裸片(例如,裸片a和裸片b)的物理地址空间可通过平面、块和页按阶层式组织。如此,举例来说,裸片a和裸片b中的每一个可包含平面a和平面b,且平面a和平面b中的每一个可包含块a和块b。块集(或块条带)可限定为跨越存储器装置的多个裸片的平面排列的块的群组。如所说明,块集144经排列为包含裸片a的平面a的块a、裸片b的平面b的块a等等,以此类推到裸片c的平面c以及另外的裸片的平面的块(如果存在且在线)。
49.在各种实施例中,转译处理器113(和/或耦合到转译处理器113的控制器115的动态数据放置器)动态地确定媒体布局以在存储器装置130、140的媒体单元或存储器组件(也被称作“ic裸片”或“媒体”)中放置与逻辑地址相关联的数据。媒体布局指定在存储器子系统110中(例如,从主机系统120)接收的命令中使用的逻辑地址与存储器子系统110的媒体中的物理存储器位置之间的映射。
50.转译处理器113可例如基于在存储器子系统110中的输入/输出调度时媒体进行写入、编程、存储、提交数据的可用性而确定用于lba空间的逻辑地址的一部分的媒体布局以用于在与存储器装置130或140的媒体的物理地址相关联的逻辑地址处放置数据。当ic裸片(包含ic裸片内的媒体单元)可用于提交/编程数据时,调度写入命令用于在存储器子系统110中执行;且转译处理器113产生用于写入命令的媒体布局的一部分且映射在写入命令中使用的逻辑地址以映射到ic裸片内的存储器位置。写入命令的执行致使存储器子系统110将与写入命令相关联的数据提交/编程到ic裸片中。
51.取决于跨依序映射方案的媒体和/或应用的ic裸片的可用性,控制器115可依序写入数据群组(例如,提供于依序数据流局部性中)以一次填充一个ic裸片,或可一次并行地依序写入到多个ic裸片,例如以同时填充媒体的ic裸片。写入在lba空间的区内的映射也可依序进行以简化用于执行映射的计算,如将参考映射数据结构126更详细地论述。当存在多个ic裸片可用时,在来自多个写入流的命令中使用的逻辑地址(例如,lba)可通过媒体布局的动态地产生的部分分别映射到所述多个ic裸片,使得在来自多个写入流的命令的执行中不存在媒体存取冲突。
52.在各种实施例中,命令产生处理器112执行命令处理,包含处理从主机系统120接收的存储器命令,并且还基于分别从主机系统120或另一请求代理接收的读取和写入请求,产生读取命令和写入命令。转译处理器113使用映射数据结构126将lba(或依序lba群组,被称为逻辑传送单元(ltu))转译到物理地址空间的物理地址。此转译的产生有助于通过命令产生处理器112向命令执行处理器114产生命令,所述命令执行处理器114通过存取存储器装置130和140的媒体来执行命令。所述命令可包含命令标签,还被称作系统标签(例如,systag),其包含ltu识别符(与ltu相关联)和识别其中如同在高速缓存器中一般存储与转译单元相关联的数据的缓冲器(例如,存储器装置140a中的插槽)的缓冲器地址。命令执行处理器114可从存储器装置130或140检索与命令标签相关联的数据并将所述数据存储于所识别的缓冲器中。
53.以此方式,转译处理器113充当命令产生处理器112和命令执行处理器114之间的
中介,其中命令执行处理器114需要知道物理层的实现命令的物理地址。在本公开中,与写入到作用中区相关联的元数据(例如写入指针和/或对应索引信息)可在hfut 162内进行更新并以日记形式记录于日记数据结构166内以促进对apl事件的响应。
54.图2是根据各种实施例的说明被配置成支持基于区的映射的数据结构的实例的框图。控制器115可将图2中所说明的映射数据结构126中的一些存储于tcm 160中、易失性存储器装置125中和/或存储器装置140a中,如参考图1b所提及。控制器115也可使用图2的数据结构配置或实施媒体布局(例如,其中区的数据群组将位于物理地址空间内的布局)。在图2中,区映射数据结构201被配置成提供例如用于zns操作的lba空间之类的命名空间中的区的媒体布局信息。区映射数据结构201可具有多个条目。区映射数据结构201中的每个区映射条目识别关于区的信息,例如区的起始lba地址211、区的块集识别符213、区的区光标值215、区的状态217等。
55.主机系统120在区起始lba地址211的lba处开始在区中写入数据。主机系统120在lba空间中依序将数据写入于区中。在一定量的数据已写入到区中之后,由区光标值215识别用于写入后续数据的当前起始lba地址。针对区的每一写入命令将区光标值215移动到用于区的下一写入命令的新起始lba地址。状态217可具有指示区为空、满、隐式地开放、显式地开放、关闭等的值,以跟踪写入所述区的进程。
56.在图2中,逻辑到物理(ltp)块映射数据结构203被配置成促进lba地址到媒体中的物理地址的转译。ltp块映射数据结构203可具有多个条目。lba可用作或转换为用于ltp块映射数据结构203中的条目的索引(例如,ltu识别符)。索引可用于查找用于lba的条目。ltp块映射数据结构203中的每一条目针对lba识别媒体中的存储器块的物理地址。举例来说,媒体中的存储器块的物理地址可包含裸片识别符233、块识别符235、页映射条目识别符237、页识别符251等等。裸片识别符233识别存储器子系统110的存储器装置130、140中的特定ic裸片(例如,裸片a或裸片b)。块识别符235识别使用裸片识别符233识别的ic裸片内的特定存储器块(例如,nand快闪存储器)。页映射条目识别符237识别页映射数据结构205中的条目。
57.页映射数据结构205可具有多个条目。页映射205中的每一条目可包含识别存储器单元块(例如,nand存储器单元)内的存储器单元页的页识别符251。举例来说,页识别符251可包含页的字线编号和nand存储器单元块中的页的子块编号。此外,页的条目可包含页的编程模式253。举例来说,页可在slc模式、mlc模式、tlc模式或qlc模式下编程。当在slc模式下配置时,页中的每个存储器单元将存储一个数据位。当在mlc模式下配置时,页中的每个存储器单元将存储两个数据位。当在tlc模式下配置时,页中的每个存储器单元将存储三个数据位。当在qlc模式下配置时,页中的每个存储器单元将存储四个数据位。集成电路裸片中的不同页可具有用于数据编程的不同模式。
58.在图2中,块集映射数据结构123存储区的动态媒体布局的数据控制方面。在一个实施例中可以是表的块集映射数据结构123可具有多个条目。块集数据结构123中的每一块集条目识别其中存储有区的数据的集成电路裸片(例如,裸片a和裸片b)的数目/计数271。对于用于区的集成电路裸片中的每一个,块集数据结构123的块集条目具有裸片识别符273、块识别符275、页映射条目识别符277、页映射偏移值等等。
59.裸片识别符273识别存储器子系统110的媒体中的特定ic裸片(例如,裸片a或裸片
b),区的ic裸片后续数据可存储于其上。块识别符275识别使用裸片识别符273识别的ic裸片内的特定存储器块(例如,nand快闪存储器或其它媒体),区的后续数据可存储于所述块中。页映射条目识别符277识别页映射数据结构205中的页映射条目,其识别可用于存储区的后续数据的页。
60.例如,存储器子系统110接收多个写入命令流。在一实施例中,所述多个流中的每一相应流被配置成在一个实施例中依序地在逻辑地址空间中写入数据;且在另一实施例中,所述多个流中的流被配置成在一个实施例中伪依序地或随机地在逻辑地址空间中写入数据。每个写入流包含经标注以将数据集一起作为群组进行写入、微调、重写的命令集。在所述群组中,数据可依序、随机或伪依序在逻辑空间中写入。优选地,群组中的数据写入到擦除块集中,其中擦除块集中的存储器单元存储用于流的数据,但不存储来自其它流的数据。擦除块集可被擦除以移除所述流的数据,而不擦除其它流的数据。
61.例如,准许写入流中的每一个在存储器子系统110的存储器装置130、140的媒体中分配的命名空间中的区中的lba处依序写入,但禁止其在lba(或逻辑地址)空间中无序地写入数据。存储器子系统110的转译处理器113识别存储器子系统110中可用于同时写入数据的多个媒体单元。
62.转译处理器113可从多个流选择第一命令以用于在可用于写入数据的多个媒体单元中同时执行。转译处理器113可动态地响应于第一命令经选择用于在多个媒体单元中同时执行而产生且存储媒体布局的一部分,其从逻辑地址空间中由第一命令识别的逻辑地址映射到多个存储器单元中的存储器单元的物理地址。
63.命令执行处理器124可通过根据物理地址将数据存储到存储器单元中来同时执行第一命令。举例来说,在调度用于执行的第一命令时,在存储器子系统110的媒体的存储器单元的子集中第二命令的执行可在进行中。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在调度第一命令并且确定第一命令中使用的逻辑地址的媒体布局的一部分之后,第一命令可以在多个媒体单元中并发执行和/或与存储器子系统110的剩余媒体单元中的第二命令的执行进度并发执行。
64.举例来说,在识别可用于执行接下来的命令的多个存储器单元(例如,ic裸片)之后,转译处理器113可从块集映射数据结构123识别可以用于存储接下来的命令的数据的物理地址。物理地址可用于更新ltp块映射数据结构203中的针对接下来的命令中使用的lba地址231的相应条目。
65.举例来说,当ic裸片可用于写入数据时,转译处理器113可确定可写入/编程到ic裸片中的存储器单元中的区的命令。依据块集映射数据结构123,转译处理器113定位区的条目,定位与集成电路裸片的识别符273相关联的块识别符275和页映射条目识别符277,且使用裸片识别符273、块识别符275和页映射条目识别符277来更新ltp块映射数据结构203中的针对区的命令中使用的lba的条目的相应字段。
66.图3是根据一实施例的在高频率更新表(hfut)362内进行索引的映射数据结构326的框图。映射数据结构326(例如基表)可为映射数据结构126中的一个,且hfut 362可为图1b中的hfut 162中的一个。在各种实施例中,映射数据结构326包含多个条目,每一条目包含与lba(或ltu)和nvm装置的物理地址空间的物理地址之间的逻辑到物理转译的一些方面相关联的条目数据。每一条目还可包含指到hfut 362中的经编索引条目中的索引值(idx),
使得hfut条目内的元数据与映射数据结构326的条目相关联。举例来说索引值可为基于散列的值。在一些实施例中,映射数据结构包含先进先出(fifo)缓冲器332以维持那些经释放以便指配给hfut 362的表索引值。
67.在各种实施例中,hfut 362被设计成存储(例如,缓冲)频繁经更新数据,例如用于映射到较小区的作用中区的写入指针(wp),可在致使电源故障的apl事件期间清空所述较小区。举例来说,为了维持每条目4字节下2048个开放光标值,hfut 362相当于8k元数据的大小。这比将写入指针元数据包含到单个大表(例如映射数据结构326)中的情况要小得多。计算展示映射数据结构326的几乎一半大小的存储器节约,例如所述几乎一半的大小可为区映射数据结构201或区到块集数据结构(图4中的409)。这可实现是因为在区或块集关闭时不更新例如写入指针或最后经写入页(lwp)等项。换句话说,无需在hfut 362内更新静态元数据值,这会使表小得多。作为一个实例,在16万亿字节驱动器中具有30k区的系统中,存储器节约是显著的。在任何时间主动写入此驱动器的仅约百分之七。
68.为了防止除了在apl事件之后的异常恢复工作中的扫描以外的扫描,使用日记数据结构录入映射数据结构326和hfut 362之间的清空转变,将参考图4进行更详细地论述。这通过以下操作完成:将索引值(idx)指配给映射数据结构326中的条目,使得还可对照hfut 362的条目中的元数据索引日记条目。与录入和以日记形式记录与作用中区有关的小得多的数据的益处相比,执行此索引对性能的影响很小。
69.图4是根据各种实施例的采用日记和高频率更新表以减小映射数据结构126的大小并且允许响应于异步断电(apl)进行清空的映射数据结构126的框图。举例来说,映射数据结构126可包含受命令产生处理器112管理的区描述符数据结构121和区映射数据结构201。区映射日记数据结构166a可为基于对区描述符数据结构121的更新并且基于区映射数据结构201和作用中区表162a之间的清空转变的日记条目,所述作用中区表162a是与区映射数据结构201相关联的高频率更新表(hfut)。处理器117可基于与区映射数据结构201相关地存储于易失性存储器装置125中的识别符来确定高频率更新表162(例如作用中区表162a)在tcm 160中的位置。在一个实施例中,仅响应于apl事件清空区映射日记数据结构201。可在apl事件期间且因此响应于apl事件通过将使用电力电容器保留的数据写入到存储器装置130和140的非易失性存储器(nvm)装置来进行清空。
70.在一个实施例中,区描述符数据结构121是通过区id(例如,区id的散列值)进行散列的平面索引映射表,其中区id是比ltu识别符大得多的值。可例如通过按区大小值划分ltu识别符的值,从ltu识别符和区大小值计算区id。术语“平面”是参考二维的散列索引表,例如树或链表。区描述符数据结构121可存储由主机系统120发送到控制器115的区描述符数据。
71.在一个实施例中,区映射数据结构201是依据散列区id(例如,比ltu识别符的值大得多的值)编索引的平面索引映射表。区映射数据结构201中的每一条目可含有元数据,包含lba空间内的区状态和区索引,在一个实施例中,所述元数据包含区写入指针提交值和区写入指针完成值。这些值可同时且在写入到由区id识别的区的操作完成后写入。区映射数据结构201可为足够小的,尤其是在使用作用中区表162a的情况下,以便在区映射数据结构201的数据不频繁改变的情况下在apl事件期间被清空。
72.在各种实施例中,作用中区表162a存储开放区的区写入指针提交值和区写入指针
完成值。区映射日记数据结构166a因此可记录(例如,以日记形式记录)在区映射数据结构201和作用中区表162a之间这些值的清空转变。以此方式,在作用中区表162a中针对处于作用中状态的区来更新每个写入。在apl事件之后,作用中区表162a即刻被清空且因此其信息(在当前写入操作上)在写入操作完成之前无需以日志形式记录于区映射日记数据结构166a中。此设计允许可管理大小的日记以使得区映射日记数据结构166a可仅在电源失效时被清空而非连续被清空。
73.在一些实施例中,在写入到区的操作完成之后,控制器115可即刻另外在对区的写入请求下,用区识别符和区索引之间的映射填入区映射数据结构201的条目。控制器115可另外在区映射数据结构201中,解除激活区以指示区关闭。
74.控制器115可另外执行重启之后的恢复和重建,包含将日记数据结构(例如,区映射日记166a)从nvm装置读回到易失性存储器(例如tcm 160)中。控制器115可另外将高频率更新表(例如,作用中区表162a)从nvm装置读回到易失性存储器(例如tcm 160)中。控制器115可另外基于日记数据结构中的元数据和高频率更新表中的最后记录的区写入指针来更新区映射数据结构201的条目。
75.可经由版本或时间戳控制区映射日记数据结构166a中的条目的短时间重放。重放条目意味着将条目读回到易失性存储器中,例如在此实施例中为读回到tcm 160中。这些更新还可针对区描述符数据结构121的快照,例如可用存储于区描述符数据结构121中的区描述符来更新区映射日记数据结构166a。因而可在截至到apl事件发生时的准确值下将作用中区表162a从nvm装置恢复到易失性存储器。区映射日记数据结构166a可通过仅穿过(作用中区表162a的)每个hfut条目并比较提交指针值和完成指针值,以此检查需要修复操作的错误。
76.因此,在一个实施例中,控制器115可在重启之后的重建期间识别区映射数据结构201中的错误,包含将作用中区表162a从nvm装置读回到易失性存储器中。控制器115可另外将区映射数据结构201的条目中的的区写入指针提交值与作用中区表162a的条目中的对应值进行比较并且将区映射数据结构201的条目中的区写入指针完成值与作用中区表162a的条目中的对应值进行比较。可参考作用中区表162a修复任何错误,且如果仍出现错误,那么控制器115可发起全扫描。
77.映射数据结构126可另外包含受命令执行处理器113管理的区到块集(zbts)数据结构409、块集映射数据结构123和写入顺序数据结构410。转译映射日记数据结构166b可基于对块集映射数据结构123的更新并基于ztbs数据结构409和写入跟踪器表162b之间的清空转变来以日记形式记录条目,所述写入跟踪器表162b是与ztbs数据结构409相关联的高频率更新表(hfut)。z2bt数据结构409可为足够小的,尤其是在使用写入跟踪器表162b的情况下,以便在apl事件期间被清空,但使用电力电容器进行清空的能力是取决于写入粒度的特定设计。
78.在一个实施例中,块集映射数据结构123是依据块集id(例如,块条带id)编索引的平面索引映射表。块集映射数据结构123可从块集id映射到媒体的每一裸片内的物理块(例如,物理块地址或识别符)。在一个实施例中,ztbs数据结构409是依据散列区id值(例如,比ltu识别符的值大得多的值)编索引的平面索引映射表。在一实施例中,转译处理器113管理ztbs数据结构201。ztbs数据结构409可将区id映射到识别数据所在的块集的块集识别符
(id)(例如,块条带编号)。
79.在一个实施例中,写入顺序数据结构210是依据散列ltu识别符或lba值编索引的平面索引映射表。写入顺序数据结构210可跟踪到存储器装置130和140的物理地址的写入的位置,以确保依据zns协议以依序次序写入到物理地址。
80.在各种实施例中,写入跟踪器表162b将最后经写入页(lwp)存储于nvm装置中并且可仅响应于apl事件而被清空。转译映射日记数据结构166b因此可记录(例如,以日记形式)在ztbs数据结构409和写入跟踪器表162b之间这些lwp值的清空转变。以此方式,在写入跟踪器表162b中针对处于作用中状态的区来更新每个写入。在apl事件之后,写入跟踪器表162b即刻被清空且因此其信息(在当前写入操作上)在写入操作完成之前无需以日志形式记录于转译映射日记数据结构166b中。此设计允许可管理大小的日记以使得日记映射日记数据结构166b可仅在电源失效时被清空而非连续被清空。
81.在一些实施例中,在写入到区的操作完成之后,控制器115可即刻另外在对作用中区的写入请求下,用对应lba空间和对应物理地址空间之间的映射填入映射数据结构(例如,ztbs数据结构409)的条目。控制器可另外在映射数据结构中,解除激活作用中区以关闭作用中区。
82.控制器115可另外执行重启之后的恢复和重建,包含将日记数据结构(例如,转译映射日记数据结构166b)从nvm装置读回到易失性存储器(例如tcm 160)中。控制器115可另外将高频率更新表(例如,写入跟踪器表162b)从nvm装置读回到易失性存储器(例如tcm 160)中。控制器115可另外基于日记数据结构中的元数据和高频率更新表中的最后记录的写入指针来更新映射数据结构的条目。
83.可经由版本或时间戳控制转译映射日记数据结构166b中的条目的短时间重放。重放条目意味着将条目读回到易失性存储器中,例如在此实施例中为读回到tcm 160中。这些更新还可针对块集映射数据结构123的快照,例如可通过对块集映射数据结构123的更新来更新转译映射日记数据结构166b。因而可在截至到apl事件发生时的准确值下将写入跟踪器表162b从nvm装置恢复到易失性存储器。转译映射日记数据结构166b可通过仅穿过(写入跟踪器表162b的)每个hfut条目并确保lwp值处于由写入顺序数据结构410决定的预期次序中,以此检查需要修复操作的错误。
84.因此,在一个实施例中,控制器115可在apl事件之后通过首先将写入跟踪器表162b从nvm装置读回到易失性存储器中来执行通电之后的恢复和重建。控制器115可另外将ztbs数据结构409和写入顺序数据结构410从nvm装置读回到易失性存储器中。控制器115可另外确定含于写入跟踪器表162b中的lwp值是否处于在写入顺序数据结构410中排定的次序中。控制器115可另外响应于检测到的错误,按lwp值的次序更新ztbs数据结构。
85.图5是根据一实施例的用于高效处置依序编程的存储器子系统内的apl的方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1a-1b的控制器115(例如,处理器117)执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所
有过程。其它过程流程也是可能的。
86.处理逻辑可将映射数据结构存储于以通信方式耦合到非易失性存储器(nvm)装置的易失性存储器内,所述映射数据结构将逻辑块地址(lba)空间的每一区映射到nvm装置的对应物理地址空间。每一区可包含映射到多个依序物理地址的对应多个依序lba。处理逻辑还可将日记数据结构和高频率更新表(hfut)存储于易失性存储器中。易失性存储器可为tcm 160和易失性存储器装置125的组合,如参考图1b所论述。日记数据结构可为区映射日记数据结构166a、转译映射日记数据结构166b或某一其它日记装置中的一个。hfut可为作用中区表162a、写入跟踪器表162b或某一其它hfut结构中的一个。
87.在操作520处,处理逻辑响应于写入请求,写入到lba空间的作用中区,所述作用中区在映射数据结构内映射到非易失性存储器(nvm)装置的对应物理地址空间。如所论述,命令产生处理器112可产生包含具有命令执行处理器114将开始写入到的物理地址的命令标签的命令。此物理地址将与在依序写入作用中区时可跟踪的写入指针相关联。
88.在操作530处,处理逻辑在存储于易失性存储器中的高频率更新表的条目内写入写入指针的值,所述写入指针是针对nvm装置中与作用中区内的写入相对应的位置。如果写入指针将存储于作用中区表162a中,那么写入指针可为与lba空间相关联的区写入指针。如果写入指针将存储于写入跟踪器表162b中,那么写入指针可为指向nvm装置的物理地址空间的物理写入指针。
89.在操作540处,处理逻辑在映射数据结构的条目内写入指向高频率更新表的条目的表索引值。参考图3论述实施此索引的方式,并且此方式使得日记数据结构能够跟踪映射数据结构和hfut之间的清空转变。
90.在操作550处,处理逻辑在存储于易失性存储器中的日记数据结构内,更新受映射数据结构和高频率更新表之间的清空转变影响的映射数据结构或高频率更新表中的至少一个的条目的元数据。这类清空转变可在写入操作完成之后发生,且因此,在这类写入完成之前无需以日记形式记录写入指针。
91.在操作560处,响应于异步断电(apl)事件,处理逻辑将日记数据结构和高频率更新表清空到nvm装置。在一个实施例中,处理逻辑还可将映射数据结构清空到nvm装置。因为这些数据结构和hfut已经清空,所以它们可在存储器装置重启之后即刻被重放并且供在执行参考图4论述的映射数据结构恢复和重建时使用,将参考图7和图8进行更详细地论述。
92.图6是根据另一实施例的用于高效处置依序编程的存储器子系统内的apl的方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1a-1b的控制器115(例如,处理器117)执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
93.处理逻辑可将区映射数据结构201存储于以通信方式耦合到非易失性存储器(nvm)装置的易失性存储器内,所述区映射数据结构201将逻辑块地址(lba)空间的区映射到lba空间内的区状态并映射到区索引。举例来说,区可为映射到多个依序物理地址的多个
依序lba。处理逻辑还可将日记数据结构和高频率更新表存储于易失性存储器中。易失性存储器可为tcm 160和易失性存储器装置125的组合,如参考图1b所论述。日记数据结构可为区映射日记数据结构166a或某一其它日记装置中的一个。hfut可为作用中区表162a或某一其它hfut结构中的一个。
94.参考图6,在操作620处,处理逻辑响应于写入请求,写入到lba空间的作用中区,所述作用中区在区映射数据结构201内映射到lba空间内的区状态并映射到区索引。作用中区可包含映射到非易失性存储器(nvm)装置的多个依序物理地址的多个依序lba。如所论述,命令产生处理器112可产生包含具有命令执行处理器114将开始写入到的物理地址的命令标签的命令。此物理地址可与在依序写入作用中区时可跟踪的写入指针相关联。
95.在操作630处,处理逻辑在存储于易失性存储器中的高频率更新表的条目内写入区写入指针的对应于区索引的值,其中区写入指针是针对lba空间中的一位置,在所述位置中,所述处理装置正在写入请求下写入到所述区。如果写入指针将存储于作用中区表162a中,那么写入指针可为指向lba空间内的分配的区写入指针。
96.在操作640处,处理逻辑在区映射数据结构201的条目内写入指向高频率更新表(hfut)的条目的表索引值。在一个实施例中,hfut是作用中区表162a。参考图3论述实施此索引的方式,并且此方式使得区映射日记数据结构166a能够跟踪区映射数据结构201和作用中区表162a之间的清空转变。
97.在操作650处,处理逻辑在存储于易失性存储器中的日记数据结构内,更新受区映射数据结构201和高频率更新表之间的清空转变影响的区映射数据结构201或日记数据结构中的至少一个的条目的元数据。这类清空转变可在写入操作完成之后发生,且因此,在这类写入完成之前无需以日记形式记录写入指针(或对应信息)。
98.在操作660处,处理逻辑响应于异步断电(apl)事件,将日记数据结构和高频率更新表清空到nvm装置。在一个实施例中,处理逻辑还可将区映射数据结构201清空到nvm装置。因为这些数据结构和hfut已经清空,所以它们可在存储器装置重启之后即刻被重放并且供在执行参考图4论述的映射数据结构恢复和重建时使用,将参考图7和图8进行更详细地论述。
99.图7是根据一实施例的用于在从apl重启之后恢复映射数据结构的方法的流程图。方法700可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700由图1a-1b的控制器115(例如,处理器117)执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
100.参考图7,在操作705处,处理逻辑将映射数据结构126、hfut 162和日记数据结构166从nvm装置加载回到易失性存储器中。易失性存储器可为tcm 160和易失性存储器装置125的组合,如参考图1b所论述。日记数据结构可为区映射日记数据结构166a、转译映射日记数据结构166b或某一其它日记装置中的一个。hfut可为作用中区表162a、写入跟踪器表162b或某一其它hfut结构中的一个。
101.在操作710处,处理逻辑确定是否发生apl事件,且因此,存储器子系统110在apl事件之后通电(例如启动)。如果为否,那么在操作712处,处理逻辑通知命令产生处理器112启动完成。如果答案为否,那么在操作715处,处理逻辑读取与日记数据结构166相关联的日记信息页,例如关于最后经写入条目的日记信息页。
102.在操作720处,处理逻辑检索根信息页(rip)中的最后版本标记器。版本标记器是允许控制器115按顺序排好事件的前进计数器。具有稍后值(考虑翻滚)的版本标记器意味着标记的事件稍后发生,这类似于时间戳。时间差是连续滚动的,但可仅在关键点,例如当迁移完成时更新版本标记器,这允许控制器115确定在特定版本标记器之前,不必重放。
103.继续参考图7,在操作725处,处理逻辑确定日记数据结构166是否可用。如果为否,那么处理逻辑跳到如参考图8所论述的数据结构验证。如果为是,那么在操作730处,处理逻辑将版本标记器定位于日记数据结构166中。在操作735处,处理逻辑可确定(用版本标记器标记的)日记条目是否有效。如果为否,那么处理逻辑循环回到操作725。如果为是,那么在操作740处,处理逻辑用日记条目更新数据结构。举例来说,这些数据结构可包含映射数据结构126和hfut 162。
104.在操作745处,处理逻辑确定日记数据结构中是否存在用最后版本标记器标记的另一日记条目。如果为是,那么处理逻辑循环回到操作735以继续检查日记条目有效性,并在操作740处,用任何有效的日记条目更新数据结构。如果为否,那么不存在更多这类日记条目,处理逻辑移动到如参考图8所论述的数据结构验证上。
105.图8是根据一实施例的用于在从apl重启之后验证经恢复映射数据结构的方法800的流程图。方法800可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法800由图1a-1b的控制器115(例如,处理器117)执行。经恢复映射数据的验证可允许对数据经恰当恢复的验证且因此可用作测试,但这并非计算系统起作用的前提条件。在各个层级,方法800可比较作用中区表162a(具有一状态)到区映射数据结构201的内容。可对作用中区表162a的索引指向正确区id或lba识别符进行另外的检查。方法800也可以验证不存在用于索引的重复条目和其它这类检查,如将更详细地论述。
106.虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
107.参考图8,在发起所描绘的流程(未示出)之前,可首先进行检查以确定是否跳过所有数据比较,且因此通常也跳过验证。如果如此进行,那么处理逻辑可向下跳到操作870且启动完成。这可允许更快速启动循环,其中可能并不存在关于数据验证的问题。否则,假设验证继续进行,在操作802处,处理逻辑将区映射数据结构201中的每个完成写入指针(cwp)值和每个提交写入指针(swp)值与作用中区表162a中的条目的对应值进行比较。在操作810处,处理逻辑基于所述比较确定是否验证作用中区表162a。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正作用中区表162a。
108.如果验证作用中区表162a,那么在操作815处,处理逻辑验证作用中区表162a的区
状态和索引值(idx)。在操作820处,处理逻辑基于区状态和索引值的验证,确定是否验证区映射数据结构201。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正区映射数据结构201。轻微修复可为修复漏洞或不一致的数据。执行作用中区的扫描可能花费长时间,但可作为重建数据结构和表的最后措施被执行。
109.如果验证区映射数据结构201,那么在操作825处,处理逻辑将写入跟踪器表162b中的写入指针的值与作用中区表162a中的写入指针的值进行比较。可执行此比较以便识别写入指针的任何不正确位置。归因于不完整写入操作或在其中作用中区表162a的cwp值不匹配写入跟踪器表162b中的指针的值的情况下,写入指针可为不正确的。在操作830处,处理逻辑基于此比较确定是否验证写入跟踪器表162b。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正写入跟踪器表162b。
110.如果验证写入跟踪器表162b,那么在操作835处,处理逻辑验证块池中的计数,例如区的块集中的计数。块集的维持可在池中基于其状态进行。这为对块集的状态匹配块集所在的池的验证。池允许出于例如垃圾收集、耗损均衡等目的快速存取处于某些状态的块集。取决于在apl期间发生的情况,可能需要在不同池之间移动块集中的一些,例如从写入池移动到经写入池。在操作840处,处理逻辑确定是否验证块集信息。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正块集信息。
111.如果验证块集信息,那么在操作845处,处理逻辑验证ztbs数据结构409的块集识别符(id)和索引值(idx)分别匹配作用中区表162a的块集信息和索引。在操作850处,处理逻辑确定是否验证ztbs数据结构409。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正ztbs数据结构409。
112.如果验证ztbs数据结构409,那么在操作855处,处理逻辑检查块是有效的并且在块集映射数据结构123中是否检测到任何错误。举例来说,没有漏洞或有缺陷的块仍然被映射。这可为块集映射,所述块集映射可进行扫描以查找添加到缺陷列表的块或是否存在由有缺陷块产生的漏洞,随后块集映射扫描将检查这类不正确映射。
113.在操作860处,处理逻辑确定是否验证块集映射数据结构123。如果不验证,那么在操作805处,处理逻辑进行轻微修复,且视需要扫描作用中区以校正块集数据结构123。如果验证块集数据结构123,那么在操作870处,处理逻辑通知命令产生处理器112启动已完成。
114.图9说明计算机系统900的实例机器,在所述计算机系统900内可执行用于使所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统900可对应于主机系统(例如,图1a的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1a的存储器子系统110)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
115.所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
116.实例计算机系统900包含处理装置902、主存储器904(例如,只读存储器(rom)、闪存存储器、动态随机存取存储器(dram)例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器906(例如,闪存存储器、静态随机存取存储器(sram)等),以及数据存储系统918,其经由总线930彼此通信。
117.处理装置902表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置902也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。处理装置902被配置成执行指令926以用于执行本文中所论述的操作和步骤。计算机系统900可另外包含网络接口装置908以在网络920上通信。
118.数据存储系统918可包含机器可读存储媒体924(也称为计算机可读媒体),其上存储有一或多个指令集926或体现本文中所描述的方法或功能中的任一或多种的软件。指令926还可在由计算机系统900执行期间完全或至少部分地驻存在主存储器904内和/或处理装置902内,主存储器904和处理装置902也构成机器可读存储媒体。机器可读存储媒体924、数据存储系统918和/或主存储器904可对应于图1a-1b的存储器子系统110。
119.在一个实施例中,指令926包含实施可由图1b的处理器117执行的功能性的指令。虽然在实例实施例中机器可读存储媒体924展示为单个媒体,但应认为术语“非暂时性机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
120.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
121.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
122.本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,如但不限于任何类型的盘(包含软盘、光盘、cd-rom和磁性光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
123.本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法
更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
124.本公开可提供为计算机程序产品或软件,其可包含在其上储存有可用以编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。a机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
125.在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1