一种CPU运行时间的计算方法和装置与流程

文档序号:12363398阅读:573来源:国知局
一种CPU运行时间的计算方法和装置与流程

本发明涉及计算机技术领域,特别涉及一种CPU运行时间的计算方法和装置。



背景技术:

无论是Linux还是Windows操作系统,提供了很多查看CPU工作参数的程序或命令,通过它们可以获取CPU的工作状态。获取的这些CPU工作参数,可以用于硬件信息监控或对系统性能的一些测试中,例如,该CPU工作参数可以包括CPU运行时间。

现有技术中,一般由操作系统提供CPU运行时间。由于现有技术中CPU运行之后,操作系统才会运行,因此,现有技术获得的CPU运行时间的准确度较低。



技术实现要素:

本发明实施例提供了一种高精度CPU运行时间的计算方法和装置,提高了CPU运行时间的准确度。

第一方面,本发明实施例提供了一种CPU运行时间的计算方法,包括:

向目标CPU发送第一获取指令,所述第一获取指令用于获取所述目标CPU中时间标签计数器对应的记录值;

接收所述目标CPU反馈的当前记录值;

根据所述当前记录值,计算所述目标CPU对应的运行时间。

优选地,

进一步包括:向所述目标CPU发送第二获取指令,所述第二获取指令用于获取所述目标CPU对应的主频数;

所述根据所述当前记录值,计算所述目标CPU对应的运行时间,包括:确定所述当前记录值对应的计数个数,以及每一个计数对应的属性信息;根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间;

所述属性信息包括:每一个当前计数对应寄存器的全部位数、对应寄存器在所述时间标签计数器中对应的位数、以及每一个计数对应的进制属性。

优选地,

所述根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间,包括:

在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为32位、所述第一寄存器在所述时间标签计数器中对应的位数为高32位、所述第一个计数对应的进制属性为二进制、以及确定第二个计数对应第二寄存器的全部位数为32位、所述第二寄存器在所述时间标签计数器中对应的位数为低32位、所述第二个计数对应的进制属性为二进制时,利用第一公式计算所述运行时间;

所述第一公式包括:

<mrow> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>32</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>1</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>1</mn> </msub> </mfrac> </mrow>

其中,t1用于表征所述运行时间,x1用于表征所述第一个计数对应的十进制数值,y1用于表征所述第二个计数对应的十进制数值,z1用于表征所述主频数。

优选地,

所述根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间,包括:

在确定所述当前记录值对应的计数个数为一个、且确定所述计数对应寄存器的全部位数16位、所述寄存器在所述时间标签计数器中对应的位数为16位、所述计数对应的进制属性为十进制,利用第二公式计算所述运行时间;

所述第二公式包括:

<mrow> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>=</mo> <mfrac> <msub> <mi>y</mi> <mn>2</mn> </msub> <msub> <mi>z</mi> <mn>2</mn> </msub> </mfrac> </mrow>

其中,t2用于表征所述运行时间,y2用于表征所述计数,z2用于表征所述主频数。

优选地,

所述根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间,包括:

在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为16位、所述第一寄存器在所述时间标签计数器中对应的位数为高16位、所述第一个计数对应的进制属性为二进制、以及确定第二个计数对应第二寄存器的全部位数为16位、所述第二寄存器在所述时间标签计数器中对应的位数为低16位、所述第二个计数对应的进制属性为二进制时,利用第三公式计算所述运行时间;

所述第三公式包括:

<mrow> <msub> <mi>t</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>3</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>16</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>3</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>3</mn> </msub> </mfrac> </mrow>

其中,t3用于表征所述运行时间,x3用于表征所述第一个计数对应的十进制数值,y3用于表征所述第二个计数对应的十进制数值,z3用于表征所述主频数。

第二方面,本发明实施例提供了一种CPU运行时间的计算装置,其特征在于,包括:

