相关申请的交叉引用本申请要求jingwenouyang等的于2016年1月13日提交的标题为“data-pathcontrolwithinternalclockandasynchronousfifo”的美国临时专利申请号62/278,227的权益,将其通过引用包括于此。本公开在各种实施例中涉及非易失性存储器,以及更加具体地涉及控制非易失性存储器的数据路径。
背景技术:
::非易失性存储器元件服务或者执行存储操作所用的时间量可能包括实际上感应或者改变非易失性存储单元的物理特性以读取或者写入数据花费的时间、在数据总线上传送数据花费的时间、和用于在非易失性存储器元件内内部地移动地址信息和/或数据、以用于填充存储操作的缓冲器(例如,通过预先取出读取数据)的在数据路径中的附加等待时间、等等。随着非易失性介质和数据总线的速度增加,实际上读取或者写入和传送花费更少的时间,且数据路径等待时间变为更重要的。另外,因为以更小的单元(例如,以更像快速字节可寻址易失性存储器和更不像缓慢的、扇区可寻址硬盘驱动器的方式)提供对数据的访问,因此数据路径等待时间的重要性进一步增加。例如,提供对大的数据块的访问的操作可能合理的等待时间段可能对于以小脉冲串(burst)提供对几字节数据的访问的操作而言太长了。技术实现要素:呈现用于控制非易失性存储器的数据路径的设备。在一个实施例中,设备包括一个或多个存储器裸芯。在某个实施例中,存储器裸芯包括存储器核心。在另外的实施例中,存储器核心包括非易失性存储器单元的阵列和内部数据管线。在一个实施例中,存储器裸芯包括存储与存储器核心的存储操作相关联的数据的缓冲器。在某个实施例中,存储器裸芯包括与存储器核心通信以启动存储操作的内部控制器。在另外的实施例中,内部控制器响应于确定内部数据管线和缓冲器两者都满而延迟启动存储操作。在另一实施例中,设备包括用于缓冲与存储器核心的存储操作相关联的数据的装置。在某个实施例中,存储器核心包括非易失性存储器单元的阵列和内部数据管线。在另外的实施例中,设备包括用于分派用于执行存储操作的地址的装置。在一个实施例中,设备包括用于响应于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值满足阈值而停止存储操作的地址的分派的装置。在另外的实施例中,阈值可以基于内部数据管线中的总级数且在用于缓冲数据的装置中。呈现用于控制非易失性存储器的数据路径的方法。在一个实施例中,方法包括以队列存储数据。在某个实施例中,数据与存储器核心的存储操作相关联。在另外的实施例中,存储器核心包括非易失性存储单元的阵列和内部数据管线。在某些实施例中,方法包括确定队列和内部数据管线综合地是否包括空的级。在另外的实施例中,方法包括响应于确定队列和内部数据管线综合地(combined)包括空的级而开始存储操作。附图说明以下参考附图中图示的特定实施例包括更具体的描述。理解这些附图仅示出本公开的某些实施例且因此不考虑为限制本公开的范围,本公开通过使用附图以附加的专门性和细节描述和解释,在附图中:图1是图示包括数据路径控制组件的系统的一个实施例的示意性框图;图2是图示与装置控制器通信的非易失性存储器的一个实施例的示意性框图;图3是图示同步器的一个实施例的电路图;图4a是图示在一个实施例中的同步器的操作的时间线;图4b是图示在另一实施例中的同步器的操作的时间线;图5是图示用于控制非易失性存储器的数据路径的方法的一个实施例的示意性流程图;以及图6是图示用于控制非易失性存储器的数据路径的方法的另一实施例的示意性流程图。具体实施方式本公开的方面具体表现为设备、系统、方法或者计算机程序产品。因此,本公开的方面可以以完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,其可以在这里全部总地称为“电路”、“模块”、“设备”或者“系统”。此外,本公开的方面可以以计算机程序产品的形式,该计算机程序产品具体表现为存储计算机可读和/或可执行程序代码的一个或多个非瞬时计算机可读存储介质。本说明书中描述的许多功能单元已经标记为模块,以更具体地强调它们的实现独立性。例如,模块可以实现为包括定制vlsi电路或者门阵列的硬件电路,例如逻辑芯片的成品半导体、晶体管或者其他分立组件。模块也可以以可编程硬件器件、例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等来实现。模块也可以至少部分地以用于由各种类型的处理器执行的软件实现。可执行代码的标识模块例如可以包括计算机指令的一个或多个物理或者逻辑块,该计算机指令例如可以组织为对象、过程或功能。然而,标识模块的可执行不需要物理地位于一起,而是可以包括在不同位置存储的无联系的指令,其当逻辑地联接在一起时包括模块并实现模块的所述用途。实际上,可执行代码的模块可以包括单个指令或者许多指令,且甚至可以在几个不同代码段上、不同程序当中、跨越几个存储器装置等分布。在模块或者模块的一部分以软件实现时,软件部分可以存储在一个或多个计算机可读和/或可执行存储介质上。可以使用一个或多个计算机可读存储介质的任何组合。计算机可读存储介质例如可以包括,但不限于电子、磁、光、电磁、红外、电阻性(例如,电阻性随机存取存储器(reram)、存储器电阻器(memristor)存储器、可编程金属化单元存储器、相变存储器(pcm、pcme、pram、pcram、双向统一存储器、硫族化物ram或者c-ram),等等),或者半导体系统、设备或装置,或者前述的任何适当的组合,但是将不包括传送信号。在本文档的上下文中,计算机可读和/或可执行存储介质可以是任何有形的和/或非瞬时介质,其可以包括或者存储用于由指令执行系统、设备、处理器或装置使用或者与指令执行系统、设备、处理器或装置结合地使用的程序。用于进行本公开的方面的操作的计算机程序代码可以以一个或多个编程语言的任何组合所写,包括面向对象编程语言,例如python、java、smalltalk、c++、c#、目标c等,传统的过程编程语言,例如“c”编程语言、脚本编程语言和/或其他类似的编程语言。程序代码可以部分地或者全部地在一个或多个用户的计算机和/或远程计算机上或者经数据网络等在服务器上执行。如在此使用的,组件包括有形的、物理的非瞬时装置。例如,组件可以实现为包括定制vlsi电路、门阵列或者其他集成电路的硬件逻辑电路;例如逻辑芯片、晶体管或者其他分立器件的成品半导体;以及/或其他机械或者电气装置。组件也可以以可编程硬件器件实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等。组件可以包括一个或多个硅集成电路装置(例如,芯片、裸芯、裸芯平面、封装)或者其他分立的电气装置,通过印刷电路板(pcb)的电线等与一个或多个其他组件电气地通信。在某些实施例中,在这里描述的每一模块可以替代地由组件具体表现或者实现为组件。遍及本说明书参考“一个实施例”、“实施例”或者类似的语言指的是关于实施例描述的特定特征、结构或者特性包括在本公开的至少一个实施例中。因此,遍及本说明书的字句“在一个实施例中”、“在实施例中”和类似的语言的出现可以,但是不必全都参考同一实施例,而是指“一个或多个而不是全部实施例”,除非明确地指定例外。术语“包括”、“包含”、“具有”和其变形指的是“包括但不限于”,除非明确地指定例外。项目的列举列表不暗示任何或者所有项目是互相排斥和/或互相包含的,除非明确地指定例外。术语“一”、“一个”和“该”也指“一个或多个”,除非明确地指定例外。以下参考根据本公开的实施例的方法、设备、系统和计算机程序产品的示意性流程图和/或示意性框图描述本公开的方面。将理解示意性流程图和/或示意性框图的每个块以及示意性流程图和/或示意性框图中的块的组合可以由计算机程序指令实现。计算机程序指令可以提供给计算机或者其他可编程数据处理设备的处理器以产生机器,以使得经由处理器或者其他可编程数据处理设备执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个块中指定的功能和/或动作的装置。应注意在某些替代实现中,在块中标注的功能可以不以图中标注的次序发生。例如,取决于涉及的功能,连续示出的两个块可以事实上实质上同时地执行,或者多个块有时可能以相反次序执行。可以设想在功能、逻辑或者效果上等效于图示的图的一个或多个块或者其部分的其他步骤和方法。虽然在流程图和/或框图中可以采用各种箭头类型和线条类型,理解它们不限制相应的实施例的范围。例如,箭头可以指示在示出的实施例的列举的步骤之间的未指定持续时间的等待或者监控时段。在下面的详细说明中,参考形成详细说明的部分的附图。前述概述仅是说明性的且不意在以任何方式限制。除上面描述的说明性的方面、实施例和特征之外,通过参考附图及其后的详细说明,另外的方面、实施例和特征将变得明显。每个图中元件的描述可以参考先前图的元件。相同的数字可以参考图中的相同元件,包括相同元件的替代实施例。图1是包括用于非易失性存储装置120的数据路径控制组件150的系统100的一个实施例的框图。数据路径控制组件150可以是非易失性存储器介质控制器126、非易失性存储器元件123、装置驱动器等的一部分和/或与其通信。数据路径控制组件150可以在计算装置110的非易失性存储器系统102上操作,该计算装置110可以包括处理器111、易失性存储器112和通信接口113。处理器111可以包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个专用处理器、一个或多个虚拟处理器(例如,计算装置110可以是主机内操作的虚拟机)、一个或多个处理器核心等。通信接口113可以包括一个或多个网络接口,其配置为将计算装置110和/或非易失性存储器控制器126通信地耦合通信网络115,例如因特网协议(ip)网络、存储区网络(san)、无线网络、有线网络等。非易失性存储装置120在各种实施例中可以被设置在相对于计算装置110的一个或多个不同位置。在一个实施例中,非易失性存储装置120包括一个或多个非易失性存储器元件123,例如被设置在一个或多个印刷电路板、存储外壳和/或其他机械和/或电气支撑结构上的半导体芯片或者封装或者其他集成电路器件。例如,非易失性存储装置120可以包括一个或多个直插式存储器模块(dimm)卡、一个或多个扩展卡和/或子系卡、固态驱动器(ssd)或者其他硬盘驱动装置,和/或可以具有另一存储器和/或存储形式因数(factor)。非易失性存储装置120可以与计算装置110的母板集成和/或安装在计算装置110的母板上,安装在计算装置110的端口和/或槽中,安装在不同计算装置110和/或网络115上的专用存储仪器上,经外部总线(例如,外部硬盘驱动器)与计算装置110通信,等等。在一个实施例中,非易失性存储装置120可以被设置在处理器111的存储器总线上(例如,在与易失性存储器112相同的存储器总线上,在与易失性存储器112不同的存储器总线上,代替易失性存储器112,等等)。在另外的实施例中,非易失性存储装置120可以被设置在计算装置110的外围总线上,例如外围组件互连直达(pci直达(express)或者pcie)总线、串行先进技术(sata)总线、并行先进技术附加(pata)总线、小型计算机系统接口(scsi)总线、火线总线、光纤信道连接、通用串行总线(usb)、pcie先进交换(pcie-as)总线,等等。在另一实施例中,非易失性存储装置120可以被设置在数据网络115上,例如以太网、无限带网络、经网络115的scsirdma、存储区网络(san)、局域网(lan)、例如因特网的广域网(wan)、另一有线和/或无线网络115等。计算装置110可以另外包括非瞬时的计算机可读存储介质114。计算机可读存储介质114可以包括配置为使得计算装置110(例如,处理器111)执行在这里公开的一个或多个方法的步骤的可执行指令。替代地或者另外地,数据路径控制组件150的一个或多个部分可以具体表现为在非瞬时存储介质114上存储的一个或多个计算机可读指令。在一个实施例中,一个或多个非易失性存储器元件123可以配置为发送和接收用于非易失性存储装置120的数据操作的数据。例如,非易失性存储器元件123可以包括用于传递用于存储操作的命令和地址信息的第一端口、总线或者路径152、和用于传送用于存储操作的数据的第二端口、总线或者路径154。非易失性存储器元件123可以支持多个访问模式,例如可以提供全速和/或对非易失性存储器介质122的一个或多个唯一特征的访问的第一模式(例如,脉冲模式),可以提供不同访问协议的支持(例如,旧的访问协议,模拟不同类型的存储器介质122,例如nand闪存等)的第二模式(例如,传统模式或者兼容模式)。例如,在一个实施例中,非易失性存储器介质122可以包括电阻性存储介质,例如reram、memristor存储器、可编程金属化单元存储器、相变存储器(pcm、pcme、pram、pcram、双向统一存储器、硫族化物ram或者c-ram)等,且非易失性存储器元件123可以提供两个访问模式,一个模式包括模拟nand闪存访问协议(例如,nand闪存翻转模式)等的传统或者兼容模式,以用于配置为使用传统访问协议的客户端116。在第一模式(例如,脉冲模式、本地模式等)中,第一端口152可以接收用于在非易失性存储装置120和/或元件123上的数据操作的命令和/或地址信息,同时第二端口154发送数据操作的数据(例如,对于写入请求从客户端116接收数据,对于读取请求发送数据到客户端116,等等)。在第二模式(例如,传统模式、兼容模式等)中,第一端口152可以接收用于数据操作的命令和地址信息并发送用于操作的数据(例如,以使得第二端口154不用于第二模式中)。在示出的实施例中,非易失性存储器系统102包括数据路径控制组件150。在一个实施例中,数据路径控制组件150包括存储与存储器核心的存储操作相关联的数据的缓冲器,其中存储器核心包括非易失性存储器单元的阵列和内部数据管线。在另外的实施例中,数据路径控制组件150包括与存储器核心通信以启动存储操作的内部控制器。内部控制器可以响应于确定内部数据管线和缓冲器两者都满而延迟启动存储操作。总的来说,在各种实施例中,如果缓冲器对于存储操作的数据过满则延迟存储操作的启动可以防止与缓冲器溢出相关联的问题,例如数据损坏。在另外的实施例中,如果缓冲器和内部管线两者都满则延迟启动存储操作允许内部管线用作缓冲器的扩展。使用内部管线作为缓冲器的扩展可以通过向缓冲器数据提供附加空间而使得溢出更不可能,同时避免将与向缓冲器添加级相关联的等待时间和裸芯上面积增大。在一个实施例中,数据路径控制组件150可以包括一个或多个非易失性存储装置120的逻辑硬件,例如非易失性存储器介质控制器126、非易失性存储器元件123、装置控制器、现场可编程门阵列(fpga)或者其他可编程逻辑、用于fpga或者其他可编程逻辑的固件、用于在微控制器上执行的微代码、专用集成电路(asic),等等。在另一实施例中,数据路径控制组件150可以包括在计算机可读存储介质114上存储以用于在处理器111上执行的可执行软件代码,例如装置驱动器等。在另外的实施例中,数据路径控制组件150可以包括可执行软件代码和逻辑硬件两者的组合。在一个实施例中,非易失性存储器元件123配置为经由总线125等从装置驱动器或者其他可执行应用接收存储请求。非易失性存储器元件123可以另外配置为经由总线125向/从装置驱动器和/或存储客户端116传送数据。因此,在一些实施例中,非易失性存储器元件123可以包括和/或与一个或多个直接存储器访问(dma)模块、远程dma模块、总线控制器、桥接器、缓冲器等通信以促进存储请求和关联数据的传送。在另一实施例中,非易失性存储器元件123可以从存储客户端116接收作为api呼叫的存储请求,作为io-ctl命令,等等。根据各种实施例,非易失性存储器控制器126可以管理一个或多个非易失性存储装置120和/或非易失性存储器元件123。一个或多个非易失性存储装置120可以包括记录、存储器和/或存储装置,例如布置和/或分区为多个可寻址介质存储位置的一个或多个固态存储装置和/或一个或多个半导体存储装置。如在此使用的,介质存储位置指的是存储器的任何物理单元(例如,非易失性存储装置120上的任意量的物理存储介质)。存储器单元可以包括,但不限于:页、存储器划分、块、扇区、物理存储位置的汇集或者集合(例如,逻辑页、逻辑块),等等。在某些实施例中,装置驱动器和/或非易失性存储器介质控制器126可以向存储客户端116呈现逻辑地址空间134。如在此使用的,逻辑地址空间134指的是存储器资源的逻辑表示。逻辑地址空间134可以包括多个逻辑地址(例如,逻辑地址的范围)。如在此使用的,逻辑地址指的是用于参考存储器资源(例如,数据)的任何标识符,包括但不限于:逻辑块地址(lba)、圆柱/报头/扇区(chs)地址、文件名、对象标识符、i节点(inode)、全世界唯一标识符(uuid)、全球唯一标识符(guid)、散列码、签名、索引项、范围、程度,等等。非易失性存储装置120的装置驱动器可以保存元数据135,例如逻辑到物理地址映射结构,以将逻辑地址空间134的逻辑地址映射到一个或多个非易失性存储装置120上的介质存储位置。装置驱动器可以配置为向一个或多个存储客户端116提供存储服务。存储客户端116可以包括在计算装置110上操作的本地存储客户端116和/或可经由网络115和/或网络接口113访问的存储客户端116。存储客户端116可以包括,但不限于:操作系统、文件系统、数据库应用、服务器应用、内核级处理、用户级处理、应用等。装置驱动器可以通信地耦合到一个或多个非易失性存储装置120。一个或多个非易失性存储装置120可以包括不同类型的非易失性存储器装置,包括但不限于:固态存储装置、半导体存储装置、san存储资源,等等。一个或多个非易失性存储装置120可以包括一个或多个各个非易失性存储器介质控制器126和非易失性存储器介质122。装置驱动器可以提供经由传统的块i/o接口131对一个或多个非易失性存储装置120的访问。另外,装置驱动器可以通过scm接口132提供对增强功能性的访问。元数据135可以用于管理和/或跟踪通过块i/o接口131、scm接口132、高速缓冲接口133或者其他有关接口中的任意一个执行的数据操作。高速缓冲接口133可以暴露可经由非易失性存储装置120的装置驱动器访问的高速缓冲特定特征。此外,在一些实施例中,呈现给存储客户端116的scm接口132提供对由一个或多个非易失性存储装置120和/或一个或多个非易失性存储器介质控制器126实现的数据变换的访问。装置驱动器可以通过一个或多个接口向存储客户端116呈现逻辑地址空间134。如上所述,逻辑地址空间134可以包括多个逻辑地址,每个逻辑地址对应于一个或多个非易失性存储装置120上的各个介质位置。装置驱动器可以保存元数据135,该元数据135包括逻辑地址和介质位置之间的任意到任意映射,等等。装置驱动器可以进一步包括和/或与非易失性存储器装置接口139通信,该非易失性存储器装置接口139配置为经总线125向一个或多个非易失性存储器装置120传送数据、命令和/或查询,总线125可以包括,但不限于:处理器111的存储器总线、外围组件互连直达(pci直达或者pcie)总线、串行先进技术附加(ata)总线、并行ata总线、小型计算机系统接口(scsi)、火线、光纤信道、通用串行总线(usb)、pcie先进交换(pcie-as)总线、网络115、无限带(infiniband)、scsirdma,等等。非易失性存储器装置接口139可以使用一个或多个输入输出控制(io-ctl)命令、一个或多个io-ctl命令扩展、远程直接存储器访问等与一个或多个非易失性存储器装置120通信。通信接口113可以包括一个或多个网络接口,该一个或多个网络接口配置为将计算装置110和/或非易失性存储器控制器126通信地耦合到网络115和/或一个或多个远程、网络可访问的存储客户端116。存储客户端116可以包括在计算装置110上操作的本地存储客户端116和/或可经由网络115和/或网络接口113访问的存储客户端116。非易失性存储器控制器126是一个或多个非易失性存储器装置120的一部分和/或与一个或多个非易失性存储器装置120通信。虽然图1示出单个非易失性存储器装置120,本公开不限于此,且可以适于包括许多非易失性存储器装置120。非易失性存储器装置120可以包括非易失性存储器介质122的一个或多个元件123,其可以包括但不限于:reram、memristor存储器、可编程金属化单元存储器、相变存储器(pcm、pcme、pram、pcram、双向统一存储器、硫族化物ram或者c-ram)、nand闪存存储器、nor闪存存储器、纳米随机存取存储器(纳米ram或者nram)、纳米晶基于线路的存储器、基于硅氧化物的子10纳米工艺存储器、石墨烯存储器、硅氧化物-氮氧化物-硅(sonos)、可编程金属化单元(pmc)、导电桥接ram(cbram)、磁阻ram(mram)、磁存储介质(例如,硬盘、磁带)、光存储介质,等等。在某些实施例中,非易失性存储器介质122的一个或多个元件123包括存储类存储器(scm)。虽然例如nand闪存之类的传统技术可以是块和/或页可寻址的,在一个实施例中,存储类存储器是字节可寻址的。在另外的实施例中,存储类存储器可以比nand闪存更快速和/或具有更长的寿命(例如,耐久性);可以比dram具有更低成本,使用更小的功率和/或具有更高的存储密度;或者当与其他技术相比时提供一个或多个其他益处或者改进。例如,存储类存储器可以包括下列的一个或多个非易失性存储器元件123:reram、memristor存储器、可编程金属化单元存储器、相变存储器、纳米ram、纳米晶基于线路的存储器、基于硅氧化物的子10纳米工艺存储器、石墨烯存储器、sonos存储器、pmc存储器、cbram、mram和/或其变形。虽然非易失性存储器介质122在这里被称为“存储介质”,在各种实施例中,非易失性存储器介质122可以更一般地包括能够记录数据的一个或多个非易失性记录介质,其可以被称为非易失性存储器介质、非易失性存储介质等。另外,在各种实施例中,非易失性存储器装置120可以包括非易失性记录装置、非易失性存储器装置、非易失性存储装置等。非易失性存储器介质122可以包括一个或多个非易失性存储器元件123,其可以包括但不限于:芯片、封装、平面、裸芯等。非易失性存储器介质控制器126可以配置为管理非易失性存储器介质122上的数据操作,且可以包括一个或多个处理器、可编程处理器(例如,fpga)、asic、微控制器等。在一些实施例中,非易失性存储器介质控制器126配置为在非易失性存储器介质122上存储数据和/或从非易失性存储器介质122读取数据,以向/从非易失性存储器装置120传送数据,等等。非易失性存储器介质控制器126可以通过总线127的方式通信地耦合到非易失性存储器介质122。总线127可以包括用于向/从非易失性存储器元件123传递数据的i/o总线。总线127可以另外包括用于向非易失性存储器元件123传递寻址及其他命令和控制信息的控制总线。在一些实施例中,总线127可以并行地将非易失性存储器元件123通信地耦合到非易失性存储器介质控制器126。该并行访问可以允许作为组管理非易失性存储器元件123,形成逻辑存储器元件129。逻辑存储器元件可以分区为各个逻辑存储器单元(例如,逻辑页)和/或逻辑存储器划分(例如,逻辑块)。逻辑存储器单元可以通过逻辑地组合每一非易失性存储器元件的物理存储器单元而形成。非易失性存储器控制器126可以包括和/或与在计算装置110上执行的装置驱动器通信。装置驱动器可以经由一个或多个接口131、132和/或133向存储客户端116提供存储服务。在一些实施例中,装置驱动器提供块-装置i/o接口131,通过该接口,存储客户端116执行块级i/o操作。替代地,或者另外地,装置驱动器可以提供存储类存储器(scm)接口132,其可以向存储客户端116提供其他存储服务。在一些实施例中,scm接口132可以包括对块装置接口131的扩展(例如,存储客户端116可以通过对块装置接口131的扩展或者添加来访问scm接口132)。替代地,或者另外地,可以提供scm接口132作为分开的api、服务和/或库。装置驱动器可以另外配置为提供用于使用非易失性存储器系统102高速缓冲数据的高速缓冲接口133。装置驱动器可以另外包括非易失性存储器装置接口139,该非易失性存储器装置接口139配置为经总线125向非易失性存储器介质控制器126传送数据、命令和/或查询,如上所述。图2示出与装置控制器126通信的非易失性存储器裸芯202的一个实施例。装置控制器126可以实质上类似于上面关于图1描述的非易失性存储器介质控制器126。在一个实施例中,装置控制器126可以包括用于包括非易失性存储器元件123的存储装置的硬件控制器。在另一实施例中,装置控制器126可以包括用于包括非易失性存储器元件123的存储装置的装置驱动器,且装置驱动器可以包括逻辑硬件和/或在一个或多个计算机可读存储介质上存储的可执行代码。非易失性存储器裸芯202可以实质上类似于上面关于图1描述的非易失性存储器元件123。在各种实施例中,裸芯202可以指包括至少一个核心200的集成电路。在一个实施例中,这种集成电路可以是包括多个裸芯平面和/或层的三维集成电路元件,但是仍然可以被称为裸芯202。虽然在图2中示出单个非易失性存储器裸芯202,但是装置控制器126可以耦合到非易失性存储器装置120的非易失性存储器元件123中的多个非易失性存储器裸芯202或者与其通信。在示出的实施例中,装置控制器126经由用于命令和地址信息的第一端口、总线或者路径152和用于传送数据的第二端口、总线或者路径154耦合到裸芯202,该第一端口、总线或者路径152和第二端口、总线或者路径154可以实质上类似于上面关于图1描述的端口、总线或者路径152、154。在示出的实施例中,裸芯202包括核心200和内部控制器250。在示出的实施例中,内部控制器250包括数据路径控制组件150、缓冲器252和内部总线驱动器258。在各种实施例中,内部控制器250可以是存储器裸芯202内部的控制器(例如,裸芯上控制器,与在存储器裸芯202外部的装置控制器126不同)。装置控制器126可以选择裸芯202(例如示出的裸芯202或者另一裸芯202)作为存储操作的目标,且可以与所选的裸芯202的内部控制器250通信,以发送命令和地址信息以及传送(例如,发送或者接收)关于所选的裸芯202的存储操作的数据。在各种实施例中,核心200包括非易失性存储器单元的阵列210(二维或者三维)和内部数据管线212。内部控制器250与核心200通信以使用核心200的单元的阵列210执行存储操作,例如读取、写入、擦除等。在某些实施例中,“单元”可能指的是核心200的存储器或者存储设备的最小或者基本物理单元,且可能被可互换地称为“存储单元”、“存储器单元”等。例如,单元可以是nand闪存存储器的浮置栅极晶体管,电阻性存储器的memristor等。因此,在另外的实施例中,核心200的单元的阵列210可以是二维网格、三维块、组、或者其他类似的单元集合,其中数据可以物理地存储以用于短期存储器使用、长期存储使用等。在某些实施例中,核心200除阵列210之外可以包括另外的组件或者外围组件,例如字线驱动器、用于位线的传感放大器、存储从阵列210读取或者写入到阵列210数据的锁存器,等等。在各种实施例中,内部数据管线212可以是核心200内部的数据管线(例如,邻近或者接近于阵列210的行或者列)。内部数据管线212可以包括临时存储写入到阵列210或者从阵列210读取的数据的存储电路、元件或组件。例如,在一个实施例中,数据可以写入到位线上的阵列210或者从该阵列210读取,且位线可以连接到锁存器,该锁存器存储将经由位线写入的位或者接收已经经由位线读取的位。在另外的实施例中,在阵列210的每个单元存储多个位(例如,通过将存储电压、存储阻抗等的范围划分为四个、八个或者另一数目的状态),位线可以耦合到用于读取或者写入数据的多个位到阵列210中的单元的多个锁存器。在提供对阵列210的块或者页级访问的传统模式中(例如,以512b页、4kib页等),耦合到位线的锁存器可以存储一个或多个页的数据,且可以被称为页寄存器缓冲器。在以4字节、8字节等的脉冲串提供对阵列210的字节可寻址访问的脉冲模式中(例如,在处理器寄存器、存储器总线的宽度等),具有用于少量页的空间的页寄存器缓冲器可以包括用于临时存储或者排列大量存储器脉冲串的空间。内部数据管线212可以包括页寄存器缓冲器的锁存器,更小数目的锁存器(例如,对于不提供页或者块可寻址的传统模式的核心200)、附加的临时存储电路或组件,等等。在某些实施例中,内部数据管线212(或者缓冲器252)的“级”可以指的是能够缓冲用于一个存储操作的数据的锁存器、寄存器或者其他存储电路或元件的区域、集合或者分组。例如,如果存储操作读取或者写入数据页,级能够存储一个页。因此,在另外的实施例中,内部数据管线212中的级的数目高效地是可以由内部数据管线212缓冲的存储操作的数目。在提供不同大小的存储操作的一些实施例中(例如,在块可寻址传统模式和字节可寻址脉冲模式中),管线212中的级的数目可能基于存储操作的大小而变化。例如,提供页级操作的一个级的数据管线212可以提供用于更小的数据脉冲的多个级。在示出的实施例中,内部数据管线212包括三级。但是,内部数据管线212在另一实施例中可以提供更大或者更小的级数。在各种实施例中,缓冲器252存储、缓冲或者排列与存储器核心200的存储操作相关联的数据。在某些实施例中,存储操作可以包括读取操作、写入操作、编程操作、擦除操作等。与存储操作相关联的数据可以包括用于写入操作的要写入到核心200的数据,用于读取操作的要从核心200读取的数据,等等。在某些实施例中,缓冲器252可以保持数据的先进先出(fifo)次序,以使得以请求读取操作的次序存储用于读取操作的数据,以从装置控制器126发送数据的次序存储用于写入操作的数据等,且缓冲器252可以被称为fifo或者队列。在示出的实施例中,存储器裸芯202包括一个缓冲器252。在另一实施例中,存储器裸芯202可以提供多个缓冲器252,例如用于读取操作的第一缓冲器252和用于写入操作的第二缓冲器252。在各种实施例中,缓冲器252可以包括数据的存储位置的集合,例如寄存器、锁存器、一系列易失性存储器、环形缓冲器、fifo电路等。就像核心200的内部数据管线212那样,缓冲器252的“级”可以指能够缓冲一个存储操作的数据的缓冲器252的区域、集合、分组、或者锁存器、寄存器、存储器位置的区域,或者其他存储电路或元件。在在示出的实施例中,缓冲器252包括四级,但是在另一实施例中的缓冲器252可以包括更大或者更小的级数。在一个实施例中,内部控制器250经由命令/地址端口152和数据端口154通信,以接收命令和地址信息并传送核心200上的存储操作的数据。在各种实施例中,内部控制器250可以指裸芯202上的组件、控制/操作逻辑、组件的集合等,该裸芯202接收命令和/或地址信息,传送数据到或者从装置控制器126传送数据,传递命令、地址和/或数据到一个或多个核心200等。在示出的实施例中,内部控制器250经由命令/地址端口152接收存储操作的命令和地址信息。在某些实施例中,命令和地址信息可以包括命令,例如读取命令、写入命令、编程命令、擦除命令、状态查询命令和核心200支持的任何其他命令,和对应于命令的地址,例如写入数据的地址,读取数据的地址等。内部控制器250可以从装置控制器126接收命令和地址信息。例如,装置控制器126可以使用命令/地址端口152发送命令和地址信息。在各种实施例中,内部控制器250可以将来自装置控制器126的命令和地址信息解码或者转换为核心200使用的格式。例如,在一个实施例中,内部控制器250的命令/地址解码器可以提供地址接口以在由主机或者装置控制器126使用的地址和由核心200使用的硬件地址之间转换。在某个实施例中,内部控制器250可以缓冲或者排列命令和地址信息,以将用于存储操作的命令和地址信息匹配缓冲器252中的相关联的数据。在某些实施例中,内部控制器250可以使用数据路径控制组件150以从装置控制器126接收用于存储操作的命令和地址信息,且分派地址到核心200以启动存储操作。在一个实施例中,内部控制器250使用内部总线驱动器258以传送数据到核心200或者从核心200传送数据(经由缓冲器252),且使用数据端口154传送数据到装置控制器126或者从装置控制器126传送数据。在某些实施例中,内部总线驱动器258可以串行化或者解串行化数据以在不同的内部或者外部数据总线宽度之间转换。在一个实施例中,内部总线驱动器258可以包括或者与缓冲器252协作以控制内部总线上在缓冲器252和核心200之间的数据流。在另外的实施例中,内部总线驱动器258可以与数据路径控制组件150协作以协调存储操作的地址和数据。数据路径控制组件150可以实质上类似于上面关于图1描述的数据路径控制组件150。在各种实施例中,内部控制器250使用数据路径控制组件150以与存储器核心200通信以启动存储操作。在某些实施例中,数据路径控制组件150发送控制信息到内部总线驱动器258,以控制存储操作的数据流、启动命令或操作、分派地址等。在各种实施例中,启动操作可以指以任何方式开始、起动或者启动操作。例如,在一个实施例中,内部控制器250可以通过分派地址到核心200以用于执行操作来启动操作。对于启动和执行读取操作的实例,在一个实施例中,数据路径控制组件150可以经由命令/地址端口152接收命令和地址信息。数据路径控制组件150可以通过经由内部地址总线286将用于读取操作的地址发送(或者通过使用内部总线驱动器258发送)到核心200来启动读取操作。核心200可以通过感应或者检测阵列210的单元中存储的数据值来执行读取操作,且可以使用内部数据管线212输出数据。核心200可以经由内部数据总线288发送所读取的数据到缓冲器252。在图2中,为了可视化地址和数据流的方便起见分开地示出内部地址和数据总线286、288。但是,在某些实施例中,内部地址总线286和内部数据总线288可以是能够发送地址和数据的单个内部总线。装置控制器126可以经由数据端口154从缓冲器252检索所读取的数据。在某些实施例中,内部总线驱动器258可以控制经由内部总线在核心200和缓冲器252之间的数据流、和/或在缓冲器252和装置控制器126之间的数据流。在另外的实施例中,装置控制器126可以经由数据端口154提供用于控制数据流的外部时钟信号282(例如,由装置控制器126或者存储器裸芯202外部的另一时钟信号发生器生成的)。对于启动和执行写入操作的实例,在一个实施例中,数据路径控制组件150可以经由命令/地址端口152接收命令和地址信息。装置控制器126可以经由数据端口154发送要写入到缓冲器252的数据。可以根据由装置控制器126提供的外部时钟信号282控制从装置控制器126到缓冲器252的数据传送。数据路径控制组件150可以与内部总线驱动器258协作以将地址匹配到用于写入操作的数据,且通过分别经由内部地址总线286和内部数据总线288(或者配置为传送地址和数据的单个内部总线)发送地址和数据到核心200来启动操作。核心200可以在核心200的内部数据管线212上从缓冲器252接收数据,且可以通过改变或者更新由阵列210的单元数据值来写入数据到阵列210。虽然在图2中仅示出一个外部时钟信号282,在某些实施例中,装置控制器126可以提供用于控制存储器裸芯202的多于一个外部时钟或者选通信号282。例如,在一个实施例中,读取使能选通(用于读取)或者数据选通(用于写入)可以控制经由数据端口154传送的数据的速度。例如,如果数据端口154是八位宽,可以在读取使能选通或者数据选通的四个时钟周期中传送数据的64位脉冲(例如,八个传送,使用两倍数据速率信令)。在另外的实施例中,装置控制器126可以在读取使能和数据选通的频率的四分之一提供另外的外部时钟信号,以使得另外的外部时钟信号的一个时钟周期对应于在装置控制器126和缓冲器252之间传送一个存储操作的数据所用的时间。(类似地,如果另一大小或者在不同宽度不同总线上的数据脉冲占用比读取使能或者数据选通的四个时钟周期更多或者更少的时间,则可以通过适当地划分允许读出或者数据选通频率来提供每个数据脉冲循环一次的外部时钟信号)。某些类型的非易失性存储器裸芯202可以使用用于数据传送的同步缓冲器252,其中核心200和缓冲器252之间的数据传送、和缓冲器252和装置控制器126(因为它在裸芯202的外部在这里也称为“外部”控制器)之间的数据传送由同一时钟信号(例如,外部时钟信号282)控制。例如,缓冲器252可以是具有匹配其输出频率的输入频率的同步fifo缓冲器。但是,使用同步缓冲器可以以几种方式引入等待时间。例如,可以根据外部时钟信号282控制存储操作的整个内部路径,包括内部控制器250启动存储操作,核心200执行存储操作和用于存储操作的核心200和缓冲器252之间的数据传送,但是存储操作的整个内部路径能够以更快速度或者更高时钟频率运行。缓冲器252的大小或者级数可以增加以补偿内部数据路径的增加的等待时间,但是增加级数可以增加缓冲器252的片上区域。另外,因为用于存储操作的数据以相同速度进入和离开同步缓冲器,在数据传送到缓冲器252之外之前(例如,预先取出读取数据),附加等待时间可以与预填充缓冲器级相关联,如果级数也增加则附加等待时间可能进一步增加。代替地,在某个实施例中,裸芯202的内部操作,包括内部控制器250启动存储操作、核心200执行存储操作和用于存储操作的在核心200和缓冲器252之间的数据传送可以根据存储器裸芯202的内部时钟信号来控制。可以由内部控制器250或者裸芯202上的其它组件中包括的时钟发生器电路提供内部时钟信号。如果信号、总线、通道、操作或组件与内部时钟信号同步或者根据内部时钟信号控制,则它们可以被称为处于“内部时钟域”,且如果它们与外部时钟信号282同步或者根据外部时钟信号282控制,则它们可以相应地被称为处于“外部时钟域”。在图2中,黑色(填充的)箭头示出内部时钟域中的信息流,且白色(未填充的)箭头示出外部时钟域中的信息流。因此,在示出的实施例中,根据内部时钟信号(例如,在内部时钟域中的)控制的操作包括内部控制器250启动存储操作(例如,使用数据路径控制组件150以经由内部总线286发送地址),核心200执行存储操作和用于存储操作的在核心200和缓冲器252之间的数据传送(例如,如使用内部总线288由内部总线驱动器258控制的)。相反地,根据外部时钟信号282控制的(例如,在外部时钟域中的)在示出的实施例中的操作包括经由数据端口154在缓冲器252和外部控制器126之间的数据传送,且外部控制器126经由命令/地址端口152发送命令和地址信息。在某些实施例中,与使用外部时钟信号282控制内部操作相比,使用内部时钟信号控制内部操作可以减小内部数据路径的等待时间。例如,对于读取操作,发送地址到核心200,在核心200内(例如,在内部数据管线212内)移动数据、且传送读取数据到缓冲器252可以向从阵列210实际读取数据所用的时间增加四个时钟周期。裸芯202能够在少至44ns执行那些操作,但是如果操作以(例如)15ns的时钟周期在外部时钟域中发生,四个时钟周期可能代替仅44ns向数据路径增加60ns的等待时间。相对地,如果使用具有12.5ns时段的内部时钟,相同的四个时钟周期可以仅增加50ns的等待时间到数据路径。为了说明性和非限制目的公开内部和外部时钟周期、用于执行操作的时钟周期数目等。在另一实施例中,虽然仍然使用内部时钟信号以减小等待时间,但时钟和裸芯速度可能不同。在一个实施例中,内部时钟信号独立于外部时钟信号282。如果时钟信号与其他时钟信号分开地生成、独立于其他时钟信号或者不参考其他时钟信号,则时钟信号在这里可以被称为“独立于”另一时钟信号。例如,可以生成独立的内部时钟信号而不参考外部时钟信号282。作为另一实例,内部时钟信号的时钟速度、时段或者频率可以基于裸芯202能够多快地运行内部操作,同时来自外部控制器126的外部时钟信号282可以基于外部控制器126能够多快地发送和接收数据。如果裸芯202与较慢的外部控制器126一起使用,则取决于外部时钟信号282的内部时钟信号(例如,通过乘以外部时钟信号282的频率)将减慢。相反地,在某些实施例中,生成独立于外部时钟信号282的内部时钟信号可以允许以适于裸芯202的速度配置内部时钟信号,而无论外部控制器126或者外部时钟信号282的速度如何。在一些实施例中,用于在核心200和缓冲器252之间传送存储操作的数据的时间(例如,经由内部数据总线288)可以对应于裸芯202的内部时钟的一个时钟周期。类似地,在另外的实施例中,用于在缓冲器252和装置控制器126之间传送一个存储操作的数据的时间可以对应于外部时钟信号282的一个时钟周期(虽然,如上所述,外部控制器126可以以其他速度提供附加的外部时钟信号282)。在某些实施例中,内部时钟信号的时钟周期(例如,在核心200和缓冲器252之间传送存储操作的数据的时间)可以比用于在缓冲器252和外部控制器126传送存储操作的数据的时间更快(例如,可以以更少时间发生)。如果生成内部时钟信号而无论外部时钟信号282如何,则比外部时钟信号282更快的内部时钟信号仍然可以被称为独立于外部时钟信号282。在一些实施例中,提供比缓冲器252和外部控制器126之间更快的核心200和缓冲器252之间的连接可以减小裸芯202的数据路径等待时间。例如,对于一系列读取操作,核心200可以比外部控制器126取出缓冲器252的数据更快地将数据置于缓冲器252中,且核心200可以以连续读取操作的数据填充缓冲器252、同时避免长的、高的等待时间预取时段。在某些实施例中,缓冲器252可以是或者包括基于内部时钟信号和外部时钟信号282更新的异步先入先出(fifo)缓冲器。如上所述,同步或者异步fifo缓冲器252可以以请求存储操作的次序存储和传送用于存储操作的数据。在另外的实施例中,异步fifo缓冲器252可以在时钟域之间传递数据,以使得数据在一个时钟域中写入到异步fifo缓冲器252,并在另一时钟域中从异步fifo缓冲器252读取。例如,在示出的实施例中,对于读取操作,来自核心200的数据可以在内部时钟域中传送到异步fifo缓冲器252,且数据可以在外部时钟域中从异步fifo缓冲器252传送到外部控制器126。相反地,对于在示出的实施例中的写入操作,来自外部控制器126的数据可以在外部时钟域中传送到异步fifo缓冲器252,且随后在内部时钟域中从异步fifo缓冲器252传送到核心200。在某些实施例中,异步fifo缓冲器252可以包括配置为排列数据的环形缓冲器、一系列易失性存储器、锁存器的集合等;存储读指针和写指针的值的存储器位置的集合、寄存器等;以及用于控制数据传送、更新指针的控制硬件等。但是,在一些实施例中,如果比从缓冲器252读取数据更快地将数据写入到缓冲器252,则在两个不同时钟域之间传递数据的缓冲器252可能溢出。在一个实施例中,核心200的内部数据管线212可以当做缓冲器252的扩展,以使得可用于缓冲与存储操作相关联的数据的总级数是缓冲器252中的级数加上内部数据管线212中的级数。但是,如果缓冲器252和内部数据管线212两者都满,则仍然可能发生与缓冲器溢出相关联的问题,例如数据损坏。因此,在某些实施例中,响应于确定内部数据管线212和缓冲器252两者都满,内部控制器250可以使用数据路径控制组件150以延迟启动存储操作。如在此使用的,如果内部数据管线212或者缓冲器252的级可用于存储用于存储操作的数据,则该级可以被称为“空”,且如果该级包括用于还未完成的存储操作的数据,则该级可以被称为"满"。一旦读取操作的数据已经从缓冲器252传送到装置控制器126,则读取操作可以被称为“完成”。存储读取操作的数据的缓冲级然后是空的,且可以用于缓冲随后的存储操作的数据。相反地,一旦写入操作的数据已经从内部数据管线212记录到阵列210或者非易失性存储器单元,则写入操作可以被称为“完成”。存储写入操作的数据的内部数据管线级然后是空的,且可以用于缓冲随后的写入操作的数据。在一个实施例中,可以擦除空的级(例如,可以存储零、一或者指示该级是空的另一特定数据值)。在另一实施例中,空的级仍然可以存储完成的操作的数据,但是当该级再次在使用中时,内部数据管线212和/或缓冲器252可以安全地重写完成的操作数据。术语“满”在这里也可以用于参考内部数据管线212和/或缓冲器252它们自己以指示该级是满的。因此,如果在内部数据管线212或者缓冲器252中没有空的级,则内部数据管线212和缓冲器252两者都是满的。在一些实施例中,缓冲器252的读指针和写指针可以指示缓冲器252是否是满的。例如,写指针可以指向要写入数据的缓冲级,且可以响应于数据写入到写入点当前指向的该级而递增以指向下一级。(缓冲器252可以配置为环形,以使得最后一级之后的“下一”级是第一级)。类似地,读指针可以指向要读取数据的缓冲级,且可以响应于读取数据而递增以指向下一级。因此,写指针回绕缓冲器252且追上读指针可以指示缓冲器252是满的。但是,缓冲器252的读指针和写指针单独地可以不指示缓冲器252和内部数据管线212两者是否都满。因此,在某些实施例中,内部控制器250和/或数据路径控制组件150可以保持跟踪何时启动和完成存储操作,以确定内部数据管线212和缓冲器252两者是否都满。在示出的实施例中,数据路径控制组件150包括计数器254和同步器256,并使用计数器254和同步器256,如以下将要描述的,以确定内部数据管线212和缓冲器252两者是否都满,或者队列或者缓冲器252和内部数据管线212综合地是否包括空的级。但是,在另一实施例中,可以省略计数器254和/或同步器256,且数据路径控制组件150可以以另一方式确定内部数据管线212和缓冲器252两者是否都满。因此,在某些实施例中,响应于确定内部数据管线212和缓冲器252两者都满,内部控制器250可以使用数据路径控制组件150以延迟启动存储操作。例如,内部数据管线212和队列或者缓冲器252两者可能都填满来自已经开始而没有完成的存储操作的数据,且响应于确定队列或者缓冲器252和内部数据管线212综合地不包括空的级,数据路径控制组件150可以等待开始另外的存储操作。在一个实施例中,数据路径控制组件150可以分派用于执行存储操作的地址,但是可以响应于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值满足基于内部数据管线212和用于缓冲数据的装置中的总级数的阈值,停止用于存储操作的地址的分派。在一个实施例中,启动读取操作可以包括将用于读取操作的地址发送到核心200,且数据路径控制组件150可以停止发送或者分派地址以延迟启动读取操作,等待开始另外的读取操作等。停止读取地址的分派可以包括排列地址以在之后发送到核心200,向装置控制器126发信号通知将不启动读取操作(以使得装置控制器126在之后重新请求读取操作),等等。如果队列或者缓冲器252和内部数据管线212两者都填满来自先前读取操作的数据(例如,如果队列或者缓冲器252和内部数据管线212综合地不包括空的级),则延迟读取操作的启动可以提供用于先前读取操作之一的数据从缓冲器252传送到装置控制器126的时间,在缓冲器252中创建空的级。缓冲器252中的空的级然后可以填充来自内部数据管线212的数据,在内部数据管线212中创建空的级,该空的级然后可用于另外的读取操作的数据。在另外的实施例中,启动写入操作可以包括将用于写入操作的地址与要写入的数据一起从缓冲器252发送到核心200。数据路径控制组件150可以停止发送或者分派地址和数据,以延迟启动写入操作,等待开始另外的写入操作等。停止写入地址和数据的分派可以包括排列将在之后由装置控制器126发送的数据的地址,当在缓冲器252中空的级可用时,发信号通知装置控制器126将不启动写入操作(以使得装置控制器126在之后重新请求写入操作),等等。如果队列或者缓冲器252和内部数据管线212两者都填满来自先前写入操作的数据(例如,如果队列或者缓冲器252和内部数据管线212综合地不包括空的级),则延迟写入操作的启动可以提供用于先前写入操作之一的数据从内部数据管线212写入到存储器单元的阵列210的时间,在内部数据管线212中创建空的级。缓冲器252可以保持满的,直到启动另一写入操作为止(包括发送地址和传送要从缓冲器252写入的数据到内部数据管线212中的空的级)。因此,在某些实施例中,内部控制器250也可以与外部控制器126通信(例如,经由准备好/忙信号)以使得外部控制器126延迟发送要写入的另外的数据直到空的缓冲级可用为止。在另一实施例中,外部控制器126可以配置为等待发送用于后续写入操作的数据的间隙时间,其中选择该间隙时间以允许空的缓冲级变得可用。在各种实施例中,(如上关于读和写操作所述的),延迟存储操作的启动可以提供完成一个或多个已经启动的存储操作的时间,增加内部数据管线212和/或缓冲器252中的空的级的数目。因此,在另外的实施例中,内部控制器250和/或数据路径控制组件150可以启动先前延迟的存储操作,恢复分派用于存储操作的地址,且/或响应于确定内部数据管线212和/或缓冲器252包括空的级而开始另外的存储操作。在某个实施例中,内部控制器250和/或数据路径控制组件150可以基于确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值是否满足阈值,而停止或者恢复分派地址。在另外的实施例中,该阈值可以基于内部数据管线212和缓冲器252中的总级数。阈值可以基于比较分派的地址和完成的存储操作之间的差值与阈值、而是“满足的”或者“不满足的”。例如,在一个实施例中,如果该差值超过(或者超过或者等于)该阈值,则可以满足阈值,且如果该差值小于或等于(或者严格地小于)该阈值,则可以不满足阈值。总的来说,在各种实施例中,已经分派的地址的数目和已经完成的存储操作的数目之间的差值可以对应于内部数据管线212和/或缓冲器252中的满的级的数目。因此,如果过多级是满的,则可能满足阈值,且内部控制器250和/或数据路径控制组件150相应地可以停止分派地址。相反地,如果存在足够的空的级以恢复分派地址,则可能不满足阈值,且内部控制器250和/或数据路径控制组件150可以相应地恢复分派地址。因此,在各种实施例中,该阈值可以基于内部数据管线212和缓冲器252中的总级数。例如,在一个实施例中,如果已经分派的地址的数目和已经完成的存储操作的数目之间的差值等于内部数据管线212和缓冲器252中的总级数(例如,如果内部数据管线212和缓冲器252两者都满),则可能满足阈值。在另一实施例中,内部控制器250可以保留一些数目的级用于内部使用,且如果已经分派的地址的数目和已经完成的存储操作的数目之间的差值等于内部数据管线212和缓冲器252中的总级数减去保留用于内部使用的级数,则可能满足阈值。基于内部数据管线212和缓冲器252中的总级数选择阈值的各种另外的方式鉴于本公开将是清楚的。在各种实施例中,内部控制器250和/或数据路径控制组件150可以使用计数器254以确定队列或者缓冲器252和内部数据管线212综合地是否包括空的级,或者内部数据管线212和缓冲器252两者是否都满。在各种实施例中,计数器254可以包括配置为存储、递增和递减数字的寄存器、触发器的集合、存储器位置等。相等地,计数器254可以包括配置为存储和递增数字的两个这种位置、和用于计算两个数字之间的差值的逻辑电路,以使得递增数字之一等于递减计数器254。各种类型的计数器254鉴于本公开将是清楚的。在一个实施例中,计数器254可以跟踪已经由内部控制器250启动的存储操作的数目和已经完成的存储操作的数目之间的差值,以确定内部数据管线212和缓冲器252两者是否都满。计数器254可以确定已经分派的地址的数目和已经完成的存储操作的数目之间的差值,对已经开始的存储操作和已经完成的存储操作计数(和比较两个计数),等等。例如,对于读取操作,计数器254可以响应于用于启动读取操作的信号(例如,用于发送要读取到核心200的数据的地址的内部时钟信号,导致填充空的级)递增,且可以响应于用于完成读取操作的信号(例如,用于将读取数据从缓冲器252传送到装置控制器126的外部时钟信号282,导致创建空的级)递减。因此,计数器254的值可以对应于内部数据管线212和缓冲器252中的满的级的数目。在另外的实施例中,数据路径控制组件150可以基于比较计数器254的值与内部数据管线212和缓冲器252的总级数,来延迟或者恢复启动另外的存储操作。相等地,在另一实施例中,计数器254的初始值可以是总级数,且随着级被填充,计数器254可以递减,并与零比较以确定是否延迟启动另外的存储操作。在一个实施例中,计数器254可以在存储器裸芯202的内部时钟域中操作。例如,在某个实施例中,当内部时钟信号的边缘出现时可以更新计数器254(例如,递增、递减或者保持不变)。但是,在某个实施例中,完成读取操作可以包括在外部时钟域中(例如,基于外部时钟信号282)、在缓冲器252和装置控制器126之间传送数据。用于在缓冲器252和外部控制器126之间传送存储操作的数据的外部时钟信号282可以被称为数据传送信号282。例如,在外部时钟域中的数据传送信号282可以启动或者控制缓冲器252和外部控制器126之间的数据传送。因为通过数据传送完成读取操作,所以当完成操作时更新计数器254可以取决于外部时钟域中的数据传送信号282。但是,因为外部时钟域中的信号的边缘可以独立于计数器254操作的内部时钟域,所以计数器254可能错过数据传送信号282的脉冲或者周期,且可能不精确地反映满(或者空的级)的数目。因此,在某个实施例中,同步器256将用于在缓冲器252和外部控制器126之间传送存储操作的数据的来自外部时钟域的数据传送信号282转换为用于更新计数器254的内部时钟域中的计数器更新信号284。例如,在示出的实施例中,同步器256从内部总线驱动器258(其从外部控制器126接收数据传送信号282)接收数据传送信号282,将数据传送信号282转换为内部时钟域中的计数器更新信号284,且发送计数器更新信号284到计数器254。在各种实施例中,将数据传送信号282同步到内部时钟域可以避免计数器254错过在外部时钟域中出现的信号。以下关于图3、图4a和图4b进一步详细地描述同步器256的实施例。图3是图示同步器300的一个实施例的电路图。同步器300可以实质上类似于上面关于图2描述的同步器256,且可以将来自外部时钟域的数据传送信号282转换为内部时钟域中的计数器更新信号284。在示出的实施例中,同步器300包括输入电路352、同步电路354和输出电路356。图4a和图4b示出时间线400、450,其图示在图3的同步器300的不同点的信号或者电压。信号在高低值(例如,电压)之间交替。在示出的实施例中,信号的“脉冲”指的是信号的值为高的时段,以上升沿或者正沿开始,且以下降沿或者负沿结束。在另一实施例中,使用不同的习惯,信号的“脉冲”可以指信号值为低的时段(以下降沿开始和以上升沿结束)。在示出的实施例中,来自多次读操作的数据存储在缓冲器252中,且数据传送信号282的五个脉冲从装置控制器126到达,以将来自五个读操作的数据传送到装置控制器126。在示出的实施例中,数据传送信号282的每个脉冲完成读取操作,所以计数器更新信号284应该类似地包括五个脉冲以更新计数器254。在图4a和图4b中,数据传送信号282和计数器更新信号284的脉冲标记为0-4。总的来说,在各种实施例中,同步器300可以通过在由内部时钟控制的时间捕获外部时钟域信号的值,来将来自外部时钟域的信号同步到内部时钟域。在示出的实施例中,同步器300包括四个d-型触发器310、320、330、340,其每个接收时钟输入("clk),捕获当时钟输入的上升沿出现时数据输入的值(“d”),且在输出产生捕获的值(“q”)。因此,d型触发器在由时钟输入接收的时钟信号的每个上升沿高效地检查和输出它的数据输入的值,且每个触发器310、320、330、340的输出在与它的时钟输入相同的时钟域中(除了如果数据输入的边缘和时钟输入的上升沿重叠则输出可能是亚稳的之外)。在另一实施例中,不同类型的触发器或者其他时钟电路可以由同步器300使用以在特定时钟域中输出信号。在示出的实施例中,提供内部时钟信号322,其比来自外部时钟域的数据传送信号282更快。但是,在图4a和图4b中可以看到,虽然数据传送信号282的时段比内部时钟信号322的时段更长,但数据传送信号282的脉冲比内部时钟信号322的一个时段更短。因此,检查内部时钟信号322的每个上升沿所数据传送信号282的值可能错过完全在内部时钟信号322的上升沿之间出现的数据传送信号282的脉冲。因此,在一个实施例中,输入电路352响应于数据传送信号282的脉冲而翻转(toggle)外部时钟域中的中间信号314。如在此使用的,“触发”信号可以指改变或者切换信号一次,或者从高值到低值,或者从低值到高值。因此,虽然“脉冲”包括上升沿和下降沿,但信号在每个边缘“翻转”。在某些实施例中,响应于数据传送信号282的脉冲触发中间信号314可以允许即使在捕获中间信号314之前脉冲具有结束,也通过采样、捕获或者检测翻转的中间信号314的值(例如,在内部时钟信号322的上升沿)来检测脉冲。在示出的实施例中,输入电路352包括接收外部时钟域中的数据传送信号282作为时钟输入的触发器310、和将输入电路触发器310的反相输出耦合到输入电路触发器310的数据输入的“非”门316。因为触发器310的输出反相并被耦合到数据输入,因此每次出现时钟输入的上升沿输出将翻转。因此,通过耦合到时钟输入的数据传送信号282,来自输出的中间信号314将响应于数据传送信号282的脉冲(特别地,当脉冲的上升沿出现时)在外部时钟域中翻转。在一个实施例中,同步电路354将中间信号314转换到内部时钟域。在示出的实施例中,同步电路354包括从外部时钟域接收中间信号314的第一触发器320、和从第一触发器320接收输出信号324的第二触发器330,并输出已转换中间信号334(例如,转换到内部时钟域的、来自输入电路352的中间信号314)。在示出的实施例中,内部时钟信号322耦合到同步电路354的第一触发器320的时钟输入。因此,将在内部时钟信号322的下一上升沿上捕获和输出来自输入电路352的中间信号314的翻转。但是,因为来自输入电路352的中间信号314在外部时钟域中,当中间信号314翻转时的边缘可以与内部时钟信号322的上升沿重叠,且同步电路354中的第一触发器320的输出信号324可以是亚稳的(metastable)。链接第二触发器330到第一触发器320提供延迟,在延迟期间第一触发器320的可能的亚稳输出324可以被解决(resolve)为稳定的低值或者高值。在一个实施例中,第二触发器330的时钟输入相对于第一触发器320之后时钟输入反相,以使得代替在全周期延迟之后(例如,在内部时钟信号322的下一上升沿上),在半周期延迟之后(例如,在内部时钟信号322的下降沿上)第二触发器330捕获第一触发器320的输出信号324。在另一实施例中,没有时钟输入相对于其他时钟输入反相,以实现全周期延迟。在任一情况下,因为第一触发器320和第二触发器330两者由内部时钟信号322控制(直接或者以反相形式),它们可以被称为在内部时钟域中操作。在一个实施例中,输出电路356响应于来自触发的同步电路354的已转换中间信号334,输出内部时钟域中的计数器更新信号284的脉冲。总的来说,在各种实施例中,输入电路352将脉冲转换为翻转,同步电路354将翻转带到内部时钟域中,且输出电路356将翻转转换回到脉冲。在示出的实施例中,输出电路356包括延迟已转换中间信号334的触发器340、和基于已转换中间信号334和延迟的已转换中间信号344而产生用于计数器更新信号284的脉冲的“异或”门346。在示出的实施例中,输出触发器340的时钟输入耦合到内部时钟信号322,以使得输出触发器340在内部时钟信号322的上升沿上输出信号344,在半周期之后同步电路354的第二触发器330输出已转换中间信号334(因为它的时钟输入反相,在内部时钟信号322的下降沿上)。在另一实施例中,在同步电路354的第二触发器330的时钟输入不反相时,从同步电路354的第一触发器320到第二触发器330到输出触发器340的延迟可以是内部时钟信号322的两个全周期而不是两个半周期。当已转换中间信号334和延迟的已转换中间信号344相同时,“异或”门346的输出为低。但是,当已转换中间信号334翻转时,“异或”门346的输出达到高,直到半周期之后,延迟的已转换中间信号344也翻转为止。因此,已转换中间信号334的每个翻转开始计数器更新信号284的半周期脉冲。图4a和图4b示出时间线400、450,其分别图示上面关于图3的同步器300讨论的信号。每个时间线400、450示出(在外部时钟域中的)数据传送信号282、由输入电路352产生的翻转的中间信号314、内部时钟信号322、来自同步电路354中的第一触发器320的输出信号324、来自同步电路354中的第二触发器330的已转换中间信号334、来自输出触发器340的延迟的已转换中间信号344和计数器更新信号284。时间线400、450两者都示出外部时钟域中的数据传送信号282的五个脉冲,标记为0-4。对于对应于脉冲0的事件标记时间t0、t1、t2和t3。类似地在时间线400、450两者中标记相应的事件,虽然它们可能在不同的时间出现。输入电路352响应于数据传送信号282的脉冲而翻转外部时钟域中的中间信号314。在示出的实施例中,中间信号314在数据传送信号282中的脉冲0-4的每个上升沿上翻转。例如,中间信号314在脉冲0的上升沿(在时间t0)翻转到高值,且在脉冲1的上升沿翻转回到低值。在示出的实施例中,中间信号314仍然在外部时钟域中,因为它不由内部时钟信号322控制。对应于数据传送信号282的脉冲到翻转的中间信号314的改变由同步电路354的第一触发器320在产生(可能亚稳的)输出信号324的内部时钟信号322的下一上升沿捕获,且到输出信号324的改变由同步电路354的第二触发器330在产生已转换中间信号334的内部时钟信号322的下一下降沿捕获。例如,由脉冲0的上升沿在时间t0产生的中间信号314中的翻转由同步电路354的第一触发器320在时间t1(内部时钟信号322的下一上升沿)捕获,且来自第一触发器320的输出信号324中的相应改变由同步电路354的第二触发器330在时间t2(内部时钟信号322的下一下降沿)捕获。因此,在示出的实施例中,来自同步电路354的第二触发器330的已转换中间信号是类似于来自输入电路352的翻转的中间信号314的翻转的信号,但是在内部时钟域中。在示出的实施例中,输出触发器340在内部时钟信号322的下一上升沿上捕获已转换中间信号334。例如,响应于数据传送信号282中的脉冲0的上升沿产生的在时间t2的已转换中间信号334中的翻转在内部时钟信号322的半周期之后的时间t3由输出触发器340捕获。因此,在示出的实施例中,延迟的已转换中间信号344是延迟内部时钟信号322的半周期的已转换中间信号334。最后,“异或”门346组合已转换中间信号334和延迟的已转换中间信号344以产生用于计数器更新信号284的脉冲。当已转换中间信号334和延迟的已转换中间信号344相同时,由“异或”门346输出的计数器更新信号284为低。但是,在已转换中间信号334中的改变由输出触发器340捕获以产生延迟的已转换中间信号344之前的半周期中,由“异或”门346输出的计数器更新信号284为高。因此,已转换中间信号334的每个翻转产生计数器更新信号284中的脉冲。在时间线400、450中可以看到,外部时钟域中的数据传送信号282的脉冲0-4因此转换为内部时钟域中的计数器更新信号284的脉冲0-4。例如,在时间t0开始的数据传送信号282的脉冲0被转换为在时间t2开始并在时间t3结束的计数器更新信号284的脉冲0。在图4a中示出的时间线400中,在时间t0的数据传送信号282的脉冲0的上升沿略微在内部时钟信号322的上升沿之后出现。中间信号314中的相应的翻转不由同步电路354中的第一触发器320捕获直到内部时钟信号322的下一上升沿为止,该内部时钟信号322的下一上升沿在时间t1,内部时钟信号322的几乎全周期之后。计数器更新信号284的相应的脉冲0在时间t3,内部时钟信号322的另一周期之后结束。因此,在时间线400中,同步器300可以更新具有近似两个内部时钟周期的延迟的计数器254。在图4b中示出的时间线450中,在时间t0的数据传送信号282的脉冲0的上升沿略微在内部时钟信号322的上升沿之前出现,所以中间信号314中的相应的翻转几乎立即在时间t1由同步电路354中的第一触发器320捕获。(因此,时间t0和t1在时间线450中比在时间线400中接近得多)。计数器更新信号284的相应的脉冲0在时间t3,内部时钟信号322的一个周期之后结束。因此,在时间线450中,同步器300可以更新具有近似一个内部时钟周期的延迟的计数器254。在某些实施例中,可以选择缓冲器252的大小以补偿由同步器300引入的一个到两个内部时钟周期的延迟。图5是图示用于控制非易失性存储器的数据路径的方法500的一个实施例的示意性流程图。方法500开始,且内部控制器250在队列252中存储502用于存储操作的数据。存储操作用于包括非易失性存储单元的阵列210和内部数据管线212的存储器核心200。数据路径控制组件150确定504队列252和内部数据管线212是否综合地包括空的级。如果队列252和内部数据管线212综合地不包括空的级,则数据路径控制组件150等待508以开始存储操作,且方法500继续,数据路径控制组件150重新确定504队列252或者内部数据管线212是否包括空的级。如果队列252和内部数据管线212综合地包括空的级,则数据路径控制组件150开始506存储操作,且方法500结束。图6是图示用于控制非易失性存储器的数据路径的方法600的另一实施例的示意性流程图。方法600开始,且内部控制器250在队列252中存储602用于存储操作的数据。存储操作用于包括非易失性存储单元的阵列210和内部数据管线212的存储器核心200。同步器256同步604来自外部时钟域的数据传送信号282,以用于将在队列252和外部控制器126之间的存储操作的数据传送到内部时钟域以用于更新计数器254。计数器254对已经开始的存储操作和已经完成的存储操作计数606。基于开始和完成的存储操作的计数,数据路径控制组件150确定608队列252和内部数据管线212综合地是否包括空的级。如果队列252和内部数据管线212综合地不包括空的级,则方法600继续数据传送信号282的进一步同步604,并对开始和完成的存储操作计数606。如果队列252和内部数据管线212综合地包括空的级,则数据路径控制组件150开始610存储操作。内部控制器250继续存储602数据以用于队列252中的进一步存储操作,且方法600继续。在各种实施例中,用于缓冲与存储器核心200的存储操作相关联的数据的装置可以包括缓冲器252、锁存器、寄存器、一系列易失性存储器、环形缓冲器、fifo电路、异步fifo电路、能够缓冲数据的其他存储电路或者元件、内部控制器250、内部总线驱动器258、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于缓冲与存储操作相关联的数据的类似的或等效的装置。在各种实施例中,用于分派执行存储操作的地址的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、内部总线286、288、其他逻辑硬件,和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于分派地址的类似的或等效的装置。在各种实施例中,用于停止地址的分派的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、其他逻辑硬件和/或在计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于停止地址的分派的类似的或等效的装置。在各种实施例中,用于恢复地址的分派的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、内部总线驱动器258、内部总线286、288其他逻辑硬件和/或在计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于恢复地址的分派的类似的或等效的装置。在各种实施例中,用于确定已经分派的地址的数目与已经完成的存储操作的数目之间的差值的装置可以包括内部控制器250、数据路径控制组件150、计数器254、同步器256、缓冲器252、内部数据管线212、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于确定差值的类似的或等效的装置。在各种实施例中,用于将来自外部时钟域的数据传送信号282转换为内部时钟域中的计数器更新信号284的装置可以包括内部控制器250、数据路径控制组件150、同步器256、输入电路352、同步电路354、输出电路356、其他逻辑硬件和/或计算机可读存储介质上存储的其他可执行代码。其他实施例可以包括用于将来自外部时钟域的信号转换为内部时钟域中的信号的类似的或等效的装置。本公开可以具体表现为其他特定形式而不脱离它的精神或者本质特征。描述的实施例在各个方面仅考虑为说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是由前述描述指示。在权利要求的含义和等效范围内的所有改变包含在权利要求的范围内。当前第1页12当前第1页12