对计算机程序指令的并发执行序列的执行时间的无锁测量的制作方法

文档序号:16990014发布日期:2019-03-02 00:53阅读:226来源:国知局
对计算机程序指令的并发执行序列的执行时间的无锁测量的制作方法

在高性能计算机系统(例如实时控制系统)中,对计算机程序中的任何单独操作或一组操作的执行时间的精确测量对于识别要进行改善的潜在区域是重要的。然而,测量计算机系统的性能会影响该计算机系统的性能。理想地,用于测量高性能计算机系统中的执行时间的任何技术应该保持并且不应不利地影响该计算机系统的任何性能保证(例如实时性能),同时提供微秒精度并利用最小的存储器资源。

如果计算机系统支持由计算机程序的不同独立部分或由不同计算机程序进行的并发操作,则对于测量高性能计算机系统中的执行时间的这种约束特别具有挑战性。如果对计算机系统的使用超出该计算机系统的开发者的控制,例如在消费者设备的情况下,则这些挑战会加剧。在这种使用中,不同的计算机系统具有不同的资源、应用、版本、更新、使用模式等等。



技术实现要素:

提供本发明内容以用简化形式引入一些概念,这些概念以下在详细描述中进一步描述。本发明内容并非旨在标识关键或必要特征,也并非旨在限制所要求保护的主题内容的范围。

计算机系统支持测量由计算机程序的不同独立部分或由不同计算机程序进行的并发操作的执行时间。计算机程序的独立部分(本文被称为线程)包括线程本地存储,该线程本地存储在线程的处理器执行该线程期间仅可由该线程访问。在执行期间,线程还可以访问高性能系统定时器,该定时器驱动处理器的定时,以允许利用单个指令以微秒或更佳的精度对系统定时器进行采样。线程在线程本地存储中分配定时缓冲区。

对于线程内要测量执行时间的任何指令序列,该指令序列具有标识符并包括两个命令,本文中被称为开始(start)命令和结束(end)命令。开始命令是在要测量的指令序列的开始处的指令;结束命令是在要测量的指令序列的结尾处的指令。开始命令对系统定时器进行采样以获得开始时间,并将标识符和开始时间存储在线程本地存储中的定时缓冲区中。结束命令对系统定时器进行采样以获得结束时间,并对定时缓冲区中的相应标识符的数据进行更新,以指示用于执行指令序列所经过的时间。可以这样指示所经过的时间,例如通过存储开始时间和结束时间、或者通过计算并存储开始时间与结束时间之间的差异。开始命令和结束命令均可以实现为单个可执行指令。

利用可以执行多个并发线程的计算机系统,可以使用这些技术以无锁方式来测量并发线程中的指令序列的执行时间,因为每个线程访问其自己的线程本地存储以存储定时数据。此外,可以以微秒或更佳的精度来测量执行时间,因为系统定时器仅在执行正被测量执行时间的指令序列的开始和结束时被采样。另外,通过使用单个可执行指令来捕获开始时间和结束时间,并通过在线程本地存储中使用相对小的定时缓冲区,可以在对性能影响最小的情况下测量执行时间。

可以由计算机程序收集和存储多个线程的定时缓冲区中的数据以供后续分析。例如,响应于线程或包括该线程的计算机程序的执行终止,或者响应于某个其它事件,可以由例如计算机程序或者由操作系统来收集和存储由该计算机程序分配的定时缓冲区。

使用此类技术,还可以编写任何计算机程序以允许针对计算机程序的线程中的任何指令序列测量执行时间。在一种实现方式中,计算机程序的源代码可以利用指示要测量执行时间的指令序列的开始点、以及该指令序列的结束点的关键字来注释。编译器或预编译器可以处理此类关键字,以便将标识符分配给相应的指令序列,并在计算机程序中插入相应的指令(实现开始命令和结束命令)。

