CN112262376B - 用于存储器的预取管理 - Google Patents
用于存储器的预取管理 Download PDFInfo
- Publication number
- CN112262376B CN112262376B CN201980038591.2A CN201980038591A CN112262376B CN 112262376 B CN112262376 B CN 112262376B CN 201980038591 A CN201980038591 A CN 201980038591A CN 112262376 B CN112262376 B CN 112262376B
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- data
- memory page
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1205
- 239000000872 buffer Substances 0.000 claims abstract description 127
- 238000000034 method Methods 0.000 claims description 53
- 230000004044 response Effects 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 description 42
- 238000007726 management method Methods 0.000 description 30
- 238000003491 array Methods 0.000 description 20
- 238000013523 data management Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 230000002093 peripheral effect Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 239000000969 carrier Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本申请涉及用于存储器的预取管理。可以在器件处接收到对定位于存储器阵列的存储器页面中的数据的请求,并且可以标识预取计数器的与所述存储器页面相关联的值。然后可以基于所述预取计数器的所述值在所述器件的存储器阵列与存储器库之间传送所述存储器页面的包含所请求数据的一部分。例如,可以基于所述预取计数器的所述值选择所述存储器页面的所述部分。可以将所述存储器页面的第二部分传送到所述器件的缓冲器,并且所述预取计数器的所述值可以是基于所述存储器页面的所述第一部分与所述存储器页面的所述第二部分之间的关系来修改的。
Description
相关申请交叉引用
本专利申请要求于2019年4月23日提交的Hasbun等人的题为“用于存储器的预取管理(Prefetch Management For Memory)”的PCT申请第PCT/US2019/028688号的优先权,所述PCT申请要求于2018年5月9日提交的Hasbun等人的题为“用于存储器的预取管理(Prefetch Management For Memory)”的美国专利申请第15/975,614号以及于2018年8月20日提交的Hasbun等人的题为“用于存储器的预取管理(Prefetch Management ForMemory)”的美国专利申请第16/105,545号的优先权,所述美国专利申请中的每个美国专利申请转让给本申请的受让人并且以其全文引用的方式明确地并入本文中。
技术领域
技术领域涉及用于存储器的预取管理。
背景技术
下文总体上涉及存储器系统,并且更具体地涉及用于存储器的预取管理。
存储器系统可以包含各种存储器器件和控制器,所述存储器器件和控制器可以通过一或多条总线耦接以管理许多电子器件中的信息,所述电子器件如计算机、无线通信器件、物联网器件、相机、数字显示器等。存储器器件广泛用于存储此类电子器件中的信息。可以通过在存储器器件内对一或多个存储器单元的不同状态进行编程来将信息存储于存储器器件中。例如,二进制存储器单元可以存储通常表示为逻辑“1”或逻辑“0”的两种状态之一。一些存储器单元可以存储两种以上的状态。
存在各种类型的存储器器件,包含磁性硬盘、随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步动态RAM(SDRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、闪速存储器、相变存储器(PCM)等。存储器器件可以是易失性的或非易失性的。非易失性存储器单元即使在不存在外部电源的情况下,也可以长时间维持其所存储逻辑状态。易失性存储器单元例如,DRAM单元可能随着时间的推移而失去其所存储逻辑状态,除非通过外部电源对其进行周期性刷新。
改进存储器系统通常可以包含通过使用持久的主存储器来降低系统功耗、增加存储器系统容量、提高读取/写入速度、提供非易失性,或降低某个性能点处的制造成本及其它度量。存储器页面大小可能会影响系统功率和用于存取存储器器件的功率。此外,如果存储器存取未针对特定系统定制,则系统功率可能会受到影响或增加。
发明内容
描述了一种方法。在一些实例中,所述方法可以包含:接收对定位于器件的存储器阵列的存储器页面中的第一数据的第一请求;标识预取计数器的与所述存储器阵列的所述存储器页面相关联的第一值;以及至少部分地基于所述预取计数器的所述第一值将所述存储器页面的第一部分从所述器件的所述存储器阵列传送到存储器库,所述存储器页面的所述第一部分包括所述第一数据。
描述了一种装置。在一些实例中,所述装置可以包含:存储器阵列,所述存储器阵列被配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;以及与所述第一存储器页面相关联的预取计数器,所述预取计数器被配置成存储与所述第一存储器页面的第一部分相对应的第一值,所述第一部分响应于对定位于所述第一存储器页面中的数据的请求而被提供到所述存储器库。
描述了一种装置。在一些实例中,所述装置可以包含:配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;预取计数器,其中所述预取计数器的第一值与所述第一存储器页面相关联;以及控制器,所述控制器与所述存储器阵列、所述存储器库耦接并且被配置成与主机介接。所述控制器可以是可操作的以:接收对定位于所述第一存储器页面中的第一数据的第一请求;标识所述预取计数器的所述第一值;至少部分地基于所述预取计数器的所述第一值将所述第一存储器页面的第一部分从所述存储器阵列传送到所述存储器库,所述第一存储器页面的所述第一部分包括所述第一数据。
附图说明
图1示出了根据本公开的实例的包含支持用于主存储器的预取管理的非易失性存储器系统或子系统的系统的图。
图2展示了根据本公开的实例的支持用于主存储器的预取管理的示范性存储器系统或子系统。
图3展示了根据本公开的实例的支持用于主存储器的预取管理的示范性数据结构和状态图。
图4A和4B展示了根据本公开的实例的用于预取操作的示范性过程流程。
图5示出了根据本公开的实例的支持用于主存储器的预取管理的器件的框图。
图6到8示出了根据本公开的实例展示了用于主存储器的预取管理的方法的流程图。
具体实施方式
存储器系统可以利用不同的存储器技术来存储数据。例如,存储器系统可以包含第一存储器阵列(其可以是易失性存储器阵列,如DRAM)和第二存储器阵列(其可以是非易失性存储器阵列,如FeRAM或3D XPointTM)。易失性存储器阵列可以比非易失性存储器阵列使用更少的等待时间来执行与外部处理器的通信。并且,在一些情况下,对易失性存储器阵列执行的存取操作(例如,读取/写入操作)可以比对非易失性存储器阵列执行的存取操作消耗更少的功率。然而,相对于易失性存储器阵列,非易失性存储器阵列可以——例如通过减少或消除各种刷新操作来减少长期功耗。并且与易失性存储器阵列不同,如果非易失性存储器阵列损耗功率,则非易失性存储器阵列可以保持所存储数据。在一些情况下,存储器系统可以被配置成并且可操作以利用这些技术中的两者的有益特性。
例如,存储器系统可以将大部分数据存储于非易失性存储器阵列中并且可以策略性地将数据移动到易失性存储器阵列。在一些情况下,存储器系统可以在接收到对数据的存取请求之前将存储于非易失性存储器阵列中并且可能被存取的数据移动到易失性存储器阵列中。这种操作可以被称为“预取”操作。在预取操作期间,存储器系统可以将可能被存取的一或多个数据页(或“页面”或“存储器页面”)从非易失性存储器阵列移动到易失性存储器阵列。以此方式,存储器系统可以减少对非易失性存储器阵列执行的存取操作,并且因此通过利用与存取易失性存储器阵列相关联的相对较快的定时来增加存储器系统的数据吞吐量。
另外或可替代地,存储器系统可以执行部分预取操作。例如,存储器系统可以预取存储器页面的一部分,而不是整个存储器页面。在一些情况下,存储器系统可以基于对存储于非易失性存储器阵列中的数据执行的先前的存取操作(即,基于存取历史)预取存储器页面的一部分。以此方式,非易失性存储器阵列可以基于先前的存取操作确定存储器页面的哪些部分可能被存取,并且可以向易失性存储器阵列提供存储器页面的可能被存取的部分。例如,存储器系统可以确定非易失性存储器页面的两个部分通常一起存取并且当存取存储器页面的任一部分时,可以使非易失性存储器阵列向易失性存储器阵列递送对应于非易失性存储器页面的两个部分的数据。在一些情况下,存储器页面可以被分隔成存储器子页面(或“子页面”),并且存储器页面的一部分可以对应于一或多个子页面。
如上文所讨论的,存储器系统可以包含易失性存储器阵列和非易失性存储器阵列。易失性存储器阵列可以被配置成具有具有第一大小的一或多个存储器页面,并且器件可以根据页面大小将数据存储于存储器阵列中。在一些实例中,易失性存储器阵列可以是动态随机存取存储器(DRAM)阵列并且可以使用例如具有页面大小为2048字节的存储器页面。在一些情况下,器件可以请求存储于易失性存储器阵列中的数据支持与器件相关的用户应用操作。例如,器件处的处理器可以启动易失性存储器阵列处的读取操作,并且易失性存储器阵列可以向处理器提供所请求数据。易失性存储器阵列可以标识包含所请求数据的存储器页面并且可以在向处理器提供所请求数据之前存取整个存储器页面。根据与所指定电压和定时要求相关联的某个协议(例如,DRAM存储器存取协议),处理器可以与易失性存储器阵列进行通信。
非易失性存储器阵列可以使用第二预定大小或可变大小将数据存储于存储器页面中。在一些情况下,与易失性存储器阵列相比,非易失性存储器阵列可以使用更小的页面大小(例如,64字节、128字节、192字节或256字节)。此外,与DRAM阵列不同,非易失性存储器阵列可以在不扰乱所述部分中的其它存储器单元的逻辑状态的情况下存取存储器页面的一或多个部分(例如,多个64字节部分)。在读取操作期间存取较少的存储器单元可以减少非易失性存储器阵列的功耗。然而,非易失性存储器阵列可能与某些存储器存取协议(例如,DRAM存储器存取协议)不相容。例如,与DRAM阵列相比,非易失性存储器阵列可以使用不同的电压和/或定时进行存取。因此,非易失性存储器阵列可能无法由被配置成使用DRAM存储器存取协议进行通信的处理器直接存取。
尽管与易失性存储器阵列相比具有更小的页面大小,但是与易失性存储器阵列相比,非易失性存储器阵列可以具有更大的存储容量。根据某些存储器存取协议操作的处理器可以直接存取易失性存储器阵列并且(例如,通过存储器控制器)间接存取非易失性存储器阵列。在一些实例中,处理器可以被配置成作为单个存储器阵列与存储器系统进行通信并且使用第一存储器存取协议(例如,DRAM存储器存取协议)发送存取请求。存储器控制器可以解释来自处理器的存取请求并且向处理器提供所请求数据。在一些情况下,可以使用处理器的存储器存取协议的说明书和在处理器的存储器存取协议的说明书内存取存储于易失性存储器阵列中的数据,而例如由于非易失性存储器阵列使用替代性存储器技术,可能在由处理器使用的存储器存取协议的说明书内无法存取存储于非易失性存储器阵列中的数据。
当存储器系统无法在指定的时间段内检索到所请求数据时,可以向处理器发送获取所请求数据将存在延迟的指示。例如,当处理器请求存储于非易失性存储器阵列而不是易失性存储器阵列中的数据时,存储器控制器可以指示读取延迟——例如由于用于存取非易失性存储器阵列中的数据的较慢定时。在接收到指示之后,处理器可以等待数据另外的时间量,并且根据经修改定时,可以向处理器提供所请求数据。在一些实例中,预期接收到来自处理器的对数据的随后存取请求,还可以将所请求数据移动到易失性存储器阵列。
如上文所讨论的并且在一些实例中,在请求以其它方式定位于存储器页面中的数据之前,可以优先将存储于非易失性存储器阵列中的某些存储器页面移动到易失性存储器阵列以避免未来的存取延迟(即,数据可以预取)。在一些实例中,监测存储于非易失性存储器阵列中的数据的存取模式以动态地确定将哪些存储器页面移动到易失性存储器阵列——例如以确定哪些存储器页面含有可能在某个时间段内被存取的数据。例如,计数器(其可以被称为“饱和计数器”)可以用于监测某个存储器页面中的数据在某个时间段或周期内被存取的次数,并且基于计数器的值,可以将存储器页面从非易失性存储器阵列移动到易失性存储器阵列。
可以通过预取存储器页面的部分而不是预取整个存储器页面来进一步降低功耗。可以基于存储器页面中的数据的存取历史选择存储器页面的经预取部分。如上文所讨论的,经预取部分可以包含存储器页面的一或多个子页面。例如,可以预取存储器页面的频繁存取或已经存取一定次数的部分。在一些实例中,计数器的值(其可以被称为“预取计数器”)可以用于指示将存储器页面的多少子页面和/或哪些子页面从非易失性存储器阵列移动到易失性存储器阵列。每个存储器页面可以与预取计数器相关联,并且可以基于相应存储器页面的存取历史或存取模式或两者调整相应预取计数器的值。在一些实例中,存储器控制器可以包含用于子页面中的每个子页面的相应饱和计数器,并且预取计数器的值可以基于饱和计数器的值。
在一些实例中,基于接收到对定位于存储器页面中的数据的请求和预取计数器的值,存储器页面的一部分可以从非易失性存储器阵列传送到易失性存储器阵列。例如,可以接收到来自处理器的对数据的请求,并且可以标识非易失性存储器阵列的含有所述数据的存储器页面。在一些实例中,还可以标识包含所请求数据和与存储器页面相关联的预取计数器的值的子页面。所标识子页面和预取计数器的值可以用于确定存储器页面的哪个部分或存储器页面的一部分的大小将在非易失性存储器阵列与易失性存储器阵列之间进行通信。
在一些实例中,除了易失性存储器阵列和非易失性存储器阵列外,存储器系统可以包含存储器缓冲器(或“缓冲器”)。在一些情况下,缓冲器还可以是易失性存储器阵列。基于哪些子页面被传输到缓冲器,存储器系统可以更新预取计数器的值。例如,基于对应预取计数器的值,可以将存储器页面的包含三个子页面的数据(其可以对应于192字节的数据)的一部分传输到易失性存储器阵列。随后,可以监测在易失性存储器阵列处对子页面中的每个子页面执行的存取操作的数量。在一些实例中,可以将对应于三个子页面中的仅两个子页面的数据从易失性存储器阵列传输到缓冲器,并且可以修改对应预取计数器的值。例如,预取计数器可以被修改成使得下一次存取存储器页面时将存储器页面的包含两个子页面的数据(其可以对应于128字节的数据)而不是三个子页面的一部分从非易失性存储器阵列传输到易失性存储器阵列。在一些情况下,直到存储于缓冲器中的子页面被驱逐时才更新预取计数器值。
上文引入的本公开的特征在下文图1的上下文中在示范性系统的水平处进一步描述。存储器系统和操作的具体实例然后在图2到4的上下文中描述。本公开的这些特征和其它特征由图5的装置图和以及图6到8的流程图进一步展示并且参考所述装置图和所述流程图描述,所述图5描述了与控制器相关的各种组件,所述图6到8涉及用于主存储器的预取管理的操作。
图1示出了根据本公开的实例的包含支持用于主存储器的预取管理的存储器系统或子系统的系统100的图。系统100可以包含器件105。器件105可以包含接口控制器120、SoC或处理器130以及各种存储器器件170、175和180。器件105还可以包含输入/输出控制器135、基本输入/输出系统(BIOS)组件140、板支撑封装(BSP)145、一或多个外围组件150以及直接存储器存取控制器(DMAC)155。器件105的组件可以通过总线110彼此电子通信。
器件105可以是计算器件、电子器件、移动计算器件或无线器件。器件105可以是便携式电子器件。例如,器件105可以是计算机、膝上型计算机、平板计算机、智能电话、蜂窝电话、可佩戴器件、互联网连接器件等。在一些实例中,器件105可以被配置用于通过基站或存取点进行双向无线通信。在一些实例中,器件105可以进行机器类型通信(MTC)、机器对机器通信(M2M)或器件对器件(D2D)通信。器件105可以被称为用户设备(UE)、站(STA)、移动终端等。
接口控制器120可以被配置成与SoC/处理器130介接。接口控制器120还可以被配置成与各种存储器器件170、175、180或其任何组合介接。
SoC/处理器130可以被配置成直接地或通过接口控制器120与各种存储器器件170、175、180或其任何组合一起操作。SoC/处理器130还可以被称为主机并且可以包含主机控制器。在一些情况下,SoC/处理器130可以执行本文所描述的接口控制器120的功能的一些或全部。SoC/处理器130可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件,或者可以是这些类型的组件的组合。
存储器器件170可以各自包含一或多个存储器单元阵列以存储数字信息。存储器器件170可以被配置成各自与SoC/处理器130和/或接口控制器120一起操作。在一些实例中,存储器器件170可以被配置成为用于SoC/处理器130或接口控制器120的存储器库提供缓冲存储器。器件105可以包含任何数量的存储器器件170。
存储器器件175可以包含存储器单元阵列和被配置成与存储器单元阵列一起操作的本地存储器控制器。包含在存储器器件175中的存储器单元阵列可以以两个或两个以上层构造,所述两个或两个以上层各自具有不同的性能能力。存储器器件175的本地存储器控制器还可以被配置成与SoC/处理器130或接口控制器120一起操作。在一些实例中,第一层存储器单元可以是3D XPointTM存储器,所述存储器可以用很短的响应时间提供大量输入/输出操作每秒(IOPS)以处理各种工作负载。在一些实例中,第二层存储器单元可以是三维非-与(与非)存储器,所述存储器可以以比第一层存储器单元的成本相对较低的成本提供高容量以进行数据存储。存储器器件175的本地存储器控制器可以被配置成促进存储器器件175内的存储器单元的高效操作,与SoC/处理器130相比,所述存储器器件可以在存储器单元中在两个或两个以上层中具有不同的特性。在一些情况下,存储器器件175可以包含存储器阵列的其它类型或组合。在一些实例中,器件105中可以存在一或多个存储器器件175。
存储器器件180可以包含存储器单元的一或多个阵列和被配置成与所述存储器单元的一或多个阵列一起操作的本地存储器控制器。存储器器件180的本地存储器控制器还可以被配置成与SoC/处理器130或接口控制器120一起操作。在一些实例中,存储器器件180可以包含非易失性存储器单元或易失性存储器单元,或非易失性存储器单元和易失性存储器单元两者的组合。非易失性存储器单元(例如,FeRAM存储器单元)可以在不存在外部电源的情况下保持其存储的逻辑状态持续延长的时间段,由此减少或消除执行刷新操作的要求(例如,刷新操作,如与DRAM单元相关联的那些刷新操作)。
在存储器器件180中包含非易失性存储器单元(例如,FeRAM存储器单元)阵列可以为器件105提供各种益处(例如,效率益处)。相对于易失性存储器单元阵列,此类益处可以包含接近零的待机功率(其可以增加电池寿命)、待机或未供电(例如,“断开”)状态之后的即时启动操作和/或具有低系统功耗的高区域存储器密度(high areal memory density)。非易失性存储器系统或子系统的此类特征可以例如支持在移动环境中使用计算密集(例如,台式应用)的操作或软件。在一些实例中,器件105中可以存在一或多个存储器器件180。在一些情况下,器件105可以包含多种采用不同的非易失性存储器技术的非易失性存储器阵列,如一或多个FeRAM阵列以及使用其它存储器技术的一或多个非易失性存储器阵列。进一步地,本文所描述的益处仅仅是示范性的,并且本领域的普通技术人员之一可以理解另外的益处。
在一些情况下,与SoC/处理器130相比,存储器器件180可以使用不同的页面大小。在存储器器件的上下文中,页面大小可以是指在各种接口处处理的数据大小,并且不同的存储器器件类型可以具有不同的页面大小。在一些实例中,SoC/处理器130可以使用DRAM页面大小(例如,符合一或多个JEDEC低功率双数据速率(LPDDR)说明书的页面大小),并且器件105内的器件180可以包含被配置成提供不同的页面大小(例如,比典型的DRAM页面大小更小的页面大小)的非易失性存储器单元阵列。在一些实例中,存储器器件180可以支持可变的页面大小——例如存储器器件180可以包含支持多个页面大小的非易失性存储器单元阵列(例如,FeRAM阵列),并且所使用的页面大小可以因存取操作而不同——并且存储器器件180的本地存储器控制器可以被配置成为存储器器件180内的存储器阵列处理可变的页面大小。例如,在一些情况下,可以同时感测连接到经激活字线的非易失性存储器单元的子集,而无须感测连接到经激活字线的所有非易失性存储器单元,由此支持存储器器件180内的可变页面大小操作。在一些情况下,非易失性存储器单元阵列的页面大小可以根据存取命令的性质和相关联数据(例如,受制于存取命令的数据)的特性(例如,大小或相关联的等待时间)而动态地变化。较小的页面大小可以提供益处(例如,效率益处),因为可以结合给定的存取操作激活较少数量的存储器单元。当通过减小页面大小使操作与信息的小变化相关联而在需要时通过增加页面大小来支持高性能操作时,使用可变的页面大小可以向器件105提供另外的益处,如可配置且高效的能量使用。
在一些实例中,器件105可以采用“预取”技术以促进与SoC/处理器130的通信。例如,器件105可以使存储器器件180将尚未被SoC/处理器130请求的数据传输到存储器器件175。以此方式,SoC/处理器130可以使用第一次尝试而不是执行延迟的读取操作来使用第二次另外的尝试检索来自存储器器件180的数据以存取定位于存储器器件175处的所请求数据。此外,SoC/处理器130可以根据在SoC/处理器103处配置的存储器存取协议来存取定位于存储器器件175中的数据。
另外或可替代地,器件105可以预取存储器页面的包含由SoC/处理器130请求的数据的部分(例如,子页面)。以此方式,器件105可以进一步降低功耗并且增加器件105处的吞吐量。SoC/处理器130可以请求定位于存储器页面的子页面中的数据,所述子页面定位于存储器器件180处。存储器器件180可以将含有所请求数据的子页面传输到SoC/处理器130和/或存储器器件175。在一些实例中,存储器器件180还可以将存储器页面中的另外的子页面以及(或可替代地、除了)含有所请求数据的子页面传输到存储器器件175。在一些情况下,决定传输另外的子页面可以基于各种因素或其它指示(例如,与存储器页面的存取操作相关的历史信息)。在一些实例中,可以使用预取计数器监测对存储器页面中的子页面执行的过去的存取操作。也就是说,可以基于对存储器页面中的一或多个子页面执行的先前和随后存取操作(例如,动态地)更新预取计数器的值。在一些实例中,每个存储器页面可以与相应预取计数器相关联。
DMAC 155可以支持SoC/处理器130关于存储器器件170、175或180的直接存储器存取(例如,读取或写入)操作。例如,在没有接口控制器120的参与或操作的情况下,DMAC 155可以支持SoC/处理器130对存储器器件170、175或180的存取。
一或多个外围组件150可以是可以集成到器件105中的任何输入或输出器件或用于任何此类器件的接口。一或多个外围组件150的实例可以包含磁盘控制器、声音控制器、图形控制器、以太网控制器、调制解调器、通用串行总线(USB)控制器、串行或并行端口或外围卡槽,如外围组件互连(PCI)或加速图形端口(AGP)插槽。一或多个外围组件150还可以包含被本领域的技术人员理解为外围装置的其它组件。
BIOS组件140或板支撑封装(BSP)145可以是包含操作为固件的基本输入/输出系统(BIOS)的软件组件,所述BIOS可以启动并且运行系统100的各种硬件组件。BIOS组件140或BSP 145还可以管理SoC/处理器130与各种组件例如一或多个外围组件150、输入/输出控制器135等之间的数据流。BIOS组件140或BSP 145可以包含存储在只读存储器(ROM)、闪速存储器或任何其它非易失性存储器中的程序或软件。在一些情况下,BIOS组件140和BSP145可以组合为单个组件。
输入/输出控制器135可以管理SoC/处理器130与包含一或多个外围组件150、输入器件160或输出器件165的其它器件之间的数据通信。输入/输出控制器135还可以管理未集成到器件105中的外围装置。在一些情况下,输入/输出控制器135可以包含到外部外围装置的物理连接或端口。
输入器件160可以表示器件105外部的向器件105或其组件提供输入的器件或信号。在一些情况下,输入器件160可以包含用户接口或与其它器件介接或其它器件之间的接口(图1中未示出)。在一些情况下,输入器件160可以是通过一或多个外围组件150与器件105介接的外围装置或者由输入/输出控制器135管理。
输出器件165可以表示器件105外部的被配置成接收来自器件105或其组件中的任何组件的输出的器件或信号。例如,输出器件165可以包含显示器、音频扬声器、打印器件或印刷电路板上的另一个处理器等。在一些情况下,输出器件165可以是通过一或多个外围组件150与器件105介接的外围装置或由输入/输出控制器135管理。
器件105的组件可以由被设计成执行其相应功能的通用电路系统或专用电路系统组成。这可以包含被配置成执行本文所述的功能的各种电路元件,例如,导电线、晶体管、电容器、电感器、电阻器、放大器或其它有源或无源元件。
图2展示了根据本公开的实例的支持用于主存储器的预取管理的示范性存储器系统或子系统。系统200可以包含如参考图1所描述的系统100的各方面并且可以包含器件210。器件210可以包含如参考图1所描述的器件105的各方面。器件210可以包含存储器子系统220、SoC/处理器250和存储装置260。SoC/处理器250可以是如参考图1所描述的SoC/处理器130的实例。存储器子系统220可以是如参考图1所描述的存储器器件180的实例。存储装置260可以是如参考图1所描述的存储器器件175的实例。
SoC/处理器250可以被配置成通过总线280与存储装置260一起操作并且通过总线270和275与存储器子系统220一起操作。在一些实例中,总线280可以被配置成支持外围组件互连快速(PCIe)信令。在其它情况下,总线280可以采用另一个协议,如嵌入式多媒体控制(eMMC)、通用闪速存储(UFS)等。在一些实例中,总线270可以被配置成支持LPDDR命令和地址(CA)信令,并且总线275可以被配置成支持LPDDR输入/输出(I/O)信令。在一些实例中,本地存储器阵列可以安置在与SoC/处理器250相同的衬底上并且可以被配置成充当用于SoC/处理器250的高速缓冲存储器255。
存储器子系统220可以包含非易失性存储器225和接口控制器230。非易失性存储器225可以是如参考图1所描述的存储器器件180的实例。接口控制器230可以是如参考图1所描述的接口控制器120的实例。接口控制器230可以被配置成根据LPDDR说明书(例如,页面大小、定时要求)通过总线270和275与SoC/处理器250一起操作。接口控制器230可以包含虚拟存储器库235,所述虚拟存储器库可以是如参考图1所描述的存储器器件170的实例。在一些实例中,虚拟存储器库235可以包含DRAM存储器单元并且可以被配置成根据LPDDR说明书进行操作。在一些实例中,虚拟存储器库235可以安置在与接口控制器230相同的衬底上。另外,接口控制器230可以被配置成通过总线271和276与非易失性存储器225一起操作。
在一些实例中,存储器子系统220可以进一步包含缓冲器240。在一些实例中,缓冲器240可以包含DRAM存储器单元。缓冲器240可以是如参考图1所描述的存储器器件170或存储器器件180的实例。另外,接口控制器230可以被配置成通过总线272和277与缓冲器240一起操作。在一些实例中,总线272可以是缓冲器CA总线。在一些实例中,总线277可以是接口(IF)缓冲器I/O总线。接口控制器230与总线272和277可以与DRAM协议相兼容。例如,接口控制器230和总线272和277可以利用LPDDR页面大小和定时。在一些实例中,SoC/处理器250可以被配置成通过总线275直接与缓冲器240一起操作。在一些实例中,缓冲器240可以被配置成具有与总线275相兼容的页面大小,所述总线可以支持SoC/处理器250对缓冲器240的直接存取。
在一些情况下,缓冲器240可以被配置成作为SoC/处理器250内的高速缓冲存储器255的逻辑增强操作。在一些实例中,缓冲器240的容量可以为约256M字节。在一些实例中,缓冲器240的容量可以至少部分地基于SoC/处理器250中的高速缓冲存储器255的大小。在一些情况下,由于潜在较小的寄生组件,例如,与金属线相关联的电感,缓冲器240可以具有相对较小的容量,相对于更大容量的DRAM器件,这可以促进存储器子系统220的提高的(例如,更快的)性能。缓冲器240的较小容量还可以在减少与周期性刷新操作相关联的系统功耗方面提供益处。
存储器子系统220可以以包含单芯片版本和多芯片版本的各种配置实施。单芯片版本可以在单个芯片上包含接口控制器230、虚拟存储器库235和非易失性存储器225。在一些实例中,缓冲器240还可以包含在单个芯片上。相比而言,多芯片版本可以在与包含存储器子系统220的一或多个其它成分的芯片分离的芯片中包含存储器子系统220的一或多个成分,包含接口控制器230、虚拟存储器库235、非易失性存储器225以及缓冲器240。例如,在一个多芯片版本中,相应分离的芯片可以包含接口控制器230、虚拟存储器库235和非易失性存储器225中的每一个。作为另一个实例,多芯片版本可以包含包括虚拟存储器库235和接口控制器230两者的一个芯片以及包含缓冲器240的分离的芯片。另外,分离的芯片可以包含非易失性存储器225。
多芯片版本的另一个实例可以包含包括缓冲器240和虚拟存储器库235两者的一个芯片。另外,分离的芯片可以包含接口控制器230和非易失性存储器225两者或者相应的分离的芯片可以包含接口控制器230和非易失性存储器225中的每一个。在多芯片版本的又另一个实例中,单个芯片可以包含非易失性存储器225和缓冲器240。另外,分离的芯片可以包含接口控制器230和虚拟存储器库235两者或者相应的分离的芯片可以包含接口控制器230和虚拟存储器库235中的每一个。在一些实例中,非易失性存储器225可以包含非易失性存储器单元阵列和DRAM单元阵列两者。在多芯片版本的一些情况下,接口控制器230、虚拟存储器库235以及缓冲器240可以安置在单个芯片上和分离的芯片上的非易失性存储器225上。
在一些实例中,非易失性存储器225可以包含非易失性存储器单元阵列(例如,FeRAM存储器单元)并且在一些情况下,可以包含本地存储器控制器(未示出)。包含在非易失性存储器225中的非易失性存储器阵列可以被配置成支持固定或可变页面大小(例如,64、128、192或256字节),在一些情况下,所述固定或可变页面大小不同于与SoC/处理器250相关联的页面大小。进一步地,接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以被配置成确定非易失性存储器225的可变页面大小。此外,非易失性存储器阵列可以被配置成具有例如比DRAM阵列(2048字节)的页面大小更小的页面大小(例如,64字节)。在一些实例中,非易失性存储器225可以被称为靠近SoC/处理器250的非易失性近存储器(例如,与存储装置260相比)。在存储器系统的上下文中,近存储器可以是指逻辑上和/或物理上放置在SoC/处理器250附近的存储器组件,以与其它存储器组件相比提供更快的存取速度。将非易失性存储器225配置为SoC/处理器250的近存储器可以例如限制或避免可能与SoC/处理器250从存储装置260检索数据相关联的开销。
由于存取存储装置260可能与不期望的延迟相关联,因此SoC/处理器250可以在意外的电源中断发生时将关键信息存储在非易失性存储器225中而不是存取存储装置260中。
接口控制器230可以被配置成通过总线271和276与非易失性存储器225一起操作。在一些实例中,总线271可以是FeRAM CA总线。在一些实例中,总线276可以是FeRAM接口(IF)总线。接口控制器230与总线271和276可以与非易失性存储器225的页面大小相兼容。在一些实例中,缓冲器240可以被配置成通过总线295促进将数据传输到非易失性存储器225。在一些实例中,非易失性存储器225可以被配置成通过总线290促进将数据传输到虚拟存储器库235并且从虚拟存储器库传输数据。
接口控制器230可以通过利用虚拟存储器库235或缓冲器240来支持低等待时间或降低的功率操作(例如,从SoC/处理器250的角度看)。例如,在从SoC/处理器250接收到读取命令时,接口控制器230可以尝试从虚拟存储器库235或缓冲器240检索数据,以传输到SoC/处理器250。如果受制于读取命令的数据不存在于虚拟存储器库235或缓冲器240中,则接口控制器230可以从非易失性存储器225检索数据,以将数据存储在虚拟存储器库235中并且还(例如,并发地)将数据到发送到SoC/处理器250。
与从虚拟存储器库235或缓冲器240检索数据相比,从非易失性存储器225检索数据可能与增加的等待时间相关联。在一些实例中,接口控制器230可以采用预取来主动地将数据从非易失性存储器225移动到虚拟存储器库235。以此方式,根据DRAM存储器存取协议,因为处理器可以直接存取存储在虚拟存储器库中的数据,所以可以增加器件210的存储器存取吞吐量。
接口控制器230可以通过预取存储器页面的一部分来进一步减少功耗和等待时间。例如,接口控制器230可以从SoC/处理器250接收对定位于非易失性存储器225的存储器页面中数据的请求。在一些情况下,所请求数据可能不定位于虚拟存储器库235或缓冲器240中。接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器,可以标识非易失性存储器225的存储器页面,以及存储器页面的包含所请求数据的部分或一或多个子页面。非易失性存储器225可以将包含所请求数据的子页面传输到虚拟存储器库235。在一些情况下,接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器还可以标识与包含所请求数据的存储器页面相关联的预取计数器的值,并且非易失性存储器225可以基于预取计数器的值将存储器页面的另外的子页面与包含所请求数据的一或多个子页面一起传输。例如,对于预取计数器的一个值(例如,逻辑01),非易失性存储器225可以将至少一个另外的子页面与包含所请求数据的一或多个子页面一起传输。
接口控制器230可以管理虚拟存储器库235的操作。例如,接口控制器230可以使用定位于虚拟存储器库235中的一组标记来标识虚拟存储器库235的存储来自非易失性存储器225的有效数据的部分。作为另一个实例,在从SoC/处理器250接收写入命令时,接口控制器230可以将数据存储在虚拟存储器库235处。定位于虚拟存储器库235中的另一组标记可以指示虚拟存储器库235的哪些部分存储从非易失性存储器225的对应内容修改的有效数据。存储在虚拟存储器库235处的有效数据可以包含根据来自SoC/处理器250的读取命令从非易失性存储器225检索的数据,或作为写入命令的一部分从SoC/处理器250接收到的数据。指示虚拟存储器库235的哪些部分存储有效数据或经修改数据的标记可以支持接口控制器230仅保存从非易失性存储器225中的对应内容修改的数据。此外,在从虚拟存储器库235移除时(例如,当SoC/处理器250不再需要数据),接口控制器230可以确定在何处存储数据。接口控制器230可以监测并且标识虚拟存储器库235的内容。
在一些情况下,接口控制器230可以包含计数器,所述计数器记录SoC/处理器250在某个时间间隔期间对虚拟存储器库235的内容进行存取尝试的数量(例如,量或频率)。举例来说,如果计数器显示SoC/处理器250在时间间隔期间的存取尝试的数量少于预定阈值,则在从虚拟存储器库235去除数据时,接口控制器230可以将经修改数据(也就是说,通过SoC/处理器250的存取尝试修改的数据)存储在非易失性存储器225中,因为接口控制器230可以基于相对少量的先前的存取尝试预期SoC/处理器250在一段时间期间不可能再次存取所述数据。或者,如果计数器指示SoC/处理器250在时间间隔期间的存取尝试的数量等于或大于预定阈值,则在从虚拟存储器库235中去除数据时,接口控制器230可以将数据存储在缓冲器240中,因为接口控制器230可以预期SoC/处理器250不久可能存取所述数据。鉴于整体系统要求,本领域的技术人员可以设计用于接口控制器230在做出此类决定中使用的各种标准(例如,包含计数器的阈值、时钟、时间间隔值等的标准)。
在一些实例中,接口控制器230可以记录SoC/处理器250对存储器页面的存储在虚拟存储器库处的某些部分或子页面进行的存取尝试的数量。在一些实例中,存储器页面的一部分可以包含存储器页面的一或多个子页面。接口控制器230可以基于所记录的对单独部分的存取尝试的数量而将所述部分传输到缓冲器。例如,接口控制器230可以将已经被存取至少阈值次数的部分传输到缓冲器240,并且可以将未被存取阈值次数的部分丢弃或回写到非易失性存储器225。用于存储器页面的预取计数器的值可以基于存储器页面的传输到缓冲器240的部分——例如,可以基于发送到虚拟存储器库235的部分与存储器页面的发送到缓冲器240的一或多个部分之间的关系。
另外,当SoC/处理器250的存取尝试的数量小于预定阈值时,接口控制器230可以基于计数器设置旁路指示器以将虚拟存储器库235的内容旁路保存到缓冲器240。然后,接口控制器230可以基于旁路指示器直接将虚拟存储器库235的经修改内容保存到非易失性存储器225。在一些情况下,在从虚拟存储器库235中去除数据时,接口控制器230可以确定自上次从非易失性存储器225检索到数据以来所述数据未被修改,并且可以基于所述确定丢弃数据(例如,不将数据写入缓冲器240或非易失性存储器225)。
在一些实例中,非易失性存储器225中的存储器阵列可以被配置成将数据存储在被配置成具有第一存储器页面大小(例如,64、128、192或256字节)的第一存储器页面中。在一些情况下,第一存储器页面可以被分隔成多个子页面。在一些实例中,存储器阵列可以被配置成具有各自共享共同的页面大小的多个存储器页面。例如,32千兆字节的存储器阵列可以包含5亿个页面,每个页面的页面大小为64字节。
虚拟存储器库235可以被配置成将数据存储在被配置成具有与第一存储器页面大小不同的第二存储器页面大小(例如,2056字节)的第二存储器页面中。在一些实例中,存储器子系统220还可以包含与第一存储器页面相关联的预取计数器。预取计数器可以被配置成存储对应于第一存储器页面的第一部分的第一值,所述第一部分响应于对定位于第一存储器页面中的数据的请求而被提供到存储器库。在一些情况下,预取计数器可以包含在接口控制器230中,或者在一些情况下包含包括在非易失性存储器阵列225的本地存储器控制器中,或包含两者。在一些情况下,控制器可以包含多个预取计数器。例如,控制器可以包含用于每个存储器页面、用于存储器阵列中的每个存储器子页面或用于某个组合的预取计数器。
缓冲器240可以被配置成接收对应于第一存储器页面的第二部分的数据。在一些情况下,预取计数器的值可以基于第一存储器页面的第二部分——例如基于第一存储器页面的第一部分与第二部分之间的关系。在一些情况下,接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以被配置成基于第一存储器页面的第一部分与第二部分之间的关系来修改预取计数器的值。存储器子系统220还可以包含第二计数器,所述第二计数器被配置成监测对第一存储器页面的第一部分的全部子页面或一个子页面执行的存取操作的数量。在一些情况下,在传输到缓冲器240的第一存储器页面的第二部分中所表示的数据可以基于所监测的存取操作的数量。在一些情况下,第二计数器可以包含在接口控制器230中,或者在一些情况下包含在包括在非易失性存储器阵列225的本地存储器控制器中。
在一些情况下,存储器子系统220可以包含用于接收对定位于非易失性存储器225的存储器页面中的第一数据的第一请求的构件,如接口控制器230。存储器子系统220可以包含用于标识与存储器阵列的存储器页面相关联的预取计数器的第一值的构件,如接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器。存储器子系统220可以用于至少部分地基于预取计数器的第一值将存储器页面的第一部分从存储器阵列传送到虚拟存储器库235的构件,如接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器,存储器页面的第一部分包含第一数据。存储器子系统220还可以包含用于将存储器页面的第一部分写入到虚拟存储器库235的构件,如接口控制器230。
另外,存储器子系统220可以包含用于将存储器页面的第二部分传送到缓冲器240的构件,如接口控制器230,第二部分至少包括第一数据的子集。存储器子系统220还可以包含用于至少部分地基于存储器页面的第一部分与存储器页面的第二部分之间的关系来修改预取计数器的第一值的构件,如接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器。存储器子系统220可以包含用于确定存储器页面的第二部分不同于存储器页面的第一部分的构件,如接口控制器230或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器。并且用于修改预取计数器的第一值的构件可以基于确定存储器页面的第二部分不同于存储器页面的第一部分来修改或调节预取计数器的第一值。
存储器子系统220还可以包含用于驱逐存储器页面的第二部分的构件,如缓冲器240,其中修改预取计数器的第一值至少部分地基于驱逐存储器页面的第二部分。存储器子系统220还可以包含用于监测对存储器页面的第一部分执行的存取操作的数量的构件,如接口控制器230,其中至少部分地基于存取操作的数量确定预取计数器的第二值。在一些实例中,用于监测存取操作的数量的构件监测对存储器页面的第一部分的一或多个子集或子页面执行的存取操作的数量。
存储器子系统220还可以包含用于确定对所述一或多个子集的子集执行的存取操作的第一数量满足阈值的构件,如接口控制器230。并且用于将数据传送到缓冲器240的构件可以至少部分地基于确定至少将子集传送到缓冲器240。在一些实例中,用于接收对第一数据的第一请求的构件进一步接收对定位于非易失性存储器225的存储器页面中的第二数据的第二请求。另外,用于从非易失性存储器225传送到虚拟存储器库235的构件还可以传送存储器页面的第二部分,其中存储器页面的第一部分不同于存储器页面的第二部分,并且其中存储器页面的第二部分包括第二数据。此外,用于从虚拟存储器库235传送到缓冲器240的构件还可以将存储器页面的第三部分从虚拟存储器库235传送到缓冲器240。基于存储器页面的第一部分、存储器页面的第二部分或存储器页面的第三部分或其任何组合之间的关系,用于修改预取计数器的值的构件可以进一步修改预取计数器的第一值。
用于标识预取计数器的值的构件可以进一步标识与存储器页面相关联的预取计数器的第二值,第二值不同于第一值。并且用于从非易失性存储器225传送到虚拟存储器库235的构件可以至少部分地基于预取计数器的第二值传送存储器页面的第二部分,其中存储器页面的第一部分不同于存储器页面的第二部分,并且其中存储器页面的第二部分包括第二数据。
图3展示了根据本公开的实例的支持用于主存储器的预取管理的示范性数据结构300-a和状态图300-b。数据结构300-a展示了非易失性存储器页面310、第一字段315和第二字段320。
非易失性存储器页面310可以用于存储大量数据。例如,非易失性存储器页面310可以是128或256字节。非易失性存储器页面310可以包含多个子页面,如子页面325、子页面330、子页面335和子页面340。每个子页面可以是64字节。在一些实例中,子页面可以被分组为部分,如部分345。
非易失性存储器页面310可以与第一字段315和第二字段320相关联。在一些实例中,第一字段315可以被配置成指示(并且可以更新以跟踪)对应的非易失性存储器页面310被SoC/处理器(例如,参考图2所描述的SoC/处理器250)存取(例如,读取或写入)的次数。在一些实例中,第一字段315可以被称为饱和计数器(SC)。在一些情况下,第一字段315可以包含两位信息,但应当理解的是,可以根据本文的教导使用任何数量的位。在一些实例中,可以将非易失性存储器页面310包含在FeRAM阵列中。
在一些实例中,第二字段320可以被配置成在接收到读取命令时指示对应的非易失性存储器页面310中要检索的数据的大小。数据的大小可以通过由SoC/处理器在一或多个先前的存取操作中对数据进行的存取模式来确定并且在一些情况下被称为预取大小。预取大小可以是响应于对包含在非易失性存储器页面310中的数据的读取命令而要读取的数据的量。例如,如果来自非易失性存储器页面310的数据受制于由接口控制器230接收到的读取命令,或者在一些情况下受制于包含在如图2所描述的非易失性存储器阵列225的本地存储器控制器接收到的读取命令(例如,预期来自SoC/处理器的存取),则接口控制器230,或者在一些情况下本地存储器控制器可以标识包含所请求数据和相关联第二字段320的值的子页面以确定预取大小。预取大小可以响应于读取请求指示要从非易失性存储器225读取的数据(其包含所请求数据并且因此至少与所请求数据一样大)的大小。
在一些实例中,存储在第二字段320中的逻辑状态可以指示对应的非易失性存储器页面310的预取大小。例如,“00”可以对应于64字节,“01”可以对应于128字节,“10”可以对应于192字节,并且“11”可以对应于256字节。在此类实例中,如果接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器接收到来自非易失性存储器页面310的对64字节数据的读取命令,并且相关联第二字段320为01,则接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以将所请求数据的预取大小标识为192字节,并且从非易失性存储器225读取192字节的数据,其中192字节包含所请求的64字节。例如,接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以标识所请求数据定位于子页面330中并且可以读取部分345。应当理解的是,第二字段320可以包含支持任何数量的逻辑状态的任何数量的位并且可以指示任何大小的预取大小。在一些实例中,第二字段320可以被称为预取(PF)计数器。
在一些实例中,子页面如子页面340可以包含第三字段350,所述第三字段可以用于指示(并且可以更新以跟踪)子页面340被存取的次数。在一些实例中,第三字段350可以被称为饱和计数器(SC)。第三字段350可以包含两位信息,但应当理解的是,可以根据本公开使用任何数量的位。
在一些实例中,接口控制器(例如,参考图2所描述的接口控制器230,图3中未示出)可以使用一组模式寄存器位以促进非易失性存储器(例如,参考图2所描述的非易失性存储器225)的SC和PF计数器功能。在一些实例中,模式寄存器可以建立存储器器件的各种操作模式(例如,不同的测试模式、不同的读取或写入模式、不同的性能模式)和与模式寄存器相关联的一组位,所述一组位可以被称为模式寄存器位,可以用于确定特定的操作模式。
在一些实例中,接口控制器可以在读取操作期间使用数据屏蔽反转(DMI)引脚以及数据来存取SC和PF计数器的内容。在一些实例中,接口控制器可以使用特殊的命令序列写入SC和PF计数器的内容。例如,在向非易失性存储器(例如,参考图2所描述的非易失性存储器225)发出的写入命令期间,接口控制器可以通过列地址引脚向与SC和PF计数器相关联的寄存器提供SC和PF计数器的内容。
状态图300-b展示了支持如本文所描述的特征和技巧的存储器系统或子系统的示范性操作特性。状态图300-b展示了非易失性存储器355、虚拟页面385和缓冲器390。非易失性存储器355可以是参考图2所描述的非易失性存储器225的实例。在一些实例中,非易失性存储器355包含非易失性存储器页面310。
虚拟页面385可以是虚拟存储器库235内的参考图2所描述的页面。在一些实例中,虚拟存储器库235可以是多个虚拟页面385的超集。缓冲器390可以是参考图2所描述的缓冲器240的实例。接口控制器(例如,参考图2所描述的接口控制器230,图3中未示出)可以执行或管理与非易失性存储器355、虚拟页面385和缓冲器390相关联的各种操作(例如,操作360到380)。在一些情况下,接口控制器可以通过请求另一个实体(例如,参考图2所描述的包含在非易失性存储器阵列225中的本地存储器控制器)执行操作来管理操作。
操作360可以包含将非易失性存储器页面310的内容从非易失性存储器355传输到虚拟页面385,并且将内容存储在虚拟页面385中。当SoC/处理器请求对应于非易失性存储器页面310的内容的不存在于虚拟页面385或缓冲器390中的数据时,操作360可以由接口控制器结合本地存储器控制器(例如,包含在如参考图2所描述的非易失性存储器阵列225中的本地存储器控制器)来执行。另外,接口控制器可以作为操作360的一部分,更新第一字段315的与非易失性存储器页面310相关联的值(例如,SC的值),以跟踪SoC/处理器对非易失性存储器页面310进行的存取事件的数量。
在一些实例中,操作360可以包含基于或响应于接收到对某个数据的请求而将非易失性存储器页面310的内容从非易失性存储器355传输到虚拟页面385。在其它实例中,在接收到对某个数据的请求之前(例如,在预取操作期间),操作360可以包含将非易失性存储器页面310的内容从非易失性存储器355传输到虚拟页面385。在一些情况下,在接收到对某个数据的请求之前或者在接收到对定位于非易失性存储器页面310的子页面中的某个数据的请求之后(例如,在部分预取操作期间),操作360可以包含将非易失性存储器页面310的存储在非易失性存储器355中的一部分传输到虚拟页面385。
例如,接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以接收对定位于子页面335中的数据的请求。接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以基于接收到所述请求而标识第二字段320的值并且可以基于第二字段320的值而传输非易失性存储器页面310的一部分。例如,接口控制器230,或者在一些情况下包含在非易失性存储器阵列225中的本地存储器控制器可以确定第二字段的值是逻辑10并且可以将大小为192字节的部分345传输到虚拟页面385。另外,接口控制器可以作为操作360的一部分,更新如第三字段350等第三字段的与子页面325、330和335相关联的值(例如,相应SC的值),以跟踪SoC/处理器对子页面325、330和335的存取事件的数量。
当由SoC/处理器请求的数据(例如,受制于由SoC/处理器发送到接口控制器的读取命令)存在于虚拟页面385中时,接口控制器可以执行操作365。作为操作365的一部分,接口控制器可以在不存取非易失性存储器355或缓冲器390的情况下从虚拟页面385检索所请求数据并且向SoC/处理器提供所请求数据。在一些实例中,提供所请求数据包含传输或存取对应于整个非易失性存储器页面的数据。另外,接口控制器可以更新第一字段315的与数据相关联的值(例如,SC的值),以跟踪SoC/处理器对非易失性存储器页面310的存取事件的数量。
在一些实例中,提供所请求数据包含传输或存取对应于非易失性存储器页面的一部分的数据。另外,接口控制器可以更新如第三字段350等第三字段的与数据相关联的值(例如,相应SC的值),以跟踪SoC/处理器对非易失性存储器页面310的子页面的存取事件的数量。
当虚拟页面385中的页面关闭并且第一字段315的与关闭页面相关联的值(例如,SC的值)不满足阈值时,接口控制器可以执行操作370。虚拟页面385可以包含参考图2所描述的虚拟存储器库235内的一或多个页面。当SoC/处理器不再需要与页面相关联的数据时,接口控制器可以确定关闭虚拟页面385中的页面。在确定关闭虚拟页面385中的页面时,接口控制器可以去除数据以使对应于所述页面的存储器空间可用于SoC/处理器。类似地,当虚拟页面385中的子页面关闭并且如第三字段350等相应第三字段的与关闭页面相关联的值(例如,SC的值)不满足阈值时,接口控制器可以执行操作370。
在一些情况下,接口控制器可以使用阈值来确定如何处置来自虚拟页面385的关闭页面的数据。在一些实例中,当对应于第一字段315的值(例如,SC的值)小于阈值时,接口控制器可以将来自关闭页面的数据旁路保存到缓冲器390。相反,接口控制器可以将来自关闭页面中的任何经修改数据存储于非易失性存储器355中,并且丢弃来自关闭页面中的任何未经修改的数据。在此类情况下,接口控制器可以确定来自关闭页面的数据是否包含SoC/处理器相对于存储在非易失性存储器355中的对应数据修改的一部分。在操作370期间,接口控制器可以将来自虚拟页面385的关闭页面的数据的任何经修改部分存储在非易失性存储器355中。进一步地,在确定数据未被修改之后,接口控制器可以丢弃来自关闭页面的任何未经修改的数据(也就是说,接口控制器可以将数据的未经修改部分旁路存储在非易失性存储器355中)。考虑到整个系统的要求,接口控制器可以基于各种标准确定阈值(例如,与对页面的存取数量相关联的预定值、与无法存取页面相关联的时间间隔的值)。
当接口控制器确定关闭虚拟页面385中的页面并且确定第一字段315的与关闭页面相关联的值(例如,SC的值)满足上文所描述的阈值时,接口控制器可以执行操作375。在一些实例中,当第一字段315的值(例如,SC的值)等于或大于阈值时,接口控制器可以将来自关闭页面的数据保存到缓冲器390,因为接口控制器可以确定SoC/处理器不久可能存取数据。如此,作为操作375的一部分,接口控制器可以将来自关闭页面的数据存储在缓冲器390中。类似地,接口控制器可以确定第三字段的与关闭页面的子页面相关联的值(例如,SC的值)满足上文所描述的阈值。在一些实例中,当第三字段350的相应值(例如,SC的值)等于或大于阈值时,接口控制器可以将来自非易失性存储器页面310的第二部分——例如,关闭页面的具有等于或大于阈值的第三字段的值的子页面——的数据保存到缓冲器390,因为接口控制器可以确定SoC/处理器不久可能存取那些子页面。例如,接口控制器可以将子页面325和子页面335保存到缓冲器390。
当接口控制器从缓冲器390驱逐页面时,所述接口控制器可以执行操作380。当页面在预定的持续时间内未被SoC/处理器存取时,接口控制器可以确定从缓冲器390驱逐页面。在一些情况下,来自所驱逐页面的数据可以包含由SoC/处理器相对于存储在非易失性存储器355中的对应数据修改的一部分。在此类情况下,作为操作380的一部分,接口控制器可以仅将所驱逐数据的经修改部分存储在非易失性存储器355中。另外,作为操作380的一部分,接口控制器可以更新(例如,重置为零)第一字段315的与所驱逐页面相关联的值(例如,SC的值)。进一步地,在确定数据未被修改之后,接口控制器可以丢弃数据(也就是说,接口控制器可以将所驱逐数据的未经修改的部分旁路存储在非易失性存储器355中)。类似地,接口控制器可以更新(例如,重置为零)如第三字段350等相应第三字段的与所驱逐子页面相关联的值。
另外,作为操作380的一部分,接口控制器可以更新第二字段320的值。例如,如果非易失性存储器页面310的存储到缓冲器390的第二部分的大小比非易失性存储器页面310的传输到虚拟页面385的第一部分的大小更小,则接口控制器可以减少第二字段的值。
图4A展示了根据本公开的实例的用于预取操作的示范性过程流程400-a。过程流程400-a描绘了涉及主机401和存储器子系统402的预取操作的各方面,所述主机可以是如参考图2所讨论的SoC/处理器的实例,所述存储器子系统可以是如参考图2所讨论的存储器子系统的实例。存储器子系统402可以包含:存储器控制器403,所述存储器控制器可以是如参考图2所讨论的接口控制器230或包含在非易失性存储器阵列225中的本地存储器控制器或其组合的实例;缓冲器404,所述缓冲器可以是如参考图2和3所讨论的缓冲器的实例;虚拟存储器库405,所述虚拟存储器库可以是如参考图2和3所讨论的虚拟存储器库或虚拟页面的实例;以及非易失性存储器406,所述非易失性存储器可以是如参考图2和3所讨论的非易失性存储器的实例;存储器控制器403、缓冲器404、虚拟存储器库405和非易失性存储器406可以通过一或多条数据总线彼此通信。
在410处,主机401可以传输对存储在存储器子系统402中的数据的存取请求(例如,读取或写入数据)。在一些情况下,可以根据某个存储器存取协议(例如,DRAM存储器存取协议)传输存取请求。在一些实例中,可以将存取请求直接发送到存储器子系统402的一或多个组件。例如,可以将存取请求直接传输到缓冲器404和/或虚拟存储器库405,所述缓冲器和/或所述虚拟存储器库两者均可以根据由主机401使用的某个存储器存取协议进行操作。在一些实例中,存取请求可以是读取存储在存储器子系统402中的64字节数据的请求。在其它实例中,存取请求可以是读取存储在存储器子系统402中的128字节数据的请求等。另外或可替代地,存取请求可以通过存储器控制器403间接地发送到存储器子系统402的组件。例如,存取请求可以发送到存储器控制器403,所述存储器控制器可以将存取请求中继到缓冲器。
在415处,存储器控制器403可以基于接收到来自主机401的存取请求而存取所请求数据。存储器控制器可以将从主机401接收到的存取请求转发到缓冲器404、虚拟存储器库405和非易失性存储器406的一或多个。在一些情况下,存储器控制器可以将存取请求转发到缓冲器404,然后转发到虚拟存储器库405,并且最后转发到非易失性存储器406——例如,在确定所请求数据不在缓冲器404或虚拟存储器库405中之后。在一些情况下,存储器控制器403可以将存取请求仅转发到非易失性存储器406——例如,在确定所请求数据不在缓冲器404或虚拟存储器库405中之后。在一些实例中,非易失性存储器406可以包含FeRAM存储器阵列。
在420处,缓冲器404、存储器控制器403可以确定所请求数据未定位于缓冲器404或虚拟存储器库405中。
在425处,存储器控制器403可以标识定位于非易失性存储器406中的含有所请求数据非易失性存储器页面(例如,图3的非易失性存储器页面310)。非易失性存储器页面可以被分隔成多个子页面。在一些实例中,存储器控制器403还可以标识非易失性存储器页面的含有所请求数据的子页面(例如,图3的子页面330)。在一些情况下,含有所请求数据的子页面可以是64字节。在其它实例中,所请求数据的大小可以是128字节,并且两个子页面可以含有所请求数据。
另外,存储器控制器403可以标识与非易失性存储器页面相关联的预取计数器的值(例如,图3的第二字段320)。在一些情况下,可以用逻辑00的值初始化预取计数器。在其它情况下,可以用逻辑11的值初始化预取计数器。用逻辑11初始化预取计数器的值可以使非易失性存储器406最初(例如,在上电时)传输更多的数据,从而增加功耗和吞吐量。相反地,用逻辑00初始化预取计数器的值可以使非易失性存储器406最初传输更少的数据,从而降低功率并且潜在地降低吞吐量。在一些实例中,所选初始化值对应于器件的功率模式(例如,高低功率模式)或操作模式(例如,高吞吐量模式)。
在430处,存储器控制器403可以基于预取计数器的值标识非易失性存储器页面的含有所请求数据的第一部分(例如,图3的部分345)。第一部分可以至少包含含有所请求数据的子页面。在一些实例中,第一部分的大小可以基于预取计数器的值。例如,如果预取计数器的值等于逻辑00,则第一部分的大小可以等于64字节(例如,第一部分可以仅包含含有数据的子页面)。在另一个实例中,如果预取计数器的值等于逻辑01,则第一部分的大小可以等于128字节(例如,第一部分可以包含含有所请求数据的子页面以及第二子页面)。在另一个实例中,如果预取计数器的值等于逻辑10,则第一部分的大小可以等于192字节(例如,第一部分可以包含含有所请求数据的子页面、第二子页面和第三子页面)等。
在一些实例中,所请求数据的大小可以覆盖预取计数器值。例如,如果所请求数据的大小是128字节,并且预取计数器值对应于64字节的大小,则第一部分的大小可以等于128字节(例如,第一部分可以包含含有所请求数据的两个子页面)。可以可替代地使用并且基于本公开考虑预取计数器的值与第一部分的大小之间的其它映射。例如,逻辑00的预取值可以对应于128字节,逻辑01的预取值可以对应于256字节,逻辑10的预取值可以对应于384字节等。
在一些实例中,存储器控制器403可以基于一或多个因素或指示器(例如,对非易失性存储器页面中的子页面执行的历史存取操作)选择哪些子页面与含有所请求数据的子页面一起包含。例如,存储器控制器403可以标识存储器页面的子页面,而不是存储器页面的含有所请求数据的子页面先前在虚拟存储器库405中存取,并且可以在随后的读取操作中将所标识子页面与含有所请求数据的子页面一起传输。以此方式,存储器控制器403可以预期来自主机401的随后数据请求并且避免与存取非易失性存储器406相关联的延迟。
例如,存储器控制器403可以监测存储在虚拟存储器库405中的数据并且标识哪些子页面对应于在虚拟存储器库405中存取的数据。在一些情况下,如果数据可以移动到缓冲器404,则存储器控制器403可以标识对应于子页面的数据已经被存取超过阈值次数(例如,不止一次),并且可以在对非易失性存储器页面中的数据的随后存取请求中将所标识子页面与含有在随后存取请求中请求的数据的子页面一起传输。在一些实例中,存储器控制器403可以跟踪对对应于非易失性存储器页面的每个子页面的数据执行的存取操作的数量,并且可以在特定时间段内以最大存取尝试将子页面与含有所请求数据的子页面一起传输。可以使用相应饱和计数器跟踪对非易失性存储器页面的每个子页面执行的存取操作的数量。
另外,存储器控制器403可以保持跟踪何时对非易失性存储器页面的子页面执行存取操作。例如,存储器控制器403可以选择在随后传输来自非易失性存储器页面的数据中包含最近存取的子页面。另外,存储器控制器403可以标识两个子页面经常一起被存取,将预取值设置为逻辑01,并且当子页面之一中的数据被存取时将两个子页面一起传输。
在435处,存储器子系统402可以将对应于非易失性存储器页面的第一部分的数据传输到主机401,或者存储器控制器403可以使非易失性存储器406将对应于非易失性存储器页面的第一部分的数据传输到主机。因此,虚拟存储器库405可以存储对应于非易失性存储器页面的第一部分的数据。在一些实例中,存储对应于非易失性存储器页面的第一部分的数据包含存储对应于用于子页面中的每个子页面的相应饱和计数器的数据。
在440处,存储器子系统402可以将对应于非易失性存储器页面的第一部分的数据传输到虚拟存储器库405,或者存储器控制器403可以使非易失性存储器406将对应于非易失性存储器页面的第一部分的数据传输到虚拟存储器库。
在一些实例中,410、415和420可以从过程流程400-a中省去。例如,存储器控制器403可以优先地将非易失性存储器页面和/或非易失性存储器子页面移动到虚拟存储器库405。在一些情况下,存储器控制器403可以基于预取计数器的值将非易失性存储器页面的一部分移动到虚拟存储器库405。也就是说,存储器控制器403可以基于与非易失性存储器页面相关联的预取计数器的值标识非易失性存储器页面的要被移动到虚拟存储器库的子页面并且将非易失性存储器页面的另外的子页面移动到虚拟存储器库。
图4B展示了根据本公开的实例的用于预取操作的示范性过程流程400-b。过程流程400-b描绘了涉及主机401和存储器子系统402的预取操作的各方面,所述存储器子系统可以包含存储器控制器403、缓冲器404、虚拟存储器库405和非易失性存储器406。在过程流程400-b中执行的操作可以是对如参考图4A所讨论的过程流程400-a执行的操作的后续。
在445处,存储器子系统402可以监测对非易失性存储器页面的第一部分执行的存取操作。例如,存储器子系统402可以(例如,使用相应的饱和计数器)跟踪对非易失性存储器页面的第一部分的每个子页面执行的存取操作的相应数量。虚拟存储器库405还可以保持跟踪存储在子页面中的哪些数据是有效的——例如存储在虚拟存储器库405中的哪些数据与存储在非易失性存储器406中的数据相匹配(例如,未被覆写)。
在450处,主机401可以传输多个对存储在存储器子系统402中的数据的存取请求。如上所述,存取请求可以根据某个存储器存取协议传输并且可以直接地或间接地传输到存储器子系统402的组件。
在455处,存储器控制器403可以将存取请求转发到缓冲器404、虚拟存储器库405或非易失性存储器406中的一或多个。在一些实例中,存取请求可以请求不定位于缓冲器404处或不定位于虚拟存储器库405处的数据(这可能被称为“错过”)。在错过之后,存储器控制器403可以将丢失通知给主机401并且指示在传送所请求数据中将会延迟。然后,存储器控制器403可以存取非易失性存储器页面并且可以将非易失性存储器的含有所请求数据的一部分或子页面传输到虚拟存储器库405和/或主机401,或者使非易失性存储器406将非易失性存储器的含有所请求数据的一部分或子页面传输到虚拟存储器库和/或主机。
在460处,存储器子系统402可以标识非易失性存储器页面的第二部分。在一些实例中,对应于非易失性存储器页面的第二部分的数据可以等同于对应于非易失性存储器页面的第一部分的数据或与其重叠。在其它实例中,对应于非易失性存储器页面的第二部分的数据可以不同于对应于非易失性存储器页面的第一部分的数据或与其不重叠。
例如,非易失性存储器页面的第一部分可以包含对应于第一子页面、第二子页面和第三子页面的数据,而非易失性存储器页面的第二部分可以包含对应于第一子页面和第三子页面的数据。在一些实例中,存储器子系统402基于所监测的存取操作确定哪些数据对应于哪些子页面以包含在第二部分中。例如,存储器子系统402可以基于确定已经对两个子页面中的每个子页面执行相应数量的存取操作(例如,多于阈值)来选择用于包含在第二部分中的第一子页面和第三子页面,并且可以基于确定对第二子页面执行相应数量的存取操作(例如,少于阈值)使第二子页面不包含在第二部分中。在一些情况下,第二子页面可以含有由主机401在步骤410处最初请求的数据。
在465处,存储器子系统402可以将对应于非易失性存储器页面的第二部分的数据传输到缓冲器404。在一些实例中,在关闭在虚拟存储器库405处包含非易失性存储器页面的第一部分的虚拟页面之后——例如当SoC/处理器不再需要存取虚拟页面或当虚拟页面在一定时间段内未被存取时,存储器子系统402可以将数据传输到缓冲器404。因此,缓冲器404可以存储对应于非易失性存储器页面的第二部分的数据。
在470处,缓冲器404可以驱逐非易失性存储器页面的第二部分。例如,在经过一定时间段之后或数据在一定时间段内未被存取之后,缓冲器404可以驱逐对应于非易失性存储器页面的第二部分的数据。缓冲器404还可以将已经被修改的数据回写到非易失性存储器406。另外,可以重置与所驱逐页面或子页面相关联的饱和计数器。
在475处,存储器子系统402可以更新与在过程流程400-a的425处标识的非易失性存储器页面相关联的预取计数器。对预取计数器的更新可以基于对应于存储器页面的第二部分的所驱逐数据与对应于存储器页面的第一部分的数据之间的关系。例如,存储器子系统402可以确定对应于非易失性存储器页面的第二部分的数据的大小小于对应于非易失性存储器页面的第一部分的数据的大小并且可以减少预取计数器的值。在一些实例中,存储器子系统402可以确定对应于非易失性存储器页面的第二部分的数据的大小大于对应于非易失性存储器页面的第一部分的数据的大小——例如当由主机401请求存储器页面中但位于存储器页面的第一部分的外部的另外的数据时——并且可以增加预取计数器的值。
在一些情况下,存储器子系统402可以选择预取计数器的值以对应于从缓冲器驱逐的第二部分的大小。例如,如果所驱逐第二部分的大小是256字节,则预取计数器的值可以更新为逻辑11。在其它实例中,存储器子系统402可以确定对应于写入到缓冲器404的数据的子页面不同于对应于写入到虚拟存储器库405的数据的子页面中的一或多个子页面并且可以修改预取计数器的值。在一些实例中,在475之前,存储器子系统402可以更新预取计数器。例如,在465之后,存储器子系统402可以类似地更新预取计数器的值。
在475之后,过程流程400-b可以返回到过程流程400-a的410或425。在一些实例中,主机401传输对定位于与上文相同的非易失性存储器页面中的数据的请求。如先前所讨论的,可以确定所请求数据不定位于缓冲器404或虚拟存储器库405中,并且存储器子系统402可以将相同的非易失性存储器页面标识为含有所请求数据。而且如先前所讨论的,存储器子系统402可以基于预取计数器的值标识存储器页面的第三部分。在一些实例中,基于预取计数器的经更新值,所标识第三部分可以不同于第一所标识部分。例如,基于含有所请求数据的第一子页面和值为逻辑10的预取计数器,第一所标识部分可以对应于第一子页面、第二子页面、第三子页面。虽然基于含有所请求数据的第一子页面和更新值为逻辑01的预取计数器——例如基于存储器子系统标识第二子页面被移动到缓冲器404而第三子页面未被移动到缓冲器,第三部分可以对应于第一子页面和第三子页面。
图5示出了根据本公开的实例支持用于主存储器的预取管理的存储器控制器505的框图500。存储器控制器505包含存储器接口组件510、预取组件515、数据管理组件520和存取管理组件525。这些组件中的每个组件可以(例如,通过一或多条总线)直接或间接地彼此通信。在一些实例中,存储器控制器505管理跨存储器子系统的操作。也就是说,存储器控制器505可以管理或促进存储器阵列、虚拟存储器库与缓冲器之间的通信。例如,存储器控制器505可以使存储器子系统的某些组件写入或读取数据。
存储器接口组件510可以管理从外部处理器或SoC接收到的命令。例如,存储器接口组件510可以从处理器接收对定位于与存储器接口组件510耦接的存储器阵列的存储器页面中的数据的请求。
预取组件515可以基于接收到的对定位于存储器阵列的存储器页面中的数据的请求来管理预取操作。例如,预取组件515可以包含预取计数器530并且可以标识预取计数器530的与含有所请求数据的存储器页面相关联的值。
数据管理组件520可以基于预取计数器530的所标识值将存储器页面的一部分从存储器阵列传送到存储器库,其中所述部分包含所请求数据。在一些实例中,数据管理组件520将存储器页面的部分写入到存储器库。
存取管理组件525可以监测对存储器页面的部分执行的同时存储在存储器库处的存取操作的数量。在一些实例中,存取管理组件525跟踪存储器页面和/或存储器页面的部分被存取的次数。在一些情况下,存取管理组件525包含一或多个计数器535(例如,饱和计数器)以保持跟踪对存储器页面执行的存取操作的数量。可以基于所监测的存取操作的数量来确定预取计数器530的第二值。例如,存取管理组件525可以监测对存储器页面的部分的子集或子页面执行的存取操作的数量。存取管理组件525可以确定对子页面执行的存取操作的数量满足阈值——例如,相应计数器535的值大于阈值——并且可以基于确定来将对应于子页面的数据传送到缓冲器。
在一些实例中,数据管理组件520还可以将存储器页面的另一个部分传送到缓冲器。在一些实例中,其它部分包含所请求数据。在一些情况下,预取组件515基于存储器页面的第一部分与存储器页面的第二部分之间的关系修改预取计数器530的值。例如,预取组件515可以确定由存储器页面的第二部分表示的数据不同于由存储器页面的第一部分表示的数据,并且可以基于确定所述部分是不同的来修改或调节预取计数器530的值(例如,递增或递减)。
数据管理组件520还可以使缓冲器驱逐存储器页面的其它部分。在一些情况下,预取组件515基于其它部分从缓冲器被驱逐——例如响应于驱逐——来修改预取计数器530的值。
在一些实例中,存储器接口组件510可以接收对定位于存储器阵列的存储器页面中的数据的第二请求并且可以确定所请求数据不定位于虚拟存储器库或缓冲器中。因此,数据管理组件520可以存取存储器阵列并且将包含存储器页面的第二数据的第二部分传送到存储器库,其中存储器页面的第一部分(例如,其可以包含子页面1和子页面3)不同于存储器页面的第二部分(例如,其可以包含子页面2),并且其中存储器页面的第二部分包括第二数据。
数据管理组件520之后可以将对应于存储器页面的第三部分(例如,其可以包含子页面1、子页面2和子页面3)的数据传送到缓冲器,并且预取组件515可以基于存储器页面的传送到存储器库的第一部分、存储器页面的传送到存储器库的第二部分与存储器页面的传送到缓冲器的第三部分之间的关系来修改预取计数器530的值。例如,预取组件515可以基于确定对应于三个子页面的数据从缓冲器被驱逐,而两个子页面被传输到虚拟存储器库来使预取计数器530的值递增。
在更新了预取计数器530之后,存储器接口组件可以接收对定位于存储器阵列的存储器页面中的数据的另一个请求。在一些情况下,第一数据和第二数据是相同的,而在其它情况下,第一数据和第二数据是不同的。预取组件515可以标识与存储器页面相关联的预取计数器530的第二值(例如,经更新值),并且数据管理组件520可以基于预取计数器530的经更新值将存储器页面的另一个部分从存储器阵列传送到存储器库。在一些情况下,其它部分包含最新请求中所请求的数据,其它部分不同于传输到存储器库的原始的第一部分。
图6示出了根据本公开的实例展示了用于主存储器的预取管理的方法600的流程图。方法600的操作可以由如本文所描述的存储器系统、子系统或其组件实施。例如,方法600的操作可以由如参考图2所描述的存储器控制器(如接口控制器230)执行,并且可以执行代码集以控制器件的功能性元件执行下文的功能。另外或可替代地,存储器控制器可以使用专用硬件执行下文所描述的功能的各方面。
在框605处,存储器控制器可以接收对定位于器件的存储器阵列的存储器页面中的第一数据的第一请求。框605的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框605的操作的一些或全部可以由如参考图5所描述的存储器接口组件执行。
在框610处,存储器控制器可以标识与存储器阵列的存储器页面相关联的预取计数器的第一值。框610的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框610的操作的一些或全部可以由如参考图5所描述的预取组件执行。
在框615处,存储器控制器可以至少部分地基于预取计数器的第一值将存储器页面的第一部分从器件的存储器阵列传送到存储器库,存储器页面的第一部分包含第一数据。框615的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框615的操作的一些或全部可以由如参考图5所描述的数据管理组件执行。
描述了一种装置。在一些实例中,装置可以包含:用于接收对定位于器件的存储器阵列的存储器页面中的第一数据的第一请求的构件;用于标识与存储器阵列的存储器页面相关联的预取计数器的第一值的构件;以及用于至少部分地基于预取计数器的第一值将存储器页面的第一部分从器件的存储器阵列传送到存储器库的构件,存储器页面的第一部分包括第一数据。
在一些实例中,装置可以包含:用于将存储器页面的第二部分传送到器件的缓冲器的构件,第二部分至少包括第一数据的子集;以及用于至少部分地基于存储器页面的第一部分与存储器页面的第二部分之间的关系来修改预取计数器的第一值的构件。在一些实例中,装置可以包含:用于确定存储器页面的第二部分不同于存储器页面的第一部分的构件,其中预取计数器的第一值是至少部分地基于确定存储器页面的第二部分不同于存储器页面的第一部分来修改的。
在一些实例中,装置可以包含用于由缓冲器驱逐存储器页面的第二部分的构件,其中预取计数器的第一值是至少部分地基于驱逐存储器页面的第二部分来修改的。在一些实例中,修改预取计数器的第一值可以包含至少部分地基于确定存储器页面的第一部分不同于存储器页面的第二部分来调节预取计数器的第一值。
在一些实例中,装置可以包含:用于将存储器页面的第一部分写入到存储器库的构件;以及用于监测对存储器页面的第一部分执行的存取操作的数量的构件,其中至少部分地基于存取操作的数量确定预取计数器的第二值。在一些实例中,监测所执行的存取操作的数量可以包含监测对存储器页面的第一部分的一或多个子集执行的存取操作的数量。
在一些实例中,装置可以包含:用于确定对所述一或多个子集中的子集执行的存取操作的第一数量满足阈值的构件;以及用于至少部分地基于确定来至少将子集传送到器件的缓冲器的构件。在一些实例中,装置可以包含:用于接收对定位于存储器阵列的存储器页面中的第二数据的第二请求的构件;以及用于将存储器页面的第二部分从存储器阵列传送到存储器库的构件,其中存储器页面的第一部分不同于存储器页面的第二部分,并且其中存储器页面的第二部分包括第二数据。
在一些实例中,装置可以包含:用于将存储器页面的第三部分从器件的存储器库传送到缓冲器的构件;以及用于至少部分地基于存储器页面的第一部分、存储器页面的第二部分或存储器页面的第三部分或其任何组合之间的关系来修改预取计数器的第一值的构件。在一些实例中,装置可以包含:用于接收对定位于存储器阵列的存储器页面中的第二数据的第二请求的构件;用于标识与存储器页面相关联的预取计数器的第二值的构件,其中第二值不同于第一值;以及用于至少部分地基于预取计数器的第二值将存储器页面的第二部分从存储器阵列传送到存储器库的构件,其中存储器页面的第一部分不同于存储器页面的第二部分,并且其中存储器页面的第二部分包括第二数据。
图7示出了根据本公开的实例展示了用于主存储器的预取管理的方法700的流程图。方法700的操作可以由如本文所描述的存储器系统、子系统或其组件实施。例如,方法700的操作可以由如参考图2所描述的存储器控制器(如接口控制器230)执行,并且可以执行代码集以控制器件的功能性元件执行下文的功能。另外或可替代地,存储器控制器可以使用专用硬件执行下文所描述的功能的各方面。
在框705处,存储器控制器可以接收对定位于器件的存储器阵列的存储器页面中的第一数据的第一请求。框705的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框705的操作的一些或全部可以由如参考图5所描述的存储器接口组件执行。
在框710处,存储器控制器可以标识与存储器阵列的存储器页面相关联的预取计数器的第一值。框710的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框710的操作的一些或全部可以由如参考图5所描述的预取组件执行。
在框715处,存储器控制器可以至少部分地基于预取计数器的第一值将存储器页面的第一部分从器件的存储器阵列传送到存储器库,存储器页面的第一部分包含第一数据。框715的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框715的操作的一些或全部可以由如参考图5所描述的数据管理组件执行。
在框720处,存储器控制器可以将存储器页面的第二部分传送到器件的缓冲器,第二部分至少包括第一数据的子集。框720的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框720的操作的一些或全部可以由如参考图5所描述的数据管理组件执行。
在框725处,存储器控制器可以至少部分地基于存储器页面的第一部分与存储器页面的第二部分之间的关系来修改预取计数器的第一值。框725的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框725的操作的一些或全部可以由如参考图5所描述的预取组件执行。
图8示出了根据本公开的实例展示了用于主存储器的预取管理的方法800的流程图。方法800的操作可以由如本文所描述的存储器系统、子系统或其组件实施。例如,方法800的操作可以由如参考图2所描述的接口控制器(如接口控制器230)执行,所述接口控制器可以执行代码集以控制器件的功能性元件执行下文的功能。另外或可替代地,接口控制器230可以使用专用硬件执行下文所描述的功能的各方面。
在框805处,存储器控制器可以接收对定位于器件的存储器阵列的存储器页面中的第一数据的第一请求。框805的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框805的操作的一些或全部可以由如参考图5所描述的存储器接口组件执行。
在框810处,存储器控制器可以标识与存储器阵列的存储器页面相关联的预取计数器的第一值。框810的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框810的操作的一些或全部可以由如参考图5所描述的预取组件执行。
在框815处,存储器控制器可以至少部分地基于预取计数器的第一值将对应于存储器页面的第一部分的数据从器件的存储器阵列传送到存储器库,存储器页面的第一部分包含第一数据。框815的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框815的操作的一些或全部操作可以由如参考图5所描述的数据管理组件执行。在一些情况下,存储器控制器将存储器页面的第一部分或对应于存储器页面的第一部分的数据写入到存储器库。
在一些情况下,存储器控制器可以将对应于存储器阵列的第二部分的数据从器件的存储器库传送到缓冲器。在一些情况下,存储器阵列的第二部分可以包含第一所请求数据。存储器阵列的第一部分可以不同于存储器阵列的第二部分——例如,第一部分可以包含存储器页面的三个子页面,而存储器阵列的第二部分可以包含存储器页面的两个子页面。在一些情况下,第一部分可以包含存储器页面的三个子页面,而存储器阵列的第二部分可以包含存储器页面的四个子页面(例如,在随后“错过的”读取发生的情况下)。
存储器控制器可以基于存储器页面的第一部分与存储器页面的第二部分之间的关系来修改预取计数器的第一值。例如,存储器控制器可以确定存储器页面的第二部分不同于存储器页面的第一部分并且可以基于确定存储器页面的第二部分不同于存储器页面的第一部分来修改预取计数器的第一值。在一些情况下,存储器控制器使缓冲器驱逐存储器页面的第二部分(例如,在一定时间段已经过去之后)。存储器控制器可以基于驱逐存储器页面的第二部分来修改预取计数器的值。例如,存储器控制器可以等待更新预取计数器直到驱逐发生之后。
在驱逐之后,存储器控制器可以基于确定对应于存储器页面的第一部分的数据和对应于存储器页面的第二部分的数据是不同的来调节预取计数器的第一值。例如,存储器控制器可以基于确定与存储器页面的第二部分相比,存储器页面的第一部分对应于更少的子页面(例如,第一部分对应于三个子页面并且第二部分对应于四个子页面)来使预取计数器的第一值递增。在另一个实例中,存储器控制器可以基于确定与存储器页面的第二部分相比,存储器页面的第一部分对应更多的子页面来使预取计数器的值递减。在又另一个实例中,存储器控制器可以基于确定与存储器页面的第二部分相比,存储器页面的第一部分对应于至少一个不同的子页面来使预取计数器的第一值递增。
存储器控制器还可以监测对存储器页面的第一部分执行的许多存取操作,并且预取计数器的第二值可以基于所监测的存取操作的数量。例如,存储器控制器可以监测对存储器页面的第一部分的每个子集或子页面执行的存取操作的数量,并且存储器页面的第二部分的子集或子页面的数量可以基于所监测的存取操作的数量。例如,存储器控制器可以基于确定包含在第二部分中的两个子页面被存取超过阈值次数,而其它子页面被存取少于阈值次数来选择将三个子页面中的两个子页面包含在存储器页面的第二部分中。
在一些情况下,存储器控制器可以确定存取虚拟存储器库或缓冲器中某个数据的第二请求已经“错过”。因此,存储器控制器可以将所请求数据定位于存储器阵列中并且将数据移动到虚拟存储器库。在一些实例中,第二所请求数据与第一所请求数据定位于相同的存储器页面中,并且存储器控制器将存储器页面的第二部分传送到虚拟存储器库,其中存储器页面的第二部分不同于存储器页面的第一部分并且包含第二所请求数据。
在此类情况下,存储器控制器可以将对应于第三部分的数据传送到缓冲器,所述数据包含对应于来自存储器页面的第一部分的子页面和来自存储器页面的第二部分的子页面的数据。在缓冲器驱逐存储器页面的第三部分之后,存储器控制器可以基于存储器阵列的第一部分、第二部分和第三部分之间的关系来修改存储器控制器的第一值。例如,如果第一部分对应于第一组两个子页面,第二部分对应于第二组两个子页面,并且第三部分对应于所有四个子页面,则存储器控制器可以使预取计数器的值递增。
在框820处并且在预取计数器被更新为第二值之后,存储器控制器可以接收对定位于存储器阵列的存储器页面中的第二数据的第二请求。框820的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框820的操作的一些或全部可以由如参考图5所描述的存储器接口组件执行。在一些情况下,第二数据可以与第一数据相同。
在框825处,存储器控制器可以标识与存储器页面相关联的预取计数器的第二值,第二值不同于第一值。框825的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框825的操作的一些或全部可以由如参考图5所描述的预取组件执行。
在框830处,存储器控制器可以至少部分地基于预取计数器的第二值将存储器页面的第二部分从存储器阵列传送到存储器库,其中存储器页面的第一部分不同于存储器页面的第二部分,并且其中存储器页面的第二部分包括第二数据。框830的操作可以根据参考图3-4所描述的方法执行。在某些实例中,框830的操作的一些或全部可以由如参考图5所描述的数据管理组件执行。
描述了一种装置。在一些实例中,所述装置可以包含:存储器阵列,所述存储器阵列被配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;以及与所述第一存储器页面相关联的预取计数器,所述预取计数器被配置成存储与所述第一存储器页面的第一部分相对应的第一值,所述第一部分响应于对定位于所述第一存储器页面中的数据的请求而被提供到所述存储器库。
在一些实例中,装置可以包含被配置成接收第一存储器页面的第二部分的缓冲器,其中预取计数器的第一值至少部分地基于第一存储器页面的第二部分。在一些实例中,所述装置可以包含控制器,所述控制器被配置成至少部分地基于所述第一存储器页面的所述第一部分与所述第一存储器页面的所述第二部分之间的关系来修改所述预取计数器的所述第一值。
在一些实例中,所述装置可以包含第二计数器,所述第二计数器被配置成监测对所述第一存储器页面的所述第一部分执行的存取操作的数量,其中所述第一存储器页面的所述第二部分至少部分地基于所述第二计数器的第二值。在一些实例中,所述装置可以包含控制器,所述控制器被配置成监测对所述第一存储器页面的所述第一部分执行的存取操作。在一些实例中,所述第一存储器页面被分隔成所述第一存储器页面的多个子集。
在一些实例中,所述存储器阵列被配置成存储多个存储器页面,所述多个存储器页面各自被配置成具有所述第一存储器页面大小。在一些实例中,所述装置可以包含多个预取计数器,所述多个预取计数器各自与所述多个存储器页面的对应存储器页面相关联,其中所述多个预取计数器中的每个预取计数器被配置成存储对应于相应存储器页面的相应部分的相应值,并且其中所述相应部分响应于对定位于所述相应存储器页面中的数据的相应请求。
描述了一种装置。在一些实例中,所述装置可以包含:配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;预取计数器,其中所述预取计数器的第一值与所述第一存储器页面相关联;以及控制器,所述控制器与所述存储器阵列、所述存储器库耦接并且被配置成与主机介接。在一些实例中,所述控制器可以是可操作的以:接收对定位于所述第一存储器页面中的第一数据的第一请求;标识所述预取计数器的所述第一值;并且至少部分地基于所述预取计数器的所述第一值将所述第一存储器页面的第一部分从所述存储器阵列传送到所述存储器库,所述第一存储器页面的所述第一部分包括所述第一数据。
在一些实例中,装置可以包含缓冲器,并且控制器可以是可操作的以将第一存储器页面的第二部分从存储器库传送到缓冲器。所述控制器可以是可操作的以至少部分地基于所述第一存储器页面的所述第一部分与所述第一存储器页面的所述第二部分之间的关系来修改所述预取计数器的所述第一值。在一些实例中,所述控制器可以是可操作的以确定所述第一存储器页面的所述第二部分不同于所述第一存储器页面的所述第一部分,其中修改所述预取计数器的所述第一值至少部分地基于确定所述第一存储器页面的所述第二部分不同于所述第一存储器页面的所述第一部分。
在一些实例中,所述控制器可以是可操作的以至少部分地基于确定所述第一存储器页面的所述第一部分不同于所述第一存储器页面的所述第二部分来调节所述预取计数器的所述第一值。在一些实例中,所述控制器可以是可操作的以监测对所述第一存储器页面的所述第一部分执行的存取操作的数量,其中至少部分地基于所述存取操作的数量确定所述预取计数器的第二值。在一些实例中,所述控制器可以是可操作的以监测对所述第一存储器页面的所述第一部分的一或多个子集执行的所述存取操作的数量。
描述了一种装置。在一些实例中,装置可以包含:存储器阵列,所述存储器阵列根据第一存储器页面大小配置;存储器库,所述存储器库根据不同于第一存储器页面大小的第二存储器页面大小配置;以及控制器,所述控制器与存储器阵列、存储器库耦接并且被配置成与主机介接。在一些实例中,控制器可以包含:存储器接口组件,所述存储器接口组件被配置成接收对定位于存储器阵列的存储器页面中的第一数据的请求;预取组件,所述预取组件被配置成标识与存储器阵列的存储器页面的第一部分相关联的第一值;以及数据管理组件,所述数据管理组件被配置成至少部分地基于预取组件的第一值将对应于存储器页面的第一部分的第二数据传送到存储器库,第二数据包括第一数据。
在一些实例中,装置可以包含存取管理组件,所述存取管理组件包括被配置成监测对存储器页面的一或多个部分执行的存取操作的量的饱和计数器,其中第一值至少部分地基于存取操作的量。在一些实例中,装置可以包含缓冲器,所述缓冲器根据第二存储器页面大小配置。在一些实例中,数据管理组件被进一步配置成将对应于存储器页面的第二部分的第三数据传送到缓冲器。
在一些实例中,装置可以包含预取计数器,所述预取计数器被配置成存储第一值。在一些实例中,预取组件包括预取计数器并且被进一步配置成至少部分地基于存储器页面的第一部分的第一大小和存储器页面的第二部分的第二大小来修改预取计数器的第一值。在一些实例中,数据管理组件被进一步配置成确定存储器页面的第二部分不同于存储器页面的第一部分,并且预取组件被进一步配置成至少部分地基于确定来修改预取计数器的第一值。在一些实例中,预取组件被进一步配置成至少部分地基于确定来调节预取计数器的第一值。
描述了一种装置。在一些实例中,装置可以包含:存储器阵列,所述存储器阵列根据第一存储器页面大小配置;存储器库,所述存储器库根据不同于第一存储器页面大小的第二存储器页面大小配置;预取计数器,所述预取计数器被配置成存储与存储器阵列的存储器页面相关联的第一值;以及接口控制器,所述接口控制器被配置成接收对定位于存储器阵列的存储器页面中的第一数据的第一请求并且至少部分地基于预取计数器的第一值将对应于存储器页面的第一部分的第二数据传送到存储器库,其中第二数据包括第一数据。
在一些实例中,装置可以包含缓冲器,所述缓冲器根据第二存储器页面大小配置。在一些实例中,接口控制器可以被配置成将对应于存储器页面的第二部分的第三数据传送到缓冲器。在一些实例中,装置可以包含预取组件,所述预取组件包括预取计数器并且被配置成至少部分地基于存储器页面的第一部分与存储器页面的第二部分之间的关系来修改预取计数器的第一值。在一些实例中,预取组件可以被配置成确定存储器页面的第二部分不同于存储器页面的第一部分并且至少部分地基于确定来修改预取计数器的第一值。
在一些实例中,缓冲器可以被配置成驱逐第二数据。在一些实例中,预取计数器可以被配置成至少部分地基于驱逐来修改预取计数器的第一值。在一些实例中,装置可以包含存取管理组件,所述存取管理组件被配置成监测对存储器页面的第一部分执行的第一量的存取操作,其中预取计数器的第一值至少部分地基于驱逐。在一些实例中,装置可以包含饱和计数器,所述饱和计数器被配置成监测对存储器页面的第一部分的子集执行的第二量的存取操作,其中存取管理组件包括饱和计数器。在一些实例中,接口控制器可以被配置成至少部分地基于监测将对应于存储器页面的第一部分的子集的数据传送到缓冲器。
描述了一种装置。在一些实例中,装置可以包含存储器子系统。在一些实例中,存储器子系统可以包含:存储器阵列,所述存储器阵列被配置成根据第一存储器协议将第一数据存储在第一存储器页面中;预取计数器,所述预取计数器被配置成存储对应于第一存储器页面的第一部分的第一值;以及接口控制器,所述接口控制器被配置成至少部分地基于预取计数器的第一值存取第一存储器页面的第一部分,其中存储器子系统被配置成根据不同于第一存储器协议的第二存储器协议由主机存取。
在一些实例中,第一存储器协议与第一存储器页面大小和第一定时参数相关联,并且其中第二存储器协议与不同于第一存储器页面大小的第二存储器页面大小和不同于第一定时参数的第二定时参数相关联,主机位于存储器子系统的外部并且被配置成根据第二存储器协议存取存储器子系统,并且接口控制器被配置成将第一数据传送到主机。在一些实例中,装置可以包含与主机和存储器子系统耦接的总线,所述总线被配置成传送第二存储器协议的信令。
在一些实例中,存储器子系统可以包含存储器库,所述存储器库被配置成根据第二存储器协议将对应于第一存储器页面的第一部分的第二数据存储在第二存储器页面中,其中接口控制器被配置成将第二数据传送到存储器库。在一些实例中,存储器子系统可以包含:饱和计数器,所述饱和计数器被配置成监测对存储器库的第二存储器页面的子集执行的存取操作的量,其中接口控制器被配置成至少部分地基于饱和计数器的值存取存储器库中对应于第一存储器页面的第二部分的第三数据;以及缓冲器,所述缓冲器被配置成根据第二存储器协议将第三数据存储在第三存储器页面中,其中接口控制器被配置成将第三数据传送到缓冲器。在一些实例中,存储器子系统可以包含预取组件,所述预取组件被配置成至少部分地基于第一存储器页面的第一部分与第一存储器页面的第二部分之间的关系来修改预取计数器的第一值。
应当注意,上文所描述的方法描述了可能的实施方案,并且可以重新布置或以其它方式修改操作和步骤,并且其它实施方案是可能的。此外,可以组合来自所述方法中的两种或两种以上方法的特征。
可以使用各种不同的技术和技巧中的任何技术和技巧表示本文描述的信息和信号。例如,可以贯穿上文描述引用的数据、指令、命令、信息、信号、位、符号和芯片可以通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示。一些附图可以将多个信号展示为单个信号;然而,本领域的普通技术人员将理解的是,信号可以表示信号总线,其中总线可以具有各种位宽。
如本文所使用的,术语“虚拟地”是指电路的保持处于大约零伏(0V)电压但不直接接地的节点。因此,虚拟地的电压可能暂时波动,并且在稳定状态下返回到大约0V。虚拟地可以使用各种电子电路元件来实施,如由运算放大器和电阻器组成的分压器。其它实施方案也是可能的。“虚拟接地”或“虚拟接地的”意指连接到大约0V。
术语“电子通信”和“耦接”是指支持组件之间的电子流的组件之间的关系。这可以包含组件之间的直接连接,或者可以包含中间组件。彼此电子通信或彼此耦接的组件可能主动交换电子或信号(例如,在通电电路中),或者可能不主动交换电子或信号(例如,在断电电路中)但是可以被配置成且可操作以在电路通电时交换电子或信号。举例来说,通过开关(例如,晶体管)物理连接的两个组件电子通信或可以耦接,而无论开关的状态(即,断开或闭合)如何。
本文所讨论的一或多个晶体管可以表示场效应晶体管(FET)并且可以包括包含源极、漏极和栅极的三端器件。所述端子可以通过导电材料(例如,金属)连接到其它电子元件。源极和漏极可以是导电的并且可以包括重掺杂(例如,简并)半导体区域。源极和漏极可以通过轻掺杂半导体区域或沟道分离。如果沟道是n型(即,多数载流子是电子),则FET可以被称为n型FET。如果沟道是p型(即,多数载流子是空穴),则FET可以被称为p型FET。可以通过绝缘栅极氧化物对沟道进行封盖。可以通过将电压施加到栅极来控制沟道导电性。例如,分别将正电压或负电压施加到n型FET或p型FET可以使得沟道变成导电的。当将大于或等于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可以“导通”或“激活”。当将小于或等于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可以“截止”或“去激活”。
本文所阐述的描述结合附图描述了示例配置并且不表示可以在权利要求的范围内实施的或处于权利要求的范围内的所有实例。本文所使用的术语“示范性”意指“充当实例(example/instance)或说明”,而不是“优选的”或“优于其它实例”。出于提供对所描述技术的理解,详细描述包含具体细节。然而,这些技术可以在没有这些具体细节的情况下实践。在一些实例中,以框图形式示出了众所周知的结构和器件以免模糊所描述实例的概念。
在附图中,类似组件或特征可以具有相同的附图标记。进一步地,相同类型的各种组件可以通过在附图标记后用破折号和在类似组件中进行区分的第二标记来区分。如果说明书中仅使用第一附图标记,则描述适用于具有同一第一附图标记的类似组件中的任何组件,而不论第二附图标记如何。
可以使用各种不同的技术和技巧中的任何技术和技巧表示本文描述的信息和信号。例如,可以贯穿上文描述引用的数据、指令、命令、信息、信号、位、符号和芯片可以通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示。
结合本文的公开内容描述的各种说明性块和模块可以用被设计成执行本文描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。包含存储器控制器的说明性块和模块可以被表示为IP块中的指令,以用于例如ASIC设计中。通用处理器可以是微处理器,但在替代性方案中,所述处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实施为计算器件的组合(例如,数字信号处理器(DSP)与微处理器的组合、多个微处理器、结合DSP核的一或多个微处理器或者任何其它此类配置)。
本文描述的功能可以以硬件、由处理器执行的软件、固件或其任何组合实施。如果以由处理器执行的软件实施,则功能可以作为一或多个指令或代码存储在计算机可读媒体上或通过计算机可读媒体进行传输。其它实例和实施方案处于本公开和所附权利要求的范围内。例如,由于软件的性质,以上所描述的功能可以使用由处理器执行的软件、硬件、固件、硬连线或这些中任何项的组合实施。实施功能的特征还可以物理地定位于各个位置处,包含分布成使得功能的各部分在不同的物理位置处实施。并且,如本文中(包含在权利要求中)所使用的,如在项目列表(例如,以如“...中的至少一个”或“...中的一或多个”等短语结尾的项目列表)中使用的“或”指示包含性列表,使得例如列表A、B或C中的至少一个意指A或B或C或AB或AC或BC或ABC(即,A和B和C)。并且,如本文所使用的,短语“基于”不应被解释为对条件闭集的引用。例如,被描述为“基于条件A”的示范性步骤可以在不脱离本公开的范围的情况下基于条件A和条件B两者。换句话说,如本文所使用的,短语“基于”应以与短语“至少部分地基于”相同的方式解释。
计算机可读媒体包含非暂时性计算机存储媒体和包含促进计算机程序从一个地方到另一个地方的传递的任何媒体的通信媒体两者。非暂时性存储媒体可以是可以由通用计算机或专用计算机进行存取的任何可用媒体。通过举例而非限制的方式,非暂时性计算机可读媒体可以包括RAM、ROM、电可擦可编程只读存储器(EEPROM)、压缩盘(CD)ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储器件、或者可以用于以指令或数据结构的形式承载或存储期望的程序代码构件并且可以由通用计算机或专用计算机或者通用处理器或专用处理器进行存取的任何其它非暂时性媒体。并且,任何连接都被适当地称为计算机可读媒体。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或如红外、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,则所述同轴电缆、光纤电缆、双绞线或如红外、无线电和微波等无线技术包含在媒体的定义中。本文所使用的盘或碟包含CD、激光碟、光碟、数字通用碟(DVD)、软盘和蓝光碟,其中盘通常磁性地复制数据,而碟用激光光学地复制数据。上述内容的组合还包含在计算机可读媒体的范围内。
提供本文的描述以使本领域的技术人员能够形成或使用本公开。对于本领域的技术人员而言,对本公开的各种修改将是显而易见的,并且在不脱离本公开的范围的情况下,可以将本文定义的一般性原理应用于其它变体。因此,本公开不限于本文所描述的实例和设计,而是要符合与本文所公开的原理和新颖特征相一致的最广泛范围。
Claims (15)
1.一种方法,其包括:
接收对定位于器件的存储器阵列的存储器页面中的第一数据的请求;
标识预取计数器的与所述存储器阵列的所述存储器页面相关联的值,其中所述预取计数器的所述值指示响应于对所述第一数据的所述请求而从所述存储器阵列传送到所述器件的存储器库的数据的大小;
将具有由所述预取计数器的所述值所指示的所述大小的数据集从所述存储器阵列传送到所述存储器库,所述数据集包括所述第一数据;
将所述数据集的子集从所述存储器库传送到所述器件的缓冲器;以及
至少部分地基于传送到所述缓冲器的具有与所述预取计数器所指示的所述大小不同的大小的所述数据集的所述子集来修改所述预取计数器的所述值。
2.根据权利要求1所述的方法,其进一步包括:
将所述数据集写入到所述存储器库;以及
监测对所述存储器库中的所述数据集执行的存取操作的数量,其中至少部分地基于所述存取操作的数量确定所述预取计数器的经修改值。
3.根据权利要求2所述的方法,其中监测所执行的所述存取操作的数量包括:
监测对所述存储器库中的所述数据集的一或多个子集执行的所述存取操作的数量。
4.根据权利要求3所述的方法,其中所述一或多个子集包括所述数据集的所述子集,所述方法进一步包括:
确定对所述数据集中的子集执行的存取操作的第一数量满足阈值,其中至少部分地基于所述确定将所述数据集的所述子集传送到所述器件的所述缓冲器。
5.根据权利要求1所述的方法,其进一步包括:
接收对定位于所述存储器阵列的所述存储器页面中的第二数据的第二请求;以及
将包括所述第二数据的第二数据集从所述存储器阵列传送到所述存储器库,其中所述第一数据存储在所述存储器页的第一区段中,所述第一区段不同于所述存储器页面的存储所述第二数据的第二区段。
6.根据权利要求5所述的方法,其进一步包括:
将所述第二数据集的第二子集从所述存储器库传送到所述器件的所述缓冲器;以及
至少部分地基于所述数据集、所述第二数据集或所述第二数据集的所述第二子集或其任何组合之间的关系来修改所述预取计数器的所述值。
7.根据权利要求1所述的方法,其进一步包括:
接收对定位于所述存储器阵列的所述存储器页面中的第二数据的第二请求;
标识所述预取计数器的与所述存储器页面相关联的经修改值,其中所述经修改值不同于所述值;以及
至少部分地基于所述预取计数器的所述经修改值将包括所述第二数据的存储于所述存储器页面的第二区段中第二数据集从所述存储器阵列传送到所述存储器库,其中所述数据集存储于所述存储器页面的第一区段中,所述第一区段不同于所述存储器页面的所述第二区段。
8.一种装置,其包括:
存储器阵列,所述存储器阵列被配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;
存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;
与所述第一存储器页面相关联的预取计数器,所述预取计数器被配置成存储值,所述值指示响应于对定位于所述第一存储器页面中的第一数据的请求而要传送到所述存储器库的数据集的大小,所述数据集包括所述第一数据;
缓冲器,所述缓冲器被配置成从所述存储器库接收所述数据集的子集;以及
控制器,所述控制器被配置成至少部分地基于传送到所述存储器库的所述数据集和传送到所述缓冲器的所述数据集的所述子集之间的大小差来修改所述预取计数器的所述值。
9.根据权利要求8所述的装置,其进一步包括:
第二计数器,所述第二计数器被配置成监测对所述存储器库中的所述数据集执行的存取操作的数量,其中所述数据集的所述子集至少部分地基于所述第二计数器的
第二值。
10.根据权利要求9所述的装置,
其中所述控制器被配置成监测对所述存储器库中的所述数据集执行的存取操作。
11.根据权利要求8所述的装置,其中所述第一存储器页面被分隔成所述第一存储器页面的多个子集。
12.根据权利要求8所述的装置,其中所述存储器阵列被配置成存储多个存储器页面,所述多个存储器页面各自被配置成具有所述第一存储器页面大小,所述装置进一步包括:
多个预取计数器,所述多个预取计数器各自与所述多个存储器页面的对应存储器页面相关联,其中所述多个预取计数器中的每个预取计数器被配置成存储对应于相应存储器页面的相应部分的相应值,并且其中所述相应部分响应于对定位于所述相应存储器页面中的数据的相应请求。
13.一种装置,其包括:
存储器阵列,所述存储器阵列被配置成将数据存储于第一存储器页面中,所述第一存储器页面被配置成具有第一存储器页面大小;
存储器库,所述存储器库被配置成将数据存储于第二存储器页面中,所述第二存储器页面被配置成具有不同于所述第一存储器页面大小的第二存储器页面大小;
预取计数器,其中所述预取计数器的值与所述第一存储器页面相关联;以及
控制器,所述控制器与所述存储器阵列、所述存储器库耦接并且被配置成与主机介接,所述控制器能够操作以:
接收对定位于所述存储器阵列的存储器页面中的第一数据的请求;
标识所述预取计数器的所述值,其中所述预取计数器的所述值指示要从所述存储器阵列传送到所述存储器库的数据的大小;
将由具有所述预取计数器的所述值所指示的所述大小的数据集从所述存储器阵列传送到所述存储器库,所述数据集包括所述第一数据;
将所述数据集合的子集从所述存储器库传送到所述装置的缓冲器;以及
至少部分地基于具有由所述预取计数器所指示的所述大小不同的大小的传送到所述缓冲器的所述数据集的所述子集来修改所述预取计数器的所述值。
14.根据权利要求13所述的装置,其中所述控制器能够操作以:
监测对所述数据集执行的存取操作的数量,其中至少部分地基于所述存取操作的数量确定所述预取计数器的经修改值。
15.根据权利要求14所述的装置,其中所述控制器能够操作以:
监测对所述数据集的第一部分的一或多个子集执行的所述存取操作的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410419052.6A CN118132465A (zh) | 2018-05-09 | 2019-04-23 | 用于存储器的预取管理 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/975,614 US10942854B2 (en) | 2018-05-09 | 2018-05-09 | Prefetch management for memory |
US15/975,614 | 2018-05-09 | ||
US16/105,545 US10956333B2 (en) | 2018-05-09 | 2018-08-20 | Prefetching data based on data transfer within a memory system |
US16/105,545 | 2018-08-20 | ||
PCT/US2019/028688 WO2019217066A1 (en) | 2018-05-09 | 2019-04-23 | Prefetch management for memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410419052.6A Division CN118132465A (zh) | 2018-05-09 | 2019-04-23 | 用于存储器的预取管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112262376A CN112262376A (zh) | 2021-01-22 |
CN112262376B true CN112262376B (zh) | 2024-04-23 |
Family
ID=68464724
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980038591.2A Active CN112262376B (zh) | 2018-05-09 | 2019-04-23 | 用于存储器的预取管理 |
CN202410419052.6A Pending CN118132465A (zh) | 2018-05-09 | 2019-04-23 | 用于存储器的预取管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410419052.6A Pending CN118132465A (zh) | 2018-05-09 | 2019-04-23 | 用于存储器的预取管理 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10942854B2 (zh) |
EP (1) | EP3791281A4 (zh) |
KR (1) | KR102536192B1 (zh) |
CN (2) | CN112262376B (zh) |
WO (1) | WO2019217066A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210019B2 (en) | 2017-08-23 | 2021-12-28 | Micron Technology, Inc. | Memory with virtual page size |
US10394456B2 (en) * | 2017-08-23 | 2019-08-27 | Micron Technology, Inc. | On demand memory page size |
US20200193268A1 (en) * | 2018-12-14 | 2020-06-18 | Advanced Micro Devices, Inc. | Multi-instance recurrent neural network prediction |
CN114610655B (zh) * | 2022-05-10 | 2022-08-05 | 沐曦集成电路(上海)有限公司 | 连续数据访问处理装置和芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102782683A (zh) * | 2010-03-04 | 2012-11-14 | 微软公司 | 用于数据库服务器的缓冲池扩展 |
CN103777898A (zh) * | 2012-10-19 | 2014-05-07 | 国际商业机器公司 | 操作存储器设备的方法及系统 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5848025A (en) | 1997-06-30 | 1998-12-08 | Motorola, Inc. | Method and apparatus for controlling a memory device in a page mode |
US7089331B1 (en) | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
US6115760A (en) | 1998-08-24 | 2000-09-05 | 3Com Corporation | Intelligent scaleable FIFO buffer circuit for interfacing between digital domains |
KR100351934B1 (ko) | 1999-06-22 | 2002-09-12 | 삼성전자 주식회사 | 상태 읽기 동작을 갖는 플래시 메모리 장치 |
US6453389B1 (en) | 1999-06-25 | 2002-09-17 | Hewlett-Packard Company | Optimizing computer performance by using data compression principles to minimize a loss function |
US6353874B1 (en) | 2000-03-17 | 2002-03-05 | Ati International Srl | Method and apparatus for controlling and caching memory read operations in a processing system |
US6692976B1 (en) | 2000-08-31 | 2004-02-17 | Agilent Technologies, Inc. | Post-etch cleaning treatment |
US6487638B2 (en) | 2001-01-26 | 2002-11-26 | Dell Products, L.P. | System and method for time weighted access frequency based caching for memory controllers |
US6963954B1 (en) | 2001-09-19 | 2005-11-08 | Cisco Technology, Inc. | Method and apparatus for optimizing prefetching based on memory addresses |
US20030105926A1 (en) | 2001-12-03 | 2003-06-05 | International Business Machies Corporation | Variable size prefetch cache |
US6978351B2 (en) | 2002-12-30 | 2005-12-20 | Intel Corporation | Method and system to improve prefetching operations |
US6775184B1 (en) | 2003-01-21 | 2004-08-10 | Nexflash Technologies, Inc. | Nonvolatile memory integrated circuit having volatile utility and buffer memories, and method of operation thereof |
US7200719B2 (en) | 2003-07-31 | 2007-04-03 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US20050071570A1 (en) | 2003-09-26 | 2005-03-31 | Takasugl Robin Alexis | Prefetch controller for controlling retrieval of data from a data storage device |
US7188219B2 (en) | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
US8549226B2 (en) | 2004-05-14 | 2013-10-01 | Hewlett-Packard Development Company, L.P. | Providing an alternative caching scheme at the storage area network level |
US7526604B1 (en) | 2004-08-09 | 2009-04-28 | Nvidia Corporation | Command queueing speculative write prefetch |
US20060125835A1 (en) | 2004-12-10 | 2006-06-15 | Li Sha | DMA latency compensation with scaling line buffer |
WO2006098135A1 (ja) | 2005-03-14 | 2006-09-21 | Matsushita Electric Industrial Co., Ltd. | バスコントローラ |
US7395406B2 (en) | 2005-05-12 | 2008-07-01 | International Business Machines Corporation | System and method of large page handling in a virtual memory system |
US7383391B2 (en) * | 2005-05-18 | 2008-06-03 | International Business Machines Corporation | Prefetch mechanism based on page table attributes |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
US8010764B2 (en) | 2005-07-07 | 2011-08-30 | International Business Machines Corporation | Method and system for decreasing power consumption in memory arrays having usage-driven power management |
US20070038829A1 (en) | 2005-08-11 | 2007-02-15 | Via Technologies, Inc. | Wait aware memory arbiter |
US7865570B2 (en) | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
US7620748B1 (en) | 2006-04-06 | 2009-11-17 | Bitmicro Networks, Inc. | Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer |
US7711923B2 (en) | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
US7818489B2 (en) | 2006-11-04 | 2010-10-19 | Virident Systems Inc. | Integrating data from symmetric and asymmetric memory |
US7606988B2 (en) | 2007-01-29 | 2009-10-20 | International Business Machines Corporation | Systems and methods for providing a dynamic memory bank page policy |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US8120990B2 (en) * | 2008-02-04 | 2012-02-21 | Mosaid Technologies Incorporated | Flexible memory operations in NAND flash devices |
US8001331B2 (en) | 2008-04-17 | 2011-08-16 | Arm Limited | Efficiency of cache memory operations |
JP2009282721A (ja) | 2008-05-21 | 2009-12-03 | Nec Electronics Corp | メモリコントローラ、メモリコントロールシステム及びメモリ遅延量制御方法 |
US8645617B2 (en) | 2008-12-09 | 2014-02-04 | Rambus Inc. | Memory device for concurrent and pipelined memory operations |
US9274965B2 (en) | 2008-12-15 | 2016-03-01 | International Business Machines Corporation | Prefetching data |
US8140759B2 (en) | 2009-04-16 | 2012-03-20 | International Business Machines Corporation | Specifying an access hint for prefetching partial cache block data in a cache hierarchy |
US8327076B2 (en) * | 2009-05-13 | 2012-12-04 | Seagate Technology Llc | Systems and methods of tiered caching |
WO2011112523A2 (en) | 2010-03-08 | 2011-09-15 | Hewlett-Packard Development Company, L.P. | Data storage apparatus and methods |
US8291126B2 (en) | 2010-03-23 | 2012-10-16 | Spansion Llc | Variable read latency on a serial memory bus |
US9600410B1 (en) | 2010-07-09 | 2017-03-21 | Crossbar, Inc. | ReRAM based NAND like architecture with configurable page size |
US20120151232A1 (en) | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
JP2012150529A (ja) | 2011-01-17 | 2012-08-09 | Sony Corp | メモリアクセス制御回路、プリフェッチ回路、メモリ装置および情報処理システム |
US9552175B2 (en) | 2011-02-08 | 2017-01-24 | Diablo Technologies Inc. | System and method for providing a command buffer in a memory system |
US8782370B2 (en) | 2011-05-15 | 2014-07-15 | Apple Inc. | Selective data storage in LSB and MSB pages |
US8549210B2 (en) | 2011-09-20 | 2013-10-01 | International Business Machines Corporation | Mirroring virtual machines from a primary host to a secondary host |
US20140040561A1 (en) | 2012-07-31 | 2014-02-06 | Futurewei Technologies, Inc. | Handling cache write-back and cache eviction for cache coherence |
WO2014120215A1 (en) | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Adaptive granularity row-buffer cache |
US9785558B2 (en) | 2013-10-29 | 2017-10-10 | Hua Zhong University Of Science Technology | Mixed cache management |
CN103744624B (zh) | 2014-01-10 | 2017-09-22 | 浪潮电子信息产业股份有限公司 | 一种实现存储系统ssd缓存数据选择性升级的系统架构 |
US10372613B2 (en) * | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US9780782B2 (en) | 2014-07-23 | 2017-10-03 | Intel Corporation | On-die termination control without a dedicated pin in a multi-rank system |
US9817764B2 (en) | 2014-12-14 | 2017-11-14 | Via Alliance Semiconductor Co., Ltd | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
US9630151B2 (en) | 2015-03-31 | 2017-04-25 | Pall Corporation | Hydrophilically modified fluorinated membrane (V) |
US9720846B2 (en) | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
JP6459820B2 (ja) | 2015-07-23 | 2019-01-30 | 富士通株式会社 | 記憶制御装置、情報処理装置、および制御方法 |
US20170068467A1 (en) | 2015-09-04 | 2017-03-09 | HGST Netherlands B.V. | Wear management for flash memory devices |
CN106547476B (zh) | 2015-09-22 | 2021-11-09 | 伊姆西Ip控股有限责任公司 | 用于数据存储系统的方法和装置 |
US9734073B2 (en) | 2015-10-30 | 2017-08-15 | Qualcomm Incorporated | System and method for flash read cache with adaptive pre-fetch |
US9916105B1 (en) | 2015-11-05 | 2018-03-13 | Crossbar, Inc. | Page management for data operations utilizing a memory device |
US9766997B2 (en) | 2016-01-29 | 2017-09-19 | Intel Corporation | Monitoring performance of a processor using reloadable performance counters |
US10007614B2 (en) * | 2016-02-02 | 2018-06-26 | Cavium, Inc. | Method and apparatus for determining metric for selective caching |
KR20180049338A (ko) | 2016-10-31 | 2018-05-11 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US10649904B2 (en) | 2016-12-12 | 2020-05-12 | Samsung Electronics Co., Ltd. | System and method for store streaming detection and handling |
US10845866B2 (en) | 2017-06-22 | 2020-11-24 | Micron Technology, Inc. | Non-volatile memory system or sub-system |
US10310985B2 (en) | 2017-06-26 | 2019-06-04 | Ati Technologies Ulc | Systems and methods for accessing and managing a computing system memory |
US10372446B2 (en) * | 2017-07-01 | 2019-08-06 | Intel Corporation | Technology to dynamically modulate memory device read granularity |
US10714159B2 (en) | 2018-05-09 | 2020-07-14 | Micron Technology, Inc. | Indication in memory system or sub-system of latency associated with performing an access command |
-
2018
- 2018-05-09 US US15/975,614 patent/US10942854B2/en active Active
- 2018-08-20 US US16/105,545 patent/US10956333B2/en active Active
-
2019
- 2019-04-23 WO PCT/US2019/028688 patent/WO2019217066A1/en unknown
- 2019-04-23 EP EP19800839.3A patent/EP3791281A4/en active Pending
- 2019-04-23 CN CN201980038591.2A patent/CN112262376B/zh active Active
- 2019-04-23 KR KR1020207035148A patent/KR102536192B1/ko active IP Right Grant
- 2019-04-23 CN CN202410419052.6A patent/CN118132465A/zh active Pending
-
2021
- 2021-02-23 US US17/183,225 patent/US11822477B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102782683A (zh) * | 2010-03-04 | 2012-11-14 | 微软公司 | 用于数据库服务器的缓冲池扩展 |
CN103777898A (zh) * | 2012-10-19 | 2014-05-07 | 国际商业机器公司 | 操作存储器设备的方法及系统 |
Non-Patent Citations (1)
Title |
---|
现场可编程门阵列实现液晶显示控制的新方法;蒋念平;李伟;;上海理工大学学报(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20210255958A1 (en) | 2021-08-19 |
US20190347202A1 (en) | 2019-11-14 |
US20240134798A1 (en) | 2024-04-25 |
US20190347201A1 (en) | 2019-11-14 |
CN112262376A (zh) | 2021-01-22 |
KR20200141094A (ko) | 2020-12-17 |
WO2019217066A1 (en) | 2019-11-14 |
US10942854B2 (en) | 2021-03-09 |
EP3791281A1 (en) | 2021-03-17 |
US11822477B2 (en) | 2023-11-21 |
CN118132465A (zh) | 2024-06-04 |
US10956333B2 (en) | 2021-03-23 |
EP3791281A4 (en) | 2021-10-06 |
KR102536192B1 (ko) | 2023-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112272816B (zh) | 存储器系统或子系统中的预取信令 | |
CN110799954B (zh) | 非易失性存储器系统或子系统 | |
CN112262376B (zh) | 用于存储器的预取管理 | |
US11915788B2 (en) | Indication in memory system or sub-system of latency associated with performing an access command | |
CN112106018A (zh) | 存储器缓冲器管理和旁路 | |
US20240232089A9 (en) | Prefetch management for memory | |
CN113838502A (zh) | 高速缓存元数据管理 | |
US12007897B2 (en) | Split cache for address mapping data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |