CN109478165B - 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器 - Google Patents
一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器 Download PDFInfo
- Publication number
- CN109478165B CN109478165B CN201780044628.3A CN201780044628A CN109478165B CN 109478165 B CN109478165 B CN 109478165B CN 201780044628 A CN201780044628 A CN 201780044628A CN 109478165 B CN109478165 B CN 109478165B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- region
- performance characteristic
- transfer policy
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 113
- 238000012546 transfer Methods 0.000 title claims abstract description 103
- 238000000034 method Methods 0.000 title claims description 25
- 230000004044 response Effects 0.000 claims abstract description 30
- 238000013508 migration Methods 0.000 claims description 13
- 230000005012 migration Effects 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 7
- 230000007704 transition Effects 0.000 claims 3
- 238000012545 processing Methods 0.000 description 17
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
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)
Abstract
处理器[101]基于缓存[110]的不同测试区[115、116]的存取度量而将转移策略[111、112]应用于所述缓存的部分[118],其中每个测试区针对响应于预取请求而存储但不是需求请求的标的的缓存条目中的数据应用不同的转移策略。一个测试区应用一种转移策略,在所述转移策略下,未使用的预取在从所述缓存的所述测试区逐出之后被转移到缓存分层结构中的较高层级缓存。另一测试区应用一种转移策略,在所述转移策略下,未使用的预取在从所述缓存的所述测试区逐出之后被取代而不是被转移到较高层级缓存(或者被转移到所述较高层级缓存但被存储为无效数据)。
Description
背景技术
相关技术的描述
为了提高存储器存取效率,许多处理器采用存储器分层结构,借此,处理器包括一个或多个缓存来存储在主存储器中所存储的数据子集。将来自主存储器的数据子集存储在所述缓存中的准则可以依据处理器设计而变化,但通常优先处理对最近存取的数据的高速缓存。另外,一些处理器采用一个或多个预取器,所述一个或多个预取器预测处理器在不久的将来可能要存取的数据,并且将所述数据从主存储器拷贝到一个或多个缓存。为了将新的数据移动到一个或多个缓存中,处理器基于指定的取代方案来选择用于逐出的先前存储的数据,但常规的取代方案可能会导致不合意低的存储器存取效率。
附图说明
通过参考附图,可以更好地理解本公开,并且使其众多特征和优势对于本领域技术人员显而易见。在不同图式中使用相同的参考符号会指示类似或等同的项目。
图1是根据一些实施方案的基于缓存的不同测试区的存取度量而将转移策略应用于所述缓存的一部分的处理系统的框图。
图2是根据一些实施方案的在缓存的不同测试区中采用不同的转移策略的图1的处理系统的示例。
图3是根据一些实施方案的在缓存的不同测试区中采用不同的转移策略的图1的处理系统的示例。
图4是说明根据一些实施方案的基于缓存的测试区的存取度量而在缓存的非测试区处改变转移策略的图1的处理系统的示例的图。
图5是根据一些实施方案的基于缓存的不同测试区的存取度量而将转移策略应用于所述缓存的一部分的方法的流程图。
具体实施方式
图1至图5说明用于基于缓存的不同测试区的存取度量而将转移策略应用于所述缓存的一部分的技术,其中每个测试区针对响应于预取请求而存储但不是需求请求的标的的缓存条目中的数据(称为“未使用的预取”或“未使用的预取数据”)应用不同的转移策略。一个测试区应用一种转移策略,在所述转移策略下,未使用的预取在从缓存的测试区逐出之后被转移到缓存分层结构中的较高层级缓存。另一测试区应用一种转移策略,在所述转移策略下,未使用的预取在从缓存的测试区逐出之后被取代而不是被转移到较高层级缓存(或者被转移到所述较高层级缓存但被存储为无效数据)。通过基于不同测试区的存取度量来选择用于缓存的非测试部分的缓存转移策略,所述缓存针对当前在处理器处执行的指令的模式而将转移策略改变为更有效的策略。
为了经由示例进行说明,在一些实施方案中,缓存具有两个测试区和一非测试区,借此,缓存响应于来自处理器的需求请求并且响应于来自预取器的预取请求而采用所有所述区来存储数据。所述缓存针对不同的测试区采用不同的转移策略,使得对于所述测试区中的一者,所述缓存将存储未使用的预取的被逐出的缓存条目转移到较高层级缓存。对于另一测试区,所述缓存取代存储未使用的预取的被逐出的缓存条目而不是将数据转移到较高层级缓存,或者将所述数据转移到所述较高层级缓存但将所述数据存储为无效数据。处理器监测测试区中的每一者的存取度量,例如缓存命中率、缓存不命中率,或其组合。基于所述存取度量,处理器选择用于所述测试区中的一者的转移策略并且将所述转移策略应用于缓存的非测试区。举例来说,如果测试区中的一者的缓存命中率较高,那么处理器将用于那个测试区的转移策略应用于所述缓存的非测试区,从而提高缓存总命中率。
如本文所使用,术语“转移策略”是指存储在缓存条目中的数据在从缓存逐出之后如何对其进行处置。转移策略可能要求所有未使用的预取在从缓存逐出之后转移到较高层级缓存并且在所述较高层级缓存处存储为有效数据。另一转移策略规定所有未使用的预取在从缓存逐出之后进行丢弃。在一些实施方案中,通过在缓存处取代预取数据来丢弃所述数据,而不将所述数据转移到较高层级缓存。在一些其他实施方案中,通过将预取数据提供到较高层级缓存但使用指示所述数据无效的指示符将所述数据存储在所述较高层级缓存处来丢弃所述数据,使得可以在较高层级缓存处的缓存条目取代期间通过有效的传入数据来取代所述数据。
图1说明根据一些实施方案的基于缓存的不同测试区的存取度量而将用于未使用的预取的缓存转移策略应用于缓存的一部分的处理系统100。处理系统100一般被配置成执行以计算机程序的形式组织的多组指令,以便代表电子装置实行任务。因此,处理系统100可以在多种电子装置中的任一者中使用,例如桌上型计算机或膝上型计算机、服务器、智能电话、平板计算机、游戏控制台等。
为了促进指令的执行,处理系统100包括处理器101和存储器130。处理器101包括处理器核心102、缓存控制器105、L2缓存110和L3缓存120。在一些实施方案中,处理器101的模块中的每一者形成于同一半导体裸片上以形成处理器核心102的至少一部分,并且存储器130形成于不同的半导体裸片上并且经由一条或多条总线或信号线而连接到处理器101。在一些实施方案中,存储器130的至少一部分作为处理器101的模块而形成于同一半导体裸片上。
L2缓存110、L3缓存120和存储器130各自是一般被配置成存储数据的存储器装置,并且因此可以是随机存取存储器(RAM)存储器模块、非易失性存储器装置(例如,快闪存储器)等。如本文进一步描述,L2缓存110、L3缓存120和存储器130形成用于处理系统100的存储器分层结构。另外,处理系统100的存储器分层结构可以包括其他存储器模块,例如在图1处未说明的额外的缓存。
处理器核心102包括指令管线,所述指令管线具有(例如)用于获取指令的获取级、用于将每个获取的指令解码为一个或多个操作的解码级、用于执行所述操作的执行级,以及用于撤回其操作已经完成执行的指令的撤回级。基于所述指令而产生的一组操作在本文被称作存储器存取指令,并且是从处理系统100的存储器分层结构加载数据(加载操作)的请求以及将数据存储在处理系统100的存储器分层结构处的请求。由处理器核心102产生的存储器存取请求表示加载或存储正在使用或者已知执行程序将需要的数据的请求,并且在本文被称作需求请求。
缓存控制器105是一般被配置成通过在L2缓存110、L3缓存120与存储器130之间移动数据来管理处理系统100的存储器分层结构的模块。具体来说,L2缓存110和L3缓存120是存储器装置,其中的每一者包括多个条目,借此,每个条目与存储器130的一个或多个地址相关联。响应于存储器存取请求,缓存控制器105检视存储在L2缓存110的一个或多个条目处的数据,以确定所述条目中的任一者是否存储与存储器存取请求指向的存储器地址相关联的数据。如果是,那么缓存控制器105指示缓存命中,并且通过将数据存储在所述条目处(在存储操作的情况下)或者将所述所识别的条目处的数据提供到处理器核心102(在加载操作的情况下)来满足所述所识别的条目处的存储器存取请求。
如果与所述存储器地址相关联的数据未存储在L2缓存110的条目处,那么缓存控制器105指示缓存未命中并且向L3缓存120发出请求。响应于所述存储器存取请求,缓存控制器105(或者在一些实施方案中,单独的缓存控制器)检视存储在L3缓存120的一个或多个条目处的数据,以确定所述条目中的任一者是否存储与所述存储器存取请求指向的存储器地址相关联的数据。如果是,那么缓存控制器105指示缓存命中,并且通过将数据存储在所述条目处(在存储操作的情况下)或者将所述所识别的条目处的数据提供到L2缓存110(随后从所述缓存提供到处理器核心102)(在加载操作的情况下)来满足所述所识别的条目处的存储器存取请求。如果与所述存储器地址相关联的数据未存储在L3缓存120的条目中,那么缓存控制器105指示缓存未命中并且向存储器130发出对所述存储器地址处的数据的请求。在从存储器130接收到数据之后,缓存控制器105将所述数据存储在L3缓存120的条目处,随后将所述数据转移到L2缓存110,所述L2缓存110继而将所述数据提供到处理器核心102,如此满足存储器存取请求。
为了支持提高的存储器存取效率,处理器101包括预取器106,所述预取器监测向缓存控制器105发出的需求请求以识别模式,并且基于所识别的模式来预测将是处理器核心102在不久的将来的需求请求的目标的存储器地址。预取器106向缓存控制器105发出指向所识别的存储器地址的存储器存取请求(在本文被称作预取请求)。缓存控制器105通过以下操作来与需求请求类似地处理预取请求:首先识别与由预取请求指向的存储器地址相关联的数据是否已经存储在L2缓存110的条目处,并且如果尚未存储,那么向L3缓存120或存储器130请求所述数据并且将所述数据存储在L2缓存110的条目处。
在一些实施方案中,L2缓存110和L3缓存120的每个条目与存储器地址的子集相关联,并且仅准许与那个子集相关联的数据存储在所述条目处。举例来说,在一些实施方案中,所述缓存是具有M组的N路组联合缓存,所述M组中的每一者包括N个条目。向所述M组中的每一者指派存储器地址的不同子集,使得在数据与条目的所指派的子集中的存储器地址相关联的情况下,缓存控制器105仅将所述数据存储在条目处。当一组的所有条目存储可以是存储器存取的目标的数据(在本文被称作“有效数据”)时,所述组在本文被称作满。此外,当缓存控制器105接收到将要存储在满组处的数据时,所述缓存控制器选择所述组的条目中的要逐出的一个条目(即,从所述组移除)并且使用所接收的数据进行取代。当从L2缓存110逐出条目时,可以将所述条目转移到L3缓存120,或者可以取代所述条目而不是首先将所述条目转移到L3缓存120。缓存控制器105所使用的用于选择转移的条目或在不转移的情况下选择取代的条目的方案被称作L2缓存110的转移策略。
为了促进被逐出的缓存条目的更有效的转移,L2缓存110的转移策略可以至少部分基于存储在缓存条目处的数据是响应于预取请求而存储,而不是需求请求的标的。在一种转移策略下,L2缓存110中的未使用的预取将在从L2缓存110逐出之后以有效状态被转移到L3缓存120。在不同的转移策略下,L2缓存110中的未使用的预取以指示数据无效的状态被转移到L3缓存120,并且因此符合将要丢弃的条件。在另一转移策略下,L2缓存110中的未使用的预取将在从L2缓存110逐出之后被取代而不是被转移到L3缓存120。通常,响应于预取请求而被转移到L2缓存110的数据先前曾被转移或者从L3缓存120拷贝。在一些实施方案中,L3缓存120不包括L2缓存110,使得存储在L2缓存110中的至少一些缓存条目也不存储在L3缓存120处。在L3缓存120不包括L2缓存110的情况下,在从L2缓存110逐出未使用的预取的数据之后将所述数据转移到L3缓存120例如在所述未使用的预取的数据被指派到其中的L3缓存120中的组是满的情况下可能要求从L3缓存120逐出其他有效数据,并且导致对存储器请求的不大高效的处理。通过任选地采用以无效状态将未使用的预取的数据转移到L3缓存120或者替代地在从L2缓存110逐出未使用的预取的数据之后取代所述数据而不将所述未使用的预取的数据转移到L3缓存120的转移策略,可以实现对存储器请求的更高效的处理。相比而言,在常规的缓存管理系统中,在从L2缓存110逐出未使用的预取的数据之后以有效状态将所述数据转移到L3缓存120,如此潜在地逐出更有用的数据(例如,比未使用的预取数据更有可能存取的数据),从而降低了存储器存取效率。
在一些实施方案中,缓存控制器105将不同的转移策略应用于缓存110的不同的区,其中每个区包括多个条目。在至少一个实施方案中,每个区仅在其转移策略方面变化。因此,区的条目可以用于任何组,并且不同的区可以包括同一组的不同条目。
在图1的所描绘的示例中,缓存110包括三个区:测试区115和116以及非测试区118。另外,缓存控制器105存储在至少一个方面不同的转移策略111和112,例如,未使用的预取的数据在从L2缓存110逐出之后是以有效状态或无效状态被转移到L3缓存120,还是替代地被取代而不转移到L3缓存120。因此,在图1的示例中,转移策略111规定,在从L2缓存110逐出之后,以有效状态将作为任何非预取请求数据的未使用的预取的数据的全部或一部分转移到L3缓存120。如本文所使用,非预取请求是指不是指向应用转移策略的缓存层级的存储器存取。非预取请求的示例包括需求请求、响应于指令缓存未命中而产生的存储器存取请求、硬件页表查找请求、由处理器核心102产生的推测性存储器存取请求(例如,在分支指令之后的指令的推测性执行期间产生的存储器存取请求),以及在其他缓存层级处产生的预取请求。
相比而言,转移策略112规定,在从L2缓存110逐出之后,以无效状态将未使用的预取的数据的全部或一部分转移到L3缓存120,或者替代地,取代所述未使用的预取的数据而不转移到L3缓存120,而非预取请求数据在从L2缓存110逐出之后被转移到L3缓存120。转移策略111因此可能对于更频繁地存取预取的数据的存储器存取模式更高效,并且转移策略112可能对于较不频繁地存取预取的数据的存储器存取模式更高效。然而,处理器核心102的存储器存取模式可能会随时间变化,使得缓存110在不同时间在不同的转移策略下更高效地操作。因此,对于非测试区118,缓存控制器105依据测试区115和116的性能特性而在转移策略111和112之间进行选择。
为了说明,处理器101包括性能监测器104,所述性能监测器监测并记录测试区115和116中的每一者的性能特性,例如缓存命中率、缓存不命中率等。基于测试区115和116的性能特性中的一者或多者或其组合,缓存控制器选择转移策略111和112中的一者并且将其应用于非测试区118。举例来说,如果测试区115的缓存命中率高于测试区116的缓存命中率,那么缓存控制器105选择用于测试区115的转移策略(例如,转移策略111)并且将其应用于非测试区118。在一些实施方案中,非测试区118包括缓存110的大部分条目。因此,通过选择由测试区115和116的性能指示的用于非测试区118的转移策略作为更高效的转移策略,缓存控制器105提高缓存110的整体效率。此外,随着测试区115和116的性能特性随时间变化,缓存控制器将所述转移策略改变为对于给定组性能特性来说更高效的策略。
图2说明根据一些实施方案的缓存控制器105将不同的转移策略应用于图1的L2缓存110的测试区115和116的示例。在所描绘的示例中,测试区115和116中的每一者包括多个条目,例如测试区115的条目240、241、242和243以及测试区116的条目246、247、248和249。所述条目中的每一者包括用于存储从存储器130检索到的数据(即,用于满足条目处的存储器存取请求的数据)的数据部分(例如,条目240的数据部分244)。每个条目还包括转移字段(例如,条目240的转移字段245),所述转移字段用于存储以下指示:应用于测试区115的转移策略规定数据在从L2缓存110的测试区115逐出之后是被转移到L3缓存120还是被取代而不被转移到L3缓存120(或者替代地,以指示将丢弃所述数据的状态进行转移)。
对于图2的示例,假设缓存控制器105将转移策略应用于测试区115,其中未使用的预取请求在从L2缓存110的测试区115逐出之后被取代而不是首先被转移到L3缓存120,而需求请求在从L2缓存110的测试区115逐出之后被转移到L3缓存120。在图2的示例中,使用分别与预取请求250和252相关联的数据以及分别与需求请求251和253相关联的数据来填充L2缓存110的测试区115。
如上文描述,缓存控制器105将不同的转移策略应用于不同的测试区115和116。通过测量每个测试区的性能特性,缓存控制器105针对处理器核心102的最近的存储器存取模式识别更高效的转移策略,并且将所述更高效的转移策略应用于非测试区118,从而提高整体缓存效率。
在一些实施方案中,不规定针对与预取请求相关联的所有未使用的数据进行取代而不转移到L3缓存120(或者替代地,以指示将丢弃所述数据的状态转移到L3缓存120),所述转移策略规定针对与相关联的未使用的数据的一部分进行取代而不转移到L3缓存120。举例来说,对于测试区115,缓存控制器105应用转移策略,按照所述转移策略,仅与预取请求相关联的条目的某一百分比将被取代而不是首先被转移到L3缓存120。
与应用于测试区115的转移策略相比,应用于测试区116的转移策略规定每个条目在从L2缓存110逐出之后以有效状态被转移到L3缓存120,而不考虑所述条目是否与需求请求或预取请求相关联。在图2的示例中,使用分别与预取请求256和258相关联的数据以及分别与需求请求257和259相关联的数据来填充测试区116。响应于逐出测试区116的条目,缓存控制器105应用转移策略以要求将所述条目转移到L3缓存120,无论数据与需求请求还是预取请求相关联。因此,应用于不同的测试区115和116的不同的转移策略在若干方面中的一者或多者中变化,包括与相关联的所有条目、一些条目还是没有条目在从L2缓存110逐出之后被取代而不首先转移到L3缓存120。此外,在一些实施方案中,缓存110包括两个以上测试区,其中将不同的转移策略应用于每个测试区,从而向缓存控制器给出应用于非测试区118的广泛的可能的转移策略。
图3说明缓存控制器305将不同的转移策略应用于L2缓存310的不同测试区的示例。在图3的示例中,缓存控制器305将转移策略311应用于L2缓存310的测试区315,并且将转移策略312应用于L2缓存310的测试区316。转移策略311规定,在从L2缓存310逐出之后,将把所有条目转移到L3缓存320,而不考虑所述条目是否与预取请求或需求请求相关联。在图3的示例中,将传入的数据341接收到L2缓存310的测试区315中的含有预取数据345的组中,从而使得需要逐出预取数据345。缓存控制器305将转移策略311应用于测试区315,并且因此在使用传入的数据341取代预取数据345之前将所述预取数据转移到L3缓存320。
相比而言,将传入的数据342接收到L2缓存310的测试区316中的含有预取数据346的组中,从而使得需要逐出预取数据346。缓存控制器305将转移策略312应用于测试区316,并且因此丢弃预取数据346而不将所述预取数据转移到L3缓存320。
图4说明描绘根据一些实施方案的不同的测试区115和116的相对性能随时间改变的示例的图400。图400包括表示时间的X轴线450和表示缓存命中率的Y轴线451。图400描绘表示测试区116随时间的缓存命中率的曲线452和表示测试区115的缓存命中率的曲线453。
在由图400说明的示例中,在时间455之前,测试区115的缓存命中率大于测试区116的缓存命中率。因此,在时间455之前,缓存控制器105将用于测试区115的转移策略应用于非测试区118。在时间455处,测试区115和116的缓存命中率之间的关系改变,使得测试区116的缓存命中率大于测试区115的缓存命中率。作为响应,缓存控制器105改变用于非测试区118的转移策略以与用于测试区116的转移策略匹配。在稍后时间456处,测试区115和116的缓存命中率之间的关系再次改变,使得测试区115的缓存命中率再次大于测试区116的缓存命中率。作为响应,缓存控制器105改变用于非测试区118的转移策略以与用于测试区115的转移策略匹配。因此,缓存控制器105基于测试区115和116的相对性能的改变来改变应用于非测试区118的转移策略。
图5是根据一些实施方案的基于缓存的不同测试区的性能特性来选择用于缓存的非测试区的转移策略的方法500的流程图。出于描述的目的,相对于图1的处理系统100处的示例性实现方式来描述方法500。在框502处,缓存控制器105将不同的转移策略111和112应用于缓存110的不同的测试区115和116。因此,例如,缓存控制器105将转移策略111应用于测试区115并且将转移策略112应用于测试区116。在框504处,性能监测器104监测并记录不同测试区115和116的性能特性,例如缓存命中率、缓存不命中率、缓存命中率和缓存不命中率的加权和等。
在框506处,缓存控制器105将测试区115和116中的每一者的性能特性进行比较并且基于所述比较来选择转移策略111和112中的一者。举例来说,缓存控制器105选择应用于具有由性能特性指示的较高性能的测试区的转移策略。在框508处,缓存控制器105将选定的转移策略应用于缓存110的非测试区118。也就是说,于在非测试区118处逐出之后,缓存控制器指定用于转移的缓存条目或在没有先前转移的情况下用于取代的缓存条目以与选定的转移策略的要求一致。在框510处,缓存控制器105使用转移或取代指定以根据L2缓存110的非测试区118的取代策略来转移或丢弃存储在L2缓存110的非测试区118处的预取数据。方法流返回到框504,其反映缓存控制器105继续监测测试区115和116的性能并且基于所述性能来调整应用于非测试区118的转移策略。
在一些实施方案中,上文所描述的技术的某些方面可以由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或另外有形地体现在非暂时性计算机可读存储介质上的一组或多组可执行指令。所述软件包括指令和特定数据,所述指令和特定数据当由一个或多个处理器执行时会操纵所述一个或多个处理器执行上文所描述的技术的一个或多个方面。所述非暂时性计算机可读存储介质可以包括(例如)磁盘或光盘存储装置、例如快闪存储器的固态存储装置、缓存、随机存取存储器(RAM)或其他非易失性存储器装置或装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以呈由一个或多个处理器解译或另外可执行的源代码、汇编语言代码、目标代码或其他指令格式。
计算机可读存储介质可以包括可以由计算机系统在使用期间存取以便将指令和/或数据提供给计算机系统的任何存储介质,或存储介质的组合。此类存储介质包括(但不限于)光学介质(例如,压缩光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器),或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或经由有线或无线网络耦合到计算机系统(例如,网络可存取存储装置(NAS))。
应注意,并不需要在一般描述中的上文描述的所有活动或要素,可能不需要特定活动或装置的一部分,并且可以执行一个或多个其他活动,或者包括除了所描述的要素之外的要素。此外,列举活动的次序不一定是执行活动的次序。而且,已经参考特定实施方案描述了概念。然而,本领域技术人员应了解,可以在不脱离所附权利要求书中所陈述的本公开的范围的情况下作出各种修改和改变。因此,可以在说明性意义而不是限制性意义上对待说明书和图,并且所有此类修改意在包括在本公开的范围内。
上文已关于特定实施方案描述了益处、其他优势和问题的解决方案。然而,这些益处、优势、问题的解决方案以及可以致使任何益处、优势或解决方案发生或变得更加突出的任何特征不应被解释为任何或所有权利要求的关键、必需或本质的特征。另外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以按受益于本文教导的本领域技术人员显而易见的不同但等效的方式加以修改和实践。除了所附权利要求书中所描述的内容之外,无意对本文示出的构造或设计的细节进行限制。因此显然的是,可以更改或修改上文所公开的特定实施方案,并且所有此类变化都被视为在所公开的主题的范围内。因此,本文寻求的保护在所附权利要求书中予以陈述。
Claims (21)
1.一种基于缓存测试区针对预取数据选择缓存转移策略的方法,所述方法包括:
响应于取代第一缓存的第一区处的第一缓存条目处的第一数据,响应于所述第一数据是尚未作为需求请求的目标的预取数据而将所述第一数据转移到第二缓存;以及
响应于取代所述第一缓存的第二区处的第二缓存条目处的第二数据,响应于所述数据是尚未作为需求请求的目标的预取数据而从所述第一缓存丢弃所述第二数据。
2.如权利要求1所述的方法,所述方法还包括:
测量所述第一缓存的所述第一区的第一性能特性和所述第一缓存的所述第二区的第二性能特性;
基于所述第一性能特性和所述第二性能特性来选择用于所述第一缓存的第三区的第一转移策略;以及
响应于基于所述第一转移策略取代所述第一缓存的所述第三区处的缓存条目处的数据,将所述第一缓存的所述第三区的缓存条目处的数据选择性地转移到所述第二缓存。
3.如权利要求2所述的方法,其中选择所述第一转移策略包括:
响应于所述数据是尚未作为需求请求的所述目标的预取数据,以指示所述数据是无效的状态将所述数据转移到所述第二缓存。
4.如权利要求2所述的方法,其中选择所述第一转移策略包括:
响应于所述数据是尚未作为需求请求的所述目标的预取数据,以有效状态将所述数据转移到所述第二缓存。
5.如权利要求2所述的方法,其中选择所述第一转移策略包括在第一时间处选择所述第一转移策略,并且所述方法还包括:
响应于所述第一性能特性与所述第二性能特性之间的关系的变化,在第二时间处选择用于所述第一缓存的所述第三区的第二转移策略,所述第二转移策略不同于所述第一转移策略。
6.如权利要求2所述的方法,其中:
所述第一性能特性包括所述第一缓存的所述第一区处的缓存命中率;以及
所述第二性能特性包括第一缓存的第二区处的缓存命中率。
7.如权利要求2所述的方法,其中:
所述第一性能特性包括所述第一缓存的所述第一区处的缓存不命中率;以及
所述第二性能特性包括所述第一缓存的第二区处的缓存不命中率。
8.如权利要求2所述的方法,其中:
所述第一性能特性包括所述第一缓存的所述第一区处的缓存命中率与所述第一缓存的所述第一区处的缓存不命中率的第一加权和;以及
所述第二性能特性包括所述第一缓存的第二区处的缓存命中率与所述第一缓存的所述第二区处的缓存不命中率的第二加权和。
9.如权利要求2所述的方法,其中所述第一性能特性和所述第二性能特性是不同的性能特性类型。
10.一种基于缓存测试区针对预取数据选择缓存转移策略的方法,包括:
响应于在第一缓存处接收需要逐出缓存条目的数据:
在所述第一缓存的第一区,应用第一转移策略以选择存储在第一缓存条目处的数据,响应于尚未作为需求请求的目标的预取请求,通过以指示将丢弃所述数据的状态将所述数据转移到第二缓存;
在所述第一缓存的第二区,应用第二转移策略以选择存储在第二缓存条目处的数据,响应于尚未作为需求请求的目标的预取请求,在将所接收的数据存储在所述第二缓存条目处之前将所述数据转移到所述第二缓存;
基于所述第一区和所述第二区的性能特征在所述第一转移策略和所述第二转移策略之间进行选择,以确定第三转移策略;并且
基于所确定的第三转移策略,选择性地将在所述第一缓存的第三区处的数据转移到所述第二缓存。
11.如权利要求10所述的方法,其中,在所述第一转移策略和所述第二转移策略之间进行选择包括:
在第一时间处选择用于所述第三区的所述第一转移策略;以及
在第二时间处选择用于所述第三区的所述第二转移政策。
12.如权利要求11所述的方法,其中,所述第二时间在所述第一时间之后。
13.如权利要求11所述的方法,其中,响应于所述第一区和所述第二区的性能特征之间的关系的变化,在所述第二时间处选择用于所述第三区的所述第二转移策略。
14.一种处理器,所述处理器包括:
第一缓存,所述第一缓存包括第一区和第二区;
第二缓存;以及
缓存控制器,所述缓存控制器被配置成:
在所述第一区处,响应于尚未作为需求请求的目标的预取请求,基于数据是否存储在第一缓存条目处而选择用于所述第一缓存条目的第一转移策略;
在第二区处,响应于尚未作为需求请求的目标的预取请求,选择用于缓存条目的第二转移策略,而不管数据是否存储在所述第二区的所述缓存条目处;以及
基于所述第一区和所述第二区处的所述选定的转移策略,响应于在所述第一缓存处接收到要求从所述第一缓存逐出缓存条目的数据,将所述第一区和所述第二区处的数据选择性地转移到所述第二缓存。
15.如权利要求14所述的处理器,所述处理器还包括:
性能监测器,所述性能监测器用于测量所述第一区的第一性能特性和所述第二区的第二性能特性;以及
其中所述缓存控制器将:
基于所述第一性能特性和所述第二性能特性来选择用于所述第一缓存的第三区的第一转移策略;以及
基于所述选定的第一转移策略,响应于在所述第一缓存处接收到要求从所述第一缓存逐出缓存条目的数据,将所述第一缓存的所述第三区的缓存线处的数据选择性地转移到所述第二缓存。
16.如权利要求15所述的处理器,其中所述第一转移策略将:
响应于尚未作为需求请求的目标的预取请求,通过以指示将丢弃选定的数据的状态将所述选定的数据转移到所述第二缓存来选择存储在选定的第一缓存条目处的取代数据。
17.如权利要求15所述的处理器,其中所述第二转移策略将:
在将所述所接收的数据存储在第二缓存条目处之前将所述第二缓存条目处的数据转移到所述第二缓存。
18.如权利要求15所述的处理器,其中所述缓存控制器将:
在第一时间处选择所述第一转移策略;以及
响应于所述第一性能特性与所述第二性能特性之间的关系的变化,在第二时间处选择用于所述第三区的第二转移策略,所述第二转移策略不同于所述第一转移策略。
19.如权利要求15所述的处理器,其中:
所述第一性能特性包括所述第一区处的缓存命中率;以及
所述第二性能特性包括所述第二区处的缓存命中率。
20.如权利要求15所述的处理器,其中:
所述第一性能特征包括所述第一区处的缓存未命中率;
所述第二性能特征包括所述第二区处的缓存未命中率。
21.如权利要求15所述的处理器,其中:
所述第一性能特性包括所述第一区处的多个缓存命中率与所述第一区处的多个缓存不命中率的第一加权和;以及
所述第二性能特性包括所述第二区处的多个缓存命中率与所述第二区处的多个缓存不命中率的第二加权和。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/215,033 US9928176B2 (en) | 2016-07-20 | 2016-07-20 | Selecting cache transfer policy for prefetched data based on cache test regions |
US15/215,033 | 2016-07-20 | ||
PCT/US2017/042794 WO2018017671A1 (en) | 2016-07-20 | 2017-07-19 | Selecting cache transfer policy for prefetched data based on cache test regions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478165A CN109478165A (zh) | 2019-03-15 |
CN109478165B true CN109478165B (zh) | 2020-10-02 |
Family
ID=60989964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780044628.3A Active CN109478165B (zh) | 2016-07-20 | 2017-07-19 | 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9928176B2 (zh) |
EP (1) | EP3488349B1 (zh) |
JP (1) | JP7232175B2 (zh) |
KR (1) | KR20190020825A (zh) |
CN (1) | CN109478165B (zh) |
WO (1) | WO2018017671A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11640357B2 (en) | 2019-05-24 | 2023-05-02 | Texas Instruments Incorporated | Methods and apparatus to facilitate read-modify-write support in a victim cache |
US11500779B1 (en) | 2019-07-19 | 2022-11-15 | Marvell Asia Pte, Ltd. | Vector prefetching for computing systems |
US11561895B2 (en) * | 2019-09-05 | 2023-01-24 | Advanced Micro Devices, Inc. | Oldest operation wait time indication input into set-dueling |
US11210234B2 (en) * | 2019-10-31 | 2021-12-28 | Advanced Micro Devices, Inc. | Cache access measurement deskew |
US11379379B1 (en) * | 2019-12-05 | 2022-07-05 | Marvell Asia Pte, Ltd. | Differential cache block sizing for computing systems |
CN111723058B (zh) | 2020-05-29 | 2023-07-14 | 广东浪潮大数据研究有限公司 | 一种预读数据缓存方法、装置、设备及存储介质 |
US11467937B2 (en) * | 2020-06-26 | 2022-10-11 | Advanced Micro Devices, Inc. | Configuring cache policies for a cache based on combined cache policy testing |
CN113760783B (zh) * | 2021-09-09 | 2023-03-24 | 海光信息技术股份有限公司 | 联合偏移预取方法、装置、计算设备和可读存储介质 |
CN114238167B (zh) * | 2021-12-14 | 2022-09-09 | 海光信息技术股份有限公司 | 信息预取方法、处理器、电子设备 |
CN117971728B (zh) * | 2024-03-29 | 2024-10-18 | 北京象帝先计算技术有限公司 | 缓存器及缓存控制方法、集成电路系统、电子组件及设备 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293609A (en) * | 1991-04-19 | 1994-03-08 | International Business Machines Corporation | Hit-density-based replacement for data cache with prefetching |
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
JPH06282487A (ja) * | 1993-03-25 | 1994-10-07 | Matsushita Electric Ind Co Ltd | キャッシュ装置 |
US5544342A (en) * | 1993-06-30 | 1996-08-06 | International Business Machines Corporation | System and method for prefetching information in a processing system |
US5553276A (en) * | 1993-06-30 | 1996-09-03 | International Business Machines Corporation | Self-time processor with dynamic clock generator having plurality of tracking elements for outputting sequencing signals to functional units |
KR0146059B1 (ko) * | 1995-04-11 | 1998-09-15 | 문정환 | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 |
US6223256B1 (en) * | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
US6272598B1 (en) | 1999-03-22 | 2001-08-07 | Hewlett-Packard Company | Web cache performance by applying different replacement policies to the web cache |
US6721853B2 (en) | 2001-06-29 | 2004-04-13 | International Business Machines Corporation | High performance data processing system via cache victimization protocols |
JP3964705B2 (ja) | 2002-03-25 | 2007-08-22 | 川崎マイクロエレクトロニクス株式会社 | 適応置換制御機能を有するセット・アソシアティブ方式のキャッシュシステム及びキャッシュ制御方法 |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US20060143256A1 (en) | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
US20090006813A1 (en) * | 2007-06-28 | 2009-01-01 | Abhishek Singhal | Data forwarding from system memory-side prefetcher |
US7917702B2 (en) * | 2007-07-10 | 2011-03-29 | Qualcomm Incorporated | Data prefetch throttle |
US7793049B2 (en) | 2007-10-30 | 2010-09-07 | International Business Machines Corporation | Mechanism for data cache replacement based on region policies |
US8478942B2 (en) | 2010-09-27 | 2013-07-02 | Advanced Micro Devices, Inc. | Method and apparatus for reducing processor cache pollution caused by aggressive prefetching |
EP2664993A1 (en) | 2011-01-12 | 2013-11-20 | Fujitsu Limited | Cache memory device, cache memory control device, information processing device, cache memory control method, and threshold value determination program for cache memory device |
US9009416B1 (en) * | 2011-12-30 | 2015-04-14 | Emc Corporation | System and method for managing cache system content directories |
US9235524B1 (en) * | 2011-12-30 | 2016-01-12 | Emc Corporation | System and method for improving cache performance |
US9779029B2 (en) | 2012-11-06 | 2017-10-03 | Facebook, Inc. | Cache replacement policy for data with strong temporal locality |
US20150286571A1 (en) * | 2014-04-04 | 2015-10-08 | Qualcomm Incorporated | Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution |
US9811468B2 (en) | 2014-12-14 | 2017-11-07 | Via Alliance Semiconductor Co., Ltd. | Set associative cache memory with heterogeneous replacement policy |
CN104572502B (zh) * | 2015-01-12 | 2018-06-19 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存策略自适应方法 |
-
2016
- 2016-07-20 US US15/215,033 patent/US9928176B2/en active Active
-
2017
- 2017-07-19 EP EP17831761.6A patent/EP3488349B1/en active Active
- 2017-07-19 JP JP2019502753A patent/JP7232175B2/ja active Active
- 2017-07-19 KR KR1020197003109A patent/KR20190020825A/ko not_active Ceased
- 2017-07-19 WO PCT/US2017/042794 patent/WO2018017671A1/en unknown
- 2017-07-19 CN CN201780044628.3A patent/CN109478165B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109478165A (zh) | 2019-03-15 |
EP3488349A4 (en) | 2020-03-25 |
US20180024931A1 (en) | 2018-01-25 |
EP3488349B1 (en) | 2024-05-15 |
JP2019525330A (ja) | 2019-09-05 |
EP3488349A1 (en) | 2019-05-29 |
WO2018017671A1 (en) | 2018-01-25 |
US9928176B2 (en) | 2018-03-27 |
KR20190020825A (ko) | 2019-03-04 |
JP7232175B2 (ja) | 2023-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478165B (zh) | 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器 | |
CN109074312B (zh) | 基于高速缓存测试区域来为预取选择高速缓存老化策略 | |
US11803484B2 (en) | Dynamic application of software data caching hints based on cache test regions | |
US8935478B2 (en) | Variable cache line size management | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
JP6630449B2 (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
JP7453360B2 (ja) | キャッシュアクセス測定デスキュー | |
US20130191599A1 (en) | Cache set replacement order based on temporal set recording | |
US20120124291A1 (en) | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data | |
US20170357585A1 (en) | Setting cache entry age based on hints from another cache level | |
EP3239848A1 (en) | Selecting cache aging policy for prefetches based on cache test regions | |
WO2019083600A1 (en) | CACHED MEMORY REPLACEMENT POLICY BASED ON NON-CACHE BUFFERS |
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 |