-
-
[翻译] intel 处理器跟踪(Intel Processor trace) 36.1 概述
-
发表于: 2021-4-7 21:35 5219
-
英特尔®处理器跟踪(Intel Pt)是Intel®架构的扩展,使用专用的硬件设施跟踪软件执行的信息,这些功能仅对正在跟踪的软件有一点点性能损失。跟踪信息收集到数据包中。英特尔PT提供控制流程跟踪的初始实现,它产生了由软件解码器处理的各种各样的包。包包括时间,程序流信息(例如分支目标,分支/不分支指示)和程序引起的模式(用户模式/系统模式)相关信息(例如,Intel TSX状态转换,CR3变化)。在发送到平台中可用的存储器子系统或其他输出机制之前,可以在内部缓冲这些包。调试软件可以处理这些跟踪数据并重建程序流程。
后来的版本包含了另外的跟踪源,包括使用PTWRITE软件指令和电源事件跟踪。
36.1.1特性和功能(可以记录很多信息,包括程序分支,还可以进行过滤筛选记录,例如只记录,指定的进程)
英特尔PT的控制流跟踪生成各种包,当通过后处理工具与程序的二进制文件相结合时,可以使用这些包来产生精确的执行跟踪。数据包记录流信息,如指令指针(IP)、间接分支目标和连续代码区域(基本块)内条件分支的方向。 Intel PT也可以配置为使用PTWRITE指令记录软件生成的数据包,以及描述处理器电源管理事件的数据包。此外,包还记录了其他上下文、定时和簿记信息,使应用程序的功能和性能调试成为可能。Intel PT有几个控制和过滤功能可用来定制需要收集的跟踪信息,并附加其他处理器状态和时间信息来支持调试功能。例如,有一些模式允许基于当前特权级别(CPL)或CR3的值对数据包进行过滤。
。通过配置一组MSR寄存器来控制生成那些包和过滤那些包。 MSR通常遵循IA32RTIT *的命名约定。 通过CPUID指令枚举这些配置这些功能的MSR,请参见第36.3节。配置Intel Pt的MSR的详细信息在第36.2.7节中介绍。
36.1.1.1数据包摘要
在跟踪工具启用和配置适当的MSR后,处理器将收集和生成的跟踪信息放在以下类别的数据包中(有关数据包的更多详细信息,请参见第36.4节):
•程序执行的基本信息数据包:这些包括:
- 数据包流边界(PSB)数据包:PSB数据包充当定时生成的“心跳”(例如,每4K字节跟踪数据包)。这些数据包允许数据包解码器在输出数据流中找到数据包边界; PSB数据包应该是解码器在解码跟踪信息是查找的第一个数据包。
- 分页信息包(PIP):PIP记录了对CR3寄存器所做的修改。这个信息,以及来自操作系统的关于每个进程的CR3值的信息,允许调试器将线性地址解析为正确的应用程序源。
- 时间戳计数器(TSC)数据包:TSC包有助于跟踪时钟时间,并包含软件可见的时间戳计数器的一部分。
- 核心总线比(CBR)数据包:CBR包包含 核心:总线 时钟比.
- 溢出(OVF)数据包:当处理器内部缓冲区溢出时发送OVF包,缓冲区溢出从而导致了包被丢弃。看到这个包,解码器就知道了有包丢失了。
•控制流程信息的数据包:
- 是否跳转(TNT)数据包:TNT包跟踪直接条件分支的“方向”(跳转还是没有跳转)。(根据跳转没有跳转 就可以直接从指令中得到目标的IP )
- 目标IP(TIP)数据包:TIP记录间接分支、异常、中断、其他分支或事件的目标IP。这些数据包可以包含IP,但是IP值可能是通过和上一个IP中的字节比较进行压缩的。有各种类型的TIP包;它们在第36.4.2.2节中更详细地介绍。
- 流程更新数据包(FUP):FUP为异步事件(中断和异常),以及无法从反汇编文件中确定源地址的其他情况提供源IP地址。
- 模式数据包:这些包为解码器提供了重要的处理器执行信息,使解码器能够正确地解释反汇编二进制文件和跟踪日志。模式信息包有多种格式,这些格式表示诸如执行模式(16位、32位或64位)等细节。
(以上两组包,最重要)
•软件插入数据包: - PTWRITE(PTW)数据包:包括传递给PTWRITE指令的操作数值(请参阅英特尔®44和IA-32架构软件开发人员手册中的“PTWRITE - 写入数据到处理器跟踪数据包”,第2B卷)。
•关于处理器电源管理事件的数据包:
- Mwait数据包:表明成功完成MWAIT操作到C-State更深入C0.0。
- 电源状态条目(PWRE)数据包:表示进入比C0.0更深的C状态。
- 电源状态出口(PWRX)数据包:指示从C-State的退出比C0.0更深,返回C0。
- 执行停止(exstop)数据包:由于P状态变化,C状态变化或热节流等事件,因此表明软件执行已停止。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课