CN110032489A - 通过基于命令集的重演收集性能信息的处理器设备 - Google Patents

通过基于命令集的重演收集性能信息的处理器设备 Download PDF

Info

Publication number
CN110032489A
CN110032489A CN201811524354.0A CN201811524354A CN110032489A CN 110032489 A CN110032489 A CN 110032489A CN 201811524354 A CN201811524354 A CN 201811524354A CN 110032489 A CN110032489 A CN 110032489A
Authority
CN
China
Prior art keywords
command set
events
interest
count
processor device
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
Application number
CN201811524354.0A
Other languages
English (en)
Inventor
辛容三
刘东勋
许荣焕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN110032489A publication Critical patent/CN110032489A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Image Generation (AREA)

Abstract

处理器设备包括调度器和性能计数器。调度器调度关于处理器电路的第一命令集的命令和第二命令集的命令。当处理器电路处理由第一命令集引导的第一操作和由第二命令集引导的第二操作时,性能计数器计数分别发生感兴趣事件的次数。重复调度第一命令集的命令,使得针对第一操作计数所有感兴趣事件的次数。在针对第一操作计数所有感兴趣事件的次数之后,调度第二命令集的命令。

Description

通过基于命令集的重演收集性能信息的处理器设备
相关申请的交叉引用
本专利申请要求2018年1月9日在韩国知识产权局提交的No.10-2018-0002881的专利申请的优先权,其全部内容通过引用整体并入本文。
技术领域
本公开涉及一种电子设备,更具体地,涉及被配置为处理各种操作的处理器设备的操作和配置。
背景技术
近年来,正在使用各种类型的电子设备。电子设备根据电子设备中包括的电子电路和设备的操作来执行其自己的功能。例如,电子设备可以包括处理器设备,并且可以根据处理器设备的操作提供各种功能。
处理器设备执行逻辑操作和/或算术运算以处理请求(例如,来自用户或来自电子设备内的其他组件)。这样,处理器设备输出与请求相对应的操作结果。操作结果用于操作电子设备。
例如,处理器设备可以分为通用处理器设备和专用(或专用)处理器设备。通用处理器设备可以支持各种一般操作,并且可以干预电子设备的整体操作。另一方面,专用处理器设备可以被配置为支持特定类型的操作。图形处理器设备是专用处理器设备的示例。例如,图形处理器设备可以通过使用并行处理器快速处理大量图形数据来执行专用于图形处理的操作。
虽然操作由处理器设备处理,但是可能发生各种事件。例如,所需数据可以存在于或不存在于高速缓冲存储器中(即,高速缓存命中或高速缓存未命中),或者可以在通过总线的数据路径之间发生冲突。这些事件可能影响处理器设备要处理的操作的性能。。
发明内容
本公开的示例实施例可以提供用于从针对处理器设备的操作发生的事件收集性能信息的配置和操作。在本公开的一些示例实施例中,可以通过基于命令集的重演来收集性能信息。
在一些实施例中,本公开涉及一种处理器设备,包括:调度器,被配置为调度第一命令集的第一命令和第二命令集的第二命令,使得处理器电路处理由第一命令集引导的第一操作和由第二命令集引导的第二操作;性能计数器,被配置为在处理器电路处理第一操作和第二操作时计数感兴趣事件发生的次数,其中每个次数对应于感兴趣事件之一;和寄存器,被配置为存储对应于计数的次数的计数值,其中,当感兴趣事件的数量大于寄存器的数量时,重复处理第一操作,使得针对第一操作计数所有感兴趣事件的次数,并且在针对第一操作计数所有感兴趣事件的次数之后处理第二操作。
在一些实施例中,本公开涉及一种处理器设备,包括:调度器,被配置为调度第一命令集的第一命令和第二命令集的第二命令;和性能计数器,被配置为计数关于处理由第一命令集引导的第一操作和由第二命令集引导的第二操作而发生的感兴趣事件的次数,其中每个次数对应于感兴趣事件之一,其中,重复调度第一命令集中的第一命令,使得针对第一操作计数所有感兴趣事件的次数,并且其中,在针对第一操作计数所有感兴趣事件的次数之后,调度第二命令集中的第二命令。
在一些实施例中,本公开涉及一种处理器设备,包括:处理器电路,被配置为处理由多个命令集中的每个命令集引导的操作;和性能计数器,被配置为在处理器电路处理由多个命令集中的每个命令集引导的操作时计数感兴趣事件发生的次数,其中每个次数对应于感兴趣事件之一,其中,重复处理由多个命令集中的每个命令集引导的操作,直到针对由多个命令集中的每个命令集引导的操作计数所有感兴趣事件的次数,并且其中,在针对由多个命令集中的第一命令集引导的第一操作计数所有感兴趣事件的次数之后,处理由多个命令集中的第二命令集引导的第二操作。
另外,可以改进用于重演的命令和数据的一致性。因此,可以基于一致的命令和数据来实现重演,并且可以容易地在重演结果之间进行相关并且使重演结果彼此匹配。
附图说明
通过以下参考附图的描述,本公开的上述和其他目的和特征将变得显而易见。
图1是示出根据一些示例实施例的包括处理器设备的电子系统的示例配置的框图。
图2是说明与图1的处理器设备相关联的示例操作的概念图。
图3是用于描述与图1的处理器设备相关联的示例操作的概念图。
图4是用于描述针对图3的示例操作的函数调用和命令集之间的示例关系的概念图。
图5是用于描述收集针对图1的图形处理器设备的操作的性能信息的示例方法的概念图。
图6是示出与图1的图形处理器设备相关联的示例配置的框图。
图7是描述收集针对图6的图形处理器设备的操作的性能信息的示例方法的流程图。
图8是用于描述用于收集与其数量大于图6的寄存器的数量的事件对应的性能信息的重演的概念图。
图9是用于描述针对图6的图形处理器设备的操作的示例重演的概念图。
图10是描述通过图9的示例重演来收集性能信息的示例方法的流程图。
图11是用于描述图9和10的示例重演的概念图。
图12至14是用于描述针对图6的图形处理器设备的操作的示例重演的概念图。
图15是描述通过图12至14的示例重演来收集性能信息的示例方法的流程图。
图16、17A和17B是用于描述针对图12至15的示例重演来管理计数值的示例方法的概念图。
图18是用于描述图12至15的示例重演的概念图。
图19和20是用于描述针对图12至15的示例重演的命令集和计数器配置值之间的示例关系的概念图。
具体实施方式
下面,将参考附图详细且清楚地描述示例实施例。
图1是示出根据一些示例实施例的包括处理器设备1100和1400的电子系统1000的示例配置的框图。
电子系统1000可包括主处理器设备1100、系统存储器1200、存储设备1300、图形处理器设备1400、显示设备1405、缓冲存储器1500、通信块1600、用户接口1700和总线1005。例如,电子系统1000可以是台式计算机、膝上型计算机、平板计算机、智能电话、可穿戴设备、电动车辆、家用电器和/或类似物之一。
主处理器1100可以执行各种逻辑/算术运算以控制电子系统1000的整体操作。例如,主处理器设备1100可以包括诸如现场可编程门阵列(FPGA)或专用集成电路(ASI C)的电子电路。例如,主处理器设备1100可以包括一个或多个处理器核,并且可以用通用处理器或应用处理器来实现。
系统存储器1200可以存储由主处理器设备1100处理或将要处理的数据。例如,系统存储器1200可以包括:易失性存储器,诸如静态随机存取存储器(SRAM)、动态RAM(DRAM)、或同步DRAM(SDRAM);和/或非易失性存储器,例如相变RAM(PRAM)、磁阻RAM(MRAM)、电阻RAM(ReRAM)或铁电RAM(FRAM)。
无论是否供电,存储设备1300都可以存储数据。例如,存储设备1300可以包括诸如固态驱动器(SSD)、卡存储器、嵌入式存储器等的存储介质。
图形处理器设备1400可以被配置为处理特定类型的操作。例如,图形处理器设备1400可以处理特定于图形处理的操作以在显示设备1405上显示图像信息。例如,图形处理器设备1400可以通过使用并行处理器来处理大量的图形数据来执行专门用于图形处理的操作。图形处理器设备1400可以包括电子电路,诸如FPGA、ASI C、固定/可重新配置逻辑电路等,以执行操作。
显示设备1405可以基于图形处理器设备1400的输出向用户提供图像信息。例如,显示设备1405可以用有机发光二极管(OLED)显示器件、有源矩阵OLED(AMOLED)显示器件和/或类似物实现。
缓冲存储器1500可以存储由图形处理器设备1400处理或要处理的数据。例如,缓冲存储器1500可以包括:易失性存储器,例如SRAM、DRAM或SDRAM;和/或非易失性存储器,例如PRAM、MRAM、ReRAM或FRAM。
在一些示例实施例中,如图1所示,图形处理器设备1400可以与主处理器设备1100分离。例如,主处理器设备1100可以是中央处理单元(CPU),并且图形处理器设备1400可以是图形处理单元(GPU)。例如,图形处理器设备1400和缓冲存储器1500可以用一个图形卡模块实现。
在一些示例实施例中,与图1中所示的示例不同,图形处理器设备1400可以与主处理器设备1100一起实现为一个芯片或模块。例如,应用处理器可以用片上系统(SoC)实现,并且可以包括主处理器设备1100和图形处理器设备1400的配置。
在一些示例实施例中,如图1所示,缓冲存储器1500可以与系统存储器1200分离。在其他示例实施例中,与图1所示的示例不同,缓冲存储器1500可以与系统存储器1200一起用一个存储器实现,并且该一个存储器可以由主处理器设备1100和图形处理器设备1400共享。
这样,可以不同地改变或修改电子系统1000的配置。提供图1的示例配置是为了便于更好地理解,而不是限制性的。
通信块1600可以支持各种无线通信协议和/或各种有线通信协议中的至少一种以与电子系统1000的外部设备/系统通信。用户接口1700可以包括各种输入接口和各种输出接口,用于促进用户和电子系统1000之间的通信。
总线1005可以提供电子系统1000的组件之间的通信路径。电子系统1000的组件可以根据总线1005的总线格式彼此交换数据。例如,总线格式可以包括各种接口协议中的一种或多种,如通用串行总线(USB)、小型计算机系统接口(SCSI)、外围组件互连快速(PCIe)、移动PCI e(M-PCI e)、串行高级技术附件(SATA)、串行附加SCSI(SAS)和/或类似物。
主处理器设备1100和系统存储器1200可以构成主机系统1002。主机系统1002可以通过总线1005访问电子系统1000的其他组件。例如,使用总线1005,主机系统1002可以与图形处理器设备1400通信和/或可以访问缓冲存储器1500,使得显示设备1405显示图像信息。在该示例中,图形处理器设备1400可以被理解为主机系统1002的从设备。
可以根据本公开的示例实施例来实现主处理器设备1100和图形处理器设备1400。将参考图2至20描述与主处理器设备1100和图形处理器设备1400相关联的示例配置和示例操作。
在以下描述中提供与主处理器设备1100和图形处理器设备1400相关联的示例实施例,但是实施例不限于此。可以容易地理解,示例实施例用于任何类型的处理器设备,无论是现在开发还是将来开发。提供以下描述是为了便于更好地理解,而不是限制性的。
图2是说明与图1的处理器设备1100和1400相关联的示例操作的概念图。
存储设备1300可以存储应用AP的数据和GPU驱动器GD的数据。应用AP可以是软件和/或固件,其使得电子系统1000执行由应用AP的程序代码定义的操作以向用户提供服务。例如,应用AP可以包括操作系统和/或用户应用(例如,多媒体演进应用、视频游戏应用等)。如这里所使用的,术语“程序代码”可以指用编程语言(例如,源代码)编写的指令,其可以被转换成用于由计算机执行的机器语言(例如,机器或可执行代码)。
用户可以是电子系统1000的最终用户。或者,用户可以是电子系统1000或处理器设备1100和1400的设计者,或者可以是应用AP的开发者。
GPU驱动器GD可以是被配置为操作或控制图形处理器设备1400的软件和/或固件。GPU驱动器GD可以提供与图形处理器设备1400接口连接的、电子系统1000的硬件组件(例如,主处理器设备1100),并且GPU驱动器GD可以允许应用AP访问图形处理器设备1400的硬件功能。
例如,可以将用于执行应用AP的请求提供给用于图形处理器设备1400的GPU驱动器GD。例如,响应于满足特定条件,可以通过用户接口1700从用户接收请求,或者可以在电子系统1000内生成请求。响应于GPU驱动器GD接收的请求,可以将应用AP的数据加载到系统存储器1200。
GPU驱动器GD的数据也可以被加载到系统存储器1200。当启动电子系统1000的操作时(例如,当电子系统1000被启动时),可以加载GPU驱动器GD的数据;或在需要与图形处理器设备1400接口时可以加载GPU驱动器GD的数据。
当GPU驱动器GD的数据被加载到系统存储器1200时,主处理器设备1100可以处理由GPU驱动器GD的程序代码引导的指令集。因此,可以根据主处理器设备1100的操作在主机系统1002上执行GPU驱动器GD。
例如,应用AP的程序代码可以包括被配置为使用图形处理器设备1400的硬件功能的部分。该部分可以在图形处理器设备1400被处理。为此,将在图形处理器设备1400处处理的该部分可以被提供给GPU驱动器GD。
GPU驱动器GD可以基于应用AP的程序代码中的要在图形处理器设备1400处理的程序代码的部分,将任务分配给图形处理器设备1400。该任务可以指示要使用由图形处理器设备1400提供的硬件功能来执行的工作量。
图形处理器设备1400可以包括一个或多个功能单元FU。功能单元FU可以被配置为处理从GPU驱动器GD分配的任务。为此,每个功能单元FU可以包括一个或多个处理器核和/或一个或多个逻辑电路。逻辑电路可以是固定的,可编程的和/或可重新配置的。这里,功能单元FU还可以称为处理器电路或处理器单元。
例如,功能单元FU可以包括用于基于顶点数据构造图元的图元组装器、用于基于图元生成片段数据和覆盖数据的光栅化器、用于处理由着色器程序引导的指令集的着色器核、用于执行特殊功能(例如,三角形复制,像素混合等)的特殊操作单元和/或类似物。例如,功能单元FU可以提供GPU上的通用计算(GPGPU)的功能。
然而,提供上述示例是为了便于更好地理解,而不是限制性的。功能单元FU可以包括各种类型的功能单元,以执行与图形处理相关联的操作。功能单元FU可以将处理任务的结果返回给GPU驱动器GD。因此,可以处理需要图形处理器设备1400的硬件功能的应用AP的程序代码部分。
例如,主处理器设备1100可以控制图形处理器设备1400,使得图形处理器设备1400执行操作。缓冲存储器1500可以存储由图形处理器设备1400生成的操作结果(例如,处理任务的结果),并且主处理器设备1100可以访问缓冲存储器1500以获得操作结果。因此,可以将来自图形处理器设备1400的操作结果提供给GPU驱动器GD。
例如,应用AP的程序代码可以包括要在主处理器设备1100处理的部分。要在主处理器设备1100处理的程序代码的部分可以引导和控制与图形处理无关的通用算术/逻辑运算。附加地或替代地,在主处理器设备1100处要处理的部分可以引导算术/逻辑运算以生成要在图形处理器设备1400的图形处理中使用的纹理数据。
以这种方式,主处理器设备1100和图形处理器设备1400可以执行和处理由应用AP的程序代码定义的操作。应用AP可以基于执行/处理操作的结果向用户提供服务。
图3是用于描述与图1的处理器设备1100和1400相关联的示例操作的概念图。
应用AP的程序代码可以包括要在主处理器设备1100处处理的部分和要在图形处理器设备1400处处理的部分。基于要在主处理器设备1100处理的程序代码部分,主处理器设备1100可以处理应用AP所需的操作。
在一些示例实施例中,可以基于图形应用编程接口(API)来编写要在图形处理器设备1400处理的程序代码部分。例如,可以基于诸如Di rect 3D、OpenGL、EGL、OpenCL等的API库或框架来编写要在图形处理器设备1400处理的程序代码部分。在这些示例实施例中,当执行应用AP时,可以从程序代码部分生成函数调用以在图形处理器设备1400处理。
然而,提供上述示例是为了便于更好地理解,而不是限制性的。要在图形处理器设备1400处理的程序代码部分可以基于其他类型的库或框架来编写,或者可以用没有特定库或框架的通用程序代码来编写。无论编写程序代码的方式如何,都可以在执行应用AP时调用函数、方法或任何其他类型的模块。
可以将函数调用输入到GPU驱动器GD。GPU驱动器GD可以将函数调用转换为命令集。命令集可以是机器指令,并且可以通过将函数调用改变为可以由图形处理器设备1400处理和识别的格式来生成。例如,图形处理器设备1400不能直接处理函数调用,并且可以理解并处理由GPU驱动器GD准备的命令集。
图形处理器设备1400可以接收命令集(例如,通过总线1005),并且可以处理由接收的命令集引导的操作。例如,响应于每个接收的命令集,图形处理器设备1400可以执行包括在接收的命令集中并由接收的命令集命令引导的操作。这样,图形处理器设备1400可以执行与应用AP的程序代码中的要在图形处理器设备1400处理的程序代码部分相对应的操作。
图4是用于描述针对图3的示例操作的函数调用和命令集之间的示例关系的概念图。
例如,M个函数调用可以构成一个函数调用组。例如,第一到第M函数调用可以构成第一函数调用组(例如,API函数调用组1)。类似地,第二到第N函数调用组可以包括几个单独的函数调用。然而,在一些示例中,构成每个函数调用组的函数调用的数量可以彼此不同。
例如,可以将一个函数调用组转换为一个命令集。例如,可以基于第一函数调用组的函数调用生成第一命令集,并且可以基于第二函数调用组生成第二命令集。一个函数调用组可以包括可以构成一个命令集的函数调用。如图4的示例中所示,命令集1可以基于API函数调用组1生成,命令集2可以基于API函数调用组2生成,命令集3可以基于API函数调用组3生成,命令集(N-1)可以基于API函数调用组(N-1)生成,并且可以基于API函数调用组N生成命令集N。
可以在一个分组单元中或在一个批处理单元中配置一个命令集。一个命令集可以对应于输入到命令队列(例如,图6的命令队列CQ)的一个单元,并且在命令队列中被管理。
包括在一个命令集中的命令可以一起输入到命令队列,并且可以在一个处理间隔中被一起连续处理。例如,可以在第一单个处理间隔中连续地处理包括在第一命令集中的命令(例如,机器指令),并且可以在第二单个处理间隔中连续地处理包括在第二命令集中的命令。
图5是用于描述收集针对图1的图形处理器设备1400的操作的性能信息的示例方法的概念图。
当图形处理器设备1400处理针对函数调用的命令集所引导的操作时,可以发生各种事件。事件可以是程序检测到的动作或情况发生。例如,事件可以包括硬件相关状态,例如高速缓存未命中(即,所需数据未存储在高速缓冲存储器中的状态)、总线冲突(即,通过总线的数据路径之间发生冲突的状态)、处理空闲状态(即,特定功能单元或处理器空闲而没有操作处理的状态),等等。
例如,事件可以包括图形相关状态,诸如顶点计数(即,与特定功能单元相关联的输入或输出顶点的数量)、图元计数(即,与特定功能单元相关联的输入或输出图元的数量)和/或类似物。然而,提供上述示例是为了便于更好地理解,而不是限制性的。事件可以包括在图形处理器设备1400处理操作时发生的各种状态。
事件可能影响图形处理器设备1400的操作性能和操作特性。例如,频繁的高速缓存未命中可能降低操作性能。因此,收集性能信息(例如,与图形处理器设备1400执行操作时发生的事件相关联的信息以及每个事件发生多少次)可以有利于分析和改善应用AP和图形处理器设备1400的性能和特性。
例如,可以参考所收集的性能信息以分析应用AP所需的操作瓶颈的原因并优化应用AP的程序代码。例如,可以参考所收集的性能信息来调试在执行应用AP所需的操作时发生的错误或异常。
这样,所收集的性能信息可以不同地用于改进应用AP提供的服务。例如,电子系统1000可以基于收集的性能信息自动执行分析/改进作业。例如,电子系统1000可以以文件或数据库的形式(例如,在存储设备1300中)存储收集的性能信息,或者可以通过显示设备1405或用户接口1700将收集的性能信息输出给用户。用户可以参考收集的性能信息手动执行分析/改进工作。
收集性能信息和执行分析/改进工作可以称为性能分析(performanceprofiling)。可以对应用AP的程序代码中的图形处理器设备1400处理的程序代码的全部或一部分执行性能分析。例如,用户可以选择针对性能分析的程序代码的一部分的起点和终点。在该示例中,可以针对对应于起点和终点之间的性能分析目标的函数调用来执行性能分析。例如,在图5中,对构成第二到第(N-1)函数调用组(例如,API函数调用组2、API函数调用组3、至API函数调用组(N-1))的函数调用执行性能分析。
或者,用户可以指定由作为渲染结果获得的帧单元的性能分析的目标。
图6是示出与图1的图形处理器设备1400相关联的示例配置的框图。
在一些示例实施例中,图形处理器设备1400可以包括调度器1410、功能单元1431至1439、性能计数器1451至1459、以及寄存器1471至1479。但是,与图6的说明不同,可以不同地改变或修改图形处理器设备1400的配置。图形处理器设备1400还可以包括图6中未示出的组件,或可以不包括图6中所示的组件中的一个或多个。
调度器1410可以从GPU驱动器GD接收命令集。调度器1410可以在命令队列CQ中管理所接收的命令集的命令。可以在缓冲存储器1500上的存储区域中分配命令队列CQ,以管理每个命令集的命令。
功能单元1431至1439可以对应于图2的功能单元FU。功能单元1431至1439可以处理从GPU驱动器GD分配的任务。为此,调度器1410可以调度命令(例如,可以安排处理命令的顺序或者可以建立从GPU驱动器GD接收的命令之间的关系),因此功能单元1431至1439可以执行和处理由每个命令集引导的操作。
来自功能单元1431至1439的操作结果OR可以存储在缓冲存储器1500中。主处理器设备1100可以访问缓冲存储器1500以获得操作结果OR。
性能计数器1451至1459可以计数功能单元1431至1439处理操作时事件分别发生的次数。例如,性能计数器1451至1459可以计数在处理由命令集引导的操作时发生高速缓存未命中的次数。以这种方式,可以收集性能信息。
在一些情况下,用户或电子系统1000可能对各种事件中特定事件的发生感兴趣。例如,用户或电子系统1000可能对导致性能下降的事件感兴趣,例如高速缓存未命中和处理空闲状态。特定事件可以被称为感兴趣的事件。可以对所有事件执行收集性能信息,或者可以对某些事件(例如,感兴趣的事件)执行收集性能信息。
例如,可以在调度器1410处接收与计数器配置相关联的信息。例如,可以通过用户接口1700从用户接收计数器配置信息,或者可以在电子系统1000中生成计数器配置信息。
例如,计数器配置信息可以用于设置性能计数器1451至1459的配置(例如,设置值,操作条件等),性能计数器1451至1459用于收集与感兴趣的事件相关联的性能信息。例如,当感兴趣的事件包括高速缓存未命中时,计数器配置信息可以用于将性能计数器1451到1459的配置设置为适合于计数针对功能单元1431到1439的高速缓存未命中发生的次数。
调度器1410可以基于计数器配置信息来设置性能计数器1451至1459的配置,使得性能计数器1451至1459对感兴趣事件的次数进行计数。基于调度器1410的设置,性能计数器1451至1459可以对针对由每个命令集引导的处理操作分别发生感兴趣事件的次数进行计数。
图6示出了示例配置,其中性能计数器1451至1459分别对应于功能单元1431至1439。在该配置中,性能计数器1451至1459可以计数针对由各个功能单元1431至1439处理的操作的感兴趣事件的次数。
然而,实施例不限于图6的图示。在一些示例实施例中,与图6的图示不同,可以以这样的方式改变或修改图形处理器设备1400的配置:一个性能计数器对应于多个功能单元,或者多个性能计数器对应于一个功能单元。
寄存器1471至1479可以存储计数值。计数值可以对应于由性能计数器1451至1459中的相应一个计数的次数。例如,当功能单元1431至1439处理操作时,性能计数器1451至1459可以基于计数的次数改变或更新存储在寄存器1471至1479中的计数值。
例如,当功能单元1431至1439完成处理操作时,已经存储在寄存器1471至1479中的计数值CV可以存储在缓冲存储器1500中。例如,主处理器设备1100可以访问缓冲存储器1500以获得计数值CV。可以收集计数值CV作为性能信息,并且可以基于计数值CV执行性能分析。
图7是描述收集针对图6的图形处理器设备1400的操作的性能信息的示例方法的流程图。
例如,用户10可以选择性能分析的起点和终点,并且可以在某些情况下选择分析配置(S110)。例如,用户10可以通过用户接口1700向电子系统1000输入起点、终点和分析配置的信息。
分析配置可以包括与性能分析的条件相关联的各种信息。例如,剖析配置可以包括与感兴趣的事件相关联的信息。当用户10输入分析配置时,可以针对感兴趣的事件提供性能分析。
例如,用户10可以请求执行应用AP(S120)。主处理器设备1100可以响应所请求的执行。在主处理器设备1100的控制下,可以将应用AP的数据加载到系统存储器1200,并且可以执行和处理由应用AP的程序代码定义的操作。在一些示例实施例中,响应于满足特定条件,可以在电子系统1000内触发操作S110和操作S120。
主处理器设备1100可以控制在应用AP的程序代码中在图形处理器设备1400处要处理的程序代码部分的传送(S130)。在主处理器设备1100的控制下,GPU驱动器GD可以基于根据应用AP的执行而生成的函数调用来生成命令集,并且还可以基于分析配置生成计数器配置信息(S140)。
在图形处理器设备1400中,调度器1410可以接收命令集和计数器配置信息。调度器1410可以调度命令集的命令,并且可以设置性能计数器1451到1459的配置(S150)。另外,调度器1410可以将命令分派给功能单元1431至1439(S160)。
因此,功能单元1431至1439可以通过命令集单元处理由命令引导的操作。例如,给定命令集单元的命令可以由一个功能单元1431至1439处理。性能计数器1451至1459可以计数在处理操作时分别发生感兴趣事件的次数(S170)。例如,每个性能计数器1451至1459可以计数在处理操作时发生相应的感兴趣事件的次数。计数的次数可以临时存储在寄存器1471至1479中,并且计数值CV可以在操作处理完成之后存储在缓冲存储器1500中(S180)。
主处理器设备1100可以基于存储在缓冲存储器1500中的计数值CV来生成性能信息或性能分析结果(S190)。例如,性能信息或性能分析结果可以存储在包括数字统计信息的存储设备1300中,或者可以以图形或表格的形式输出。例如,用户10可以利用性能信息或性能分析结果来分析和改进应用AP(S199)。
图8是用于描述用于收集对应于其数量大于图6的寄存器1471、1472和1479的数量的事件的性能信息的重演的概念图。
为了便于更好地理解,将假设图形处理器设备1400包括三(3)个寄存器1471、1472和1479。寄存器1471、1472和1479中的每一个可以存储与计数一个事件的次数相对应的值。
在一些情况下,感兴趣的事件的数量可以大于寄存器1471、1472和1479的数量。例如,用户10或电子系统1000可能对十二(12)个事件感兴趣。例如,第一,第二和第三事件可以构成第一事件集。类似地,第四至第十二事件可以构成第二至第四事件集。然而,可以不同地改变或修改寄存器的数量和感兴趣的事件的数量,并且本发明不限于本公开中描述的示例。
同时,三个寄存器1471、1472和1479可以存储针对三个感兴趣事件计数的次数,并且可能无法存储针对所有十二个感兴趣事件计数的次数。在这种情况下,为了计数分别发生所有12个感兴趣事件的次数,由应用AP的程序代码引导的操作可以在起点和终点之间重复四次。
例如,可以提供第一次演进(play),使得计数第一,第二和第三事件的次数。这里,演进可以意味着在单个特定间隔(例如,起点和终点之间的间隔)内执行和处理由应用AP的程序代码引导(即,由命令集引导)的操作。在执行第一次演进时,可以针对第一、第二和第三事件收集性能信息。类似地,可以提供第二到第四次演进以计数第四到第十二事件的次数。例如,可以执行第二次演进以收集第四、第五和第六事件的性能信息,可以执行第三次演进以收集第七、第八和第九事件的性能信息,并且可以执行第四次演进,收集第十、第十一和第十二个事件的性能信息。
因此,当感兴趣的事件的数量大于寄存器的数量时,可以重演由应用AP的程序代码引导的操作以收集针对所有感兴趣的事件的性能信息。这里,重演可以意味着多次重复执行相同的演进。
然而,对于由每个命令集引导的每次重复操作(即,对于每个演进),可以计数不同感兴趣事件的次数。例如,可以针对第一次演进计数第一、第二和第三事件的次数,并且可以针对第二次演进计数第四、第五和第六事件的次数。可以针对一个事件集执行一次演进。
当寄存器的数量增加时,重复演进的次数可以减少,并且可以提高重演的效率。然而,当寄存器的数量增加时,制造图形处理器设备1400的成本和图形处理器设备1400的尺寸也可能增加。因此,图形处理器设备1400可以包括有限数量的寄存器1471、1472和1479。
图9是用于描述针对图6的图形处理器设备1400的操作的示例重演的概念图。
例如,可以针对起点和终点之间的第二函数调用组(例如,API函数调用组2)至第(N-1)函数调用组(例如,API函数调用组(N-1))的函数调用来收集性能信息。在一些实现中,可以基于全函数调用组(例如,API函数调用组2到API函数调用组(N-1))来执行重演。
例如,可以执行与第一事件集相关联的第一演进以处理与全函数调用组相对应的操作。在第一次演进(例如,演进1)期间,可以针对第一、第二和第三事件(例如,事件集1)收集性能信息。在第一次演进完成之后,可以执行与第二事件集相关联的第二次演进以处理与全函数调用组相对应的操作。在第二次演进(例如,演进2)期间,可以针对第四、第五和第六事件(例如,事件集2)收集性能信息。
类似地,在完成第二次演进之后,可以基于全函数调用组来执行第三次和第四次演进中的每一次。在第三和第四次演进期间(例如,演进3和演进4),可以针对第七至第十二事件(例如,事件集3和事件集4)收集性能信息。
图10是描述通过图9的示例重演来收集性能信息的示例方法的流程图。例如,图10的示例方法可以在图7的操作S110和操作S120之后执行。
当执行应用AP时,主处理器设备1100可以捕获从应用AP的程序代码中的要在图形处理器设备1400处理的程序代码部分生成的函数调用。这里,捕获可以意味着,例如,抓住(hook)生成的函数调用以识别生成哪个函数调用。主处理器设备1100可以将捕获的函数调用的信息保留(例如,存储)在系统存储器1200中(S130a-1)。
主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以确定是否收集了所有计数值(S130a-2)。如果不是,则可以针对尚未收集的计数值执行重演。因此,如果未收集所有计数值(S130a-2,否),则主处理器设备1100可以将用于第K次演进的全函数调用输入到GPU驱动器GD(S130a-3)。
因此,可以传送要在图形处理器设备1400处理的程序部分。同时,传送函数调用可以伴随传送分析配置的信息。GPU驱动器GD可以基于全函数调用生成命令集,并且可以基于分析配置生成计数器配置信息(S140a)。
之后,在图形处理器设备1400中,调度器1410可以调度命令集的命令,并且可以基于计数器配置信息来设置性能计数器1451至1459的配置(S150a)。可以根据调度的结果将命令分派给功能单元1431至1439(S160a)。
虽然功能单元1431至1439处理由命令引导的操作,但是性能计数器1451至1459可以计数分别发生感兴趣事件的次数(S170a)。计数的次数可以临时存储在寄存器1471、1472和1479中的相应一个中,并且在完成第K次演进的操作处理之后,计数值CV可以存储在缓冲存储器1500中(S180a)。
之后,主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以再次确定是否收集了所有计数值(S130a-2)。如果不是,则可以重复操作S130a-3至操作S180a。在图9和10的示例中。重演可以基于存储在系统存储器1200中的全函数调用。
当收集了所有计数值时(S130a-2,是),主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以在与感兴趣的事件相关联的计数值CV之间建立相关性(S190a-1)。针对相同的全函数调用的不同演进期间可以观察到不同事件集的事件,因此主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以针对各种因素(例如,定时、因果关系等)彼此关联和匹配计数值CV,以获得适当的重演结果和性能信息。主处理器设备1100可以基于计数值CV和相关性生成性能信息或性能分析结果(S190a-2)。
图11是用于描述图9和10的示例重演的概念图。
在图9和10的示例中,重演可以基于根据应用AP的程序代码生成的全函数调用组。为了观察每次演进的不同事件,可以针对每次重复改变性能计数器1451至1459的配置。
例如,针对第一次演进,可以设置性能计数器1451至1459的配置以观察第一事件集的感兴趣事件。之后,针对第二次演进,可以设置性能计数器1451至1459的配置以观察第二事件集的感兴趣事件。以这种方式,针对第三和第四次演进,可以设置性能计数器1451至1459的配置以分别观察第三和第四事件集的感兴趣事件。
针对图9和10的示例,系统存储器1200可以保持全函数调用组的信息,并且GPU驱动器GD可以将全函数调用组转换为每个演进的命令集。因此,可以在系统存储器1200上使用大容量的存储区域用于重演。此外,转换全函数调用组并将命令集传送到图形处理器设备1400以用于每次演进可能降低性能分析的效率。
此外,函数调用可以伴随在由每个函数引导的操作中使用的自变量或参数。不仅维护函数调用组的信息而且维护自变量或参数的信息也可以在系统存储器1200上使用大容量的存储区域。例如,当自变量或参数包括图形数据(例如,纹理数据)时,重演可以使用相当大容量的存储区域。当为重演分配系统存储器1200的大量存储区域时,可以延迟处理其他操作。
在一些情况下,当用移动或便携式设备实现电子系统1000时,系统存储器1200可具有小容量。在这种情况下,系统存储器1200可能无法存储大量信息,并且可以缩短目标用于性能分析的函数调用间隔的长度。因此,可能难以收集足够的性能信息。
另外,GPU驱动器GD可以为每个演进新生成命令集。在这种情况下,取决于主处理器设备1100的运行时状态和非确定性特性,可以为每次演进生成不同的命令集。例如,调度命令的顺序可以改变,或者命令之间的因果关系可能会改变。在这种情况下,可能难以在计数值之间进行相关,或者计数值之间的相关性可能不准确。
图12至14是用于描述针对图6的图形处理器设备1400的操作的示例重演的概念图。
例如,可以针对在起点和终点之间的第二函数调用组至第(N-1)个函数调用组的的函数调用来收集性能信息。在图12至14的示例实施例中,可以基于命令集执行重演,而不是基于全函数调用组。也就是说,针对每个命令集可以重复(例如,重演)相同的演进,而不是针对全函数调用组重复。
首先,参考图12,可以基于从第二函数调用组(例如,API函数调用组2)生成的第二命令集(例如,命令集2)的命令来执行重演。可以部分地执行与第一事件集(例如,事件集1)相关联的第一演进(例如,演进1)以处理由第二命令集(例如,命令集2)引导的操作。在部分第一次演进完成之后,可以部分地执行与第二事件集(例如,事件集2)相关联的第二次演进(例如,演进2)以处理由第二命令集引导的操作。
类似地,在完成部分第二演进之后,可以部分地执行与第三事件集(例如,事件集3)相关联的第三演进(例如,演进3),然后可以部分地执行与第四事件集(例如,事件集4)相关联的第四演进(例如,演进4)。也就是说,可以不基于全函数调用组执行每个演进,但是可以部分地执行每个演进以重复处理由第二命令集引导的操作(这可以被称为部分重演)。当部分地和重复地执行每个演进时,可以针对由第二命令集引导的操作来计数所有感兴趣事件的次数。
例如,在第二命令集的命令的第一次重复(例如,部分第一次演进)中观察到的感兴趣的事件(例如,第一事件集的事件)可以与在第二命令集的命令的第二次重复(例如,部分第二次演进)中观察到的感兴趣的事件(例如,第二事件集合的事件)不同。因此,与在第一次重复中计数的次数对应的感兴趣事件可以与在第二次重复中计数的次数对应的感兴趣事件不同。对于由第二命令集引导的每次重复,可以计数不同感兴趣事件的次数。
之后,参考图13,可以基于从第三函数调用组(例如,API函数调用组3)生成的第三命令集(例如,命令集3)的命令来执行重演。类似于图12的部分重演,还可以部分地执行图13的重演以重复处理由第三命令集引导的操作。
例如,可以部分地执行与第一事件集(例如,事件集1)相关联的第一演进(例如,演进1)以处理由第三命令集(例如,命令集3)引导的操作,然后可以部分地执行与第二事件集(例如,事件集2)相关联的第二演进(例如,演进2)以处理由第三命令集(例如,命令集3)引导的操作,然后可以部分地执行与第三事件集(例如,事件集3)相关联的第三演进(例如,演进3)以处理由第三命令集(例如,命令集3)引导的操作,然后可以部分地执行与第四事件集(例如,事件集4)相关联的第四演进(例如,演进4)。以处理由第三命令集(例如,命令集3)引导的操作。
可以在图12的部分重演完成之后执行图13的部分重演。因此,在针对由第二命令集引导的操作计数所有感兴趣事件的次数之后,可以处理由第三命令集引导的操作。在图13的部分重演中,可以重复处理由第三命令集引导的操作,使得针对由第三命令集引导的操作计数所有感兴趣事件的次数。
以这种方式,可以基于从每个函数调用组生成的命令集的命令来执行部分重演。
参照图14,可以部分地执行第一重演(例如,演进1)以重复处理由第(N-1)函数调用组(例如,API函数调用组(N-1))生成的第(N-1)命令集(N-1)(例如,命令集(N-1))引导的操作。可以在针对由第(N-2)个命令集(例如,命令集(N-2))引导的操作计数所有感兴趣事件的次数之后执行图14的部分重演。例如,可以部分地执行与第一事件集(例如,事件集1)相关联的第一演进(例如,演进1)以处理由第(N-1)个命令集(例如,命令集(N-1))引导的操作,然后可以部分地执行与第二事件集(例如,事件集2)相关联的第二演进(例如,演进2)以处理由第(N-1)个命令集(例如,命令集(N-1))引导的操作,然后可以部分地执行与第三事件集(例如,事件集3)相关联的第三演进(例如,演进3)以处理由第(N-1)个命令集(例如,命令集(N-1))引导的操作,然后可以部分地执行与第四事件集(例如,事件集4)相关联的第四演进(例如,演进4)以处理由第(N-1)个命令集(例如,命令集(N-1))引导的操作。
当针对所有命令集执行部分重演时,可以针对由所有命令集引导的操作来执行每个演进。因此,可以执行所有演进,使得针对全函数调用计数分别发生的所有感兴趣事件的次数。
图15是描述通过图12至14的示例重演来收集性能信息的示例方法的流程图。例如,可以在图7的操作S110和操作S120之后执行图15的示例方法。
当执行应用AP时,可以从应用AP的程序代码中的要在图形处理器设备1400处理的程序代码部分生成函数调用。主处理器设备1100可以将函数调用输入到GPU驱动器GD(S130b)。同时,传送函数调用可以伴随传送分析配置的信息。
GPU驱动器GD可以基于函数调用生成命令集,并且可以基于分析配置生成计数器配置信息(S140b)。在图形处理器设备1400中,调度器1410可以从GPU驱动器GD接收命令集和计数器配置信息。
与图9和10的示例不同,在图12至15的示例性实施例中,调度器1410可以仅从GPU驱动器GD接收一个命令集。可以在命令队列CQ中管理所接收的命令集。
调度器1410可以调度命令集的命令(S150b-1),并且可以基于计数器配置信息来设置性能计数器1451至1459的配置(S150b-2)。可以根据调度的结果将命令分派给功能单元1431至1439(S160b)。
虽然功能单元1431至1439处理由命令引导的操作,但是性能计数器1451至1459可以计数分别发生的感兴趣事件的次数(S170b-1)。计数的次数可以临时存储在寄存器1471、1472和1479中,并且计数值CV可以在操作处理完成之后存储在缓冲存储器1500中(S180b)。
之后,图形处理器设备1400(或者,在一些示例实施例中,GPU驱动器GD或主处理器设备1100)可以确定是否针对一个命令集收集了所有计数值(S170b-2)。如果不是(S170b-2,否),则可以重复操作S150b-2至操作S180b。
可以提供操作S150b-2到操作S180b的重复以计数针对相同命令集的不同感兴趣事件的次数。在操作S150b-2到操作S180b的重复中,可以重复地调度和处理一个命令集的命令,使得针对由一个命令集引导的操作计数所有感兴趣事件的次数。为此,在操作S150b-2中,调度器1410可以针对一个命令集的每次重复命令重新改变性能计数器1451至1459的配置。
例如,当即使由第二命令集引导的操作被处理,针对由第二命令集引导的操作未完全计数所有感兴趣事件的次数时,调度器1410可以改变性能计数器1451至1459的配置并可以重复地调度第二命令集的命令,使得对与分别未计数的次数相对应的感兴趣事件的次数进行计数。例如,调度器1410可以改变性能计数器1451至1459的配置,并且可以重复地调度第二命令集的命令,以便对尚未计数的感兴趣事件进行计数。因此,对于部分重演的每次演进,可以计数不同的感兴趣事件的次数。
这样,在图12至15的示例实施例中,可以基于在命令队列CQ中管理的命令集的单元来执行重演,而不是基于全函数调用。可以基于在命令队列CQ中管理的命令集的命令来执行基于命令集的重演,而无需从GPU驱动器GD重复地接收命令集。
当针对一个命令集收集所有计数值时(S170b-2,是),图形处理器设备1400(或者,在一些示例实施例中,GPU驱动器GD或主处理器设备1100)可以确定是否处理所有命令集(S170b-3)。如果未处理所有命令集(S170b-3,否),则可以重复操作S150b-1至操作S180b。
可以提供操作S150b-1到操作S180b的重复以对针对所有命令集的不同的感兴趣事件的次数进行计数。在操作S150b-1中,调度器1410可以调度新命令集的命令,使得针对由不同命令集引导的操作来计数感兴趣事件的次数。
例如,在针对由第二命令集引导的操作计数所有感兴趣事件的次数之后,调度器1410可以调度第三命令集的命令。因此,功能单元1431至1439可以处理由第三命令集引导的操作,并且性能计数器1451至1459可以对针对第三命令集分别发生的感兴趣事件的次数进行计数。
当处理所有命令集时,主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以在与感兴趣的事件相关联的计数值CV之间建立相关性(S190B-1)。在图12至15的示例实施例中,可以针对每个命令集分别计数对应于一个事件的计数值,因此主处理器设备1100(或者,在一些示例实施例中,GPU驱动器GD或图形处理器设备1400)可以彼此关联并匹配与一个事件对应的计数值。
例如,对于相应的事件,针对由第二命令集引导的操作计数的次数可以分别与针对由第三命令集引导的操作计数的次数相加。这将参考图16至17B进一步描述。主处理器设备1100可以基于计数值CV和相关性生成性能信息或性能分析结果(S190b-2)。
图16至17B是用于描述针对图12至15的示例重演来管理计数值的示例方法的概念图。
参见图16,例如,在针对第一事件集的感兴趣事件(例如,事件集1),对第二命令集(例如,命令集2)所引导的操作部分地执行第一次演进(例如,演进1)之后,寄存器1471、1472和1479可以分别存储计数值CV[E1][1]、CV[E2][1]和CV[E3][1]。计数值CV[E1][1]、CV[E2][1]和CV[E3][1]可以分别对应于在处理第二个命令集引导的操作时发生的第一事件集的第一、第二和第三事件E1、E2和E3的次数。
在完成部分第一次演进之后并且在针对第二事件集的感兴趣事件(例如,事件集2)对由第二命令集引导的操作执行第二次演进(例如,演进2)之前寄存器1471、1472和1479可以分别输出计数值CV[E1][1]、CV[E2][1]和CV[E3][1]。因此,计数值CV[E1][1]、CV[E2][1]和CV[E3][1]可以存储在缓冲存储器1500中。在计数值CV[E1][1]、CV[E2][1]和CV[E3][1]被输出到缓冲存储器1500之后,可以执行部分第二演进。
参见图16至17B,以这种方式,可以部分地执行第二到第四次演进(例如,演进2到演进4),并且可以在寄存器1471、1472和1479中临时存储计数值CV[E4][1]到CV[E12][1]。计数值CV[E4][1]至CV[E12][1]可以分别对应于在处理由第二命令集引导的操作时发生的、第二至第四事件集(例如,事件集2到事件集4)的第四至第十二事件E4至E12的次数。
在完成与第二命令集相关联的第二到第四次演进(例如,演进2到演进4)的操作处理之后,可以在缓冲存储器1500中存储计数值CV[E4][1]到CV[E12][1]。在完成第二命令集的重演并且计数所有感兴趣的事件E1至E12的次数之后,可以针对第一事件集的感兴趣事件E1,E2和E3对由第三命令集(例如,命令集3)引导的操作执行第一次演进。
参见图17A,在一些示例实施例中,性能计数器1451至1459可以计数在处理由第三命令集引导的操作时的感兴趣的事件E1、E2和E3发生的次数,而不读取存储在缓冲存储器1500中的计数值CV[E1][1]至CV[E3][1]。在这种情况下,寄存器1471、1472和1479可以存储计数值CV[E1][2]、CV[E2][2]和CV[E3][2]。之后,在针对第二事件集的感兴趣事件E4,E5和E6的第三命令集所引导的操作执行第二次演进之前,计数值CV[E1][2]、CV[E2][2]、并且CV[E3][2]可以存储在缓冲存储器1500中。
在一些示例实施例中,计数值CV[E1][1]和CV[E1][2]可以在缓冲存储器1500中单独管理。同时,计数值CV[E1][1]和CV[E1][2]的总和可以对应于针对处理由第二和第三命令集引导的操作而发生的感兴趣事件E1的次数。因此,当主处理器设备1100分别从缓冲存储器1500获得计数值CV[E1][1]和CV[E1][2]时,主处理器设备1100可以添加计数值CV[E1][1]和CV[E1][2]以提供感兴趣事件E1发生的次数作为性能信息或性能分析结果。
参见图17B,在一些示例实施例中,在针对第一事件集的感兴趣事件E1、E2和E3对由第三命令集引导的操作执行第一次演进之前,可以将缓冲存储器1500的计数值CV[E1][1]至CV[E3][1]读取到寄存器1471、1472和1479。当处理由第三命令集引导的操作时,性能计数器1451到1459可以计数感兴趣事件E1、E2和E3发生的次数以改变(例如,更新)寄存器1471、1472和1479的计数值CV[E1][1]至CV[E3][1]。
结果,寄存器1471、1472和1479可以分别存储下列计数值的总和:“CV[E1][1]+CV[E1][2]”、“CV[E2][1]+CV[E2][2]”和“CV[E3][1]+CV[E3][2]”。计数值的总和“CV[E1][1]+CV[E1][2]”、“CV[E2][1]+CV[E2][2]”和“CV[E3][1]+CV[E3][2]”可以分别对应于针对处理由第二和第三命令集引导的操作而发生感兴趣事件E1、E2和E3的次数。
之后,在针对第二事件集的感兴趣事件E4、E5和E6对第三命令集引导的操作执行第二次演进之前,计数值的总和“CV[E1][1]+CV[E1][2]”、“CV[E2][1]+CV[E2][2]”和“CV[E3][1]+CV[E3][2]”可以存储在缓冲存储器1500中。另外,缓冲存储器1500的计数值CV[E4][1]至CV[E6][1]可以被读取到寄存器1471、1472和1479。
以这种方式,在一些示例实施例中,计数值CV[E1][1]和CV[E1][2]可以作为和“CV[E1][1]+CV[E1][2]”来管理。主处理器设备1100可以直接从缓冲存储器1500获得和“CV[E1][1]+CV[E1][2]”。主处理器设备1100可以使用和“CV[E1][1]+CV[E1][2]”提供感兴趣事件E1发生的次数作为性能信息或性能分析结果。
图18是用于描述图12至15的示例重演的概念图。
在图12至15的示例实施例中,可以将基于应用AP的程序代码生成的函数调用转换为命令集。可以将每个命令集提供给图形处理器设备1400一次。重演可以基于在命令队列CQ中管理的命令集的单元。
例如,为了收集针对第二命令集的性能信息并执行性能分析,可以重演由第二命令集引导的操作。可以重复由第二命令集引导的操作,直到针对由第二命令集引导的操作计数所有感兴趣事件的次数为止。在完成由第二命令集引导的操作的重复之后,可以以类似方式基于命令集来重演由第三到第(N-1)命令集引导的操作。
针对图12至15的示例实施例,缓冲存储器1500可以保留命令队列CQ,并且系统存储器1200可以不保留函数调用的信息。因此,在提供有限数量的寄存器的情况下,即使使用具有小容量的系统存储器1200也可以实现重演,并且系统存储器1200的可用存储区域可以用于处理其他操作。
当不保留函数调用的信息时,也可以不保留自变量或参数的信息,并且可以更有效地使用系统存储器1200。特别地,即使用移动或便携式设备实现的电子系统1000包括具有小容量的系统存储器1200,也可以收集与许多事件相关联的足够的性能信息。
另外,对于每次演进,可能不必将全函数调用和传送命令集转换到图形处理器设备1400。因此,可以防止性能分析的效率降低。
此外,由于命令集仅生成一次并且仅被提供给图形处理器设备1400一次,因此可以针对每次演进相同地调度和处理命令。也就是说,可以基于一致的命令和数据来实现重演,并且可以提高用于重演的命令和数据的一致性。因此,可以容易地在计数值之间进行相关,并且可以精确地建立计数值之间的相关性。基于命令集的重演可以有利地用于命令队列方式的下一代API,例如Vulkan API。
在图12至15的示例实施例中,可以基于寄存器的数量和命令集的数量来确定重复每次重演的次数。在一些示例实施例中,分析配置和/或计数器配置可以包括与根据用户10或电子系统1000的确定重复每次重演的次数相关联的信息。在一些情况下,用户10或电子系统1000可以强制停止或终止重演。
图19和20是用于描述针对图12至15的示例重演的命令集和计数器配置值之间的示例关系的概念图。
如上所述,命令集可以与计数器配置相关联。当请求性能分析时,调度器1410可以与命令集一起接收计数器配置信息。
参见图19,可以提供命令集“A”、“B”和“C”,并且计数器配置信息可以包括计数器配置值“A”、“B”和“C”。计数器配置值“A”、“B”和“C”可以分别对应于命令集“A”、“B”和“C”,并且可以参考用来设置与由命令集“A”、“B”和“C”引导的处理操作相关联的性能计数器1451至1459的配置。
可以提供计数器配置值“A”、“B”和“C”以不同地设置性能计数器1451至1459的配置。例如,由计数器配置值“A”设置的性能计数器1451至1459的配置可以与由计数器配置值“B”设置的性能计数器1451至1459的配置不同。
在这种情况下,与由命令集“A”引导的处理操作相关联的性能计数器1451至1459的配置可以与与由命令集“B”引导的处理操作相关联的性能计数器1451至1459的配置不同。因此,可以在性能计数器1451至1459的不同设置配置下计数针对由命令集“A”、“B”和“C”引导的操作而发生的感兴趣事件的次数。
例如,当命令集“A”、“B”和“C”与图形处理相关联时,由命令集“A”、“B”和“C”引导的操作可能具有不同的特征或可能需要不同的操作条件。例如,当要在显示设备1405上显示的图像显著地变化时,命令集“A”、“B”和“C”可以针对诸如“DrawCall”命令的数量、颜色、图像大小等的各种因素具有不同条件。在这种情况下,如图19所示,可以提供不同的计数器配置值“A”、“B”和“C”。
针对图12至15的示例实施例,可以重复由命令集“A”引导的操作。对于每次重复,命令集“A”可以对应于与每次重复相关联的事件集的计数器配置值。例如,当存在不同的P事件集时,命令集“A”引导的操作可以在性能计数器1451至1459的不同设置配置下针对相应的重复而重演P次。
参见图20,可以提供命令集“A1”、“A2”、“B1”、“B2”和“B3”,并且计数器配置信息可以包括计数器配置值“A”和“B”。在图20的示例中,一个计数器配置值可以对应于多个命令集。
例如,计数器配置值“A”可以对应于命令集“A1”和“A2”,并且可以参考来设置与处理由命令集“A1”和“A2”引导的操作相关联的性能计数器1451至1459的配置。计数器配置值“B”可以对应于命令集“B1”、“B2”和“B3”,并且可以参考来设置与处理由命令集“B1”、“B2”和“B3”引导的操作相关联的性能计数器1451至1459的配置。
计数器配置值“A”和“B”可以被提供来不同设置性能计数器1451到1459的配置。同时,由于命令集“A1”和“A2”对应于一个计数器配置值“A”,与处理由命令集“A1”引导的操作相关联的性能计数器1451至1459的配置可以和与处理由命令集“A2”引导的操作相关联的性能计数器1451至1459的配置相同。
因此,针对由命令集“A1”和“A2”引导的操作而发生感兴趣事件的次数可以在由一个计数器配置值“A”设置的性能计数器1451至1459的相同配置下计数。类似地,针对由命令集“B1”、“B2”和“B3”引导的操作而发生感兴趣事件的次数可以在由一个计数器配置值“B”设置的性能计数器1451至1459的相同配置下计数。
例如,当命令集“A1”、“A2”、“B1”、B2”和“B3”与除图形处理之外的简单操作处理相关联时,很可能由命令组“A1”、“A2”、“B1”、“B2”和“B3”引导的操作具有相同的特性或类似特性,或者需要相同的操作条件或类似的操作条件。在这种情况下,为了提高操作处理的效率和总线带宽的效率,可以提供一个计数器配置值以对应于多个命令集。
例如,可以将需要相同条件或类似条件的命令集分组以对应于一个计数器配置值。分组以对应于一个计数器配置值的命令集可以根据用户10的意图或电子系统1000的操作策略预先确定。或者,分组以对应于一个计数器配置值的命令集可以动态地取决于诸如上下文趋势,数据类型等各种因素而变化。
针对图12至15的示例实施例,可以重复由命令集“A1”和“A2”引导的操作。对于每次重复,命令集“A1”和“A2”可以对应于与每次重复相关联的事件集的计数器配置值。
例如,当存在不同的P事件集时,由命令集“A1”和“A2”引导的操作可以在性能计数器1451至1459的不同设置的配置下针对相应的重复而重演P次。然而,当在完成命令集“A1”的重复命令之后处理命令集“A2”的命令时,可以保持性能计数器1451至1459的配置而不进行改变。
以上描述旨在提供用于实现所公开的实施例的示例配置和操作。除了上述示例实施例之外,本发明的范围和精神可以包括通过简单地改变或修改上述示例实施例而获得的实现。此外,本发明的范围和精神包括通过以后容易地改变或修改上述示例实施例来实施的实现。

