一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于收集装置的状态信息的技术的制作方法

2022-12-24 09:55:53 来源:中国专利 TAG:

用于收集装置的状态信息的技术


背景技术:

1.本发明技术涉及用于收集装置的状态信息的机制。
2.存在许多期望监控程序执行的情况。当对程序执行执行此类监控时,通常期望在特定时间点对监管码采用异常,使得可提取与程序的执行相关的信息。例如,当执行统计分析时,特定指令的执行可使得创建记录以捕获与那些指令的执行相关的信息,并且随后可能引发异常。通常,该异常是异步异常,有时也称为中断,该异步异常被发给在多个中断源之间按优先级进行处理的中断控制器。通过此类方法,中断控制器可随后触发合适的异常处理例程以引用由此类统计分析创建的记录。
3.又如,性能监控技术可用于例如使用一系列计数器追踪特定事件的发生,并且在特定时间点,可能对中断控制器引发异步异常,使得可运行异常处理例程以便查看由于此类性能监控而维护的事件信息。
4.除可在监控程序执行时捕获的上述信息之外,还可能期望捕获关于装置在使得由那些程序监控技术捕获信息的事件发生时的状态的其他信息。然而,到已由中断控制器选择异步异常从而使得执行相关异常处理例程时,将在干预周期中发生程序的继续执行,从而系统在执行异常处理例程时的状态可能无法准确地反映系统在更早的感兴趣时间点的状态,因此可能难以将装置的此类状态信息与从程序执行的监控中获得的信息关联。


技术实现要素:

