存储器磨损管理
1.交叉引用
2.本专利申请要求马利克(malik)等人于2020年7月10日提交的题为“存储器磨损管理(memory wear management)”的美国临时专利申请第63/050,283号的优先权,所述美国临时专利申请转让给本技术的受让人并且明确地通过全文引用的方式并入本文。
技术领域
3.本技术领域涉及存储器磨损管理。
背景技术:
4.下文总体上涉及一或多个存储器系统,并且更具体地,涉及系统中的存储器磨损管理。
5.存储器器件被广泛地用于将信息存储在各种电子器件中,如计算机、无线通信器件、相机、数字显示器等。通过将存储器器件内的存储器单元编程为各种状态来存储信息。例如,二进制存储器单元可以被编程为通常由逻辑1或逻辑0表示的两种支持状态之一。在一些实例中,单个存储器单元可以支持两种以上状态,所述两种以上状态中的任何一种状态都可以被存储。为了存取存储的信息,组件可以读取或读出存储器器件中的至少一种存储状态。为了存储信息,组件可以在存储器器件中写入或编程状态。
6.存在各种类型的存储器器件和存储器单元,包含磁性硬盘、随机存取存储器(ram)、只读存储器(rom)、动态ram(dram)、静态ram(sram)、同步动态ram(sdram)、铁电ram(feram)、磁性ram(mram)、电阻式ram(rram)、闪存、相变存储器(pcm)、自选存储器、硫族化物存储器技术等。存储器单元可以是易失性的或非易失性的。非易失性存储器例如feram即使在不存在外部电源的情况下也可以在延长的时间段内维持其存储的逻辑状态。易失性存储器器件例如dram在与外部电源断开连接时可能会丢失其存储的状态。
技术实现要素:
7.描述了一种装置。所述装置可以包含:非易失性存储器,所述非易失性存储器包括存储器库;以及接口控制器,所述接口控制器与所述非易失性存储器耦接。所述接口控制器可以可操作以使所述装置:选择所述存储器库中的物理行地址用于将数据从所述存储器库的第一行移动到所述存储器库的第二行的程序;至少部分地基于所述物理行地址来确定针对所述存储器库的所述第一行启动所述程序,其中所述物理行地址与所述第一行相关联;并且作为所述程序的一部分,向所述非易失性存储器发出用于与所述第一行相关联的所述物理行地址的读取命令。
8.描述了一种装置。所述装置可以包含:非易失性存储器,所述非易失性存储器包括多个存储器库;以及接口控制器,所述接口控制器与所述非易失性存储器耦接。所述接口控制器可以包括:第一逻辑组件,所述第一逻辑组件被配置成管理在所述非易失性存储器中的存储器库的行之间移动数据的程序;寄存器,所述寄存器与所述第一逻辑组件耦接并且
被配置成存储与所述存储器库的所述行相关联的一或多个指针;以及第二逻辑组件,所述第二逻辑组件与所述寄存器耦接并且被配置成至少部分地基于存储在所述寄存器中的所述一或多个指针来确定物理行地址。
9.描述了一种装置。所述装置可以包含:非易失性存储器,所述非易失性存储器包括存储器库;以及接口控制器,所述接口控制器与所述非易失性存储器耦接。所述接口控制器可以可操作以使所述装置:确定所述存储器库的存储要传递到所述存储器库的第二行的数据的第一行的第一物理行地址;向所述非易失性存储器传递用于所述第一物理行地址的读取命令;至少部分地基于传输所述读取命令来将所述数据传递到所述接口控制器中的寄存器;并且将所述数据从所述寄存器传递到所述非易失性存储器。
附图说明
10.图1展示了根据如本文所公开的实例的支持存储器磨损管理的系统的实例。
11.图2展示了根据如本文所公开的实例的支持存储器磨损管理的存储器子系统的实例。
12.图3展示了根据如本文所公开的实例的支持存储器磨损管理的器件的实例。
13.图4展示了根据如本文所公开的实例的支持存储器磨损管理的过程流程的实例。
14.图5展示了根据如本文所公开的实例的支持存储器磨损管理的时序图的实例。
15.图6示出了根据本公开的各方面的支持存储器磨损管理的器件的框图。
16.图7和8示出了展示根据如本文所公开的实例的支持存储器磨损管理的一或多种方法的流程图。
具体实施方式
17.如电子器件等器件可以包含主存储器(例如,用于在其它操作中存储信息的主存储器)和可以作为高速缓存操作的辅助存储器。此类配置可以允许器件受益于非易失性存储器的优点(例如,非易失性、高存储容量、低功耗),同时维持与主机器件的兼容性。然而,对非易失性存储器中的存储器单元进行重复存取可能会磨损非易失性存储器单元并且降低非易失性存储器单元的耐久性(例如,通过以损害功能的方式修改存储器单元的各种特性)。为了保持非易失性存储器的耐久性,器件可以执行在非易失性存储器中的各个位置如库的行之间移动数据的磨损均衡程序,这可以防止给定地址处的存储器单元被过度存取。但是在用于行的磨损均衡程序期间,库中的其它行可能不可存取,这可能会延迟满足主机器件对库的数据请求。
18.根据本文所描述的技术,器件可以通过在接口控制器处管理磨损均衡程序来在磨损均衡程序期间继续服务于对库的数据请求,这可以允许器件对库中的行而不是经历磨损均衡程序的行进行存取。例如,接口控制器可以分两个阶段实施磨损均衡程序:读取阶段和写入阶段。在读取阶段期间,可以读取库的第一行中的数据,并且将所述数据暂时存储在接口控制器的缓冲器中;并且在写入阶段,可以将数据从缓冲器传递到非易失性存储器,并且将数据存储在库的第二行中。因为读取阶段和写入阶段可以是可分开的(例如,能够不连续地执行),所以磨损均衡程序中所涉及的行可以在读取阶段与写入阶段之间关闭,使得可以对库中的一或多个其它行进行存取。这意指器件可以在磨损均衡程序期间服务于对库的数
据请求,这除了其它益处之外还可以提高系统性能。
19.最初在如参考图1和2所描述的存储器系统和子系统的上下文中描述本公开的特征。在如参考图3所描述的器件、如参考图4所描述的过程流程和如参考图5所描述的时序图的上下文中描述本公开的特征。本公开的这些特征和其它特征通过与如参考图6-8所描述的存储器磨损管理相关的装置图和流程图进行进一步说明并参考其进行描述。
20.图1展示了根据如本文所公开的实例的支持存储器子系统中的高速缓存管理的存储器系统100的实例。存储器系统100可以包含在如计算机或电话等电子器件中。存储器系统100可以包含主机器件105和存储器子系统110。主机器件105可以是与接口控制器115以及包含存储器系统100的电子器件的其它组件介接的处理器或片上系统(soc)。存储器子系统110可以为主机器件105存储电子信息(例如,数字信息、数据)并提供对所述电子信息的存取。存储器子系统110可以包含接口控制器115、易失性存储器120和非易失性存储器125。在一些实例中,接口控制器115、易失性存储器120和非易失性存储器125可以包含在如封装130等同一物理封装中。然而,接口控制器115、易失性存储器120和非易失性存储器125可以安置在不同的相应管芯(例如,硅管芯)上。
21.存储器系统100中的器件可以通过可以实现器件之间的信息(例如,命令、地址、数据)传递的各种导电线(例如,迹线、印刷电路板(pcb)布线、重新分布层(rdl)布线)耦接。导电线可以构成通道、数据总线、命令总线、地址总线等。
22.存储器子系统110可以被配置成提供非易失性存储器125的益处,同时维持与主机器件105的兼容性,所述主机器件支持用于不同类型存储器如易失性存储器120以及其它实例的协议。例如,非易失性存储器125可以提供如非易失性、较高容量或较低功耗等益处(例如,相对于易失性存储器120)。但是主机器件105可以与非易失性存储器125的各个方面不兼容或配置效率低下。例如,主机器件105可以支持与非易失性存储器125不兼容的电压、存取等待时间、协议、页面大小等。为了补偿主机器件105与非易失性存储器125之间的不兼容性,存储器子系统110可以配置有易失性存储器120,所述易失性存储器可以与主机器件105兼容并且用作非易失性存储器125的高速缓存。因此,主机器件105可以使用易失性存储器120所支持的协议,同时受益于非易失性存储器125的优点。
23.在一些实例中,存储器系统100可以包含在计算器件、电子器件、移动计算器件或无线器件中或与其耦接。器件可以是便携式电子器件。例如,器件可以是计算机、膝上型计算机、平板计算机、智能电话、蜂窝电话、可穿戴器件、互联网连接器件等。在一些实例中,器件可以被配置成用于通过基站或接入点进行双向无线通信。在一些实例中,与存储器系统100相关联的器件可以能够进行机器类型通信(mtc)、机器对机器通信(m2m)或器件对器件(d2d)通信。在一些实例中,与存储器系统100相关联的器件可以被称为用户设备(ue)、站(sta)、移动终端等。
24.主机器件105可以被配置成使用接口控制器115所支持的第一协议(例如,低功率双倍数据速率(lpddr))与存储器子系统110介接。因此,在一些实例中,主机器件105可以与接口控制器115直接介接并且与非易失性存储器125和易失性存储器120间接介接。在替代性实例中,主机器件105可以与非易失性存储器125和易失性存储器120直接介接。主机器件105还可以与包含存储器系统100的电子器件的其它组件介接。主机器件105可以是或包含soc、通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)
或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件,或者所述主机器件可以是这些类型的组件的组合。在一些实例中,主机器件105可以被称为主机。
25.接口控制器115可以被配置成代表主机器件105(例如,基于由主机器件105发出的一或多个命令或请求)与易失性存储器120和非易失性存储器125介接。例如,接口控制器115可以代表主机器件105促进数据在易失性存储器120和非易失性存储器125中的检索和存储。因此,接口控制器115可以促进各个子组件之间如在主机器件105、易失性存储器120或非易失性存储器125中的至少一些之间的数据传递。接口控制器115可以使用第一协议与主机器件105和易失性存储器120介接并且可以使用非易失性存储器125所支持的第二协议与非易失性存储器125介接。
26.非易失性存储器125可以被配置成为包含存储器系统100的电子器件存储数字信息(例如,数据)。因此,非易失性存储器125可以包含一或多个存储器单元阵列和被配置成操作所述一或多个存储器单元阵列的局部存储器控制器。在一些实例中,存储器单元可以是或包含feram单元(例如,非易失性存储器125可以是feram)。非易失性存储器125可以被配置成使用与在接口控制器115与主机器件105之间使用的第一协议不同的第二协议与接口控制器115介接。在一些实例中,非易失性存储器125用于存取操作的等待时间可以比易失性存储器120更长。例如,从非易失性存储器125检索数据可以花费比从易失性存储器120检索数据更长的时间。类似地,将数据写入到非易失性存储器125可以花费比将数据写入到易失性存储器120更长的时间。在一些实例中,非易失性存储器125的页面大小可以比易失性存储器120更小,如本文所描述的。
27.易失性存储器120可以被配置成作为一或多个组件如非易失性存储器125的高速缓存进行操作。例如,易失性存储器120可以为包含存储器系统100的电子器件存储信息(例如,数据)。因此,易失性存储器120可以包含一或多个存储器单元阵列和被配置成操作所述一或多个存储器单元阵列的局部存储器控制器。在一些实例中,存储器单元可以是或包含dram单元(例如,易失性存储器可以是dram)。非易失性存储器125可以被配置成使用在接口控制器115与主机器件105之间使用的第一协议与接口控制器115介接。
28.在一些实例中,易失性存储器120用于存取操作的等待时间可以比非易失性存储器125更短。例如,从易失性存储器120检索数据可以花费比从非易失性存储器125检索数据更少的时间。类似地,将数据写入到易失性存储器120可以花费比将数据写入到非易失性存储器125更少的时间。在一些实例中,易失性存储器120的页面大小可以比非易失性存储器125更大。例如,易失性存储器120的页面大小可以是2千字节(2kb),并且非易失性存储器125的页面大小可以是64字节(64b)或128字节(128b)。
29.尽管非易失性存储器125可以是比易失性存储器120更高密度的存储器,对非易失性存储器125进行存取可以花费比对易失性存储器120进行存取更长的时间(例如,由于不同的架构和协议以及其它原因)。因此,将易失性存储器120作为高速缓存进行操作可以减少存储器系统100中的等待时间。作为实例,可以通过从易失性存储器120而不是从非易失性存储器125检索数据来相对快速地满足主机器件105对数据的存取请求。为了促进易失性存储器120作为高速缓存的操作,接口控制器115可以包含多个缓冲器135。缓冲器135可以与接口控制器115安置在同一管芯上并且可以被配置成在一或多个存取操作(例如,存储操作和检索操作)期间临时存储用于在易失性存储器120、非易失性存储器125或主机器件105
(或其任何组合)之间传递的数据。
30.存取操作也可以被称为存取过程或存取程序并且可以涉及由存储器子系统110的组件中的一或多个组件执行的一或多个子操作。存取操作的实例可以包含其中将由主机器件105提供的数据存储在(例如,写入到)易失性存储器120或非易失性存储器125(或两者)中的存储操作以及其中从易失性存储器120或非易失性存储器125获得(例如,读取)主机器件105所请求的数据并且将其返回到主机器件105的检索操作。
31.为了将数据存储在存储器子系统110中,主机器件105可以通过将存储命令(也称为存储请求、写入命令或写入请求)传输到接口控制器115来启动存储操作(或“存储过程”)。存储命令可以以非易失性存储器125中的非易失性存储器单元集合为目标。在一些实例中,存储器单元集合也可以被称为存储器的一部分。主机器件105还可以将要写入到非易失性存储器单元集合的数据提供到接口控制器115。接口控制器115可以将数据临时存储在缓冲器135-a中。在将数据存储在缓冲器135-a中之后,接口控制器115可以将数据从缓冲器135-a传递到易失性存储器120或非易失性存储器125或两者。在直写模式下,接口控制器115可以将数据传递到易失性存储器120和非易失性存储器125两者。在回写模式下,接口控制器115可以仅将数据传递到易失性存储器120。
32.在任一模式下,接口控制器115可以标识易失性存储器120中的用于存储与存储命令相关联的数据的一或多个易失性存储器单元的适当集合。为此,接口控制器115可以实施集合相联映射,其中非易失性存储器125中的一或多个非易失性存储器单元的每个集合(例如,块)可以映射到易失性存储器120中的多个易失性存储器单元集合。例如,接口控制器115可以实施n路相联映射,所述n路相联映射允许将来自非易失性存储器单元集合的数据存储在易失性存储器120中的n个易失性存储器单元集合之一中。因此,接口控制器115可以通过参考与非易失性存储器单元目标集合相关联的n个易失性存储器单元集合来将易失性存储器120作为非易失性存储器125的高速缓存进行管理。如本文所使用的,除非另外描述或指出,否则对象“集合”可以指对象中的一或多个对象。尽管参考集合相联映射进行了描述,但是接口控制器115可以通过实施如直接映射或相联映射以及其它实例等一或多种其它类型的映射来将易失性存储器120作为高速缓存进行管理。
33.在确定哪n个易失性存储器单元集合与非易失性存储器单元目标集合相关联之后,接口控制器115可以将数据存储在n个易失性存储器单元集合中的一或多个易失性存储器单元中。以此方式,通过从较低等待时间的易失性存储器120检索数据而不是从较高等待时间的非易失性存储器125检索数据,可以高效地满足主机器件105对数据的后续检索命令。接口控制器115可以基于与存储在n个易失性存储器120集合中的数据相关联的一或多个参数如数据的有效性、年代或修改状态来确定哪n个易失性存储器120集合存储数据。因此,通过将数据存储在易失性存储器120中,主机器件105的存储命令可以完全(例如,在回写模式下)或部分地(例如,在直写模式下)得到满足。为了跟踪存储在易失性存储器120中的数据,接口控制器115可以为一或多个易失性存储器单元集合(例如,为每个易失性存储器单元集合)存储指示具有存储在给定的易失性存储单元集合中的数据的非易失性存储器单元的标签地址。
34.为了从存储器子系统110中检索数据,主机器件105可以通过将检索命令(也称为检索请求、读取命令或读取请求)传输到接口控制器115来启动检索操作(也称为检索过
程)。检索命令可以以非易失性存储器125中的一或多个非易失性存储器单元的集合为目标。在接收到检索命令后,接口控制器115可以在易失性存储器120中检查请求的数据。例如,接口控制器115可以在与非易失性存储器单元目标集合相关联的n个易失性存储器单元集合中检查请求的数据。如果n个易失性存储器单元集合之一存储请求的数据(例如,存储用于非易失性存储器单元目标集合的数据),则接口控制器115可以将数据从易失性存储器120传递到缓冲器135-a(例如,响应于确定n个易失性存储器单元集合之一存储请求的数据),使得所述数据可以传输到主机器件105。术语“命中”可以用于指易失性存储器120存储主机器件105所请求的数据的场景。如果一或多个易失性存储器单元的n个集合不存储请求的数据(例如,n个易失性存储器单元集合存储用于非易失性存储器单元集合而不是非易失性存储器单元目标集合的数据),则接口控制器115可以将请求的数据从易失性存储器125传递到缓冲器135-a(例如,响应于确定n个易失性存储器单元集合不存储请求的数据),使得所述数据可以传输到主机器件105。术语“未命中”可以用于指易失性存储器120不存储主机器件105所请求的数据的场景。
35.在未命中场景下,在将请求的数据传递到缓冲器135-a之后,接口控制器115可以将请求的数据从缓冲器135-a传递到易失性存储器120,使得对数据的后续读取请求可以由易失性存储器120而不是非易失性存储器125满足。例如,接口控制器115可以将数据存储在与非易失性存储器单元目标集合相关联的n个易失性存储器单元集合之一中。但是n个易失性存储器单元集合可能已经在存储用于其它非易失性存储器单元集合的数据。因此,为了保存此其它数据,接口控制器115可以将其它数据传递到缓冲器135-b,使得所述数据可以传递到非易失性存储器125进行存储。此类过程可以被称为“逐出”,并且从易失性存储器120传递到缓冲器135-b的数据可以被称为“受害者”数据。在一些情况下,接口控制器115可以将受害者数据的子集从缓冲器135-b传递到非易失性存储器125。例如,接口控制器115可以传递自从数据最初存储在非易失性存储器125中以来已经改变的受害者数据的一或多个子集。在一些情况下,在易失性存储器120与非易失性存储器125之间不一致的数据(例如,由于一个存储器而不是另一个存储器中的更新)可以被称为“经修改”或“脏”数据。在一些实例中(例如,当接口控制器在如回写模式等一种模式下操作时),脏数据可以是存在于易失性存储器120中但不存在于非易失性存储器125中的数据。
36.在一些实例中,存储器子系统110可以对非易失性存储器125执行磨损均衡程序以保持非易失性存储器125的耐久性以及其它益处。磨损均衡程序可以沿非易失性存储器的行对数据进行移位,使得对数据的重复请求(例如,行锤(rh)攻击)不会导致对相同存储器单元的重复存取,所述重复存取可能会磨损非易失性存储器单元并且降低其可靠性。在一些实例中,存储器接口控制器115可以通过将存储器管理(mm)命令发送到非易失性存储器125来启动磨损均衡程序。存储器管理命令可以使非易失性存储器125将数据从非易失性存储器125中的存储器库的第一行移动到存储器库的第二行。但是在此时间期间,存储器库的其它行可能不可存取,这意指用于数据的功能命令(例如,起源在主机器件105处的那些)直到磨损均衡程序完成才能得到服务。因此,系统100的等待时间可能会增加,这可能会对系统100的性能产生负面影响。
37.根据本文所描述的技术,接口控制器115可以管理存储器库的磨损均衡程序,使得用于存储器库中的数据的功能命令可以在磨损均衡程序期间得到服务。接口控制器115可
以通过在多个阶段中执行磨损均衡程序来实现用于存储器库的磨损均衡程序,这可以允许非易失性存储器125在各阶段之间服务于对数据的功能命令。例如,接口控制器115可以完成磨损均衡程序的读取阶段、服务于用于数据的一定数量的一或多个功能命令,然后完成磨损均衡程序的写入阶段。因此,系统100的等待时间可以通过在磨损均衡程序期间服务于数据请求而减少,这可以提高系统100的性能。
38.图2展示了根据如本文所公开的实例的支持存储器子系统中的高速缓存管理的存储器系统200的实例。存储器子系统200可以是参考图1所描述的存储器子系统110的实例。因此,存储器子系统200可以如参考图1所描述的与主机器件交互。存储器子系统200可以包含接口控制器202、易失性存储器204和非易失性存储器206,所述接口控制器、所述易失性存储器和所述非易失性存储器可以分别是如参考图1所描述的接口控制器115、易失性存储器120和非易失性存储器125的实例。因此,接口控制器202可以如参考图1所描述的代表主机器件与易失性存储器204和非易失性存储器206介接。例如,接口控制器202可以将易失性存储器204作为非易失性存储器206的高速缓存进行操作。将易失性存储器204作为高速缓存进行操作可以允许子系统提供非易失性存储器206的益处(例如,非易失性、高密度存储),同时维持与支持与非易失性存储器206不同的协议的主机器件的兼容性。
39.在图2中,组件之间的虚线表示数据流或数据通信路径,并且组件之间的实线表示命令流或命令通信路径。在一些情况下,存储器子系统200是可以包含在电子器件中的多个类似或相同的子系统之一。在一些实例中,每个子系统可以被称为切片并且可以与主机器件的相应通道相关联。
40.非易失性存储器206可以被配置成作为主机器件的主存储器(例如,用于长期数据存储的存储器)进行操作。在一些情况下,非易失性存储器206可以包含一或多个feram单元阵列。每个feram单元可以包含选择组件和铁电电容器并且可以通过向如字线、板线和数位线等一或多条存取线施加适当的电压来进行存取。在一些实例中,可以例如并行或同时读出与激活的字线耦接的feram单元的子集,而不必读出与激活的字线耦接的所有feram单元。因此,feram阵列的页面大小可以不同于(例如,小于)dram页面大小。在存储器器件的上下文中,页面可以指行中的存储器单元(例如,具有公共行地址的一组存储器单元),并且页面大小可以指行中的存储器单元或列地址的数量或在存取操作期间存取的列地址的数量。可替代地,页面大小可以是指由各种接口处理的数据的大小。在一些情况下,不同的存储器器件类型可以具有不同的页面大小。例如,dram页面大小(例如,2kb)可以是非易失性存储器(例如,feram)页面大小(例如,64b)的超集。
41.feram阵列的较小页面大小可以提供各种效率益处,因为单独的feram单元可能需要比单独的dram单元更多的功率来读取或写入。例如,feram阵列的较小页面大小可以促进有效的能量使用,因为当关联信息变化较小时可以激活较少数量的feram单元。在一些实例中,feram单元阵列的页面大小可以例如动态地(例如,在feram单元阵列的操作期间)根据利用feram操作的数据和命令的性质而变化。
42.尽管单独的feram单元可能需要比单独的dram单元更多的功率来读取或写入,但feram单元可以在不存在外部电源的情况下在延长的时间段内维持其存储的逻辑状态,因为feram单元中的铁电材料可以在不存在电场的情况下维持非零电极化。因此,在非易失性存储器206中包含feram阵列可以相对于易失性存储器单元(例如,易失性存储器204中的
dram单元)提供效率益处,因为这可以减少或消除执行刷新操作的要求。
43.易失性存储器204可以被配置成作为非易失性存储器206的高速缓存进行操作。在一些情况下,易失性存储器204可以包含一或多个dram单元阵列。每个dram单元可以包含电容器,所述电容器包含用于存储表示可编程状态的电荷的介电材料。易失性存储器204的存储器单元可以在逻辑上分组或布置成一或多个存储器库(如本文中被称为“库”)。例如,易失性存储器204可以包含十六个库。库中的存储器单元可以布置成网格或交叉的列和行的阵列,并且可以对每个存储器单元进行存取或通过向用于所述存储器单元的数位线(例如,列线)和字线(例如,行线)施加适当的电压来对每个存储器单元进行刷新。库的行可以被称为页面,并且页面大小可以指行中的列或存储器单元的数量。如所指出的,易失性存储器204的页面大小可以不同于(例如,大于)非易失性存储器206的页面大小。
44.接口控制器202可以包含用于与如主机器件、易失性存储器204和非易失性存储器206等其它器件介接(例如,通信)的各种电路。例如,接口控制器202可以包含数据(da)总线接口208、命令和地址(c/a)总线接口210、数据总线接口212、c/a总线接口214、数据总线接口216以及c/a总线接口264。数据总线接口可以支持使用一或多种通信协议传递信息。例如,数据总线接口208、c/a总线接口210、数据总线接口216和c/a总线接口264可以支持使用第一协议(例如,lpddr信号传导)传送的信息,而数据总线接口212和c/a总线接口214可以支持使用第二协议传送的信息。因此,与接口控制器202耦接的各种总线接口可以支持不同的数据量或数据速率。
45.数据总线接口208可以与数据总线260、事务总线222和缓冲器电路系统224耦接。数据总线接口208可以被配置成通过数据总线260传输和接收数据并且通过事务总线222传输和接收控制信息(例如,确认/否定确认)或元数据。数据总线接口208还可以被配置成在数据总线260与缓冲器电路系统224之间传递数据。数据总线260和事务总线222可以与接口控制器202和主机器件耦接,使得在接口控制器202与主机器件之间建立导电路径。在一些实例中,事务总线222的引脚可以被称为数据掩码反转(dmi)引脚。尽管示出有一条数据总线260和一条事务总线222,但是可以存在与一或多条数据总线接口208耦接的任何数量的数据总线260和任何数量的事务总线222。
46.c/a总线接口210可以与c/a总线226和解码器228耦接。c/a总线接口210可以被配置成通过c/a总线226传输和接收命令和地址。通过c/a总线226接收的命令和地址可以与通过数据总线260接收或传输的数据相关联。c/a总线接口210还可以被配置成将命令和地址传输到解码器228,使得解码器228可以对命令进行解码并且将经过解码的命令和关联地址中继到命令电路系统230。
47.数据总线接口212可以与数据总线232和存储器接口电路系统234耦接。数据总线接口212可以被配置成通过数据总线232传输和接收数据,所述数据总线可以与非易失性存储器206耦接。数据总线接口212还可以被配置成在数据总线232与存储器接口电路系统234之间传递数据。c/a总线接口214可以与c/a总线236和存储器接口电路系统234耦接。c/a总线接口214可以被配置成从存储器接口电路系统234接收命令和地址并且通过c/a总线236将命令和地址中继到非易失性存储器206(例如,到非易失性存储器206的局部控制器)。通过c/a总线236传输的命令和地址可以与通过数据总线232接收或传输的数据相关联。数据总线232和c/a总线236可以与接口控制器202和非易失性存储器206耦接,使得在接口控制
器202与非易失性存储器206之间建立导电路径。
48.数据总线接口216可以与数据总线238和存储器接口电路系统240耦接。数据总线接口216可以被配置成通过数据总线238传输和接收数据,所述数据总线可以与易失性存储器204耦接。数据总线接口216还可以被配置成在数据总线238与存储器接口电路系统240之间传递数据。c/a总线接口264可以与c/a总线242和存储器接口电路系统240耦接。c/a总线接口264可以被配置成从存储器接口电路系统240接收命令和地址并且通过c/a总线242将命令和地址中继到易失性存储器204(例如,到易失性存储器204的局部控制器)。通过c/a总线242传输的命令和地址可以与通过数据总线238接收或传输的数据相关联。数据总线238和c/a总线242可以与接口控制器202和易失性存储器204耦接,使得在接口控制器202与易失性存储器204之间建立导电路径。
49.除了用于与耦接的器件通信的总线和总线接口之外,接口控制器202还可以包含用于将非易失性存储器206作为主存储器并且将易失性存储器204作为高速缓存进行操作的电路系统。例如,接口控制器202可以包含命令电路系统230、缓冲器电路系统224、高速缓存管理电路系统244、一或多个引擎246和一或多个调度器248。
50.命令电路系统230可以与缓冲器电路系统224、解码器228、高速缓存管理电路系统244和调度器248以及其它组件耦接。命令电路系统230可以被配置成从解码器228接收命令和地址信息并且将命令和地址信息存储在队列250中。命令电路系统230可以包含处理命令信息(例如,来自主机器件)和来自其它组件(例如,高速缓存管理电路系统244、缓冲器电路系统224)的存储信息并且使用所述信息来生成用于调度器248的一或多个命令的逻辑262。命令电路系统230还可以被配置成将地址信息(例如,地址位)传递到高速缓存管理电路系统244。在一些实例中,逻辑262可以是被配置成作为有限状态机(fsm)操作的电路。
51.缓冲器电路系统224可以与数据总线接口208、命令电路系统230、存储器接口电路系统234和存储器接口电路系统240耦接。缓冲器电路系统224可以包含一或多个缓冲电路的集合用于易失性存储器204的至少一些库(如果不是每个库的话)。缓冲器电路系统224还可以包含用于对缓冲器电路进行存取的组件(例如,存储器控制器)。在一个实例中,易失性存储器204可以包含十六个库,并且缓冲器电路系统224可以包含十六个缓冲器电路集合。每个缓冲器电路集合可以被配置成存储来自或用于(或两者)易失性存储器204的相应库的数据。作为实例,库0(bk0)的缓冲电路集合可以被配置成存储来自或用于(或两者)易失性存储器204的第一库的数据,并且用于库15(bk15)的缓冲器电路可以被配置成存储来自或用于(或两者)易失性存储器204的第十六库的数据。
52.缓冲器电路系统224中的每个缓冲器电路集合可以包含一对缓冲器。所述对缓冲器可以包含被配置成存储来自主机器件的存取命令(例如,存储命令或检索命令)所针对的数据的一个缓冲器(例如,开放页面数据(opd)缓冲器)和被配置成存储用于由存取命令产生的逐出过程的数据的另一个缓冲器(例如,受害者页面数据(vpd)缓冲器)。例如,bk0的缓冲器电路集合可以包含缓冲器218和缓冲器220,所述缓冲器可以分别是缓冲器135-a和135-b的实例。缓冲器218可以被配置成存储来自主机器件的存取命令所针对的bk0数据。并且缓冲器220可以被配置成存储作为由存取命令触发的逐出过程的一部分从bk0传递的数据。缓冲器电路集合中的每个缓冲器可以配置有与易失性存储器204的页面大小相对应的大小(例如,存储容量)。例如,如果易失性存储器204的页面大小是2kb,则每个缓冲器的大
小可以是2kb。因此,在一些实例中,缓冲器的大小可以等于易失性存储器204的页面大小。
53.高速缓存管理电路系统244可以与命令电路系统230、引擎246和调度器248以及其它组件耦接。高速缓存管理电路系统244可以包含易失性存储器的一或多个库(例如,每个库)的高速缓存管理电路集合。作为实例,高速缓存管理电路系统244可以包含bk0到bk15的十六个高速缓存管理电路集合。每个高速缓存管理电路集合可以包含可以被配置成存储易失性存储器204的存储信息的两个存储器阵列。作为实例,bk0的高速缓存管理电路集合可以包含可以被配置成存储bk0的存储信息的存储器阵列252(例如,cdram标签阵列(cdt-ta))和存储器阵列254(例如,cdram有效(cdt-v)阵列)。在一些实例中,存储器阵列还可以被称为阵列或缓冲器。在一些情况下,存储器阵列可以是或包含易失性存储器单元,如sram单元。
54.存储信息可以包含与易失性存储器204相关联的内容信息、有效性信息或脏信息(或其任何组合)。内容信息(其也可以称为标签信息或地址信息)可以指示哪些数据存储在易失性存储器单元集合中。例如,一或多个易失性存储器单元的集合的内容信息(例如,标签地址)可以指示一或多个非易失性存储器单元的哪个集合当前具有存储在一或多个易失性存储器单元的所述集合中的数据。有效性信息可以指示存储在易失性存储器单元集合中的数据是实际数据(例如,具有预期的顺序或形式的数据)还是占位符数据(例如,随机的或虚拟的数据,没有预期的或重要的顺序)。并且脏信息可以指示存储在易失性存储器204的一或多个易失性存储器单元的集合中的数据是否不同于存储在非易失性存储器206的一或多个非易失性存储器单元的集合中的对应数据。例如,脏信息可以指示存储在易失性存储器单元集合中的数据是否已经相对于存储在非易失性存储器206中的数据进行了更新。
55.存储器阵列252可以包含存储易失性存储器204的关联库(例如,bk0)的存储信息(例如,内容和有效性信息)的存储器单元。存储信息可以在每页的基础上进行存储(例如,对于关联非易失性存储器库的每个页,可以有相应的存储信息)。接口控制器202可以通过参考存储器阵列252中的存储信息来检查易失性存储器204中的请求的数据。例如,接口控制器202可以从主机器件接收用于非易失性存储器206中的非易失性存储器单元集合中的数据的检索命令。接口控制器202可以使用存取请求所针对的一或多个地址位的集合(例如,行地址位集合)来参考存储器阵列252中的存储信息。例如,使用集合相联映射,接口控制器202可以参考存储器阵列252中的内容信息来确定哪个易失性存储器单元集合(如果有的话)存储请求的数据。
56.除了存储易失性存储器单元的内容信息之外,存储器阵列252还可以存储指示易失性存储器单元集合中的数据是实际数据(也被称为有效数据)还是随机数据(也被称为无效数据)的有效性信息。例如,易失性存储器204中的易失性存储器单元最初可以存储随机数据并且继续这样做直到用来自主机器件或非易失性存储器206的数据写入易失性存储器单元为止。为了跟踪哪些数据是有效的,存储器阵列252可以被配置成当实际数据存储在所述易失性存储器单元集合中时为每个易失性存储器单元集合设置位。此位可以被称为有效性位或有效性标志。与内容信息一样,存储在存储器阵列252中的有效性信息可以在每页的基础上进行存储。因此,在一些实例中,每个有效性位可以指示存储在关联页面中的数据的有效性。
57.存储器阵列254可以类似于存储器阵列252并且还可以包含存储与存储器阵列252
相关联的易失性存储器204的库(例如,bk0)的有效性信息的存储器单元。然而,存储在存储器阵列254中的有效性信息可以在子块的基础上存储,如与存储器阵列252在每页的基础上存储相反的。例如,存储在存储器阵列254的存储器单元中的有效性信息可以指示易失性存储器单元集合(例如,页面)中的易失性存储器单元的子集的数据的有效性。作为实例,存储器阵列254中的有效性信息可以指示存储在易失性存储器204的bk0中的数据页面中的每个数据子集(例如,64b)的有效性。在每页的基础上将内容信息和有效性信息存储在存储器阵列252中可以允许接口控制器202快速并且高效地确定易失性存储器204中的数据是否命中或未命中。在子块的基础上存储有效性信息可以允许接口控制器202确定在逐出过程期间将哪些数据子集保存在非易失性存储器206中。
58.每个高速缓存管理电路集合还可以包含与命令电路系统230、引擎246、存储器接口电路系统234、存储器接口电路系统240和用于所述高速缓存管理电路集合的存储器阵列以及其它组件耦接的相应寄存器对。例如,高速缓存管理电路集合可以包含被配置成从存储器阵列252或调度器248-b或两者接收存储信息(例如,一或多位标签信息、有效性信息或脏信息)的第一寄存器(例如,可以是开放页面标签(opt)寄存器的寄存器256)。高速缓存管理电路系统集合还可以包含被配置成从存储器阵列254和调度器248-a或两者接收存储信息的第二寄存器(例如,可以是受害者页面标签(vpt)寄存器的寄存器258)。寄存器256和寄存器258中的信息可以传递到命令电路系统230和引擎246以实现由这些组件作出决策。例如,命令电路系统230可以基于来自寄存器256的内容信息发出用于读取非易失性存储器206或易失性存储器204的命令。
59.引擎246-a可以与寄存器256、寄存器258和调度器248耦接。引擎246-a可以被配置成从各个组件接收存储信息并且基于存储信息向调度器248发出命令。例如,当接口控制器202处于如直写模式等第一模式时,引擎246-a可以向调度器248-b发出命令并且作为响应,调度器248-b可以启动或促进将数据从缓冲器218传递到易失性存储器204和非易失性存储器206两者。可替代地,当接口控制器202处于如回写模式等第二模式时,引擎246-a可以向调度器248-b发出命令,并且作为响应,调度器248-b可以启动或促进将数据从缓冲器218传递到易失性存储器204。在回写操作的情况下,存储在易失性存储器204中的数据可以在后续逐出过程期间最终传递到非易失性存储器206。
60.引擎246-b可以与寄存器258和调度器248-a耦接。引擎246-b可以被配置成从寄存器258接收存储信息并且基于存储信息向调度器248-a发出命令。例如,引擎246-b可以向调度器248-a发出命令以启动或促进脏数据从缓冲器220到非易失性存储器206的传递(例如,作为逐出过程的一部分)。如果缓冲器220容纳从易失性存储器204传递的数据集合(例如,受害者数据),则引擎246-b可以指示缓冲器220中的数据集合的哪一或多个子集(例如,哪64b)应传递到非易失性存储器206。
61.调度器248-a可以与接口控制器202的各个组件耦接并且可以通过向存储器接口电路系统234发出命令来促进对非易失性存储器206进行存取。由调度器248-a发出的命令可以基于来自命令电路系统230、引擎246-a、引擎246-b或这些组件的组合的命令。类似地,调度器248-b可以与接口控制器202的各个组件耦接并且可以通过向存储器接口电路系统240发出命令来促进对易失性存储器204进行存取。由调度器248-b发出的命令可以基于来自命令电路系统230或引擎246-a或两者的命令。
62.存储器接口电路系统234可以通过数据总线接口212和c/a总线接口214中的一或多个与非易失性存储器206通信。例如,存储器接口电路系统234可以提示c/a总线接口214将由存储器接口电路系统234发出的命令通过c/a总线236中继到非易失性存储器206中的局部控制器。并且存储器接口电路系统234可以通过数据总线232向非易失性存储器206传输数据或从所述非易失性存储器接收数据。在一些实例中,由存储器接口电路系统234发出的命令可以由非易失性存储器206而不是易失性存储器204支持(例如,由存储器接口电路系统234发出的命令可以不同于由存储器接口电路系统240发出的命令)。
63.存储器接口电路系统240可以通过数据总线接口216和c/a总线接口264中的一或多个与易失性存储器204通信。例如,存储器接口电路系统240可以提示c/a总线接口264将由存储器接口电路系统240发出的命令通过c/a总线242中继到易失性存储器204的局部控制器。并且存储器接口电路系统240可以通过一或多条数据总线238向易失性存储器204传输数据或从所述易失性存储器接收数据。在一些实例中,由存储器接口电路系统240发出的命令可以由易失性存储器204而不是非易失性存储器206支持(例如,由存储器接口电路系统240发出的命令可以不同于由存储器接口电路系统234发出的命令)。
64.接口控制器202的组件可以一起将非易失性存储器206作为主存储器并且将易失性存储器204作为高速缓存进行操作。此类操作可以由从主机器件接收的一或多个存取命令(例如,读取/检索命令/请求和写入/存储命令/请求)提示。
65.在一些实例中,接口控制器202可以从主机器件接收存储命令。存储命令可以通过c/a总线226接收并且通过c/a总线接口210和解码器228中的一或多个传递到命令电路系统230。存储命令可以包含或伴随有以非易失性存储器206的存储器地址为目标的地址位。要存储的数据可以通过数据总线260接收并且通过数据总线接口208传递到缓冲器218。在直写模式下,接口控制器202可以将数据传递到非易失性存储器206和易失性存储器204两者。在回写模式下,接口控制器202可以将数据传递到仅易失性存储器204。在任一模式下,接口控制器202可以首先检查以查看易失性存储器204是否具有可用于存储数据的存储器单元。为此,命令电路系统230可以参考存储器阵列252(例如,使用存储器地址位集合)来确定与存储器地址相关联的n个易失性存储器单元集合(例如,页面)中的一或多个集合是否为空(例如,存储随机或无效数据)。在一些情况下,易失性存储器204中的易失性存储器单元集合可以被称为线或高速缓存线。
66.如果n个易失性存储器单元关联集合之一可用于存储信息,则接口控制器202可以将数据从缓冲器218传递到易失性存储器204以用于存储在所述易失性存储器单元集合中。但是如果没有易失性存储器单元关联集合为空,则接口控制器202可以启动逐出过程以便为易失性存储器204中的数据腾出空间。逐出过程可以涉及将n个易失性存储器单元关联集合之一中的旧数据(例如,现有数据)传递到缓冲器220。旧数据的脏信息也可以传递到存储器阵列254或寄存器258以用于标识旧数据的脏子集。在将旧数据存储在缓冲器220中之后,可以将新数据从缓冲器218传递到易失性存储器204,并且可以将旧数据从缓冲器220传递到非易失性存储器206。在一些情况下,将旧数据的脏子集传递到非易失性存储器206,并且将干净子集(例如,未经修改子集)丢弃。脏子集可以由引擎246-b基于在逐出过程期间(例如,从易失性存储器204)传递到存储器阵列254或寄存器258的脏信息来标识。
67.在另一个实例中,接口控制器202可以从主机器件接收检索命令。检索命令可以通
过c/a总线226接收并且通过c/a总线接口210和解码器228中的一或多个传递到命令电路系统230。检索命令可以包含以非易失性存储器206的存储器地址为目标的地址位。在尝试对非易失性存储器206的目标存储器地址进行存取之前,接口控制器202可以检查以查看易失性存储器204是否存储有数据。为此,命令电路系统230可以参考存储器阵列252(例如,使用存储器地址位集合)来确定与存储器地址相关联的n个易失性存储器单元集合中的一或多个集合是否存储有请求的数据。如果请求的数据存储在易失性存储器204中,则接口控制器202可以将请求的数据传递到缓冲器218以用于通过数据总线260传输到主机器件。
68.如果请求的数据没有存储在易失性存储器204中,则接口控制器202可以从非易失性存储器206中检索数据并且将数据传递到缓冲器218以用于通过数据总线260传输到主机器件。另外,接口控制器202可以将请求的数据从缓冲器218传递到易失性存储器204,使得可以在后续检索操作期间以较低的等待时间对数据进行存取。然而,在传递请求的数据之前,接口控制器202可以首先确定n个易失性存储器单元关联集合中的一或多个集合是否可用于存储请求的数据。接口控制器202可以通过与相关高速缓存管理电路集合通信来确定n个易失性存储器单元关联集合的可用性。如果易失性存储器单元关联集合可用,则接口控制器202可以在不执行逐出过程的情况下将缓冲器218中的数据传递到易失性存储器204。否则,接口控制器202可以在执行逐出过程之后将数据从缓冲器218传递到易失性存储器204。
69.存储器子系统200可以以包含单芯片版本和多芯片版本的一或多个配置实施。多芯片版本可以在与包含存储器子系统200的一或多个其它组成部分的芯片分离的芯片上包含存储器子系统200的一或多个组成部分,包含接口控制器202、易失性存储器204和非易失性存储器206(以及其它组成部分或组成部分的组合)。例如,在一个多芯片版本中,相应的单独的芯片可以包含接口控制器202、易失性存储器204和非易失性存储器206中的每一个。相比之下,单芯片版本可以在单个芯片上包含接口控制器202、易失性存储器204和非易失性存储器206。
70.在一些实例中,存储器子系统200可以实施磨损均衡程序以减轻由于对非易失性存储器206中的非易失性存储器单元进行重复存取而产生的有害影响。磨损均衡程序可以在存储器库的行之间移动数据,使得对数据的重复请求不会导致对同一行进行重复存取。例如,磨损均衡程序可以将数据从存储器库中的一行移动到存储器库的另一行。通过继续随时间的推移执行磨损均衡程序,可以在行之间不断地混洗存储器库中的数据,这可以降低行被过度存取的可能性。
71.为了针对非易失性存储器206中的库实施磨损均衡程序,接口控制器202可以向非易失性存储器206发出存储器管理命令。非易失性存储器206可以通过对库的第一行执行读取操作并且对库的第二行执行写入操作来响应存储器管理命令。读取操作和写入操作可以接续执行(例如,连贯地,不被用于库的其它存取操作中断)以降低在非易失性存储器206处管理磨损均衡程序的复杂性。然而,接续执行读取操作和写入操作可以意指在磨损均衡程序的持续时间(例如,约400毫微秒)内,存储器库实际上不可存取。这是因为一次仅可以激活库中的一行,并且接续的读取操作和写入操作没有留出时间激活磨损均衡程序中不涉及的行。因此,使用这些其它技术,直到磨损均衡程序结束才能服务于用于在程序期间到达的库中的数据的任何命令。
72.根据本文所描述的技术,如与存储器子系统的其它组件如非易失性存储器206相反的,磨损均衡程序可以由接口控制器202管理。例如,接口控制器202可以控制非易失性存储器206何时执行用于存储器库的磨损均衡程序的读取操作和写入操作。通过及时分开这些操作,接口控制器202可以减少存储器库不可存取的连续时间量(例如,从约400毫微秒到约160毫微秒)并且提供在其期间可以服务于用于存储器库的功能命令的窗口。因此,可以减少满足功能命令的等待时间,这可以提高存储器子系统200的性能。
73.如本文所描述的,满足命令可以指完成与命令相关联的请求(例如,存储提供的数据、返回请求的数据),而服务于命令可以指执行一或多个操作以满足命令。服务于命令与满足命令之间的区别可以是相对于命令的起源和终止。
74.图3展示了根据如本文所公开的实例的支持存储器磨损管理的器件300的实例。器件300可以包含如参考图1所描述的存储器子系统110或如参考图2所描述的存储器子系统200的各方面。器件300可以包含接口控制器305和非易失性存储器310,所述接口控制器和所述非易失性存储器可以通过一或多条总线315(例如,数据总线、c/a总线、事务总线)彼此耦接。尽管未示出,但是器件300可以包含作为高速缓存进行操作的易失性存储器。如本文所描述的,接口控制器305可以管理非易失性存储器310的磨损均衡程序,使得在磨损均衡程序期间仍然可以对经历程序的存储器库进行存取以服务于功能数据请求。
75.非易失性存储器310可以包含多个存储器库,所述多个存储器库中的每个存储器库可以包含多个存储器行(例如,存储器行330)。例如,非易失性存储器310可以包含表示为b0到b32的三十二个存储器库,所述存储器库中的每个存储器库可以包含存储器行1到n。存储器库内的存储器行可以通过物理行地址来区分,所述物理行地址可以标识对应字线的存储器单元。存储器库可以在逻辑上或物理上分组为存储器管理组。例如,存储器库可以分为表示为mm组0到mm组7的八个存储器管理组。如本文更详细地描述的,可以在每个库的基础上(例如,一次对一个库)或在每个存储器管理组的基础上(例如,并行地对多个库)实施磨损均衡程序。非易失性存储器310可以包含用于处理和执行命令的一或多个局部控制器以及用于对存储器单元进行存取并移动数据的另外的电路系统。
76.存储器磨损均衡程序可以涉及将数据从存储器库的第一行移动到存储器库的第二行。为了在不覆写存储的数据的情况下实现这一点,在任何给定时间处,每个存储器库可以具有为空的一或多行(例如,存储随机或冗余数据)。当到了磨损均衡程序的时间时,可以选择第一存储器行(例如,第n-1行)用于磨损均衡程序。可以基于源指针选择第一存储器行(“源存储器行”),所述源指针可以是指示存储器库中的哪个存储器行接下来要经历磨损均衡程序的位的集合。另外,可以选择存储器库中的第二存储器行(例如,空行,如第n行)用于存储来自第一存储器行的数据。可以基于目标指针选择第二存储器行(“目标存储器行”),所述目标指针可以是指示存储器库中的哪个存储器行要存储来自源行的数据的位的集合。在一些实例中,源指针指示与源行相关联的物理行地址,并且目标指针指示与目标行相关联的物理行地址。
77.在完成磨损均衡程序之后,可以修改(例如,递减)源指针以指向下一个源存储器行(例如,第六行),并且可以修改(例如,递减)目标指针以指向下一个目标存储器行(例如,第n-1行)(除非任一指针指示最后一行(例如,第0行),在这种情况下,指针可以环绕到第n行)。因此,目标指针和源指针可以用于管理磨损均衡程序。
78.除了实现磨损均衡程序的目标指针和源指针之外,接口控制器305还可以使用实现地址翻译(例如,将逻辑行地址转换成物理行地址)的偏移指针。逻辑行地址可以是由主机器件生成的虚拟地址并且用于参考数据预期要存储于的行,而物理行地址可以是标识数据实际上存储于的物理行的实际地址。逻辑地址可以由主机器件使用,使得除其它原因之外,对主机器件有效地隐藏磨损均衡程序的影响。然而,因为非易失性存储器310对物理地址进行操作,所以逻辑地址可以映射到物理地址以促进主机器件与非易失性存储器310之间的通信。例如,可以基于偏移指针将逻辑地址映射到物理地址,所述偏移指针可以是指示逻辑行地址与物理行地址之间的偏移(例如,差异)的位的集合。此类映射在本文中可以被称为翻译或转换。
79.如图3中的实例所示,偏移指针最初可以为零(0),因为数据a的逻辑地址与数据a的物理地址相同(其它数据依此类推)。然而,在行0到n中的数据已经统一向上移位一行之后(例如,在八个磨损均衡(wl)程序之后),可以将偏移指针更新为一(1)以指示逻辑地址与物理地址之间的偏移为一。类似地,可以更新源指针以指示第n行,并且可以更新目标指针以指示第0行。
80.为了管理和促进如本文所描述的磨损均衡程序,接口控制器305可以包含逻辑组件、寄存器、缓冲器、队列和其它电路系统。
81.例如,接口控制器305可以包含磨损均衡管理器320,所述磨损均衡管理器可以是负责管理用于非易失性存储器310的磨损均衡程序的逻辑组件。磨损均衡管理器320可以管理存储在寄存器325中的用于磨损均衡的指针并且确定何时针对存储器库(或存储器管理组)启动磨损均衡程序。磨损均衡管理器320还可以发出启动磨损均衡程序的不同阶段的磨损均衡命令(wl命令)。例如,磨损均衡管理器320可以发出启动磨损均衡程序的读取阶段的wl读取命令并且可以发出启动磨损均衡程序的写入阶段的wl写入命令。磨损均衡命令可以是用于促进磨损均衡程序的命令并且因此可以区别于用于促进非磨损均衡程序(例如,主机器件的数据存储、主机器件的数据检索)的功能命令。
82.接口控制器305还可以包含寄存器325,所述寄存器可以与磨损均衡管理器320和地址翻译器335以及其它组件耦接。寄存器325可以包含存储用于磨损均衡程序和地址翻译程序的指针的一或多个寄存器。例如,寄存器325可以存储促进磨损均衡程序的一或多个源指针和/或一或多个目标指针和促进地址翻译程序的一或多个偏移指针。指针可以存储在相应寄存器中或同一寄存器中。指针和与指针相关的信息可以在寄存器325、磨损均衡管理器320和地址翻译器335之间交换。
83.在一些实例中,寄存器325可以在每个库的基础上存储指针,这可以实现每个库的磨损均衡。例如,每个存储器库可以具有存储在与所述存储器库相对应的寄存器中的相应的目标指针、源指针和偏移指针。因此,不同的指针可以适用于不同的存储器库。在另一个实例中,寄存器325可以在每个mm组的基础上存储指针,这可以实现每个mm组的磨损均衡。例如,每个mm组可以具有存储在与所述mm组相对应的寄存器中的相应的目标指针、源指针和偏移指针。因此,不同的指针可以适用于不同的mm组。在又其它实例中,寄存器325可以存储可以适用于非易失性存储器中的所有存储器库的单个目标指针、源指针和偏移指针。
84.接口控制器305还可以包含地址翻译器335,所述地址翻译器可以是与主机器件、寄存器325和调度器340以及其它组件耦接的逻辑组件。地址翻译器335可以将逻辑地址
(la)翻译成物理地址(pa)。例如,地址翻译器335可以基于来自寄存器325的偏移指针将从主机器件接收的逻辑地址翻译成物理地址。逻辑地址、物理地址、指针和与地址翻译相关联的其它信息可以在地址翻译器335与接口控制器305的其它组件之间交换。
85.接口控制器305还可以包含调度器340,所述调度器可以是与地址翻译器335、磨损均衡管理器320、缓冲器345和存储器接口350以及其它组件耦接的逻辑组件。调度器340可以接收来自主机器件的功能命令(具有由地址翻译器335翻译成物理地址的逻辑地址)和来自磨损均衡管理器320的磨损均衡命令(具有物理地址)。调度器340可以对功能命令和磨损均衡命令进行排序、排队和调度并且将所述功能命令和所述磨损均衡命令转换成存储器接口350所理解(例如,支持)的命令。调度器340还可以检测功能命令何时与磨损均衡程序中涉及的数据相关联。在此类情况下,如与使用非易失性存储器310相反的,调度器340可以使用缓冲器345使接口控制器305满足功能命令。在一些实例中,调度器340是如参考图2所描述的调度器248-a的实例。
86.接口控制器305还可以包含存储器接口350,所述存储器接口可以是与调度器340、缓冲器345和非易失性存储器310以及其它组件耦接的逻辑组件。存储器接口350可以从调度器340接收命令(例如,功能命令、磨损均衡命令)并且对命令进行处理以通过总线315传输到非易失性存储器310。存储器接口350还可以从调度器340或缓冲器(如缓冲器218)接收数据(例如,要存储在非易失性存储器310中的数据)并且将数据中继到非易失性存储器310。类似地,存储器接口350可以从非易失性存储器310接收数据(例如,请求的数据)并且将数据中继到调度器340、缓冲器(如缓冲器218)或缓冲器345。在一些实例中,存储器接口350是如参考图2所描述的存储器接口电路系统234的实例。
87.接口控制器305还可以包含缓冲器345,所述缓冲器可以是与调度器340和存储器接口350以及其它组件耦接的缓冲器、阵列或寄存器。缓冲器345可以存储磨损均衡程序中涉及的数据(“磨损均衡数据”)。在一些实例中,缓冲器345可以针对非易失性存储器310中的每个存储器库包含一个缓冲器,并且每个缓冲器可以存储与其相对应的存储器库的磨损均衡数据。例如,缓冲器0可以存储来自库0的源存储器行的数据,直到数据准备好存储在库0的目标行中。因此,缓冲器345可以从存储器接口350接收磨损均衡数据(例如,作为磨损均衡程序的读取阶段的一部分)并且将磨损均衡数据传输到存储器接口350(例如,作为磨损均衡程序的写入阶段的一部分)。在一些实例中(例如,当功能命令与磨损均衡数据、源存储器行或目标存储器行相关联时),缓冲器345还可以与调度器340交换数据。
88.接口控制器305还可以包含寄存器355,所述寄存器可以与磨损均衡管理器320和主机器件以及其它组件耦接。寄存器355可以针对非易失性存储器310中的每个存储器库包含一个寄存器,并且每个寄存器可以存储与其相对应的存储器库的活动信息。例如,寄存器0可以存储存储器库0的活动信息,寄存器1可以存储存储器库1的活动信息,依此类推。活动信息可以指指示存储器库的活动水平的信息,所述活动水平可以包含存储器库已经被激活的次数。例如,寄存器0可以维持每次为存储器库0接收激活命令时递增的计数器。
89.活动信息可以从寄存器355传递到磨损均衡管理器320,使得磨损均衡管理器320可以确定何时启动磨损均衡程序。例如,当用于存储器库的激活命令的数量超过阈值数量时,磨损均衡管理器320可以针对存储器库启动磨损均衡程序。
90.在一些实例中,磨损均衡管理器320可以另外或可替代地与定时器耦接,使得经过
的时间可以用作用于启动磨损均衡程序的基础(例如,使得可以周期性地执行磨损均衡程序)。例如,当自用于存储器库的最近磨损均衡程序起的时间量超过阈值时间量时,磨损均衡管理器320可以针对存储器库启动磨损均衡程序。
91.因此,接口控制器305可以被配置成管理用于非易失性存储器310的磨损均衡程序。由接口控制器305管理的磨损均衡程序的各方面在本文中更详细地并且参考图4描述。
92.图4展示了根据如本文所公开的实例的支持存储器磨损管理的过程流程400的实例。过程流程400可以是由如参考图1所描述的存储器子系统110、参考图2所描述的存储器子系统200或参考图3所描述的器件300等器件实施的过程流程的实例。因此,器件可以包含接口控制器和非易失性存储器。过程流程400可以展示当接口控制器管理用于非易失性存储器的磨损均衡程序时接口控制器和非易失性存储器的操作。由接口控制器执行的操作可以通过白框表示,并且由非易失性存储器执行的操作可以通过阴影框表示。
93.在一些实例中,过程流程400的各方面可以由控制器以及其它组件来实施。另外或可替代地,过程流程400的各方面可以被实施为存储在存储器中的指令(例如,存储在易失性存储器120和/或非易失性存储器125中的固件)。例如,指令当由控制器执行时可以使控制器执行过程流程400的操作。
94.如本文所描述的,接口控制器可以将用于存储器库的磨损均衡程序分为读取阶段420和写入阶段440,这可以允许接口控制器在磨损均衡程序中(例如,在磨损均衡程序开始之后但在磨损均衡程序完成之前)服务于用于存储器库的功能命令。尽管参考单个存储器库进行描述,但是可以在多个存储器库上并行地(例如,在管理组的基础上或在非易失性存储器中的所有存储器库的基础上)实施过程流程400的操作。
95.可以实施过程流程400的替代性实例,其中一些操作以与所描述的顺序不同的顺序执行或者根本不执行。在一些实例中,过程流程400可以包含下文未提及的操作(例如,可以添加另外的操作)。另外,一些操作可以并行(例如,同时或在重叠时间期间)执行。
96.在402处,器件可以确定针对存储器库启动磨损均衡程序。例如,磨损均衡管理器320可以确定针对存储器库0启动磨损均衡程序。磨损均衡管理器320可以基于存储器库0的活动信息或基于存储器库0的定时器来确定启动磨损均衡程序。例如,磨损均衡管理器320可以基于用于存储器库0的激活命令的数量超过阈值数量来确定针对存储器库0启动磨损均衡程序。或者磨损均衡管理器320可以基于自用于存储器库0的上一磨损均衡程序起的时间量超过阈值时间量来确定针对存储器库0启动磨损均衡程序。例如,磨损均衡管理器320可以确定针对存储器库0周期性地启动磨损均衡程序。
97.在404处,器件可以选择用于磨损均衡程序的存储器行。例如,磨损均衡管理器320可以选择源行和目标行。可以基于从寄存器325接收的指针信息来选择行。例如,可以基于存储器库0的源指针选择源行,并且可以基于存储器库0的目标指针选择目标行。通过在接口控制器305管理磨损均衡程序,器件300可以避免可能以其它方式发生的地址翻译,从而节省时间和/或处理资源。例如,接口控制器305可以发出具有物理地址的磨损均衡命令,由此避免在非易失性存储器310处进行地址翻译的需要,而不是向非易失性存储器310发出具有逻辑行地址的磨损均衡命令——并且因此要求非易失性存储器310执行地址翻译以确定关联物理行地址。进一步,接口控制器305可以通过以下来完全避免用于磨损均衡程序的地址翻译:1)从寄存器325接收源指针和目标指针(因为源指针和目标指针直接指示物理地址
并且因此不需要翻译)并且2)将物理地址(如与逻辑地址相反的)与磨损均衡命令一起传递到调度器340。因此,器件300的配置可以允许器件300避免用于磨损均衡程序的地址翻译。
98.在406处,器件可以向非易失性存储器发出磨损均衡读取命令。例如,接口控制器305可以向非易失性存储器310发出磨损均衡读取命令。读取命令可以包含或伴随有对源行的指示(例如,源行的物理地址)。读取命令之前可以是针对源行或与源行相关联的存储器库的激活命令。在一些实例中,发出磨损均衡读取命令可以包含:在408处,磨损均衡管理器320向调度器340发出磨损均衡命令;以及在410处,调度器340将磨损均衡读取命令中继到存储器接口350以用于通过总线315传输到非易失性存储器310。
99.在接口控制器305的组件之间传递的磨损均衡命令可以根据传递中所涉及的组件而不同地格式化。尽管参考磨损均衡读取命令进行了描述,但是可以针对与磨损均衡相关联的其它命令(例如,激活命令、磨损均衡写入命令、预充电命令等)执行类似的操作。
100.在412处,非易失性存储器可以激活为磨损均衡程序选择的存储器库中的源行。例如,非易失性存储器310可以激活存储器库0中的源行。对行进行激活也可以被称为打开行并且可以涉及将激活电压施加到与行相关联的字线(例如,因此可以在读取操作期间读出行中的数据)。非易失性存储器也可以从源行读取数据。在414处,非易失性存储器关闭源行并且将磨损均衡数据传递到器件。例如,非易失性存储器310可以关闭存储器库0中的源行并且将磨损均衡数据通过总线315和存储器接口350传递到接口控制器305。关闭行也可以被称为对行进行去激活或预充电并且可以涉及从与行相关联的字线去除激活电压和/或锁存从行读出的数据。在读取磨损均衡数据之后关闭存储器库0中的行可以允许在磨损均衡程序期间打开和存取存储器库0中的其它行。
101.在416处,器件可以从非易失性存储器接收磨损均衡数据。例如,接口控制器305可以从非易失性存储器310接收磨损均衡数据。在418处,器件可以将磨损均衡数据存储在与为磨损均衡程序选择的存储器库相关联的缓冲器中。例如,存储器接口350可以将用于存储器库0的磨损均衡数据存储在缓冲器345中的缓冲器0中。406与418之间的操作可以是磨损均衡程序的读取阶段420的一部分。因为源行在读取阶段420结束时关闭,所以器件能够对存储器库0的其它行进行存取以在磨损均衡程序正在进行时服务于功能命令,这可以减少等待时间。
102.在一些实例中,在422处,器件可以接收与经历磨损均衡程序的存储器库相关联的功能命令。例如,接口控制器305可以从与接口控制器305耦接的主机器件接收用于存储器库0的读取命令或写入命令。读取命令可以从非易失性存储器的逻辑地址请求数据,而写入命令可以请求在非易失性存储器阵列的逻辑地址处存储提供的数据。功能命令可以连同逻辑地址的翻译(例如,与逻辑地址相关联的物理地址)一起被中继到调度器340。物理地址可以由地址翻译器335基于存储在寄存器325中的偏移指针以及其它指针来确定。
103.在一些实例中,在424处,器件可以确定与功能命令相关联的数据是否也与磨损均衡程序相关联。例如,如果功能命令是读取命令,则调度器340可以确定读取命令所请求的数据是否是经受当前磨损均衡程序(例如,正在进行的磨损均衡程序)的数据。调度器340可以通过将读取命令的物理地址与磨损均衡程序的物理地址进行比较来作出此确定。如果物理地址不匹配,则在426处,器件可以通过从非易失性存储器检索数据并且将其返回到主机器件(例如,通过如参考图2所描述的缓冲器218)来满足读取命令。如果物理地址相匹配,则
在428处,调度器340可以通过从缓冲器345(例如,缓冲器0)读取请求的数据并且将请求的数据返回到主机器件(例如,通过如参考图2所描述的缓冲器218)来满足读取命令。
104.如果在422处接收的功能命令是写入命令,则调度器340可以确定与写入命令相关联的物理地址是否是经受当前磨损均衡程序的数据。调度器340可以通过将磨损均衡程序的物理地址与同写入命令相关联的物理地址进行比较来作出此确定。如果物理地址不匹配,则在426处,器件300可以通过将提供的数据存储在非易失性存储器310中来满足写入命令。如果物理地址相匹配,则在428处,调度器340可以通过所提供的数据写入缓冲器345(例如,缓冲器0)来满足写入命令。因此,器件可以在磨损均衡程序期间服务于并满足功能命令。
105.在430处,器件可以将磨损均衡写入命令和磨损均衡数据传递到非易失性存储器,作为磨损均衡程序的写入阶段440的一部分。例如,接口控制器305可以将磨损均衡数据和磨损均衡写入命令传递到非易失性存储器310。写入命令可以包含或伴随有对目标行的指示(例如,目标行的物理地址)。写入命令之前可以是针对目标行或与目标行相关联的存储器库的激活命令。在一些实例中,发出磨损均衡写入命令可以包含:在432处,磨损均衡管理器320向调度器340发出磨损均衡写入命令;在434处,调度器340将磨损均衡写入命令中继到存储器接口350;以及在436处,存储器接口350从缓冲器345(例如,缓冲器0)检索磨损均衡数据。因此,存储器接口350可以通过总线315向非易失性存储器310传输磨损均衡数据和磨损均衡写入命令。
106.在438处,器件可以激活为磨损均衡程序选择的存储器库的目标行、将磨损均衡数据写入到目标行并且关闭目标行。例如,非易失性存储器310可以激活存储器库0中的目标行、将磨损均衡数据写入到目标行并且关闭目标行。因此,可以完成磨损均衡程序的写入阶段440以及磨损均衡程序本身。
107.在一些实例中,器件可以在完成存储器库0的磨损均衡程序之后更新寄存器325中的指针。例如,磨损均衡管理器320可以更新源指针、目标指针和/或偏移指针以指示非易失性存储器310的新物理地址。以此方式,后续磨损均衡程序可以涉及存储器库0的新行,这可以增加本文所描述的磨损均衡技术的功效。
108.尽管参考单个存储器库进行描述,但是可以在多个存储器库上并行地或串联地实施过程流程400的操作。在一些实例中,对其它存储器库执行的磨损均衡程序可以涉及源行和目标行的相同物理行地址。在其它实例中,对其它存储器库执行的磨损均衡程序可以涉及源行和目标行的不同物理行地址。
109.图5展示了根据如本文所公开的实例的支持存储器磨损管理的时序图500的实例。时序图500可以展示在接口控制器与非易失性存储器之间交换的信号,如本文所描述的。信号可以包含命令信号505和地址信号510,所述命令信号和所述地址信号可以通过一或多条c/a总线在接口控制器与非易失性存储器之间传输。信号展现了如何可以在如本文所描述的接口控制器所管理的磨损均衡程序期间服务于功能命令。在时序图500中,磨损均衡命令和数据可以由阴影形状表示,并且功能命令可以由白色形状表示。时钟信号540可以用于使接口控制器和非易失性存储器处的操作同步。
110.在时间t1处,接口控制器可以向非易失性存储器传输用于存储器库0(b0)的预充电命令(pre)。在一些实例中,预充电命令可以是每个库的预充电命令(prepb)。预充电命令
可以指示非易失性存储器要将数据保存在存储器库0中并且关闭任何开放行。因此,可以准备存储器库0用于磨损均衡程序。在时间t2处,接口控制器可以向非易失性存储器传输用于存储器库0中的源行的激活命令(act)。激活命令可以指示非易失性存储器要激活源行以用于磨损均衡程序。因此,非易失性存储器可以激活源行。在时间t3处,接口控制器可以向非易失性存储器传输用于存储器库1的读取命令。非易失性存储器可以服务于用于存储器库1的读取命令(未示出)。
111.在时间t4处,接口控制器可以向非易失性存储器传输用于存储器库0中的源行的磨损均衡读取命令。磨损均衡读取命令可以指示非易失性存储器要从源行读取数据并且将所述数据返回到接口控制器(例如,以用于存储在缓冲器中,如如参考图3所描述的缓冲器345中的缓冲器0)。磨损均衡数据515存储在缓冲器中的时间量可以由周期520表示。在从源行读取数据之后,非易失性存储器可以关闭源行(例如,自动地或响应于来自接口控制器的预充电命令),使得可以对存储器库0中的其它行进行存取以用于功能命令。因此,读取阶段525可以包含在时间t2处传输激活命令、在时间t4处传输磨损均衡读取命令、将磨损均衡数据存储在缓冲器中以及关闭存储器库0中的源行。读取阶段的持续时间可以比所示的更短或更长,但可以在将用于存储器库0的功能激活命令在时间t7处传输之前结束。
112.在将磨损均衡数据存储在缓冲器中之后,但在将所述磨损均衡数据存储在目标行中之前,接口控制器可以向存储器库0和其它存储器库发出功能命令。例如,接口控制器可以在时间t5处向非易失性存储器传输用于存储器库2中的行的功能读取命令并且在时间t6处向非易失性存储器传输用于存储器库3中的行的功能读取命令。非易失性存储器可以服务于并满足如本文所描述的这些功能读取命令。接口控制器还可以在时间t7处向非易失性存储器传输用于存储器库0中的行的功能激活命令并且在时间t8处向非易失性存储器传输用于存储器库0中的行的功能读取命令。行可以是正在进行的磨损均衡程序中不涉及的在存储器库0中的任何行。因此,非易失性存储器可以激活存储器库0中的行并且从行读取数据。此类行为是可能的,因为存储器库0中的源行在读取阶段525结束时关闭。在从行读取数据之后,非易失性存储器可以关闭行,使得可以对存储器库0中的其它行进行存取以用于功能命令或磨损均衡命令。
113.在时间t9处,接口控制器可以向非易失性存储器传输用于存储器库0中的目标行的磨损均衡激活命令。响应于激活命令,非易失性存储器可以激活存储器库0中的目标行。在时间t10处,接口控制器可以向非易失性存储器传输用于存储器库0中的目标行的磨损均衡写入命令。响应于磨损均衡写入命令,非易失性存储器可以将磨损均衡数据写入到目标行,从而完成磨损均衡程序的写入阶段535,这结束了磨损均衡程序。在将磨损均衡数据写入到目标行之后,非易失性存储器可以关闭目标行(例如,自动地或响应于来自接口控制器的预充电命令),使得可以对存储器库0中的其它行进行存取以用于后续命令。
114.因此,存储器接口可以通过将磨损均衡程序的读取阶段525和写入阶段535分开来发布用于经历磨损均衡程序的存储器库的交错功能命令545。
115.图6示出了根据如本文所公开的实例的支持存储器磨损管理的器件605的框图600。器件605可以是如分别参考图1、2和3所描述的存储器子系统110、存储器子系统200或器件300的各方面的实例。因此,器件可以包含包括一或多个存储器库的非易失性存储器和与非易失性存储器耦接的接口控制器。器件605可以包含地址管理器610、磨损均衡(wl)命
令管理器615、寄存器管理器620、存储器接口管理器625、非易失性存储器管理器630和功能命令管理器635。这些模块中的每个模块可以包含被配置成执行本文所描述的功能的电路系统。这些模块中的每个模块可以彼此直接地或间接地通信(例如,通过一或多条总线或其它导电连接)。
116.在第一实例中,地址管理器610可以选择存储器库中的物理行地址用于将数据从存储器库的第一行移动到存储器库的第二行的程序。程序可以是如本文所描述的磨损均衡程序。wl命令管理器615可以至少部分地基于物理行地址来确定针对存储器库的第一行启动程序,其中所述物理行地址与所述第一行相关联。作为程序的一部分,wl命令管理器615还可以向非易失性存储器发出用于与第一行相关联的物理行地址的读取命令。
117.在一些实例中,寄存器管理器620可以至少部分地基于发出读取命令来将数据传递到接口控制器中的寄存器。在一些实例中,存储器接口管理器625可以将数据从寄存器传递到非易失性存储器。在一些实例中,非易失性存储器管理器630可以将数据存储在存储器库的第二行中。在一些实例中,存储器接口管理器625可以在将数据传递到寄存器与将数据传递到非易失性存储器之间将第二数据传递到存储器库或从存储器库传递第二数据。
118.在一些实例中,功能命令管理器635可以从主机器件接收用于逻辑行地址的读取命令。在一些实例中,功能命令管理器635可以至少部分地基于存储在接口控制器的第二寄存器中的指针来确定逻辑行地址与第一行相关联。在一些实例中,寄存器管理器620可以至少部分地基于逻辑行地址与第一行相关联来将数据从寄存器返回到主机器件。
119.在一些实例中,功能命令管理器635可以从主机器件接收用于逻辑行地址的写入命令,所述写入命令与第二数据相关联。在一些实例中,功能命令管理器635可以至少部分地基于存储在接口控制器的第二寄存器中的指针来确定逻辑行地址与第一行相关联。在一些实例中,寄存器管理器620可以至少部分地基于接收用于逻辑行地址的写入命令来用第二数据替换寄存器中的数据。
120.在一些实例中,wl命令管理器615可以至少部分地基于发出读取命令向非易失性存储器发出用于与存储器库的第二行相关联的第二物理行地址的写入命令。在一些实例中,功能命令管理器635可以在发出读取命令与写入命令之间向非易失性存储器发出与存储器库相关联的存取命令。在一些实例中,功能命令管理器635可以在发出读取命令与写入命令之间向非易失性存储器发出与存储器库相关联的存取命令。
121.在一些实例中,至少部分地基于存储在接口控制器的寄存器中的指针来选择物理行地址。在一些实例中,寄存器管理器620可以至少部分地基于存储在寄存器中的第二指针来选择与第二行相关联的第二物理行地址。
122.在一些实例中,非易失性存储器管理器630可以在发出读取命令之后将数据存储在存储器库的第二行中。在一些实例中,寄存器管理器620可以至少部分地基于将数据存储在存储器库的第二行中来更新接口控制器的寄存器中的一或多个指针。
123.在一些实例中,非易失性存储器包含第二存储器库。在一些实例中,地址管理器610可以选择第二存储器库中的第二物理行地址用于在所述第二存储器库的行之间移动第二数据的第二程序,其中所述程序和所述第二程序在时间上至少部分地重叠。
124.在一些实例中,地址管理器610可以确定存储器库的存储要传递到存储器库的第二行的数据的第一行的第一物理行地址。wl命令管理器615可以向非易失性存储器传递用
于第一物理行地址的读取命令。寄存器管理器620可以至少部分地基于传输读取命令来将数据传递到接口控制器中的寄存器。并且存储器接口管理器625可以将数据从寄存器传递到非易失性存储器。
125.在一些实例中,wl命令管理器615可以将写入命令传递到非易失性存储器,其中所述数据至少部分地基于写入命令而存储在存储器库的第二行中。
126.在一些实例中,存储器接口管理器625可以在将数据传递到寄存器之后并且将数据传递到非易失性存储器之前将第二数据传递到存储器库或从存储器库传递第二数据。
127.在一些实例中,wl命令管理器615可以针对存储器库启动磨损均衡程序,其中所述磨损均衡程序包括将数据从第一行移动到存储器库的第二行。在一些实例中,wl命令管理器615可以确定自从先前的磨损均衡程序完成以来阈值持续时间已经到期,其中所述磨损均衡程序是至少部分地基于确定阈值持续时间已经到期来启动的。在一些实例中,wl命令管理器615可以确定自从先前的磨损均衡程序完成以来已经将阈值数量的激活命令定向到存储器库,其中所述磨损均衡程序是至少部分地基于确定阈值数量的激活命令已经定向到所述存储器库来启动的。
128.图7示出了展示根据本公开的各方面的支持存储器磨损管理的一或多种方法700的流程图。方法700的操作可以由如本文所描述的存储器子系统或其组件实施。例如,方法700的操作可以由如参考图1到6所描述的存储器子系统执行。在一些实例中,存储器子系统可以执行指令集合来控制存储器子系统件的功能元件执行描述的功能。另外或可替代地,存储器子系统可以使用专用硬件执行描述的功能的各方面。
129.在一些实例中,方法700的操作可以由包含非易失性存储器和接口控制器的装置实施。非易失性存储器可以包含一或多个存储器库并且可以与接口控制器耦接。
130.在705处,方法可以包含选择存储器库中的物理行地址用于将数据从存储器库的第一行移动到存储器库的第二行的程序。705的操作可以根据本文所描述的方法来执行。在一些实例中,705的操作的各方面可以由如参考图6所描述的地址管理器执行。
131.在710处,方法可以包含至少部分地基于物理行地址来确定针对存储器库的第一行启动程序,其中所述物理行地址与所述第一行相关联。710的操作可以根据本文所描述的方法来执行。在一些实例中,710的操作的各方面可以由如参考图6所描述的地址管理器执行。
132.在715处,方法可以包含作为程序的一部分向非易失性存储器发出用于与第一行相关联的物理行地址的读取命令。715的操作可以根据本文所描述的方法来执行。在一些实例中,715的操作的各方面可以由如参考图6所描述的wl命令管理器执行。
133.在一些实例中,如本文所描述的装置可以执行一或多种方法,如方法700。装置可以包含用于以下的特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):选择存储器库中的逻辑行地址用于将数据从存储器库的第一行移动到存储器库的第二行的程序;至少部分地基于逻辑行地址和存储在接口控制器的寄存器中的一或多个指针来确定与存储器库的第一行相关联的物理行地址;以及作为程序的一部分,向非易失性存储器发出用于物理行地址的读取命令。
134.方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于发出读取命令来将数据传递到接口控制器中的寄存器的操作、特征、构件或指令。方法700和
本文所描述的装置的一些实例可以进一步包含用于以下的操作、特征、构件或指令:将数据从寄存器传递到非易失性存储器;以及将数据存储在存储器库的第二行中。方法700和本文所描述的装置的一些实例可以进一步包含用于在将数据传递到寄存器与将数据传递到非易失性存储器之间将第二数据传递到存储器库或从存储器库传递第二数据的操作、特征、构件或指令。
135.方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于发出读取命令来将数据传递到接口控制器中的寄存器的操作、特征、构件或指令。方法700和本文所描述的装置的一些实例可以进一步包含用于以下的操作、特征、构件或指令:从主机器件接收用于逻辑行地址的读取命令;至少部分地基于存储在接口控制器的第二寄存器中的指针来确定逻辑行地址与第一行相关联;以及至少部分地基于逻辑行地址与第一行相关联来将数据从寄存器返回到主机器件。
136.方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于发出读取命令来将数据传递到接口控制器中的寄存器的操作、特征、构件或指令。方法700和本文所描述的装置的一些实例可以进一步包含用于从主机器件接收用于逻辑行地址的写入命令的操作、特征、构件或指令,所述写入命令与第二数据相关联。方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于存储在接口控制器的第二寄存器中的指针来确定逻辑行地址与第一行相关联的操作、特征、构件或指令。方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于接收用于逻辑行地址的写入命令来用第二数据替换寄存器中的数据的操作、特征、构件或指令。
137.方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于发出读取命令向非易失性存储器发出用于与存储器库的第二行相关联的第二物理行地址的写入命令的操作、特征、构件或指令。方法700和本文所描述的装置的一些实例可以进一步包含用于在发出读取命令与写入命令之间向非易失性存储器发出与存储器库相关联的存取命令的操作、特征、构件或指令。
138.在一些实例中,至少部分地基于存储在接口控制器的寄存器中的指针来选择物理行地址。方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于存储在寄存器中的第二指针来选择与第二行相关联的第二物理行地址的操作、特征、构件或指令。
139.方法700和本文所描述的装置的一些实例可以进一步包含用于在发出读取命令之后将数据存储在存储器库的第二行中的操作、特征、构件或指令。方法700和本文所描述的装置的一些实例可以进一步包含用于至少部分地基于将数据存储在存储器库的第二行中来更新接口控制器的寄存器中的一或多个指针的操作、特征、构件或指令。
140.方法700和本文所描述的装置的一些实例可以进一步包含用于选择(非易失性存储器的)第二存储器库中的第二物理行地址用于在第二存储器库的行之间移动第二数据的第二程序的操作、特征、构件或指令,其中所述程序和所述第二程序在时间上至少部分地重叠。
141.图8示出了展示根据本公开的各方面的支持存储器磨损管理的一或多种方法800的流程图。方法800的操作可以由如本文所描述的存储器子系统或其组件实施。例如,方法800的操作可以由如参考图1到6所描述的存储器子系统执行。在一些实例中,存储器子系统
可以执行指令集合来控制存储器子系统件的功能元件执行描述的功能。另外或可替代地,存储器子系统可以使用专用硬件执行描述的功能的各方面。
142.在一些实例中,方法800的操作可以由包含非易失性存储器和接口控制器的装置实施。非易失性存储器可以包含一或多个存储器库并且可以与接口控制器耦接。
143.在805处,方法可以包含确定存储器库的存储要传递到存储器库的第二行的数据的第一行的第一物理行地址。805的操作可以根据本文所描述的方法来执行。在一些实例中,805的操作的各方面可以由如参考图6所描述的地址管理器执行。
144.在810处,方法可以包含向非易失性存储器传递用于第一物理行地址的读取命令。810的操作可以根据本文所描述的方法来执行。在一些实例中,810的操作的各方面可以由如参考图6所描述的wl命令管理器执行。
145.在815处,方法可以包含至少部分地基于传输读取命令来将数据传递到接口控制器中的寄存器。815的操作可以根据本文所描述的方法来执行。在一些实例中,815的操作的各方面可以由如参照图6所描述的寄存器管理器执行。
146.在820处,方法可以包含将数据从寄存器传递到非易失性存储器。820的操作可以根据本文所描述的方法来执行。在一些实例中,820的操作的各方面可以由如参考图6所描述的存储器接口管理器执行。
147.在一些实例中,如本文所描述的装置可以执行一或多种方法,如方法800。装置可以包含用于以下的特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):确定存储器库的存储要传递到存储器库的第二行的数据的第一行的第一物理行地址;向非易失性存储器传递用于第一物理行地址的读取命令;至少部分地基于传输读取命令来将数据传递到接口控制器中的寄存器;以及将数据从寄存器传递到非易失性存储器。
148.在方法800和本文所描述的装置的一些实例中,确定存储信息可以包含用于将写入命令传递到非易失性存储器的操作、特征、构件或指令,其中至少部分地基于写入命令来将数据存储在存储器库的第二行中。
149.在方法800和本文所描述的装置的一些实例中,确定存储信息可以包含用于在将数据传递到寄存器之后并且在将数据传递到非易失性存储器之前将第二数据传递到存储器库或从存储器库传递第二数据的操作、特征、构件或指令。
150.在方法800和本文所描述的装置的一些实例中,确定存储信息可以包含用于针对存储器库启动磨损均衡程序的操作、特征、构件或指令,其中所述磨损均衡程序包括将数据从第一行移动到存储器库的第二行。在方法800和本文所描述的装置的一些实例中,确定存储信息可以包含用于确定自从先前的磨损均衡程序完成以来阈值持续时间已经到期的操作、特征、构件或指令,其中所述磨损均衡程序是至少部分地基于确定阈值持续时间已经到期来启动的。在方法800和本文所描述的装置的一些实例中,确定存储信息可以包含用于确定自从先前的磨损均衡程序完成以来已经将阈值数量的激活命令定向到存储器库的操作、特征、构件或指令,其中所述磨损均衡程序是至少部分地基于确定阈值数量的激活命令已经定向到存储器库来启动的。
151.在一些实例中,如本文所描述的装置可以执行方法700和方法800的各方面。装置可以包含包括多个存储器库的非易失性存储器和与非易失性存储器耦接的接口控制器。接
口控制器可以包含:第一逻辑组件(例如,磨损均衡管理器320),所述第一逻辑组件被配置成管理在非易失性存储器中的存储器库的行之间移动数据的程序;寄存器(例如,寄存器325之一),所述寄存器与第一逻辑组件耦接并且被配置成存储与存储器库的行相关联的一或多个指针;以及第二逻辑组件(例如,地址翻译器335),所述第二逻辑组件与寄存器耦接并且被配置成至少部分地基于存储在寄存器中的所述一或多个指针来确定物理行地址。所述一或多个指针可以与所述多个存储器库中的单个存储器库相关联。或者所述一或多个指针可以与所述多个存储器库的子集相关联。
152.在一些实例中,接口控制器包含缓冲器(例如,缓冲器345之一),所述缓冲器被配置成存储来自存储器库的一行并且旨在用于存储器库的由所述一或多个指针指示的另一行的数据。
153.在一些实例中,接口控制器包含第二寄存器(例如,寄存器355之一),所述第二寄存器与第一逻辑组件耦接并且可操作以维持所述多个存储器库中的存储器库的计数器,其中所述存储器库的所述计数器指示为存储器库接收的激活命令的数量。
154.在一些实例中,接口控制器包含第三逻辑组件(例如,存储器接口350),所述第三逻辑组件与第二逻辑组件耦接并且被配置成向非易失性存储器传输用于由所述一或多个指针指示的物理行的存取命令。在一些实例中,接口控制器包含第四逻辑组件(例如,调度器340),所述第四逻辑组件与第三逻辑组件耦接并且被配置成调度由第三逻辑组件传输的存取命令。
155.应当注意,上文所描述的方法描述了可能的实施方案,并且可以重新布置或以其它方式修改操作和步骤,并且其它实施方案是可能的。此外,可以将来自方法中的两种或两种以上方法的各部分组合。
156.可以使用各种不同的工艺和技术中的任何工艺和技术表示本文所描述的信息和信号。例如,可以贯穿以上描述引用的数据、指令、命令、信息、信号、位、符号和芯片可以通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示。一些附图可以将多个信号展示为单个信号;然而,本领域的普通技术人员将理解的是,信号可以表示信号总线,其中总线可以具有各种位宽度。
157.术语“电子通信”、“导电接触”、“连接”和“耦接”可以指支持组件之间的信号流的组件间关系。如果组件之间存在可以在任何时候支持组件之间的信号流的任何导电路径,则认为组件彼此电子通信(或彼此导电接触、连接或耦接)。在任何给定时间,基于包含所连接组件的器件的操作,彼此电子通信(或彼此导电接触或连接或耦接)的组件之间的导电路径可以是开路或闭路。所连接组件之间的导电路径可以是组件之间的直接导电路径,或者所连接组件之间的导电路径可以是间接导电路径,所述间接导电路径可以包含中间组件,如开关、晶体管或其它组件。在一些实例中,可以例如使用一或多个中间组件如开关或晶体管中断所连接组件之间的信号流一段时间。
158.术语“耦接”是指从当前不能通过导电路径在组件之间传送信号的组件间开路关系移动到能够通过导电路径在组件之间传送信号的组件间闭路关系的状况。当如控制器等组件将其它组件耦接在一起时,所述组件引起允许信号通过先前不允许信号流动的导电路径在其它组件之间流动的改变。
159.术语“隔离”是指其中信号当前不能够在组件之间流动的组件间关系。如果组件之
间存在开路,则组件彼此隔离。例如,当开关断开时,由定位于两个组件之间的开关分离的组件彼此隔离。当控制器隔离两个组件时,控制器影响阻止信号使用先前允许信号流动的导电路径在组件之间流动的改变。
160.本文所讨论的包含存储器阵列的器件可以形成于如硅、锗、硅-锗合金、砷化镓、氮化镓等半导体衬底上。在一些实例中,衬底是半导体晶圆。在其它实例中,衬底可以是如玻璃上硅(sog)或蓝宝石上硅(sop)等绝缘体上硅(soi)衬底或另一种衬底上的半导体材料的外延层。可以通过使用各种化学物质(包含但不限于磷、硼或砷)进行掺杂来控制衬底或衬底的子区域的导电性。可以在衬底的初始形成或生长期间通过离子注入或通过任何其它掺杂手段来执行掺杂。
161.本文所讨论的切换组件或晶体管可以表示场效应晶体管(fet)并且包括包含源极、漏极和栅极的三端子器件。端子可以通过导电材料例如金属连接到其它电子元件。源极和漏极可以是导电的并且可以包括重掺杂的例如简并的半导体区域。源极和漏极可以通过轻掺杂的半导体区域或沟道分离。如果沟道是n型(即,多数载流子是电子),则fet可以被称为n型fet。如果沟道是p型(即,多数载流子是空穴),则fet可以被称为p型fet。可以通过绝缘栅极氧化物对沟道进行封盖。可以通过将电压施加到栅极来控制沟道导电性。例如,分别向n型fet或p型fet施加正电压或负电压可以使沟道变成导电的。当将大于或等于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可以“接通”或“激活”。当将小于或等于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可以“断开”或“去激活”。
162.本文所阐述的描述结合附图描述了示例配置并且不表示可以在权利要求的范围内实施或处于权利要求的范围内的所有实例。本文所使用的术语“示范性”意指“充当实例(example、instance)或说明”,而不是“优选的”或“优于其它实例。”详细描述包含用于提供对所描述技术的理解的具体细节。然而,这些技术可以在没有这些具体细节的情况下实践。在一些实例中,以框图形式示出了众所周知的结构和器件以免模糊所描述实例的概念。
163.在附图中,类似的组件或特征可以具有相同的附图标记。进一步,可以通过在附图标记之后加上破折号和在类似组件之间进行区分的第二标记来区分相同类型的各个组件。如果在说明书中仅使用了第一附图标记,则描述适用于在不考虑第二附图标记的情况下具有相同的第一附图标记的类似组件中的任何一个组件。
164.可以使用各种不同的工艺和技术中的任何工艺和技术表示本文所描述的信息和信号。例如,可以贯穿以上描述引用的数据、指令、命令、信息、信号、位、符号和芯片可以通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示。
165.协议可以定义支持由器件或组件使用的一或多个通信程序和一或多个通信参数。例如,协议可以定义各种操作、这些操作的时序和频率、各种命令或信号或两者的含义、一或多个存储器的一或多个寻址方案、保留引脚的通信类型、在如接口等各种组件处处理的数据的大小、如接口等各种组件所支持的数据速率或如接口等各种组件所支持的带宽以及其它参数和度量或其任何组合。共享协议的使用可以实现器件之间的交互,因为每个器件可以以另一个器件所预期、识别和理解的方式操作。例如,支持相同协议的两个器件可以根据协议所定义的策略、程序和参数进行交互,而支持不同协议的两个器件可能不兼容。
166.为了说明,支持不同协议的两个器件可能不兼容,因为协议定义了不同的寻址方案(例如,不同数量的地址位)。作为另一个说明,支持不同协议的两个器件可能不兼容,因
为协议定义了对单个命令作出响应的不同传递程序(例如,响应于命令而允许的突发长度或字节数量可以不同)。仅仅将命令翻译为动作不应被解释为使用两种不同的协议。相反,如果由两种协议定义的对应程序或参数不同,则可以将协议视为不同。例如,如果器件支持不同的寻址方案或用于对命令作出响应的不同传递程序,则可以称器件支持两种不同的协议。
167.结合本文的公开所描述的各种说明性块和模块可以用被设计成执行本文所描述的功能的通用处理器、dsp、asic、fpga或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合来实施或执行。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何处理器、控制器、微控制器或状态机。处理器还可以被实施为计算器件的组合(例如,dsp与微处理器的组合、多个微处理器、结合dsp核的一或多个微处理器或者任何其它此类配置)。
168.本文所描述的功能可以以硬件、由处理器执行的软件、固件或其任何组合实施。如果以由处理器执行的软件实施,则可以将功能作为一或多个指令或代码存储在计算机可读媒体上或通过计算机可读媒体传输。其它实例和实施方案处于本公开和所附权利要求的范围内。例如,由于软件的性质,可以使用由处理器执行的软件、硬件、固件、硬接线或其中的任何项的组合实施上述功能。实施功能的特征还可以物理地位于各个定位处,包含被分布成使得功能的各部分在不同的物理位置处实施。并且,如本文中(包含在权利要求中)所使用的,如在项目列表(例如,以如
“……
中的至少一个”或
“……
中的一或多个”等短语结尾的项目列表)中使用的“或”指示包含性列表,使得例如a、b或c中的至少一个的列表意指a或b或c或ab或ac或bc或abc(即,a和b和c)。并且,如本文所使用的,短语“基于”不应解释为对条件闭集的引用。例如,被描述为“基于条件a”的示范性步骤可以在不脱离本公开的范围的情况下基于条件a和条件b两者。换句话说,如本文所使用的,短语“基于”应以与短语“至少部分地基于”相同的方式解释。
169.计算机可读媒体包含非暂时性计算机存储媒体和包含促进计算机程序从一个地方传递到另一个地方的任何媒体的通信媒体两者。非暂时性存储媒体可以是可以由通用或专用计算机存取的任何可用媒体。通过举例而不是进行限制,非暂时性计算机可读媒体可以包括ram、rom、电可擦除可编程序只读存储器(eeprom)、压缩盘(cd)rom或其它光盘存储器件、磁盘存储器件或其它磁性存储器件或者可以用于以指令或数据结构形式承载或存储期望程序代码手段并且可以被通用或专用计算机或者通用或专用处理器存取的任何其它非暂时性媒体。并且,任何连接都被适当地称为计算机可读媒体。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或如红外、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,则所述同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或如红外、无线电和微波等无线技术包含在媒体的定义中。如本文所使用的盘或碟包含cd、激光碟、光碟、数字通用碟(dvd)、软盘和蓝光碟,其中盘通常磁性地再生数据,而碟用激光光学地再生数据。上述内容的组合也包含在计算机可读媒体的范围内。
170.提供本文的描述以使本领域技术人员能够形成或使用本公开。对于本领域的技术人员而言,对本公开的各种修改将是显而易见的,并且在不脱离本公开的范围的情况下,可以将本文所定义的一般性原理应用于其它变体。因此,本公开不限于本文所描述的实例和设计,而是要符合与本文所公开的原理和新颖特征相一致的最广泛范围。
转载请注明原文地址:https://win.8miu.com/read-1056165.html