ACPI システム記述テーブル

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 基本システム説明テーブル (DSDT)

  • 必要に応じて、追加のシステム説明テーブル (SSDT)

固定ACPI説明テーブル (FADT)

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

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

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

    低_電源_S0_アイドル_機能ビットオフセット21。 プラットフォームが、Sxスリープ状態よりもエネルギー効率の高いACPI S0システム電源状態内の低電力アイドル状態をサポートしていることを示します。 このフラグが設定されている場合、Windowsはスリープ状態と再開を試行しませんが、代わりにプラットフォームのアイドル状態とコネクトスタンバイを使用します。

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

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

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

  • ハードウェア_削減_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)

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

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

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

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

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

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

Microsoftでは、すべてのシステムにデバッグポートが必要です。 プラットフォームに組み込まれているデバッグポート (s) を記述するために、MicrosoftはACPIのデバッグポートテーブル2 (DBG2) を定義します。 このテーブルでは、デバッグ目的で1つまたは複数の独立したポート (s) を指定します。 DBG2テーブルが存在する場合は、プラットフォームに少なくとも1つのデバッグポートが含まれていることを示します。 このテーブルには、デバッグポート (s) の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は、解釈された言語(ACPIソース言語またはASL)と、システムデバイスと機能、およびそのプラットフォーム固有のコントロールをOSに依存しない方法で記述するための実行環境 (ACPI仮想マシン) を定義します。 ASLは、ACPI名前空間で名前付きオブジェクトを定義するために使用され Microsoft ASLコンパイラ は、DSDTでオペレーティングシステムに転送するためのACPI機械語 (AML) バイトコードを生成するために使用されます。 受信トレイの Windows ACPIドライバーであるAcpiは、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ダウンロード) を参照してください。