次の方法で共有


ACPI システム記述テーブル

SoC ベースのプラットフォームでは、高度な構成と電源インターフェイス (ACPI) ハードウェア仕様の実装は必要ありませんが、ACPI ソフトウェア仕様の多くは必要です (または可能です)。 ACPI は、汎用の拡張可能なテーブルパッシング メカニズムに加えて、プラットフォームをオペレーティング システムに記述するための特定のテーブルを定義します。

ID フィールドとチェックサム フィールドを含むテーブルの構造とヘッダーは、 ACPI 5.0 仕様で定義されています。 Windows では、この記事で説明されている特定のテーブルに加えて、このテーブル 渡しメカニズムを利用します。

これらのテーブルの背後にある考え方は、さまざまな方法でさまざまなプラットフォームに統合できる標準の知的財産 (IP) ブロックを汎用ソフトウェアでサポートできるようにすることです。 テーブル戦略では、特定のプラットフォームのプラットフォーム変数属性がテーブルに提供され、プラットフォームに統合された特定の IP ブロックのセットに適応するために汎用ソフトウェアによって使用されます。 したがって、このソフトウェアは一度書き込み、徹底的にテストしてから、時間の経過とともに最適化することができます。

ルートシステム記述ポインター (RSDP)

Windows は、ハードウェア プラットフォームを起動するために UEFI ファームウェアに依存します。 そのため、WINDOWS では、 ACPI 5.0 仕様の「UEFI 対応システムでの RSDP の検索」セクション 5.2.5.2 で説明されているように、EFI システム テーブルを使用して RSDP を検索します。 プラットフォーム ファームウェアは、RSDP の RSDT または XSDT のアドレスを入力します。 (両方のテーブル アドレスが指定されている場合、Windows は XSDT を優先します)。

ルート システム記述テーブル (RSDT)

RSDT (または XSDT) には、プラットフォームで提供されている他のシステム記述テーブルへのポインターが含まれています。 具体的には、このテーブルには次のテーブルへのポインターが含まれています。

  • 固定 ACPI ハードウェア テーブル (FADT)

  • 複数割り込みコントローラー テーブル (MADT)

  • 必要に応じて、コア システム リソース テーブル (CSRT)

  • デバッグ ポート テーブル 2 (DBG2)

  • ブート グラフィックス リソース テーブル (BGRT)

  • ファームウェア パフォーマンス データ テーブル (FPDT)

  • 基本システム記述テーブル (DSDT)

  • 必要に応じて、追加のシステム記述テーブル (SSDT) を使用することができます。

ACPI Description Table (FADT) を修正しました

固定 ACPI ハードウェア テーブル (FADT) には、プラットフォームで使用できるさまざまな固定ハードウェア機能に関する重要な情報が含まれています。 ハードウェアを削減した ACPI プラットフォームをサポートするために、ACPI 5.0 は FADT テーブル定義を次のように拡張します。

  • FADT (オフセット 112) 内の Flags フィールドには、次の 2 つの新しいフラグがあります。

    HARDWARE_REDUCED_ACPI ビット オフセット 20。 ACPI ハードウェアがこのプラットフォームで使用できないことを示します。 ACPI 固定ハードウェア プログラミング モデルが実装されていない場合は、このフラグを設定する必要があります。

    LOW_POWER_S0_IDLE_CAPABLE ビット オフセット 21。 プラットフォームが、どの Sx スリープ状態よりもエネルギー効率の高い ACPI S0 システムの電源状態内の低電力アイドル状態をサポートしていることを示します。 このフラグが設定されている場合、Windows はスリープ状態や再開を試みず、代わりにプラットフォームのアイドル状態と接続待機を使用します。

  • FADT Preferred_PM_Profile フィールド (バイト オフセット 45) には、新しいロール エントリ "Tablet" があります。 このロールは、ディスプレイと入力の電源管理ポリシーに影響し、スクリーン キーボードの表示に影響します。

  • "IA-PC ブート アーキテクチャ フラグ" フィールド (オフセット 109) には、PC の CMOS RTC が実装されていないか、レガシ アドレスに存在しないことを示す新しい "CMOS RTC Not Present" フラグ (ビット オフセット 5) があります。 このフラグが設定されている場合、プラットフォームは ACPI 時間およびアラーム制御方法デバイスを実装する必要があります。 詳細については、ACPI で定義されたデバイスの記事の制御方法の時刻とアラーム デバイスのセクションを参照してください。

  • ハードウェアが削減された ACPI プラットフォームで従来の PC スリープ/再開をサポートするために、新しいフィールドが追加されました。 これらのフィールドは Windows では無視されますが、コンプライアンスのためにテーブルに存在する必要があります。

  • HARDWARE_REDUCED_ACPI フラグが設定されている場合、ACPI ハードウェア仕様に関連するすべてのフィールドはオペレーティング システムによって無視されます。

