CN104598201A - 指令性能分析的方法和设备 - Google Patents
指令性能分析的方法和设备 Download PDFInfo
- Publication number
- CN104598201A CN104598201A CN201310533727.1A CN201310533727A CN104598201A CN 104598201 A CN104598201 A CN 104598201A CN 201310533727 A CN201310533727 A CN 201310533727A CN 104598201 A CN104598201 A CN 104598201A
- Authority
- CN
- China
- Prior art keywords
- instruction
- cpu
- target
- grouping information
- target word
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例的提供了指令性能分析的方法和设备。所述方法包括:获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息;针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布;根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献;和根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。采用根据本发明实施例的方案,可以在以超标量处理器为指令处理平台时,提高指令性能分析的准确度。
Description
技术领域
本发明涉及计算机技术,更具体地说,涉及指令性能分析的方法和设备。
背景技术
流水线技术是当今处理器普遍采用的技术。图2A示出了传统的流水线。如图2A所示,第一条指令经过取指(Instruction Fetch,IF)阶段后,进入指令解码(Instruction Decode,ID)阶段;此时第二条指令进入取指阶段。第一条指令进入执行(Execute,EX)阶段时,第二条指令进入指令解码阶段,第三条指令进入取指阶段。以此类推,当第一条指令经过内存访问(MEMory access,MEM)阶段,进入寄存器写回(register Write Back,WB)阶段时,第二条指令处于内存访问阶段,第三条指令处于执行阶段,第四条指令处于指令解码阶段,第五条指令处于取指阶段。由此可见,通过流水线技术,可以并行地处理处于不同阶段的指令,从而提高了指令处理的速度。
随着CPU技术的发展,出现了所谓的超标量(super-scalar)处理器。超标量处理器指的是具有超标量流水线的处理器。由于处理器中的功能单元(Functional Unit)有许多种类,例如算术逻辑单元ALU、位移单元、乘法器等等,因此满足某些条件的指令可以在同一时间段分别利用这些不同种类的功能单元。相应地,可以将满足条件的多条指令分组合成指令分组,其中一条指令分组中最多包括的指令数称为指令分组条数。同一指令分组中的多条指令同时被发射(issue)到超标量处理器进行处理。当指令分组中的所有指令被处理完毕后,该指令分组被处理完毕。超标量处理器以指令分组为单位进行流水线操作。图2B示出超标量流水线。如图2B所示,当第一指令分组处于寄存器写回阶段时,第二指令分组处于内存访问阶段,第三指令分组处于执行阶段,第四指令分组处于指令解码阶段,第五指令分组处于取指阶段。
由于超标量处理器中是以指令分组为单位进行流水线操作,而不是像传统处理器那样以指令为单位进行流水线操作,因此针对超标量处理器进行指令性能分析,与针对传统处理器的指令性能分析存在很大不同。相应地,需要针对超标量处理器设计专门的指令性能分析方案。
发明内容
本发明实施例提供了指令性能分析的方法和设备。
根据本发明实施例的一种指令性能分析的方法,包括:获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息,其中所述指令分组信息指的是,在该采样时刻程序计数器所指示的指令所在的指令分组包括的指令数目;针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布,其中该指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布;根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,其中指令的CPU指数表示指令对CPU的占用量;和根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
根据本发明实施例的一种指令性能分析的设备,包括:指令分组信息获取装置,配置为获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息,其中所述指令分组信息指的是,在该采样时刻程序计数器所指示的指令所在的指令分组包括的指令数目;指令分组信息分布计算装置,配置为针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布,其中该指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布;贡献计算装置,配置为根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,其中指令的CPU指数表示指令对CPU的占用量;和修正装置,配置为根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
采用根据本发明实施例的方案,可以在以超标量处理器为指令处理平台时,提高指令性能分析的准确度。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1是适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图2A是传统流水线的示意图,图2B是超标量流水线的示意图;
图3示出根据本发明实施例的采样分析的结果的一部分;
图4是根据本发明实施例的进行指令性能分析的方法的流程图;
图5示出根据本发明实施例得到的目标指令的统计组信息分布;
图6示出根据本发明实施例的对指令的CPU指数进行修正的过程;
图7示出根据本发明实施例对如图3所示的采样分析结果进行修正后的结果;
图8示出根据本发明实施例的进行指令性能分析的设备的方框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD—ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、时频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗佘处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
如前所述,由于超标量处理器中是以指令分组为单位进行流水线操作,而不是像传统处理器那样以指令为单位进行流水线操作,因此针对超标量处理器进行指令性能分析,与针对传统处理器的指令性能分析存在很大不同。
采样分析是最常用的一种指令性能分析。采样分析是计算机程序开发中的重要环节。采样分析通过记录程序或程序中各部分占用CPU的时间,不仅可以评估所开发的程序是否能够满足预定的性能指标,还能够分析出程序中的哪些部分影响了程序的整体性能,从而指导程序优化。
在采样分析期间,采样器通过使用处理器的硬件中断或操作系统的终端,在各采样时刻获取程序计数器的值。程序计数器是处理器中的一个专用寄存器,用于存储当前时刻所处理的指令的地址。这样,采样器就可以获得在各采样时刻正在处理的指令地址。CPU的状态分为忙碌和空闲。如果在某采样时刻,CPU处于忙碌状态,则该次采样为有效采样,通常称为一个Tick。有效采样表示在该采样时刻CPU正在处理程序计数器所指示的指令,而并非处于空闲状态。经过足够长时间的采样后,就可以对各条指令被处理器处理的次数进行统计意义上的观察,进而可以以各种粒度对程序的性能进行分析。所述粒度诸如指令级、代码级、函数级、进程级和程序级。
如果某个指令所对应的有效采样的数目很大,则该指令称为热指令。针对所述热指令进行的优化具有较高的优化效率。换句话话说,相较于对程序中其他指令进行相同程度的优化,对所述热指令进行所述优化所达到的效果对程序整体性能的优化程度更高。例如,假设在某个程序中,某个指令的CPU时间占用率为60%,即如果该程序所有指令所对应的有效采样之和为100个单位,则有60个单位的有效采样用来处理该指令级。这样,如果该指令消耗的CPU时间缩短一半,则整个程序所消耗的CPU时间会缩短为原来的十分之七。作为比较,如果将该程序中剩余指令所消耗的CPU时间缩短一半,则整个程序所消耗的CPU时间只能缩短为原来的十分之八。因此,可以优先针对该指令进行优化。
本发明的发明人发现,对于某一程序,在以超标量处理器为处理平台进行采样分析时,经常出现CPU时间占用率为0%的指令。这意味着这些指令没有被处理或很少被处理。但是,针对相同的程序,在以传统处理器为处理平台进行采样分析时,这些指令的CPU时间占用率并非为0%,即这些指令实际上是要被处理的。
本发明的发明人还发现,在以超标量处理器为处理平台进行采样分析时,地址连续的多条指令的CPU时间占用率往往分布可能非常不均匀。本领域技术人员可以理解,地址连续的多条指令往往在高级语言中只构成一行代码。例如,高级语言中的求1+1的结果的代码,对应到指令级别,就可能是多条指令:将第一寄存器赋值为1的指令,将第二寄存器也赋值为1的指令,对这两个寄存器执行加法的指令,以及将结果写入第三个寄存器的指令。因此,地址连续的多条指令,往往是需要一并执行的,不应该出现CPU时间占用率分布非常不均匀的情况。
图3示出根据本发明实施例的采样分析的结果的一部分,其中以超标量处理器为处理平台。图3中的第一列是指令的序号,第二列是指令的相对地址,第三列是指令对应的汇编语言,第四列是指令对应的有效采样的数目,第五列是指令的CPU时间占用率。如前所述,指令的CPU时间占用率指的是处理该指令所消耗的CPU时间,占执行整个程序所消耗的CPU时间的百分比。指令的CPU时间占用率和指令对应的有效采样的数目一样,只具有相对意义。指令的CPU时间占用率与指令对应的有效采样的数目成正比。事实上,指令的CPU时间占用率可以由指令的有效采样数目计算得到。在下面的描述中,将指令的CPU时间占用率和指令对应的有效采样数目统称为指令的CPU指数(measurement),用来表示指令CPU的占用量。如图3所示,指令B、指令C、指令E、指令H、指令I、指令J、指令L、指令M的CPU时间占用率都远远小于其相邻的指令的CPU时间占用率。
通过研究,本发明的发明人意识到,发生上述现象的原因是由于超标量处理器的硬件限制。在超标量处理器中,程序计数器只记录指令分组中第一条指令的地址。也就是说,在整个指令分组的处理期间,采样器每次进行采样,会错误地认为当前正在被处理的是第一条指令。在这种情况下,采样分析会将整个组的CPU时间占用率都算作所述第一条指令的CPU时间占用率。但实际上,在整个组所占用的CPU时间中,只有一部分用来处理所述第一条指令,其他部分用来处理所述指令分组中的其他指令。
对于不了解处理器细节的分析员来说,这种错误可能会导致分析员认为所述第一条指令是热指令,从而将该第一条指令作为优先的优化目标。由于只有在该指令分组的所有指令被处理完毕之后,该指令分组才处理完毕。如果一条指令分组中CPU时间占用率最高的指令不是该指令分组中的第一条指令,那么分析员可能不会将该CPU时间占用率最高的指令作为优先的优化目标。也就是说,分析员可能不仅错过优化效率更高的热指令,还将优化效率不高的冷指令误认为热指令。
下面结合图4描述根据本发明实施例的进行指令性能分析的方法。在下面的描述中,假设超标量处理器的指令分组条数为3,即一条指令分组中最多可以包括三条指令。换句话说,一条指令分组中可以包括一条指令,也可以包括两条指令,也可以包括三条指令。
步骤401,获取在各采样时刻,与程序计数器所指示的指令对应的指令分组信息。
指令分组信息指的是,当前程序计数器所指示的指令所在的指令分组包括多少条指令。如前所述,在超标量处理器中,虽然属于同一指令分组的多条指令被同时处理,但程序计数器指示的是指令分组中的第一条指令。也就是说,从程序计数器的值本身无法获得所述指令分组信息。
但是,超标量处理器自身必然具有关于所述指令分组信息的知识。另一方面,处理器一般都具有一些特殊目的的寄存器,例如硬件性能计数器,以便存储于硬件有关的活动。因此,可以指示处理器使用这些特殊目的寄存器中的至少一个来存储指令分组信息。用于存储所述指令分组信息的寄存器称为指令分组计数器。
根据本发明一个实施例,可以用三个bit来表示所述指令分组信息。
具体而言,可以将这三个bit分别称为Mono-Instruction Group Bit、Bi-Instruction Group Bit和Tri-Instruction Group Bit。表1示出了这三个比特的取值与所表示的指令分组信息之间的对应关系。
表1Bit取值与指令分组信息的对应关系
根据本发明另一个实施例,可以用两个bit来表示所述指令分组信息。当两个bit的值为01、10和11时,分别表示程序计数器所指示的指令所在的指令分组包括一条、两条和三条指令。
相应地,在各采样时刻,除了读取程序计数器的值以外,还读取所述指令分组计数器的值,这样就可以获得程序计数器所指示的指令所在的指令分组包括几条指令。
步骤402,根据所述指令分组信息,计算目标指令的指令分组信息分布。
目标指令的指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布。目标指令可以是指令分组中的唯一指令,也可以是包含两条指令的指令分组中的一条指令,也可以是包含三条指令的指令分组中的一条指令。在某个采样时刻,获得了目标指令在该采样时刻对应的指令分组信息;通过进行大量的采样,就可以获得在多个采样时刻该目标指令对应的多个指令分组信息,从而可以得到针对目标指令的统计意义上的指令分组信息分布。
图5示出根据本发明实施例得到的目标指令的统计组信息分布,其中将每一条指令都作为目标指令。
图5中,第一列是指令的序号,第二列是指令的相对地址,第三列是指令对应的汇编语言,第四列是指令对应的有效采样数目。第五列、第六列和第七列表示指令对应的组信息分布。其中,第五列表示该指令被采样到作为指令分组中的唯一指令的次数,第六列表示该指令被采样到作为包含两条指令的指令分组中的一条指令的次数,第七列表示该指令被采样到作为包含三条指令的指令分组中的一条指令的次数。
在图5中,一条指令对应的有效采样的数目大于其所对应的G1、G2和G3的值的总和。这是因为,并不是每次有效采样的数目增加都会对应着G1、G2和G3中的某一个值的增加。只要某次采样是有效采样,即在采样时刻CPU为忙碌状态,有效采样的数目就会增加1;但是,在某次有效采样中,还必须采到所述指令分组计数器的有效值,所述G1、G2和G3中的某一个值才会增加1。只有在整个指令分组的所有指令被处理完成后,CPU才会根据该指令分组的情况对所述指令分组计数器赋值,此时指令分组计数器中的值才是有效的。如果在某个采样时刻,由于指令长度,顺序或者依赖性等原因,CPU正在处理该指令分组从而处于忙碌状态,但是指令分组的处理并没有完成,则虽然该次采样是有效采样,但是并没有采样到有效的指令分组计数器的值,从而使得有效采样的数目增加,而G1、G2和G3中的任何一个值都没有增加。
在图5中,指令A的统计组信息分布为0:3:451。
步骤403,根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献。
如前所述,当一条指令分组正在被处理时,程序计数器只记录该指令分组的第一条指令的地址。因此,在图5中,对于指令A而言,其被采样到作为指令分组中的唯一指令的次数为0,被采样到作为包含两条指令的指令分组中的第一条指令的次数为3,被采样到作为包含三条指令的指令分组中的第一条指令的次数为451。相应地,在这3次指令A作为包含两条指令的指令分组中的第一条指令的采样中,指令B是该指令分组中的另一条指令;在这451次指令A作为包含三条指令的指令分组中的第一条指令的采样中,指令B和指令C是该指令分组的另一条指令。
对于一条指令的所有有效采样而言,每一个有效采样都必然对应于三种统计组信息中的一种,并且是唯一一种。虽然由于如前所述的原因,有效采样的数目与G1、G2和G3的值并不完全匹配,但是可以理解,所有有效采样中分别对应于三种统计组信息的有效采样数目的比例,与G1、G2和G3的比例应该是一致的。因此,对于指令A而言,其1644个有效采样中,对应于三种统计组信息的有效采样的数目如表2所示。
表2针对指令A计算的对应于各指令分组信息类型的有效采样数目
由于一条指令的有效采样数目与CPU时间占用率是一致的,因此也可以按照类似的方法,计算该指令的CPU时间占用率中对应于三种指令分组信息的CPU时间占用率分别为多少。
由于一条指令分组中的所有指令必然是同时被发射到处理器进行处理的,因此在上述指令A所在的指令分组包括指令A和指令B的情况中,指令B也被发射到处理器进行处理。也就是说,在这种情况下,指令A的1644个有效采样会向指令B贡献10.86个有效采样。作为比较,在现有技术中,由于处理器的硬件限制,在这种情况下,并不能看出指令B也被处理过。
类似的,在上述指令A所在指令分组包括指令A、指令B和指令C的情况中,指令B和指令C都被发射到处理器进行处理。也就是说,在这种情况下,指令A的1644个有效采样会向指令B贡献1633.14个有效采样,向指令C贡献1633.14个有效采样。
步骤404,根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
在指令A所在的指令分组包括指令A和指令B的情况中,指令A的1644个有效采样会向指令B贡献10.86个有效采样;在指令A所在指令分组包括指令A、指令B和指令C的情况中,指令A的1644个有效采样会向指令B贡献1633.14个有效采样。因此,指令A总共向指令B贡献1644个有效采样。修正后的指令B的有效采样数目为1644+0=1644。其中0为指令B在修正前的有效采样数目。
对于指令C而言,除了指令A的有效采样向指令C贡献有效采样数目之外,指令B也有可能向指令C贡献有效采样数目。例如,指令B为指令分组的第一条指令,该指令分组可以进一步包括指令C,还可以进一步包括指令D。但是,在图5中,指令B对应的G1、G2和G3的值均为0。这意味着没有任何采样时刻采到指令B作为指令分组的第一条指令。相应地,指令B的有效采样向指令C的有效采样的贡献量也为0。因此,指令C的有效采样经修正后为1633.14+14≈1647。其中14是指令C在修正前的有效采样数目。
图6示出了完整的计算目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,以及根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数的过程。
在图6中,G1Ticks[0]、G2Ticks[0]和G3Ticks[0]分别表示该指令的所有有效采样中,对应于该指令被采样到作为指令分组中的唯一指令的情况的有效采样数目,对应于该指令被采样到作为包含两条指令的指令分组中的第一条指令的情况的有效采样数目,和对应于该指令被采样到作为包含三条指令的指令分组中的第一条指令的情况的有效采样数目,即根据表2所算出来的3个数目。G2Ticks[-1]和G3Ticks[-1]表示该指令向前第一条指令的所有有效采样s中,对应于所述向前第一条指令被采样到作为包含两条指令的指令分组中的第一条指令的情况的有效采样数目,和对应于所述向前第一条指令被采样到作为包含三条指令的指令分组中的第一条指令的情况的有效采样数目。G3Ticks[-2]表示该指令的向前第二条指令的所有有效采样s中,对应于所述向前第二条指令被采样到作为包含三条指令的指令分组中的第一条指令的情况的有效采样数目。
对于指令A而言,由于其之前没有任何指令,因此其对应的G2Ticks[-1]、G3Ticks[-1]和G3Ticks[-2]均为0;对于指令B而言,其向前第一条指令为指令A,并且没有向前第二条指令,因此其对应的G2Ticks[-1]为10.86,G3Ticks[-1]为1633.14,G3Ticks[-2]为0;对于指令C而言,其向前第一条指令为指令B,向前第二条指令为指令A,因此其对应的G2Ticks[-1]为0,G3Ticks[-1]为0,G3Ticks[-2]为1633.14。
如前所述,对于指令A而言,其可能向指令B贡献有效采样数目,也可能向指令C贡献有效采样数目。反过来说,对于指令C而言,指令A可能向其贡献有效采样数目,指令B也可能向其贡献有效采样数目。因此,一条待修正(under adjustment)指令的修正后的有效采样数目,应该等于该待修正指令的修正前的有效采样数目,加上该待修正指令的向前第一条指令对该待修正指令的有效采样贡献(表现为G2Ticks[-1]和G3Ticks[-1]),和该待修正指令向前第二条指令对该待修正指令的有效采样贡献(表现为G3Ticks[-2])。
综上所述,对于序号为n的指令而言,其修正后的有效采样数目(AdiustedTic)为:
其中,Ticks(n)表示该序号为n的指令的原始有效采样数目,即通过采样直接得到的有效采样数目,也就是在根据本发明实施例进行修正前的有效采样数目。P表示处理器的指令分组条数,GpTicks(n-q)表示该序号为n的指令向前的第q条指令的原始有效采样数目对序号为n的指令的有效采样数目的贡献。AdjustedTic(n)表示该序号为n的指令的修正后的有效采样数目。对于序列号为n-q的指令而言,Gx(n-q)和Gp(n-q)表示该序号为n-q的指令的指令分组信息分布。
根据以上过程对图3所示的采样分析结果进行修正后得到的采样分析结果如图7所示。可以看出,除了指令J以外,其他指令所对应的调整后的有效采样数目都不存在显著的波动。在这些指令中,指令A、B和C都是热指令;而不是如图3所示那样只有指令A是热指令。至于指令J,其经过修正后的有效采样数目仍然为0。这是因为指令I是跳转语句,直接跳转到指令K,因此指令J的确是没有被处理过。
在上面的描述中,以每个指令为目标指令进行了调整。根据本发明的一个实施例,为了减少计算量,可以设置一定的标准来选择一部分指令作为目标指令。例如,可以将有效采样数目与后续指令的有效采样数目的指令大于CPU指数差阈值的指令作为目标指令。所述后续指令在目标指令之后,并且有可能与所述目标指令处于同一指令分组。可以理解,指令分组条数越大,对于特定目标指令而言的后续指令就越多。
图8示出根据本发明实施例的进行指令性能分析的设备的方框图。
根据本发明实施例的设备典型地可以通过运行于图1所示的示例性计算机系统上的计算机程序来实现。虽然图1所示的是通用的计算机系统的硬件结构,但是由于该计算机系统运行了所述计算机程序,实现了根据本发明实施例的方案,从而使得该计算机系统/服务器从通用计算机系统/服务器转变成根据本发明实施例的设备。
此外,虽然根据本发明实施例的设备从整体上看是由同一通用计算机系统来实现的,但是组成该设备的各个装置或模块在本质上是由分立的硬件实现的。这是因为,所述通用计算机在运行所述计算机程序时,往往采用诸如分时或分处理器核的共享方式来实现各个装置或模块。以分时实现为例,在特定的时刻,该通用计算机系统作为专用于实现特定装置或模块的硬件;在不同时刻,该通用计算机系统作为专用于实现不同的装置或模块的不同硬件。因此,根据本发明实施例的设备是一系列由硬件方式实现的装置或模块的组合,从而并非仅仅是功能模块构架。相反,根据本发明实施例的设备也可以被理解为主要通过硬件方式实现根据本发明实施例解决方案的实体设备。
根据本发明实施例的一种指令性能分析的设备,该设备包括:
指令分组信息获取装置,配置为获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息,其中所述指令分组信息指的是,在该采样时刻程序计数器所指示的指令所在的指令分组包括的指令数目;
指令分组信息分布计算装置,配置为针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布,其中该指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布;
贡献计算装置,配置为根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,其中指令的CPU指数表示指令对CPU的占用量;和
修正装置,配置为根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
其中所述目标指令的CPU指数与所述其他指令的CPU指数的差别大于CPU指数差阈值。
其中所述贡献计算装置包括:
配置为分别计算所述目标指令的CPu指数对该指令分组向后P-1条指令的CPU指数的贡献的模块,其中P是所述处理器的指令分组条数。
其中所述修正装置包括:
配置为针对某一待修正指令,根据该待修正指令向前P-1条指令的CPU指数对该待修正指令的CPU指数的贡献,修正该待修正指令的CPU指数的模块,其中P是所述处理器的指令分组条数。
其中对于序号为n的指令而言,其修正后的CPU指数为:
其中,Ticks(n)表示该序号为n的指令的修正前的CPU指数,AdjustedTic(n)表示该序号为n的指令的修正后的CPU指数,P表示处理器的指令分组条数,GpTicks(n-q)表示该序号为n的指令向前的第q条指令的原始CPU指数对序号为n的指令的CPU指数的贡献,Gx(n-q)和Gp(n-q)表示该序号为n指令向前的第q条指令的指令分组信息分布。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种指令性能分析的方法,该方法包括:
获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息,其中所述指令分组信息指的是,在该采样时刻程序计数器所指示的指令所在的指令分组包括的指令数目;
针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布,其中该指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布;
根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,其中指令的CPU指数表示指令对CPU的占用量;和
根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
2.如权利要求1所述的方法,其中所述目标指令的CPU指数与所述其他指令的CPU指数的差别大于CPU指数差阈值。
3.如权利要求1所述的方法,其中计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献包括:
分别计算所述目标指令的CPU指数对该指令分组向后P-1条指令的CPU指数的贡献,其中P是所述处理器的指令分组条数。
4.如权利要求1或3所述的方法,其中根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数包括:
针对某一待修正指令,根据该待修正指令向前P-1条指令的CPU指数对该待修正指令的CPU指数的贡献,修正该待修正指令的CPU指数,其中P是所述处理器的指令分组条数。
5.如权利要求1所述的方法,其中对于序号为n的指令而言,其修正后的CPU指数为:
其中,Ticks(n)表示该序号为n的指令的修正前的CPU指数,AdjustedTic(n)表示该序号为n的指令的修正后的CPU指数,P表示处理器的指令分组条数,GpTicks(n-q)表示该序号为n的指令向前的第q条指令的原始CPU指数对序号为n的指令的CPU指数的贡献,Gx(n-q)和Gp(n-q)表示该序号为n指令向前的第q条指令的指令分组信息分布。
6.一种指令性能分析的设备,该设备包括:
指令分组信息获取装置,配置为获取在各采样时刻,与处理器的程序计数器所指示的指令对应的指令分组信息,其中所述指令分组信息指的是,在该采样时刻程序计数器所指示的指令所在的指令分组包括的指令数目;
指令分组信息分布计算装置,配置为针对目标指令,根据所述指令分组信息,计算该目标指令的指令分组信息分布,其中该指令分组信息分布指的是该目标指令所对应的指令分组信息的统计分布;
贡献计算装置,配置为根据目标指令的指令分组信息分布,计算该目标指令的CPU指数对与该目标指令属于同一指令分组的其他指令的CPU指数的贡献,其中指令的CPU指数表示指令对CPU的占用量;和
修正装置,配置为根据所述贡献修正与所述目标指令属于同一指令分组的其他指令的CPU指数。
7.如权利要求6所述的设备,其中所述目标指令的CPU指数与所述其他指令的CPU指数的差别大于CPU指数差阈值。
8.如权利要求6所述的设备,其中所述贡献计算装置包括:
配置为分别计算所述目标指令的CPU指数对该指令分组向后P-1条指令的CPU指数的贡献的模块,其中P是所述处理器的指令分组条数。
9.如权利要求6或8所述的设备,其中所述修正装置包括:
配置为针对某一待修正指令,根据该待修正指令向前P—1条指令的CPU指数对该待修正指令的CPU指数的贡献,修正该待修正指令的CPU指数的模块,其中P是所述处理器的指令分组条数。
10.如权利要求6所述的设备,其中对于序号为n的指令而言,其修正后的CPU指数为:
其中,
其中,Ticks(n)表示该序号为n的指令的修正前的CPU指数,AdjustedTic(n)表示该序号为n的指令的修正后的CPU指数,P表示处理器的指令分组条数,GpTicks(n-q)表示该序号为n的指令向前的第q条指令的原始CPU指数对序号为n的指令的CPU指数的贡献,Gx(n-q)和Gp(n-q)表示该序号为n指令向前的第q条指令的指令分组信息分布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310533727.1A CN104598201A (zh) | 2013-10-31 | 2013-10-31 | 指令性能分析的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310533727.1A CN104598201A (zh) | 2013-10-31 | 2013-10-31 | 指令性能分析的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104598201A true CN104598201A (zh) | 2015-05-06 |
Family
ID=53124026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310533727.1A Pending CN104598201A (zh) | 2013-10-31 | 2013-10-31 | 指令性能分析的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104598201A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878440A (zh) * | 2023-01-31 | 2023-03-31 | 北京超星未来科技有限公司 | 用于静态分析npu指令性能的方法、电子设备、介质和程序 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1105138A (zh) * | 1992-10-30 | 1995-07-12 | 国际商业机器公司 | 超标量计算机的寄存器结构 |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
CN102004678A (zh) * | 2010-11-11 | 2011-04-06 | 青岛普加智能信息有限公司 | 操作系统性能分析方法及装置 |
US20110320779A1 (en) * | 2010-06-24 | 2011-12-29 | International Business Machines Corporation | Performance monitoring in a shared pipeline |
CN102789377A (zh) * | 2011-05-18 | 2012-11-21 | 国际商业机器公司 | 处理指令分组信息的方法和装置 |
-
2013
- 2013-10-31 CN CN201310533727.1A patent/CN104598201A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1105138A (zh) * | 1992-10-30 | 1995-07-12 | 国际商业机器公司 | 超标量计算机的寄存器结构 |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US20110320779A1 (en) * | 2010-06-24 | 2011-12-29 | International Business Machines Corporation | Performance monitoring in a shared pipeline |
CN102004678A (zh) * | 2010-11-11 | 2011-04-06 | 青岛普加智能信息有限公司 | 操作系统性能分析方法及装置 |
CN102789377A (zh) * | 2011-05-18 | 2012-11-21 | 国际商业机器公司 | 处理指令分组信息的方法和装置 |
Non-Patent Citations (3)
Title |
---|
M GULATI等: "Performance Study of a Multithreaded Superscalar Microprocessor", 《HIGH-PERFORMANCE COMPUTER ARCHITECTURE, 1996. PROCEEDINGS. SECOND INTERNATIONAL SYMPOSIUM ON》 * |
M SHAKERI等: "Modeling and Evaluating the Scalability of Instruction Fetching in Superscalar Processors", 《INFORMATION TECHNOLOGY, 2007. ITNG ‘07. FOURTH INTERNATIONAL CONFERENCE ON》 * |
刘静等: "超级流水线超标量处理机的性能评价", 《华北电力大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115878440A (zh) * | 2023-01-31 | 2023-03-31 | 北京超星未来科技有限公司 | 用于静态分析npu指令性能的方法、电子设备、介质和程序 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552163B2 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
EP3343392A1 (en) | Hardware accelerator architecture and template for web-scale k-means clustering | |
US10534613B2 (en) | Supporting learned branch predictors | |
JP5865405B2 (ja) | 命令の制御フローの追跡 | |
TWI733710B (zh) | 用於重複發生相鄰聚集的處理器、方法和單元 | |
US20180232627A1 (en) | Variable word length neural network accelerator circuit | |
US10409613B2 (en) | Processing devices to perform a key value lookup instruction | |
US9678749B2 (en) | Instruction and logic for shift-sum multiplier | |
CN108431771B (zh) | 融合乘加(fma)低功能单元 | |
CN107925420B (zh) | 用于经优化压缩比的异构压缩架构 | |
CN106030518A (zh) | 用于整理和退出存储的指令和逻辑 | |
CN108369517A (zh) | 聚合分散指令 | |
CN112784970A (zh) | 一种硬件加速器、数据处理方法、系统级芯片及介质 | |
US20170177345A1 (en) | Instruction and Logic for Permute with Out of Order Loading | |
US7523152B2 (en) | Methods for supporting extended precision integer divide macroinstructions in a processor | |
CN106030519A (zh) | 用于从多个股分派指令的处理器逻辑和方法 | |
US9116719B2 (en) | Partial commits in dynamic binary translation based systems | |
CN104598201A (zh) | 指令性能分析的方法和设备 | |
US10592244B2 (en) | Branch type logging in last branch registers | |
CN108292219B (zh) | 浮点(fp)加法低指令功能单元 | |
Wang et al. | Understanding and Optimizing Conjunctive Predicates Under Memory-Efficient Storage Layouts | |
US10095302B2 (en) | Method and apparatus for automatic adaptive voltage control | |
Choi et al. | A GaAs receiver module for optoelectronic computing and interconnection | |
Azeemi | Android based energy aware framework for porting legacy applications | |
Stanislavsky et al. | Design and Implementation of a Super Scalar DLX based Microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150506 |