在以下描述中,参考形成该描述的一部分的附图,并且其中通过图示的方式示出了特定的示例性实现方式。在不脱离本公开内容的范围的情况下,可以作出其它实现方式。

附图说明

图1是示例性计算机的框图。

图2是对多个并发线程的执行的说明图。

图3是包括开始命令和结束命令的指令的说明性示例。

图4是描述执行测量指令序列的执行时间的计算机程序的示例性实现方式的流程图。

图5是具有指示指令序列的标签的伪源代码的说明性示例。

图6是描述处理源代码的示例性实现方式的流程图。

具体实施方式

图1示出了可以实现本文所描述的技术的计算机的示例。这仅是计算机的一个示例,而并非旨在表明关于这种计算机的使用或功能的范围的任何限制。

计算机可以是各种通用或专用计算硬件配置中的任何一种。可以使用的计算机类型的一些示例包括但不限于个人计算机、游戏控制台、机顶盒、手持或膝上型设备(例如,媒体播放器、笔记本计算机、平板计算机、蜂窝电话(包括但不限于“智能”电话)、个人数据助理、录音机)、服务器计算机、多处理器系统、基于微处理器的系统、可编程消费电子产品、联网个人计算机、小型计算机、大型计算机、以及包括任何上述类型的计算机或设备的分布式计算环境等等。

参考图1,计算机1000包括处理系统,该处理系统包括至少一个处理单元1002和存储器1004。该计算机可以具有多个处理单元1002和实现存储器1004的多个设备。处理单元1002包括作为逻辑电路的处理器,该逻辑电路对指令进行响应并处理以提供计算机的功能。处理单元可以包括一个或多个处理核(未示出),这些处理核是相同逻辑电路内可以彼此独立地操作的处理器。通常,计算机中的各处理单元中的一个处理单元被指定为主处理单元,通常称为中央处理单元(cpu)。另外的协处理单元(例如图形处理单元(gpu))也可以存在于计算机中。协处理单元包括执行补充中央处理单元的操作(例如但不限于图形操作和信号处理操作)的处理器。处理单元对指令的执行通常由一个或多个系统定时器来控制,这些系统定时器通常从系统时钟推导出。时钟是具有频率的信号;定时器提供时间作为输出值,该输出值根据时钟信号的频率来增加或减小。

存储器1004可以包括易失性计算机存储设备(例如动态随机存取存储器(dram)或其它随机存取存储器设备)、以及非易失性计算机存储设备(例如只读存储器、闪存等等)、或两者的某种组合。非易失性计算机存储设备是其内容在移除电源时不会丢失的计算机存储设备。其它计算机存储设备(例如专用存储器或寄存器)也可以存在于该一个或多个处理器中。计算机1000可以包括另外的计算机存储设备(无论是可移动的还是不可移动的),例如但不限于磁性记录或光学记录的盘或带。这种另外的计算机存储设备在图1中由可移动存储设备1008和不可移动存储设备1010示出。这种计算机存储设备1008和1010通常是非易失性存储设备。图1中的各种组件通常通过互连机制(例如一个或多个总线1030)来互连。

计算机存储设备是其中数据可以由计算机存储在可寻址物理存储位置中并从可寻址物理存储位置取回数据的任何设备。因此,计算机存储设备可以是易失性或非易失性存储器、或者可移动或不可移动存储设备。存储器1004、可移动存储设备1008和不可移动存储设备1010都是计算机存储设备的示例。计算机存储设备的一些示例是ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光学或磁光记录存储设备、盒式磁带、磁带、磁盘存储或其它磁存储设备。计算机存储设备和通信介质是互斥的介质类别,并且不同于在通信介质上传播的信号。

