ACPIとは何でしょうか?この記事では、ACPIについて徹底解説します。

ACPIとは

WindowsシステムでBIOSに入ると、「Advanced(詳細)」タブにACPIが表示される場合があります。では、ACPIとは何でしょうか?

「Advanced(詳細)」タブに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マシン言語で記述された必要な操作(ハードウェアコンポーネントの初期化など)を実行します。

Windows 10/8/7でACPI BIOSエラーを修正する方法[完全ガイド]
Windows 10/8/7でACPI BIOSエラーを修正する方法[完全ガイド]

ACPI_BIOS_ERRORが表示されたブルースクリーン エラーに遭遇したことはありませんか?この記事では、Windows PCのこのBSODエラーを修正するさまざまな方法をお伝えします。

もっと見る

構造

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を紹介します。

  • hatena