마음 속 하늘은 항상 맑음~!

HPET를 윈도우즈 7에서 사용하기. 본문

하드웨어

HPET를 윈도우즈 7에서 사용하기.

파르셀수스 2013. 2. 18. 08:31

 보다 나은 타이밍을 위해서 HPET라는게 있다. 최근의 장치에는 모두 이 타이머가 내장되어 있으나 윈도우즈에서는 비스타 이상에서만 지원하고 있다. 그러나 비스타는 반짝 사라진 운영체제로 윈도우즈 7이 보다 기능면에서도 안정적이다.


 새로운 운영체제에서 이 HPET를 기본으로 사용하고 있는 줄 알았지만, 그렇지 않다는 것을 최근에서야 알았다. 기본적으로 윈도우즈 7도 완전하게 타이머를 사용하지는 않고 있었다. 그러나 옵션이 존재하고 그것을 사용하면 보다나은 타이밍과 CPU의 사용빈도의 절약 등으로 보다 빠른 동작을 보여준다고 한다. 그리고 시스템의 독립적 타이머이기 때문에 오버클럭등과 같은 상황의 비정상적인 클럭에서도 안정적인 시스템 동작을 시킬 수 있다.

 하지만 몇몇 상황이나 오래된 칩셋에서는 동작에 문제가 있기도 하니 만약 사용해보고 문제가 발생하면 다시 비활성화시키는 것이 좋다. 혹자는 비활성화시키는 것이 낫다는 주장도 있는데 아마도 메인보드나 어플리케이션의 특성을 타는 것 같다. 그리고 만약 고밀도의 사운드 녹음을 하는 경우 어느 사용자의 경험적인 이야기에는 이 기능을 활성화시키면 잡음이 많이 줄어든다고 한다. 보다 높은 타이밍이 샘플링 타이밍에 도움을 주는 것 같다.


 다른 예로 해킨토시를 쓰는 사용법 중에 이 HPET를 켜야 제대로 설치를 할 수 있다는 이야기도 있다.


 일단 먼저 자신의 메인보드 바이오스 설정에서 활성화시켜야 한다. 때론 설정이 없는 메인보드도 있는데 그러한 보브들에는 64비트로 설정된 경우도 있다고 한다. 확인이 어려운 경우에는 RW Everything을 실행시켜서 ACPI 섹션에 HPET의 항목이 보이는지 확인하면 된다.


 그리고 메인보드 바이오스 설정에서 32비트 운영체제를 쓰면 32비트 모드로 64비트 운영체제를 쓰면 64비트 모드로 사용하면 된다. 64비트로 모드로 설정하면 32비트에서는 사용이 불가하고 32비트는 둘다 포용한다고 하는데 지금 내가 가진 메인보드는 64비트로 고정이라서 확인할 수 없다.


 사용방법은 간단하다. 명령행을 관리자권한으로 실행시키고, 그곳에 아래와 같은 명령을 입력하고 재부팅한다. 아래의 다른 한줄은 사용하지 않게 하는 명령이다.

bcdedit /set useplatformclock true

bcdedit /deletevalue useplatformclock

 사용중인 여부를 체크할 수 있는 WinTimerTester 1.1이라는 툴이 있는데, 제대로 작동하는 경우에는 14 MHz의 값을 가진다.



 윈도우즈는 상황에 따라 다음과 같은 4가지의 타이머 장치를 이용하는 방법을 따른다고 하는데, 윈도우즈 7의 경우에는 기본으로 3번째로 설정되어 사용되어진다고 한다.

1. TSC+LAPICs = 2.74MHz
2. LAPICs = 3.2 MHz
3. TSC+HPET = 3.4 MHz
4. HPET = 14.0MHz


 최근에 사용정도에 따른 변화하는 시스템 클럭으로 정확한 타이밍을 요구하는 어플을 위해 대부분 QueryPerformance* API를 사용하나, 그렇지 않은 경우에는 이 설정으로 어플리케이션이 효과를 볼 수 없기도 하다. 하지만 프로그래밍에서도 권장하는 방법이라 많은 어플리케이션들이 이 방법이 통하는 어플리케이션을 사용하고 있으리라 본다.

 

WinTimerTester_1.1.zip


RwPortableV1.5.3.7.zip



 (추가) 어쩌다 보면 bcd가 사라져서 문제가 생기는 경우가 있다. 이 경우엔 윈도우즈 7 인스톨 씨디로 부팅해서 복구 모드에서 커맨드 프롬프트로 들어가서 'bootrec /rebuildbcd' 라고 해주면 bcd가 다시 생성된다.