CN114175001B - 存储器感知预取和高速缓存旁路系统和方法 - Google Patents
存储器感知预取和高速缓存旁路系统和方法 Download PDFInfo
- Publication number
- CN114175001B CN114175001B CN202080048396.0A CN202080048396A CN114175001B CN 114175001 B CN114175001 B CN 114175001B CN 202080048396 A CN202080048396 A CN 202080048396A CN 114175001 B CN114175001 B CN 114175001B
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- data
- cache
- hierarchy
- 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 2077
- 238000000034 method Methods 0.000 title claims abstract description 156
- 230000004913 activation Effects 0.000 claims abstract description 117
- 239000000872 buffer Substances 0.000 claims abstract description 99
- 238000012545 processing Methods 0.000 claims description 149
- 230000004044 response Effects 0.000 claims description 53
- 230000007704 transition Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 136
- 238000004891 communication Methods 0.000 description 39
- 238000013500 data storage Methods 0.000 description 31
- 238000003491 array Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000003213 activating effect Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 5
- 230000008685 targeting Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 239000002574 poison Substances 0.000 description 2
- 231100000614 poison Toxicity 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012937 correction Methods 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
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- 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/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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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
-
- 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 Of A Hierarchy Structure (AREA)
- Computer Hardware Design (AREA)
Abstract
本公开涉及存储器感知预取和高速缓存旁路系统和方法。描述了与存储器管理相关的系统、设备和方法。举例来说,这些可包含:第一存储器层级,其包含存储器阵列(28)中的存储器页;第二存储器层级,其包含高速缓存(24)、预取缓冲器(32)或这两者;以及存储器控制器(34),其确定与所述存储器阵列(28)中由存储器存取请求定为目标的存储器页相关联的状态信息。所述状态信息可包含指示所述存储器页的当前激活状态的第一参数,以及指示后续存储器存取请求将所述存储器页定为目标的统计似然度(例如,置信度)的第二参数。当与所述存储器页相关联的所述第一参数指示所述存储器页被激活且与所述存储器页相关联的所述第二参数大于或等于阈值时,所述存储器控制器(34)可停用与所述存储器页相关联的数据在所述第二存储器层级中的存储。
Description
背景技术
本公开大体上涉及计算系统,且更具体地说,涉及在计算系统中实施的存储器接口。
一般来说,计算系统包含处理子系统和存储器子系统,存储器子系统可存储可由处理子系统的处理电路系统存取的数据。举例来说,为了执行操作,处理电路系统可执行从在存储器子系统中实施的存储器装置检索的对应指令。在一些情况下,还可从存储器装置检索操作的数据输入。另外或替代地,来自操作(例如从中产生)的数据输出可存储在存储器装置中以例如实现后续检索。然而,至少在一些情况下,计算系统的操作效率可能受其架构限制,例如,所述架构管控计算系统中执行的操作的序列。
发明内容
根据本公开的一方面,提供一种设备。所述设备包括:第一分级存储器层级,其包括存储器阵列;第二分级存储器层级,其包括高速缓存、预取缓冲器或这两者;以及存储器控制器,其经配置以通信地耦合到存储器总线,其中所述存储器控制器经配置以:确定与所述存储器阵列中由经由所述存储器总线接收的第一存储器存取请求定为目标的存储器页相关联的第一状态信息,其中所述第一状态信息包括:第一参数,其指示所述存储器页的当前激活状态;以及第二参数,其指示后续存储器存取请求将所述存储器页定为目标的统计似然度;且当与所述存储器页相关联的所述第一状态信息中的所述第一参数指示所述存储器页为激活的存储器页且与所述存储器页相关联的所述第一状态信息中的所述第二参数大于或等于第一阈值时,停用与所述存储器页相关联的数据在所述第二分级存储器层级中的存储。
根据本公开的另一方面,提供一种方法。所述方法包括:使用存储器控制电路系统,至少部分地基于存储器阵列存储器层级中计算系统的处理电路系统先前已要求存取的一或多个存储位置而预测所述存储器阵列存储器层级中所述处理电路系统将随后要求存取的存储位置;使用所述存储器控制电路系统来确定所述存储器阵列存储器层级中包括所述存储位置的存储器单元行的当前激活状态;以及响应于确定包括所述存储位置的所述存储器单元行的所述当前激活状态为激活状态:使用所述存储器控制电路系统来预测所述处理电路系统将要求存取的下一存储位置包含在包括所述存储位置的所述存储器单元行中的第一置信度;且响应于确定所述处理电路系统将要求存取的所述下一存储位置包含在所述存储器单元行中的所述第一置信度大于第一预取阈值,使用所述存储器控制电路系统来指示所述计算系统在所述处理电路系统要求返回候选预取数据块之前将数据块从所述存储器阵列存储器层级中的所述存储位置预取到高速缓存存储器层级、预取缓冲器存储器层级或这两者。
根据本公开的又一方面,提供一种有形的非暂时性计算机可读媒体。所述有形的非暂时性计算机可读媒体存储能由计算系统的控制电路系统执行的指令,其中所述指令包括用以进行以下操作的指令:使用所述控制电路系统来确定存储器阵列中所述计算系统中的处理电路系统要求存取的存储器地址;使用所述控制电路系统来指示所述计算系统提供对所述存储器阵列中的所要求的存储器页的存取,所述所要求的存储器页包括由所述处理电路系统要求的所述存储器地址;使用所述控制电路系统来确定包括由所述处理电路系统要求的所述存储器地址的所述所要求的存储器页的当前激活状态;且响应于确定所述所要求的存储器页的所述当前激活状态为激活状态:使用所述控制电路系统来预测紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的下一存储器地址将在所述所要求的存储器页中的第一统计似然度;且响应于确定紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述所要求的存储器页中的所述第一统计似然度大于第一高速缓存阈值,使用所述控制电路系统来启用高速缓存旁路以停用与由所述处理电路系统要求的存储器地址相关联的数据块的高速缓存。
附图说明
在阅读以下详细描述后且在参考附图后,可更好地理解本公开的各种方面,在附图中:
图1是根据本公开的实施例的包含处理子系统和存储器子系统的计算系统的框图;
图2是根据本公开的实施例的图1的处理子系统和图1的存储器子系统的处理器侧的实例的框图;
图3是根据本公开的实施例的在图1的计算系统中实施的专用较低(例如,高速缓存和/或预取缓冲器)存储器层级的实例的框图;
图4是根据本公开的实施例的图1的存储器子系统的存储器侧的实例的框图;
图5是根据本公开的实施例的在图4的存储器子系统中实施的实例存储器阵列的框图;
图6是根据本公开的实施例的与图5的存储器阵列相关联的状态信息的图形表示;
图7是根据本公开的实施例的用于操作图5的存储器阵列且更新图6的状态信息的实例过程的流程图;
图8是根据本公开的实施例的用于操作图2的处理器侧存储器子系统的实例过程的流程图;
图9是根据本公开的实施例的用于响应于读取存储器存取请求而操作图4的存储器侧存储器子系统的实例过程的流程图;
图10是根据本公开的实施例的用于确定是否启用图1的存储器子系统中的高速缓存旁路的实例过程的流程图;
图11是根据本公开的实施例的用于响应于写入存储器存取请求而操作图1的存储器子系统的实例过程的流程图;
图12是根据本公开的实施例的用于确定是否启用到图3的专用较低存储器层级的预取的实例过程的流程图;且
图13是根据本公开的实施例的图1的计算系统的一部分的框图,所述部分包含使用预取控制器、高速缓存控制器、主存储器控制器和存储器感知控制器实施的存储器控制器。
具体实施方式
本公开提供例如通过减轻原本可能会限制操作效率的架构特征来促进提高计算系统操作效率的技术。一般来说,计算系统可包含各种子系统,例如处理子系统和/或存储器子系统。具体地说,处理子系统可包含例如在一或多个处理器和/或一或多个处理器核心中实施的处理电路系统。存储器子系统可包含一或多个存储器装置(例如,芯片或集成电路),所述一或多个存储器装置例如实施于例如双列直插式存储器模块(DIMM)等存储器模块上,和/或组织成实施一或多个存储器阵列(例如,存储器单元阵列)。
一般来说,在计算系统的操作期间,在其处理子系统中实施的处理电路系统可通过执行对应指令来执行各种操作,例如,以通过对输入数据执行数据处理操作来确定输出数据。另外,处理子系统可通常包含一或多个寄存器,所述一或多个寄存器提供可由所述处理子系统的处理电路系统直接存取的存储位置。然而,在处理子系统中实施的寄存器的存储容量通常有限。
因而,处理子系统常常通信地耦合到存储器子系统,所述存储器子系统例如经由在一或多个存储器装置中实施的存储器阵列提供额外存储位置。一般来说,存储器阵列可包含耦合到在第一(例如,水平)方向上形成的字线且耦合到在第二(例如,竖直或正交)方向上形成的位线的存储器单元。在一些情况下,存储器阵列中的存储器单元可组织成例如各自与存储器阵列的存储器单元行对应的一或多个存储器页。换句话说,至少在此类情况下,存储器阵列中的存储器页可包含耦合对应字线的存储器单元中的每一个。
另外,在一些情况下,存储器页中的存储器单元可组织成例如各自与存储器阵列的存储器单元列对应的一或多个数据块存储位置。换句话说,至少在此类情况下,存储器页中的数据块存储位置可包含耦合到多个对应位线中的一个的存储器单元中的每一个。此外,为了促进从存储器阵列读取(例如,检索或加载)数据和/或将数据写入(例如,存储)到存储器阵列,存储器阵列的每一列的位线可耦合到对应放大器电路系统,所述放大器电路系统例如包含驱动(例如,写入)放大器和/或感测(例如,读取)放大器。换句话说,至少在一些情况下,存储器阵列中的数据块存储位置可由(例如,物理)存储器地址识别,所述存储器地址包含对应行(例如,页)地址和列地址配对。
为了促进存取存储器阵列中的存储位置,存储器阵列的字线可耦合到行选择(例如,解码器)电路系统,且耦合到存储器阵列的位线的放大器电路系统可耦合到列选择(例如,解码器)电路系统。举例来说,为了启用(例如,提供)对特定存储器页中的存储位置的存取,行选择电路系统可通过将激活(例如,逻辑高)控制信号输出到对应字线来激活存储器页。另外,在激活处于撤销激活状态的存储器页之前,在一些情况下,行选择电路系统可例如通过将预充电控制信号输出到对应字线而对存储器页预充电。此外,为了启用对激活的存储器页中的特定数据块存储位置的存取,列选择电路系统可将列选择(例如,逻辑高)控制信号输出到对应放大器电路系统,进而使得放大器电路系统能够(例如,指示放大器电路系统)将数据块写入(例如,存储)到特定数据块存储位置和/或读取(例如,检索或加载)当前存储在特定数据块存储位置处的数据块。
在一些情况下,计算系统的处理器侧(例如,主机)可经由指示待由存储器子系统使用的存取参数的一或多个存储器存取请求而请求对存储器子系统中的存储位置(例如,存储器地址)的存取。举例来说,为了将数据块存储(例如,写入)到存储器子系统,计算系统的处理器侧可输出指示一或多个写入存取参数的写入存储器存取请求,所述写入存取参数例如由处理电路系统用来识别数据块的虚拟存储器地址、存储器子系统中将存储有数据块的物理存储器地址(例如,行地址和列地址配对)、数据块的大小(例如,位深度),和/或写入启用指示符(例如,位)。另外或替代地,为了从存储器子系统检索(例如,读取)数据块,计算系统的处理器侧可输出指示读取存取参数的读取存储器存取请求,所述读取存取参数例如由处理电路系统用来识别数据块的虚拟存储器地址、存储器子系统中预期存储有数据块的物理存储器地址(例如,行地址和列地址配对)、数据块的大小(例如,位深度),和/或读取启用指示符(例如,位)。
响应于接收到读取存储器存取请求,存储器子系统可至少部分地基于读取存储器存取请求中所指示的读取存取参数而搜索由读取存储器存取请求定为目标的数据块。举例来说,存储器子系统可至少部分地基于读取存储器存取请求中指示的虚拟存储器地址和/或物理存储器地址而确定预期与目标数据块相关联的标签(例如,块识别符)参数(例如,元数据)的目标值。另外,存储器子系统可通过针对目标标签参数值连续搜索与存储在所述存储器子系统中的有效数据块相关联的标签参数的值来识别(例如,找到)目标数据块。一旦检测到匹配,存储器子系统就可将相关联的数据块识别为目标数据块,且因此将相关联的数据块返回到处理子系统,以例如实现通过所述处理子系统的处理电路系统进行处理和/或执行。因此,至少在一些情况下,计算系统的操作效率可至少部分地取决于由所述计算系统的存储器子系统提供的数据检索等待时间(例如,在返回目标数据之前的持续时间)。
为了促进提高数据存取速度(例如,检索等待时间),在一些情况下,存储器子系统的总存储容量可分布于多个分级存储器层级(例如,层)上。一般来说,分级存储器子系统可包含最接近处理电路系统的最低存储器层级和最远离处理电路系统的最高存储器层级。另外,在一些情况下,分级存储器子系统可包含最低存储器层级与最高存储器层级之间的一或多个中间存储器层级。换句话说,中间存储器层级可相比于最低存储器层级更远离处理电路系统而实施且相比于最高存储器层级更接近处理电路系统而实施。
一般来说,当数据被定为目标(例如,被要求和/或被请求)时,如果目标数据引起未命中(例如,目标标签值不与任何有效标签值匹配),那么分级存储器子系统可在连续前进到较高存储器层级之前尝试从最低分级检索目标数据。举例来说,存储器子系统可检查目标数据块当前是否存储在最低存储器层级中。当目标数据块在最低存储器层级中引起未命中时,存储器子系统可接着检查目标数据块当前是否存储在下一最低存储器层级中,以此类推。
因此,为了促进提高数据存取速度,可实施分级存储器子系统,使得相比于较高存储器层级,较低存储器层级通常(例如,至少平均)提供更快的数据存取速度。然而,由存储器层级提供的数据存取速度可通常取决于其存储容量,例如,因为增加存储容量可实现增加存储在所述存储器层级中的有效数据块的数目,且因此可增加在识别和返回目标数据块之前执行的搜索量。因而,为了促进提供较快的数据存取速度,相比于较高存储器层级,可用更少(例如,更小)的存储容量实施较低存储器层级。
然而,用较少的存储容量实施较低存储器层级可能会限制由存储器子系统提供的总存储容量。因而,为了促进维持或甚至增大由存储器子系统提供的总存储容量,相比于较低存储器层级,可用更多(例如,更大)的存储容量实施较高存储器层级。换句话说,可用多个分级存储器层级实施存储器子系统以促进平均数据存取速度(例如,操作效率)与所提供的总存储容量之间的权衡。
为了促进实现平衡,在一些情况下,可用多个不同的存储器类型实施存储器子系统,这提供了影响操作效率和/或实施相关联成本的不同权衡。举例来说,相比于非易失性存储器,例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)等易失性存储器可提供更快的数据传送(例如,读取和/或写入)速度。因此,为了促进提供较快的数据存取速度,在一些情况下,可使用易失性存储器阵列来提供存储器子系统中的较低(例如,第二高的)存储器层级,所述易失性存储器阵列例如在耦合到存储器(例如,外部通信)总线的一或多个易失性存储器(例如,DRAM)装置(例如,模块或芯片)中实施。
另一方面,相比于易失性存储器,例如快闪(例如,NAND)存储器、相变存储器(例如,3D XPointTM存储器)或铁电随机存取存储器(FeRAM)等非易失性存储器可提供更高(例如,更大)的数据存储密度。另外,与易失性存储器单元相比,非易失性存储器单元即使处于未通电状态也可维持其存储值或数据位。因此,在一些情况下,可使用非易失性存储器阵列来提供存储器子系统中的较高(例如,最高)存储器层级,所述非易失性存储器阵列例如在耦合到存储器(例如,外部通信)总线的一或多个非易失性存储器(例如,硬盘或固态)装置(例如,驱动器)中实施。
为了促进进一步提高操作效率,除存储器阵列之外,在一些情况下,存储器子系统可包含使用高速缓存和/或例如预取缓冲器等缓冲器实施的一或多个专用(例如,实际)较低存储器层级。一般来说,可实施和/或操作专用高速缓存(例如,较低存储器层级)以存储(例如,高速缓存)从处理子系统输出的用于存储在存储器子系统的较高(例如,存储器阵列)存储器层级中的数据块的副本(例如,实例),和/或响应于从计算系统的处理器侧接收的(例如,要求)存储器存取请求而从较高存储器层级检索的数据块。另外或替代地,可实施和/或操作存储器子系统以从较高(例如,存储器阵列)存储器层级预取预期处理子系统在即将到来的控制时域(例如,时间段或者一或多个时钟循环)期间所要求(例如,定为目标或请求)的数据块,使得在处理子系统实际上要求所述数据块之前,将所述数据块的副本存储在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中。因而,如果随后要求存储在专用较低存储器层级中的数据块,那么存储器子系统可将所要求的数据块从较低存储器层级而不是从较高存储器层级供应到处理子系统,这至少在一些情况下可促进提高操作效率,例如,这是因为相比于较高存储器层级,较低存储器层级通常(例如,平均)提供更快的数据检索等待时间。
然而,至少在一些情况下,经由例如存储器总线等外部通信总线进行的数据通信通常慢于经由内部通信总线进行的数据通信,例如,这是因为存储器总线的处理器侧上的组件与存储器总线的存储器侧上的组件之间存在定时差,所述存储器总线是与其它计算子系统共享的,和/或沿着存储器总线存在通信距离。换句话说,至少在一些情况下,处理器侧组件之间(例如,内部)的数据通信可快于处理器侧组件与存储器侧组件之间经由存储器总线进行的数据通信。因此,为了促进提高计算系统操作效率,在一些情况下,存储器子系统的一部分可实施于存储器总线的处理器侧上,且因此实施于计算系统的处理器侧上。
换句话说,至少在一些情况下,存储器子系统可包含经由存储器(例如,外部通信)总线通信地耦合的处理器侧(例如,第一)部分和存储器侧(例如,第二)部分。举例来说,存储器子系统的存储器侧可包含一或多个存储器侧高速缓存、一或多个存储器侧预取缓冲器、一或多个存储器阵列或其任何组合。另外或替代地,存储器子系统的处理器侧可包含一或多个处理器侧高速缓存和/或一或多个处理器侧预取缓冲器。
此外,至少在一些情况下,相比于在存储器子系统的存储器侧上实施的存储器层级,在存储器子系统的处理器侧上提供的每一分级存储器层级可用作较低(例如,高速缓存和/或预取缓冲器)存储器层级。因而,当处理子系统要求数据块时,存储器子系统的处理器侧可确定所要求的数据块当前是否存储在所述存储器子系统中,且因此确定所要求的数据块是否引起处理器侧未命中。当所要求的数据块引起处理器侧未命中时,存储器子系统的处理器侧可输出要求(例如,读取)存储器存取请求,其目标为经由存储器总线将处理器子系统所要求的数据块返回到存储器子系统的存储器侧。另外或替代地,存储器子系统的处理器侧可预测处理子系统在即将到来的控制时域期间将要求哪一种数据块且输出预取(例如,读取)存储器存取请求,其目标为例如当数据块当前未存储在存储器子系统的处理器侧中且因此引起处理器侧未命中时,经由存储器总线将预期处理器子系统所要求的数据块返回到存储器侧存储器子系统。
如上文所描述,响应于接收到读取存储器存取请求,存储器子系统可将由读取存储器存取请求定为目标的数据块输出(例如,返回)到存储器总线。另外,如上文所描述,相比于较高存储器层级,较低存储器层级通常提供更快的数据存取速度。因而,至少在一些情况下,存储器子系统的处理器侧可将从存储器子系统的存储器侧返回的数据块的副本存储在实施于所述存储器子系统中的专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中,至少在一些情况下,这可例如在数据块由处理子系统随后要求的情况下使数据块能够从较低存储器层级而不是较高存储器层级供应,从而促进提高计算系统操作效率。
然而,如上文所描述,为了促进提供较快的数据存取速度,相比于较高存储器层级,可用更少的存储容量实施专用较低(例如,高速缓存和/或预取缓冲器)存储器层级。因而,为了给数据块在较低存储器层级中的存储腾出空间,至少在一些情况下,例如当不预期另一数据块在即将到来的控制时域期间被定为目标(例如,被要求)时,可从较低存储器层级中逐出另一数据块。然而,在一些情况下,将数据块存储在较低存储器层级中可能会污染较低存储器层级且实际上降低计算系统操作效率,例如,这是因为被逐出的数据块实际上在控制时域期间被定为目标且因此从较高(例如,存储器阵列和/或存储器侧)存储器层级而非较低存储器层级检索。
此外,如上文所描述,存储器子系统可提供对存储器阵列的激活(例如,打开)的存储器页中的一或多个数据块存储位置的存取。另外,如上文所描述,存储器子系统可通过例如在将预充电控制信号供应到对应字线以对存储器页预充电之后将激活(例如,逻辑高)控制信号供应到对应字线来至少部分地激活存储器页。因而,至少在一些情况下,激活撤销激活的(例如,关闭的)存储器页以提供对存储器页中的一或多个存储位置的存取可能会消耗电功率和/或产生存取等待时间,且因此影响(例如,降低)部署有存储器子系统的计算系统的操作(例如,功率使用和/或等待时间)效率。
因此,为了促进提高计算系统操作效率,本公开提供用于进行以下操作的技术:实施和/或操作存储器子系统以至少部分地基于在存储器子系统中实施的存储器阵列的状态而选择性地停用数据块在专用(例如,实际)高速缓存和/或专用(例如,实际)预取缓冲器中的存储。举例来说,至少部分地基于存储器阵列的状态,存储器子系统可选择性地停用数据块在专用高速缓存中的存储(例如,高速缓存),且替代地将当前激活的存储器页人工处理为高速缓存存储器层级(例如,行缓冲器)。另外或替代地,至少部分地基于存储器阵列的状态,存储器子系统可选择性地停用数据块到专用高速缓存和/或专用预取缓冲器的预取,且替代地将当前激活的存储器页人工处理为较低(例如,高速缓存和/或预取缓冲器)存储器层级(例如,行缓冲器),例如,这至少部分是因为由当前激活的存储器页提供的数据存取等待时间类似于由专用高速缓存和/或专用预取缓冲器提供的数据存取等待时间。
换句话说,如下文将更详细地描述,本公开提供用于实施和/或操作存储器子系统以至少部分地基于在存储器子系统中实施的一或多个存储器阵列的状态而控制所述存储器子系统中的数据存储的技术。为了促进控制数据存储,存储器子系统可包含一或多个存储器控制器(例如,控制电路系统和/或控制逻辑)。举例来说,当实施于存储器总线的处理器侧和存储器总线的存储器侧上时,存储器子系统可包含被实施和/或操作以控制存储器子系统的存储器侧上的数据存储的第一(例如,存储器侧)存储器控制器和被实施和/或操作以控制存储器子系统的处理器侧上的数据存储的第二(例如,处理器侧)存储器控制器。
另外或替代地,存储器控制器可包含多个控制器(例如,控制电路系统和/或控制逻辑),例如高速缓存控制器、预取控制器、主存储器控制器和/或存储器感知控制器。在一些实施例中,可实施和/或操作高速缓存控制器以例如通过识别要考虑存储(例如,高速缓存)在高速缓存存储器层级中以及存储在较高(例如,存储器阵列)存储器层级中的一或多个候选数据块来控制一或多个高速缓存中的数据存储,且因此控制存储器子系统的对应高速缓存(例如,较低)存储器层级中的数据存储。类似地,在一些实施例中,可实施和/或操作预取控制器以控制一或多个预取缓冲器中的数据存储,且因此控制存储器子系统的对应预取缓冲器(例如,较低)存储器层级中的数据存储。另外或替代地,预取控制器可例如通过识别要考虑从较高(例如,存储器阵列)存储器层级预取到较低存储器层级中的一或多个候选数据块来促进预测性地控制存储器子系统的一或多个较低(例如,预取缓冲器和/或高速缓存)存储器层级中的数据存储。
此外,在一些实施例中,可实施和/或操作例如DRAM存储器控制器的主存储器控制器以控制一或多个存储器阵列和因此对应存储器阵列(例如,较高)存储器层级中的数据存储。具体地说,至少在一些实施例中,存储器控制器可根据打开页策略控制存储器阵列的操作,例如,使得当前激活的存储器页保持激活,直到不同的(例如,当前撤销激活的)存储器页被定为目标,此时撤销激活当前激活的存储器页且随后(例如,在预充电之后)激活不同的存储器页。换句话说,至少在此类实施例中,存储器页的激活时间段的跨度可从最初激活存储器页(例如,以履行存储器存取请求)的时间直到随后撤销激活存储器页(例如,由于不同的存储器页被定为目标)的时间。
此外,在一些实施例中,存储器感知控制器可至少部分地基于在存储器子系统中实施的一或多个存储器阵列的当前状态而选择性地确定是否停用候选数据块的高速缓存和/或预取。如上文所描述,在一些实施例中,可实施和/或操作例如DRAM存储器控制器的主存储器控制器以控制存储器阵列中的数据存储。因此,至少在此类实施例中,主存储器控制器可确定存储器阵列的当前状态且将指示存储器阵列的当前状态的状态信息提供到存储器感知控制器,进而使得存储器感知控制器能够至少部分地基于存储器阵列的当前状态而选择性地停用高速缓存和/或预取。
在一些实施例中,与存储器阵列相关联的状态信息可识别存储器阵列中包含的存储器页的激活状态。换句话说,在一些实施例中,状态信息可识别存储器阵列中的哪一存储器页当前被激活(例如,打开)和/或存储器阵列中的哪一或多个存储器页当前被撤销激活(例如,关闭)。举例来说,状态信息可指示存储器阵列中的第一存储器页(例如,行)当前处于其激活(例如,打开)状态,且存储器阵列中的第二(例如,不同)存储器页当前处于其撤销激活(关闭)状态。
换句话说,在一些实施例中,与存储器阵列相关联的状态信息可包含与存储器阵列中的一或多个存储器页相关联的状态信息。举例来说,存储器阵列状态信息可包含指示存储器阵列中的第一存储器页的当前状态(例如,激活状态)的第一存储器页状态信息、指示存储器阵列中的第二存储器页的当前状态的第二存储器页状态信息等等。为了促进指示激活状态,在一些实施例中,状态信息可包含一或多个激活状态参数,其各自指示对应存储器页的当前激活状态。举例来说,第一存储器页状态信息中的第一激活状态参数可为用以指示第一存储器页当前处于其激活(例如,打开)状态的“1位”(例如,逻辑高位),且第二存储器页状态信息中的第二激活参数可为用以指示第二存储器页当前处于其撤销激活(例如,关闭)状态的“0位”(例如,逻辑低位)。
因而,在一些实施例中,每当激活或撤销激活存储器阵列中的存储器页时,存储器控制器可更新与存储器阵列相关联的状态信息。为了帮助说明,继续以上实例,当随后撤销激活第一存储器页时,存储器控制器可更新第一激活状态参数以指示第一存储器页现在处于其撤销激活状态。类似地,当随后激活第二存储器页时,存储器控制器可更新第二激活状态参数以指示第二存储器页现在处于其激活状态。
为了促进将状态信息与对应存储器页相关联,在一些实施例中,存储器子系统可存储状态信息,使得可使用所述存储器子系统的行(例如,页)地址例如经由高速缓存存取与每一存储器页相关联的状态信息。如下文将更详细地描述,为了促进提高计算系统操作效率,在一些实施例中,存储器控制器可至少部分地基于与当前激活的存储器页相关联的状态信息和/或与由当前履行的存储器存取请求定为目标的存储器页相关联的状态信息而选择性地停用候选数据块在专用(例如,实际)较低(例如,高速缓存和/或预取缓冲器)存储器层级中的预取和/或高速缓存。因此,至少在此类实施例中,每当存储器页由存储器存取请求定为目标时,存储器控制器可例如通过使用存储器页的行地址将相关联的状态信息从高速缓存加载到存储器控制器的寄存器中来确定(例如,检索)与存储器页相关联的状态信息。
除了激活状态参数之外,在一些实施例中,与存储器页相关联的状态信息可包含页命中(例如,行命中或后续目标)置信度参数,其指示后续(例如,下一连续)存储器存取请求将存储器页定为目标的置信度(例如,统计似然度和/或统计概率)。具体地说,在一些实施例中,在激活时间段开始时与存储器页相关联的页命中置信度参数的值可指示预期存储器页在激活时间段期间被连续定为目标的次数。一般来说,当预期存储器页在激活时间段期间被定为目标的次数更多时,存储器控制器可预测后续存储器存取请求更有可能在存储器页已经处于其激活状态(例如,由于由紧接在前的存储器存取请求定为目标)时将所述存储器页定为目标,且因此更有可能引起页(例如,行缓冲器)命中。相反,当预期存储器页在激活时间段期间被定为目标的次数更少时,存储器控制器可预测后续存储器存取请求更有可能在存储器页处于其撤销激活状态(例如,由于紧接在前的存储器存取请求将不同的存储器页定为目标)时将所述存储器页定为目标,且因此更有可能引起页(例如,行缓冲器)未命中。换句话说,当预期存储器页在激活时间段期间被定为目标的次数更少时,存储器控制器可预测后续存储器存取请求不大可能在存储器页处于其激活状态时将所述存储器页定为目标,且因此不大可能引起页命中。
换句话说,至少部分地基于与激活的存储器页相关联的页命中置信度参数的值,在一些实施例中,存储器控制器可确定(例如,预测)后续(例如,下一连续)存储器存取请求将命中激活的存储器页的置信度(例如,统计似然度和/或统计概率)。由于存储器存取模式通常有一定的周期性(例如,重复性),因此在一些实施例中,存储器控制器可至少部分地基于先前的存储器页例如在最近的一系列(例如,一连串)存储器存取请求期间引起页命中的次数而确定(例如,更新)与存储器页相关联的页命中置信度参数的值。换句话说,当由于存储器页被撤销激活而结束激活时间段时,存储器控制器可至少部分地通过至少部分地基于存储器页在激活时间段期间被定为目标的次数而更新包含在状态信息中的页命中置信度参数的值例如以及更新包含在状态信息中的激活状态参数以指示存储器页现在处于其撤销激活状态来更新与存储器页相关联的状态信息。
为了促进跟踪存储器页被定为目标的次数,在一些实施例中,存储器控制器可包含和/或利用一或多个计数器。作为说明性非限制性实例,在一些实施例中,当最初激活存储器页以履行存储器存取请求时,存储器控制器可加载与所述存储器页相关联的计数器值。另外,当存储器页保持激活时,每当存储器页随后由连续存储器存取请求定为目标时,存储器控制器可使其相关联的计数器值递增。另一方面,当后续存储器存取请求将不同的(例如,当前撤销激活的)存储器页定为目标时,存储器控制器可更新与(例如,当前激活的)存储器页相关联的计数器值且相应地更新包含在相关联状态信息中的页命中置信度参数。
作为另一说明性非限制性实例,在一些实施例中,当最初激活存储器页以履行(例如,第一)存储器存取请求时,存储器控制器可将计数器的值复位(例如,为零)。另外,当存储器页保持激活时,每当存储器页随后由连续存储器存取请求定为目标时,存储器控制器可使计数器的值递增。为了帮助说明,继续以上实例,存储器控制器可在存储器页随后由第二存储器存取请求定为目标时使计数器从值零递增到值一,在存储器页随后由第三存储器存取请求定为目标时使计数器从值一递增到值二,以此类推。
另一方面,当在激活时间段结束时撤销激活存储器页时,存储器控制器可至少部分地基于存储器页在激活时间段期间被连续定为目标的次数而更新包含在相关联状态信息中的页命中置信度参数。换句话说,继续以上实例,当随后撤销激活存储器页时,存储器控制器可至少部分地基于在激活时间段结束时(例如,在计数器由于下一存储器存取请求定目标且因此使得不同的存储器页被激活而复位之前)产生的计数器值而更新相关联的页命中置信度参数的值。作为示意性实例,在一些实施例中,存储器控制器可通过用在激活时间段结束时产生的计数器值覆写(例如,在激活时间段开始时确定的)先前值来更新页命中置信度参数。
另外或替代地,存储器控制器可至少部分地基于存储器页的一或多个先前状态而更新与存储器页相关联的页命中置信度参数。举例来说,在激活时间段结束时,存储器控制器可基于在激活时间段结束时产生的计数器值与和在激活时间段开始时与存储器页相关联的页命中置信度参数的值的(例如,加权)平均值而更新与存储器页相关联的页命中置信度参数,进而产生移动平均值。另外或替代地,存储器控制器可通过以下操作来更新页命中置信度参数:对在多个激活时间段结束时产生的计数器值求平均值,例如使得在更新近的激活时间段结束时产生的计数器值的权重比在更早期的激活时间段结束时产生的计数器值的权重更大。
在任何情况下,如上文所描述,存储器控制器可响应于存储器页由存储器存取请求定为目标而确定(例如,检索)与存储器页相关联的状态信息,所述状态信息包含页命中置信度参数和激活状态参数。另外,如上文所描述,在一些实施例中,由存储器控制器接收的存储器存取请求可为预取(例如,读取)存储器存取请求,其目标为存储在存储器阵列(例如,较高)存储器层级中的数据块预取到专用(例如,实际)较低(例如,高速缓存和/或预取缓冲器)存储器层级。因而,响应于接收到预取存储器存取请求,存储器控制器可确定与当前存储有以预取为目标的数据块的目标存储器页相关联的状态信息。
此外,如上文所描述,在一些实施例中,由存储器控制器接收的存储器存取请求可为要求存储器存取请求。举例来说,要求存储器存取请求可为要求(例如,目标为)返回存储在存储器阵列(例如,较高)存储器层级中的数据块的读取存储器存取请求。另外或替代地,要求存储器存取请求可为要求将数据块存储在存储器阵列(例如,较高)存储器层级中的写入存储器存取请求。因而,响应于接收到要求存储器存取请求,存储器控制器可确定与数据块以存储在其中为目标的所要求的(例如,目标)存储器页和/或当前存储有以检索为目标的数据块的所要求的存储器页相关联的状态信息。
此外,如上文所描述,在一些情况下,由要求存储器存取请求定为目标的数据块的副本(例如,实例)可另外存储在专用高速缓存中以便提高计算系统操作效率。然而,如上文所描述,相比于存储器阵列(例如,较高)存储器层级,专用较低(例如,预取缓冲器和/或高速缓存)存储器层级的存储容量通常有限。另外,如上文所描述,预充电和激活存储器页以启用写入到所述存储器页中的存储位置和/或从所述存储器页中的存储位置读取通常会消耗电功率。因而,至少在一些情况下,在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中自动预取和/或高速缓存数据块可能会实际上降低计算系统操作效率,例如,这是因为有限的存储容量使得另一数据块过早地从专用较低存储器层级中逐出,和/或引起存储有数据块的存储器页的激活,从而增加功耗。
因此,为了促进提高计算系统操作效率,在一些实施例中,存储器控制器可至少部分地基于与当前处于激活状态和/或当前被定为目标以履行存储器存取请求的存储器页相关联的状态信息而选择性地(例如,预测性地和/或自适应地)停用(例如,阻止)候选数据块在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中预取和/或高速缓存。举例来说,至少部分地基于与存储器页相关联的页命中置信度参数,存储器控制器可确定(例如,预测)后续(例如,下一连续)存储器存取请求也将存储器页定为目标的置信度(例如,统计似然度和/或统计概率)。另外,至少部分地基于与存储器页相关联的激活状态参数,存储器控制器可确定存储器页是否已经(例如,当前)处于其激活状态,例如,这是因为先前的(例如,紧接在前的)存储器存取请求将同一存储器页定为目标。
换句话说,至少部分地基于响应于存储器存取请求而确定的状态信息,在一些实施例中,存储器控制器可确定由存储器存取请求定为目标的存储器页当前是否处于其激活状态。如上文所描述,在一些实施例中,当选择性地停用专用(例如,实际)较低存储器层级中的预取和/或高速缓存时,存储器控制器可将当前激活的存储器页人工处理为较低(例如,高速缓存和/或预取缓冲器)存储器层级。换句话说,当在此类实施例中选择性地停用专用较低存储器层级中的预取和/或高速缓存时,相比于存储器阵列中当前撤销激活的存储器页,存储器控制器可将存储器阵列中当前激活的存储器页人工处理为较低(例如,行缓冲器)存储器层级,例如,使得存储器控制器在尝试从当前撤销激活的存储器页和/或从专用(例如,实际)较低存储器层级检索所要求的数据块之前,尝试从当前激活的存储器页检索所要求的数据块。
实际上,在一些实施例中,存储器控制器可取决于目标存储器页当前是处于其激活状态还是其撤销激活状态而利用不同的决策准则来确定是启用还是停用专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中的预取和/或高速缓存。举例来说,当处于激活状态的存储器页由存储器存取请求定为目标时,存储器控制器可确定后续(例如,下一连续)存储器存取请求不大可能在与存储器请求相关联的页命中置信度参数的值小于(例如,第一)置信度(例如,统计似然度和/或统计概率)阈值时将同一(例如,当前激活的)存储器页定为目标。换句话说,在此类情况下,存储器控制器可预测后续存储器存取请求将不同的(例如,当前撤销激活的)存储器页定为目标且因此未命中(例如,当前激活的)存储器页,进而在对存储器页的存取随后被定为目标(例如,被要求)时使得存储器页处于其撤销激活状态。因此,在此类情况下,存储器控制器可启用候选数据块在专用较低(例如,预取缓冲器和/或高速缓存)存储器层级中的预取和/或高速缓存(例如,停用高速缓存旁路),至少在一些情况下,这可例如使候选数据块在随后被要求的情况下能够从专用较低存储器层级而不是存储器阵列(例如,较高)存储器层级中预期处于撤销激活状态的存储器页供应,从而促进提高计算系统操作效率。
相反地,当处于激活状态中的存储器页由存储器存取请求定为目标时,存储器控制器可确定在相关联的页命中置信度参数的值不小于(例如,第一)置信度阈值时,后续(例如,下一连续)存储器存取请求更有可能将同一存储器页定为目标。换句话说,在此类情况下,存储器控制器可预测后续存储器存取请求也将同一(例如,当前激活的)存储器页定为目标且因此命中所述同一存储器页,进而在对存储器页的存取随后被定为目标(例如,被要求)时使得存储器页处于其激活状态。因此,在此类情况下,存储器控制器可停用候选数据块在专用较低存储器层级中的预取和/或高速缓存(例如,启用高速缓存旁路),至少在一些情况下,这可例如降低候选数据块污染专用较低存储器层级的可能性且替代地使候选数据块在随后被要求的情况下能够从预期处于激活状态的存储器页供应,从而促进提高计算系统操作效率。
另一方面,当目标存储器页当前处于其撤销激活状态时,在一些实施例中,存储器控制器可自动启用候选数据块在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中的预取和/或高速缓存。在其它实施例中,存储器控制器仍然可在目标存储器页当前处于其撤销激活状态时选择性地停用候选数据块在专用较低存储器层级中的预取和/或高速缓存。举例来说,当处于撤销激活状态的存储器页由存储器存取请求定为目标时,存储器控制器可确定在与当前激活的存储器页相关联的页命中置信度参数的值大于第二置信度阈值时,后续存储器存取请求更有可能将当前激活的(例如,不同的)存储器页定为目标。换句话说,在此类情况下,存储器控制器可预测后续存储器存取请求将不同的(例如,当前激活的)存储器页定为目标且因此未命中由存储器存取请求定为目标的(例如,当前撤销激活的)存储器页,进而在对存储器页的存取随后被定为目标(例如,被要求)时使得存储器页处于其撤销激活状态。因此,在此类情况下,存储器控制器可停用候选数据块在专用较低存储器层级中的预取和/或高速缓存(例如,停用高速缓存旁路),至少在一些情况下,这可例如降低候选数据块污染专用较低存储器层级的可能性和/或避免由于激活目标存储器页和随后再激活当前激活的存储器页而产生的功耗,从而促进提高计算系统操作效率。
相反,当处于撤销激活状态的存储器页由存储器存取请求定为目标时,存储器控制器可确定在与当前激活的存储器页相关联的页命中置信度参数的值不大于第二置信度阈值时,后续(例如,下一连续)存储器存取请求不大可能将当前激活的(例如,不同的)存储器页定为目标。换句话说,在此类情况下,存储器控制器可预测后续存储器存取请求将不同于当前激活的存储器页的(例如,当前撤销激活的)存储器页定为目标。然而,由于存储器阵列可同时包含多个撤销激活的存储器页,因此至少在一些情况下,此确定与由存储器存取请求定为目标的(例如,当前撤销激活的)存储器页在对存储器页的存取随后被定为目标时将处于其激活状态还是其撤销激活状态的相关性可能有限。因此,在此类情况下,存储器控制器可启用候选数据块在专用较低存储器层级中的预取和/或高速缓存(例如,启用高速缓存旁路),至少在一些情况下,这可例如使候选数据块在随后被定为目标的情况下能够从高速缓存而不是存储器阵列供应,从而促进提高计算系统操作效率。
在一些实施例中,在目标存储器页当前处于其撤销激活状态时使用的第二置信度阈值的值可与在目标存储器页当前处于其激活状态时使用的第一置信度阈值的值匹配。在其它实施例中,第二置信度阈值的值和第一置信度阈值的值可不同。举例来说,第二置信度阈值的值可大于第一置信度阈值的值,或反之亦然。
此外,在一些实施例中,用于确定是否停用预取的(例如,第一或第二)置信度阈值的值和用于确定是否确定停用高速缓存的对应置信度阈值的值可不同。举例来说,当目标存储器页处于其激活状态时,存储器控制器可基于(例如,第一)预取置信度阈值而确定是否停用预取,且基于(例如,第一)高速缓存置信度阈值而确定是否停用高速缓存。另外或替代地,当目标存储器页处于其撤销激活状态时,存储器控制器可基于第二预取置信度阈值而确定是否停用预取且基于第二高速缓存置信度阈值而确定是否停用高速缓存。在任何情况下,如下文将更详细地描述,以此方式实施和/或操作存储器子系统以选择性地停用专用较低(例如,预取缓冲器和/或高速缓存)存储器层级中的预取和/或高速缓存可促进提高存储器子系统的操作效率,且因此促进提高部署有存储器子系统的计算系统的操作效率。
为了帮助说明,图1中展示包含处理子系统12(例如,系统)及存储器子系统14(例如,系统)的计算系统10(例如,设备)的实例。应了解,所描绘的实例仅旨在说明而非限制。具体地说,计算系统10可另外或替代地包含其它计算子系统。举例来说,计算系统10可另外包含联网子系统、射频子系统、用户输入子系统和/或显示子系统。
此外,在一些实施例中,计算系统10可在单个电子装置中实施,所述电子装置例如台式计算机、工作站计算机、笔记本计算机、服务器、移动电话、虚拟现实头戴装置等。在其它实施例中,计算系统10可分布于多个电子装置之间。举例来说,处理子系统12及存储器子系统14可在主机装置中实施,而其它计算子系统,例如用户输入子系统和/或显示子系统,可在客户端(例如,远程)装置中实施。实际上,在一些实施例中,计算子系统可分布于多个电子装置之间。举例来说,处理子系统12的第一部分和/或存储器子系统14的第一部分可在主机装置中实施,而处理子系统12的第二部分和/或存储器子系统14的第二部分可在客户端装置中实施。
在任何情况下,在计算系统10的操作期间,处理子系统12通常执行各种操作,例如以通过在处理器中执行指令以对输入数据执行对应数据处理操作来确定输出数据。因此,如在所描绘的实例中,处理子系统12可包含处理电路系统16。在一些实施例中,处理电路系统16可包含在一或多个中央处理单元(CPU)、一或多个图形处理单元(GPU)、一或多个处理器核心或其任何组合中。
另外,如在所描绘的实例中,处理子系统12可包含一或多个寄存器22。在一些实施例中,寄存器22可提供可由处理电路系统16直接存取的一或多个存储位置。然而,寄存器22的存储容量通常有限。因此,如在所描绘的实例中,处理子系统12可经由一或多个通信总线20通信地耦合到提供额外数据存储容量的存储器子系统14。在一些实施例中,通信总线20可包含一或多个电缆、一或多个导线、一或多个导电迹线、一或多个通信网络,或其任何组合。
换句话说,处理子系统12和存储器子系统14可经由一或多个通信总线20进行通信。举例来说,处理子系统12可传达(例如,输出或传输)写入存储器存取请求以及用于存储在存储器子系统14中的数据和/或目标为返回先前存储在存储器子系统14中的数据的读取存储器存取请求。另外或替代地,存储器子系统14可例如响应于读取存储器存取请求而传达(例如,输出或返回)先前存储在其中的目标数据,以实现通过处理子系统12的处理电路系统16进行处理和/或执行。
为了提供数据存储,如在所描绘的实例中,存储器子系统14可包含一或多个存储器装置18(例如,芯片或集成电路)。如下文将更详细地描述,在一些实施例中,存储器装置18可包含组织成一或多个存储器阵列28的存储器单元(例如,电路系统),且因此可包含一或多个有形的非暂时性计算机可读媒体。举例来说,存储器子系统14可包含经由外部通信(例如,存储器)总线20通信地耦合到处理子系统12的一或多个存储器装置18。
然而,如上文所描述,经由外部通信总线20进行的数据通信通常慢于外部通信总线20的处理器侧内的数据通信和/或外部通信总线20的存储器侧内的数据通信。至少在一些情况下,通信速度差和因此产生的数据检索等待时间可能至少部分是由于外部通信总线20是与其它计算子系统共享的,外部通信总线20的处理器侧上的组件与外部通信总线20的存储器侧上的组件之间存在定时差,和/或外部通信总线20的处理器侧与外部通信总线20的存储器侧之间存在通信距离。
为了促进提高所提供的数据存取速度,如在所描绘的实例中,存储器子系统14可包含一或多个高速缓存24,其提供相比于存储器装置18更快的数据存取速度。在一些实施例中,高速缓存24可提供组织成一或多个高速缓存线30的存储位置,例如,以存储同样存储在实施于一或多个存储器装置18中的存储器阵列28中的数据的实例(例如,副本)。因此,在一些实施例中,高速缓存24可在存储器装置18与处理子系统12的处理电路系统16之间通信地耦合,和/或用于实施相比于在存储器装置18中实施的存储器阵列28更低的存储器层。
举例来说,存储器子系统14可包含在外部通信(例如,存储器)总线20的处理器侧上实施的一或多个处理器侧高速缓存24。在一些实施例中,处理器侧高速缓存24中的一或多个可与处理电路系统16集成。举例来说,处理器侧高速缓存24可包含1级(L1)高速缓存、2级(L2)高速缓存和/或3级(L3)高速缓存。另外或替代地,存储器子系统14可包含在外部通信总线20的存储器侧上实施的一或多个存储器侧高速缓存24。换句话说,在一些实施例中,存储器子系统14可包含在外部通信总线20的处理器侧上实施的第一(例如,处理器侧)部分和在外部通信总线20的存储器侧上实施的第二(例如,存储器侧)部分。
在一些实施例中,计算系统10可另外包含一或多个预取缓冲器32,其提供相比于存储器装置18更快的数据存取速度。举例来说,存储器子系统14的处理器侧可包含与其处理器侧高速缓存24不同(例如,分开)的处理器侧预取缓冲器32。另外或替代地,存储器子系统14的存储器侧可为与其存储器侧高速缓存24不同(例如,分开)的存储器侧预取缓冲器32。
此外,在一些实施例中,预取缓冲器32可提供组织成一或多个缓冲器线33的存储位置,例如以存储从在一或多个存储器装置18中实施的存储器阵列28预取(例如,在被要求之前检索)的数据的实例(例如,副本)。因此,在一些实施例中,预取缓冲器32可在存储器装置18与处理子系统12的处理电路系统16之间通信地耦合,和/或用于实施相比于在存储器装置18中实施的存储器阵列28更低的存储器层级。此外,在一些实施例中,预取到预取缓冲器32的数据可随后传送到高速缓存24。因此,至少在此类实施例中,预取缓冲器32可在高速缓存24与存储器装置18之间通信地耦合,和/或用于实施相比于高速缓存24更高的存储器层级。在其它实施例中,已预取数据可直接存储到高速缓存24中,且因此预取缓冲器32可被排除(例如,为任选的)且不包含在计算系统10中。
在任何情况下,为了促进控制其中的数据存储,存储器子系统14可包含一或多个存储器控制器(例如,控制逻辑和/或控制电路系统)34,其例如经由(例如,指令)通信总线20通信地耦合到高速缓存24、预取缓冲器32和/或存储器装置18。如在所描绘的实例中,在一些实施例中,存储器控制器34可使用多个控制器(例如,控制逻辑和/或控制电路系统)来实施,所述控制器例如高速缓存控制器36、预取控制器38、主存储器控制器40和/或存储器感知控制器42。在一些实施例中,可实施和/或操作高速缓存控制器36以例如通过识别要考虑存储(例如,高速缓存)在高速缓存存储器层级中以及存储在较高(例如,存储器阵列)存储器层级中的一或多个候选数据块来控制一或多个高速缓存24中的数据存储,且因此控制在存储器子系统14中实施的对应高速缓存(例如,较低)存储器层级中的数据存储。另外,在一些实施例中,可实施和/或操作预取控制器38以例如通过识别要考虑从较高(例如,存储器阵列)存储器层级预取到专用较低(例如,预取缓冲器和/或高速缓存)存储器层级中的一或多个候选数据块来促进预测性地控制一或多个高速缓存24中和/或一或多个预取缓冲器32中的数据存储,且因此控制在存储器子系统14中实施的对应较低存储器层级中的数据存储。
此外,在一些实施例中,可实施和/或操作例如DRAM存储器控制器的主存储器控制器40以控制在存储器子系统14中实施的一或多个存储器阵列28中的数据存储。具体地说,在一些实施例中,(例如,主)存储器控制器34可根据打开页策略控制存储器阵列28的操作,例如,使得当前激活的存储器页保持激活,直到不同的(例如,当前撤销激活的)存储器页被定为目标,此时撤销激活当前激活的存储器页且随后激活不同的存储器页。换句话说,至少在此类实施例中,存储器页的激活时间段的跨度可从最初激活存储器页(例如,以履行存储器存取请求)的时间直到随后撤销激活存储器页(例如,由于不同的存储器页被定为目标)的时间。
此外,为了促进提高计算系统10的操作效率,在一些实施例中,存储器感知控制器42可至少部分地基于在存储器子系统14中实施的一或多个存储器阵列28的当前状态而选择性地(例如,预测性地和/或自适应地)确定是否停用候选数据块在专用较低(例如,预取缓冲器和/或高速缓存)存储器层级中的预取和/或高速缓存。如上文所描述,在一些实施例中,可实施和/或操作例如DRAM存储器控制器的主存储器控制器40以控制存储器阵列28中的数据存储。因此,至少在此类实施例中,主存储器控制器40可确定存储器阵列28的当前状态且将指示存储器阵列28的当前状态的状态信息提供到存储器感知控制器42,进而使存储器感知控制器42能够至少部分地基于存储器阵列28的当前状态而选择性地停用高速缓存和/或预取。
另外,如上文所描述,在一些实施例中,存储器子系统14可包含经由外部通信(例如,存储器)总线20耦合的处理器侧部分和存储器侧部分。因此,在一些实施例中,存储器子系统14可包含在外部通信总线20的存储器侧上实施,例如实施为存储器侧存储器控制器34的一或多个存储器控制器34。另外或替代地,存储器子系统14可包含在外部通信总线20的处理器侧上实施,例如实施为处理器侧存储器控制器34的一或多个存储器控制器34。
为了帮助说明,图2中展示包含处理子系统12A和处理器侧存储器子系统14A的计算系统10的处理器侧的实例。如上文所描述,在一些实施例中,处理子系统12的处理电路系统16可使用一或多个处理器核心44实施。举例来说,处理子系统12A中的处理电路系统16A可至少包含第一处理器核心44A及第N处理器核心44N。然而,应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,处理子系统12可包含单个处理器核心44或两个或更多个(例如,四个、八个或十六个)处理器核心44。
另外,如上文所描述,在一些实施例中,处理子系统12可包含提供可由其处理电路系统16直接存取的存储位置的一或多个寄存器22。举例来说,处理子系统12A可至少包含可提供可由第一处理器核心44A直接存取的存储位置的第一寄存器22A和可提供可由第N处理器核心44N直接存取的存储位置的第N寄存器22N。为了促进增加在存储器总线20A的处理器侧上提供的存储,如上文所描述,处理器侧存储器子系统14A可包含一或多个处理器侧高速缓存24A和/或处理器侧预取缓冲器32A。在一些实施例中,可使用例如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)等易失性存储器来实施处理器侧高速缓存24A和/或处理器侧预取缓冲器32A。
此外,在一些实施例中,处理器侧高速缓存24A可组织成实施一或多个分级(例如,高速缓存)存储器层级。举例来说,处理器侧高速缓存24A可包含可用于实施一或多个较低(例如,最低)存储器层级的私用处理器侧高速缓存46和可用于实施较高(例如,中间)存储器层级的共享处理器侧高速缓存48。在一些实施例中,由共享处理器侧高速缓存48提供的数据存储可由至少第一处理器核心44A和第N处理器核心44N共享。举例来说,共享处理器侧高速缓存48可包含一或多个3级(L3)处理器侧高速缓存24A。
另一方面,在一些实施例中,由私用处理器侧高速缓存46提供的数据存储可专用于对应处理器核心44。举例来说,第一一或多个私用处理器侧高速缓存46A可包含专用于第一处理器核心44A的1级(L1)处理器侧高速缓存24A和专用于第一处理器核心44A的2级(L2)处理器侧高速缓存24A。另外或替代地,第N一或多个私用处理器侧高速缓存46N可包含专用于第N处理器核心44N的1级(L1)处理器侧高速缓存24A和专用于第N处理器核心44N的2级(L2)处理器侧高速缓存24A。
在任何情况下,处理器侧存储器控制器34A可通常控制处理器侧存储器子系统14A中的数据存储。换句话说,在一些实施例中,处理器侧存储器控制器34A可控制处理器侧高速缓存24A、处理器侧预取缓冲器32A和/或在处理子系统12A中实施的寄存器22中的数据存储。举例来说,处理器侧存储器控制器34A可控制数据存储,使得处理电路系统16A要求(例如,定为目标)的数据返回到处理电路系统16A的寄存器22中的一或多个。因此,如在所描绘的实例中,处理器侧存储器控制器34A可经由一或多个处理器侧内部总线20B通信地耦合到处理电路系统16A、处理器侧高速缓存24A和/或处理器侧预取缓冲器32A,例如以使处理器侧存储器控制器34A能够确定处理电路系统16A要求(例如,定为目标)的数据和/或输出指示(例如,使得)处理器侧存储器子系统14A调整其中的数据存储的控制(例如,命令)信号。
具体地说,在一些实施例中,处理器侧存储器控制器34A可识别例如处理子系统12A在存储器子系统14中存储(例如,写入)所要求的、处理子系统12A从存储器子系统14检索(例如,读取)所要求的和/或预期(例如,预测)处理子系统12A在即将到来的控制时域(例如,时间段和/或一或多个时钟循环)期间所要求的目标数据块。另外,处理器侧存储器控制器34可确定目标数据块当前是否存储在处理器侧存储器子系统14A中,且因此确定目标数据块是否引起处理器侧未命中。此外,如上文所描述,在一些实施例中,处理器侧存储器子系统14A可经由例如使用一或多个处理器侧高速缓存24和/或处理器侧预取缓冲器32A实施的一或多个专用较低存储器层级提供数据存储。
为了帮助说明,图3中展示可在存储器子系统14中实施的专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的实例。在一些实施例中,专用较低存储器层级50可为高速缓存存储器层级,且因此使用一或多个高速缓存24来实施。另外或替代地,专用较低存储器层级50可为预取缓冲器存储器层级,且因此使用一或多个预取缓冲器32来实施。
在任何情况下,如在所描绘的实例中,专用较低存储器层级50可提供组织成多个线52(例如,高速缓存线30和/或缓冲器线33)的存储位置,所述多个线52即第一线52A、第F线52F等等。另外,如在所描绘的实例中,可分配包含在专用较低存储器层级50的线52中的存储位置以启用一或多个数据对象54的存储,一或多个数据对象54各自包含数据块56和相关联的元数据58。举例来说,可利用能够存储至少包含第一数据对象54A和第D数据对象54D的D个有效数据对象54的线宽来实施第一线52。然而,应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,可向专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中的线52分配能够存储单个有效数据对象54、单个有效数据块56、多于两个有效数据对象54或多于两个有效数据块56的线宽。
在任何情况下,数据块56通常包含例如预期在一起处理(例如,分析和/或解释)的相关数据位。另外,如在所描绘的实例中,数据对象54中的元数据58可包含与数据对象54中的对应数据块56相关联的一或多个参数。举例来说,元数据58可包含标签参数60、有效性参数62和/或脏参数64。然而,又应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,数据对象54中的元数据58可包含与数据对象54中的对应数据块56相关联的一或多个其它参数,例如事务上下文参数。
在一些实施例中,包含在数据对象54的元数据58中的有效性参数62可指示对应数据块56的有效性。举例来说,有效性参数62可包含有效性位,其在被设置(例如,为“1”位或高)时指示数据块56有效且在未被设置(例如,为“0”位或低)时指示数据块56无效。另外或替代地,有效性参数62可促进检测数据块56是否有效和/或在无效时校正数据块56。举例来说,有效性参数62可包含一或多个错误校验码,例如反转位、有害位(poison bit)、奇偶校验位、错误检测码(EDC)、错误校正码(ECC)、Bose-Chaudhuri-Hocquenghem(BCH)码、消息认证码(MAC)、循环冗余校验(CRC)码或其任何组合。
另外,在一些实施例中,包含在数据对象54的元数据58中的脏参数64可指示是否已相对于存储在较高存储器层级中的数据块56的版本修改对应数据块56。举例来说,脏参数64可包含脏位,其在被设置(例如,为“1”位或高)时指示数据块56已被修改,且在未被设置(例如,为“0”位或低)时指示数据块56尚未被修改。换句话说,至少在此类实施例中,当最初相对于存储在较高存储器层级中的数据块56的版本修改数据块56时,可切换脏参数64。
此外,在一些实施例中,包含在数据对象54的元数据58中的标签参数60可促进识别对应数据块56。在一些实施例中,相关联标签参数60的值可指示数据块56和/或对应数据对象54在地址空间中的存储位置,且因此可用于识别数据块56和/或数据对象54。换句话说,在一些实施例中,标签参数60可指示数据块56的虚拟存储器地址、数据块56的物理存储器地址,或基于数据块56的虚拟存储器地址和物理存储器地址而确定的值。
因而,在一些实施例中,存储器子系统14可至少部分地基于与存储在其中的有效数据块56相关联的标签参数60的值而在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中搜索目标(例如,被请求和/或要求的)数据块56。举例来说,返回到图2的处理器侧存储器子系统14A,当数据块56被定为目标时,处理器侧存储器控制器34A可确定预期与目标数据块56相关联的标签参数60的目标值。具体地说,在一些实施例中,处理器侧存储器控制器34A可至少部分地基于与目标数据块56相关联的虚拟存储器地址和/或物理存储器地址而确定标签参数60的目标值。
至少部分地基于目标值,处理器侧存储器控制器34A可通过搜索与存储在专用较低存储器层级50中的有效数据块56相关联的标签参数60来确定目标数据块56是否未命中在处理器侧存储器子系统14A中实施的专用较低存储器层级50。举例来说,当目标标签参数60同与存储在专用较低存储器层级50中的有效数据块56相关联的标签参数60匹配且因此引起较低存储器层级(例如,高速缓存和/或预取缓冲器)命中时,处理器侧存储器控制器34A可确定目标数据块56存储在专用较低存储器层级50中。另一方面,当目标标签参数60同与存储在专用较低存储器层级50中的任何有效数据块56相关联的标签参数60不匹配且因此引起较低存储器层级(例如,高速缓存和/或预取缓冲器)未命中时,处理器侧存储器控制器34A可确定目标数据块56未存储在专用较低存储器层级50中。
当以检索为目标的数据块56未存储在实施于处理器侧存储器子系统14A中的一或多个专用较低存储器层级50中的任一个中时,处理器侧存储器控制器34A可确定目标数据块56引起处理器侧未命中。如上文所描述,当目标数据块56引起处理器侧未命中时,处理器侧存储器子系统14A可输出读取(例如,预取或要求)存储器存取请求,其请求经由存储器总线20A返回目标数据块56。另外或替代地,处理器侧存储器子系统14A可输出写入(例如,要求)存储器存取请求,其请求经由存储器总线20A存储目标数据块56。
如在所描绘的实例中,在一些实施例中,处理器侧存储器子系统14A可包含请求(例如,命令)队列66,其可用于在将存储器存取请求输出到存储器总线20A之前存储所述存储器存取请求。换句话说,至少在此类实施例中,处理器侧存储器控制器34A可生成存储器存取请求且将所述存储器存取请求存储在请求队列66中。处理器侧存储器子系统14A可接着从请求队列66检索存储器存取请求且将存储器存取请求输出到存储器总线20A。实际上,在一些实施例中,处理器侧存储器控制器34A可生成具有不同的履行优先级的存储器存取请求,例如,使得要求存储器存取请求相比于预取存储器存取请求具有更高的履行优先级。
为了存储经由存储器总线20A的通信,如在所描绘的实例中,处理器侧存储器子系统14A可包含耦合在存储器总线20A与一或多个处理器侧内部总线20B之间的处理器侧总线接口68。在一些实施例中,处理器侧总线接口68可包含可各自耦合到存储器总线20A的对应导线的一或多个引脚。另外,如上文所描述,存储器子系统14的存储器侧可耦合到存储器总线20A的相对端。
为了帮助说明,图4中展示经由存储器侧总线接口70耦合到存储器总线20A的存储器侧存储器子系统14B的实例。在一些实施例中,存储器侧总线接口70可包含可各自耦合到存储器总线20A的对应导线的一或多个引脚。另外,如在所描绘的实例中,存储器侧存储器子系统14B可包含一或多个存储器侧高速缓存24B、存储器侧预取缓冲器32B和一或多个存储器装置18A。然而,应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,存储器侧高速缓存24和/或存储器侧预取缓冲器31可为任选的,且因此不包含在存储器子系统14中。
在任何情况下,如上文所描述,在一些实施例中,存储器子系统14可包含一或多个非易失性存储器装置18和/或一或多个易失性存储器装置18。一般来说,非易失性存储器装置18可使用非易失性存储器来提供数据存储。举例来说,非易失性存储器装置18可包含快闪(例如,NAND)存储器装置、相变存储器(例如,3D XPointTM)装置、铁电随机存取存储器(FeRAM)装置、固态驱动器(SSD)、硬盘驱动器(HDD)或其任何组合。另一方面,易失性存储器装置18可通常使用易失性存储器来提供数据存储。举例来说,易失性存储器装置18可包含动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置或这两者。
此外,在一些实施例中,多个存储器装置18可在例如双列直插式存储器模块(DIMM)或单列直插式存储器模块(SIMM)等存储器模块上实施。举例来说,存储器模块可包含印刷电路板(PCB)和安置在印刷电路板的平坦或平面(例如,前或后)表面上的多个存储器装置18。另外,存储器装置18可经由在印刷电路板上形成的导电迹线耦合到沿着印刷电路板的(例如,底部)边缘形成的外部引脚。
然而,应了解,存储器装置18中的一或多个可使用其它封装技术来实施。举例来说,存储器装置18可耦合到(例如,硅)内插件以实施2.5D配置。另外或替代地,存储器装置18可堆叠以实施3D配置。此外,在一些实施例中,存储器装置18可使用有机封装技术来实施。换句话说,在一些实施例中,本公开中描述的技术可实施为封装上解决方案。
在任何情况下,如上文所描述,不同的存储器类型通常提供影响操作效率和/或实施相关联成本的不同权衡,例如存储器子系统14和因此部署有存储器子系统14的计算系统10的组件计数、制造步骤和/或物理覆盖面积。举例来说,相比于易失性存储器,非易失性存储器通常提供更高(例如,更大)的数据存储密度。另外,与易失性存储器单元相比,非易失性存储器单元即使处于未通电状态也可维持数据的存储。另一方面,相比于非易失性存储器,易失性存储器通常提供更快的数据存取(例如,读取和/或写入)速度。实际上,相比于动态随机存取存储器(DRAM),静态随机存取存储器(SRAM)通常提供更快的数据存取速度。
因此,为了促进提高数据存取速度,在一些实施例中,相比于例如实施最高(例如,最大和最慢)存储器层级的非易失性存储器装置18,易失性存储器装置18可用于实施较低(例如,较小和较快)存储器层级。如上文所描述,在一些实施例中,一或多个存储器装置18中的存储器单元可组织成存储器阵列28以实施对应存储器层级。举例来说,存储器侧存储器子系统14B中的非易失性存储器单元可组织成与存储器子系统14中的存储(例如,最高和/或非易失性)存储器层级对应的存储性存储器阵列72。
另外,在一些实施例中,易失性存储器单元可组织成例如各自与不同的存储器(例如,DRAM)通道对应的一或多个存储器通道存储器阵列74。作为说明性实例,存储器侧存储器子系统14B中的易失性存储器单元可组织成与第一存储器通道对应的第一存储器通道存储器阵列74A。另外或替代地,存储器侧存储器子系统14B中的易失性存储器单元可组织成与第M存储器通道对应的第M存储器通道存储器阵列74M。
图5中展示可在一或多个存储器装置18中实施的存储器阵列28A的实例。如在所描绘的实例中,存储器阵列28A可耦合到控制电路系统,即行选择(例如,解码器)电路系统76和列选择(例如,解码器)电路系统78。另外,如在所描绘的实例中,存储器阵列28A可包含经由在第一(例如,水平)方向上形成的字线82耦合到行选择电路系统76且经由在第二(例如,竖直)方向上形成的位线86耦合到放大器电路系统84的存储器单元80。
在一些实施例中,每一存储器单元80可包含切换组件,例如金属氧化物半导体场效应晶体管(MOSFET),以及存储组件,例如电容器。举例来说,存储器单元80可经实施以使其MOSFET耦合在位线86与其存储电容器之间,且其MOSFET的栅极耦合到字线82。因而,在一些实施例中,每一存储器单元80可用于存储一个数据位。举例来说,当存储在存储器单元80中的电荷产生大于阈值电压的电压时,存储器单元80可指示1位(例如,逻辑高位)。另一方面,当存储在存储器单元80中的电荷产生小于阈值电压的电压时,存储器单元80可指示0位(例如,逻辑低位)。在其它实施例中,存储器单元80可经实施以存储多个数据位。举例来说,四层级单元(QLC)NAND存储器中的存储器单元80可经实施以存储两个数据位。
在任何情况下,如在所描绘的实例中,存储器单元80可组织成可各自由对应行(例如,页)地址识别的一或多个存储器单元行88(例如,存储器页),以及可各自由对应列(例如,物理存储器)地址识别的一或多个存储器单元列90。在一些实施例中,存储器单元行88可包含耦合到(例如,一个)字线82的存储器单元80中的每一个。举例来说,第一存储器单元行88A(例如,第一存储器页)可包含耦合到第一字线82A的存储器单元80中的每一个,且第L存储器单元行88L(例如,第L存储器单元页)可包含耦合到第L字线82L的存储器单元80中的每一个。
如在所描绘的实例中,以这种方式组织存储器阵列28A可使存储器单元80能够分组到各自适合于存储数据块56的存储位置(例如,存储器地址)中。举例来说,第一数据块56A可存储在包含第一存储器单元行88A和第一存储器单元列90A中的存储器单元80的第一存储位置处,第二数据块56B可存储在包含第L存储器单元行88L和第二存储器单元列90B中的存储器单元80的第二存储位置处,且第W数据块56W可存储在包含第一存储器单元行88A和第K存储器单元列90K中的存储器单元80的第W存储位置处。在其它实施例中,存储器阵列28中的存储器单元80可分组到各自适合于存储数据对象54的存储位置中,数据对象54包含数据块56和对应元数据58。
在任何情况下,如上文所描述,行选择电路系统76可经由对应字线82连接到存储器阵列28A的存储器单元行88(例如,存储器页)。为了启用从特定存储器页中的存储位置读取和/或写入到特定存储器页中的存储位置,行选择电路系统76可激活包含在存储器页中的存储器单元80。举例来说,在一些实施例中,行选择电路系统76可通过经由对应字线82输出预充电控制信号来对存储器页(例如,存储器单元行88)预充电,且随后,通过经由对应字线82输出激活(例如,逻辑高)控制信号来激活存储器页,这使得存储器页中的每一存储器单元80的切换组件将存储器单元80的存储组件电耦合(例如,连接)到对应位线86。
此外,如在所描绘的实例中,列选择电路系统78可经由对应放大器电路系统84耦合到存储器单元列90。换句话说,列选择电路系统78可经由第一位线86A和第一放大器电路系统84A耦合到第一存储器单元列90A,经由第二位线86B和第二放大器电路系统84B耦合到第二存储器单元列90B,且经由第K位线86K和第K放大器电路系统84K耦合到第K存储器单元列90K。在一些实施例中,放大器电路系统84可包含促进将数据存储(例如,写入)到存储器单元80中的驱动器放大器和/或促进从存储器单元80输出(例如,读取)数据的感测放大器。
另外,在一些实施例中,列选择电路系统78可例如通过将列选择(例如,逻辑高)控制信号输出到对应放大器电路系统84而选择性地启用从激活的存储器页中的存储位置读取和/或写入到激活的存储器页中的存储位置。换句话说,为了从第一存储器单元列90A中的存储位置读取数据(例如,第一数据块56A)和/或将数据写入到第一存储器单元列90A中的存储位置,列选择电路系统78可将列选择控制信号输出到第一放大器电路系统84A。类似地,为了从第二存储器单元列90B中的存储位置读取数据(例如,第二数据块56B)和/或将数据写入到第二存储器单元列90B中的存储位置,列选择电路系统78可将列选择信号输出到第二放大器电路系统84B。此外,为了从第K存储器单元列90K中的存储位置读取数据(例如,第W数据块56)和/或将数据写入到所述存储位置,列选择电路系统78可将列选择控制信号输出到第K放大器电路系统84K。以此方式,一或多个存储器装置18中的存储器单元80可组织成实施存储器子系统14中的存储器阵列28。
返回到图4的存储器侧存储器子系统14B,除了在存储器装置18中实施的存储器阵列28之外,存储器侧存储器子系统14B还可包含例如无法由计算系统10的处理器侧(例如,主机)经由存储器总线20A直接存取的一或多个存储器侧高速缓存24B和/或存储器侧预取缓冲器32B。如上文所描述,相比于在存储器子系统14中实施的存储器阵列28,可在存储器子系统14中实施高速缓存24和/或预取缓冲器32以提供专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50。换句话说,在一些实施例中,可实施存储器侧高速缓存24B和/或存储器侧预取缓冲器32B以平均提供相比于存储器阵列28更快的数据存取速度。
因此,在一些实施例中,还可使用易失性存储器来实施存储器侧高速缓存24B和/或存储器侧预取缓冲器32B。举例来说,可用静态随机存取存储器(SRAM)实施存储器侧高速缓存24B和/或存储器侧预取缓冲器32B,而用动态随机存取存储器(DRAM)实施易失性存储器阵列28。另外或替代地,可使用与易失性存储器阵列28相同的存储器类型(例如,DRAM)来实施存储器侧高速缓存24B和/或存储器侧预取缓冲器32B。实际上,在一些实施例中,一或多个存储器侧高速缓存24可在易失性存储器装置18中实施。
此外,在一些实施例中,可分级组织存储器侧高速缓存24B。举例来说,存储器侧高速缓存24B可包含一或多个存储器通道高速缓存92和共享存储器侧高速缓存94。在一些实施例中,存储器通道高速缓存92可专用于对应存储器通道,而共享存储器侧高速缓存94可在多个存储器通道之间共享。举例来说,第一一或多个存储器通道高速缓存92A可专用于由第一存储器通道存储器阵列74A实施的第一存储器通道,而第M一或多个存储器通道高速缓存92M可专用于由第M存储器通道存储器阵列74M实施的第M存储器通道。另一方面,在一些实施例中,共享存储器侧高速缓存94可至少由第一存储器通道和第M存储器通道共享。因此,在一些实施例中,相比于存储器通道高速缓存92,可实施共享存储器侧高速缓存94以提供存储器侧存储器子系统14B中的较低(例如,最低)存储器层级。在其它实施例中,共享存储器侧高速缓存94可被排除且因此不包含在存储器侧存储器子系统14B中。
在任何情况下,存储器侧存储器控制器34B可通常控制存储器侧存储器子系统14B中的数据存储。举例来说,存储器侧存储器控制器34B可控制数据是否存储在存储器侧高速缓存24B、存储器侧预取缓冲器32B、易失性存储器装置18、非易失性存储器装置18或其任何组合中。换句话说,在一些实施例中,存储器侧存储器控制器34B可控制数据是否存储在实施于存储器侧高速缓存24中的(例如,较低中间)存储器层级、实施于易失性存储器装置18中的(例如,较高中间)存储器层级、实施于非易失性存储器装置18中的(例如,最高)存储器层级或其任何组合中。因此,如在所描绘的实例中,存储器侧存储器控制器34B可经由一或多个存储器侧内部总线20C通信地耦合到存储器侧高速缓存24B、存储器侧预取缓冲器32B和/或存储器装置18A,例如以使存储器侧存储器控制器34B能够搜索目标数据和/或输出指示(例如,使得)存储器侧存储器子系统14B调整其中的数据存储的控制(例如,命令)信号。
如下文将更详细地描述,为了促进提高计算系统操作效率,在一些实施例中,(例如,存储器侧和/或处理器侧)存储器控制器34可至少部分地通过选择性地停用专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中的预取和/或高速缓存来控制数据存储。举例来说,存储器控制器34可至少部分地基于存储器阵列28的当前状态而选择性地停用由预取(例如,读取)存储器存取请求定为目标的候选数据块56从存储器阵列28(例如,较高存储器层级)到专用较低存储器层级50的预取。另外或替代地,存储器控制器34可至少部分地基于存储器阵列28的当前状态而选择性地停用候选数据块56的高速缓存(例如,启用高速缓存旁路),候选数据块56通过写入(例如,要求)存储器存取请求将存储在存储器阵列28中定为目标(例如,要求存储在存储器阵列28中),和/或通过读取(例如,要求)存储器存取请求将从存储器阵列28检索定为目标(例如,要求从存储器阵列28检索)。在一些实施例中,可经由对应存储器阵列状态信息96指示存储器阵列28的当前状态。
为了帮助说明,图6中展示可由(例如,处理器侧或存储器侧)存储器控制器34确定和/或利用的存储器阵列状态信息96A的实例。如在所描绘的实例中,存储器阵列状态信息96A可包含一或多个条目(例如,行)98。另外,如在所描绘的实例中,每一条目98可包含页识别符字段(例如,列)100、激活状态字段102和页命中置信度字段104。然而,应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,存储器阵列状态信息96可另外或替代地包含其它类型的数据、字段和/或信息。
关于所描绘的实例,存储器阵列状态信息96A中的每一条目98可识别其页识别符字段100中的相关联存储器页(例如,存储器单元行88)。举例来说,第一条目98A中的第一页识别符参数可指示第一条目98A与存储器阵列28中与存储器阵列状态信息96A对应的第一存储器页相关联。类似地,第二条目98B中的第二页识别符参数可指示第二条目98B与存储器阵列28中与存储器阵列状态信息96A对应的第二存储器页相关联。
在一些实施例中,存储器阵列状态信息96A的条目98中包含的页识别符参数可经由存储器页的页(例如,行)地址识别相关联的存储器页(例如,存储器单元行88)。举例来说,第一页识别符参数可为第一存储器页的第一页地址,进而指示存储器阵列状态信息96A在第一条目98A中的部分与第一存储器页相关联。类似地,第二页识别符参数可为第二存储器页的第二页地址,进而指示存储器阵列状态信息96A在第二条目98B中的部分与第二存储器页相关联。
换句话说,至少在此类实施例中,与存储器阵列28相关联的存储器阵列状态信息96可包含与存储器阵列28中的一或多个存储器页(例如,存储器单元行88)相关联的存储器页状态信息。也就是说,继续以上实例,存储器阵列状态信息96A在第一条目98A中的部分可为指示第一存储器页的当前状态的第一存储器页状态信息。类似地,存储器阵列状态信息96A在第二条目98B中的部分可为指示第二存储器页的当前状态的第二存储器页状态信息。至少在一些实施例中,以此方式组织存储器阵列状态信息96可促进响应于存储器页由存储器存取请求定为目标而确定(例如,检索)与存储器页相关联的存储器页状态信息,和/或响应于不同的存储器页由后续存储器存取请求定为目标而更新与存储器页相关联的存储器页状态信息。
另外,如在所描绘的实例中,存储器阵列状态信息96A中的每一条目98(例如,存储器页状态信息)可使对应的存储器页(例如,存储器单元行88)与激活状态字段102中指示的激活状态参数和页命中置信度字段104中指示的页命中置信度参数相关联。换句话说,在一些实施例中,第一存储器页状态信息(例如,第一条目98A)可包含指示第一存储器页的当前激活状态的第一激活状态参数,以及指示后续(例如,下一连续)存储器存取请求将第一存储器页定为目标的置信度的第一页命中置信度参数。类似地,第二存储器页状态信息(例如,第二条目98B)可包含指示第二存储器页的当前激活状态的第二激活状态参数,以及指示后续(例如,下一连续)存储器存取请求将第二存储器页定为目标的置信度的第二页命中置信度参数。
在一些实施例中,激活状态参数可经由激活状态位指示相关联存储器页的当前激活状态。举例来说,当激活状态位被设置(例如,为“1”位或高)时,激活状态参数可指示相关联存储器页当前处于其激活状态。另一方面,当激活状态位未被设置(例如,为“0”位或低)时,激活状态参数可指示相关联存储器页当前处于其撤销激活状态。
由于存储器(例如,数据)存取通常有一定的周期性(例如,重复性),因此为了指示后续存储器存取请求将相关联存储器页定为目标的置信度,在一些实施例中,可至少部分地基于存储器页在一或多个先前激活时间段期间被连续定为目标的次数而设置页命中置信度参数的值。举例来说,可至少部分地基于第一存储器页在第一存储器页的一或多个先前激活时间段期间被连续定为目标的次数而设置第一下一置信度参数的值。类似地,可至少部分地基于第二存储器页在第二存储器页的一或多个先前激活时间段期间被连续定为目标的次数而设置第二下一置信度参数的值。
为了促进跟踪存储器页(例如,存储器单元行88)被定为目标(例如,存取)的次数,如在图4中所描绘的实例中,存储器子系统14可包含计数器106。具体地说,在一些实施例中,每当存储器页由存储器存取请求定为目标时,存储器侧存储器控制器34B可更新计数器106的值。作为说明性非限制性实例,在一些实施例中,存储器侧存储器控制器34A可在最初激活存储器页以履行存储器存取请求时加载与存储器页相关联的计数器106的值。另外,当存储器页在当前激活时间段期间保持激活时,每当存储器页随后由连续存储器存取请求定为目标时,存储器侧存储器控制器34可使相关联计数器106的值递增。另一方面,当后续存储器存取请求将不同的(例如,当前撤销激活的)存储器页定为目标时,存储器侧存储器控制器可使相关联计数器106值递减且相应地更新包含在相关联状态信息中的页命中置信度参数。
作为另一说明性非限制性实例,当响应于存储器页由第一存储器存取请求定为目标而最初激活所述存储器页时,存储器侧存储器控制器34B可将计数器106的值复位(例如,为零)。另外,当存储器页在当前激活时间段期间保持激活时,每当存储器页随后由连续存储器存取请求定为目标时,存储器侧存储器控制器34B可使计数器106的值递增。举例来说,当紧接在第一存储器存取请求之后履行的第二存储器存取请求也将存储器页定为目标时,存储器侧存储器控制器34B可使计数器106的值从值零递增到值一,以此类推。
另一方面,为了促进指示后续存储器存取请求将在后续激活时间段期间将存储器页定为目标的置信度,存储器侧存储器控制器34B可至少部分地基于在存储器页的当前激活时间段结束时产生的计数器106的值而更新与所述存储器页相关联的下一置信度参数的值。换句话说,响应于存储器页从其激活状态转变到其撤销激活状态(例如,在激活时间段结束时),存储器侧存储器控制器34B可更新包含在相关联状态信息中的下一置信度参数的值,例如,以及更新包含在相关联状态信息中的激活状态参数的值以指示存储器页现在处于其撤销激活状态。此外,如上文所描述,响应于存储器页从其撤销激活状态转变到其激活状态(例如,在激活时间段开始时),存储器侧存储器控制器34B可更新包含在相关联状态信息中的相关联激活状态参数的值以指示存储器页现在处于其激活状态。
为了帮助进一步说明,图7中描述用于操作存储器阵列28且响应性地更新对应状态信息的过程107的实例。一般来说,过程107包含激活存储器阵列中的存储器页(过程块109),更新激活状态参数以将存储器页识别为当前已激活(过程块111),将计数器值复位(过程块113),提供对存储器页中的存储位置的存取(过程块115),确定是否接下来将不同的页定为目标(过程块117),以及当接下来未将不同的存储器页定为目标时,使计数器值递增(过程块119)。另外,当接下来将不同的存储器页定为目标时,过程107包含撤销激活存储器页(过程块121),更新激活状态参数以将存储器页识别为当前撤销激活(过程块123),以及基于计数器值而更新与存储器页相关联的下一置信度参数(过程块125)。
尽管以表示特定实施例的特定次序描述,但应注意,过程107可以任何合适的次序执行。另外,过程107的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程107。
因此,在一些实施例中,(例如,主和/或存储器侧)存储器控制器34可指示(例如,存储器侧)存储器子系统14激活存储器阵列28中的存储器页(例如,存储器单元行88),例如,这是因为存储器页在处于其撤销激活状态时被定为目标(过程块109)。如下文将更详细地描述,在一些实施例中,存储器存取请求可包含一或多个存取参数,其指示正请求存取的存储位置。举例来说,一或多个存取参数指示识别目标存储位置的行(例如,页)地址和列地址配对。
另外,为了促进控制存储器阵列28中的存储器页(例如,存储器单元行88)的激活状态,如上文所描述,行选择(例如,解码器)电路系统76可经由对应字线82耦合到存储器页中的每一个。举例来说,行选择电路系统76可通过经由对应字线82输出预充电控制信号来对存储器页预充电,且随后通过经由对应字线82输出激活(例如,逻辑高)控制信号来激活存储器页,这使得存储器页中的每一存储器单元80的切换组件将存储器单元80的存储组件电耦合(例如,连接)到对应位线86。因而,在一些实施例中,存储器控制器34可指示行选择电路系统76例如使用基于包含在存储器存取请求中的一或多个存取参数而确定的页(例如,行)地址对包含由存储器存取请求定为目标的存储位置(例如,存储器地址)的存储器页(例如,存储器单元行88)进行预充电和激活。
此外,如下文将更详细地描述,响应于接收到存储器存取请求,存储器控制器34可确定指示包含由存储器存取请求定为目标的存储位置的存储器页的当前状态的状态信息(例如,存储器阵列状态信息96和/或存储器页状态信息)。举例来说,使用基于包含在存储器存取请求中的一或多个存取参数而确定的页(例如,行)地址,存储器控制器可从高速缓存24(例如,到所述存储器控制器的寄存器中的一或多个中)检索与目标存储器页相关联的状态信息。如上文所描述,在一些实施例中,与存储器页相关联的状态信息可包含指示后续(例如,下一连续)存储器存取请求将存储器页定为目标的置信度的页命中置信度参数,以及指示存储器页的当前激活状态的激活状态参数。
因此,当最初激活目标存储器页时(例如,在激活时间段开始时),存储器控制器34可更新与目标存储器页相关联的激活状态参数以指示存储器页现在处于其激活状态(过程块111)。如上文所描述,在一些实施例中,激活状态参数可经由激活状态位指示相关联存储器页的当前激活状态。举例来说,激活状态位在被设置(例如,为“1”位或高)时可指示相关联存储器页当前处于其激活状态,且在未被设置(例如,为“0”位或低)时可指示相关联存储器页当前处于其撤销激活状态。因此,至少在此类实施例中,当存储器页在其撤销激活状态与其激活状态之间转变时,存储器控制器34可至少部分地通过切换对应激活状态位来更新相关联的存储器页状态信息。
另外,当最初激活目标存储器页时(例如,在激活时间段开始时),存储器控制器34可将计数器106的值复位(过程块113)。如上文所描述,在一些实施例中,存储器控制器34可使用计数器106来促进跟踪存储器页在激活时间段期间被定为目标的次数。因此,至少在此类实施例中,存储器控制器34在激活时间段开始时将计数器106复位为值零。
此外,为了促进履行存储器存取请求,存储器控制器34可指示存储器子系统14提供对由存储器存取请求定为目标的存储器页中的存储位置的存取(过程块115)。如上文所描述,在一些实施例中,存储器子系统14可提供对存储器阵列28中的存储位置的存取,以启用将数据写入(例如,存储)到存储位置和/或启用从存储位置读取(例如,检索)数据。另外,如上文所描述,为了促进写入到存储器阵列28中的存储位置和/或从存储器阵列28中的存储位置读取,在一些实施例中,放大器电路系统84可经由对应位线86耦合到存储位置中的每一个。举例来说,第一放大器电路系统84A可经由第一位线86A耦合到存储器阵列28的第一存储器单元列90A中的每一存储位置,第二放大器电路系统84B可经由第二位线86B耦合到第二存储器单元列90B中的每一存储位置,以此类推。
此外,为了促进选择性地存取激活的存储器页(例如,存储器单元行88)中的不同存储位置,如上文所描述,列选择(例如,解码器)电路系统78可耦合到存储器阵列28的放大器电路系统84。举例来说,为了提供对包含在第一存储器单元列90A中的存储位置的存取,列选择电路系统78可将列选择(例如,逻辑高)控制信号输出到第一放大器电路系统84A。类似地,为了提供对包含在第二存储器单元列90B中的存储位置的存取,列选择电路系统78可将列选择控制信号输出到第二放大器电路系统84B。
换句话说,为了促进提供对由存储器存取请求定为目标的存储位置的存取,存储器控制器34可例如使用基于包含在存储器存取请求中的一或多个存取参数而确定的列地址来指示列选择电路系统78将耦合到对应存储器单元列90的列选择控制信号输出到放大器电路系统84。另外,如上文所描述,为了促进对由存储器存取请求定为目标的存储位置的存取,存储器控制器34可指示行选择电路系统76将激活控制信号输出到包含目标存储位置的存储器页(例如,存储器单元行88)。换句话说,在一些实施例中,存储器控制器34可以此方式操作以例如通过启用从由存储器存取请求定为目标的存储位置读取(例如,检索)数据和/或将数据写入(例如,存储)到所述存储位置来促进履行存储器存取请求。
在履行存储器存取请求之后,存储器控制器34可确定待由存储器子系统14履行的下一后续(例如,连续)存储器存取请求是否将不同的存储器页定为目标(决策块117)。换句话说,存储器控制器34可确定包含由下一后续存储器存取请求定为目标的存储位置的存储器页是否与包含由紧接在前的存储器存取请求定为目标的存储位置的存储器页匹配。当下一后续存储器存取请求将与紧接在前的存储器存取请求相同的存储器页定为目标时,存储器控制器34可使计数器106的值递增(过程块119)。举例来说,存储器控制器34可在下一后续存储器存取请求将当前激活的存储器页定为目标时使计数器106从值零递增到值一,在紧接在下一后续存储器存取请求之后履行的存储器存取请求也将当前激活的存储器页定为目标时使计数器106从值一递增到值二,以此类推。
另一方面,当下一后续存储器存取请求将相比于紧接在前的存储器存取请求不同的存储器页定为目标时,存储器控制器34可指示存储器子系统14撤销激活由紧接在前的存储器存取请求定为目标的存储器页,例如,并且激活由下一后续存储器存取请求定为目标的不同存储器页(过程块121)。为了撤销激活当前激活的存储器页,在一些实施例中,存储器控制器34可指示行选择电路系统76停止将激活(例如,逻辑高)控制信号供应到对应字线82。另外或替代地,存储器控制器34可指示行选择电路系统76将撤销激活(例如,逻辑低)控制信号供应到对应字线82。
在任何情况下,为了促进指示存储器页的当前状态,如上文所描述,可响应于存储器页从其激活状态转变到其撤销激活状态而更新相关联状态信息。具体地说,当随后撤销激活目标存储器页时(例如,在激活时间段结束时),存储器控制器34可更新包含在与存储器页相关联的状态信息中的激活状态参数以指示存储器页现在处于其撤销激活状态(过程块123)。举例来说,存储器控制器34可至少部分地通过切换对应的激活状态位而更新相关联的存储器页状态信息。
另外,当随后撤销激活存储器页时(例如,在激活时间段结束时),存储器控制器34可至少部分地基于在激活时间段结束时产生的计数器106的值而更新包含在相关联状态信息中的页命中置信度参数的值。在一些实施例中,存储器控制器34可独立于存储器页的先前状态(例如,下一置信度参数)而更新与所述存储器页相关联的下一置信度参数的值。举例来说,在此类实施例中,存储器控制器34可通过用在激活时间段结束时产生的计数器106的值覆写(例如,在激活时间段开始时确定的)页命中置信度参数的先前值而更新与存储器页相关联的页命中置信度参数的值。
为了促进提高基于与存储器页相关联的页命中置信度参数进行的下一目标置信度预测的准确性,在其它实施例中,存储器控制器34可至少部分地基于存储器页的一或多个先前状态而更新下一置信度参数的值。举例来说,在激活时间段结束时,在此类实施例中,存储器侧存储器控制器34B可基于在激活时间段结束时产生的计数器106的值与在激活时间段开始时与存储器页相关联的页命中置信度参数的值的(例如,加权)平均值而更新与存储器页相关联的页命中置信度参数,进而产生移动平均值。另外或替代地,在此类实施例中,存储器控制器34可通过以下操作来更新页命中置信度参数:对在存储器页的多个激活时间段结束时产生的计数器106的值求平均值,例如使得在更新近的激活时间段结束时产生的计数器106的值的权重比在更早期的激活时间段结束时产生的计数器值的权重更大。
以此方式,存储器子系统14可用以提供对存储器阵列28中的一或多个存储位置的存取且相应地更新与存储器阵列28相关联的存储器阵列状态信息96。如上文所描述,存储器侧存储器子系统14B可响应于经由存储器总线20A接收到存储器存取请求而提供对计算系统10的处理器侧的存储器存取。举例来说,响应于接收到写入(例如,要求)存储器存取请求,存储器侧存储器控制器34B可指示存储器侧存储器子系统14B将数据块56的实例存储在实施于存储器侧存储器子系统14B中的一或多个分级存储器层级中,数据块56通过写入存储器存取请求将存储定为目标(例如,要求存储)。另外或替代地,响应于接收到读取(例如,预取或要求)存储器存取请求,存储器侧存储器控制器34B可识别通过读取存储器存取请求将检索定为目标的数据块56且指示存储器侧存储器子系统14B经由存储器总线20A将目标数据块56返回到计算系统10的处理器侧(例如,处理器侧存储器子系统14A和/或处理子系统12)。
为了帮助进一步说明,图8中描述用于操作计算系统10的处理器侧的过程108的实例。一般来说,过程108包含确定处理电路系统所要求的数据块(过程块110),确定所要求的数据块是否引起处理器侧未命中(决策块112),以及当所要求的数据块未引起处理器侧未命中时,将所要求的数据块从处理器侧存储器层级输出到处理电路系统(过程块114)。另外,当所要求的数据块引起处理器侧未命中时,过程108包含从存储器侧请求所要求的数据块(过程块116),确定所要求的数据块是否已从存储器侧返回(决策块118),以及确定是否已启用处理器侧高速缓存旁路(决策块120)。此外,在从存储器侧返回所要求的数据块之后,过程108包含在已启用处理器侧高速缓存旁路时将所要求的数据块直接供应到处理电路系统(过程块122),以及在尚未启用处理器侧高速缓存旁路时将所要求的数据块存储在处理器侧高速缓存中(过程块124)。
尽管以表示特定实施例的特定次序描述,但应注意,过程108可以任何合适的次序执行。另外,过程108的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程108。
因此,在一些实施例中,计算系统10的处理器侧存储器子系统14A中的处理器侧存储器控制器34A可确定计算系统10中的处理子系统12中的处理电路系统16所要求(例如,定为目标)的数据块56(过程块110)。在一些实施例中,处理电路系统16可使用对应(例如,目标)虚拟存储器地址来识别所要求的数据块56。至少部分地基于虚拟存储器地址,在一些实施例中,处理器侧存储器控制器34A可确定对应(例如,目标)物理存储器地址,其指示所要求的数据块56在计算系统10中的存储位置。
另外,处理器侧存储器控制器34A可确定所要求的数据块56是否引起处理器侧未命中(决策块112)。在一些实施例中,存储器控制器34可至少部分地基于与数据块56相关联的虚拟存储器地址和/或物理存储器地址而确定数据块56是否存储在专用较低存储器层级50中。举例来说,至少部分地基于数据块56的虚拟存储器地址和物理存储器地址,存储器控制器34可确定预期与所要求的数据块56相关联的标签参数60(例如,元数据58)的目标值。
通过基于目标标签参数值而搜索包含在每一处理器侧专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中的有效线52,处理器侧存储器控制器34A可确定所要求的数据块56是否引起处理器侧未命中。举例来说,当目标标签参数值与包含在处理器侧专用较低存储器层级50中的任一个中的标签参数值不匹配时,处理器侧存储器控制器34A可确定所要求的数据块56引起处理器侧未命中。另一方面,当目标标签参数值包含在处理器侧专用较低存储器层级50的一或多个线52中时,处理器侧存储器控制器34A可确定所要求的数据块56引起处理器侧命中且因此未引起处理器侧未命中。
当所要求的数据块56未引起处理器侧未命中时,处理器侧存储器控制器34A可指示处理器侧专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50将所要求的数据块56供应到处理电路系统16,例如以促进提高数据检索速度,且因此促进提高计算系统10的操作效率(过程块114)。在一些实施例中,处理器侧专用较低存储器层级50可输出线52,其具有与预期与所要求的数据块56相关联的目标标签参数值匹配的有效标签参数值。当存储在较高存储器层级(例如,共享处理器侧高速缓存48)中时,在一些实施例中,所要求的数据块56可在到达处理电路系统16之前穿过处理子系统12中的一或多个较低存储器层级(例如,私用处理器侧高速缓存46)。
另一方面,当所述数据块引起处理器侧未命中时,处理器侧存储器控制器34A可请求从计算系统10的存储器侧返回所要求的数据块56(过程块116)。如上文所描述,为了请求返回所要求的数据块56,在一些实施例中,处理器侧存储器控制器34A可产生读取(例如,要求)存储器存取请求,其可在经由存储器(例如,外部通信)总线20A输出到计算系统10的存储器侧之前存储在请求队列66中。另外,如上文所描述,在一些实施例中,处理器侧总线接口68可耦合在存储器总线20A与一或多个处理器侧内部总线20B之间。因此,至少在此类实施例中,处理器侧总线接口68可经由一或多个处理器侧内部总线20B接收存储器存取请求且将存储器存取请求路由到存储器总线20A。
此外,如上文所描述,读取存储器存取请求可包含一或多个读取存取参数,其可由计算系统10的存储器侧用于检索由读取存储器存取请求定为目标(例如,要求)的数据块56。举例来说,一或多个读取存取参数可包含由处理电路系统16用于识别目标数据块56的虚拟存储器地址、预期目标数据块56存储在计算系统10的存储器侧中的物理存储器地址(例如,行地址和列地址配对)、目标数据块56的大小(例如,位深度)和/或读取启用指示符(例如,位)。因而,至少部分地基于读取(例如,要求)存储器存取请求中指示的一或多个读取存取参数的值,存储器侧存储器子系统14B可识别和返回由读取存储器存取请求定为目标的所要求的数据块56。
为了帮助说明,图9中描述用于操作存储器侧存储器子系统14B的过程126的实例。一般来说,过程126包含从处理器侧接收读取存储器存取请求(过程块128),确定读取存储器存取请求所要求的数据块(过程块130),确定所要求的数据块是否引起存储器侧较低存储器层级未命中(决策块132),以及当所要求的数据块未引起存储器侧较低存储器层级未命中时,将所要求的数据块从存储器侧较低存储器层级输出到处理器侧(过程块134)。另外,当所要求的数据块引起存储器侧较低存储器层级未命中时,过程126包含确定是否已启用存储器侧高速缓存旁路(决策块136),当启用存储器侧高速缓存旁路时,将所要求的数据块从存储器阵列直接输出到处理器侧(过程块138),以及当尚未启用存储器侧高速缓存旁路时,将从存储器阵列检索的所要求的数据块存储在存储器侧高速缓存中(过程块140)。
尽管以表示特定实施例的特定次序描述,但应注意,过程126可以任何合适的次序执行。另外,过程126的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程126。
因此,在一些实施例中,在计算系统10的存储器侧存储器子系统14B中实施的存储器侧存储器控制器34B可接收从计算系统10的处理器侧输出的读取(例如,要求)存储器存取请求(过程块128)。如上文所描述,在一些实施例中,处理器侧存储器子系统14A可经由存储器总线20A输出存储器存取请求,且存储器侧总线接口70可耦合在存储器总线20A与一或多个存储器侧内部总线20C之间。因此,至少在此类实施例中,存储器侧总线接口70可从存储器总线20A接收存储器存取请求且经由一或多个存储器侧内部总线20C将存储器存取请求路由到存储器侧存储器控制器34B。
另外,如上文所描述,在一些实施例中,存储器存取请求可包含待由存储器子系统14用于提供存储器(例如,数据)存取的一或多个存取参数。举例来说,一或多个存取参数可包含由处理电路系统16用于识别存储器存取请求所要求的数据块56的虚拟存储器地址,和/或预期存储器存取请求所要求的数据块56存储在存储器子系统14中的物理存储器地址(例如,行地址和列地址配对)。因此,在此类实施例中,存储器侧存储器控制器34B可至少部分地基于包含在读取存储器存取请求中的一或多个读取存取参数而确定(例如,识别)通过读取存储器存取请求而要求检索的数据块56和/或与数据块56相关联的所要求的存储器地址(过程块130)。
此外,存储器侧存储器控制器34B可确定所要求的数据块56是否引起存储器侧较低存储器层级未命中(决策块132)。如上文所描述,在一些实施例中,存储器控制器34可至少部分地基于与数据块56相关联的虚拟存储器地址和/或物理存储器地址而确定数据块56是否存储在专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中。举例来说,至少部分地基于数据块56的虚拟存储器地址和物理存储器地址,存储器控制器34可确定预期与所要求的数据块56相关联的标签参数60(例如,元数据58)的目标值。
通过基于目标标签参数值搜索包含在每一存储器侧专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中的有效线52,存储器侧存储器控制器34B可确定所要求的数据块56是否引起存储器侧较低存储器层级未命中。举例来说,当目标标签参数值与包含在存储器侧专用较低存储器层级50中的任一个中的标签参数值不匹配时,存储器侧存储器控制器34B可确定所要求的数据块56引起存储器侧较低存储器层级未命中。另一方面,当所要求的标签参数值包含在存储器侧专用较低存储器层级50的一或多个有效线52中时,存储器侧存储器控制器34B可确定所要求的数据块56引起存储器侧较低存储器层级命中且因此未引起存储器侧较低存储器层级未命中。
当所要求的数据块56未引起存储器侧较低存储器层级未命中时,存储器侧存储器控制器34B可指示存储器侧专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50经由存储器总线20A将所要求的数据块56输出到计算系统10的处理器侧,例如以促进提高数据检索速度且因此促进提高计算系统10的操作效率(过程块134)。在一些实施例中,存储器侧专用较低存储器层级50可输出线52,其具有与预期与所要求的数据块56相关联的目标标签参数值匹配的标签参数值。当存储在较高存储器层级(例如,存储器通道高速缓存92)中时,在一些实施例中,所要求的数据块56可在输出到存储器总线20A之前经过存储器侧存储器子系统14B中的一或多个较低存储器层级(例如,共享存储器侧高速缓存94)。
另一方面,当所要求的数据块56引起存储器侧较低存储器层级未命中时,存储器侧存储器控制器34B可确定是否已启用存储器侧高速缓存旁路(过程块136)。如上文所描述,在一些情况下,从存储器阵列28(例如,较高存储器层级)检索的所要求的数据块56的副本(例如,实例)可另外存储在存储器侧高速缓存24B(例如,专用较低存储器层级50)中,以便例如通过在数据块56随后被定为目标(例如,要求)的情况下使存储器侧存储器子系统14B能够从存储器侧高速缓存24B而不是存储器阵列28返回数据块56来提高计算系统10的操作效率。然而,至少在一些情况下,在存储器侧高速缓存24B中自动高速缓存所要求的数据块56可能会实际上降低计算系统操作效率,例如,这是因为存储器侧高速缓存24B的有限存储容量使得另一数据块56过早地逐出,和/或引起存储器阵列28中存储有数据块56的存储器页的激活,从而增加功耗。
因而,为了促进提高计算系统操作效率,在一些实施例中,(例如,存储器侧和/或处理器侧)存储器控制器34可选择性地停用从存储器阵列28检索的所要求的数据块56在专用高速缓存24中的高速缓存。举例来说,通过启用存储器侧高速缓存旁路,存储器侧存储器控制器34B可停用所要求的数据块56在存储器侧高速缓存24B中的高速缓存。另外或替代地,通过启用处理器侧高速缓存旁路,处理器侧存储器控制器34A可停用所要求的数据块56在处理器侧高速缓存24A中的高速缓存。此外,在一些实施例中,存储器控制器34可至少部分地基于存储器阵列28的当前状态和/或存储器阵列28中的一或多个存储器页的当前状态而选择性地停用高速缓存(例如,启用高速缓存旁路)。
为了帮助说明,图10中描述用于选择性地启用(例如,存储器侧和/或处理器侧)高速缓存旁路的过程142的实例。一般来说,过程142包含确定所要求的存储位置(过程块144),确定包含所要求的存储位置的存储器阵列的当前状态(过程块146),以及确定所要求的存储器页当前是否被激活(决策块148)。另外,过程142包含在当前激活所要求的存储器页时确定与当前激活的存储器页相关联的下一目标置信度是否小于第一高速缓存置信度阈值(决策块150),且在当前未激活所要求的存储器页时确定与当前激活的存储器页相关联的下一目标置信度是否大于第二高速缓存置信度阈值(决策块152)。
此外,过程142包含在当前激活所要求的存储器页且与当前激活的存储器页相关联的下一目标置信度不小于第一高速缓存置信度阈值时,或在当前未激活所要求的存储器页且与当前激活的存储器页相关联的下一目标置信度大于第二高速缓存置信度阈值时,启用高速缓存旁路(过程块154)。此外,过程142包含在当前激活所要求的存储器页且与当前激活的存储器页相关联的下一目标置信度小于第一高速缓存置信度阈值时,或在当前未激活所要求的存储器页且与当前激活的存储器页相关联的下一目标置信度不大于第二高速缓存置信度阈值时,停用高速缓存旁路(过程块156)。
尽管以表示特定实施例的特定次序描述,但应注意,过程142可以任何合适的次序执行。另外,过程142的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程142。
因此,在一些实施例中,(例如,存储器侧和/或处理器侧)存储器控制器34可确定正要求存取的存储位置(例如,存储器地址)(过程块144)。举例来说,所要求的存储位置可为存储器阵列28中预期存储有通过读取(例如,要求)存储器存取请求将检索定为目标的数据块56的存储位置。另外或替代地,所要求的存储位置可为存储器阵列28中写入(例如,要求)存储器存取请求将在其中存储数据块56定为目标的存储位置。换句话说,响应于接收到要求存储器存取请求,在一些实施例中,存储器控制器34可至少部分地基于所述要求存储器存取请求的存取参数中的一或多个而确定与要求存储器存取请求相关联的所要求的存储位置(例如,存储器地址)。
另外,存储器控制器34可确定包含所要求的存储位置的存储器阵列28的当前状态(过程块146)。如上文所描述,在一些实施例中,可经由对应存储器阵列状态信息96指示存储器阵列28的当前状态。另外,如上文所描述,在一些实施例中,与存储器阵列28相关联的存储器阵列状态信息96可包含存储器页状态信息(例如,条目98),其指示存储器阵列28中的一或多个存储器页(例如,存储器单元行88)的当前状态。换句话说,至少在此类实施例中,存储器阵列状态信息96可包含与存储器页相关联的包含所要求的存储位置的存储器页状态信息,和/或与存储器阵列28中当前处于激活状态(例如,因为存储器页由紧接在前的存储器存取请求定为目标)的存储器页相关联的存储器页状态信息。
此外,如上文所描述,在一些实施例中,与存储器页相关联的存储器页状态信息可包含指示存储器页当前是处于其激活状态还是其撤销激活状态的激活状态参数,以及指示后续(例如,下一连续)存储器存取请求将存储器页定为目标的置信度(例如,似然度和/或概率)的页命中置信度参数。因而,至少在此类实施例中,存储器控制器34可至少部分地基于在相关联的存储器页状态信息中指示的页命中置信度参数的值而确定(例如,预测)下一后续存储器存取请求将当前激活的存储器页定为目标的置信度(过程块158)。另外,至少在此类实施例中,存储器控制器34可至少部分地基于在相关联的存储器页状态信息中指示的激活状态参数的值而确定所要求的存储器页的当前激活状态(过程块160),且因此确定所要求的存储器页是当前激活的存储器页还是当前撤销激活的存储器页(决策块148)。
当所要求的存储器页为当前激活的存储器页时,存储器控制器34可至少部分地基于相关联的页命中置信度参数与第一高速缓存置信度阈值的比较而选择性地启用高速缓存旁路(例如,停用高速缓存)(决策块150)。具体地说,当相关联的页命中置信度参数的值小于第一高速缓存置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将不同的存储器页定为目标,且因此,包含所要求的存储位置的(例如,所要求的和/或当前激活的)存储器页预期在对存储器页的存取随后被定为目标时处于其撤销激活状态。因而,当相关联的页命中置信度参数的值小于第一高速缓存置信度阈值时,存储器控制器34可停用高速缓存旁路,进而启用从存储器阵列28检索和/或待存储在存储器阵列28中的(例如,候选)数据块56在专用(例如,处理器侧和/或存储器侧)高速缓存24中的高速缓存(过程块156)。至少在一些情况下,以此方式选择性地停用(例如,存储器侧和/或处理器侧)高速缓存旁路可例如使候选数据块56在随后被定为目标的情况下能够从高速缓存24而不是存储器阵列28中预期处于撤销激活状态的存储器页供应,从而促进提高计算系统操作效率。
相反,当所要求的存储器页为当前激活的存储器页且相关联的页命中置信度参数的值不小于第一高速缓存置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将相同的存储器页定为目标,且因此,包含所要求的存储位置的(例如,所要求的和/或当前激活的)存储器页预期在随后被定为目标时处于其激活状态。因而,当相关联的页命中置信度参数的值不小于第一高速缓存置信度阈值时,存储器控制器34可启用高速缓存旁路,进而停用从存储器阵列28检索和/或待存储在存储器阵列28中的(例如,候选或所要求的)数据块56在专用(例如,处理器侧和/或存储器侧)高速缓存24中的高速缓存(过程块154)。至少在一些情况下,以此方式选择性地启用(例如,存储器侧和/或处理器侧)高速缓存旁路可例如降低污染高速缓存24的可能性且替代地使候选数据块56在随后被要求的情况下能够从预期处于激活状态的存储器页供应,从而促进提高计算系统操作效率。
另一方面,当所要求的存储器页是当前撤销激活的存储器页时,存储器控制器34可至少部分地基于与当前激活的存储器页相关联的页命中置信度参数与第二高速缓存置信度阈值的比较而选择性地启用高速缓存旁路(例如,停用高速缓存)(决策块152)。具体地说,当与当前激活的存储器页相关联的页命中置信度参数的值大于第二高速缓存置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将当前激活的存储器页定为目标,且因此,包含所要求的存储位置的(例如,所要求的和/或当前撤销激活的)存储器页预期在存取随后被定为目标时处于其撤销激活状态。因而,当与当前激活的存储器页相关联的页命中置信度参数的值大于第二高速缓存置信度阈值时,存储器控制器34可启用高速缓存旁路,进而停用从存储器阵列28检索和/或待存储在存储器阵列28的存储器页中的(例如,候选或所要求的)数据块56在专用(例如,处理器侧和/或存储器侧)高速缓存24中的高速缓存(过程块154)。至少在一些情况下,以此方式选择性地启用(例如,存储器侧和/或处理器侧)高速缓存旁路可例如降低候选数据块56污染高速缓存24的可能性和/或避免由于激活目标存储器页和随后再激活当前激活的存储器页而产生的功耗,从而促进提高计算系统操作效率。
相反,当所要求的存储器页是当前撤销激活的存储器页且与当前激活的存储器页相关联的页命中置信度参数的值不大于第二高速缓存置信度阈值时,存储器控制器34可确定(例如,预测)后续存储器存取请求预期(例如,更有可能)将不同于当前激活的存储器页的(例如,当前撤销激活的)存储器页定为目标。然而,由于存储器阵列28可同时包含多个撤销激活的存储器页,因此至少在一些情况下,此确定与所要求的存储器页在随后被定为目标时将处于其激活状态还是其撤销激活状态的相关性可能有限。因而,当页命中置信度参数的值不大于第二高速缓存置信度阈值时,存储器控制器34可停用高速缓存旁路,进而启用从存储器阵列28检索和/或待存储在存储器阵列28中的(例如,候选)数据块56在专用(例如,处理器侧和/或存储器侧)高速缓存24中的高速缓存(过程块156)。至少在一些情况下,以此方式选择性地停用(例如,存储器侧和/或处理器侧)高速缓存旁路可例如使候选数据块56在随后被定为目标的情况下能够从高速缓存24而不是存储器阵列28供应,从而促进提高计算系统操作效率。
然而,在其它实施例中,当所要求的存储器页当前处于其撤销激活状态时,存储器控制器34可自动停用高速缓存旁路。此外,在一些实施例中,在所要求的存储器页处于其激活状态时使用的第一高速缓存置信度阈值的值与在所要求的存储器页处于其撤销激活状态时使用的第二高速缓存置信度阈值的值可不同。举例来说,第一高速缓存置信度阈值的值可大于第二高速缓存置信度阈值的值,或反之亦然。在其它实施例中,第一高速缓存置信度阈值的值可与第二高速缓存置信度阈值的值匹配。以此方式,(例如,存储器侧和/或处理器侧)存储器子系统14可用以至少部分地基于在存储器子系统14中实施的存储器阵列28的当前状态而选择性地启用(例如,存储器侧和/或处理器侧)高速缓存旁路。
返回到图9的过程126,当启用存储器侧高速缓存旁路时,存储器侧存储器控制器34B可指示存储器侧存储器子系统14B经由存储器总线20A将所要求的数据块56从存储器阵列28直接输出(例如,返回)到计算系统10的处理器侧(过程块138)。另一方面,当未启用(例如,停用)存储器侧高速缓存旁路时,存储器侧存储器控制器34B可指示存储器侧存储器子系统14B将从存储器阵列28检索的所要求的数据块56的副本(例如,实例)存储在存储器侧高速缓存24B中(过程块140)且经由存储器总线20A将所要求的数据块56输出(例如,返回)到计算系统10的处理器侧(过程块134)。以此方式,存储器侧存储器子系统14B可用以返回计算系统10的处理器侧所要求的数据块56。
返回到图8的过程108,一旦从计算系统10的存储器侧返回所要求的数据块,处理器侧存储器控制器34A就可例如使用图10中所描述的过程142来确定处理器侧高速缓存旁路是否被启用。当启用处理器侧高速缓存旁路时,处理器侧存储器控制器34A可指示处理器侧存储器子系统14A将所要求的数据块56直接供应到处理电路系统16的一或多个寄存器22(过程块122)。另一方面,当未启用(例如,停用)处理器侧高速缓存旁路时,处理器侧存储器控制器34A可指示处理器侧存储器子系统14A将从计算系统10的存储器侧返回的所要求的数据块56的副本(例如,实例)存储在处理器侧高速缓存24A中(过程块124)且将所要求的数据块56输出到处理电路系统16的一或多个寄存器22(过程块114)。
以此方式,计算系统10的处理器侧可用以返回计算系统10的处理子系统12所要求的数据块56。如上文所描述,在一些实施例中,处理子系统12可另外或替代地例如经由写入(例如,要求)存储器存取请求要求将数据块56存储在存储器子系统14中。换句话说,响应于接收到写入存储器存取请求,存储器子系统14可将与写入存储器存取请求一起接收的和/或包含在写入存储器存取请求中的数据块存储在实施于存储器子系统14中的一或多个存储器层级中。
为了帮助说明,图11中描述用于操作存储器子系统14的过程162的实例。一般来说,过程162包含从处理子系统接收写入存储器存取请求(过程块164),确定是否启用高速缓存旁路(决策块166),且将数据块存储在存储器阵列中的所要求的存储位置处(过程块168)。另外,当未启用高速缓存旁路时,过程162包含将数据块的副本存储在高速缓存中(过程块170)。
尽管以表示特定实施例的特定次序描述,但应注意,过程162可以任何合适的次序执行。另外,过程162的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程162。
因此,在一些实施例中,在计算系统10的存储器子系统14中实施的(例如,存储器侧和/或处理器侧)存储器控制器34可从计算系统10的处理子系统12接收写入(例如,要求)存储器存取请求输出(过程块164)。举例来说,处理器侧存储器控制器34A可经由一或多个处理器侧内部总线20B接收写入存储器存取请求。另外或替代地,存储器侧总线接口70可从存储器总线20A接收写入存储器存取请求且经由一或多个存储器侧内部总线20C将写入存储器存取请求路由到存储器侧存储器控制器34B。
在任何情况下,存储器控制器34可接着例如使用图10中所描述的过程142来确定是否启用(例如,处理器侧和/或存储器侧)高速缓存旁路。当未启用高速缓存旁路时,存储器控制器34可指示存储器子系统14将与写入存储器存取请求一起接收和/或包含在写入存储器存取请求中的数据块56存储在一或多个高速缓存24(例如,专用较低存储器层级50)中(过程块170)以及存储在由写入存储器存取请求要求(例如,定为目标)的存储器阵列28中的存储位置处(过程块168)。在一些实施例中,存储器控制器34可至少部分地基于包含在写入存储器存取请求中的一或多个写入存取参数而确定所要求的存储位置。
另一方面,当启用高速缓存旁路时,存储器控制器34可指示存储器子系统14将与写入存储器存取请求一起接收和/或包含在写入存储器存取请求中的数据块56存储在存储器阵列28中的所要求的存储位置处,例如,而不将数据块的副本存储在一或多个高速缓存24中(过程块168)。以此方式,存储器子系统14可用以至少部分地基于指示存储器阵列28的当前状态和/或存储器阵列28中的一或多个存储器页(例如,存储器单元行88)的当前状态的存储器阵列状态信息96而选择性地停用要求存储在存储器阵列28中的数据块56的高速缓存。在一些实施例中,存储器子系统14可另外或替代地至少部分地基于指示存储器阵列28的当前状态和/或存储器阵列28中的一或多个存储器页的当前状态的存储器阵列状态信息96而选择性地停用数据块56从存储器阵列28到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的预取。
为了帮助说明,图12中描述用于选择性地停用到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的预取的过程172的实例。一般来说,所述过程包含确定候选预取数据块(过程块174);确定存储候选预取数据块的存储器阵列的当前状态(过程块176),以及确定候选预取存储器页当前是否被激活(决策块178)。另外,过程172包含在当前激活候选预取存储器页时确定与当前激活的存储器页相关联的下一目标置信度是否小于第一预取置信度阈值(决策块180),以及在当前未激活候选预取存储器页时确定与当前激活的存储器页相关联的下一目标置信度是否大于第二预取置信度阈值(决策块182)。
此外,过程172包含在当前激活候选预取存储器页且与当前激活的存储器页相关联的下一目标置信度不小于第一预取置信度阈值时,或在当前未激活候选预取存储器页且与当前激活的存储器页相关联的下一目标置信度大于第二预取置信度阈值时,停用候选预取数据块到专用较低存储器层级的预取(过程块184)。此外,过程172包含在当前激活候选预取存储器页且与当前激活的存储器页相关联的下一目标置信度小于第一预取置信度阈值时,或在当前未激活候选预取存储器页且与当前激活的存储器页相关联的下一目标置信度不大于第二预取置信度阈值时,启用候选数据块到专用较低存储器层级的预取(过程块186)。
尽管以表示特定实施例的特定次序描述,但应注意,过程172可以任何合适的次序执行。另外,过程172的实施例可省略过程块和/或包含额外过程块。此外,在一些实施例中,可至少部分地通过使用处理电路系统(例如在存储器控制器34中实施的处理器)执行存储在有形的非暂时性计算机可读媒体(例如在存储器控制器34中实施的存储器)中的指令来实施过程172。
因此,在一些实施例中,(例如,存储器侧和/或处理器侧)存储器控制器34可确定要考虑预取到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的候选数据块56(过程块144)。如上文所描述,在一些实施例中,候选数据块56可通过预取(例如,读取)存储器存取请求将预取定为目标。因此,至少在此类实施例中,存储器控制器34可至少部分地基于包含在预取存储器存取请求中的一或多个读存取参数而识别存储器阵列28中预期存储有以预取为目标的候选数据块56的存储位置。换句话说,响应于接收到预取存储器存取请求,在一些实施例中,存储器控制器34可至少部分地基于所述预取存储器存取请求的读取(例如,预取)存取参数中的一或多个而确定存储有候选数据块56的候选预取存储器页。
另外,存储器控制器34可确定包含候选预取存储器页的存储器阵列28的当前状态(过程块176)。如上文所描述,在一些实施例中,可经由对应存储器阵列状态信息96指示存储器阵列28的当前状态。另外,如上文所描述,在一些实施例中,与存储器阵列28相关联的存储器阵列状态信息96可包含存储器页状态信息(例如,条目98),其指示存储器阵列28中的一或多个存储器页(例如,存储器单元行88)的当前状态。
此外,如上文所描述,在一些实施例中,与存储器页相关联的存储器页状态信息可包含指示存储器页当前是处于其激活状态还是其撤销激活状态的激活状态参数,以及指示后续(例如,下一连续)存储器存取请求将存储器页定为目标的置信度(例如,似然度和/或概率)的页命中置信度参数。因此,至少在此类实施例中,存储器控制器34可至少部分地基于在相关联的存储器页状态信息中指示的页命中置信度参数的值而确定(例如,预测)后续存储器存取请求将当前激活的存储器页定为目标的置信度(过程块188)。另外,至少在此类实施例中,存储器控制器34可至少部分地基于在相关联的存储器页状态信息中指示的激活状态参数的值而确定候选预取存储器页的当前激活状态(过程块190),且因此确定候选预取存储器页是当前激活的存储器页还是当前撤销激活的存储器页(决策块178)。
当候选预取存储器页为激活的存储器页时,存储器控制器34可至少部分地基于相关联的页命中置信度参数与第一预取置信度阈值的比较而选择性地停用预取(决策块180)。在一些实施例中,第一预取置信度阈值的值可不同于第一高速缓存置信度阈值的值,这用于在当前激活所要求(例如,定为目标)的存储器页时选择性地停用高速缓存。举例来说,第一预取置信度阈值的值可大于第一高速缓存置信度阈值的值,或反之亦然。在其它实施例中,第一预取置信度阈值的值可与第一高速缓存置信度阈值的值匹配。
在任何情况下,当候选预取存储器页为激活的存储器页且相关联的页命中置信度参数的值小于第一预取置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将不同的(例如,当前撤销激活的)存储器页定为目标,且因此,存储候选预取数据块56的(例如,候选预取和/或当前激活的)存储器页预期在随后被定为目标时处于其撤销激活状态。因而,当相关联的页命中置信度参数的值小于第一预取置信度阈值时,存储器控制器34可启用(例如,履行)候选数据块56从存储器阵列28的预取,使得候选数据块56的副本存储在例如专用高速缓存24和/或专用预取缓冲器32的专用较低存储器层级50中(过程块186)。至少在一些情况下,以此方式选择性地启用预取可例如使候选数据块56在随后被定为目标的情况下能够从专用较低存储器层级50而不是存储器阵列28中预期处于撤销激活状态的存储器页供应,从而促进提高计算系统操作效率。
相反,当候选预取存储器页为激活的存储器页且相关联的页命中置信度参数的值不小于第一预取置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将相同的存储器页定为目标,且因此,存储候选数据块56的(例如,候选预取和/或当前激活的)存储器页预期在存取随后被定为目标时处于其激活状态。因而,当相关联的页命中置信度参数的值不小于第一预取置信度阈值时,存储器控制器34可停用(例如,阻止和/或取消)候选数据块56从存储器阵列28到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的预取(过程块184)。至少在一些情况下,以此方式选择性地停用预取可例如降低污染专用较低存储器层级50的似然度且替代地使候选数据块56在随后被要求的情况下能够从预期处于激活状态的存储器页供应,从而促进提高计算系统操作效率。
另一方面,当候选预取存储器页为撤销激活的存储器页时,存储器控制器34可至少部分地基于与当前激活的存储器页相关联的页命中置信度参数与第二预取置信度阈值的比较而选择性地停用预取(决策块182)。在一些实施例中,第二预取置信度阈值的值可不同于第二高速缓存置信度阈值的值,这用于在所要求的(例如,定为目标的)存储器页处于其撤销激活状态时选择性地停用高速缓存。举例来说,第二预取置信度阈值的值可大于第二高速缓存置信度阈值的值,或反之亦然。在其它实施例中,第二预取置信度阈值的值可与第二高速缓存置信度阈值的值匹配。
在任何情况下,当候选预取存储器页为撤销激活的存储器页且与当前激活的存储器页相关联的页命中置信度参数的值大于第二高速缓存置信度阈值时,存储器控制器34可确定(例如,预测)后续(例如,下一连续)存储器存取请求预期(例如,更有可能)将当前激活的存储器页定为目标,且因此,存储候选数据块56的(例如,候选预取和/或当前撤销激活的)存储器页预期在随后被定为目标时处于其撤销激活状态。因而,当与当前激活的存储器页相关联的页命中置信度参数的值大于第二预取置信度阈值时,存储器控制器34可停用(例如,阻止和/或取消)候选数据块56从存储器阵列28到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的预取(过程块184)。至少在一些情况下,以此方式选择性地停用预取可例如降低候选数据块56污染专用较低存储器层级50的可能性和/或避免由于激活候选预取(例如,当前撤销激活的)存储器页和随后再激活当前激活的存储器页而产生的功耗,从而促进提高计算系统操作效率。
相反,当候选预取存储器页为撤销激活的存储器页且与当前激活的存储器页相关联的页命中置信度参数的值不大于第二预取置信度阈值时,存储器控制器34可确定(例如,预测)后续存储器存取请求预期将不同于当前激活的存储器页的(例如,当前撤销激活的)存储器页定为目标。然而,由于存储器阵列28可同时包含多个撤销激活的存储器页,因此至少在一些情况下,此确定与候选预取存储器页在由后续存储器存取请求定为目标时将处于其激活状态还是其撤销激活状态的相关性可能有限。因而,当页命中置信度参数的值不大于第二预取置信度阈值时,存储器控制器34可启用(例如,履行)候选数据块56从存储器阵列28的预取,使得候选数据块56的副本存储在专用较低(例如,预取缓冲器和/或高速缓存)存储器层级50中。至少在一些情况下,以此方式选择性地启用预取可例如使候选数据块56在随后被定为目标的情况下能够从专用较低存储器层级50而不是存储器阵列28供应,从而促进提高计算系统操作效率。
然而,在其它实施例中,当候选预取存储器页当前处于其撤销激活状态时,存储器控制器34可自动启用到专用较低存储器层级的预取。此外,在一些实施例中,在候选预取存储器页处于其激活状态时使用的第一预取置信度阈值的值与在候选预取存储器页处于其撤销激活状态时使用的第二预取置信度阈值的值可不同。举例来说,第一预取置信度阈值的值可大于第二预取置信度阈值的值,或反之亦然。在其它实施例中,第一预取置信度阈值的值可与第二预取置信度阈值的值匹配。
以此方式,(例如,存储器侧和/或处理器侧)存储器子系统14可用以至少部分地基于存储器阵列28的当前状态而选择性地停用从存储器阵列的预取。换句话说,在一些实施例中,存储器子系统14的(例如,存储器侧和/或处理器侧)存储器控制器34可至少部分地基于指示存储器阵列28的当前状态和/或存储器阵列28中的一或多个存储器页的当前状态的存储器阵列状态信息96而选择性地停用一或多个预取(例如,读取)存储器存取请求的履行。此外,如上文所描述,在一些实施例中,可使用多个控制器(例如,控制电路系统和/或控制逻辑)实施存储器控制器34。
为了帮助说明,图13中展示包含使用多个控制器实施的存储器控制器34C的计算系统10的一部分的实例。具体地说,如所描绘,存储器控制器34C包含高速缓存控制器36、预取控制器38、主(例如,DRAM)存储器控制器40和存储器感知控制器42。然而,应了解,所描绘的实例仅旨在说明而非限制。举例来说,在其它实施例中,可用少于四个控制器或多于四个控制器实施存储器控制器34。
在一些实施例中,存储器控制器34C可至少部分地在计算系统10的处理器侧上实施,例如实施为处理器侧存储器控制器34A。因此,如在所描绘的实例中,存储器控制器34C可例如经由一或多个处理器侧内部总线20B通信地耦合到在计算系统10的处理器侧上实施的处理子系统12的处理电路系统16。以此方式,如在所描绘的实例中,存储器控制器34C可从处理电路系统16接收目标为从存储器子系统14返回对应的所要求数据194的读取(例如,检索)要求192,和/或目标为在存储器子系统14中存储对应的所要求数据194的写入(例如,存储)要求196。
另外或替代地,存储器控制器34C可至少部分地在计算系统10的存储器侧上实施,例如实施为存储器侧存储器控制器34B。因此,如在所描绘的实例中,存储器控制器34C可例如经由一或多个存储器侧内部总线20C通信地耦合到在计算系统的存储器侧上实施的存储器阵列28的控制电路系统197,例如行选择电路系统76和/或列选择电路系统78。以此方式,如在所描绘的实例中,存储器控制器34C可将目标为从存储器阵列28返回对应的所请求数据200的读取(例如,检索)请求198和/或请求在存储器阵列28中存储对应的所请求数据200的写入(例如,存储)请求202输出到存储器阵列28的控制电路系统197。
实际上,在一些实施例中,存储器控制器34C的一部分可在计算系统10的处理器侧上实施,而存储器控制器34C的另一部分可在计算系统10的存储器侧上实施。换句话说,至少在此类实施例中,存储器控制器34C的在计算系统10的处理器侧上实施的部分和存储器控制器34C的在计算系统10的存储器侧上实施的部分可经由存储器(例如,外部通信)总线20A通信地耦合。仅作为说明性且非限制性实例,主存储器控制器40可在计算系统10的存储器侧上实施,而高速缓存控制器36、预取控制器38及存储器感知控制器42在计算系统10的处理器侧上实施。
如上文所描述,在一些实施例中,例如DRAM存储器控制器34的主存储器控制器40可通常控制存储器阵列28的操作,且因此控制对应存储器阵列存储器层级的操作。举例来说,主存储器控制器40可选择性地指示耦合到存储器阵列28的控制电路系统197(例如,行选择电路系统76)激活存储器页(例如,存储器单元行88)或撤销激活存储器单元页。另外或替代地,主存储器控制器40可选择性地指示控制电路系统197(例如,列选择电路系统78)提供(例如,启用)或阻止(例如,停用)对激活的存储器页中的存储位置(例如,存储器阵列)的存取(例如,读取或写入)。因此,如在所描绘的实例中,主存储器控制器40确定指示存储器阵列28的当前状态和/或存储器阵列28中的一或多个存储器页的当前状态的存储器阵列状态信息96。
为了促进提高计算系统操作效率,如上文所描述,在一些实施例中,存储器感知控制器42可至少部分地基于存储器阵列28的当前状态而选择性地停用所要求数据194在专用高速缓存24中的高速缓存(例如,启用高速缓存旁路)。举例来说,存储器感知控制器42可选择性地停用通过从处理电路系统16接收的写入要求196将存储在存储器阵列28中的所要求存储器地址204处定为目标的所要求数据194的高速缓存。另外或替代地,存储器感知控制器42可选择性地停用响应于从处理电路系统16接收到读取要求192而从存储器阵列28中的所要求存储器地址204检索的所要求数据194的高速缓存(例如,启用高速缓存旁路)。
此外,如上文所描述,在一些实施例中,高速缓存控制器36可通常控制一或多个高速缓存24的操作(例如,数据存储),且因此控制对应高速缓存(例如,专用较低)存储器层级的操作。因此,如在所描绘的实例中,高速缓存控制器36可例如响应于接收到将对应的所要求数据194定为目标的读取要求192和/或写入要求196而输出一或多个所要求的存储器地址204。至少部分地基于与存储器阵列28中的当前激活的存储器页和/或包含当前要求的存储器地址204的存储器页相关联的存储器阵列状态信息96,存储器感知控制器42可返回高速缓存旁路决策206,其指示是启用(例如,高速缓存旁路停用)还是停用(例如,高速缓存旁路启用)与所要求的存储器地址204相关联的所要求数据194在专用高速缓存24中的存储(例如,高速缓存)。
此外,如上文所描述,相比于存储器阵列28(例如,较高存储器层级),例如高速缓存24和/或预取缓冲器32的专用较低存储器层级50通常提供更快的数据存取速度。因而,为了促进提高计算系统操作效率,在一些实施例中,存储器控制器34C可尝试在进行到存储器阵列28之前从在计算系统10中实施的专用较低存储器层级50检索由读取要求192定为目标的所要求数据194。因此,如在所描绘的实例中,高速缓存控制器36可例如至少在相关联的所要求数据194在专用较低存储器层级50中的每一个中引起未命中时将所要求的存储器地址204输出到主存储器控制器40。
至少部分地基于所要求的存储器地址204,主存储器控制器40可输出目标为从存储器阵列28返回对应的所要求数据194的读取请求198,例如作为要求(例如,读取)存储器存取请求。换句话说,响应于读取(例如,要求)请求198而从存储器阵列28检索的所请求数据200可包含由处理电路系统16定为目标的所要求数据194。因此,如在所描绘的实例中,主存储器控制器40可将从存储器阵列28检索的所要求数据194输出到高速缓存控制器36,例如,以使高速缓存控制器36能够基于从存储器感知控制器42接收的高速缓存旁路决策206而选择性地停用所要求数据194在专用高速缓存24中的高速缓存,从而促进提高计算系统操作效率。
如上文所描述,为了促进进一步提高计算系统操作效率,在一些实施例中,存储器控制器34可另外或替代地输出目标为在处理电路系统16实际上要求所请求数据200之前从存储器阵列28返回对应的所请求数据200的读取请求198,例如作为预取(例如,读取)存储器存取请求。换句话说,响应于读取(例如,预取)请求198而从存储器阵列28检索的所请求数据200可包含处理电路系统16尚未要求的已预取数据208。此外,如上文所描述,在一些实施例中,已预取数据208可存储在实施于计算系统10中的一或多个专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50中。
此外,如上文所描述,在一些实施例中,预取控制器38可通常控制一或多个专用预取缓冲器32中的操作(例如,数据存储),且因此控制对应预取缓冲器(例如,专用较低)存储器层级中的操作。另外或替代地,如上文所描述,高速缓存控制器36可通常控制一或多个专用高速缓存24中的操作。因此,如在所描绘的实例中,主存储器控制器40可将已预取数据208输出到预取控制器38和/或直接输出到高速缓存控制器36。
然而,为了促进提高计算系统操作效率,如上文所描述,在一些实施例中,存储器感知控制器42可至少部分地基于存储器阵列28的当前状态而选择性地停用数据从存储器阵列28到专用较低(例如,高速缓存和/或预取缓冲器)存储器层级50的预取。具体地说,如在所描绘的实例中,存储器感知控制器42可从预取控制器38接收候选预取存储器地址210。在一些实施例中,预取控制器38可至少部分地基于一或多个先前要求的存储器地址204,例如通过至少部分地基于一或多个先前要求的存储器地址204确定先前数据存取模式且至少部分地基于先前数据存取模式预测包含候选预取存储器地址210的后续数据存取模式来识别候选预取存储器地址210。
至少部分地基于与存储器阵列28中的当前激活的存储器页和/或包含候选预取存储器地址210的存储器页相关联的存储器阵列状态信息96,存储器感知控制器42可返回指示是启用还是停用从候选预取存储器地址210的预取的预取决策212。当停用时,预取控制器38可例如通过阻止候选预取存储器地址210到主存储器控制器40的供应来取消从候选预取存储器地址210的预取。另一方面,当启用预取时,预取控制器38可将对应的候选预取存储器地址210作为目标预取存储器地址214输出到主存储器控制器40。至少部分地基于目标预取存储器地址214,主存储器控制器40可输出目标为从存储器阵列28返回对应的已预取数据208的读取(例如,预取)请求198,例如作为已预取(例,读取)存储器存取请求。
以此方式,本公开中描述的技术可使存储器子系统能够至少部分地基于存储器阵列的当前状态而选择性地停用存储在存储器阵列(例如,较高存储器层级)中的数据到例如高速缓存和/或预取缓冲器等专用较低存储器层级的预取。另外或替代地,如上文所描述,本公开中描述的技术可使存储器子系统能够至少部分地基于存储器阵列的当前状态而选择性地停用要求存储在存储器阵列(例如,较高存储器层级)中和/或要求从存储器阵列检索的数据在高速缓存(例如,专用较低存储器层级)中的高速缓存。如上文所描述,至少在一些情况下,以此方式实施和/或操作存储器子系统以选择性地停用预取和/或高速缓存可例如减少专用较低(例如,高速缓存和/或预取缓冲器)存储器层级中的污染和/或减少由于激活存储器阵列中的存储器页而产生的功耗,从而促进提高存储器子系统的操作效率,且因此促进提高部署有存储器子系统的计算系统的操作效率。
本文中描述且对应图式中描绘本公开的一或多个特定实施例。这些所描述实施例仅为当前公开的技术的实例。另外,为了提供这些实施例的简明描述,说明书中可能未描述实际实施方案的所有特征。应了解,在任何此类实际实施方案的开发过程中,如在任何工程或设计项目中一样,必须制定众多的实施方案特定决策以实现研发者的特定目标,例如遵守可能在各个实施方案之间变化的系统相关和企业相关约束。此外,应了解,此类开发工作可能是复杂且耗时的,然而对于受益于本公开的所属领域的技术人员来说,这些可能是设计、构造和制造中的常规任务。
当介绍本公开的各种实施例的要素时,冠词“一”和“所述”旨在表示存在所述要素中的一或多个。术语“包括(comprising)”、“包含(including)”和“具有”旨在为包含性的且意味着可能存在除了所列元件之外的额外元件。另外,应理解,对本公开的“一个实施例”或“实施例”的提及并不意图解释为排除同样并入有所叙述特征的额外实施例的存在。
上文所描述的特定实施例已借助于实例展示,且应理解,这些实施例可接受各种修改和替代形式。应进一步理解,权利要求并不意图限于所公开的特定形式,而是涵盖属于本公开的精神和范围内的所有修改、等效物和替代方案。
Claims (20)
1.一种设备,其包括:
第一分级存储器层级,其包括存储器阵列;
第二分级存储器层级,其包括高速缓存、预取缓冲器或这两者;以及
存储器控制器,其经配置以通信地耦合到存储器总线,其中所述存储器控制器经配置以:
确定与所述存储器阵列中由经由所述存储器总线接收的第一存储器存取请求定为目标的存储器页相关联的第一状态信息,其中所述第一状态信息包括:
第一参数,其指示所述存储器页的当前激活状态;以及
第二参数,其指示后续存储器存取请求将所述存储器页定为目标的统计似然度,其中所述第二参数是基于一或多个先前确定的计数器值而确定的,所述一或多个先前确定的计数器值中的每一者指示先前将所述存储器页定为目标的连续存储器存取请求的数量;且
当与所述存储器页相关联的所述第一状态信息中的所述第一参数指示所述存储器页为激活的存储器页且与所述存储器页相关联的所述第一状态信息中的所述第二参数大于或等于第一阈值时,停用与所述存储器页相关联的数据在所述第二分级存储器层级中的存储。
2.根据权利要求1所述的设备,其中所述存储器控制器经配置以在与所述存储器页相关联的所述第一状态信息中的所述第一参数指示所述存储器页为所述激活的存储器页且与所述存储器页相关联的所述第一状态信息中的所述第二参数小于所述第一阈值时,指示所述设备将与所述存储器页相关联的所述数据的副本存储在所述第二分级存储器层级中。
3.根据权利要求1所述的设备,其中,当与所述存储器页相关联的所述第一状态信息中的所述第一参数指示所述存储器页不是所述激活的存储器页时,所述存储器控制器经配置以:
确定与所述存储器阵列中的所述激活的存储器页相关联的第二状态信息,其中所述第二状态信息包括指示所述后续存储器存取请求将所述激活的存储器页定为目标的统计似然度的第三参数;
当与所述激活的存储器页相关联的所述第二状态信息中的所述第三参数大于第二阈值时,停用与所述存储器页相关联的所述数据在所述第二分级存储器层级中的存储;且
当与所述激活的存储器页相关联的所述第二状态信息中的所述第三参数小于或等于所述第二阈值时,指示所述设备将与所述存储器页相关联的所述数据的副本存储在所述第二分级存储器层级中。
4.根据权利要求1所述的设备,其中所述存储器控制器经配置以在与所述存储器页相关联的所述第一状态信息中的第一参数指示所述存储器页为撤销激活的存储器页时启用与所述存储器页相关联的所述数据的副本到所述第二分级存储器层级中的存储。
5.根据权利要求1所述的设备,其中,当所述存储器页从撤销激活状态转变到激活状态时,所述存储器控制器经配置以:
更新与所述存储器页相关联的所述第一状态信息中的所述第一参数以指示所述存储器页处于所述激活状态;
将所述计数器值复位;且
当紧接在所述第一存储器存取请求之后履行的第二存储器存取请求将所述存储器页定为目标时,使所述计数器值递增。
6.根据权利要求5所述的设备,其中,当所述存储器页随后从所述激活状态转变到所述撤销激活状态时,所述存储器控制器经配置以:
更新与所述存储器页相关联的所述第一状态信息中的所述第一参数以指示所述存储器页处于所述撤销激活状态;且
至少部分地基于在所述存储器页转变到所述撤销激活状态时产生的所述计数器值而更新与所述存储器页相关联的所述第一状态信息中的所述第二参数的值。
7.根据权利要求5所述的设备,其中所述存储器控制器经配置以:
当所述存储器页从所述撤销激活状态转变到所述激活状态时,检索与所述存储器页相关联的所述第一状态信息中的所述第二参数的第一值;且
通过用至少部分地基于在所述存储器页最初转变到所述激活状态时检索的所述第一值与在所述存储器页随后转变到所述撤销激活状态时产生的所述计数器值的平均值而确定的第二值覆写所述第二参数的所述第一值,更新与所述存储器页相关联的所述第一状态信息中的所述第二参数。
8.根据权利要求1所述的设备,其中,当所述第一存储器存取请求包括要求至少在所述存储器阵列中存储所述数据的写入存储器存取请求时,所述存储器控制器经配置以:
至少部分地通过启用高速缓存旁路来停用所述数据在所述第二分级存储器层级中的存储;
当未启用所述高速缓存旁路时,指示所述设备将所述数据的副本存储在所述第二分级存储器层级中;且
当启用所述高速缓存旁路时,指示所述设备将所述数据存储在所述存储器页中由所述写入存储器存取请求要求的存储器地址处,而不将所述数据的所述副本存储在所述第二分级存储器层级中。
9.根据权利要求1所述的设备,其包括通信地耦合到所述存储器控制器的处理电路系统,其中,当所述第一存储器存取请求包括要求返回与所述存储器页相关联的所述数据的读取存储器存取请求时,所述存储器控制器经配置以:
至少部分地通过启用高速缓存旁路来停用所述数据在所述第二分级存储器层级中的存储;
当所述数据当前未存储在所述第二分级存储器层级中时,指示所述存储器阵列从所述存储器页输出由所述读取存储器存取请求要求的所述数据;
当未启用所述高速缓存旁路时,指示所述设备将从所述存储器阵列输出的所述数据的副本存储在所述第二分级存储器层级中;且
当启用所述高速缓存旁路时,指示所述设备将从所述存储器阵列输出的所述数据返回到所述处理电路系统,而不将所述数据的所述副本存储在所述第二分级存储器层级中。
10.根据权利要求1所述的设备,其中:
所述第一存储器存取请求包括预取存储器存取请求,其目标为从所述存储器页中的存储器地址预取所述数据;且
所述存储器控制器经配置以至少部分地通过阻止履行所述预取存储器存取请求来停用所述数据在所述第二分级存储器层级中的存储。
11.一种方法,其包括:
使用存储器控制电路系统,至少部分地基于存储器阵列存储器层级中计算系统的处理电路系统先前已要求存取的一或多个存储位置而预测所述存储器阵列存储器层级中所述处理电路系统将随后要求存取的存储位置;
使用所述存储器控制电路系统来确定所述存储器阵列存储器层级中包括所述存储位置的存储器单元行的当前激活状态;以及
响应于确定包括所述存储位置的所述存储器单元行的所述当前激活状态为激活状态:
使用所述存储器控制电路系统来预测所述处理电路系统将要求存取的下一存储位置包含在包括所述存储位置的所述存储器单元行中的第一置信度,其中所述第一置信度是基于一或多个先前确定的计数器值而确定的,所述一或多个先前确定的计数器值中的每一者指示先前将所述存储器单元行定为目标的连续存储器存取请求的数量;且
响应于确定所述处理电路系统将要求存取的所述下一存储位置包含在所述存储器单元行中的所述第一置信度大于第一预取阈值,使用所述存储器控制电路系统来指示所述计算系统在所述处理电路系统要求返回候选预取数据块之前将数据块从所述存储器阵列存储器层级中的所述存储位置预取到高速缓存存储器层级、预取缓冲器存储器层级或这两者。
12.根据权利要求11所述的方法,其包括响应于确定包含所述存储位置的所述存储器单元行的所述当前激活状态为所述激活状态且所述下一存储位置将包含在候选存储器单元行中的所述第一置信度小于或等于所述第一预取阈值:
使用所述存储器控制电路系统来指示所述计算系统取消所述数据块从所述存储器阵列存储器层级中的存储位置到所述高速缓存存储器层级、所述预取缓冲器存储器层级或这两者的预取;且
响应于随后从所述处理电路系统接收到要求返回存储在所述存储器阵列存储器层级中的所述存储位置处的数据的读取要求,使用所述存储器控制电路系统来指示所述计算系统从所述存储器阵列存储器层级中的所述存储位置检索所述数据块。
13.根据权利要求11所述的方法,其包括响应于确定包含所述存储位置的所述存储器单元行的所述当前激活状态为撤销激活状态:
使用所述存储器控制电路系统来预测所述处理电路系统将要求存取的所述下一存储位置包含在所述存储器阵列存储器层级的当前激活的存储器单元行中的第二置信度;且
响应于确定所述下一存储位置将包含在所述存储器阵列的所述当前激活的存储器单元行中的所述第二置信度小于第二预取阈值,使用所述存储器控制电路系统来指示所述计算系统在从所述处理电路系统接收要求返回存储在所述存储器阵列存储器层级中的所述存储位置处的数据的读取要求之前将所述数据块从所述存储器阵列存储器层级中的所述存储位置预取到所述高速缓存存储器层级、所述预取缓冲器存储器层级或这两者。
14.根据权利要求13所述的方法,其包括响应于确定包含所述存储位置的所述存储器单元行的所述当前激活状态为所述撤销激活状态且所述下一存储位置将包含在所述存储器阵列存储器层级的所述当前激活的存储器单元行中的所述第二置信度大于或等于所述第二预取阈值:
使用所述存储器控制电路系统来指示所述计算系统取消所述候选预取数据块到所述高速缓存存储器层级、所述预取缓冲器存储器层级或这两者的预取;且
响应于随后从所述处理电路系统接收到要求返回存储在所述存储器阵列存储器层级中的所述存储位置处的数据的读取要求,使用所述存储器控制电路系统来指示所述计算系统从所述存储器阵列存储器层级中的所述存储位置检索所述数据块。
15.根据权利要求11所述的方法,其包括响应于随后从所述处理电路系统接收到要求返回存储在所述存储器阵列存储器层级中的所述存储位置处的数据的读取要求:
使用所述存储器控制电路系统来确定存储在所述存储器阵列存储器层级中的所述存储位置处的所述数据块是否在所述高速缓存存储器层级、所述预取缓冲器存储器层级或这两者中引起命中
响应于确定所述数据块命中所述高速缓存存储器层级,使用所述存储器控制电路系统来指示所述计算系统将所述数据块从所述高速缓存存储器层级供应到所述处理电路系统的一或多个寄存器,响应于确定所述数据块命中所述预取缓冲器存储器层级而指示所述计算系统将所述数据块从所述预取缓冲器存储器层级供应到所述处理电路系统的所述一或多个寄存器,或同时进行这两种操作;且
响应于确定所述数据块未命中所述高速缓存存储器层级或所述预取缓冲器存储器层级:
使用所述存储器控制电路系统来确定存储所述数据块的所述存储器阵列存储器层级中的所述存储器单元行的所述当前激活状态;
响应于确定包括所述存储位置的所述存储器单元行的所述当前激活状态为撤销激活状态,使用所述存储器控制电路系统来停用高速缓存旁路以启用从所述存储器阵列存储器层级检索的所述数据块的副本在所述高速缓存存储器层级中的高速缓存。
16.根据权利要求11所述的方法,其包括响应于确定包括所述存储位置的所述存储器单元行的所述当前激活状态为所述激活状态:
使用所述存储器控制电路系统来预测所述处理电路系统将要求存取的所述下一存储位置包含在包括所述存储位置的所述单元行中的所述第一置信度;
响应于确定所述处理电路系统将要求存取的所述下一存储位置包含在所述存储器单元行中的所述第一置信度大于高速缓存置信度阈值,使用所述存储器控制电路系统来启用所述高速缓存旁路以停用所述数据块在所述高速缓存存储器层级中的高速缓存;且
响应于确定所述处理电路系统将要求存取的所述下一存储位置包含在所述存储器单元行中的所述第一置信度小于或等于所述高速缓存置信度阈值,使用所述存储器控制电路系统来停用所述高速缓存旁路以启用所述数据块在所述高速缓存存储器层级中的高速缓存。
17.一种有形的非暂时性计算机可读媒体,其存储能由计算系统的控制电路系统执行的指令,其中所述指令包括用以进行以下操作的指令:
使用所述控制电路系统来确定存储器阵列中所述计算系统中的处理电路系统要求存取的存储器地址;
使用所述控制电路系统来指示所述计算系统提供对所述存储器阵列中的所要求的存储器页的存取,所述所要求的存储器页包括由所述处理电路系统要求的所述存储器地址;
使用所述控制电路系统来确定包括由所述处理电路系统要求的所述存储器地址的所述所要求的存储器页的当前激活状态;且
响应于确定所述所要求的存储器页的所述当前激活状态为激活状态:
使用所述控制电路系统来预测紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的下一存储器地址将在所述所要求的存储器页中的第一统计似然度,其中所述第一统计似然度是基于一或多个先前确定的计数器值而确定的,所述一或多个先前确定的计数器值中的每一者指示先前将所述存储器页定为目标的连续存储器存取请求的数量;且
响应于确定紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述所要求的存储器页中的所述第一统计似然度大于第一高速缓存阈值,使用所述控制电路系统来启用高速缓存旁路以停用与由所述处理电路系统要求的存储器地址相关联的数据块的高速缓存。
18.根据权利要求17所述的有形的非暂时性计算机可读媒体,其包括用以进行以下操作的指令:响应于确定所述所要求的存储器页的所述当前激活状态为所述激活状态且紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述所要求的存储器页中的所述第一统计似然度小于或等于所述第一高速缓存阈值,使用所述控制电路系统来停用所述高速缓存旁路以启用与由所述处理电路系统要求的存储器地址相关联的所述数据块的高速缓存。
19.根据权利要求17所述的有形的非暂时性计算机可读媒体,其包括用以响应于确定所述所要求的存储器页的所述当前激活状态不是所述激活状态而进行以下操作的指令:
使用所述控制电路系统来预测紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述存储器阵列中的当前激活的存储器页中的第二统计似然度;且
响应于确定紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述当前激活的存储器页中的所述第二统计似然度不小于第二高速缓存阈值,使用所述控制电路系统来启用所述高速缓存旁路以停用与由所述处理电路系统要求的所述存储器地址相关联的所述数据块的高速缓存。
20.根据权利要求19所述的有形的非暂时性计算机可读媒体,其包括用以响应于确定以下情况而使用所述控制电路系统来停用所述高速缓存旁路以启用与由所述处理电路系统要求的所述存储器地址相关联的所述数据块的高速缓存的指令:
紧接在由所述处理电路系统要求的所述存储器地址之后被定为目标的所述下一存储器地址将在所述当前激活的存储器页中的所述第二统计似然度小于所述第二高速缓存阈值;或
所述所要求的存储器页的所述当前激活状态不是所述激活状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/525,106 US11194728B2 (en) | 2019-07-29 | 2019-07-29 | Memory-aware pre-fetching and cache bypassing systems and methods |
US16/525,106 | 2019-07-29 | ||
PCT/US2020/040362 WO2021021371A1 (en) | 2019-07-29 | 2020-06-30 | Memory-aware pre-fetching and cache bypassing systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114175001A CN114175001A (zh) | 2022-03-11 |
CN114175001B true CN114175001B (zh) | 2023-03-21 |
Family
ID=74228764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048396.0A Active CN114175001B (zh) | 2019-07-29 | 2020-06-30 | 存储器感知预取和高速缓存旁路系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11194728B2 (zh) |
EP (1) | EP4004744A4 (zh) |
KR (1) | KR20220017006A (zh) |
CN (1) | CN114175001B (zh) |
WO (1) | WO2021021371A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI717816B (zh) * | 2019-08-28 | 2021-02-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
US11360890B1 (en) * | 2021-02-03 | 2022-06-14 | Ambarella International Lp | Request buffering scheme |
US20240037032A1 (en) * | 2022-07-28 | 2024-02-01 | Dell Products L.P. | Lcs data provisioning system |
CN116991479B (zh) * | 2023-09-28 | 2023-12-12 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279083B1 (en) * | 1998-03-27 | 2001-08-21 | Motorola, Inc. | Circuit and method of controlling cache memory |
US20110154002A1 (en) * | 2009-12-17 | 2011-06-23 | Wei Liu | Methods And Apparatuses For Efficient Load Processing Using Buffers |
CN103777898A (zh) * | 2012-10-19 | 2014-05-07 | 国际商业机器公司 | 操作存储器设备的方法及系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006510082A (ja) | 2002-12-12 | 2006-03-23 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データプリフェッチのためのストライド予測に基づくカウンタ |
US7228388B2 (en) * | 2004-11-19 | 2007-06-05 | International Business Machines Corporation | Enabling and disabling cache bypass using predicted cache line usage |
US7971031B2 (en) * | 2007-05-29 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US8627009B2 (en) * | 2008-09-16 | 2014-01-07 | Mosaid Technologies Incorporated | Cache filtering method and apparatus |
US9009414B2 (en) | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
US9471497B2 (en) | 2014-01-24 | 2016-10-18 | Netapp, Inc. | Methods for combining access history and sequentiality for intelligent prefetching and devices thereof |
US20170109277A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
US20200285580A1 (en) * | 2017-06-30 | 2020-09-10 | Intel Corporation | Speculative memory activation |
US20190213130A1 (en) * | 2018-01-05 | 2019-07-11 | Intel Corporation | Efficient sector prefetching for memory side sectored cache |
-
2019
- 2019-07-29 US US16/525,106 patent/US11194728B2/en active Active
-
2020
- 2020-06-30 KR KR1020227003522A patent/KR20220017006A/ko active IP Right Grant
- 2020-06-30 EP EP20847223.3A patent/EP4004744A4/en not_active Withdrawn
- 2020-06-30 WO PCT/US2020/040362 patent/WO2021021371A1/en unknown
- 2020-06-30 CN CN202080048396.0A patent/CN114175001B/zh active Active
-
2021
- 2021-12-06 US US17/543,378 patent/US11934317B2/en active Active
-
2024
- 2024-02-15 US US18/442,676 patent/US20240248849A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279083B1 (en) * | 1998-03-27 | 2001-08-21 | Motorola, Inc. | Circuit and method of controlling cache memory |
US20110154002A1 (en) * | 2009-12-17 | 2011-06-23 | Wei Liu | Methods And Apparatuses For Efficient Load Processing Using Buffers |
CN103777898A (zh) * | 2012-10-19 | 2014-05-07 | 国际商业机器公司 | 操作存储器设备的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20240248849A1 (en) | 2024-07-25 |
CN114175001A (zh) | 2022-03-11 |
EP4004744A4 (en) | 2022-11-02 |
US11934317B2 (en) | 2024-03-19 |
EP4004744A1 (en) | 2022-06-01 |
KR20220017006A (ko) | 2022-02-10 |
US20210034539A1 (en) | 2021-02-04 |
US20220091990A1 (en) | 2022-03-24 |
WO2021021371A1 (en) | 2021-02-04 |
US11194728B2 (en) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338980B (zh) | 预测性数据存储分级存储器系统及方法 | |
US11188234B2 (en) | Cache line data | |
CN114175001B (zh) | 存储器感知预取和高速缓存旁路系统和方法 | |
US11281585B2 (en) | Forward caching memory systems and methods | |
CN110580229B (zh) | 扩展线宽存储器侧高速缓存系统和方法 | |
US11281589B2 (en) | Asynchronous forward caching memory systems and methods | |
US10705762B2 (en) | Forward caching application programming interface systems and methods | |
US11354246B2 (en) | Memory-side transaction context memory interface systems and methods based on clock cycles and wires | |
US10877889B2 (en) | Processor-side transaction context memory interface systems and methods | |
US11755488B2 (en) | Demand delay and data value correlated memory pre-fetching systems and methods |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231012 Address after: Illinois, America Patentee after: North Star Franchise Group Co.,Ltd. Address before: Idaho Patentee before: MICRON TECHNOLOGY, Inc. |
|
TR01 | Transfer of patent right |