CN118056192A - 将特定数据模式的指示存储在备用目录条目中 - Google Patents
将特定数据模式的指示存储在备用目录条目中 Download PDFInfo
- Publication number
- CN118056192A CN118056192A CN202280065277.5A CN202280065277A CN118056192A CN 118056192 A CN118056192 A CN 118056192A CN 202280065277 A CN202280065277 A CN 202280065277A CN 118056192 A CN118056192 A CN 118056192A
- Authority
- CN
- China
- Prior art keywords
- cache
- coherence directory
- data
- cache line
- directory
- 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
- 230000015654 memory Effects 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 54
- 239000000523 sample Substances 0.000 claims abstract description 19
- 238000013500 data storage Methods 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims description 6
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000007787 solid Substances 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
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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
公开了一种用于在请求存储在存储器中的数据时省略探测的系统和方法。探测的该省略包括:创建一致性目录条目以跟踪与高速缓存行相关联的信息,确定该一致性目录条目的高速缓存行数据是否是可跟踪模式,以及设置指示可在不发送探测的情况下服务于对该高速缓存行数据的一个或多个读取的指示。还公开了一种用于在与高速缓存相关联的一致性目录中提供额外数据存储容量的系统和方法。该额外数据存储容量包括:主动跟踪高速缓存行,使该高速缓存行无效并通知该一致性目录,确定数据是否是可跟踪模式,更新该一致性目录表明该高速缓存行不再处于高速缓存中,更新该一致性目录以指示高速缓存行数据为0,以及服务于从该一致性目录对该高速缓存行的读取并供应指定的数据。
Description
相关申请的交叉引用
本申请要求2021年9月29日提交的美国非临时申请17/489,712号的权益,该美国非临时申请以引用方式并入,如同在本文完整阐述一样。
背景技术
现代微处理器实施用于高吞吐量的大量功能。一些此类特征包括具有高度并行的架构并且将特定数据模式的指示存储在备用目录条目中。对此类特征的改进在不断进行。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是其中可实现一个或多个公开的具体实施的示例性设备的框图;
图2是位于图1的处理器内的指令执行流水线的框图;
图3是根据示例的计算机系统的框图;
图4是根据另一示例的能够使用特定数据模式的指示来执行存储和读取的计算机系统的框图;
图5是根据示例的用于将特定数据模式的指示存储在备用目录中的方法500的流程图;
图6是根据示例的用于将特定数据模式的指示存储在备用目录中的方法600的流程图;
图7示出了根据示例的用于省略探测的方法;并且
图8示出根据示例的用于额外数据存储容量的方法。
具体实施方式
在计算中,高速缓存是存储数据的硬件或软件部件,其允许与通信上远离处理器定位的其他存储器位置相比更快地服务于对该数据的未来请求。作为示例,存储在高速缓存中的数据可以是较早计算的结果或存储在别处的数据的副本。当可以在高速缓存中找到所请求的数据时,响应于探测或请求而发生高速缓存命中,而当不能在高速缓存中找到所请求的数据时,发生高速缓存未命中。通过从高速缓存中读取数据来服务于高速缓存命中,这比重新计算结果或从较慢的数据存储中读取更快。如所理解的,从高速缓存可以服务的请求越多,系统执行得越快。
为了获得使用高速缓存和在其中存储的数据的益处,重要的是保持对高速缓存中的数据的准确性的理解。虽然有许多用于在高速缓存中维护数据的协议,但是一种这样的协议是MESI协议,其是常见的基于无效的高速缓存一致性协议。基于高速缓存中的数据的可能状态来对MESI协议进行命名。在MESI协议中,存在四种状态(一致性跟踪状态)一修改(M)、排他(E)、共享(S)和无效(I)。
修改(M)表示高速缓存行仅存在于当前高速缓存中,并且已经从主存储器中的值修改(M状态)。在准许对(不再有效的)主存储器状态的任何其他读取之前,高速缓存需要将数据写回主存储器。回写将该行改变为共享状态(S)。
排他(E)表示高速缓存行仅存在于当前高速缓存中,并且与主存储器版本匹配。响应于读取请求,可在任何时间将高速缓存行改变为共享状态。另选地,当写入高速缓存行时,可将高速缓存行改变为修改状态。
共享(S)表示高速缓存行可以被存储在机器的其他高速缓存中,并且与主存储器版本匹配。可以在任何时间丢弃该行(改变为无效状态)。
无效(I)表示高速缓存行是无效的(未使用)。
如将理解的,高速缓存状态的跟踪需要存储器和时钟周期。当改变状态以及将数据从高速缓存行写入到其他存储器位置或从其他存储器位置写入数据时使用计算机资源。虽然高速缓存和高速缓存状态的使用节省了计算机时间和处理,但是进一步最小化在不必要时高速缓存行的改变状态以及从高速缓存到存储器或从存储器的写入可以是有益的。因此,当某些条件存在时,最小化高速缓存的探测和最小化状态的改变可以提供益处。
提供了用于将关于数据是什么的信息(即使实际上没有存储任何数据)以及′一致性′跟踪信息存储在存储结构中的技术。如果满足一些其他一致性条件,这些技术包括省略探测。作为非限制性示例,一致性跟踪信息的一个示例包括关于高速缓存行是否不处于可写状态(例如,第2级高速缓存行)的信息。
在本公开中提供了一种用于在请求存储在存储器中的数据时省略探测的方法。探测的省略方法包括:在与高速缓存相关联的一致性目录中创建一致性目录条目以跟踪与至少一个高速缓存行相关联的信息,确定该一致性目录条目的高速缓存行数据是否是可跟踪模式,以及在与该高速缓存线数据相关联的该一致性目录条目中设置指示可在不发送探测的情况下服务于对该高速缓存行数据的一个或多个读取的指示。该方法可以包括其中可跟踪模式包括0并且其中高速缓存行处于MESI状态的配置。一致性目录中的一致性目录条目可包括指示高速缓存行是否存在于高速缓存层次结构中的另一高速缓存中的信息。
在本公开中还提供了一种用于在请求存储在存储器中的数据时省略探测的系统。该系统包括处理器和存储器。该存储器包括高速缓存层次结构;以及与该高速缓存层次结构相关联的一致性目录,该一致性目录包括用于跟踪与高速缓存行相关联的信息的多个一致性目录条目,每个条目与高速缓存行相关联,其中每个条目包括指示能够响应于该条目的该高速缓存行数据是可跟踪模式而在不发送探测的情况下服务于对与该多个一致性目录条目中的一个一致性目录条目相关联的高速缓存行数据的一个或多个读取的指示。该系统可以包括其中可跟踪模式包括0并且其中高速缓存行处于MESI状态的配置。该一致性目录条目可指示行存在于另一高速缓存中。
本公开中提供了一种用于在存储器中提供额外数据存储容量的方法。该额外数据存储容量方法包括:主动跟踪高速缓存的一致性目录中的高速缓存行;使该高速缓存行无效并通知该一致性目录;确定数据是否是可跟踪模式;以及如果利用该一致性目录,并且如果该确定指示该数据是可跟踪模式,则:更新该一致性目录表明该高速缓存行不再处于高速缓存中、更新该一致性目录以指示高速缓存行数据为0以及服务于从该一致性目录对该高速缓存行的读取并供应指定的数据。该方法可以包括可跟踪模式,该可跟踪模式包括0。
本公开中还提供了一种在存储器中提供额外数据存储容量的系统。该系统包括处理器和存储器。该存储器包括与该高速缓存层次结构相关联的一致性目录,该一致性目录包括用于跟踪与高速缓存行相关联的信息的多个一致性目录条目,每个条目与高速缓存行相关联,其中该处理器使该高速缓存行无效、通知该一致性目录该无效以及确定该高速缓存行中的数据是否是可跟踪模式;并且当该确定指示该数据是可跟踪模式时,该处理器更新该一致性目录表明该高速缓存行不再处于该高速缓存层次结构中、更新该一致性目录以指示该高速缓存行数据为0以及服务于从该一致性目录对该高速缓存行的读取以供应指定的数据。该一致性目录条目可指示行存在于另一高速缓存中。
图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和图4中提供了这种布置的示例。
存储设备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将该结果写入到存储器以用于存储指令。
指令执行流水线200推测性地执行一些指令。推测性执行意味着指令执行流水线200执行用于指令的执行的至少一些操作,但维持在不正确地执行指令的情况下逆转此执行的效应的能力。
在一个示例中,指令执行流水线200能够执行分支预测。分支预测是指令提取单元204预测执行将流向的控制流路径并从该路径提取指令的操作。存在许多方式来进行预测,并且一些方式涉及维持全局或地址特定的分支路径历史(例如,分支是否被采用的历史和/或此类分支的目标),且用此类历史执行各种操作。执行流水线(例如,功能单元216)实际上执行分支以确定此类分支的正确结果。虽然来自预测的执行路径的指令正在执行时,但是在功能单元216实际确定正确的执行路径之前,此类指令被认为是推测性地执行,因为有可能此类指令实际上不应当被执行。指令可以推测性地执行的原因还有很多。虽然此示例处理推测性执行,但将特定数据模式的指示存储于备用目录条目中的本发明可用于任何执行微处理器。即,推测微处理器仅是示例性的。
可以推测性地执行存储指令。通过执行指令的各种操作但在指令变为非推测性之前不提交此类操作来发生推测性执行。在一个示例中,推测性地执行存储指令包括将指令放置到加载/存储单元214中、确定要存储的数据、确定要将数据存储到的地址(这可以涉及地址计算和转换)。在此期间,重排序缓冲器210保持存储指令且在该存储指令变为非推测性地执行之前不允许指令收回提交结果。
指令可以出于多种原因推测性地执行,例如在预测的分支控制流路径中执行或出于多种其他原因。存储指令的部分执行涉及将待存储的数据写入高速缓存中。为此,高速缓存控制器获得对适当高速缓存行的排他访问,并且随后将指定的数据写入该高速缓存行。获得对适当高速缓存行的排他访问涉及导致其他高速缓存(例如,所有其他高速缓存)使它们的高速缓存行的副本无效。这样做防止了该高速缓存行的数据的冲突版本存在于不同的高速缓存中。在MESI(″修改的、排他的、共享的、无效的″)协议中,执行存储的指令执行流水线200获得对高速缓存行的排他访问,并且其他单元将它们的高速缓存行的副本设置为无效。
指令执行流水线200是尝试较早执行指令的各种操作的无序执行流水线。这种操作的一个示例是上述的无效。具体地,对于存储指令的执行,指令执行流水线200被准许且通常在存储指令的执行的早期请求高速缓存行的其他存储器副本的无效,使得当存储指令准备好写入相关联数据时,指令执行流水线200不需要等待,只要该无效将在稍后时间发生。然而,在发生存储指令的推测性执行的情况下出现问题。具体地,如上所述,指令执行流水线200可以请求高速缓存行的无效以用于推测性地执行的存储指令,并且基本上在存储指令准备好写入数据之前进行这样的请求。然而,有可能存储指令的推测性执行实际上是不正确的。例如,有可能在错误预测的控制流路径上执行存储指令(诸如经过分支未采用点,其中分支实际上被采用)。在此情况下,使所涉及的高速缓存行的各种副本从各种存储器无效的动作被浪费,并且那些各种存储器可能需要重新获取处于共享或排他状态的那些高速缓存行。
为了节省时间,诸如通过消除或最小化探测,特定数据模式的指示可以被存储在备用目录条目中。特定数据模式的指示可以被存储在′一致性目录′中。一致性目录用于基于目录的高速缓存一致性,这是高速缓存一致性机构的一种,其中一致性目录用于代替诸如snoopy方法的其他技术来管理高速缓存。例如,一致性目录可以是高速缓存层次结构内的存储位置。
在具体实施中,一致性目录包括具有专用第2级高速缓存的多个CPU核心中的一个或多个CPU核心,其连接到第3级高速缓存。第3级高速缓存具有第2级高速缓存地址的精确副本,包括关于许多第2级高速缓存中的哪一个具有高速缓存行的精确信息。当服务于来自给定核心的第2级高速缓存未命中时,第3级查找第3级高速缓存标签以及第2级高速缓存地址的副本,以确定高速缓存行在哪里存在。
在一些其他具体实施中,存在组相联结构作为一致性目录,而不是正被跟踪的地址的精确副本。这可以被实现为′另外的第3级高速缓存标签′或者通过其自己的专用结构来实现。例如,如果第3级高速缓存是12路组相联高速缓存(具有12个标签并且每个索引存储12个数据行),则可以具有表示′一致性′条目的另外4个标签。这些不对应于存储在第3级中的数据,而是具有指向容纳高速缓存行的一个或多个第2级高速缓存的指针。该结构的大小是基于性能分析来供应的,并且经常被过度供应以考虑一些最坏的情形,其中由于其组相联性质,第2级高速缓存中的高速缓存行地址形成第3级目录中的′热点′。
在第3级高速缓存之外,可以使用′系统一致性管理器′来跟踪哪个第3级高速缓存容纳高速缓存行。系统一致性管理器是高速缓存行地址指针和较大粒度指针(例如4干字节页面)的混合。
不管具体实施方案如何,一致性目录向高速缓存控制器提供信息,指示高速缓存控制器可能必须向一个或多个高速缓存发送探测以获得最近的数据。这些探测可能是性能限制的,向原始高速缓存访问增加了等待时间,当许多探测是活动的时引起带宽问题,当高速缓存控制器处理探测时引起对第2级高速缓存的存储体冲突或其他扰动等。
图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″正上方″的高速缓存之外)使它们的该高速缓存行的副本无效。如别处所述,处理器核心314发出排他性读取,并且其他高速缓存响应于该排他性读取而使副本无效。
在一些具体实施中,即使实际上没有存储数据,关于数据的信息也与这些结构中的′一致性′跟踪信息一起被存储。通过存储关于数据的信息,如果满足其他一致性条件,则可以省略探测。作为非限制性示例,一致性条件包括第2级高速缓存行不处于可写状态的情况。在具体实施中,存储每个一致性条目1位。例如,数据可存储于不同高速缓存(例如,第3级高速缓存)中,从而指示高速缓存行都为0。代替探测已知为0的高速缓存,高速缓存控制器通过返回所有0来满足请求,而不查找任何数据存储。更一般地,代替表示′0′的1位,可以存储用于公共数据模式的多个编码。这些多个编码可以是数据模式的固定集合,或者是在运行时被确定为公共的′模式目录′的索引。由于模式目录在本领域和高速缓存压缩领域中是公知的,因此没有给出关于目录的更多细节。
除了消除探测之外,具体实施还可以产生额外高速缓存容量的错觉。在至少一个具体实施中,在第3级高速缓存中存在不具有任何数据的额外的′标签′,因为它们仅在那里用于跟踪地址。在将行插入到第3级高速缓存中时,如果数据值为0,则未使用的′一致性目录′标签之一可用于代替具有对应数据存储的标签之一使用。
在一些具体实施中,特定数据模式的指示被存储在与一致性跟踪信息相同的目录中。如将理解的,这样的存储位置可以被确定以便于访问和存储在与一致性跟踪信息相同的目录中,并且仅是一个具体实施。本领域普通技术人员将理解用于存储的其他位置。
图4示出了利用单级高速缓存系统的计算机系统400,该单级高速缓存系统利用存储在备用目录中的特定数据模式的指示进行操作。如图所示,计算机系统400包括处理器102和高速缓存410以及耦合到高速缓存410的高速缓存控制器420(例如,处理器芯片级高速缓存312、处理器组存储器320或系统存储器控制器306)。系统400包括特定数据模式的指示430。指示430耦合到高速缓存410和控制器420中的一者或两者,并且可存储于高速缓存410内。如上所述,在具体实施中,一致性跟踪信息440与指示430一起被存储。
虽然没有具体示出,但是系统400可以包括一个或多个级别的高速缓存层次结构。例如,层次结构的一个或多个最低级别(一阶处理器-存储器层次结构级别)、布置在层次结构中的一个或多个更高一级的二阶处理器-存储器层次结构级别、一个或多个三阶处理器-存储器层次结构级别以及任选地未示出的附加层次结构级别。虽然系统400仅示出了高速缓存层次结构的单个级别,但是可以利用附加的级别。如将理解的,使用多级层次结构创建了将指示430和一致性跟踪信息440与高速缓存410相关联地存储在第二高速缓存(未示出)中的机会,该第二高速缓存可以存在于该层次结构中的另一级别处。
图4是能够使用特定数据模式的指示来执行存储和读取的计算机系统400的框图。图4示出了理解所描述的能力所必需的来自图3的元件。如将理解的,图3的系统300是图4的系统400的示例。因此,虽然图3示出了诸如核心、芯片等的特定类型的层级元件,但是图4的系统不一定包括类似的元件或元件的分组,而是提供了简化图以帮助理解所描述的能力。例如,核心级高速缓存316是高速缓存410的示例,并且处理器102可以是处理器核心314。如将理解的,高速缓存410和处理器102可以表示图3的层次结构的其他级别处的处理器和高速缓存,例如包括系统级存储器304和系统存储器控制器306以及处理器组存储器320。
在一些具体实施中,即使实际上没有存储数据,也将特定数据模式的指示430与一致性跟踪信息440一起存储在高速缓存层次结构中,例如存储在高速缓存410中。通过存储指示430并利用指示430,如果存在其他一致性条件,则可以省略探测。作为非限制性示例,一个一致性条件包括第2级高速缓存行不处于可写状态的具体实施。
在具体实施中,存储每个一致性条目1位作为表示高速缓存行都为0的指示430。代替探测如指示430所标识的已知为0的高速缓存,高速缓存控制器420通过返回所有0来满足请求,而不查找任何数据存储。通过节省查找或探测,节省了系统资源。
更一般地,代替表示′0′的示例性1位,可以存储用于公共数据模式的多个编码。多个指示430用于表示这些公共数据模式。这些多个编码可以是数据模式的固定集合,或者是在运行时被确定为公共的′模式目录′的索引。多个位可用于表示除所描述的全0条件之外的其他公共数据模式。由于模式目录在本领域和高速缓存压缩领域中是公知的,因此没有给出关于目录的更多细节。
图5是根据一个示例的用于将特定数据模式的指示存储在备用目录中的方法500的流程图。尽管参考图1至图4的系统进行了描述,但本领域的技术人员将理解,被配置为按任何技术上可行的顺序执行方法500的步骤的任何系统都落入本公开的范围内。
在步骤510处,方法500包括处理元件发出将数据存储在高速缓存层次结构内的存储请求。在步骤520处,存储特定数据模式的指示。特定数据模式的指示与处理元件发出存储请求以存储的数据相关联。在具体实施中,该指示被存储在高速缓存层次结构内,并且在其他具体实施中,该指示被存储在该层次结构的与存储该数据的位置不同的级别中。通过存储该指示,如果存在一些其他一致性条件,则可以省略探测。作为非限制性示例,一个一致性条件包括第2级高速缓存行不处于可写状态的具体实施。在具体实施中,存储每个一致性条目1位,指示高速缓存行都为0。代替探测已知为0的高速缓存,高速缓存控制器通过返回所有0来满足请求,而不查找任何数据存储。更一般地,代替表示′0′的1位,可以存储用于公共数据模式的多个编码。这些多个编码可以是数据模式的固定集合,或者是在运行时被确定为公共的′模式目录′的索引。由于模式目录在本领域和高速缓存压缩领域中是公知的,因此没有给出关于目录的更多细节。
图6是根据一个示例的用于将特定数据模式的指示存储在备用目录中的方法600的流程图。尽管参考图1至图4的系统进行了描述,但本领域的技术人员将理解,被配置为按任何技术上可行的顺序执行方法600的步骤的任何系统都落入本公开的范围内。
在步骤610处,方法600包括处理元件发出读取请求以执行从数据层次结构读取数据的读取操作。由于请求读取的数据被标识为特定数据模式,因此在步骤620处从数据层次结构读取特定数据模式的相关联指示。该指示在步骤630处被解码。在步骤640处,基于解码的指示满足读取操作。通过读取该指示,如果存在一些其他一致性条件,则可以省略探测。作为非限制性示例,一个一致性条件包括第2级高速缓存行不处于可写状态的具体实施。在具体实施中,存储每个一致性条目1位,指示高速缓存行都为0。代替探测已知为0的高速缓存,高速缓存控制器通过返回所有0来满足请求,而不查找任何数据存储。更一般地,代替表示′0′的1位,可以存储用于公共数据模式的多个编码。这些多个编码可以是数据模式的固定集合,或者是在运行时被确定为公共的′模式目录′的索引。由于模式目录在本领域和高速缓存压缩领域中是公知的,因此没有给出关于目录的更多细节。
图7示出了用于在图1至图4的系统中省略探测的方法700。换句话说,对存储在层次结构中的数据进行探测以确定数据位于层次结构中的何处以及数据在层次结构内的状态可能是不必要的,并且因此可以避免或省略。方法700将指示存储在一致性目录条目中,其指示高速缓存行存在于一个或多个其他高速缓存中。在具体实施中,该指示与高速缓存层次结构一起存储,并且在其他具体实施中,该指示被存储在高速缓存层次结构的与存储与其相关联的数据的级别不同的级别中。举例来说,高速缓存行处于有效的非排他MESI状态。高速缓存行中的数据是可跟踪模式,例如0。响应于从高速缓存行读取数据的请求,可以识别可跟踪模式,并且探测不被发送到其他高速缓存。系统返回基于指示而返回的指定数据(在该示例中为0)。该方法700表示探测的省略。
方法700包括在步骤710处创建一致性目录条目以跟踪高速缓存行。作为特定示例,在第3级高速缓存目录中创建一致性目录条目以跟踪第2级高速缓存的高速缓存行。
在步骤720处,方法700包括当MESI状态不是排他(E)或修改(M)的时确定条目的高速缓存行数据为0(或一些其他可跟踪模式)。继续以上特定示例,如果在第2级高速缓存中该条目的高速缓存行数据被确定为0(或其他设置值)并且MESI状态不是E或M,则可以在不向第2级高速缓存发送探测的情况下服务于在存储状态中进行读取(因为某些读取要求无效)的该目录条目中设置指示。如将理解的,当该条目的高速缓存行数据处于MESI E或M状态时,保存高速缓存行数据的CPU可以改变高速缓存行的数据而不通知一致性目录,因此使得一致性目录对高速缓存行的值的了解不正确。
在步骤730处,方法700包括在该目录条目中设置可在不发送探测的情况下服务于读取的指示。再次,参考该特定示例,在第3级高速缓存中的一致性目录条目中设置跟踪第2级高速缓存的高速缓存行的指示。该指示被配置为指示可在发送针对该高速缓存行的探测的情况下服务于对第2级高速缓存的高速缓存行的读取。
图8示出了用于在图1至图4的系统中的额外数据存储容量的方法800。方法800将指示存储在一致性目录条目中,其指示行不存在于该目录所覆盖的另一高速缓存中。该指示还可以或另选地指示该条目可用于服务于具有指定数据的读取。该方法800表示额外数据容量。
方法800包括在步骤810处主动跟踪一致性目录中的行。作为特定示例,第3级高速缓存目录中的一致性目录主动跟踪该级高速缓存中的行。
在步骤820处,方法800包括使高速缓存行无效并通知一致性目录。在特定示例中,第2级高速缓存行例如由于容量移出而变得无效,并且通知第3级高速缓存中的一致性目录。在其他情况下,从第2级高速缓存的高速缓存行移出将把高速缓存行放置到第3级高速缓存中并且使一致性目录条目无效,和/或移出到存储器中并且使一致性目录条目无效。
在步骤830处,方法800包括确定数据是否是可跟踪模式,例如全0。由于模式和跟踪模式是本领域和高速缓存压缩领域中所理解的,因此没有给出关于模式和模式跟踪的更多细节。
如果利用一致性目录,并且如果步骤830中的确定指示数据是可跟踪模式,则方法800包括在步骤840处更新一致性目录表明高速缓存行不再处于高速缓存中、在步骤850处更新一致性目录以指示高速缓存行数据为0以及在步骤860处服务于从一致性目录对高速缓存行的读取并供应指定的数据。再次参考该特定示例,更新一致性目录以指示高速缓存行不再处于第2级高速缓存中。更新一致性目录以指示高速缓存行数据为0。从一致性目录服务于对高速缓存行的后续读取,从而提供指定的数据而不使用第3级高速缓存中的存储。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
图中所示的各种元件可实现为硬件(例如,电路)、在处理器上执行的软件、或硬件与软件的组合。在各种示例中,每个块、处理器芯片310、系统元件308、系统级存储器304、系统存储器控制器306以及指令执行流水线200和计算机系统100的所示单元可实现为硬件、软件或它们的组合。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。这种处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现具体实施的各方面的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
Claims (20)
1.一种用于在请求存储在存储器中的数据时省略探测的方法,所述方法包括:
在与高速缓存相关联的一致性目录中创建一致性目录条目,以跟踪与至少一个高速缓存行相关联的信息;
确定所述一致性目录条目的高速缓存行数据是否是可跟踪模式;以及
在与所述高速缓存行数据相关联的所述一致性目录条目中设置指示能够在不发送探测的情况下服务于对所述高速缓存行数据的一个或多个读取的指示。
2.根据权利要求1所述的方法,其中所述可跟踪模式包括0。
3.根据权利要求1所述的方法,其中所述高速缓存行处于MESI状态。
4.根据权利要求3所述的方法,其中所述MESI状态不处于排他(E)或修改(M)状态。
5.根据权利要求1所述的方法,其中所述一致性目录位于第3级高速缓存目录中。
6.根据权利要求1所述的方法,其中所述一致性目录跟踪第2级高速缓存的高速缓存行。
7.根据权利要求1所述的方法,其中所省略的探测被引导到所述第2级高速缓存。
8.根据权利要求1所述的方法,其中所述一致性目录中的每个一致性目录条目包括指示高速缓存行是否存在于高速缓存层次结构中的另一高速缓存中的信息。
9.一种系统,所述系统包括:
处理器;和
存储器,其中所述存储器包括:
高速缓存层次结构;以及
与所述高速缓存层次结构相关联的一致性目录,所述一致性目录包括用于跟踪与高速缓存行相关联的信息的多个一致性目录条目,每个条目与高速缓存行相关联,其中每个条目包括指示能够响应于所述条目的所述高速缓存行数据是可跟踪模式而在不发送探测的情况下服务于对与所述多个一致性目录条目中的一个一致性目录条目相关联的高速缓存行数据的一个或多个读取的指示。
10.根据权利要求9所述的系统,其中所述一致性目录位于第3级高速缓存目录中。
11.根据权利要求9所述的系统,其中所述一致性目录跟踪第2级高速缓存的高速缓存行。
12.根据权利要求9所述的系统,其中所述一致性目录条目指示行存在于另一高速缓存中。
13.一种用于在与高速缓存相关联的一致性目录中提供额外数据存储容量的方法,所述方法包括:
主动跟踪所述高速缓存的所述一致性目录中的高速缓存行;
使所述高速缓存行无效并通知所述一致性目录;
确定数据是否是可跟踪模式;以及
当利用所述一致性目录时,并且当所述确定指示所述数据是可跟踪模式时:
更新所述一致性目录表明所述高速缓存行不再处于高速缓存中,
更新所述一致性目录以指示高速缓存行数据为0,以及
服务于从所述一致性目录对所述高速缓存行的读取并供应指定的数据。
14.根据权利要求13所述的方法,其中所述可跟踪模式都为0。
15.根据权利要求13所述的方法,其中所述一致性目录位于第3级高速缓存目录中。
16.根据权利要求13所述的方法,其中所述一致性目录跟踪第2级高速缓存的高速缓存行。
17.一种系统,所述系统包括:
处理器;和
存储器,其中所述存储器包括:
高速缓存层次结构;以及
与所述高速缓存层次结构相关联的一致性目录,所述一致性目录包括用于跟踪与高速缓存行相关联的信息的多个一致性目录条目,每个条目与高速缓存行相关联,
其中所述处理器使所述高速缓存行无效、通知所述一致性目录所述无效以及确定所述高速缓存行中的数据是否是可跟踪模式;并且
当所述确定指示所述数据是可跟踪模式时,所述处理器更新所述一致性目录表明所述高速缓存行不再处于所述高速缓存层次结构中、更新所述一致性目录以指示所述高速缓存行数据为0以及服务于从所述一致性目录对所述高速缓存行的读取以供应指定的数据。
18.根据权利要求17所述的系统,其中所述可跟踪模式都为0。
19.根据权利要求17所述的系统,其中所述一致性目录位于第3级高速缓存目录中。
20.根据权利要求17所述的系统,其中所述一致性目录跟踪第2级高速缓存的高速缓存行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/489,712 US20230099256A1 (en) | 2021-09-29 | 2021-09-29 | Storing an indication of a specific data pattern in spare directory entries |
US17/489,712 | 2021-09-29 | ||
PCT/US2022/041586 WO2023055508A1 (en) | 2021-09-29 | 2022-08-25 | Storing an indication of a specific data pattern in spare directory entries |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118056192A true CN118056192A (zh) | 2024-05-17 |
Family
ID=85706736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280065277.5A Pending CN118056192A (zh) | 2021-09-29 | 2022-08-25 | 将特定数据模式的指示存储在备用目录条目中 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230099256A1 (zh) |
KR (1) | KR20240067941A (zh) |
CN (1) | CN118056192A (zh) |
WO (1) | WO2023055508A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8397030B2 (en) * | 2008-06-24 | 2013-03-12 | International Business Machines Corporation | Efficient region coherence protocol for clustered shared-memory multiprocessor systems |
US9824009B2 (en) * | 2012-12-21 | 2017-11-21 | Nvidia Corporation | Information coherency maintenance systems and methods |
US9792210B2 (en) * | 2015-12-22 | 2017-10-17 | Advanced Micro Devices, Inc. | Region probe filter for distributed memory system |
US10073776B2 (en) * | 2016-06-23 | 2018-09-11 | Advanced Micro Device, Inc. | Shadow tag memory to monitor state of cachelines at different cache level |
US20180004659A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Cribbing cache implementing highly compressible data indication |
US20190236011A1 (en) * | 2018-01-31 | 2019-08-01 | Hewlett Packard Enterprise Development Lp | Memory structure based coherency directory cache |
US10705959B2 (en) * | 2018-08-31 | 2020-07-07 | Advanced Micro Devices, Inc. | Region based split-directory scheme to adapt to large cache sizes |
US20210191865A1 (en) * | 2019-12-20 | 2021-06-24 | Advanced Micro Devices, Inc. | Zero value memory compression |
-
2021
- 2021-09-29 US US17/489,712 patent/US20230099256A1/en active Pending
-
2022
- 2022-08-25 WO PCT/US2022/041586 patent/WO2023055508A1/en unknown
- 2022-08-25 CN CN202280065277.5A patent/CN118056192A/zh active Pending
- 2022-08-25 KR KR1020247013114A patent/KR20240067941A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023055508A1 (en) | 2023-04-06 |
US20230099256A1 (en) | 2023-03-30 |
KR20240067941A (ko) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US9798590B2 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US7363435B1 (en) | System and method for coherence prediction | |
US10970077B2 (en) | Processor with multiple load queues including a queue to manage ordering and a queue to manage replay | |
CN113227969A (zh) | 用于容忍存储器违反排序检查缓冲器的排空延迟的推测性指令唤醒 | |
CN115176237B (zh) | 具有混合回写和透写的数据高速缓存 | |
US8108621B2 (en) | Data cache with modified bit array | |
US10866892B2 (en) | Establishing dependency in a resource retry queue | |
US8370576B1 (en) | Cache rollback acceleration via a bank based versioning cache ciruit | |
US20230099256A1 (en) | Storing an indication of a specific data pattern in spare directory entries | |
US11822479B2 (en) | History-based selective cache line invalidation requests | |
US11947455B2 (en) | Suppressing cache line modification | |
US8108624B2 (en) | Data cache with modified bit array | |
US11947456B2 (en) | Weak cache line invalidation requests for speculatively executing instructions | |
JP2007207224A (ja) | データ・ラインをキャッシュに書き込む方法 | |
US11836085B2 (en) | Cache line coherence state upgrade | |
US11755494B2 (en) | Cache line coherence state downgrade | |
KR20240089314A (ko) | 이력 기반 선택적 캐시 라인 무효화 요청 | |
KR20240089036A (ko) | 캐시 라인 일관성 상태 다운그레이드 | |
KR20240089035A (ko) | 캐시 라인 일관성 상태 업그레이드 | |
GB2401227A (en) | Cache line flush instruction and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |