闪存接口的有效利用的制作方法

文档序号:6373302阅读:251来源:国知局

专利名称::闪存接口的有效利用的制作方法
技术领域
:本发明总体涉及闪存存储器系统,特别地,涉及一种闪存接口的有效利用的方法。
背景技术
:闪存介质控制器经由诸如ONFI2.X的闪存接口与闪存器件通信。在单个闪存接口上,可以连接固定数量的闪存目标(target)。在单个闪存接口上连接多个闪存目标使得多个闪存目标之间共享闪存接口。在多个闪存目标之间共享接口会产生对闪存器件的瓶颈。期望具有一种闪存接口的有效利用的方法。
发明内容本发明涉及包括第一电路、第二电路以及第三电路的装置。第一电路可被配置为保持用于闪存通道控制器(FLC)的操作的基于裸片(die)的信息。第二电路可被配置为管理正被闪存通道控制器(FLC)有效处理的上下文。第三电路可配置为执行由第二电路所管理的多个上下文的流水线执行。本发明的目的、特征和优势包括提供用于闪存接口有效利用的方法,其可以(i)管理裸片管理表中的每个裸片的信息,(ii)在多个裸片之间仲裁要在上下文表中排队的访问,(iii)使用裸片状态机更新裸片状态,(iv)执行/监控多裸片操作,(V)在闪存通道控制器上发起(stage)和执行操作阶段,(vi)保持闪存通道上的所有有效上下文的优先级顺序,(vii)保持每个闪存通道上的上下文的状态(VIII)提供最小值,或最小化用于执行完整交易的上下文的临时片上存储量,(ix)保持对正在执行的处理(pocess)中的每个上下文的缓冲指针,(X)通过使用状态机确定上下文的下一个状态,为每个上下文提供代理(agency),(xi)保持目前正在执行的上下文的优先级队列中最小的上下文信息,(xii)从优先级队列中移除完成的上下文以及压缩队列以消除间隙。从下面的详细说明书和所附权利要求书及附图中,上述和其他目的、特征和优点将变得显而易见,其中:图1是示出了在单芯片系统(SOC)环境中实现的闪存介质控制器的框图;图2是示出了根据本发明实施方式的示例闪存介质控制器(FMC)结构的框图;图3是示出了根据本发明实施方式的示例闪存通道控制器结构的框图;图4是示出了图3的上下文管理器模块的示例子模块的示图;图5是示出了图3的裸片管理模块的示例子模块的示图;图6是示出了图3的闪存操作管理器模块的示例子模块的示图7是示出了图3的数据流管理器模块的示例子模块的示图;图8是示出了实现了图3的上下文管理器模块的示例子模块的示图;图9是示出了图8的上下文表中的条目的流水线执行的流程图;图10是示出了图8的上下文状态机的示例实施方式的示图;图11是示出了在图8的闪存操作管理器(FOM)上下文表访问接口上的示例读取时序的时序图;以及图12是示出了图3的裸片管理模块实现的示图。具体实施例方式在一个实现方案中,根据本发明的系统可以被设计为通过各种大容量存储协议进行操作,包括SAS(“串行连接SCSI”)、FC(“光纤通道”)和FC-AL(“光纤通道仲裁环路”),所有这些都是基于小型计算机系统接口(“SCSI”)协议和串行ATA(“SATA”)协议的。本领域普通技术人员应当熟悉这些大容量存储协议,因此,这样的协议不会在本文中进一步讨论。除非在调用特定协议的情况下,本文所公开的系统和方法不依赖于正在使用的特定协议,并被设计为通过所有协议进行正确操作。此外,根据本发明实施方式的系统和方法可以适用于与目前在使用或将来开发的其他类似协议一起使用,这些协议包括用于企业级应用的协议以及用于诸如最终用户的其他应用协议。本文所述的系统包括一种闪存接口的有效利用的方法。参照图1,其示出了通过根据本发明实施方式的闪存介质控制器所实现的系统100的框图。在一个示例中,系统(或结构)100可包括块(或电路)102、多个块(或电路)104a至104η、多个块(或电路)106a至106η、块(或电路)18、块(或电路)110、块(或电路)112、块(或电路)114、块(或电路)116。电路102至116可以表示被实现为硬件、固件、软件、硬件、固件和/或软件的组合或者其他的模块和/或块。在一个示例中,块102可以实现根据本发明实施方式的闪存介质控制器(FMC)。块104a至104η可以被实现为第一数量的闪存储器件或元件。块104a至块104η可以耦接至块102的第一闪存通道。块102的第一闪存通道可以被配置为对各个块104a至104η提供独立的芯片启用(CE)信号。块106a至块106η可以被实现为第二数量的闪存存储器件或部件。块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)闪存接口,包括异步正常模式、异步扩展模式、Togglel.0,ONFI2.3,ONFI2.l、Toggle2.0;(iv)硬件可配置的多个通道之间的专用ECC或共享ECC(例如实现块102的软IP包的参数化特征);(V)闪存接口上的8位数据;(vi)Toggle2.0或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.0同步、ONFI2.3同步、三星Togglel.0、三星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中的大部分逻辑可以在被称为系统时钟(例如,SYSCLK)的时钟域上工作。系统时钟可以为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有效(actively)处理的上下文。块204通常执行有效上下文的簿记(bookkeeping)。上下文是向系统缓冲器提供闪存介质控制器(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.0命令列表中的最常用的命令,以及在三星NAND闪存器件中出现的一些特定的(和类似的)命令。此夕卜,可以通过纳米序列器(nano-sequencer)(在下面图9到图11中详细说明)支持其他现有和将来的命令。自身支持的命令可以无需处理器干预来操作,但其他命令通常使用一些级别的处理器支持。闪存命令可以被分解成可串行地应用于由块208控制的实际闪存裸片的原子“周期”。因为闪存命令通常涉及漫长的等待时间(例如,在数据可从芯片中读取之前,页读取可能需要25μS),“命令周期”可以经常针对闪存通道的不同裸片“一个接一个”地(back-to-back)操作,从而减少了有效的、累积的等待时间。块208通常通过随着应用每个闪存循环而更新裸片的状态来管理闪存裸片。然后块208读取更新的上下文表来确定接下来什么循环应该(或可以)执行。NAND闪存存储器操作通常包括一个或多个闪存周期。通常存在四种类型的闪存周期:命令、地址、数据输出(w.r.t闪存器件,例如,读取)、数据输入(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全局寄存器(GLOB_REGS)。參照图4,示出了图解图3的上下文管理模块204的子模块的示图。在一个示例中,块204可以包括上下文表(CT)220、上下文状态机(CSM)222、上下文高速缓存(CC)224和上下文队列控制器(CQC)226。块204通常划分和执行闪存通道控制器上的操作的阶段,保持闪存通道上的所有有效上下文(activecontext)的优先级顺序,保持各个闪存通道上下文的状态,提供(例如,通过上下文高速缓存)执行完整交易所需的上下文的临时片上存储的最低量,保持正在执行的处理中的各个上下文的缓冲器指针,并通过使用上下文状态机(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_PROC_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_CPC_PR0C_CNTL_M0DE)通知CPC202。响应于该通知,CPC202可以取得在PCM上下文中的位置出现的“软上下文”。从提供给FOM的角度来看,FOM通常不知道在上下文表220中存在PCM上下文,而PCM上下文是在上下文表220中的其他有效条目的后面。上下文表220中的PCM上下文条目将其“有效”位作为0提供给F0M,直到CM204为FOM做好开始执行软上下文的准备。当FOM开始读取软上下文吋,因为操作由存储软上下文的上下文高速缓存224提供给FOM208,CQC226监视(snoop)操作。当操作涉及DMA上下文(例如预取数据,设置读取数据缓冲器,或配置上下文指针)吋,CQC226在上下文表220中指定(co-opt)上下文表中现在未使用的存储,并在上下文表中放置指针以用于跟踪。在这些DMA上下文完成吋,FOM208通知上下文管理器204,其之后用标准方式配置上下文。CQC226在监视的同时,还寻找“取得下ー软上下文”操作。当CQC226发现ー个时,CQC226保持至取得下ー软上下文的CPC202的信号(例如CM_CQCPCM_NEXT_CONTEXT)。在FOM208通知CM204软上下文执行已完成时,FOM208在“F0M/CM”命令接口上通知CM204。然后,CQC226解除到CPC的信号(例如CM_CPC_PR0C_CNTL_M0DE),然后,标准操作继续。在一个示例中,CM_CPC_PR0C_CNTL_M0DE可以被保持为表示CM204已经进入处理器控制模式并且现在准备好接收软上下文的信号的级别。CQC226的另一重要功能为监控超时情況。在一个示例中,CQC226可以包括计数器,其被配置为对系统时钟(SYS_CLK)周期的数量进行计数,使得同样的上下文表的条目位于上下文表220的顶部(S卩,在条目O)。如果计数值达到一个可编程“超时”计数器的值,上下文表220顶端的条目可以被认为已经超吋。当条目被认为已经超时时,条目可以从上下文表220中移除,上下文指针返回到消耗上下文接口上的上下文处理协调器(CPC)202。上下文的返回状态是两个可能的“超吋”状态之一。在第一种情况中,超时会可能起因于这样的情形,其中,闪存通道上的另ー裸片忙碌并且正在降低R/B线。在这种情况下,状态表示超时可能是起因于另ー裸片的超吋。在第二种情况中,上下文的裸片被视为事故原因(culprit)。在这里,可以返回表示裸片是事故原因的不同状态。上下文表220本质上为条目的存储介质。上下文表的深度是參数化的。例如,在能支持每通道十六个裸片)的芯片的情况下,可以实现十六个条目。如果每个裸片(die)可以管理ー个以上的操作,増加深度可以是有利的。上下文表220有最小函数(minimalfunction).CQC226对上下文表220实现大部分更深入的处理。然而,可以通过多重读取接ロ以及各个读取接ロ的复用逻辑来实施上下文表220。在一个示例中,针对读取访问能力,可以通过FOM208的接ロ以及到上下文状态机(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对FOM208是可访问的,其在对闪存单元实现实际的命令时使用全部的闪存上下文信息。FOM208向32位双字提供地址,并且上下文高速缓存224在后续时钟周期响应请求的双字。在处理器控制模式期间,来自上下文高速缓存224的读取响应被可以基于操作的内容实现行动的上下文队列控制器(CQC)226监控。正如上下文表220,上下文高速缓存224也可以通过处理机接ロ访问。FOM208读取来自上下文表220的条目并且执行操作。在执行操作之后,FOM208更新上下文状态机(CSM)222。CSM222将该状态存储在上下文表220的特定条目中。FOM208然后继续执行下一条目等。在到达上下文的末尾之后,FOM208回滚并且再一次执行条目以检查执行的下一部分。执行上下文表220中的多条目的处理通常提供对闪存接口上的命令的流水线执行。闪存接口上的命令的流水线执行通常提供闪存接ロ的有效利用。通过一部分一部分地执行多个条目以及恢复上下文表220中的状态,FOM208提供比常规的技术更有效的闪存接ロ的利用。參照图9,该流程图示出了示例处理300,通过该示例处理300,F0M208可逐部分地执行多个条目并且恢复上下文表220的状态。在一个示例中,过程(或方法)300可以包括步骤(或状态)302、步骤(或状态)304、步骤(或状态)306、步骤(或状态)308、步骤(或状态)310、步骤(或状态)312、以及步骤(或状态)314。在步骤302,F0M208可以检查在上下文表220中是否有预定的条目数(例如,N)。预定的条目数N是可配置(例如,寄存器中的值等)。在一个示例中,数N可设定为四(4)。在另ー示例中,数N可设置为十(10)。在N的设置值是10的示例中,处理300可以继续停留在状态302,直到在上下文表220中有10个条目。当在上下文表220中有10个条目,过程300可以进行到步骤304。在步骤304中,FOM208读取上下文表220的I个条目并且执行命令的一部分。处理300然后移动到步骤306。在步骤306中,FOM208更新该信息至CSM222,并且处理300移动到步骤308。在步骤308中,CSM222更新信息至上下文表220的ー个条目,处理300移动至步骤310。在步骤310中,FOM208读取上下文表220下ー个条目(例如,条目2),并执行命令的一部分。处理300然后移动至步骤312。在步骤312中,该处理重复步骤306到310,直到上下文表220条目达到10。当10个条目均已部分执行,处理300可移动至步骤314。在步骤314中,处理300可检查是否所有的10个条目都已完成。如果还有条目有待完成,处理300返回至步骤304,其中,FOM208回滚,检查每个条目,并执行命令的任何剰余部分,直到全部预定条目数都已经完成。CSM的222—般配置为基于当前条目的状态以及或者FOM208执行的操作或者数据路径操作的状况来确定上下文表220中的各上下文的执行状态。在修改阶段中,每当FOM208应用命令或返回结果时CQC226调用CSM222。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。參照图10,该图示出了上下文状态机(CSM)400的示例实施。在一个示例中,在CSM400可用于实施图8的CSM222。在一个示例中,CSM400可包括状态402、状态404、状态406、状态408、状态410、状态412、状态414、状态416、状态418、状态420以及状态422。状态402可以包括上下文排队状态。状态404可以包括读取状态。状态404可以包括读取完成状态。状态404可以包括传输数据状态。状态404可以包括数据传输完成状态。状态404可以包括预取数据状态。状态404可以包括程序闪存状态。状态404可以包括回拷程序状态。状态404可以包括等待就绪状态。状态404可以包括完成状态。状态404可以包括带错完成状态。一旦追加阶段已经完成并且上下文管理器(CM)204等待了适当的时间(例如,或者为所有未完成的数据传输的完成或者为经过最小“闪存操作期”的时间),上下文表220已准备好被闪存操作管理器(FOM)208用于选择应用于闪存通道的命令和数据传输。当应用这些命令时,FOM208通知CM204并且CM204适当地修改受影响的条目。因为对闪存串行(serially)地执行命令,对上下文状态的更新也是串行的,因此,分离的、并发的硬件状态机条目对上下文表条目是不需要的。条目可以共享CSM400的单个实例。只有状态信息需要存储,并且使用当前状态信息和命令/状况(status)信息,可以确定状态转换。參考图11,该时序图示出了图8的闪存操作管理器(FOM)上下文表访问接ロ的示例读取时序。可以在上下文缓存接口上对闪存操作管理器(FOM)实施类似时序。參照图12,该图示出了图3和图5的裸片管理模块的示例实施方式。裸片管理模块(DMM)206一般负责保持用于操作闪存通道控制器(FLC)的基于裸片的信息。在ー个不例中,DMM206可以包括块(或电路)230、块(或电路)232以及块(或电路)234。块230可以实施状态机裸片(DIEFSM)。block232可以实施裸片服务仲裁器。block234可以实施裸片管理表。DMM206—般被配置为管理裸片管理表234中的每个裸片的信息,仲裁裸片之间上下文表220排队的访问,使用裸片状态机230更新裸片状态,并且执行/监控多裸片操作。DMM的206—般负责闪存命令,包括但不局限于:READ、C0PYBACKREAD/C0PYBACKWRITE.BL0CKERASE以及PAGEPROGRAM。DMM的206也可以是负责目标级别的命令,包括但不限于:READID、READPARAMETERPAGE、GETFEATURES、SETFEATURES、SYNCHRONOUSRESET以及RESET。在一个示例中,裸片管理模块(DMM)206可以具有对上下文处理协调器(CPC)202的接ロ(例如,CPCINTF)对上下文管理器(CM)204的接ロ(例如,CMINTF),以及处理器接ロ(例如,UPINTF)。CPC和CM接ロ可以包括但不仅限于下列信号:(i)CPC请求上下文的指针,(ii)指示DMMDSA已完成仲裁(iii)指示上下文指针是否有效,(iv)指示获得(winning)裸片的上下文指针,(v)指示获奖裸片的数目,(vi)为获奖裸片的下一个指针和命令类型而更新裸片管理表234,以及(vii)使裸片管理模块206更新裸片管理表,并设置相应的裸片状况为自由(释放free)。处理器接ロ可以包括,但不仅限于下列信号(i)寄存器写入选通(strobe)(例如,上下文下一指针、上下文结束指针、上下文提取启用、等)、(ii)处理器数据总线、(iii)上下文下一指针寄存器值、(iv)上下文结束指针寄存器值(V)上下文提取启用寄存器值、(vi)裸片状况、以及(vii)控制多模操作。一般地,裸片管理表234存储每个裸片的信息,包括上下文链接表指针,状况位,通过分享他们的目标的其他裸片的选择,而“举行(holdoff)”的裸片累计信用(credit)。每个裸片在裸片管理表234都有ー个条目,其中,在其中ー个示例,其字段包括上下文下一指针、上下文结束指针、上下文提取启用、信用计数和状态矢量。上下文下一指针一般是上下文链接表中将要执行的下ー个上下文指针。上下文指针由处理器初始化设置,然后在上下文被提取时由硬件更新。上下文末端指针一般是裸片的上下文队列链接表中的最后的指针。上下文末端指针一般由处理器设置。上下文提取启用字段通常被处理器用于启用由硬件进行的上下文的提取和执行的自动化。信用计数字段通常包含表示裸片由干“锁定”状况所造成的信用数目的值,其中,在“锁定”状况中,目标上的其他裸片因串行读取或ー些其他的命令而排队使得该裸片被禁止选中。状态向量字段通常保持着控制器的角度来看的裸片状态。也就是说,状态矢量字段不一定是裸片的RDY/ARDY状态,而是ー个包含裸片服务仲裁器232中的仲裁和上下文管理器204中的上下文状态机222所需的当前操作有关的附加信息的状态向量。上下文的指针和上下文末端指针一般被处理器用于建立将由FLC执行的上下文链接表。在上下文被提取后,由硬件更新上下文指针。当下一指针和尾指针都相等时,队列被硬件认为对裸片是空的。处理器可以通过简单的修改上下文末端指针来为裸片添加到链接表。状态向量的字段可以包括目标忙、命令类型以及裸片忙(DieBusy)。目标忙字段通常表示各自的裸片正在进行(或排队)挂起多裸片命令操作的操作,即共享目标的其他裸片无法进行命令排队。READ和C0PYBACK命令往往属于此类。所有目标级别的命令一般使位被设置。命令类型字段通常表示应用于闪存的最后一次操作型。在一个示例中,允许值可以包括NONE、READ、PROGRAM、ERASE、C0PYBACK和其他。其他的值一般是指目标级别的操作。命令类型字段通常在上下文被取出时被更新。在一个示例中,裸片忙字段可以实施为具有第一状态或(例如,逻辑’0’)状态第二状态(例如,逻辑’I’)的信号(semaphore)位。裸片忙字段通常表示目前裸片处于(involved)哪个处理阶段。在一个示例中,裸片忙字段可以实施为如下定义的值,0:FREE-操作已完成,裸片是完全空闲的(例如,ー个READ命令可以使已完成,但裸片不为空闲,直到数据已经传输以后)。I=BUSY(忙)。在上下文处理流的追加阶段中,可调用裸片服务仲裁器(DSA)232以选择ー个裸片,该裸片将具有选自链接表以用于执行的上下文。在一个示例中,DSA232可使用两级仲裁策略。第一级仲裁可以根据裸片管理表234中的信用计数字段。例如,具有最高信用的裸片将赢得仲裁。对所有裸片,初始信用计数可以被设置为零。然后如果裸片在轮循(round-robin)阶段获胜但因为多裸片操作限制而被抑制,则由硬件増加信用计数。第二级仲裁可以使用轮循法来确定接下来将要服务的裸片。DSA232可以从第一裸片开始顺序搜索全部目标,然后循环全部目标,这次使用第二个裸片。如果选定的裸片在其链接表中具有上下文(例如,上下文下一指针不等于上下文末端指针,并且上下文提取启用被设置为1),该上下文指针可以被发送到上下文过程控制器(CPC)202。类似于上下文管理器204,裸片管理模块206包括为每个裸片管理上面提到的状态的裸片状态机(DIEFSM)230。通常,存在一个裸片状态机230的实例。因为在任何给定的时间点只有一个裸片在不断发生状态变化,裸片状态机230示例通常被所有裸片所共享。裸片状态机230监控来自上下文管理器(CM)204的裸片状况信号,并且相应地更新裸片管理表234。有的时候,裸片可以准备好接受操作,但共享目标的另ー裸片可能忙于不允许多裸片操作的操作。如果发生该情况,裸片被“授权”操作,并且只要“锁定”条件被其他裸片移除则该裸片将获得优先级。目标一般由ー个芯片启用信号(例如,CE#)控制。目标通常被组织成一个或多个逻辑単元(LUN裸片)。例如,当一个裸片处于读取命令处理中,不会有命令发布到共享同一芯片启用的第二裸片。这种限制源于第一裸片读/忙(READ/BUSY)状态是不确定的事实。即使在对第二裸片执行READPAGE命令之前立刻要读取第一裸片的状态,并且情况为BUSY,经过READPAGE命令被应用至第二裸片的时间,它可以变成就绪(READY)。该问题的原因是,当裸片为忙(BUSY)时,它不会在CE启用时主动地“听”命令/地址总线。但是,当裸片为就绪,它开始“听”。当裸片听时,即使命令不是朝向所关注(inquestion)的裸片,裸片也存储命令的地址。然后该地址被用于选择有效的平面(plane)。这样,当最終从裸片的页寄存器传输数据时,可能无意地从错误的平面页寄存器传输数据。为了确保没有这样的问题,当ー个裸片处于READPAGE(或C0PYBACK)交易中时,多裸片访问是不允许的。以下的目标级别命令一般使目标忙(target_busy)位被设置为READID、READPARAMETERPAGE、GETFEATURES、SETFEATURES、SYNCHRONOUSRESET和RESET。通常,在目标为忙时,其他的命令不发布到目标。在实施0NFI2.0接ロ吋,该规则存在例外。根据ONFI2.0,闪存命令RESET在被访问的LUN为忙碌时是可接受的,而SYNCHRONOUSRESET在其它LUN为忙时是可接受的。当实施0NFI2.0接ロ时,根据本发明实施方式而实施的闪存介质控制器可以进行编程,以允许即使目标为忙也发布RESET和SYNCHRONOUSRESET。在一个示例中,DSA232可配置为当两个或两个以上的裸片共享目标时,通过检查每个目标寄存器裸片数的值而识别(recognize)。在另ー示例中,可对姆个DMM支持的闪存命令实施寄存器中的多裸片启用位。在一个示例中,裸片管理裸片模块的操作可如下进行。固件对要执行上下文(S)的裸片加载“上下文指针”寄存器和“指针末端上下文”寄存器至裸片管理表(DMT)234。固件具有完全对裸片管理表234的完全访问,固件负责为所有裸片初始地构造表。固件通过对裸片设置DMT234中的“上下文提取启用”位,使操作在裸片上开始。当裸片仲裁器(DSA)232选择裸片去服务并看到裸片具有不同的下一指针和结束指针以及“上下文提取启用”位被设置时,裸片服务仲裁器(DSA)232发送带有上下文指针的提取请求至FLC202中的上下文过程控制器(CPC)。FLC中的CPC202发送提取请求和指针至上下文提取仲裁器(CFA)160。上下文检索端ロ(CRP)166检索上下文并转发FLC需要的上下文的部分至CFA160,其转发该部分至CPC202。CPC202通知裸片管理模块(DMM)206,其更新裸片管理表(DMT)234中的裸片状态。DMT234中的上下文指针字段基于提取的上下文而被更新。同时,裸片状态机(DSA)230监控上下文管理器204的裸片运行状况,并相应地更新DMT234。根据本发明实施方式的闪存介质控制器(FMC)的主要子模块是闪存通道控制器(FLC)0闪存通道控制器基本上是ー个独立的闪存通道控制器。FLC的多实例化由FMC管理。在単一闪存通道上,可以具有多个闪存目标,并且在各个闪存目标中可以存在多个逻辑单元号(LUN)。每个LUN能够独立地执行闪存交易。闪存通道控制器被配置为借助于裸片管理模块(DMM)和上下文管理器(CM)而流水线化闪存交易。由于流水线作业的性质,有必要跟踪和发布管道闪存命令,其由DMM和CM负责。在本发明的一个实施方式中,闪存介质控制器结构中的裸片管理表和上下文管理器硬件总体上有助于获得闪存接ロ利用的最大化。正如相关领域技术人员所显而易见的,图1到图12所示的功能可以使用一个或多个传统的通用处理器、数字式计算机、微处理器、微控制器、RISC(精简指令集计算机)处理器、CISC(复杂指令集计算机)处理器、SMD(单指令多数据)处理器、数字信号处理器、中央处理单元(CPU)、算木逻辑单元(ALU)、视频数字信号处理器(VDSP)和/或类似计算机来实现,并且可以根据本说明书的教导进行编程。还正如相关领域技术人员所显而易见的,熟练的编程员可以基于本发明的说明来編制合适的软件、固件、编码、编程、指令、操作码、微码、和/或编程模块。软件通常从ー个中等或多个介质中由机器实施的一个或多个处理器来执行。本发明也可以通过ASIC(专用集成电路)、平台ASIC、FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、CPLD(复杂可编程逻辑器件)、海量门(sea-of-gates)、RFIC(射频集成电路)、ASSP(特定应用标准产品)、一个或多个单片集成电路、排列为倒装芯片(flip-chip)模块和/或多芯片模块的一个或多个芯片或裸片、或与常规部件电路网络适当互连的芯片的准备方式而实现,如本文所描述的,其修改对于本领域技术人员是显而易见的。因此,本发明还可以包括计算机产品,其可以是包括指令的存储介质和/或传输介质,其中,该指令可用于对机器编程以执行ー个或多个根据本发明的处理或方法。由机器进行的计算机产品中所含指令的执行,随着周围电路的操作,可以将输入数据转换成存储介质上的ー个或多个文件,和/或转换成表示物理对象或物质的诸如音频和/或视觉描述(depiction)的一个或多个输出信号。存储介质可以包括但不仅限于软盘、硬盘、磁盘、光盘、CD-ROMDVD和磁光盘的任何类型的圆盘,诸如ROM(只读取存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、UVPROM(紫外线可擦除可编程ROM)、闪存、磁卡、光卡的电路,和/或任何合适的用于存储电子指令的介质类型。本发明的元件可以形成ー个或多个装置、単元、部件、系统、机器和/或装置的一部分或全部。这些装置可以包括但不限于服务器、工作站、存储阵列控制器、存储系统、单个电脑、笔记本电脑、笔记本电脑、掌上电脑、单个数字助理、便携式电子器件、电池供电器件、机顶盒编码器、解码器、转码器、压缩机、解压缩、预处理器、后处理器、发射器、接收器、收发器、密码电路、蜂窝电话、数码相机、定位和/或导航系统、医疗器件、头戴式显示器、无线器件、录音、音频存储和/或音频播放器件、录像、视频存储和/或视频播放器件、游戏平台、夕卜围器件和/或多芯片模块。相关领域技术人员应当了解,本发明的元件可以在其他类型的装置中实现,以满足特定应用的标准。尽管本发明已參考其优选实施方式进行了特别说明和描述,但是相关领域技术人员应当理解,在不背离本发明的范围的前提下可以在形式和细节上进行各种变化。权利要求1.一种装置,包括:第一电路,被配置为保持用于闪存通道控制器(FLC)的操作的基于裸片的信息;第二电路,被配置为管理正被所述闪存通道控制器(FLC)有效处理的上下文;以及第三电路,被配置为实施由所述第二电路管理的多个所述上下文的流水线执行。2.根据权利要求1所述的装置,其中,所述第一电路包括裸片管理模块。3.根据权利要求2所述的装置,其中,所述裸片管理模块包括:裸片管理表;裸片状态机,被配置为针对裸片操作状态监控所述装置的上下文管理器并更新所述裸片管理表;以及裸片服务仲裁器,被配置为选择裸片,所述裸片将具有选自链接列表以用于执行的上下文。4.根据权利要求1所述的装置,其中,所述第二电路包括上下文管理器。5.根据权利要求4所述的装置,其中,所述上下文管理器包括:上下文表,存储当前正被执行的上下文的优先级队列;上下文队列控制器,被配置为从所述上下文表中移除完成的上下文并压缩所述上下文表以消除间隙;上下文状态机,被配置为确定所述上下文表中的每一上下文的执行状态;以及上下文高速缓存,被配置为存储所述上下文表中的每一闪存上下文的一部分。6.根据权利要求5所述的装置,其中,所述上下文状态机基于上下文条目的当前状态以及数据路径操作的状况或由闪存操作管理器正执行的操作之一,来确定所述上下文表中的每一上下文条目的执行状态。7.根据权利要求1所述的装置,其中,所述第二电路主要涉及与闪存交易有关的上下文管理。8.根据权利要求1所述的装置,其中,所述第三电路包括闪存操作管理器(FOM)。9.根据权利要求8所述的装置,其中,所述第二电路保持由所述闪存操作管理器(FOM)实施对闪存通道上的闪存裸片的命令和数据传输的所述流水线执行所使用的信息。10.一种利用闪存接口的方法,包括:保持由闪存通道控制器(FLC)在与多个闪存器件交易时所使用的基于裸片的信息;管理正被所述闪存通道控制器(FLC)有效处理的上下文;以及实施多个所述上下文的流水线执行。11.根据权利要求10所述的方法,还包括:使用被配置为针对裸片操作状态监控上下文管理器并更新裸片管理表的裸片状态机来保持所述裸片管理表;以及从所述多个闪存器件中选择裸片,其中,所述裸片具有选自链接列表以用于执行的上下文。12.根据权利要求10所述的方法,还包括:保持存储当前正被执行的上下文的优先级队列的上下文表;从所述上下文表中移除完成的上下文并压缩所述上下文表以消除间隙;使用上下文状态机确定上下文表中的每一上下文的执行状态;以及将所述上下文表中的每一闪存上下文的一部分存储在上下文高速缓存中。13.根据权利要求12所述的方法,其中,确定所述上下文表中的每一上下文条目的执行状态是基于所述上下文条目的当前状态以及数据路径操作的状况或由闪存操作控制器正执行的操作之一。14.根据权利要求10所述的方法,其中,所述上下文与闪存交易有关。15.根据权利要求10所述的方法,还包括:保持由闪存操作管理器(FOM)实施对一个或多个闪存通道上的所述多个闪存器件的命令和数据传输的流水线执行所利用的信息。全文摘要本发明公开闪存接口的有效利用,其中,一种装置包括第一电路、第二电路、第三电路。第一电路可以被配置为保持用于闪存通道控制器(FLC)的操作的基于裸片的信息。第二电路可以被配置为管理正被闪存通道控制器(FLC)有效处理的上下文。第三电路可以被配置为实施由第二电路管理的多个上下文的流水线执行。文档编号G06F13/16GK103092781SQ20121024423公开日2013年5月8日申请日期2012年7月13日优先权日2011年7月14日发明者维奈·阿肖克·苏曼纳切,杰克逊·L·埃利斯,帕米拉·S·亨普斯特德,蒂莫西·W·斯瓦托什,迈克尔·S·希肯,马丁·S·德尔申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1