コンテンツへスキップ

RDTSCP

アーキテクチャリファレンスFeex

RDTSCPは、定義された順序付けプロパティに従ってx86タイムスタンプカウンタと補助プロセッサ識別子値を読み取ります。これは完全なシリアライズ命令ではなく、自動ベンチマークハーネスでもありません。

確認しておくべき要点

RDTSCPは、定義された順序付けプロパティに従ってx86タイムスタンプカウンタと補助プロセッサ識別子値を読み取ります。これは完全なシリアライズ命令ではなく、自動ベンチマークハーネスでもありません。

仕組み

RDTSCPはEDX:EAXでカウンタを、ECXでIA32_TSC_AUX値を返します。その順序付け規則は一部の先行操作を制約しますが、読み取りが完了する前に後続の命令が開始される可能性があり、先行するストアには追加の可視性の考慮事項があります。適切なフェンスシーケンスは、測定が何を区切ることを意図しているかによって異なります。

有用な場面

低レベルのタイミングコードは、OSが適切に構成している場合に補助値を使用してプロセッサの変更を検出するのに役立てることができます。堅牢なベンチマークは、コンパイル、ワークロードのウォームアップ、割り込み、スケジューリング、カウンタのキャリブレーション、および順序付けされる操作を依然として制御します。

サポートと有効化の確認方法

CPUID.80000001H:EDX ビット27がRDTSCPを列挙します。実際のOSまたはハイパーバイザでカウンタポリシーを確認し、必要なフェンスを備えた文書化されたタイミング手法を使用してください。アプリケーションの経過時間にはOSのモノトニッククロックを優先してください。

目的に応じてクロックを選択してください。経過時間、スレッドのCPU時間、サイクル数はそれぞれ異なる測定対象です。生の命令サンプリングではバイパスされる可能性のあるプラットフォームポリシーが、オペレーティングシステムのクロックインターフェースには組み込まれています。

この機能が確立しない事項

RDTSCPのサポートは、インバリアントまたは同期されたTSCの動作を確立するものではありません。補助値の解釈はOS定義です。順序付けを理解せずに2つのサンプルを減算すると、意図したのとは異なる間隔を測定してしまう可能性があります。

実際の互換性とパフォーマンス

ベンチマークには、適切なコンパイラ境界、ウォームアップ、代表的なデータ、そして移行とスケジューリングに対する理解も必要です。順序付けが不適切な測定を繰り返しても、精度は向上しません。いかなる結果にも環境と不確実性を明記してください。

実践的な検証チェックリスト

  1. 関係する正確なプロセッサまたはプラットフォームのモデル、ならびにアプリケーション、OS、ランタイムのバージョンを記録してください。実際のエラーや要件の文言をそのまま保持してください。
  2. その正確なモデルの製造元リファレンスを確認し、プログラムが実行される環境で実効的な機能と有効化状態を検査してください。
  3. 選択したバイナリまたはバックエンドのすべての要件を比較してください。類似した名前の機能、エイリアス、または広範な技術表記だけでは不十分です。
  4. アプリケーションが意図した実装を選択したことを確認してください。要件が満たされていない場合は、文書化された診断機能とサポートされているフォールバックを使用してください。
  5. 一度に1つのサポート対象の変更のみを行い、同じワークロードを繰り返してください。元の構成と復旧手順を常に利用可能な状態にしておいてください。

機能が記載されているにもかかわらずソフトウェアで使用できない場合

正確にどのコンポーネントが失敗しているかから調査を開始してください。ハードウェアデータベースに記載されているのは記録された機能です。オペレーティングシステムまたはハイパーバイザーは、異なる実効環境を公開することがあります。破損や無関係な未サポート命令でも同様の症状が発生する可能性があるため、不正命令エラーの場合も実際にフォールトの原因となった命令とバイナリビルドの調査が必要です。

正確なプラットフォーム向けにサポートされているアプリケーション、ドライバ、またはランタイムのバージョンをインストールし、必要に応じてベンダーが文書化しているベースラインまたはフォールバックビルドを使用してください。ソフトウェアアップデートによってプロセッサに欠落している命令を作り出すことはできません。ファームウェアおよびセキュリティポリシーの変更は、一般的な最適化レシピではなく、システム製造元の手順と復旧計画に従う必要があります。

本説明のソースと対象範囲

Intel 64 and IA-32 Architectures Software Developer's Manual

これらのリファレンスは、アーキテクチャの動作およびソフトウェア要件を規定しています。リンクされたハードウェアモデルページのすべての機能値を個別に検証するものではありません。モデルのサポート状況については、そのページの製造元エビデンスを使用し、実際の実効システム構成を確認してください。この記事はベンチマーク、認定、または独立したレビュー日を提供するものではありません。

出典と検証

エディトリアル所有権: Feex。独立したレビュー日は記録されていません。 調査方法.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · 第1巻および第2巻では指定された命令ファミリおよびCPUIDについて説明し、第3巻では状態、ページング、VMX、保護制御について説明しています。アーキテクチャドキュメントは、特定のモデルに対するサポートを確定するものではありません。

この記事は役に立ちましたか?

「はい」または「いいえ」を選択するだけで完了します。必要に応じて理由を選択するか、簡単なメモを追加してください。

この記事は役に立ちましたか?