その他のすべての FADT 設定は、以前のバージョンの ACPI 4.0 の意味を保持します。 詳細については、 ACPI 5.0 仕様のセクション 5.2.9「FIXED ACPI Description Table (FADT)」を参照してください。

複数の APIC 説明テーブル (MADT)

ACPI の PC 実装では、システム割り込みモデルを記述するために、複数の APIC 記述テーブル (MADT) および PC 固有の割り込みコントローラー記述子が使用されます。 Arm ベースの SoC プラットフォームの場合、ACPI 5.0 では、Arm Holdings の汎用割り込みコントローラー (GIC) と GIC ディストリビューターの記述子が追加されます。 Windows には、GIC および GIC ディストリビューターの受信トレイ サポートが含まれています。 これらの記述子の詳細については、 ACPI 5.0 仕様のセクション 5.2.12.14、"GIC 構造体"、および 5.2.12.15、"GIC ディストリビューター構造"を参照してください。

割り込みコントローラー記述子構造体は、MADT の Flags フィールドの直後に表示されます。 Arm プラットフォームの場合、GIC ごとに 1 つの記述子が一覧表示され、その後に GIC ディストリビューターごとに 1 つが表示されます。 ブート プロセッサに対応する GIC は、割り込みコントローラー記述子の一覧の最初のエントリである必要があります。

汎用タイマー記述テーブル (GTDT)

割り込みコントローラーと同様に、ACPI には標準のタイマー記述テーブルがあります。 GIT タイマーを利用する Arm システムの場合、ACPI の GTDT を使用して、Windows の GIT の組み込みサポートを活用できます。

コア システム リソース テーブル (CSRT)

コア システム リソース (CSP) は、オペレーティング システムがアクセスをシリアル化する必要がある割り込みコントローラー、タイマー、DMA コントローラーなどの共有ハードウェア機能です。 タイマーや割り込みコントローラー (x86 アーキテクチャと Arm アーキテクチャの両方) などの機能の業界標準が存在する場合、Windows は ACPI で説明されている標準テーブル (MADT や GTDT など) に基づいてこれらの機能をサポートしています。 ただし、業界が DMA コントローラー インターフェイス標準に収束するまでは、オペレーティング システムで一部の非標準デバイスをサポートする必要があります。

Windows では、この問題に対処するための HAL 拡張機能の概念がサポートされています。 HAL 拡張機能は SoC 固有のモジュールであり、DLL として実装され、Windows で必要とされる特定のクラスの CSR の特定のハードウェア インターフェイスに Windows HAL を適応させます。 これらの非標準 CSR モジュールを識別して読み込むために、Microsoft は新しい ACPI テーブルを定義しました。 このテーブルは、ACPI 仕様で "CSRT" の予約済み署名を持ち、プラットフォームで標準以外の CSR が使用されている場合は RSDT に含める必要があります。

CSRT は、各リソース グループが特定の種類のハードウェアを識別する CSR のリソース グループを記述します。 Windows では、リソース グループに指定された識別子を使用して、このグループに必要な HAL 拡張機能を検索して読み込みます。 CSRT 内のリソース グループには、CSR の種類と HAL 拡張機能のニーズに応じて、個々のリソース記述子が含まれている場合もあります。 これらのリソース記述子の形式と使用は HAL 拡張ライターによって定義され、拡張をより移植可能にすることができ、CSRT に含まれるリソース記述子を変更するだけでさまざまな SoC プラットフォームをサポートできます。

HAL 拡張機能のメンテナンスをサポートし、これらの拡張機能で使用されるシステム リソースを管理するには、CSRT で説明されている各リソース グループも、プラットフォームの ACPI 名前空間内のデバイスとして表す必要があります。 詳細については、次の「差別化されたシステム記述テーブル (DSDT)」セクションを参照してください。 リソース グループ ヘッダーで使用されるデバイス識別子は、デバイスの名前空間ノードで使用される識別子と一致する必要があります。 詳細については、「デバイス管理名前空間オブジェクト」の「ACPI でのデバイス識別」セクションを参照してください。 これらのリソース グループ名前空間デバイスが存在すると、HAL 拡張機能を Windows Update サービスで処理できます。

詳細については、 コア システム リソース テーブル (CSRT) の仕様を参照してください。

デバッグ ポート テーブル 2 (DBG2)

Microsoft では、すべてのシステムでデバッグ ポートが必要です。 プラットフォームに組み込まれているデバッグ ポートを説明するために、Microsoft は ACPI のデバッグ ポート テーブル 2 (DBG2) を定義します。 この表では、デバッグ目的で 1 つ以上の独立したポートを指定します。 DBG2 テーブルが存在する場合は、プラットフォームに少なくとも 1 つのデバッグ ポートが含まれていることを示します。 この表には、デバッグ ポートの ID と構成に関する情報が含まれています。 テーブルは、他の ACPI テーブルと共にシステム メモリ内にあり、ACPI RSDT テーブルで参照する必要があります。

