x86 CPU의 성능 카운터 모니터 (PCM) 제어 레지스터를 초기화하는 모듈은 누구입니까? 리셋 할 때 하드웨어에서 수행 할 것인가 아니면 부트 로더 또는 다른 커널 모듈에서 수행합니까?성능 카운터 초기화 CPU의 모니터 제어 레지스터
0
A
답변
2
성능 모니터 카운터 (PMC)는 초기화 할 필요가 없으므로 소프트웨어에서 기능을 사용하려고 할 때 프로그래밍 (또는 설정)해야합니다.
CPU는 재설정 후에도 최소한 구조적으로 볼 수있는 (즉, 프로그래머에게 표시되는) 것은 아닙니다.
부트 로더는 이러한 일을 처리하지 않습니다.
그것은에만 특권 명령 (같은 rdmsr
, wrmsr
)에 액세스 할 수 있습니다 그들이 모델 특정 레지스터 (는 MSR)이 있기 때문에 이정환를 handlea 커널 모듈 (그들은 커널 공간에서 실행하는 코드가 필요 예) . 그런 다음 커널 모듈은 OS 인터페이스를 통해 또는 명령 rdpmc
이 권한이 부여되지 않은 코드에 의해 실행되도록 허용하여 사용자 공간 프로그램에 기능을 표시 할 수 있습니다 (이미 사전 설정된 카운터를 읽을 수 있음).
PMC에 대한 자세한 내용은 Intel Manual 3B, Chapter 18을 참조하십시오.
IIRC를 사용하면 커널이 perf 카운터에 대한 직접적인 사용자 공간 액세스를 가능하게 할 수 있습니다. (즉, 사용자 공간에서 [RDPMC instruction] (http://www.felixcloutier.com/x86/RDPMC.html)이 작동하도록 설정하십시오. –
@PeterCordes 사용자 공간 프로그램이 잘못 될 수 없다면 읽기 위해'rdpmc '을 사용하십시오. 그러나 언급할만한 가치가 있습니다. 감사합니다! –
RDPMC를 수동으로 사용하지는 않았지만 실제로는 실제 카운터를 읽는 것만으로 생각합니다. 셀 수를 선택하려면 WRMSR이 필요하다고 생각합니다. 그래도 RDTSC보다 낮은 매우 낮은 오버 헤드 측정에는 충분합니다. (벽 시계 기준주기가 아닌 코어 클럭주기를 계산할 수 있습니다.) –