计算机1000还可以包括允许该计算机在通信介质上与其它设备进行通信的通信连接1012。通信介质通常通过在有线或无线物质上传播经调制数据信号(例如载波或其它传输机制),在该物质上发送计算机程序指令、数据结构、程序模块或其它数据。术语“经调制数据信号”表示如下信号,该信号的一个或多个特性以将信息编码到该信号中的方式来设置或改变,从而改变该信号的接收设备的配置或状态。举例而言而非限制,通信介质包括有线介质(例如传播电信号的金属或其它导电线或者传播光信号的光纤)和无线介质(例如允许传播信号(例如声学、电磁、电、光、红外、射频和其它信号)的任何无线通信介质)。

通信连接1012是与通信介质对接以在通信介质上发送数据并从通信介质接收数据的设备,例如有线网络接口、无线网络接口、射频收发机(例如,wifi1070、蜂窝1074、长期演进(lte)或蓝牙1072等)、收发机、导航收发机(例如,全球定位系统(gps)或全球导航卫星系统(glonass)等等)、网络接口设备1076(例如以太网等等)、或其它设备。

计算机1000可以具有各种输入设备1014,例如指针设备、键盘、基于触摸的输入设备、笔、相机、麦克风、传感器(例如加速度计、温度计、光传感器等)、等等。计算机1000可以具有各种输出设备1016,例如显示器、扬声器等等。此类设备在本领域中是公知的,并且因此在这里不需要详细讨论。各种输入和输出设备可以实现自然用户界面(nui),nui是使得用户能够以“自然”方式与设备交互、免受输入设备(例如鼠标、键盘等、遥控器等等)施加的人为约束的任何接口技术。

nui方法的示例包括依赖于语音识别、触摸和手写笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、声音和语音、视觉、触摸、手势、以及机器智能的那些nui方法,并且可以包括使用触敏显示器、声音和语音识别、意图和目标理解、使用深度相机(例如立体相机系统、红外相机系统和其它相机系统、以及这些的组合)的运动手势检测、使用加速度计或陀螺仪的运动手势检测、面部识别、三维显示、头部、眼睛和注视跟踪、沉浸式增强现实和虚拟现实系统,所有这些都提供更自然的界面,以及用于使用电场感测电极来感测大脑活动的技术(eeg和相关方法)。

各种计算机存储设备1008和1010、通信连接1012、输出设备1016和输入设备1014可以与计算机的其余部分集成在壳体内,或者可以通过计算机上的各种输入/输出接口设备来连接,在这种情况下,附图标记1008、1010、1012、1014和1016可以根据具体情况指示用于连接到设备的接口或设备本身。

计算机通常包括操作系统,该操作系统是对由计算机上运行的应用访问计算机的各种资源进行管理的计算机程序。可以存在多个应用。各种资源包括存储器、存储设备、输入设备和输出设备,例如图1中所示出的显示设备和输入设备。为了管理对存储在非易失性计算机存储设备中的数据的访问,计算机通常还包括维护数据文件的文件系统。文件是被命名的逻辑构造,该逻辑构造由文件系统来定义和实现,以将数据的逻辑记录的名称和序列映射到计算机存储设备上的可寻址物理位置。因此,文件系统向在计算机上运行的应用隐藏数据的物理位置,从而允许应用使用文件名和由文件系统定义的命令来访问文件中的数据。文件系统提供基本文件操作,例如创建文件、打开文件、写入文件、读取文件和关闭文件。

图2到图6中的各种模块、工具、或应用、和数据结构和流程图、以及图1中的计算机上的任何操作系统、文件系统和应用可以使用一个或多个计算机的一个或多个处理单元来实现,这些计算机具有由该一个或多个处理单元处理的一个或多个计算机程序。计算机程序包括计算机可执行指令和/或计算机解释指令(例如程序模块),这些指令由计算机中的一个或多个处理单元来处理。通常,这种指令定义例程、程序、对象、组件、数据结构等等,这些指令在由处理单元处理时指示或配置计算机以对数据执行操作、或者配置计算机以实现各种组件、模块或数据结构。

替代地或另外地,本文所描述的各个组件中的一个或多个组件的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(fpga)、专用集成电路(asic)、程序专用标准产品(assp)、片上系统系统(soc)、复杂可编程逻辑器件(cpld)等等。

