用于并发和流水线存储器操作的非易失性存储器器件的制作方法

文档序号:6768377阅读:154来源:国知局
专利名称:用于并发和流水线存储器操作的非易失性存储器器件的制作方法
用于并发和流水线存储器操作的非易失性存储器器件本申请要求以发明人Ian Shaeffer和Brent Steven Haukness的名义于2008 ip 12 ^ 9 011 ^ "Non-Volatile Memory Device for Concurrent And Pipelined Memory Operations"的美国临时申请号61/121,083的优先权;在此通过引用并入该在前申请,如同在此记载。
背景技术
某些类型的非易失性存储器是这样设计的,存储器空间的部分必须作为一个存储单位(通常作为“页面”或“块”)被一起写入或擦除;由于这些设计中的每个存储器单元中的可变性,依次改变单元数据状态(例如,编程或擦除)的操作通常基于迭代周期。这些迭代周期被称为“编程验证”周期,尽管在此术语中使用了“编程”,但是应当理解,该术语指的是相同基本操作,无论执行的是块的写入还是擦除。在每个周期中,存储器器件或控制器 (i)尝试使用特定的电压改变存储单位的状态,以及(ii)查看哪个单元没有正确地改变状态;继而根据那些仍未被正确改变状态的单元的需要而重复周期,每个迭代使用略高的电压,直到单元具有正确的状态或者直到产生错误(通常继而将该单位标记为“坏”)。这种方法学的一个不良副作用在于完成状态变化操作可能花费大量的时间;例如,写入事务可能花费比NAND闪存中的读取事务长10倍的时间,以及比NOR闪存中的读取事务长1000倍以上的时间。解决这种问题的尝试通常关注于使用多个非易失性器件,或者将存储器空间划分为有效的多个组,每个组都具有支持电路,允许每个组或器件被独立地读取。然而,一般而言,多数结构仍然不支持对由单个感测阵列和支持写入电路服务的同一基本“组”的并发处理,即,后续读取、擦除、写入或其他事务通常必须排队等候,直到针对所涉及的区或页面的先前操作的所有迭代周期全部完成。需要一种方式允许在先前编程或擦除操作的进行中发起读取、编程或擦除操作, 从而缓解上述问题甚至完全消除该瓶颈。本发明满足了这个需求并提供了其他相关优点。


