首页 随笔 乐走天涯 程序资料 评论中心 Tag 论坛 其他资源 搜索 联系我 关于 RSS

MMX技术开发者手册:第六章 MMX™性能监测扩展(二)


日期: 2000-06-12 14:00 | 联系我 | 关注我: Telegram, Twitter

6.2 动态执行(P6系列)性能监测事件

 

  本节描述了P6系列处理器的计数器。表4-2列出了可用来进行性能监测计数的事件,并可由RDPMC指令读出。

  在这个表中:

单元栏给出了产生事件的微体系结构或总线单元。

事件数栏给出了标志该事件的16进制数。

事件名助记符栏给出了事件名。

单元掩码栏给出了所要求的单元掩码(如果有)。

描述栏描述事件。

注释栏给出了有关事件的附加信息。

 

  这些性能监测事件用于指导性能的调节。计数器所报告的数据不保证绝对精确,但可做为性能调节的相关指导。在适当地方已标出和已知的差异。所有的性能事件都与P6系列处理器的指定模式相关,并且不保证全部存在于以后处理器的升级版本中。表中未定列出的性能事件编码全为保留,使用它们会导致未定义的计数器结果。

  进一步的细节可在本文档的升级版本中得到。

  表未端说明了表中与某些人口有关的注释。

表6-2 性能监测计数器

 

单元 事件号 事件名称助记符 单元掩码 描述 注释

数据高速缓存单元(DCU) 43H DATA_MEM_REFS 00H 全部内存引用,包括高速缓存和非高速缓存  

45H DCU_LINES_IN 00H 在DCU中分配的汇总行  

46H DCU_M_LINES_IN 00H DCU中已分配的M状态行数  

47H DCU_M_LINES_OUT 00H 从DCU中回收的M状态行数。包括对HITM窥探,干预或替换的回收  

48H DCU_MISS_OUTSTANDING 00H 当一个未命中的DCU未解决时造成的额外周期数 一个对L2也未命中的访问,用2个周期进行修改(即,如果计数为N个周期,则应有N+2个周期)

对同一高速缓存线的后继读取不产生额外的计数

计数值不精确,但仍然有用

指令取单元(IFU) 80H IFU_IFETCH 00H 在高速缓存和非高速缓存中取得的指令数  

81H IFU_IFETCH_MISS 00H 未命中的指令提取数  

85H ITLB_MISS 00H 未命中的ITLB数  

86H IFU_MEM_STALL 00H 读取指令管道进程被阻塞所造成的周期数,包括高速缓存未命中、ITLB未命中、ITLB失败、回收作废的高速缓存  

87H ILD_STALL 00H 指令长度译码器被阻塞所造成的周期数  

29H L2_LD MESI

0FH L2数据读取的数目  

2AH L2_ST MESI

0FH L2数据存贮的数目  

24H L2_LINES_IN 00H 在L2中已分配的缓存线数  

26H L2_LINES_OUT 00H 因任何原因,从L2中删除的缓存线数  

25H L2_M_LINES_INM 00H 在L2中已分配的可修改缓存线数  

27H L2_M_LINES_OUTM 00H 因任何原因,从L2中删除的可修改缓存线数  

2EH L2_RQSTS MESI

0FH 申请的L2数目  

21H L2_ADS 00H L2地址闸门数目  

22H L2_DBUS_BUSY 00H 在数据总线忙期间的周期数  

23H L2_DBUS_BUSY_RD 00H 在数据总线正在从L2传送数据到处理器期间的周期数  

外部总线逻辑(EBL)2 62H BUS_DRDY_CLOCKS 00H

自身

20H

任意 全部当DRDY被保持时的时钟数目 单元掩码=00H

当处理器正驱动DRDY时的总线时钟计数

单元掩码=20H

当任一部件驱动DRDY时处理器内的时钟计数

63H BUS_LOCK_CLOCKS 00H

自身

20H

全部 当LOCK保持时的时钟数 只对处理器时钟计数

66H BUS_TRAN_RFO 00H

自身

20H

全部 为获得总线所有权的交换而进行的读的次数  

68H BUS_TRAN_IFETCH 00H

自身

20H

全部 因取指令而进行的数据交换的次数  

69H BUS_TRAN_INVAL 00H

自身

20H

全部 无效数据交换的次数  

6AH BUS_TRAN_PWR 00H

自身

20H

全部 不完整的写  

6BH BUS_TRAN_P 00H

自身

20H

全部 不完整的数据交换次数  

6CH BUS_TRAN_IO 00H

自身

20H

全部 I/O数据交换次数  

6DH BUS_TRAN_DEF 00H

自身

20H

全部 被迟延的数据交换数  

6EH BUS_TRAN_BURST 00H

自身

20H

全部 成组数据交换数  

70H BUS_TRAN_ANY 00H

自身

20H

全部 全部数据交换  

6FH BUS_TRAN_MEM 00H

自身

20H

全部 与内存间的数据交换数  

61H BUS_BNR_DRV 00H

自身 当处理器正在驱动BNR管脚时的总线时钟周期数  

7AH BUS_HIT_DRV 00H

自身 当处理器正在驱动HIT管脚时的总线时钟周期数 包含由窥探阻塞造成的时钟周期

7EH BUS_SNOOP_STALL 00H

自身 总线处于窥探阻塞时的时钟周期数  

浮点单元 C1H FLOPS 00H 可计算的已退出浮点操作数目 仅在计数器0

