CN116194901A - 以缺乏局部性的数据为目标的存储器请求的预取禁用 - Google Patents
以缺乏局部性的数据为目标的存储器请求的预取禁用 Download PDFInfo
- Publication number
- CN116194901A CN116194901A CN202180063863.1A CN202180063863A CN116194901A CN 116194901 A CN116194901 A CN 116194901A CN 202180063863 A CN202180063863 A CN 202180063863A CN 116194901 A CN116194901 A CN 116194901A
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- data
- memory request
- prefetching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
- G06F2212/1021—Hit rate 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/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
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
本发明描述了用于高效地处理存储器请求的系统和方法。处理单元至少包括处理器内核、高速缓存和非高速缓存存储缓冲器,该非高速缓存存储缓冲器能够存储被阻止存储在该高速缓存中的数据。在处理以该非高速缓存存储缓冲器为目标的存储器请求时,该处理器内核检查存储在该存储器请求的标签中的标志。基于确定该标志指定在该存储器请求的该实例的处理期间阻止使用该存储器请求的目标地址将数据预取到该非高速缓存存储缓冲器和该高速缓存中的一者或多者中,该处理器内核阻止将数据预取到该非高速缓存存储缓冲器和该高速缓存中的一者或多者中。在处理预取提示指令时,该处理器内核根据该标签确定是否阻止预取。
Description
背景技术
相关技术的描述
随着半导体制造工艺的进步和管芯上几何尺寸的减小,包括一个或多个处理单元的半导体芯片提供更多的功能和性能。例如,半导体芯片可以包括一个或多个处理单元。处理单元可以代表各种数据处理集成电路中的一种。处理单元的示例是通用中央处理单元(CPU)、用于音频/视频(A/V)数据处理的多媒体引擎、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及并行数据处理引擎诸如图形处理单元(GPU)、数字信号处理器(DSP)等。处理单元处理通用指令集架构(ISA)的指令、数字信号、模拟信号、混合信号和射频(RF)功能等。
然而,现代技术在处理和集成电路设计中仍然出现设计问题,这可能限制潜在的益处。一个问题是每单位长度的互连延迟持续增加,单独芯片之间的较高电阻抗也增加延迟,并且访问大量数据的大多数软件应用通常是受存储器限制的,因为计算时间通常由存储器带宽确定。一个或多个计算系统的性能取决于对存储的数据的快速访问。存储器访问操作包括读取操作、写入操作、存储器到存储器复制操作等。
为了解决上述问题中的许多问题,一个或多个处理单元将高速缓存层级结构的一个或多个层级用作存储器层级结构的一部分,以便降低访问系统存储器中的数据的副本以进行读取或写入操作的存储器访问请求的延迟。代表性存储器层级结构从小型、相对快速的易失性静态存储器(诸如位于处理器内核的半导体管芯上的寄存器和位于管芯上或连接到管芯的高速缓存)过渡到较大、易失性动态片外存储器,再到相对较慢的非易失性存储器。一般来讲,高速缓存存储一个或多个块,这些块中的每个块是存储在系统存储器中的对应地址处的数据的副本。
一个或多个高速缓存由正被处理的指令生成的按需存储器请求和由预取引擎生成的预取存储器请求两者来填充。预取引擎试图通过检测对片外存储器的存储器访问的模式来隐藏片外存储器延迟,该存储器访问模式可使处理器停顿,并且在相应的请求指令之前启动对片外存储器的存储器访问。最简单的模式是以单调递增或单调递减方式引用一组连续高速缓存行(块)的存储器访问序列。响应于检测到该存储器访问序列,预取单元开始预取当前请求的高速缓存行(cache line)之前的特定数量的高速缓存行。然而,由于高速缓存具有有限的大小,因此高速缓存块的总数固有地受限。另外,存在对映射到组相联高速缓存(set-associative cache)中的给定组的块的数量的限制。有时,与高速缓存容量或高速缓存关联性所提供的限制相比,对与特定指令类型相关联的高速缓存块的数量进行更精细的限制存在有益的情况。
鉴于上述情况,期望用于高效地处理存储器请求的高效方法和机制。
附图说明
图1是计算系统的一个实施方案的概要图。
图2是处理器内核的一个实施方案的概要图。
图3是用于处理缺乏局部性的存储器请求的方法的另一实施方案的概要图。
图4是用于高效地处理存储器请求的方法的另一实施方案的概要图。
图5是用于高效地处理存储器请求的方法的另一实施方案的概要图。
虽然本发明可以有各种修改和另选形式,但具体实施方案在附图中通过举例的方式示出并且在本文进行详细描述。然而,应当理解,附图和对其的详细描述并不旨在将本发明限制为所公开的特定形式,而是相反,本发明是涵盖落入由所附权利要求书限定的本发明范围内的所有修改、等效物和替代方案。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,本领域普通技术人员应认识到,可以在没有这些具体细节的情况下实践本发明。在一些情况下,未详细示出众所周知的电路、结构和技术,以避免模糊本发明。此外,应当理解,为了简单和清楚说明,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸相对于其他元件被放大。
设想用于高效地处理存储器请求的系统和方法。半导体芯片可以包括一个或多个处理单元。处理单元可以代表各种数据处理集成电路中的一种。处理单元的示例是通用中央处理单元(CPU)、用于音频/视频(A/V)数据处理的多媒体引擎、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及并行数据处理引擎诸如图形处理单元(GPU)、数字信号处理器(DSP)等。半导体芯片的处理单元包括至少一个处理器内核和对至少一个高速缓存(管芯上或管芯外)诸如一级(L1)高速缓存的访问。
处理器内核还使用非高速缓存存储缓冲器,该非高速缓存存储缓冲器能够存储被阻止存储在高速缓存中的数据。在各种实施方案中,处理器内核基于存储器访问指令的操作码中指定所请求的数据缺乏时间局部性和空间局部性中的一者或多者的指示阻止将特定数据存储在高速缓存中。处理器内核阻止所请求的数据被存储在高速缓存中以减少高速缓存污染的惩罚。这些惩罚的示例是性能降低、功率消耗增加以及存储器总线利用率增加。如果缺乏时间局部性和空间局部性中的一者或多者的所请求的数据被存储在高速缓存中,则高速缓存未命中的数量增加。例如,当组相联高速缓存组织的特定组是满的时,具有局部性并且已经存储在特定组中的数据被逐出以创建用于该数据的存储位置。这是高速缓存污染的一个示例。类似地,由于数据在高速缓存组中的最近放置,高速缓存组中的其他可高速缓存数据现在可能是在该数据之前用于较早逐出的候选。这是高速缓存污染的另一个示例。
阻止缺乏时间局部性和空间局部性中的一者或多者的数据被存储在高速缓存中减少高速缓存污染的惩罚。在各种实施方案中,软件设计者、编译器或其他软件中的一者或多者确定哪些存储器访问指令以缺乏时间局部性和空间局部性中的一者或多者的数据为目标。在一个示例中,编译器对访问计数器进行采样以作出该确定,并且接着修改这些存储器访问指令的操作码以包括指定存储器访问指令的所请求数据缺乏时间局部性和空间局部性中的一者或多者的操作码。
处理器内核的加载/存储单元(LSU)将请求缺乏时间局部性和空间局部性中的一者或多者的数据的存储器访问指令发布到存储被防止存储在高速缓存中的数据的非高速缓存存储缓冲器,而不是将这些指令发布到高速缓存。如本文所用,“存储器请求”也称为“存储器访问请求”和“访问请求”。“存储器访问请求”包括“读取访问请求”、“读取请求”、“加载指令”、“写入访问请求”、“写入请求”、“存储指令”和“监听(snoop)请求”。
如本文所用,“数据预取”或“预取”指将数据从较低层级存储器预取到高速缓存和非高速缓存存储缓冲器中的一者或多者的操作。预取的数据包括应用的指令、应用源数据、中间数据和结果数据中的任一者。在各种实施方案中,处理器内核的电路检查存储在存储器请求的标签中的指示,该指示指定在所接收的存储器请求的该实例的处理期间阻止还是允许数据预取。在一些实施方案中,所接收的存储器请求的标签包括该指示。在各种实施方案中,当标签指示在所接收的存储器请求的该实例的处理期间阻止数据预取时,具有相同目标地址的其他存储器请求(诸如较新的按程序顺序的存储器请求以及该存储器请求的尚未被处理的其他实例)可允许针对该目标地址进行数据预取。那些存储器请求的标签中的每个标签还包括指示在存储器请求的那些实例的处理期间允许还是阻止数据预取的标志。因此,对数据预取的控制是以正被处理的存储器请求的实例的粒度而不是以目标地址的粒度。
预取引擎能够执行预取数据或数据预取的操作。如本文所用,“预取引擎”也被称为“预取器”。预取操作包括执行预取训练和生成预取请求中的一者或多者。例如,预取引擎能够在处理器发布以预取的数据为目标的按需存储器访问请求之前生成针对数据的一个或多个存储器访问请求(预取请求)。另外,预取引擎还能够执行预取训练以确定是否基于所接收的目标地址生成一个或多个预取请求。
预取引擎在训练时识别引用一组连续高速缓存行的存储器访问序列和引用由彼此之间的步幅(stride)分开的一组高速缓存行的存储器访问序列中的一者或多者。有可能并预期预取引擎能够识别其他类型的存储器访问模式。当预取引擎识别存储器访问模式时,预取引擎基于识别的存储器访问模式生成一个或多个预取请求。在一些实施方案中,当预取引擎确定由处理器内核提供的按需存储器访问包括与识别的存储器访问模式不匹配的请求地址时,预取引擎停止预取请求的生成。
LSU还执行预取提示指令。如本文所用,“预取提示指令”是插入应用的指令中以在较新(按程序顺序)的按需存储器访问指令请求特定数据之前,将该数据预取到高速缓存和非高速缓存数据存储装置中的一者或多者中的各种类型的存储器访问指令中的一种存储器访问指令。这些预取提示指令的示例是针对缺乏时间局部性的数据的AMD 64位指令PREFETCHNTA、将数据预取到一级(L1)高速缓存中的PREFETCH1等。然而,由于特定预取提示指令诸如针对缺乏时间局部性的数据的AMD 64位指令PREFETCHNTA中的非时间指示,处理器内核与其他类型的预取提示指令不同地处理该预取提示指令。在各种实施方案中,处理器内核的电路检查存储在预取提示指令的标签中的指示,该指示指定在预取提示指令的该实例的处理期间阻止还是允许数据预取。以与上述针对以缺乏时间局部性和空间局部性中的一者或多者的数据为目标的存储器请求的方式类似的方式,处理存储在预取提示指令的标签中的指示。
参考图1,示出了计算系统100的一个实施方案的概要框图。计算系统100包括处理单元110A至110B、互连单元118、共享高速缓存存储器子系统120和能够与存储器140通信的存储器控制器130。为了便于说明,图1中未示出时钟源诸如锁相环(PLL)、中断控制器、电源管理器、输入/输出(I/O)接口和设备等。还应注意,计算系统100的部件的数量和图1中所示的那些部件(诸如在处理单元110A至110B中的每一者内)的子部件的数量可随实施方案而变化。部件/子部件每一者的数量可能比计算系统100所示的数量更多或更少。
在一个实施方案中,计算系统100的所示功能被结合在单个集成电路上。例如,计算系统100是在单个半导体管芯上包括多种类型的集成电路的片上系统(SoC)。该多种类型的集成电路提供单独的功能。在其他实施方案中,该多个集成部件是封装诸如系统级封装(SiP)、多芯片模块(MCM)或芯片组内的单独管芯。在其他实施方案中,该多个部件是印刷电路板上的单独管芯或芯片。
如图所示,处理单元110A至110B包括一个或多个处理器内核112A至112B以及对应的高速缓存存储器子系统114A至114B。处理器内核112A至112B包括用于处理指令的电路。处理单元110A至110B代表各种数据处理集成电路中的一种。处理单元的示例是通用中央处理单元(CPU)、用于音频/视频(A/V)数据处理的多媒体引擎、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及并行数据处理引擎诸如图形处理单元(GPU)、数字信号处理器(DSP)等。处理单元110A至110B中的每个处理单元处理通用指令集架构(ISA)的指令、数字信号、模拟信号、混合信号和射频(RF)功能等。
处理器内核112A至112B支持同时多线程。由处理器内核112A至112B执行的多个线程共享至少共享高速缓存存储器子系统120、不同处理类型的其他处理单元(未示出)和I/O设备(未示出)。互连单元118包括用于在部件之间路由数据包的路由器、交换机、总线、点对点连接、队列和仲裁电路中的一者或多者。在一些实施方案中,互连单元118是通信结构。数据包包括各种类型,诸如存储器访问请求、响应、命令、消息和监听请求。接口116A至116B支持用于通过互连单元118将数据路由到共享高速缓存存储器子系统120、存储器控制器130、I/O设备(未示出)、电源管理器(未示出)和其他部件的通信协议。
计算系统100的地址空间在多个存储器之间划分。存储器映射用于确定哪些地址被映射到哪些存储器。在一个实施方案中,地址的一致性点(coherency point)是连接到存储对应于该地址的数据的存储器140的存储器控制器130。存储器控制器130包括用于接口到存储器140的电路和用于对存储器请求和存储器响应进行排队的请求队列。尽管示出了单个存储器控制器130和存储器140,但是在其他实施方案中,计算系统100使用另一数量的存储器控制器和存储器。在各种实施方案中,存储器控制器130从处理单元110A至110B接收存储器请求,并且调度存储器请求,并且向存储器140发布调度的存储器请求。
存储器140被用作计算系统100中的系统存储器。存储器140存储操作系统,该操作系统包括用于将软件线程分配给处理单元110A至110B中的硬件的调度器。存储器140还包括虚拟机监控程序、基本输入输出软件(BIOS)控制的功能、利用应用编程器接口(API)的一个或多个应用、存储虚拟到物理地址映射和访问许可的页表、应用的源数据和结果数据等中的一者或多者。存储器140使用各种类型的存储器设备中的任何一种。
存储在存储器140中的数据的部分的副本存储在高速缓存(114A至114B、120)中的一者或多者中。存储器层级结构从相对快速的易失性存储器(诸如处理器管芯上的寄存器和位于处理器管芯上或连接到处理器管芯的高速缓存)过渡到非易失性且相对较慢的存储器。在一些实施方案中,较快的易失性存储器被视为处于存储器层级结构的顶部或最高层级,而较慢的非易失性存储器被视为处于存储器层级的底部或最低层级。在这些实施方式中,存储器层级结构的比存储器层级结构的第二层级更靠近层级结构的较快的易失性存储器定位的第一层级被视为处于比第二层级“高”的层级。在其他实施方式中,认为较慢的非易失性存储器处于存储器层级结构的顶部或最高层级。尽管描述存储器层级结构的两种方式都是可能的并且是预期的,但是在以下描述中,较快的易失性存储器被认为是在存储器层级结构的顶部或最高层级。因此,存储器层级结构的较高层级包括较快的易失性存储器,诸如处理器寄存器和一级(L1)本地高速缓存,而存储器层级结构的较低层级包括非易失性较慢存储器,诸如硬盘驱动器(HDD)或固态驱动器(SSD)。
高速缓存存储器子系统114A至114B和120使用高速度的高速缓存存储器来存储数据块。在一些实施方案中,高速缓存存储器子系统114A至114B被集成在相应的处理器内核112A至112B内。另选地,高速缓存存储器子系统114A至114B根据需要以背面高速缓存配置或内联配置连接到处理器内核112A至112B。在各种实施方案中,高速缓存存储器子系统114A至114B被实施为高速缓存的层级结构。高速缓存层级结构的一个或多个层级包括用于存储虚拟到物理地址映射和访问许可的转译后备缓冲器(TLB)、标签阵列、数据阵列和高速缓存控制器。高速缓存层级结构的一个或多个层级还使用能够生成预取请求以将数据从较低层级存储器填充到高速缓存的预取引擎。如果需要,将(在层级结构内)更靠近处理器内核112A至112B的高速缓存集成到处理器内核112中。在一个实施方案中,高速缓存存储器子系统114A至114B各自表示L1和L2高速缓存结构,并且共享高速缓存子系统120表示共享L3高速缓存结构。其他高速缓存布置是可能的并且是预期的。
处理器内核112A至112B的电路使用寄存器中的一个或多个寄存器、各种触发器电路中的一种触发器电路、各种类型的随机存取存储器(RAM)中的一种随机存取存储器以及内容可寻址存储器(CAM)来实施非高速缓存存储缓冲器113A至113B。处理器内核112A至112B使用能够存储被阻止存储在高速缓存中的数据的非高速缓存存储缓冲器113A至113B。存储器140存储使用对应于不规则存储器访问的数据(诸如缺乏时间局部性和空间局部性中的一者或多者的数据)的不规则存储器带宽限制的高性能计算(HPC)应用和数据中心应用中的一者或多者。HPC应用在计算流体动力学、稠密线性代数库、使用高阶方法建模环境(HOMME)的气候和大气建模等中使用。数据中心应用的示例是社交网络爬虫、云流分析应用、互联网地图应用等。
处理器内核112A至112B向非高速缓存存储缓冲器113A至113B发布以缺乏时间局部性和空间局部性中的一者或多者的数据为目标的存储器请求,而不是向高速缓存(诸如,处理器内核112A至112B的L1高速缓存)发布这些类型的存储器请求。在各种实施方案中,非高速缓存存储缓冲器113A至113B使用预取器。非高速缓存存储缓冲器113A至113B的预取器能够生成预取请求以将数据从较低层级存储器填充到非高速缓存存储缓冲器113A至113B中。类似地,高速缓存存储器子系统114A至114B的L1高速缓存使用能够生成预取请求以将数据从较低层级存储器填充到L1高速缓存中的预取器115A至115B。计算系统100的预取器能够使用本领域技术人员已知的各种预取方法。
处理器内核112A至112B的电路检查存储在以缺乏时间局部性和空间局部性中的一者或多者的数据为目标的存储器请求的标签中的指示(诸如标志)。该标志指示在存储器请求的这些实例的处理期间允许还是阻止基于存储器请求的目标地址进行数据预取。该标志是指定允许还是阻止数据预取的一个或多个位的字段。如果该标志指定在所接收的存储器请求的该实例的处理期间阻止数据预取,则在所接收的存储器请求的该实例的处理期间阻止数据预取。例如,处理器内核112A至112B的电路阻止在所接收的存储器请求的该实例的处理期间由预取器113A至113B和预取引擎115A至115B中的一者或多者基于所接收的存储器请求的目标地址进行数据预取。类似地,处理器内核112A至112B的电路检查存储在预取提示指令的标签中的标志,并且以类似方式基于存储在该标志中的值来执行数据预取。
参考图2,示出了执行乱序执行(out-of-order execution)的通用处理器内核200的一个实施方案。在一个实施方案中,处理器内核200在处理单元诸如(图1的)处理单元112A至112B中的一个处理单元中同时处理两个或更多个线程。处理器内核200的功能由硬件诸如电路实施。块202的指令高速缓存(i高速缓存)存储软件应用的指令,并且块202的对应指令转译后备缓冲器(TLB)存储访问指令所需的虚拟到物理地址映射。在一些实施方案中,指令TLB(i-TLB)还存储对应于地址映射的访问许可。
如果在块202的指令高速缓存或指令TLB中不存在未命中,则指令提取单元(IFU)204每时钟循环从指令高速缓存202提取多个指令。IFU 204包括程序计数器,该程序计数器保持指向将从指令高速缓存202提取的接下来的指令的地址的指针,该指针与指令TLB中的地址映射进行比较。IFU204还包括分支预测单元(未示出)以在执行单元确定稍后管道阶段中的实际结果之前预测条件指令的结果。
解码器单元206对多个提取的指令的操作码进行解码,并且在有序引退队列(诸如重排序缓冲器218)中、在保留站208中以及在加载/存储单元(LSU)220中分配条目。在一些实施方案中,解码单元206还执行寄存器重命名。在其他实施方案中,重排序缓冲器218执行寄存器重命名。在一些实施方案中,解码器206从单个提取的指令生成多个微操作(micro-op)。在各种实施方案中,以缺乏时间局部性和空间局部性中的一者或多者的数据为目标的至少存储器请求包括指示(诸如标签内的标志),该指示指定在存储器请求的那些实例的处理期间允许还是阻止基于存储器请求的目标地址进行数据预取。在一些实施方案中,解码器206在解码的存储器请求的标签中插入该标志。在各种实施方案中,解码器206基于所接收的存储器请求的操作码或其他字段来确定标志的值。在一个实施方案中,当标志被断言时,在所接收的存储器请求的该实例的处理期间在稍后管道阶段中执行基于所接收的存储器请求的目标地址进行的预取,但当标志被否定时,阻止在所接收的存储器请求的该实例的处理期间在稍后管道阶段中执行基于所接收的存储器请求的目标地址进行的预取。应注意,在一些设计中,二进制逻辑高值用作断言值并且二进制逻辑低值用作否定值,而在其他设计中,二进制逻辑低值用作断言值并且二进制逻辑高值用作否定值。指示断言标志和否定标志的其他值是可能的并且是预期的。例如,在一些实施方案中,该标志包括两个或更多个位,并且标志能够指示针对一种类型的存储装置(诸如非高速缓存存储缓冲器)允许预取,但针对另一类型的存储装置(诸如高速缓存)阻止预取。指示的其他组合是可能的并且是预期的。
保留站208充当指令队列,其中指令等待直到它们的操作数变得可用。当操作数可用并且硬件资源也可用时,保留站208的电路乱序地向整数和浮点功能单元210或加载/存储单元220发布指令。功能单元210包括用于计算运算诸如加法、减法、乘法、除法和平方根的算术逻辑单元(ALU)。另外,功能单元210中的电路确定条件指令诸如分支指令的结果。
加载/存储单元(LSU)220从解码单元206和保留站208中的一者或多者接收存储器请求,诸如加载和存储操作。加载/存储单元220包括队列和电路以执行存储器请求。在一个实施方案中,加载/存储单元220包括验证电路以确保加载指令从正确的最新存储指令接收转发的数据。在各种实施方案中,加载/存储单元220使用非高速缓存存储缓冲器222,该非高速缓存存储缓冲器具有与(图1的)非高速缓存存储缓冲器113A至113B等效的功能。在各种实施方案中,加载/存储单元220的电路使用寄存器、各种触发器电路中的一种触发器电路、各种类型的随机存取存储器(RAM)中的一种随机存取存储器或内容可寻址存储器(CAM)来实施非高速缓存存储缓冲器222。
非高速缓存存储缓冲器222能够存储被阻止存储在高速缓存诸如块230的一级(L1)数据高速缓存(d高速缓存)中的数据。在一个实施方案中,非高速缓存存储缓冲器222存储缺乏时间局部性和空间局部性中的一者或多者的数据。预取器224能够执行如前所述的数据预取的操作。响应于确定存储器请求的标签中的标志指定在存储器请求的该实例的处理期间阻止基于存储器请求的目标地址进行预取,LSU 220和预取器224中的一者或多者在存储器请求的该实例的处理期间阻止基于存储器请求的目标地址进行数据预取。相反,响应于确定标志指定在存储器请求的该实例的处理期间允许基于存储器请求的目标地址进行预取,预取器224在存储器请求的该实例的处理期间执行基于存储器请求的目标地址进行数据预取的操作。
加载/存储单元220向块230的一级(L1)数据高速缓存(d高速缓存)发布存储器请求。块230的L1数据高速缓存使用TLB、标签阵列、数据阵列、高速缓存控制器和预取引擎232。高速缓存控制器使用各种电路和队列,诸如读取/写入请求队列、未命中队列、读取/写入响应队列、读取/写入调度器和填充缓冲器。类似于预取器224,预取引擎232能够执行如先前所述的数据预取的操作。在一些实施方案中,预取引擎232能够生成预取请求以将数据从较低层级存储器填充到块230的L1数据高速缓存和非高速缓存存储缓冲器222中的一者或多者中。在一个实施方案中,预取引擎232在监视地址范围内的多个按需存储器请求之后生成预取请求。块230的电路从LSU220接收按需存储器请求。
尽管对于以非高速缓存存储缓冲器222为目标的存储器请求没有数据被存储在块230的L1数据高速缓存中,但是在一些实施方案中,加载/存储单元220仍然向块230的L1数据高速缓存发送存储器请求的指示。为了防止预取引擎232由于基于这些类型的存储器请求的目标地址的训练而导致的不良性能,在存储器请求的标签中插入标志。如较早所描述的,该标志指定在存储器请求的那些实例的处理期间允许还是阻止基于存储器请求的目标地址进行数据预取。
响应于确定标志指定在存储器请求的该实例的处理期间阻止基于存储器请求的目标地址进行预取,块230的电路和预取引擎232中的一者或多者阻止执行基于存储器请求的该实例的目标地址进行数据预取的操作的一个或多个步骤。换句话讲,块230的电路和预取引擎232中的一者或多者阻止预取引擎232基于存储器请求的该实例的目标地址生成预取请求并执行预取训练。对于预取提示指令,该标志的使用类似于将标志用于以缺乏时间局部性和空间局部性中的一者或多者的数据为目标的存储器请求。
在一些实施方案中,处理器内核200还包括二级(L2)高速缓存240,该二级高速缓存用于服务来自L1数据高速缓存230和L1指令高速缓存202的存储器请求。块240的TLB服务于来自块202的指令TLB和块230的数据TLB的地址映射请求。如果在块230的L1数据高速缓存中未找到所请求的存储器行或在块202的指令高速缓存中未找到所请求的存储器行,则对应的高速缓存控制器将未命中请求发送到块240的L2高速缓存。当在L2高速缓存240中未找到所请求的存储器行时,则L2高速缓存控制器发送未命中请求以访问较低层级存储器诸如三级(L3)高速缓存中的存储器或系统存储器。
功能单元210和加载/存储单元220在公共数据总线212上呈现结果。重排序缓冲器218从公共数据总线212接收结果。在一个实施方案中,重排序缓冲器218是确保指令根据程序顺序有序引退的先进先出(FIFO)队列。这里,将接收其结果的指令标记为引退。如果指令是队列头部,则重排序缓冲器218的电路将其结果发送到寄存器文件214。寄存器文件214保持处理器内核200的通用寄存器的架构状态。然后,重排序缓冲器218中的指令有序引退,并且逻辑更新其队列头部指针以指向程序顺序中的后续指令。公共数据总线212上的结果也被发送到保留站208,以便将值转发到等待结果的指令的操作数。多个线程共享内核200内的多个资源。例如,这些多个线程共享图2所示的块202至240中的每个块。
应注意,在一些实施方案中,处理器内核200使用单独的缓冲器来实施非高速缓存存储缓冲器222。例如,在一个实施方案中,处理器内核200使用能够存储以缺乏空间局部性和时间局部性中的一者或多者的数据为目标的加载指令所针对的数据的“流加载缓冲器”,以及能够存储以缺乏空间局部性和时间局部性中的一者或多者的数据为目标的存储指令所针对的数据的单独的写入组合缓冲器。这些类型的加载指令也被称为“流加载指令”。类似地,这些类型的存储指令也被称为“流存储指令”。
现在参考图3,示出了用于处理缺乏局部性的存储器请求的方法300的一个实施方案。出于讨论的目的,以顺序示出该实施方案(以及图4至图5)中的步骤。然而,在其他实施方案中,一些步骤以与所示不同的顺序发生,一些步骤同时执行,一些步骤与其他步骤组合,并且一些步骤不存在。
在各种实施方案中,处理单元至少包括处理器内核、高速缓存和非高速缓存存储缓冲器,该非高速缓存存储缓冲器能够存储被阻止存储在高速缓存中的数据。当处理以非高速缓存存储缓冲器为目标的存储器请求时,处理器内核将存储器请求发送到非高速缓存存储缓冲器的电路。用于非高速缓存存储缓冲器的电路接收所发布的以非高速缓存存储缓冲器为目标的存储器请求(框302)。在一些实施方案中,非高速缓存存储缓冲器存储这样的数据,该数据由于被缺乏时间局部性和空间局部性中的一者或多者的存储器请求作为目标而未被存储在高速缓存中。访问电路按照存储器请求的指示访问非高速缓存存储缓冲器(框304)。例如,存储器请求指示存储器访问是读取访问还是写入访问。非高速缓存存储缓冲器的电路检查所接收的存储器请求的标签以确定在存储器请求的该实例的处理期间阻止还是允许使用存储器请求的目标地址进行数据预取(框306)。例如,在一个实施方案中,该标签包括指定在所接收的存储器请求的该实例的处理期间阻止还是允许数据预取的标志。
如果标签指示在所接收的存储器请求的该实例的处理期间允许数据预取(条件框308的“允许”分支),则非高速缓存存储缓冲器的预取引擎基于所接收的存储器请求的目标地址生成一个或多个预取请求以将数据预取到非高速缓存存储缓冲器中(框310)。在一些实施方案中,将存储器请求的目标地址发送到预取引擎,该预取引擎在监视地址范围内的多个按需存储器访问之后启动连续预取。在与转发到预取引擎的连续存储器访问操作的匹配失败时,预取引擎停止这种类型的连续预取。在其他实施方案中,预取引擎基于目标地址自动预取多个高速缓存行。
在一些实施方案中,加载/存储单元和非高速缓存存储缓冲器的电路中的一者或多者向高速缓存发送非高速缓存存储缓冲器的存储器访问的指示(框312)。高速缓存接收指示在所接收的存储器请求的该实例的处理期间阻止还是允许数据预取的标志。高速缓存不存储由所接收的存储器请求所请求的数据,但是高速缓存的预取引擎能够基于所接收的存储器请求的目标地址(请求地址)执行数据预取或预取训练。在各种实施方案中,当标志指示在所接收的存储器请求的该实例的处理期间允许预取时,高速缓存的预取引擎使用目标地址来执行生成预取请求和基于目标地址进行训练中的一者或多者。例如,预取引擎执行对地址范围内的多个按需存储器访问的监视。
如果标签指示在所接收的存储器请求的该实例的处理期间阻止数据预取(条件框308的“阻止”分支),则在所接收的存储器请求的该实例的处理期间阻止将数据预取到非高速缓存存储缓冲器和高速缓存中(框314)。具有相同目标地址的其他存储器请求(诸如较新的按程序顺序的存储器请求以及该存储器请求的尚未被处理的其他实例)可允许针对该目标地址进行数据预取。那些存储器请求的标签中的每个标签包括指示在存储器请求的那些实例的处理期间允许还是阻止基于存储器请求的目标地址进行数据预取的标志。然而,在所接收的存储器请求的该实例的处理期间,由于由存储在所接收的存储器请求的标签中的标志指定的指示而阻止数据预取。在一些实施方案中,非高速缓存存储缓冲器的电路不向非高速缓存存储缓冲器的预取引擎和高速缓存的预取引擎中的任一者发送所接收的存储器请求的目标地址。在一个实施方案中,非高速缓存存储缓冲器的电路不向高速缓存发送所接收的存储器请求的任何信息。在其他实施方案中,非高速缓存存储缓冲器将所接收的存储器请求的信息发送到高速缓存,该信息包括指定在所接收的存储器请求的该实例的处理期间允许还是阻止预取的标志。在此类实施方案中,高速缓存控制器和高速缓存的预取引擎中的一者或多者的电路基于所接收的标志确定允许还是阻止基于目标地址来生成预取请求并执行预取训练。
现在参考图4,示出了用于处理缺乏局部性的存储器请求的方法400的一个实施方案。高速缓存接收非高速缓存存储缓冲器的存储器访问的指示(框402)。在各种实施方案中,存储器访问对应于以非高速缓存存储缓冲器为目标的存储器请求。高速缓存绕过所接收的存储器访问的读取或高速缓存写入处理(框404)。高速缓存的电路检查所接收的存储器访问的标签以确定在存储器访问的该实例的处理期间阻止还是允许使用所接收的存储器访问的目标地址进行数据预取(框406)。
如果标签指示在所接收的存储器访问的该实例的处理期间允许数据预取(条件框408的“允许”分支),则高速缓存的预取引擎执行基于所接收的存储器访问的目标地址生成一个或多个预取请求和执行预取训练中的一者或多者(框410)。然而,如果标签指示在所接收的存储器访问的该实例的处理期间阻止数据预取(条件框408的“阻止”分支),则高速缓存的预取引擎阻止执行基于所接收的存储器访问的目标地址生成一个或多个预取请求和执行预取训练中的一者或多者(框412)。具有相同目标地址的其他存储器访问(诸如对应于较新的按程序顺序的存储器请求的存储器访问以及该存储器访问的尚未被处理的其他实例)可允许针对该目标地址进行数据预取。然而,在所接收的存储器访问的该实例的处理期间,由于由存储在所接收的存储器访问的标签中的标志指定的指示而阻止数据预取。
应注意,在一些实施方案中,支持非高速缓存存储缓冲器的电路在高速缓存的外部。因此,在一个实施方案中,当所接收的存储器请求存储指定在所接收的存储器请求的该实例的处理期间阻止数据预取的指示时,非高速缓存存储缓冲器阻止将目标地址(请求地址)发送到高速缓存。在其他实施方案中,当标志指示在所接收的存储器访问的该实例的处理期间阻止数据预取时,高速缓存的预取引擎仍基于所接收的存储器访问的请求地址生成一个或多个预取请求,但高速缓存控制器为高速缓存行替换策略中使用的最近最少使用(LRU)值提供某个值,该值限制预取的数据驻留在高速缓存中的时间量。另选地,高速缓存控制器以多路高速缓存组织的特定方式限制预取的数据的放置。
现在转到图5,示出了用于处理缺乏局部性的存储器请求的方法500的一个实施方案。处理器的单元(诸如加载/存储单元(LSU)或处理器的其他单元)的电路接收请求缺乏局部性的数据的预取提示指令(框502)。预取提示指令的示例是针对缺乏时间局部性的数据的AMD 64位指令PREFETCHNTA。其他示例是可能的并且是预期的。由于预取提示指令中指定所请求的数据缺乏局部性的指示,处理器以不同于其他类型的加载指令的方式针对该预取提示指令检索数据。在一些实施方案中,处理器从系统存储器检索数据并将检索的数据存储在高速缓存存储器子系统的特定层级中。例如,二级(L2)高速缓存存储检索的数据的副本,而一级(L1)高速缓存和三级(L3)高速缓存(如果使用)被绕过。处理器还基于预取提示指令的目标地址预取特定量的数据。例如,在一些情况下,处理器基于预取提示指令的目标地址来提取一个或多个高速缓存行。当检索的数据或预取的数据稍后从任何高速缓存中被逐出时,处理器不将这些类型的数据的副本存储在高速缓存存储器子系统的任何层级中。用于该预取提示指令的其他类型的处理数据是可能的并且是预期的。通过使用预取提示指令的标签中的标志,可以阻止如前所述的数据预取。
处理器执行由所接收的预取提示指令指示的读取访问(框504)。处理器检索存储在预取提示指令的目标地址所指向的存储器位置中的数据。处理器将检索的数据的副本存储在高速缓存和非高速缓存存储缓冲器中的一者或多者中(框506)。高速缓存的特定层级基于设计要求,因此在一些示例中,最靠近处理器内核定位的L1高速缓存不存储检索的数据的副本,而L2高速缓存存储检索的数据的副本。其他存储布置是可能的并且是预期的。在一些实施方案中,当预取的数据被存储在高速缓存中时,对应的高速缓存控制器在高速缓存数据阵列中设置预取提示指令以之为目标的数据的存储时间和/或存储位置的限制。例如,高速缓存控制器为高速缓存行替换策略中使用的最近最少使用(LRU)值提供某个值,该值限制预取的数据驻留在高速缓存中的时间量。高速缓存控制器还能够以多路组相联高速缓存组织的特定方式限制预取的数据的放置。
处理器检查预取提示指令的标签以确定在预取提示指令的该实例的处理期间阻止还是允许使用预取提示指令的目标地址进行数据预取(框508)。如果该标签指示在预取提示指令的该实例的处理期间允许数据预取(条件框510的“允许”分支),则高速缓存和非高速缓存存储缓冲器中的一者或多者的预取引擎基于预取提示指令的目标地址生成一个或多个预取请求(框512)。然而,如果该标签指示在预取提示指令的该实例的处理期间阻止数据预取(条件框510的“阻止”分支),则处理器阻止高速缓存和非高速缓存存储缓冲器中的一者或多者的预取引擎基于预取提示指令的目标地址生成预取请求(框514)。在一些实施方案中,处理器通过阻止将预取提示指令的任何信息发送到高速缓存和非高速缓存存储缓冲器中的一者或多者的预取引擎来阻止预取。
应注意,上述实施方案中的一者或多者包括软件。在此类实施方案中,实施方法和/或机制的程序指令被输送或存储在计算机可读介质上。被配置成存储程序指令的许多类型的介质可用并且包括硬盘、软盘、CD-ROM、DVD、闪存、可编程ROM(PROM)、随机存取存储器(RAM)和各种其他形式的易失性或非易失性存储装置。一般而言,计算机可访问存储介质包括在使用期间可由计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质包括诸如磁性或光学介质,例如磁盘(固定或可移除)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光等存储介质。存储介质还包括易失性或非易失性存储介质,诸如RAM(例如,同步动态RAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM、低功率DDR(LPDDR2等)SDRAM、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、可经由外围设备接口(诸如通用串行总线(USB)接口等)访问的ROM、闪存存储器、非易失性存储器(例如,闪存)。存储介质包括微电子机械系统(MEMS),以及可经由诸如网络和/或无线链路等通信介质访问的存储介质。
另外,在各种实施方案中,程序指令包括在高级编程语言(诸如C)或设计语言(HDL)(诸如Verilog、VHDL或数据库格式(诸如GDS II流格式(GDSII))中的硬件功能的行为级描述或寄存器传输级(RTL)描述。在一些情况下,描述由合成工具读取,所述合成工具合成描述以产生包括来自合成库的门列表的网表。网表包括门集,其也表示包括系统的硬件的功能。然后将网表放置并路由以产生描述要施加到掩码的几何形状的数据集。然后将掩码用于各种半导体制造步骤中以产生对应于系统的半导体电路或电路。另选地,计算机可访问存储介质上的指令是如所期望的网表(具有或不具有合成库)或数据集。另外,所述指令用于由如 和Mentor/>的此类供应商的基于硬件的类型仿真器进行仿真的目的。
尽管已经相当详细地描述了以上实施方案,但是一旦完全了解上述公开内容,许多变型和修改对于本领域技术人员将变得显而易见。旨在将以下权利要求书解释为涵盖所有此类变型和修改。
Claims (20)
1.一种设备,包括:
非高速缓存存储缓冲器;和
电路,所述电路被配置成:
接收以所述非高速缓存存储缓冲器为目标的第一存储器请求;
至少部分地基于所述第一存储器请求来阻止将数据预取到所述非高速缓存存储缓冲器中。
2.根据权利要求1所述的设备,其中所述电路被进一步配置成确定所述第一存储器请求包括第一指示,所述第一指示指定阻止使用所述第一存储器请求的目标地址进行数据预取。
3.根据权利要求2所述的设备,其中,至少部分地基于所述确定所述第一存储器请求包括所述第一指示,所述电路被进一步配置成阻止使用所述第一存储器请求的所述目标地址将数据预取到所述高速缓存中。
4.根据权利要求1所述的设备,其中所述电路被进一步配置成:
接收以所述非高速缓存存储缓冲器为目标的第二存储器请求;
至少部分地基于所述第二存储器请求来允许将数据预取到所述非高速缓存存储缓冲器中。
5.根据权利要求4所述的设备,其中所述电路被进一步配置成确定所述第二存储器请求包括第二指示,所述第二指示指定允许使用所述第一存储器请求的所述目标地址进行数据预取。
6.根据权利要求1所述的设备,其中所述第一存储器请求是缺乏时间局部性和空间局部性中的一者或多者的存储器请求。
7.根据权利要求1所述的设备,其中所述电路被进一步配置成:
接收第三存储器请求;以及
在所述高速缓存中设置关于在所述第三存储器请求的处理期间从较低层级存储器检索到所述高速缓存中的数据在所述高速缓存中的存储时间和存储位置中的一者或多者的限制。
8.根据权利要求7所述的设备,其中所述电路被进一步配置成确定所述第三存储器请求是包括指定设置所述限制的第三指示的预取提示指令。
9.一种方法,包括:
通过电路接收以非高速缓存存储缓冲器为目标的第一存储器请求;以及
由所述电路至少部分地基于所述第一存储器请求来阻止将数据预取到所述非高速缓存存储缓冲器中。
10.根据权利要求9所述的方法,还包括确定所述第一存储器请求包括第一指示,所述第一指示指定阻止使用所述第一存储器请求的所述目标地址进行数据预取。
11.根据权利要求10所述的方法,其中响应于确定所述第一存储器请求包括所述第一指示,所述方法还包括阻止使用所述第一存储器请求的所述目标地址将数据预取到所述高速缓存中。
12.根据权利要求9所述的方法,还包括:
接收以所述非高速缓存存储缓冲器为目标的第二存储器请求;以及
至少部分地基于所述第二存储器请求来允许将数据预取到所述非高速缓存存储缓冲器中。
13.根据权利要求12所述的方法,还包括:确定所述第二存储器请求包括第二指示,所述第二指示指定允许使用所述第一存储器请求的所述目标地址进行数据预取。
14.根据权利要求9所述的方法,还包括:
接收第三存储器请求;以及
在所述高速缓存中设置关于在所述第三存储器请求的处理期间从较低层级存储器检索到所述高速缓存中的数据在所述高速缓存中的存储时间和存储位置中的一者或多者的限制。
15.根据权利要求14所述的方法,还包括确定所述第三存储器请求是包括指定设置所述限制的第三指示的预取提示指令。
16.一种处理单元,包括:
接口,所述接口被配置成与较低层级存储器通信;
高速缓存;
处理器内核,所述处理器内核包括非高速缓存存储缓冲器;和
电路,所述电路被配置成:
接收以所述非高速缓存存储缓冲器为目标的第一存储器请求;
至少部分地基于所述第一存储器请求来阻止将数据预取到所述非高速缓存存储缓冲器中。
17.根据权利要求16所述的处理单元,其中所述电路被进一步配置成确定所述第一存储器请求包括第一指示,所述第一指示指定阻止使用所述第一存储器请求的所述目标地址进行数据预取。
18.根据权利要求17所述的处理单元,其中,至少部分地基于所述确定所述第一存储器请求包括所述第一指示,所述电路被进一步配置成阻止使用所述第一存储器请求的所述目标地址将数据预取到所述高速缓存中。
19.根据权利要求16所述的处理单元,其中,其中所述电路被进一步配置成:
接收以所述非高速缓存存储缓冲器为目标的第二存储器请求;以及
至少部分地基于所述第二存储器请求来允许将数据预取到所述非高速缓存存储缓冲器中。
20.根据权利要求19所述的处理单元,其中所述电路被进一步配置成确定所述第二存储器请求包括第二指示,所述第二指示指定允许使用所述第一存储器请求的所述目标地址进行数据预取。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063083648P | 2020-09-25 | 2020-09-25 | |
US63/083,648 | 2020-09-25 | ||
US17/132,769 US11645207B2 (en) | 2020-09-25 | 2020-12-23 | Prefetch disable of memory requests targeting data lacking locality |
US17/132,769 | 2020-12-23 | ||
PCT/US2021/051834 WO2022066967A1 (en) | 2020-09-25 | 2021-09-23 | Prefetch disable of memory requests targeting data lacking locality |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116194901A true CN116194901A (zh) | 2023-05-30 |
Family
ID=80822677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180063863.1A Pending CN116194901A (zh) | 2020-09-25 | 2021-09-23 | 以缺乏局部性的数据为目标的存储器请求的预取禁用 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11645207B2 (zh) |
EP (1) | EP4217875A1 (zh) |
JP (1) | JP2023550231A (zh) |
KR (1) | KR20230069943A (zh) |
CN (1) | CN116194901A (zh) |
WO (1) | WO2022066967A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12020035B2 (en) * | 2022-03-10 | 2024-06-25 | Nvidia Corporation | Programmatically controlled data multicasting across multiple compute engines |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3954992B2 (ja) * | 2003-06-27 | 2007-08-08 | 富士通株式会社 | メモリインタフェース回路 |
US9418013B2 (en) | 2014-06-30 | 2016-08-16 | Intel Corporation | Selective prefetching for a sectored cache |
US9535696B1 (en) | 2016-01-04 | 2017-01-03 | International Business Machines Corporation | Instruction to cancel outstanding cache prefetches |
US20170371564A1 (en) * | 2016-06-28 | 2017-12-28 | Advanced Micro Devices, Inc. | Method and apparatus for memory efficiency improvement by providing burst memory access control |
US10229060B2 (en) | 2016-12-05 | 2019-03-12 | Intel Corporation | Instruction and logic for software hints to improve hardware prefetcher effectiveness |
US10452551B2 (en) | 2016-12-12 | 2019-10-22 | Intel Corporation | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register |
-
2020
- 2020-12-23 US US17/132,769 patent/US11645207B2/en active Active
-
2021
- 2021-09-23 EP EP21795089.8A patent/EP4217875A1/en active Pending
- 2021-09-23 JP JP2023518252A patent/JP2023550231A/ja active Pending
- 2021-09-23 CN CN202180063863.1A patent/CN116194901A/zh active Pending
- 2021-09-23 KR KR1020237011034A patent/KR20230069943A/ko unknown
- 2021-09-23 WO PCT/US2021/051834 patent/WO2022066967A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4217875A1 (en) | 2023-08-02 |
US11645207B2 (en) | 2023-05-09 |
KR20230069943A (ko) | 2023-05-19 |
US20220100664A1 (en) | 2022-03-31 |
JP2023550231A (ja) | 2023-12-01 |
WO2022066967A1 (en) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8583894B2 (en) | Hybrid prefetch method and apparatus | |
KR101614867B1 (ko) | 데이터 스트림에 대한 저장 인식 프리페치 | |
KR102611813B1 (ko) | 바이패스 최적화, 가변 그리드 아키텍처 및 융합된 벡터 동작들을 갖는 코프로세서들 | |
KR102588399B1 (ko) | 코프로세서 동작 번들링 | |
US10621100B1 (en) | Unified prefetch circuit for multi-level caches | |
US8117389B2 (en) | Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions | |
US12001351B2 (en) | Multiple-requestor memory access pipeline and arbiter | |
US20130262780A1 (en) | Apparatus and Method for Fast Cache Shutdown | |
US20130346683A1 (en) | Cache Sector Dirty Bits | |
KR102714755B1 (ko) | 제외 영역을 갖는 dsb 동작 | |
US20080294409A1 (en) | Design structure for performing cacheline polling utilizing a store and reserve instruction | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
US20120131305A1 (en) | Page aware prefetch mechanism | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
CN116194901A (zh) | 以缺乏局部性的数据为目标的存储器请求的预取禁用 | |
US20100306475A1 (en) | Data cache with modified bit array | |
US20230066236A1 (en) | Criticality-Informed Caching Policies | |
US7251710B1 (en) | Cache memory subsystem including a fixed latency R/W pipeline | |
US20100306478A1 (en) | Data cache with modified bit array | |
US20240272908A1 (en) | Load-with-substitution instruction | |
KR20240034258A (ko) | Ram으로서의 캐시 메모리의 동적 할당 |
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 |