服务质量脏线跟踪的制作方法

文档序号:29692016发布日期:2022-04-16 12:01阅读:135来源:国知局
服务质量脏线跟踪的制作方法
服务质量脏线跟踪


背景技术:

1.相关技术描述
2.除计算装置中的主存储器之外,大多数现代计算装置提供至少一级高速缓存存储器(或高速缓存)。通常,高速缓存是更小容量、更快访问的存储器,其用于更靠近于计算装置中执行操作的功能块存储待用于执行各种操作的有限数量的数据和指令的副本。高速缓存通常使用高速存储器电路(诸如静态随机存取存储器(sram)集成电路或其他类型的存储器电路)实现。当处理器请求访问存储在存储器中的数据时,处理器首先确定数据的副本是否存储在高速缓存中。如果是,则处理器访问高速缓存,从而有利于更有效地访问数据。
3.在一些高速缓存中,与高速缓存行相关联的类或线程存储在高速缓存中。这导致另外的信息存储在高速缓存中,从而可消耗大量区域。另外,在线程类的指示存储在高速缓存中的方案中,软件可周期性地改变线程的类。当这发生时,潜在地大的三级(l3)高速缓存中高速缓存行中的线程类信息可能已过时。
附图说明
4.通过结合附图参考以下描述可以更好地理解本文所描述的方法和机制的优点,在附图中:
5.图1是计算系统的一个实现方式的框图。
6.图2是处理器的一个实现方式的框图。
7.图3是计算高速缓存层次结构的写入存储器带宽的一个实现方式的框图。
8.图4是示出用于生成写入存储器带宽的测量结果的方法的一个实现方式的概括性流程图。
9.图5是示出用于监测对高速缓存的写入的方法的一个实现方式的概括性流程图。
10.图6是示出用于生成写入存储器带宽的测量结果的方法的一个实现方式的概括性流程图。
11.图7是示出用于跟踪每个线程类的写入存储器带宽的方法的一个实现方式的概括性流程图。
具体实施方式
12.在以下描述中,阐述了众多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,出于说明简明和清楚起见,在图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可相对于其他元件被放大。
13.本文公开了用于测量写入存储器带宽的各种系统、设备、方法和计算机可读介质。在一个实现方式中,系统包括处理器、高速缓存层次结构和存储器子系统。高速缓存层次结构包括一个或多个高速缓存级别和一个或多个高速缓存控制器(即,控制单元)。在一个实
现方式中,给定控制单元监测对高速缓存层次结构的写入。如果对高速缓存行的写入是高速缓存行自进入高速缓存层次结构以来第一次被修改,则控制单元递增写入存储器带宽计数器。否则,如果写入的是自进入高速缓存层次结构以来已被修改的高速缓存行,则控制单元不递增写入存储器带宽计数器。对高速缓存行的第一次写入是用于写入存储器带宽的代理,因为这将最终引起对存储器的写入。控制单元使用写入存储器带宽计数器的值来生成写入存储器带宽的测量结果。另外,控制单元可针对不同线程类维持多个计数器,以计算每个线程类的写入存储器带宽。
14.现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100包括至少处理器105a至105n、输入/输出(i/o)接口120、总线125、一个或多个存储器控制器130a至130n、网络接口135和一个或多个存储器装置140a至140n。在其他实现方式中,计算系统100包括其他部件(例如,显示控制器)并且/或者计算系统100被不同地布置。处理器105a至105n代表包括在系统100中的任意数量的处理器。
15.在一个实现方式中,处理器105a是通用处理器,诸如中央处理单元(cpu)。在一个实现方式中,处理器105n是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(gpu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、专用集成电路(asic)等等。在一个实现方式中,处理器105a包括至少一个或多个执行核心110a、高速缓存子系统115a和一个或多个存储器控制器130a。类似地,处理器105n包括至少一个或多个执行核心110n、高速缓存子系统115n和一个或多个存储器控制器130n。应注意,一个或多个执行核心110a至110n还可在本文中称为执行单元。还应注意,处理器105a至105n可包括其他部件,所述其他部件未被示出以避免混淆附图。
16.对于系统100,可需要针对给定进程或进程类、出于对软件的信息性目的、为了经由服务质量(qos)方案进行带宽实施或针对对正在使用的存储器带宽的数量感兴趣的其他硬件测量存储器带宽。现有解决方案以相对直接的方式测量读取存储器带宽,因为高速缓存未命中请求通常具有全局请求者id或附加到请求的其他类指示。测量写入存储器带宽不太直接,因为写入可为高速缓存驱逐的结果,并且高速缓存可不存储高速缓存行属于的类的指示。因此,在各种实现方式中,系统100使用各种技术来以有效方式测量对存储器装置140a至140n的写入存储器带宽。
17.在一个实现方式中,高速缓存子系统115a至115n包括用于监测高速缓存行在被带入高速缓存子系统115a至115n中之后分别被一个或多个执行核心110a至110n第一次写入的控制逻辑。在一个实现方式中,每当高速缓存行自在对应的高速缓存子系统115a至115n中在任何级别处被高速缓存以来第一次被修改时,控制逻辑递增计数器。如果高速缓存行是第二次或后续次数被修改,则控制逻辑不递增计数器。控制逻辑基于计数器的值生成写入存储器带宽的测量结果。在一个实现方式中,控制逻辑基于每个线程类监测对高速缓存行的第一次写入。在此实现方式中,控制逻辑生成写入存储器带宽的每个线程类测量结果。
18.一个或多个存储器控制器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外部。
19.一个或多个存储器装置140代表任何数量和类型的存储器装置。例如,一个或多个存储器装置140中的存储器的类型包括动态随机存取存储器(dram)、静态随机存取存储器(sram)、nand闪存存储器、nor闪存存储器、铁电随机存取存储器(feram)等。i/o接口120代表任何数量和类型的i/o接口(例如,外围部件互连(pci)总线、pci扩展(pci-x)、pcie(pciexpress)总线、吉比特以太网(gbe)总线、通用串行总线(usb))。各种类型的外围装置(未示出)可耦接到i/o接口120。此类外围装置包括(但不限于)显示器、网络接口卡、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置等等。网络接口135用于跨网络接收和发送消息。
20.在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数量因实现方式的不同而不同。例如,存在与图1中示出的数量相比更多或更少的每种部件。还应注意,计算系统100可包括图1中未示出的其他部件。另外,在其他实现方式中,计算系统100可以与图1中所示不同的方式进行结构化。
21.现在转向图2,示出了处理器200的一个实现方式的框图。在一个实现方式中,处理器200包括至少执行核心205、高速缓存子系统210、控制单元215和存储器子系统220。需注意,处理器200还可包括其他部件,所述其他部件未被示出以避免模糊附图。核心205代表用于执行一个或多个程序和/或操作系统的指令的任意数量的处理器核心。在一个实现方式中,处理器200的电路包括在(图1的)处理器105a和/或处理器105n中。
22.在一个实现方式中,核心205向高速缓存子系统210发送读取和写入请求。控制单元215监测对高速缓存子系统210的高速缓存行执行的写入并且针对处理器200的不同线程类维持计数器以跟踪第一次写入高速缓存行。每当高速缓存行自被带入高速缓存子系统210中以来第一次被写入时,控制单元215递增用于高速缓存行的对应线程类的计数器。每个计数器用于生成用于对应的线程高速缓存的写入存储器带宽的估计值。
23.现在参考图3,示出了计算高速缓存层次结构300的写入存储器带宽的一个实现方式的框图。高速缓存层次结构300包括任意数量的高速缓存级别,其中级别的数量根据实现方式变化。在一个实现方式中,高速缓存层次结构300代表图2的高速缓存子系统210。控制单元310监测对高速缓存层次结构300的高速缓存行执行的写入。在一个实现方式中,控制单元310包括用于主机计算系统的每个单独线程类的单独计数器325a至325n。当自给定高速缓存行进入高速缓存层次结构300以来对给定高速缓存行第一次执行写入时,控制单元310确定写入操作的线程类。在一个实现方式中,控制单元310从执行单元接收线程类的指示。在另一个实现方式中,控制单元310利用给定高速缓存行的地址对表330执行查找以找到对应于所述地址的线程类。在另外的实现方式中,控制单元310查询执行单元的加载/存储单元(未示出)以确定写入操作的线程类。在其他实现方式中,控制单元310使用其他技术来确定写入操作的线程类。
24.每个计数器325a至325n指示用于对应的线程类的写入存储器带宽。在一个实现方式中,如果给定计数器325a至325n的值大于可编程阈值,则减少对应线程类的存储器流量,
直到给定计数器325a至325n的值低于可编程阈值为止。在各种实现方式中,通过在存储器控制器处对写入请求进行排队、通过降低对应线程类的写入请求的优先级或通过使用其他技术来减少对应线程类的存储器流量。例如,用于减少对应线程类的存储器流量的其他机制包括减少执行核心处来自所述线程类的突出可允许的存储器请求的数量,将那些线程类的执行速率降低到达到所需存储器流量速率的水平或其他。
25.现参转向图4,示出了用于生成写入存储器带宽的测量结果的方法400的一个实现方式。出于讨论的目的,此实现方式中的步骤和图5至图7的那些步骤按相继次序示出。然而,应指出,在所描述方法的各种实现方式中,所描述元素中的一个或多个可同时执行、以与所示不同的次序执行或完全省略掉。也根据需要执行其他另外的元素。本文所述的各种系统或设备中的任一者被配置来实现方法400。
26.每当高速缓存行自进入高速缓存层次结构以来第一次被修改时,控制单元递增计数器(框405)。控制单元基于计数器的值生成写入存储器带宽的测量结果(框410)。在(图6的)方法600中描述了生成写入存储器带宽的测量结果的一个示例。如果写入存储器带宽的测量结果大于给定阈值(条件框415,“是”支路),则控制单元减少发送到存储器子系统的写入操作的数量(框420)。否则,如果写入存储器带宽的测量结果小于或等于给定阈值(条件框415,“否”支路),则控制单元不会干扰写入操作被发送到存储器子系统(框425)。在框420和425之后,方法400返回到框405。在另一个实现方式中,控制单元通过将在框410中生成的写入存储器带宽的测量结果与读取存储器带宽的测量结果相加来生成总存储器带宽的测量结果。然后,在此实现方式中,控制单元在条件框415中确定总存储器带宽是否大于给定阈值。
27.现在参考图5,示出了用于监测对高速缓存的写入的方法500的一个实现方式。检测对给定高速缓存行的写入操作(框505)。响应于检测到写入操作,控制单元确定对给定高速缓存行的写入是否是给定高速缓存行自进入高速缓存层次结构以来第一次被修改(框510)。在一个实现方式中,检查给定高速缓存行的脏状态,以确定给定高速缓存行自进入高速缓存层次结构以来先前是否已被写入。
28.如果对给定高速缓存行的写入是自给定高速缓存行进入高速缓存层次结构以来第一次修改给定高速缓存行(条件框515,“是”支路),则控制单元递增对应的计数器(框520)。否则,如果给定高速缓存行自进入高速缓存层次结构以来先前已被修改(条件框515,“否”支路),则控制单元保持对应的计数器不变(框525)。在框520和525之后,方法500结束。
29.现在转向图6,示出了用于生成写入存储器带宽的测量结果的方法600的一个实现方式。控制单元维持计数器以跟踪对存储在高速缓存层次结构中的未修改高速缓存行执行的写入(框605)。应注意,对修改的高速缓存行执行的写入不被计数器跟踪。控制单元在第一时间点拍摄计数器值的第一快照(框610)。替代地,在另一个实现方式中,控制单元在方法600开始时重置计数器,在这种情况下可跳过框610,因为计数器将在第一时间点具有零值。
30.之后,在经过一段时间之后,控制单元在第二时间点拍摄计数器值的第二快照(框615)。允许在第一时间点与第二时间点之间经过的时间量可为可编程的或某个预定时间量。接着,控制单元生成写入存储器带宽的测量结果,所述测量结果等于计数器值的第二快照与第一快照之间的差除以在第一时间点与第二时间点之间经过的时钟周期的数量(框
620)。在框620之后,方法600结束。应注意,在框620中生成的写入存储器带宽的测量结果可由软件和/或硬件以多种方式使用。应注意,方法600可以有规律的间隔执行。在一些情况下,控制单元在方法600的每次迭代之后重置计数器。
31.现在转向图7,示出了用于跟踪每个线程类的写入存储器带宽的方法700的一个实现方式。控制单元针对多个不同线程类维持多个计数器,其中每个计数器跟踪用于单独线程类的写入存储器带宽(705)。每当检测到对高速缓存行的写入时,控制单元确定此写入是否是自高速缓存行进入高速缓存层次结构以来对高速缓存行的第一次修改(框710)。例如,在一个实现方式中,对不具有对应的脏位的高速缓存行的写入被认为是高速缓存行的第一次修改。
32.如果写入是自高速缓存行进入高速缓存层次结构以来对高速缓存行的第一次修改(条件框715,“是”支路),则控制单元确定高速缓存行属于的线程类(框720)。在一个实现方式中,控制单元从对应于引起对高速缓存行的写入的指令的加载/存储单元条目检索线程类。在另一个实现方式中,控制单元从对应于引起对高速缓存行的写入的指令的重新排序缓冲器条目检索线程类。在另外的实现方式中,控制单元使用高速缓存行的地址来对线程类表执行查找以确定对应于所述地址的线程类。如果写入不是自高速缓存行进入高速缓存层次结构以来高速缓存行的第一次修改(条件框715,“否”支路),则方法700返回到框710。在确定高速缓存行属于的线程类之后,控制单元递增对应于此线程类的计数器(框725)。在框725之后,方法700返回到框710。
33.在各种实现方式中,使用软件应用程序的程序指令实现本文所述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种实现方式中,此类程序指令可由高级编程语言表示。在其他实现方式中,程序指令从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,写入描述硬件的行为或设计的程序指令。此类程序指令由高级编程语言(诸如c)表示。替代地,使用硬件设计语言(hdl),诸如verilog。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。存储介质可由计算系统在使用期间访问以将程序指令提供给计算系统以用于程序执行。一般来讲,这种计算系统包括至少一个或多个存储器和被配置来执行程序指令的一个或多个处理器。
34.应强调,上述实现方式仅是实现方式的非限制性示例。一旦充分了解上述公开内容,许多变型和修改将对本领域技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变型和修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1