《处理指令分组信息的方法和装置.pdf》由会员分享,可在线阅读,更多相关《处理指令分组信息的方法和装置.pdf(20页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102789377 A (43)申请公布日 2012.11.21 C N 1 0 2 7 8 9 3 7 7 A *CN102789377A* (21)申请号 201110129608.0 (22)申请日 2011.05.18 G06F 9/30(2006.01) G06F 9/38(2006.01) (71)申请人国际商业机器公司 地址美国纽约 (72)发明人林鸿昌 梁祺 陈沁悦 刘峰 (74)专利代理机构北京市中咨律师事务所 11247 代理人周良玉 于静 (54) 发明名称 处理指令分组信息的方法和装置 (57) 摘要 本发明涉及获取指令分组信息的方法和装 置,。
2、所述方法包括:从缓存器中读取处理器在运 行时分组的机器指令的地址,形成地址文件;分 析所述地址文件,获取所述机器指令的分组信息; 将所述地址文件中的所述机器指令转化为可读指 令;以及基于所述机器指令的分组信息和转化的 可读指令,获得可读指令的分组信息。所述装置与 以上方法对应。利用上述方法和装置,可以动态地 获得处理器在运行时对指令的分组处理情况,从 而更好地利用处理器的处理性能。 (51)Int.Cl. 权利要求书2页 说明书10页 附图7页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 10 页 附图 7 页 1/2页 2 1.一种处理指令分组信息。
3、的方法,包括: 从缓存器中读取处理器在运行时分组的机器指令的地址,形成地址文件; 分析所述地址文件,获取所述机器指令的分组信息; 将所述地址文件中的所述机器指令转化为可读指令;以及 基于所述机器指令的分组信息和转化得到的可读指令,获得可读指令的分组信息。 2.根据权利要求1的方法,其中,所述分组的机器指令的地址包括指令组中首个指令 的地址和指令组中其他指令相对于该首个指令的地址偏移。 3.根据权利要求1或2的方法,其中所述形成地址文件包括,形成地址表形式的地址文 件,所述地址表中的一个条目对应于一个指令组。 4.根据权利要求1的方法,其中分析所述地址文件包括,对所述地址文件中出现的指 令组进行。
4、统计。 5.根据权利要求1的方法,其中将所述地址文件中的所述机器指令转化为可读指令包 括: 根据机器指令地址确定该机器指令所对应的可执行函数,并取出该函数对应的指令 流;以及 将上述指令流进行反汇编,获得可读指令。 6.根据权利要求1的方法,其中获得可读指令的分组信息包括,用转化得到的可读指 令替代所述机器指令的分组信息中的机器指令。 7.根据权利要求1的方法,其中所述可读指令的分组信息包括以下中的至少一项:指 令组的数目、指令组中包含的指令数目、指令组中的可读指令、特定指令单独出现的次数、 特定指令在指令组中出现的次数、特定指令作为指令组中首个指令出现的次数。 8.根据权利要求1的方法,还包。
5、括,以图形化的形式呈现所述可读指令的分组信息。 9.根据权利要求8的方法,其中所述以图形化的形式呈现所述可读指令的分组信息包 括以下中的至少一项: 以热度条的形式示出单个指令的热度值; 利用统计块来表示各个指令组的出现情况;以及 图示出指令分组信息随时间的变化。 10.一种处理指令分组信息的装置,包括: 地址读取单元,配置为从缓存器中读取处理器在运行时分组的机器指令的地址,形成 地址文件; 分析单元,配置为分析所述地址文件,获取所述机器指令的分组信息; 指令转化单元,配置为将所述地址文件中的所述机器指令转化为可读指令;以及 信息获取单元,配置为基于所述机器指令的分组信息和转化得到的可读指令,获。
6、得可 读指令的分组信息。 11.根据权利要求10的装置,其中,所述分组的机器指令的地址包括指令组中首个指 令的地址和指令组中其他指令相对于该首个指令的地址偏移。 12.根据权利要求10或11的装置,其中所述地址读取单元配置为,形成地址表形式的 地址文件,所述地址表中的一个条目对应于一个指令组。 13.根据权利要求10的装置,其中所述分析单元配置为,对所述地址文件中出现的指 权 利 要 求 书CN 102789377 A 2/2页 3 令组进行统计。 14.根据权利要求10的装置,其中所述指令转化单元配置为: 根据机器指令地址确定该机器指令所对应的可执行函数,并取出该函数对应的指令 流;以及 将。
7、上述指令流进行反汇编,获得可读指令。 15.根据权利要求10的装置,其中信息获取单元配置为,用转化得到的可读指令替代 所述机器指令的分组信息中的机器指令。 16.根据权利要求10的装置,其中所述可读指令的分组信息包括以下中的至少一项: 指令组的数目、指令组中包含的指令数目、指令组中的可读指令、特定指令单独出现的次 数、特定指令在指令组中出现的次数、特定指令作为指令组中首个指令出现的次数。 17.根据权利要求10的装置,还包括,显示单元,配置为以图形化的形式呈现所述可读 指令的分组信息。 18.根据权利要求17的装置,其中所述显示单元配置为执行以下中的至少一项: 以热度条的形式示出单个指令的热度。
8、值; 利用统计块来表示各个指令组的出现情况;以及 图示出指令分组信息随时间的变化。 权 利 要 求 书CN 102789377 A 1/10页 4 处理指令分组信息的方法和装置 技术领域 0001 本发明涉及处理器中的指令分组,更具体而言,涉及用于追踪指令分组的方法和 装置。 背景技术 0002 信息技术的发展对处理器的执行能力提出了越来越高的要求。为了获得更高的处 理能力,处理器从早期的顺序执行(in order execution)逐渐发展为目前较多采用的乱序 执行(out-of-order execution),或称OoOE。 0003 在顺序执行方案中,处理器首先进行指令的预取和解码,。
9、然后根据解码的指令从 内存中读取操作数。如果操作数目前可用,指令被分发到适当的功能单元进行执行。在执 行完毕之后,功能单元将执行结果写回到寄存器文件中。但是,如果在当前时钟周期,一个 或多个操作数不可用(通常因为处理器正从内存中预取这些操作数),那么处理器就会停 下来等待(stall),直到这些操作数可用。 0004 由于顺序执行方案使得处理器浪费了一些指令时钟周期进行等待,因此许多高性 能处理器大都采用乱序执行方案来充分利用这些被浪费的时钟周期。 0005 具体地,在乱序执行方案中,首先将指令预取并排列到一个指令序列中。当序列中 的指令A由于操作数不可用而暂时无法执行时,处理器分析接下来的指。
10、令B。如果指令B的 执行不依赖于之前的指令A的执行结果,那么处理器就会将指令B发送到适当的功能单元 进行执行。执行的结果同样写入一个队列,用以恢复原始指令顺序。 0006 进一步地,在处理器,尤其是多核处理器,采用乱序执行方案的情况下,往往还会 结合指令的分组来并行执行多条指令,从而进一步提高处理器执行性能。图1示出处理器 进行指令分组和乱序执行的示意图。如图所示,处理器对指令的处理过程可以分为顺序处 理部分和乱序处理部分。在顺序处理部分中,指令预取单元预取多条指令,并将其排成一个 队列。接着,指令解码和分组单元对预取的指令进行解码,并对指令进行分组。一般地,指令 的分组依赖于处理器的结构、指。
11、令的特征等多种因素。通常来说,如果指令队列中的连续的 多个指令可以独立地并行执行,那么就有可能将这些指令分为一组,进行后续的并行执行。 在对指令进行分组之后,处理进入乱序处理阶段。在这个阶段中,首先,分组发射单元将一 个指令组中的多条指令分别发射到适当的功能单元。接着,这些功能单元各自独立地执行 接收到的指令,然后将执行结果写回寄存器文件。一旦一个指令组执行完毕,完成单元就会 发出一个指令组完成的信号,并向指令预取单元返回一个中断,通知其继续进行指令的预 取。 0007 在一个具体例子中,假定指令预取单元最多可以保存8条指令,并将其排成队列。 通过指令解码和分组单元的分析,指令队列中的前3条指。
12、令都是对操作数进行加法操作, 并且执行结果相互独立,于是指令解码和分组单元将这3条指令分为一组,发送给分组发 射单元。分组发射单元将这3条指令分别发送给3个功能单元,例如加法器,同时进行运 算。在这组指令均执行完毕后,完成单元发出表示指令组完成的信号,并向指令预取单元返 说 明 书CN 102789377 A 2/10页 5 回一个中断。接收到这样的中断信号,指令预取单元继续预取3条指令,从而保持指令队列 的长度。指令解码和分组单元继续对队列中的指令进行分析、解码和分组,使得指令能够得 到并行执行。 0008 可以看到,在分组指令的OoOE方案中,指令的分组情况与处理器计算效率有着密 切的关联。
13、。如果较多的连续指令能够分为一组,并行执行,那么执行效率会得到显著提高。 因此,分析和研究处理器中的指令分组情况对于提高处理器性能很有意义。例如,在编写程 序过程中以及在编译器后端生成代码的过程中,如果工程师能够了解处理器在运行时如何 对指令进行分组,以及在执行过程中OoOE方案如何作用于特定指令流,那么工程师就有可 能对指令进行优化,例如进行一定重排,使得重排的指令能够更有效地利用指令分组方案 和OoOE方案,从而更好地利用处理器的计算资源。 0009 然而,在现有技术中,给定一种类型的处理器和一个特定的指令序列,现有方法难 以获知处理器在运行时对指令的分组和执行情况,也无法分析和了解如何使。
14、得指令流更好 地利用OoOE方案来获得较高的执行效率。 0010 在现有技术的一项方案中,提供了一种代码分析器,该分析器根据处理器的结构 对指令进行静态分析,并给出关于指令分组的一些静态信息,例如用不同颜色标记不同的 指令组。然而,本领域人员可以理解,指令的分组是实时变化的。尽管这样的代码分析器能 够给出关于指令分组的一些静态分析,但是不能获知处理器在运行时的动态行为。在另一 种方案中,提供了一种处理器流水线分析器,当指令在处理器模拟器或真实处理器上执行 时,该分析器捕获指令的管线信息,并用流水线平面图示出这样的流水线信息。图2示出现 有技术捕获的流水线信息视图的例子。由于这样的流水线分析器并。
15、不是针对指令分组分析 的目的而专门设计的,因此如图所示,得到的平面图并不能示出在不同管线阶段,指令分组 随时间的变化,也无法示出在执行过程中哪些指令分组比较流行。 0011 因此,希望提供方案,能够获知处理器在运行时对指令进行分组的动态信息,从而 更好利用处理器的OoOE,提高执行性能。 发明内容 0012 鉴于以上提出的问题,提出本发明,旨在提供一种处理处理器运行时的指令分组 信息的方法和装置。 0013 根据本发明第一方面,提供一种处理指令分组信息的方法,包括:从缓存器中读取 处理器在运行时分组的机器指令的地址,形成地址文件;分析所述地址文件,获取所述机器 指令的分组信息;将所述地址文件中。
16、的所述机器指令转化为可读指令;以及基于所述机器 指令的分组信息和转化的可读指令,获得可读指令的分组信息。 0014 根据本发明第二方面,提供一种处理指令分组信息的装置,包括:地址读取单元, 配置为从缓存器中读取处理器在运行时分组的机器指令的地址,形成地址文件;分析单元, 配置为分析所述地址文件,获取所述机器指令的分组信息;指令转化单元,配置为将所述地 址文件中的所述机器指令转化为可读指令;以及信息获取单元,配置为基于所述机器指令 的分组信息和转化的可读指令,获得可读指令的分组信息。 0015 利用上述的方法和装置,可以动态地获得处理器在运行时对指令的分组处理情 况,并将其表示为用户可读的形式,。
17、使得用户可以了解指令的分组信息,从而更好地利用处 说 明 书CN 102789377 A 3/10页 6 理器的处理性能。 附图说明 0016 图1示出处理器进行指令分组和乱序执行的示意图; 0017 图2示出现有技术捕获的流水线信息视图的例子; 0018 图3示出根据本发明一个实施例的获取指令分组信息的方法的流程图; 0019 图4示出根据本发明一个实施例的处理系统的示意图; 0020 图5示出根据本发明一个实施例的地址表的例子; 0021 图6A示出根据本发明一个实施例的机器指令的分组信息的例子; 0022 图6B示出根据本发明一个实施例的指令转化表的例子; 0023 图7A-7B示出根据。
18、本发明一个实施例的可读指令的分组信息的例子; 0024 图8A-8C示出根据本发明实施例的图形化的分组信息; 0025 图9示出根据本发明一个实施例的装置的示意框图;以及 0026 图10示出适于用来实现本发明实施方式的示例性计算系统的框图。 具体实施方式 0027 所属技术领域的技术人员知道,本发明的多个方面可以体现为系统、方法或计算 机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完 全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的 软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算 机可读。
19、介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。 0028 可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计 算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不 限于电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组 合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线 的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可 编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器 件、磁存储器件、或者上述。
20、的任何合适的组合。在本文件的语境中,计算机可读存储介质可 以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者 与其结合使用。 0029 计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计 算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括但不 限于电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为 计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用 或者与其结合使用的程序的任何计算机可读介质。 0030 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限 于无线。
21、、电线、光缆、RF等等,或者任何合适的上述组合。 0031 用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何 组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C+ 说 明 书CN 102789377 A 4/10页 7 之类,还包括常规的过程式程序设计语言-诸如“C”程序设计语言或类似的程序设计语 言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立 的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络包括局域网。
22、 (LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通 过因特网)连接到外部计算机。 0032 以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和 /或框图描述本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图 和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提 供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器, 使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图 中的方框中规定的功能/操作的装置。 0033 也可以把这些计算机程序指令。
23、存储在能指令计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包 括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means) 的制造品。 0034 也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计 算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而 在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定 的功能/操作的过程。 0035 下面参照附图,结合具体实施例对本发明进行描述。这样的描述仅仅出于说明目 的,而不意图对本发明的。
24、范围进行限制。 0036 图3示出根据本发明一个实施例的获取指令分组信息的方法的流程图。如图3所 示,本实施例的方法包含如下步骤:在步骤31,从缓存器中读取处理器在运行时分组的机 器指令的地址,形成地址文件;在步骤33,分析所述地址文件,获取所述机器指令的分组信 息;在步骤35,将所述地址文件中的所述机器指令转化为可读指令;在步骤37,基于所述机 器指令的分组信息和转化的可读指令,获得可读指令的分组信息。 0037 具体地,在步骤31,从缓存器中读取分组的指令的地址。这就要求缓存器能够记录 并存储处理器在运行时对指令的分组情况。为此,可以对现有技术的处理系统进行改进,添 加具有上述功能的缓存器。
25、。 0038 图4示出根据本发明一个实施例的处理系统的示意图。如图所示,该实施例中的 处理系统包含处理器40,性能监视器42和缓存器44。处理器40与图1所示的现有处理器 相同,包含顺序处理部分和乱序处理部分,用于对指令进行分组执行。并且,如前所述,处 理器40包含完成单元,每当处理器完成一组指令的执行,完成单元就会发出一个指令组完 成信号,并向指令预取单元返回一个中断,通知其继续进行指令的预取。相应地,完成单元 中临时存储有刚刚执行完毕的指令组的信息,例如包括,指令组中指令的个数,指令的地址 等。并且,完成单元会在上述中断信号中包含所述指令组中指令个数的信息,由此预取单元 才会知道接下来要补。
26、充几个指令到指令队列中。为了获得处理器执行的指令组的信息,在 本实施例中,将性能监视器42构造为捕获完成单元发出的指令组完成信号,并由此向缓存 说 明 书CN 102789377 A 5/10页 8 器44发出更新信号。在该更新信号的触发下,缓存器44从完成单元读取执行的指令组的 信息,从而记录分组的指令的地址。 0039 具体地,在一个例子中,性能监视器42构造为在现有的性能监视器的基础上添加 计数器。该计数器设置为对捕获的指令组完成信号的出现次数进行计数。每当该计数增加 1,性能监视器42就向缓存器44发出一个更新信号。 0040 响应于接收到的更新信号,缓存器44从处理器40的完成单元读。
27、取所执行的指令 组的信息。具体地,缓存器44可以从处理器40中获取到刚刚执行完毕的一组指令中的各 个指令的地址。 0041 可以理解,缓存器44也可以以其他方式被触发从而读取指令组的地址信息。在一 个实施例中,性能监视器42以其他方式生成上述更新信号,例如直接将捕获的指令组完成 信号转发给缓存器44作为更新信号而不对信号进行计数。或者,在另一个实施例中,缓存 器44可以直接从完成单元捕获上述指令组完成信号,在该信号触发下从处理器40读取执 行的指令组的地址信息。 0042 要注意的是,在这个阶段,处理器40所执行的指令为机器指令,也就是汇编指令。 处理器通常用逻辑地址来标记这些指令,因此,缓存。
28、器44通过上述方式获得的地址为机器 指令的逻辑地址。 0043 为了记录所获得的指令地址,在一个实施例中,缓存器44逐一记录所读取的指令 的逻辑地址,并对同一组的指令进行标记。在另一实施例中,缓存器44包含地址寄存器 441,用于记录一个指令组中第一个指令的地址,以及偏移寄存器442,用于记录上述的指令 组中其他指令的地址相对于第一个指令地址的偏移。由于处理器40为队列中的指令分配 的逻辑地址一般是连续的,因此,基于一个指令组中第一个指令的地址和其他指令相对于 第一个指令的偏移,就能够很容易地获得指令组中全部指令的地址。因此,采用地址寄存器 441和偏移寄存器442的方式,缓存器44可以用较小。
29、的缓存空间记录分组指令的地址信息。 0044 基于以上描述的处理系统,就可以从缓存器44中读取分组的机器指令的地址,如 图3中步骤31所示。具体地,所读取的地址可以包括指令组中首个指令的地址和其他指令 相对于首个指令的偏移。 0045 在一个实施例中,缓存器44中记录有多个指令组的地址信息,并响应于更新信 号,不断地更新和添加地址信息。此时,在步骤31中,可以定期地从缓存器44中读取上述 多个指令组的地址信息。在另一实施例中,缓存器44响应于更新信号,用最新的指令组的 地址信息覆盖原有的地址信息,也就是说,每次只存储最新的指令组的地址信息。在这种情 况下,在步骤31中,同样地响应于上述更新信号。
30、,每次从缓存器44中读取最新指令组的地 址信息,并结合之前读取的指令地址,从而获得多个指令组的地址信息。 0046 根据一个实施例,在步骤31,将获得的多个指令组的地址信息组织成一个地址文 件。该地址文件的格式应得到后续用于分析和处理指令地址的工具和应用的支持。 0047 在一个具体例子中,多个指令组的地址信息被组织为地址表的形式作为地址文 件。图5示出根据本发明一个实施例的地址表的例子。在图5的例子中,示例性地示出了 在缓存器存储的三个指令组的地址信息。在第一个指令组中,第一指令的地址为IA1,其他 指令相对于第一指令的偏移为0,1,2,其中0表示第一指令本身;在第二个指令组中,第一 指令的。
31、地址为IA2,其他指令的偏移为0,1;在第三个指令组中,第一指令的地址为IA1,其 说 明 书CN 102789377 A 6/10页 9 他指令的偏移为0,也就是说,第三指令组仅包含地址为IA1的一个指令。对于从缓存器中 获取到的这些指令信息,可以利用右图的地址表来记录每个组的指令地址。如右图所示,地 址表的每一条目,例如每一行,表示一个指令组,其中包括该指令组中首个指令的地址和以 二进制形式表示的其他指令相对于首个指令的地址偏移。具体地,在每一行中,0-63位被 保留用于记录一个指令组中第一个指令的完整地址,后面的位用于记录该指令组中其他指 令相对于第一个指令的偏移。在偏移数目不大于15的。
32、情况下,可以用4个位来表示一个偏 移。例如,表格第一行记录了上述第一个指令组的地址信息,其中前64位记录了其中第一 个指令的地址IA1,接下来的12位分别记录了三个偏移0,1,2的二进制表示:0000,0001, 0010。相应地,表格第二行和第三行分别记录了上述的第二个和第三个指令组的指令地址。 由此,通过这样的表格,就可以简单地用数字记录指令的分组情况。 0048 可以理解,也可以采用其他格式的地址文件来记录指令地址信息,例如记录每个 指令的完整地址,并用特定符号标记指令组的开始与结束,等等。可以理解,本领域技术人 员还可以想到采用更多形式的地址文件,只要这样的格式与后续相关应用相一致,能。
33、够得 到后续应用的支持。 0049 在形成上述地址文件的基础上,在图3的步骤33,本实施例的方法对地址文件进 行分析,从而获取机器指令的分组信息。 0050 具体地,在一个实施例中,通过分析上述地址文件,可以获知该地址文件包含的指 令组的数目、每个指令组中指令的数目及指令地址。进一步地,还可以对地址文件中出现的 指令组进行计数和统计,由此得出各个指令组的出现次数或出现频率。 0051 图6A示出根据本发明一个实施例的机器指令的分组信息的例子。在该例子中,通 过分析地址文件,统计得出了各个指令组的出现次数,其中每个指令组以第一个指令的地 址和组内其他指令的偏移来标记。具体地,第一个指令组仅包含一。
34、条指令,出现次数为2; 第二个指令组包含地址末位为164的指令以及相对偏移为1的指令共两条指令,这两条指 令作为一个指令组共出现了10次。基于图6A的分组信息,还可以进一步得出更具体的信 息,例如各个指令出现的次数等等。并且,可以理解,步骤33获得的分组信息并不限于图6A 所示的信息和格式。 0052 然而,可以想到,此时的指令仍然是机器指令,并以逻辑地址进行标记,如图6A所 示例性示出。通常来说,用户,例如分析人员和工程师,并不能直接解读这样的用逻辑地址 标记的机器指令,因此仅仅获得这样的信息对于了解并利用指令分组来说还远远不够。 0053 因此,在图3的步骤35,本实施例的方法将上述地址文。
35、件中的机器指令转化为可 读指令,此处的可读指令是指程序员、工程师等本领域技术人员能够直接解读的指令。在一 个实施例中,可以利用a2n工具和反汇编工具进行指令的转化。 0054 a2n(address to name)工具是现有的操作系统中提供的一项工具,用于根据指令 地址找到该指令所对应的可执行代码符号,通常是所调用的函数名称。利用a2n工具确定 这样的函数之后,就可以取出实现该函数功能的指令流。一般地,这时的指令流是二进制代 码的形式。接着,利用反汇编工具(disassembler)将上述指令流反汇编为用户能够理解的 可读指令。由此,综合利用a2n工具和反汇编工具,就可以将从处理器获得的机器。
36、指令转化 为可读指令。 0055 图6B示出根据本发明一个实施例的指令转化表的例子。在图6B的例子中,对图 说 明 书CN 102789377 A 7/10页 10 6A的分组信息中涉及的指令进行了指令转化,并将转化前后的指令标记进行对应,从而形 成转化表。具体地,根据每个指令的地址,将其转化为可读指令。出于清楚和简明的目的, 在此用a,b,c,d示意性示出转化的可读指令。 0056 应该理解,尽管在图3的图示中,在获取机器指令的分组信息的步骤33之后才执 行指令转化的步骤35,但是,这样的执行方式仅仅是一种示例。实际上,步骤33和步骤35 的执行顺序并不受到该示例的限制。在一种实施例中,可以。
37、先执行步骤35来进行指令转 化,然后执行步骤33来获得机器指令的分组信息;或者,在另一种实施例中,可以同时执行 步骤33和35。因此,步骤33和35可以以任意顺序执行,从而分别对机器指令进行分析和 转化。 0057 基于步骤33获得的机器指令的分组信息和步骤35获得的转化信息,在图3的步 骤37,通过将上述两种信息进行综合,获得可读指令的分组信息。具体地,在机器指令的分 组信息中,仍然以指令地址来标记各个机器指令。而另一方面,步骤35中进行的指令转化 给出了指令地址与可读指令之间的对应关系。根据这样的对应关系,将机器指令分组信息 中的机器指令替换为可读指令,即可得到可读指令的分组信息。例如,在。
38、图6A示例性示出 的机器指令分组信息中,每一行示出一个指令组的分组信息,其中包含第一个指令的地址 和其他指令的相对偏移。将上述相对偏移分别加上第一个指令的地址即可获得各个指令的 完整地址。将每个指令的地址与图6B所示的转化表进行对比,即可获得转化后的可读指 令。用可读指令替换图6A中的机器指令地址,即可得到可读指令的分组信息,如图7A,7B 所示。 0058 可以理解,图7A-7B所示为根据本发明一个实施例的可读指令的分组信息的例 子,其中图7A的例子中包含了与指令分组相关的多种信息,例如指令组的数目、每个指令 组中包含的指令数目、指令名称等。在获得上述分组信息的基础上,本领域技术人员还可以 。
39、进行进一步的分析和统计,从而根据实际需要得出附加的或更具体的分组信息。例如,可以 在图7A的分组信息的基础上针对每个单个指令进行统计,获得该指令单独出现的次数,在 组中出现的次数,以及作为指令组中首个指令出现的次数等等,如图7B所示。获得这样的 附加的或更具体的信息的过程也都属于本发明范畴之内。 0059 由于在步骤31中可以实时地从缓存器读取处理器的分组指令,因此,由此获得的 指令分组信息可以是动态的,从而反映处理器在运行时对指令的分组情况。基于这样的指 令分组信息,用户,例如程序员和工程师,就可以清楚地了解处理器对指令的分组处理情 况,例如给定特定的指令流,处理器是如何对其进行分组和处理的。
40、;哪些指令倾向于形成一 个指令组,哪些指令在指令分组中比较流行等等。并且,由于指令分组信息是以可读指令的 形式示出的,因此,用户可以更容易地解读这样的分组信息,并利用这样的信息来进行代码 优化,从而使得编写或生成的代码能够更好地利用处理器的分组规则。 0060 为了更好地示出上述的指令分组信息,在一个实施例中,图3的方法还包括显示 步骤(未示出),其中将获得的可读指令的分组信息以可视化、图形化的形式示出。 0061 图8A-8C示出根据本发明实施例的图形化的分组信息。在一个实施例中,利用热 度条来示出每个指令的热度值,其中热度值正比于指令在指令组中出现的次数。也就是说, 一个指令作为指令组成员。
41、的次数越多,该指令对于指令分组来说越“热门”,因此热度值越 高。并且,可以在热度条上用不同颜色或图案表示不同的热度值范围,使得指令热度的表示 说 明 书CN 102789377 A 10 8/10页 11 更加直观。图8A示出根据图7B的指令分组信息表示的热度条,其中示出了指令a,b,c,d 的热度。 0062 在一个实施例中,利用统计块来表示各个指令组的出现情况。图8B示出根据图7A 的指令分组信息表示的统计块视图。如图所示,用一个统计块表示一个指令组,其中统计块 的高度对应于构成该指令组的指令数目,统计块的宽度等于该指令组的出现次数。基于如 此定义的高度和宽度,还可以计算每个统计块的面积,。
42、将面积值作为该指令组的流行程度。 并且,可以基于计算的流行程度,对统计块进行排列。具体地,可以按照流行程度从大到小 的顺序将统计块从左到右排列。在一个例子中,还可以用不同颜色和/或图案填充这些统 计块,由此表示不同的流行程度范围。 0063 在一个例子中,可以将图8A和图8B的图示结合在一起,同时示出单个指令的热度 和指令组的流行程度。 0064 在一个实施例中,还可以示出指令分组信息随时间的变化,如图8C所示。在图8C 的视图中,横轴表示时间,纵轴表示被执行的指令,覆盖纵轴上若干指令的纵向线段表示特 定时刻处理器执行的指令组的构成。随着指令分组信息的更新,表示所执行的指令组的纵 向线段随时间。
43、轴而变化,从而动态示出处理器对指令的分组情况。在一个例子中,通过选择 特定区域中的纵向线段,可以示出该线段对应的指令组的详细信息,包括首个指令的地址, 其他指令的偏移等等。 0065 可以理解,将指令分组信息以可视化、图形化的形式呈现出来使得分组信息的表 示更加直观,从而有助于用户的理解和分析。在其他实施例中,本领域技术人员在本发明实 施例的公开内容的教导下,可以想到采用其他的显示方式,这些显示方式也在本发明的发 明构思范围之内。 0066 因此,本发明的方法通过读取处理器在运行时分组的机器指令地址,并对读取的 机器指令进行分析和转化,从而获得可读指令的分组信息,并可选地将这样的分组信息可 视。
44、化呈现出来。通过这样的方法,用户可以了解处理器在运行时对指令的分组情况,从而有 可能更好地利用处理器的处理性能。 0067 基于同一发明构思,本发明的实施例还提供了获取指令分组信息的装置。图9示 出根据本发明一个实施例的装置的示意框图。如图9所示,本实施例的装置包含如下单元: 地址读取单元91,配置为从缓存器中读取处理器在运行时分组的机器指令的地址,形成地 址文件;分析单元93,配置为分析所述地址文件,获取所述机器指令的分组信息;指令转 化单元95,配置为将所述地址文件中的所述机器指令转化为可读指令;以及信息获取单元 97,配置为基于所述机器指令的分组信息和转化的可读指令,获得可读指令的分组信。
45、息。 0068 具体地,地址读取单元91从处理系统的缓存器中读取分组的指令的地址。所述缓 存器可以如图4所示。基于这样的缓存器,地址读取单元91可以读取各个指令组中的机器 指令的地址,包含指令组中首个指令的完整地址和其他指令相对于首个指令的偏移。在获 得多个指令组的地址信息的基础上,地址读取单元91可以将这些地址信息组织成一个地 址文件,例如地址表。该地址文件的格式应得到后续用于分析和处理指令地址的工具和应 用的支持。地址表的例子如图5所示。 0069 在形成地址文件的基础上,分析单元93对地址文件进行分析,从而获取机器指令 的分组信息,包括指令组的数目、每个指令组中指令的数目及指令地址等等。。
46、进一步地,分 说 明 书CN 102789377 A 11 9/10页 12 析单元93还可以对地址文件中出现的指令组进行统计,由此得出各个指令组的出现次数 或出现频率。图6A示出根据一个实施例的机器指令的分组信息的例子。 0070 另一方面,指令转化单元95将上述地址文件中的机器指令转化为可读指令。具体 地,指令转化单元95可以利用a2n工具,根据指令地址找到该指令所对应的可执行函数名 称,并取出该函数对应的指令流,然后利用反汇编工具,将这样的指令流反汇编为用户能够 理解的可读指令。指令转化的例子如图6B所示。 0071 应该理解,上述的分析单元93和指令转化单元95可以相互独立地并行执行,。
47、而不 受执行顺序的限制。 0072 基于分析单元93获得的机器指令的分组信息和指令转化单元95获得的转化信 息,信息获取单元97通过将上述两种信息进行综合,获得可读指令的分组信息。图7A-7B 示出根据一个实施例的可读指令的分组信息的例子。 0073 为了更好地示出获得的指令分组信息,在一个实施例中,图9的装置还包括显示 单元(未示出),配置为将获得的可读指令的分组信息以可视化、图形化的形式示出。具体 地,在一个实施例中,显示单元可以以热度条的形式示出单个指令的热度值,如图8A所示; 在一个实施例中,显示单元可以利用统计块来表示各个指令组的出现情况,如图8B所示; 在一个例子中,显示单元还可以。
48、将图8A和图8B的图示结合在一起进行显示;在另一个实施 例中,显示单元还可以示出指令分组信息随时间的变化,如图8C所示。 0074 由于图9所示装置的执行原理和方式与前述参照图3进行描述的方法相对应,因 此不再赘述。利用上述的方法和装置,可以动态地获得处理器在运行时对指令的分组处理 情况,并将其表示为用户可读的形式,使得用户可以了解指令的分组信息,从而有可能更好 地利用处理器的处理性能。 0075 图10示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所 示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只 读存储器)103、系。
49、统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行 接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113 和显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘 控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110 与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控 制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制 器109耦合。应当理解,图10所述的结构框图仅仅为了示例的目的而示出的,而不是对本 发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。 0076 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中。