第一发送模块,用于向目标CPU发送第一获取指令,所述第一获取指令用于获取所述目标CPU中时间标签计数器对应的记录值;

接收模块,用于接收所述目标CPU反馈的当前记录值;

计算模块,用于根据所述当前记录值,计算所述目标CPU对应的运行时间。

优选地,

进一步包括:

第二发送模块,用于向所述目标CPU发送第二获取指令,所述第二获取指令用于获取所述目标CPU对应的主频数;

所述计算模块,包括:

确定单元,用于确定所述当前记录值对应的计数个数,以及每一个计数对应的属性信息;

计算单元,用于根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间;

所述属性信息包括:每一个当前计数对应寄存器的全部位数、对应寄存器在所述时间标签计数器中对应的位数、以及每一个计数对应的进制属性。

优选地,

所述计算单元,包括:

第一确定子单元,用于在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为32位、所述第一寄存器在所述时间标签计数器中对应的位数为高32位、所述第一个计数对应的进制属性为二进制;以及确定第二个计数对应第二寄存器的全部位数为32位、所述第二寄存器在所述时间标签计数器中对应的位数为低32位、所述第二个计数对应的进制属性为二进制时,触发第一计算子单元执行相应操作;

所述第一计算子单元,用于利用第一公式计算所述运行时间;

所述第一公式包括:

<mrow> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>32</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>1</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>1</mn> </msub> </mfrac> </mrow>

其中,t1用于表征所述运行时间,x1用于表征所述第一个计数对应的十进制数值,y1用于表征所述第二个计数对应的十进制数值,z1用于表征所述主频数。

优选地,

所述计算单元,包括:

第二确定子单元,用于在确定所述当前记录值对应的计数个数为一个、且确定所述计数对应寄存器的全部位数16位、所述寄存器在所述时间标签计数器中对应的位数为16位、所述计数对应的进制属性为十进制时,触发第二计算子单元执行相应操作;

所述第二计算子单元,用于利用第二公式计算所述运行时间;

所述第二公式包括:

<mrow> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>=</mo> <mfrac> <msub> <mi>y</mi> <mn>2</mn> </msub> <msub> <mi>z</mi> <mn>2</mn> </msub> </mfrac> </mrow>

其中,t2用于表征所述运行时间,y2用于表征所述计数,z2用于表征所述主频数。

优选地,

所述计算单元,包括:

第三确定子单元,用于在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为16位、所述第一寄存器在所述时间标签计数器中对应的位数为高16位、所述第一个计数对应的进制属性为二进制;以及确定第二个计数对应第二寄存器的全部位数为16位、所述第二寄存器在所述时间标签计数器中对应的位数为低16位、所述第二个计数对应的进制属性为二进制时,触发第三计算子单元执行相应操作;

所述第三计算子单元,用于利用第三公式计算所述运行时间;

所述第三公式包括:

<mrow> <msub> <mi>t</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>3</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>16</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>3</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>3</mn> </msub> </mfrac> </mrow>

其中,t3用于表征所述运行时间,x3用于表征所述第一个计数对应的十进制数值,y3用于表征所述第二个计数对应的十进制数值,z3用于表征所述主频数。

本发明实施例提供了一种CPU运行时间的计算方法和装置,通过向目标CPU发送第一获取指令,获取所述目标CPU中时间标签计数器对应的记录值,接收所述目标CPU反馈的当前记录值,根据所述当前记录值,计算所述目标CPU对应的运行时间。由于CPU中时间标签计数器记录的值是从CPU上电开始记录的,相比于现有技术中由操作系统提供的运行时间是从操作系统登录成功开始计时的,可以提高CPU运行时间的准确度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例提供的一种CPU运行时间的计算方法流程图;

图2是本发明一个实施例提供的另一种CPU运行时间的计算方法流程图;

图3是本发明一个实施例提供的一种CPU运行时间的计算装置结构图;

图4是本发明另一个实施例提供的另一种CPU运行时间的计算装置结构图;

