Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: Coding   发起时间: 2009-11-05 16:15 下午   回复: 1

Print Search
帖子排序:    
   2009-11-05, 16:15 下午
Coding 离线,最后访问时间: 2010/2/20 12:12:52 Coding

发帖数前10位
注册: 2008-05-31
发 贴: 103
知道一个CPU虚拟地址,如何能得到这个地址cache类型。
Reply Quote

Win32k.sys!memmove占用了极其高的CPU资源。我想去验证一下src和dst的cache类型。

我应该看那几个Windbg的命令,有个思路就可以了,谢谢

 


IP 地址: 已记录   报告
   2009-11-10, 15:51 下午
Coding 离线,最后访问时间: 2010/2/20 12:12:52 Coding

发帖数前10位
注册: 2008-05-31
发 贴: 103
Re: 知道一个CPU虚拟地址,如何能得到这个地址cache类型。
Reply Quote
查了IA32手册等资料,我是在一块Atom上看得,对于不同类型的cpu判断memory type是不一样。
首先是用!pte拿到page table entry
1: kd> !pte 0f2c430c
VA 0f2c430c
PDE at 00000000C06003C8 PTE at 00000000C0079620
contains 000000001C690867 contains 800000001CE9586F

然后看page talbe entry中 PAT(bit 7), PCD(bit 4), PWT(bit 3)
1: kd> .formats 1CE9586F
Evaluate expression:
Hex: 1ce9586f
Decimal: 485054575
Octal: 03472254157
Binary: 00011100 11101001 01011000 01101111

那么这里的话
pat = 0
pcd = 0
pwt = 1

用!pat可以看到这个时候的memory type是USWC, 没有文档说USWC具体是什么,不过八成应该是Write Combining

1: kd> !pat
PAT_Index PCD PWT Memory Type
0 0 0 WB
0 0 1 USWC
0 1 0 WEAK_UC
0 1 1 STRONG_UC
1 0 0 WB
1 0 1 USWC
1 1 0 WEAK_UC
1 1 1 STRONG_UC
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » 知道一个CPU虚拟地址,如何能得到这个地址cache类型。

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.