CN117897690A - 通知临界性的高速缓存策略 - Google Patents

通知临界性的高速缓存策略 Download PDF

Info

Publication number
CN117897690A
CN117897690A CN202280058339.XA CN202280058339A CN117897690A CN 117897690 A CN117897690 A CN 117897690A CN 202280058339 A CN202280058339 A CN 202280058339A CN 117897690 A CN117897690 A CN 117897690A
Authority
CN
China
Prior art keywords
cache
cache line
criticality
control circuitry
critical
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
Application number
CN202280058339.XA
Other languages
English (en)
Inventor
T·J·休伯蒂
V·文卡特拉曼
S·古普塔
E·J·弗比什
S·R·斯里达兰
S·G·梅尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN117897690A publication Critical patent/CN117897690A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种高速缓存可存储临界高速缓存行和非临界高速缓存行,并且可尝试通过例如在替换数据更新中支持临界高速缓存行、当牺牲高速缓存块被选择时以特定概率保留该临界高速缓存行等来将该临界高速缓存行保留在该高速缓存中。临界性值可被保留在高速缓存分级结构的各种水平处。另外,如果先前访问临界高速缓存块的线程被视为消亡,则可采用经加速的逐出。

Description

通知临界性的高速缓存策略
技术领域
本文所述的实施方案涉及计算机***中的高速缓存,并且更特别地涉及高速缓存策略。
背景技术
在数字***中已长期采用高速缓存以通过捕获已由处理器、协处理器或其他数字设备在设备本地的高速缓存中访问的数据的拷贝来减少有效存储器延迟。高速缓存可小于主存储器***并可针对低延迟来进行优化(而主存储器***通常以延迟为某些代价来针对存储密度进行优化)。因此,高速缓存存储器本身可减少延迟。另外,高速缓存存储器可在设备本地,并且因此可减少延迟,因为不会引起到存储器控制器/主存储器***以及回到设备的输送延缓。此外,高速缓存可专用于设备或少量设备(例如,处理器/协处理器集群),并且因此相比于主存储器可减少对高速缓存的针对带宽的竞争。
虽然高速缓存减少了有效存储器延迟,但是它们是有限的存储装置并且因此经受未命中(除以下之外:在未命中是针对读取请求的情况下将数据提供给请求设备或者在未命中是针对写入请求的情况下进行更新,这还引起从存储器到高速缓存的填充以获得数据)。该填充被分配给高速缓存中的存储装置(例如,高速缓存行或高速缓存块)。该分配可使其他数据在高速缓存中被替换(也被称为从高速缓存逐出高速缓存行)。存在用于基于高速缓存几何结构来选择被逐出的高速缓存行的多种替换策略。例如,组相联高速缓存具有布置为高速缓存行的二维阵列的存储器:基于高速缓存行的存储器地址的子组来选择“行”(被称为组),并且该行包括作为阵列的“列”(被称为路)的多个高速缓存行。当检测到高速缓存未命中并且填充被发起时,将路中的一个路分配用于该填充。针对组相联高速缓存的流行替换策略是最近最少使用的(LRU)策略。利用LRU,从最近最多访问的(最近最多使用的或MRU)到最近最少访问的(最近最少使用的或LRU)跟踪对组中的高速缓存行的访问。通常,当高速缓存行被访问时,它被更新到MRU,并且在高速缓存行以前的排序与先前MRU之间的高速缓存行被调整。当高速缓存未命中发生时,可选择LRU高速缓存行来用于替换。
附图说明
以下详细描述参考附图,现在对这些附图进行简要描述。
图1是***的一部分的一个实施方案的框图。
图2是示出针对一个实施方案的临界性确定的流程图。
图3是示出图1所示的最后一级高速缓存(LLC)的一个实施方案中的LRU***和更新的表。
图4是示出LLC中的牺牲选择的一个实施方案的流程图。
图5是示出针对另一实施方案的临界性确定的流程图。
图6是示出针对一个实施方案的LLC中的LRU***的流程图。
图7是示出针对一个实施方案的LLC中的LRU提升的流程图。
图8是示出针对一个实施方案的牺牲选择的流程图。
图9是示出针对另一实施方案的牺牲选择的流程图。
图10是示出针对被标记为临界的高速缓存行的逐出加速的流程图。
图11是示出针对一个实施方案的在存储器高速缓存处针对高速缓存行的LRU***的流程图。
图12是片上***(SOC)的一个实施方案的框图。
图13是计算机***的各种实施方案的框图。
图14是计算机可访问存储介质的一个实施方案的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。
具体实施方式
虽然LRU替换策略通常提供良好的性能(例如,高速缓存命中率保持为高并且因此存储器延迟被有效地减少),但是存在其中性能可能被限制的情况。例如,当针对高速缓存行的竞争为高并且因此逐出频繁发生时,一些高速缓存行可能被逐出,这些高速缓存行当再次被访问时引起请求设备的性能方面的比其他高速缓存行更高的损失。例如,如果请求设备中的多个操作直接地或通过其他操作间接地取决于高速缓存行中的数据,则请求设备可能停止等待该数据。带有较小依赖性的其他高速缓存行对于性能而言可能临界性较小。LRU策略无法反映高速缓存行的临界性方面的差异。
在一个实施方案中,包括一个或多个处理器以及耦接到该一个或多个处理器的高速缓存的一种***可基于在高速缓存行被填充到高速缓存中的时间处所测量的一个或多个准则根据一个或多个临界性水平来对高速缓存行进行分类。可对准则进行选择以尝试识别这样的高速缓存行,该高速缓存行当在高速缓存中为未命中时对处理器的性能产生比其他高速缓存行更大的影响。每个高速缓存行可具有指定其临界性水平的临界性值。例如,临界值可指示非临界状态或临界状态。在一个实施方案中,临界状态也可具有多个临界性水平,如下文所详述。在另一个实施方案中,与非临界状态相对,临界状态可以为指示临界的单个水平。
高速缓存可实现使用高速缓存行的临界性值作为因子的替换策略。例如,可使用LRU策略,但是可修改该策略以考虑各种高速缓存行的临界性。可在MRU位置处将具有指示临界状态的临界性值的高速缓存行(“临界高速缓存行”)***到LRU替换数据中,而可在数据中的较低位置(例如,更靠近LRU位置)处***具有指示非临界状态的临界性值的高速缓存行(“非临界高速缓存行”)。在一个实施方案中,临界性值也可影响LRU替换数据的更新。虽然LRU被用作示例性替换策略,但是其他实施方案可实现其他替换策略。例如,可使用多种伪LRU策略,其通过进行简化来近似LRU操作以使该策略更容易实现,尤其是在宽组相联高速缓存中。也可使用随机替换策略,并且可使用临界性来降低临界行被选择的可能性。可使用最不频繁使用的策略,并且可以与下文针对LRU所述的方式类似的方式来选择性地保留临界行。可使用后进先出或先进先出策略,并且临界高速缓存行可至少部分地被免除于LIFO或FIFO替换。可修改这些策略中的任何策略以考虑临界性。
在一个实施方案中,***可包括上述高速缓存与***存储器之间的一个或多个附加的高速缓存级。例如,可使用在控制***存储器的存储器控制器处实现的存储器高速缓存。当高速缓存行被逐出和重新访问时,高速缓存行的临界性值可在高速缓存之间进行交换,从而保留临界性值,同时高速缓存行保持被高速缓存在高速缓存分级结构中。一旦从高速缓存分级结构移除高速缓存行(并且因此数据仅存在于***存储器中),临界性值就可能丢失。
图1是包括多个处理器10A至10N、协处理器12、最后一级高速缓存(LLC)14、存储器控制器16和存储器18的***的一个实施方案的框图。处理器10A至10N和协处理器12耦接到LLC 14,该LLC耦接到存储器控制器16,该存储器控制器进一步耦接到存储器18。更详细地示出了处理器10N,并且其他处理器(诸如处理器10A)可以为类似的。处理器10N可包括指令高速缓存(ICache)20、指令高速缓存(IC)未命中队列22、包括加载队列(LDQ)26的执行内核24、数据高速缓存(DCache)28和存储器管理单元(MMU)30。LLC 14可包括高速缓存32、临界性控制电路34和存储器高速缓存(MCache)***查找表(LUT)36。存储器高速缓存16可包括***控制电路和LUT 38、MCache 40以及监视电路42。
ICache 20可存储由处理器10N获取以供由执行内核24执行的指令。如果获取在ICache 20中未命中,则指令的针对高速缓存行的获取可在IC未命中队列22中进行排队并作为针对ICache 20的填充请求向LLC 14传输。由执行内核24执行的指令可包括加载指令(更简要地说,加载)。加载可尝试从DCache 28读取数据,并且在加载在DCache 28中未命中的情况下可作为针对DCache 28的填充请求向LLC 14传输。向LLC 14传输的加载可保持在等待数据的LDQ 26中。
MMU 30可提供针对指令获取地址和加载/存储地址的地址转译,包括可在ICache20和执行内核24本地的转译后备缓冲器(TLB)。MMU 30可任选地包括一个或多个2级(L2)TLB,以及用于执行转译表读取以获得针对在TLB中未命中的地址的转译的表行走电路(table walk circuitry)。MMU 30可向LLC 14传输表行走读数。在一个实施方案中,MMU 30可在向LLC 14传输之前针对表行走读数上的潜在高速缓存命中来访问DCache28,并且如果该读数在DCache 28中命中,则可不向LLC 14传输该读数。在其他实施方案中,页面表数据不被高速缓存在DCache 28中,并且MMU 30可向LLC 14传输表行走读数。
LLC 14包括高速缓存32,其可具有任何容量和配置。可针对高速缓存32中的命中来检查来自处理器10A至10N和协处理器12的存储器请求,并且如果命中则可将数据作为填充返回到ICache 20、DCache 28或MMU 30。如果存储器请求在高速缓存32中为未命中,则LLC 14可向存储器控制器16传输存储器请求,并且可响应于存储器控制器16将填充返回到LLC 14而将填充返回到请求处理器10A至10N或协处理器12。如果未命中,则LLC 14也可将数据填充到高速缓存32中。一般来讲,“数据”在本文中在一般意义上用以指代由处理器10A至10N获取以供执行的指令以及由于指令的执行而由处理器读取/写入的数据(例如,操作数数据和结果数据)两者,特别是当指代数据的高速缓存行时。
另外,在对处理器10A至10N/协处理器12进行填充的时间处,LLC 14可为高速缓存行指派临界性值。临界性控制电路34可确定临界性值并可用临界性值来更新高速缓存32。例如,高速缓存32中的高速缓存标签可包括针对临界性值的字段。临界值可指示非临界状态或临界状态。如上所述,在一些实施方案中,可存在多于一个临界状态水平。临界性控制电路34也可确定临界状态水平。
临界性控制电路34可在将临界性值指派给高速缓存行时考虑多种因素。例如,临界性控制电路34耦接到MMU 30、IC未命中队列22和LDQ 26。更特别地,用于表行走请求的填充可被分类为临界的。TLB未命中可能影响附加的指令获取或加载/存储请求,因为转译涵盖相当大量的数据并且代码序列趋于访问接近其他最近访问的数据的数据。例如,页面可以为4千字节的大小、16千字节的大小或甚至更大,诸如1兆字节或2兆字节。可使用任何页面大小。另外,如果当发生针对加载的填充时该加载是在LDQ 26的头处,则其可能是处理器10N中最陈旧的未完成加载。因此,很可能该加载停止其他已完成指令的引退,或者由于对加载数据的依赖性(直接或间接的)而存在停止的多个指令。针对在LDQ 25的头处的加载的填充可被指派临界状态。类似地,如果填充是针对指令获取请求的并且其是IC未命中队列22中最陈旧的获取请求(例如,其在IC未命中队列22的头处),则指令获取很可能停止等待指令。此类指令获取可被指派临界状态。根据需要,其他实施方案可包括给定处理器10A至10N内的附加的因素或者上述因素和其他因素的子组。在一个实施方案中,来自协处理器12的请求也可被指派临界状态。例如,协处理器12的实施方案可不包括高速缓存,并且因此LLC 14为对于协处理器12可用的第一高速缓存级。未被指派临界状态的高速缓存行可被指派非临界状态。
在一个实施方案中,可保持被指派给高速缓存行的临界性值,同时高速缓存行在高速缓存分级结构中保持有效。临界性值由临界性控制电路34指派,并且随后当高速缓存行从高速缓存32被逐出时随该高速缓存行传播并向存储器控制器16传输,其中该临界性值可被高速缓存在MCache 40中。如果在从高速缓存32逐出之后被逐出的高速缓存行被置于MCache 40中,则可保持临界性值。如果在从高速缓存32逐出之后被逐出的高速缓存行未被置于MCache 40中,则存储器控制器16可丢弃临界性值并将数据写入到存储器18。可存在影响被逐出的高速缓存行是否被高速缓存在MCache 40中的多种因素。MCache 40与***的其他部件被共享,并且MCache 40可具有针对可从给定部件高速缓存多少数据的配额。如果LLC 14超过配额,则被逐出的高速缓存行可不被高速缓存。另选地,被逐出的高速缓存行可被高速缓存,并且被高速缓存在MCache 40中的不同LLC高速缓存行可被逐出。
随后,如果先前由LLC 14高速缓存的高速缓存行被LLC 14重新访问,则MCache 40可提供该高速缓存行作为对高速缓存32的填充,并且也可提供先前与该高速缓存行相关联的临界性值。临界性控制电路34可将由MCache 40提供的先前临界性值指派给高速缓存行,除非来自处理器10A至10N的生成对高速缓存行的重新访问的其他因素指示升级到临界状态或升级到更高的临界状态水平。例如,可将来自MCache 40的非临界高速缓存行以非临界状态填充到LLC 14中,除非其在针对重新访问的填充的时间处被指派了临界状态(例如,填充是针对在LDQ 26的头处的加载、在IC未命中队列22的头处的指令获取或MMU表行走请求的)。来自MCache40的临界高速缓存行可被填充为临界的。在实现多个临界状态水平的实施方案中,来自MCache 40的当前经由以上因素(LDQ 26的头、IC未命中队列22的头或MMU请求)也被指示为临界的临界高速缓存行可由临界性控制电路34指派更高的临界状态水平。
在一个实施方案中,来自LLC 14的被逐出的高速缓存行可被高速缓存在MCache40中,并且可在所选择的位置处被***到MCache 40的受影响组的替换数据中。如果被逐出的高速缓存行为临界高速缓存行,则其可在MRU位置处***。如果被逐出的高速缓存行为非临界高速缓存行,则其可在低于MRU的位置处(更靠近LRU)***。在一个实施方案中,对于非临界高速缓存行而言,***点可以为动态的。例如,***点可基于MCache 40中由来自LLC14的高速缓存行占据的高速缓存容量的量。存储器控制器16可包括监视电路42,该监视电路监视MCache 40的分配给CPU的容量并将信息(“容量_CPU”)提供给临界性控制电路34。临界性控制电路34可使用容量_CPU值作为到MCache***LUT 36中的索引,并且可当向存储器控制器16传输被逐出的高速缓存行时从编索引的条目读取***提示。***提示可用作到存储器控制器16中的LUT 38的索引,并且相关联的***控制逻辑部件可潜在地调整***点(例如,如果高速缓存的一部分掉电,则***点应在当前使用中的LRU位置内)。MCache 40可在***点处***被逐出的高速缓存块。
因此,在该实施方案中,对于非临界高速缓存行,可使用协同查找表来确定针对MCache 40中的被逐出的高速缓存行的***点。LUT可以为可编程的,从而允许软件根据需要来调谐性能。
可以任何期望的方式来测量容量_CPU值。在一个实施方案中,容量_CPU可指示由来自LLC 14的高速缓存行占据的MCache路的平均数量。在另一个实施方案中,可提供高速缓存容量的近似百分比。
如先前所提及的,高速缓存32可具有针对临界性值的字段(例如,在高速缓存标签中)。MCache 40可类似地包括高速缓存标签中针对临界性值的字段。在另一个实施方案中,MCache 40可具有针对每个高速缓存行的数据集标识(DSID),其根据一个或多个准则来识别属于一起的高速缓存行。通常,具有相同DSID的高速缓存块可来自相同源部件(例如,LLC14或***的另一部件,诸如***设备部件,图1中未示出)。DSID可被存储在标签中的字段中。DSID可用于区分非临界和临界高速缓存行(例如,通过使用针对非临界高速缓存行的一个DSID和针对临界高速缓存行的另一个DSID,或者在采用更多临界状态水平的实施方案中针对不同临界状态水平的多个DSID)。当提供填充时,MCache 40可对DSID进行解码以确定要向LLC 14传输的临界性值。
在一个实施方案中,处理器10A至10N可充当***的中央处理单元(CPU)。***的CPU包括执行***的主要控制软件(诸如操作***)的一个或多个处理器。通常,由CPU在使用期间执行的软件可控制***的其他部件,以实现***的期望的功能。处理器10A至10N也可执行其他软件,诸如应用程序。应用程序可提供用户功能,并且可依靠操作***进行下层设备控制、调度、存储器管理等。因此,处理器10A至10N也可被称为应用处理器。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路***和/或微码。处理器可涵盖在带有其他部件的集成电路上实现为片上***(SOC)或带有其他集成水平的处理器内核。处理器还可包括离散的微处理器、处理器内核和/或集成到多芯片模块具体实施中的微处理器、被实施为多个集成电路的处理器等等。
在一个实施方案中,协处理器12可被配置为加速某些操作。例如,设想了在其中协处理器大规模地执行矩阵和向量操纵(每个指令多个操作)的实施方案。协处理器12可接收由处理器10A至10N传输的指令。即,由协处理器12执行的指令(“协处理器指令”)和由处理器10A至10N执行的指令(“处理器指令”)可以为相同指令集架构的一部分并可在由处理器获取的代码序列中相互缠结。处理器10A至10N可对指令进行解码并识别用于向协处理器12传输的协处理器指令,并且可执行处理器指令。协处理器12可从处理器10A至10N接收协处理器指令,对协处理器指令进行解码,并且执行协处理器指令。协处理器指令可包括用于读取针对操作数的存储器数据以及将结果数据写入到存储器的加载/存储指令(在一个实施方案中,这两者都可在LLC 14中完成)。
需注意,图1的***中的各种部件的数量和类型可因实施方案而异。例如,可存在任何数量的处理器10A至10N。可存在多于一个协处理器12,并且当包括多个协处理器时,可存在相同协处理器和/或不同类型的协处理器的多个实例。可存在多于一个存储器控制器16,并且当包括多个存储器控制器时,存储器空间可在存储器控制器上分布。
需注意,各种指令、存储器请求等在上文被称为与其他指令、请求等相比更年轻或更陈旧。如果给定操作是从按程序顺序在从其导出另一操作的指令之后的指令导出的,则该给定操作可能比该另一操作更年轻。类似地,如果给定操作是从按程序顺序在从其导出另一操作的指令之前的指令导出的,则该给定操作可能比该另一操作更陈旧。
图2至图4示出了在其中临界性值为临界或非临界状态的实施方案。图5至图9示出了在其中临界状态具有多于一个临界性水平的实施方案。图10示出了用于加速从LLC 14移除临界高速缓存行的机制,对于一个实施方案而言,该机制可应用于两种类型的临界性值。图11是示出基于图10的加速机制从LLC 14进行牺牲选择的流程图。
现在转向图2,示出了示出临界性控制电路34为正被填充到LLC 14中的高速缓存行指派临界性值的一个实施方案的流程图。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图2所示的操作。
如果该填充为针对MMU表行走请求的高速缓存行(决策框50,“是”分支),则临界性控制电路34可针对与高速缓存行相关联的临界性值指派临界状态(框52)。如果该填充为针对在LDQ 26的头处的加载操作的高速缓存行(决策框54,“是”分支),则临界性控制电路34可针对与高速缓存行相关联的临界性值指派临界状态(框52)。如果该填充为针对在IC未命中队列22的头处的指令高速缓存未命中的高速缓存行(决策框56,“是”分支),则临界性控制电路34可针对与高速缓存行相关联的临界性值指派临界状态(框52)。如果该填充为MCache中具有临界状态的高速缓存行(决策框58,“是”分支),则临界性控制电路34可针对与高速缓存行相关联的临界性值指派临界状态(框52)。如果上述准则中无一者适用(决策框50、54、56、58和60,“否”分支),则临界性控制电路34可针对与高速缓存行相关联的临界性值指派非临界状态。在一个实施方案中,来自协处理器12的协处理器请求也可被指派临界状态。在另一个实施方案中,协处理器请求可被指派非临界状态。
图3是示出临界性控制电路34的一个实施方案的操作的表62,该操作用于基于高速缓存行到高速缓存32中的填充(***区段64)并基于针对来自处理器10A至10N的处理器请求的高速缓存命中(更新区段66)来更新针对组的替换数据。替换数据更新可基于请求类型、高速缓存块的先前状态以及临界性值。表的LRU列指示被填充的高速缓存行(在***区段64中)或由请求命中的高速缓存行(在更新区段66中)在LRU排序(从MRU到LRU)中的位置。可更新组中的其他高速缓存行以反映变化。例如,如果使填充的/命中高速缓存行为MRU,则可使从当前MRU到填充的/命中高速缓存行的先前位置的每个其他高速缓存行的位置朝LRU移动一个位置。如果填充的/命中高速缓存行被移动到替换数据中与MRU不同的位置,则可使具有从该不同的位置到填充的/命中高速缓存行的当前位置的位置的每个高速缓存行朝LRU移动一个位置。
在***区段64中,先前状态为空,因为高速缓存行正被填充到高速缓存32中。对于该区段,除非时间性(NT)需求请求之外的请求类型更新替换数据以使该填充为针对临界高速缓存行的MRU。如果该填充是针对预取请求(数据或指令)并且临界性值为非临界状态,则使该填充为LRU位置N,其接近LRU位置但不是LRU位置本身。例如,N可以LRU与MRU之间的距离的约25%高于LRU。例如,如果高速缓存32为8路,则高于LRU 25%将是高于LRU 2个位置。如果高速缓存32为16路,则高于LRU 25%将是高于LRU 4个位置。如果该填充是针对需求获取(指令或数据)并且临界性值为非临界状态,则使该填充为LRU位置L(接近替换数据范围的中间)。例如,如果高速缓存32为8路,则在各种实施方案中,假设LRU位置被编号为0,L可在位置4至6的范围内。如果高速缓存为16路,则L可在6至8的范围内。如果该填充是针对NT需求获取,则该填充的LRU位置可以为位置M,接近LRU但小于N。
在图3的实施方案中,对针对高速缓存行的命中的替换数据的更新可与高速缓存行的临界性值无关。其他实施方案可考虑更新中的临界性。如果命中请求为需求获取(指令或数据)并且高速缓存行为经预取的高速缓存行,则LRU位置可不变(NC),但可针对高速缓存行对预取跟踪位进行复位,因此在下一次命中高速缓存行时,其将是需求获取。如果命中请求为需求获取(指令或数据)并且命中高速缓存行为NT需求或需求获取(指令或数据),则可使命中高速缓存行为MRU。如果命中请求为数据预取,则命中高速缓存行可被置于N处(接近LRU)。如果命中请求为指令预取,则使命中高速缓存行为MRU。如果命中请求为NT需求,则命中高速缓存可以为位置N。
现在转向图4,示出了示出临界性控制电路34的一个实施方案的操作的流程图,该操作用于当检测到高速缓存未命中时选择要逐出的牺牲高速缓存行。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图4所示的操作。
如果组中存在由高速缓存未命中编索引的至少一个无效高速缓存条目(决策框70,“是”分支),则临界性控制电路34可选择LRU-最无效条目(框72)。无效条目可以为当前未存储高速缓存行的高速缓存行存储位置(例如,路)。LRU-最无效条目可以为这样的无效条目,该无效条目是无效的,并且具有当与其他无效条目的位置相比时最接近替换数据中的LRU位置的位置。LRU-最无效条目可在LRU位置处。
如果组中不存在无效条目(决策框70,“否”分支),则临界性控制电路34可选择有效条目作为牺牲者。在典型的LRU策略中,可选择LRU条目。然而,在该实施方案中,临界性控制电路34可以特定概率来保留临界高速缓存行。因此,可生成有偏伪随机选择(例如,基于线性反馈移位寄存器或LFSR以及期望的概率)(框74)。基于伪随机选择,临界性控制电路34可选择性地掩蔽临界高速缓存行以免被选择(框76)。例如,如果有偏伪随机选择指示有偏试验的一个评估(例如,“是”),则可不掩蔽临界高速缓存行。如果有偏伪随机值指示有偏试验的另一个评估(例如,“否”),则可掩蔽临界高速缓存行。该类型的基于概率的保留也可被称为“有偏硬币翻转”。临界性控制电路34可选择LRU-最有效的去掩蔽条目,并且可逐出该条目中的高速缓存块(框78)。
图5是示出针对另一个实施方案的临界性控制电路34的操作的流程图,该操作为正被填充到LLC 14中的高速缓存行指派临界性。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图5所示的操作。
类似于图2的实施方案,如果作为MMU表行走请求(决策框80,“是”分支)、在LDQ 26的头处的加载(决策框82,“是”分支)或在IC未命中队列22的头处的指令获取(决策框84,“是”分支)的结果正在填充高速缓存行,则高速缓存行可以为临界的。在该实施方案中,存在多个临界状态水平。如果由MCache 40供应的临界性指示临界状态(决策框86,“是”分支),则临界性控制电路34可从由MCache 40提供的状态增加临界状态的水平(框88)。如果MCache 40指示非临界(决策框86,“否”分支),则高速缓存行先前是非临界的或者高速缓存行在MCache40中为未命中。在这些情况下,临界性控制电路34可将临界性值初始化在临界状态的最低水平处(框90)。
如果高速缓存行在当前填充中不是临界的(决策框80、82和84,“否”分支),但由MCache 40提供的临界性值为临界状态(决策框92,“是”分支),则临界性控制电路34可保留由MCache 40提供的临界性值(框94)。否则(决策框92,“否”分支),临界性控制电路34可以非临界状态来初始化临界性值(框96)。
图6是示出临界性控制电路34的一个实施方案的操作的流程图,该操作用于基于高速缓存行到高速缓存32中的填充(高速缓存行的***)来更新针对组的替换数据。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图6所示的操作。
如果被填充的高速缓存行具有高临界状态(例如,在一个实施方案中,除临界状态中的最低临界状态之外的临界状态)(决策框100,“是”分支),则高速缓存行可在替换数据中的MRU位置处***(框102)。如果高速缓存行具有临界状态(例如,最低临界状态)(决策框100,“否”分支,以及决策框104,“是”分支),则临界性控制电路34可被配置为将高速缓存行***替换数据中尽可能高(最接近MRU)但在任何高临界状态高速缓存行的位置之下的位置中。因此,如果替换数据中存在一个或多个高临界高速缓存行(决策框106,“是”分支),则临界性控制电路34可将高速缓存行在低于高临界高速缓存行的最高位置处***(框108)。否则,可将高速缓存行在MRU位置处***(决策框106,“否”分支和框102)。
如果以非临界填充高速缓存行(决策框100和104,“否”分支)并且该填充是由于预取(指令或数据)(决策框110,“是”分支)而引起的,则可类似于上文参照图3的讨论在接近LRU的N处***预取(框112)。在一个实施方案中,可将指令预取置于数据预取的更低LRU位置处,但两者均可被置于接近LRU位置。另选地,指令预取可被置于比数据预取更高的LRU位置处,但两者均接近LRU,或者相同LRU位置可用于这两种类型的预取。如果非临界高速缓存行不是预取而是NT请求(决策框114,“是”分支),则可将高速缓存行在位置M处***,该位置在该实施方案中大于N但接近LRU(框116)。如果非临界高速缓存行为需求请求(决策框114,“否”分支)并且存在任何临界高速缓存行(决策框106,“是”分支),则可将非临界高速缓存行在临界高速缓存行之下***(框108)。如果组中不存在临界高速缓存行(决策框106,“否”分支),则可将非临界高速缓存行在MRU位置处***(框102)。
由决策框106以及框102和框108表示的电路可提供针对特定高速缓存行的动态***点,从而在临界高速缓存行可由临界性较小的高速缓存行朝LRU位置沿替换数据向下移动的情况下防止替换数据中的“优先级反转”。
图7是示出临界性控制电路34的一个实施方案的操作的流程图,该操作用于基于高速缓存行到临界性控制电路34中的命中(高速缓存行的提升)来更新针对组的替换数据。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图7所示的操作。
如果命中高速缓存行具有任何临界状态水平(决策框120,“是”分支),则临界性控制电路34可将高速缓存行更新到MRU位置(框122)。如果命中高速缓存行是非临界的(决策框120,“否”分支),并且命中高速缓存行为未触及的预取请求(决策框124,“是”分支),则临界性控制电路34可使替换数据位置保持不变但可重置预取位(框126)。如果命中请求为需求或数据预取(决策框128,“是”分支),则临界性控制电路34可通过将命中高速缓存行提升到在临界高速缓存行之下的最高替换数据位置来保留临界高速缓存行的优先级(决策框130,“是”分支和框132)。如果组中不存在临界高速缓存行,则可使命中高速缓存行为MRU(决策框130,“否”分支和框122)。如果命中请求为NT请求(决策框134,“是”分支),则可将命中高速缓存行更新到接近LRU的位置P,除非命中高速缓存行为未触及的预取,在该情况下位置不变(框136)。如果命中请求不是NT请求(也不是上述其他类型的请求),则该请求可以为指令预取并且命中高速缓存行可被更新到MRU(框138)。
类似于上文参照图6的讨论,由决策框130表示的电路可提供动态替换数据更新以防止非临界高速缓存行与临界高速缓存行之间的优先级反转。图6的实施方案可允许不同的临界高速缓存行水平在替换数据中进行重排序,但是可保持非临界高速缓存行在替换数据中的临界高速缓存行之下。
现在转向图8,示出了示出临界性控制电路34的一个实施方案的操作的流程图,该操作用于当检测到高速缓存未命中时选择要逐出的牺牲高速缓存行。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图8所示的操作。
如果组中存在至少一个无效条目(决策框140,“是”分支),则临界性控制电路34可掩蔽所有有效条目并选择LRU-最未掩蔽(无效)条目(框142)。如果所有条目都有效(决策框140,“否”分支),则临界性控制电路34可确定有偏伪随机选择,类似于上文参照图4的讨论(框144)。基于伪随机选择,临界性控制电路34可选择性地掩蔽所有临界高速缓存行(框146)。如果找到了至少一个去掩蔽有效条目(决策框148,“是”分支),则临界性控制电路34可选择LRU-最未掩蔽条目(框142)。如果未找到条目(决策框148,“否”分支),则临界性控制电路34可使最低临界高速缓存行水平去掩蔽,同时仍掩蔽更高临界高速缓存行(框150)。如果找到了至少一个去掩蔽有效条目(决策框152,“是”分支),则临界性控制电路34可选择LRU-最未掩蔽条目(框142)。如果未找到条目(决策框152,“否”分支),则临界性控制电路34可使所有临界高速缓存行去掩蔽(框154),并且可选择LRU-最未掩蔽条目(框142)。
图9是示出临界性控制电路34的另一个实施方案的操作的流程图,该操作用于当检测到高速缓存未命中时选择要逐出的牺牲高速缓存行。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图9所示的操作。
图9的实施方案可在选择牺牲者之前采用基于不同概率的多个有偏伪随机选择来选择性地掩蔽或不掩蔽临界状态的各种子组。类似于图8的实施方案,如果组中存在至少一个无效条目(决策框160,“是”分支),则临界性控制电路34可掩蔽所有有效条目并选择LRU-最未掩蔽(无效)条目(框162)。如果所有条目都有效(决策框160,“否”分支),则临界性控制电路34可基于第一概率来确定第一有偏伪随机选择,类似于上文参照图4的讨论(框164)。如果该选择为是(决策框168,“是”分支),则临界性控制电路34可掩蔽所有临界高速缓存行(框168)并确定是否找到至少一个有效的去掩蔽条目(决策框170)。如果是(决策框170,“是”分支),则临界性控制电路34可选择LRU-最未掩蔽条目(框162)。如果否(决策框170,“否”分支)或者如果该选择为否(决策框166,“否”分支),则临界性控制电路34可基于第二概率来确定第二有偏伪随机选择(框172)。如果该选择为是(决策框174,“是”分支),则临界性控制电路34可掩蔽除最低临界状态之外的临界高速缓存行(框176)并确定是否找到至少一个有效的去掩蔽条目(决策框178)。如果是(决策框178,“是”分支),则临界性控制电路34可选择LRU-最未掩蔽条目(框162)。如果否(决策框178,“否”分支)或者如果该选择为否(决策框174,“否”分支),则临界性控制电路34可在找到条目之前(框180)或者在未掩蔽所有临界行之前继续进行类似的迭代,从而掩蔽最高临界状态水平中的更少最高临界状态水平。一旦找到条目,临界性控制电路就可选择LRU-最未掩蔽条目(框162)。
实现动态替换数据更新以优先地保留比其他高速缓存行更接近MRU的临界高速缓存行的实施方案可成功地将高速缓存行保留在LLC 14中。然而,一旦临界高速缓存行不再可用,相同特性就可增加用并非为临界的最近访问的高速缓存行来替换临界高速缓存行的难度。
如上所述,在选择用于替换的牺牲高速缓存行期间,LLC 14可被配置为优先地保留通过对应临界性值识别为临界的高速缓存行而不是未被识别为临界的高速缓存行。LLC14可被配置为根据由高速缓存保持的与临界性值分开的替换数据(并且也考虑到临界性值)来选择牺牲高速缓存行。然而,当临界性控制电路34检测到被识别为临界的高速缓存行中的至少一些高速缓存行不再为临界的一个或多个指示时,临界性控制电路34可被配置为基于该一个或多个指示来终止对高速缓存行的优先保留。以另一种方式来看,临界性控制电路34可基于该一个或多个指示来加速被识别为临界的高速缓存行的逐出(相比于将在检测到该一个或多个指示之前应用的保留)。例如,在一个实施方案中,临界性控制电路34可被配置为当选择牺牲高速缓存行时忽略临界性值来终止对临界高速缓存行的优先保留或加速临界高速缓存行的逐出。
图10是示出临界性控制电路34的一个实施方案的操作的流程图,该操作用于加速不再使用的临界高速缓存行的逐出。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34可被配置为实现图10所示的操作。
如果临界高速缓存行不再被访问(例如,一个或多个访问线程已完成执行),则临界高速缓存行可最终朝替换数据中的LRU位置迁移。因此,临界性控制电路34可监视针对处于N个最LRU位置中的临界高速缓存行的命中率(框190)。可以任何期望的方式来选择N。例如,N可以为组中的路的数量的约四分之一。另外,如果来自LLC 14的高速缓存行的窥探回拷贝正在增加(即,窥探正使高速缓存行向另一个处理器10A至10N转发),则正在访问临界高速缓存行的线程可能已迁移到耦接到***中的不同LLC 14的处理器10A至10N的不同集群(图1中未示出)。因此,临界性控制电路34可监视使高速缓存行向***中的其他代理转发(不回到存储器控制器16)的窥探率(框192)。在各种实施方案中,临界性控制电路34可针对仅临界高速缓存块或所有高速缓存块的窥探转发进行监视。可被监视的另一个因素是所推断的协处理器请求(来自协处理器12的请求)(框194)。
如果经由框190所表示的监视检测到的高速缓存命中率小于阈值(决策框196,“是”分支),则临界性控制电路34可忽略牺牲选择以及LRU***和提升中的临界性值(框198)。因此,不管临界/非临界状态如何,高速缓存行可被相同地对待。类似地,如果窥探转发率出现在阈值之上(决策框200,“是”分支),则临界性控制电路34可忽略牺牲选择以及LRU***和提升中的临界性值(框198)。如果所推断的协处理器请求正在增加(决策框202,“是”分支),则临界性控制电路34可忽略牺牲选择以及LRU***和提升中的临界性值(框198)。
可被使用的另一个因素是,如果MCache 40中可用于处理器10A至10N/LLC 14的容量下降到阈值之下(例如,如由来自监视电路42的容量_CPU指示所指示的)(决策框204,“是”分支),则临界性控制电路34将所有临界状态水平视为最低临界状态(框206)。如果上述中无一者为真(决策框196、200、202和204,“否”分支),则临界性控制电路34可保持牺牲选择以及LRU***和提升中的临界性值的使用(框208)。
因此,在该实施方案中,该一个或多个指示可包括低于针对替换数据中的多个最近最少使用的位置中且具有指示临界状态的临界性值的高速缓存行的阈值水平的高速缓存命中率。该一个或多个指示可包括高速缓存中的窥探命中发生的比率并且响应于该窥探命中高于阈值水平而引起对应高速缓存行的转发。在包括协处理器的***中,该协处理器耦接到高速缓存并且被配置为执行由该一个或多个处理器向协处理器发出的协处理器指令,该一个或多个指示可包括由协处理器向高速缓存发出的存储器请求。临界性控制电路34可被配置为基于由该一个或多个处理器生成的被指示为协处理器预取请求的预取请求来推断协处理器存储器请求。也如上所述,MCache 40可提供对第二高速缓存中可分配给来自LLC 14的数据的容量的指示,并且控制电路被配置为基于对容量小于阈值的指示而用该多个临界性水平中的最低临界性水平来覆盖该多个临界性水平。
在一个实施方案中,一种方法可包括:将临界性值指派给高速缓存中的高速缓存行,其中给定临界性值对应于给定高速缓存行;在选择用于替换的牺牲高速缓存行期间,优先地保留通过对应临界性值被识别为临界的高速缓存行而不是未被识别为临界的高速缓存行,其中该选择还基于由高速缓存保持的与临界性值分开的替换数据;检测被识别为临界的高速缓存行中的至少一些高速缓存行不再为临界的一个或多个指示;以及基于该一个或多个指示来忽略针对牺牲选择和替换数据更新的临界性值。例如,在一个实施方案中,该方法还包括:监视针对替换数据中的多个最近最少使用的位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率,并且该一个或多个指示中的一个指示基于高速缓存命中率低于阈值水平。在一个实施方案中,该方法还包括:监视高速缓存中的窥探命中发生的比率并且响应于窥探命中而引起对应高速缓存行的转发,并且该一个或多个指示中的一个指示基于窥探命中率高于阈值水平。在一个实施方案中,该一个或多个指示包括由协处理器向高速缓存发出的存储器请求,其中协处理器耦接到高速缓存并且被配置为执行由一个或多个处理器向协处理器发出的协处理器指令。该方法还可包括:基于由一个或多个处理器生成的被指示为协处理器预取请求的预取请求来推断协处理器存储器请求。在一个实施方案中,该方法还可包括:从第二高速缓存提供对第二高速缓存中可分配给来自高速缓存的数据的容量的指示,其中临界性值指示非临界的和多个临界性水平;以及基于对容量小于阈值的指示而用该多个临界性水平中的最低临界性水平来覆盖该多个临界性水平。
图11是示出临界性控制电路34和MCache 40的一个实施方案的操作的流程图,该操作用于将来自LLC 14的被逐出的高速缓存行***到MCache 40替换数据中。然而,为了便于理解,框以特定顺序示出,也可使用其他顺序。框可在临界性控制电路34和/或MCache 40中以组合逻辑并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。临界性控制电路34/MCache 40可被配置为实现图11所示的操作。
如果被逐出的高速缓存行为临界高速缓存行(决策框210,“是”分支),则临界性控制电路34可生成针对MCache 40的在MRU位置处***高速缓存行的***提示(框212)。另选地,MCache 40可检测高速缓存行的临界状态并将高速缓存行在MRU位置处***。如果高速缓存行为非临界的(决策框210,“否”分支),则临界性控制电路34可基于容量_CPU遥测数据来生成到MCache***LUT 36的索引(框214)。例如,容量_CPU遥测数据可指示可用于来自处理器10A至10N/LLC 14的高速缓存行的MCache 40的路的平均数量。可基于处于各种范围内的路的平均数量来生成索引。例如,多达路的数量的八分之一、路的数量的八分之一至四分之一、路的数量的四分之一至二分之一以及路的数量的多于二分之一可以为针对两位***提示的索引。临界性控制电路34可从MCache***LUT 36中的编索引的条目生成***提示(框216)。
当***控制电路和LUT 38接收被逐出的高速缓存块时,***提示可被用作到LUT38的索引,并且***位置可从表被读取(框218)。***控制电路38可基于MCache路是否为了功率节省而掉电来修改***位置。即,每个掉电的路占据替换数据中的LRU位置,因为其不能被使用。如果***位置将处于N个LRU位置中的一个LRU位置中,其中N为掉电的路的数量,则***位置可被增加到N(框220)。MCache 40可为高速缓存行分配条目并用高速缓存行来更新条目(框222),如果从MCache 40被逐出的高速缓存行(如果有的话)相对于存储器18中的拷贝被修改,则将该高速缓存行写入到存储器18。MCache 40可更新替换数据以指示在***位置处的所分配的条目(框224)。
在一个实施方案中,MCache 40也可支持针对来自处理器10A至10N/LLC 14的非临界高速缓存行的动态***位置。例如,MCache 40可确定MRU-最非临界高速缓存行(不包括针对其检测到***点的高速缓存行),在该段落中被称为位置H。如果不存在非临界高速缓存行,则MCache 40可将高速缓存行在前面的段落中所述的经调整的***位置处***。然而,如果在MCache 40中存在有效的非临界高速缓存行并且正被***的高速缓存行已经在与位置H相比更MRU的位置处,则MCache 40可将高速缓存行在比位置H更靠近MRU的位置处***。否则,MCache 40可将高速缓存行在位置H处***。MCache 40可更新替换数据以指示在***位置处的所分配的条目(框224)。
图12是包括耦接到存储器18的片上***(SOC)300的***的一个实施方案的框图。顾名思义,SOC 300的部件可集成到单个半导体基板上作为集成电路“芯片”。在例示的实施方案中,SOC 300的部件包括处理器集群304、另一个处理器集群206、一个或多个***设备部件(诸如***设备部件308A至308B)(更简要地说,“***设备”)、存储器控制器16以及通信结构312。部件304、306、308A至308B和16可全都耦接到通信结构312。存储器控制器16可在使用期间耦接到存储器18。在一些实施方案中,可存在耦接到对应存储器的多于一个存储器控制器。在此类实施方案中,存储器地址空间可以任何期望的方式跨存储器控制器进行映射。在例示的实施方案中,处理器集群304可包括多个处理器(P)10A至10N。处理器10A至10N可形成SOC 300的中央处理单元(CPU)。处理器集群304还可包括一个或多个协处理器(例如,图12中的协处理器12)。处理器集群304还可包括LLC 14。处理器集群306可类似于处理器集群304。因此,SOC 300可以为图1所示的***的具体实施。
存储器控制器16通常可包括用于从SOC 300的其他部件接收存储器操作并用于访问存储器18以完成存储器操作的电路。存储器控制器12可被配置为访问任何类型的存储器18。例如,存储器18可以为静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器16可包括针对存储器操作的队列,以用于对这些操作进行排序(以及潜在地重排序)并将这些操作呈现给存储器18。存储器控制器16还可包括用于存储等待写入到存储器的写入数据和等待返回给存储器操作的源的读取数据的数据缓冲器。在一些实施方案中,存储器控制器16可包括用于存储最近访问的存储器数据的存储器高速缓存(MCache)40。例如,在SOC具体实施中,MCache 40可通过在预期其很快要被再次访问的情况下避免重新访问来自存储器16的数据来降低SOC中的功率消耗。在一些情况下,MCache 40也可被称为***高速缓存,其与仅服务于某些部件的私有高速缓存(诸如LLC14或处理器10A至10N中的高速缓存)相对。另外,在一些实施方案中,***高速缓存不需要位于存储器控制器16内。
***设备308A至308B可以为SOC 300中包括的任何一组附加的硬件功能。例如,***设备308A至308B可包括视频***设备,诸如一个或多个图形处理单元(GPU)、被配置为处理来自相机或其他图像传感器的图像捕获数据的图像信号处理器、视频编码器/解码器、缩放器、旋转器、混合器、显示控制器等。***设备可包括音频***设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。***设备可包括用于SOC 100外部的各种接口(包括接口诸如通用串行总线(USB)、***设备部件互连器(PCI)(包括PCI高速(PCIe)、串行端口和并行端口等)的接口控制器。至***设备的互连由图12中延伸到SOC 300外部的虚线箭头例示。***设备可包括联网***设备诸如介质访问控制器(MAC)。可包括任何一组硬件。
通信结构312可以为用于在SOC 300的部件之间进行通信的任何通信互连器和协议。通信结构312可以为基于总线的,包括共享总线配置、交叉开关配置和带有桥的分层总线。通信结构B312也可以为基于分组的,并且可以为带有桥的分层、交叉开关、点到点或其他互连器。
需注意,SOC 300的部件的数量(以及图12所示的那些部件的子部件(诸如每个处理器集群304和306中的处理器10A至10N)的数量)可因实施方案而异。另外,一个处理器集群304中的处理器10A至10N的数量可与另一个处理器集群306中的处理器10A至10N的数量不同。可存在比图12所示的数量更多或更少的每个部件/子部件。
基于前述内容,在一个实施方案中,一种***可包括:一个或多个处理器,该一个或多个处理器被配置为发出访问存储器***的存储器请求;以及高速缓存,该高速缓存耦接到该一个或多个处理器并且被配置为高速缓存来自存储器***的数据以供该一个或多个处理器访问。高速缓存可包括控制电路,该控制电路被配置为在高速缓存行被填充到高速缓存中的时间处基于多个因素来将临界性值指派给高速缓存行。在给定高速缓存行的填充期间,控制电路可被配置为基于指派给给定高速缓存行的临界性值来在针对高速缓存的替换数据中的所选择的位置处表示给定高速缓存行。控制电路可被配置为基于替换数据来选择要从高速缓存逐出的牺牲高速缓存行。控制电路可被配置为基于概率来选择性地防止具有指示临界状态的临界性值的高速缓存行经选择为牺牲高速缓存行。
在一个实施方案中,该***还包括第二高速缓存,该第二高速缓存耦接到高速缓存并且被配置为针对高速缓存以及针对***中的一个或多个其他访问高速缓存的代理来高速缓存来自存储器***的数据。第二高速缓存被配置为存储牺牲高速缓存行并且保留对由控制电路指派给牺牲高速缓存行的临界性值的指示。在一个实施方案中,该***还包括存储器控制器,该存储器控制器被配置为控制形成***存储器的至少一部分的一个或多个存储器设备,并且存储器控制器包括第二高速缓存。在一个实施方案中,第二高速缓存可被配置为基于在从高速缓存逐出牺牲高速缓存行之后发生的另一存储器请求,在对高速缓存的填充中用牺牲高速缓存行来提供临界性值。在一个实施方案中,第二高速缓存被配置为保持第二替换数据;并且第二高速缓存可被配置为基于第二替换数据来从第二高速缓存逐出高速缓存行。牺牲高速缓存行在第二替换数据中的初始位置可基于临界性值。在一个实施方案中,该***包括监视电路,该监视电路耦接到第二高速缓存并且被配置为提供对第二高速缓存中可分配给来自高速缓存的数据的容量的指示。高速缓存可被配置为基于对容量的指示来生成与牺牲高速缓存行一起传输的***提示。例如,高速缓存可包括耦接到控制电路的表,该表将对容量的指示的范围映射到针对***提示的值。在一个实施方案中,第二高速缓存包括第二表。第二高速缓存可被配置为基于***提示来选择第二表中的条目。第二表可被配置为输出来自所选择的条目的***点指示。
在一个实施方案中,临界状态可包括临界的和非临界的。在一个实施方案中,临界状态还可指示将一个或多个临界性水平指派给临界高速缓存行。
在一个实施方案中,控制电路可被配置为基于命中高速缓存中的第二给定高速缓存行的请求来更新替换数据。可基于指派给第二给定高速缓存行的临界性值以及替换数据中所表示的其他高速缓存行的临界性值来更新替换数据,以将存储第二给定高速缓存行的第二条目的位置移动为更接近最近访问的位置。例如,在指派给第二给定高速缓存行的临界性值小于替换数据中所表示的一个或多个其他高速缓存行的临界性值的情况下,控制电路可被配置为更新替换数据以在由该一个或多个其他高速缓存行所占据的位置之下的第二位置处表示第二给定高速缓存行。
在一个实施方案中,控制电路被配置为监视针对替换数据中的多个低位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率。控制电路可被配置为基于高速缓存命中率低于阈值水平而忽略针对牺牲选择和替换数据更新的临界性值。在一个实施方案中,控制电路可被配置为监视针对使高速缓存行从高速缓存被转发的窥探的窥探命中率。控制电路可被配置为基于窥探命中率超过阈值水平而忽略针对牺牲选择和替换数据更新的临界性值。
计算机***
接下来转向图13,示出了***700的一个实施方案的框图。在例示的实施方案中,***700包括耦接到一个或多个***设备704和外部存储器702的片上***(SOC)706的至少一个实例。提供了电源(PMU)708,其向SOC 706供应供电电压以及向存储器702和/或***设备704供应一个或多个供电电压。在一些实施方案中,可包括SOC的多于一个实例(并且也可包括多于一个存储器702)。在一个实施方案中,存储器702可包括图1和图12所示的存储器18。在一个实施方案中,SOC 706可以为图12所示的SOC 300的实例。
根据***700的类型,***设备704可包括任何期望的电路***。例如,在一个实施方案中,***704可以是移动设备(例如,个人数字助理(PDA)、智能电话等),并且***设备704可包括用于各种类型的无线通信的设备,诸如Wi-Fi、蓝牙、蜂窝、全球定位***等。***设备704还可包括额外存储装置,该额外存储装置包括RAM存储装置、固态存储装置或磁盘存储装置。***设备704可包括用户接口设备,诸如显示屏,其包括触摸显示屏或多触摸显示屏、键盘或其他输入设备、麦克风、扬声器等。在其他实施方案中,***700可为任何类型的计算***(例如,台式个人计算机、膝上型电脑、工作站、网络机顶盒等)。
外部存储器702可包括任何类型的存储器。例如,外部存储器702可以为SRAM、动态RAM(DRAM)(诸如同步DRAM(SDRAM))、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、低功率版本的DDR DRAM(例如,LPDDR、mDDR等)等等。外部存储器702可以包括存储器设备可被安装到的一个或多个存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,外部存储器702可以包括以芯片上芯片或封装上封装具体实施被安装在SOC 706上的一个或多个存储器设备。
如图所示,***700被展示为具有在广泛领域中的应用。例如,***700可用作台式计算机710、膝上型计算机720、平板电脑730、蜂窝或移动电话740或电视750(或耦接到电视的机顶盒)的芯片、电路***、部件等的一部分。还示出了智能手表和健康监视设备760。在一些实施方案中,智能手表可包括各种通用计算相关功能。例如,智能手表可提供对电子邮件、手机服务、用户日历等的访问。在各种实施方案中,健康监视设备可以是专用医疗设备或以其他方式包括专用的健康相关功能。例如,健康监视设备可监视用户的生命体征、跟踪用户与其他用户的接近度以用于流行病学社交距离的目的、联系人跟踪、在发生健康危机的情况下向紧急服务部门提供通信等。在各种实施方案中,上述智能手表可包括或可不包括一些或任何健康监视相关功能。还设想了其他可穿戴设备,诸如围绕颈部佩戴的设备、可植入人体中的设备、被设计成提供增强和/或虚拟现实体验的眼镜,等等。
***700还可用作基于云的服务770的一部分。例如,先前提及的设备和/或其他设备可访问云端中的计算资源(即,远程定位的硬件和/或软件资源)。更进一步地,***700可用于家庭的除先前提到的那些设备之外的一个或多个设备中。例如,家用电器可监视和检测值得注意的情况。例如,家中的各种设备(例如,冰箱、冷却***等)可监视设备的状态,并且在检测到特定事件的情况下向房主(或例如维修机构)提供警报。另选地,恒温器可监视家中的温度,并且可基于由房主对各种情况的反应历史来自动化调整加热/冷却***。图13中还例示了***700对各种交通运输方式的应用。例如,***700可用于飞机、火车、公共汽车、出租用汽车、私人汽车、从私人船只到游轮的水运船、(用于出租或私有的)小型摩托车等的控制和/或娱乐***。在各种情况下,***700可用于提供自动化引导(例如,自驾驶车辆)、一般***控制等。这些任何许多其他实施方案都是可能的并且被设想到的。需注意,图13所示的设备和应用仅为例示性的,并非旨在进行限制。其他设备是可能的并且被设想到的。
计算机可读存储介质
现在转向图14,示出了计算机可读存储介质800的一个实施方案的框图。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过***接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质800可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电而可能会丢失所存储的指令/数据)或为非易失性的。
图14中的计算机可访问存储介质800可存储代表SOC 300的数据库804。一般来讲,数据库804可以为可由程序读取并且直接或间接地用于制造包括SOC 300的硬件的数据库。例如,数据库可以是诸如Verilog或VHDL的高级设计语言(HDL)中硬件功能的行为级别描述或寄存器传送级别(RTL)描述。可通过合成工具读取该描述,合成工具可合成该描述以产生包括来自合成库的门电路列表的网表。网表包括一组门电路,其也表示包括SOC 300的硬件的功能。然后可放置并路由网表,以产生用于描述要应用到掩模的几何形状的数据集。然后可在各种半导体制造步骤中使用掩蔽以产生对应于SOC 300的一个或多个半导体电路。另选地,根据需要,计算机可访问存储介质800上的数据库804可以是网表(具有或不具有合成库)或数据集。
虽然计算机可访问存储介质800存储SOC 300的表示,但其他实施方案可根据需要承载SOC 100的任何部分的表示,包括图12所示的部件的任何子组。此外,数据库804可表示如图1所示的处理器10A至10N、协处理器12或两者,并且还可表示LLC 14和/或存储器控制器16。数据库804可表示上述任何部分。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加的因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本公开中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加的从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加的实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“......w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“......w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加的因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加的因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
***
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正***作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的***和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请期间想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
在本公开中可描述不同的“电路”。这些电路或“电路***”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可以是定制设计的,或取自标准库。在各种具体实施中,电路***可以视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路***。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前述段落中所讨论的,电路、单元和由其被配置为实施的功能或操作定义的其他元件。相对于彼此的此类电路/单元/部件的布置以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并且与合成电路***一起被捕获到集成电路设计中。该集成电路可包括晶体管和其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA),并且可在FPGA中实现。一组电路的设计与这些电路的之后的低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的代工厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
设想了各种实施方案,如以下编号的实施例中所阐述的:
1.一种***,包括:
一个或多个处理器,所述一个或多个处理器被配置为发出访问存储器***的存储器请求;和
高速缓存,所述高速缓存耦接到所述一个或多个处理器并且被配置为高速缓存来自所述存储器***的数据以供所述一个或多个处理器访问,其中:
所述高速缓存包括控制电路,所述控制电路被配置为将临界性值指派给高速缓存行,其中给定临界性值对应于给定高速缓存行;
在选择用于替换的牺牲高速缓存行期间,所述高速缓存被配置为优先地保留通过对应临界性值被识别为临界的高速缓存行而不是未被识别为临界的高速缓存行,其中所述高速缓存还被配置为根据由所述高速缓存保持的与所述临界性值分开的替换数据来选择所述牺牲高速缓存行;
所述控制电路被配置为检测被识别为临界的所述高速缓存行中的至少一些高速缓存行不再为临界的一个或多个指示;
并且
所述控制电路被配置为基于所述一个或多个指示来终止对所述高速缓存行的优先保留。
2.根据实施例1所述的***,其中所述控制电路被配置为监视针对所述替换数据中的多个最近最少使用的位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率,并且其中所述一个或多个指示中的一个指示基于所述高速缓存命中率低于阈值水平。
3.根据实施例1或2所述的***,其中所述控制电路被配置为监视所述高速缓存中的窥探命中发生的比率并且响应于所述窥探命中而引起对应高速缓存行的转发,并且其中所述一个或多个指示中的一个指示基于所述窥探命中率高于阈值水平。
4.根据实施例1至3中任一项所述的***,还包括协处理器,所述协处理器耦接到所述高速缓存并且被配置为执行由所述一个或多个处理器向所述协处理器发出的协处理器指令,并且其中所述一个或多个指示包括由所述协处理器向所述高速缓存发出的存储器请求。
5.根据实施例4所述的***,其中所述控制电路被配置为基于由所述一个或多个处理器生成的被指示为协处理器预取请求的预取请求来推断协处理器存储器请求。
6.根据任一前述实施例所述的***,还包括耦接到所述高速缓存的第二高速缓存,其中所述第二高速缓存被配置为提供对所述第二高速缓存中可分配给来自所述高速缓存的数据的容量的指示,并且其中所述临界性值指示非临界和多个临界性水平,并且其中所述控制电路被配置为基于对容量小于阈值的所述指示而用所述多
个临界性水平中的最低临界性水平来覆盖所述多个临界性水平。
7.根据任一前述实施例所述的***,其中所述控制电路被配置为至少部分地通过忽略针对牺牲选择和替换数据更新的所述临界性值来终止所述优先保留。
8.一种***,包括:
一个或多个处理器,所述一个或多个处理器被配置为发出访
问存储器***的存储器请求;以及
高速缓存,所述高速缓存耦接到所述一个或多个处理器并且被配置为高速缓存来自存储器***的数据以供一个或多个处理器
访问,其中所述高速缓存包括控制电路,并且其中:
所述控制电路被配置为将临界性值指派给高速缓存行,其中给定临界性值对应于给定高速缓存行;
在选择用于替换的牺牲高速缓存行期间,所述高速缓存被配置为优先地保留通过对应临界性值被识别为临界的高速缓存行而不是未被识别为临界的高速缓存行,其中所述高速缓存还被配置为根据由所述高速缓存保持的与所述临界性值分开的替换数据来选择所述牺牲高速缓存行;
所述控制电路被配置为检测被识别为临界的所述高速缓存行中的至少一些高速缓存行不再为临界的一个或多个指示;并且
所述控制电路被配置为基于所述一个或多个指示来加速被识别为临界的所述高速缓存行的逐出。
9.根据实施例8所述的***,其中所述控制电路被配置为监视针对所述替换数据中的多个最近最少使用的位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率,并且其中所述一个或多个指示中的一个指示基于所述高速缓存命中率低于阈值水平。
10.根据实施例8或9所述的***,其中所述控制电路被配置为监视所述高速缓存中的窥探命中发生的比率并且响应于所述窥探命中而引起对应高速缓存行的转发,并且其中所述一个或多个指示中的一个指示基于所述窥探命中率高于阈值水平。
11.根据实施例8至10中任一项所述的***,其中所述一个或多个指示包括由协处理器向所述高速缓存发出的存储器请求,其中所述协处理器耦接到所述高速缓存并且被配置为执行由所述一个或多个处理器向所述协处理器发出的协处理器指令。
12.根据实施例11所述的***,其中所述控制电路被配置为基于由所述一个或多个处理器生成的被指示为协处理器预取请求的预取请求来推断协处理器存储器请求。
13.根据实施例8至12中任一项所述的***,还包括第二高速缓存,所述第二高速缓存被配置为提供对所述第二高速缓存中可分配给来自所述高速缓存的数据的容量的指示,并且其中所述临界性值指示非临界和多个临界性水平,并且其中所述控制电路被配置为基于对容量小于阈值的所述指示而用所述多个临界性水平中的最低临界性水平来覆盖所述多个临界性水平。
14.根据实施例8至13中任一项所述的***,其中所述控制电路被配置为至少部分地通过忽略针对牺牲选择和替换数据更新的所述临界性值来加速逐出。
15.一种方法,包括:
将临界性值指派给高速缓存中的高速缓存行,其中给定临界
性值对应于给定高速缓存行;
在选择用于替换的牺牲高速缓存行期间,优先地保留通过对应临界性值被识别为临界的高速缓存行而不是未被识别为临界的高速缓存行,其中所述选择还基于由所述高速缓存保持的与所述临界性值分开的替换数据;
检测被识别为临界的所述高速缓存行中的至少一些高速缓存行不再为临界的一个或多个指示;以及
基于所述一个或多个指示来忽略针对牺牲选择和替换数据更新的所述临界性值。
16.根据实施例15所述的方法,还包括监视针对所述替换数据中的多个最近最少使用的位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率,并且其中所述一个或多个指示中的一个指示基于所述高速缓存命中率低于阈值水平。
17.根据实施例15或16所述的方法,还包括监视所述高速缓存中的窥探命中发生的比率并且响应于所述窥探命中而引起对应高速缓存行的转发,并且其中所述一个或多个指示中的一个指示基于所述窥探命中率高于阈值水平。
18.根据实施例15至17中任一项所述的方法,其中所述一个或多个指示包括由协处理器向所述高速缓存发出的存储器请求,其中所述协处理器耦接到所述高速缓存并且被配置为执行由一个或多个处理器向所述协处理器发出的协处理器指令。
19.根据实施例18所述的方法,还包括基于由一个或多个处理器生成的被指示为协处理器预取请求的预取请求来推断协处理器存储器请求。
20.根据实施例15至19中任一项所述的方法,还包括:
从第二高速缓存提供对所述第二高速缓存中可分配给来自所述高速缓存的数据的容量的指示,其中所述临界性值指示非临界
和多个临界性水平;以及
基于对容量小于阈值的所述指示而用所述多个临界性水平中的最低临界性水平来覆盖所述多个临界性水平。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。

