查找指令序列问题

一些效率问题可能是由可执行文件中函数的排序混乱或要执行指令的加载序列混乱引起的。

在最坏的情况下,从一个函数到另一个函数的调用所连接的两个函数可能广泛分散在文本空间中。这种调用和返回可能导致文本页错误。可通过检查“文本错误”计时度量来查找这些错误。修复此问题的一种方式是生成一个映射文件,供编译器用来重新排序可执行文件中的函数。新顺序由排序度量确定。因此所选择的排序度量应能使导致文本页错误的函数连续出现在函数列表中。有关详细信息,参见生成和使用映射文件

如果指令未映射,会发生另一种指令执行延迟。缺少映射会导致指令后备式数据转换缓冲区 (ITLB) 未命中。第一个未命中是必要的(以便加载指令),但其它未命中则是可以避免的。可以记录 ITLB 硬件计数器的数据(例如,使用计数器名称的 itlb 别名)并检查相应的度量。

如果指令已映射但不在指令缓存中,可能会发生进一步的延迟。首次映射指令时会发生指令缓存未命中,但随后的未命中可以避免。可以通过检查指令缓存未命中和指令缓存延迟周期的度量,来查找指令缓存未命中的发生位置及时间。要查看这些度量,必须记录相应的硬件计数器上溢分析数据。在 UltraSPARCTM III 硬件上,可以使用 icmicstall 别名来记录对指令缓存未命中和指令缓存延迟周期进行计数的硬件计数器的数据。


找到要找的内容了吗?如未找到,请将您的意见通过电子邮件发送至 docfeedback@sun.com。
法律声明