给定如图1中所示出的这种计算机,该计算机可以包括处理单元,该处理单元允许并发执行计算机程序的不同独立部分或由不同计算机程序来进行并发执行。这种并发执行可以通过在相同处理单元的不同核上执行、通过在多处理器系统中的不同处理单元上执行、和/或通过执行不同处理器(例如中央处理单元和图形处理单元)上的处理来支持。

本文为了简单起见,计算机程序的独立部分在本文中被称为线程。在下面的示例中,在并发执行两个线程的上下文中描述了系统的示例性操作。在这些示例中,这两个线程可以是计算机程序的两个不同的独立部分、计算机程序的相同独立部分的两个不同实例、或者两个不同计算机程序的两个独立部分。此外,在实践中,可以针对不同操作系统和/或计算机而以不同方式使用术语线程。因此,本文的术语“线程”旨在表示可以由操作系统独立管理的经编程指令序列,并且针对该线程可以以如下方式在存储器中分配线程本地存储,在该线程的执行期间仅该线程可访问线程本地存储。这种线程本地存储通常可以由应用程序通过由操作系统提供的应用编程接口或通过由编程语言提供的构造来分配。

相应地,转到图2,示出了正整数n个并发线程200。在执行期间,每个线程200还可以访问驱动处理器的定时的高性能系统定时器202。线程200可以利用单个指令以微秒或更佳的精度对系统计时器202进行采样。线程在线程本地存储中分配定时缓冲区204,在定时缓冲区204中存储用于线程的定时数据206,例如指令序列的标识符和时间。

现在转到图3,对于线程内要测量执行时间的任何指令序列,例如在300处所示出的,指令序列具有标识符306并且包括两个命令,本文中被称为开始命令302和结束命令304。开始命令是在要测量的指令序列的开始处的指令;结束命令是在要测量的指令序列的结尾处的指令。开始命令对系统定时器进行采样以获得开始时间,并将标识符306和开始时间存储在线程本地存储中的定时缓冲区中。结束命令对系统计时器进行采样以获得结束时间,并对定时缓冲区中的相应标识符306的数据进行更新,以指示用于执行指令序列所经过的时间。可以这样指示所经过的时间,例如,通过存储开始时间和结束时间、或者通过计算和存储开始时间与结束时间之间的差异。开始命令和结束命令均可以实现为单个可执行指令。

图3提供了具有开始命令302和结束命令304的指令序列300的说明性伪代码。在任何给定线程内可以存在具有不同标识符306的多个此类指令序列300。该线程还可以包括指令308,当执行该指令时,线程在线程本地存储(tls)中分配定时缓冲区。

现在转到图4,现在将描述执行具有测量执行时间的线程的计算机程序的示例性实现方式的流程图。

该示例示出了当计算机程序包括测量指令序列的执行时间的线程时该计算机程序如何操作。虽然该说明包括对单个线程和单个指令序列的讨论,但是应该理解,线程可以包括可以测量执行时间的多个不同指令序列。这种计算机程序可以包括并发地执行的多个线程,其中每个线程可以包括可以测量执行时间的一个或多个指令序列。应该理解,多个计算机程序也可以并发地执行,其中每个计算机程序具有一个或多个线程,这些线程包括测量执行时间的一个或多个指令序列。

如图4中所示出的,发起对计算机程序的执行400。在执行计算机程序期间的某个时刻,发起对计算机程序的线程的执行402。在发起对线程的执行之后,线程在其线程本地存储中分配404定时缓冲区。随着线程执行,遇到并执行指令序列的开始命令和结束命令406,从而使得相应的定时数据被存储在定时缓冲区中。在某个时刻,线程终止408并且计算机程序终止410。无论是在线程执行期间(例如在步骤406与408之间)、在步骤408中线程终止时、在计算机程序执行期间(例如在步骤408与410之间)、在步骤410中终止计算机程序时、还是在某个其它指定事件时,都可以收集和分析定时缓冲区中的数据,无论是由线程、计算机程序、操作系统、还是在计算机上执行的其它过程来收集和分析。