Claims (20)

1.一种***,包括:
一个或多个处理器,所述一个或多个处理器被配置为发出访问存储器***的存储器请求;和
高速缓存,所述高速缓存耦接到所述一个或多个处理器并且被配置为高速缓存来自所述存储器***的数据以供所述一个或多个处理器访问,其中:
所述高速缓存包括控制电路,所述控制电路被配置为在高速缓存行被填充到所述高速缓存中时基于多个因素来将临界性值指派给所述高速缓存行;
在给定高速缓存行的填充期间,所述控制电路被配置为基于指派给给定高速缓存行的所述临界性值来在用于所述高速缓存的替换数据中的所选择的位置处表示所述给定高速缓存行;
所述控制电路被配置为基于所述替换数据来选择要从所述高速缓存逐出的牺牲高速缓存行;并且
所述控制电路被配置为基于概率来选择性地防止具有指示临界状态的临界性值的高速缓存行被选择为所述牺牲高速缓存行。
2.根据权利要求1所述的***,还包括第二高速缓存,所述第二高速缓存耦接到所述高速缓存并且被配置为针对所述高速缓存以及针对所述***中的一个或多个其他访问高速缓存的代理来高速缓存来自所述存储器***的数据,其中所述第二高速缓存被配置为存储所述牺牲高速缓存行并且保留对由所述控制电路指派给所述牺牲高速缓存行的所述临界性值的指示。
3.根据权利要求2所述的***,还包括存储器控制器,所述存储器控制器被配置为控制形成所述存储器***的至少一部分的一个或多个存储器设备,并且其中所述存储器控制器包括所述第二高速缓存。
4.根据权利要求2或3所述的***,其中所述第二高速缓存被配置为基于在从所述高速缓存逐出所述牺牲高速缓存行之后发生的另一存储器请求,在对所述高速缓存的填充中与所述牺牲高速缓存行一起提供所述临界性值。
5.根据权利要求2至4中任一项所述的***,其中所述第二高速缓存被配置为保持第二替换数据,并且其中所述第二高速缓存被配置为基于所述第二替换数据来从所述第二高速缓存逐出高速缓存行,并且其中所述牺牲高速缓存行在所述第二替换数据中的初始位置基于所述临界性值。
6.根据权利要求5所述的***,还包括监视电路,所述监视电路耦接到所述第二高速缓存并且被配置为提供对所述第二高速缓存中可分配给来自所述高速缓存的数据的容量的指示,并且其中所述高速缓存被配置为基于对容量的所述指示来生成与所述牺牲高速缓存行一起传输的***提示。
7.根据权利要求6所述的***,其中所述高速缓存包括耦接到所述控制电路的表,所述表将对容量的所述指示的范围映射到用于所述***提示的值。
8.根据权利要求6或7所述的***,其中所述第二高速缓存包括第二表,并且其中所述第二高速缓存被配置为基于所述***提示来选择所述第二表中的条目,并且其中所述第二表被配置为输出来自所选择的条目的***点指示。
9.根据任一前述权利要求所述的***,其中临界状态包括临界和非临界。
10.根据权利要求9所述的***,其中所述临界状态还指示多个临界性水平中的一个临界性水平被指派给临界高速缓存行。
11.根据任一前述权利要求所述的***,其中所述控制电路被配置为基于命中所述高速缓存中的第二给定高速缓存行的请求来更新所述替换数据,并且其中基于指派给所述第二给定高速缓存行的临界性值以及所述替换数据中所表示的其他高速缓存行的临界性值来更新所述替换数据,以将存储所述第二给定高速缓存行的第二条目的位置移动为更接近最近访问的位置。
12.根据权利要求11所述的***,其中,在指派给所述第二给定高速缓存行的所述临界性值小于所述替换数据中所表示的一个或多个其他高速缓存行的所述临界性值的情况下,所述控制电路被配置为更新所述替换数据以在低于由所述一个或多个其他高速缓存行所占据的位置的第二位置处表示所述第二给定高速缓存行。
13.根据任一前述权利要求所述的***,其中所述控制电路被配置为监视针对所述替换数据中的多个低位置中且具有指示临界状态的临界性值的高速缓存行的高速缓存命中率,并且其中所述控制电路被配置为基于所述高速缓存命中率低于阈值水平而针对牺牲选择和替换数据更新忽略所述临界性值。
14.根据任一前述权利要求所述的***,其中所述控制电路被配置为监视针对使高速缓存行从所述高速缓存被转发的窥探的窥探命中率,并且其中所述控制电路被配置为基于所述窥探命中率超过阈值水平而针对牺牲选择和替换数据更新忽略所述临界性值。
15.一种方法,包括:
在高速缓存行被填充到高速缓存中时基于多个因素来将临界性值指派给所述高速缓存中的所述高速缓存行;
基于指派给给定高速缓存行的所述临界性值来在所述给定高速缓存行的填充期间在用于所述高速缓存的替换数据中的所选择的位置处表示所述给定高速缓存行;以及
基于所述替换数据来选择要从所述高速缓存逐出的牺牲高速缓存行,包括基于概率来选择性地防止具有指示临界状态的临界性值的高速缓存行被选择为所述牺牲高速缓存行。
16.根据权利要求15所述的方法,还包括:
将来自存储器***的针对所述高速缓存的数据缓存在耦接到所述高速缓存的第二高速缓存中,包括存储所述牺牲高速缓存行;
保留对由所述高速缓存指派给所述牺牲高速缓存行的所述临界性值的指示;以及
基于在从所述高速缓存逐出所述牺牲高速缓存行之后发生的另一存储器请求,在对所述高速缓存的填充中与所述牺牲高速缓存行一起提供所述临界性值。
17.根据权利要求16所述的方法,还包括:
将第二替换数据保持在所述第二高速缓存中,其中所述第二高速缓存被配置为基于所述第二替换数据来从所述第二高速缓存逐出高速缓存行;以及
基于所述临界性值来在所述第二替换数据中的初始位置处***所述牺牲高速缓存行。
18.根据权利要求15至17中任一项所述的方法,其中临界状态包括临界和非临界。
19.根据权利要求18所述的方法,其中所述临界状态还指示多个临界性水平中的一个临界性水平被指派给临界高速缓存行。
20.一种高速缓存,所述高速缓存被配置为高速缓存来自存储器***的数据以供一个或多个处理器访问,包括控制电路,其中:
所述控制电路被配置为在高速缓存行被填充到所述高速缓存中时基于多个因素来将临界性值指派给所述高速缓存行;
在给定高速缓存行的填充期间,所述控制电路被配置为基于指派给给定高速缓存行的所述临界性值来在用于所述高速缓存的替换数据中的所选择的位置处表示所述给定高速缓存行;
所述控制电路被配置为基于所述替换数据来选择要从所述高速缓存逐出的牺牲高速缓存行;并且
所述控制电路被配置为基于概率来选择性地防止具有指示临界状态的临界性值的高速缓存行被选择为所述牺牲高速缓存行。
CN202280058339.XA 2021-08-31 2022-07-28 通知临界性的高速缓存策略 Pending CN117897690A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163239258P 2021-08-31 2021-08-31
US63/239,258 2021-08-31
US17/727,031 US11921640B2 (en) 2021-08-31 2022-04-22 Mitigating retention of previously-critical cache lines
US17/727,031 2022-04-22
US17/727,020 2022-04-22
PCT/US2022/038712 WO2023033958A1 (en) 2021-08-31 2022-07-28 Criticality-informed caching policies