Claims (20)

1.一种处理器设备,包括:
调度器,被配置为调度第一命令集的第一命令和第二命令集的第二命令,使得处理器电路处理由第一命令集引导的第一操作和由第二命令集引导的第二操作;
性能计数器,被配置为在处理器电路处理第一操作和第二操作时计数感兴趣事件发生的次数,其中每个次数对应于感兴趣事件之一;和
寄存器,被配置为存储对应于计数的次数的计数值,
其中,当感兴趣事件的数量大于寄存器的数量时,重复处理第一操作,使得针对第一操作计数所有感兴趣事件的次数,并且在针对第一操作计数所有感兴趣事件的次数之后处理第二操作。
2.如权利要求1所述的处理器设备,其中,在调度器处分别基于根据应用的执行而生成的第一函数调用和第二函数调用来接收第一命令集和第二命令集。
3.如权利要求1所述的处理器设备,
其中调度器从驱动器一次接收第一命令集和第二命令集中的每一个。
4.如权利要求1所述的处理器设备,
其中,第一命令集和第二命令集中的每一个被配置在一个分组单元或一个批处理单元中,并且
其中,第一命令集中包括的第一命令在第一处理间隔中连续处理,第二命令集中包括的第二命令在第二处理间隔中连续处理。
5.如权利要求1所述的处理器设备,其中,所述感兴趣事件包括高速缓存未命中、总线冲突、处理空闲状态、顶点计数或原始计数中的至少一个。
6.如权利要求1所述的处理器设备,其中,在针对所述第一操作计数所有感兴趣事件的次数之后,重复处理所述第二操作,使得针对所述第二操作计数所有感兴趣事件的次数。
7.如权利要求6所述的处理器设备,其中关于每个感兴趣事件的针对第一操作计数的次数与关于每个相应感兴趣事件的针对第二操作计数的次数相加。
8.一种处理器设备,包括:
调度器,被配置为调度第一命令集的第一命令和第二命令集的第二命令;和
性能计数器,被配置为计数关于处理由第一命令集引导的第一操作和由第二命令集引导的第二操作而发生的感兴趣事件的次数,其中每个次数对应于感兴趣的事件之一,
其中,重复调度第一命令集中的第一命令,使得针对第一操作计数所有感兴趣事件的次数,并且
其中,在针对第一操作计数所有感兴趣事件的次数之后,调度第二命令集中的第二命令。
9.如权利要求8所述的处理器装置,其中所述调度器进一步被配置为设置所述性能计数器的配置,使得所述性能计数器计数所述感兴趣事件的次数。
10.如权利要求9所述的处理器设备,其中,所述调度器还被配置为针对所述第一命令集的所述第一命令的每次重复来改变所述性能计数器的配置。
11.如权利要求9所述的处理器设备,其中,在执行所述第一操作处理之后,当针对所述第一操作未完全计数所有感兴趣事件的次数时,所述调度器还被配置为改变所述性能计数器的配置并重复调度第一命令集的第一命令,以便计数未计数的感兴趣事件。
12.如权利要求8所述的处理器设备,其中,与所计数的次数对应的感兴趣事件中,与在第一命令集的第一命令的第一重复中计数的次数相对应的第一感兴趣事件和与在第一命令集的第一命令的第二重复中计数的次数相对应的第二感兴趣事件是不同的。
13.如权利要求12所述的处理器设备,还包括:
寄存器,被配置为存储对应于计数的次数的计数值,
其中寄存器还被配置为:
存储与第一重复中的第一感兴趣事件相对应的第一计数值,
在第一重复完成后,输出第一计数值,使得第一计数值存储在缓冲存储器中,并且
在输出第一计数值之后,存储与第二重复中的第二感兴趣事件对应的第二计数值。
14.如权利要求13所述的处理器设备,
其中,寄存器还被配置为在第二命令集的第二命令的第三重复中存储对应于第一感兴趣事件的第三计数值,以及
其中,用于针对处理第一操作和第二操作的第一感兴趣事件发生的次数,提供第一计数值和第三计数值之和。
15.一种处理器设备,包括:
处理器电路,被配置为处理由多个命令集中的每个命令集引导的操作;和
性能计数器,被配置为在处理器电路处理由多个命令集中的每个命令集引导的操作时计数感兴趣事件发生的次数,其中每个次数对应于感兴趣事件之一,
其中,重复处理由多个命令集中的每个命令集引导的操作,直到针对由多个命令集中的每个命令集引导的操作计数所有感兴趣事件的次数,并且
其中,在针对由多个命令集中的第一命令集引导的第一操作计数所有感兴趣事件的次数之后,处理由多个命令集中的第二命令集引导的第二操作。
16.如权利要求15所述的处理器设备,还包括:
调度器,被配置为从驱动器接收多个命令集,使得处理器电路处理由多个命令集中的每个命令集引导的操作,
其中调度器一次接收多个命令集中的每一个。
17.如权利要求16所述的处理器设备,其中,所述调度器还被配置为:
当针对第一操作没有完全计数所有感兴趣事件的次数时,重复调度第一命令集的命令,使得重复处理由第一命令集引导的第一操作,以及
在针对第一操作计数所有感兴趣事件的次数之后,调度第二命令集的命令,使得处理由第二命令集引导的第二操作。
18.如权利要求15所述的处理器设备,还包括:
调度器,被配置为基于计数器配置信息设置性能计数器的配置,使得针对由多个命令集中的每个命令集引导的操作的每次重复计数不同感兴趣事件的次数。
19.如权利要求18所述的处理器设备,
其中,计数器配置信息包括多个计数器配置值,被提供来不同地设置性能计数器的配置,
其中,所述多个命令集分别对应于所述多个计数器配置值,以及
其中,针对由多个命令集引导的操作,在性能计数器的不同设置配置下对感兴趣事件的次数进行计数。
20.如权利要求18所述的处理器设备,
其中,计数器配置信息包括计数器配置值,
其中,所述多个命令集对应于计数器配置值,以及
其中,针对由多个命令集引导的操作,在由计数器配置值设置的性能计数器的配置下对感兴趣事件的次数进行计数。
CN201811524354.0A 2018-01-09 2018-12-13 通过基于命令集的重演收集性能信息的处理器设备 Pending CN110032489A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0002881 2018-01-09
KR1020180002881A KR102491606B1 (ko) 2018-01-09 2018-01-09 커맨드 세트 기반 리플레이를 통해 수행 정보를 수집하는 프로세서 장치