利用在计算机系统中提供的这种能力,还可以编写任何计算机程序以允许针对计算机程序的线程中的任何指令序列测量执行时间。在一种实现方式中,开发者可以利用标识符在源代码中插入要测量执行时间的任何指令序列的开始命令和结束命令。

在现在结合图5和图6所描述的一种实现方式中,计算机程序的源代码可以利用指示要测量的指令序列中的开始点、以及要测量的指令序列中的结束点的关键字来注释。编译器或预编译器可以处理此类关键字,以便将标识符分配给相应的指令序列,并在计算机程序中插入相应的指令(实现开始命令和结束命令)。

图5示出了要测量指令序列的执行时间的伪源代码的说明性示例。图5中的代码包括被标记为a、b和c的三个指令序列。序列a包括数量x的指令;序列b包括数量y的指令;序列c包括数量z的指令。应该理解,x、y和z可以是任意数量的指令,并且由这些指令序列执行的操作可以是任意的。然而,应该理解,开发者可能仅标记要测量的执行时间具有某种重要性的指令序列。

指令序列由一个或多个标签界定,例如,在该示例中仅出于说明的目的,用于标记指令序列的开始的“<测量此>(<measurethis>)”标签(502)以及用于标记指令序列的结束的“</测量此>(</measurethis>)”标签(504)。在该示例中仅出于说明的目的,以标记标签(例如xml标签)的形式来示出标签。对标签的形式和内容的选择可以是任意的,只要标签不是用于源代码的计算机编程语言中的保留关键字或符号,并且另外是唯一的。可以使用不同的开始和结束标签,或者可以使用单个标签来指定开始和结束,其中使用上下文来区分开始和结束。标签可以具有语法,以使得它们可以包括另外的数据。

给定包括此类标签的源代码,例如可以由预编译器或编译器来处理源代码以识别标签,并且因此识别要测量执行时间的指令序列。可以通过这种处理来向这样识别的每个指令序列分配唯一标识符。因此,源代码的开发者可以简单地利用关键字来标记指令序列,而不用关注向指令序列分配唯一标识符。使用预编译器实现方式,可以在源代码中插入源代码指令来代替标签,以便提供用于捕获执行时间数据的开始命令和结束命令。使用编译器实现方式,可以将此类标签转换为用于开始和结束命令的可执行指令。

图6是描述对诸如图5中所标记的源代码进行处理的示例性实现方式的流程图。可以编写预编译器计算机程序来实现该处理,以便在编译已标记的源代码之前对其进行修改。这种预编译器可以在源代码被检入源代码管理系统时、在编译时、或在由开发者选择的任何其它时间执行。通常,该过程涉及识别所有开始和结束标签对,将这些标签中的每一个与唯一标识符进行关联,并利用包括标签的唯一标识符的相应开始命令和结束命令来替换这些标签中的每一个。因此,从计算机程序中读取下一指令600。如果该指令既不是如在602处确定的开始标签,也不是如在604处确定的结束标签,则可以以其它方式对其进行处理(其可以是无处理),如在606处所示出的。如果该指令是如在602处所确定的开始标签,则生成下一唯一标识符608。例如,唯一标识符可以是初始为零(0)的数字,并且在遇到每个开始标签时增加。随后利用该唯一标识符将开始命令插入到计算机程序中610,并且可以读取下一指令600。如果该指令是如在604处确定的结束标签,则使用当前唯一标识符将结束命令插入到计算机程序中。

