2012-01-06 4 views
8

hardware performance counter, 특히 x86 CPU를 사용하여 캐시 누락 또는 분기 오 예측을 얻고 싶습니다. 성능 카운터는 Intel VTune과 같은 고급 프로파일 러에서 많이 사용됩니다. Windows 운영 체제의 성능 카운터를 혼동하지 마십시오. C에서/C++ 프로그램이 카운터를 사용하기 위해Windows 용 하드웨어 성능 카운터 API

, 하나는 PAPI 사용할 수 있습니다 : http://icl.cs.utk.edu/papi/

이 쉽게 성능 카운터를 사용할 수 있습니다를,하지만 리눅스에서. 한때 PAPI는 Windows를 지원했지만 지금은 지원하지 않습니다.

Windows에서 하드웨어 성능 카운터를 사용하기 위해 PAPI 또는 다른 API를 최근 시도한 사람이 있습니까?

+0

물어봐도 될까요 : 당신은 진짜 비트 - 온 - 비트 코드를 쓰고 있습니까? 대부분의 Windows 응용 프로그램 코드는 그 근처에 없습니다. –

+0

나는 VTune을 제안하려고했지만 이미 그것을 가져 왔습니다. 그래서 그게 잘못된거야? –

+0

아니요, 프로파일 링 코드를 작성하고 있습니다. 따라서 API를 프로그래밍해야합니다. Linux는 PAPI에서는 괜찮지 만 Windows에서는 HW 성능 카운터를 사용하는 최신 API를 계속 찾고 있습니다. – Nullptr

답변

4

동일한 내용의 RDPMC 명령어 또는 __readpmc MSVC 컴파일러 내장 함수를 사용할 수 있습니다.

그러나 Windows에서는 CR4.PCE를 0으로 설정하여 사용자 모드 응용 프로그램이이 명령을 실행하는 것을 금지합니다. 각 카운터의 의미는 커널 모드에서만 액세스 할 수있는 MSR 레지스터에 의해 결정되기 때문입니다. 즉, 커널 모드 모듈 (예 : 장치 드라이버)을 제외하고이 명령을 실행하려고하면 "권한있는 명령"트랩을 얻게됩니다.

사용자 모드 응용 프로그램을 작성하는 경우,이 명령을 실행하는 커널 모듈을 작성하는 유일한 옵션은 (의견에 @Christopher에서 언급 한대로) 사용자 -> 커널 호출 패널티가 발생합니다) 그리고 당신의 머신에서 테스트 서명을 가능하게하여 아마 당신 자신의 서명 된 "드라이버"가로드 될 수 있습니다. 즉,이 앱을 쉽게 배포 할 수 없지만 내부 튜닝에 사용할 수 있습니다.

1

어떨까요? HCP Reference? 당신이 원하는 것을 제공하지 않습니까?