CN118176491A - 高速缓存行一致性状态升级 - Google Patents
高速缓存行一致性状态升级 Download PDFInfo
- Publication number
- CN118176491A CN118176491A CN202280072928.3A CN202280072928A CN118176491A CN 118176491 A CN118176491 A CN 118176491A CN 202280072928 A CN202280072928 A CN 202280072928A CN 118176491 A CN118176491 A CN 118176491A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- request
- line
- exclusive state
- 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
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims description 18
- 239000000523 sample Substances 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 56
- 238000010586 diagram Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache 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)
-
- 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/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
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
相关申请的交叉引用
本申请要求2021年10月29日提交的美国非临时专利申请17/514,792号的权益,该非临时专利申请的内容据此以引用方式并入本文。
背景技术
现代微处理器实现用于高通量的大量特征。一些此类特征包括具有高度并行架构以及推测性地进行执行。对此类特征的改进在不断进行。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是其中可实现一个或多个公开的实施方案的示例性设备的框图;
图2是位于图1的处理器内的指令执行流水线的框图;
图3是根据示例的计算机系统的框图;
图4A至图4D例示根据示例的与升级高速缓存行一致性状态相关的高速缓存操作;并且
图5是根据示例的用于升级高速缓存行一致性状态的方法的流程图。
具体实施方式
本发明提供了用于执行高速缓存操作的技术。技术包括记录指示高速缓存行为可排他升级的条目;从高速缓存中移除高速缓存行;以及将高速缓存行插入到高速缓存中的请求转换为将高速缓存行以排他状态插入高速缓存中的请求。
图1是其中可实现本公开的方面的示例性设备100的框图。设备100包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括一个或多个处理器102、存储器层次结构104、存储设备106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的附加部件。
一个或多个处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一裸片上的CPU和GPU、或一个或多个处理器核心,其中每个处理器核心为CPU或GPU。在一些示例中,一个或多个处理器102包括任何数量的处理器。在一些示例中,一个或多个处理器102包括一个或多个处理器芯片。在一些示例中,每个处理器芯片包括一个或多个处理器核心。
存储器层次结构104的一部分或全部可以位于与一个或多个处理器102中的一个或多个处理器相同的裸片上,或者可以部分地或完全地位于与一个或多个处理器102不同处。存储器层次结构104包括例如一个或多个高速缓存、一个或多个易失性存储器、一个或多个非易失性存储器和/或其他存储器,并且可以包括一种或多种类型的一个或多个随机存取存储器(“RAM”)。
在一些示例中,存储器层次结构104的元件布置在包括一个或多个处理器102的元件的层次结构中。图3和图4A至图4D中提供此类布置的示例。
存储设备106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于传送和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于传送和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并且允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并且允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。
图2是位于图1的一个或多个处理器102内的指令执行流水线200的框图。在各种示例中,图1的一个或多个处理器102的处理器核心中的任一个处理器核心如图2中所例示来实现。
指令执行流水线200从存储器中检索指令并且执行该指令,将数据输出到存储器并且修改指令执行流水线200内的元件(诸如,寄存器文件218内的寄存器)的状态。
指令执行流水线200包括:指令提取单元204,该指令提取单元被配置为经由指令高速缓存202从系统存储器(诸如存储器104)中提取指令;解码器208,该解码器被配置为对所提取的指令进行解码;功能单元216,该功能单元被配置为执行计算以处理指令;加载存储单元214,该加载存储单元被配置为经由数据高速缓存220从系统存储器中加载数据或将数据存储到该系统存储器;以及寄存器文件218,该寄存器文件包括存储用于指令的工作数据的寄存器。重排序缓冲器210跟踪当前进行中的指令,并且确保指令的有序引退,尽管在进行中时允许无序执行。“进行中的”指令是指已由重排序缓冲器210接收但尚未将结果提交到处理器的架构状态(例如,将结果写入到寄存器文件等)的指令。保留站212维护进行中的指令并且跟踪指令操作数。当所有操作数都准备好执行特定指令时,保留站212将该指令发送到功能单元216或加载/存储单元214以供执行。完成的指令在重排序缓冲器210中被标记用于引退,并且当在重排序缓冲器队列210的头部时被引退。引退是指将指令的结果提交到处理器的架构状态的行为。例如,通过加法指令将加法结果写入到寄存器、通过加载指令将加载的值写入到寄存器或通过分支指令致使指令流跳转到新位置均为指令引退的示例。
指令执行流水线200的各种元件经由公共数据总线222来通信。例如,功能单元216和加载/存储单元214将结果写入到公共数据总线222,该结果可由保留站212读取以用于执行相关指令,并且可由重排序缓冲器210读取作为已完成执行的进行中的指令的最终处理结果。加载/存储单元214还从公共数据总线222读取数据。例如,加载/存储单元214从来自公共数据总线222的已完成指令读取结果并且经由数据高速缓存220将该结果写入到存储器以用于存储指令。
图3是根据示例的计算机系统300的框图。在一些示例中,计算机系统300是图1的计算机系统100。计算机系统300包括处理器组302、一个或多个系统级存储器304、系统存储器控制器306和其他系统元件308。
处理器组302包括一个或多个处理器芯片310。每个处理器芯片310包括处理器芯片级高速缓存312和一个或多个处理器核心314。每个处理器核心314具有相关联的核心级高速缓存316。处理器核心314中的每个处理器核心包括一个或多个执行流水线,例如图2的指令执行流水线200。
图3中所例示的高速缓存和存储器并行操作,并且因此使用一致性协议来确保数据一致性。这种协议的一个示例是修改的排他共享无效(“MESI”)协议。每个高速缓存行包括这四个状态之一的指示。修改状态指示存储在特定高速缓存中的高速缓存行的副本相对于存储在后备存储器中的副本被修改,并且因此当高速缓存行被移出时高速缓存行必须被写入到后备存储器。排他状态指示高速缓存行存储在特定高速缓存中而不存储在层次结构的相同级别处的任何其他高速缓存中。应注意,被标记为排他的高速缓存行可以被存储在层次结构的更高级别中。例如,以排他状态存储在第0级高速缓存中的高速缓存行也可以存储在直接位于第0级高速缓存之上的第1级高速缓存中。共享状态指示高速缓存行被存储在层次结构的相同级别处的多个高速缓存中。无效状态指示高速缓存行在该高速缓存行被标记为无效的特定高速缓存内无效(尽管另一高速缓存可以存储该高速缓存行的有效副本)。
每个处理器核心314具有相关联的核心级高速缓存316。当处理器核心314执行诸如加载操作或存储操作之类的存储器操作时,处理器核心314确定存储用于存储器操作的数据的高速缓存行是否位于与处理器核心314相关联的核心级高速缓存316内。如果此类高速缓存行不位于核心级高速缓存316内,则核心级高速缓存316尝试将该高速缓存行从诸如处理器芯片级高速缓存312的更高级高速缓存提取回到该核心级高速缓存316中。处理器芯片级高速缓存312既用作更高级高速缓存又用作控制器,该控制器管理处理器芯片级高速缓存312和同一处理器芯片310内的所有核心级高速缓存316的一致性协议。因此,处理器芯片级高速缓存312检查其自身以确定所请求的高速缓存行是否存储在其中,以便将该高速缓存行提供给请求处理器核心314。处理器芯片级高速缓存312将高速缓存行从其自己的内容提供给请求核心314,或者一旦从层次结构中更高的存储器中取出就提供给该请求核心。
处理器芯片级高速缓存312管理核心级高速缓存316的一致性协议。一般而言,处理器芯片级高速缓存312管理核心级高速缓存316内的高速缓存行的协议状态,使得如果任何高速缓存行在特定核心级高速缓存316中处于排他状态,则没有其他核心级高速缓存316使该高速缓存行处于除无效状态之外的任何状态。多个核心级高速缓存316被准许使高速缓存行处于共享状态。
该协议在逐级基础上工作。更具体地说,在存储器层次结构的每一级别处,准许该级别内的每一元件使高速缓存行处于协议的状态的某个子集中。在一个示例中,在处理器组302的级别处,准许每一芯片310(因此,每一处理器芯片级高速缓存312)使高速缓存行处于状态中的一个状态(例如,共享状态或排他状态)。用于层次结构的特定级别的控制器管理该级别处的协议。因此,处理器组存储器320管理处理器芯片级高速缓存312的状态。任何特定处理器芯片310的处理器芯片级高速缓存312管理核心级高速缓存316的状态,并且系统存储器控制器306管理可以存储特定高速缓存行的处理器组302和其他系统元件308的状态。
当处理器核心314执行存储指令时,处理器核心314请求将包括要被写入的数据的高速缓存行以排他状态置于相关联的核心级高速缓存316中。如果高速缓存行已经在高速缓存中并且不处于排他状态,则请求为将该高速缓存行转换为排他状态的请求。如果高速缓存行不在高速缓存中,则请求为将高速缓存行加载到高速缓存中并且使该高速缓存行在高速缓存中处于排他状态的请求。
在存储指令访问已经在高速缓存中但不处于排他状态的高速缓存行的情况下,将该高速缓存行置于排他状态的动作表示增加等待时间的大量处理工作。在一些示例中,该工作包括请求存储高速缓存行的副本的并行高速缓存(即,除了“分级地高于”核心级高速缓存316的高速缓存之外的高速缓存)使该高速缓存行的副本无效。如果第二高速缓存中的未命中为从第一高速缓存或从分级地高于第一高速缓存的高速缓存服务的,则第一高速缓存“分级地高于”第二高速缓存。请求这些并行高速缓存使其副本无效的动作在本文中有时被称为“全局无效请求”或具有类似术语(例如,“全局无效命令”)。
出于至少这些原因,现在提供用于减轻与管理用于存储指令的高速缓存行相关联的不利影响的技术。根据这些技术,在核心级高速缓存316中发生高速缓存未命中的情况下,高速缓存控制器(例如,核心级高速缓存316的高速缓存控制器)将条目记录到元数据存储器317中,高速缓存行以非排他状态被带入核心级高速缓存316中,并且高速缓存行随后被修改为排他状态。条目指示高速缓存行被认为是“可排他升级的”。
在诸如加载或存储的存储器指令、从存储器读取或写入的任何指令、或任何硬件预取机制试图访问不在核心级高速缓存316中的高速缓存行的情况下,发生高速缓存未命中。为了服务于该高速缓存未命中,高速缓存控制器从高速缓存层次结构中更高的高速缓存或存储器获得高速缓存行,并且将该高速缓存行置于核心级高速缓存316中。高速缓存控制器还将该高速缓存行的一致性状态设置为可能状态中的一个状态,诸如排他或共享。
如上文所陈述,在发生需要处于排他状态的高速缓存行并且高速缓存行已经在高速缓存中但处于非排他状态的指令的情况下,高速缓存控制器将高速缓存行升级到排他状态并且高速缓存控制器在用于该高速缓存行的条目中记录该高速缓存行被认为是“可排他升级”。在稍后的某个时间,高速缓存行被移出或以其他方式从高速缓存中移除(这可由于任何技术上可行的原因而发生,诸如由于随后的高速缓存存储器访问导致在需要移出的情况下读取高速缓存行)。此后,对于诸如加载、存储或硬件预取的存储器访问指令,再次读取到高速缓存行。此时,高速缓存控制器在元数据存储器317中检查与高速缓存行相关联的条目。高速缓存控制器确定高速缓存行存在条目,并且该条目指示高速缓存行为可排他升级的。响应于该确定,高速缓存控制器以排他状态将高速缓存行读取到高速缓存中,而不管存储器访问指令的类型。
换句话说,高速缓存控制器记录哪些高速缓存行被读取到具有太“弱”的一致性状态的高速缓存中。这种“太弱”的指示表明,因为高速缓存行是在非排他状态下读取到的,但是然后被设为排他的,所以预计该高速缓存行随后需要处于排他状态。因此,当“太弱”的高速缓存行在移出之后再次被读回到高速缓存中时,高速缓存控制器读取处于排他状态的该高速缓存行,使得预计的存储指令(或需要处于排他状态的高速缓存行的其他类型的指令)能够在没有与将高速缓存行的一致性状态转换为排他状态相关联的工作的情况下操作。
以上关于图3描述的操作涉及将高速缓存行置于高速缓存中。在一些示例中,该高速缓存为图3的核心级高速缓存316。在其他示例中,任何技术上可行的高速缓存为存储高速缓存行的高速缓存。在各种具体实施中,“存储指令”为写入存储器并且因此需要对高速缓存行的排他访问的任何指令。
图4A至图4D例示用于“升级”高速缓存行的示例操作。在一些示例中,高速缓存406为图3的核心级高速缓存316。在一些示例中,元数据存储器404为图3的元数据存储器317。图4A例示用于将高速缓存行以非排他模式存储到高速缓存中的操作。在图4A中,处理器核心314执行存储器访问指令401。存储器访问指令或硬件预取指向高速缓存406中未存储高速缓存行的存储器地址。另外,存储器访问指令为导致高速缓存行以非排他状态(诸如,以共享状态)被带入高速缓存406的类型。导致高速缓存行以非排他状态被带入高速缓存的示例存储器访问指令为加载指令,尽管任何技术上可行的指令或硬件预取可导致高速缓存行以非排他状态被带入高速缓存。因此,高速缓存控制器402将包括由存储器访问指令401请求的数据的高速缓存行带入高速缓存406中,并且将该高速缓存行的一致性状态设置为非排他的。在一些示例中,将高速缓存行以非排他状态带入高速缓存406中的请求为一致性状态不可知请求,并且响应于此类请求,高速缓存控制器402被允许将高速缓存行以排他状态或非排他状态存储到高速缓存406中。在图4A所示的实例中,高速缓存行以非排他状态存储在高速缓存406中。
在图4B中,处理器核心314执行另一存储器访问指令405。该存储器访问指令405为需要处于排他模式的高速缓存行的类型。访问的高速缓存行为与图4A中被读取到高速缓存406的高速缓存行相同的高速缓存行。高速缓存控制器402接收访问处于排他状态的高速缓存行的请求。响应于该请求,高速缓存控制器402将高速缓存行在高速缓存406中转换为排他状态。另外,因为高速缓存行以非排他状态被带入高速缓存中并且然后被升级到排他状态,所以高速缓存控制器402在元数据存储器404中记录指示高速缓存行为“可排他升级”的条目。在一些示例中,高速缓存控制器402响应于检测到指令导致高速缓存控制器402发送系统范围的无效命令(也称为“全局无效命令”或“全局无效请求”)而将条目记录在元数据存储器404中。系统范围的无效命令为对并行高速缓存存储器请求使高速缓存行无效以便一个高速缓存获得处于排他状态的高速缓存行的命令。
在图4C中,由处理器核心314执行的存储器访问指令405请求访问除了被带入图4A中的高速缓存406中的高速缓存行之外的高速缓存行。该访问使得另一个高速缓存行被带入高速缓存406中。另外,由于针对高速缓存406实现的高速缓存替换策略,高速缓存控制器402使得带入图4A中的高速缓存406中的高速缓存行被从高速缓存406中移出。注意,尽管移出被示出为从高速缓存406中移除高速缓存行的机制,但是任何技术上可行的机制都可以从高速缓存中移除高速缓存行。一个示例为无效探测,其中另一个处理核心314请求访问处于排他状态的高速缓存行,这导致图4A和图4B中所示的处理核心314使其自己的副本无效。无效的高速缓存行实际上与正从高速缓存406移除的高速缓存行相同。
在图4D中,处理器核心314执行访问被带入图4A中的高速缓存406中的高速缓存行的存储器的存储器访问指令407。高速缓存控制器402检查元数据存储器404并且确定高速缓存行处于“可排他升级”状态。响应于该确定,高速缓存控制器402使得由存储器访问指令407请求的高速缓存行以排他状态带入高速缓存406中,而不管存储器访问指令407是需要以排他状态还是以诸如共享状态的不同状态访问的类型。例如,如果存储器访问指令407是请求处于非排他状态的高速缓存行的类型或者是状态不可知请求,则高速缓存控制器402将该请求“升级”到排他访问请求,这导致高速缓存行以排他状态被带入高速缓存406中。
图5为根据示例的用于执行高速缓存操作的方法500的流程图。尽管参考图1至图4D的系统进行描述,但本领域的技术人员将理解,被配置为按任何技术上可行的顺序执行方法500的步骤的任何系统都落入本公开的范围内。
在步骤502,高速缓存406将高速缓存行以非排他状态插入。非排他状态为不允许写入的状态,例如因为其他并行高速缓存存储高速缓存行的副本或其他原因。在一些示例中,诸如加载指令的指令执行并且导致高速缓存406中的未命中。为了服务于该未命中,高速缓存控制器402从诸如层次结构中的较高高速缓存的另一存储器读取高速缓存行并且将该高速缓存行存储到高速缓存406中。高速缓存控制器402将一致性状态设置为诸如共享的非排他状态。
在步骤504,高速缓存控制器402检测到发生高速缓存行到排他状态的升级。响应于该检测,高速缓存控制器402在元数据存储器404中记录高速缓存行为可排他升级的指示。在一些示例中,发生高速缓存行到排他状态的升级的检测包括或体现为高速缓存控制器402向其他高速缓存存储器传送全局无效请求的检测。
在步骤506,从高速缓存406中移除步骤502和504的高速缓存行。在一些示例中,该移除为高速缓存行的移出。移出为当另一高速缓存行要被带入高速缓存406中时对高速缓存“太满”的响应。更具体地,用于该新高速缓存行的指定“槽”全部被有效的高速缓存行占用,并且因此高速缓存控制器402将移除高速缓存行中的一个。高速缓存控制器402例如根据移出策略(诸如最近最少使用的或任何其他技术上可行的移出策略)移出这些高速缓存行中的一个。在另一示例中,高速缓存行由于被不同的处理核心314“探测离开”而被移除。由第二处理核心314从与第一处理核心314相关联的高速缓存“探测离开”高速缓存行意味着第二处理核心314在不允许第一处理核心314访问该高速缓存行(诸如排他的)的状态下请求该高速缓存行,这因此要求第一处理核心314使第一处理核心314的高速缓存中的高速缓存行的副本无效。应当理解,步骤506包括用于从高速缓存中移除高速缓存行的任何技术上可行的原因,其中术语“移除”包括将高速缓存行的状态设置为无效。
在步骤508,高速缓存控制器402检测高速缓存行被再次请求插入高速缓存406(在步骤502和504中高速缓存行被存储到的同一高速缓存)。在各种示例中,响应于针对处理核心314的存储器访问指令的高速缓存未命中而发生到高速缓存406中的这种插入,该处理核心为发生步骤502和步骤504的操作的同一处理核心314。高速缓存行将以非排他状态插入高速缓存406中。在一些示例中,处于非排他状态的这种插入是由于诸如加载指令或硬件预取的指令。响应于该高速缓存行处于排他可升级状态的指示,基于元数据存储器404的内容,高速缓存控制器402将以非排他状态插入高速缓存行的请求转换为以排他状态将高速缓存行插入高速缓存的请求。
在一些示例中,以非排他状态将高速缓存行插入高速缓存中的步骤508的请求为状态不可知请求。此类状态不可知请求为以任何状态(诸如非排他状态或排他状态)将高速缓存行存储到高速缓存406中的请求。因此,此类请求为允许非排他状态或排他状态的请求。另外,在此类示例中,该请求的转换为将请求转换为需要排他的请求。换句话说,在这些示例中,高速缓存控制器402将允许非排他或排他状态的状态不可知请求转换为不允许非排他状态并且需要排他状态的需要排他的请求。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
图中所例示的各种元件可实现为硬件(例如,电路系统)、在处理器上执行的软件或硬件与软件的组合。在各种示例中,诸如处理器-存储器元件410、处理器芯片310、系统元件308、系统级存储器304、系统存储器控制器306、处理器芯片级高速缓存312、处理器组存储器320、处理器核心314、核心级高速缓存316和元数据存储器317、高速缓存控制器402、元数据存储器404和高速缓存406以及指令执行管线200和计算机系统100的所例示的单元的每一块可实现为硬件(例如,硬件处理器和/或电路)、软件或它们的组合。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程来制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现实施方案的方面的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
***
Claims (20)
1.一种方法,所述方法包括:
记录指示高速缓存行为可排他升级的条目;
从高速缓存中移除所述高速缓存行;以及
将所述高速缓存行插入到所述高速缓存中的请求转换为将所述高速缓存行以排他状态插入所述高速缓存中的请求。
2.根据权利要求1所述的方法,其中响应于将高速缓存中的高速缓存行升级到排他状态来执行记录所述条目。
3.根据权利要求2所述的方法,其中在升级所述高速缓存中处于排他状态的所述高速缓存行之前,所述高速缓存行以非排他状态处于所述高速缓存中。
4.根据权利要求2所述的方法,其中响应于将所述高速缓存中的所述高速缓存行升级到所述排他状态而记录所述条目包括确定针对所述高速缓存行传送全局无效请求。
5.根据权利要求1所述的方法,其中由于移出或无效探测而发生从所述高速缓存中移除所述高速缓存行。
6.根据权利要求1所述的方法,其中响应于将所述高速缓存行插入所述高速缓存中的所述请求,将所述请求转换为将所述高速缓存行以排他状态插入所述高速缓存中的请求包括检测指示所述高速缓存行为可排他升级的所述条目。
7.根据权利要求1所述的方法,其中将所述高速缓存行插入到所述高速缓存中的所述请求包括一致性状态不可知请求。
8.根据权利要求1所述的方法,其中将所述高速缓存行存储在所述高速缓存中的所述请求包括将所述高速缓存行以非排他状态插入的请求。
9.根据权利要求2所述的方法,其中响应于将所述高速缓存中的所述高速缓存行升级到所述排他状态而记录所述条目包括确定在所述高速缓存行处于非排他状态时对所述高速缓存行执行存储指令。
10.一种系统,所述系统包括:
高速缓存;和
高速缓存控制器,所述高速缓存控制器被配置为:
记录指示高速缓存行为可排他升级的条目;
从所述高速缓存中移除所述高速缓存行;以及
将所述高速缓存行插入到所述高速缓存中的请求转换为将所述高速缓存行以排他状态插入所述高速缓存中的请求。
11.根据权利要求10所述的系统,其中响应于将高速缓存中的高速缓存行升级到排他状态来执行记录所述条目。
12.根据权利要求11所述的系统,其中在升级所述高速缓存中处于排他状态的所述高速缓存行之前,所述高速缓存行以非排他状态处于所述高速缓存中。
13.根据权利要求11所述的系统,其中响应于将所述高速缓存中的所述高速缓存行升级到所述排他状态而记录所述条目包括确定针对所述高速缓存行传送全局无效请求。
14.根据权利要求10所述的系统,其中由于或无效探测而发生从所述高速缓存中移除所述高速缓存行。
15.根据权利要求10所述的系统,其中响应于将所述高速缓存行插入所述高速缓存中的所述请求,将所述请求转换为将所述高速缓存行以排他状态插入所述高速缓存中的请求包括检测指示所述高速缓存行为可排他升级的所述条目。
16.根据权利要求10所述的系统,其中将所述高速缓存行插入所述高速缓存中的所述请求包括一致性状态不可知请求。
17.根据权利要求10所述的系统,其中将所述高速缓存行存储在所述高速缓存中的所述请求包括将所述高速缓存行以非排他状态插入的请求。
18.根据权利要求11所述的系统,其中响应于将所述高速缓存中的所述高速缓存行升级到所述排他状态而记录所述条目包括确定在所述高速缓存行处于非排他状态时对所述高速缓存行执行存储指令。
19.一种系统,所述系统包括:
处理器;
高速缓存;和
高速缓存控制器,所述高速缓存控制器被配置为:
记录指示高速缓存行为可排他升级的条目;
从所述高速缓存中移除所述高速缓存行;以及
将所述高速缓存行插入到所述高速缓存中的请求转换为将所述高速缓存行以排他状态插入所述高速缓存中的请求。
20.根据权利要求19所述的系统,其中响应于将高速缓存中的高速缓存行升级到排他状态来执行记录所述条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/514,792 US11836085B2 (en) | 2021-10-29 | 2021-10-29 | Cache line coherence state upgrade |
US17/514,792 | 2021-10-29 | ||
PCT/US2022/046909 WO2023076062A1 (en) | 2021-10-29 | 2022-10-17 | Cache line coherence state upgrade |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118176491A true CN118176491A (zh) | 2024-06-11 |
Family
ID=86145505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280072928.3A Pending CN118176491A (zh) | 2021-10-29 | 2022-10-17 | 高速缓存行一致性状态升级 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11836085B2 (zh) |
EP (1) | EP4423614A1 (zh) |
JP (1) | JP2024538196A (zh) |
KR (1) | KR20240089035A (zh) |
CN (1) | CN118176491A (zh) |
WO (1) | WO2023076062A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260117B1 (en) * | 1997-09-18 | 2001-07-10 | International Business Machines Corporation | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency |
US6738868B2 (en) | 2000-06-10 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes |
US6725343B2 (en) | 2000-10-05 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system |
US6745297B2 (en) * | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US7584331B2 (en) | 2005-06-06 | 2009-09-01 | International Business Machines Corporation | Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout |
US9146869B2 (en) * | 2012-12-05 | 2015-09-29 | Advanced Micro Devices, Inc. | State encoding for cache lines |
US20150378904A1 (en) | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Allocating read blocks to a thread in a transaction using user specified logical addresses |
CN107341114B (zh) | 2016-04-29 | 2021-06-01 | 华为技术有限公司 | 一种目录管理的方法、节点控制器和系统 |
US9990292B2 (en) * | 2016-06-29 | 2018-06-05 | Arm Limited | Progressive fine to coarse grain snoop filter |
US11487672B1 (en) * | 2021-08-20 | 2022-11-01 | International Business Machines Corporation | Multiple copy scoping bits for cache memory |
-
2021
- 2021-10-29 US US17/514,792 patent/US11836085B2/en active Active
-
2022
- 2022-10-17 WO PCT/US2022/046909 patent/WO2023076062A1/en active Application Filing
- 2022-10-17 JP JP2024523440A patent/JP2024538196A/ja active Pending
- 2022-10-17 EP EP22887941.7A patent/EP4423614A1/en active Pending
- 2022-10-17 CN CN202280072928.3A patent/CN118176491A/zh active Pending
- 2022-10-17 KR KR1020247013584A patent/KR20240089035A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023076062A1 (en) | 2023-05-04 |
EP4423614A1 (en) | 2024-09-04 |
US11836085B2 (en) | 2023-12-05 |
JP2024538196A (ja) | 2024-10-18 |
KR20240089035A (ko) | 2024-06-20 |
US20230136114A1 (en) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8713263B2 (en) | Out-of-order load/store queue structure | |
US8706973B2 (en) | Unbounded transactional memory system and method | |
US11113065B2 (en) | Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers | |
US10866892B2 (en) | Establishing dependency in a resource retry queue | |
US11836085B2 (en) | Cache line coherence state upgrade | |
US11822479B2 (en) | History-based selective cache line invalidation requests | |
US11630772B1 (en) | Suppressing cache line modification | |
US11755494B2 (en) | Cache line coherence state downgrade | |
US20230099256A1 (en) | Storing an indication of a specific data pattern in spare directory entries | |
US20230101748A1 (en) | Weak cache line invalidation requests for speculatively executing instructions | |
JP2024541869A (ja) | 履歴ベースの選択的キャッシュライン無効化要求 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |