一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于存储器子系统的媒体管理的弹性缓冲器的制作方法

2021-06-22 17:08:00 来源:中国专利 TAG:
用于存储器子系统的媒体管理的弹性缓冲器的制作方法
交叉参考本专利申请案主张比安克(bianco)在2019年12月19日申请的标题为“用于存储器子系统的媒体管理的弹性缓冲器(elasticbufferformediamanagementofamemorysub-system)”的第16/721,712号美国专利申请案的优先权,所述美国专利申请案转让给本受让人,并且明确地以全文引用的方式并入本文中。
技术领域
涉及用于存储器子系统的媒体管理的弹性缓冲器。
背景技术
:存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可利用存储器子系统来在存储器组件处存储数据且从存储器组件检索数据。技术实现要素:描述了一种方法。在一些实例中,所述方法可包含:存储与用于存储器子系统的一组媒体管理操作相关联的多个条目,每一条目包括所述组媒体管理操作相对于所述存储器子系统的多个传送单元中的一传送单元的当前状态;至少部分地基于与主机起始的写入操作相关联的第二组一或多个写入命令,使用所述多个条目来缓冲与所述组媒体管理操作相关联的第一组一或多个写入命令;以及至少部分地基于所述多个条目以及与所述主机起始的写入操作相关联的所述第二组一或多个写入命令的完成,发出与所述组媒体管理操作相关联的所述第一组一或多个写入命令。描述了一种系统。在一些实例中,所述系统可包含多个存储器装置和一处理装置,其以操作方式与所述多个存储器装置耦合,以至少部分地基于与主机起始的写入操作相关联的第一组一或多个写入命令,存储用于所述多个存储器装置的一组媒体管理操作的状态,且至少部分地基于与所述主机起始的写入操作相关联的所述第一组一或多个写入命令的完成,发出与所述多个存储器装置相关联的第二组一或多个写入命令。描述了一种非暂时性计算机可读存储媒体。在一些实例中,所述非暂时性计算机可读存储媒体可包含指令,其当处理装置由执行时,致使所述处理装置:存储与用于存储器子系统的一组媒体管理操作相关联的多个条目,每一条目包括所述组媒体管理操作相对于所述存储器子系统的多个传送单元中的一传送单元的当前状态;至少部分地基于与主机起始的写入操作相关联的第二组一或多个写入命令,使用所述多个条目来缓冲与所述组媒体管理操作相关联的第一组一或多个写入命令;以及至少部分地基于所述多个条目和与所述主机起始的写入操作相关联的所述第二组一或多个写入命令的完成,发出与所述组媒体管理操作相关联的所述第一组一或多个写入命令。附图说明根据下文给出的详细描述以及本公开的各种实例的附图,将更充分地理解本公开。然而,附图不应被视为将本公开限制于具体实例,而是仅用于解释和理解。图1示出根据本公开的一些实例的包含存储器子系统的实例计算系统。图2是根据本公开的一些实例的使用弹性缓冲器来进行媒体管理的实例方法的流程图。图3是根据本公开的一些实例的使用弹性缓冲器来进行媒体管理的实例方法的框图。图4是根据本公开的一些实例的用于存储器子系统的媒体管理的实例弹性缓冲器的图。图5是其中本公开的实例可操作的实例计算机系统的框图。具体实施方式本公开的方面是针对用于存储器子系统的媒体管理的弹性缓冲器。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个存储器组件的存储器子系统。主机系统可提供数据以存储在存储器子系统处,并且可请求从存储器子系统检索数据。数据操作可由存储器子系统执行。所述数据操作可为主机起始的操作。举例来说,主机系统可在存储器子系统上起始数据操作(例如写入、读取、擦除等)。主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便在存储器子系统处将数据存储在存储器装置上,且在存储器子系统上从存储器装置读取数据。数据操作可为由存储器子系统起始的媒体管理相关操作。存储器子系统控制器可执行用于媒体管理算法(例如耗损均衡、刷新、垃圾收集、擦除等)的操作。存储器子系统可起始媒体管理操作,其可包含对存储在存储器装置上的数据执行例如写入操作。存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。每个裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,“与非”(nand)装置),每个平面由一组物理块组成。每一块由一组页组成。每一页由存储数据位的一组存储器单元组成。对于一些存储器装置,例如nand装置,块是可擦除的最小区域,且块内的页无法个别地擦除。对于此类装置,一次一个块地执行擦除操作。块的页可含有有效数据、无效数据或无数据。无效数据是标记为过时的数据,因为所述数据的新版本存储在所述存储器装置上。无效数据包含先前写入但不再与有效逻辑地址(例如主机系统在物理到逻辑(p2l)映射表中所参考的逻辑地址)相关联的数据。有效数据是正存储在存储器装置上的此类数据的最近版本。存储器子系统可基于例如从操作系统接收到的信息,将数据标记为无效。不含数据的页包含先前已擦除且尚未写入到的页。存储器子系统控制器可执行用于媒体管理算法(例如耗损均衡、刷新、垃圾收集、擦除等)的操作。块可具有含有有效数据的一些页和含有无效数据的一些页。为了避免等待块中的所有页具有无效数据以便擦除和再用所述块,可调用下文称为“垃圾收集”的算法,以允许所述块被擦除和释放,作为用于后续写入操作的自由块。垃圾收集是一组媒体管理操作,其包含(例如):选择含有有效和无效数据的块;选择所述块中含有有效数据的页;将所述有效数据复制到新位置(例如另一块中的自由页);将先前选择的页中的数据标记为无效;以及擦除选定块。下文的“垃圾收集”是指选择块;将有效数据从选定块重写到另一块,以及擦除存储在所述选定块处的所有无效数据和有效数据。可将来自多个选定块的有效数据复制到较小数目个其它块,且可接着擦除所述选定块。因此,可增加已经擦除的块的数目,使得更多的块可用于存储来自主机系统的后续数据。在垃圾收集期间,基于由存储器子系统控制器发布的一或多个读取命令,将待擦除的块的有效数据最初读取到缓冲器中且由所述缓冲器存储,且擦除对应页(例如上面可含有有效数据的页)。接着可将有效数据写入(例如重写)到存储器子系统(例如到存储器装置的不同页)。为了将有效数据写入到一位置(例如存储器装置的不同页),存储器控制器发布写入命令,每一写入命令指示有效数据将写入到的存储器地址(例如目的地存储器地址)。在一些垃圾收集程序中,一旦对应的读取命令已完成,就发布写入命令。以给定次序(例如第一循序次序)发布读取命令,但在一些情况下,读取命令不是以相同次序完成。因为写入命令是一旦对应读取命令完成就发布的,因此写入命令不是以发布读取命令的相同次序发布的(即,写入命令是相对于所发布的读取命令的次序以非循序方式发布的)。此类写入技术(例如在垃圾收集程序期间,以非循序方式将有效数据回写到块)可导致存储器子系统经历性能损失,因为数据块是乱序写入到页的,这可增加将对数据块执行的未来读取操作的等待时间。本公开的方面通过使用在垃圾收集程序期间提供弹性缓冲器的记分板数据结构来解决这些和其它问题。弹性缓冲器可允许用于垃圾收集程序的与乱序读取命令相关联写入命令(或多个写入命令)的发布中的延迟。举例来说,当在垃圾收集程序期间从块读取有效数据的页时,记分板可存储与用于垃圾收集程序的一序列读取操作有关的条目,且使用这些条目来维持(例如跟踪)读取页的次序。因此,在已擦除所述块之后,可将有效数据的页以读取所述页的相同次序(例如以循序次序)写入(例如重写)到新位置。也就是说,可以与发布读取命令相同的次序来发布针对有效数据页的写入命令,这可导致所述数据以与它们最初存储相同的次序存储到新位置。另外或替代地,记分板可充当缓冲器来延迟与垃圾收集程序相关联的写入命令的颁布。当所述命令被延迟时,系统可执行不与垃圾收集程序相关联的写入操作(例如主机写入操作)。也就是说,延迟垃圾收集写入命令可允许系统利用可用带宽来处理其它命令或操作。这可导致存储器子系统具有改进的读取、写入和擦除速度、降低的功耗、改进的处理时间等。图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。所述计算环境可包含主机系统105和存储器子系统110。存储器子系统110可包含媒体,例如一或多个非易失性存储器装置(例如,存储器装置130)、一或多个易失性存储器装置(例如,存储器装置140),或其组合。存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡,以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so-dimm)以及非易失性dimm(nvdimm)。计算系统100可为计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(iot)功能的装置、嵌入式计算机(例如,交通工具、工业设备或连网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。计算系统100可包含与一或多个存储器子系统110耦合的主机系统105。在一些实例中,主机系统105与不同类型的存储器子系统110耦合。图1示出与一个存储器子系统110耦合的主机系统105的一个实例。如本文中所使用,“耦合到”或“与…耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。主机系统105可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,nvdimm控制器),和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统105使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。主机系统105可使用物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、小型计算机系统接口(scsi)、串行附接scsi(sas)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统105与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统105耦合时,主机系统105可进一步利用非易失性存储器快速(nvme)接口来存取存储器组件(例如存储器装置130)。物理主机接口可提供接口,以用于在存储器子系统110与主机系统105之间传递控制、地址、数据和其它信号。存储器装置可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态ram(dram)和同步dram(sdram)。非易失性存储器装置的一些实例(例如存储器装置130)包含nand型快闪存储器。非易失性存储器装置的另一实例是就地写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列,基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下,对非易失性存储器单元进行编程。存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单电平单元(slc)可每单元存储一个位。其它类型的存储器单元,例如多电平单元(mlc)、三电平单元(tlc)和四电平单元(qlc)可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可分组为页,页可指用以存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。尽管描述了例如nand型快闪存储器等非易失性存储器装置,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫族化物的存储器、铁电ram(feram)、磁性ram(mram)、或非(nor)快闪存储器以及电可擦除可编程rom(eeprom)。存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它这类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路(例如现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp),或其它合适的处理器。存储器子系统控制器115可包含经配置以执行存储在本地存储器125中的指令的处理器120(例如,处理装置)。在所说明实例中,存储器子系统控制器115的本地存储器125包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统110的操作的各种进程、操作、逻辑流和例程(包含处置存储器子系统110与主机系统105之间的通信)的指令。在一些实例中,本地存储器125可包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器125还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。一般来说,存储器子系统控制器115可从主机系统105接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115还可包括主机接口电路,以经由物理主机接口与主机系统105通信。主机接口电路可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统105的信息。存储器子系统110还可包含未说明的额外电路或组件。在一些实例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,dram)以及地址电路(例如,行解码器和列解码器),所述地址电路可从存储器子系统控制器115接收地址,并对地址进行解码以存取存储器装置130。在一些实例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。存储器子系统110包含缓冲管理器150,其可缓冲针对媒体管理操作的一或多个写入命令。在一些实例中,缓冲管理器150可利用记分板的一或多个记分板条目来缓冲写入命令。如本文所论述,一或多个组件可经配置以使用缓冲管理器150来执行媒体管理操作,以延迟(例如缓冲)与媒体管理操作相关联的一或多个写入命令。虽然写入命令被延迟,但可执行一或多个其它写入操作(例如主机写入操作),因为存在归因于发出媒体管理写入命令的延迟而提供给存储器装置的额外带宽。在一些实例中,存储器子系统控制器115包含缓冲管理器150的至少一部分。举例来说,存储器子系统控制器115可包含处理器120(处理装置),其经配置以执行存储在本地存储器125中的用于执行本文中所描述的操作的指令。在一些实例中,缓冲管理器150是主机系统105、应用程序或操作系统的一部分。另外或替代地,缓冲管理器150可在媒体管理操作期间延迟一或多个写入命令的发布。当产生写入命令时,其可或可不能够紧接着发布。举例来说,写入命令的发布可归因于系统资源正分配(例如临时分配)给其它进程而延迟。因此,当产生写入命令时,缓冲管理器150可将写入命令提供给缓冲器,直到其发布为止。下文描述关于缓冲管理器150的操作的其它细节。图2是根据本公开的一些实例的使用弹性缓冲器来进行媒体管理的实例方法的流程图200。由流程图200示出的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如在处理装置上运行或执行的指令)或其组合。在一些实例中,由流程图200示出的方法由图1的缓冲管理器150执行。虽然以特定序列或次序来示出,但是除非另有指定,否则操作的次序可修改。因此,应理解,所示出的实施例仅为实例,且所示出的操作可以不同次序执行,且一些操作可并行地执行。另外,在各种实例中可省略一或多个操作。因此,并非在每个实例中都需要所有操作。其它方法流是可能的。在操作205处,处理装置可存储与针对存储器子系统的一组媒体管理操作相关联的一组条目。在一些实例中,每一条目可包含所述组媒体管理操作相对于存储器子系统的一组传送单元(tu)中的一tu的当前状态。在一些实例中,由流程图200示出的方法可包含:发出与所述组媒体管理操作相关联的第一组一或多个读取命令;以及至少部分地基于发出所述第一组一或多个读取命令,接收第一组一或多个读取响应。在操作210,处理装置可至少部分地基于与主机起始的写入操作相关联的第二组一或多个写入命令,使用所述组条目来缓冲与所述组媒体管理操作相关联的第一组一或多个写入命令。在一些实例中,由流程图200示出的方法可包含:接收与所述组媒体管理操作相关联的第一组一或多个读取响应;以及至少部分地基于所述第一组一或多个读取响应来缓冲所述第一组一或多个写入命令。在一些实例中,所述第一组一或多个读取响应可对应于所述组条目的子集。在一些实例中,相对于所述组条目隐含的读取次序以连续次序接收所述第一组读取响应。在一些实例中,由流程图200示出的方法可包含:将与所述组媒体管理操作相关联的所述组条目存储在存储器子系统处的链表或环形缓冲区中;使用所述链表或环形缓冲区中的所述组条目的子集来缓冲所述第一组一或多个写入命令。在一些实例中,由流程图200示出的方法可包含:至少部分地基于与所述组媒体管理操作相关联的所述第一组一或多个写入命令,更新所述组媒体管理操作针对所述组条目的子集的当前状态。在一些实例中,所述第一组一或多个写入命令可对应于所述组条目的子集。在操作215处,处理装置可至少部分地基于所述组条目以及与主机起始的写入操作相关联的所述第二组一或多个写入命令的完成,发出与所述组媒体管理操作相关联的所述第一组一或多个写入命令。在一些实例中,所述第一组一或多个读取响应中的每一者可对应于所述第一组一或多个写入命令中的的一写入命令。在一些实例中,所述第一组一或多个写入命令对应于所述组条目中的连续条目。图3示出根据本文所公开的实例的使用弹性缓冲器的媒体管理的方法图300的实例。方法图300示出用于识别有效数据(例如在阶段305)、读取有效数据(例如在阶段310)和发出写入命令(例如在阶段315)的阶段。另外或替代地,方法图300示出使用写入缓冲器389来在发布之前缓冲写入命令。在一些实例中,如参考图3所描述而执行的操作可在存储器子系统处实施,且可利用记分板302。在一些实例中,记分板302可用作缓冲器或可包含缓冲器,例如写入缓冲器389。另外,可根据主机系统和/或本地存储器控制器的操作来执行操作,并且可基于状态机的设置来实施所述操作。在一些实例中,方法图300可示出范围流程序320和重放流程序325。方法图300可示出用于媒体管理(例如针对垃圾收集的媒体管理操作)的一或多个操作。在媒体管理操作期间,数据可独立于任何直接主机交互,从一个位置(例如从源存储器地址)迁移(例如在存储器子系统内内部)到另一位置(例如到目的地存储器地址)。可执行媒体管理操作以将有效数据打包在一起,释放空间以用于新写入,用于误差避免,用于耗损均衡,和/或在有误差的情况下恢复rain奇偶保护。另外或替代地,媒体管理操作可由将数据从一或多个源块(例如nand单元的一或多个块)移动或复制到一或多个目的地块中组成。在一些实例中,媒体管理操作可导致数据合并以释放资源(例如nand单元)来用于后续擦除和新写入处理。在一些实例中,在媒体管理操作期间传送的数据块可为或可称为传送单元(tu),且可为由存储器子系统控制器(例如参考图1所描述的处理器120)、本地媒体控制器或由主机系统(例如图1的主机系统105)内部管理的数据的最小大小,且对应于逻辑地址(例如tu地址(tua))和物理地址(例如抽象化物理地址,例如快闪逻辑地址(fla),其可与被称作平台物理地址(ppa)的nand单元的物理地址有关)。为了合并数据和/或释放资源以用于后续存取操作,可将tu写入到新位置(例如目的地地址),且可擦除原始块(例如tu从其移动的块)。用于媒体管理操作的候选者(例如块)可使用树(库、列表、队列等)来选择。在一些实例中,所述候选者可由记分板302保持。基于有效tu以及保持树的记分板302的识别,可执行循序媒体管理操作。如本文所论述,将tu单元循序地(例如以读取每一tu相同的次序)写入到新位置以改进存储器子系统的性能可为有利的。为了循序地将有效tu移动(例如写入)到目的地块,记分板302可为或可包含链表。归因于其保持一序列条目的能力,链表可由记分板302利用。在其它实例中,记分板302可为或可包含能够保持一序列条目(例如循环缓冲器或树)的任何类型的数据结构。每一链表条目可包含至少一tua以及与tu相关联的fla。另外或替代地,在可包含于链表中的其它参数之中,链表可包含下一节点识别符。下一节点识别符可指示用于媒体管理操作的后续tu。因此,利用其中每一条目指示下一(例如后续)tu的列表可允许有效tu循序地写入到目的地块。在一些实例中,树可由记分板302保持。树可由针对媒体管理操作的tu的列表(队列、库等)组成。举例来说,读取操作可发生,且每一tu的tua和/或fla可根据发布读取命令的次序(例如循序地)存储到记分板302。每一tua和/或fla的状态可保持在记分板302处的列表(例如链表)中。列表的次序(例如发布读取命令的次序)可允许tu循序地写入到目的地块,而不管接收对读取命令的响应(例如读取响应)的次序如何。在其它实例中,可使用预测性算法(例如预测主机可发出读取命令的次序的算法),在运行中计算链表的次序。在阶段305,可执行一或多个操作以识别有效数据(例如tu)。尽管块中的有效tu的计数可容易可得(例如为控制器可得),但可识别每一有效tu的位置。在一些实例中,可使用范围流程序320或重放流程序325来识别有效tu的位置。范围流程序320可包含处理命令以对整体存储器子系统执行媒体管理操作。另外或替代地,重放流程序325可使用缓冲器(例如读取缓冲器335),且可循环通过块中的物理位置。在阶段310,可执行一或多个操作以读取在阶段305识别的有效数据(例如tu)。举例来说,在识别到有效tu之后,可将对应于每一有效tu的fla与记分板302所保持的树进行比较。如果对应于有效tu的fla与记分板302所保持的fla匹配,那么与有效tu相关联的读取命令可出现。相反,如果fla不匹配,那么可释放记分板302所保持的条目(例如移动到链表的尾部)。在其它实例中,如果fla不匹配,那么系统可经配置以继续循环通过有效tu,直到fla与记分板302所保持的条目匹配为止。在阶段315,可执行一或多个操作以写入在阶段310读取的有效数据(例如tu)。如本文所论述,当对应于有效tu的fla与记分板102所保持的fla匹配时,发布与有效tu相关联的读取命令。另外或替代地,基于正发布读取命令,可将与有效tu相关联的数据写入(例如移动)到目的地块(例如到目的地地址)。归因于链表的使用,与有效tu相关联的数据可循序地写入到目的地块。在阶段305,可使用各种方法来确定有效数据(例如有效tu)。举例来说,重放流程序325可通过使存储在缓冲器内(例如读取缓冲器335内)的各种tu迭代来支持有效数据的确定。缓冲器可包含对应于从中读取相应tu的块中的位置的一或多个地址(例如tua和/或fla)。在一些实例中,重放流程序325可基于与模式寄存器和/或控制器(例如存储器子系统控制器、本地媒体控制器)相关联的一或多个设置来选择。当使用重放流程序325时,读取缓冲器335可在第一阶段330期间接收信号371。信号371可起始读取缓冲器335以循环通过一或多个tu(例如如373所示))。也就是说,读取缓冲器335可根据发布读取命令的次序来映射(例如确定、识别等)潜在有效的tu的tua和fla。在第二阶段340期间,可识别每一tu的tua和fla,并将其提供给记分板302(例如经由信号375和/或信号369)。在识别并将tua和fla提供给记分板之后,可在记分板302处编译列表(例如链表)。在一些实例中,可(例如在350处)接着发布tua和fla的查找,以确定相关联的数据是否保持有效,并将有效数据写入(例如循序地)到目的地块。在一些实例中,查找350可以接收读取响应的次序发生,且可执行以确定tua和fla是否与存储在记分板302处的树的条目匹配。范围流程序320可包含折叠整个存储器子系统的数据(例如移动和组织数据)的处理命令。举例来说,可基于与模式寄存器和/或控制器(例如存储器子系统控制器、本地媒体控制器)相关联的一或多个设置来选择范围流程序320。当使用范围流程序320时,可发布针对特定块中的每一fla的读取命令。可将对应tua和fla存储到记分板302,作为列表(例如链表)的一部分。在一些实例中,可(例如在350处)接着发布tua和fla的查找,以确定相关联的数据是否保持有效,并将有效数据写入(例如循序地)到目的地块。因为树可利用链表,所以可将所识别的tua和fla与列表的第一条目(例如列表的头部)进行比较。取决于比较的结果,可发布读取命令,并可将tu写入到目的地块。在一些实例中,范围流程序320和重放流程序325两者可导致执行查找350,以确定读取响应(例如对应于读取响应的tua和fla)是否与存储在记分板302处的树的条目匹配。因此,可经由信号381将与读取响应相关联的tua和fla提供给记分板302。可通过控制器或其它组件将信号381发射到记分板302。当接收到读取响应时,可将对应的tua和fla与存储在记分板302处的树的第一条目(例如列表的头部)进行比较。在一些例子中,tua和fla可能与第一条目不匹配。举例来说,第一条目与首先接收到的tua和fla的比较可指示所述条目不匹配在此实例中,可释放列表的第一条目(例如移动到列表的底部)。因此,可将tua和fla与列表中的一后续条目(或多个条目)进行比较,直到确定匹配为止。一旦确定匹配,就可发布(例如在360处)相关联tu的读取,且可随后将tu写入到目的地块(例如在365处,其可在阶段315处发生)。在一些实例中,阶段310和阶段315可为异步的(例如两个阶段之间可出现持续时间)。在一些实例中,可实施写入缓冲器389,以缓冲(例如延迟)一或多个写入命令的发布。当产生写入命令时,其可或可不能够紧接着发布。举例来说,写入命令的发布可归因于系统资源正分配(例如临时分配)给其它进程而延迟。因此,当产生写入命令时,其可首先经缓冲,直到其被发布(例如在365处)为止。可在任何一个时间将多个写入命令存储到写入缓冲器389。举例来说,在将第一写入命令(例如第一组读取命令)提供给写入缓冲器389之后,图3中所描绘的过程可重新开始。也就是说,接着可识别有效数据(例如在阶段305),可读取所述有效数据(例如在阶段310),且可产生写入命令并将其提供给写入缓冲器389。可将所产生的每一写入命令按其产生的次序放入写入缓冲器389中。举例来说,可产生第一写入命令,并将其提供给写入缓冲器389,接着第二写入命令。可将写入命令存储到写入缓冲器389,使得可首先发布第一写入命令,接着第二写入命令。当系统资源变为自由使得可发布写入命令时,可从写入缓冲器389发布写入命令,使得对应tu写入到目的地块。当将tu写入到目的地块时(例如当在365发布写入命令时),可释放记分板302中的相关联条目。因此,此过程可导致tu以与发布读取命令和写入命令保存到写入缓冲器389相同的次序写入到目的地块,这可通过延迟针对媒体管理操作的写入命令的发布,来允许带宽用于其它操作(例如主机写入命令)。图4示出根据本文所公开的实例的使用弹性缓冲器进行媒体管理操作的框图400的实例。所述操作可示出读取序列405、读取响应序列410和写入命令序列415。在一些实例中,写入命令序列415可由写入缓冲器420实施,所述写入缓冲器可为如参考图3所描述的写入缓冲器389的实例。另外或替代地,可使用记分板425来实施框图400所示出的媒体管理操作,所述记分板可为如参考图3所描述的记分板302的实例。在一些实例中,写入缓冲器420可包含促进媒体管理操作的一或多个记分板条目,且可为图3的写入缓冲器389的实例。在一些实例中,图4示出媒体管理操作的操作。如本文所论述,媒体管理操作可发生,以独立于任何直接主机交互,将数据从一个位置迁移到另一位置。举例来说,可将有效数据封装在一起以释放空间用于新写入,用于误差避免,用于耗损均衡,和/或在有误差的情况下恢复rain奇偶保护。在图4的上下文中,读取序列405、读取响应410和写入命令415中的每一者可与块(例如数据块)相关联。每一块可包含能够存储有限数据量的一或多个页。举例来说,每一块可包含32个页,其各自能够存储4千字节(kb)或8kb的数据(或其它数据量)。出于说明性目的,读取序列405、读取响应410和写入命令415中的每一者说明十二(12)个有效数据块(编号为1到12)以及各种脏/过期数据和/或已擦除数据块。脏数据是高速缓冲存储器中尚未保存到媒体(例如nand)的最新版本的数据。过期数据包含先前写入但不再与有效逻辑地址(例如主机系统在物理到逻辑(p2l)映射表中所参考的逻辑地址)相关联的数据。每一有效数据块(例如1到12)可包含一或多个tu。举例来说,有效数据块可包含多个页(例如多个16kb页),且每一页可包含多个tu(例如多个4kbtu)。范围流程序(例如如参考图3所描述的范围流程序320)和/或重放流程序(例如如参考图3所描述的重放流程序325)可与读取序列405相关联。举例来说,范围流程序和/或重放流程序可发出用于读取tu的一或多个读取命令。如图4中所示且仅出于说明性目的,读取序列405可发布针对与块1到12相关联的一或多个tu的一或多个读取命令。读取序列405可同时发出读取命令,使得针对每一后续tu的读取命令按序发布(即,针对每一tu的读取命令连续发布)。可将读取命令存储到记分板425,作为列表(例如链表、树、环形缓冲区)。在一些实例中,与每一tu相关联的tua和fla可存储为记分板条目。在一些实例中,记分板条目可存储与每一tu相关联的相应值。因此,当接收到相关联的读取响应(即,与存储到记分板425的tua和fla相关联的响应)时,所述相应值可更新。基于存储在记分板条目中的值,可按循序次序将tu写入到目的地块。下文在表1中示出记分板条目条目所反映的一些潜在记分板状态的列表。表1中所反映的状态可反映任何一个时间点的记分板条目。值含义0空1已找到tua/fla对2已发送查找请求3接收到查找响应4已分配缓冲器5已发送读取请求6接收到读取响应7已发送写入请求表1如表1中所示,记分板425可包含多种条目。页(以及块1到12)中的每一者可与相应条目相关联。举例来说,一些块(和tu)可与同一条目相关联,且其它块(和tu)可与不同条目相关联。每一条目表示相应的块和/或tu的当前状态。在一些实例中,条目“0”表示空状态。空状态可指示所述页是空的(例如其先前已擦除),且无有效数据将从所述页读取和/或所述页可被写入。在一些实例中,条目“1”表示已识别到tua和fla。在一些实例中,条目“2”表示已对tua和fla执行查找,以确定相关联的数据是否仍有效。在一些实例中,条目“3”表示关于与tua和fla相关联的数据是否有效的响应。如果所述数据有效,那么所述条目保留在记分板上。如果所述数据无效,那么可将所述条目移动到链表的尾部,并指派“0”。在一些实例中,条目“4”表示有效数据正被分配给缓冲器(例如参看图3的读取缓冲器335)。在一些实例中,条目“5”表示已读取与tua和fla相关联的有效数据。在一些实例中,条目“6”表示已接收到与tua和fla相关联的有效数据。在一些实例中,条目“7”表示将写入有效读取数据。在已写入数据之后,可为所述条目指派“0”,且可将其移动到链表的尾部。这可指示数据被成功地(且循序地)回写。在发布读取序列405之后,可接收读取响应410(例如通过记分板425)。举例来说,如图4中所示,每一响应可通过脏/过期数据来分隔。在其它实例中,可以非循序次序接收每一响应。在又另一实例中,可以与发布读取序列405不同的次序接收每一响应。以非循序次序接收读取响应序列410可归因于多种原因,包含但不限于特定信道是临时用于不同操作(例如用于擦除操作)。如果读取响应序列410以接收次序(即,非循序次序)写入到目的地块,那么存储器子系统的总性能可降低。因此,如图4所示以循序次序发布写入命令序列415可为有利的。为了发布写入命令序列415,记分板425可利用写入缓冲器420。在一些实例中,写入缓冲器420可或可称为环形缓冲区420,且可由记分板425实施。在一些情况下,记分板425是或充当写入缓冲器420。在接收到读取响应之后,可产生写入命令,可将对应tu写入到目的地块。如本文所论述,当产生写入命令时,其可或可不能够紧接着发布。举例来说,写入命令的发布可归因于系统资源正分配(例如临时分配)给其它进程而延迟。因此,当产生写入命令时,其可首先使用写入缓冲器420来缓冲。也就是说,当接收到读取响应410时,在写入命令的发布之前,针对对应块的读取响应410的值可存储在写入缓冲器420中。举例来说,可接收读取响应410,且记分板425可充当写入缓冲器420,且存储读取响应的值而不是发布针对所述接收到的读取响应410的写入命令,以便释放系统资源用于其它操作(例如主机写入操作)。一旦其它操作完成,记分板425就可发布针对媒体管理操作的415的写入命令,作为与媒体管理操作相关联的操作,在一些情况下,可与比主机操作低的优先级相关联。写入缓冲器420可使多个写入命令延迟(即,读取响应可存储在所述写入缓冲器处)。举例来说,写入命令415可存储到写入缓冲器420,且在任何一个时间,写入缓冲器可存储对应于图4中所示的十二(12)个有效数据块(编号为1到12)的至多达十二(12)个写入命令,但记分板425可经配置以在发布读取命令415之前存储多个读取响应值。每一有效数据块(例如1到12)可为或可包含一或多个tu。当产生写入命令时,其可存储在写入缓冲器420处,直到其被发布为止。举例来说,将对应于与块“1”相关联的tu的第一写入命令(例如第一组读取命令)提供给写入缓冲器420。在写入命令提供给写入缓冲器420之后的任何时间,可发布所述命令。另外或替代地,可产生后续写入命令(例如对应于与块“2”到块“12”相关联的tu),并将其存储到写入缓冲器420。也就是说,可接着识别、读取有效数据,且可产生对应写入命令,并将其提供给所述缓冲器。可将所产生的每一写入命令按其产生的次序放入缓冲器中。举例来说,可产生第一写入命令,并将其提供给写入缓冲器420,接着第二写入命令。可将写入命令存储到写入缓冲器420,使得可首先发布第一写入命令,接着第二写入命令以及任何后续写入命令。当系统资源变为自由使得可发布写入命令时,可从写入缓冲器420发布写入命令,使得对应tu写入到目的地块。如本文图4所示,当接收到读取响应410时,可将对应tua和fla与存储在记分板425处的列表的第一条目(例如列表的头部)进行比较。举例来说,当接收到读取响应“1”(即,第一有效tu)时,可将其与存储在记分板425处的读取序列405的第一条目进行比较。因为所述条目(例如所述条目的相关联tua和fla)匹配,所以读取响应“1”可首先写入到目的地块。也就是说,可首先发布与读取响应“1”相关联的写入命令序列415。或者,记分板425可指示写入命令将被传递到写入缓冲器420。在此实例中,可将与tu相关联的条目移动到写入缓冲器420,所述tu与块“1”相关联。随后,接着可将读取响应“2”与下一所存储的条目进行比较,所述条目为与存储在记分板425处的块“2”相关联的tu。如果这些条目匹配,那么读取响应“2”可移动到写入缓冲器420。在一些实例中,可在任何一个时间,将多个写入命令存储到写入缓冲器420。此过程可继续,使得当系统有资源来发布对应写入命令时,相应tu写入到目的地块。通过将每一tu从写入缓冲器420写入到目的地块可允许读取响应的接收与对应写入命令的发布之间的延迟。所述延迟可释放系统资源或带宽,用于将由存储器子系统执行的其它操作(例如主机读取操作),这可改进相关联存储器子系统的性能。图5示出根据本文所公开的实例的支持用于存储器子系统的媒体管理的弹性缓冲器的计算机系统500的实例机器。计算机系统500可包含用于致使机器执行本文中所描述的技术中的任何一或多种的指令集。在一些实例中,计算机系统500可对应于主机系统(例如参考图1所描述的主机系统105),其包含存储器子系统(例如参考图1所描述的存储器子系统110)、与所述存储器子系统耦合,或利用所述存储器子系统,或可用以执行控制器的操作(例如执行操作系统以实施对应于参考图1所描述的缓冲管理器150的操作)。在一些实例中,所述机器可与局域网(lan)、内联网、外联网和/或因特网中的其它机器连接(例如连网)。所述机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器,在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(依序或以其它方式)执行指定由所述机器采取的动作的一组指令的任何机器。此外,虽然示出了单个机器,但术语“机器”还可包含个别地或共同地执行指令集(或多个指令集)以实施本文所论述的任何一或多种方法的机器的任何集合。实例计算机系统500可包含处理装置505、主存储器510(例如,rom、快闪存储器、例如sdram或rambusdram(rdram)等dram、静态存储器515(例如快闪存储器、静态ram(sram)等),以及数据存储系统525,其经由总线545彼此通信。处理装置505表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置505也可以是一或多个专用处理装置,例如asic、fpga、dsp、网络处理器等等。处理装置505经配置以执行用于实施本文中所论述的操作和步骤的指令535。计算机系统500可进一步包含网络接口装置520以经由网络540通信。数据存储系统525可包含机器可读存储媒体530(也称为计算机可读媒体),其上存储有一或多组指令535或体现本文中所描述的方法或功能中的任何一或多种的软件。指令535还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器510内和/或处理装置505内,主存储器510和处理装置505也构成机器可读存储媒体。机器可读存储媒体530、数据存储系统525和/或主存储器510可对应于存储器子系统。在一个实施例中,指令535包含实施对应于缓冲管理器550(例如,参考图1所描述的缓冲管理器150)的功能性的指令。虽然机器可读存储媒体530被示为单个媒体,但术语“机器可读存储媒体”可包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还可包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一或多种的任何媒体。术语“机器可读存储媒体”可包含但不限于固态存储器、光学媒体以及磁性媒体。已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是产生期望的结果的操作的自洽序列。操作是要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、cd-rom和磁性光盘)、只读存储器(rom)、ram、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。此外,并不参考任何特定编程语言来描述本公开。将了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如rom、ram、磁盘存储媒体、光学存储媒体、快闪存储器组件等。在前述说明书中,已参考其特定实例实施例描述了本公开的实例。将显而易见的是,可在不脱离所附权利要求书中陈述的本公开的实例的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