图5是本发明又一个实施例提供的又一种CPU运行时间的计算装置结构图;

图6是本发明又一个实施例提供的再一种CPU运行时间的计算装置结构图;

图7是本发明另一个实施例提供的一种CPU运行时间的计算装置结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种CPU运行时间的计算方法,该方法可以包括以下步骤:

步骤101:向目标CPU发送第一获取指令,所述第一获取指令用于获取所述目标CPU中时间标签计数器对应的记录值;

步骤102:接收所述目标CPU反馈的当前记录值;

步骤103:根据所述当前记录值,计算所述目标CPU对应的运行时间。

本发明实施例提供了一种CPU运行时间的计算方法,通过向目标CPU发送第一获取指令,获取所述目标CPU中时间标签计数器对应的记录值,接收所述目标CPU反馈的当前记录值,根据所述当前记录值,计算所述目标CPU对应的运行时间。由于CPU中时间标签计数器记录的值是从CPU上电开始记录的,相比于现有技术中由操作系统提供的运行时间是从操作系统登录成功开始计时的,可以提高CPU运行时间的准确度。

在本发明的一个实施例中,CPU反馈的时间标签计数器的当前记录值,对应为记录的时钟周期个数,因此,在根据该当前记录值计算CPU运行时间时,需要获取目标CPU对应的主频数,该方法进一步包括:向目标CPU发送第二获取指令,用于获取目标CPU对应的主频数。步骤103可以包括:确定当前记录值对应的计数个数,以及每一个计数对应的属性信息;根据每一个计数、每一个计数对应的属性信息、以及主频数,计算CPU运行时间;属性信息包括:每一个当前计数对应寄存器的全部位数、对应寄存器在时间标签计数器中对应的位数、以及每一个计数对应的进制属性。

其中,目标CPU对应的主频数是目标CPU的一项基本参数,可以通过查看该目标CPU的出厂设置来获得。例如,某一目标CPU的主频数为2.5GHz。可以将目标CPU的主频数预先存储在存储器中,然后通过第二获取指令对其进行调用。

计数个数与存储记录值的寄存器个数相对应,每一个寄存器存储有至多一个计数,每一个计数的属性与寄存器的属性相关联。例如,记录值完全存储于一个EAX寄存器中,该记录值对应的计数个数为1个,由于EAX寄存器是一种32位寄存器,只能存储不高于32位的计数,因此,当前计数对应寄存器的全部位数为32,在时间标签计数器中对应的位数为低32位,并且,计数在寄存器中的存储形式为二进制。

该实施例提供了获取目标CPU对应的主频数的方法,以及如何利用计数及其属性计算目标CPU的运行时间,为目标CPU运行时间的计算提供了基础。

在本发明的一个实施例中,针对寄存器属性的不同,为了计算CPU运行时间,该方法还可以包括:在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为32位、所述第一寄存器在所述时间标签计数器中对应的位数为高32位、所述第一个计数对应的进制属性为二进制、以及确定第二个计数对应第二寄存器的全部位数为32位、所述第二寄存器在所述时间标签计数器中对应的位数为低32位、所述第二个计数对应的进制属性为二进制时,利用公式(1)计算所述运行时间;

所述公式(1)包括:

<mrow> <msub> <mi>t</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>1</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>32</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>1</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>1</mn> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中,t1用于表征所述运行时间,x1用于表征所述第一个计数对应的十进制数值,y1用于表征所述第二个计数对应的十进制数值,z1用于表征所述主频数。

例如,第一个计数为0000 0000 0000 0000 0000 0000 0000 0001,那么x1为1,第二个计数为0000 0000 0000 0000 0000 0000 0000 0001,那么y1为1,z1为1.0×109Hz,根据上述公式(1),可以计算出t1为由于分子对应109,那么计算出的时间可以精确到纳秒。

