HPETはゲームで無効にするべき?bcdeditのuseplatformclockとTSC・QPCを検証【2026年版】
本記事にはアフィリエイト広告(Amazon・楽天市場等)のリンクが含まれています。
bcdeditのuseplatformclockとTSC・QPCの関係をMicrosoft公式資料で検証
bcdedit /set useplatformclock trueは消した方がいい」という説明を見かけることがあります。Microsoft Learnによると、Windowsは高精度な時間計測にQueryPerformanceCounter(QPC)というAPIを使っており、CPU内蔵のTSCが安定して使える環境では自動的にTSCを基準にし、TSCが適さない場合だけHPETやACPI PM Timerへ切り替えます。useplatformclockはこの自動選択を上書きしてプラットフォームクロックを強制する設定で、Microsoft自身がデバッグ専用と明記しています。参考:Microsoft Learn「高解像度のタイム スタンプの取得」、同ページ(英語版)、Microsoft Learn「BCDEdit /set」、同ページ(英語版)、Microsoft Learn「BCDEdit /deletevalue」、Microsoft Learn「BCDEdit /enum」にもとづきます(2026年9月26日確認)。
ゲーミングPCの最適化方法を調べていると、「HPETを無効にするとFPSが上がる」「入力遅延が減る」「bcdedit /set useplatformclock trueは消した方がいい」という情報を見かけることがあります。HPETはHigh Precision Event Timerの略で、PCに搭載されているハードウェアタイマーの一つです。
ただし、Windows 11のデバイスマネージャーにHPETというデバイスが存在することと、Windowsがゲーム中の高精度タイマーとして常にHPETを使っていることは同じではありません。Microsoft Learnによると、Windowsは高精度な時間計測にQueryPerformanceCounter(QPC)というAPIを使い、CPU内蔵のTSC(Time Stamp Counter)が時刻計測に適している場合はTSCを基準にします。TSCが適さない環境でだけ、HPETやACPI PM Timerなどのプラットフォームタイマーへ自動的に切り替わります。
以下では、HPETとTSC・QPCの関係、bcdeditのuseplatformclockを有効・無効にすると何が変わるのか、デバイスマネージャーやBIOSのHPET設定とどう違うのかを、公式資料の該当箇所を示しながら順番に確認します。
目次
要点先に結論
Windowsは高精度タイマーの基準として、TSCが使える環境ではTSCを優先し、適さない場合だけHPETやACPI PM Timerへ自動的にフォールバックします。bcdedit /set useplatformclock yesはこの自動選択を上書きしてプラットフォームクロックを強制する設定で、Microsoft Learnは「デバッグのためにのみ使用してください」と明記しています。ゲームのFPSを上げる目的で、理由なくこの設定を追加する根拠はありません。すでに設定済みで通常利用に戻したい場合は、bcdedit /deletevalue useplatformclockで強制設定を削除できますが、これは「HPETを無効化する」操作ではなく「Windowsの自動選択へ戻す」操作です。
ここから、HPET・TSC・QPC・useplatformclockという4つの用語がそれぞれ何を指しているのかを切り分けて確認します。
HPETとはIntelとMicrosoftが開発したプラットフォーム側のタイマー
HPETはHigh Precision Event Timerの略で、Microsoft Learnの説明によると、マルチメディアや時間に敏感なアプリケーションのタイミング要求を満たすためにIntelとMicrosoftが共同開発したハードウェアタイマーです。CPU内部にあるTSCとは異なり、HPETはシステム全体で共有されるプラットフォーム側のタイマーで、1台のPCに複数のHPETが搭載されている場合もあります。Windowsでは Windows Vista以降でHPETが利用できるようになり、Windows 7・Windows 8のハードウェアロゴ認証ではHPETのハードウェア対応が要件に含まれていました。
TSCとはCPU内蔵の高速なカウンター
TSCはTime Stamp Counterの略で、IntelやAMDのx86・x64 CPU内部に存在する64bitのカウンターです。Microsoft Learnは、TSCレジスタをRDTSC・RDTSCP命令で読み出すコストについて、CPUの種類によって異なるものの「10の位から数百のマシンサイクル程度」と説明しています。HPETなどのプラットフォームタイマーはCPUの外部(マザーボード上のPCH等)にあるため、値を読み出す際のアクセスコストがTSCより高くなります。同じ資料では、TSCが使えずプラットフォームタイマーを使う場合のアクセスコストについて「CPU速度など他のハードウェア要因にもよるが、多くの場合0.8〜1.0マイクロ秒程度」になるとしています。
- 読み出しコスト数十〜数百マシンサイクル
- システムコール不要(ユーザーモードから直接読める)
- 使える条件全コアで同期した安定動作のTSCがあること
- 読み出しコスト0.8〜1.0マイクロ秒程度
- システムコール必要(カーネル遷移が発生)
- 使われる条件TSCが時刻計測に適さないと判定された場合
「HPETの方がHigh Precisionという名前だからTSCより常に優れている」という理解は正確ではありません。タイマーの性能は精度だけでなく、読み出しにかかる時間やCPU負荷も含めて評価する必要があります。
自動選択WindowsはTSCとHPETを状況に応じて自動的に使い分ける
現在のWindowsでは、どのタイマーを高精度タイマーの基準にするかを基本的にOS側が判断します。Microsoft Learnは、Windows Vista・Windows Server 2008の時点では、出荷されたすべてのコンピューターがHPETまたはACPI PM TimerといったプラットフォームカウンターをQPCの基準として使っていたとしています。その後、Windows 7・Windows Server 2008 R2以降では、大半のPCが搭載する「constant-rate TSC」を基準として使えるようになり、Windows 8以降ではTSCの同期アルゴリズムがさらに改善され、多数のプロセッサを持つ大規模システムでもTSCを高精度タイマーとして利用しやすくなっています。
一方で、TSCが時刻計測に適していないPCでは、Windowsが自動的にHPETやACPI PM Timerなどのプラットフォームタイマーを選択します。この判定はシステム初期化時にWindowsが自動で行うもので、ユーザーが「HPETを使う」「TSCを使う」という設定を毎回手動で決める必要はありません。
QPCとはアプリはQueryPerformanceCounterを呼ぶだけで基準タイマーを意識しない
ゲームやベンチマークソフトが短い時間間隔を高精度に測定するときは、QueryPerformanceCounter(QPC)というWindows APIが使われることがあります。Microsoft Learnは、同じPC内でマイクロ秒単位以下の時間計測を行う場合にQPCの利用を推奨しています。重要なのは、アプリケーションがQPCを呼び出すとき、その裏側でTSCとHPET・PM Timerのどちらを読みに行くかはWindowsが決定しているという点です。TSCが使えるPCではTSCを、使えない場合はHPETやACPI PM Timerを、というように基準タイマーはOSの判断で切り替わります。そのため、あるゲームがQPCを使って処理時間を測っていても、そのゲームが常にHPETを読んでいるとは限りません。
useplatformclockとは自動選択を上書きしてプラットフォームクロックを強制する設定
HPETの最適化情報で頻繁に登場するのが、次のBCDEditコマンドです。
bcdedit /set useplatformclock yes
Microsoft Learnの「BCDEdit /set」には、useplatformclockについて次の説明があります。
useplatformclock [ yes | no ] プラットフォーム クロックをシステムのパフォーマンス カウンターとして強制的に使用します。このオプションはデバッグのためにのみ使用してください。
ここで注意したいのが「強制的に」という部分です。通常のWindowsはTSCが使える場合にTSCを選択できますが、useplatformclockを設定すると、この自動選択に介入してプラットフォームクロックの使用を強制します。同じページでは、disabledynamictick(タイマーの間引き機能に関わる設定)についても同様に「デバッグのためにのみ使用してください」という注記があり、どちらもゲームのFPSを上げる目的でユーザーが日常的に触る想定の設定ではありません。
また、useplatformclockと「HPET」は完全に同じ意味ではない点にも注意が必要です。Microsoft LearnのQPC資料では、Windowsが利用しうるプラットフォーム側のタイマーとしてHPETだけでなくACPI PM Timerも挙げられています。bcdedit /set useplatformclock yesは「HPETをオンにするコマンド」というより、「Windowsへプラットフォーム側のタイマー利用を強制する設定」と理解したほうが正確です。
誤解しやすい点useplatformclockを削除してもHPETは無効にならない
次のコマンドについても混同されやすいポイントがあります。
bcdedit /deletevalue useplatformclock
Microsoft Learnの「BCDEdit /deletevalue」は、このコマンドについて「ブート構成データ(BCD)からブートエントリーオプション(とその値)を削除する」機能で、BCDEdit /setで追加したオプションを取り除くために使うと説明しています。つまりこのコマンドは、「HPETというハードウェアを無効化する」操作ではなく、「プラットフォームクロックを強制する設定をBCDから削除して、Windowsの通常のタイマー選択へ戻す」操作です。HPETというデバイス自体をPCから取り除くわけではなく、Windowsは必要であれば引き続きプラットフォームタイマーを利用できます。同ページによると、設定の変更を反映するには、削除後にPCを再起動する必要があります。
デバイスマネージャーの「システムデバイス」にある「High precision event timer」を無効化する操作も、useplatformclockの削除とは別物です。useplatformclockはBCDに保存されるWindowsのブート設定であるのに対し、デバイスマネージャーの操作はWindowsから見えるHPETデバイス側を直接無効化する操作にあたります。どちらか一方を変更しても、もう一方の設定が連動して変わるわけではありません。BIOS・UEFI側にHPETのEnabled・Disabled項目を持つ古いマザーボードもありますが、これもWindows側のuseplatformclockとは別の設定です。最近のPCではBIOS側にこの項目が表示されない場合もあり、ゲーム性能のためだけに隠れた設定を探す必要はありません。
確認方法useplatformclockが設定されているかはbcdeditで確認できる
現在のBCD設定は、管理者権限のコマンドプロンプトかWindows Terminalから確認できます。
bcdedit /enum {current}
Microsoft Learnの「BCDEdit /enum」によると、このコマンドは現在アクティブなブートエントリーとその設定項目を一覧表示します。一覧の中にuseplatformclock Yesのような行が表示される場合は、プラットフォームクロックを強制する設定がBCDへ明示的に追加されています。useplatformclock自体が表示されていなければ、その設定は入っておらず、Windowsの通常のタイマー選択に任せている状態です。ゲーム最適化を目的に、わざわざ新しくuseplatformclockを追加する必要はありません。
FPSへの影響HPETを無効にすればFPSが上がるとは言えない
Microsoft Learnの資料には、ゲーム性能を改善する目的でHPETを無効化するという推奨は見当たりません。むしろWindowsは、TSCが使える場合はTSCを使い、適さない場合だけHPETなどのプラットフォームタイマーへ自動的にフォールバックする仕組みを持っています。そのため、現在のWindowsでuseplatformclockなどの強制設定を何も入れていないPCであれば、HPETというデバイスが存在しているだけでゲーム性能が大きく低下しているとは考えにくい状況です。
ただし、bcdedit /set useplatformclock yesでプラットフォームクロックを強制している場合は話が変わります。TSCが使える環境ではQPCをユーザーモードから低コストで読み出せますが、HPETやPM TimerがQPCの基準になるとシステムコールとハードウェアアクセスが必要になり、読み出しコストが数十〜数百マシンサイクルから0.8〜1.0マイクロ秒程度まで増えます。本来TSCを使えるPCでこの設定を強制していた場合、削除すれば時間取得処理のオーバーヘッドが減る可能性があります。これは「HPETそのものを無効にすればFPSが上がる」という話とは別の効果です。
HPET設定を変更してベンチマークのスコアが変わった場合も、測定方法そのものへの影響を考慮する必要があります。ゲームやベンチマークソフトは処理時間の計測にQPCを使うことがあり、その基準タイマーが変わればソフトウェア自身の時間計測処理にも影響しえます。平均FPSだけでなく、フレームタイムの安定性や1% Lowも合わせて確認したほうが、実際の体感に近い判断ができます。
入力遅延HPETを切れば入力遅延が減るとは限らない
マウス入力から画面表示までには、USB入力・ゲームエンジン・CPU処理・GPUレンダリング・フレームキュー・ディスプレイなど複数の処理が挟まります。HPETはこの中で時間計測に使われうるタイマーの一つに過ぎず、WindowsがTSCを正常にQPCの基準として利用している環境では、HPETというデバイスが存在しているだけで毎回読み出されているわけではありません。入力遅延を詰めたい場合は、NVIDIA Reflexのような低遅延機能やゲーム内のフレームキュー設定、垂直同期・FPS上限、ディスプレイのリフレッシュレートなど、入力から表示までの経路に直接効く項目のほうが優先度は高くなります。
混同注意タイマー解像度・disabledynamictickとも別の話
HPETの最適化情報では、性質の異なる複数の設定がひとまとめに語られがちです。整理すると次のようになります。
- Windowsのタイマー解像度 スケジューラやタイマーイベントがどれくらい細かい間隔で動作するかに関わる別の仕組みで、HPETやQPCとは異なる概念です。「Timer Resolutionを0.5msにしたいからHPETを無効化する」という単純な関係にはありません。
bcdedit /set disabledynamictick yesWindowsがアイドル時などに不要なタイマーティックを抑制する「Dynamic Tick」という別の仕組みに関わる設定で、HPETそのものを無効化するコマンドではありません。useplatformclockと同じく、Microsoft Learnは「デバッグのためにのみ使用してください」としています。- デバイスマネージャーのHPET無効化 Windowsから見えるHPETデバイス側を直接無効化する操作で、BCDに保存される
useplatformclockの削除とは連動しません。 - BIOS・UEFIのHPET設定 ハードウェアがHPETをOSへ公開するかどうかに関わる設定で、Windows側のブート設定とは別の場所にあります。
ゲーム最適化サイトで複数のBCDEditコマンドやHPET関連設定がまとめて紹介されている場合、どれか一つだけを検証するつもりが、気づかないうちに複数の設定を同時に変えてしまうことがあります。何が効いたのかを切り分けたい場合は、一つずつ変更して比較したほうが安全です。ネットワークアダプター側のChecksum Offloadのように、「ゲームでは切るべき」と紹介されがちな設定でも、公式資料を確認すると逆に常時有効化が推奨されているケースもあります。
判断の分かれ目useplatformclockを確認して判断が変わるケース
bcdedit /enum {current}を実行してもuseplatformclockが表示されない(通常のWindows状態)- 普段の利用やベンチマークで、再現性のあるカクつきや異常な負荷が出ていない
- ゲーム最適化サイトの情報だけを理由に、デバイスマネージャーやBIOSのHPETをこれから無効化しようとしている
bcdedit /enum {current}でuseplatformclock Yesが表示され、自分や過去の最適化作業で追加した記憶がある- 仮想マシンのデバッグなど特殊な検証目的がなく、通常のゲーム用途に戻したい
- 削除後は再起動して、同じゲーム・同じシーンでフレームタイムや1% Lowを比較できる
特殊なデバッグ目的でuseplatformclockやdisabledynamictickを意図的に設定している場合は、その目的が優先されます。通常のゲーミングPCでは、確認して該当しなければそのままで問題ありません。
手順確認から削除・再起動までの流れ
管理者権限で開いたコマンドプロンプトかWindows Terminalで、まず現在の設定を確認します。
bcdedit /enum {current}
一覧にuseplatformclock Yesが表示されていて、通常のWindows状態へ戻したい場合は、次のコマンドで強制設定を削除します。
bcdedit /deletevalue useplatformclock
実行後はPCを再起動します。Microsoft Learnは、BCDのブート設定を変更した場合、変更を反映するには通常の再起動が必要になるとしています。BCDEditはWindowsのブート構成を直接書き換えるツールで、設定によってはPCが正常に起動しなくなる可能性があるとMicrosoftも注意を促しています。BitLockerやSecure Bootを有効にしているPCでは、設定変更の前にこれらを無効化・一時停止する必要がある場合もあります。useplatformclockを新たに追加する目的でこの手順を使う必要はなく、あくまで過去に追加した強制設定を通常状態へ戻すための操作として扱ってください。
FAQHPETに関する質問
useplatformclockなどの強制設定を入れていないPCなら、HPETというデバイスの存在自体がFPSを大きく下げているとは考えにくい状況です。bcdedit /set useplatformclock yesはHPETを有効にするコマンドですかbcdedit /deletevalue useplatformclockを実行するとHPETは無効になりますかuseplatformclockはBCDに保存されるWindowsのブート設定です。デバイスマネージャーの操作は、Windowsから見えるHPETデバイス側を直接無効化するもので、どちらか一方を変えてももう一方には連動しません。まとめまとめ|HPETは「常時オフにすべき機能」ではない
HPETはIntelとMicrosoftが共同開発したプラットフォーム側のタイマーで、PCに搭載されているだけでゲームが常に使っているとは限りません。Windowsは高精度な時間計測にQueryPerformanceCounter(QPC)というAPIを使い、CPU内蔵のTSCが使える環境ではTSCを優先し、適さない場合だけHPETやACPI PM Timerへ自動的に切り替えます。
注意したいのはbcdedit /set useplatformclock yesです。これは単純なHPET有効化コマンドではなく、Windowsへプラットフォームクロックの使用を強制する設定で、Microsoft自身がデバッグ目的だけで使うよう明記しています。過去の最適化作業でこの設定を追加していて標準状態へ戻したい場合は、bcdedit /deletevalue useplatformclockで強制設定を削除できますが、これはHPETそのものを無効化する操作ではなく、Windowsが状況に応じて適切なタイマーを自動選択できる状態に戻す操作です。ゲームのFPSや入力遅延の改善だけを目的に、デバイスマネージャーのHPET・BIOSのHPET・useplatformclock・disabledynamictickをまとめて変更するのは避けたほうがよいでしょう。
HPETは「ゲームでは無効にすべき機能」ではなく、Windowsが状況に応じて利用できるプラットフォームタイマーの一つです。TSCが使える環境ではWindowsが自動的にTSCを優先するため、通常のゲーミングPCでHPETを積極的に無効化する理由は見当たりません。bcdedit /set useplatformclock yesはHPETのON/OFF設定ではなく、プラットフォームクロックの使用をWindowsへ強制するデバッグ専用オプションです。過去にこの設定を追加していた場合はbcdedit /deletevalue useplatformclockで削除し、再起動してWindowsの自動選択に戻すことができます。



