ACPIとは何でしょうか?この記事では、ACPIについて徹底解説します。
ACPIとは
WindowsシステムでBIOSに入ると、「Advanced(詳細)」タブにACPIが表示される場合があります。では、ACPIとは何でしょうか?
BIOSにアクセスできない場合は、MiniToolの公式サイトにアクセスして解決策を探しましょう。
ACPIは、Advanced Configuration and Power Interfaceの略語です。オペレーティングシステムは、ACPIが提供するオープン標準を利用し、コンピューターのハードウェアコンポーネントを検索および構成し、電力管理とステータス監視を実行します。
プラットフォーム固有のファームウェアが電源管理ポリシーを決定する以前のBIOS中心のシステムとは対照的に、ACPIは電源管理をOSの制御下に置いています。
この仕様は、オペレーティングシステム向けの構成と電源管理(Operating System-directed configuration and Power Management:OSPM)システムに不可欠です。ACPIの実装により、UIを介した古いファームウェアのインターフェースから、デバイス管理の責任を取り除くことができます。
内部的には、ACPIは、システムファームウェア(UEFIまたはBIOS)によって提供される命令のリスト(「メソッド」)を使用し、オペレーティングシステムカーネルに使用可能なコンポーネントとその機能ををマークします。
次に、ACPIは、組み込みの最小限の仮想マシンを使用して、ACPIマシン言語で記述された必要な操作(ハードウェアコンポーネントの初期化など)を実行します。
構造
ACPIファームウェアには、ACPI table、ACPI BIOS、ACPI registerの3つの主要コンポーネントがあります。APMやPnP BIOSなどの以前のバージョンとは異なり、ACPIはACPI BIOSコード内で実装することが困難です。また、ACPI table(テーブル)をシステムメモリにロードすることはACPI BIOSコードの主な役割です。
それに対し、ほとんどのファームウェアACPI機能は、ACPIテーブルに格納されているチューリング完全なドメイン固有低レベル言語であるACPIマシン言語(AML)のバイトコードで提供されます。
これらのテーブルを使用するには、オペレーティングシステムにAMLバイトコードのインタープリターが必要です。 ACPIコンポーネントアーキテクチャ(ACPICA)は、AMLインタープリター実装へのリファレンスを提供します。BIOS開発中、AMLバイトコードはASL(ACPIソース言語)コードからコンパイルされます。
ACPIはPnP BIOSに代わり、ほとんどのDSDT(Differentiated System Description Table)のACPIテーブルで実装されたハードウェア列挙子を提供します。PnP BIOSコード(16ビット)とは異なり、ACPIバイトコードは64ビットロングモードでもどのOSでも使用できます。
歴史
- 1996年12月に、16、24、および32ビットのアドレス指定スペースをサポートするACPI仕様の最初のリビジョンがリリースされました。
- 2000年8月に、64ビットのアドレス指定スペースとマルチプロセッサワークステーションおよびサーバーをサポートするACPIリビジョン2.0がリリースされました。
- 2004年9月、リビジョン3.0がリリースされました。SATAインターフェイス、PCI Expressバス、256を超えるプロセッサーのマルチプロセッサーサポート、環境光センサー、およびユーザープレゼンスデバイスをサポートしていました。また、プロセッサ中心のサポートを超えて熱モデルが以前よりも拡張されました。
- 2009年6月、ACPI仕様のリビジョン4.0がリリースされ、設計にさまざまな新機能が追加されました。最も注目すべきは、USB 3.0のサポート、論理プロセッサのアイドルサポート、およびx2APICのサポートです。
- 2011年12月、ACPI仕様のリビジョン5.0がリリースされ、2014年7月にリビジョン5.1がリリースされました。
- 2019年1月、ACPIの最新の仕様リビジョン6.4がリリースされました。
オペレーティングシステム
MicrosoftのWindows98は、ACPIを実装した最初のオペレーティングシステムでしたが、その実装には多少バグがあるか、不完全でしたが、それに関連する問題の一部は第1世代のACPIハードウェアが原因でした。
Windows 98の最初のバージョンでは、システムのホワイトリストを除き、デフォルトでACPIが無効になっています。それ以降のバージョンのWindows、eComStation、FreeBSD、NetBSD、OpenBSD、HP-UX、OpenVMS、Linux、およびPCバージョンのSolarisを含む他のオペレーティングシステムは、ACPIを少なくともある程度サポートしています。
Windows Vista(およびそれ以降)などの一部の新しいオペレーティングシステムでは、コンピューターにACPI準拠のBIOSが必要です。
Windowsベースのオペレーティングシステムは、acpi.sysを使用してacpiイベントにアクセスします。
Linuxカーネル2.4シリーズはACPIのサポートが最小限で、カーネルバージョン2.6.0(デフォルトで有効)以降ではより適切なサポートが実装されていました。古いACPI BIOS実装には多くのバグがあるため、将来のオペレーティングシステムではサポートされません。
たとえば、Windows 2000、Windows XP、およびWindowsServer2003は、BIOSの日付が1999年1月1日以降の場合にのみACPIを使用します。Windows 98 Second Editionの場合、この日付は1999年12月1日です。同様に、Linuxカーネル2.6は、2001年1月1日より前のACPI BIOSをブラックリストに登録しました。
Linuxベースのオペレーティングシステムは、acpidを介してacpiイベントへのアクセスを提供できます。
最後に
この記事では、ACPI(Advanced Configuration and Power Interface)について徹底解説し、その構造、履歴、および対応するOSを紹介します。