Publications (1)

Publication Number Publication Date
CN110032489A true CN110032489A (zh) 2019-07-19

Family

ID=66995369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811524354.0A Pending CN110032489A (zh) 2018-01-09 2018-12-13 通过基于命令集的重演收集性能信息的处理器设备

Country Status (4)

Country Link
US (1) US11010169B2 (zh)
KR (1) KR102491606B1 (zh)
CN (1) CN110032489A (zh)
DE (1) DE102018128342A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022034407A1 (en) * 2020-08-11 2022-02-17 International Business Machines Corporation Multifunction communication interface supporting memory sharing among data processing systems

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110514982B (zh) * 2019-08-22 2022-03-22 上海兆芯集成电路有限公司 性能分析系统与方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596760A (en) * 1991-12-09 1997-01-21 Matsushita Electric Industrial Co., Ltd. Program control method and program control apparatus
US5982981A (en) * 1993-05-25 1999-11-09 Olympus Optical Co., Ltd. Electronic imaging apparatus
US20020122210A1 (en) * 2000-12-29 2002-09-05 Mitchell Ilbery Peter William Error diffusion using next scanline error impulse response
US20130057563A1 (en) * 2010-04-28 2013-03-07 Telefonaktiebolaget L M Ericsson (Publ) Technique for GPU Command Scheduling
CN107193762A (zh) * 2016-03-15 2017-09-22 爱思开海力士有限公司 半导体存储器件的控制器及其操作方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100217536B1 (ko) * 1990-08-06 1999-09-01 윌리엄 비. 켐플러 이벤트 한정 검사 방법 및 회로
US6792392B1 (en) 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US7095416B1 (en) 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US8587593B2 (en) 2008-07-25 2013-11-19 Qualcomm Incorporated Performance analysis during visual creation of graphics images
US9275491B2 (en) 2010-04-05 2016-03-01 Nvidia Corporation GPU work creation and stateless graphics in OPENGL
US8462166B2 (en) 2010-10-01 2013-06-11 Apple Inc. Graphics system which measures CPU and GPU performance
US10437591B2 (en) * 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9727942B2 (en) 2013-10-29 2017-08-08 International Business Machines Corporation Selective utilization of graphics processing unit (GPU) based acceleration in database management
GB2521155B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
US9535815B2 (en) 2014-06-04 2017-01-03 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
US9786346B2 (en) 2015-05-20 2017-10-10 Micron Technology, Inc. Virtual ground sensing circuitry and related devices, systems, and methods for crosspoint ferroelectric memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596760A (en) * 1991-12-09 1997-01-21 Matsushita Electric Industrial Co., Ltd. Program control method and program control apparatus
US5982981A (en) * 1993-05-25 1999-11-09 Olympus Optical Co., Ltd. Electronic imaging apparatus
US20020122210A1 (en) * 2000-12-29 2002-09-05 Mitchell Ilbery Peter William Error diffusion using next scanline error impulse response
US20130057563A1 (en) * 2010-04-28 2013-03-07 Telefonaktiebolaget L M Ericsson (Publ) Technique for GPU Command Scheduling
CN107193762A (zh) * 2016-03-15 2017-09-22 爱思开海力士有限公司 半导体存储器件的控制器及其操作方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022034407A1 (en) * 2020-08-11 2022-02-17 International Business Machines Corporation Multifunction communication interface supporting memory sharing among data processing systems
US11341060B2 (en) 2020-08-11 2022-05-24 International Business Machines Corporation Multifunction communication interface supporting memory sharing among data processing systems
GB2612764A (en) * 2020-08-11 2023-05-10 Ibm Multifunction communication interface supporting memory sharing among data processing systems