5.在一个示例性布置中,提供了一种装置,该装置包括:处理流水线,该处理流水线用于执行指令序列;和感兴趣指令指定电路,该感兴趣指令指定电路用于将该序列中的指令中的至少一条指令识别为感兴趣指令,每条感兴趣指令是针对其将收集该装置的与该感兴趣指令的执行相关联的给定状态信息的指令;其中:该感兴趣指令指定电路被布置成针对每条所识别的感兴趣指令应用定义的标准来确定在该指令序列中比该感兴趣指令更后面的进一步指令,并将该进一步指令标记为具有与其相关联的同步异常;并且该处理流水线响应于该进一步指令到达该处理流水线的给定阶段并被标记为具有与其相关联的该同步异常以触发该同步异常,而非执行该进一步指令,从而使得该处理流水线执行给定异常处理例程以便收集该给定状态信息。
6.在另一示例性布置中,提供了一种收集装置的给定状态信息的方法,该方法包括:采用处理流水线来执行指令序列;以及将该序列中的指令中的至少一条指令识别为感兴趣指令,每条感兴趣指令是针对其将收集该装置的与该感兴趣指令的执行相关联的给定状态信息的指令;针对每条所识别的感兴趣指令,应用定义的标准来确定在该指令序列中比该感兴趣指令更后面的进一步指令,并将该进一步指令标记为具有与其相关联的同步异常;以及响应于该进一步指令到达该处理流水线的给定阶段并被标记为具有与其相关联的该同步异常,触发该同步异常,而非执行该进一步指令,从而使得该处理流水线执行给定异常处理例程以便收集该给定状态信息。
7.在又一示例性布置中,提供了一种用于控制主机数据处理装置以提供指令执行环
境的计算机程序,该计算机程序包括:处理程序逻辑,该处理程序逻辑用于执行一系列流水线阶段中的指令序列;和感兴趣指令指定程序逻辑,该感兴趣指令指定程序逻辑用于将该序列中的指令中的至少一条指令识别为感兴趣指令,每条感兴趣指令是针对其将收集与该感兴趣指令的执行相关联的给定状态信息的指令;其中:该感兴趣指令指定程序逻辑被布置成针对每条所识别的感兴趣指令应用定义的标准来确定在该指令序列中比该感兴趣指令更后面的进一步指令,并将该进一步指令标记为具有与其相关联的同步异常;并且该处理程序逻辑响应于该进一步指令到达给定流水线阶段并被标记为具有与其相关联的该同步异常以触发该同步异常,而非执行该进一步指令,从而使得该处理程序逻辑执行给定异常处理例程以便收集该给定状态信息。
8.在又一示例性布置中,提供了一种装置,该装置包括:处理流水线装置,该处理流水线装置用于执行指令序列;和感兴趣指令指定装置,该感兴趣指令指定装置用于将该序列中的指令中的至少一条指令识别为感兴趣指令,每条感兴趣指令是针对其将收集该装置的与该感兴趣指令的执行相关联的给定状态信息的指令;其中:该感兴趣指令指定装置被布置成针对每条所识别的感兴趣指令应用定义的标准来确定在该指令序列中比该感兴趣指令更后面的进一步指令,并将该进一步指令标记为具有与其相关联的同步异常;并且该处理流水线装置响应于该进一步指令到达该处理流水线装置的给定阶段并被标记为具有与其相关联的该同步异常以触发该同步异常,而非执行该进一步指令,从而使得该处理流水线装置执行给定异常处理例程以便收集该给定状态信息。
附图说明
9.将参考如附图所示的本技术的示例,仅以例示的方式进一步描述本技术,其中:
10.图1是根据一个示例性具体实施的装置的框图;
11.图2是示出在一个示例性布置中图1的感兴趣指令指定电路的操作的流程图;
12.图3是示出根据一个示例性布置的响应于已由感兴趣指令指定电路识别的进一步指令的处理流水线的操作的流程图;
13.图4是示意性地示出在程序执行期间调用栈缓冲器的使用的流程图;
14.图5a至图5c示出了根据本文所述的技术的可用于确定进一步指令的各种类型的标准;
15.图6是示出可在一个示例性具体实施中使用的统计分析技术的流程图;
16.图7是示出可根据一个示例性具体实施使用的另选的统计分析技术的流程图,其中采用过滤机制;
17.图8是示出可根据一个示例性具体实施使用的性能监控技术的流程图;
18.图9是示出根据一个示例性具体实施的感兴趣指令指定电路如何与调用栈缓冲器关联使用的流程图;并且
19.图10示出了可使用的模拟器具体实施。
具体实施方式
20.如之前所论述的,存在可用于监控程序执行的各种技术,诸如生成与特定指令的执行关联的记录的统计分析,以及可持续追踪在程序的执行期间特定事件的发生的性能监
控。在后一种情况下,那些事件通常由特定指令的执行引起。
21.根据本文所述的技术,提供了一种装置,该装置具有:处理流水线,该处理流水线用于执行指令序列;和感兴趣指令指定电路,该感兴趣指令指定电路用于将该序列中的指令中的至少一条指令识别为感兴趣指令,每条感兴趣指令是针对其将收集该装置的与该感兴趣指令的执行相关联的给定状态信息的指令。
22.因此,根据本文所述的技术,特定指令被识别为期望获得关于装置在执行那些指令时的状态的相关联状态信息的指令。然而,如之前所提及的,在监控程序执行时,通常的情况是使用异步异常机制,并且特别是装置内提供的用于监控程序执行的电路可能会在特定时间点引发异步异常,然后由中断控制器处理异步异常,从而适时导致调用异常处理例程来处理那些异步异常。然而,如果在感兴趣指令的执行之后使用此类机制,则已经发现在执行感兴趣指令的时间点与执行异常处理例程的后续时间点之间存在显著滑移。因此,虽然此类异常处理例程可被布置成采集装置的所需状态信息,但是可能出现采集到的状态信息可能无法准确地表示装置在执行感兴趣指令时的状态,因此可能用处不大。
23.存在的另一种类型的异常是同步异常。在同步异常与指令相关联时,则当遇到指令时,例如当该指令到达处理器流水线中的特定阶段时,采用同步异常而非执行该指令。同步异常的使用可用于多种情况,例如以实施“指令故障”机制。例如,如果加载或存储指令正在寻求访问其无权访问的存储器区域,则可使用同步异常技术来引发故障,而非寻求执行加载或存储指令。
24.然而,引发同步异常而非执行感兴趣指令将不是有用的,因为有必要执行感兴趣指令以便随后可捕获装置的与感兴趣指令的执行相关联的该给定状态信息。还有必要执行感兴趣指令以便由上文提及的程序监控电路(例如,之前论述的统计分析或性能监控电路)捕获的与该指令的执行相关联的信息。
25.根据本文所述的技术,为了缓解与在引发异步异常的时间与调用相关联的异常处理例程的时间之间的滑移相关联的之前提及的问题,利用同步异常的上述概念,但不与感兴趣指令本身关联。特别是,感兴趣指令指定电路被布置成针对每条所识别的感兴趣指令应用定义的标准来确定在该指令序列中比该感兴趣指令更后面的进一步指令,并且随后被布置成将该进一步指令标记为具有与其相关联的同步异常。根据用于选择感兴趣指令的标准,有可能出现进一步指令已被处理流水线提取,但是如果否,则感兴趣指令指定电路可进入监控被提取的指令的状态,等待满足该标准的指令(例如,特定类型的下一条指令)被提取,此时可将该指令识别为进一步指令。
26.然后,处理流水线响应于进一步指令到达处理流水线的给定阶段并被标记为具有与其相关联的同步异常以触发同步异常,而非执行进一步指令。这使得处理流水线执行给定异常处理例程,以便收集给定状态信息。当进一步指令到达处理流水线的给定阶段时使得触发同步异常的该阶段可以是处理流水线内的任何合适阶段。给定阶段可以是例如将执行进一步指令的执行阶段,在该情况下触发同步异常,而非执行该进一步指令。然而,给定阶段可另选地是比执行阶段更早的阶段,其中再次发生触发同步异常,而非允许继续执行进一步指令。
27.需要说明的是,除执行用于收集给定状态信息的给定异常处理例程之外,装置还可使用其他现有机制(诸如之前论述的统计分析机制或性能监控机制)来收集附加信息。由
于在进一步指令到达处理流水线的给定阶段时由给定异常处理例程收集的给定状态信息由同步异常触发,因此更有可能出现该给定状态信息可能与其他信息相关,该其他信息例如包括与感兴趣指令的执行相关联的信息。特别是,因为已根据所识别的感兴趣指令由感兴趣指令指定电路选择进一步指令,所以与使用之前描述的异步异常机制将会存在的确定相关性相比,在感兴趣指令的执行时间与响应于由进一步指令触发的同步异常而执行给定异常处理例程的时间点之间存在更多的确定相关性。
28.然而,需要说明的是,即使不存在由系统中的其他部件收集的其他信息,以上技术也是有用的。特别是,给定状态信息实际上可能是收集到的仅有信息,但是仍可有效地提供与感兴趣指令的执行相关的信息,这是由于由感兴趣指令指定电路选择进一步指令的方式。
29.如上所述,由于同步异常与进一步指令相关联,因此当该进一步指令到达处理流水线的给定阶段时,处理流水线触发同步异常,而非允许执行进一步指令。在一个示例性具体实施中,在执行适时从给定异常处理例程返回时,处理流水线随后可被布置成执行进一步指令。因此,同步异常与进一步指令的关联可能实际上仅仅是延缓该进一步指令的执行,而执行异常处理例程。
30.由感兴趣指令指定电路针对每条所识别的感兴趣指令应用以便确定进一步指令的定义的标准可采用多种形式。在一个示例性具体实施中,定义的标准使得感兴趣指令指定电路将在指令序列中相对于感兴趣指令的预先确定的位置处出现的指令确定为进一步指令。因此,感兴趣指令指定电路可仅将感兴趣指令之后的第n条指令选择为进一步指令,其中n可根据具体实施选择。例如,n如何选择可取决于期望的指令依赖性。例如,如果感兴趣指令y在指令序列中紧接在指令x之后,但是处理流水线允许乱序执行,并且通常会出现指令y实际上在指令x之前执行的情况,则将同步异常与指令y相关联将会强制在指令x与y之间定序,并防止指令y在指令x之前执行。这可能潜在地导致可能希望避免的某种探针作用,并且在该情况下,可决定使n大于1。然而,在不存在此类指令依赖性问题的情况下,可确定将n设置为等于1是适当的,以使执行感兴趣指令与由进一步指令触发同步异常之间的间隙最小化。
31.又如,定义的标准可使得感兴趣指令指定电路将在指令序列中在感兴趣指令之后出现的至少一种给定类型的指令确定为进一步指令。此处可选择各种类型的指令,但是特别感兴趣的是在被执行时可能引起期望收集的给定状态信息的改变的指令。特别是,如之前所论述的,期望该给定状态信息提供关于装置在执行感兴趣指令时的状态的有用信息,因此期望避免任何稍后指令的执行,该执行可能以防止确定该状态信息在感兴趣指令的执行时的形式的方式来改变该给定状态信息。
32.作为可能希望由感兴趣指令指定电路在选择进一步指令时考虑的特定类型的指令的示例,特定类型的加载或存储指令可能是感兴趣的,因为它们将使得寄存器组的内容改变。又如,正被执行的程序可以由多个不同的子例程组成。一些类型的指令将引起那些子例程之间的转变,这继而将引起由装置维护的特定状态信息的内容的改变,以持续追踪那些子例程。例如,调用栈缓冲器可维护用于处理子例程之间的转变的信息,其中每当将发生向新子例程的转变时,向缓冲器的顶部中添加条目以便捕获当从该子例程适时返回时使用的信息。类似地,每当发生从子例程返回时,移除最近添加到调用栈缓冲器中的条目并消耗
存储在其中的信息。
33.由感兴趣指令指定电路应用的定义的标准可监控任何数量的给定类型的感兴趣指令,例如考虑所有上文提及的指令的示例或仅考虑其子集,并且随后可被布置成将在指令序列中在感兴趣指令之后下一条出现的一种或多种受监控类型的指令确定为进一步指令。另选地,定义的标准可使得感兴趣指令指定电路不将多种受监控类型中的一种受监控类型的下一条出现的指令指定为进一步指令,而是将在指令序列内出现的多种受监控类型中的一种受监控类型的第n条指令指定为进一步指令。
34.在一个示例性具体实施中,至少一种给定类型的指令可以是用于返回处理流水线以执行在执行当前子例程之前正在执行的程序代码的返回指令。另选地或除此之外,至少一种给定类型的指令可以是带链接的分支指令,该带链接的分支指令在被执行时将使得处理流水线停止当前子例程的处理并开始执行另一子例程。
35.上文在论述返回指令和带链接的分支指令时提到的当前子例程可采用多种形式,但是在一个示例性具体实施中,当前子例程可以是包括感兴趣指令的子例程,因此上述技术可用于将同步异常与在与包含感兴趣指令的子例程相同的子例程内出现的进一步指令相关联,从而使得给定状态信息(诸如之前提及的调用栈缓冲器的内容)能够在子例程发生改变之前,从而在感兴趣的给定状态信息有机会以防止确定该状态信息在执行感兴趣指令时的形式的方式变化之前,被异常处理例程捕获。
36.作为可采用以确定进一步指令的另一示例性方法,定义的标准可诸如使得感兴趣指令指定电路将在指令序列中在感兴趣指令之后出现、直到但不超过在指令序列中在感兴趣指令之后出现的至少一种给定类型的下一条指令的任何指令确定为进一步指令。因此,当采用此类方法时,不认为被选择为进一步指令的实际指令是重要的,只要它是在感兴趣指令之后出现并且直到但不超过特定类型的指令的指令即可。仅以举例的方式,可能期望同步异常在遇到感兴趣指令之后下一条带链接的分支指令之前或者至少最晚到遇到下一条带链接的分支指令时发生,并且上文提及的方法可实现该目的,而无需以其他方式确切地限制哪条指令具有与其相关联的同步异常。
37.在一个示例性具体实施中,装置还包括统计分析电路,该统计分析电路响应于给定感兴趣指令的执行以生成包括与给定感兴趣指令的执行相关的多个信息项的记录。在此类具体实施中,通过执行给定异常处理例程收集的给定状态信息可包括附加信息,该附加信息不被包括在由统计分析电路生成的记录中。因此,通过使用上述机制,可通过给定异常处理例程的执行来获得除在由统计分析电路生成的记录内收集的信息之外的信息。
38.由统计分析电路在记录内生成的多个信息项可采用多种形式,但是仅以不完全列举的方式,该记录可识别感兴趣指令的指令地址、指令类型(例如,指令是分支指令、加载指令还是存储指令等)、执行上下文(例如,处理流水线在哪个异常级别,从而例如,处理流水线是在用户空间中、在操作系统空间中还是在管理程序空间中工作)、哪个软件过程正在该异常级别中运行(其也可称为上下文标识)、感兴趣指令的延迟等。
39.形成通过执行给定异常处理例程收集的给定状态信息的附加信息可采用多种形式,但是在一个示例中包括与给定感兴趣指令的执行相关联的至少一个经软件定义的状态项。此类经软件定义的状态将不会自然地由统计分析电路捕获,但是当寻求分析针对感兴趣指令生成的记录时,可提供有用的附加信息。例如,该经软件定义的状态可用于寻求算出
在到达感兴趣指令之前遵循了哪条指令执行路径。
40.尽管经软件定义的状态可采用多种不同的形式,但是一个此类经软件定义的状态项可包括由装置维护的之前提及的调用栈缓冲器的内容。通过了解调用栈缓冲器的内容,也许能确定在包括感兴趣指令的子例程之前已执行的子例程序列。
41.在一个示例性具体实施中,统计分析电路被进一步布置成在与给定感兴趣指令的执行相关的多个信息项内包括在执行给定感兴趣指令时当前调用栈缓冲器指针值的指示。在通过给定异常处理例程的执行收集的给定状态信息包括至少调用栈缓冲器的内容的情况下,则在记录内提供这一条附加信息(即在执行给定感兴趣指令时存在的调用栈缓冲器指针值)可有助于解释调用栈缓冲器的内容。特别是,即使调用栈缓冲器指针在执行感兴趣指令的时间点与由异常处理例程收集调用栈缓冲器的内容的时间点之间的过渡期已改变,在配置有关于在执行感兴趣指令时存在的调用栈缓冲器指针值的附加信息的情况下,也许能准确地重建在执行感兴趣指令时调用栈缓冲器的内容。
42.关于在执行给定感兴趣指令时存在的当前调用栈缓冲器指针值的该信息可直接由异常处理例程使用,以决定要收集调用栈内容的哪个部分,或者另选地,异常处理例程可捕获整个调用栈内容,并且随后在某个稍后时间点,在执行捕获的调用栈内容时,可使用关于在执行给定感兴趣指令时当前调用栈缓冲器指针值的信息。
43.存在多种方式,其中感兴趣指令指定电路可被布置成识别每条感兴趣指令。然而,在一个示例性具体实施中,感兴趣指令指定电路被布置成应用选择标准来识别在执行该感兴趣指令时统计分析电路将记录多个信息项的每条感兴趣指令。存在多种形式的选择标准可供使用。例如,选择标准可被布置成使得选择每第n条指令,或者可应用更复杂的标准,诸如寻求检测特定类型的指令的发生,然后将该特定类型的指令选择为感兴趣指令。
44.当使用本文所述的技术时,在执行统计分析的情况下,则统计分析电路可被布置成针对每条所识别的感兴趣指令生成记录,并且此外,随后还将针对每条感兴趣指令识别进一步指令,其中该进一步指令具有与其相关联的同步异常,以便使得当该进一步指令到达处理流水线的给定阶段时使用之前所描述的同步异常机制执行给定异常处理例程。尽管这允许由异常处理例程收集之前提及的给定状态信息,以例如与由统计分析电路针对每条感兴趣指令生成的记录结合使用,但是这可能导致采用的异常的次数增加。例如,在不使用本发明技术的情况下,统计分析电路可能会针对多条感兴趣指令生成记录,将那些记录存储在缓冲器中,并且随后在某个预先确定的时间点发出异步异常,使得不一定针对每条感兴趣指令采用异常。
45.尽管本发明描述的技术具有使得针对每条感兴趣指令能够收集装置的特定状态信息的有益效果,但是在一些情况下,可能期望减少装置内所需的异常处理量。在一个示例性具体实施中,通过将选择标准布置成包括初始选择标准和进一步选择标准来实现这一点。然后,感兴趣指令指定电路可被布置成应用初始选择标准以便识别候选感兴趣指令。然而,感兴趣指令指定电路此外还可包括过滤器电路,该过滤器电路应用进一步选择标准来确定哪些候选感兴趣指令将被用作实际感兴趣指令。因此,可过滤初始选择的候选感兴趣指令中的一些候选感兴趣指令,从而减少响应于与对应的进一步指令相关联的同步异常而触发异常处理例程的次数。
46.执行过滤机制的时间可根据具体实施而改变。例如,在一个具体实施中,过滤器电
路可被布置成当候选感兴趣指令的类型属于一种或多种给定指令类型时,仅将该候选感兴趣指令视为感兴趣指令。因此,通过此类方法,可相对较早地(例如在流水线中的解码阶段)应用过滤,以便减少将由装置考虑的感兴趣指令的数量。
47.然而,另选地或除此之外,过滤器电路可被布置成当执行候选感兴趣指令时观察到给定行为时,将该候选感兴趣指令视为感兴趣指令。因此,根据此类方法,候选感兴趣指令可通过流水线,并且可推迟关于该候选感兴趣指令是否实际上将被视为感兴趣指令的决定,直到该候选感兴趣指令的执行行为已知为止。如果该执行行为并非感兴趣的,则这可使得感兴趣指令能够有效地从进一步考虑为感兴趣指令中排除。仅以例示性示例的方式,可以将加载或存储指令识别为候选感兴趣指令,但是可决定仅感兴趣的是寻求收集与具有相对较长延迟的那些加载或存储指令关联的之前提及的给定状态信息。因此,可以在该阶段将相对快速执行的任何加载或存储指令从进一步考虑为感兴趣指令中排除,使得仅相对缓慢地执行加载或存储指令,这些指令被保留为感兴趣指令指令,因此这些指令相关联的进一步指令具有与其关联地保留的同步异常。
48.在一个示例性具体实施中,统计分析电路响应于给定候选感兴趣指令的执行以获得与该给定候选感兴趣指令的执行相关的多个信息项,但当过滤器电路确定观察到给定行为时仅维护包括该多个信息项的记录。因此,统计分析电路可以初始地将候选感兴趣指令视为任何其他感兴趣指令,并开始将希望与该感兴趣指令关联地存储在记录中的多个信息项收集在一起。然而,如果在执行候选感兴趣指令时未观察到该指令的之前提及的给定行为,则可决定不维护针对该感兴趣指令的记录。
49.关于进一步指令的处理,如果尚未维护针对相关联的候选感兴趣指令的记录,则装置可被布置成当遇到进一步指令时不采用同步异常,而是允许进一步指令仅仅继续如常执行。
50.存在多种方式,其中可处理与候选感兴趣指令相关联的进一步指令。在一个示例性具体实施中,仅当候选感兴趣指令被过滤器电路处理为实际感兴趣指令时,才将在该进一步指令到达处理流水线的给定阶段时将相关联的进一步指令标记为具有与其相关联的同步异常。因此,到进一步指令到达处理流水线的该阶段时,如果候选感兴趣指令不再被视为实际感兴趣指令,则进一步指令可能不再被视为具有与其相关联的同步异常。
51.在一个示例性具体实施中,一旦已决定候选感兴趣指令是实际感兴趣指令,进一步指令就可仅具有与其相关联的同步异常。另选地,与候选感兴趣指令相关联的进一步指令可初始地具有与其相关联的同步异常,但是如果稍后决定候选感兴趣指令将不被视为实际感兴趣指令,则可从进一步指令中移除该同步异常关联。
52.在一些示例性具体实施中,装置还可包括性能监控电路,该性能监控电路用于在指令序列的执行期间维护指示一个或多个事件的发生的记录。在此类情况下,感兴趣指令指定电路可被布置成当给定指令的执行使得给定事件发生并且性能监控电路指示给定事件的发生已达到阈值水平时,将序列中的给定指令识别为感兴趣指令。通过此类方法,可响应于相关联的进一步指令而触发同步异常,从而使得能够捕获之前提及的给定状态信息,其中该信息随后可用于进一步分析,例如以提供与给定事件的发生已达到阈值水平的时间点相关的一些进一步上下文信息。在执行给定异常处理例程时捕获的给定状态信息可采用多种形式。例如,给定状态信息可具有之前论述的形式,例如提供与给定感兴趣指令的执行
相关联的至少一个经软件定义的状态项,诸如调用栈缓冲器的内容。
53.在一个示例性具体实施中,给定异常处理例程响应于与给定指令相关联的进一步指令到达处理流水线的给定阶段的执行,使得除给定状态信息之外还捕获由性能监控电路维护的记录的当前状态。因此,除可被捕获的之前提及的给定状态信息之外,当执行由进一步指令触发的异常处理例程时,还可捕获由性能监控电路维护的记录的内容或至少该内容的子集。
54.由性能监控电路维护的记录可采用多种形式,但是在一个示例性具体实施中,针对一个或多个事件中的每个事件,该记录包括指示自计数器值初始化以来该事件的发生次数的计数器值。由各种计数器追踪的事件可采用多种形式,并且实际上如果需要可追踪系统内的任何合适的量度。仅以举例的方式,计数器中的一个计数器可用于追踪特定高速缓存内高速缓存未命中的次数。例如,当执行加载或存储指令时,可确定在一级数据高速缓存中是否存在未命中,并且如果存在,则针对高速缓存未命中事件的事件计数器可递增。当在装置内保持针对多种事件的此类计数器时,这可提供可稍后在寻求分析程序执行时分析的有用性能监控记录。
55.考虑到上文提及的高速缓存未命中示例,则当加载或存储指令的执行使得针对高速缓存未命中的事件计数器达到阈值水平时,则可将该加载或存储指令标记为感兴趣指令,并且随后感兴趣指令指定电路可应用选择标准来确定将具有与其相关联的同步异常的进一步指令。当该进一步指令随后到达流水线中的给定阶段时,将触发同步异常,从而使得之前提及的异常处理例程被执行以便收集期望的装置的状态信息,并且任选地还采集关于由性能监控电路维护的计数器的全部或子集的信息。
56.作为本文所述技术的另一示例性用例,检测调用栈缓冲器达到满或空的特定阈值水平的情况可能是有用的。如之前所论述的,调用栈缓冲器可维护用于处理子例程之间的转变的信息,其中每当遇到带链接的分支指令时,向调用栈缓冲器中添加条目以便捕获当从响应于该带链接的分支指令而进入的子例程返回时使用的信息。此外,每当遇到返回指令时,从调用栈缓冲器中移除最近添加的条目并消耗存储在其中的信息。在调用栈缓冲器的条目内维护的信息可采用多种形式。例如,条目可包括与子例程的调用方相关的地址(或是带链接的分支指令或是子例程返回的目标,其将是在该带链接的分支指令之后的下一条顺序指令)或与被调用的子例程相关的地址。
57.无论信息是否存储在调用栈缓冲器内,缓冲器都具有有限的尺寸,因此如果缓冲器达到满或空阈值,例如如果缓冲器变满或变空,则可能需要干预。
58.根据本文所述的技术,感兴趣指令指定电路可被布置成当给定指令的执行引起调用栈缓冲器中的条目数量达到触发水平时,将序列中的该给定指令识别为感兴趣指令。然后识别对其挂起同步异常的进一步指令,使得当该进一步指令到达流水线中的给定阶段时,采用同步异常,以便使得执行异常处理例程,该异常处理例程随后可在分析调用栈缓冲器的状态时捕获可能有用的系统状态。
59.在一个示例性具体实施中,触发水平指示调用栈缓冲器已满,并且被识别为感兴趣指令的给定指令是使得达到触发水平的带链接的分支指令。进一步指令则是给定类型的后续指令流变更指令。例如,此处特别感兴趣的将是后续带链接的分支指令,因为该指令将寻求在调用栈缓冲器已满的情况下向调用栈缓冲器中添加另一条目。然而,在一些示例性
具体实施中,可更容易地将会引起与调用栈缓冲器的任何交互的下一条指令流变更指令标记为进一步指令,因此在一个示例性具体实施中,进一步指令可以是后续带链接的分支指令或后续返回指令中首先发生的指令。当在该后续指令流变更指令到达流水线的给定阶段时适时触发异常处理例程时,然后异常处理例程可确定是否需要对调用栈缓冲器的状态进行任何干预。
60.类似地,触发水平可另选地或除此之外指示调用栈缓冲器为空。在触发水平指示调用栈缓冲器为空的情况下,被识别为感兴趣指令的给定指令可以是使得达到触发水平的返回指令。同样,进一步指令可以是给定类型的后续指令流变更指令。此处特别感兴趣的是可能在栈已空的情况下寻求从栈中弹出条目的后续返回指令。然而,针对如之前所论述的相同原因,从硬件视点而言可决定将会与调用栈缓冲器交互的任何指令流变更指令中下一条发生的指令标记为进一步指令,从而例如将返回指令或带链接的分支指令中下一条发生的指令标记为进一步指令更简单。
61.现在将参考附图描述特定示例。
62.图1是根据一个示例性具体实施的装置的框图。提供了用于执行从存储器提取的指令序列的处理器流水线10。处理流水线包括多个阶段,例如图1所示的提取阶段15、解码阶段20、发出阶段25和执行阶段30。应当理解,在一些系统中,在处理流水线内可能存在进一步阶段,例如有利于乱序处理器中的寄存器重命名的重命名阶段。
63.提取阶段15被布置成向存储器发出提取请求,这些取出请求经由指令高速缓存50(必要时,和任何中间级高速缓存)处理,以便检索用于执行的指令序列。提取电路可有权访问有助于确定要提取哪些指令的特定结构,例如分支预测电路,其用于预测分支指令是否将被采用,并且在一些情况下预测采用的分支的目标地址。
64.被提取的指令通过解码阶段20,其中对被取出的指令进行解码以便识别需要由处理流水线执行以便实施每条指令的执行的操作。然后,被解码的指令随后传递到发出阶段25,其中被解码的指令进入排队等待调度到执行阶段30。执行阶段30可包括用于执行各种数据处理任务的多个不同执行单元,例如算术逻辑单元(alu)、浮点单元(fpu)、加载/存储单元(lsu)等。可在lsu内执行被提取的序列内的加载指令,以便经由一个或多个高速缓存(包括数据高速缓存55)将数据从存储器加载到寄存器堆60中的寄存器中。类似地,可在lsu内执行存储指令,以便将数据从寄存器堆60中的寄存器存储回存储器(存储操作可使得数据缓存在高速缓存分级结构中的高速缓存(诸如数据高速缓存55)中,而非在那时写回存储器)。
65.发出阶段可被布置成一旦指令所需的源操作数可用,例如一旦那些源操作数值在寄存器堆60中可用,或者在提供给执行阶段30的某条转发路径上可用,就可将那些指令调度到执行阶段。
66.统计分析电路65可被布置成响应于特定指令的执行以生成包括与那些指令的执行相关的多个信息项的记录。可提供用于存储由统计分析电路65生成的记录的缓冲器70。取决于具体实施由统计分析电路在每条记录内捕获的信息项可采用多种形式,但通常是与和该记录相关的指令的执行相关的信息项。因此例如,记录可捕获指令地址、指令类型、执行上下文(例如,处理流水线10正在哪个异常级别中工作)、正在该异常级别中运行的软件过程的指示(其也可称为上下文标识)、关于该指令的延迟的信息等。此类记录之后可作为
处理流水线10内监控程序执行的过程的一部分来分析。此类监控活动可在各种情况下,例如在寻求调试程序代码时或在处理流水线的正常操作期间执行。
67.其他结构也可用于获得可在监控程序执行时分析的有用信息。示例是性能监控单元(pmu)75,其可追踪在装置内发生的特定感兴趣事件。例如,pmu 75可维护一系列计数器80,其中每个计数器与特定事件相关联,其中计数器递增以便持续追踪每个感兴趣事件的发生次数。感兴趣事件可采用多种形式,但是一个具体示例可以是计数器,该计数器用于追踪特定高速缓存(诸如耦接到执行阶段30的lsu的1级数据高速缓存55)中高速缓存未命中。与由统计分析电路65产生的记录一样,由pmu 75保持的计数器80可在程序执行期间分析装置的操作时提供有用的信息。
68.然而,当分析此类信息时,有权访问关于装置在由统计分析电路创建特定记录时和/或在达到计数器内的特定阈值时的状态的特定状态信息也可能是有用的。另选地,获得此类状态信息以给出该信息在特定感兴趣时间点(诸如特定指令的执行)的形式的指示可能是有用的。感兴趣状态信息可采用多种形式,但是在一个示例性具体实施中该感兴趣状态信息是至少一个经软件定义的状态项,此类经软件定义的状态通常不会被部件(诸如统计分析电路65或pmu 75)追踪。作为特定示例,执行特定指令时调用栈缓冲器85的内容可能是有用的,该信息对其自身有用,或者在分析信息(诸如由统计分析电路65产生的记录或由pmu 75产生的计数器80)时提供附加的上下文。
69.根据本文所述的技术,提供了一种机制,该机制使得能够在如捕获的该状态信息可指示在执行感兴趣指令时存在的状态的时间点收集装置的期望状态信息而不直接干扰该感兴趣指令的执行。特别是,提供了感兴趣指令指定电路40,其被布置成应用特定标准以便识别在处理流水线10内执行的指令序列中出现的一条或多条感兴趣指令。能以多种方式选择感兴趣指令。例如,考虑统计分析电路65,则可以由感兴趣指令指定电路40将用于触发统计分析电路生成记录的每条指令指定为感兴趣指令。又如,当执行使得由pmu 75正在追踪的事件中的一个事件发生的指令,并且事件的该实例的发生使得pmu中的对应计数器80达到阈值水平时,则该指令也可被识别为感兴趣指令。
70.又如,引起由处理流水线10正在执行的子例程的改变的指令可使得条目被推入调用栈缓冲器85中或从调用栈缓冲器中弹出,并且如果此类指令的执行使得达到调用栈缓冲器85的特定满或空阈值,则该指令也可被识别为感兴趣指令。
71.根据本文所述的技术,当由感兴趣指令指定电路40识别出感兴趣指令时,感兴趣指令指定电路还应用定义的标准以便确定在指令序列中比该感兴趣指令更后面的进一步指令,并且随后将该进一步指令标记为具有与其相关联的同步异常。
72.因此,感兴趣指令的执行照旧继续进行,但是当进一步指令到达处理流水线的给定阶段时,并且假设同步异常仍与该进一步指令相关联(在本文中也称为对进一步指令挂起),则这可用于触发同步异常而非继续执行进一步指令。执行该分析的给定阶段可以是处理流水线10内的任何合适的阶段。在一个示例性具体实施中,给定阶段可以是执行阶段30,但是在另选的具体实施中,处理流水线中的更早阶段可用作当进一步指令到达该阶段时使得触发同步异常的给定阶段。
73.当触发同步异常时,这使得处理流水线执行给定异常处理例程以便收集上文提及的感兴趣状态信息,诸如例如调用栈缓冲器85的内容。该感兴趣状态信息可存储在装置内
部或从装置输出,并且可与其他信息(诸如由统计分析电路65针对感兴趣指令产生的相关联的记录,或者由pmu 75维护的一个或多个计数器80的内容)组合,例如,该内容在感兴趣指令引起事件发生继而使得计数器中的一个计数器达到阈值水平时可能是有用的。
74.由于同步异常不与感兴趣指令本身相关联这一事实,这不会阻止感兴趣指令以其正常方式执行。然而,通过适当选择将与感兴趣指令相关联的进一步指令,可确保在感兴趣指令的执行之后的确定时间点采用同步异常,这可显著提高在响应于该同步异常而执行异常处理例程时收集的状态信息的有用性。
75.图2是示出感兴趣指令指定电路40的操作的流程图。在步骤100处,由感兴趣指令指定电路40识别感兴趣指令。如之前所论述的,可使用多种不同的标准来识别每条感兴趣指令。例如,感兴趣指令指定电路可监控特定类型的指令并将那些指令标记为感兴趣指令,和/或可被布置成将序列内的每第n条指令识别为感兴趣指令。
76.一旦已识别出感兴趣指令,则在步骤105处应用定义的标准来确定在指令序列中比感兴趣指令更晚出现的进一步指令。此处应用的标准可采用多种形式,并且稍后将参考图5a至图5c来论述一些示例。然而,目的是识别合适的指令,使得当响应于该指令而触发同步异常,从而使得收集特定状态信息时,则该状态信息有可能表示该状态信息在执行感兴趣指令时的形式,或者至少为可从如捕获的状态信息推导出此类信息的形式。
77.一旦在步骤105处已识别出进一步指令,则在步骤110处将该进一步指令标记为具有与其相关联的同步异常,并且进一步指令的该标记与进一步指令一起通过处理流水线。如稍后将更详细地论述的,在一些示例性具体实施中,有可能在进一步指令到达之前提到的给定阶段之前,可移除同步异常与进一步指令的关联,但是假设到该进一步指令到达给定阶段时仍对进一步指令挂起同步异常,则这将触发同步异常,从而使得执行之前提及的异常处理例程以便收集给定状态信息。
78.参考图3更详细地论述该过程。特别是,在步骤150处,确定进一步指令是否已到达处理流水线的给定阶段并且仍被标记为具有与其相关联的同步异常。如之前所论述的,给定阶段可以是例如执行阶段30,但是可另选地是处理流水线中的更早阶段。
79.如果在步骤150处确定进一步指令已到达给定阶段并且被标记为具有对其挂起的同步异常,则在步骤155处触发同步异常。这使得处理流水线停止被提取的指令的执行,而是在步骤160处执行异常处理例程以收集给定状态信息。执行的确切的异常处理例程通常取决于同步异常的形式,因此在步骤155处触发的同步异常将用于确定需要执行的特定异常处理例程。
80.在步骤165处,一旦已由异常处理例程收集到给定状态信息,就从装置输出该给定状态信息,或者另选地将该给定状态信息存储在装置的某一合适的内部存储结构内以用于稍后分析。然后,在步骤170处,处理从异常处理例程返回,并且随后可恢复指令流的执行。此时,可随后继续执行进一步指令。这可在从异常处理例程返回时立即发生,例如如果触发同步异常的给定阶段是执行阶段,或者另选地可首先执行一条或多条其他指令,而进一步指令通过处理流水线的剩余部分直到其到达执行阶段,并且此时执行进一步指令。
81.图4示意性地示出了可有效地被本文所述的技术捕获的状态信息的一种形式。特别是,状态信息可包括调用栈缓冲器85的内容。调用栈缓冲器用于维护用于处理子例程之间的转变的信息,其中每当遇到带链接的分支(bl)指令时,向调用栈缓冲器中添加条目以
便捕获当从响应于该bl指令而进入的子例程返回时适时使用的信息。此类动作通常称为将条目推入调用栈缓冲器中。进一步,每当遇到返回指令时,移除最近添加的条目并消耗存储在调用栈缓冲器中的信息,此类动作通常称为从栈中弹出条目。
82.响应于bl指令而推入调用栈缓冲器中的信息可采用多种形式,前提条件是其指示信息足够使得后续能够从正由bl指令向其分支的子例程返回。在图4所示的示例中,每当遇到bl指令时,将针对正由bl指令从其分支的子例程的返回地址推入调用栈缓冲器中。维护调用栈指针以在任何特定时间点识别调用栈缓冲器的最上面的条目。因此,考虑图4,假设初始地正在执行子例程a,并且随后在时间点200处遇到引起转变到子例程b的bl指令。这使得针对子例程a的返回地址(即,当处理适时返回到子例程a时,将子例程a中将执行的下一条指令的地址)推入由当前调用栈指针所指向的调用栈的条目中。此外,调用栈指针随后递增,并且处理分支至子例程b。如该示例中时间点205、210所示,多个子例程嵌套,因此每当由于bl指令而发生子例程的改变时,将另外的返回地址条目推入调用栈缓冲器85中。因此,在时间点205处,将子例程b的返回地址推入调用栈中,并且随后调用栈指针递增,此外处理随后分支至子例程c。类似地,在时间点210处,将针对子例程c的返回地址推入调用栈中,并且调用栈指针递增,其中处理随后前进至子例程d。
83.在该时间点,调用栈缓冲器85的内容如图4所示。特别是,存在存储针对子例程a、b和c的返回地址的三条条目,并且调用栈指针已递增到指向下一条空条目。当到达时间点215时,遇到指示子例程d已完成的返回指令。此时,调用栈指针递减,并且随后由调用栈指针所指向的条目从调用栈中弹出。该信息提供针对子例程c的返回地址,从而允许处理返回到子例程c的执行。需要说明的是,此时,尽管包含针对子例程c的返回地址的条目已弹出并且其信息被消耗,但是通常不会在那时覆盖该信息。然而,由于当前调用栈指针现在指向该条目,因此如果遇到后续bl指令,则由于新返回地址被推入调用栈中由调用栈指针所指向的条目内,该新返回地址将覆盖针对子例程c的返回地址信息。
84.在步骤220处,假设遇到另一返回指令,使得调用栈指针递减,并且由该调用栈指针现在所指向的返回地址,即子例程b的返回地址弹出。然后处理返回到子例程b。
85.如果以举例的方式,感兴趣指令发生在子例程d中的时间点217,则可能期望照原样捕获在执行感兴趣指令时调用栈缓冲器的内容。如之前所论述的,这将是调用栈缓冲器85的形式,如图4所示。然而,如果在收集到该调用栈缓冲器内容之前遇到另一bl指令,则新条目将被推入调用栈缓冲器中,并且调用栈缓冲器内容将已改变。类似地,如果遇到一条或多条返回指令,则条目将从调用栈中弹出,并且调用栈指针将递减。尽管未立即覆盖该弹出的信息,但是当前调用栈指针将至少不再对应于如在时间点217存在的调用栈指针。进一步,如果遇到后续bl指令,诸如在时间点225所指示的,并且这在触发异常处理例程以捕获调用栈缓冲器状态信息之前发生,则这可能导致覆盖在时间点217存在的调用栈缓冲器的内容,使得不再能确定该内容。
86.根据本文所述的技术,可通过适当选择在感兴趣指令之后并因此使得触发同步异常的进一步指令来降低此类场景发生的可能性。图5a至图5c中示出了三种可能的示例性方法。根据图5a,当在步骤250处识别出感兴趣指令时,处理前进至步骤255,其中,感兴趣指令指定电路40将待紧接在感兴趣指令之后执行的指令识别为进一步指令。因此,这避免了处理可能将在捕获调用栈缓冲器的状态之前转变到不同子例程。
87.然而,在一些情况下,可决定不适合将紧接在后的指令标记为进一步指令。例如,可支持指令的乱序执行,并且通常可能的情况是将允许在感兴趣指令之前执行该紧接在后的指令。然而,通过将紧接在后的指令指定为进一步指令,从而对其挂起同步异常,这可防止此类重排序,并且可能引入探针作用。如果这被认为是个问题,则可通过对在感兴趣指令之后第n条指令(其中,n大于1)挂起同步异常来缓解这一问题。
88.作为可用于选择进一步指令的技术的另一示例,如图5b所示,当在步骤260处识别出感兴趣指令时,则感兴趣指令指定电路40可被布置成将下一条返回指令识别为进一步指令。在不存在下一条返回指令之前发生另一bl指令的情况下,这将确保同步异常仍在同一子例程中发生。然而,即使发生另一bl指令,使得新条目被推入栈中,但通过将下一条返回指令识别为进一步指令,确保了调用栈指针不会递减到低于在感兴趣指令发生时该调用栈指针的值,因此避免了在执行感兴趣指令时覆盖确实存在的相关调用栈内容的风险。
89.又如,如图5c所示,当在步骤270处识别出感兴趣指令时,则在步骤275处,感兴趣指令指定电路40可将下一条bl指令识别为进一步指令。这确保了即使首先遇到一条或多条返回指令,使得调用栈指针递减,在采用同步异常之前也将不会发生调用栈内容的覆盖。因此,通过如上文所论述的措施,可允许感兴趣指令如常执行,但提供将采用同步异常的确定时间点,从而允许在以防止在执行感兴趣指令时确定调用栈缓冲器的内容的方式改变其内容之前分析调用栈缓冲器的内容。
90.作为可采用以确定进一步指令的另一示例性方法,感兴趣指令指定电路40可将在指令序列中在感兴趣指令之后出现、直到但不超过至少一种给定类型的下一条指令的任何指令识别为进一步指令。在该情况下,不认为被选择为进一步指令的实际指令是重要的,只要它是在感兴趣指令之后出现并且直到但不超过指定类型的指令的指令即可。例如,此处指定类型可以是bl指令,因此此类方法将确保同步异常至少到遇到下一条bl指令时发生,而无需精确地限制哪条指令具有对其挂起的同步异常。
91.图6是示出本文所述的技术如何与诸如可以由统计分析电路65执行的统计分析关联使用的流程图。在步骤300处,应用选择标准来识别下一条感兴趣指令,该选择标准由感兴趣指令指定电路40应用。针对统计分析示例,可使用多个标准,例如,标准可以仅选择序列内的每第n条指令,或者另选地可寻找将标记为感兴趣指令的特定类型的指令。
92.在步骤305处,然后由感兴趣指令指定电路40识别出进一步指令,并且将该进一步指令标记为具有与其相关联的同步异常。可使用任何合适的方案来选择进一步指令,诸如例如使用之前参考图5a至图5c论述的技术。
93.在步骤310处,当执行感兴趣指令时,统计分析电路可采集与该感兴趣指令的执行相关的多个信息项,并将该采集到的信息存储为缓冲器70内的记录。之前已论述了可在此时采集的各种类型的信息,诸如指令地址、指令类型、执行上下文等。在一个特定示例性具体实施中,可由一个或多个附加信息项(诸如例如在执行感兴趣指令时的当前调用栈指针值)补充采集到的常规信息。该当前调用栈指针值的采集可以在寻求分析稍后执行异常处理例程时获得的调用栈缓冲器的内容时适时进行辅助,例如通过使得能够对该调用栈指针值与在执行异常处理例程时存在的调用栈指针值进行比较。
94.在步骤315处,当进一步指令到达之前提及的给定阶段时,则采用同步异常以使得执行对应的异常处理例程,以便采集不存在于存储在缓冲器70中的记录中的特定状态信
息。如之前所论述的,该特定状态信息可以是特定的经软件定义的状态,诸如调用栈缓冲器85的内容。
95.在步骤320处,与针对感兴趣指令的记录关联输出或存储该额外状态信息,并且随后在步骤325处,处理返回到异常处理例程,以便允许执行进一步指令。
96.通过采集该额外状态信息,可以在分析由统计分析电路针对感兴趣指令产生的记录时提供附加的有用上下文信息。例如,通过使用调用栈缓冲器如其在执行感兴趣指令时存在的内容,可识别在到达感兴趣指令之前执行的子例程序列。
97.在进一步指令被选择为下一条bl或在感兴趣指令之后出现的返回指令的情况下,可确保在执行异常处理例程以便捕获调用栈缓冲器内容时,处理仍在与在其中遇到感兴趣指令的子例程相同的子例程中。然而,在选择另一标准以选择进一步指令,诸如仅下一条返回指令或仅下一条bl指令的情况下,调用栈内容可能将已改变,但是仍可确保在执行感兴趣指令时存在的所有原始调用栈内容均未被覆盖。在此类情况下,通过在由统计分析电路生成的记录内捕获在执行感兴趣指令时的当前调用栈指针值,可确定调用栈缓冲器在执行感兴趣指令时的确切的形式。特别是,通过将记录中维护的调用栈指针值与在由异常处理例程分析调用栈缓冲器时存在的调用栈指针值进行比较,可重新创建调用栈缓冲器在执行感兴趣指令时的形式。
98.图7是示出可在利用之前描述的技术执行统计分析时使用的另选的方法的流程图。根据图7所示的场景,感兴趣指令指定电路40包括过滤器电路45,该过滤器电路可用于减少感兴趣指令的数量,因此减少采用的同步异常的数量。特别是,如图7所示,在步骤350处,感兴趣指令指定电路40可应用初始选择标准来识别候选感兴趣指令。这可例如涉及选择序列内的每第n条指令。然后,在步骤355处,至少到已执行候选感兴趣指令时,可应用进一步选择标准来评估是否将候选感兴趣指令视为实际感兴趣指令。
99.应用该进一步选择标准的时间可根据具体实施而改变。例如,该应用可预先完成,例如,以从感兴趣指令中排除特定类型的指令。因此,尽管初始选择标准可选择每第n条指令,但是进一步选择标准可着眼于每条此类选择的候选感兴趣指令的类型,并从进一步考虑中排除已知并不是特别感兴趣的特定类型的指令。另选地或除此之外,可允许候选感兴趣指令通过流水线前进至执行时间点,但是随后可分析那些指令在执行时的行为,以便决定它们是否仍是感兴趣的并因此应该被维护为实际感兴趣指令。
100.以具体示例的方式,可能确定仅相对缓慢的加载或存储指令是感兴趣的。在步骤355处的初始过滤因此可从进一步考虑中移除不是加载或存储指令的任何指令,而在执行时稍后的过滤可随后过滤掉相对快速执行的任何加载或存储指令,以便仅将缓慢执行的加载或存储指令保留为实际感兴趣指令。
101.在步骤360处,如果候选感兴趣指令将被视为实际感兴趣指令时,决定仅维护缓冲器70中的记录。因此,尽管在执行候选感兴趣指令时,统计分析电路65可经历采集将存储在记录内的各条信息的过程,但是如果随后确定候选感兴趣指令不再是感兴趣的,则将不会维护该记录。
102.在步骤365处,为了决定哪些步骤与进一步指令有关,则确定是否已维护记录。如之前所提及的,评估进一步指令的给定阶段可以是执行阶段或者可以是流水线中的更早阶段。在给定阶段是流水线中的更早阶段的情况下,可能的情况是在该给定阶段暂停进一步
指令的处理,直到已知是否正在针对感兴趣指令维护记录。
103.如果维护了记录,则过程前进至步骤370,使得当进一步指令到达给定阶段时,采用同步异常,并且过程随后按照图6的剩余部分继续进行(即,实施步骤315、320和325)。
104.然而,如果未维护记录,则在步骤375处,当进一步指令到达给定阶段时,不采用同步异常,并且允许进一步指令如常继续执行。
105.在关于是否针对感兴趣指令维护记录的决定发生在进一步指令到达给定阶段之前的情况中,则在一个示例性具体实施中,可保持对进一步指令挂起同步异常,但是如果确定尚未维护记录,则在进一步指令到达给定阶段时忽略同步异常。另选地,如果决定未正在维护记录,则可以从进一步指令中移除同步异常,使得到进一步指令到达给定阶段时,进一步指令不再具有对其挂起的同步异常,因此将仅继续执行,而不采用任何异常。
106.图8是示出当利用之前描述的技术时可采用的性能监控技术的流程图。在步骤400处,pmu 75维护用于多个事件的事件计数器80。在步骤405处,确定指令的执行是否引起受监控事件中的一个受监控事件的发生,并且如果否,则在步骤420处不需要进一步动作。然而,如果指令的执行确实引起受监控事件的发生,则在步骤410处更新相关计数器,并且随后在步骤415处评估该计数器是否已达到阈值水平。如果否,则在步骤420处不需要进一步动作。
107.然而,如果在步骤415处确定已达到阈值水平,则在步骤425处将引起受监控事件的发生的指令视为感兴趣指令。因此,针对该感兴趣指令识别进一步指令,并且将该进一步指令标记为具有与其相关联的同步异常。
108.当进一步指令到达给定阶段时,则在步骤430处,采用同步异常以使得执行异常处理例程以采集特定状态信息。这可采用多种形式,例如经软件定义的状态,诸如之前论述的调用栈缓冲器的内容。
109.在步骤435处,与如由pmu维护的针对受监控事件的当前计数器值关联输出或存储此类额外状态信息。因此,这提供了可在分析那些计数器值时使用的附加上下文信息。
110.在步骤440处,可任选地决定重置计数器中的一个或多个计数器。例如,重置已达到阈值水平的计数器至少可能是适合的。此外,处理随后从异常处理例程返回,从而允许进一步指令继续执行。
111.图9是示出使用本文所述的技术以便追踪调用栈缓冲器达到满或空阈值水平的情况的另外的示例性用例的流程图。在步骤450处,当执行bl指令时,确定该bl指令的执行是否使得调用栈缓冲器变满。如果是,则在步骤465处,将bl指令标记为感兴趣指令,并且随后在图9中所示的示例中,将下一条带链接的分支或返回指令(以首先发生为准)标记为具有对其挂起的同步异常的进一步指令。特别感兴趣的将是在任何中间返回指令之前发生的下一条bl指令,因为该指令随后将寻求在调用栈缓冲器已满时向调用栈缓冲器中添加另外的条目。然而,针对程序效率而言,可认为仅将在指令序列内下一条发生的任意bl或返回指令标记为进一步指令更容易。另选地,可能仅下一条bl指令用作进一步指令。
112.如果在步骤450处确定bl指令不会使得调用栈缓冲器变满,则在步骤455处确定是否正在执行使得调用栈缓冲器变空的返回指令。如果否,则过程返回到步骤450。
113.然而,如果确定已执行使得调用栈缓冲器变空的返回指令,则在步骤460处,将返回指令标记为感兴趣指令,并且在图9所示的示例中,将下一条返回或bl指令标记为具有对
其挂起的同步异常的进一步指令。特别感兴趣的是另一返回指令接在使得调用栈缓冲器变空的返回指令之后的场景,这将寻求在调用栈缓冲器为空的情况下从调用栈缓冲器中弹出条目。然而,针对程序效率而言,仅标记在感兴趣指令之后首先发生的下一条返回或bl指令中的任意一者可能更容易。另选地,感兴趣指令指定电路40可被布置成仅寻找在感兴趣指令之后的下一条返回指令并将其标记为进一步指令。
114.图10示出了可使用的模拟器具体实施。虽然先前所述的示例具体实施在用于操作支持所涉及技术的特定处理硬件的装置和方法方面实现了本发明,但是也可能提供根据本文所述的示例通过使用计算机程序实现的指令执行环境。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可在支持模拟器程序505的主机处理器515上运行,任选地运行主机操作系统510。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“some efficient architecture simulation techniques”,robert bedichek,winter 1990usenix conference,第53至63页。
115.就先前已参考特定硬件构造或特征描述了示例而言,在模拟的具体实施中,等效功能可由合适的软件构造或特征提供。例如,特定电路可在模拟的具体实施中作为计算机程序逻辑提供。类似地,存储器硬件(诸如寄存器或高速缓存)可在模拟的具体实施中作为软件数据结构提供。此外,用于访问硬件装置中的存储器的物理地址空间可被仿真为模拟地址空间,该模拟地址空间被模拟器505映射到由主机操作系统510使用的虚拟地址空间。在先前描述的示例中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器515)上的布置中,在合适的情况下,一些模拟的具体实施可利用主机硬件。
116.模拟器程序505可存储在计算机可读存储介质(其可为非暂态介质)上,并且向目标代码500(其可包括应用程序、客户操作系统和管理程序)提供虚拟硬件接口(指令执行环境),该虚拟硬件接口与由模拟器程序505建模的硬件架构的硬件接口相同。因此,可使用模拟器程序505从指令执行环境内执行目标代码500的程序指令,使得实际上不具有上文所讨论的装置的硬件特征的主计算机515可仿真这些特征。模拟器程序可包括用于仿真处理流水线10的行为的处理程序逻辑520,以及用于仿真感兴趣指令指定电路40的行为的感兴趣指令指定程序逻辑525。还可使用由模拟器代码505维护的数据结构仿真程序逻辑(未示出)来仿真系统的架构寄存器60,用于将目标架构的架构寄存器映射到由主机硬件515使用的存储器空间上。因此,在图10的示例中,本文所述的用于收集装置的状态信息的技术可由模拟器程序505在软件中执行。
117.在本技术中,字词“被配置为
…”
用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
118.虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化、增加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征一起进行各种组合。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献