10H FP_COMP_OPS_EXE 00H 可计算的已执行的浮点操作数目 仅在计数器0

11H FP_ASSIST 00H 由微代码处理的浮点异常情况数 仅在计数器1

12H MUL 00H 乘法数目 仅在计数器1

13H DIV 00H 除法数目 仅在计数器1

14H CYCLES_DIV_BUSY 00H 除法器忙时的周期数 仅在计数器0

内存序列 03H LD_BLOCKS 00H 存贮缓冲区块数  

04H SB_DRAINS 00H 存贮缓冲区所耗费的周期数  

05H MISALIGN_MEM_REF 00H 对未对齐数据的引用次数  

译码和退出 C0H INST_RETIRED 00H 退出的指令数指令  

C2H UOPS_RETIRED 00H 退出的微操作数  

D0H INST_DECODER 00H 译码的指令数  

中断 C8H HW_INT_RX 00H 接收到的硬件中断数  

C6H CYCLES_INT_MASKED 00H 被禁止的中断所用的处理器时钟周期数  

分支 C4H BR_INST_RETIRED 00H 退出的分支指令数  

C5H BR_MISS_PRED_RETIRED 00H 退出的未预测到的分支数目  

C9H BR_TAKEN_RETIRED 00H 退出的已发生分支数目  

CAH BR_MISS_PRED_TAKEN_RET 00H 退出的未预测到的已发生分支数目  

E0H BR_INST_DECODED 00H 被译码的分支指令数  

E4H BR_BOGUS 00H 伪分支数目  

E6H BACLEARS 00H 被确定的BACLEARS时间数  

阻塞 A2H RESOURCE_STALLS 00H 与资源相关的阻塞所造成的周期数  

D2H PARTIAL_STALLS 00H 部分阻塞的周期或事件数目  

读取段寄存器 06H SEGMENT_REG_LOADS 00H 读取段寄存器的次数  

时钟 79H CPU_CLK_UNHALTED 00H 处理器处于非停机状态下的周期数  

注释

  1.上述提及的几个L2高速缓存的事件,可用PerfEvtSel0和PerfEvtSel1寄存器中的单元掩码(UMSK)字段做成一步描述。单元掩码字段的低四位与L2事件一起来,指示高速缓存状态或所涉及的高速缓存状态。P6系列处理器用“MESI”协议来识别高速缓存状态,然后用单元掩码字段的每一位代表四种状态中的一种:UMSK[3]=M(8H)状态,UMSK[2]=E(4H)状态,UMSK[1]=S(2H)状态,UMSK[0]=I(1H)状态。UMSK[3:0]=MESI(FH)可用来收集全部状态数据。对于相关的事件,UMSK=0H,将不为任何事件计数。

  2.对于所有的外部总线逻辑(EBL)事件,除上述提及到的,可用PerfEvtSel0和PerfEvtSel1寄存器中的单元掩码(UMSK)字段做成一步描述。UMSK的第5位可与EBL事件一起来指明处理器是对本身产生的数据交换计数(UMAK[5]=0),还是对在总线上其它处理器所产生的数据交换计数(UMAK[5]=1)。

6.3 RDPMC指令

 

  RDPMC允许用户在CPL=3,CR4的8#位被置(CR4.PCE)的情况下读取性能监测器。这方面与RDSTC(Read Time Stamp)指令相似。该指令在CPL=3时,且CR4的时间标记禁止位未被禁止时允许使用。注意,在CPL=3时不能访问性能监测控制和事件选择寄存器。

6.3.1 指令规则

 

  操作码:0F 33

  描述:按ECX的指定读事件监测计数器到EDX:EAX。

  操作:EDX:EAX<-事件计数器[ECX]

  在ECX中的值(0或1)指定了两个40位处理器的事件计数器之一。读取EDX的高32位和EAX的低32位。

    IF CR4.PCE=0 AND CPL<>0 THEN #GP(0)

    IF ECX=0 THEN EDX:EAX=PerfCntr0

    IF ECX=1 THEN EDX:EAX=PerfCntr1

    ELSE #GP(0)

    ENDIF

  保护模式和实地址模式异常。

  #GP(0),如果ECX未指定一个有效计数器(0或1)。

  #GP(0),如果在CPL<>0且CR4.PCE=0使用RDPMC指令。

  注意 16位代码:RDPMC将在16位代码和VM模式下执行,但给出一个32位结果。它使用全部ECX索引。

标签: MMX

 文章评论
目前没有任何评论.

↓ 快抢占第1楼,发表你的评论和意见 ↓

发表你的评论
如果你想针对此文发表评论, 请填写下列表单:
姓名: * 必填 (Twitter 用户可输入以 @ 开头的用户名, Steemit 用户可输入 @@ 开头的用户名)
E-mail: 可选 (不会被公开。如果我回复了你的评论,你将会收到邮件通知)
反垃圾广告: 为了防止广告机器人自动发贴, 请计算下列表达式的值:
3 x 1 + 1 = * 必填
评论内容:
* 必填
你可以使用下列标签修饰文字:
[b] 文字 [/b]: 加粗文字
[quote] 文字 [/quote]: 引用文字

 
首页 随笔 乐走天涯 猎户星 Google Earth 程序资料 程序生活 评论 Tag 论坛 资源 搜索 联系 关于 隐私声明 版权声明 订阅邮件

程序员小辉 建站于 1997 ◇ 做一名最好的开发者是我不变的理想。
Copyright © XiaoHui.com; 保留所有权利。