闪存介质控制器中的元数据处理的制作方法

文档序号:6373300阅读:149来源:国知局

专利名称::闪存介质控制器中的元数据处理的制作方法
技术领域
:本发明总体涉及闪存介质系统,特别地,涉及用于处理闪存介质控制器中的元数据的方法和/或装置。
背景技术
:闪存存储器在海量存储环境中是有吸引力的,因为闪存存储器系统没有硬盘相关的机械延迟。因此,闪存存储器系统允许更高的性能和相对较低的成本、功率、发热(heating)和空间使用率。然而,由于某些技术上的限制,闪存存储器还没有传统地用于这些环境中。第一个技术问题是写入速度,其可能与机械硬盘驱动器上的顺序访问的速度的十分之一一样慢。写入速度慢是由于在没有较长的擦除周期之前数据不能被覆写(overwrite)在NAND闪存器件上。因为擦除周期直接影响写入性能,大部分闪存设计将写入数据移动到新位置,并往后延迟擦除。在繁忙的系统中,直到处理器用尽空闲闪存页并必须停止以创建新的闪存页,才可以构建被延迟的擦除周期,这大大影响系统性能。第二个技术问题是,对单级单元(“SLC”)器件的各闪存页100,000次擦除周期以及对多级单元(“MLC”)器件10,000次周期的具体限制。擦除周期的数量限制,引发了数据中心的具体问题,其中,不可预知的数据流可能导致特定的高度使用的存储器分区受限于大量擦除。第三个问题是数据丢失。数据丢失可能因为影响闪存的各种因素而发生,包括读取干扰或编程干扰,从而产生由邻近受干扰单元的存储单元的读取或写入所造成的数据位丢失。闪存存储器单元的状态也可能因为时间的推移而不可预知地改变。在闪存技术中,闪存管理功能在固件中实施。闪存管理功能包括闪存缓冲管理、缺陷管理、损耗均衡。所有的管理功能利用一些闪存器件存储器来存储固件所用的临时数据或其他信息。在闪存页中存储的固件所用的临时数据和信息在本文通常被称为元数据。期望实现用于处理闪存介质控制器中的元数据的一种方法和/或装置。
发明内容本发明涉及一种闪存介质控制器中用于处理存储在闪存存储器页中的元数据的方法。该方法一般包括(i)在各上下文基础(basis)上定义元数据,其中,上下文基于各页来定义,(ii)当元数据的大小小于等于预定阈值时,将整个元数据存储在上下文结构中,以及(iii)当元数据的大小大于预定阈值时,在上下文中定义元数据指针。本发明的目的、功能和优点包括提供用于处理闪存介质控制器中的元数据的方法和/或装置,其可以(i)在各上下文基础上定义元数据信息,其中,上下文基于各页来定义,(ii)当元数据的大小小于等于预定阈值时,将完整的元数据信息存储在上下文结构中,(iii)当元数据的大小大于预定阈值时,在上下文中定义指向元数据的指针,(iv)分布带有主机用户数据的元数据,和/或(V)用错误校正编码、完整性校验和校正来保护元数据。从下面的详细说明书和所附权利要求书及附图中,上述和其他目的、特征和优点将变得显而易见,其中图1是示出了在单芯片系统(S0C)环境中实现的闪存介质控制器的框图;图2是示出了根据本发明实施方式的示例闪存介质控制器(FMC)结构的框图;图3是示出了根据本发明实施方式的示例闪存通道控制器结构的框图;图4是示出了图3的上下文管理器模块的示例子模块的示图;图5是示出了图3的裸片管理模块的示例子模块的示图;图6是示出了图3的闪存操作管理器模块的示例子模块的示图;图7是示出了图3的数据流管理器模块的示例子模块的示图;图8是示出了实现了图3的上下文管理器模块的示例子模块的示图;以及图9是示出了图3的闪存操作管理器的示例实施的示图;图10是示出了根据本发明实施方式的示例闪存介质上下文的布局的示图;图11是示出了根据本发明实施方式的闪存页中的示例分区部分的示图;图12A和图12B是示出了根据本发明实施方式的示例FMC闪存页结构的示图;以及图13是示出了说明根据本发明实施方式的处理的流程图。具体实施例方式在一个实现方案中,根据本发明的系统可以被设计为通过各种大容量存储协议进行操作,包括SAS(“串行连接SCSI”)、FC(“光纤通道”)和FC-AL(“光纤通道仲裁环路”),所有这些都是基于小型计算机系统接口(“SCSI”)协议和串行ATA(“SATA”)协议的。本领域普通技术人员应当熟悉这些大容量存储协议,因此,这样的协议不会在本文中进一步讨论。除非在调用特定协议的情况下,本文所公开的系统和方法不依赖于正在使用的特定协议,并被设计为通过所有协议进行正确操作。此外,根据本发明实施方式的系统和方法可以适用于与目前在使用或将来开发的其他类似协议一起使用,这些协议包括用于企业级应用的协议以及用于诸如最终用户的其他应用协议。本文所述的系统包括用于实现闪存器件的闪存控制器硬件架构的新方法和/或装置。参照图1,其示出了通过根据本发明实施方式的闪存介质控制器所实现的系统100的框图。在一个示例中,系统(或结构)100可包括块(或电路)102、多个块(或电路)104a至104n、多个块(或电路)106a至106n、块(或电路)18、块(或电路)110、块(或电路)112、块(或电路)114、块(或电路)116。电路102至116可以表示被实现为硬件、固件、软件、硬件、固件和/或软件的组合或者其他的模块和/或块。在一个示例中,块102可以实现根据本发明实施方式的闪存介质控制器(FMC)。块104a至104n可以被实现为第一数量的闪存储器件或元件。块104a至块104n可以耦接至块102的第一闪存通道。块102的第一闪存通道可以被配置为对各个块104a至104n提供独立的芯片启用(CE)信号。块106a至块106n可以被实现为第二数量的闪存存储器件或部件。块106a至块106η可耦接至块102的第二闪存通道。块102的第二闪存通道可以被配置为对各个块106a至块106η提供独立的芯片启用(CE)信号。尽管FMC102以两个闪存通道的示例进行了说明,对本领域技术人员显而易见的是,可以相应地实现另外的闪存通道以满足特定实现的设计标准。闪存器件104a至104η和106a至106η可以被实现为包括一个或多个裸片的单个闪存组(flashpackage)ο闪存器件104a至104η和106a至106η通过使用NAND和/或NOR闪存器件来实现。块102可以包括用于NAND闪存和/或NOR闪存的适当的物理层支持(PHY)。块108可以实现可耦接至块102的外部FMC处理器(FARM)。块110可以实现可被配置为将静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)耦接至块102的存储器控制器。块112可以被实现为一个或多个SRAM器件。块114可以被实现为一个或多个DRAM装置。块116可以实现耦接块110和块114的双倍数据速率物理层(PHY)接口。在一个示例中,块102、108、110、112、114和116可以实现单芯片系统(SOC)结构。块102可以实现为被配置为协助各种应用程序使用闪存器件104a至104η和闪存器件106a至106η的软IP块。正如本文使用的,术语“软IP块”通常是指可以以软件(例如,HDL代码、RTL代码等)提供的集成电路的构建块(buildingblock)。块102通常支持与闪存器件的多个闪存接口。块102通常不包括处理器(例如ARM)。然而,在一个示例中,块102可以实现被配置为将块102耦接至外部处理器108的接口(例如32位的AHB等)。块102通常被配置为处理由块104a至104η和块106a至106η形成的闪存介质海量存储阵列的管理。在一个示例中,块102可以利用多例示(multiply-1nstantiated)闪存通道控制器(FLC),其能够执行与附接有多个独立闪存器件的单个闪存数据通道相关联的大部分管理功能。从块102可能对闪存访问了解甚少这个意义上说,块102的功能可能有点宽泛。块102通常更多地涉及将闪存感知(flash-aware)通道编织(weave)成单个硬件实体。在一个示例中,实现块102的软IP可以进行参数化以支持用于应用程序的最大可能通道。例如,在一个实现中,通道的数量可以为2。在另一实现中,数量可以为8。在一个示例中,块102可以支持的特征包括(i)两个闪存通道;(ii)在每个闪存通道上的高达八个芯片启用信号(CE);(iii)闪存接口,包括异步正常模式、异步扩展模式、Togglel.O,ONFI2.3,ONFI2.l、Toggle2.O;(iv)硬件可配置的多个通道之间的专用ECC或共享ECC(例如实现块102的软IP包的参数化特征);(V)闪存接口上的8位数据;(vi)Toggle2.O或ONFI2.3的闪存接口规范的闪存接口上的高达200MHz的DDR速率;(vii)部分读取命令,(viii)随机读取命令;(ix)关于闪存写入/读取的CRC删除/插入(strip/insert)选项;(x)对4K字节数据高达64位的校正;(xii)512、2K、4K字节数据上的可配置的η位校正(η最大值=64);(xii)用于寄存器编程的32位AHB接口;(xiii)上下文命令在外部存储器(如DRAM或SRAM)上的存储;(xiv)在闪存通道控制器中的直通缓冲器(cut-throughbuffer);(xv)提供更好性能的独立闪存读写数据路径;(xvi)对各个闪存单元号(FUN)报告的有序状态;(xvii)针对每个闪存通道的数据路径支持一个读取缓冲控制器(BC)接口和一个写入缓冲控制器接口;(xviii)支持用于上下文检索的读取BC接口;(xix)支持用于上下文更新的写入BC接口;(XX)支持用于空闲资源指针(CFRP)的读取/写入BC接口。参考图2,图2示出了图1的块102的更详细的框图,该框图示出了根据本发明实施方式的示例闪存介质控制器(FMC)结构。在一个示例中,块102可以实现三个主要功能接口缓冲控制器(BC)接口、闪存器件接口以及处理器接口(例如,32位AHB等)。在框图的左侧和左上侧示出了缓冲控制器(BC)接口。在一个示例中,可以实现七个缓冲控制器接口(例如,三个读取接口BC_RD_I/F、三个写入接口BC_WR_I/F和一个读取/写入接口BC_RD/WR_I/F)。在框图的右侧示出了闪存器件接口。在一个示例中,可以实现两个闪存通道接口(例如,FLASH_I/F_0和FLASH_I/F_1)。在框图的右上侧示出了32位AHB接口。在一个示例中,32位AHB接口可用于对块102中的寄存器进行编程、读取状态及使用诊断寄存器。块102通常包括块(或电路)150、块(或电路)152、多个块(或电路)154a至154η、多个块(或电路)156a至156η、多个块(或电路)158a至158η、块(或电路)160、块(或电路)162、块(或电路)164、块(或电路)166、块(或电路)168、块(或电路)170、多个块(或电路)172a至172η以及多个块(或电路)174a至174η。电路150到174a至174η可以表示可实现为硬件、固件、软件、以及硬件、固件和/或软件的组合或者其他实施方式的模块和/或块。块150可以实现处理器接口逻辑(PIL)。块152可以实现数据DMA管理器(DDM)。块154a至154η可以实现闪存总线控制器(FBC)。块156a至156η可以实现闪存通道控制器(FLC)。块158a至158η可以实现数据传输路径(DTP)。块160可以实现上下文提取仲裁器(CA)。块162可以执行上下文空闲指针资源(CFPM)。块164可以实现消耗上下文管理器(CCM)。块166可以实现上下文检索端口(CRP)。块168可以实现上下文更新端口(CUP)。块170可以实现上下文指针列表端口(CPLP)。块170通常是可选的。块172a至172η可以实现数据DMA读取接口端口(DDRIP)。块174a至174η可以实现数据DMA写入接口端口(DDWIP)。并且,块172a至172η和块174a至174η通常形成数据DMA接口端口(DDIP)。在一个示例中,块150可以提供从块108至102的可寻址资源(例如,经由AMBAAHB-Lite接口)的接口。块150可以向所有可寻址资源提供接口并且向块102中的不位于块156a至156η内的子模块的配置和状态寄存器提供直接接口。块150也可以向各个块156a至156η中的可寻址资源提供接口。此外,块150可以包含一个上下文构成缓冲器(CCB),其中,处理器固件可以将实际介质上下文写入块102以经由块168存储到系统缓冲器。在一个示例中,块150可以包括以下特征至108的32位AMBAAHB-Lite从属接口;可以为输入时钟值(例如,HCLK)的一些划分值(或相同)的系统时钟(例如,SYS_CLK);对块102中的所有配置寄存器和状态寄存器以及处理器可寻址空间的访问;由处理器固件用于构建存储在系统缓冲器中的上下文的上下文构成缓冲器(CCB);分布到块156a至156η中的每一个的处理器接口,其中,对各个寻址资源的访问由处理器访问端口(PAP)处理,并且其包含可被块102中的多个子模块使用的寄存器。块150可以对没有逻辑地存储在块156a至156η中的可寻址资源执行所有寄存器解码和所有读取数据复用(multiplex)。块152通常管理两个数据传输,一个用于闪存编程(例如,从缓冲器到闪存器件的数据交易),另一个用于闪存读取(例如,从闪存器件到缓冲器的数据交易)。DMA数据路径通常包括从块156a至156η到相应的块158a至158η、数据DMA接口端口(DDIP)块172a至172η以及块174a至174η的分离的32位读写数据总线。块158a至158η可以包含ECC功能。DMA数据传输通常包括一系列事件,该一序列事件可以包括通过块102的其他子块(或端口块)访问相应的上下文。在一个示例中,一个DMA传输可以包括FLC请求、检索上下文操作、数据传输和FLC完成阶段。在FLC的请求步骤中,数据传输可以随着块156a至156η中的一个升高各自的请求线而开始。在检索上下文操作中,可以经由上下文检索端口(CRP)接口166从一个缓冲控制器检索相应的上下文。数据传输可以发生在DDIP、DTP和FLC块之间,在该过程中,上下文可以发送至DDIP并且可以被写回或不被写回。在FLC完成阶段,到选定块156a至156η的完成线可以升高以表示传输结束。DDM152可以执行检索上下文并向DTP块提供输入,以方便数据交易。块154a至154η通常在相应的闪存通道上执行至一组NAND闪存器件的低级接口信令。通常对各个闪存通道控制器(FLC)156a至156η存在一个闪存总线控制器(FBC)154a至154η。块154a至154η通常管理用于几个接口类型的闪存接口协议的各个周期的时序以及给定类型的不同时序模式(例如,异步、ONFI2.O同步、ONFI2.3同步、三星Togglel.O、三星Toggle2.0等)。在一个示例中,通过一组内部时序寄存器中存储的时序计数,可以控制周期的定时。块154a至154η的核心逻辑通常在与其余的块102不同的时钟域下操作。一般地,只有时序寄存器组(set)位于与其余的块156a至156η相同的时钟域中。通常在寄存器和FBC核心之间通常不需要同步逻辑,因为只有在FBC是静态(quiescent)时(例如,没有未完成(outstanding)操作)寄存器才被写入,所以寄存器被视为静态(static)的。块156a至156η通常执行对各个裸片的命令的调度。块156a至156η管理各个相应闪存通道上的命令序列。块156a至156η提供控制寄存器和状态寄存器,通过它们,固件能够对裸片编程并观察状态。每个块156a至156η均包括上下文管理和裸片管理。块156a至156η通常负责处理上下文。块158a至158η的每一个路由数据流量,并针对块154a至154η中的每一个、可选的内部ECC编码器/解码器以及相应的数据DMA接口端口(DDIP)之间的数据流启动每个接口的流控制。在一个示例中,可在`块158a至158η内实现内部ECC编码器/解码器。可选地,块158a至158η中的每一个可被配置为共享单个ECC编码器/解码器模块。可以通过相应的数据DMA管理器(DDM)模块152和相应的数据DMA接口端口(DDIP)块172a至172η和块174a至174η针对每次传送对块158a至158η进行编程。各个块158a至158η可以包括可在全双工操作模式下工作的独立闪存读写路径。块158a至158η保持数据传输中的当前区域计数以及各个区域中的当前双字(dword)计数。块158a至158η通常执行DDIP、ECC编码器及解码器和FLC块之间的流控制转化。块158a至158η保持每次传输的运行可校正(runningcorrectable)ECC错误和,并在传输结束后向块152提供该最终值。块158a至158η可以包含用于对ECC编码器及解码器编程的FMC寄存器。块150可以通过寄存器接口来访问寄存器。ECC模块通常能够进行4Κ字节数据上的64位校正。然而,可以相应地实现其他级别的校正以满足特定实现的设计标准。在一个示例中,解码器门计数可以为415Κ门,而编码器门计数可以为75Κ门。块160通常负责从块156a至156η接收对上下文的请求,从系统缓冲器(例如,通过缓冲控制器进行访问的DRAM)中检索请求的上下文,然后将上下文分发给块156a至156η。检索实际上可以经由对上下文检索访问端口(CRP)166的请求来执行。上下文为FMC的基本控制单元。上下文通常包含FLC执行命令所需的、或者FMC执行到系统缓冲器或来自系统缓冲器的相关数据传输(DMA)所需的所有信息。FLC的动作完全自主;因此,FLC需要仲裁经由缓冲控制器对系统缓冲器的访问,其包含由固件构建的上下文的链接列表(linkedlistofcontext)0块160通常提供仲裁,以及发起对块166的请求。然后,块160将检索到的上下文清楚地路由到相应的FLC目的地。块162通常被实现为块102的子块以提供空闲指针在其中对固件可用的单点(singlepoint)。块164通常被实现为块102的子块以提供由固件可以在完成后检测已完成的上下文的单点。块164通常在多个FLC源之间执行仲裁。FLC提供与上下文指针相关联的PASS/FAILECC状态。一旦获得上下文,块164更新上下文状态字段,然后将上下文提供给固件。在固件需要较长时间来读取已完成的上下文、以及块164内的内部存储器将变满的情况下,块164可以使用缓冲器来存储在当前报告的上下文之后进行排队的已完成的上下文。块166至174η通常实现端口接口。端口接口可用于与缓冲控制器通信。在一个示例中,在端口接口内可以实现QBFIFO块。下面的端口接口也可以被实现为端口接口的一部分上下文检索端口(CRP)166、上下文更新端口(CUP)168、上下文指针列表接口端口(CPLIP)170(可选)、数据DMA读取接口端口(DDRIP)172a至172η、数据DMA写入接口端口(DDWIP)174a至174η。在一个示例中,块102的信号接口可被分为4个主要接口ΑΗΒ接口、缓冲控制器接口、NAND和/或NOR闪存物理层(PHY)接口以及混杂(MISC)接口。缓冲控制器接口可以包括(i)用于通道O和通道I的DDIPBC写入接口,(ii)用于通道O和通道I的DDIPBC读取接口(iii)CRPBC读取接口,(iv)CUPBC写入接口,以及(v)CPLIPBC读取/写入接口。在一个示例中,块102可以以三个时钟实现。块102中的大部分逻辑可以在被称为系统时钟(例如,SYS_CLK)的时钟域上工作。系统时钟可以为AHB时钟。系统时钟通常具有FMC处理器(FARM)112的工作频率的一半的频率。第二时钟可以为所谓的闪存时钟(例如,FBC_CLK)。闪存总线控制器(FBC)154A至154η可以完全工作在闪存时钟域。在一个示例中,可在块154a至154η的数据流管理器(DM)模块中实现先进先出缓冲器(FIFO),以管理时钟FBC_CLK和SYS_CLK之间的频率。第三时钟可以为缓冲控制器时钟(例如,BC_CLK)。所有带有BC的接口端口均工作在缓冲控制器时钟域。可以在缓冲控制器时钟BC_CLK和系统时钟SYS_CLK之间实现缓冲器元件(例如,QBFIFO)ο参考图3,其示出了图解根据本发明实施方式的示例闪存通道控制器结构的块200的示图。在一个示例中,块200可以用于实现图2中的块154a至154η和块156a至156η。在一个示例中,块(或电路)200可以包括块(或电路)202、块(或电路)204、块(或电路)206、块(或电路)208、块(或电路)210、块(或电路)212以及块(或电路)214。电路202至210可以表示被实现为硬件、固件、软件、以及硬件和固件和/或软件的组合或其他实施方式的模块和/或块。在一个示例中,块202可以实现上下文处理协调器(CPC)。在一个示例中,块204可以实现上下文管理器(CM)。在一个示例中,块206可以实现裸片管理模块(DMM)0在一个示例中,块208可以实现闪存操作管理器(F0M)。在一个示例中,块210可以实现处理器访问端口(PAP)。在一个示例中,块212可以实现闪存总线控制器(FBC)。在一个示例中,块214可以实现数据流管理器(DFM)。块202可以帮助上下文信息流入和流出块200。上下文流可以由块204发起。块202主要涉及响应于提取或配置上下文的请求。为了获取上下文,块202响应块204对新的上下文的请求。首先,块202可以向在块200管理的裸片中进行仲裁并将选定的裸片或逻辑单元号(LUN)转发至块202的块206发起请求。然后,块202发出一个试图从系统缓冲器提取上下文的提取至上下文提取仲裁器(CFA)(例如,图2中的块160)。一旦提取到上下文,将上下文提交给块202。块202对上下文执行一些解释并转发上下文至块204。如果块206没有可用的发起上下文执行的裸片(LUN)J^206通知块202缺乏可用的裸片,然后块202通知(communicate)块204缺乏可用的裸片。块202还协助块200完成上下文的配置。此外,启动该流程的是块204,并且,向实现消耗上下文管理器(CCM)的块(例如,图2中块164)发出配置消息的是块202。当由CCM接收到配置消息并启动工作时,块202通知块204,然后块204可以继续处理上下文的执行。块202通常执行上下文的一些解释。具体地,为了确定上下文是否为处理器控制模式(PCM)上下文,块202可以解释上下文。当接收到PCM上下文时,上下文的提取(追加)应当停止。然后,块202等待块204开始执行PCM上下文并且在处理器控制模式完成时继续(reSUme)“标准”操作。在处理器控制模式间隔期间,块202确定提取到的上下文是否是15个双字上下文,而不是4个双字闪存上下文,块202在“标准”操作下将其发送至块204。在一个示例中,块204可以包括上下文状态机(CSM)、上下文提取管理器(CFM)、上下文配置引擎(⑶E)、上下文解释器(Cl)。块204通常负责管理正在由块200有效处理的上下文。块204通常执行有效上下文的簿记(bookke印ing)。上下文是向系统缓冲器提供闪存介质控制器(FMC)执行闪存交易和DMA所需的所有信息的数据结构。块204管理在闪存通道控制器级别上的上下文,由此主要涉及闪存交易有关的上下文管理。块204保持由块208执行对闪存通道上的闪存裸片执行命令和数据传输所用的信息。块206通常负责保持块200的操作所需的基于裸片的信息。块206管理裸片管理表中的各个裸片的信息并且在裸片之间仲裁对上下文表排队的访问。在一个不例中,块206可以包括更新裸片状态的裸片状态机。块206可以执行/监控多裸片操作。块206通常负责闪存命令,包括但不仅限于READ、COPYBACKREAD/COPYBACKWRITE、BLOCKERASE、PAGEPROGRAM,以及目标级命令,其中,目标级命令包括但不仅限于READID、READPARAMETERPAGE、GETFEATURES、SETFEATURES、SYNCHRONOUSRESET、以及RESET。块208通常处理应用到闪存通道的各个闪存操作序列。通常针对闪存介质控制器的每个闪存通道控制器(FLC)来实现一个块208。块208在块204的上下文表中的命令之间进行仲裁,并应用命令至块212。在一个示例中,块208本身支持来自0NFI2.O命令列表中的最常用的命令,以及在三星NAND闪存器件中出现的一些特定的(和类似的)命令。此外,可以通过纳米序列器(nano-sequencer)(在下面图9到图11中详细说明)支持其他现有和将来的命令。自身支持的命令可以无需处理器干预来操作,但其他命令通常使用一些级别的处理器支持。闪存命令可以被分解成可串行地应用于由块208控制的实际闪存裸片的原子“周期”。因为闪存命令通常涉及漫长的等待时间(例如,在数据从芯片中有效读取之前,页读取可能需要25μS),“命令周期”可以经常针对闪存通道的不同裸片“一个接一个”地(back-to-back)操作,从而减少了有效的、累积的等待时间。块208通常通过随着应用每个闪存循环而更新裸片的状态来管理闪存裸片。然后块208读取更新的上下文表来确定接下来什么循环应该(或可以)执行。NAND闪存存储器操作通常包括一个或多个闪存周期。通常存在四种类型的闪存周期命令、地址、数据输出(w.r.t闪存器件,例如,读取)、数据输A(w.r.t闪存器件,例如,写入)。周期类型大致转化为在块208和块212之间定义的操作类型。块210通常实现提供了从FMC100的AHB-Lite从属接口至200的可寻址资源的处理器访问的接口块。在本文讨论的大部分资源主要用于诊断目的,正如所有配置信号采用全局级别(作为共享的配置寄存器块的一部分)。例如,可以通过块210实现闪存通道数据缓冲器的完全访问。访问可以单纯作为早期验证支架(scaffold)而提供。然而,对闪存通道数据缓冲器的访问,也可以支持需要直接访问内部表的固件补丁(Pitch)。这样的访问可以通过块210提供。块210的特点可以包括简单的访问接口,符合AHB-Lite从属协议并且由FMC中的处理器接口逻辑(PIL)进行缓冲;提供对寄存器资源、上下文表、上下文高速缓存以及裸片管理表的读写访问;提供对位于块214中的闪存通道数据缓冲器存储器资源的读写访问。块210通常支持添加每通道配置寄存器的能力,尽管大部分配置寄存器通常被提供为块200的输入。类似地,可以支持状态寄存器和中断寄存器访问,尽管大多数状态寄存器和中断寄存器通常在块200以外产生。块210的主要逻辑组可以包括界面管理器(IF_MGR)、数据流管理接口(DM_IF)、寄存器块解码器(REG_DEC)、寄存器块复用器(REG_MUX)、中断处理器(INT_HND)和FLC全局寄存器(GL0B_REGS)。参照图4,示出了图解图3的上下文管理模块204的子模块的示图。在一个示例中,块204可以包括上下文表(CT)220、上下文状态机(CSM)222、上下文高速缓存(CC)224和上下文队列控制器(CQC)226。块204通常划分和执行闪存通道控制器上的操作的阶段,保持闪存通道上的所有有效上下文的优先级顺序,保持各个闪存通道上下文的状态,提供(例如,通过上下文高速缓存)执行完整交易所需的上下文的临时片上存储的最低量,保持正在执行的处理中的各个上下文的缓冲器指针,并通过使用上下文状态机(CSM)222确定下一状态的上下文以为各个上下文提供代理(agency)。可以在上下文表(CT)220中保持最小的上下文信息。表220通常提供了目前正在执行的上下文的优先级队列。上下文队列控制器(CQC)226可被配置为从上下文表220中移除已完成的上下文并压缩上下文表220,以消除间隙。参照图5,示出了图解图3的裸片管理模块206的子模块的示图。在一个示例中、块206可以包括裸片状态机230、裸片服务仲裁器232以及裸片管理表234。参照图6,示出了图解图3的闪存操作管理器(F0M)208的子模块的示图。在一个示例中,块208可被分为四个子模块命令仲裁器(CA)240、数据传输仲裁器(DTA)242、闪存操作格式化器(FOF)244、纳米序列器246。命令仲裁器240通常扫描上下文表以得到要应用的命令,然后与闪存操作格式化器(FOF)244通信以发送信号至闪存缓冲控制器(FBC)。一旦所有的“命令”部分已经运行,闪存为“数据阶段”准备就绪,数据传输仲裁器242发起FBC和数据流管理(DM)214之间的传输。最后,纳米序列器246解释特殊的“软上下文”以应用任何闪存可能需要的命令序列,即使命令序列本身不支持。参照图7,示出了图解图3的数据流管理子模块214的示图。数据流管理214通常提供闪存通道数据缓冲器存储器资源。在一个示例中,闪存通道数据缓冲器存储器资源可以包括直通缓冲器250和252。在一个示例中,直通缓冲器250和252可以被实现为其大小是可编程的。例如,缓冲器250和252的大小可以调整,以满足带宽指标。在一个示例中,缓冲器250和252可以包括静态随机存取存储器(SRAM)。然而,可以相应地实现其他类型的存储器以满足特定实施的设计标准。通常地,各个闪存通道实现两个直通缓冲器。参照图8,示出了图3的上下文管理器(CM)204的示例实施的示图。上下文管理器(CM)204通常负责管理相应的闪存通道控制器(FLC)正在有效地处理的上下文。CM204通常执行有效上下文的簿记。如前所述,上下文是向系统缓冲器提供闪存介质控制器(FMC)102执行闪存交易和DMA所使用的所有信息的数据结构。CM204管理FLC级别处的上下文,由此主要涉及与闪存交易有关的上下文管理。CM204保持闪存操作管理器(FOM)对闪存通道上的闪存裸片执行命令和数据传输所用的信息。CM204通常被配置为(i)发起并执行各自的闪存通道控制器上的操作的阶段,(ii)保持相应的闪存通道上的所有有效上下文的优先级顺序,(iii)保持相应的闪存通道上的各上下文的状态,(iv)提供用于执行交易的上下文的临时片上存储的最小量(或将该量最小化)(例如,通过上下文高速缓存224),(v)保持正在执行的处理中的各上下文的缓冲器指针,(vi)通过使用上下文状态机(CSM)222确定下一状态的上下文以为各上下文提供代理,(vii)保持目前正在执行的上下文的优先级队列(例如,上下文表220)中的最小的上下文信息。上下文队列控制器226通常被配置为从上下文表220中移除已完成的上下文并且压缩上下文表220,以消除间隙。上下文队列控制器(CQC)226是对上下文表(CT)220执行修改的逻辑块。在一个示例中,CT220可以被实现为寄存器块,其针对每个排队上下文被组织成一个实体。CQC226是对按照优先级队列组织的表执行操作的块。CQC226通常启动和执行上下文处理,并负责对上下文表上执行处理。主要处理通常包括追加、等待、修改、配置和压缩。处理由CQC226进行发起和执行。追加阶段是FMC提取新上下文并将这些上下文的条目添加至上下文表220的阶段。CQC226检查闪存上下文的内容以及由CPC202提供的上下文信息,并且基于内容和上下文信息来追加和创建条目。在一个示例中、上下文表的条目可以包括表示上下文表的条目是否有效的位(或标志)、表示上下文的状态的值、表示上下文高速缓存索引的值、表示闪存操作值、表示闪存裸片的值、上下文指针、指示是否禁用数据传输的位(或标志)以及表示平面地址的值。新条目通常以“有效”位设置(例如,为“I”)以及被设置为“QUEUED”的“上下文状态”的值开始。如果闪存操作是非法的,初始状态可以被设置为值“ILLEGAL”,并且该上下文条目会在处理阶段被删除。通常,通过CQC226所提供的上下文和信息来确定其他字段。新的条目通常都附加到压缩的上下文表220的末尾。因此,CQC226通常知道220上下文表的深度。当CQC226不再等待未完成的数据传输完成并且CQC226在给定的闪存操作周期内已经试图进行至少一次追加操作的时候,CQC226通常退出“追加”阶段。当上下文表220或上下文高速缓存224中不再有任何有效空间时,CQC226还可以离开“追加”阶段。上下文管理器204在全闪存操作周期之间可以或可以不被强制等待。上下文管理器204通常能够强制(enforce)最低闪存操作时期(例如,通过闪存操作周期寄存器)。例如,在闪存里除了编程或擦除命令之后的轮询以外基本上是闲置的情况下,这样的最小周期是所期待的。在这种情况下,因为没有追加或配置,所以上下文阶段需要很短的时间来执行。因此,通道倾向于处于这样的状态,其中,通道为忙碌的连续轮询闪存裸片(continuouslypollingflashdie),从而在不应该有能量消耗时在闪存接口上消耗能量。CQC226通常停留在等待阶段,直到预定的时间已经过期(例如,时间可在“闪存操作计时器”寄存器中指定)。当预定的时间已过期时,CQC226可以进入“修改”阶段。CQC发起的下一阶段通常为“修改”阶段。在修改阶段,上下文表220基于由闪存操作管理器(FOM)执行的闪存操作以及通过来自数据路径传输的结果而被修改。更新通常涉及到上下文的状态并因此通常通过上下文状态机(CSM)222发起。当状态更新发生时,CSM222发送更新状态和上下文表索引至CQC226。然后,CQC226更新上下文表220中的条目。当FOM结束其闪存接口处理周期时,修改阶段结束。FOM可通过发出一个信号(例如,F0M_CM_FLASH_PR0C_CMPLT)通知上下文管理器204闪存接口处理已完成。一旦修改阶段完成,CQC226可以对上下文表220上的上下文执行配置、压缩和追加。在此期间,上下文表220对FOM是不可访问的。CQC226可通过在特定的时钟周期内解除(de_assert)向FOM表示上下文表读取条目和上下文高速缓存读取数据有效的信号(例如,CM_F0M_CT_VALID)的方式,使上下文表220对FOM是不可访问的。当修改阶段完成后,CPC202发起“配置”动作。配置动作将CQC226置入CQC226搜寻检索已完成执行的条目的上下文表220的模式。CQC226将条目是否已完成执行的确定建立在上下文状态上。在上下文处于“完成”状态时,上下文可由CQC226配置。在一个示例中,上下文可以处于这样的状态,其中CQC226正在等待来自数据路径的有关上下文完成状态的通知。例如,在读取操作的情况下,上下文可以处于DATA_TRANSFER_DONE状态中,并等待ECC校验的结果。在这种情况下,CQC226可以临时暂停配置处理并等待从数据路径返回的状态。在此期间,CQC226允许“追加”发生。然而,一旦等待状态返回,上下文可由CQC226配置,并且消耗的上下文记录可以转发给CPC202(并最终到消耗上下文管理器(CCM)164)。当CQC226配置了上下文,CQC226清除上下文表220相应的条目的“有效”位。这个过程一直持续到CQC226已审阅了上下文表220中的每个上下文。当CQC226到达上下文表220中的有效上下文的末尾时,配置阶段完成。已由CQC226配置的上下文清除各自的表条目中的“有效”位。在没有一个机制来移动该表以填满空位(hole)的情况下,有效条目会在上下文表220中变得分散(或分段)。分散的上下文将使得上下文表难以扫描以及“追加”阶段更为复杂。为了确保上下文表220保持其优先级队列的特征,上下文表220可以被压缩。在压缩过程中,当CQC226配置了上下文,CQC226立即将被释放的条目之后的所有条目上移一个位置。当该处理完成后,所有有效条目都在优先级顺序列表的前面并且所有的空位被移除。与其他动作的情况一样,当压缩过程完成时,CQC226维护“完成”信号(或位)。在最后压缩阶段结束之后,CQC226可以开始追加阶段。CQC226通常知道处理器的控制模式。在处理器控制模式中,整个CM204暂停标准操作并且进入这样的模式,其中,FLC的操作本质上被闪存操作管理器208中的纳米序列器246执行的“软上下文”所驱动。软上下文具有与标准闪存上下文不同的尺寸。在一个示例中,软上下文可以包括全部的十五个32位双字,然而“闪存上下文”,即FLC执行的全部介质上下文的部分,通常仅包括四个32位双字。通常,当处理器控制模式(PCM)的“闪存操作”字段被设置为PR0CESS0R_C0NTR0L_MODE的上下文出现在上下文队列的顶部时,处理器控制模式(PCM)开始。通常,在上下文表220中,在PCM上下文后面应当没有有效条目,因为一旦CQC226对PCM上下文排队,CQC226应当暂停标准上下文的检索。当PCM开始时,CQC226可以经由信号(例如CM_CPCPR0C_CNTL_M0DE)通知CPC202。响应于该通知,CPC202可以取得在PCM上下文中的位置出现的“软上下文”。从提供给FOM的角度来看,FOM通常不知道在上下文表220中存在PCM上下文,而PCM上下文是在上下文表220中的其他有效条目的后面。上下文表220中的PCM上下文条目将其“有效”位作为O提供给F0M,直到CM204为FOM做好开始执行软上下文的准备。当FOM开始读取软上下文时,因为操作由存储软上下文的上下文高速缓存224提供给FOM208,CQC226监视(snoop)操作。当操作涉及DMA上下文(例如预取数据,设置读取数据缓冲器,或配置上下文指针)时,CQC226在上下文表220中指定(co-opt)上下文表中现在未使用的存储,并在上下文表中放置指针以用于跟踪。在这些DMA上下文完成时,F0M208通知上下文管理器204,其之后用标准方式配置上下文。CQC226在监视的同时,还寻找“取得下一软上下文”操作。当CQC226发现一个时,CQC226保持至取得下一软上下文的CPC202的信号(例如CM_CQCPCM_NEXT_CONTEXT)。在F0M208通知CM204软上下文执行已完成时,F0M208在“F0M/CM”命令接口上通知CM204。然后,CQC226解除到CPC的信号(例如CM_CPCPR0C_CNTL_M0DE),然后,标准操作继续。在一个示例中,CM_CPCPR0C_CNTL_M0DE可以被保持为表示CM204已经进入处理器控制模式并且现在准备好接收软上下文的信号的级别。CQC226的另一重要功能为监控超时情况。在一个示例中,CQC226可以包括计数器,其被配置为对系统时钟(SYS_CLK)周期的数量进行计数,使得同样的上下文表的条目位于上下文表220的顶部(B卩,在条目O)。如果计数值达到一个可编程“超时”计数器的值,上下文表220顶端的条目可以被认为已经超时。当条目被认为已经超时时,条目可以从上下文表220中移除,上下文指针返回到消耗上下文接口上的上下文处理协调器(CPC)202。上下文的返回状态是两个可能的“超时”状态之一。在第一种情况中,超时会可能起因于这样的情形,其中,闪存通道上的另一裸片忙碌并且正在降低R/B线。在这种情况下,状态表示超时可能是起因于另一裸片的超时。在第二种情况中,上下文的裸片被视为事故原因(culprit)。在这里,可以返回表示裸片是事故原因的不同状态。上下文表220本质上为条目的存储介质。上下文表的深度是参数化的。例如,在能支持每通道十六个裸片)的芯片的情况下,可以实现十六个条目。如果每个裸片(die)可以管理一个以上的操作,增加深度可以是有利的。上下文表220有最小函数(minimalfunction).CQC226对上下文表220实现大部分更深入的处理。然而,可以通过多重读取接口以及各个读取接口的复用逻辑来实施上下文表220。在一个示例中,针对读取访问能力,可以通过F0M208的接口以及到上下文状态机(CSM)222的接口来实施上下文表220。上下文表220也可以具有到CQC226的读取接口。上下文表220也可以被处理器访问。上下文表220还具有用于表的压缩阶段的“移动(shift)”能力。除此之外,CQC226可以使用简单的写入接口来更新上下文表220。在一个示例中,上下文表220可以在触发器(flip-flop)中实施。当上下文表220在触发器中实施时,不需要读取访问所需的仲裁。如果上下文表220的规模增加到超过大约1000个触发器,上下文表220可以在寄存器堆或SRAM中实现,但还应当实现额外的管理和访问仲裁。上下文高速缓存224是类似于上下文表220的另一上下文数据存储元件。上下文高速缓存224通常包括参数化的条目数。在一个示例中,条目的数量可以为八个。然而,可以实现其他数量的条目以达到特定实施方式的设计标准。例如,条目的数量可以被设置为比实际上是全流水线操作所需的数量多一个或两个。数量通常应当被设置得足够大,以允许在处理器控制模式中用于全“软上下文”的足够空间。如上所述,一个完全的上下文可以包括十五个32位双字。全部介质上下文的子集称为“闪存上下文”。闪存上下文通常是全部介质上下文的前四个双字(或DWORD/双字)。闪存上下文的四个双字通常包含由FLC用来执行由固件指定的完整操作的所有信息。在标准操作(例如,当FLC不处于处理器控制模式)中,只有闪存上下文的前两个双字存储在上下文高速缓存224。闪存上下文的其余部分一般存储在上下文表220中。上下文高速缓存224通常保持各个条目上的状态。在一个示例中,状态可以包括表示条目是空闲(FREE)还是已用(USED)的位。在一个示例中,可以在上下文高速缓存224中实现8个这样的位。当闪存上下文被写入到上下文高速缓存224的位置时,位置的状态变为USED。当CQC226在状态变换时接收到使位置清空的信息时,位置状态返回到FREE。在标准操作期间,上下文高速缓存224基于状态位通知CQC226上下文高速缓存224具有空闲条目的空间。如果存在空闲的位置,CQC226可自由地从CPC202请求上下文。在CPC202取得新的闪存上下文时,CPC202将闪存上下文作为一串(aburst)32位双字数据提供给上下文高速缓存数据224。当数据有效时,可以保持信号(例如CPCCM_ENQ_CTX_VALID)。上下文高速缓存224将数据写入空闲的位置。上下文高速缓存224预期CPC202将仅写入一个闪存上下文。在上下文表220顶端处的条目被表示为PR0CESS0R_C0NTR0L_M0DE操作的处理器控制模式中,上下文高速缓存224应当是完全空闲的。在处理器控制模式中,上下文高速缓存224应当预期从CPC202接收软上下文。上下文高速缓存224也可以预期软上下文包括15个双字。实质上,上下文高速缓存224用作从属,接收由CPC202提供的任何数据。CPC202负责将适量数据写入上下文高速缓存224。上下文高速缓存224对F0M208是可访问的,其在对闪存单元实现实际的命令时使用全部的闪存上下文信息。F0M208向32位双字提供地址,并且上下文高速缓存224在后续时钟周期响应请求的双字。在处理器控制模式期间,来自上下文高速缓存224的读取响应被可以基于操作的内容实现行动的上下文队列控制器(CQC)226监控。正如上下文表220,上下文高速缓存224也可以通过处理机接口访问。通常,上下文状态机(CSM)222被配置为,基于条目的当前状态以及或者由F0M208执行的操作或者数据路径操作状态而确定上下文表220中的各上下文的执行状态。在修改阶段中,每当F0M208应用命令或返回结果,CSM222被CQC226所调用。FOM命令通知接口和FOM上下文表读取接口的内容一般提供了CSM222确定下一状态的所需所有信息。在处置阶段中,当CQC226扫描上下文表220并且遇到处于上下文表条目为等待动作(action)的状态的上下文表条目时,CQC226调用CSM222(例如,TRANSFER_DATA状态或PREFETCH_DATA状态)。当遇到TRANSFER_DATA状态或PREFETCH_DATA状态时,CQC226根据数据传输状况等待来自数据路径(例如,DM、DDM、或者DTP)的信息。无论哪种方式,通常调用CSM222以对所关注的(inquestion)的上下文表条目确定下一状态。当上下文表条目移动至完成状态时(例如,COMPLETED或COMPLETEDWITHERROR(完成或带错完成)),CSM的222还负责通知裸片管理模块206。参照图9,图9示出了图6的闪存操作管理器(FOM)块208的示例实施的结构图。在一个示例中,块208可以实施5个子模块。例如,块208可以包括块(或电路)240、块(或电路)242、块(或电路)244、块(或电路)246、块(或电路)248。电路240到电路248可以表示为实施为硬件、固件、软件、硬件,固件和/或软件的组合,或其他的实施的模块和/或块。在一个示例中,块240可以实施为命令仲裁器(CA)。在一个示例中,块242可以实施为数据传输仲裁器(DTA)。在一个不例中,块244可以实施为闪存操作格式化器(F0F)。在一个不例中,块246可以实施为纳米序列器(nano-sequencer)。在一个示例中,块248可以实施为控制状态机(FOMCSM)。数据传输仲裁器242—般连接闪存操作管理器208至数据流管理器214。闪存操作格式化器244通常将闪存操作管理器208耦接至闪存总线控制器212。控制状态机248通常将闪存操作管理器208耦接至上下文管理器204。命令仲裁器240通常连接在闪存操作格式化器(FOM)244和控制状态机248之间。数据传输仲裁器242通常耦接在闪存操作格式化器244和控制状态机248之间。纳米序列器246—般耦接在闪存操作格式化器244和控制状态机248之间。命令仲裁器240—般扫描上下文管理器中的上下文表以得到要应用的命令,然后与闪存操作格式化器(FOF)244通信以发送信号至闪存总线控制器(FBC)212。参考图10,示出了图解根据本发明实施方式的示例闪存介质上下文布局300的示图。各个闪存交易通常由上下文表示。上下文是包括系统硬件执行与闪存库(flashbank)的交易和/或将移动数据到系统缓冲器中的位置或从中移动该数据所使用的所有信息的数据结构。上下文通常由固件构建,并被作为到上下文内容实际所处的缓冲控制器(BC)里的指针而提供给闪存通道控制器(FLC)。固件可以选择构建这些上下文的链接列表(例如上下文列表)从而允许更大的闪存操作的硬件自动化。各个被管理的闪存单元(例如裸片、LUN等)通常有一个上下文列表。通常,在普通操作期间,全部上下文只有一部分被FLC用于执行闪存交易。因此,只有被FLC所使用的部分存储在FLC的上下文高速缓存中。在正常操作期间均被存储在FLC的上下文高速缓存中的所有上下文的一部分通常被称为“闪存上下文”。正如可以从闪存介质上下文布局300中可以看到的,在一个示例中,闪存上下文可以仅包括全部十五个双字上下文的前四个双字。在一个示例中,根据本发明实施方式实现的上下文可以包括下列内容和/或字段闪存操作字段、闪存行地址字段、块描述指针/回拷(copyback)行地址字段、构成位字段、下一上下文指针字段、DMA跳过(skip)掩码字段、数据缓冲器指针字段、备用(alternate)数据缓冲器指针字段、逻辑块地址(LBA)字段、状态字段、闪存单元号(FUN)字段、可以包括元数据或构成数据指针、元数据、和/或闪存构成数据的字段、可以包括元数据或者闪存构成数据的字段、如果使用64位LBA模式字段则可以包括元数据或逻辑块地址(LBA)的上部的字段、可以包括上下文的错误校正编码技术(ECC)的字段。闪存操作字段可以包括操作码。在一个示例中,操作码可以包括八个位。操作码可以由固件产生,以向硬件传递要执行的操作。通常,操作涉及对闪存行列的至少一次访问。固件可用的基本操作码可以包括表示下列操作的值,包括例如RESET、SYNCHR0N0US_RESET、READ_ID、READ_PARAMETER_PAGE、GET_FEATURES、SET_FEATURES、READ_PAGE、PR0GRAM_PAGE、ERASE_BL0CK、C0PYBACK_READ/PR0GRAM、READ_STATUS、READ_STATUS_ENHANCED、PROCESSOR—OTNTR0L_MODE、MUILTPLANEPROGRAMPAGE以及MUILTPLANEPROGRAMPAGEEND。闪存行地址字段可以包括闪存存储器中的访问的页的行地址。在一个示例中,闪存行地址字段可以包括与页面地址串接的块地址。闪存行地址可以在三(3)个行地址操作周期期间提供给闪存阵列。对于清除操作,仅提供闪存存储器中的访问的块地址。对于仅使用一个字节地址的READ_ID操作,在一个示例中,字节可以被放入闪存行地址的最左边的字节(MSB)。在闪存操作为PR0CESS0R_C0NTR0L_M0DE时,闪存行地址字段也可以用作软上下文指针。在遇到处理器控制模式操作时,FLC可以使用闪存行地址字段的值作为软上下文的系统缓冲器地址。在将数据移至系统缓冲器的位时,DMA跳过掩码字段可以基于位的状态(例如‘I’或‘0’)而允许转发或者跳过页扇区(分区)。在一个示例中,DMA跳过掩码字段可以被实现为低有效(activelow)跳过掩码或转发掩码(例如‘I’表示发送而‘0’表示跳过相应页)。DMA跳过掩码字段可以主要用于读取/修改/写入(RMW)操作,这对少量扇区的交易而言是共同的。例如,在8K的页器件上,页通常被分成十六(16)个扇区。在DMA跳过掩码字段的特定位为I时,在一个示例中,相应的扇区可以被写入系统缓冲器或从中读出。在该位为O时,相应的扇区可以从被写入系统缓冲器中或从系统缓冲器读出中省略。在一个示例中,也可以存在允许数据从两个分离的源写入的模式包含未修改的页数据的缓冲器块,以及包括修改的页数据缓冲器块。对于这些情况,状态(例如‘0’)可以用于表示扇区从包含更新的页数据的块而写入,其他状态(例如‘I’)用于表示扇区从包含未修改的页数据的块而写入。位的位置也可以是有意义(significant)的。例如,最高有效位(MSB)通常对应于扇区中的第一页或最小数量的页的位。最低有效位(LSB)通常是对应于扇区的最大数量的页的位。如果在页中存在小于16个的分区,最低有效位可以被视为是可忽略的。然而,可以实现其他数量的条目以达到特定实施方式的设计标准。在一个示例中,在实现博斯乔赫里霍克文黑姆(bose_chaudhuri_hocquenghem)错误校正码(ECC)时,掩码粒度可以是一(I)个信息字。下一上下文指针字段可以指向包括由固件构建的上下文列表(例如上下文的链接列表)中的下一上下文的指针。如果“下一上下文指针”等于被固件编程到FLC里的“列表末尾指针”,硬件可以假定检索已到达末尾。硬件在继续遍历链接列表之前可以等待“列表末尾指针”值的改变。也可以定义“空指针”值,其将停止硬件的表检索。在一个示例中,块描述指针(chunkdescriptorpointer)/回拷行地址字段,通常对于回拷命令将要回写入的缓存数据提供闪存存储器页的行地址。行地址为块地址和页面地址的串接。在另外的示例中,回拷闪存行地址字段与非回拷上下文的未使用的字段共享。例如,块描述符指针/回拷行地址字段可以用来提供缓冲器分配管理器(BAM)的辅助字段。BAM辅助字段可以包括由缓冲器分配管理器(BAM)管理的数据缓冲器中的数据块的描述符的指针。块描述符字段可以用于缓存管理。块描述符可以包括缓冲器管理中所用的块地址(例如在系统缓冲器中)、有效位、脏(dirty)位、传输暂停计数、状态、LBA和指针。在DMA已经完成之后,块描述符指针通常被闪存介质控制器(FMC)中的DMA管理器传送至BAM。块描述符指针也可以被传送到BAM,以便如果标志位(例如BAM查找所需要的位)被设置则获得缓冲器数据指针以开始DMA。块描述符指针/BAM辅助字段也可以被固件设置为通用BAM辅助字段,并且内容可以由固件根据BAM序列器具体编程而确定。通常,块描述符指针/BAM辅助字段对硬件是完全显而易见的。数据缓冲器指针字段通常提供指向将要从缓冲控制器传送到闪存介质或者从闪存介质传送到缓冲控制器的实际数据的指针。在上下文起初被取得时,数据缓冲器指针字段存在于上下文中,或者如果设置BAM查找所需要的位,数据缓冲器指针字段可以被BAM通过BAM查找而填入(populate)。数据缓冲器指针字段通常提供块中的第一个字节的地址,而不一定为第一个有效LBA。备用数据缓冲器指针字段也是从缓冲控制器传送到闪存介质或者从闪存介质传送到缓冲控制器的数据的指针。在操作使用进/出缓冲器的多源或多目的地时,使用备用数据缓冲器指针字段。备用数据缓冲器指针主要可以用于读取/修改/写入(RMW)操作。在主机(host)执行小于整个页的操作时,主机进行RMW操作以更新页。备用数据缓冲器指针可以用于读取操作,以便将旧的页数据存储在一个临时块中。然后,在实施写入操作时,跳过掩码可以用于从包括未修改的页数据的介质块或包括要被更新的数据的主机块中选择扇区(或分区)的写入源。元数据字段通常包括与闪存页有关的元数据(例如,诸如LBA、顺序编号、坏块指示符等)。通常可以预期所有的元数据会容纳在上下文中。否则,一个元数据缓冲器指针可以包含在上下文中以代替元数据,从而元数据可以存储在系统缓冲器中或从系统缓冲器中检索。对于写入,元数据字段通常被固件填入并且被硬件插入到页中。对于读取,对于固件来说,通常期望请求读取页中的元数据的内容。对于这些情况,上下文可以被配置为从页中读取元数据到上下文中。在一个示例中,可以由元数据大小寄存器确定以字节表示的元数据的大小。闪存配置数据字段通常与元数据字段共享字节位置,并通常用于传输有限数量字节的操作(例如READ_ID、GET_FEATURES、SET_FEATURES、READ_STATUS等)。由于与这样的传输有关的字节数通常较小(例如SET_FEATURES和GET_FEATURES可以使用4个字节;READ_ID通常使用5个字节;READ_STATUS可以仅使用I个字节),数据仅在上下文中而不是在一个独立的缓冲器位置中传输。如果与这样的传输有关的数据超出在上下文中分配的空间,可以使用闪存配置数据指针字段。“GET_FEATURES和SET_FEATURES”命令往往假定使用4个字节。在一个示例中,从READ_ID命令寄存器的读取字节的数量中可以获得READ_ID命令所需的字节的数量。在闪存配置数据字段用于配置数据时,所有的7个双字均被硬件更新,并且固件仅需要读取适当的字节。元数据缓冲器指针字段包括页元数据(例如包含在闪存页的用户数据中的管理数据)的位置的地址。因为在许多应用中所有的元数据可以存储在上下文自身中是预期的,元数据缓冲器指针字段可以省略。在要从外部的系统缓冲器中检索元数据时,可以使用元数据缓冲器指针字段。通常只有元数据被储存在外部并且不在上下文中,才使用元数据缓冲器指针字段。在一个示例中,可以实现配置位,以指定元数据是储存在外部还是储存在上下文之内。在一个示例中,外部系统缓冲器可以被实现为包括闪存介质控制器(FMC)的芯片的外部的存储器(例如DDRRAM)。在又一示例中,外部的系统缓冲器可以被实现为FMCIP的外部的片上RAM。在另一示例中,外部的系统缓冲器可以包括FMCIP内的存储器。通常,外部的系统缓冲器可以为上下文的外部的任何存储。闪存配置数据指针字段通常提供取得的或需要被写入一个闪存单元的构成数据的位置地址。由于元数据被分配给上下文字段以用于数据交易,所以与READ_ID、GET_FEATURES和SET_FEATURES命令有关的闪存配置数据可以被存储在上下文中。然而,就像元数据的情况那样,如果数据大小超过上下文中为闪存配置数据所分配的空间,系统缓冲器的数据的指针可以被用于访问。逻辑块地址(LBA)字段通常提供页中的第一个数据分区的LBA。针对系统缓冲器和闪存的各个扇区,LBA通常被编码到数据保护。由于页为连续的LBA组,只有该组中的第一个LBA用作上下文的一部分。LBA可以用于为扇区页的缓冲器CRC做种(seed)。针对元数据的LBA部分,LBA也可以有选择地进行校验。例如,可以实现配置位以选择是否相对于元数据的LBA部分来校验LBA。例如,在配置位被设置时,LBA可以对元数据的LBA部分进行校验。在一个示例中,只有低32位可以用于做种。闪存单元号(FUN)字段可以由固件用作用于确定哪个闪存单元将应用上下文的标识符。该确定对硬件而言是清楚的。闪存单元号字段被固件单独地用于管理目的,使得在上下文已经被硬件消耗之后,一旦标识符被提供回固件,固件可以协调上下文。构成位字段通常包括用于构成上下文并以硬件流中的各种点确定上下文(以及上下文表示的传输)的处理的所有位。在一个示例中,上下文配置位字段中的可用的上下文位和字段可以包括但不限于以下消耗上下文管理器中断启用;部分命令启用位,使用闪存接口上的部分命令功能启用/禁用执行DMA跳过掩码;禁用对系统缓冲器的DMA;禁用任何从或到FLC本地缓冲器的数据传输;扰码器功能启用,启用/禁用扰码器功能;ECC错误检测中断启用;ECC宏旁路,启用/禁用读取数据的解码或附加奇偶性至写入数据;缓冲器CRC启用;忽略元数据信号(位),使元数据在读取时不被转发到系统数据缓冲器、系统缓冲器或上下文,并在写入时防止从任何源插入元数据(例如,叶子元数据字段空白);信号(位),使用于DMA的用户数据保持元数据(例如,在读取时转发元数据到数据缓冲器,以及在写入时从数据缓冲器接收元数据);信号(位),指示是否要将元数据中的“开始LBA”字段与上下文中的开始LBA字段相校验;信号(位),指示是否在缓冲器中保持ECC奇偶校验字段(例如,在读取时将ECC奇偶校验字节传输到系统缓冲器,以及在写入时将ECC从系统缓冲器传输到闪存);信号(位),指示是否使用平面缓冲器(例如,数据传输进/出非托管存储器区域)而不是托管数据缓冲器(例如,可用于确定在量子突发中传输多少数据到系统缓冲器);信号(位),指示是否使用用户数据扇区长度配置以确定扇区的数据长度(例如,如果该位是被清除的,扇区的数据长度可以根据保留区域扇区长度配置而确定);信号(位),指示是否传输闪存配置数据(例如,将闪存数据读取入到上下文中,或写入来自上下文的闪存数据);信号(位)指示是否传输全部(full)原始闪存页面到系统缓冲器或从中传输全部(full)原始闪存页面;信号(位)指示是否使用备用缓冲器跳过掩码(例如,使跳跃掩码用于标识(mark)将被传输进/出被备用数据缓冲器的指针所指向的缓冲器块的扇区(分区),而不是省略扇区的传输;在启用扰乱器时为各个分区定义扰乱器种子的字段。指示是否传输一个全部原始闪存页面到或从系统缓冲器的信号,其实质上与大多数其他选项是互斥的。指示是否传输一个完整的原始闪存页面到或从系统缓冲器的信号通常超越于(overide)于其他位的设置。通常传输一个完整的原始闪存页到或从系统缓冲器的特征使固件掌握(getat)不属于任何分区的页的未使用区域。传输闪存配置数据信号可用于诸如ops、READID命令,GETFEATURES,以及SETFEATURE。数据的大小,可由配置数据长度寄存器确定。数据将出现在元数据中通常由上下文占据的位置。状态字段通常包括可用于向固件返回状态的位。在一个示例中,在状态字段可以包含编程/擦除操作所用的通过(pass)/失败(faiI)状态。在另一示例中,状态字段还可以包含读取操作中ECC逻辑检测到的错误数量。然而,可以实现该字段的其他用途,以满足特定实现的设计标准。在一个示例中,状态字段可配置为表示闪存页面中的错误数量和用于上下文的管理器的完成代码(例如、清除(clean)、编程/擦除错误、校正的读取错误、无法校正的读取错误、从系统缓冲器中的预取(prefetch)上的缓冲器CRC错误、操作超时、LBA/元数据不匹配、非法操作等)。如上所述,上下文是确定了命令执行的数据结构。上下文为固件和硬件之间的通信单元。参考图2和图3,一般的上下文流可以总结如下。固件与150内存指针一起写入FMC102的处理器接口逻辑(PIL)的上下文结构缓冲器(CCB)中的上下文。多个上下文可以通过使用上下文结构中的下一指针字段而由上下文中的固件链接。硬件通过上下文更新端口(CUP)168来执行到内存指针相关联的位置的上下文的存储器写入。例如,固件可以通过各自的闪存通道控制器(FLC)156a至156η中的裸片管理模块(DMM)206中的裸片管理寄存器来启用特定的裸片的执行。可以为各个裸片提供一套独立的管理裸片寄存器。DMM206将寄存器中的信息发送(communicate)至各自的闪存通道控制器(FLC)156a至156η中的上下文管理器(CM)204。CM204可以通过上下文检索端口(CRP)166从内存中提取启用上下文,并且调度对各自的闪存通道总线上的命令的执行。CM204通常调度命令并且指示用于面向数据操作的数据DMA管理器(DDM)块152。DDM块152通常从存储器中提取上下文以通过CRP166从上下文中提取数据参数。在由DDM152和CM204进行的上下文成功地完成以后,状态被更新到消耗上下文管理器(CCM)164。在完成后,可由硬件产生中断并且固件可以读取出给定上下文下的完成状态。包括块172a至172η和块174Α至174η的数据DMA接口端口(DDIP)通常负责DTP158a至158η、系统缓冲控制器和相关上下文之间的实时数据路由。各个数据传输可包括一个或多个分区。各个分区可以包括一个或多个区域。实际格式来自FMC(例如,使用寄存器)以及来自相关上下文的配置设置而确定。设置可按各传输、各分区以及各区域基础进行分类。路由可根据数据传输格式的区域类型以及其他配置而确定。路由通常包括合并和分片(paddingandstripping)功能。各个数据传输涉及的所有上下文的双字。因此,DDM152发起上下文对DDIP的访问,其中DDIP在实际数据移动之前,将所有上下文双字读取入其自己的上下文高速缓存区域。一旦检索到相关上下文,DDIP以适当的配置设置来编程其内部控制逻辑,并提供一些配置信息至相应的DTP158a到DTP158η。然后DDIP跟踪各个分区内的各个区域,并且建立用于适当路由的逻辑。在实际数据传输中,如果数据被重定向到上下文,则DDIP会切换上下文访问至写入模式。当传输完成后,DDIP会通知DDM152传输和上下文访问都已完成。DDIP可以执行错误校验。例如,DDIP可配置为执行系统缓冲器CRC校验和/或确认接收到的LBA符合来自上下文的预期的LBA。这些校验以及系统缓冲器ECC字节错误(启用时)的结果通常都传回DDM块152。DDM块152可以转而将信息传至选定的FLC156a至156n。DDIP也可以配置为生成和插入CRC。可以通过从各分区收集所有用户数据字节而构建整个用户数据。同样,可以通过从各分区收集元数据字节而构建整个元数据。在一个示例中,可以收集元数据直到达到预定的上限。在一个示例中,DDIP可以具有默认配置,其中DDIP仅路由已用用户数据区域的部分进/出系统缓冲器,并且仅路由已用数据区域部分进/出上下文元。ECC区域可以分片/合并。可以修改默认配置以提供多种变化。例如,DDIP可以被配置为(1)保持整个用户数据区完好,包括未使用的字节,(2)使进/出系统缓冲器域的元数据区域保持用户数据,(3)分片/合并元数据区域,(4)保持ECC完好,和/或(5)保持整个分区完好(例如,没有分片/合并)。上下文布局结构300(在上面结合图10所述的)可用于任何目标中的页的编程。顶端模块之间的示例编程数据流可以概括如下。固件编程以CCB中的关联存储器指针、在处理器逻辑接口(PIL)150中、以命令对上下文编程。CCB通过CUP_168执行到存储器的写入操作。固件可以启用各自FLC156a至156η中的DMM206以允许上下文的执行。各自的FLC156a至156η中的CM204通过CRP166从内存提取上下文,并且处理用于调度各自的闪存总线控制器(FBC)154a至154η上的命令的上下文部分。DDM与FLC152针对上下文进行通信,DDM152通过CRP166提取上下文,并且提供数据块指针至各自的DTP块158a至158η。各自的DTP块158a至158η通过从上下文中解码的指针从内存请求数据。该请求是通过块172a至172η和块174a至174η组成的DMA接口数据端口(DDIP)进行的。数据DMA接口端口(DDIP)在量子突发中从存储器读取数据。从内存中读取的数据通常通过由块172a至172η和块174a至174η形成的DDIP传递到DTP。在DTP中,如果启用的话,数据可以进行CRC校验,并且如果启用的话,ECC可以添加到用户数据并传递到各自的FLC156a至156η。如果数据的完整性失败,状态更新到CCM块164。各自的FLC156a至156η中的闪存操作管理器(F0M)208调度编程周期有关的命令和数据至各自的闪存总线控制器(FBC)154a至154η。各自的FBC154a至154η以闪存接口规范对闪存总线接口执行编程操作。各自的FBC154a至154η读取闪存操作完成的状态。在操作完成时,各自FBC154a至154η与各自FLC156A至156Ν通信,并且各自的FLC156a至156η与CCM164通信。CCM164保持中断至固件以通知位于在CCM164相关的上下文寄存器中的上下文已完成,并且准备好固件的检查。然后,固件从CCM164读取上下文。当固件完成上下文的读取和处理时,固件可以保持允许加载另一消耗的上下文的信号(例如,位)。基本的闪存读取数据流可描述如下。一个上下文结构用于读取任何目标页。固件程序以CCB中的关联存储器指针在处理器逻辑接口(PIU150中以命令对上下文编程。CCB通过CUP_168执行到存储器的写入操作。CCB通过CUP168执行对存取器的写入.固件启用各自的FLC156a至156η中的DMM206以允许执行上下文。各自的FLC156a至156η中的CM204通过CRP166从存储器提取上下文,并且处理调度被用于各自的FBC154a至154η的命令所需的上下文部分。各自的FLC156a至FLC156n与各自的FLC154a至154η进行通信以执行对目标的读取命令。各自的FLC156a至156η与DDM152针对上下文进行通信,DDM152通过CRP166提取上下文,并且提供数据块的指针至各自的DTP块158a至158η。在接收到从闪存通过各自的FBC154a至154η到各自的DTP158a至158η的数据时,各自的DTP158a至158η通过来自上下文的解码的指针请求要写入存储器的数据。各自的DTP158a至158η也通过由块172a至172η和块174a至174n(DDIP)形成的DMA接口数据端口这样做。DDIP在量子突发中将数据写入到存储器。在DTP中,如果启用的话,数据进行ECC校验,并且如果启用的话,CRC添加到用户数据并且该数据传到DDIP。如果数据的完整性失败,状态更新到CCM块164。在操作完成后,读取操作的状态被提供到CCM块164。CCM块164保持中断至固件以通知固件,在CCM块164的上下文寄存器中位于的上下文是完整的,并以为固件检查做好准备。固件读取来自CCM块164的上下文。当固件完成上下文的读取和处理,固件可以保持允许加载另一消耗上下文的信号(例如,位)。参照图11,图中示出了根据本发明实施方式的闪存页中的示例分区部分。NAND闪存存储器通常被组织成包含用户数据的页。目前,最常见的页大小为8KB。除了用户数据的8KB,NAND闪存存储器具有备用区,其中可以包含用于多种用途的额外的字节。首先,备用区可以包含闪存管理信息(例如,LBA,序列号,坏块索引等),这通常被称为页元数据。接下来,备用区可以包含错误校正码(ECC)的校验和/或端到端(endtoend)数据完整性检查(EDC)的信息。ECC校验可用于用户数据和元数据(例如,检测和校正错误)的数据保护。在一个示例中,除了8KB的用户数据,还可以有元数据、ECC,EDC之间可以共享的额外的512字节的备用区。物理页可以包括多个分区。根据本发明实施方式的闪存介质控制器可以使用传统页分区(regioning),但允许分区是可配置(例如,通过寄存器等)的。在一个示例中,可使用分区布局400配置各分区。可使用分区布局410配置各分区。当使用分区布局400时,每个分区可以包括跟在ECC406之后元数据区404、以及元数据区404之后用户数据字段402。ECC406通常保护用户数据402和元数据404。一般,分区400的大小以及用户数据402和元数据404的大小是可配置的。此外,ECC区406的大小依存于用户数据402和元数据404的大小。根据本发明方式的实施的闪存介质控制器通常支持如同常规页格式结构的邻接页分区(abuttedpageregioning)。邻接页分区指的是多个分区邻接。然而,该分区并不局限于2的幂;分区可以是任意大小。通过跟随任何大小的分区,根据本发明实施方式实施的闪存介质控制器可支持较大的扇区、DIF、CRC和/或其他元数据。通常,所有的大小是可编程的。当使用分区布局410时,每个分区可以包括第一字段412和第二字段414。第一字段412通常包含可以是原始、加扰(如果启用)和/或加密(如果启用)的主机扇区数据。在一个示例中,用户数据的大小可以512/1K/2K/4K字节加上η个双字,其中η的范围例如从O到32。在一个示例,当前LBA可用于为加扰和加密引擎做种(seed)。第二字段414可以包含通常被称为页元数据的闪存管理信息(例如,LBA、序列号、坏块索引等)。使用分区布局410,有两种元数据可以被放置在物理页中的方式(1)元数据跨分区分布,(2)整个元数据只放在最后一个分区。当元数据跨分区分布时,元数据一般被视为该分区的一部分。分区的大小以及用户数据和元数据的大小一般是可配置的。在一个示例中,用户数据和元数据的大小可以是可编程的(例如,通过寄存器)。通常,固件负责确保大小在物理页的大小的限制内进行编程。参考图12A和图12B,图12A和图12B是示出了示例闪存页结构的示图。根据本发明实施方式实施的闪存介质控制器一般采用传统的页分区,但允许页分区是可配置的(例如,通过寄存器)。在一个示例中,可以使用分区布局400实施闪存页结构500。在另一示例中,可以使用分区布局410实施多个闪存结构页510、515、520、525、530、535。在一个示例中,在页结构500中的分区的元数据区中,元数据可以由左到右地表示。例如,通过具有8K字节大小的页和512字节的备用区的闪存器件,512字节大小的主机扇区可适应16个分区,其中每个分区最大具有544字节。在一个示例中,每个分区可以包括512字节的用户数据、四(4)字节的元数据、以及多达28字节的ECC。如果元数据总数为28字节,元数据的4个字节将进入前7个分区的每个分区的元数据区,其余9个元数据区(例如,分区7到15分区中)将填充O或者或留作其他用途。当DMA接口端口数据处理页时,数据DMA接口端口保持页处理中的处理的追踪,从而数据DMA接口端口知道在何处开始插入和收集元数据,并且知道码字(codeword)边界所处的位置,其也是分区边界所处的位置。虽然该分区的大小是可编程的,分区的大小不应该大于ECC编解码所能够工作的最大的码字。例如,BCHECC对1K+80信息字支持多达48位校正。对于每个校正位,添加16位校验。使用分区布局410,可实施各种闪存结构页510、515、520、525、530、535。在一个示例中,闪存页可分为8个分区,其中每个分区使用分区布局410构成。闪存页中未使用的备用区,可以两种方式利用。在第一示例中,元数据可以跨分区分布,如同分区的一部分(结构510、520、530所示)。在第二示例中,整个元数据可以只放在页的最后一个分区(结构515、525,535所示)。在第一示例(结构510和515所示)中,LDPC的信息字等于主机扇区大小。在这个示例中,各分区都附加有分离的EDC和ECC校验区。EDC以分区中的主机扇区的BA做种。在第二示例(结构520和525所示)中,LDPC的信息字大于主机扇区大小。在这个示例中,每两个分区附加有分离的EDC和ECC校验。EDC以分区中的最后的主机扇区的LBA做种。在第三个示例(结构530和535所示)中,LDPC的信息字小于主机扇区的大小。在这个示例中,一个分区内附加有两个ECC校验和一个EDC。EDC以分区内的主机扇区的LBA作种。由于页分区是配置的,可相应地实施其他页结构以满足特定实施的设计标准。参照图13,图13示出了根据本发明实施方式的处理600的流程图。处理(或方法)600总体上提供了用于根据本发明实施方式处理元数据的步骤。在一个示例中,处理600可以包括步骤(或状态)602、步骤(或状态)604、步骤(或状态)606、步骤(或状态)608和步骤(或状态)610。在步骤602中,处理600可以定义与存储在上下文中的预定义的元数据大小相对应的阈值。在步骤604,处理600可以等待从闪存器件读取元数据或写入元数据至闪存器件的请求。当要执行读取或写入操作,处理600可以移动至步骤606。在步骤606中,处理600可确定元数据的大小是否大于预定阈值。当元数据的大小大于预定阈值,处理600可移动至步骤608。当元数据的大小小于或等于预定阈值,处理600可移动至步骤610。在步骤608中,处理600可以存储从闪存器件中读取的元数据至与读取交易相关的上下文结构中(例如,通过上下文更新端口(CUP)168),或者从与写入交易(例如,通过上下文检索端口(CRP)166和BC_RD_I/F)相关的上下文结构中检索将编程入闪存器件的元数据(例如,通过上下文检索端口(CRP)166和BC_RD_I/F)。在步骤610,处理600可以存储从闪存器件中读取的元数据至与读取交易相关的上下文结构中所定义的元数据指针所指示的位置(例如,在外部系统缓冲器中),或者从与写入交易相关联的上下文结构中定义的元数据指针所指示的位置(例如,在外部系统缓冲器中)检索将被编程至闪存器件中的元数据。例如,在编程命令中,将通过各自的数据DMA读取接口端口(DDRIP)172a到172η和BC_RD_I/F检索元数据,在读取命令中,将通过各自的数据DMA写入接口端口(DDWIP)174a到174η和BC_WR_I/F更新元数据。在完成步骤608或者步骤610中的交易后,处理600可以返回的步骤604。根据本发明实施方式的闪存介质控制器(FMC)总体上提供了处理存储在系统缓冲和/或闪存介质控制器中的元数据的各种方法。根据本发明实施方式的闪存介质控制器可以包括以下用于元数据处理的特征。可以在每个上下文基础上定义元数据信息,其中,在每个页基础上定义上下文。当元数据的大小小于或等于预定阈值,可以在上下文结构中存储完整的元数据。在闪存编程周期中,来自上下文(例如,通过CRP166和BC_RD_I/F)的元数据可以存储在闪存目标中,并且在读取周期中,从闪存目标中读取的元数据可以被存回上下文结构中(例如,通过CUP168)。当元数据的大小大于预定阈值时,可以在上下文中定义元数据指针,而不是在上下文结构中存储元数据。元数据指针可以提供地址指针,以在闪存编程周期从外部系统存储器检索元数据(例如,通过各自的DDRIP和BC_RD_I/F)和将来自闪存读取命令中的读取数据存储至上下文指定的元数据指针所指示的外部系统存储器中的位置(例如,通过各自的DDWIP和BC_WR_I/F)。在另一示例中,FMC可被配置为元数据的一部分由上下文处理,而元数据的另一部分是由外部系统存储器处理。元数据的大小通常由闪存交易层(FTL)定义。在一个示例中,FTL可以使用大约12个字节的元数据。图10中所示的上下文300中的最大可用备用区为28个字节。考虑到上下文300的FTL元数据大小参数和备用区参数,可以选择28字节的预定阈值。例如,当元数据的大小小于等于28字节,可以在闪存介质控制器中的闪存通道控制器中的上下文结构中存储完整的元数据。在闪存编程周期中,来自上下文的元数据可以存储在闪存目标中,并且在读取周期,从闪存目标读取的元数据可存储在上下文结构中。当元数据的大小大于28个字节时,闪存通道控制器在上下文中定义指向外部存储器中存储元数据的位置的元数据指针,而不是将元数据存储在上下文结构中。在页大小为主机大小的倍数的情况下(例如,如图12所示),元数据一般对每个主机用户数据进行分配。例如,对于IK字节的页大小和1024个字节的主机大小,在闪存编程命令中,来自上下文的28个字节可分配在两个主机用户数据之间(例如,对每个用户数据14个字节的元数据)主机用户数据I(512个字节)+元数据I(14个字节)+ECC+主机用户数据2(512个字节)+元数据2(14个字节)+ECC。一般通过使用ECC保护元数据。ECC的使用通常对元数据部分提供了完整性校验和校正。本发明的各种信号,一般均为“开”(on)(例如,数字高,或I)或“关”(off)(例如,数字低,或O)。然而,信号状态的特定极性的开(例如,保持)和关(例如,解除)可以相应地被调整(例如,颠倒),以满足特定实施方式的设计标准。正如相关领域技术人员所显而易见的,图1到图9以及图13的示图所实施的功能可以使用一个或多个传统的通用处理器、数字式计算机、微处理器、微控制器、RISC(精简指令集计算机)处理器、CISC(复杂指令集计算机)处理器、SMD(单指令多数据)处理器、数字信号处理器、中央处理单元(CPU)、算术逻辑单元(ALU)、视频数字信号处理器(VDSP)和/或类似计算机来实现,并且可以根据本说明书的教导进行编程。还正如相关领域技术人员所显而易见的,熟练的编程员可以基于本发明的说明来编制合适的软件、固件、编码、编程、指令、操作码、微码、和/或编程模块。软件通常从一个中等或多个介质中由机器实施的一个或多个处理器来执行。本发明也可以通过ASIC(专用集成电路)、平台ASIC、FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、CPLD(复杂可编程逻辑器件)、海量门(sea-of-gates)、RFIC(射频集成电路)、ASSP(特定应用标准产品)、一个或多个单片集成电路、排列为倒装芯片(flip-chip)模块和/或多芯片模块的一个或多个芯片或裸片、或与常规部件电路网络适当互连的芯片的准备方式而实现,如本文所描述的,其修改对于本领域技术人员是显而易见的。因此,本发明还可以包括计算机产品,其可以是包括指令的存储介质和/或传输介质,其中,该指令可用于对机器编程以执行一个或多个根据本发明的处理或方法。由机器进行的计算机产品中所含指令的执行,随着周围电路的操作,可以将输入数据转换成存储介质上的一个或多个文件,和/或转换成表示物理对象或物质的诸如音频和/或视觉描述(depiction)的一个或多个输出信号。存储介质可以包括但不仅限于软盘、硬盘、磁盘、光盘、CD-ROMDVD和磁光盘的任何类型的圆盘,诸如ROM(只读取存储器)、RAM(随机存取存储器)、EPR0M(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、UVPROM(紫外线可擦除可编程ROM)、闪存、磁卡、光卡的电路,和/或任何合适的用于存储电子指令的介质类型。本发明的元件可以形成一个或多个装置、单元、部件、系统、机器和/或装置的一部分或全部。这些装置可以包括但不限于服务器、工作站、存储阵列控制器、存储系统、单个电脑、笔记本电脑、笔记本电脑、掌上电脑、单个数字助理、便携式电子器件、电池供电器件、机顶盒编码器、解码器、转码器、压缩机、解压缩、预处理器、后处理器、发射器、接收器、收发器、密码电路、蜂窝电话、数码相机、定位和/或导航系统、医疗器件、头戴式显示器、无线器件、录音、音频存储和/或音频播放器件、录像、视频存储和/或视频播放器件、游戏平台、外围器件和/或多芯片模块。相关领域技术人员应当了解,本发明的元件可以在其他类型的装置中实现,以满足特定应用的标准。尽管本发明已参考其优选实施方式进行了特别说明和描述,但是相关领域技术人员应当理解,在不背离本发明的范围的前提下可以在形式和细节上进行各种变化。权利要求1.一种用于在闪存介质控制器中处理存储在闪存存储器的页中的元数据的方法,所述方法包括在每个上下文的基础上定义所述元数据,其中,所述上下文是基于每个页定义的;当所述元数据的大小小于等于预定阈值时,将完整的元数据存储在上下文结构中;以及当所述元数据的大小大于所述预定阈值时,在所述上下文中定义元数据指针。2.根据权利要求1所述的方法,还包括使用错误校正码来保护所述元数据。3.根据权利要求1所述的方法,其中,所述元数据包含管理数据。4.根据权利要求1所述的方法,其中,所述预定阈值指定每页的字节数。5.根据权利要求1所述的方法,其中,在闪存编程周期期间,将来自所述上下文结构的所述元数据存储在闪存目标中,并且在读取周期期间,将从所述闪存目标读取的所述元数据存回所述上下文结构中。6.根据权利要求1所述的方法,其中,所述元数据指针提供地址指针,以在闪存编程周期期间从外部系统存储器检索所述元数据,并且将来自闪存读取命令的所述元数据存储至所述外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置处。7.根据权利要求1所述的方法,其中在闪存编程周期期间,将被存储在闪存目标中的元数据的第一部分来自所述上下文结构,并且将被存储在所述闪存目标中的所述元数据的第二部分来自外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置;以及在读取周期期间,将从所述闪存目标中读取的所述元数据的所述第一部分存回所述上下文结构中,并且将所述第二部分存储在所述外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置处。8.根据权利要求1所述的方法,其中,当页大小为主机大小的倍数时,将所述元数据在多个主机用户数据扇区的每一个之间分配。9.一种装置,包括包含多个闪存介质器件的闪存存储器,所述闪存存储器被组织成多个页;闪存介质控制器,被配置为将元数据存储在所述闪存存储器的一个或多个页中,其中,(i)所述闪存介质控制器在每个页的基础上定义所述上下文,并且基于每个上下文定义所述元数据,()当所述元数据的大小小于等于预定阈值时,所述闪存介质控制器将完整的元数据存储在上下文结构中,(iii)当所述元数据的大小大于所述预定阈值时,所述闪存介质控制器在所述上下文中定义元数据指针。10.根据权利要求9所述的装置,其中,所述闪存介质控制器使用错误校正码保护所述元数据。11.根据权利要求9所述的装置,其中,所述元数据包含管理数据。12.根据权利要求9所述的装置,其中,对于小于等于所述预定阈值的元数据大小在闪存编程周期期间,所述闪存介质控制器将来自所述上下文结构的所述元数据存储在闪存目标中;以及在读取周期期间,所述闪存介质控制器将从所述闪存目标中读取的所述元数据存回所述上下文结构中。13.根据权利要求9所述的装置,其中,所述预定阈值定义每页的字节数。14.根据权利要求9所述的装置,其中,所述元数据指针提供由所述闪存介质控制器使用的地址指针,以在闪存编程周期期间从外部系统存储器检索所述元数据,并且将来自闪存读取命令的所述元数据存储至所述外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置中。15.根据权利要求9所述的装置,其中,在闪存编程周期期间,将被存储在闪存目标中的元数据的第一部分来自所述上下文结构,并且将被存储在闪存目标中的所述元数据的第二部分来自外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置;以及在读取周期期间,将从所述闪存目标读取的所述元数据的所述第一部分存回所述上下文结构中,并且将所述第二部分存储在所述外部系统存储器中由所述上下文指定的所述元数据指针所指示的位置处。16.根据权利要求9所述的装置,其中,当所述闪存存储器的页的大小为主机大小的倍数时,所述闪存介质控制器还被配置为在多个主机用户数据扇区的每一个之间分配所述元数据。17.—种闪存存储器系统,包括用于在每个上下文的基础上定义元数据的装置,其中,所述上下文是基于每个页定义的;用于当所述元数据的大小小于等于预定阈值时、将完整的元数据存储在上下文结构中的装置;以及用于当所述元数据的大小大于所述预定阈值时、在所述上下文中定义元数据指针的装置。全文摘要本发明公开了闪存介质控制器中的元数据处理,其中,处理存储在闪存介质控制器中的闪存存储器的页中的元数据的方法总体上包括(ⅰ)在每个上下文的基础上定义元数据,其中,上下文基于每个页来定义,(ii)当元数据的大小小于等于预定阈值时,将完整的元数据存储在上下文结构中,以及(iii)当元数据的大小大于预定阈值时,定义上下文中的元数据指针。文档编号G06F12/02GK103034562SQ20121024420公开日2013年4月10日申请日期2012年7月13日优先权日2011年7月14日发明者维奈·阿肖克·苏曼纳切,迈克尔·S·希肯,帕米拉·S·亨普斯特德,蒂莫西·W·斯瓦托什,杰克逊·L·埃利斯,马丁·S·德尔申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1