Also Published As

Publication number Publication date
US11010169B2 (en) 2021-05-18
KR20190084761A (ko) 2019-07-17
US20190213010A1 (en) 2019-07-11
KR102491606B1 (ko) 2023-01-26
DE102018128342A1 (de) 2019-07-11

Similar Documents

Publication Publication Date Title
CN104036451B (zh) 基于多图形处理器的模型并行处理方法及装置
CN102870096B (zh) 子缓冲器对象
CN102449665B (zh) 显示经渲染的图形元素的性能度量的视觉表示
CN102099789B (zh) 多处理器的多维线程分组
CN101573690B (zh) 线程排队的方法和装置
CN102725734B (zh) 基于隔离的线程批调度方法
US9122676B2 (en) License reconciliation with multiple license types and restrictions
CN104036537A (zh) 多分辨率一致光栅化
CN104040500B (zh) 基于线程相似性的调度线程执行
CN103226463A (zh) 用于使用预解码数据调度指令的方法和装置
CN103019810A (zh) 具有不同执行优先级的计算任务的调度和管理
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
CN102473109A (zh) 利用批调度的线程调度
CN103793876A (zh) 分布式拼接式进行高速缓存
KR101609079B1 (ko) 그래픽 프로세싱 유닛에서의 명령 선별
CN104516831A (zh) 原子存储器更新单元和方法
CN103279379A (zh) 用于在没有指令解码的情况下调度指令的方法和装置
CN101533387A (zh) 基于fpga的边角块稀疏矩阵并行lu分解器
CN103870213B (zh) 一种生成性能数据的图形处理管线及计算系统
CN103207774A (zh) 用于解决线程发散的方法和系统
CN110187835A (zh) 用于管理访问请求的方法、装置、设备和存储介质
CN103885902A (zh) 用于经由纹理硬件实施存储器访问操作的技术
CN104823155A (zh) 基于存储器的旗语
CN110032489A (zh) 通过基于命令集的重演收集性能信息的处理器设备
CN103996216A (zh) 用于曲面细分和几何着色器的电力高效属性处置

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