CN114365101A - 服务质量脏线跟踪 - Google Patents
服务质量脏线跟踪 Download PDFInfo
- Publication number
- CN114365101A CN114365101A CN202080062569.4A CN202080062569A CN114365101A CN 114365101 A CN114365101 A CN 114365101A CN 202080062569 A CN202080062569 A CN 202080062569A CN 114365101 A CN114365101 A CN 114365101A
- Authority
- CN
- China
- Prior art keywords
- cache line
- write
- counter
- memory bandwidth
- cache
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 100
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000005259 measurement Methods 0.000 claims abstract description 27
- 230000004048 modification Effects 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory 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/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
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
背景技术
相关技术描述
除计算装置中的主存储器之外,大多数现代计算装置提供至少一级高速缓存存储器(或高速缓存)。通常,高速缓存是更小容量、更快访问的存储器,其用于更靠近于计算装置中执行操作的功能块存储待用于执行各种操作的有限数量的数据和指令的副本。高速缓存通常使用高速存储器电路(诸如静态随机存取存储器(SRAM)集成电路或其他类型的存储器电路)实现。当处理器请求访问存储在存储器中的数据时,处理器首先确定数据的副本是否存储在高速缓存中。如果是,则处理器访问高速缓存,从而有利于更有效地访问数据。
在一些高速缓存中,与高速缓存行相关联的类或线程存储在高速缓存中。这导致另外的信息存储在高速缓存中,从而可消耗大量区域。另外,在线程类的指示存储在高速缓存中的方案中,软件可周期性地改变线程的类。当这发生时,潜在地大的三级(L3)高速缓存中高速缓存行中的线程类信息可能已过时。
附图说明
通过结合附图参考以下描述可以更好地理解本文所描述的方法和机制的优点,在附图中:
图1是计算系统的一个实现方式的框图。
图2是处理器的一个实现方式的框图。
图3是计算高速缓存层次结构的写入存储器带宽的一个实现方式的框图。
图4是示出用于生成写入存储器带宽的测量结果的方法的一个实现方式的概括性流程图。
图5是示出用于监测对高速缓存的写入的方法的一个实现方式的概括性流程图。
图6是示出用于生成写入存储器带宽的测量结果的方法的一个实现方式的概括性流程图。
图7是示出用于跟踪每个线程类的写入存储器带宽的方法的一个实现方式的概括性流程图。
具体实施方式
在以下描述中,阐述了众多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,出于说明简明和清楚起见,在图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可相对于其他元件被放大。
本文公开了用于测量写入存储器带宽的各种系统、设备、方法和计算机可读介质。在一个实现方式中,系统包括处理器、高速缓存层次结构和存储器子系统。高速缓存层次结构包括一个或多个高速缓存级别和一个或多个高速缓存控制器(即,控制单元)。在一个实现方式中,给定控制单元监测对高速缓存层次结构的写入。如果对高速缓存行的写入是高速缓存行自进入高速缓存层次结构以来第一次被修改,则控制单元递增写入存储器带宽计数器。否则,如果写入的是自进入高速缓存层次结构以来已被修改的高速缓存行,则控制单元不递增写入存储器带宽计数器。对高速缓存行的第一次写入是用于写入存储器带宽的代理,因为这将最终引起对存储器的写入。控制单元使用写入存储器带宽计数器的值来生成写入存储器带宽的测量结果。另外,控制单元可针对不同线程类维持多个计数器,以计算每个线程类的写入存储器带宽。
现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100包括至少处理器105A至105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130A至130N、网络接口135和一个或多个存储器装置140A至140N。在其他实现方式中,计算系统100包括其他部件(例如,显示控制器)并且/或者计算系统100被不同地布置。处理器105A至105N代表包括在系统100中的任意数量的处理器。
在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在一个实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。在一个实现方式中,处理器105A包括至少一个或多个执行核心110A、高速缓存子系统115A和一个或多个存储器控制器130A。类似地,处理器105N包括至少一个或多个执行核心110N、高速缓存子系统115N和一个或多个存储器控制器130N。应注意,一个或多个执行核心110A至110N还可在本文中称为执行单元。还应注意,处理器105A至105N可包括其他部件,所述其他部件未被示出以避免混淆附图。
对于系统100,可需要针对给定进程或进程类、出于对软件的信息性目的、为了经由服务质量(QOS)方案进行带宽实施或针对对正在使用的存储器带宽的数量感兴趣的其他硬件测量存储器带宽。现有解决方案以相对直接的方式测量读取存储器带宽,因为高速缓存未命中请求通常具有全局请求者ID或附加到请求的其他类指示。测量写入存储器带宽不太直接,因为写入可为高速缓存驱逐的结果,并且高速缓存可不存储高速缓存行属于的类的指示。因此,在各种实现方式中,系统100使用各种技术来以有效方式测量对存储器装置140A至140N的写入存储器带宽。
在一个实现方式中,高速缓存子系统115A至115N包括用于监测高速缓存行在被带入高速缓存子系统115A至115N中之后分别被一个或多个执行核心110A至110N第一次写入的控制逻辑。在一个实现方式中,每当高速缓存行自在对应的高速缓存子系统115A至115N中在任何级别处被高速缓存以来第一次被修改时,控制逻辑递增计数器。如果高速缓存行是第二次或后续次数被修改,则控制逻辑不递增计数器。控制逻辑基于计数器的值生成写入存储器带宽的测量结果。在一个实现方式中,控制逻辑基于每个线程类监测对高速缓存行的第一次写入。在此实现方式中,控制逻辑生成写入存储器带宽的每个线程类测量结果。
一个或多个存储器控制器130A至130N代表分别耦接到任何数量和类型的一个或多个存储器装置140A至140N的任何数量和类型的存储器控制器。虽然一个或多个存储器控制器130A至130N被示出为分别位于处理器105A至105N内,但这仅指示一个实现方式。在另一个实现方式中,一个或多个存储器控制器130A至130N分别在处理器105A至105N外部。还应注意,高速缓存子系统115A至115N的一部分可分别位于一个或多个执行核心110A至110N内,并且高速缓存子系统115A至115N的另一部分可位于一个或多个执行核心110A至110N外部。例如,在一个实现方式中,一级(L1)高速缓存和二级(L2)高速缓存位于一个或多个执行核心110A至110N内,而最后一级高速缓存(LLC)位于一个或多个执行核心110A至110N外部。
一个或多个存储器装置140代表任何数量和类型的存储器装置。例如,一个或多个存储器装置140中的存储器的类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。I/O接口120代表任何数量和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCIExpress)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置(未示出)可耦接到I/O接口120。此类外围装置包括(但不限于)显示器、网络接口卡、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置等等。网络接口135用于跨网络接收和发送消息。
在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数量因实现方式的不同而不同。例如,存在与图1中示出的数量相比更多或更少的每种部件。还应注意,计算系统100可包括图1中未示出的其他部件。另外,在其他实现方式中,计算系统100可以与图1中所示不同的方式进行结构化。
现在转向图2,示出了处理器200的一个实现方式的框图。在一个实现方式中,处理器200包括至少执行核心205、高速缓存子系统210、控制单元215和存储器子系统220。需注意,处理器200还可包括其他部件,所述其他部件未被示出以避免模糊附图。核心205代表用于执行一个或多个程序和/或操作系统的指令的任意数量的处理器核心。在一个实现方式中,处理器200的电路包括在(图1的)处理器105A和/或处理器105N中。
在一个实现方式中,核心205向高速缓存子系统210发送读取和写入请求。控制单元215监测对高速缓存子系统210的高速缓存行执行的写入并且针对处理器200的不同线程类维持计数器以跟踪第一次写入高速缓存行。每当高速缓存行自被带入高速缓存子系统210中以来第一次被写入时,控制单元215递增用于高速缓存行的对应线程类的计数器。每个计数器用于生成用于对应的线程高速缓存的写入存储器带宽的估计值。
现在参考图3,示出了计算高速缓存层次结构300的写入存储器带宽的一个实现方式的框图。高速缓存层次结构300包括任意数量的高速缓存级别,其中级别的数量根据实现方式变化。在一个实现方式中,高速缓存层次结构300代表图2的高速缓存子系统210。控制单元310监测对高速缓存层次结构300的高速缓存行执行的写入。在一个实现方式中,控制单元310包括用于主机计算系统的每个单独线程类的单独计数器325A至325N。当自给定高速缓存行进入高速缓存层次结构300以来对给定高速缓存行第一次执行写入时,控制单元310确定写入操作的线程类。在一个实现方式中,控制单元310从执行单元接收线程类的指示。在另一个实现方式中,控制单元310利用给定高速缓存行的地址对表330执行查找以找到对应于所述地址的线程类。在另外的实现方式中,控制单元310查询执行单元的加载/存储单元(未示出)以确定写入操作的线程类。在其他实现方式中,控制单元310使用其他技术来确定写入操作的线程类。
每个计数器325A至325N指示用于对应的线程类的写入存储器带宽。在一个实现方式中,如果给定计数器325A至325N的值大于可编程阈值,则减少对应线程类的存储器流量,直到给定计数器325A至325N的值低于可编程阈值为止。在各种实现方式中,通过在存储器控制器处对写入请求进行排队、通过降低对应线程类的写入请求的优先级或通过使用其他技术来减少对应线程类的存储器流量。例如,用于减少对应线程类的存储器流量的其他机制包括减少执行核心处来自所述线程类的突出可允许的存储器请求的数量,将那些线程类的执行速率降低到达到所需存储器流量速率的水平或其他。
现参转向图4,示出了用于生成写入存储器带宽的测量结果的方法400的一个实现方式。出于讨论的目的,此实现方式中的步骤和图5至图7的那些步骤按相继次序示出。然而,应指出,在所描述方法的各种实现方式中,所描述元素中的一个或多个可同时执行、以与所示不同的次序执行或完全省略掉。也根据需要执行其他另外的元素。本文所述的各种系统或设备中的任一者被配置来实现方法400。
每当高速缓存行自进入高速缓存层次结构以来第一次被修改时,控制单元递增计数器(框405)。控制单元基于计数器的值生成写入存储器带宽的测量结果(框410)。在(图6的)方法600中描述了生成写入存储器带宽的测量结果的一个示例。如果写入存储器带宽的测量结果大于给定阈值(条件框415,“是”支路),则控制单元减少发送到存储器子系统的写入操作的数量(框420)。否则,如果写入存储器带宽的测量结果小于或等于给定阈值(条件框415,“否”支路),则控制单元不会干扰写入操作被发送到存储器子系统(框425)。在框420和425之后,方法400返回到框405。在另一个实现方式中,控制单元通过将在框410中生成的写入存储器带宽的测量结果与读取存储器带宽的测量结果相加来生成总存储器带宽的测量结果。然后,在此实现方式中,控制单元在条件框415中确定总存储器带宽是否大于给定阈值。
现在参考图5,示出了用于监测对高速缓存的写入的方法500的一个实现方式。检测对给定高速缓存行的写入操作(框505)。响应于检测到写入操作,控制单元确定对给定高速缓存行的写入是否是给定高速缓存行自进入高速缓存层次结构以来第一次被修改(框510)。在一个实现方式中,检查给定高速缓存行的脏状态,以确定给定高速缓存行自进入高速缓存层次结构以来先前是否已被写入。
如果对给定高速缓存行的写入是自给定高速缓存行进入高速缓存层次结构以来第一次修改给定高速缓存行(条件框515,“是”支路),则控制单元递增对应的计数器(框520)。否则,如果给定高速缓存行自进入高速缓存层次结构以来先前已被修改(条件框515,“否”支路),则控制单元保持对应的计数器不变(框525)。在框520和525之后,方法500结束。
现在转向图6,示出了用于生成写入存储器带宽的测量结果的方法600的一个实现方式。控制单元维持计数器以跟踪对存储在高速缓存层次结构中的未修改高速缓存行执行的写入(框605)。应注意,对修改的高速缓存行执行的写入不被计数器跟踪。控制单元在第一时间点拍摄计数器值的第一快照(框610)。替代地,在另一个实现方式中,控制单元在方法600开始时重置计数器,在这种情况下可跳过框610,因为计数器将在第一时间点具有零值。
之后,在经过一段时间之后,控制单元在第二时间点拍摄计数器值的第二快照(框615)。允许在第一时间点与第二时间点之间经过的时间量可为可编程的或某个预定时间量。接着,控制单元生成写入存储器带宽的测量结果,所述测量结果等于计数器值的第二快照与第一快照之间的差除以在第一时间点与第二时间点之间经过的时钟周期的数量(框620)。在框620之后,方法600结束。应注意,在框620中生成的写入存储器带宽的测量结果可由软件和/或硬件以多种方式使用。应注意,方法600可以有规律的间隔执行。在一些情况下,控制单元在方法600的每次迭代之后重置计数器。
现在转向图7,示出了用于跟踪每个线程类的写入存储器带宽的方法700的一个实现方式。控制单元针对多个不同线程类维持多个计数器,其中每个计数器跟踪用于单独线程类的写入存储器带宽(705)。每当检测到对高速缓存行的写入时,控制单元确定此写入是否是自高速缓存行进入高速缓存层次结构以来对高速缓存行的第一次修改(框710)。例如,在一个实现方式中,对不具有对应的脏位的高速缓存行的写入被认为是高速缓存行的第一次修改。
如果写入是自高速缓存行进入高速缓存层次结构以来对高速缓存行的第一次修改(条件框715,“是”支路),则控制单元确定高速缓存行属于的线程类(框720)。在一个实现方式中,控制单元从对应于引起对高速缓存行的写入的指令的加载/存储单元条目检索线程类。在另一个实现方式中,控制单元从对应于引起对高速缓存行的写入的指令的重新排序缓冲器条目检索线程类。在另外的实现方式中,控制单元使用高速缓存行的地址来对线程类表执行查找以确定对应于所述地址的线程类。如果写入不是自高速缓存行进入高速缓存层次结构以来高速缓存行的第一次修改(条件框715,“否”支路),则方法700返回到框710。在确定高速缓存行属于的线程类之后,控制单元递增对应于此线程类的计数器(框725)。在框725之后,方法700返回到框710。
在各种实现方式中,使用软件应用程序的程序指令实现本文所述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种实现方式中,此类程序指令可由高级编程语言表示。在其他实现方式中,程序指令从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,写入描述硬件的行为或设计的程序指令。此类程序指令由高级编程语言(诸如C)表示。替代地,使用硬件设计语言(HDL),诸如Verilog。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。存储介质可由计算系统在使用期间访问以将程序指令提供给计算系统以用于程序执行。一般来讲,这种计算系统包括至少一个或多个存储器和被配置来执行程序指令的一个或多个处理器。
应强调,上述实现方式仅是实现方式的非限制性示例。一旦充分了解上述公开内容,许多变型和修改将对本领域技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变型和修改。
Claims (20)
1.一种处理器,其包括:
高速缓存层次结构;以及
控制单元,所述控制单元被配置来:
当自高速缓存行进入所述高速缓存层次结构以来第一次修改所述高速缓存行时,递增计数器;
基于所述计数器的值生成写入存储器带宽的测量结果;并且
响应于写入存储器带宽的所述测量结果超过给定阈值而致使传送到存储器子系统的写入操作的数量减少。
2.如权利要求1所述的处理器,其中所述控制单元还被配置来:
检测针对第一高速缓存行的写入操作;并且
响应于确定对所述第一高速缓存行的所述写入操作是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的第一次修改而递增所述计数器。
3.如权利要求2所述的处理器,其中所述控制单元还被配置来:响应于确定对所述第一高速缓存行的所述写入不是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的所述第一次修改而保持所述计数器不变。
4.如权利要求1所述的处理器,其中所述控制单元还被配置来:
记录所述计数器在第一时间点的第一值;
记录所述计数器在第二时间点的第二值,其中所述第二时间点是在所述第一时间点之后;并且
将写入存储器带宽的所述测量结果计算为等于所述第二值与所述第一值之间的差除以在所述第一时间点与所述第二时间点之间经过的时钟周期的数量。
5.如权利要求1所述的处理器,其中所述控制单元还被配置来:
针对多个不同线程类维持多个计数器,其中每个计数器跟踪用于单独线程类的写入存储器带宽;
检测自给定高速缓存行进入所述高速缓存层次结构以来对所述给定高速缓存行的第一次写入;并且
递增对应于所述给定高速缓存行属于的线程类的计数器。
6.如权利要求1所述的处理器,其中控制逻辑还被配置来:将写入存储器带宽的所述测量结果与读取存储器带宽的给定测量结果相加以计算总存储器带宽。
7.如权利要求6所述的处理器,其中所述控制逻辑还被配置来将所述总存储器带宽与一个或多个阈值进行比较。
8.一种方法,其包括:
当自高速缓存行进入高速缓存层次结构以来第一次修改所述高速缓存行时,由控制单元递增计数器;
基于所述计数器的值生成写入存储器带宽的测量结果;并且
响应于写入存储器带宽的所述测量结果超过给定阈值而致使传送到存储器子系统的写入操作的数量减少。
9.如权利要求8所述的方法,其还包括:
检测针对第一高速缓存行的写入操作;并且
响应于确定对所述第一高速缓存行的所述写入操作是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的第一次修改而递增所述计数器。
10.如权利要求9所述的方法,其还包括:响应于确定对所述第一高速缓存行的所述写入不是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的所述第一次修改而保持所述计数器不变。
11.如权利要求8所述的方法,其还包括:
记录所述计数器在第一时间点的第一值;
记录所述计数器在第二时间点的第二值,其中所述第二时间点是在所述第一时间点之后;并且
将写入存储器带宽的所述测量结果计算为等于所述第二值与所述第一值之间的差除以在所述第一时间点与所述第二时间点之间经过的时钟周期的数量。
12.如权利要求8所述的方法,其还包括:
针对多个不同线程类维持多个计数器,其中每个计数器跟踪用于单独线程类的写入存储器带宽;
检测自给定高速缓存行进入所述高速缓存层次结构以来对所述给定高速缓存行的第一次写入;并且
递增对应于所述给定高速缓存行属于的线程类的计数器。
13.如权利要求8所述的方法,其还包括:将写入存储器带宽的所述测量结果与读取存储器带宽的给定测量结果相加以计算总存储器带宽。
14.如权利要求8所述的方法,其还包括:将总存储器带宽与一个或多个阈值进行比较。
15.一种系统,其包括:
存储器子系统;以及
处理器,所述处理器耦接到所述存储器子系统;
其中所述处理器被配置来:
当自高速缓存行进入高速缓存层次结构以来第一次修改所述高速缓存行时,递增计数器;
基于所述计数器的值生成写入存储器带宽的测量结果;并且
响应于写入存储器带宽的所述测量结果超过给定阈值而致使传送到存储器子系统的写入操作的数量减少。
16.如权利要求15所述的系统,其中所述处理器还被配置来:
检测针对第一高速缓存行的写入操作;并且
响应于确定对所述第一高速缓存行的所述写入操作是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的第一次修改而递增所述计数器。
17.如权利要求16所述的系统,其中所述处理器还被配置来响应于确定对所述第一高速缓存行的所述写入不是自所述第一高速缓存行进入所述高速缓存层次结构以来对所述第一高速缓存行的所述第一次修改而保持所述计数器不变。
18.如权利要求15所述的系统,其中所述处理器还被配置来:
记录所述计数器在第一时间点的第一值;
记录所述计数器在第二时间点的第二值,其中所述第二时间点是在所述第一时间点之后;并且
将写入存储器带宽的所述测量结果计算为等于所述第二值与所述第一值之间的差除以在所述第一时间点与所述第二时间点之间经过的时钟周期的数量。
19.如权利要求15所述的系统,其中所述处理器还被配置来:
针对多个不同线程类维持多个计数器,其中每个计数器跟踪用于单独线程类的写入存储器带宽;
检测自给定高速缓存行进入所述高速缓存层次结构以来对所述给定高速缓存行的第一次写入;并且
递增对应于所述给定高速缓存行属于的线程类的计数器。
20.如权利要求15所述的系统,其中所述控制逻辑还被配置来:将写入存储器带宽的所述测量结果与读取存储器带宽的给定测量结果相加以计算总存储器带宽。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/562,128 US11106594B2 (en) | 2019-09-05 | 2019-09-05 | Quality of service dirty line tracking |
US16/562,128 | 2019-09-05 | ||
PCT/US2020/049215 WO2021046229A1 (en) | 2019-09-05 | 2020-09-03 | Quality of service dirty line tracking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114365101A true CN114365101A (zh) | 2022-04-15 |
CN114365101B CN114365101B (zh) | 2023-10-24 |
Family
ID=72561958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080062569.4A Active CN114365101B (zh) | 2019-09-05 | 2020-09-03 | 服务质量脏线跟踪 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11106594B2 (zh) |
EP (1) | EP4026008A1 (zh) |
JP (1) | JP7357148B2 (zh) |
KR (1) | KR102627410B1 (zh) |
CN (1) | CN114365101B (zh) |
WO (1) | WO2021046229A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106594B2 (en) | 2019-09-05 | 2021-08-31 | Advanced Micro Devices, Inc. | Quality of service dirty line tracking |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189252A1 (en) * | 2012-12-31 | 2014-07-03 | Arijit Biswas | Dynamic cache write policy |
CN105378682A (zh) * | 2013-06-10 | 2016-03-02 | 甲骨文国际公司 | 持久存储器中数据的观察 |
CN108268385A (zh) * | 2016-12-30 | 2018-07-10 | 英特尔公司 | 具有集成目录高速缓存的优化的高速缓存代理 |
US20180203799A1 (en) * | 2017-01-18 | 2018-07-19 | Intel Corporation | Memory-efficient last level cache architecture |
CN109074314A (zh) * | 2016-04-08 | 2018-12-21 | 高通股份有限公司 | 基于存储器请求大小的预测减少存储器访问带宽 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307477A (en) | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
GB2273181A (en) * | 1992-12-02 | 1994-06-08 | Ibm | Cache/non-cache access control. |
JPH0844626A (ja) | 1994-07-28 | 1996-02-16 | Nec Niigata Ltd | キャッシュシステムのフラッシュサイクル制御方法 |
US6205521B1 (en) | 1997-11-03 | 2001-03-20 | Compaq Computer Corporation | Inclusion map for accelerated cache flush |
EP1182564A3 (en) | 2000-08-21 | 2004-07-28 | Texas Instruments France | Local memory with indicator bits to support concurrent DMA and CPU access |
US7895239B2 (en) * | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US20060143397A1 (en) | 2004-12-29 | 2006-06-29 | O'bleness R F | Dirty line hint array for cache flushing |
US7330941B2 (en) | 2005-03-23 | 2008-02-12 | Qualcomm Incorporated | Global modified indicator to reduce power consumption on cache miss |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US8285940B2 (en) | 2008-02-29 | 2012-10-09 | Cadence Design Systems, Inc. | Method and apparatus for high speed cache flushing in a non-volatile memory |
US8103830B2 (en) | 2008-09-30 | 2012-01-24 | Intel Corporation | Disabling cache portions during low voltage operations |
US20110029735A1 (en) * | 2009-07-28 | 2011-02-03 | Ying-Chieh Chiang | Method for managing an embedded system to enhance performance thereof, and associated embedded system |
US8285936B2 (en) | 2009-10-20 | 2012-10-09 | The Regents Of The University Of Michigan | Cache memory with power saving state |
US8667449B2 (en) | 2010-11-17 | 2014-03-04 | Advanced Micro Devices, Inc. | Flip-flop library development for high frequency designs built in an ASIC flow |
US20130346683A1 (en) | 2012-06-22 | 2013-12-26 | William L. Walker | Cache Sector Dirty Bits |
JP6214888B2 (ja) | 2013-03-13 | 2017-10-18 | 株式会社ダイヘン | 変圧器 |
US9251081B2 (en) | 2013-08-01 | 2016-02-02 | Advanced Micro Devices, Inc. | Management of caches |
JP6511023B2 (ja) * | 2016-08-22 | 2019-05-08 | 日本電信電話株式会社 | 仮想マシン管理装置およびデプロイ可否判断方法 |
WO2018078610A1 (en) * | 2016-10-31 | 2018-05-03 | Leonardo S.P.A. | Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors |
US11068314B2 (en) * | 2017-03-29 | 2021-07-20 | Juniper Networks, Inc. | Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment |
US10452548B2 (en) * | 2017-09-28 | 2019-10-22 | Advanced Micro Devices, Inc. | Preemptive cache writeback with transaction support |
US11556477B2 (en) * | 2018-06-15 | 2023-01-17 | Arteris, Inc. | System and method for configurable cache IP with flushable address range |
CN113490921A (zh) * | 2019-03-29 | 2021-10-08 | 英特尔公司 | 用于收集冷页的装置、方法和系统 |
US11106594B2 (en) | 2019-09-05 | 2021-08-31 | Advanced Micro Devices, Inc. | Quality of service dirty line tracking |
US20200401891A1 (en) * | 2020-09-04 | 2020-12-24 | Intel Corporation | Methods and apparatus for hardware-aware machine learning model training |
-
2019
- 2019-09-05 US US16/562,128 patent/US11106594B2/en active Active
-
2020
- 2020-09-03 EP EP20775476.3A patent/EP4026008A1/en active Pending
- 2020-09-03 CN CN202080062569.4A patent/CN114365101B/zh active Active
- 2020-09-03 JP JP2022512734A patent/JP7357148B2/ja active Active
- 2020-09-03 KR KR1020227010942A patent/KR102627410B1/ko active IP Right Grant
- 2020-09-03 WO PCT/US2020/049215 patent/WO2021046229A1/en unknown
-
2021
- 2021-08-27 US US17/459,100 patent/US11669457B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189252A1 (en) * | 2012-12-31 | 2014-07-03 | Arijit Biswas | Dynamic cache write policy |
CN105378682A (zh) * | 2013-06-10 | 2016-03-02 | 甲骨文国际公司 | 持久存储器中数据的观察 |
CN109074314A (zh) * | 2016-04-08 | 2018-12-21 | 高通股份有限公司 | 基于存储器请求大小的预测减少存储器访问带宽 |
CN108268385A (zh) * | 2016-12-30 | 2018-07-10 | 英特尔公司 | 具有集成目录高速缓存的优化的高速缓存代理 |
US20180203799A1 (en) * | 2017-01-18 | 2018-07-19 | Intel Corporation | Memory-efficient last level cache architecture |
CN108334458A (zh) * | 2017-01-18 | 2018-07-27 | 英特尔公司 | 存储器高效的末级高速缓存架构 |
Also Published As
Publication number | Publication date |
---|---|
WO2021046229A1 (en) | 2021-03-11 |
EP4026008A1 (en) | 2022-07-13 |
KR102627410B1 (ko) | 2024-01-23 |
KR20220057572A (ko) | 2022-05-09 |
CN114365101B (zh) | 2023-10-24 |
US20210390057A1 (en) | 2021-12-16 |
JP7357148B2 (ja) | 2023-10-05 |
US11669457B2 (en) | 2023-06-06 |
US20210073137A1 (en) | 2021-03-11 |
JP2022546358A (ja) | 2022-11-04 |
US11106594B2 (en) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111684425A (zh) | 适应于大高速缓存大小的基于区域的目录方案 | |
US20140281740A1 (en) | Vulnerability estimation for cache memory | |
JP2023506264A (ja) | アクセスタイプの優先度に基づくキャッシュ管理 | |
JP2023507292A (ja) | ゼロ値メモリ圧縮 | |
US10580110B2 (en) | Hardware structure to track page reuse | |
CN114365101B (zh) | 服务质量脏线跟踪 | |
US11561895B2 (en) | Oldest operation wait time indication input into set-dueling | |
WO2022133053A1 (en) | Data placement with packet metadata | |
CN111656332A (zh) | 基于本地代理的高速缓存传送加速方案 | |
US20210182213A1 (en) | Cache line re-reference interval prediction using physical page address | |
CN115087961A (zh) | 用于相干及非相干存储器请求的仲裁方案 | |
US20220050785A1 (en) | System probe aware last level cache insertion bypassing | |
US10403351B1 (en) | Save and restore scoreboard | |
US10540316B2 (en) | Cancel and replay protocol scheme to improve ordered bandwidth | |
US20230095461A1 (en) | Using Epoch Counter Values for Controlling the Retention of Cache Blocks in a Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |