生成功率高效的安全多客户端性能监控数据的制作方法

未命名 09-24 阅读:105 评论:0


1.各种实施例总体上涉及计算架构,并且更具体地涉及生成功率高效的安全多客户端性能监控数据。


背景技术:

2.计算系统,也称为服务器,此外通常包括一个或更多个处理单元,例如中央处理单元(cpu)和/或图形处理单元(gpu),以及一个或更多个存储器系统。处理单元执行用户模式软件应用程序,该应用程序提交和启动计算任务,在包括在处理单元中的一个或更多个计算引擎上执行。数据中心可以部署大量此类计算系统,其中每个计算系统可以为数据中心的多个客户端执行多个虚拟机。在计算系统的cpu上执行的管理程序代表数据中心的管理用户执行用于划分gpu的各种技术。访客用户被分配到一个分区,然后可以在该分区内的一个或更多个虚拟机上执行处理任务,与分配给任何其他分区的任何其他访客用户隔离。计算系统由此能够为多个客户端安全地执行软件应用程序,而没有将数据从一个虚拟机泄漏到另一个虚拟机的风险。
3.数据中心的管理用户和各种虚拟机的访客用户通常都希望收集与在处理单元上执行的软件应用相关联的性能监控数据。数据中心的管理用户可能希望为整个计算系统收集性能监控数据。管理用户可能还希望为在计算系统上执行的每个单独的虚拟机收集性能监控数据。管理用户可以使用该性能监控数据来确定计算系统是如何被使用的、计算系统是否部署有适当的存储器和其他硬件、软件应用程序是否可以更有效地使用硬件等。每个访客用户可能想要收集分配给访客用户的虚拟机的性能监控数据,以便确定如何更有效地使用分配的虚拟机的硬件资源。此外,每个虚拟机可以在多个进程(也称为上下文)之间对计算资源进行时间分片,其中一个上下文执行第一时间段,然后另一个上下文执行第二时间段,等等。访客用户可能想要为每个单独的上下文收集性能监控数据,以确定虚拟机的哪些上下文执行得更有效,哪些上下文执行效率较低。为了实现这些目标,计算系统作为一个整体、每个虚拟机以及在每个虚拟机中执行的每个上下文的性能监控数据都应该并发地生成。
4.传统上,计算系统中的某些处理单元支持生成某些类型的性能数据的剖析电路(profiling circuitry),该性能数据对软件工程师在发布之前开发、调试和优化软件应用程序时有用。软件工程师在执行剖析的软件应用程序时使用剖析电路。通常,软件工程师在一小部分软件应用程序的循环中的短时间内使用剖析电路或将其重复使用。虽然剖析电路生成某些类型的性能数据,但由于各种原因,该剖析电路不太适合上述性能监控。首先,剖析电路被设计为在短时间内为特定软件应用程序生成剖析数据。这种剖析电路无法在计算系统上的所有虚拟机上执行的所有上下文中生成性能监控数据而不影响软件应用程序行为。其次,剖析电路不太适合以节能方式一次或长时间监控大量度量。如上所述扩展现有的剖析电路以生成性能监控数据会导致大量的功耗和计算资源用于生成性能监控数据。第三,剖析电路被优化为间歇性地执行短时间执行、循环执行等,并且不太适合连续操作。第
四,如果剖析电路用于生成性能监控数据,则剖析电路不能并发地用于剖析正在测试的软件,这是剖析电路的主要应用。
5.如前所述,本领域需要用于在计算系统中安全地生成性能监控数据的更有效的技术。


技术实现要素:

6.本公开的各种实施例阐述了一种用于生成性能监控数据的计算机实现的方法。该方法包括接收表示第一性能度量的电子信号。该方法还包括在电子信号处于第一状态的每个时钟周期期间递增与性能度量相关联的第一计数器。该方法还包括串行化存储在第一计数器中的值以生成串行化值。该方法还包括经由一个或更多个电子信号路径传送串行化值。
7.其他实施例包括但不限于实现所公开技术的一个或更多个方面的系统,以及包括用于执行所公开技术的一个或更多个方面的指令的一个或更多个计算机可读介质,以及用于执行所公开技术的方法所公开技术的一个或更多个方面。
8.所公开的技术相对于现有技术的至少一个技术优势在于,利用所公开的技术,性能监控子系统安全地且连续地为在计算系统上执行的所有虚拟机和在那些虚拟机上执行的所有上下文生成性能监控数据。此外,性能监控子系统被构造成使用高效架构来分发性能监控数据,该架构相对于为开发、调试和优化单个软件应用程序而设计的剖析电路更省电。此外,性能监控子系统独立于剖析电路运行。因此,可以同时使用性能监控和剖析电路。这些优点代表了对现有技术方法的一项或更多项技术改进。
附图说明
9.为了更详细地理解上述各种实施例的相关特征,可以通过参考各种实施例(其中一些已在附图中说明)对上述简要概括的本发明概念进行更具体的描述。但是,需要注意的是,所附的附图只说明发明概念的典型实施例,因此并不是以任何方式限制范围,还存在其他同样有效的实施例。
10.图1是被配置成用于实施各个实施例的一个或更多个方面的计算机系统的框图;
11.图2是根据各个实施例的包括在图1的加速器处理子系统中的并行处理单元(ppu)的框图;
12.图3是根据各个实施例的包括在图2的并行处理单元(ppu)中的通用处理集群(gpc)的框图;
13.图4是根据各种实施例的包括在图2的ppu中的性能监控子系统的框图;以及
14.图5是根据各种实施例的用于为诸如图2的ppu的处理单元生成性能监控数据的方法步骤的流程图。
具体实施方式
15.在以下描述中,阐述了许多具体细节以便提供对各种实施例的更彻底的理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一个或更多个的情况下实践本发明构思。
16.系统概述
17.图1是被配置为实现各个实施例的一个或更多个方面的计算机系统100的框图。如图所示,计算机系统100包括但不限于中央处理单元(cpu)102、系统存储器104,其经由存储器桥105和通信路径113耦合至加速器处理子系统112。存储器桥105进一步地经由通信路径106耦合至i/o(输入/输出)桥107,i/o桥107又耦合至交换机116。
18.在操作中,i/o桥107被配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并经由通信路径106和存储器桥105将输入信息转发给cpu 102进行处理。在一些示例中,输入设备108用于验证一个或更多个用户的身份,以允许授权用户访问计算机系统100并且拒绝未授权用户访问计算机系统100。交换机116被配置为在i/o桥107和计算机系统100的其他组件(如网络适配器118和各种附加卡120和121)之间提供连接。在一些示例中,网络适配器118用作主要或专用输入设备以接收输入数据以通过所公开的技术进行处理。
19.还如图所示,i/o桥107耦合至系统盘114,系统盘114可以被配置为存储内容、应用程序和数据,以供cpu 102和加速器处理子系统112使用。一般来说,系统盘114为应用程序和数据提供非暂时性存储器,可包括固定的或可移除的硬盘驱动器、闪存设备和cd-rom(光盘只读存储器)、dvd-rom(数字多功能盘-rom)、蓝光、hd-dvd(高清dvd)或其他磁、光或固态存储设备。最后,虽然未明确示出,其他组件(诸如通用串行总线或其他端口连接、光盘驱动器、数字多功能盘驱动器、胶片录制设备等)也可以连接到i/o桥107。
20.在各个实施例中,存储器桥105可以是北桥芯片,i/o桥107可以是南桥芯片。此外,可以用任何技术上合适的协议(包括但不限于外围组件互连高速(pcie)、超文本传输(hypertransport)或本领域公知的任何其他总线或点对点通信协议)在计算机系统100内实现通信路径106和113以及其他通信路径。
21.在一些实施例中,加速器处理子系统112包括图形子系统,该图形子系统向显示设备110输送像素,该显示设备可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这种实施例中,加速器处理子系统112合并了针对图形和视频处理优化的电路,包括例如视频输出电路。如下图2中更详细地描述的,此类电路可以跨加速器处理子系统112中包括的一个或更多个加速器合并。加速器包括可以执行指令的任何一个或更多个处理单元,例如中央处理单元(cpu)、图2-4的并行处理单元(ppu)、图形处理单元(gpu)、智能处理单元(ipu))、神经处理单元(nau)、张量处理单元(tpu)、神经网络处理器(nnp)、数据处理单元(dpu)、视觉处理单元(vpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等。
22.在一些实施例中,加速器处理子系统112包括两个处理器,在本文中称为主处理器(通常为cpu)和辅助处理器。通常,主处理器是cpu,辅助处理器是gpu。附加地或替代地,主处理器和辅助处理器中的每一个可以是本文公开的任何一种或更多种类型的加速器,以任何技术上可行的组合。辅助处理器通过不安全的通信路径从主处理器接收安全命令。辅助处理器访问存储器和/或其他存储系统,例如系统存储器104、计算express链路(cxl)存储器扩展器、存储器管理的磁盘存储器、片上存储器等。辅助处理器通过不安全的连接访问该存储器和/或其他存储系统。主处理器和辅助处理器可以通过gpu到gpu通信通道,例如nvidia链路(nvlink)相互通信。此外,主处理器和辅助处理器可以通过网络适配器118相互通信。通常,不安全通信路径和安全通信路径之间的区别取决于应用。特定应用程序通常认为裸片或封装内的通信是安全的。通过标准通信通道(例如pcie)进行未加密数据的通信被
208以进行进一步处理。gpc 208经由交叉开关单元210与存储器接口214通信,以从各个dram 220读取或写入各个dram 220。在一个实施例中,交叉开关单元210除了经由存储器接口214连接到pp存储器204之外,还连接到i/o单元205,从而使不同gpc 208中的处理核能够与系统存储器104或非ppu 202本地的其他存储器进行通信。在图2的实施例中,交叉开关单元210与i/o单元205直接连接。在各种实施例中,交叉开关单元210可以使用虚拟通道分隔gpc 208和分区单元215之间的业务流。
35.同样,gpc 208可以被编程为执行与各种应用相关的处理任务,包括但不限于线性和非线性数据变换、视频和/或音频数据的过滤、建模操作(例如,应用物理定律以确定对象的位置、速度和其他属性)、图像渲染操作(例如,曲面细分着色程序、顶点着色程序、几何着色程序和/或像素/片段着色程序)、通用计算操作等。在操作中,ppu 202被配置为将数据从系统存储器104和/或pp存储器204传输到一个或更多个片上存储器单元,处理该数据,并将结果数据写回系统存储器104和/或pp存储器204。然后,其他系统组件(包括cpu 102、加速器处理子系统112中的另一ppu 202或计算机系统100中的另一加速器处理子系统112)可以访问该结果数据。
36.如上所述,加速器处理子系统112中可包括任意数量的ppu 202。例如,单个附加卡上可提供多个ppu 202,或者多个附加卡可以连接到通信路径113,或者一个或更多个ppu 202可以集成到桥芯片中。多ppu系统中的ppu 202可彼此相同或不同。例如,不同的ppu 202可能具有不同数量的处理核和/或不同数量的pp存储器204。在存在多个ppu 202的实现方式中,这些ppu可以并行操作,以比采用单个ppu 202所可能的吞吐量更高的吞吐量处理数据。包括一个或更多个ppu 202的系统可以以各种配置和形式因素实现,包括但不限于台式机、笔记本电脑、手持式个人计算机或其他手持设备、服务器、工作站、游戏机、嵌入式系统等。
37.ppu 202还包括性能监控子系统250。如本文所述,性能监控子系统250生成与ppu 202相关联的性能监控数据,包括每个虚拟机和在ppu 202上执行的每个上下文的性能监控数据。
38.图3是根据各个实施例的图2的并行处理单元(ppu)202中包括的通用处理集群(gpc)208的框图。在操作中,gpc 208可以被配置为并行执行大量线程以执行图形、通用处理和/或计算操作。如本文所用,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令多数据(simd)指令发出技术用于支持大量线程的并行执行,而无需提供多个独立的指令单元。在其他实施例中,单指令多线程(simt)技术用于使用被配置为向gpc 208中的一组处理引擎发出指令的通用指令单元来支持大量通常同步的线程的并行执行。与simd执行体系(其中所有处理引擎通常执行相同的指令)不同,simt执行允许不同的线程更容易通过给定程序遵循不同的执行路径。本领域普通技术人员应当认识到,simd处理体系表示simt处理体系的功能子集。
39.gpc 208的操作经由管线管理器305控制,该管线管理器将从任务/工作单元207内的工作分配单元(未示出)接收的处理任务分配到一个或更多个流式多处理器(sm)310。管线管理器305还可以配置为通过指定sm 310输出的经处理的数据的目的地来控制工作分配交叉开关330。
40.在一个实施例中,gpc 208包括一组m个sm 310,其中m≥1。此外,每个sm 310包括
一组功能执行单元(未示出),诸如执行单元和加载存储单元。特定于任何功能执行单元的处理操作都可以是管线化的,这样就使得能够在前面的指令完成执行之前发出新的指令以执行。可以提供给定sm 310中功能执行单元的任何组合。在各种实施例中,功能执行单元可被配置为支持各种不同的操作,包括整数和浮点算术(例如,加法和乘法)、比较运算、布尔运算(and、or、xor)、位移位,以及计算各种代数函数(例如,平面插值和三角函数、指数函数和对数函数等)。有利的是,相同的功能执行单元可以被配置为执行不同的操作。
41.在操作中,每个sm 310被配置为处理一个或更多个线程组。如本文所用,“线程组(thread group)”或“线程束(warp)”是指对不同的输入数据同时执行同一程序的一组线程,其中组中的一个线程被指派给sm 310中的不同执行单元。线程组可以包括比sm 310中的执行单元的数量更少的线程,在这种情况下,当正在处理该线程组时,某些执行在周期期间可处于空闲。线程组还可包括比sm 310中的执行单元的数量更多的线程,在这种情况下,处理可发生在连续的时钟周期中。由于每个sm 310可以同时支持多达g个线程组,因此,在任何给定时间都可以在gpc 208中执行多达g*m个线程组。
42.此外,多个相关线程组在sm 310中可以同时是活动的(处于不同的执行阶段)。该线程组的集合在本文中被称为“协作线程阵列”(“cta”)或“线程阵列”。特定cta的大小等于m*k,其中k是线程组中同时执行的线程的数量,这通常是sm 310中执行单元数量的整数倍,m是sm 310内同时活动的线程组的数量。在各个实施例中,以计算统一设备架构(cuda)编程语言编写的软件应用描述在gpc 208上执行的线程的行为和操作,包括任何上述行为和操作。可在cuda程序中指定给定处理任务,使得sm 310可被配置为执行和/或管理通用计算操作。
43.尽管图3未示出,但每个sm 310包括一级(l1)高速缓存,或使用sm 310外部的相应l1高速缓存中的空间来支持执行单元执行的加载和存储操作等。每个sm 310还可以访问在ppu 202中的所有gpc 208之间共享的二级(l2)高速缓存(未示出)。l2高速缓存可用于在线程之间传输数据。最后,sm 310还可以访问片外“全局”存储器,其可包括pp存储器204和/或系统存储器104。需要理解的是,ppu 202外部的任何存储器都可以用作全局存储器。此外,如图3所示,gpc 208中可包括1.5级(l1.5)高速缓存335,并且其被配置为接收和保存sm 310经由存储器接口214从存储器请求的数据。这种数据可以包括但不限于指令、统一数据和常量数据。在gpc 208内具有多个sm 310的实施例中,sm 310可以有益地共享高速缓存在l1.5高速缓存335中的公共指令和数据。
44.每个gpc 208可具有关联的存储器管理单元(mmu)320,其被配置为将虚拟地址映射到物理地址。在各个实施例中,mmu 320可以驻留在gpc 208或存储器接口214内。mmu 320包括一组页表条目(pte),用于将虚拟地址映射到图块(tile)或存储器页的物理地址,可选地映射到高速缓存行索引。mmu 320可包括地址转换后备缓冲区(tlb)或驻留在sm 310、一个或更多个l1高速缓存或gpc 208内的高速缓存。
45.在图形和计算应用程序中,可以配置gpc 208,使每个sm 310耦合到纹理单元315,以执行纹理映射操作,例如确定纹理采样位置、读取纹理数据和过滤纹理数据。
46.在操作中,每个sm 310将经处理的任务发送到工作分配交叉开关330,以便将经处理的任务提供给另一gpc 208以进行进一步处理,或将经处理的任务存储在l2高速缓存(未示出)、并行处理存储器204中或经由交叉开关单元210存储在系统存储器104中。此外,预光
栅操作(“prerop”)单元325被配置为接收来自sm 310的数据,将数据定向到分区单元215中的一个或更多个光栅操作(rop)单元,执行颜色混合的优化,组织像素颜色数据,并执行地址转换。
47.应理解,本文描述的核心架构是说明性的,并且可以进行变型和修改。除其他事项外,gpc 208中可包括任意数量的处理单元,诸如sm 310、纹理单元315或prerop单元325。此外,如上结合图2所述,ppu 202可以包括任意数量的gpc 208,这些gpc 208被配置为在功能上彼此相似,使得执行行为不依赖于哪个gpc 208接收特定的处理任务。此外,每个gpc 208独立于ppu 202中的其他gpc 208操作,以执行一个或更多个应用程序的任务。鉴于上述情况,本领域普通技术人员应理解,图1-图3中描述的架构绝不限制本公开的各个实施例的范围。
48.请注意,如在此使用的,对共享存储器的引用可以包括任何一个或更多个技术上可行的存储器,包括但不限于由一个或更多个sm 310共享的本地存储器或经由存储器接口214可访问的存储器,如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的引用可以包括任何一个或更多个技术上可行的存储器,包括但不限于l1高速缓存、l1.5高速缓存和l2高速缓存。
49.生成功率高效的安全多客户端性能监控数据
50.各种实施例包括用于生成计算系统中的处理单元的功率高效的安全多客户端性能监控数据的技术。该计算系统包括性能监控子系统,该性能监控子系统包括具有一组计数器的单元级计数器,其中每个计数器在对应的电子信号处于诸如高或低逻辑电平状态的第一状态的每个时钟周期期间递增。周期性地,单元级计数器将计数器值传送到对应的计数器收集单元。计数器收集单元包括一组计数器,其聚合多个单元级计数器中的计数器的值。基于某些触发条件,计数器收集单元将记录传送到归约通道。归约通道包括一组计数器,这些计数器在多个计数器收集单元中聚合计数器的值。在系统上执行的每个虚拟机都可以访问不同的对应归约通道,从而为每个虚拟机提供安全的性能度量数据。
51.所公开的技术执行带内监控和带外监控。通过与ppu 202主动通信以生成性能监控数据的操作系统,经由主动与ppu 202通信的操作系统通过在cpu 102上执行客户端软件应用来执行带内监控,以生成性能监控数据。该客户端软件应用程序可以通过在ppu 202上执行的另一软件应用程序访问性能监控数据。这种带内监控可以减少可用于管理程序和/或在计算机系统100上执行的一个或更多个虚拟机的计算资源。计算带内监控所消耗的资源表示不能用于其他目的的计算资源,例如执行客户端软件应用程序。由于数据中心、云服务提供商和其他大型部署将计算资源租给各种访客用户,因此带外监控通常比带内监控更受欢迎。
52.带外监控在cpu 102的正常操作之外执行,包括在cpu 102上执行的操作系统和/或管理程序。带外监控避免使用租借给访客用户的任何资源。计算机系统100中的单独的安全微控制器配置包括在性能监控子系统250中的组件,而不消耗来自用于执行客户软件应用程序的组件的资源。通过这种微控制器生成性能监控数据不会对在cpu 102和/或ppu 202上执行的客户应用程序的性能产生负面影响。微控制器以高特权级别执行,从而对所生成的性能监控数据提供高级别的可见性和可访问性。微控制器在安全环境中运行并验证来自管理程序和通过管理程序执行的虚拟机的请求。结果,管理程序和虚拟机都不能对性能
监控子系统250执行的带外监控产生负面影响。
53.所公开的技术可以为带外监控客户端和带内监控客户端生成安全性能监控数据。例如,所公开的技术可以为共享同一计算机系统100的多个虚拟机生成安全性能监控数据。附加地或可替代地,所公开的技术可以为多个虚拟机生成安全性能监控数据并且并发地为在这些虚拟机上执行的各个上下文生成安全性能监控数据。性能监控数据是安全的,因为一个虚拟机不能访问另一个虚拟机的性能监控数据,一个上下文不能访问另一个上下文的性能监控数据等。
54.图4是根据各种实施例的包括在图2的ppu中的性能监控子系统250的框图。如图所示,性能监控子系统250包括但不限于单元级计数器(ulc)410、计数器收集单元(ccu)412、归约通道缓冲区414、归约通道416(0)-416(n)和归约通道信道仲裁器418。
55.每个单元级计数器410收集与单元级计数器410附近的gpc 208的组件生成的诸如电子信号等基本性能事件相关联的计数值。附加地或可替代地,单元级计数器410可以收集与由gpc 208外部的组件生成的性能事件相关联的计数值,其包括l2高速缓存存储器、存储器控制器、诸如nvlink和/或pcie之类的通信通道和/或类似物。在一些示例中,单元级计数器410对单个位(bit)事件的发生进行计数。一个这样的事件是处于特定状态的电子信号,例如高逻辑电平状态或低逻辑电平状态。单元级计数器410可以在电子信号处于特定状态的每个时钟周期期间递增计数器。电子信号可以表示任何技术上可行的性能度量,例如gpc 208对指令的执行、gpc 208中包含的指定组件的使用、高速缓存存储器中高速缓存未命中的发生、高速缓存命中的发生和/或类似物。附加地或可替代地,单元级计数器410对多位事件的发生进行计数。
56.附加地或可替代地,单元级计数器410将多个位事件编码为表示事件的单个位。例如,多位事件可以是线程束中在给定时钟周期内执行指令的线程数。单元级计数器410可以包括六位计数器,其将线程束中在当前时钟周期中执行指令的线程的数量与当前存储在计数器中的值相加。单元级计数器410可以针对每个时钟周期递增单个位计数器,其中六位计数器的最高有效位具有值1。以这种方式,单个位计数器表示执行模数为32的指令的线程束中的线程的数量。
57.单元级计数器410周期性地对各种计数器中的当前值进行采样或快照,并将这些值传送到共享串行器。串行器继而通过串行接口总线将值传送到对应的计数器收集单元412。串行接口总线可以具有用于传送值的单个信号路径或者可以具有多个信号路径。在每个快照之后,单元级计数器将计数值清除410初始值的计数值并开始对下一个周期的事件进行计数。单元级计数器410可以包括任何技术上可行数量的任何位宽的计数器。一般而言,单位级计数器410的位宽指示各种计数器中当前值的样本或快照之间的最大周期。在一些示例中,单元级计数器可以包括多达45个计数器,其中每个计数器多达9位。在此类示例中,单元级计数器可以在29–
1或511个时钟周期的持续时间后周期性地传输值。
58.除了将值传送到计数器收集单元412的串行接口总线之外,单元级计数器410从计数器收集单元412接收启用信号。虽然每个单元级计数器410通过点对点传送计数器值点串行接口总线,计数器收集单元412将启用信号传送到多个单元级计数器410,例如计数器收集单元412支持的所有单元级计数器410。在一些示例中,每个计数器收集单元412可以支持最多48个单元级计数器410。通常,计数器收集单元412相对于由计数器收集单元412支持的
单元级计数器410位于中心。当单元级计数器410接收到来自计数器收集单元的启用信号时412,单元级计数器410开始连续计数事件并周期性地将计数器值传送到计数器收集单元412,同时发送开始和/或结束信号,其分别指示一组计数器值的开始或结束。
59.每个计数器收集单元412从多个单元级计数器410接收计数器值。当计数器收集单元412接收一组计数器值时,计数器收集单元412反串行化该组计数器值并将计数器值添加到计数器收集单元412的内部的计数器。更具体地,计数器收集单元412收集该单元级计数器410的值并将其存储在一组计数器中,该一组计数器中存储在计数器收集单元412的存储器内。更具体地,计数器收集单元412将从单元级计数器410接收的值添加到计数器收集单元412内的对应计数器中的值。通常,计数器收集单元412内的计数器比单元级计数器410内的计数器宽。在一些示例中,计数器收集单元412内的计数器的宽度为28位。结果,计数器收集单元412可以在比单元级计数器410在更长的时间段内累积和聚合事件计数。因此,计数器收集单元412消耗更少的寄存器来存储反串行化的计数器值。因此,在一些示例中,计数器收集单元412可以采用仅允许在任何给定时间写入计数器子集的存储器设备。
60.在一些示例中,计数器收集单元412可以屏蔽(mask)从单元级计数器410接收的某些计数器值,例如当性能监控操作对来自单元级计数器410的可用事件数据的子集进行采样时。来自被屏蔽的单元级计数器410的计数器值不被添加到计数器收集单元412内的对应计数器中而不溢出。
61.在接收到触发信号时,计数器收集单元412对各种计数器中的当前值进行采样或快照,并生成包括计数器值的一组记录。在一些示例中,每个记录包括计数器收集单元412中的八个计数器的值。计数器收集单元412通过归约通道缓冲区414将记录传送到相应的归约通道416,该归约通道416聚合多个计数器收集单元412的计数器值。每个快照之后,计数器收集单元412将计数值清零为初始值并开始对事件进行计数,直到接收到下一个触发条件。触发条件可以是针对计数器收集单元412中的特定寄存器的写操作、发送到计数器收集单元412的外部触发信号、计数器收集单元412中的计数器达到阈值等。在此称为触发块的硬件模块(图4中未示出)以可编程周期的规则间隔将触发信号发送到计数器收集单元412。触发块指示计数器收集单元412传送计数器收集单元412中所有计数器的记录,清除计数器,并切换到计数器收集单元412中当前空闲的存储器组(bank)以进一步累积计数值。
62.计数器收集单元412存储两组计数器值,其中每组计数器值存储在不同的存储器组中。在任何时间点,计数器收集单元412在一个存储器组(称为活动存储器组)中聚合计数器值,而另一个存储器组是空闲的。在检测到触发条件时,计数器收集单元412切换存储器组,使得活动存储器组现在是空闲的并且空闲存储器组现在是活动的。计数器收集单元412基于存储在现在空闲的存储器组中的计数器值生成记录,并通过片上网络经由归约通道缓冲区414将记录传输到归约通道416。在从空闲存储器组生成记录之后,计数器收集单元412清空空闲存储器中的计数器,为后续触发条件后的空闲存储器聚合计数器值做准备。同时,计数器收集单元412将从单元级计数器410接收的计数器值聚合到现在活动的存储器组中的计数器。
63.归约(reduction)通道416(0)-416(n)从计数器收集单元412接收记录,并将记录中包括的计数器值聚合到相应归约通道416内的一组计数器中。在一些示例中,计数器在归约通道416内是64位宽。结果,归约通道416可以在比计数器收集单元412在更长的时间段内
累积和聚合事件计数。从计数器收集单元412接收的记录被在归约通道缓冲区414中缓冲。归约通道缓冲区414将每个记录路由到适当的归约通道416。
64.归约通道416(0)被分配给管理程序。ppu 202可以将执行单元和其他资源划分为多个分区,这些分区可以单独用作独立的部分gpu(称为gpu切片)。因此,除了用于系统范围监控的归约通道416(0)之外,每个gpu切片对应于n个归约通道416(1)

416(n)之一。归约通道416(0)监控由归约通道缓冲区414路由到其他归约通道416(1)-416(n)的所有记录。因为管理程序分析系统范围内的性能监控数据,归约通道416(0)接收并聚合归约通道416(1)-416(n)接收的性能监控数据。归约通道416(0)将计数器值和相关的性能监控数据存储在存储器块vm0 420(0)中。
65.归约通道416(1)-416(n)中的每一个接收对应于分配给相应gpu切片的资源的记录。这些归约通道416(1)

416(n)不接收与分配给其他gpu切片的资源相对应的记录。因此,归约通道416(1)

416(n)接收的性能监控数据是安全的,并且只能由分配给相应gpu片的客户端访问。
66.归约通道416(0)-416(n)从多个计数器收集单元412接收数据,其中多个计数器收集单元412可以监控相同类型的不同实例。例如,分配给归约通道416(1)的第一计数器收集单元412可以监控第一组sm 310、第一l2高速缓存存储器等。分配给同一归约通道416(1)的第二计数器收集单元412可以监控第二组sm 310、第二l2高速缓存存储器等。归约通道416(1)可以跨第一计数器收集单元412、第二计数器收集单元412和/或额外的计数器收集单元412聚合计数器值。因此,归约通道416(1)可以维持计数器值的单个集合,其聚合分配给相应gpu片的所有sm的性能监控数据。类似地,归约通道416(1)可以维护计数器值的单个集合,这些计数器值汇总了分配给相应gpu片的所有l2高速缓存存储器的性能监控数据,依此类推。
67.归约通道416(1)-416(n)执行一个或更多个原子加法操作,以基于在相应gpu片上执行的虚拟机和上下文将计数器值和相关性能监控数据添加到存储器中存储的当前值。归约通道仲裁器418将计数器值和相关性能监控数据从归约通道416(1)-416(n)路由到对应虚拟机和上下文的存储器存储。在执行原子加法操作之后,归约通道416(1)-416(n)可以重置归约通道416(1)-416(n)内的相应计数器。以这种方式,归约通道416(1)-416(n)不需要在归约通道416(1)-416(n)存储器储计数器的虚拟机级别副本和上下文级别副本。此外,当发生上下文切换时,归约通道416(1)-416(n)不需要将归约通道416(1)-416(n)内的计数器值恢复为传入上下文的值。相反,在上下文切换期间,归约通道416(1)-416(n)可以简单地向存储器中的适当计数器值发出原子加法并重置归约通道416(1)-416(n)内的计数器。
68.例如,归约通道416(1)可以为虚拟机vm2生成性能监控数据,归约通道416(2)可以为虚拟机vmn生成性能监控数据,并且归约通道416(3)可以生成虚拟机vm1的性能监控数据。在该示例中,当归约通道416(1)生成vm2的性能监控数据时,归约通道416(1)将性能监控数据存储在存储器块vm2 420(2)中。类似地,当归约通道416(2)生成vmn的性能监控数据时,归约通道416(2)将性能监控数据存储在存储器块vmn 420(n)中。同样,当归约通道416(3)为vm1生成性能监控数据时,归约通道416(3)将性能监控数据存储在存储器块vm1 420(1)中。
69.此外,归约通道416(1)-416(n)可以执行上下文级性能监控。上下文切换允许多个
应用程序串行执行并随着时间的推移共享相同的物理硬件资源。在与特定gpu切片相关联的虚拟机中,上下文能够对虚拟机的资源进行时间切片。归约通道416(1)-416(n)通过将数据存储在适当的虚拟机存储器块420(1)-420(n)中来执行虚拟机级监控。类似地,归约通道416(1)-416(n)通过将数据存储在适当的上下文存储器块422(0)-422(r)、424(0)-424(s)和426(0)

426(t)中来执行上下文级监控。当为给定虚拟机切换新上下文时,对应的归约通道416继续将性能监控数据存储在同一虚拟机存储器块中。然而,对应的归约通道416停止将性能监控数据存储在上下文存储器块中以用于被切换出的上下文。相反,对应的归约通道416开始将性能监控数据存储在上下文存储器块中以用于被切换进入的上下文。
70.在上述示例中,当归约通道416(1)生成vm2的性能监控数据时,归约通道416(1)将性能监控数据存储在存储器块vm2 420(2)中。此外,归约通道416(1)根据当前在vm2上执行的上下文在存储块ctx0 424(0)

ctxs 424(s)中存储性能监控数据之间循环。类似地,当归约通道416(2)生成vmn的性能监控数据时,归约通道416(2)将性能监控数据存储在存储器块vmn 420(n)中。此外,归约通道416(2)根据当前在vmn上执行的上下文在存储块ctx0 426(0)

ctxt 426(t)中存储性能监控数据之间循环。同样,当归约通道416(3)为vm1生成性能监控数据时,归约通道416(3)将性能监控数据存储在存储器块vm1 420(1)中。此外,归约通道416(3)根据当前在vm1上执行的上下文在存储块ctx0 422(0)

ctxr 422(r)中存储性能监控数据之间循环。
71.在一些示例中,ppu 202在上下文切换期间执行附加步骤以确保性能监控数据的数据完整性和安全性。在上下文切换期间,ppu 202暂停当前执行的上下文。ppu 202暂停由计数器收集单元412和单元级计数器410发送触发器。ppu 202暂停触发器由触发器块发送到计数器收集单元。ppu 202对触发块寄存器执行写操作以使触发块向计数器收集单元412发出触发条件。触发块指示计数器收集单元412传送计数器收集单元412中的所有计数器的记录,清除计数器,并切换到计数器收集单元412中当前空闲的存储器组以进一步累积计数值。计数器收集单元412禁止单元级计数器410周期性地将计数器值传送到计数器收集单元412,从而防止在上下文切换期间的周期性传送。结果,单元级计数器410仅生成与触发块相关联的计数器值,该触发块与上下文切换相关联。
72.ppu 202对触发块寄存器执行写操作以使触发块发送刷新请求。刷新请求通过性能监控子系统250传播以确保所有计数器收集单元412已经处理了触发块并且已经通过发出相关记录来做出响应。在没有这样的刷新请求的情况下,性能监控子系统250可能无法确保在刷新已经到达归约通道416之前生成的所有记录,如上下文切换之前所要求的那样。
73.在接收到刷新请求之后,每个计数器收集单元412传输与刷新请求相关联的记录,然后传输没有有效数据的记录,触发块将其解释为刷新确认。该刷新确认指示来自该计数器收集单元412的所有先前触发器的所有数据已经被发送。因此,触发块可以更新其状态以指示被切换出的上下文的所有计数器数据都已到达适当的归约通道。该归约通道416随后发出原子添加以将其当前计数器值提交到存储器。归约通道416被更新以指向用于切换的上下文的上下文存储器块。mmu 320重新绑定到已切换上下文的地址空间,以便mmu 320正确地转换新上下文的虚拟地址。
74.ppu 202轮询触发块寄存器以确定何时已经从分配给该触发块的所有计数器收集单元412接收到所有刷新确认。ppu 202加载新的传入上下文。ppu 202为新上下文更新归约
通道416的状态。ppu 202将触发块的周期性触发解除暂停到计数器收集单元412。ppu 202解除暂停计数器收集单元412到单元级计数器410的周期性触发。ppu 202解除暂停新加载的上下文,并且新加载的上下文开始执行。
75.在上下文切换期间,ppu 202工作停止,并且与上下文切换相关联的ppu 202的状态被保存到存储器。从存储器恢复与上下文切换相关联的ppu 202的状态。通常,不需要这些上下文切换活动的性能监控数据。因此,在ppu 202停止之后,性能监控子系统250将性能监控数据刷新并保存到存储器中以用于上下文切换。
76.ppu 202的上下文存储和恢复继续进行而不生成性能监控数据。性能监控子系统250清除单元级计数器410和计数器收集单元412中的计数器。上下文切换恢复执行,性能监控子系统250准备好为新上下文生成性能监控数据。上下文切换完成,并且性能监控子系统250启用周期性传输,使得新的性能监控数据用于新的上下文。可以读取用于切换出的上下文的计数器存储器块,但这些存储器块不会被写入,直到切换出的上下文稍后被切换回。
77.在一些示例中,多个组件可以访问存储在虚拟机存储器块和上下文存储器块中的性能监控数据。例如,性能监控子系统250中的微控制器、归约通道416(0)-416(n)以及可能的其他组件可以访问虚拟机存储器块和上下文存储器块。
78.在一些示例中,一个或更多个gpu切片可以在多个虚拟机之间进行时间切片。在这样的示例中,对应的归约通道416(1)-416(n)通过以类似于上下文级机器监控的方式将数据存储在适当的虚拟机存储器块中来执行时间切片的虚拟机级监控。当新的虚拟机切换进来时,对应的归约通道416停止在虚拟机存储器块中为被切换出去的虚拟机生成和存储性能监控数据。相反,对应的归约通道416开始在虚拟机存储器块中生成和存储性能监控数据,以供被接入的虚拟机使用。
79.在一些示例中,性能监控子系统250与机密计算环境兼容,其中cpu 102可访问的数据被加密。虽然性能监控数据存储在ppu 202中,例如性能监控子系统250的各种组件中,但数据可以是未加密的。当性能监控子系统250向cpu 102发送性能监控数据时,性能监控数据被加密。如本文所述,执行监控数据是计数器收集单元412和归约通道416的计数器值的形式。这些计数器值存储在存储器中。为了加密这些计数器值,包括在ppu 202中的复制引擎,也称为直接存储器访问控制器,执行复制操作。在复制操作期间,复制引擎从存储器中检索计数器收集单元412和/或归约通道416的计数器值。复制引擎加密计数器值并将加密的计数器值存储到cpu 102可访问的存储器中。
80.结果,性能监控数据可以作为加密数据记录暴露给受信执行环境。因此,每个上下文和/或每个虚拟机性能监控数据对于管理程序或不在受信任执行环境内的虚拟机将不可见。只有受信执行环境中的虚拟机才能解密性能监控数据。因此,将性能监控数据存储在存储器中的优点是机密计算基础设施可以保护存储器的各个部分。因此,存储器中的性能监控数据在机密计算环境中自然是安全的。
81.在一些示例中,可以从一个计数器收集单元412更新多个归约通道416。在一个特定示例中,计数器收集单元412可以更新虚拟机级别归约通道416以及设备级别归约通道416。诸如在安全环境中操作的微控制器之类的安全处理器可以读取与设备级别降低通道416或带外归约通道416相关联的虚拟机存储器块420和/或上下文存储器块422。安全处理器可以通过诸如smbus邮箱接口(smbpbi)之类的适当互连来读取虚拟机存储器块420和/或
上下文存储器块422,而无需分配任何存储器。该技术可用于带外存储器客户端,以便确定ppu 202空闲和不执行工作负载的频率、何时卸载驱动程序等。
82.在一些示例中,每个单元级计数器410被指定为在多个处理引擎之间共享或者被划分到特定处理引擎。ppu 202中的一些单元被多个处理引擎使用,例如pcie通信通道。这样的单元与设计有每个上下文过滤的多个单元级计数器410相关联。附加地或替代地,这些单元与报告设备级的性能监控数据的设备级单元级计数器410相关联。
83.图5是根据各种实施例的用于为诸如图2的ppu 202的处理单元生成性能监控数据的方法步骤的流程图。附加地或可替代地,方法步骤可以由一个或更多个替代加速器执行,包括但不限于cpu、gpu、ipu、npu、tpu、nnp、dpu、vpu、asic、fpga和/或类似物,以任何组合。尽管结合图1-4的系统描述了方法步骤,但是本领域普通技术人员将理解被配置为以任何顺序执行方法步骤的任何系统都在本公开的范围内。
84.如图所示,方法500开始于步骤502,其中单元级计数器410收集与单元级计数器410附近的gpc 208的组件生成的诸如电子信号等基本性能事件相关联的计数值。在一些示例中,单元级计数器410对单个位事件的发生进行计数。一个这样的事件是处于特定状态的电子信号,例如高逻辑电平状态或低逻辑电平状态。单元级计数器410可以在电子信号处于特定状态的每个时钟周期期间递增计数器。电子信号可以表示任何技术上可行的性能度量,例如gpc 208对指令的执行、gpc 208中包含的指定组件的使用、高速缓存存储器中高速缓存未命中的发生、高速缓存存储器中高速缓存命中的发生和/或类似物。附加地或替代地,计数多个位事件的发生、将多个位事件转换为单个位等。
85.在步骤504,单元级计数器410传送与基本性能事件相关联的计数值。周期性地,单元级计数器410对各个计数器中的当前值进行采样或快照,并将这些值传输到共享串行器。串行器继而通过串行接口总线将值传输到对应的计数器收集单元412。串行接口总线可以具有用于传输值的单个信号路径或者可以具有多个信号路径。在每个快照之后,单元级计数器将计数值清除410为初始值并开始对下一个周期的事件进行计数。单元级计数器可以包括任何技术上可行数量的任何位宽的计数器。在一些示例中,单元级计数器可以包括多达45个计数器,其中每个计数器多达9位。在此类示例中,单元级计数器可以在29–
1或511个时钟周期的持续时间后周期性地传输值。
86.在步骤506,计数器收集单元412处理接收到的计数值。计数器收集单元412从多个单元级计数器410接收计数器值。当计数器收集单元412接收到一组计数器值,然后接收到指示一组计数器值结束的信号时,计数器收集单元412反串行化该组计数器值。计数器收集单元412收集该单元级计数器410的值并将其存储在一组计数器中,该一组计数器存储在计数器收集单元412的存储器内。更具体地,计数器收集单元412将从单元级计数器410接收的值相加与计数器收集单元412内的对应计数器中的值相比较。通常,计数器收集单元412内的计数器比单元级计数器410内的计数器宽。在一些示例中,计数器收集单元412内的计数器为28位宽的。结果,计数器收集单元412可以在比单元级计数器410更长的时间段内累积和聚合事件计数。
87.在步骤508,计数器收集单元412传送包括累积计数值的记录。在接收到触发条件时,计数器收集单元412对各个计数器中的当前值进行采样或快照,并生成包括计数器值的一组记录。在一些示例中,每个记录包括计数器收集单元412中的八个计数器的值。计数器
收集单元412通过归约通道缓冲区414将记录传送到相应的归约通道416,该归约通道416聚合多个计数器收集单元412的计数器值。每个快照之后,计数器收集单元412将计数值清零为初始值并开始对事件进行计数,直到接收到下一个触发条件。触发条件可以是针对计数器收集单元412中的特定寄存器的写操作、发送到计数器收集单元412的外部触发信号、计数器收集单元412中的计数器达到阈值等。
88.计数器收集单元412存储两组计数器值,其中每组计数器值存储在不同的存储器组中。在任何时间点,计数器收集单元412在一个存储器组(称为活动存储器组)上聚合计数器值,而另一存储器组是空闲的。在检测到触发条件时,计数器收集单元412切换存储器组,使得活动存储器组现在是空闲的并且空闲存储器组现在是活动的。计数器收集单元412基于存储在空闲存储器组中的计数器值生成记录,并通过归约通道缓冲区414通过片上网络将记录传输到归约通道416。在从空闲存储器组生成记录之后,计数器收集单元412清除空闲存储器组中的计数器,以使空闲存储器组准备好在后续触发条件之后聚合计数器值。并发地,计数器收集单元412将从单元级计数器410接收的计数器值聚合到活动存储器组中的计数器。
89.在步骤510,归约通道416处理接收到的记录。归约通道416从计数器收集单元412接收记录并将记录中的计数器值聚合到与归约通道416相关联的一组计数器中。在一些示例中,归约通道416内的计数器为64位宽。结果,归约通道416可以在比计数器收集单元412在更长的时间段内累积和聚合事件计数。
90.在步骤512,归约通道416将性能监控数据存储在存储器中。归约通道416基于在相应gpu片上执行的虚拟机和上下文将计数器值和相关性能监控数据存储在存储器中。例如,归约通道416(1)可以为虚拟机vm2生成性能监控数据,归约通道416(2)可以为虚拟机vmn生成性能监控数据,并且归约通道416(3)可以为虚拟机vm1生成性能监控数据。在该示例中,当归约通道416(1)生成vm2的性能监控数据时,归约通道416(1)将性能监控数据存储在存储器块vm2 420(2)中。此外,归约通道416(1)根据当前在vm2上执行的上下文在存储块ctx0 424(0)

ctxs 424(s)中存储性能监控数据之间循环。类似地,当归约通道416(2)生成vmn的性能监控数据时,归约通道416(2)将性能监控数据存储在存储器块vmn 420(n)中。此外,归约通道416(2)根据当前在vmn上执行的上下文在存储块ctx0 426(0)

ctxt 426(t)中存储性能监控数据之间循环。同样,当归约通道416(3)为vm1生成性能监控数据时,归约通道416(3)将性能监控数据存储在存储器块vm1 420(1)中。此外,归约通道416(3)根据当前在vm1上执行的上下文在存储块ctx0 422(0)

ctxr 422(r)中存储性能监控数据之间循环。
91.然后方法500终止。或者,方法500进行到步骤502以生成额外的性能监控数据。
92.总之,各种实施例包括用于生成计算系统中的处理单元的性能监控数据的技术。该计算系统包括性能监控子系统,该性能监控子系统包括具有一组计数器的单元级计数器,其中每个计数器在对应的电子信号处于诸如高或低逻辑电平状态的第一状态的每个时钟周期期间递增。周期性地,单元级计数器将计数器值传输到相应的计数器收集单元。计数器收集单元包括一组计数器,其聚合多个单元级计数器中的计数器的值。基于某些触发条件,计数器收集单元将记录传输到归约通道。归约通道包括一组计数器,这些计数器在多个计数器收集单元中聚合计数器的值。在系统上执行的每个虚拟机都可以访问不同的相应归约通道,从而为每个虚拟机提供安全的性能度量数据。
93.所公开的技术相对于现有技术的至少一个技术优势在于,利用所公开的技术,性能监控子系统为在计算系统上执行的所有虚拟机和在虚拟机上执行的所有上下文安全且连续地生成性能监控数据。此外,性能监控子系统被构造成使用高效架构来分发性能监控数据,该架构相对于为开发、调试和优化单个软件应用程序而设计的剖析电路更省电。此外,性能监控子系统独立于剖析电路运行。因此,可以同时使用性能监控和剖析电路。
94.此外,某些现有方法涉及在cpu上执行的软件应用程序,该软件应用程序从寄存器、cpu可访问存储器中的环形缓冲区等读取计数器,并在软件中聚合性能监控数据值。软件应用程序通过轮询或中断处理技术读取计数器。这种现有方法通常限于为单个客户端聚合性能监控数据。相比之下,所公开的技术采用硬件组件来通过分层聚合系统收集和聚合性能监控数据。在分层聚合系统的较高级别,计数器的位宽增加。结果,较小的计数器用于较低级别,而较大的计数器用于分层聚合系统的较高级别,从而有效地使用裸片面积。分层聚合系统通过触发流和聚合硬件组件收集、聚合和累积性能监控数据,从而减少cpu开销和cpu存储器访问。此外,与现有方法相比,所公开的分层聚合系统为多个客户端聚合性能监控数据。这些优点代表了对现有技术方法的一项或多项技术改进。
95.以任何方式记载在任何权利要求中的任何权利要求元素和/或本技术中描述的任何元素的任何和所有组合均落入本公开和保护的范围内。
96.出于说明目的已经呈现了各个实施例的描述,但并不意图穷尽为或限制为所公开的实施例。在不偏离所述实施例的范围和精神的情况下,对于本领技术人员来讲,许多修改和变化将是显而易见的。
97.本实施例的方面可体现为系统、方法或计算机程序产品。因此,本公开的方面可采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件和硬件方面的实施例的形式,本文中全部统称为“模块”或“系统”。此外,本公开的方面可采用一种或更多种计算机可读介质中体现的计算机程序产品的形式,该计算机可读介质上包含计算机可读程序代码。
98.可以使用一种或更多种计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质包括但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或上述任何适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)可包括:具有一根或更多根电线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备或上述任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包括或存储程序,以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用。
99.本公开的方面参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图进行了描述。应理解,流程图和/或框图中的每个框,以及流程图和/或框图中的框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令使得能够实现流程图和/或框图的一个或更多个框中指定的功能/动作。此类处理器可以是但不限于通用处理器、专用处理器、特定于应用程序的处理器或现场可编程门阵列。
100.图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块、段或部分,代码包括用于实现一个或更多个指定逻辑功能的一个或更多个可执行指令。还应指出,在一些替代实施例中,框中指出的功能可不按图中指出的顺序发生。例如,连续显示的两个框实际上可以大致同时执行,或者这些框有时可以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图中的每个框,以及框图和/或流程图中框的组合,可以由基于专用硬件的系统实现,该基于专用硬件的系统执行指定功能或动作或专用硬件和计算机指令的组合。
101.虽然前述内容是针对本公开的实施例,本公开的其他和进一步实施例可以在不偏离其基本范围的情况下设计,其范围由所附权利要求确定。

技术特征:
1.一种用于生成性能监控数据的计算机实现的方法,所述方法包括:接收表示性能度量的电子信号;在所述电子信号处于第一状态的每个时钟周期期间递增与所述性能度量相关联的第一计数器;串行化存储在所述第一计数器中的值以生成串行化值;以及经由一个或更多个电子信号路径传送所述串行化值。2.如权利要求1所述的计算机实现的方法,还包括:接收所述串行化值;将所述串行化值反串行化以生成反串行化值;以及将所述反串行化值添加到与所述性能度量相关联的第二计数器。3.如权利要求2所述的计算机实现的方法,其中所述第二计数器包括28位。4.如权利要求2所述的计算机实现的方法,还包括:接收触发器;生成包括存储在所述第二计数器中的值的记录;传送所述记录;以及将所述第一计数器重置为初始值。5.如权利要求4所述的计算机实现的方法,其中所述第二计数器包括28位。6.如权利要求4所述的计算机实现的方法,还包括:接收所述记录;从所述记录中提取存储在所述第二计数器中的值;以及将存储在所述第二计数器中的值添加到与所述性能度量相关联的第三计数器。7.如权利要求6所述的计算机实现的方法,其中所述第三计数器包括64位。8.如权利要求6所述的计算机实现的方法,其中所述第三计数器被包括在与虚拟机级别相关联的一组计数器中,并且还包括将存储在所述第二计数器中的值添加到与设备相关联的第四计数器。9.如权利要求8所述的计算机实现的方法,其中所述第四计数器可通过安全处理器访问。10.如权利要求6所述的计算机实现的方法,还包括将存储在所述第三计数器中的值存储在存储器中,所述存储器存储与所述性能度量相关联的管理程序的性能度量。11.如权利要求6所述的计算机实现的方法,还包括将存储在所述第三计数器中的值存储在存储器中,所述存储器存储与所述性能度量相关联的虚拟机的性能度量。12.如权利要求6所述的计算机实现的方法,还包括将存储在所述第三计数器中的值存储在存储器中,所述存储器存储与所述性能度量相关联的上下文的性能度量。13.如权利要求6所述的计算机实现的方法,还包括:对存储在所述第三计数器中的值进行加密以生成加密值;以及将所述加密值存储在可由与所述性能度量相关联的中央处理单元访问的存储器中。14.如权利要求1所述的计算机实现的方法,其中所述电子信号指示以下至少一项:由处理器执行指令,使用所述处理器中包括的指定组件,
在高速缓存存储器中发生高速缓存未命中,或在所述高速缓存存储器中发生高速缓存命中。15.如权利要求1所述的计算机实现的方法,其中所述电子信号指示第二计数器的最高有效位的状态。16.如权利要求1所述的计算机实现的方法,其中响应于确定持续时间已经过期而执行串行化存储在所述第一计数器中的值和传送所述串行化值。17.如权利要求16所述的计算机实现的方法,其中所述第一计数器包括9位并且所述持续时间表示511个时钟周期。18.如权利要求16所述的计算机实现的方法,还包括:响应于确定所述持续时间已经过期,将所述第一计数器重置为初始值。19.一种系统,包括:第一组计数器;以及第二组计数器,其耦合到所述第一组计数器并被配置为:接收表示性能度量的电子信号;在所述电子信号处于第一状态的每个时钟周期期间递增包括在所述第二组计数器中并且与所述性能度量相关联的第一计数器;串行化存储在所述第一计数器中的值以生成串行化值;以及经由一个或更多个电子信号路径将所述串行化值传送到包括在所述第一组计数器中的第二计数器。20.如权利要求19所述的系统,其中所述第一组计数器被配置为:接收所述串行化值;将所述串行化值反串行化,以生成反串行化值;以及将所述反串行化值添加到与所述性能度量相关联的第二计数器。

技术总结
本公开涉及生成功率高效的安全多客户端性能监控数据。各种实施例包括一种用于在计算系统中生成性能监控数据的系统。该系统包括具有一组计数器的单元级计数器,其中每个计数器在对应的电子信号处于第一状态(例如高或低逻辑电平状态)的每个时钟周期期间递增。周期性地,单元级计数器将计数器值传送到对应的计数器收集单元。计数器收集单元包括一组计数器,其聚合多个单元级计数器中的计数器的值。基于某些触发条件,计数器收集单元将记录传输到归约通道。归约通道包括一组计数器,这些计数器在多个计数器收集单元中聚合计数器的值。在系统上执行的每个虚拟机都可以访问不同的对应归约通道,从而为每个虚拟机提供安全的性能度量数据。量数据。量数据。


技术研发人员:P
受保护的技术使用者:辉达公司
技术研发日:2022.10.28
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