在Intel(R) Core(TM) i7 处理器上的Intel(R) VTune(TM) Performance Analyzer 的性能计数器
来源:互联网 发布:linux oracle启动 编辑:程序博客网 时间:2024/04/27 21:19
转自http://software.intel.com/zh-cn/blogs/2009/03/18/intelr-coretm-i7-intelr-vtunetm-performance-analyzer/
以前在CDSN的多核软件开发论坛上发表过有关Intel(R) Core(TM) 2 Duo 的性能计数器的论述(http://topic.csdn.net/u/20080527/17/44d9ebf9-959d-4495-8456-62e4b2d40f05.html),现在就Core(TM) i7 处理器的同样话题作一梳理。
VTune(TM) Performance Analyzer不仅可以检测程序所耗用的时间,而且可以检测程序执行中处理器的内部事件(Performance Monitor Unit : PMU)发生次数(及样本),称之为Event based sampling (EBS)
有关直接性能数据的计数器:
1) CPU_CLK_UNHALTED.THREAD - 表示非停机状态花费的机器周期
2) INST_RETIRED.ANY - 表示指令的有效执行的计数
CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代码(函数,模块)平均每条指令花费的机器周期.自然是愈小愈好.
这样你就可以找到那些CPU_CLK_UNHALTED.CORE大的函数,且CPI也大的函数,去关注(通常称之为热点函数)
CPI的值,理论上可以达到0.25 (但事实上不可能,只是愈接近愈好)。
当你得到一个不太满意的CPI 的值时候,就要探知它的道理。
CPU_CLK_UNHATLED.THREAD = Real_Work + Resource_Stalls + Rat_Stalls + Seg_Rename_Stalls – Uops
Real_Work 一般指的是你需要相应的指令序列来实现你的算法。考量你的指令是否最精减。
Rat_Stalls 指的是Register Allocation Stall, 此时没有寄存器可用,需等待。
Seg_Rename_Stalls 指的是段寄存器的重名不可用,需等待。
我们考虑得最多的应是Resource_Stalls, Uops. 先谈 Resource_Stalls, 包含:
RESOURCE_STALLS.LOAD – 由于Load Buffer 不可用以致延时
RESOURCE_STALLS.RS_FULL – 由于Reservation Station满,新指令不能进入以致延时
RESOURCE_STALLS.STORE - 由于Store Buffer 不可用以致延时
RESOURCE_STALL.ROB_FULL – 由于Re-order buffer 满以致延时
RESOURCE_STALL.FPCW – 由于浮点控制字不可写(被占用)以致延时
RESOURCE_STALL.MXCSR – MMX 状态控制寄存器重名失败以致延时
RESOURCE_STALL.OTHER – 包含了以前我们知道的:(下面举例)
BR_MISP_EXEC: 分支预测失败
ILD_STALL: 指令长度解码延迟
L2_LINES_IN: L2 缓存没有命中
ITLB_MISSES
DTLB_MISSES
Uops – 包含micro-ops retired, macro-ops retired. 当然是多多益善。使用UOPS_RETIRED 可以知道微操作和宏指令的熔合数。建议多用简单指令,少用复杂指令。
其他:SNOOP_RESPONSE, 当一个内存的数据在一个核的L1缓存,而另一个核也要访问这个数据。这会引起缓存的状态改变,如频繁这样操作,会引起性能下降。
这里还有一些常规的话题,如:总线,浮点,SEE 等,就不在这里一一展开了。
- 在Intel(R) Core(TM) i7 处理器上的Intel(R) VTune(TM) Performance Analyzer 的性能计数器
- Intel VTune Performance Analyzer
- Notes on Intel(R) Pentium(TM) Processor
- 在MID上安装Intel® Vtune™ Performance Analyzer样本采集器
- Windows* early enabling for Intel(R) Xeon Phi(tm) Coprocessors
- R tm
- Intel.VTune.Performance.Analyzer.v8.0.014.ISO下载
- R语言 tm包的使用
- Intel Core i7
- Intel VTune 性能分析器
- Gentoo Linux安装--Intel型号CPU的CFlags设置(包括intel core i7 & i5)
- 商标R和TM
- 关于R安装中文分词包安装不上的问题install.packages(\"tm\")
- 什么是TM,它与圆圈R的区别
- 利用R语言的tm包进行文本挖掘
- [轉]Intel 引爆 i 世代的全新 Core i7 與 Core i5
- intel处理器的简史
- intel vtune的安装与使用
- 两种数据库,四种分页算法的效率比较
- 网站制作流程
- 自学PHP
- Fdisk使用详解
- soso六月产品亮点
- 在Intel(R) Core(TM) i7 处理器上的Intel(R) VTune(TM) Performance Analyzer 的性能计数器
- Java随机数总结
- SAP传输请求
- 这个C#教学者的语言水平不错,值得学习
- 软件菜鸟
- 关于JNI,javah找不到类的问题
- jQuery验证插件
- SDK翻译 Android中轻松使用线程
- HUABASE:基于列存储的关系型数据库系统