1. 性能监控机制: 事件监控为核心
性能监控机制中以事件监控机制为核心,对发生的事件进行统计。
典型的,性能分析软件可以使用监控事件机制,对目标软件在执行过程中的某些事件进行监控。性能分析软件收集和分析目标软件的事件发生次数。
如上所示:对发生事件统计前,要开启计数器!!! 和选择监控的事件!!!,Intel为不同架构的处理器定义了多种多样的监控事件。
在Intel平台上,使用两种counter(计数器)。
① general-purpose PMC(Performance Monitor Counter):通用的性能监控计数器
② Fixed-function counter(固定用途的性能监控计数器):Fixed-function计数器功能有限,但使用非常简单。
软件中可以设定,当counter发生溢出时产生PMI(Performance Monitoring Interrupt)或者PEBS中断来进行相应处理。PMI中断和PEBS中断都使用PMI handler进行处理。
PMI是可屏蔽的local APIC中的本地中断源(LVT!!!),在LVT Performance monitor寄存器中设置。
2. architectural与non-architectural性能监控事件
在Intel处理器上,performance monitoring机制分为两大类。
① non-architectural(非架构化):从Pentium处理器开始引入,包括早期的P6家族、Pentium4家族和Xeon处理器。
② architectural(架构化):由Core微架构开始支持architectural化的performance monitoring机制。从最初的Core Sole和Core Duo处理器开始支持。
non-architectural的性能监控机制是与处理器Model相关的,也就是说不同的处理器Model可能会不一致(!!!)。而architectural的性能监控机制在各个处理器Model中保持向下兼容。
而在越往后的微架构处理器中,architectural化的性能监控机制都得到增强,越新的处理器所支持的功能可能会越强大。
可以推广至其他的处理器机制,例如:non-architectural化的MSR寄存器在各个处理器Model中地址是不同的(或者不同Model的处理器提供不同的MSR寄存器),而architectural化的MSR寄存器是保持向下兼容的,后续的处理器将增强。
3. 确定处理器的Model
我们在之前已经多次提及确定处理器的Model,必须从DisplayFamily_DisplayModel的值来确定,请参考4.4节所述。
在本章中主要围绕06_25H(即Westmere架构)模型进行探讨,Westmere架构继承于Nehalem架构,因此关于Nehalem架构的所有探讨均适合于Westmere架构,同时大部分也适合于Sandy Bridge架构。