Publications (1)

Publication Number Publication Date
CN117897690A true CN117897690A (zh) 2024-04-16

Family

ID=85288467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280058339.XA Pending CN117897690A (zh) 2021-08-31 2022-07-28 通知临界性的高速缓存策略

Country Status (6)

Country Link
US (3) US11822480B2 (zh)
KR (1) KR20240033103A (zh)
CN (1) CN117897690A (zh)
DE (1) DE112022003361T5 (zh)
TW (1) TWI835272B (zh)
WO (1) WO2023033958A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240184718A1 (en) * 2022-12-02 2024-06-06 SiFive, Inc. Downgrading a Permission Associated with Data Stored in a Cache

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1955948A (zh) * 2005-10-26 2007-05-02 国际商业机器公司 用于管理高速缓存数据的数字数据处理设备和方法
US20110145506A1 (en) * 2009-12-16 2011-06-16 Naveen Cherukuri Replacing Cache Lines In A Cache Memory
US20130151777A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Hit Rate
CN108664415A (zh) * 2017-03-27 2018-10-16 三星电子株式会社 共享替换策略计算机高速缓存***和方法
CN108885590A (zh) * 2016-04-08 2018-11-23 高通股份有限公司 开销感知高速缓存替换
CN109074319A (zh) * 2016-04-08 2018-12-21 高通股份有限公司 高速缓存中的分配的选择性绕过
CN109154912A (zh) * 2016-06-13 2019-01-04 超威半导体公司 根据另一个高速缓存中条目的可用性替换高速缓存条目

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2312444A1 (en) * 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
US8069308B2 (en) 2008-02-13 2011-11-29 Honeywell International Inc. Cache pooling for computing systems
US8838901B2 (en) 2010-05-07 2014-09-16 International Business Machines Corporation Coordinated writeback of dirty cachelines
US9418019B2 (en) 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Cache replacement policy methods and systems
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US20160255169A1 (en) 2015-02-27 2016-09-01 Futurewei Technologies, Inc. Method and system for smart object eviction for proxy cache
US9733978B2 (en) 2015-08-27 2017-08-15 Qualcomm Incorporated Data management for multiple processing units using data transfer costs
US10289558B2 (en) 2016-03-04 2019-05-14 Western Digital Technologies, Inc. Apparatus and method for reducing storage class memory write-backs
US10489306B2 (en) 2016-05-17 2019-11-26 Arm Limited Apparatus and method for processing data, including cache entry replacement performed based upon content data read from candidates selected using victim selection
JP6708019B2 (ja) * 2016-06-29 2020-06-10 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US10846241B2 (en) 2018-08-29 2020-11-24 Vmware, Inc. Score-based cache admission and eviction
TWI688859B (zh) 2018-12-19 2020-03-21 財團法人工業技術研究院 記憶體控制器與記憶體頁面管理方法
US20210390053A1 (en) * 2020-06-15 2021-12-16 Micron Technology, Inc. Host-Assisted Memory-Side Prefetcher
US20210406170A1 (en) 2020-06-24 2021-12-30 MemRay Corporation Flash-Based Coprocessor

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1955948A (zh) * 2005-10-26 2007-05-02 国际商业机器公司 用于管理高速缓存数据的数字数据处理设备和方法
US20110145506A1 (en) * 2009-12-16 2011-06-16 Naveen Cherukuri Replacing Cache Lines In A Cache Memory
US20130151777A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Dynamic Inclusive Policy in a Hybrid Cache Hierarchy Using Hit Rate
CN108885590A (zh) * 2016-04-08 2018-11-23 高通股份有限公司 开销感知高速缓存替换
CN109074319A (zh) * 2016-04-08 2018-12-21 高通股份有限公司 高速缓存中的分配的选择性绕过
CN109154912A (zh) * 2016-06-13 2019-01-04 超威半导体公司 根据另一个高速缓存中条目的可用性替换高速缓存条目
CN108664415A (zh) * 2017-03-27 2018-10-16 三星电子株式会社 共享替换策略计算机高速缓存***和方法

