ACPI(Advanced Configuration and Power Interface)とは
ACPI(アドバンスド・コンフィグレーション・アンド・パワーインターフェイス)は、1997年に
インテル、
東芝、
マイクロソフトが共同で策定した、
PC/AT互換機|PC_AT互換機をはじめとする様々なコンピュータの
電源管理と構成要素を
制御するためのオープンな統一規格です。ACPIは、単なる
電源管理の枠組みを超え、プラットフォームの構成要素を列挙し、管理するための統一されたフレームワークを提供します。これにより、従来のBIOS主導の管理方式から、
オペレーティングシステム(OS)主導の管理へと移行し、システム全体の
電源管理だけでなく、
デバイスごとの詳細な
電源管理、温度管理、スタンバイ(サスペンド)、冷却ファン
制御など、多岐にわたる機能を実現しています。
ACPIの概要
ACPIは、従来のAPM(Advanced Power Management)に代わるもので、
マザーボード上の
リソースを列挙するPnP BIOSや、マルチプロセッサを列挙するMPTableなども統合する役割を担っています。これにより、OSがシステム全体の
電源管理を効率的に行うことが可能となり、
消費電力の削減やバッテリー駆動時間の延長に貢献しています。
ACPIの規格は
CPUアーキテクチャに依存しないため、x86/x64系だけでなく、
ARMアーキテクチャなどの非x86/x64系の情報端末でも広く利用されています。これにより、ノートPCだけでなく、デスクトップ、
ワークステーション、
サーバー、
スマートフォン、タブレット端末など、様々な
デバイスでACPIの恩恵を受けることが可能です。
ACPIの構成要素
ACPIは、以下の主要な構成要素から成り立っています。
ACPIハードウェアレジスタ
ACPI BIOS: ACPIテーブルを初期化する役割を持ち、OS起動後は必要に応じて動作します。
電源イベントはOSへの割り込みとして伝達されます。
ACPIテーブル: システムの初期化に必要なデータが格納されたメモリ上のデータ構造です。RSDP(Root System Description Pointer)を起点に、RSDT(Root System Description Table)またはXSDT(eXtended System Description Table)を通じて、FACP(Fixed ACPI Control Pointer)やDSDT(Differentiated System Description Table)などのテーブルにアクセスします。これらのテーブルには、ACPIハードウェアレジスタの位置や、システム上のデバイス情報などが記述されています。
AML (ACPI Machine Language):
デバイスの情報や
電源管理に関する処理を記述する
中間言語です。ASL(ACPI Source Language)から生成され、OSが解釈することで、高度な機能を実現します。
ACPIテーブルの詳細
ACPIテーブルは、システムの初期化に必要なデータが拡張性の高い形式で格納されています。これらのテーブルは、メモリ上に配置され、OSによってアクセスされます。
RSDP (Root System Description Pointer):ACPIテーブルの場所を示すエントリポイントで、BIOS領域などに配置されています。
RSDT (Root System Description Table):32bitアドレス空間用のテーブルへのポインタを格納しています。
XSDT (eXtended System Description Table):64bitアドレス空間用のテーブルへのポインタを格納しています。
FACP/FADT (Fixed ACPI Control Pointer / Fixed ACPI Description Table):ACPIハードウェアレジスタの位置、FACS(Firmware ACPI Control Structure)、DSDTの場所などの情報が格納されています。
DSDT (Differentiated System Description Table):AMLで記述されたシステム上のデバイス情報が格納されています。
SSDT (Secondary System Description Table):DSDTを補完するテーブルです。
MADT (Multiple APIC Description Table):システムのAPIC情報を記述するテーブルです。
ECDT (Embedded Controller Description Table):エンベデッドコントローラ
デバイスの情報を記述します。
MCFG (PCI Express memory mapped configuration space base address Description Table):PCI Expressのメモリ空間とバス番号を示すテーブルです。
AML (ACPI Machine Language)
AMLは、プラットフォームに依存しない中間言語で、ASL(ACPI Source Language)からコンパイルされます。AMLは、OSが解釈することで、デバイスの制御や電源管理などの高度な機能を実現します。
システムスリープ状態
ACPIでは、システムの電源状態を7つの状態(S0~S5とS0ix)で定義しています。深いスリープ状態ほど、復帰に時間がかかりますが、消費電力は少なくなります。
S0: 通常の運用状態です。
S0ix: Modern Standbyと呼ばれる状態です。
S1: スタンバイ状態。
CPUがメモリ、
デバイス、レジスタコンテクストを保持し、低
消費電力状態に移行します。
S2: S1と同様ですが、レジスタコンテクストとキャッシュコンテクストが失われています。
S3: スリープ状態(Suspend to RAM)。メモリは保持されますが、チップセットの情報やレジスタコンテクストは失われます。
S4: ハイバネーション状態(Suspend to Disk)。メモリの内容もディスクに保存され、電源を完全に切ることができます。
S5: 完全な
電源断状態です。
サポートされるプラットフォーム
ACPIは、x86/x64系アーキテクチャだけでなく、
IA-64などの様々なシステムで利用されています。OSでは、Windows 98以降のWindows OS、
Linuxカーネル2.3.19以降、FreeBSD 5-CURRENT以降でACPIがサポートされています。
歴史
ACPIの仕様は、1997年に最初のバージョンが公開されて以来、数回にわたる改訂が行われています。
ACPI 1.0: 1997年公開
ACPI 2.0:
2000年公開
ACPI 3.0: 2004年公開
ACPI 4.0: 2009年公開
ACPI 5.0: 2011年公開
2013年10月以降は、ACPIの仕様策定はUnified EFI Forumによって行われています。
関連情報
Advanced Power Management (APM): ACPIの前身となる
電源管理規格
System Management BIOS (SMBIOS): システムのハードウェア情報をOSに提供する規格
Basic Input/Output System|Basic Input_Output System (BIOS): PCの基本的な入出力
制御を行うファームウェア
Unified Extensible Firmware Interface (UEFI): BIOSの後継となるファームウェア規格
Hardware Abstraction Layer: ハードウェアの違いを吸収し、OSがハードウェアを抽象的に扱うための層
ハイバネーション: S4の状態に対応する機能
スリープ (コンピュータ): S1とS3の状態に対応する機能
外部リンク
Specifications | Unified Extensible Firmware Interface Forum: ACPI仕様書へのリンク
公式Webページ (英語)
*
ACPI-CA (英語)