在本发明的一个实施例中,针对寄存器属性的不同,为了计算CPU运行时间,该方法还可以包括:

在确定所述当前记录值对应的计数个数为一个、且确定所述计数对应寄存器的全部位数16位、所述寄存器在所述时间标签计数器中对应的位数为16位、所述计数对应的进制属性为十进制,利用公式(2)计算所述运行时间;

所述公式(2)包括:

<mrow> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>=</mo> <mfrac> <msub> <mi>y</mi> <mn>2</mn> </msub> <msub> <mi>z</mi> <mn>2</mn> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

其中,t2用于表征所述运行时间,y2用于表征所述计数,z2用于表征所述主频数。

例如,该计数y2为0000 0000 0000 0001,z2为1.0×109Hz,根据上述公式(2),可以计算出t2为1.0×10-9s,精确到纳秒。

在本发明的一个实施例中,针对寄存器属性的不同,为了计算CPU运行时间,该方法还可以包括:

在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为16位、所述第一寄存器在所述时间标签计数器中对应的位数为高16位、所述第一个计数对应的进制属性为二进制、以及确定第二个计数对应第二寄存器的全部位数为16位、所述第二寄存器在所述时间标签计数器中对应的位数为低16位、所述第二个计数对应的进制属性为二进制时,利用公式(3)计算所述运行时间;

所述公式(3)包括:

<mrow> <msub> <mi>t</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>3</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>16</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>3</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>3</mn> </msub> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>

其中,t3用于表征所述运行时间,x3用于表征所述第一个计数对应的十进制数值,y3用于表征所述第二个计数对应的十进制数值,z3用于表征所述主频数。

例如,第一个计数为0000 0000 0000 0011,那么x3为3,第二个计数为0000 0000 0000 0001,那么y3为1,z3为1.0×109Hz,根据上述公式(3),可以计算出t3为由于分子对应109,那么计算出的时间可以精确到纳秒。

需要说明的是,CPU反馈的时间标签计数器对应的当前记录值,也可以是记录的时间段,该时间段即为CPU的运行时间,其中,该CPU运行时间对应的精度与CPU中时间标签计数器的计数精度有关。

下面以CPU中包括EDX寄存器和EAX寄存器来存储时间标签计数器记录的值,且EDX寄存器和EAX寄存器分别为32位,其中,EDX寄存器为高32位,EAX寄存器为低32位,EDX寄存器和EAX寄存器均为二进制为例,对本发明提供的一种CPU运行时间的计算方法进行详细地说明,请参考图2,本方法包括以下步骤:

步骤201:启动计算机,CPU开始上电,时间标签计数器开始计数。

当开机电源键被按下,主板加电开始,CPU开始工作,CPU中高精度的时间标签计数器以每秒增加处理器主频赫兹数的速率开始计数。该时间标签计数器在存在于Intel Pentium以上级别的CPU中,它以64位无符号整型数的格式记录了自CPU上电以来所经过的时钟周期数,这个部件可以达到纳秒级的计时精度。

步骤202:时间标签计数器的数值被存储于EDX寄存器和EAX寄存器中。

由于EDX寄存器为高32位,EAX寄存器为低32位,在存储的过程中,时间标签计数器的数值先被存储在低32位寄存器EAX中,由于EDX寄存器和EAX寄存器对应二进制,那么当EAX寄存器中的数值每一位上均为1时,若在向该低32位寄存器EAX中增加1,那么需要向高32位寄存器EDX进位,同时低32位寄存器EAX中的数值清零。

步骤203:向CPU发送第一获取指令,用于获取CPU中时间标签计数器对应的记录值,CPU将EDX寄存器记录的第一计数和EAX寄存器记录的第二计数进行反馈。

在本实施例中,时间标签计数器对应的记录值分别是被存储于EDX寄存器中的第一计数和被存储于EAX寄存器中的第二计数。通过第一获取指令获取CPU中存储于寄存器的时间标签计数器对应的记录值,并将EDX寄存器记录的第一计数和EAX寄存器记录的第二计数进行反馈。其中,第一获取指令可以包括:RDTSC指令。RDTSC指令是一条CPU指令,没有操作系统平台的限制。