Windows では、DBG2 テーブルのポートの種類の値を識別し、システムが必要とするカーネル デバッガー (KD) トランスポート (USB やシリアルなど) を読み込みます。 その後、KD トランスポートは、DBG2 テーブルのポート サブタイプ値を使用して、ポートで使用されるハードウェア インターフェイスを識別します。 DBG2 テーブルのその他の情報は、指定されたサブタイプのハードウェア インターフェイス モジュールによって使用されるポート レジスタのシステム アドレスを指定します。 最後に、DBG2 テーブルには、デバッグ ポートに対応する ACPI 名前空間内のデバイス ノードへの参照を含める必要があります。 このリファレンスを使用すると、Windows は、デバッグの使用とデバイスの通常の使用 (存在する場合) の間の競合を管理したり、デバッガーを電源切り替えと統合したりすることができます。

詳細については、 Microsoft デバッグ ポートの表 2 (DBG2) の仕様を参照してください。

差別化されたシステム記述テーブル (DSDT)

ACPI では、プラットフォーム上の周辺機器とシステム ハードウェア機能は、起動時に読み込まれる差別化されたシステム記述テーブル (DSDT) または起動時に読み込まれるセカンダリ システム記述テーブル (SSDT) で説明されています。これらは起動時に読み込まれるか、実行時に動的に読み込まれます。 SoC の場合、プラットフォーム構成は通常静的であるため、DSDT で十分な場合がありますが、SSDT を使用してプラットフォーム記述のモジュール性を向上させることもできます。

ACPI は、OS に依存しない方法でシステム デバイスと機能とそのプラットフォーム固有のコントロールを記述するための解釈言語 (ACPI ソース言語、または ASL) と実行環境 (ACPI 仮想マシン) を定義します。 ASL は ACPI 名前空間で名前付きオブジェクトを定義するために使用され、 Microsoft ASL コンパイラ を使用して、DSDT 内のオペレーティング システムに転送するための ACPI マシン言語 (AML) バイト コードを生成します。 受信トレイ Windows ACPI ドライバー (Acpi.sys) は、ACPI 仮想マシンを実装し、AML バイト コードを解釈します。 AML オブジェクトは、単に説明情報を返す場合があります。 または、AML オブジェクトは、計算を実行するメソッド、または I/O 操作を実行するメソッドである可能性があります。 コントロール メソッドは、オペレーティング システムのデバイス ドライバーを使用してプラットフォーム ハードウェアで I/O 操作を行う実行可能な AML オブジェクトです。 ASL は OpRegions を使用して、オペレーティング システムでアクセスできるさまざまなアドレス空間を抽象化します。 制御メソッドは、OpRegions で宣言された名前付きフィールドとの間の一連の転送として I/O 操作を実行します。

OpRegions の詳細については、 ACPI 5.0 仕様のセクション 5.5.2.4「操作リージョンへのアクセス」を参照してください。 ASL および制御メソッドの詳細については、ACPI 5.0 仕様のセクション 5.5「ACPI 名前空間」を参照してください。

Windows では、ASL コードの開発とデバッグがサポートされています。 ASL コンパイラには、デバッグ ターゲットから名前空間を読み込む実装者を有効にする逆アセンブラーが含まれています。 ASL コンパイラを使用すると、システム ファームウェアをフラッシュすることなく、迅速なプロトタイプ作成とテストのために名前空間をターゲットに再適用できます。 さらに、Windows カーネル デバッガーは、Acpi.sys ドライバーのチェック済み (CHK) バージョンと組み合わせて、AML 実行のトレースと分析をサポートします。 詳細については、「 AMLI デバッガー」を参照してください。

Windows SMM セキュリティ軽減策テーブル (WSMT)

Windows SMM セキュリティ軽減策テーブル (WSMT) 仕様には、Windows 仮想化ベースのセキュリティ (VBS) 機能をサポートする Windows オペレーティング システムで使用するために作成された Advanced Configuration and Power Interface (ACPI) テーブルの詳細が含まれています。

この情報は、次のオペレーティング システムに適用されます。

Windows Server 2016

Windows 10 Version 1607

詳細については、 Windows SMM セキュリティ軽減策テーブル (WSMT) 仕様 (DOCX ダウンロード) を参照してください。

iSCSI ブート ファームウェア テーブル (iBFT)

iSCSI ブート ファームウェア (iBF) テーブル (iBFT) は、iSCSI ブート プロセスに役立つさまざまなパラメーターを含む情報ブロックです。 iBFT は、iBF パラメーター値をオペレーティング システムに伝達するメカニズムです。 iBF は iBFT をビルドして格納します。 iBFT は、ブート プロセスの一貫したフローを有効にするために、Windows オペレーティング システムで使用できます。

詳細については、 iSCSI ブート ファームウェア テーブル (iBFT) 仕様 (DOCX ダウンロード) を参照してください。