| 略語 | 交流ピ |
|---|---|
| 状態 | 公開済み |
| 初版 | 1996年12月 |
| 最新バージョン | 2022年8月6日 |
| 組織 |
|
| 関連規格 | UEFI |
| 前任者 | |
| ドメイン | 電源管理ファームウェア |
| Webサイト | uefi.org/acpi |
ACPI ( Advanced Configuration and Power Interface )は、オペレーティングシステムがコンピュータのハードウェアコンポーネントを検出して構成し、電源管理(未使用のハードウェアコンポーネントをスリープ状態にするなど)、自動構成 (プラグアンドプレイやホットスワップなど)、およびステータス監視を実行するために使用できるオープン標準です。1996年12月に初めてリリースされました。ACPI は、Advanced Power Management (APM)、MultiProcessor Specific、およびPlug and Play BIOS (PnP) Specific に代わるものです。[1] ACPI は、プラットフォーム固有のファームウェアに依存して電源管理と構成ポリシーを決定していた以前の BIOS 中心のシステムとは対照的に、電源管理をオペレーティングシステムの制御下に置きます。[2]この仕様は、オペレーティングシステム主導の構成および電源管理( OSPM ) システムの中心です。ACPI は、デバイスのファームウェア ( BIOS、UEFIなど)、コンピュータのハードウェアコンポーネント、およびオペレーティングシステム間のハードウェア抽象化インターフェイスを定義します。[3] [4]
内部的には、ACPI は、システムファームウェア( UEFIまたはBIOS ) を通じて提供される命令リスト (「メソッド」) を使用して、利用可能なコンポーネントとその機能をオペレーティング システム カーネルに通知し、カーネルはそれを解析します。次に、ACPI は、組み込まれた最小限の仮想マシンを使用して、ACPI マシン言語で記述された必要な操作(ハードウェア コンポーネントの初期化など)を実行します。
この規格は当初、インテル、マイクロソフト、東芝が開発し、後にHP、ファーウェイ、フェニックスも参加した。2013年10月、ACPI規格の元々の開発者であるACPI Special Interest Group (ACPI SIG)は、すべての資産をUEFIフォーラムに移管することに合意し、今後の開発はすべてそこで行われることになった。[5]規格の最新バージョン[アップデート]6.5は2022年8月にリリースされた。[6]
建築
ファームウェア レベルの ACPI には、ACPI テーブル、ACPI BIOS、および ACPI レジスタという 3 つの主要コンポーネントがあります。ACPI BIOS は ACPI テーブルを生成し、ACPI テーブルをメイン メモリにロードします。ファームウェアの ACPI 機能の多くは、 ACPI テーブルに格納されているチューリング完全なドメイン固有の低レベル言語であるACPI マシン言語(AML)のバイトコードで提供されます。 [7] ACPI テーブルを使用するには、オペレーティング システムにAML バイトコード用のインタープリターが必要です。リファレンス AML インタープリターの実装は、ACPI コンポーネント アーキテクチャ (ACPICA) によって提供されます。BIOS 開発時に、AML バイトコードは ASL (ACPI ソース言語) コードからコンパイルされます。[8] [9]
ACPI コンポーネント アーキテクチャ (ACPICA)
ACPIコンポーネントアーキテクチャ(ACPICA)は、主にIntelのエンジニアによって書かれており、オペレーティングシステム関連のACPIコードのオープンソースのプラットフォームに依存しないリファレンス実装を提供します。 [10] ACPICAコードは、Linux、Haiku、ArcaOS [11]、FreeBSD [8]で使用されており、オペレーティングシステム固有のコードで補完されています。
歴史
ACPI 仕様の最初のリビジョンは 1996 年 12 月にリリースされ、16、24、32ビットのアドレス空間をサポートしていました。ACPI が64 ビットアドレスのサポートと、リビジョン 2.0 でマルチプロセッサ ワークステーションおよびサーバーのサポートを 獲得したのは、2000 年 8 月になってからでした。
1999年、当時のマイクロソフトCEOビル・ゲイツは電子メールで、LinuxはACPIの恩恵を受けることができ、ACPIをWindows専用にすることを提案した。[12] [13] [14]
2004 年 9 月には、リビジョン 3.0 がリリースされ、ACPI 仕様にSATAインターフェイス、PCI Expressバス、256 を超えるプロセッサのマルチプロセッササポート、周囲光センサー、およびユーザー プレゼンス デバイスが追加され、また、以前のプロセッサ中心のサポートを超えて熱モデルが拡張されました。
2009 年 6 月にリリースされた ACPI 仕様のリビジョン 4.0 では、設計にさまざまな新機能が追加されました。最も注目すべきは、USB 3.0サポート、論理プロセッサ アイドリング サポート、x2APICサポートです。
ACPI仕様のリビジョン5.0は2011年12月にリリースされ、[15] ARMアーキテクチャのサポートが追加されました。リビジョン5.1は2014年7月にリリースされました。[16]
最新の仕様改訂版は6.5で、2022年8月にリリースされました。[6]
オペレーティングシステム



