CN114356800A - 平衡存储器部分访问 - Google Patents
平衡存储器部分访问 Download PDFInfo
- Publication number
- CN114356800A CN114356800A CN202111019676.1A CN202111019676A CN114356800A CN 114356800 A CN114356800 A CN 114356800A CN 202111019676 A CN202111019676 A CN 202111019676A CN 114356800 A CN114356800 A CN 114356800A
- Authority
- CN
- China
- Prior art keywords
- memory
- bit
- shuffle
- control logic
- cache
- 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.)
- Pending
Links
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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及平衡存储器部分访问。一些存储器结构设计为可使用至少部分地依赖于存储器访问请求大致均匀地分布在存储器的多个存储器部分上的方案来加速存储器访问。此类存储器部分的示例包括高速缓存存储器的高速缓存组和多存储体存储器的存储体。然而,一些代码可能以将存储器访问集中在总存储器部分的子组的方式执行,这可能降低这些存储器类型中的存储器响应性。为了说明此类行为,所描述的技术可以基于混洗映射来混洗存储器地址,以产生混洗的存储器地址。混洗映射可以基于在存储器地址的位位置处出现的参考位值的计数来确定。将混洗的存储器地址用于存储器请求可以基本上平衡存储器部分上的访问。
Description
技术领域
本申请涉及平衡存储器部分访问。
背景技术
计算机可能具有比计算机的存储器运行更快的处理器。由于这种速度差异,速度较快的处理器等待从速度较慢的存储器接收请求的数据。这种等待会阻碍处理器向用户提供服务,诸如播放视频或更新文档外观。等待可能会导致计算机运行速度非常慢,以至于计算机看起来像冻结了一样,从而使用户感到沮丧。此外,这种速度差异会阻碍计算机特征和应用的增长,原因在于,添加新的应用和特征会降低计算机的性能,所以软件设计者会放弃这样做。
发明内容
在一方面,本申请提供了一种设备,其包含:存储器地址电路系统,所述存储器地址电路系统配置为提供多个存储器地址;位计数器阵列,所述位计数器阵列耦合到所述存储器地址电路系统,所述位计数器阵列配置为跟踪对应于所述多个存储器地址上的至少一个位位置的至少一个位计数值;控制逻辑,所述控制逻辑耦合到所述位计数器阵列,所述控制逻辑配置为基于所述至少一个位计数值来确定混洗映射;以及混洗电路,所述混洗电路耦合到所述存储器地址电路系统和所述控制逻辑,所述混洗电路为配置为使用所述混洗映射来混洗存储器地址以产生混洗的存储器地址。
在另一方面,本申请提供了一种方法,其包含:在多个存储器地址上跟踪多个位位置的位计数值;基于所述跟踪确定混洗映射;使用所述混洗映射来混洗存储器地址以产生混洗的存储器地址;以及使用所述混洗的存储器地址访问存储器。
在另一方面,本申请提供了一种设备,其包含:存储器地址电路系统,所述存储器地址电路系统配置为提供多个存储器地址;位计数器阵列,所述位计数器阵列耦合到所述存储器地址电路系统,所述位计数器阵列配置为随着时间跟踪分别对应于所述多个存储器地址上的多个位位置的多个位计数值;控制逻辑,所述控制逻辑耦合到所述位计数器阵列,所述控制逻辑配置为基于所述多个位计数值来确定混洗映射;以及接口,所述接口耦合到所述控制逻辑,所述接口配置为通过互连将存储器命令传输到存储器装置,所述存储器命令包含所述混洗映射并指示所述存储器装置响应于存储器地址使用所述混洗映射来产生混洗的存储器地址。
附图说明
参考以下附图描述用于平衡存储器部分访问的设备和技术。在所有附图中,相同的数字用于指代相似的特征和部件:
图1示出了可以实现平衡存储器部分访问的示例性设备。
图1-1示出了可以实现平衡存储器部分访问并且包括主机装置和存储器装置的另一示例性设备。
图1-2示出了存储器部分平衡器的示例性“离散”实施方式,其可以包括在不同的单独装置中。
图1-3示出了包括在主机装置和存储器装置上的存储器部分平衡器的示例性“分布式”实施方式。
图2-1示出了包括多个所选存储器部分的示例性存储器和包括存储器地址电路系统和位计数器阵列的示例性存储器部分平衡器。
图2-2示出了示例性存储器地址电路系统和可以跟踪位计数值的示例性位计数器阵列。
图2-3示出了分成两个部分的分布式存储器部分平衡器的示例。
图3示出了从多个存储器地址的位位置分析位计数值以确定多个位比的示例性方法。
图4-1示出了在具有高速缓存存储器的分级存储器结构中的平衡存储器部分访问的示例性实施方式,其中多个所选存储器部分实现为多个高速缓存组。
图4-2示出了在具有多存储体存储器的存储器结构中的平衡存储器部分访问的示例性实施方式,其中多个所选存储器部分实现为多个存储体。
图5示出了描述由存储器部分平衡器使用多个位比来确定用于混洗存储器地址的混洗映射而执行的操作的示例性流程图。
图6示出了设备平衡存储器部分访问的示例性方法。
具体实施方式
概述
计算机使用通信耦合到存储器的处理器来提供服务和特征。因为处理器可使用数据的速度比某些存储器能适应的速度更快,所以许多计算机采用一或多种方案来加速存储器访问。因此,这些加速存储器访问的方案可以减少处理器和存储器之间的速度差异。一种加速存储器访问的方案涉及使用分级存储器系统。分级存储器可以设计为有效权衡成本和速度。相对较快的存储器通常比相对较慢的存储器更贵,因此计算机硬件设计者试图平衡它们的相对成本和权益。一种方法是使用少量更快、更贵的存储器,同时使用大量更慢、更便宜的存储器。在分级存储器系统中,较快的存储器部署在比较慢的存储器更高的级别,使得较快的存储器优选地由处理器首先访问。相对较快的存储器的一个示例叫做高速缓存存储器。尽管基于高速缓存的分级存储器系统可以加速存储器访问,但是此类方案在一些计算环境中可能无法提供预期的结果。
通常,加速存储器访问的方案可以涉及各种设计的硬件结构。如上所述,一个示例性设计方案涉及具有相对较快的高速缓存存储器和相对较慢的主存储器的分级存储器系统。另一设计方案涉及将主存储器分成多个存储体,其中每个存储体可以并行访问,这比顺序访问存储体更快。如果由处理器执行的代码(例如,应用程序、程序或例程)以某种方式运行,那么这些设计方案可以加速存储器访问。另一方面,如果代码没有以预期的方式运行,那么这些方案加速存储器访问的程度不会太高,或者它们甚至可能无法加速存储器访问。
为了解决这些情况,本文档描述了能够在代码不以预期的方式运行时进行补偿的设备和技术。通过采用所描述的补偿技术,各种设计的存储器访问方案可以成功地应用于不同类型的可执行代码。如本文所述,可以通过混洗存储器地址位来平衡对各种存储器部分的访问。这种存储器部分访问的平衡可以促进不同类型执行代码下的存储器访问加速。
本文档描述了各种技术,包括那些涉及基于高速缓存的分级存储器方案或联组存储器(banked-memory)方案的技术。利用基于高速缓存的分级存储器方案,存储器结构包括较高存储器级别的高速缓存存储器和较低级别的主存储器。存储在主存储器中的数据子组被临时复制到高速缓存存储器中,以便更快地访问。如果高速缓存存储器中存在存储器访问请求所针对的数据,则存在高速缓存命中,并且存储器系统可以更快地将目标数据从高速缓存存储器返回到请求处理器。相反,如果存储器访问请求所针对的数据还没有出现在高速缓存存储器中,则存在高速缓存未命中。在高速缓存未命中的情况下,存储器系统从主存储器中更慢地检索目标数据,然后将其提供给请求处理器。因此,利用高速缓存存储器的加速存储器访问的方案在高速缓存存储器中存在更频繁请求的数据时更有效。
增加高速缓存存储器中存在所请求的数据的可能性的一种方法是增加高速缓存存储器的大小。然而,更大的高速缓存存储器增加了成本。增加高速缓存命中的另一方法是提高给定高速缓存大小的利用率。换句话说,如果高速缓存的部分由于当前正在执行的代码的一些属性而未被使用,则在给定高速缓存大小的情况下,高速缓存无法尽可能多地加速存储器访问。例如,如果30%的高速缓存未得到充分利用,那么存储器访问可能会明显变慢,从而对整体计算性能产生不利影响。
通常,“组相联”类型的高速缓存存储器可以使用包括行和列的存储器阵列以网格模式来构造。行被称为具有组相联高速缓存存储器的“组”,并且列被称为“路”。例如,在四路组相联高速缓存存储器中,高速缓存存储器可以有数千个组(1000行),每个组中有四路(四列)。使用一些组相联高速缓存存储器结构,存储器系统可以将任意给定的数据段从主存储器移动到一个指定的高速缓存组中,但是不能移动到其他高速缓存组中。换句话说,在数据和被允许高速缓存数据的组之间可能存在一对一的对应关系。然而,与组不同的是,给定的数据段可以被高速缓存在指定的高速缓存组的四路中的任意一路。因此,相对于高速缓存存储器的多路所提供的灵活性,高速缓存存储器的组部分会造成高速缓存存储器的利用出现瓶颈。
存储器系统基于存储器地址中指示所请求的数据的位的子组,将数据从主存储器映射或索引到对应的组中。代码段可能以循环方式执行,地址步距恰好跳过一些存储器地址范围。如果执行代码碰巧请求存储器地址没有映射到40%的高速缓存组的数据,那么代码会保留40%的高速缓存未使用。这相当于拥有40%的小高速缓存,降低了高速缓存存储器响应数据请求所能提供的数据频率或数据量。因此,执行代码可能表现出明显影响高速缓存结构加速存储器访问的能力的行为。相比之下,本文档描述了能够基本上平衡高速缓存存储器的组的利用率以增加代码执行期间可用于存储器访问的高速缓存的百分比的技术和系统。
将存储器分成存储体的结构或并联存储器方案还可以应用于加速存储器访问。这里,可以并行访问存储器的每个存储体,这可能比顺序访问存储体更快。通过并行访问多个存储体,存储器系统可以至少部分地同时或重叠地执行多个存储器访问请求,而不是一次一个地串行执行。例如,存储器控制器可以组织一组存储器访问请求,使得那些以不同存储体为目标的请求被一起发送出去,而不需要其他拦截的存储器请求。因此,多个存储体可以并行响应多个存储器请求。即使存储器控制器顺序地发送存储器请求,由于并行访问操作,存储器响应可以更快地返回,因为其产生响应比传送存储器请求或存储器响应花费的时间更长。
如果多存储体存储器具有例如四个存储体,则可以并行处理四个存储器访问请求。如果联组存储器具有八个存储体,则联组存储器最多可以并行处理八个存储器访问请求。因此,多存储体存储器结构至少在某种程度上根据存储器中包括多少存储体来加速存储器访问。使用固定的存储体供应,如果存储器控制器向更多的存储体发出更多的存储器请求,则多存储体存储器可以并行处理更多的存储器请求。换句话说,如果多存储体存储器的存储体子组由于当前正在执行的代码的一些意外的属性而未被使用,则多存储体存储器可能无法尽可能多地加速具有固定的存储体数量的存储器访问。例如,如果多存储体存储器的25%的存储体未被充分利用,那么相对于存储器的潜力,存储器访问可能会明显变慢,并且这种慢会对计算性能产生不利影响。
使用多存储体存储器,存储器系统基于存储器地址中指示所请求的数据的位的子组,将存储器访问请求映射或路由到对应的存储体。如果执行代码碰巧请求存储器地址没有映射到25%的存储体的数据,那么就实现更快的并行访问而言,25%的存储器未被使用。就以重叠方式处理存储器请求而言,这相当于仅使用75%的物理存在的存储体。通过省略25%的存储体,执行代码降低多存储体存储器响应并行数据请求所能提供的速度或数据量。代码执行的时间越长,或者在排除了25%或存储体的其他部分的存储器地址中循环的时间越长,影响就会增强或扩大。因此,执行代码可能表现出明显影响联组存储器结构加速存储器访问的能力的行为。相比之下,本文档描述的技术和系统可以基本上平衡多存储体存储器的存储体的利用率,以增加目标为并行存储器访问的存储体的百分比。
如上所述,一些高速缓存存储器结构包括多个高速缓存组,并且多存储体存储器结构包括多个存储体。多个高速缓存组上的存储器访问平衡程度会影响高速缓存存储器的性能。类似地,多个存储体上的存储器访问平衡量会影响联组存储器的性能。如本文所使用的,高速缓存组和存储体是给定存储器结构的不同类型的存储器部分的示例。所描述的设备和技术可以增加多个存储器部分上的平衡存储器访问以加速存储器访问,包括使用具有不同执行行为的代码。
在示例性实施方式中,存储器部分平衡器可以增加多个存储器部分(诸如高速缓存组或存储体)上平衡存储器请求的量。为此,控制逻辑确定用于混洗存储器地址以产生混洗的存储器地址的混洗映射。每个存储器地址包括多个存储器地址位或位位置,诸如32位位置或64位位置。单独的存储器地址位可以被重新排列(例如,重新排序)来调整哪些地址位映射到存储器的哪些部分。混洗的存储器地址通过监控由位位置的位值所证明的执行代码的行为来平衡多个存储器部分上的存储器访问请求。
在示例性操作中,存储器部分平衡器使用位计数器阵列将位值跟踪为多个存储器地址上的位位置的位值计数。位计数器阵列包括存储器地址的多个位位置的至少部分的每个位位置的位计数器。每个位计数器存储位计数值,每当存储器地址中的对应的位位置具有参考位值(例如,“0”或“1”)时,该位计数值递增。响应于定时器期满或达到一定数量的存储器事务,控制逻辑分析存储在位计数器阵列中的位计数值。控制逻辑基于来自位计数器的对应的位计数值计算对应于存储器地址的每个位位置的位比。在一些情况下,控制逻辑基于相应的位计数值和事务计数值来计算每个相应的位比。在此类情况下,位比接近0.5(例如,接近事务计数值的50%)指示大约等可能取二进制值0或1的对应的存储器地址位位置。在其他情况下,可以基于分别对应于0和1的两个位计数值来计算位比。在此类情况下,平衡的50%位比或五五分对应于1/1或1.0。对于任一计算,这些平衡的位位置相对更可能对应于基本上分布在这些位位置被映射到的所有可用存储器部分上用于存储器访问的存储器请求。
换句话说,对于当前执行的代码段,位比可以用作存储器地址的对应的位位置随时间的平衡程度的指标,即使不同的代码表现出不同的行为。混洗电路将那些具有指示更接近存储器地址中五五分的位比的位位置重新映射到混洗的存储器地址中的不同位位置,从而寻址存储器中能够从基于平衡的访问中获益相对更多的那些存储器部分。因此,存储器部分平衡器可以将那些具有更接近五五分的位比的位位置重新映射到那些指定所选存储器部分以加速存储器访问的位。如下文所述,所选存储器部分可以包含高速缓存组、存储体、存储器通道等。
对于高速缓存存储器,此类所选存储器部分可以对应于高速缓存组,而不是高速缓存路或字节偏移位。使用高速缓存存储器,存储器地址位可以包括对应于多个高速缓存组的组位(也称为索引位或组索引位)和对应于每高速缓存组的多路的标签位。如上所述,如果对每个高速缓存组的访问在多个高速缓存组之间是平衡的,则可以增强高速缓存存储器操作。因此,存储器部分平衡器可以将那些位比更接近五五分的位位置重新映射到组位,以加速不同类型代码执行行为的存储器访问。
对于多存储体存储器,可以受益于以平衡的方式被访问的所选存储器部分对应于存储体,而不是存储器行或存储器列。使用联组存储器,存储器地址位可以包括对应于多个存储体的存储体选择位、对应于多行的行选择位和对应于多列的列选择位。如上所述,如果对每个存储体的访问在多个存储体之间是平衡的,则可以增强多存储体存储器的操作。因此,存储器部分平衡器可以将那些位比更接近50%的位位置重新映射到存储体选择位,以加速不同类型代码执行行为的存储器访问。对于具有多个通道的存储器,存储器部分平衡器可以附加地或可替代地将那些位比更接近50%的位位置重新映射到通道选择位,以加速存储器访问。
因此,某些存储器结构的设计方案(诸如高速缓存存储器和多存储体存储器)可以加速存储器访问。加速的存储器访问可以通过减少由相对较快的处理器发出的存储器请求的平均响应时间来提高计算性能。这些结构的有效性部分地取决于对当前在处理器上执行的代码的行为的某些假设。一个此类假设是,代码将以大致相等的量访问存储器的某些存储器部分。然而,如果没有这一行为,存储器访问的预期加速可能会失败,甚至会降低存储器的性能。
为了解决一些存储器结构的这些问题,本文档中描述的设备和技术可以增加在所选存储器部分上产生大致相等的访问的频率或可能性。即使当代码当前没有以自动创建这种平衡行为的方式执行时,也可以实现对存储器部分的这种平衡访问。因此,应用所述原理的硬件可以在软件呈现各种操作行为模式的同时平衡存储器访问。由此产生的存储器访问加速使软件能够更快地运行,从而提供更好的用户体验,提供更多的软件特征和/或更少的性能下降。
用于平衡存储器部分访问的示例性操作环境
图1示出了可以实现平衡存储器部分访问的示例性设备100。设备100可以实现为例如至少一个电子装置。示例性电子装置实施方式包括物联网(IoT)装置100-1、平板装置100-2、智能手机100-3、笔记本计算机100-4、台式计算机100-5、服务器计算机100-6和可以是云计算基础设施或数据中心的部分的服务器集群100-7。其他设备示例包括可佩戴装置,诸如智能手表或智能眼镜;娱乐装置,诸如机顶盒、智能电视或游戏装置;主板或刀片服务器;家用电器;车辆或其电子部件;工业装置等。每种类型的电子装置包括一或多个部件,以提供一些计算功能或特征。
在示例性实施方式中,设备100包括至少一个主机装置102、至少一个处理器104和至少一个高速缓存存储器106。设备100还可以包括至少一个存储器控制器108、至少一个互连110和至少一个存储器112。存储器112可以例如用动态随机存取存储器(DRAM)装置或模块来实现,包括三维(3D)堆叠的DRAM装置(诸如高带宽存储器(HBM)装置或混合存储器立方体(HMC)装置)。附加地或可替换地,存储器112可以用存储类存储器装置来实现,诸如采用3DXPointTM或相变存储器(PCM)的存储器装置。下面参考图1-1描述存储器112的其他示例。如图所示,主机装置102或主机102包括处理器104、高速缓存存储器106-1和存储器控制器108。处理器104耦合到高速缓存存储器106-1,并且高速缓存存储器106-1耦合到存储器控制器108。处理器104还直接或间接地耦合到存储器控制器108。主机装置102经由互连110耦合到高速缓存存储器106-2。高速缓存存储器106-2耦合到存储器112。主机装置102还直接或间接地耦合到存储器112。
设备100的所描绘的部件表示具有分级存储器系统的示例性计算结构。例如,高速缓存存储器106-1逻辑耦合在处理器104和高速缓存存储器106-2之间。进一步地,高速缓存存储器106-2逻辑耦合在处理器104和存储器112之间。这里,高速缓存存储器106-1处于比高速缓存存储器106-2更高级别的分级存储器系统中。类似地,高速缓存存储器106-2处于比存储器112更高级别的分级存储器系统中。所描绘的互连110以及将各种部件(未示出)通信地耦合在一起的其他互连使得数据能够在各种部件之间传输。互连示例包括总线、交换结构、承载电压或电流信号的一或多条导线等。
尽管在图1中描绘了并且在本文中描述了设备100的各种实施方式,但是设备100可以以可替代的方式实现。例如,主机装置102可以包括多个高速缓存存储器,包括多级高速缓存存储器。进一步地,至少一个其他高速缓存存储器和存储器对可以耦合在高速缓存存储器106-2和存储器112的所示示例的“下方”。高速缓存存储器106-2和存储器112可以以各种方式实现。在一些情况下,高速缓存存储器106-2和存储器112都可以设置在主板上或由主板物理支撑,其中存储器112包含“主存储器”。在其他情况下,高速缓存存储器106-2可以包含DRAM,存储器112包含实现为闪存或磁硬盘驱动器的“存储存储器”。尽管如此,部件可以以可替代的方式实现,包括在分布式或共享存储器系统中。进一步地,给定设备100可以包括更多、更少或不同的部件。
图1-1示出了可以实现平衡存储器部分访问并且包括主机装置102和存储器装置122的另一示例性设备101-1。在所示示例中,主机装置102经由互连110耦合到存储器装置122。清楚起见,主机装置102被描绘为包括处理器104、高速缓存存储器106-1和存储器控制器108。然而,主机装置102可以包括更多、更少或不同的部件。
互连110可以包括多条总线,诸如地址总线116和数据总线118。尽管单独示出,但是地址总线116和数据总线118可以共享一或多个电路径。数据总线118可以在主机装置102和存储器装置122之间传播数据。地址总线116可以至少从主机装置102向存储器装置122传送地址。尽管未示出,互连110可以包括命令总线。或者,命令可以经由地址总线116或数据总线118传送。因此,与存储器相关的通信(诸如命令、消息、请求或指令)可以在地址总线116、数据总线118、命令总线(未示出)或其组合上传送。
在示例性实施方式中,存储器装置122包括高速缓存存储器106-2、存储器112和接口114。接口114可以包括用于促进互连110上的通信的电路系统,诸如锁存器、缓冲器、驱动器、接收器和控制逻辑。接口114的控制逻辑可以根据至少一个协议或存储器访问标准来操作。因此,存储器装置122可以经由接口114耦合到互连110。高速缓存存储器106-2可以耦合到接口114,并且存储器112可以直接或通过高速缓存存储器106-2耦合到接口114。存储器112可以被实现为设备的主存储器或主要存储器。可替代地,存储器112可以被实现为设备的后备存储器或辅助存储器。
存储器112可以用作止挡来处理高速缓存存储器106-2不能满足的存储器请求。在一些情况下,高速缓存存储器106-2由静态随机存取存储器(SRAM)形成,并且存储器112由DRAM形成。在其他情况下,高速缓存存储器106-2由DRAM形成,并且存储器112由固态驱动器(SSD)或磁驱动器形成。附加地或可替代地,高速缓存存储器106-1可以由易失性存储器形成,而存储器112由非易失性存储器形成。相对于另一存储器112(未示出)的高速缓存存储器106-2,存储器112还可以用作较低层的高速缓存存储器。进一步地,存储器112可以包括存储类存储器。
在一些实施方式中,主机装置102和存储器装置122在同一集成电路(IC)芯片上实现,诸如在片上系统(SoC)上实现。在其他实施方式中,主机装置102和存储器装置122在单独的集成电路(IC)芯片上或作为单独的集成电路芯片来实现。换句话说,主机装置102可以包括至少一个IC芯片,并且存储器装置122可以包括至少一个其他IC芯片。这些芯片可以在同一封装或模块中,可以在单独的封装或模块中,可以安装在同一印刷电路板(PCB)上,可以设置在单独的PCB上等。在这些多芯片环境的每个中,互连110可以提供主机装置102和存储器装置122之间的芯片间耦合。
互连110可以根据一或多个标准操作,以实现与标准兼容的存储器装置122的通信。示例性标准包括由JEDEC发布的DRAM标准(例如,DDR、DDR2、DDR3、DDR4、DDR5等);堆叠的存储器标准,诸如高带宽存储器(HBM)或混合存储器立方体(HMC);外围部件互连(PCI)标准,诸如外围部件互连高速(PCIe)标准;存储区域网络(SAN)标准;计算机快速链接(CXL)标准;HyperTransportTM标准;InfiniBand标准;和外部串行AT附件(eSATA)标准。除了有线连接之外或作为有线连接的替代,互连110可以是或可以包括无线连接,诸如采用蜂窝、无线局域网(WLAN)、无线个人区域网(WPAN)或无源网络标准协议的连接。存储器装置122可以被实现为通过互连110支撑主机装置102的存储器卡。尽管仅示出了一个存储器装置122,但是给定主机装置102可以使用一或多个互连110耦合到多个存储器装置122。
图1-2总体上以101-2示出了存储器部分平衡器150的示例性“离散”实施方式,其可以包括在不同的单独装置中。存储器部分平衡器150包括本文描述的用于实现平衡存储器部分访问的电路的至少部分。下面参照图2-1至2-3描述了存储器部分平衡器150的示例性实施方式。在图1-2的上部,主机装置102被描绘为具有耦合在处理器104和高速缓存存储器106-1之间的存储器部分平衡器150。在一些情况下,存储器部分平衡器150可以被实现为高速缓存控制器152-1的部分。在主机装置102中,存储器部分平衡器150可以从处理器104接受存储器地址,并且向高速缓存存储器106-1提供混洗的存储器地址,以平衡存储器部分访问。
在图1-2的左下部分,存储器装置122-1包括耦合在接口114和高速缓存存储器106-2之间的存储器部分平衡器150。存储器装置122-1的存储器部分平衡器150可以被实现为高速缓存控制器152-2的部分。在存储器装置122-1中,存储器部分平衡器150可以从接口114接受存储器地址,并且向高速缓存存储器106-2提供混洗的存储器地址。
在图1-2的右下部分,存储器装置122-2包括耦合在接口114和存储器112之间的存储器部分平衡器150。在存储器装置122-2中,存储器部分平衡器150可以从接口114接受存储器地址,并且向存储器112提供混洗的存储器地址。尽管在图1-2中描绘了特定的部件布置,但是装置可以以可替代的方式实现。例如,存储器部分平衡器150可以耦合在高速缓存存储器106-2和存储器装置122的存储器112之间。除了以上参考图1-2描述的“离散”实施方式之外或作为其替代,接下来描述了存储器部分平衡器150的“分布式”实施方式。
图1-3总体上以101-3示出了包括在主机装置102和存储器装置122之间的存储器部分平衡器150的示例性“分布式”实施方式。在这一示例中,存储器部分平衡器150被分成第一存储器部分平衡器部分150-1(或存储器部分平衡器150的第一部分150-1)和第二存储器部分平衡器部分150-2(或存储器部分平衡器150的第二部分150-2)。主机装置102包括第一存储器部分平衡器部分150-1,并且存储器装置122包括第二存储器部分平衡器部分150-2。如图所示,第一存储器部分平衡器部分150-1耦合在存储器控制器108和互连110之间。第二存储器部分平衡器部分150-2耦合在接口114和存储器112之间。在其他方面,高速缓存存储器106-2可以耦合在存储器部分平衡器150的第二部分150-2和存储器112之间。下面参照图2-3描述第一存储器部分平衡器部分150-1和第二存储器部分平衡器部分150-2之间的电路的示例性分配。
在示例性操作中,主机装置102通过互连110向存储器装置122发送至少一个存储器命令154。例如,存储器控制器108或第一存储器部分平衡器部分150-1可以生成存储器命令154,并通过互连110发送存储器命令154。接口114或第二存储器部分平衡器部分150-2经由互连110从主机装置102接收存储器命令154。存储器命令154可以通过地址总线116、数据总线118、命令总线、其组合等传播。存储器命令154可以包括或指示复位重新映射周期指令156。附加地或可替代地,存储器命令154可以包括或指示混洗映射158。下面参照图2-1、2-2和3描述混洗映射158的示例。下面参考图5描述存储器命令154的示例。
用于平衡存储器部分访问的示例性技术和硬件
图2-1总体上以200-1示出了包括多个所选存储器部分204-1……204-M的示例性存储器202和包括存储器地址电路系统206和位计数器阵列212的示例性存储器部分平衡器150。如图所示,存储器202包括第一所选存储器部分204-1、第二所选存储器部分204-2……以及“第M”所选存储器部分204-M,其中“M”表示大于一的正整数。存储器202还包括一或多个其他存储器部分230。
在一些情况下,所选存储器部分204和其他存储器部分230可以表示可寻址存储器部分或对应于存储器地址的一段或部分的部分。因此,多个所选存储器部分204-1……204-M的至少部分可以与其他存储器部分230的至少部分重叠。例如,存储器202的给定字节可以是所选存储器部分204的部分和其他存储器部分230中的一个的部分。在一些情况下,多个所选存储器部分204-1……204-M可以对应于响应于以大致平衡的方式相对于被访问而有助于更高的存储器性能的存储器202的那些部分。例如,在基于高速缓存的分级存储器系统中,多个所选存储器部分204-1……204-M因此可以对应于高速缓存组,并且其他存储器部分230可以对应于高速缓存路。在多存储体存储器系统中,多个所选存储器部分204-1……204-M因此可以对应于存储体,并且其他存储器部分230可以对应于存储器行或存储器列。
在示例性实施方式中,存储器部分平衡器150包括存储器地址电路系统206、至少一个位计数器阵列212、控制逻辑214、至少一个事务计数器216、至少一个间隔寄存器218、至少一个重新映射寄存器220和至少一个混洗电路222。存储器地址电路系统206可以用至少一个存储器地址总线208或至少一个存储器地址寄存器210来实现。给定这一描述,并且如下文所述,存储器地址电路系统206因此还可以基于析取“或”的非排他性解释用至少一个存储器地址总线208和至少一个存储器地址寄存器210来实现存储器地址电路系统206。存储器地址电路系统206从保存存储器地址228的存储器地址寄存器系统210或从传播存储器地址228的存储器地址总线208提供存储器地址228。
如图所示,存储器地址电路系统206耦合到混洗电路222和位计数器阵列212。存储器地址电路系统206可以向混洗电路222和位计数器阵列212提供存储器地址228。位计数器阵列212包括多个位计数器,如图2-2中所示。位计数器阵列212基于参考位值并响应于存储器地址228的多个示例之间的多个位位置的位值随时间累积多个位计数值238-1……238-B。这里,变量“B”可以表示正整数,诸如每个存储器地址228中的位数(例如,32位或64位)。可替代地,变量“B”可以对应于小于每个存储器地址228中的位数的正整数。下面参考图2-2描述位计数器阵列212结合存储器地址电路系统206以产生多个位计数值238-1……238-B的示例性操作。
控制逻辑214耦合到位计数器阵列212、事务计数器216、间隔寄存器218和重新映射寄存器220。事务计数器216在每个重新映射周期中对存储器事务请求244的数量进行计数,重新混洗映射周期指的是同一混洗映射158用于混洗存储器地址的周期。因此,事务计数器216存储事务计数值242,并将事务计数值242提供给控制逻辑214。间隔寄存器218作为定时器操作,以设置每个重新映射周期的长度,该长度可以是可编程的。可以将间隔周期设置得足够短以考虑不同代码段的执行行为的变化,但是足够长以避免执行重新映射的开销(例如,刷新高速缓存)过于频繁。
间隔寄存器218和相关的电路系统可以递减间隔周期,直到间隔周期期满。在间隔周期期满时,间隔寄存器218用触发信号246触发控制逻辑214。可替代地,代替使用定时的间隔周期,间隔可以对应于设定数量的存储器事务,这还可以是可编程的。使用基于事务的间隔,间隔寄存器218可以基于存储器事务的设定数量和当前事务计数值242之间的比较来发出触发信号246。响应于间隔寄存器218对触发信号246的激活,控制逻辑214更新混洗映射158。
在示例性操作中,控制逻辑214基于分别对应于存储器地址228的多个位位置的多个位比来确定混洗映射158。响应于多个位计数值238-1……238-B的相应的位计数值238,针对参考位值(例如,0或1)的出现,计算多个位比的每个相应的位比。每个相应的位比还可以基于事务计数值242或相反参考值(例如,分别为0或1)的位计数值。参考图2-2和3进一步描述使用多个位计数值238-1……238-B确定混洗映射158。控制逻辑214将确定的混洗映射158提供给重新映射寄存器220。
因此,重新映射寄存器220保存混洗映射158。重新映射寄存器220耦合到混洗电路222,并将混洗映射158提供给混洗电路222。混洗电路222从存储器地址电路系统206接收或访问存储器地址228,并从重新映射寄存器220接收或访问混洗映射158。混洗映射158包括将第一或输入存储器地址的每个位位置映射到第二或输出存储器地址的相应的位位置的一或多个指示。混洗电路222因此可以使用混洗映射158将存储器地址228的每个位位置映射到混洗的存储器地址226的相应位位置。
混洗电路222可以将存储器地址228的任意给定输入位位置的数据位耦合到混洗的存储器地址226的指定输出位位置。重新映射寄存器220的混洗映射158指定输入和输出位位置之间的映射。混洗电路222可以使用例如多个多路复用器来实现。在一级实施方式中,对于具有“B”位的存储器地址228(其中“B”代表正整数),可以使用“B”1xB多路复用器。在此类情况下,每个相应的输入位位置经由相应的1xB多路复用器耦合到每个输出位置。在此类基于多路复用器的一级实施方式中,重新映射寄存器220耦合到每个1xB多路复用器的控制输入端。在其他实施方式中,混洗电路222可以用一或多个多路复用器、一或多个开关、多级混洗网络、混洗交换网络、单级或多级互连网络、贝尼斯网络、蝶形网络、具有一或多个级或层的网络、它们的某种组合等来实现。
如本文所述,根据混洗映射158的存储器地址228的混洗使得具有更接近五五分的位值的存储器地址228的那些位位置能够被分配或映射到混洗的存储器地址226的那些位位置,这些位位置对应于或寻址存储器202的多个所选存储器部分204-1……204-M。这些位位置在本文被称为所选存储器部分位224。因此,混洗的存储器地址226包括所选存储器部分位224,其寻址或对应于多个所选存储器部分204-1……204-M。下面参考图3描述使用多个位计数值238-1……238-B来确定混洗映射158的示例性方法,并且接下来参考图2-2描述跟踪多个位计数值238-1……238-B的示例性方法。
图2-2总体上以200-2示出了示例性存储器地址电路系统206和可以跟踪位计数值的示例性位计数器阵列212。存储器地址电路系统206包括第一位位置236-1、第二位位置236-2……以及“第B”位位置236-B。“B”变量表示正整数,其可以等于或小于由存储器地址电路系统206提供的存储器地址228中的位的数量。每个相应的位位置236为存储器地址228提供相应的位值234。更具体地,存储器地址228包括来自第一位位置236-1的第一位值234-1、来自第二位位置236-2的第二位值234-2……来自“第B”位位置236-B的“第B”位值234-B。因此,多个位位置236-1……236-B分别向位计数器阵列212提供多个位值234-1……234-B。随着时间的推移在多个存储器地址228上可以为每个存储器地址228提供这些多个位值234-1……234-B,诸如在每个重新映射周期期间。
在示例性实施方式中,位计数器阵列212可以随着时间的推移跟踪对应于多个存储器地址228上的至少一个位位置236的至少一个位计数值238。为了执行这一跟踪,位计数器阵列212包括多个位计数器232-1……232-B。每个相应的位计数器232累积相应的位计数值238。更具体地,第一位计数器232-1跟踪第一位计数值238-1,第二位计数器232-2跟踪第二位计数值238-2……“第B”位计数器232-B跟踪“第B”位计数值238-B。在操作中,每个相应的位计数器232可以响应于相应的位值234并基于参考位值来递增对应的位计数值238。例如,如果参考位值为“1”,则每当存储器地址228的对应的位位置236的位值234为“1”时,给定的位计数器232递增。
因此,多个位计数值238-1……238-B中的每个位计数值238表示在当前重新映射周期中两个二进制位值中的一个出现了多少次。可以基于事务计数值242(例如,图2-1和3的事务计数值)来计算使用多个位计数值238-1……238-B的多个位比。位比可以用于通过将多个位比进行排序来确定混洗映射158。参考图3描述了这一位比排序和混洗映射确定。然而,首先,接下来描述存储器部分平衡器150的分布式实施方式。
图2-3总体上以200-3示出了分成两个部分150-1和150-2的示例性分布式存储器部分平衡器150。还参考图1-3,存储器部分平衡器150的第一部分150-1可以被包括作为主机装置102的部分,并且存储器部分平衡器150的第二部分150-2可以被包括作为存储器装置122的部分。第一部分150-1包括存储器地址电路系统206、位计数器阵列212、控制逻辑214、事务计数器216和间隔寄存器218。存储器部分平衡器150的第一部分150-1还可以包括用于耦合到互连110的接口248。接口248可以替代地是主机装置102的单独部分。
存储器部分平衡器150的第二部分150-2包括重新映射寄存器220和混洗电路222。经由接口248并通过互连110,第一部分150-1将混洗映射158传输到第二部分150-2的重新映射寄存器220。第一部分150-1还使用接口248和互连110将存储器地址228传输到第二部分150-2的混洗电路222。使用存储在重新映射寄存器220处的接收到的混洗映射158,混洗电路222可以从接收到的存储器地址228产生混洗的存储器地址226。然后,存储器装置122使用混洗的存储器地址226来访问存储器202。
图3示出了分析从多个存储器地址228上的位位置236(例如,图2-2)随时间跟踪的位计数值238以确定多个位比302的示例性方法300。在示例性实施方式中,为位比302提出位值关系304。图示的位比302是基于相应的位计数值238和事务计数值242。例如,对于给定的位位置236,可以通过将对应的位计数值238除以事务计数值242来计算位比302。更一般地,对于多个位位置236-1……236-B的相应位位置236,可以通过将多个位计数值238-1……238-B的相应的位计数值238除以事务计数值242来计算多个位比302-1……302-B的对应的相应的位比302。然后相对于参考位比对多个位比302进行排序,如图表310所示。
图表310包括对应于距0.5参考位比的距离的横坐标轴308(“x”轴)和对应于每个相应的位位置236的计算位比302的纵坐标轴306(“y”轴)。纵坐标轴306从0延伸到1.00,指示器被明确地描绘为0.25、0.50和0.75。横轴308包括“B”位比302-1……302-B的“B”条目。明确示出了第一位比302-1、第二位比302-2……“第M”位比302-M、第(M+1)位比302-(M+1)、第(M+2)位比302(M+2)……和“第B”位比302-B。
在由图表310表示的示例中,基于相应的位计数值238和事务计数值242来计算位比302,如示例位值关系304所示。这里,位比302因此表示参考位值出现在那些总存储器事务上的总示例的百分比。为了集中在“0”和“1”这两个二进制值之间提供五五分,从而平衡两个或更多个存储器部分之间的存储器访问,在这种情况下,参考位比是0.5。位比302-1……302-B因此通过接近0.5来排序。换句话说,将相对更接近0.5的那些位比302排序在一起。在图表310中,这些排序较高的位比302被描绘为更靠近左边的纵坐标轴306。应当理解,至少在这种情况下,第一位比302-1和第二位比302-2不一定对应于(图2-2的)第一位置236-1和第二位位置236-2,除非这两个位位置恰好具有在给定重新映射周期内最接近五五分的位值234。
(图2-1的)多个所选存储器部分204-1……204-M由所选存储器部分位224寻址,并与之对应,该所选存储器部分位也在图表310中示出。如图表310中所示,其他存储器部分230(也是图2-1的)由其他存储器部分位312寻址,并与之对应。线314提供两个位子组之间的分界。在多个所选存储器部分204-1……204-M的“M”个存储器部分的情况下,存在分配给所选存储器部分位224的“M”个位比302-1……302-M。可以有多达“B-M”个位被分配给其他存储器部分位312。
多个位比302-1……302-B中的每个相应的位比302表示或对应于每个存储器地址228的多个位位置236-1……236-B中的相应的位位置236(尽管不一定以如上所述的相同顺序)。因此,多位比302-1……302-B的排序同样对多个位位置236-1……236-B进行排序,以便分配给存储器地址位位置的重新映射。换句话说,对多个位比302进行排序是为了产生每个存储器地址228的多个位位置236的对应的位位置的排序。在高速缓存存储器实施方式中,排序较高的、所选存储器地址位位置可以对应于高速缓存存储器的高速缓存组。在多存储体存储器实施方式中,排序较高的、所选存储器地址位位置可以对应于多存储体存储器的存储体。
在上述描绘的示例性方法300中,基于事务计数值242和每个存储器地址228的多个位位置236-1……236-B的相应的位位置236的相应的位计数值238,计算多个位比302-1……302-B的每个相应的位比302。通常,多个位比302-1……302-B的每个相应的位比302基于参考位值(例如,1或0)随时间在多个存储器地址228上的出现的相对数量与在每个存储器地址228的多个位位置236-1……236-B的每个相应的位位置236处的相反参考位值(例如,分别为0或1)的比较。因此,代替基于事务计数值242来计算,二进制位值出现的相对数量可以使用可替代的方法来计算。
在示例性可替代的方法中,基于对应于参考位值的位计数值238和对应于相对位值的另一位计数值来计算每个位比302。因此,每个相应的位比302可以通过将参考位值(例如“1”)的相应的位计数值238除以相对位值(例如“0”)的另一位计数值(未示出)来计算。在这种情况下,实现平衡存储器访问的二进制值的五五分由1:1或1.0位比表示,并与之对应。利用这一可替代的方法,基于接近度对位比进行排序的参考位比因此是1.0。换句话说,最接近1.0的那些位比302-1……302-M可以被分配给线314的左边的所选存储器部分位224。每个相应的位比302的相应的其他位计数值可以通过在每个相应的位位置236的位计数器阵列中包括相应的第二位计数器或者通过从事务计数值242中减去相应的位计数值238来获得。
图4-1示出了在具有高速缓存存储器202a的分级存储器结构中的平衡存储器部分访问的示例性实施方式400-1,其中多个所选存储器部分实现为多个高速缓存组204a-1……204a-M。更具体地,高速缓存存储器202a包括第一高速缓存组204a-1、第二高速缓存组204a-2……“第M”高速缓存组204a-M。高速缓存存储器202a还包括多个高速缓存路,包括用于双路组相联高速缓存存储器示例的第一高速缓存路404-1和第二高速缓存路404-2。然而,高速缓存存储器202a可以具有不同数量的高速缓存路。
如这一示例所示,每个高速缓存组204包括两条高速缓存线,每个高速缓存路404一条高速缓存线。每条高速缓存线包括数据和保存对应的高速缓存数据的标签位的相关联的标签。每条高速缓存线还可以包括一或多个状态或标志位,诸如有效位(V)或修改位(D)。高速缓存存储器202a还包括或与每个高速缓存路404的比较器402相关联,以确定索引高速缓存组204的对应的高速缓存路404中的命中或未命中(对于命中/未命中信号)。
还参考图2-1,对于这一示例性高速缓存存储器实施方式400-1,存储器202对应于高速缓存存储器202a。多个所选存储器部分204-1……204-M对应于多个高速缓存组204a-1……204a-M。因此,混洗的存储器地址226a的(图2-1和3)的所选存储器部分位224对应于组位224a(或组索引位224a)。其他存储器部分230可以对应于多个高速缓存路404-1和404-2。因此,(图3的)其他存储器部分位312可以对应于标签位312a。尽管未示出,但是其他存储器部分位312也可以对应于附加的存储器地址位,诸如字节偏移位。不需要在图2-2的位计数器中跟踪字节偏移位。因此,如本文所述,结合高速缓存存储器202a实现存储器部分平衡器150可以平衡多个高速缓存组204a-1……204a-M上的存储器访问,以通过促进更大百分比的高速缓存组的使用来加速对高速缓存存储器202a的访问。
图4-2示出了在具有多存储体存储器202b的联组存储器结构中的平衡存储器部分访问的示例性实施方式400-2,其中多个所选存储器部分实现为多个存储体204b-1……204b-M。更具体地,多存储体存储器202b包括第一存储体204b-1、第二存储体204b-2……以及“第M”存储体204b-M。尽管未明确示出,多存储体存储器202b还可以在存储器阵列中包括多行和多列。多存储体存储器202b可以例如包含计算装置的主要存储器或辅助存储器的至少部分。
还参考图2-1,对于这一示例性联组存储器实施方式400-2,存储器202对应于多存储体存储器202b。多个所选存储器部分204-1……204-M对应于多个存储体204b-1……204b-M。因此,混洗的存储器地址226b的(图2-1和3的)所选存储器部分位224对应于存储体选择位224b。其他存储器部分230可以对应于给定存储体中的行或列,或者在两个或多个存储体上延伸的行或列。因此,(图3的)其他存储器部分位312可以对应于行选择位312b-1或列选择位312b-2。尽管未示出,但是其他存储器部分位312也可以对应于附加的存储器地址位,诸如通道选择位。可替代地,通道选择位可以被合并到所选存储器部分位224中(例如,替换或加入存储体选择位224b),以平衡对存储器的多个通道的访问。因此,如本文所述,结合多存储体存储器202b实现存储器部分平衡器150可以平衡多个存储体204b-1……204b-M上的存储器访问,以通过促进存储体的并行访问来加速对多存储体存储器202b的访问。
用于平衡存储器部分访问的示例性方法
参考图5的流程图和6的流程图解,在本节中描述示例性方法。这些描述仅作为示例参考了图1至4-2中描绘的部件、实体和其他方面。图5示出了示例性流程图500,其描绘了由包括存储器部分平衡器150的设备执行的操作,该设备使用多个位比来确定用于混洗存储器地址的混洗映射。流程图500包括十三个框502至524。在502,在间隔寄存器218启动间隔定时器。在504,存储器部分平衡器150确定是否已经例如从处理器或主机请求了新的存储器事务。如果否,流程图在514继续,如下所述。
另一方面,如果在504确定已经请求了新的存储器事务,则在506,在事务计数器216处递增事务计数值242,例如,响应于存储器事务请求244。在508,从存储器地址电路系统206获得存储器地址228。在510,存储器部分平衡器150基于存储器地址228更新位计数器阵列212。在510-1,相应的位计数器232可以响应于出现在存储器地址228的对应的相应的位位置236处的参考位值而递增。相应的位计数器232的递增使得相应的位计数值238能够被跟踪,如上面参考图2-2所述。
在512,混洗电路222使用由重新映射寄存器220保存的混洗映射158来混洗存储器地址228的位,以产生混洗的存储器地址226。存储器部分平衡器150向存储器202提供混洗的存储器地址226,以使存储器事务请求244能够通过执行存储器事务来处理。在514,存储器部分平衡器150确定间隔寄存器218的间隔定时器是否已经期满。如果不是,则过程返回到504,以确定是否已经发出了新的存储器事务请求。如果间隔定时器已经期满,则过程在516继续,以准备新的重新映射周期。
在516,控制逻辑214基于相应的位计数值238为每个存储器地址位位置236计算相应的位比302。计算还可以基于事务计数值242。在518,控制逻辑214基于与参考位比的接近度对多个位比302-1……302-B进行排序。参考位比可以对应于例如0.5或1.0,这取决于如何计算每个位比,如上面参考图3所述。排序可以识别那些位比,并且因此识别那些在同时执行的代码下当前具有更平衡的分布(例如,大约五五分的位值)的位位置。
在520,控制逻辑214基于对应的位比302-1……302-B的排序来分配至少一些存储器地址位位置236-1……236-B,如上面参考图3所述。还可以基于多个所选存储器部分204-1……204-M的数量“M”(例如,用“M”指示多少地址位是相关的)和寻址存储器202的这些所选存储器部分的位位置将输入存储器地址228的存储器地址位位置236-1……236-B分配给输出混洗的存储器地址226的位位置。因此,可以将指示给定位位置具有0和1的平衡的分布的那些位比分配给那些位位置,即那些位可以使得多个所选存储器部分204-1……204-M能够以基本上平衡的方式被访问的位置,至少相对于存储器202的其他存储器部分230。使用这一分析和这些因素,控制逻辑214可以在522基于从多个位比302-1……302-B的排序中导出的存储器地址位分配来确定更新的混洗映射158。
在激活更新的混洗映射158之前(例如,在将混洗映射158存储在重新映射寄存器220中之前或者至少在混洗电路222使用更新的混洗映射158之前),存储器202可以执行一或多个动作来为下一个重新映射周期做准备或者复位。通常,存储器202可以在用不同的混洗映射158开始新的重新映射周期之前清除现有存储器请求的积压或队列。
例如,对于高速缓存存储器202a的实施方式,接收复位重新映射周期指令156可以触发一或多个以下示例动作的执行。首先,高速缓存存储器202a暂停并完成任意未决的高速缓存请求。其次,刷新高速缓存,并且每条线都无效。第三,用更新的混洗映射158将重新映射寄存器220重新编程,这可以将主机物理地址位位置提供到被路由到高速缓存设置位和高速缓存标签位的那些地址位位置的新映射。第四,存储器部分平衡器150可以复位事务计数器216(例如,复位为零),可以复位间隔寄存器218(例如,复位为当前编程的定时器周期),并且可以复位多个位计数器232-1……232-B(例如,复位为零)。
这些重新映射周期复位操作可以在514的肯定确定之后的任意时间开始,并且相关联的动作可以在开始524的操作之前完成。如524所示,由混洗电路222对存储器地址位进行的混洗可以从在下一个间隔周期期间具有更新的混洗映射158的更新的重新映射寄存器220开始。
图6用流程图解600示出了设备实现平衡存储器部分访问的示例性方法。流程图解600包括四个框602至608。在示例性实施方式中,设备100的至少部分可以执行流程图解600的操作。
在框602,在多个存储器地址上跟踪多个位位置的位计数值。例如,存储器部分平衡器150可以在多个存储器地址228上跟踪多个位位置236-1……236-B的位计数值238-1……238-B。例如,位计数器阵列212的相应的位计数器232-1……232-B可以响应于在相应的位位置236-1……236-B的每个处存在的参考位值而递增,使得位计数器阵列212正在对给定位值(例如,“1”)在每个存储器位地址处的出现进行计数。因此,位计数值238可以随时间在多个存储器地址228之间累积。
在框604,基于跟踪确定混洗映射。例如,存储器部分平衡器150可以基于跟踪来确定混洗映射158。为此,控制逻辑214可以基于与参考位比(诸如0.5或1.0)的接近度,对对应于位计数值238的位比302进行排序。可以将相对更接近参考位比的那些位比302分配给那些对以平衡方式访问相对更敏感的所选存储器部分204寻址的存储器地址位位置。通过使用跟踪和排序来分配存储器地址位位置,相较于其他存储器部分230(例如,更不平衡),由那些被分配的存储器地址位位置寻址的所选存储器部分204可以相对于彼此以更相等的百分比(例如,更平衡)被访问。
在框606,使用混洗映射来混洗存储器地址以产生混洗的存储器地址。例如,存储器部分平衡器150可以使用混洗映射158混洗存储器地址228以产生混洗的存储器地址226。在一些情况下,可以基于混洗映射158中的一或多个映射指示,将存储器地址228的输入位位置236处的位值234映射到混洗的存储器地址226的不同输出位位置。
在框608,使用混洗的存储器地址来访问存储器。例如,主机装置102或存储器装置122可以使用混洗的存储器地址226来访问存储器202。这可能需要例如将混洗的存储器地址226的至少所选存储器部分位224应用于高速缓存存储器202a或多存储体存储器202b的所选存储器部分204。存储器访问可以包括在“分布式”存储器部分平衡器实施方式中通过互连110传输混洗映射158和存储器地址228,或者在“离散”存储器部分平衡器实施方式中通过互连110传输混洗的存储器地址226。
对于上面描述的流程图和流程图解,显示和/或描述操作的顺序不旨在解释为限制。可以以任意顺序组合或重新排列任意数量或组合的所述过程操作,以实现给定方法或可替代的方法。还可以从所描述的方法中省略或添加操作。进一步地,所描述的操作可以以完全或部分重叠的方式实现。
这些方法的方面可以在例如硬件(例如,固定逻辑电路或与存储器结合的处理器)、固件或其某种组合中实现。方法可以使用图1至4-2中所示的一或多个设备或部件来实现,其部件可以被进一步划分、组合、重新排列等。这些图中的装置和部件通常表示硬件,诸如电子装置、封装模块、IC芯片或电路;固件或其动作;软件;或其组合。参考图1-1至1-3,在一些情况下,主机装置102或存储器装置122可以单独执行这些方法的操作。在其他情况下,主机装置102和存储器装置122可以共同执行操作。图2-1至2-3示出了可以执行这些操作中的至少一些操作的存储器部分平衡器150的示例性电路系统。图3示出了可用于确定混洗映射158的位计数值分析的示例性方法。图4-1和4-2分别示出了两种示例性存储器实施方式:高速缓存存储器实施方式和多存储体存储器实施方式。因此,这些图说明了能够实现所述方法的许多可能的系统或设备中的一些。
除非上下文另有规定,否则本文使用的单词“或”可以被认为是使用了“包含性的或”,或允许包含或应用由单词“或”连接的一或多个项目的术语(例如,短语“A或B”可以被解释为仅允许“A”,仅允许“B”,或同时允许“A”和“B”)。此外,如本文所使用的,涉及项目列表中的“至少一个”的短语是指那些项目的任意组合,包括单个成员。例如,“a、b或c中的至少一个”可以涵盖a、b、c、a-b、a-c、b-c和a-b-c,以及相同元件的多个的任意组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c和c-c-c,或a、b和c的任意其他顺序)。进一步地,在附图中表示的项目和本文讨论的术语可以指示一或多个项目或术语,因此在本书面描述中可以互换地引用单个或多个形式的项目和术语。
结论
尽管已经用特定于某些特征和/或方法的语言描述了用于平衡存储器部分访问的实施方式,但是所附权利要求的主题不一定限于所描述的特定特征或方法。相反,特定特征和方法被公开为用于平衡存储器部分访问的示例性实施方式。
Claims (21)
1.一种设备,其包含:
存储器地址电路系统,所述存储器地址电路系统配置为提供多个存储器地址;
位计数器阵列,所述位计数器阵列耦合到所述存储器地址电路系统,所述位计数器阵列配置为跟踪对应于所述多个存储器地址上的至少一个位位置的至少一个位计数值;
控制逻辑,所述控制逻辑耦合到所述位计数器阵列,所述控制逻辑配置为基于所述至少一个位计数值来确定混洗映射;以及
混洗电路,所述混洗电路耦合到所述存储器地址电路系统和所述控制逻辑,所述混洗电路配置为使用所述混洗映射来混洗存储器地址以产生混洗的存储器地址。
2.根据权利要求1所述的设备,其中所述控制逻辑配置为确定所述混洗映射,以基本平衡对存储器的所选存储器部分的访问。
3.根据权利要求2所述的设备,其中所述控制逻辑配置为通过将具有随时间平衡的位值的所述多个存储器地址的位位置分配给对应于所述存储器的所选存储器部分的所述混洗的存储器地址的位位置来确定所述混洗映射。
4.根据权利要求1所述的设备,进一步包含:
存储器;和
存储器部分平衡器,所述存储器部分平衡器耦合到所述存储器;所述存储器部分平衡器至少包括所述位计数器阵列、所述控制逻辑和所述混洗电路;所述存储器部分平衡器配置为产生所述混洗的存储器地址以访问所述存储器,
其中所述存储器部分平衡器是以下中的至少一个:
包括作为主机装置的部分;
包括作为存储器装置的部分;或者
分布在所述主机装置和所述存储器装置之间。
5.根据权利要求1所述的设备,进一步包含:
高速缓存存储器,所述高速缓存存储器包括多个高速缓存组,
其中所述控制逻辑配置为基于对应于所述多个存储器地址上的多个位位置的多个位计数值和对应于所述多个高速缓存组的存储器地址位位置来确定所述混洗映射。
6.根据权利要求1所述的设备,进一步包含:
多存储体存储器,所述多存储体存储器包括多个存储体,
其中所述控制逻辑配置为基于对应于所述多个存储器地址上的多个位位置的多个位计数值和对应于所述多个存储体的存储器地址位位置来确定所述混洗映射。
7.根据权利要求1所述的设备,其中:
所述位计数器阵列包括多个位计数器,每个相应的位计数器配置为响应于在每个存储器地址的多个位位置的相应位位置处出现在所述多个存储器地址上的参考位值递增相应的位计数值;并且
所述控制逻辑配置为基于多个位比来确定所述混洗映射,每个相应的位比基于所述位计数器阵列的所述多个位计数器的所述相应的位计数器的所述相应的位计数值。
8.根据权利要求7所述的设备,其中所述控制逻辑配置为:
对所述多个位比进行排序,以产生每个存储器地址的所述多个位位置的对应的位位置的排序;并且
基于所述对应的位位置的所述排序来确定所述混洗映射。
9.根据权利要求8所述的设备,其中所述控制逻辑配置为对所述多个位比中的每个相应的位比进行排序,以基于与参考位比的相应的接近度来产生所述对应的位位置的所述排序。
10.根据权利要求8所述的设备,其中所述多个位比的每个相应的位比基于所述参考位值在所述多个存储器地址上的出现的相对数量与在每个存储器地址的所述多个位位置的每个相应的位位置处的相对位值的比较。
11.根据权利要求8所述的设备,进一步包含:
重新映射寄存器,所述重新映射寄存器耦合在所述控制逻辑和所述混洗电路之间,所述重新映射寄存器配置为保存所述混洗映射;和
事务计数器,所述事务计数器耦合到所述控制逻辑,所述事务计数器配置为响应于每个存储器事务递增事务计数值,
其中所述控制逻辑配置为基于所述事务计数值和每个存储器地址的所述多个位位置的所述相应的位位置的所述相应的位计数值来计算所述多个位比中的每个相应的位比。
12.一种方法,其包含:
在多个存储器地址上跟踪多个位位置的位计数值;
基于所述跟踪确定混洗映射;
使用所述混洗映射来混洗存储器地址以产生混洗的存储器地址;以及
使用所述混洗的存储器地址访问存储器。
13.根据权利要求12所述的方法,进一步包含:
对所述多个存储器地址上的所述多个位位置的每个位位置处的参考位值的出现进行计数;以及
基于所述计数确定所述混洗映射。
14.根据权利要求13所述的方法,进一步包含:
基于针对所述相应的位位置在所述多个存储器地址上累积的相应的位计数值,计算对应于所述多个位位置的每个相应的位位置的相应的位比;以及
基于对应于所述多个位位置的每个相应的位位置的所述相应的位比来确定所述混洗映射。
15.根据权利要求14所述的方法,进一步包含:
基于所述相应的位计数值和事务计数值,计算对应于所述多个位位置中的每个相应的位位置的所述相应的位比。
16.根据权利要求14所述的方法,进一步包含:
基于所述相应的位比与参考位比的接近度,对对应于所述多个位位置的每个相应的位位置的每个相应的位比进行排序;以及
基于所述排序确定所述混洗映射。
17.根据权利要求14所述的方法,进一步包含:
通过基于以下分配存储器地址位位置来确定所述混洗映射:
每个相应的位比的所述排序,
多个存储器地址位位置对应于多个所选存储器部分,以及
对应于所述多个所选存储器部分的所述多个存储器地址位位置的数量。
18.根据权利要求12所述的方法,进一步包含:
从主机装置向存储器装置传输包括所述混洗映射的至少一个存储器命令。
19.一种设备,其包含:
存储器地址电路系统,所述存储器地址电路系统配置为提供多个存储器地址;
位计数器阵列,所述位计数器阵列耦合到所述存储器地址电路系统,所述位计数器阵列配置为随着时间跟踪分别对应于所述多个存储器地址上的多个位位置的多个位计数值;
控制逻辑,所述控制逻辑耦合到所述位计数器阵列,所述控制逻辑配置为基于所述多个位计数值来确定混洗映射;以及
接口,所述接口耦合到所述控制逻辑,所述接口配置为通过互连将存储器命令传输到存储器装置,所述存储器命令包含所述混洗映射并指示所述存储器装置响应于存储器地址使用所述混洗映射来产生混洗的存储器地址。
20.根据权利要求19所述的设备,进一步包含:
所述互连;
主机装置,所述主机装置包括所述存储器地址电路系统、所述位计数器阵列、所述控制逻辑和所述接口,所述接口耦合到所述互连;以及
所述存储器装置,所述存储器装置耦合到所述互连并且包括存储器、耦合到所述互连的重新映射寄存器以及耦合到所述重新映射寄存器的混洗电路,其中:
所述重新映射寄存器配置为保存所述混洗映射;
所述混洗电路配置为使用所述混洗映射来混洗所述存储器地址以产生所述混洗的存储器地址;并且
所述存储器装置配置为基于所述混洗的存储器地址来访问所述存储器。
21.根据权利要求19所述的设备,其中所述存储器命令包含复位重新映射周期指令,并且指示所述存储器装置将复位重新映射周期以准备使用更新的混洗映射。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/070,774 | 2020-10-14 | ||
US17/070,774 US11442854B2 (en) | 2020-10-14 | 2020-10-14 | Balancing memory-portion accesses |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356800A true CN114356800A (zh) | 2022-04-15 |
Family
ID=81079042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111019676.1A Pending CN114356800A (zh) | 2020-10-14 | 2021-09-01 | 平衡存储器部分访问 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11442854B2 (zh) |
CN (1) | CN114356800A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442854B2 (en) | 2020-10-14 | 2022-09-13 | Micron Technology, Inc. | Balancing memory-portion accesses |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6006345A (en) * | 1997-05-09 | 1999-12-21 | International Business Machines Corporation | Pattern generator for memory burn-in and test |
JP2009093709A (ja) * | 2007-10-04 | 2009-04-30 | Nec Electronics Corp | 半導体集積回路及びテスト方法 |
US8521962B2 (en) * | 2009-09-01 | 2013-08-27 | Qualcomm Incorporated | Managing counter saturation in a filter |
US10394523B2 (en) * | 2015-10-14 | 2019-08-27 | Avanseus Holdings Pte. Ltd. | Method and system for extracting rule specific data from a computer word |
US10706147B1 (en) * | 2017-05-19 | 2020-07-07 | Amazon Technologies, Inc. | Mitigating side-channel attacks via shared cache |
US11442854B2 (en) | 2020-10-14 | 2022-09-13 | Micron Technology, Inc. | Balancing memory-portion accesses |
-
2020
- 2020-10-14 US US17/070,774 patent/US11442854B2/en active Active
-
2021
- 2021-09-01 CN CN202111019676.1A patent/CN114356800A/zh active Pending
-
2022
- 2022-09-12 US US17/931,541 patent/US11797439B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11442854B2 (en) | 2022-09-13 |
US20230031680A1 (en) | 2023-02-02 |
US20220114093A1 (en) | 2022-04-14 |
US11797439B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10067872B2 (en) | Memory speculation for multiple memories | |
US12086446B2 (en) | Memory and storage pool interfaces | |
CN100422959C (zh) | 用于交错存储器的系统和方法 | |
US9734070B2 (en) | System and method for a shared cache with adaptive partitioning | |
EP3729280B1 (en) | Dynamic per-bank and all-bank refresh | |
CN103218208A (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
US10152434B2 (en) | Efficient arbitration for memory accesses | |
US10079916B2 (en) | Register files for I/O packet compression | |
CN103197953A (zh) | 推测执行和回滚 | |
US9595075B2 (en) | Load/store operations in texture hardware | |
CN104102761B (zh) | 数据处理系统中数据处理的方法和集成电路 | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
US9063794B2 (en) | Multi-threaded processor context switching with multi-level cache | |
CN114356800A (zh) | 平衡存储器部分访问 | |
US20220075655A1 (en) | Efficient accelerator offload in multi-accelerator framework | |
US10235299B2 (en) | Method and device for processing data | |
US20210117327A1 (en) | Memory-side transaction context memory interface systems and methods | |
CN107025179B (zh) | 存储器设备及方法 | |
KR102422654B1 (ko) | 프로세서 측 트랜잭션 콘텍스트 메모리 인터페이스 시스템 및 방법 | |
CN108701093A (zh) | 使用动态随机存取存储器(dram)高速缓存指示符高速缓存存储器以提供可扩展dram高速缓存管理 | |
US20210173796A1 (en) | Memory request priority assignment techniques for parallel processors | |
Tao et al. | Runahead Cache Misses Using Bloom Filter |
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 |