컴퓨터2017. 10. 31. 20:34

고정밀 이벤트 타이머(HPET)를 켜고 끄는 방법입니다.

 

컴퓨터에는 내부 동작 시간의 기준점을 만드는 타이머가 있는데 이 타이머는 컴퓨터 내부의 시간을 유지해주는것 외에도 모든 프로그램이 동작하는 주기에 영향을 줍니다.
예전에는 저해상도의 타이머를 사용해도 크게 부족함이 없었지만 컴퓨터가 발전해감에 따라 더 정밀한 고해상도의 타이머가 필요하게 되서 나온게 HPET(High Precision Event Timer) 입니다.

 

HPET를 사용하면 기존 TSC 타이머나 ACPI 타이머등보다 좀 더 오차가 적은 정밀한 타이밍으로 CPU의 오버헤드를 줄여주게 되어 프로그램 구동시 좀더 빠른 동작과 정밀한 동작을 할수 있게 됩니다. 특히 음원 샘플링을 하는 경우 음질 향상이 되거나 잡음이 줄어드는 등의 효과를 볼 수도 있다고 알려져 있습니다. 멀티미디어와 관련된 성능 향상 효과도 있지만 게임이나 일반 프로그램들에서도 성능 향상을 볼 수도 있습니다.

HPET의 단점으로는 호환성이나 안전성이 떨어질 수 있습니다.
프로그램 성능이 하락하거나 게임에서 프래임이 떨어지는등의 성능 저하가 올수도 있고 프로그램이 에러가 나거나 동작 자체가 불안정해지는 경우가 생길수도 있습니다.

특히 라이젠CPU를 사용 하는 경우 hpet를 켜두면 게임에서 프래임 하락이 있다고 하니 참고 바랍니다.

 

내가 하는 작업에서 HPET를 켜고 사용해서 문제가 없는 경우만 사용하고 문제가 발생하면 끄면 됩니다.

 

 

HPET를 사용하기 위해서는 메인보드와 OS에서 기능을 지원하고 활성화 되어 있어야 합니다.

메인보드는 2005년 이후에 나온 보드는 대부분 지원을 하는 편이고 OS는 윈도우 비스타 이후 제품이면 지원을 합니다.

 

 

※ HPET 가 동작 중인지 확인하기

 

WinTimerTester 1.1.zip

△ WinTimerTester 1.1 버전 입니다.

압축을 풀고 실행을 하면 됩니다.

 

 

hpet가 동작하지 않았을때 스샷입니다.

QueryPerformanecFrequency 값이 2~4 MHz 정도로 나옵니다.

참고로 이건 1CPU를 사용할 때 값이고 2CPU를 사용하면 더 큰 숫자가 나올 수 있습니다.

 

 

hpet가 적용된 스샷입니다.

QueryPerformanecFrequency 값이 14.31818 MHz로 나옵니다.

 

 

※ HPET 켜기

 

우선 바이오스 설정으로 들어가서 HPET 항목을 enable로 설정합니다.

간혹 보드에 따라 HPET를 설정하는 항목이 없고 무조건 활상화된 보드들이 있습니다.

정확한 메인보드 HPET 활성화 방법은 보드 제조사에 문의 해보면됩니다.

 

 

 

명령 프롬프트(CMD)를 관리자 권한으로 실행 합니다.

 

bcdedit /set useplatformclock true

 

위 명령어를 입력하고 엔터를 치면 위 스샷처럼 나옵니다.

컴퓨터를 재부팅하면 HPET가 적용이 됩니다.

 

 

※ HPET 끄기

 

바이오스나 윈도우 아무데서나 꺼도 됩니다.

 

 

명령 프롬프트(CMD)를 관리자 권한으로 실행 합니다.

 

bcdedit /set useplatformclock false

 

위 명령어를 입력해주고 엔터를 치면 위 스샷처럼 나옵니다.

재부팅을 하면 HPET 기능이 꺼지게 됩니다.

 

참고로 라이젠CPU를 사용하면 메인보드 설정은 켜두고 윈도우에서 꺼주는게 좋다는 경우가 많은거 같습니다.

라이젠 CPU를 사용하는 분들은 참고하면 좋겠습니다.

 

 




Posted by 천지무료

댓글을 달아 주세요

  1. 인런게 있었군요. 처음알았습니다
    테스트프로그램 돌려보니 저는 10으로 나오는데
    그럼 현재 작동중인 상황인거죠??
    좋은정보 감사합니다

    2019.08.03 20:01 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • QueryPerformanecFrequency 값이 14이상이 나와야 활성화 상태입니다.
      bcdedit /enum 명령어를 사용해서 USEplatformclock 항목 값을 확인해보면 좋을 거 같습니다.
      USEplatformclock 값이 YES면 활성화 No면 비활성화 입니다.

      2019.08.04 13:33 신고 [ ADDR : EDIT/ DEL ]