マイクロソフトのWindows 98はACPIを実装した最初のオペレーティングシステムだったが[17] [18]、その実装には多少バグがあったり不完全だったりした。[19] [20]それに関連する問題のいくつかは第一世代のACPIハードウェアによって引き起こされた。[21] Windowsの後継バージョン、macOS、eComStation、ArcaOS、[22] FreeBSD(FreeBSD 5.0以降[23])、NetBSD(NetBSD 1.6以降[24])、OpenBSD(OpenBSD 3.8以降[25])、HP-UX、OpenVMS、Linux、GNU Hurd 、およびSolarisのPCバージョンを含む他のオペレーティングシステムは、少なくともACPIをある程度サポートしている。[26] Windows Vistaなどの一部の新しいオペレーティングシステムでは、コンピューターにACPI準拠のBIOSが必要であり、Windows 8以降ではS0ix /モダンスタンバイ状態が実装された。[27]
Windowsオペレーティングシステムはacpi.sys [28]を使用してACPIイベントにアクセスします。
Linuxカーネル2.4シリーズではACPIのサポートは最小限で、カーネルバージョン2.6.0以降ではより優れたサポートが実装され(デフォルトで有効になりました)。[29]古いACPI BIOS実装はバグが多い傾向があり、その結果、それ以降のオペレーティングシステムではサポートされません。たとえば、Windows 2000、Windows XP、Windows Server 2003は、 BIOSの日付が1999年1月1日以降の場合にのみACPIを使用します。[30]同様に、Linuxカーネル2.6は、BIOSの日付が2001年1月1日より前の場合、ACPIを使用しない場合があります。[29]
Linuxベースのオペレーティングシステムはacpidを介してACPIイベントの処理を提供することができます。[31]
OSPMの責任
OSPM 互換のオペレーティング システムが ACPI をアクティブ化すると、電源管理とデバイス構成のすべての側面を排他的に制御します。OSPM 実装では、特定のシステム、デバイス、およびプロセッサの状態を公開する ACPI 互換環境をデバイス ドライバーに公開する必要があります。
電力状態
世界の州
ACPI仕様では、ACPI準拠のコンピュータシステムに対して、次の4つのグローバル「Gx」状態と6つのスリープ「Sx」状態を定義しています。[32] [33]
仕様では、 ACPI をサポートしないオペレーティング システムの状態であるレガシー状態も定義されています。この状態では、ハードウェアと電源は ACPI 経由で管理されず、ACPI は事実上無効になります。
デバイスの状態
デバイス状態D0~D3はデバイスに依存します。
- D0または完全にオンは動作状態です。
- S0ixと同様に、IntelはSoCの中間レベルにD0ix状態を持っています。 [37]
- D1とD2 は中間電源状態であり、その定義はデバイスによって異なります。
- D3 : D3 状態はさらに、D3 ホット(補助電源あり) とD3 コールド(電源なし) に分けられます。
- Hot : デバイスは、より高い電力状態に移行するために電源管理要求をアサートできます。
- ColdまたはOff の場合、デバイスの電源はオフになり、バスに応答しなくなります。
プロセッサの状態
CPU 電源状態C0~C3は次のように定義されます。
- C0は動作状態です。
- C1 ( Haltとも呼ばれる)は、プロセッサが命令を実行していないが、基本的に瞬時に実行状態に戻ることができる状態である。すべてのACPI準拠プロセッサは、この電力状態をサポートしなければならない。Pentium 4やAMD Athlonなどの一部のプロセッサは、低消費電力のために拡張C1状態(C1Eまたは拡張Halt状態)もサポートしているが、これは一部のシステムでバグが発生することが判明した。[38] [39]
- C2 (ストップ クロックとも呼ばれる) は、プロセッサがソフトウェアで認識可能なすべての状態を維持する状態ですが、起動に時間がかかる場合があります。このプロセッサ状態はオプションです。
- C3 (スリープとも呼ばれる) は、プロセッサがキャッシュの一貫性を維持する必要がないが、他の状態を維持する状態です。プロセッサによっては、プロセッサの起動にかかる時間が異なる C3 状態のバリエーション (ディープ スリープ、ディーパー スリープなど) を持つものもあります。このプロセッサ状態はオプションです。
- 一部のプロセッサではメーカーによって追加の状態が定義されています。たとえば、IntelのHaswellプラットフォームにはC10までの状態があり、コア状態とパッケージ状態を区別しています。[40]
パフォーマンス状態
デバイスまたはプロセッサが動作している間(それぞれD0とC0)、いくつかの電力パフォーマンス状態のいずれかになります。これらの状態は実装に依存します。P0は常に最高のパフォーマンス状態であり、P1からPnは順にパフォーマンスの低い状態になります。状態の総数はデバイスまたはプロセッサに依存しますが、16を超えることはできません。[41]
P ステートは、IntelプロセッサではSpeedStep、AMDプロセッサではPowerNow!またはCool'n'Quiet、VIAプロセッサではPowerSaverとして知られています。
- P0最大電力と周波数
- P1はP0より小さく、電圧と周波数はスケーリングされる
- P2はP1より小さく、電圧と周波数はスケーリングされている[42]
- PnがP(n–1)より小さい場合、電圧と周波数はスケーリングされる
インターフェース
ハードウェア
ACPI 準拠システムは、「Function Fixed Hardware (FFH) インターフェイス」、または OEM ( Original Equipment Manufacturer )が提供するプラットフォーム固有の ACPI Machine Language (AML) に依存するプラットフォームに依存しないハードウェア プログラミング モデルのいずれかを介してハードウェアと対話します。
機能固定ハードウェアインターフェースは、プラットフォームメーカーがパフォーマンスと障害回復を目的として提供するプラットフォーム固有の機能です。標準的なIntelベースのPCには、 Intelによって定義された固定機能インターフェースがあり、[43]これは、起動時や大規模なシステム障害の際に基本機能を提供するためのACPI準拠システムの完全なドライバースタックの必要性を軽減する一連のコア機能を提供します。
ACPI プラットフォーム エラー インターフェイス (APEI) は、チップセット、RAM などのハードウェア エラーをオペレーティング システムに報告するための仕様です。
ファームウェア
ACPIは、ACPI準拠のオペレーティングシステムとシステムファームウェア(BIOSまたはUEFI)間のインターフェースを提供する多くのテーブルを定義しています。これには、RSDP、RSDT、XSDT、FADT、FACS、DSDT、SSDT、MADT、MCFGなどが含まれます。[44] [45]
テーブルは、プラットフォームに依存しない方法でシステムハードウェアを記述することを可能にし、固定形式のデータ構造またはAMLのいずれかで提供されます。主なAMLテーブルはDSDT(差別化システム記述テーブル)です。AMLは、OS互換性を拡張するためにテーブルにパッチを適用するなどの目的で、IntelのiASL(オープンソース、ACPICAの一部)などのツールによって逆コンパイルできます。[46] [47]
ルート システム記述ポインタ (RSDP) はプラットフォームに依存した方法で配置され、残りのテーブルについて説明します。
マイクロソフトは、Windows プラットフォーム バイナリ テーブル (WPBT) と呼ばれるカスタム ACPI テーブルを使用して、ベンダーが Windows OS にソフトウェアを自動的に追加できるようにしています。Lenovo などの一部のベンダーは、この機能を使用してSuperfishなどの有害なソフトウェアをインストールしていることが判明しています。[48] Samsungは、Windows Update を無効にした状態で PC を出荷しました。[48] Windows 7 より前のバージョンの Windows はこの機能をサポートしていませんが、代替の手法を使用できます。この動作はルートキットと比較されています。[49] [50]
テーブル
- ファット
- プラットフォーム健全性評価表
- スリップ
- ソフトウェアライセンス説明表
批判
Ubuntu の創設者マーク・シャトルワースは、 ACPI はセキュリティ上のリスクであると述べています。[51]彼は、「次世代デバイスに ACPI を搭載することを主張することは、リビングルームやデータセンターに巨大なトロイの木馬をインストールすることを主張するのと同じである」と述べ、「デバイスのファームウェアはNSAの親友である」と述べています。彼はさらに、「最大の間違いは、この信頼関係を悪用している機関が NSA だけであると想定することです。実際、すべてのファームウェアは、メーカーの極度の無能と、非常に幅広いそのような機関の極度の能力のおかげで、セキュリティの汚水溜めであると想定するのは合理的です」と述べています。彼は、解決策として、オープンソースの宣言型ファームウェア (ACPI または非 ACPI) を提案しています。[52]
全体的な設計決定は批判を受けなかったわけではない。2003年11月、Linuxカーネルの作者であるLinus TorvaldsはACPIを「あらゆる点で完全な設計上の失敗」と評した。[52] [53]
参照
さらに読む
- ギャレット、マシュー(2023 年 10 月 31 日)。「なぜ ACPI なのか?」
参考文献
- ^ 「ACPI の概要」(PDF) 。www.acpi.info。 2019年5月25日時点のオリジナル(スライドショーは PDF)よりアーカイブ。
- ^ 「APM BIOS 仕様」。Intel Corporation、Microsoft Corporation。1996年 2 月。2012 年 2 月 6 日時点のオリジナル(RTF)からアーカイブ。2010 年7 月 2 日閲覧。
- ^ 「ACPI (Advanced Configuration and Power Interface) とは? - WhatIs.com からの定義」。SearchWindowsServer。2020年9月 18 日閲覧。
- ^ 「ACPI デバイス ツリー - ACPI 名前空間の表現 — Linux カーネルのドキュメント」。www.kernel.org 。2020年9 月 18 日閲覧。
- ^ 「Advanced Configuration & Power Interface の Web ページには、UEFI Web サイトの既存の ACPI 仕様ページにリンクする目立つ注記があります」。acpi.org 。2014年 7 月 23 日。2011 年 6 月 22 日時点のオリジナルよりアーカイブ。2016 年1 月 25 日閲覧。
- ^ ab 「Advanced Configuration and Power Interface 仕様、リリース 6.5」(PDF)。UEFI.org /specifications。2022 年 8 月。2022 年10 月 4 日閲覧。
- ^ Bernhard Kauer (2009 年 8 月)。「ATARE: ACPI テーブルと正規表現」(PDF) 。2019 年2 月 18 日閲覧。
- ^ ab FreeBSD での ACPI 実装 - Usenix
- ^ Linux の ACPI、2005 年
- ^ ACPICA: ACPI コンポーネント アーキテクチャ
- ^ 「ACPI ドライバー パッケージの Readme」。arcanoae.com。2020年9月 6 日閲覧。
- ^ "Microsoft は Windows 用の ACPI を開発します". Der Standard (オーストリアドイツ語) 。2022 年11 月 6 日に取得。
- ^ "Microsoft: Windows 機能に関する ACPI ソリューション".ゴーレム.de . 2022 年11 月 6 日に取得。
- ^ Gates, Bill (1999 年 1 月 24 日). 「ACPI 拡張機能」(PDF)。2007 年 2 月 2 日時点のオリジナル(PDF)からアーカイブ。
- ^ Hewlett-Packard、Intel Corporation、Microsoft、Phoenix Technologies、Toshiba (2011 年 12 月 6 日)。「Advanced Configuration and Power Interface 仕様 (リビジョン 5.0)」(PDF)。acpi.info。2012年 9 月 14 日時点のオリジナル(PDF)からアーカイブ。2013 年11 月 17日閲覧。
- ^ 「Advanced Configuration and Power Interface 仕様 (リビジョン 5.1)」(PDF) . uefi.org . 2014 年 7 月 23 日. 2015 年5 月 24 日閲覧。
- ^ 「Compaq Armada Portables で Microsoft Windows 98 を使用する場合の制限事項」(PDF) physik.hu-berlin.de. 1998 年 10 月. p. 3 . 2014 年1 月 27 日閲覧。[永久リンク切れ]
- ^ 「ThinkPad システム上の Windows 98 - ThinkPad 全般」。Support.lenovo.com。2014 年 2 月 3 日時点のオリジナルよりアーカイブ。2014年1 月 27 日閲覧。
- ^ Robert Cowart、Brian Knittel (2000)。Microsoft Windows 2000 Professional の使用。Que Publishing。p. 30。ISBN 978-0-7897-2125-9。
- ^ Windows 98 は ACPI パッシブ冷却モードをサポートしていません
- ^ 「表紙ストーリー: Win98 のバグと修正 - 1998 年 12 月」。winmag.com。1999年 10 月 13 日時点のオリジナルよりアーカイブ。
- ^ 「ArcaOS Changelog」 。 2020年8月24日閲覧。
- ^ 「FreeBSD 5.0-RELEASE 発表」www.freebsd.org . 2020年12月3日閲覧。
- ^ 「acpi(4) - NetBSDマニュアルページ」man.netbsd.org . 2020年12月3日閲覧。
- ^ 「acpi(4) - OpenBSDマニュアルページ」man.openbsd.org . 2020年12月3日閲覧。
- ^ Therien, Guy (2000 年 1 月 6 日)。「ACPI 2.0 仕様テクニカルレビュー、Intel Developer Forum」(PPT)。Intel Corporation。2011 年 7 月 21 日時点のオリジナルよりアーカイブ。2011 年8 月 21 日閲覧。
- ^ Marshall, Allen. 「Windows Vista の ACPI」(PPT)。Microsoft Corporation 。2010 年7 月 2 日閲覧。
- ^ 「Acpi.sys: Windows ACPI ドライバー」。Microsoft Corporation 2017 年 6 月 15 日。2019 年9 月 20 日閲覧。
- ^ ab Linux カーネルにおける ACPI の現状
- ^ ACPI BIOS. msdn.microsoft.com .
- ^ Linux in a nutshell. Ellen Siever、Ellen Siever (第 5 版)。北京: O'Reilly。2005 年、p. 36。ISBN 978-0-596-52949-9. OCLC 773210086.
{{cite book}}: CS1 メンテナンス: その他 (リンク) - ^ ACPI 仕様 Rev 5.0 - 2011 年 12 月 6 日付
- ^ Anand Lal Shimpi (2012 年 10 月 5 日)。「Intel の Haswell アーキテクチャを分析」。AnandTech。2013年10 月 20 日閲覧。
- ^ windows-driver-content. 「モダン スタンバイ」. docs.microsoft.com . 2020 年3 月 20 日閲覧。
- ^ “S0ix States”. software.intel.com . 2020年3月9日.
- ^ Wang, Wendy (2018年10月17日). 「Linux* で S0ix 状態を実現する方法」. 01.org .
- ^ 「D0ix States」. software.intel.com . 2020年3月9日。
- ^ 「Athlon II X2: ハードウェア C1E と CnQ バグの復活」AnandTech . 2020 年10 月 26 日閲覧。
- ^ Wasson, Scott (2005 年 2 月 21 日)。「Intel の Pentium 4 600 シリーズ プロセッサ」。The Tech Report。2ページ。
- ^ 「プロセッサ パッケージとコアの C ステート」。AnandTech。2013年 6 月 9 日。2013 年10月 20 日閲覧。
- ^ 「Advanced Configuration and Power Interface 仕様、リビジョン 3.0、セクション 2.6 デバイスおよびプロセッサのパフォーマンス状態の定義」(PDF)。ACPI.info 。2004年 9 月 2 日。p. 23。2015 年 11 月 28 日時点のオリジナル(PDF)からアーカイブ。2015 年8 月 19 日閲覧。
- ^ リンクアグリゲーション
- ^ Intel Corporation (2006 年 9 月)。「Intel プロセッサ ベンダー固有の ACPI」(PDF)。2012 年 12 月 25 日時点のオリジナル(PDF)からアーカイブ。2014 年10 月 5 日閲覧。
- ^ Brown, Len (2005 年 7 月 20 日). 「Linux の ACPI」.オタワ Linux シンポジウム: 3. CiteSeerX 10.1.1.173.2206 .
- ^ 「ACPI テーブル — Linux カーネルのドキュメント」www.kernel.org。2020 年 10 月 20 日時点のオリジナルよりアーカイブ。2020年11 月 8 日閲覧。
- ^ 「DSDT」。ArchWiki。
- ^ 「ACPI 入門」GitBook。
- ^ ab Hoffman, Chris (2015 年 8 月 19 日)。「Zombie Crapware: Windows プラットフォーム バイナリ テーブルの仕組み」How-To Geek。
- ^ 「ベンダーの『ルートキット』:『Windows プラットフォーム バイナリ テーブル』(WPBT)」。Born's Tech および Windows World。2017年 12 月 6 日。
- ^ Mayank Sharma (2021年9月27日). 「数百万台のWindows 10 PCが悪質なセキュリティ脆弱性にさらされる」. TechRadar . 2022年11月10日閲覧。
- ^ Mark Shuttleworth のブログ (2014 年 3 月 17 日)、「ACPI、ファームウェア、およびセキュリティ」
- ^ Linux Magazine 162号、2014年5月、9ページ
- ^ Searls, Doc (2003 年 11 月 25 日)。「Linus & the Lunatics, Part II」。Linux Journal。2010年1 月 13 日閲覧。
外部リンク
- 公式サイト(UEFIおよびACPI仕様)
- CPU C-States 省電力モードについて知っておくべきことすべて
- サンプル EFI ASL コード 2023 年 4 月 12 日にWayback Machineにアーカイブされました。VirtualBoxで使用されています。EFI/ASL コード自体は、オープンソースの Intel EFI Development Kit II ( TianoCore )からのものです。
- アピカ