Also Published As

Publication number Publication date
WO2023033958A1 (en) 2023-03-09
US11921640B2 (en) 2024-03-05
TWI835272B (zh) 2024-03-11
KR20240033103A (ko) 2024-03-12
US20240168887A1 (en) 2024-05-23
US11822480B2 (en) 2023-11-21
US20230066236A1 (en) 2023-03-02
DE112022003361T5 (de) 2024-04-18
TW202311966A (zh) 2023-03-16
US20230060225A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
US8583894B2 (en) Hybrid prefetch method and apparatus
US9235514B2 (en) Predicting outcomes for memory requests in a cache memory
US9286223B2 (en) Merging demand load requests with prefetch load requests
US11210100B2 (en) Coprocessor operation bundling
CN102498477A (zh) Tlb预取
US20130262780A1 (en) Apparatus and Method for Fast Cache Shutdown
US20240168887A1 (en) Criticality-Informed Caching Policies with Multiple Criticality Levels
US12007901B2 (en) Memory cache with partial cache line valid states
US20240126457A1 (en) Dynamic Allocation of Cache Memory as RAM
GB2550048A (en) Read discards in a processor system with write-back caches
KR20230076814A (ko) 제외 영역을 갖는 dsb 동작
CN116057514A (zh) 可扩展高速缓存一致性协议
JP2023550231A (ja) 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化
TW202422346A (zh) 控制快取原則的系統及方法,及快取區
US11550716B2 (en) I/O agent
US11704245B2 (en) Dynamic allocation of cache memory as RAM
US11630771B2 (en) Poison mechanisms for deferred invalidates
KR20240034258A (ko) Ram으로서의 캐시 메모리의 동적 할당
CN117795489A (zh) 缓存子***的预测确认

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