利用可以执行多个并发线程的计算机系统,可以使用这些技术以无锁方式测量并发线程中的指令序列的执行时间,因为每个线程访问其自己的线程本地存储以存储定时数据。此外,可以以微秒或更佳的精度来测量执行时间,因为系统定时器仅在执行正被测量定时的指令序列的开始和结束时被采样。另外,通过使用单个可执行指令来捕获开始时间和结束时间、并通过在线程本地存储中使用相对小的定时缓冲区,可以在对性能影响最小的情况下测量执行时间。使用这种技术,还可以编写任何计算机程序以允许针对计算机程序的线程中的任何指令序列测量执行时间。

因此,在一个方面中,一种计算机包括处理系统,所述处理系统包括处理单元和存储器并且具有系统定时器。对于将由所述处理系统执行的第一线程,所述处理系统在所述存储器中的第一线程本地存储中分配第一缓冲区。对于将由所述处理系统并发地执行的并且与所述第一线程不同的第二线程,所述处理系统与所述第一缓冲区分离并且在所述存储器中的第二线程本地存储中分配第二缓冲区。响应于执行在用于所述第一线程的第一指令序列的开始处的第一开始命令,所述处理系统在所述第一缓冲区中存储所述第一指令序列的标识符以及在执行所述第一开始命令时来自所述系统定时器的第一开始时间。响应于执行在用于所述第一线程的所述第一指令序列的结尾处的第一结束命令,所述处理系统在所述第一缓冲区中并且与所述第一指令序列的标识符相关联地存储指示所述第一缓冲区中所存储的所述第一开始时间与在执行所述第一结束命令时来自所述系统定时器的第一结束时间之间所经过的时间的数据。响应于执行在所述第二线程中的第二指令序列的开始处的第二开始命令,所述处理系统在所述第二缓冲区中存储所述第二指令序列的标识符以及在执行所述第二开始命令时来自所述系统定时器的第二开始时间。响应于执行在用于所述第二线程的所述第二指令序列的结尾处的第二结束命令,所述处理系统在所述第二缓冲区中并且与所述第二指令序列的标识符相关联地存储指示所述第二缓冲区中所存储的所述第二开始时间与在执行所述第二结束命令时来自所述系统定时器的第二结束时间之间所经过的时间的数据。

在另一方面中,一种由在计算机的处理系统上执行的计算机程序执行的计算机实现的过程,所述计算机包括处理系统,所述处理系统具有系统定时器以及由所述处理系统执行的线程可访问的存储器,所述过程包括:对于将由所述处理系统执行的第一线程,在所述存储器中的第一线程本地存储中分配第一缓冲区。对于将由所述处理系统并发地执行的并且与所述第一线程不同的第二线程,与所述第一缓冲区分离并且在所述存储器中的第二线程本地存储中分配第二缓冲区。响应于执行在用于所述第一线程的第一指令序列的开始处的第一开始命令,在所述第一缓冲区中存储所述第一指令序列的标识符以及在执行所述第一开始命令时来自所述系统定时器的第一开始时间。响应于执行在用于所述第一线程的所述第一指令序列的结尾处的第一结束命令,在所述第一缓冲区中并且与所述第一指令序列的标识符相关联地存储指示所述第一缓冲区中所存储的所述第一开始时间与在执行所述第一结束命令时来自所述系统定时器的第一结束时间之间所经过的时间的数据。响应于执行在所述第二线程中的第二指令序列的开始处的第二开始命令,在所述第二缓冲区中存储所述第二指令序列的标识符以及在执行所述第二开始命令时来自所述系统定时器的第二开始时间。响应于执行在用于所述第二线程的所述第二指令序列的结尾处的第二结束命令,在所述第二缓冲区中并且与所述第二指令序列的标识符相关联地存储指示所述第二缓冲区中所存储的所述第二开始时间与在执行所述第二结束命令时来自所述系统定时器的第二结束时间之间所经过的时间的数据。