步骤204:接收CPU反馈的第一计数和第二计数。

其中,该第一计数对应EDX寄存器,该第二计数对应EAX寄存器。且

例如,第一计数为0000 0000 0000 0000 0000 0000 0000 0001,第一个计数为0000 0000 0000 0000 0000 0000 0000 0001。

步骤205:向CPU发送第二获取指令,CPU根据该第二获取指令反馈CPU对应的主频数。

CPU对应的主频数是CPU的一项基本参数,可以通过查看该CPU的出厂设置来获得,并且该主频数不小于1GHz。例如,某一CPU的主频数为2.5GHz。可以将CPU的主频数预先存储在存储器中,然后通过第二获取指令对其进行调用。

步骤206:根据第一计数、第二计数、第一计数对应的属性信息、第二计数对应的属性信息、以及主频数,计算CPU运行时间。

其中,根据步骤204可知,第一计数为0000 0000 0000 0000 0000 0000 0000 0001,第一个计数为0000 0000 0000 0000 0000 0000 0000 0001。

对于第一计数对应的属性信息和第二计数对应的属性信息,至少可以根据CPU的反馈信息来获知。例如,CPU在反馈第一计数和第二计数时,可以将第一计数对应的属性信息和第二计数对应的属性信息进行同时反馈。

在本实施例中,计数对应的属性信息可以包括:该计数对应寄存器的全部位数、对应寄存器在时间标签计数器中对应的位数、以及该计数对应的进制属性。

其中,第一计数对应的属性信息可以包括:第一计数对应寄存器的全部位数为32位,对应寄存器在时间标签计数器中对应的位数为高32位,该计数对应的进制属性为二进制。

相应地,第二计数对应的属性信息可以包括:第二计数对应寄存器的全部位数为32位,对应寄存器在时间标签计数器中对应的位数为低32位,该计数对应的进制属性为二进制。

例如,CPU反馈的主频数为1.0×109Hz。

那么可以根据上述公式(1),得到:x1为1,y1为1,z1为1.0×109Hz。可以计算出t1为由于分子对应109,那么计算出的时间可以精确到纳秒。

在本实施例中,针对不同的寄存器,CPU运行时间的计算方法是不同的,因此,在计算CPU运行时间之前,需要确定寄存器的属性,以便得到准确的计算结果。另外,可以将计算得到的高精度的CPU运行时间,作为对CPU一些测试的参考值,从而可以提高CPU测试的准确度

本发明实施例提供了一种CPU运行时间的计算装置,如图3所示,包括:

第一发送模块301,用于向目标CPU发送第一获取指令,所述第一获取指令用于获取所述目标CPU中时间标签计数器对应的记录值;

接收模块302,用于接收所述目标CPU反馈的当前记录值;

计算模块303,用于根据所述当前记录值,计算所述目标CPU对应的运行时间。

在本发明的一个实施例中,如图4所示,所述装置进一步包括:

第二发送模块401,用于向所述目标CPU发送第二获取指令,所述第二获取指令用于获取所述目标CPU对应的主频数;

所述计算模块303,包括:

确定单元3031,用于确定所述当前记录值对应的计数个数,以及每一个计数对应的属性信息;

计算单元3032,用于根据每一个计数、每一个计数对应的属性信息、以及所述主频数,计算所述运行时间;

所述属性信息包括:每一个当前计数对应寄存器的全部位数、对应寄存器在所述时间标签计数器中对应的位数、以及每一个计数对应的进制属性。

在本发明的一个实施例中,如图5所示,所述计算单元3032,包括:

第一确定子单元30321,用于确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为32位、所述第一寄存器在所述时间标签计数器中对应的位数为高32位、所述第一个计数对应的进制属性为二进制;以及确定第二个计数对应第二寄存器的全部位数为32位、所述第二寄存器在所述时间标签计数器中对应的位数为低32位、所述第二个计数对应的进制属性为二进制时,触发第一计算子单元30322执行相应操作;

所述第一计算子单元30322,用于利用第一公式计算所述运行时间;

所述第一公式包括:

<mrow> <mi>t</mi> <mo>=</mo> <mfrac> <mrow> <mi>x</mi> <mo>&times;</mo> <msup> <mn>2</mn> <mn>32</mn> </msup> <mo>+</mo> <mi>y</mi> </mrow> <mi>z</mi> </mfrac> </mrow>

其中,t用于表征所述运行时间,x用于表征所述第一个计数对应的十进制数值,y用于表征所述第二个计数对应的十进制数值,z用于表征所述主频数。

在本发明的一个实施例中,如图6所示,所述计算单元3032,包括:

第二确定子单元30323,用于在确定所述当前记录值对应的计数个数为一个、且确定所述计数对应寄存器的全部位数16位、所述寄存器在所述时间标签计数器中对应的位数为16位、所述计数对应的进制属性为十进制,触发第二计算子单元30324执行相应操作;

所述第二计算子单元30324,用于利用第二公式计算所述运行时间;

所述第二公式包括:

<mrow> <msub> <mi>t</mi> <mn>2</mn> </msub> <mo>=</mo> <mfrac> <msub> <mi>y</mi> <mn>2</mn> </msub> <msub> <mi>z</mi> <mn>2</mn> </msub> </mfrac> </mrow>

其中,t2用于表征所述运行时间,y2用于表征所述计数,z2用于表征所述主频数。

在本发明的一个实施例中,如图7所示,所述计算单元3032,包括:

第三确定子单元30325,用于在确定所述当前记录值对应的计数个数为两个、且确定第一个计数对应第一寄存器的全部位数为16位、所述第一寄存器在所述时间标签计数器中对应的位数为高16位、所述第一个计数对应的进制属性为二进制;以及确定第二个计数对应第二寄存器的全部位数为16位、所述第二寄存器在所述时间标签计数器中对应的位数为低16位、所述第二个计数对应的进制属性为二进制时,触发第三计算子单元30326执行相应操作;

所述第三计算子单元30326,用于利用第三公式计算所述运行时间;

所述第三公式包括:

<mrow> <msub> <mi>t</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mrow> <msub> <mi>x</mi> <mn>3</mn> </msub> <mo>&times;</mo> <msup> <mn>2</mn> <mn>16</mn> </msup> <mo>+</mo> <msub> <mi>y</mi> <mn>3</mn> </msub> </mrow> <msub> <mi>z</mi> <mn>3</mn> </msub> </mfrac> </mrow>

其中,t3用于表征所述运行时间,x3用于表征所述第一个计数对应的十进制数值,y3用于表征所述第二个计数对应的十进制数值,z3用于表征所述主频数。

综上,本发明各个实施例至少具有如下效果:

1、在本发明实施例中,通过向目标CPU发送第一获取指令,获取所述目标CPU中时间标签计数器对应的记录值,接收所述目标CPU反馈的当前记录值,根据所述当前记录值,计算所述目标CPU对应的运行时间。由于CPU中时间标签计数器记录的值是从CPU上电开始记录的,相比于现有技术中由操作系统提供的运行时间是从操作系统登录成功开始计时的,可以提高CPU运行时间的准确度。

2、在本发明实施例中,在CPU反馈的计数个数不同、每一个计数对应的属性信息不同时,计算CPU运行时间的方式也不相同,在对CPU运行时间进行计算时,由于计算结果与CPU主频数有关,若CPU主频数越大,那么计算出的运行时间的精度会越高,在一般情况下,CPU主频数不小于1GHz,那么可以获取到纳秒级精度的CPU运行时间。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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