发明内容
鉴于上述问题,提出了本发明以便解决上述中的一个或者多个问题。
本申请的申请人发现,在大多数的CPU结构中(例如目前广泛使用的英特尔公司的Intel系列CPU中),在指令由CPU进行处理之前,会被分解为更小的子指令,即微操作(UOPS),而CPU中大多内置了多个用于统计有关CPU执行的各种微操作的数据的计数器,如果能够利用这些计数器所存储的有关浮点数运行的数据,则可以提供一种能够准确和及时提供有关CPU处理性能的方式。
根据本发明的一个方面,提供了一种用于确定计算单元的浮点操作性能的方法,包括步骤:获取在一段时间内所述计算单元中的各种浮点微操作的数目;以及基于所述各种浮点微操作的数目和所述时间段的长度来确定所述计算单元的浮点操作性能,其中所述各种浮点微操作包括下列类型的浮点微操作:X87指令类型的浮点微操作、MMX指令类型的浮点微操作数目以及SSE指令类型的浮点微操作。
根据本发明的另一个方面,提供了一种用于确定计算单元的浮点操作性能的设备,包括:浮点微操作统计单元,可操作地耦接到所述计算单元,以便获取在一段时间内所述计算单元中的各种浮点微操作的数目;以及性能计算单元,与所述浮点微操作统计单元相连接,以便从所述浮点微操作统计单元接收各种浮点微操作的数目,并基于所述各种浮点微操作的数目和所述时间段的长度来确定所述计算单元的浮点操作性能,其中所述各种浮点微操作包括下列类型的浮点微操作:X87指令类型的浮点微操作、MMX指令类型的浮点微操作数目以及SSE指令类型的浮点微操作。
利用根据本发明的用于确定计算单元的浮点操作性能的方法和设备,通过对计算单元在某个时间段内所进行的各种浮点微操作数目进行统计,可以准确地确定该计算单元的浮点操作性能。
可选地,根据本发明的一个实施方式,SSE指令类型的浮点微操作包括与打包相关联的浮点微操作;以及与标量运算相关联的浮点微操作。这样,通过更全面地统计各种类型的浮点微操作,可以得到更准确的有关计算单元处理性能的更准确数据。
可选地,根据本发明的另一个实施方式,计算单元包括性能监控单元,该性能监控单元被配置为统计各种浮点微操作的数目,利用该性能监控单元所获取的各种浮点微操作的数目来计算该计算单元的浮点操作性能。由于目前大多数的中央处理器,都具有性能监控单元(PMU)来监控该中央处理器执行各种微操作的过程,利用PMU来获取中央处理器执行各种浮点微操作的统计信息,可以准确和快速地确定计算单元的浮点处理性能。
可选地,根据本发明的一个实施方式,将计算单元的浮点处理性能确定为:(FP_COMP_OPS_EXE.X87 + FP_COMP_OPS_EXE.MMX + 2*FP_COMP_OPS_EXE.SSE_FP_PACKED + FP_COMP_OPS_EXE.SSE_FP_SCALAR) /所述时间段。上面四个在PMU中的指标值涵盖了绝大多数的浮点微操作事件,因此利用该计算方式,可以准确地确定计算单元的浮点处理性能。
根据本发明的用于确定计算单元的浮点操作性能通过统计在一段时间内容计算单元中各种浮点微操作的数目来确定该计算单元的浮点操作性能,而不是根据外部应用程序所需要的计算量来估算计算单元的浮点操作性能,从而可以更准确地确定该浮点操作性能。另外通过恰当地设置进行统计的时间段,可以基本实时的方式确定浮点操作性能。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
图1示意性地示出了根据本发明一个实施方式的用于确定计算单元200的浮点操作性能的设备100的框图。如图1所示,该设备100包括浮点微操作统计单元110和性能计算单元120。
浮点微操作统计单元110耦接到计算单元200,以便从计算单元200获取计算单元中各种浮点微操作的数目。如上所述,计算单元200(在下文中,以在现代计算机中常用的中央处理器(CPU)为例来进行说明,然而,本发明所面对的计算单元并不限于中央处理器,其他类型的处理器,例如图像处理器(GPU)、各种移动设备或者平板中使用的核心处理器(Core)等都在本发明的保护范围之内)所处理的指令具有各种类型,由于处理器发展的历史原因,指令的类型也在不断演化。以英特尔(Intel)公司的系列中央处理器为例(其他类似的中央处理器,例如AMD公司或者其他公司的中央处理器具有类似的指令类型),其最开始的中央处理器使用X86指令,同时为了提高浮点数据处理能力而增加了X87指令,并将X86指令集和X87指令集统称为X86指令集。
随后,为了提高处理器针对多媒体数据的处理能力,又开发了SIMD多媒体指令集,称为MMX指令集。在MMX指令集之后,又发布了MMX之后的扩充指令集,即SSE(Streaming SIMD Extensions,流化SIMD扩展)指令集。在SSE指令集之后,又发布了SSE2、SSE3和SSE4指令集等。这些指令集中,存在专门涉及浮点运算的指令。因此,如果对这些涉及浮点运算指令的微操作在一段时间内的执行次数进行统计,就可获知该计算单元的浮点操作性能,本发明正是基于此而做出。
性能计算单元120与浮点微操作统计单元110相连接,以便从浮点微操作统计单元110接收各种浮点微操作的数目,并基于所述各种浮点微操作的数目和所述时间段的长度来确定所述计算单元的浮点操作性能。根据一个实施例,性能计算单元120可以将浮点操作性能确定为:(各种浮点微操作的数目)/(统计时间长度)。
根据本发明,与浮点微操作相关联的浮点类型的指令包括在X87指令集中的指令、MMX指令集中的指令以及SSE系列指令集中与浮点运算相关的指令。因此,浮点微操作统计单元110要统计的浮点微操作包括X87指令类型的浮点微操作、MMX指令类型的浮点微操作数目以及SSE系列指令类型的浮点微操作。
根据本发明的一个实施方式,在SSE系列指令集中,与浮点运算相关联的指令包括与打包(pack)运算相关联的指令以及与标量运算相关联的指令。因此,当浮点微操作统计单元110对SSE系列指令类型的浮点微操作进行统计时,需要对SSE系列指令中、与打包相关联的浮点微操作以及与标量运算相关联的浮点微操作二者进行统计。
根据本发明的一个实施方式,计算单元200包括性能监控单元210。性能监控单元210可以被配置统计计算单元200中各种微操作的数目。具体而言,性能监控单元210中具有多个计数器220,这些计数器可以被配置为对某些类型的微操作进行计数,并且可以通过以事件值的方式来给出所统计的技术值。例如,在基于Intel的系列CPU中,事件值FP_COMP_OPS_EXE.X87代表X87指令类型的浮点微操作的数目,FP_COMP_OPS_EXE.MMX代表MMX指令类型的浮点微操作数目,FP_COMP_OPS_EXE.SSE_FP_PACKED代表SSE指令集中与打包相关联的浮点微操作数目,以及FP_COMP_OPS_EXE.SSE_FP_SCALAR代表SSE指令集中与标量运算相关联的浮点微操作。在性能监控单元210中,可以将计数器220配置为分别对事件FP_COMP_OPS_EXE.X87、FP_COMP_OPS_EXE.MMX、FP_COMP_OPS_EXE.SSE_FP_PACKED和FP_COMP_OPS_EXE.SSE_FP_SCALAR进行计数。浮点微操作统计单元110可以从计算单元200中获取在一段时间内由性能监控单元210中的各个计数器所统计的事件值。性能计算单元120可以利用各个事件值来确定计算单元200的浮点操作性能。可选地,由于在CPU中一次打包操作会涉及到两次浮点微操作,因此性能计算单元120利用下面的等式来计算计算单元的浮点操作性能:
(FP_COMP_OPS_EXE.X87 + FP_COMP_OPS_EXE.MMX + 2*FP_COMP_OPS_EXE.SSE_FP_PACKED + FP_COMP_OPS_EXE.SSE_FP_SCALAR) /统计时间段长度。
图2示意性地示出了根据本发明一个实施方式的用于确定计算单元200的浮点操作性能的方法300的流程图。该方法适于在图1所示的设备100中执行。如图2所示,该方法适于步骤S310,获取在一段时间内计算单元200中的各种浮点微操作的数目,随后在步骤S320中,基于各种浮点微操作的数目和统计时间段的长度来确定计算单元200的浮点计算性能,并且在步骤S330中输出所确定的浮点计算性能并结束该方法。
在步骤S310中,如上所述,在诸如Intel的系列CPU之类的计算单元中,与浮点微操作相关联的浮点类型的指令包括在X87指令集中的指令、MMX指令集中的指令以及SSE系列指令集中与浮点运算相关的指令。因此,在步骤S310中要统计的浮点微操作包括X87指令类型的浮点微操作、MMX指令类型的浮点微操作数目以及SSE系列指令类型的浮点微操作。而SSE指令类型的浮点微操作包括与打包相关联的浮点微操作以及与标量运算相关联的浮点微操作。
根据本发明的一个实施方式,当计算单元200包括性能监控单元210来对各种微操作进行计数时,可以将性能监控单元210配置为对各种浮点微操作进行计数。在步骤S310中,可以经由性能监控单元210来获取各种浮点微操作的数目,并随后对这些浮点微操作的数目进行统计。
在基于Intel的系列CPU中,事件值FP_COMP_OPS_EXE.X87代表X87指令类型的浮点微操作的数目,FP_COMP_OPS_EXE.MMX代表MMX指令类型的浮点微操作数目,FP_COMP_OPS_EXE.SSE_FP_PACKED代表SSE指令集中与打包相关联的浮点微操作数目,以及FP_COMP_OPS_EXE.SSE_FP_SCALAR代表SSE指令集中与标量运算相关联的浮点微操作。另外,在CPU中一次打包操作会涉及到两次浮点微操作,因此,在步骤S320中,利用下面的等式来计算计算单元200的浮点操作性能:
(FP_COMP_OPS_EXE.X87 + FP_COMP_OPS_EXE.MMX + 2*FP_COMP_OPS_EXE.SSE_FP_PACKED + FP_COMP_OPS_EXE.SSE_FP_SCALAR) /统计时间段长度。
根据本发明的用于确定计算单元的浮点操作性能的设备和方法通过统计在一段时间内容计算单元中各种浮点微操作的数目来确定该计算单元的浮点操作性能,而不是根据外部应用程序所需要的计算量来估算计算单元的浮点操作性能,从而可以更准确地确定该浮点操作性能。另外通过恰当地设置进行统计的时间段,可以基本实时的方式确定浮点操作性能。
应当注意的是,在本发明的设备100的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网站扫描设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。