图1是一个存储器器件的功能图,其具有可以支持对感测放大器单元117的交替使用的内部路由,以用于针对非易失性存储器阵列103的读取和多周期状态改变操作二者,其中多周期状态改变操作涉及对写入数据寄存器的感测放大器单元反馈。图2是第二存储器器件的功能图。与图1中所示器件不同,图2呈现的实施方式使用缓冲器013、215和217)的阵列211以及交叉开关225,用以(1)将任何一个缓冲器连接到该阵列,使得每个缓冲器可以充当读取数据的临时目的地(例如,作为高速缓存,以便随后将读取数据的页面提供给控制器),以及( 将任何一个缓冲器连接到写入电路223(例如,使得缓冲器可以被用于对将要到来的擦除和写入事务进行排队,直到写入电路中已在进行中的操作完成)。图3是示出了作为存储器系统301 —部分的又一个存储器器件的功能图,该存储器系统还包括闪存控制器303。图3指示该系统有效地提供了两个交叉开关,一个在用于每个存储器器件的闪速存储阵列307与缓冲器之间,一个在缓冲器与闪存控制器之间。垂直的虚线315表示独立控制逻辑可以被用于每个交叉开关,使得可以独立于存储器阵列控制而管理针对该器件的输入/输出(“10”)控制。换言之,用于IO的控制逻辑可以独立于缓冲器与闪速存储阵列307之间的数据流动而管理控制器与各缓冲器313之间的数据流。图4是用于在多缓冲器实施方式中跟踪缓冲器使用的方法401的流程图。如通过虚线功能框所示,方法401提供了在针对另一存储器操作的数据正被并发地传入或传出缓冲器的同时对一个存储器操作的执行。图5是IO控制逻辑用来处理从控制器新接收的存储器请求的方法501的流程图。如由图5所示,方法501需要管理跟踪多个缓冲器中每一个的使用和状态的状态寄存器517 ;该寄存器跟踪被标记为“B1”、“B2”和“B3”的三个缓冲器。寄存器允许将缓冲器指派给新的存储器请求,但它也允许读取目前处于状态改变操作中的数据。通过使用地址字段为缓冲器编制索引,在设备感测阵列和写入数据寄存器繁忙的同时,缓冲器可一起被用作数据高速缓存。如可选的“主控方”字段所示,状态寄存器可以配置用于支持多主控方实现。图6是示出了用于在从控制器接收读取请求时管理读取请求的方法601的流程图。可以通过IO控制逻辑实现方法601,IO控制逻辑管理缓冲器和外部数据总线之间的、 主要在缓冲器的“一侧”上的通信流。图7是示出了与存储器阵列控制逻辑(即,可以用于管理缓冲器和存储器阵列之间的、在缓冲器的“另一侧”上的通信流的逻辑)相关联的通用存储器阵列管理任务的方法 701的流程图。如下文将说明的(以及如具有图6中的功能的实例),这些功能可以通过存储器控制器或通过驻留在每个存储器器件上的硬件或指令逻辑加以管理。图8是与编程任务(S卩,涉及用于存储器阵列的写入电路的任务)相关联的方法 801的流程图。如由图8所示,可以将数据从指派的缓冲器复制到写入数据寄存器(“WDR”) 中,以允许数据在状态改变操作期间被保持在所指派的缓冲器中并被读取,尽管写入数据寄存器(“WDR”)内容(以及阵列内的相关存储器空间的内容)在编程期间本身被转变。图9是与编程或者擦除命令的每个编程验证周期相关联的方法901的流程图。该周期根据需要进行重复,直到(1)存储器中的相关空间已经正确地改变了状态(在此实例中,用于高速缓存编程数据的所指派的缓冲器被释放),或( 达到周期的最大数目(表示为图9中所见的变量“k”的上限)。图10是由存储器阵列控制逻辑用来处理读取操作(S卩,从存储器阵列读取一个数据页面,并将该数据传送到缓冲器的步骤)的方法1001的流程图。如由图10所示,该方法包括配置交叉开关以将数据从感测放大器单元路由至所指派的缓冲器,以及改变缓冲器状态寄存器标志,使得数据不会在被加载的过程中从缓冲器被读出。
具体实施例方式通过参考接下来的详细描述,可以更好地理解由所列举的权利要求书所限定的主题,该描述应当与附图一起阅读。在以下阐明以支持构建和使用通过权利要求书来阐明的技术的各种实现的对于一个或多个特定实施方式的这种描述,并非意在限制所列举的权利要求书,而是将它们的应用例示为某种方法和设备。以下记载的描述例示出了(i)可以用于并行地处理多个操作的非易失性存储器器件,(ii)具有新颖路由的非易失性存储器器件,以及(iii)与管理上述非易失性存储器器件相关联的控制方法。尽管呈现了这些具体的示例,但在此描述的原理也可用应用于其他方法和设备。I.概沭本公开提供了非易失性存储器器件的多个实施方式,其分别(a)允许在对一个存储器操作进行排队的同时执行另一存储器操作,(b)在一个存储单位作为状态改变操作的主体的同时(例如,正在被写入时),允许对(存储器的单个“组”和多个组内的)另一存储单位的大体上为并行的读取,(c)允许对存储单位的大体上为并行的状态改变以及对新数据(即,放置在该存储单位中的写入或擦除数据)的并发读取,以及(d)在系统中或以其他方式提供控制存储器器件以实现这些功能之一的方法。特别地,通过减轻对非易失性存储器内(例如,在闪速存储器器件内)的存储单位进行编程或擦除所需要的长前置时间的影响,在此讨论的实施方式在某些非易失性器件的可用性方面提供了显著改进。换言之,本公开提供的教导应当使得非易失性存储器(特别是闪速存储器)被更多地用于范围更为广泛的应用,这潜在地扩展了这些应用的能力并且支持新的应用。第一存储器器件实施方式提供了一种非易失性存储器件,其在图1中被标记为 101。该非易失性存储器件允许对特定存储阵列103的读取,即便状态改变操作可能在同时进行。如传统上一样,阵列被分为多个存储单位105,每个存储单位105表示必须被一起编程或一起擦除的存储器单元的最小分组。(在此方面,某些传统闪存器件反映了高密度和甚低成本的设计哲学,并且因此为了成本和密度而牺牲了访问粒度;某些设计使得它们的结构必须以“页面”进行编程和以“块”进行擦除,例如,NAND闪存。在传统闪存方法学中,一个“页面”可以包括大约4000字节的数据,而一个“块”可以包括数千页面)。如在此使用的,术语“页面”将用于表示至少与可以作为单个单位而被编程或擦除的最小结构或单位一样大的存储器单位。传统上在这些器件中实现状态改变的方法是器件的输入/输出(“10”)接口 107 从外部数据总线109接收入站数据。(在擦除操作的情况下,实际数据可以内部生成,并且可以包括“1”的固块,用于验证存储单位向已擦除状态的改变)。该数据被馈送到写入数据寄存器(“WDR”)111,并且器件101的写入电路113使用最小电压来尝试对特定存储单位 (诸如由图1中的数字115标识的单位)的状态改变操作。由于每个个体存储器单元(或为单层单元,即“SLC”,或为多层单元,即“MLC”,这取决于设计)可具有作为制造缺陷的或者在使用中逐渐产生的不同水平的缺陷,因此每个单元在其可被改变为期望的逻辑状态之前可能需要不同的电压。因此,在施加电压之后(即,在“编程阶段”之后),器件101继而使用感测阵列(或称“感测放大器单元”)117来执行验证操作,以便对存储单位115的内容与使用写入电路113的写入数据寄存器111的内容进行比较(即,“验证阶段”)。在器件控制逻辑119的控制下,不匹配的内容触发具有更高电压的另一迭代周期。每个这样的“周期”根据需要重复,直到特定存储单位115内的全部单元都具有正确状态,最多重复最大周期次数。当操作完成时,控制逻辑119通知控制器,或备选地,当达到最大周期次数时断言错误值(这通常引起控制器将该存储单位标记为“坏”)。注意,尽管擦除操作在施加电压的方式上不同于编程操作,但是基本操作流程本质上是相同的。每个数据写入之前通常是擦除操作,以有效地“复位”所考虑的存储单位的存储器单元(或涵盖此类单元的块)。尝试向存储器单元(或存储器单元层)写入值并且继而尝试验证成功写入的每个迭代序列被称为“编程验证”或“PV”周期。图1中所示的实施方式允许在状态改变操作期间使用新颖的内部路由读取特定存储阵列103,并且该新颖的内部路由实际上是一种切换机构,由图1中的数字121描绘。 路由包括3个有效的路径,包括第一路径123,其有效地耦合写入数据寄存器111与感测放大器单元117 ;第二路径125,其有效地耦合IO接口 107与写入数据寄存器111 ;以及第三路径127,其有效地耦合感测放大器单元与IO接口。第三路径在读取数据期间被使用,以便将数据从存储器空间(由感测放大器单元所感测)加载到缓冲器129,以用于随后向存储器控制器的输出。在图1中描绘的实施方式中,可以进行并发的写入和读取,这是因为从感测放大器单元输出的数据可以在多周期状态改变操作期间在写入数据寄存器之间(经由第一路径12 重新路由,或被重新路由到缓冲器(经由第三路径127)。此操作也是在器件控制逻辑119的控制下执行的。注意,图1中描绘的结构和操作表示针对延迟问题的不同方式,而不是仅仅使用多个组。利用多组结构,可以在第二组(或器件)中正在进行状态改变操作的同时读取一个组(或不同器件),这是因为每个组或器件具有自己的写入数据寄存器;相反地,图1中给出的实施方式允许由该写入数据寄存器服务的相同存储器存储空间在涉及该寄存器的多周期状态改变操作期间被读取。注意,如下文将要讨论的,本公开给出的某些实施方式允许同时读取同一非易失性存储阵列中的数据,但应当理解,并不要求图1的实施方式具有这种能力。图2图示了可以配置用于为将被编程或以其他方式写入存储器的数据(“编程数据”)提供这种并发读取能力的第二实施方式。特别地,图2示出了具有某些与以上关于图 1讨论的那些元件类似的元件的第二存储器器件201。该存储器器件包括非易失性存储阵列203,其存储空间被划分为多个存储单位205 ;IO接口 207 ;以及用于连接IO接口与外部总线209的管脚(未示出)。图2的存储器器件201还包括数据缓冲器的阵列或集合211, 每个缓冲器的大小被设置为至少对应于存储单位大小(例如,对于NAND闪速存储器器件而言是页面的大小)。可以看到,该第二实施方式具有至少三个阵列中的缓冲器,分别编号为 213、215和217,每个都经由内部总线219耦合到IO接口。每个缓冲器可以被用于存储入站写入数据的页面,从而可以并行地处理并发操作。不失一般性,图2中所示的实施方式允许(a)处理多个读取操作,例如,可以在一个缓冲器(诸如缓冲器215)正向外部总线馈送其内容的同时,利用从感测放大器单元221传送的数据来填充另一个缓冲器(诸如缓冲器213);(b)处理多个状态改变操作,例如,可以在一个缓冲器(诸如缓冲器213)正向写入电路223(以及向写入数据寄存器,在图2中没有分开描绘)馈送其内容的同时,利用来自外部总线209的数据来填充另一个缓冲器(诸如缓冲器215);(c)在大致相同的时间处理读取操作和状态改变操作,例如,可以在利用来自IO 接口 207的数据填充一个缓冲器(诸如缓冲器21 的同时,或者在感测放大器单元和写入电路正在执行多周期写入或擦除操作的同时,利用从感测放大器单元221传送的数据来填充另一个缓冲器(诸如缓冲器217);以及
(d)可以在操作正在进行的同时将被写入到存储阵列203中的数据作为副本存储在缓冲器013、215或217)之一中(即,感测放大器将数据馈送回写入电路),从而使得在操作期间,可以从缓冲器阵列211而不是从存储阵列203读取数据。本领域技术人员还将认识到其他组合和其他可行的操作。通过交叉开关单元(在图2中通过标记“XBAR”和数字225表示),缓冲器阵列211 一方面耦合到感测放大器单元211,另一方面耦合到写入电路223。如在此使用的,术语“交叉开关”是指一种形式的切换机构,它能够实现双向切换,即,感测放大器单元可被连接到任何缓冲器以将数据路由到任何一个缓冲器,而任何缓冲器也可被连接到感测放大器单元或写入电路。图2的具体实施方式
中描绘的特定交叉开关225还在以下意义上执行这种双向切换其可以选择性地将数据(a)从感测放大器单元路由到写入电路,以供在多周期状态改变操作中使用(即,使得数据可以被馈送回以修改写入数据寄存器的内容,以便用作多周期操作的每个周期中的参考),以及(b)从感测放大器路由至缓冲器,以供在数据读取中使用。在图2中描绘的实施方式中,至少在页面的基础上提供这种切换,例如,如果页面的大小是4千字节,则该交叉开关将为来源的每个点提供4kB的同时切换,以实现上文提及的传送。如针对上文讨论的第一实施方式所提到的,可以提供控制逻辑(如果期望,以板上为基础)以便在内部路由中实现这种切换,例如,以控制图2实施方式中的交叉开关。如连接框221和223的虚线所示,通常期望将数据从感测阵列馈送回写入电路,以便在状态改变操作中使用;此操作可以通过这两个元件之间的直接连接实现,或备选地,通过为交叉开关 225提供执行这个路由的能力来实现。在此方面,写入数据寄存器(在图2中并未单独标识)通常是“工作缓冲器”,它在每个周期被修改以存储改变数据,即,标识迄今为止哪些单元尚未被正确地改变,以及指示每个周期仍然需要状态改变。在备选实现中,也可以将写入数据寄存器配置为传统的缓冲器。图2示出了虚线框227,其表示可选的寻址和控制功能,用以支持对存储器器件的外部寻址。特别地,尽管将在以下讨论各种控制选项,图2的一个可能实现是作为具有可由控制器单独寻址的多个缓冲器的存储器器件。例如,可以实现缓冲器213、215和217(以及阵列中的任何其他缓冲器),使得外部设备可以直接向这些缓冲器写入编程数据,或者从这些缓冲器获取读取数据(一旦相应的页面已经被中继到缓冲器阵列中)。在此方面,由于可能花费一定的有限时间量从存储器阵列和感测放大器单元获取数据(例如,在读取操作的情况下),因此这一寻址和控制功能可以允许控制器发起操作,继而只要在存储器器件已经感测到数据,将数据加载到缓冲器中并且准备好提供数据时,便拉取读取数据。下面将结合涉及操作方法的部分进一步讨论这些能力和相关的功能。图3描绘了本公开所提供的原理的又一个实现。特别地,图3示出了一个系统301, 其包括闪存控制器303以及一个或多个闪存器件一在图3中仅仅描绘了一个示例性闪存器件305。每个闪存器件包括闪速存储阵列307和用于连接外部数据总线309的装置,以及写入电路311 (包括写入数据寄存器)、感测放大器单元313和缓冲器阵列314,如上文结合图2的实施方式所讨论的。然而,图3进一步包括垂直线315,用于区分分别由标号317和 319表示的存储器阵列控制和IO控制。在图3的实施方式中,IO控制逻辑管理缓冲器阵列 314与外部总线309之间的数据传输,而存储器阵列控制逻辑管理缓冲器阵列314与闪速存储阵列之间的通信。存储器阵列控制逻辑和IO控制逻辑功能每一个都可以利用新数据来填充缓冲器,并且可以卸载(即,传输)来自别处的缓冲器之一的数据的副本。取决于实现,一旦数据已经被传出,这些缓冲器可以被清空(即,释放),或者可以使得其保持数据直到发生特定事件(诸如,特定的编程或状态改变步骤的完成)。在图3中所示的实施方式中,有效地描绘了两个切换机构(例如,交叉开关),每个通过交叉的粗体线表示,以指示数据可以向任何缓冲器发送或者从任何缓冲器获取,以用于感测阵列或用于闪速存储器控制器(或者甚至是多个控制器,例如按照将在下文讨论的某些实施方式)。可以动态指派缓冲器(例如,一旦先前操作完成时,便将缓冲器重新指派给新的操作),这种“动态指派”由存储器器件执行或者在存储器控制器(诸如闪速存储器控制器30 的控制下执行,下文将进一步讨论。II.操作方法上面给出的多数实施方式依赖于内部路由和切换机构(诸如交叉开关),其用于有效地将数据从存储器感测机构(例如,感测阵列单元)路由到写入数据寄存器(以供在多周期状态改变操作中使用,以修改该寄存器中的数据,并且根据需要通过附加周期继续操作),或路由到与读取存储器页面有关的外部总线;上文给出的结构允许涉及存储器空间的给定多周期状态改变操作中的这两个操作。存在多种方法可以实现这种操作,或许其中最简单的是提供一种远程存储器控制器(例如,闪存控制器),其存储器器件操作的粒度降低到所考虑的存储器器件内的每个状态改变步骤或周期。例如,如果存储器器件被设计用于执行多个命令(例如,使用机器语言),则控制器可以发布连续的个体命令,用以(a)将内容从缓冲器移动到写入数据寄存器中;(b)执行一个或多个擦除周期,以复位操作将要被执行的特定地址处的存储单位(例如,存储器页面)或存储单位组(例如,存储器块)的内容;(c)将内容从一个存储单位复制到缓冲器中;(d)尝试使用第一电压“VI”利用写入数据寄存器的内容对(具有特定地址的)存储器单元进行编程或擦除;(e)比较存储单位内容和写入数据寄存器的内容,将差异原子更新到寄存器的内容中;(f)将后续数据读取引导到任何存储单位位置(不同于正在经历状态改变的,或者引导到保持当前正被写入存储单位位置的数据的缓冲器);或(g)用更高的电压引导进一步的状态改变和验证/比较迭代。备选地,可以期望将存储器器件本身(例如,闪存器件)设计为具有支持这些操作中多个操作的内部结构和逻辑。下面将讨论关于这些设计及其各种置换中每一个的考虑,以及涉及适于与若干不同主控方(例如, 若干不同控制器或CPU)交互的存储器器件设计的设计考虑。图4呈现了可以用来管理具有多个缓冲器的闪存器件(例如,以图2和图3中的结构为示例)的多个、流水线化存储器操作的控制方法401的流程图。如参考标号403和相关联的功能框所示,在具有N个缓冲器的系统中,控制方法通常将跟踪每个缓冲器的使用,以确定该缓冲器是否空闲或正在使用中,并且将未使用的缓冲器动态地分配给新的存储器事务。在此方面,应当注意,某些存储器事务(例如,与状态改变操作混合的读取)可能花费不同时间量来完成。例如,在晚些发起的对存储器页面的读取已经完成之后,一个较早的状态改变操作甚至可能仍在进行;在这种情况下,晚些向读取操作指派的缓冲器可以被释放, 并且在用于状态改变操作的缓冲器之前可用于重新使用。因此,如数字405所示,当新事务到达时,可以将第一个可用缓冲器指派给新操作“ i ”,缓冲器指派基于循环制或绝对排序而进行。重要的是,如下文将关于图5介绍的,状态寄存器可被用于控制目的,其具有针对每个可用缓冲器的条目以及标志“FI ”,用以指示特定缓冲器是否空闲、被使用或正处于被加载的过程中。如果控制器管理此过程,则控制器可以本地存储状态,控制器“知道” 一个或多个缓冲器是否可用;在存储器器件管理此过程的实施方式中,存储器器件可以执行动态缓冲器指派,并且如果全部缓冲器都在使用中且操作“i”不能被排队,可以向控制器发出错误信号。如参考标号407所示,当存储器器件准备就绪时,它执行存储器操作“i”,其可以是状态改变操作(诸如写入或擦除操作)、读取或某些其他事务。图4中图示了两个虚线功能框409和411,以示出同时出现两个操作时的并发处理操作。在此方面,出于本讨论的目的,应当假定第二存储器操作“i+1”在第一存储器操作 “i”的完成之前被接收。多数操作将包括多个步骤或功能,对这些功能中的每一个的管理由控制器或存储器器件来执行,这取决于实现。例如,如刚刚提到的,在存储器器件支持机器命令的实现中, 控制器可以自己管理此过程,或者备选地,存储器器件中的控制逻辑可以将来自控制器的请求(例如,读取命令、编程命令或擦除命令)分解为独立步骤,并且控制其管理。在读取操作的情况下,通常需要被实现的步骤包括对感测电路充电,控制对存储器页面的读取,以及控制内容的传送。由于此操作的执行可能需要时间,因此可能会需要通知控制器(在控制器不管理过程中的每个步骤的实现中)页面已经被读取并且可以用于上载,并且因此, 存储器器件可能需要信号通知控制器读取数据可用,这例如是通过设置控制器将要读取的状态寄存器,或在空闲/繁忙管脚上发送信号。与擦除请求和写入请求相关联的步骤彼此可能非常类似,这是由于在迭代(“周期”)中可以施加多个电压脉冲,每个周期以比较或 “验证”步骤结束,以确定该周期对所考虑存储器单元成功编程或擦除的程度。每个周期可以包括命令,用以对电路充电使其具有特定电压,限制进入特定电路的电压(例如,控制选择性地将电压施加到列线或每个存储器单元入口的晶体管),感测单元内容,执行“异或”操作,等等。每个编程命令之后可以是对将作为该命令主体的存储器存储单位的擦除(对于闪速存储器而言尤其如此),以释放将被用于编程的一个或多个块。与每个操作类型相关联的每个步骤可以由连续的命令或硬件逻辑执行,并且本公开提供的结构和有关的教导允许控制器或设备控制逻辑交织多个步骤。因此,对于所公开的结构,可以通过对状态改变和读取操作进行交织来同时实现多个存储器操作。在并发读取操作的情况下,对多个页面的读取可以是流水线式的,每个页面的内容被存储在不同的缓冲器中(如果多个缓冲器可用)。对于单个基于单元的存储器,可能会期望应用感测机构(例如,感测放大器单元)以完成对一个页面的感测以及该页面向缓冲器的相关联传送,此后向不同的页面应用感测机构。一般而言,对于读取、写入和擦除命令可以使用不同的电路、电压以及电压路径,并且可能期望在继续前进到下一个读取前完成针对这些操作中每一个的迭代或周期(例如,对于整个页面)。在并发状态改变操作的情况下,写入数据寄存器及其对感测机构的结合通常提供对并发操作的限制,这意味着该操作在共同构成状态改变操作的迭代周期之间最容易被中断。还可以在每个周期的编程和验证阶段之间在阵列中重新应用感测机构,但是,通常将对每个阶段使用相同的列和支持电路,因此最为可行的操作可以是在构成状态改变操作的个体周期之间交织其他操作。(如果期望特定实现,当然可以在单个周期的编程和验证阶段之间交织其他操作)。在状态改变操作正在进行的同时,可以读取编程的主体,即,通过在动态指派的缓冲器(该缓冲器只需要与存储器页面的地址相关联)中保留最初传送到写入数据寄存器中的写入数据的副本。这个操作是期望的,因为如上所述,对于传统的编程操作,写入数据寄存器通常被用做工作缓冲器,仅仅存储PV周期之间的改变数据;因此,一旦开始编程,在存储器器件中可能没有对应于正在被编程的数据的精确数据实例。使用以上教导所提供的缓冲器,可以保持编程数据的“额外”副本,这允许针对该数据的读取请求被截取, 并且从临时保持该数据的缓冲器被直接填入。如上所述,在具有缓冲器并且针对器件的IO侧(即,IO接口与缓冲器以及相关联的寄存器控制之间)和器件的存储器阵列侧(即,存储器存储空间与缓冲器之间)的通信的分离控制的实施方式中,并发操作通常可以针对于每一侧而独立执行,其方式将在下文进一步讨论。应当强调的是,上面讨论的方法和结构(例如,针对多个“N”缓冲器)仅仅是示例性的;存在仅仅使用了例如一个或两个缓冲器的上述实施方式。以上讨论的示例性方法可以适当地调整,以便与这些或其他结构性实施方式结合使用。A. IO 侧控制如上所述,IO接口与缓冲器的阵列之间的通信可以独立于存储器阵列控制功能而被控制,并且可以由存储器控制器或由器件内部的板上控制逻辑来实现。一般而言,与该IO 控制逻辑相关联的功能包括监视缓冲器可用性,利用来自外部总线的数据加载缓冲器,更新用于缓冲器控制的状态寄存器,将擦除、编程或读取命令分成多个组成步骤并且针对适合的控制逻辑而对这些步骤进行排队,通知控制器(如果实施方式需要的话)读取数据准备就绪,或以其他方式向总线上馈送出读取数据以用于上游传输。在图5中图示了这些功能,图5图示了用于IO控制逻辑的方法501。如图5中所见,当接收到新的存储器操作时,该方法开始,由过程开始框503指示; 此框被标示以首字母缩写“R/^gW/e) ”,以指示该操作可以包括针对特定地址或状态改变操作的读取命令,诸如写入或擦除命令。最初,必须确定存储器器件是否具有发起事务的能力,如决策框505所示。如果存在至少一个缓冲器可用,则存储器器件可以立即接收命令, 并且如果该实施方式支持,则当不需要立即指派缓冲器时,该器件仍然可以接收命令并对命令进行排队。例如,如果该实现是这样的,即存储器器件执行动态缓冲器指派,则存储器器件可以被设计为接收任意数目的读取命令和相关联的存储器地址,并对其进行排队(直到高速缓存的极限),并且可以在其具有带宽时简单地指派缓冲器以支持新的读取操作。对于状态改变操作,可能会期望(再次,如果器件负责缓冲器指派)当没有缓冲器即刻可用于处理所希望的操作时,由器件发送错误标志(如由过程终止框507指示)。例如,如果实现只具有3个存储器缓冲器,其中一个被用于保持正在被写入存储器的页面的副本,而其中两个已经结合不同页面的读取而正在使用中,则该存储器器件可被配置为触发错误检测管脚的逻辑层,其将通知控制器应当对附加的事务进行排队,直到存储器准备好进行处理。备选地,存储器器件可以配置用于简单地设置内部空闲/繁忙状态寄存器标志,可以使控制器在指挥任何新操作之前读取该状态寄存器标志。而且,在控制器指挥存储器器件内的各步骤的实施方式中,控制器将自己跟踪缓冲器分配,并且因此将“知道”何时可以发起新的存储器操作。
1.新事各请求的处理方法501继而进行以确定所请求的操作是编程操作还是读取命令一取决于实现, 读取请求可被排队以进行处理,而不进行即时缓冲器指派。编程请求通常要求即时缓冲器指派以及来自外部总线的数据的加载。例如,控制器可以与编程命令同时或紧随编程命令而立即开始传输将被编程到存储器中的数据的新页面,因此,可能需要很快地指派缓冲器以便器件接收此数据。对于读取操作,方法501可以将读取请求和相关联的存储器地址添加到读取请求堆栈,以便在先进先出的基础上进行处理,并且该方法继而可以终止(如由参考号511和513所示)。(注意,在以下讨论的至少一个实施方式中,当读取步骤和状态改变步骤交织时,可能期望使用IO控制逻辑立即向新的读取请求指派缓冲器(即,响应于从控制器的接收),以避免在编程请求紧随对相同页面的读取请求的情况下出现数据同步问题)。如果该操作是编程操作,则该方法可以执行步骤指派缓冲器,将编程数据传送到所指派的缓冲器中,更新状态寄存器,以及将适当的命令添加(一旦缓冲器被加载)到编程操作堆栈中,全部由参考号515表示。图5示出了与缓冲器指派相关地控制的示例性状态寄存器(或状态机)517。该寄存器具有多个字段,包括(1)针对每个缓冲器的标识字段(分别标记为“B1”、“B2”和 “Β3”,使用延续箭头指示如果需要可以提供更多缓冲器);(2) —组标志(“FI”),用以指示特定的寄存器(a)是空闲还是正用于某个事务,或(b)是否正忙于被加载或是稳定的,(3) 是否是将与缓冲器内容相关联的存储器存储空间的地址,以及(4)对于支持多个主控方的实现,是否是与特定主控方相关联的标识。随着按照上文所述的方式处理新命令和指派缓冲器,该过程可以终止,直到从外部设备(例如,存储器控制器)接收新的命令,如由数字 519所示。在某些实施方式中,这个状态寄存器或状态机可以被存储驻留到每个存储器器件中,而在其他实施方式中,闪存控制器(例如,诸如来自图3的控制器303)可以维护针对每个存储器器件的状态寄存器。在这种情况下,从控制器发出的个体命令将包括缓冲器标识或操作码字段,也由与参考号517相关联的缓冲器标识来表示。2.动态缓冲器指派和缓冲器跟踪以上讨论的某些结构的一个优点在于可以有效地读取非易失性存储器中的存储单位,即使该单位(或写入数据寄存器中的数据)处于过渡状态。这可以通过以下方式而被有效地实现在将数据(编程数据)复制到写入数据寄存器之后,在缓冲器中保留该数据的副本,并且使用状态寄存器(例如,如以上关于图5所讨论的)作为用于传入存储器读取的参考。在图6中举例图示了上述操作,其呈现了用于读取正处于被编程之中的数据的控制方法601。特别地,如图6中通过数字603和605所示,当IO控制逻辑检测到入站读取请求时,对该请求所表示的地址与状态寄存器条目(例如,图5的寄存器517)的内容进行比较。 逻辑可以按照最近指派缓冲器的顺序来有效地比较缓冲器的条目,并且可以在第一次匹配时停止(以确保它没有将先前的擦除请求作为对相关联的存储器空间的读取的高速缓存)。还存在其他选项。如果读取地址与任何缓冲器的条目相匹配,则该匹配指示所寻找的数据的副本可能已经被存储在一个缓冲器中,并且状态寄存器中的相关联条目的标志继而被检查以确保相关联的数据不是当前仍在被加载到缓冲器中(即,在该缓冲器中所表示的数据是准确的)。支持这一功能是设计者之所以可能希望立即为新事务指派缓冲器而不是将缓冲器指派推迟到与感测来自存储器的页面内容同时(如以上关于图5所提及的)的一个原因。换言之,使用图6的方法,响应于控制器请求接收的即时缓冲器指派确保了针对相同页面的后续读取(而不是利用推迟的缓冲器指派对命令进行排队)将必然触发匹配。如果数据仍在被加载到缓冲器中,则IO控制逻辑可以等待直到该加载完成,一旦数据加载完成,可以向控制器提示数据已经准备好被读取。如上所述,存在多种机制可用于执行这一提示,包括触发(“空闲/繁忙”)管脚、设置由控制器定期检查的状态寄存器,向控制器发送命令,或某些其他机制。一旦控制器已经被提示,控制器和存储器器件可以使用例如另一个由控制器发出的读取命令而触发将数据传出缓冲器并且传送到外部总线上(或者利用不同的命令,例如,首先触发将数据加载到缓冲器中,随后是涉及所考虑缓冲器的读取命令)。 在图6中这些功能分别由数字607、609、611和613表示。当在缓冲器中没有发现“命中” 时,IO控制逻辑确定所请求的存储器页面将不会在本地缓冲器中找到,并且其将所考虑的命令(以及相关联的存储单位地址)添加到存储器阵列控制逻辑的读取堆栈中,如由图6 的数字615所示。该方法继而可以被终止,如数字617所示。如上所述,它可以与命令该操作期望立即向新读取命令指派开放的缓冲器(使得针对相同页面的任何后续读取将触发本地缓冲器中的“命中”,并且因而被指引以读取该缓冲器的副本)有结合;可以预期支持高速缓存准备的这一方法(由数字619表示)比对存储阵列的读取更快并且潜在地更加准确,即,由于当接收到后续存储器请求时,相关联的存储单位可能正在加载的过程中。如这些示例所示,在某些实现中,跟踪缓冲器使用可能是重要的,例如提供每个缓冲器是否空闲或正在使用中以及每个缓冲器是否还在被加载的过程中的指示符。有效地, 寄存器中的状态标志可以被用于指示以下缓冲器状态(a)缓冲器未被使用并且可以被动态指派给新事务;(b)缓冲器正在使用中并且当前稳定,即,不是正忙于被加载;无论编程操作(即, 写入或擦除)是否正在进行,与特定存储器地址相关联的当前内容可以由IO控制逻辑直接从缓冲器读取,甚至没有涉及存储器阵列控制逻辑或存储器存储空间;以及(c)缓冲器正在使用中并且当前正在被加载;在这一状态中,缓冲器内容可以是不准确的(例如,部分有效、部分无效的数据),并且因此存储器操作(无论是作为由存储器阵列控制逻辑管理的步骤或命令,还是由IO控制逻辑管理的IO操作)应当被排队并且有效地“等待”,直到相关联的标志被变为指示加载完成。通过将此状态数据(例如,由寄存器标志表示的数据)与缓冲器标识和对应于缓冲器内容的页面地址相耦合,可以执行由本公开预期的多数存储器操作。例如,可以通过直接从缓冲器提供数据(实质上是将这些缓冲器用作存储器器件内的一种形式的本地高速缓存)而在编程操作期间实现并行操作处理。3.信号通知完成以及释放缓冲器资源由IO控制逻辑和存储器阵列控制逻辑执行的某些步骤可以被用于在每个存储器操作完成时释放缓冲器以供新的使用。对于支持在缓冲器中保持编程数据的副本从而使得即使多周期编程命令正在进行时也可以读取该数据的实施方式,一旦编程被验证为完全准确(例如,所编程的存储单位与写入数据寄存器之间的比较指示没有数据仍将被编程),则可以释放相关的缓冲器。为了执行此释放,存储器阵列控制逻辑可以简单地改变寄存器状态位(例如,相关缓冲器的第一个“FI”字段),以指示IO控制逻辑现在可以将所考虑的缓冲器应用于新的事务(即,因为刚被编程的数据现在可以从存储器存储空间可靠地获得)。 对于IO控制逻辑而言,一旦读取操作完成(例如,在控制器必须拉取读取数据的实现中由控制器来完成,或者在存储器必须肯定地传送数据的实现中由IO控制逻辑来完成),缓冲器可被类似地回收。相反,缓冲器也可以被用于当编程操作没有正确完成时无限期地保持数据;例如,如果预定数目的编程周期(例如,20个)没有正确地“复位”或编程特定的单位(例如,页面或块),则可以向控制器发出错误信号,并且保持该数据的缓冲器可以被用作临时存储,直到控制器将存储单位标记为“坏”并且将该数据重新指派给其他存储器空间 (在相同器件内或不同的非易失性存储器器件中)。再次,如上所述,在接收到每个新存储器请求时,存储器器件可以轮询其状态寄存器,以选择并且指派第一可用的缓冲器。通过在相应请求被执行时立刻将缓冲器状态改变为“空闲”,控制逻辑帮助确保器件可以立即重新应用被释放的缓冲器,并且在新存储器请求被给出时立即接受它。上文刚提供的关于缓冲器使用的跟踪以及动态指派的描述仅仅是示例性的,对于数字设计领域的技术人员而言显而易见的是,存在其他方式可以在存储器器件或控制器 (或其他主控方)中管理这些功能。4.功能的控制器管理与器件管理如上所述,用以实现和控制由本发明介绍的结构的最直接方式将是使控制器管理非易失性存储器器件内的每个个体步骤和操作,例如,将数据移入或移出每个缓冲器,以及每个个体状态改变周期中所涉及的操作。此设计的直接特性的原因是,上文描述的管理功能可以在控制器管理的环境中经由控制器指令逻辑而相对容易地实现,并且针对简化命令的支持从所要求的设备硬件方面来说相对“便宜”并且可以直接实现。如上所述,描述缓冲器使用和内容的状态寄存器或状态机可以被保持在针对每个存储器器件的控制器中;如果使用的话,这种结构使控制器能够相对容易地例如构建与将数据移入和移出每个缓冲器相关联的命令,并且当然能够相对容易地对状态进行监视。例如,根据这些原理设计的控制器可以依赖于命令生成逻辑来生成命令,用以将数据从感测放大器单元传送到特定缓冲器;将数据从特定缓冲器传送到系统数据总线;将编程数据写入特定缓冲器;从特定缓冲器读取作为编程命令主体的数据;将数据从特定缓冲器复制到写入数据寄存器中;或者非破坏性地将数据从特定缓冲器复制到写入数据寄存器中。由控制器生成的命令在这种情况下总体上将适当地使用上述操作码来指定特定的目标缓冲器。数字系统设计领域技术人员将会想到,其他命令当然也是可行的。然而,设计者同样有动机将某些或者多数管理功能包括在非易失性存储器器件中。例如,实现以上要求的管理逻辑和结构的存储器器件可被设计用于与现有的存储器控制器和操作系统兼容。以此方式设计的存储器器件也可以相对容易地适于多主控方环境 (例如,作为具有多个微处理器的系统或网络中的组件);作为推论,在这种情况下,由控制器或其他“主控方”发出的命令可以包括主控方标识字段或操作码,如图5中由数字517进一步表示的。此外,每个控制器通常将被调用以管理多个任务,并且对于至少某些应用而言以及在功能可以被转载至每个存储器器件而不会影响总体速度的程度上,总体系统效率可得到改进。B.存储器阵列控制逻辑存储器阵列控制逻辑被调用以管理缓冲器集合与存储器存储空间之间的信息流, 包括利用被用于对存储器页面进行编程的数据来填充写入数据寄存器,验证数据从感测阵列(感测放大器单元)向写入数据高速缓存的传送,以及读取数据从感测阵列向所指派的缓冲器的移动。如上所述,与编程操作相关联的数据可以被保持在缓冲器中,并且用于后续编程操作的数据可以被存储在另一缓冲器中并且被排队,直到较早的多周期状态改变操作完成;当存储器的新页面将要被操作时,存储器阵列控制逻辑功能将数据从相关的缓冲器传送到写入数据寄存器中。上文结合入站存储器命令提到,存储器阵列控制逻辑可被设计用于在两个不同的堆栈中对编程操作和读取操作进行排队,将状态改变操作步骤和读取操作步骤的控制分开。如下文所述,这种区分代表了构造器件操作的一种可行方式,使得读取和状态改变操作可以在不对存储器操作造成显著影响的情况下被自动交织。1.处理侖令堆栈和更新状杰寄存器图7呈现了示出了可用于对状态改变操作和读取操作进行交织的方法701的逻辑流程图。如刚在上文所述,可以将读取和状态改变步骤分成分离的功能堆栈或队列。存储器阵列控制逻辑功能按照等待模式操作,而没有未执行的存储器操作是任何队列所需的。当由任何队列呈现步骤时,方法701继续进行以首先执行状态改变步骤,其次跟随读取步骤, 如功能参考703、705和707所示。按照这个执行顺序,该方法返回开始框703并且在相同周期中再次操作,即,执行任何排队的状态改变步骤,随后是任何排队的读取操作步骤,每个都在各自的队列中被表示。对每个步骤的执行可以导致每个功能队列中附加步骤的有效插入,以及用于每个受影响缓冲器的状态寄存器的更新。例如,如上所述,一旦状态改变操作结束(例如,存储单位被正确地编程),相关联的缓冲器可以被释放,这是由于可以从非易失性存储器读取完整的、有效地的数据,并且不再需要缓冲器。换言之,每个步骤可以表示多周期状态改变操作(即,编程或擦除)的单个“周期”,或在读取的情况下,表示单个存储器页面向缓冲器的传送。作为每个编程验证周期的验证阶段的部分,如果确定数据已经被正确地改变状态,操作可以终结并且缓冲器可以被释放。如果需要进一步的周期,在更新写入数据寄存器后,验证阶段可以有效地在编程队列的顶部插入新的命令(即,新的周期)。因此,在通过向缓冲器传送存储器页面而执行读取操作(如果存在)后,图7的方法701被有效地循环以执行另一周期。以此方式,状态改变和读取步骤(如果并发存在)可以被自动交织,读取(或必要时,若干读取操作)发生在多周期状态改变操作的每个周期之间。2.状态改变操作图8提供了用于表示上述这一逻辑流的方法801,关注于与编程操作相关联的步骤。当从控制器接收到新的编程(或写入)请求时,IO控制逻辑对将要对特定存储器地址 (例如,存储器的块或页面)进行编程的一系列编程步骤进行排队。如数字803所示,在特定存储器页面将被写入的情况下,所考虑的单位的擦除通常首先进行,这对应于被用来释放存储区单元的数据块的复位。在需要数目的周期中执行擦除操作(由数字803指示),以确保对与所考虑的块相关联的全部存储器单元的“复位”。如数字805所示,继而可以进行编程操作,其开始于将相关数据从缓冲器向写入电路传送,并且使用多个周期将该数据编程到存储单位(例如,存储器的页面)中,还如功能框809所示。因此,多周期编程操作的每个周期可以被视为单个过程或步骤。如上所述,可以管理整个多步骤过程,从而以交织方式在擦除周期之间具有任何插入的未决读取。图9提供了与状态改变操作的每个周期相关联的操作的详细流程图。图9描绘了方法901,当编程堆栈逻辑信号通知针对特定页面的未决编程操作时,方法901有效地开始,其中地址被馈送至写入电路和相关联的数据(即,在编程操作情况下为特定的数据), 在图9中由数字903统一表示。该方法继而调用编程阶段,由数字905指示,在此期间写入电路在必要时对存储器存储空间充电,并且尝试对与页面值“0” (即,此值被用于“打开” 与受影响存储器单元相关联的控制门)相对应的每个存储器单元进行编程。第一个此类编程操作将使用默认电压值,该默认电压值由写入电路设置并且表示最小编程电压。注意,尽管对于编程和擦除操作而言该操作是类似的,但是如果单元将被置位(即,“编程”)或复位 (即,“擦除”),则对单元进行编程的特定方式可能不同。例如,对于闪速存储器而言,取决于设计,可以通过对衬底充电以基本上移除衬底中产生的任何量子隧道效应而将擦除应用于块;而“置位”通常可以这样来实现应用打开晶体管,由此向将为存储器单元的相关联浮动栅极充电的控制门施加电压。对于其他类型的存储器(例如,RRAM),“置位”和“复位” 操作可涉及不同电压。(缩放和路由电荷的特定方式由写入电路来定义,这取决于在数据最初从缓冲器被传送到写入电路和写入数据寄存器时建立的设置)。对于擦除操作,可以通过检测块中的任何存储器单元是否已被正确地复位而执行适当的擦除。如果任何单元没有被正确地复位,则可以再次应用擦除,即,使用本质上的PV周期以重复操作,直到全部位都被复位为逻辑“1”。对于编程操作,该方法继而调用验证阶段,其在存储单位(即,正被编程的存储器空间)和写入数据寄存器之间执行异或,并对结果进行反转。如果在这些结果中没有表示“0”,则页面已经被正确地编程(或擦除)并且编程操作可以被终结,任何相关的缓冲器被释放一由图9中的数字907、909、911和913共同地表示这些操作。备选地,如果在结果中存在至少一个“0”,则使用完成结果来覆盖写入数据寄存器;继而,对于先前状态改变尝试没有成功的每个存储器页面位置(即,对于存储空间中的每个单元),写入数据寄存器将具有“0”,并且特定的周期(编程和验证阶段)完成。由于将需要执行另一周期,通过提高“V” (即,通过提高写入电路所使用的默认电压,使得下一状态改变尝试将使用更高的电压),并且通过将针对相同存储器页面的另一状态改变操作添加到处理队列的顶部来结束步骤。该操作还增加值“k”,其表示针对所考虑的存储单位已经执行的迭代PV周期的次数;如上所述,此值被用于检测“坏”存储器块,即,如果达到了某个预定限制(诸如,“20个周期”),则存储器器件在这种情况下可以向控制器发出错误信号,并且等待针对所考虑数据的进一步指令。这些功能一般地由图9中的数字915、917、919和921表示。3.读取操作图10图示了可用于与上文讨论的方法、结构和逻辑相关联地实现读取操作的一种方法1001。特别地,每个读取可以开始自交叉开关的配置(如果使用了依赖于交叉开关的实施方式,例如,诸如图2和图3中所示的实施方式)。由数字1003和1005表示,此配置功能用来将数据从感测放大器单元路由到所指派的缓冲器,该缓冲器将充当页面内容的临时目的地。在交叉开关配置之后,可以改变用于所指派的缓冲器的缓冲器状态标志,以指示所指派的缓冲器为“繁忙”,并且如果在此时读取,其数据可能处于过渡状态并且可能不准确。与存储空间相关联的电路还被提供以将被读取的特定单位(例如,特定的数据页面) 的地址数据,并且读取的数据继而被传送到所指派的缓冲器,如数字1007和1009所示。当读取完成时,再次访问状态寄存器(按照数字1011),以便再次改变缓冲器状态标志以指示该缓冲器不再“繁忙”(即,其不再加载数据并且因此它的内容表示数据的有效页面)。该方法继而终结,如由数字1013指示。 读取操作通常比之前描述的状态改变操作简单。尽管这些操作可能也涉及多个步骤,但是针对感测操作而进行的充电和电压施加通常不同于上述状态改变操作。一般地,因为需要将不同的特定电压切换到潜在不同的信号路径上以用于读取、编程和擦除操作,因此通常优选的是,在交织读取操作“内”的另一命令之前完成每个周期(例如,对整个页面的每个写入或擦除周期,或每个读取),从而不改变存储器阵列控制设置,但是再一次,取决于期望的应用,可能会存在相反的动机。利用用于实现由此描述的存储器结构的各种框架和设计选项,本公开现在将重申可以使用上述结构和方法执行的操作的特定示例。III.特定事各的示例ι·龄+am青錢越如上所述,由本公开提出的结构支持更快的非易失性存储器操作,这是因为可以向存储器器件发送并且至少部分地开始多个操作,而无需先前操作完成。这种并发性可以被应用到相同的存储器空间,即,支持多个存储器操作对由单个写入数据寄存器(或上述寄存器的并行群组)和单个感测阵列共同服务的单元的并发访问。一种可以被执行的并发操作涉及多个读取请求的处理。如所述的,IO控制逻辑可以将多个操作压栈,而无需等待第一个操作的完成。在此方面,编程控制逻辑可以在感测阵列(感测放大器单元)与一个缓冲器之间传送数据,同时IO控制逻辑将存储器的第二页面从不同的缓冲器传送到外部数据总线以便向控制器传输。对交叉开关的使用允许编程控制逻辑将任何缓冲器可切换地连接到感测阵列,使得任何缓冲器可以被动态指派以作为读取数据的临时目的地。由此,对与读取请求相关联的缓冲器的填充可被流水线化以供快速执行。存储器的多个页面继而可以相继快速地从闪存器件被读取,无需等待通常与每个请求的激活以及来自用于每个所请求存储器页面的感测阵列的数据传送相关联的延迟。2.流水线化多个写入/擦除请求上文描述的结构还允许以与上述大致相同的方式对多个写入或擦除请求进行流水线化。IO控制逻辑可以发起状态改变操作并且为写入(编程)请求指派缓冲器,使得将被写入非易失性存储器中的多个数据页面可被相继快速地加载到不同缓冲器中;尽管存储器器件忙于一个状态改变操作,但是后续写入操作的数据的页面可以被排队,无需考虑写入电路以及与存储器空间相关联的感测阵列的繁忙状态。换言之,上文介绍的存储器器件通常不需要等待状态改变操作的完全完成(以及对控制器的“繁忙”状态的相关表示),而是可以继续接受针对存储器的其他页面或块的新状态改变请求,即使多周期操作正在进行。3.在编稈/擦除Ml其月或阶段;^丨旬交织读耳又i青求上述操作还可以被扩展到同步的读取操作和写入(编程)或擦除操作。特别地,尽管存储器的一个页面正在被编程,取代将器件保持为“繁忙”,可以通过将数据(已经被加载到数据缓冲器中)通过总线流式传输到控制器来读取存储器的一个或多个页面,即使写入电路和感测电路为“繁忙”。由于这些操作可能花费多个周期,因此上述逻辑允许对读取操作的交织,使得多周期写入或擦除操作可以被中断,以允许编程控制逻辑将数据页面快速传送到所指派的缓冲器中,并且继而继续状态改变操作,完全不会扰乱写入电路设置或写入数据寄存器内容。随着写入电路继而继续其操作,IO控制逻辑继而通过外部总线将存储器的该页面传出,以满足控制器读取请求。在某些实施方式中,可以中断单个状态改变周期中的阶段(即,在编程周期的验证阶段前执行读取);然而,对于标准的闪存阵列实现, 此设计选择可能是次优的,因为此时比较容易在单元正在被编程时感测单元内容。扩展以上讨论的读取和状态改变并发性益处,存储器器件可以在相同的时间并且流水线化地(具有交织的单独步骤)接收多个读取和多个状态改变操作,用于高效操作。如果适当地设计, 存储器器件可以配置用于作为单一主控方(例如,单个控制器)的从属方或针对多个设备使用(即,通过提供结构以允许每个存储器器件识别请求每个读取的主控方,并且当被请求的数据准备就绪时通知该主控方)。取决于在给定存储器实现中设计的缓冲器的数目,可以支持任何量的并发。IV.结论本公开给出了非易失性器件和相关的系统和操作方法的实施方式。更具体地,使用将与加载写入数据寄存器相关联的路径进行分离、从感测放大器单元输出读取数据以及馈送来自感测放大器单元的数据以更新写入数据寄存器的器件,可以并行地执行相同存储器组织内(例如,相同存储器组内)的并发处理。在某些实施方式中,多个缓冲器可以各自被动态指派给将被读取或编程的存储器页面,提供对事务的并行处理以及允许读取当前处于编程操作中的数据。存在这些结构和方法的其他实施方式、应用和变更。如从以上讨论应当显而易见的,这些结构潜在地支持对非易失性器件的更多的普遍使用;通过减少针对这些器件的延迟,以上讨论的实施方式潜在地允许这些器件更快,使得它们成为对于需要考虑速度问题的应用的更实际的选择。由于某些应用可能由功率以及编程和访问速度考虑限制,这些教导可以例如通过允许在便携式和移动设备中的更快的非易失性读取、编程和擦除而支持之前被认为不实用的应用,。在某些设计中,某些功能可以由存储器系统控制器(诸如闪存或其他非易失性控制器)跟踪。例如,可以让控制器负责等待读取数据,或用于“询问”状态寄存器和相关的缓冲器以获取对应于队列读取请求的数据。在其他设计中,这些功能中的某些可以转而被驻留在存储器器件中;例如,特别地,对于其中一个存储器器件可以与多个处理器交互的实施方式,可能会期望使存储器器件向特定事务(例如,读取操作)动态指派特定缓冲器,以及通知所指派的缓冲器的相关的控制器。在又一些情况下,可以使缓冲器指派对控制器透明,纯粹在存储器器件内做出对个体的存储器请求和相关联的缓冲器之间的交叉引用。本领域技术人员同样可以想到这些原理的其他变型。同样地,以上呈现的结构集中在作为这些原理的一个很可能的实施方式的闪存上,但其他应用同样存在,即,在此讨论的原理可以适于要求相对长的编程、写入或擦除前置时间的,或其中这些操作要求多周期和/或验证步骤的任何形式的存储器。在没有限制这些原理的情况下,这些原理可以对之应用的某些特定存储器形式(取决于特定的设计)包括电阻RAM、相变RAM、磁性RAM以及其中物理状态被改变以便存储数字信息的其他形式的存储器。以上呈现的设备还至少部分地是从指令逻辑的方面描述的,但是,也可能设计每个以上参考的功能,从而使得操作由硬件(即,逻辑电路)完全地或几乎完全地管理,或由指令逻辑(软件或固件)完全地或几乎完全地管理。因此,上述讨论仅仅试图是说明性的;本领域技术人员将也可以想到其他设计、使用、替代、修改和改进,其仍然在本公开的精神和范围内,该精神和范围仅仅由接下来的权利要求书及其等效物限制和定义。
权利要求
1.一种非易失性存储器器件,包括具有多个存储单位的存储器存储空间,每个单位表示必须被一起编程的最小量的存储空间;写入数据寄存器,用于保持将与多周期状态改变操作相关地在对至少一个所述单位的编程中使用的数据;感测放大器单元,用于从任何所述单位读取数据;输入/输出(IO)接口 ;以及内部路由,用于(i)将所述感测放大器单元与所述写入数据寄存器耦合,以便馈送回单元内容以供在所述多周期状态改变操作中使用,以及(ii)与所述多周期状态改变操作同时地,将来自所述单位之一的读取数据耦合至所述 IO 接口。
2.根据权利要求1所述的存储器器件,其中所述器件进一步包括至少一个数据缓冲器,其可操作地(i)位于所述感测放大器单元与所述IO接口之间,以及(ii)还位于所述写入数据寄存器与所述IO接口之间;以及所述内部路由适于将编程数据从所述至少一个缓冲器路由到所述写入数据寄存器,以及将读取数据从所述感测放大器单元路由到所述至少一个缓冲器。
3.根据权利要求1所述的存储器器件,其中所述存储器器件进一步包括至少两个缓冲器,可操作地位于所述感测放大器单元与所述IO接口之间,每个缓冲器的大小被设置为至少保持一个存储器页面;以及所述内部路由包括切换机构,适于在多周期状态改变操作正在进行的同时,交替地将来自所述感测放大器单元的数据路由到(i)所述写入数据寄存器,以便与所述多周期状态改变操作结合使用,以及(ii)动态指派的一个所述缓冲器,以与所述多周期状态改变操作同时地将所述读取数据从所述感测放大器单元传送到所述动态指派的一个所述缓冲器。
4.根据权利要求3所述的存储器器件,其中所述状态改变操作包括写入操作,并且所述切换机构用于在写入操作正在进行的同时将所述读取数据从所述动态指派的一个所述缓冲器传送到输出接口。
5.根据权利要求3所述的存储器器件,其中所述内部路由适于将与编程数据相对应的页面加载到与写入操作相关联的第二动态指派的缓冲器中,使得通过从所述第二动态指派的缓冲器读取与所述写入操作相关联的数据,可以与所述写入操作同时地读取所述存储器存储空间中作为所述写入操作的主体的单位,而不顾及所述存储器存储空间中作为所述写入操作的主体的所述单位的任何瞬时状态。
6.根据权利要求3所述的存储器器件,其中所述内部路由包括宽度至少等于所述页面的大小的交叉开关,所述交叉开关适于在(i)所述写入数据寄存器或所述感测阵列与(ii) 所述至少两个缓冲器中的任何一个之间路由数据。
7.根据权利要求6所述的存储器器件,其中所述至少两个缓冲器中的每一个是通过所述IO接口外部可寻址的,使得外部设备可以选择性地致使所述至少两个缓冲器的任何特定一个中的数据的加载。
8.根据权利要求3所述的存储器器件,其中所述多周期状态改变操作的多个周期每个都包括验证操作,所述验证操作对所述存储器存储空间的单位的内容与所述写入数据寄存器的内容进行比较;以及所述内部路由配置用于在验证操作期间禁止向动态指派的一个所述缓冲器传送所述读取数据。
9.根据权利要求3所述的存储器器件,其中一个所述缓冲器适于存储最初存储在所述写入数据寄存器中的数据的副本以用于所述状态改变操作期间的参考,以允许与所述多周期状态改变操作同时地读取最初存储在所述写入数据寄存器中的所述数据;以及所述存储器器件适于通过从所述存储器存储空间读取不是同时发生的状态改变的主体的每个单位,以及通过从所述一个所述缓冲器读取最初存储在所述写入数据寄存器中的数据,允许与状态改变操作同时地读取与所述存储器存储空间的多个单位中任何一个相关联的数据。
10.根据权利要求3所述的存储器器件,其中所述动态指派由板上驻留于所述存储器器件的指派逻辑来执行。
11.根据权利要求1所述的存储器器件,其中所述切换机构适于在擦除操作正在进行的同时,将所述读取数据从所述感测放大器单元传送到动态指派的缓冲器。
12.根据权利要求1所述的存储器器件,其中所述存储器器件进一步包括至少三个缓冲器,每个缓冲器的大小被设置为至少保持一个存储器页面;所述内部路由配置用于以下二者(i)在缓冲器中动态指派的第一缓冲器中存储读取数据的副本,以及(ii)在所述状态改变操作正在进行的同时,将所述读取数据从所述第一缓冲器传送到所述IO接口 ;所述内部路由进一步适于将编程数据加载到所述缓冲器中动态指派的第二缓冲器中, 以及允许与所述状态改变操作同时地从所述第二缓冲器读取所述编程数据;以及所述存储器器件适于通过从所述存储器存储空间读取不是同时状态改变的主体的每个单位,以及通过从所述一个所述缓冲器读取所述编程数据,允许与状态改变操作同时地读取与所述多个存储单位中任何一个相关联的数据。
13.根据权利要求12所述的存储器器件,其中所述状态改变操作包括多周期、编程验证操作。
14.根据权利要求12所述的存储器器件,其中所述内部路由用于(a)在感测放大器单元与所述至少三个缓冲器的任何一个之间传送数据,以及(b)在所述感测放大器单元与所述写入数据寄存器之间传送数据。
15.根据权利要求14所述的存储器器件,其中所述存储器器件进一步包括控制逻辑, 适于在状态改变操作的周期之间交织存储器读取操作,所述控制逻辑适于至少在所述状态改变操作的所述周期之一的验证阶段期间对所述存储器读取操作进行排队,以及至少在状态改变操作的周期之间执行(a)。
16.根据权利要求1所述的存储器器件,其实施为闪速存储器器件。
17.根据权利要求1所述的存储器器件,其中所述内部路由适于在单个编程验证周期内(i)将所述感测放大器单元与所述写入数据寄存器耦合,以馈送回单位内容以供在多周期状态改变操作中使用,并且还(ii)将读取数据从所述单位之一耦合到所述IO接口。
18.一种非易失性存储器器件,包括 存储区域的多个单位;感测机构,用于从任何所述单位读取数据值; 寄存器,用于在向任何所述单位中编程数据值时使用; 多个缓冲器;交叉开关,将(i)所述多个缓冲器的每一个与(ii)所述写入数据寄存器或所述感测机构中的选择性的一个相耦合;以及输入/输出(IO)接口,适于可操作地将所述多个缓冲器的每一个与外部总线耦合。
19.根据权利要求18所述的器件,实施为闪速存储器器件。
20.根据权利要求18所述的器件,其中每个单位表示以下至少一个(i)可以被独立编程的最小量的存储器空间,或(ii)可以被独立擦除的最小量的存储器空间。
21.根据权利要求18所述的器件,其中所述器件适于通过多周期、编程验证操作对所述单位中的个体单位进行编程;以及所述器件进一步包括用于允许与特定数据的未完成的多周期、编程验证操作同时地读取所述特定数据的装置。
22.根据权利要求18所述的器件,其中所述器件适于通过多周期、编程验证操作对所述单位中的个体单位进行编程;以及所述器件进一步包括控制逻辑,所述控制逻辑适于在与所述编程验证操作相关联的周期之间交织读取操作。
23.根据权利要求18所述的器件,其中所述器件适于通过多周期、擦除操作对所述单位中的个体单位进行编程;以及所述器件进一步包括控制逻辑,所述控制逻辑适于在与所述擦除操作相关联的周期之间交织读取操作。
24.根据权利要求18所述的器件,其中所述器件适于允许经由所述IO接口从所述多个缓冲器中的第一缓冲器读取所述存储区域的所述多个单位中一个单位的数据,以及经由所述交叉开关向所述多个缓冲器中的第二缓冲器同时传送与所述存储单位之一的后续读取操作相关联的数据。
25.根据权利要求18所述的器件,其中所述器件进一步包括控制逻辑,所述控制逻辑适于(i)允许使用所述寄存器将第一数据编程到所述存储区域的所述多个单位的一个单位中,( )在所述多个缓冲器的一个缓冲器中对与所述多个存储单位之一的后续编程操作相关联的第二数据进行排队,以及(iii)在所述第一数据的所述编程完成之后,经由所述交叉开关将所述第二数据从所述多个缓冲器的所述一个缓冲器传送到所述寄存器。
26.根据权利要求25所述的器件,其中所述器件进一步适于允许从所述多个缓冲器中的第二缓冲器读取所述第一数据,以及适于允许从所述多个缓冲器中的所述第一缓冲器读取所述第二数据,均无需考虑所述存储器器件对所述存储区域的所述多个单位之一的编程的同时执行。
27.一种非易失性存储器器件,包括用于跟踪所述器件中多个缓冲器的每一个的使用的装置;用于与第一存储器操作相关地将所述缓冲器的第一缓冲器标识为当前未使用以及作为响应将与所述器件中的至少一个存储器页面相关联的第一数据加载到所述缓冲器的所述第一缓冲器中的装置;用于与第二存储器操作相关地将所述缓冲器的第二缓冲器标识为当前未使用以及作为响应将与所述器件中的至少一个存储器页面相关联的第二数据加载到所述缓冲器的所述第二缓冲器中的装置;用于并发地执行所述第一存储器操作和对所述第二数据的所述加载的装置;以及用于响应于所述跟踪,在动态基础上执行对所述缓冲器的所述第一缓冲器的所述标识和对所述缓冲器的所述第二缓冲器的所述标识使得所述多个缓冲器的任何一个可以根据相对于先前事务的可用性而被用于所述第一存储器操作或所述第二存储器操作的装置。
28.一种操作非易失性存储器器件的方法,包括跟踪所述器件中的多个缓冲器的每一个的使用;与第一存储器操作相关地将所述缓冲器的第一缓冲器标识为当前未使用,并且作为响应将与所述器件中的至少一个存储器页面相关联的第一数据加载到所述缓冲器的所述第一缓冲器中;与第二存储器操作相关地将所述缓冲器的第二缓冲器标识为当前未使用,并且作为响应将与所述器件中的至少一个存储器页面相关联的第二数据加载到所述缓冲器的所述第二缓冲器中;并发地执行所述第一存储器操作和对所述第二数据的所述加载;以及响应于所述跟踪,在动态基础上执行对所述缓冲器的所述第一缓冲器的所述标识和对所述缓冲器的所述第二缓冲器的所述标识,使得所述多个缓冲器的任何一个可以根据相对于先前事务的可用性而被用于所述第一存储器操作或所述第二存储器操作。
29.根据权利要求观所述的方法,其中跟踪包括在闪速存储器控制器中跟踪所述多个缓冲器的每一个缓冲器。
30.根据权利要求观所述的方法,其中所述第一存储器操作包括多周期编程验证操作。
31.根据权利要求30所述的方法,其中所述多周期编程验证操作的每个周期包括编程阶段和验证阶段,并且其中并发地执行包括在所述编程阶段期间加载所述第二数据以及在所述验证阶段期间禁止加载所述第二数据。
32.根据权利要求观所述的方法,其中所述第一存储器操作的每个包括读取操作。
33.根据权利要求观所述的方法,其中所述第一存储器操作和所述第二存储器操作的每个包括编程操作,所述方法进一步包括利用来自所述缓冲器的所述第一缓冲器的所述第一数据的副本来加载写入数据寄存器;对所述第一数据进行编程;以及在对所述第一数据的编程完成之后,利用来自所述缓冲器的所述第二缓冲器的所述第二数据的副本来加载所述写入数据寄存器。
34.一种装置,包括存储在机器可读存储介质上的指令,所述装置适于用来控制至少一个非易失性存储器器件,所述非易失性存储器器件具有多个缓冲器,每个缓冲器用于在存储器操作期间保持数据,所述至少一个非易失性存储器器件适于使用所述多个缓冲器中的不同缓冲器并发地执行第一存储器操作和第二存储器操作中的每一个,当所述指令被执行时,适于使机器跟踪驻留在所述非易失性存储器器件中的多个缓冲器的每一个的使用; 与第一存储器操作相关地将所述缓冲器的第一缓冲器标识为当前未使用,并且作为响应将与所述器件中的至少一个存储器页面相关联的第一数据加载到所述缓冲器的所述第一缓冲器中;与第二存储器操作相关地将所述缓冲器的第二缓冲器标识为当前未使用,并且作为响应将与所述器件中的至少一个存储器页面相关联的第二数据加载到所述缓冲器的所述第二缓冲器中;以及响应于所述跟踪,在动态基础上执行对所述缓冲器的所述第一缓冲器的所述标识和对所述缓冲器的所述第二缓冲器的所述标识,使得所述多个缓冲器的任何一个可以根据相对于先前事务的可用性而被用于所述第一存储器操作或所述第二存储器操作。
35.根据权利要求34所述的装置,适于由存储器控制器使用,所述指令包括固件,并且所述机器可读存储介质包括只读存储器器件。
36.一种装置,用于与由多个缓冲器服务的非易失性存储器存储阵列结合使用,每个缓冲器利用系统数据总线被耦合至接口,所述装置包括状态机,用于跟踪所述多个缓冲器的每一个的使用;以及控制器驻留的命令生成器,所述命令生成器耦合到所述状态机,所述命令生成器响应于状态机内容而生成缓冲器特定的命令。
37.根据权利要求36所述的装置,其中所述状态机与所述非易失性存储器存储阵列和所述多个缓冲器一起驻留在非易失性存储器器件中。
38.根据权利要求36所述的装置,其中所述状态机是控制器驻留的。
39.根据权利要求36所述的装置,其中所述缓冲器特定的命令包括以下至少一个 用于从感测放大器单元向特定缓冲器传送数据的命令;用于从特定缓冲器向所述系统数据总线传送数据的命令;用于将编程数据写入特定缓冲器的命令;用于从特定缓冲器读取作为编程命令的主体的数据的命令;用于将数据从特定缓冲器复制到写入数据寄存器中的命令;或者用于非破坏性地将数据从特定缓冲器复制到所述写入数据寄存器中的命令。
40.根据权利要求36所述的装置,其中所述缓冲器特定的命令包括缓冲器地址字段。
41.一种非易失性存储器器件,包括具有多个存储单位的存储器存储空间,每个存储单位表示必须被一起编程的最小量的存储空间;写入数据寄存器,用于保持将与多周期状态改变操作相关地在对至少一个所述存储单位的编程中使用的数据,其中所述写入数据寄存器中的所述数据在所述多周期状态改变操作期间被改变;缓冲器,用于保持被加载到所述写入数据寄存器中的所述数据的副本,并且在所述缓冲器中所述数据在所述多周期状态改变操作期间不被改变;以及控制逻辑,用于在所述多周期状态改变操作期间从所述缓冲器服务于针对所述至少一个所述存储单位中正在经历编程的所述数据的读取请求。
42.根据权利要求41所述的器件,进一步包括状态机,其标识保持所述数据的真实副本的存储位置,包括所述缓冲器或所述存储器存储空间。
43.根据权利要求42所述的器件,进一步包括多个缓冲器,其中所述控制逻辑在自组织基础上指派所述多个缓冲器的每一个,以用于以下二者将写入数据的副本加载到所述写入数据寄存器中,以及在所述多周期状态改变操作期间服务于与涉及所述数据的读取请求相关的所述数据的副本。
全文摘要
本发明提供了一种非易失性存储器器件,其并发地处理涉及同一存储器空间的多个页面的读取、擦除或写入。该器件依赖于交叉开关和一组页面缓冲器,每个页面缓冲器可被动态指派给每个读取或写入请求。该器件还将存储器阵列控制从IO控制分离,使得在该缓冲器被用于沿外部数据总线将数据传送入或传送出缓冲器的同时,多周期状态改变操作可被执行;使用这种结构,存储器器件可以接受多个事务,其中页面可以被立即加载入缓冲器,并且继而被“流水线化”,以适当地用于向写入数据寄存器或外部总线的传送。通过显著地缓解与非易失性存储器器件,特别是闪存器件的编程和擦除相关联的大量“繁忙时间”,本发明极大地扩展了此类器件的潜在应用。
文档编号G11C16/26GK102246240SQ200980149275
公开日2011年11月16日 申请日期2009年10月15日 优先权日2008年12月9日
发明者B·S·豪克尼斯, I·沙菲尔 申请人:拉姆伯斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1