存储器子系统中的高速缓存管理
1.相关申请的交叉引用
2.本技术要求ballapuram等人于2020年6月23日提交的发明名称为“存储器子系统中的高速缓存管理(cache management in a memory subsystem)”的第63/042,953号美国临时专利申请的优先权,该临时专利申请被转让给本发明的受让人,并且该临时专利申请的全部内容通过引用的方式明确地并入本文中。
技术领域
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.描述了一种设备。该设备可以包括铁电随机存取存储器(feram);动态随机存取存储器(dram);以及与feram和dram耦合的接口控制器。接口控制器可以包含静态随机存取存储器(sram)缓冲器,并且可操作用于:从片上系统(soc)接收访问feram的存储器地址的命令,存储器地址与dram的存储体中的一组存储器单元相关联;将与命令相关联的数据存储在sram缓冲器中,sram缓冲器具有对应于dram的页面大小的存储容量,并且与dram和feram耦合;以及至少部分基于命令从sram缓冲器传送数据。
附图说明
11.图1示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的系统的实例。
12.图2示出了根据本文公开的实例的支持高速缓存管理的存储器子系统的实例。
13.图3示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的过程流程的实例。
14.图4示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的过程流程的实例。
15.图5示出了根据本公开各方面的支持高速缓存管理的存储器子系统的框图。
16.图6至8示出了流程图,示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的一或多种方法。
具体实施方式
17.存储器系统可以包括一或多个存储器装置作为主机装置(例如,片上系统(soc)或处理器)的主存储器(例如,用于存储信息和其它操作的主要存储器)。例如,存储器系统可以包括为存储器系统存储数据的非易失性存储器(例如,feram)。与易失性存储器相比,非易失性存储器可以提供非易失性、更高容量和更低功耗等好处。然而,在非易失性存储器和主机装置之间可能存在各种不兼容性或低效率。例如,主机装置和非易失性存储器可以支持不同的等待时间、页面大小或通信协议等特征。
18.根据本文描述的技术,主机装置和非易失性存储器之间的不兼容性或低效率可以通过在存储器系统中包括易失性存储器并将易失性存储器作为高速缓存来解决。存储器系
统中可以包括控制器,作为主机装置、易失性存储器和非易失性存储器以及其它部件之间的媒介。控制器可以包括一或多个缓冲器,其可以促进易失性存储器作为高速缓存的操作。例如,控制器可以包括用于易失性存储器的每个存储体的第一缓冲器和第二缓冲器。除了其它优点之外,为了简化传送过程,缓冲器可以具有对应于(例如,等于)易失性存储器的页面大小的存储容量。控制器可以使用易失性存储器的存储体的第一缓冲器来存储用于在主机装置、易失性存储器或非易失性存储器(例如,在访问过程中)或其任何组合之间传送的数据。控制器可以使用易失性存储器的存储体的第二缓冲器来存储用于从易失性存储器传送到非易失性存储器的数据(例如,作为释放易失性存储器中的空间用于新数据的驱逐过程的一部分)。
19.本公开的特征最初在参考图1和2描述的存储器系统和子系统的上下文中描述。本公开的特征在参考图3和4描述的上下文过程流程中描述。本公开的这些和其它特征通过参考图5-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的好处,同时保持与支持不同类型存储器(例如易失性存储器120等)的协议的主机装置105的兼容性。例如,非易失性存储器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路关联映射,其允许来自一组非易失性存储器单元的数据被存储在易失性存储器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组易失性存储器单元中的一组存储了所请求的数据,如图4和5中所描述的),从而可以将其传送到主机装置105。术语“命中”可用于指易失性存储器120存储主机装置105请求的数据的情况。如果n组一或多个易失性存储器单元未存储所请求的数据(例如,n组易失性存储器单元存储除了目标组非易失性存储器单元之外的一组非易失性存储器单元的数据),则接口控制器115可以将所请求的数据从非易失性存储器125传送到缓冲器135-a(例如,响应于确定n组易失性存储器单元未存储所请求的数据,如参考图4和5所描述),从而可以将其传送到主机装置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.图2示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的存储器子系统200的实例。存储器子系统200可以是参考图1描述的存储器子系统110的实例。因此,如参考图1所描述,存储器子系统200可以与主机装置交互。存储器子系统200可以包括接口控制器202、易失性存储器204和非易失性存储器206,如参考图1所描述,它们可以分别是接口控制器115、易失性存储器120和非易失性存储器125的实例。因此,如参考图1所描述,接口控制器202可以代表主机装置与易失性存储器204和非易失性存储器206接口。例如,接口
控制器202可以操作易失性存储器204作为非易失性存储器206的高速缓存。将易失性存储器204操作为高速缓存可以允许子系统提供非易失性存储器206的好处(例如,非易失性、高密度存储),同时保持与支持与非易失性存储器206不同的协议的主机装置的兼容性。
37.在图2中,部件之间的虚线表示数据流或数据通信路径,部件之间的实线表示命令流或命令通信路径。在一些情况下,存储器子系统200是可以包括在电子装置中的多个相似或相同的子系统中的一个。在一些实例中,每个子系统可以被称为切片,并且可以与主机装置的相应通道相关联。
38.非易失性存储器206可以配置为作为主机装置的主存储器(例如,用于长期数据存储的存储器)来操作。在一些情况下,非易失性存储器206可以包括一或多个feram单元阵列。每个feram单元可以包括选择部件和铁电电容器,并且可以通过向一或多条存取线(例如字线、板线和数字线)施加适当的电压来存取。在一些实例中,可以例如同时或同步感测与激活的字线耦合的feram单元的子集,而不必感测与激活的字线耦合的所有feram单元。因此,feram阵列的页面大小可以不同于(例如,小于)dram的页面大小。在存储器装置的上下文中,页面可以指一行中的存储器单元(例如,具有公共行地址的一组存储器单元),页面大小可以指一行中的存储器单元或列地址的数量,或者在访问操作期间访问的列地址的数量。替代地,页面大小可以指由各种接口处理的数据的大小。在一些情况下,不同的存储器装置类型可以具有不同的页面大小。例如,dram的页面大小(例如2kb)可以是非易失性存储器(例如feram)的页面大小(例如64b)的超集。
39.由于单个的feram单元可能比单个的dram单元需要更多的功率来读取或写入,所以feram阵列的较小页面大小可以提供各种效率优势。例如,对于feram阵列来说,较小的页面大小可以促进有效的能量使用,因为当相关的信息变化很小时,可以激活较少数量的feram单元。在一些实例中,根据利用feram操作的数据和命令的性质,feram单元阵列的页面大小可以例如动态地(例如,在feram单元阵列的操作期间)变化。
40.尽管单个的feram单元可能比单个的dram单元需要更多的功率来读取或写入,但是feram单元可以在没有外部电源的情况下保持其存储的逻辑状态一段延长的时间,因为feram单元中的铁电材料可以在没有电场的情况下保持非零的电极化。因此,在非易失性存储器206中包括feram阵列可以提供相对于易失性存储器单元(例如,易失性存储器204中的dram单元)的效率优势,因为它可以减少或消除执行刷新操作的需求。
41.易失性存储器204可以配置为用作非易失性存储器206的高速缓存。在一些情况下,易失性存储器204可以包括一或多个dram单元阵列。每个dram单元可以包括电容器,该电容器包括电介质材料以存储代表可编程状态的电荷。易失性存储器204的存储器单元可以逻辑分组或布置成一或多个存储体(本文称为“存储体”)。例如,易失性存储器204可以包括十六个存储体。存储体的存储器单元可以布置成交叉的列和行的网格或阵列,并且可以通过向该存储器单元的数字线(例如,列线)和字线(例如,行线)施加适当的电压来访问或刷新每个存储器单元。存储体的行可以指页面,页面大小可以指一行中的列或存储器单元的数量。如上所述,易失性存储器204的页面大小可以不同于(例如,大于)非易失性存储器206的页面大小。
42.接口控制器202可以包括用于与主机装置、易失性存储器204和非易失性存储器206等其它装置接口(例如,通信)的各种电路。例如,接口控制器202可以包括数据总线接口
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耦合的各种总线接口可以支持不同的数据量或数据速率。
43.数据总线接口208可以与数据总线260、事务总线222和缓冲器电路224耦合。数据总线接口208可以配置为通过数据总线260发送和接收数据,并通过事务总线222发送和接收控制信息(例如,确认/否定确认)或元数据。数据总线接口208还可以配置为在数据总线260和缓冲器电路224之间传送数据。数据总线260和事务总线222可以与接口控制器202和主机装置耦合,使得在接口控制器202和主机装置之间建立导电路径。在一些实例中,事务总线222的引脚可以被称为数据掩码反转(dmi)引脚。尽管示出了一条数据总线260和一条事务总线222,但是可以有任何数量的数据总线260和任何数量的事务总线222与一或多个数据总线接口208耦合。
44.c/a总线接口210可以与c/a总线226和解码器228耦合。c/a总线接口210可以配置为通过c/a总线226发送和接收命令和地址。通过c/a总线226接收的命令和地址可以与通过数据总线260接收或发送的数据相关联。c/a总线接口210还可以配置为向解码器228发送命令和地址,使得解码器228可以解码命令并将解码的命令和相关联的地址中继到命令电路230。
45.数据总线接口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之间建立导电路径。
46.数据总线接口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之间建立导电路径。
47.除了用于与耦合装置通信的总线和总线接口之外,接口控制器202可以包括用于操作作为主存储器的非易失性存储器206和作为高速缓存的易失性存储器204的电路。例
如,接口控制器202可以包括命令电路230、缓冲器电路224、高速缓存管理电路244、一或多个引擎246以及一或多个调度器248。
48.命令电路230可以与缓冲器电路224、解码器228、高速缓存管理电路244和调度器248以及其它部件耦合。命令电路230可以配置为从解码器228接收命令和地址信息,并将命令和地址信息存储在队列250中。命令电路230可以包括逻辑262,该逻辑处理命令信息(例如,来自主机装置)和来自其它部件(例如,高速缓存管理电路244、缓冲器电路224)的存储信息,并使用该信息为调度器248生成一或多个命令。命令电路230还可以配置为向高速缓存管理电路244传送地址信息(例如,地址位)。在一些实例中,逻辑262可以是配置为作为有限状态机(fsm)操作的电路。
49.缓冲器电路224可以与数据总线接口208、命令电路230、存储器接口电路234和存储器接口电路234耦合。缓冲器电路224可以包括用于易失性存储器204的至少一些存储体(如果不是每个存储体的话)的一组一或多个缓冲器电路。缓冲器电路224还可以包括用于访问缓冲器电路的部件(例如,存储器控制器)。在一个实例中,易失性存储器204可以包括十六个存储体,并且缓冲器电路224可以包括十六组缓冲器电路。每组缓冲器电路可以配置为存储来自易失性存储器204的相应存储体的数据或为该易失性存储器的相应存储体存储数据(或两者皆有)。作为实例,用于存储体0(bk0)的缓冲器电路组可以配置为存储来自易失性存储器204的第一存储体的数据或为该易失性存储器的第一存储体存储数据(或两者皆有),并且用于存储体15(bk15)的缓冲器电路可以配置为存储来自易失性存储器204的第十六存储体的数据或为该易失性存储器的第十六存储体存储数据(或两者皆有)。
50.缓冲器电路224中的每组缓冲器电路可以包括一对缓冲器。该对缓冲器可以包括一个缓冲器(例如,开放页面数据(opd)缓冲器),其配置为存储来自主机装置的访问命令(例如,存储命令或检索命令)所针对的数据,以及另一个缓冲器(例如,受害者页面数据(vpd)缓冲器),其配置为存储由访问命令导致的驱逐过程的数据。例如,bk0的缓冲器电路组可以包括缓冲器218和缓冲器220,它们可以分别是缓冲器135-a和135-b的实例。缓冲器218可以配置为存储作为来自主机装置的访问命令所针对的bk0数据。并且缓冲器220可以配置为存储作为由访问命令触发的驱逐过程的一部分从bk0传送的数据。缓冲器电路组中的每个缓冲器可以配置有对应于易失性存储器204的页面大小的大小(例如,存储容量)。例如,如果易失性存储器204的页面大小是2kb,则每个缓冲器的大小可以是2kb。因此,在一些实例中,缓冲器的大小可以等于易失性存储器204的页面大小。
51.高速缓存管理电路244可以与命令电路230、引擎246和调度器248以及其它部件耦合。高速缓存管理电路244可以包括易失性存储器的一或多个存储体(例如,每个存储体)的高速缓存管理电路组。作为实例,高速缓存管理电路244可以包括用于bk0至bk15的十六个高速缓存管理电路组。每个高速缓存管理电路组可以包括两个存储器阵列,这两个存储器阵列可以配置为存储易失性存储器204的存储信息。例如,bk0的高速缓存管理电路组可以包括存储器阵列252(例如,cdram标签阵列(cdt-ta))和存储器阵列254(例如,cdram有效(cdt-v)阵列),其可以配置为存储bk0的存储信息。在一些实例中,存储器阵列也可以被称为阵列或缓冲器。在一些情况下,存储器阵列可以是或包括易失性存储器单元,例如sram单元。
52.存储信息可以包括与易失性存储器204相关联的内容信息、有效性信息或脏信息
(或其任何组合)。内容信息(也可以被称为标签信息或地址信息)可以指示哪些数据存储在一组易失性存储器单元中。例如,一组一或多个易失性存储器单元的内容信息(例如,标签地址)可以指示哪组一或多个非易失性存储器单元当前具有存储在一组一或多个易失性存储器单元中的数据。有效性信息可以指示存储在一组易失性存储器单元中的数据是实际数据(例如,具有预期顺序或形式的数据)还是占位符数据(例如,随机或虚拟的数据,没有预期或重要的顺序)。并且脏信息可以指示存储在易失性存储器204的一组一或多个易失性存储器单元中的数据是否不同于非易失性存储器206的一组一或多个非易失性存储器单元中的对应的数据。例如,脏信息可以指示存储在一组易失性存储器单元中的数据是否已经相对于存储在非易失性存储器206中的数据被更新。
53.存储器阵列252可以包括存储易失性存储器204的相关联的存储体(例如,bk0)的存储信息(例如,内容和有效性信息)的存储器单元。存储信息可以以每个页面为基础存储(例如,相关联的非易失性存储体的每个页面可以有相应的存储信息)。接口控制器202可以通过引用存储器阵列252中的存储信息来检查易失性存储器204中所请求的数据。例如,接口控制器202可以从主机装置接收对非易失性存储器206中的一组非易失性存储器单元中的数据的检索命令。接口控制器202可以使用访问请求所针对的一组一或多个地址位(例如,一组行地址位)来引用存储器阵列252中的存储信息。例如,使用组关联映射,接口控制器202可以引用存储器阵列252中的内容信息来确定哪组易失性存储器单元(如果有的话)存储了所请求的数据。
54.除了存储易失性存储器单元的内容信息之外,存储器阵列252还可以存储有效性信息,该有效性信息指示一组易失性存储器单元中的数据是实际数据(也被称为有效数据)还是随机数据(也被称为无效数据)。例如,易失性存储器204中的易失性存储器单元最初可以存储随机数据,并且继续这样做,直到用来自主机装置或非易失性存储器206的数据写入易失性存储器单元。为了跟踪哪个数据是有效的,存储器阵列252可以配置为当实际数据被存储在一组易失性存储器单元中时,为每组易失性存储器单元设置一位。该位可以被称为有效位或有效标志。如同内容信息一样,存储在存储器阵列252中的有效性信息可以基于每个页面来存储。因此,在一些实例中,每个有效性位可以指示存储在相关联的页面中的数据的有效性。
55.存储器阵列254可以类似于存储器阵列252,并且还可以包括存储与存储器阵列252相关联的易失性存储器204的存储体(例如,bk0)的有效性信息的存储器单元。然而,存储在存储器阵列254中的有效性信息可以基于子块来存储,而不是基于存储器阵列252的每个页面。例如,存储在存储器阵列254的存储器单元中的有效性信息可以指示一组(例如,页)易失性存储器单元中的易失性存储器单元子集的数据的有效性。作为实例,存储器阵列254中的有效性信息可以指示存储在易失性存储器204的bk0中的一页数据中的每个数据子集(例如,64b)的有效性。在存储器阵列252中以每个页面为基础存储内容信息和有效性信息可以允许接口控制器202快速且有效地确定易失性存储器204中的数据是命中或未命中。在子块基础上存储有效性信息可以允许接口控制器202确定在驱逐过程期间在非易失性存储器206中保留哪些数据子集。
56.每个高速缓存管理电路组还可以包括与命令电路230、引擎246、存储器接口电路234、存储器接口电路240和用于该高速缓存管理电路组的存储器阵列以及其它部件耦合的
相应的寄存器对。例如,高速缓存管理电路组可以包括第一寄存器(例如,可以是开放页标签(opt)寄存器的寄存器256),其配置为从存储器阵列252或调度器248-b或两者接收存储信息(例如,标签信息、有效性信息或脏信息的一或多位)。高速缓存管理电路组还可以包括第二寄存器(例如,可以是牺牲页标签(vpt)寄存器的寄存器258),其配置为从存储器阵列254和调度器248-a或二者接收存储信息。寄存器256和寄存器258中的信息可以被传送到命令电路230和引擎246,以使得这些部件能够进行决策。例如,命令电路230可以基于来自寄存器256的内容信息发布用于读取非易失性存储器206或易失性存储器204的命令。
57.引擎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。
58.引擎246-b可以与寄存器258和调度器248-a耦合。引擎246-b可以配置为从寄存器258接收存储信息,并基于存储信息向调度器248-a发出命令。例如,引擎246-b可以向调度器248-a发出命令,以启动或促进脏数据从缓冲器220到非易失性存储器206的传送(例如,作为驱逐过程的一部分)。如果缓冲器220保存从易失性存储器204传送的一组数据(例如,受害者数据),则引擎246-b可以指示缓冲器220中的一组数据的哪一或多个子集(例如,哪一个64b)应该被传送到非易失性存储器206。
59.调度器248-a可以与接口控制器202的各种部件耦合,并且可以通过向存储器接口电路234发出命令来促进访问非易失性存储器206。调度器248-a发出的命令可以基于来自命令电路230、引擎246-a、引擎246-b或这些部件的组合的命令。类似地,调度器248-b可以与接口控制器202的各种部件耦合,并且可以通过向存储器接口电路240发出命令来促进访问易失性存储器204。调度器248-b发出的命令可以基于来自命令电路230或引擎246-a或两者的命令。
60.存储器接口电路234可以通过数据总线接口212和c/a总线接口214中的一或多个与非易失性存储器206通信。例如,存储器接口电路234可以提示c/a总线接口214将存储器接口电路234通过c/a总线236发出的命令中继到非易失性存储器206中的本地控制器。并且存储器接口电路234可以通过数据总线232向非易失性存储器206发送数据或者从该非易失性存储器接收数据。在一些实例中,由存储器接口电路234发出的命令可以被非易失性存储器206支持,但是不被易失性存储器204支持(例如,由存储器接口电路234发出的命令可以不同于由存储器接口电路240发出的命令)。
61.存储器接口电路240可以通过数据总线接口216和c/a总线接口264中的一或多个与易失性存储器204通信。例如,存储器接口电路240可以提示c/a总线接口264将存储器接口电路240通过c/a总线242发出的命令中继到易失性存储器204的本地控制器。并且存储器接口电路240可以通过一或多条数据总线238向易失性存储器204发送数据或者从该易失性存储器接收数据。在一些实例中,由存储器接口电路240发出的命令可以被易失性存储器
204支持,但是不被非易失性存储器206支持(例如,由存储器接口电路240发出的命令可以不同于由存储器接口电路234发出的命令)。
62.接口控制器202的部件可以一起操作作为主存储器的非易失性存储器206和作为高速缓存的易失性存储器204。这种操作可以由从主机装置接收的一或多个访问命令(例如,读取/检索命令/请求和写入/存储命令/请求)来提示。
63.在一些实例中,接口控制器202可以从主机装置接收存储命令。存储命令可以通过c/a总线226接收,并通过一或多个c/a总线接口210和解码器228传送到命令电路230。存储命令可以包括或者伴随以非易失性存储器206的存储器地址为目标的地址位。要存储的数据可以通过数据总线260接收,并通过数据总线接口208传送到缓冲器218。在直写模式下,接口控制器202可以将数据传送到非易失性存储器206和易失性存储器204。在回写模式中,接口控制器202可以仅将数据传送到易失性存储器204。在任一模式下,接口控制器202可以首先检查易失性存储器204是否具有可用于存储数据的存储器单元。为此,命令电路230可引用存储器阵列252(例如,使用一组存储器地址位)来确定与存储器地址相关联的n组(例如,页)易失性存储器单元中的一或多组是否为空(例如,存储随机或无效数据)。在一些情况下,易失性存储器204中的一组易失性存储器单元可以被称为线或高速缓存线。
64.如果n组相关联的易失性存储器单元中的一组可用于存储信息,则接口控制器202可以将数据从缓冲器218传送到易失性存储器204,用于存储在一组易失性存储器单元中。但是如果没有相关联的易失性存储器单元组是空的,则接口控制器202可以发起驱逐过程,以便为易失性存储器204中的数据腾出空间。驱逐过程可以包括将n组相关联的易失性存储器单元中的一组中的旧数据(例如,现有数据)传送到缓冲器220。旧数据的脏信息也可以被传送到存储器阵列254或寄存器258,用于识别旧数据的脏子集。在旧数据存储在缓冲器220中之后,新数据可以从缓冲器218传送到易失性存储器204,旧数据可以从缓冲器220传送到非易失性存储器206。在一些情况下,旧数据的脏子集被传送到非易失性存储器206,干净子集(例如,未修改的子集)被丢弃。引擎246-b可以基于在驱逐过程期间传送(例如,从易失性存储器204)到存储器阵列254或寄存器258的脏信息来识别脏子集。
65.在另一实例中,接口控制器202可以从主机装置接收检索命令。检索命令可以通过c/a总线226接收,并通过一或多个c/a总线接口210和解码器228传送到命令电路230。检索命令可以包括以非易失性存储器206的存储器地址为目标的地址位。在试图访问非易失性存储器206的目标存储器地址之前,接口控制器202可以检查易失性存储器204是否存储了数据。为此,命令电路230可以引用存储器阵列252(例如,使用一组存储器地址位)来确定与存储器地址相关联的n组易失性存储器单元中的一或多组是否存储了所请求的数据。如果所请求的数据存储在易失性存储器204中,则接口控制器202可以将所请求的数据传送到缓冲器218,以便通过数据总线260传送到主机装置。
66.如果所请求的数据没有存储在易失性存储器204中,则接口控制器202可以从非易失性存储器206中检索数据,并将数据传送到缓冲器218,以便通过数据总线260传送到主机装置。附加地,接口控制器202可以将所请求的数据从缓冲器218传送到易失性存储器204,使得在随后的检索操作期间可以以更低的延迟来访问数据。然而,在传送所请求的数据之前,接口控制器202可以首先确定n组相关联的易失性存储器单元中的一或多组是否可用于存储所请求的数据。接口控制器202可以通过与相关的高速缓存管理电路组通信来确定n组
相关联的易失性存储器单元的可用性。如果一组相关联的易失性存储器单元可用,则接口控制器202可以将缓冲器218中的数据传送到易失性存储器204,而不执行驱逐过程。否则,在执行驱逐过程之后,接口控制器202可以将数据从缓冲器218传送到易失性存储器204。
67.存储器子系统200可以以一或多种配置实现,包括单芯片版本和多芯片版本。多芯片版本可以包括存储器子系统200的一或多个组成部分,包括接口控制器202、易失性存储器204和非易失性存储器206(以及其它组成部分或组成部分的组合),在与包括存储器子系统200的一或多个其它组成部分的芯片单独的芯片上。例如,在一个多芯片版本中,相应的单独的芯片可以包括接口控制器202、易失性存储器204和非易失性存储器206中的每一个。相反,单芯片版本可以在单个芯片上包括接口控制器202、易失性存储器204和非易失性存储器206。
68.图3示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的过程流程300的实例。过程流程300可以是存储操作的过程流程的实例。过程流程300可以由参考图1描述的接口控制器115或参考图2描述的接口控制器202来实现。为了便于参考,参考存储器子系统200来描述过程流程300。例如,除了其它部件之外,过程流程300的各方面可以由接口控制器来实现。附加地或替代地,过程流程300的各方面可以被实现为存储在存储器中的指令(例如,存储在易失性存储器120和/或非易失性存储器125中的固件)。例如,当由控制器(例如,接口控制器115)执行时,指令可以使控制器执行过程流程300的操作。
69.可以实现过程流程300的替代实例,其中,一些操作以不同于所描述的顺序执行或者根本不执行。在一些情况下,操作可能包括下面没有提到的功能,或者可能添加附加的操作。
70.在305,接口控制器202可以从主机装置接收存储命令,该存储命令指示接口控制器202将数据存储在非易失性存储器206中。存储命令可以包括或伴随有存储器地址,该存储器地址指示存储命令所针对的一组非易失性存储器单元(例如,数据将被写入的一组非易失性存储器单元)。存储命令和存储器地址可以由命令电路230通过一或多个c/a总线226、c/a总线接口210和解码器228中的一或多个来接收。在310,接口控制器202可以将数据传送到缓冲器218,该缓冲器的大小(例如,存储容量)对应于或等于易失性存储器204的页面大小。在一些实例中,命令电路230可以发起和促进数据到缓冲器218的传送(例如,基于或响应于接收到的存储命令)。替代地,数据可以通过数据总线接口208自动传送。
71.在315,接口控制器202可以确定与非易失性存储器地址相关联的n组(例如,十六组)易失性存储器单元。为此,命令电路230可以选择一组非易失性存储器地址位,并将这些位传送到高速缓存管理电路组,使得寄存器256可以返回与非易失性存储器地址相关的存储信息。例如,寄存器256可以返回由存储器阵列252存储的存储信息,该存储信息可以基于一组地址位来引用。由寄存器256返回的存储信息可以包括内容信息(例如,标签地址),该内容信息指示n组相关联的易失性存储器单元中的哪一组(如果有的话)可用于存储所提供的数据。如果一组易失性存储器单元存储无效数据(例如,随机数据),则一组易失性存储器单元被认为可用于存储数据。因此,确定一组相关联的易失性存储器单元是否可用可以包括引用存储在存储器阵列252中的一组易失性存储器单元的有效信息。在一些情况下,一组相关联的可用存储器单元可被称为“写命中”。
72.在320,接口控制器202可以确定n组相关联的易失性存储器单元中的一或多组是
否可用于存储数据。如所讨论的,接口控制器202可以基于n组相关联的易失性存储器单元的存储信息来确定n则相关联的易失性存储器单元的可用性。如果n组相关联的存储器单元中的一组可用,则在325,接口控制器可以将所提供的数据从缓冲器218传送到易失性存储器204,用于存储在可用的一组易失性存储器单元中。
73.在330,接口控制器202可以更新用于存储所提供数据的一组易失性存储器单元的存储信息。例如,接口控制器202可以在存储器阵列252中更新一组易失性存储器单元的内容信息和有效性信息。在一些实例中(例如,当接口控制器以直写模式操作时),在330,接口控制器202可以将所提供的数据传送到目标组非易失性存储器单元,以存储在非易失性存储器206中。
74.在320,如果接口控制器确定n组相关联的存储器单元都不可用(称为“写未命中”的情况),则接口控制器202可以启动(例如,通过引擎246-a和调度器248-b)驱逐过程340。例如,在345,接口控制器202可以选择n组相关联的易失性存储器单元中的一组来驱逐。在350,接口控制器202可以将受害者数据从被选择用于驱逐的一组易失性存储器单元传送到缓冲器220。引擎246-a和调度器248-b可以促进受害者数据从易失性存储器204到缓冲器220的传送。在一些实例中,接口控制器202还可以将一组易失性存储器单元的存储信息(例如,脏信息)传送到寄存器258。在将受害者数据传送到缓冲器220之后,接口控制器202可以继续并行操作。例如,接口控制器202可以执行325和335之间的操作,同时执行驱逐过程340的剩余操作。
75.在355,接口控制器202可以确定受害者数据的哪些子集(例如,哪些32b或64b)是脏的(例如,包括脏数据)。为此,接口控制器202(例如,使用引擎246-b)可以引用受害者数据子集的脏信息(例如,存储在寄存器258中)。如上所述,脏数据可以指与非易失性存储器206中的数据不一致的数据。例如,脏数据可以是自从存储在非易失性存储器206中以来已经在易失性存储器204中被修改的数据。或者脏数据可以是只被写入易失性存储器204(而不是非易失性存储器206)的数据。
76.在360,接口控制器202可以将脏受害者数据的子集从缓冲器220传送到非易失性存储器206。例如,脏的受害者数据的子集可以被传送到与受害者数据相关联的一组非易失性存储器单元。接口控制器202可以通过引用一组易失性存储器单元的内容信息(例如,存储在存储器阵列252中的标签信息)来确定一组正确的非易失性存储器单元。可以丢弃干净的受害者数据(例如,与非易失性存储器206中的对应的数据一致的数据)。在一些实例中,引擎246-a和调度器248-a可以促进脏受害者数据从缓冲器220到非易失性存储器206的传送。因此,接口控制器202可以满足来自主机装置的存储请求。
77.图4示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的过程流程400的实例。过程流程400可以是检索操作的过程流程的实例。过程流程400可以由参考图1描述的接口控制器115或参考图2描述的接口控制器202来实现。为了便于参考,参考存储器子系统200来描述过程流程400。例如,除了其它部件之外,过程流程400的各方面可以由接口控制器来实现。附加地或替代地,过程流程400的各方面可以被实现为存储在存储器中的指令(例如,存储在易失性存储器120和/或非易失性存储器125中的固件)。例如,当由控制器(例如,接口控制器115)执行时,指令可以使控制器执行过程流程400的操作。
78.可以实现过程流程400的替代实例,其中,一些操作以不同于所描述的顺序执行或
者根本不执行。在一些情况下,操作可能包括下面没有提到的功能,或者可能添加附加的操作。
79.在405,接口控制器202可以从主机装置接收指示接口控制器202从非易失性存储器206检索数据的检索命令。检索命令可以包括或伴随有存储器地址,该存储器地址指示检索命令所针对的一组非易失性存储器单元(例如,要从中读取数据的一组非易失性存储器单元)。检索命令和存储器地址可以由命令电路230通过一或多个c/a总线226、c/a总线接口210和解码器228接收。
80.在410,接口控制器202可以确定与非易失性存储器地址相关联的n组(例如,十六组)易失性存储器单元。为此,命令电路230可以选择一组非易失性存储器地址位,并将这些位传送到高速缓存管理电路组,使得寄存器256可以返回与非易失性存储器地址相关的存储信息。例如,寄存器256可以返回由存储器阵列252存储的存储信息,该存储信息可以基于一组地址位来引用。由寄存器256返回的存储信息可以包括内容信息(例如,标签地址),该内容信息指示n组相关联的易失性存储器单元中的哪一组(如果有的话)存储了所请求的数据。
81.在415,接口控制器202可以确定n组相关联的易失性存储器单元中的一或多组是否存储了所请求的数据。如所讨论的,接口控制器202可以基于n组相关联的易失性存储器单元的存储信息来确定n组相关联的易失性存储器单元是否存储了所请求的数据。如果n组相关联的易失性存储器单元中的一组存储所请求的数据,则在420,接口控制器202可以将所请求的数据从易失性存储器204传送到缓冲器218(例如,通过读取一组存储器单元并通过数据总线238、数据总线接口216和存储器接口电路240传送所请求的数据)。然后,在425,接口控制器202可以将所请求的数据从缓冲器218传送到主机装置(例如,使用数据总线接口208和数据总线260)。
82.在415,如果接口控制器202确定n组相关联的易失性存储器单元中没有一组存储所请求的数据,则在430,接口控制器202可以将所请求的数据从非易失性存储器206传送到缓冲器218。例如,接口控制器202可以提示从目标组非易失性存储器单元中读取所请求的数据,并通过数据总线232、数据总线接口212和存储器接口电路234中的一或多个传送到缓冲器218。接口控制器202可以继续进行425和435的操作。例如,在435,接口控制器202可以确定n组相关联的易失性存储器单元中的一或多组是否可用于存储所请求的数据(例如,用于将来的低延迟检索)。
83.如果n组相关联的易失性存储器单元中的一组可用,则在440,接口控制器可以将所请求的数据从缓冲器218传送到易失性存储器204,用于存储在可用的一组易失性存储器单元中。然后,在445,接口控制器202可以更新一组易失性存储器单元的存储信息,数据被写入一组易失性存储器单元。
84.例如,接口控制器202可以在存储器阵列252中更新一组易失性存储器单元的内容信息和有效性信息。在435,如果接口控制器确定n组相关联的存储器单元都不可用,则在450,接口控制器202可以发起驱逐过程,例如驱逐过程340。在驱逐过程340将受害者数据从一组相关联的易失性存储器单元移动到缓冲器220之后,接口控制器202可以将所请求的数据从缓冲器218传送到易失性存储器204中的一组易失性存储器单元。然后,在445,存储器控制器可以更新所请求的数据被写入其中的一组易失性存储器单元的存储信息。因此,接
口控制器202可以满足来自主机装置的检索请求。
85.图5示出了根据本文公开的实例的支持存储器子系统中的高速缓存管理的存储器子系统502的框图500。存储器子系统502可以是分别参考图1和2描述的存储器子系统110或存储器子系统200的各方面的实例。因此,存储器子系统可以与主机装置、易失性存储器和非易失性存储器耦合。存储器子系统502可以包括通信模块505、缓冲器管理器510、易失性存储器管理器515、非易失性存储器管理器520、数据管理器525和存储信息管理器530。这些模块中的每一个都可以包括配置为执行本文描述的功能的电路。这些模块中的每一个可以直接或间接地相互通信(例如,通过一或多个总线或其它导电连接)。
86.存储器子系统502可以配置为响应于来自主机装置的访问命令来执行访问操作。在第一实例中,存储器子系统502可以配置为服务来自主机装置的存储命令。例如,通信模块505可以配置为从主机装置接收命令以将数据写入非易失性存储器的存储器地址。存储器地址可以与易失性存储器组中的一组存储器单元相关联。一组存储器单元可以是与存储器地址相关联的n组易失性存储器单元中的一组(例如,在组关联映射方案中)。在一些实例中,通信模块505包括参考图2描述的接口控制器202的部件。例如,通信模块505可以包括数据总线260、事务总线222、数据总线接口208、c/a总线226、c/a总线接口210、解码器228或命令电路230以及其它部件的各方面。
87.缓冲器管理器510可以配置为至少部分基于命令(例如,响应于命令)将数据存储在缓冲器中。在一些实例中,缓冲器是缓冲器218的实例。因此,缓冲器可以具有对应于(例如,等于)易失性存储器的页面大小的存储容量。缓冲器管理器510还可以配置为在将数据存储在缓冲器中之后,确定易失性存储器的存储体中的一组存储器单元的存储信息(例如,内容信息、有效性信息)。在一些实例中,缓冲器管理器510包括参考图2描述的接口控制器202的部件。例如,缓冲管理器510可以包括命令电路230、高速缓存管理电路244和缓冲器电路224以及其它部件的各方面。
88.易失性存储器管理器515可以配置为至少部分基于一组存储器单元的存储信息,将数据从缓冲器传送到易失性存储器的存储体中的一组存储器单元。在一些实例中,易失性存储器管理器515包括参考图2描述的接口控制器202的部件。例如,易失性存储器管理器515可以包括命令电路230、引擎246-a、调度器248-b、缓冲器电路224和存储器接口电路240以及其它部件的各方面。
89.在一些实例中,缓冲器管理器510可以配置为至少部分基于存储信息来确定一组存储器单元是否存储第二数据。如果非易失性存储器管理器520确定一组存储器单元存储第二数据,则非易失性存储器管理器520可以配置为至少部分基于(例如,响应于)非易失性存储器管理器520确定一组存储器单元存储第二数据,将第二数据的子集(例如,32b或64b块)传送到非易失性存储器。在一些实例中,非易失性存储器管理器520包括参考图2描述的接口控制器202的部件。例如,非易失性存储器管理器520可以包括命令电路230、引擎246-b、调度器248-a、缓冲器电路224和存储器接口电路234以及其它部件的各方面。
90.在一些实例中,存储器子系统502的接口控制器包括第二缓冲器。在一些实例中,第二缓冲器是缓冲器220的实例。因此,第二缓冲器可以具有对应于(例如,等于)易失性存储器的页面大小的存储容量。易失性存储器管理器515可以配置为将第二数据从一组存储器单元传送到第二缓冲器,将数据从缓冲器传送到一组存储器单元。数据管理器525可以配
置为确定第二数据的子集是否不同于存储在非易失性存储器中的对应的数据(例如,数据管理器525可以配置为确定第二数据的子集是否脏)。在一些实例中,数据管理器525包括参考图2描述的接口控制器202的部件。例如,数据管理器525可以包括高速缓存管理电路244、引擎246-b和调度器248-a、缓冲器电路224以及其它部件的各方面。在一些实例中,(例如,如果数据管理器525确定数据的子集不同于对应的数据),非易失性存储器管理器520可以配置为至少部分基于(例如,响应于)确定第二数据的子集不同于对应的数据,发起写操作以将来自第二缓冲器的第二数据的子集存储在非易失性存储器中。因此,在一些实例中,非易失性存储器管理器520可以包括引擎246-b、调度器248-a和存储器接口电路234以及其它部件的各方面。
91.在一些实例中,存储器子系统502的接口控制器包括存储易失性存储器的存储体中的存储器单元子集的存储信息的阵列。在一些实例中,该阵列是存储器阵列254的实例。缓冲器管理器510可以配置为选择包括在命令中的一组地址位。在一些实例中,一组地址位是存储器地址的一部分。存储信息管理器530可以配置为至少部分基于一组地址位来引用存储易失性存储器的存储体中的存储器单元子集的存储信息的阵列。在这样的实例中,将第二数据的子集传送到非易失性存储器可以至少部分基于存储第二数据的子集的存储器单元的子集的存储信息。在一些实例中,存储信息管理器530包括参考图2描述的接口控制器202中包括的部件。例如,存储信息管理器530可以包括命令电路230和高速缓存管理电路244以及其它部件的各方面。
92.在一些实例中,缓冲器管理器510配置为至少部分基于存储信息(例如,基于内容和/或有效性信息)来确定一组存储器单元可用于存储数据。缓冲区管理器510还可以配置为从缓冲区读取数据。易失性存储器管理器515可以配置为发起写操作,以将数据存储在易失性存储器的一组存储器单元中。
93.在一些实例中,存储器子系统502的接口控制器包括存储易失性存储器的存储体的存储信息的阵列。在一些实例中,该阵列是存储器阵列252的实例。在一些实例中,缓冲器管理器510配置为选择包括在命令中的一组地址位。在一些实例中,一组地址位是存储器地址的一部分。存储信息管理器530可以配置为至少部分基于一组地址位来引用存储易失性存储器的存储体的存储信息的阵列。在这种情况下,缓冲器管理器510可以配置为至少部分基于引用阵列来确定存储信息。
94.在一些实例中(例如,在直写模式下),非易失性存储器管理器520可以配置为至少部分基于来自主机装置的命令将数据从缓冲器传送到非易失性存储器。非易失性存储器管理器520还可以配置为发起写操作以将数据存储在存储器地址。
95.如上所述,存储器子系统502可以配置为响应于来自主机装置的访问命令来执行访问操作。在第二实例中,存储器子系统502可以配置为服务来自主机装置的检索命令。例如,通信模块505可以配置为从主机装置接收命令以从非易失性存储器的存储器地址读取数据。存储器地址可以与易失性存储器组中的一组存储器单元相关联。一组存储器单元可以是与存储器地址相关联的n组易失性存储器单元中的一组(例如,根据组关联映射方案)。缓冲器管理器510可以配置为确定易失性存储器的存储体中的一组存储器单元的存储信息(例如,响应于该命令)。缓冲区管理器510还可以配置为从易失性存储器或非易失性存储器并且至少部分基于一组存储器单元的存储信息,将数据传送到接口控制器中的缓冲区(例
如,缓冲区218)。缓冲器的存储容量可以对应于易失性存储器的页面大小。
96.在一些实例中,缓冲器管理器510可以配置为至少部分基于存储信息来确定易失性存储器中的一组存储器单元是否存储数据。在这样的实例中,易失性存储器管理器515可以配置为至少部分基于一组存储器单元存储数据的确定,将数据从易失性存储器传送到缓冲器。通信模块505可以配置为将数据从缓冲器传送到主机装置。
97.在一些实例中,缓冲器管理器510可以配置为至少部分基于存储信息来确定易失性存储器中的一组存储器单元是否存储数据。在这样的实例中,非易失性存储器管理器520可以配置为至少部分基于一组存储器单元未存储数据的确定,将数据从非易失性存储器传送到缓冲器。通信模块505可以配置为将数据从缓冲器传送到主机装置。
98.在一些实例中,存储器子系统502的接口控制器包括第二缓冲器。在一些实例中,第二缓冲器是缓冲器220的实例。因此,缓冲器可以具有对应于易失性存储器的页面大小的存储容量。缓冲器管理器510可以配置为至少部分基于存储信息来确定易失性存储器中的一组存储器单元是否存储第二数据。非易失性存储器管理器520可以配置为至少部分基于确定一组存储器单元存储第二数据来将数据从非易失性存储器传送到缓冲器。缓冲器管理器510可以配置为将第二数据从易失性存储器中的一组存储器单元传送到接口控制器中的第二缓冲器。在一些实例中,非易失性存储器管理器520配置为至少部分基于第二数据的子集不同于存储在非易失性存储器中的对应的数据,将第二数据的子集从第二缓冲器传送到非易失性存储器。易失性存储器管理器515可以配置为将数据从缓冲器传送到易失性存储器中的一组存储器单元。
99.在一些实例中,缓冲器管理器510可以配置为选择包括在命令中的一组地址位。存储信息管理器530可以配置为至少部分基于一组地址位来引用存储易失性存储器的存储体的存储信息的阵列,其中,存储信息至少部分基于引用该阵列来确定。
100.如上所述,存储器子系统502可以配置为响应于来自主机装置的访问命令来执行访问操作。在第三实例中,存储器子系统可以包括与接口控制器耦合的feram和与接口控制器耦合的dram。接口控制器可以包括sram缓冲器,其与dram和feram耦合,并且具有对应于dram的页面大小的存储容量。通信模块505可以配置为从主机装置(例如,soc或处理器)接收命令以访问feram的存储器地址。存储器地址可以与dram的存储体中的一组存储器单元相关联。缓冲器管理器510可以配置为将与命令相关联的数据(例如,请求的数据或提供的数据)存储在sram缓冲器中。缓冲器管理器510还可以配置为至少部分基于该命令从sram缓冲器传送数据。
101.在一些实例中,接口控制器包括第二sram缓冲器,其具有对应于dram的页面大小的容量。易失性存储器管理器515可以配置为将第二数据从dram中的一组存储器单元传送到第二sram缓冲器。非易失性存储器管理器520可以配置为将第二数据从第二sram缓冲器传送到feram。如果该命令是读命令,则缓冲器管理器510可以配置为确定dram中的一组存储器单元是否存储有第二数据。非易失性存储器管理器520可以配置为至少部分基于确定dram中的一组存储器单元存储有第二数据,将数据从feram传送到sram缓冲器。并且易失性存储器管理器515可以配置为在第二数据从dram中的一组存储器单元传送到第二sram缓冲器之后,将数据从sram缓冲器传送到dram中的一组存储器单元。
102.如果该命令是用于数据的写命令,则非易失性存储器管理器520可以配置为将数
据传送到存储器地址处的feram进行存储。缓冲器管理器510可以配置为确定dram中的一组存储器单元是否存储有第二数据。并且易失性存储器管理器515可以配置为在第二数据从dram中的一组存储器单元传送到第二sram缓冲器之后,将数据从sram缓冲器传送到dram中的一组存储器单元,其中,至少部分基于确定dram中的一组存储器单元存储有第二数据,将数据从sram缓冲器传送到dram中的一组存储器单元。
103.图6示出了流程图,示出了根据本公开的各方面的支持存储器子系统中的高速缓存管理的一或多种方法600。方法600的操作可由如本文所描述的存储器子系统或其部件来实现。例如,方法600的操作可以由参考图1至5描述的存储器子系统来执行。在一些实例中,存储器子系统可以执行一组指令来控制存储器子系统的功能元件来执行所描述的功能。附加地或替代地,存储器子系统可以使用专用硬件来执行所描述的功能的各方面。
104.在一些实例中,方法600的操作可以由包括接口控制器、与接口控制器耦合的非易失性存储器以及与接口控制器耦合的易失性存储器的设备来实现。接口控制器可以包括缓冲器。
105.在605,该方法可以包括从主机装置接收命令以将数据写入非易失性存储器的存储器地址。存储器地址可以与易失性存储器组中的一组存储器单元相关联。605的操作可以根据本文描述的方法来执行。在一些实例中,605的操作的各方面可以由参考图5描述的通信模块来执行。
106.在610,该方法可以包括至少部分基于该命令将数据存储在缓冲器中,该缓冲器具有对应于易失性存储器的页面大小的存储容量。610的操作可以根据本文描述的方法来执行。在一些实例中,610的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
107.在615,该方法可以包括在将数据存储在缓冲器中之后,确定易失性存储器的存储体中的一组存储器单元的存储信息。615的操作可以根据本文描述的方法来执行。在一些实例中,615的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
108.在620,该方法可以包括至少部分基于一组存储器单元的存储信息,将数据从缓冲器传送到易失性存储器的存储体中的一组存储器单元。620的操作可以根据本文描述的方法来执行。在一些实例中,620的操作的各方面可以由如参考图5所描述的易失性存储器管理器来执行。
109.在一些实例中,本文所描述的设备可以执行一或多种方法,例如方法600。该设备可以包括用于执行以下步骤的特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读介质):从主机装置接收命令以将数据写入非易失性存储器的存储器地址,存储器地址与易失性存储器的存储体中的一组存储器单元相关联;至少部分基于命令将数据存储在缓冲器中,缓冲器具有对应于易失性存储器的页面大小的存储容量;在将数据存储在缓冲器中之后,确定易失性存储器的存储体中的一组存储器单元的存储信息;以及至少部分基于一组存储器单元的存储信息,将数据从缓冲器传送到易失性存储器的存储体中的一组存储器单元。
110.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;至少部分基于存储信息,确定一组存储器单元是否存储第二数据;以及至少部分基于确定一组存储器单元存储第二数据,将第二数据的子集传送到非易失性存储器。
111.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;在将数据从缓冲器传送到一组存储器单元之前,将第二数据从一组存储器单元传送到包括在接口控制器中的第二缓冲器;确定第二数据的子集是否不同于存储在非易失性存储器中的对应的数据;以及至少部分基于确定第二数据的子集不同于对应的数据,启动写操作以将来自第二缓冲器的第二数据的子集存储在非易失性存储器中。
112.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;选择包括在命令中的一组地址位;以及至少部分基于一组地址位,引用存储易失性存储器的存储体中的存储器单元的子集的存储信息的阵列(包括在接口控制器中),其中,将第二数据的子集传送到非易失性存储器至少部分基于存储第二数据的子集的存储器单元的子集的存储信息。
113.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;至少部分基于存储信息,确定一组存储器单元可用于存储数据;从缓冲器中读取数据;以及启动写操作以将数据存储在易失性存储器的一组存储器单元中。
114.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;选择包括在命令中的一组地址位;以及至少部分基于一组地址位来引用存储易失性存储器的存储体的存储信息的阵列(包括在接口控制器中),其中,存储信息至少部分基于引用阵列来确定。
115.本文描述的方法600和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;至少部分基于来自主机装置的命令,将数据从缓冲器传送到非易失性存储器;以及启动写操作以将数据存储在存储器地址。在一些实例中,主机装置是soc或处理器。
116.图7示出了流程图,示出了根据本公开的各方面的支持存储器子系统中的高速缓存管理的一或多种方法700。方法700的操作可由如本文所描述的存储器子系统或其部件来实现。例如,方法700的操作可以由参考图1至5描述的存储器子系统来执行。在一些实例中,存储器子系统可以执行一组指令来控制存储器子系统的功能元件来执行所描述的功能。附加地或替代地,存储器子系统可以使用专用硬件来执行所描述的功能的各方面。
117.在一些实例中,方法700的操作可以由包括接口控制器、与接口控制器耦合的非易失性存储器以及与接口控制器耦合的易失性存储器的设备来实现。接口控制器可以包括缓冲器。
118.在705,该方法可以包括从主机装置接收命令以从非易失性存储器的存储器地址读取数据。存储器地址可以与易失性存储器组中的一组存储器单元相关联。705的操作可以根据本文描述的方法来执行。在一些实例中,705的操作的各方面可以由参考图5描述的通信模块来执行。
119.在710,该方法可以包括确定易失性存储器的存储体中的一组存储器单元的存储信息。710的操作可以根据本文描述的方法来执行。在一些实例中,710的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
120.在715,该方法可以包括从易失性存储器或非易失性存储器,并且至少部分基于一组存储器单元的存储信息,将数据传送到接口控制器中的缓冲器,缓冲器具有对应于易失性存储器的页面大小的存储容量。715的操作可以根据本文描述的方法来执行。在一些实例中,715的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
121.在一些实例中,本文所描述的设备可以执行一或多种方法,例如方法700。该设备可以包括用于执行以下步骤的特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读介质):从主机装置接收命令以从非易失性存储器的存储器地址读取数据,存储器地址与易失性存储器的存储体中的一组存储器单元相关联;确定易失性存储器的存储体中的一组存储器单元的存储信息;以及从易失性存储器或非易失性存储器,并且至少部分基于一组存储器单元的存储信息,将数据传送到接口控制器中的缓冲器,缓冲器具有对应于易失性存储器的页面大小的存储容量。
122.在本文描述的方法700和设备的一些实例中,确定存储信息可以包括用于执行以下步骤的操作、特征、构件或指令:至少部分基于存储信息,确定易失性存储器中的一组存储器单元是否存储数据,其中,至少部分基于确定一组存储器单元存储数据,将数据从易失性存储器传送到缓冲器;以及将数据从缓冲区传送到主机装置。
123.在本文描述的方法700和设备的一些实例中,确定存储信息可以包括用于执行以下步骤的操作、特征、构件或指令:至少部分基于存储信息,确定易失性存储器中的一组存储器单元是否存储数据,其中,至少部分基于确定一组存储器单元未存储数据,将数据从非易失性存储器传送到缓冲器;以及将数据从缓冲区传送到主机装置。
124.在本文描述的方法700和设备的一些实例中,确定存储信息可以包括用于执行以下步骤的操作、特征、构件或指令:至少部分基于存储信息,确定易失性存储器中的一组存储器单元是否存储第二数据,其中,至少部分基于确定一组存储器单元存储第二数据,将数据从非易失性存储器传送到缓冲器;以及将第二数据从易失性存储器中的一组存储器单元传送到接口控制器中的第二缓冲器,第二缓冲器具有对应于易失性存储器的页面大小的存储容量。在本文描述的方法700和设备的一些实例中,确定存储信息可以包括用于执行以下步骤的操作、特征、构件或指令:至少部分基于第二数据的子集不同于存储在非易失性存储器中的对应的数据,将第二数据的子集从第二缓冲器传送到非易失性存储器;以及将数据从缓冲器传送到易失性存储器中的一组存储器单元。
125.在本文描述的方法700和设备的一些实例中,确定存储信息可以包括用于执行以下步骤的操作、特征、构件或指令:选择包括在命令中的一组地址位;以及至少部分基于一组地址位来引用存储易失性存储器的存储体的存储信息的阵列,其中,存储信息至少部分基于引用阵列来确定。
126.图8示出了流程图,示出了根据本公开的各方面的支持存储器子系统中的高速缓存管理的一或多种方法800。方法800的操作可由如本文所描述的存储器子系统或其部件来实现。例如,方法800的操作可以由参考图1至5描述的存储器子系统来执行。在一些实例中,存储器子系统可以执行一组指令来控制存储器子系统的功能元件来执行所描述的功能。附加地或替代地,存储器子系统可以使用专用硬件来执行所描述的功能的各方面。
127.在一些实例中,方法800的操作可以由包括接口控制器、与接口控制器耦合的feram以及与接口控制器耦合的dram的设备来实现。接口控制器可以包括sram缓冲器。
128.在805,该方法可以包括从soc接收访问feram的存储器地址的命令,该存储器地址与dram组中的一组存储器单元相关联。805的操作可以根据本文描述的方法来执行。在一些实例中,805的操作的各方面可以由参考图5描述的通信模块来执行。
129.在810,该方法可以包括将与命令相关联的数据存储在sram缓冲器中,sram缓冲器
具有对应于dram的页面大小的存储容量,并且与dram和feram耦合。810的操作可以根据本文描述的方法来执行。在一些实例中,810的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
130.在815,该方法可以包括至少部分基于该命令从sram缓冲器传送数据。815的操作可以根据本文描述的方法来执行。在一些实例中,815的操作的各方面可以由如参考图5所描述的缓冲器管理器来执行。
131.在一些实例中,本文所描述的设备可以执行一或多种方法,例如方法800。该设备可以包括用于执行以下步骤的特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读介质):从soc接收访问feram的存储器地址的命令,存储器地址与dram的存储体中的一组存储器单元相关联;将与命令相关联的数据存储在sram缓冲器中,sram缓冲器具有对应于dram的页面大小的存储容量,并且与dram和feram耦合;以及至少部分基于命令从sram缓冲器传送数据。
132.本文描述的方法800和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;将第二数据从dram中的一组存储器单元传送到接口控制器中包括的第二sram缓冲器,第二sram缓冲器具有对应于dram的页面大小的容量;以及将第二数据从第二sram缓冲器传送到feram。
133.本文描述的方法800和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;当该命令是读命令时,确定dram中的一组存储器单元是否存储有第二数据;至少部分基于确定dram中的一组存储器单元存储有第二数据,将数据从feram传送到sram缓冲器;以及在将第二数据从dram的一组存储器单元传送到第二sram缓冲器之后,将数据从sram缓冲器传送到dram中的一组存储器单元。
134.本文描述的方法800和设备的一些实例还可以包括用于执行以下步骤的操作、特征、构件或指令;当该命令是写命令时,将数据传送到存储器地址处的feram进行存储;确定dram中的一组存储器单元是否存储有第二数据;以及在将第二数据从dram中的一组存储器单元传送到第二sram缓冲器之后,将数据从sram缓冲器传送到dram中的一组存储器单元,其中,至少部分基于确定dram中的一组存储器单元存储有第二数据,将数据从sram缓冲器传送到dram中的一组存储器单元。
135.在一些实例中,本文描述的设备可以执行方法600、方法700和方法800的各方面。该设备可以包括非易失性存储器(例如,非易失性存储器125或非易失性存储器206)、易失性存储器(例如,易失性存储器120或易失性存储器204)和接口控制器(例如,接口控制器115或接口控制器202)。接口控制器可以包括:第一缓冲器(例如,缓冲器135-a或缓冲器218),第一缓冲器与易失性存储器的存储体耦合,第一缓冲器具有对应于易失性存储器的页面大小的容量并且配置为存储由访问命令指示的数据;以及第二缓冲器(例如,缓冲器135-b或缓冲器220),第二缓冲器与易失性存储器的存储体耦合,第二缓冲器具有对应于易失性存储器的页面大小的容量,并且配置为存储用于在易失性存储器和非易失性存储器之间传送的数据。
136.在一些实例中,易失性存储器包括多个存储体,并且接口控制器包括:第一多个缓冲器,第一多个缓冲器包含第一缓冲器,其中,第一多个缓冲器中的每个缓冲器与多个存储体中的相应存储体耦合,并且配置为存储由相应存储体的访问命令指示的数据;以及第二
多个缓冲器,第二多个缓冲器包含第二缓冲器,其中,第二多个缓冲器中的每个缓冲器与多个存储体中的相应存储体耦合,并且配置为存储用于在相应存储体和非易失性存储器之间传送的数据。
137.在一些实例中,该设备包括与接口控制器和主机装置之间的总线(例如,c/a总线226)耦合的电路(例如,命令电路230)。该电路可以配置为通过总线从主机装置接收命令和地址,并且配置为向控制对易失性存储器和非易失性存储器的访问的一或多个电路(例如,调度器248-a、调度器248-b)发出命令。
138.在一些实例中,该设备包括:第一阵列(例如,存储器阵列252),第一阵列配置为存储易失性存储器的存储体中的一组存储器单元的存储信息;以及第二阵列(例如,存储器阵列254),第二阵列与第一阵列耦合,并配置为存储一组存储器单元的存储器单元子集的更新信息。
139.在一些实例中,接口控制器包括与非易失性存储器耦合的第一电路(例如,存储器接口电路234)。第一电路可以配置为向非易失性存储器发出命令,并且在非易失性存储器与第一缓冲器和第二缓冲器之间传送数据;以及第二电路(例如,存储器接口电路240)与易失性存储器耦合,第二电路配置为向易失性存储器发出命令,并且在易失性存储器与第一缓冲器和第二缓冲器之间传送数据。
140.在一些实例中,接口控制器、第一缓冲器和第二缓冲器在第一管芯上,易失性存储器在第二管芯上,非易失性存储器在第三管芯上。在一些实例中,非易失性存储器、易失性存储器和接口控制器在同一封装中。
141.应注意,以上描述的方法描述了可能的实现方式,并且操作和步骤可以被重新安排或以其它方式修改,并且其它实现方式是可能的。此外,可以组合两种或多种方法的部分。
142.本文描述的信息和信号可以使用各种不同的技术和工艺来表示。例如,以上整个描述引用的数据、指令、命令、信息、信号、比特、符号和码片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合来表示。一些附图可以将信号表示为单个信号;然而,本领域普通技术人员将理解,该信号可以表示信号总线,其中,该总线可以具有多种位宽。
143.协议可以定义由装置或部件使用的一或多个通信过程和一或多个通信参数。例如,协议可以定义各种操作、这些操作的定时和频率、各种命令或信号或两者的含义、一或多个存储器的一或多个寻址方案、为其保留管脚的通信类型、在接口等各种部件处处理的数据大小、接口等各种部件所支持的数据速率、或接口等各种部件所支持的带宽、以及其它参数和度量、或它们的任何组合。共享协议的使用可以实现装置之间的交互,因为每个装置可以以另一个装置预期、识别和理解的方式操作。例如,支持相同协议的两个装置可以根据协议定义的策略、过程和参数进行交互,而支持不同协议的两个装置可能不兼容。
144.举例来说,支持不同协议的两个装置可能不兼容,因为协议定义了不同的寻址方案(例如,不同数量的地址位)。作为另一个说明,支持不同协议的两个装置可能不兼容,因为协议定义了响应单个命令的不同传送过程(例如,响应命令所允许的突发长度或字节数量可能不同)。仅仅将一个命令翻译成一个动作不应该被理解为使用两种不同的协议。相反,如果由协议定义的对应的程序或参数不同,则两个协议可以被认为是不同的。例如,如果一个装置支持不同的寻址方案或响应命令的不同传送过程,则可以说该装置支持两种不
同的协议。
145.术语“电子通信”、“导电接触”、“连接”和“耦合”可以指支持部件之间信号流动的部件之间的关系。如果在部件之间存在任何导电路径,可以在任何时候支持部件之间的信号流动,则部件被认为是彼此电子通信(或导电接触或连接或耦合)。在任何给定时间,基于包括所连接的部件的装置的操作,彼此电子通信(或导电接触或连接或耦合)的部件之间的导电路径可以是开路或闭路。连接的部件之间的导电路径可以是部件之间的直接导电路径,或者连接的部件之间的导电路径可以是间接导电路径,其可以包括中间部件,例如开关、晶体管或其它部件。在一些实例中,连接的部件之间的信号流动可以被中断一段时间,例如,使用开关或晶体管等一或多个中间部件。
146.术语“耦合”是指从部件之间的开路关系(其中,信号目前不能通过导电路径在部件之间传送)转变为部件之间的闭路关系(其中,信号能够通过导电路径在部件之间传送)的情况。当控制器等部件将其它部件耦合在一起时,该部件启动允许信号通过导电路径在其它部件之间流动的改变,该导电路径以前不允许信号流动。
147.术语“隔离的”是指部件之间的关系,其中,信号目前不能在部件之间流动。如果部件之间存在开路,则它们会相互隔离。例如,当开关打开时,由位于部件之间的开关隔离的两个部件相互隔离。当控制器隔离两个部件时,控制器使用先前允许信号流动的导电路径来影响阻止信号在部件之间流动的改变。
148.本文讨论的包括存储器阵列的装置可以在硅、锗、硅锗合金、砷化镓、氮化镓等半导体衬底上形成。在一些实例中,衬底是半导体晶片。在其它实例中,衬底可以是绝缘体上硅(soi)衬底,例如玻璃上硅(sog)或蓝宝石上硅(sop),或者另一衬底上的半导体材料外延层。衬底或衬底的子区域的导电性可以通过使用各种化学物质掺杂来控制,包括但不限于磷、硼或砷。掺杂可以在衬底的初始形成或生长期间,通过离子注入或通过任何其它掺杂方式来执行。
149.本文讨论的开关部件或晶体管可以代表场效应晶体管(fet),并且包含三端装置,包括源极、漏极和栅极。端子可以通过金属等导电材料连接到其它电子元件。源极和漏极可以是导电的,并且可以包含重掺杂的,例如退化的半导体区域。源极和漏极可以由轻掺杂半导体区域或沟道分隔。如果沟道是n型的(即多数载流子是电子),则fet可以被称为n型fet。如果沟道是p型的(即多数载流子是空穴),则fet可以被称为p型fet。沟道可以由绝缘栅氧化物覆盖。可以通过向栅极施加电压来控制沟道电导率。例如,分别向n型场效应晶体管或p型场效应晶体管施加正电压或负电压可能导致沟道变得导通。当大于或等于晶体管的阈值电压的电压被施加到晶体管栅极时,晶体管可以“导通”或“激活”。当小于晶体管阈值电压的电压施加到晶体管栅极时,晶体管可以“关断”或“去激活”。
150.结合附图,本文阐述的描述描述了实例配置,并且不代表可以实现的或者在权利要求范围内的所有实例。本文使用的术语“实例性”意味着“用作实例、实例或说明”,而不是“优选的”或“优于其它实例的”。详细描述包括提供对所描述技术的理解的具体细节。然而,这些技术可以在没有这些具体细节的情况下实施。在一些情况下,以框图形式示出了众所周知的结构和装置,以避免所描述的实例的概念。
151.在附图中,相似的部件或特征可以具有相同的参考标记。此外,相同类型的各种部件可以通过在参考标记之后加上破折号和在相似部件之间进行区分的第二标记来区分。如
果在说明书中仅使用第一参考标记,则该描述适用于具有相同第一参考标记的任何一个类似部件,而与第二参考标记无关。
152.本文描述的信息和信号可以使用各种不同的技术和工艺来表示。例如,以上整个描述引用的数据、指令、命令、信息、信号、比特、符号和码片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合来表示。
153.结合本文公开内容描述的各种说明性块和模块可以用通用处理器、dsp、asic、fpga或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件部件或设计成执行本文描述的功能的它们的任何组合来实现或执行。通用处理器可以是微处理器,但是替代地,处理器可以是任何处理器、控制器、微控制器或状态机。处理器也可以被实现为计算装置的组合(例如,dsp和微处理器的组合、多个微处理器、一或多个微处理器与dsp内核的组合、或任何其它这样的配置)。
154.本文描述的功能可以通过硬件、由处理器执行的软件、固件或其任何组合中实现。如果通过由处理器执行的软件实现,则这些功能可以作为一或多个指令或代码存储在计算机可读介质中或通过其传输。其它实例和实现方式在本公开和所附权利要求的范围内。例如,由于软件的性质,以上描述的功能可以使用由处理器执行的软件、硬件、固件、硬连线或这些的任何组合来实现。实现功能的特征也可以物理地位于不同的位置,包括被分布使得部分功能在不同的物理位置实现。此外,如本文所使用的,包括在权利要求中,在项目列表中使用的“或”(例如,以短语如“至少一个”或“一或多个”开头的项目列表)表示包括性列表,使得例如,a、b或c中的至少一个的列表意味着a或b或c或ab或ac或bc或abc(即,a和b和c)。此外,如本文所使用的,短语“基于”不应被解释为对封闭条件集的引用。例如,被描述为“基于条件a”的实例性步骤可以在不脱离本公开的范围的情况下基于条件a和条件b两者。换句话说,如本文所使用的,短语“基于”应以与短语“至少部分基于”相同的方式来解释。
155.计算机可读介质包括非暂时性计算机存储介质和通信介质,通信介质包括便于将计算机程序从一个地方传送到另一个地方的任何介质。非暂时性存储介质可以是通用或专用计算机可以访问的任何可用介质。作为实例而非限制,非暂时性计算机可读介质可以包含ram、rom、电可擦除可编程只读存储器(eeprom)、光盘(cd)rom或其它光盘存储装置、磁盘存储装置或其它磁存储装置,或者可以用于以指令或数据结构的形式携带或存储期望的程序代码构件并且可以由通用或专用计算机或通用或专用处理器访问的任何其它非暂时性介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(dsl)或无线技术(如红外线、无线电和微波)从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、数字用户线路(dsl)或无线技术(如红外线、无线电和微波)包括在介质的定义中。如本文所使用的,盘和碟包括cd、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光光盘,其中,盘通常磁性地再现数据,而碟用激光光学地再现数据。以上的组合也包括在计算机可读介质的范围内。
156.本文提供的描述使本领域技术人员能够制作或使用本公开。对本公开的各种修改对于本领域技术人员来说是显而易见的,并且在不脱离本公开的范围的情况下,本文定义的一般原理可以应用于其它变型。因此,本公开不限于本文描述的实例和设计,而是符合与本文公开的原理和新颖特征一致的最宽范围。
转载请注明原文地址:https://win.8miu.com/read-1057798.html