ACPIとAPMの違いを詳しく教えてください。
APM(Advanced Power Management)は,名称のとおり電源を制御するための一連のソフトウェアインタフェースを定めた仕様です。OSやソフトウェアは,PCのBIOSに組み込まれたAPM仕様のソフトウェアインタフェースを通じて,PCの電源管理にアクセスできます。
APMでできることは,主に現在のステータス(バッテリー運用かAC運用かの判断)の取得,バッテリーの残量の取得,サスペンドやスタンバイの実行などです。パワーマネージメントに限定すると,APMでもそれなりに機能しますが,不都合な点が多く残されているのも事実です。
というのは,APMは前述のようにソフトウェアインタフェースを定めているだけで,その機能をハード的にどのように実現するかはベンダーに任されています。そのため,OSから見るとAPMの利用で何が起こるのか予測できない場合があり,不都合を生じる可能性もあります。
また,APMは非常にシンプルで,PCの電源管理しか基本的には考慮されていないため,周辺機器の電源管理はAPMでは(不完全にしか)できません。さらに,PCの電力をきめ細かく制御するーー例えば電源のファンをコントロールするといったこともAPMではできないと考えていいでしょう。
ACPI(Advanced Configuration and Power Interface)は,そうしたAPMの弱点を克服するために設計された,より包括的なパワーマネージメントやPlug&Play(以下PnP)のための仕様です。サスペンド/レジュームや電源オン/オフだけではなく,CPUや周辺機器のパワーマネージメント,PC内部の温度管理やファンの制御,ハードウェアのコンフィグレーション状態の取得など,APMやPnP BIOSがカバーしていた機能を統合し,さらに数多くの機能をサポートしています。
ACPIを利用すると,PCの使用状況(モバイル使用やデスクトップ使用など)を判定し最適なパワーマネージメントを行うといった機能がサポートできます。こうしたきめ細かな制御は,バッテリーの寿命を延ばすのに大きな貢献をするほかに,デスクトップPCでも数多くのメリットがあります。
ACPIというとWindowsの規格と思われがちですが,OSには依存しないオープンな規格として策定されています(公式ホームページはhttp://www.teleport.com/~acpi/で,ここから仕様書などもダウンロードできます)。実際,LinuxやFreeBSDのACPI対応も進められています。Linuxでは,次のカーネルバージョン2.4.0以降でACPIに正式に対応する予定です。
さらにハードウェアの依存を避けるため,周辺機器のコンフィグレーション情報の取得にAML(ACPI Machine Language)という高級言語風のインタフェースが用いられているのも特徴の一つです。理論的には非PCアーキテクチャでもACPIさえ実装されていれば,PCと同じOSを動作させPnPやパワーマネージメントを扱うことができるとされています。
それだけに実装は難しく,当初はマザーボードに実装されているACPIが不完全で,Windows 98はデフォルトではACPIを使用しない設定になっていたことを記憶している読者も少なくないはずです。現在のWindows 98 Second EditionやWindows 2000,および今後のWindows Meでは,ACPIをサポートするPC(マザーボード)なら標準でACPIを利用するように設定されます。(米田 聡)
ACPI対応マシンの「電源のプロパティ」の画面。APMのように独立したタブが出ない
APM対応マシンの「電源のプロパティ」の画面。チェックを付けないと有効にならない