在另一方面中,一种计算机包括:用于对于第一线程,在存储器中的第一线程本地存储中分配第一缓冲区的单元,以及用于对于第二并发线程,在存储器中的第二线程本地存储中分配第二缓冲区的单元;用于响应于执行在所述第一线程的开始处的开始命令,在所述第一缓冲区中存储来自所述系统定时器的开始时间的单元;用于响应于执行在所述第二线程的开始处的开始命令,在所述第二缓冲区中存储来自所述系统定时器的开始时间的单元;用于在所述第一缓冲区中存储指示所述第一缓冲区中所存储的所述第一开始时间与在执行第一结束命令时来自所述系统定时器的第一结束时间之间所经过的时间的数据的单元;用于在所述第二缓冲区中存储指示所述第二缓冲区中所存储的所述第二开始时间与在执行第二结束命令时来自所述系统定时器的第二结束时间之间所经过的时间的数据的单元。

在另一方面中,一种计算机包括:用于处理源代码的单元,所述源代码包括经标记的指令序列,以在经标记的指令序列的开始处插入开始命令并在经标记的指令序列的结尾处插入结束命令,以使得当执行从该源代码推导出的可执行代码时,执行所述开始命令使得在线程本地存储中的缓冲区中存储所述指令序列的标识符以及在执行所述开始命令时来自所述系统定时器的开始时间,并且执行所述结束命令使得在所述缓冲区中并且与所述指令序列的标识符相关联地存储指示所述缓冲区中所存储的所述开始时间与在执行所述结束命令时来自所述系统定时器的结束时间之间所经过的时间的数据。

在另一方面中,一种计算机实现的过程对源代码进行处理,所述源代码包括经标记的指令序列,以在经标记的指令序列的开始处插入开始命令并在经标记的指令序列的结尾处插入结束命令,以使得当执行从该源代码推导出的可执行代码时,执行所述开始命令使得在线程本地存储中的缓冲区中存储所述指令序列的标识符以及在执行所述开始命令时来自所述系统定时器的开始时间,并且执行所述结束命令使得在所述缓冲区中并且与所述指令序列的标识符相关联地存储指示所述缓冲区中所存储的所述开始时间与在执行所述结束命令时来自所述系统定时器的结束时间之间所经过的时间的数据。

在前述方面中的任何方面中,所述第一线程和所述第二线程可以由不同的处理单元执行。例如,所述第一线程可以由所述处理系统的第一处理核执行,并且所述第二线程可以由所述处理系统的与所述第一处理核不同的第二处理核执行。举另一个示例,所述第一线程可以由中央处理单元执行,并且所述第二线程可以由图形处理单元执行。

在前述方面中的任何方面中,所述第一线程和所述第二线程是计算机程序指令的不同序列。例如,所述第一线程和所述第二线程可以是相同计算机程序的不同线程。举另一个示例,所述第一线程和所述第二线程可以是不同计算机程序的线程。

在前述方面中的任何方面中,所述开始命令在单个可执行指令中对所述系统定时器进行采样并将当前时间与所述标识符一起存储在所述定时缓冲区中。

在前述方面中的任何方面中,所述结束命令在单个可执行指令中对所述系统定时器进行采样并将指示所经过的时间的数据存储在所述定时缓冲区中。

在另一方面中,一种制品包括至少一个计算机存储设备、以及存储在所述至少一个计算机存储设备上的计算机程序指令。所述计算机程序指令在由计算机的处理系统(该处理系统包括一个或多个处理单元以及由该处理系统执行的线程可访问的存储器,并具有系统定时器)处理时如前述方面中的任何方面中所阐述地来配置该计算机和/或执行如前述方面中的任何方面中所阐述的过程。

前述方面中的任何方面可以体现为计算机系统、体现为此类计算机系统的任何单独组件、体现为由此类计算机系统或此类计算机系统的任何单独组件执行的过程、或体现为包括其中存储有计算机程序指令的计算机存储的制品,计算机程序指令在由一个或多个计算机处理时将该一个或多个计算机配置为提供此类计算机系统或此类计算机系统的任何单独组件。

应该理解,所附权利要求中限定的主题内容不必限制于上述具体的实现方式。上述具体实现方式仅是作为示例来公开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1