(57)【要約】【課題】  ＡＭＬ等の相互区画言語仕様に準拠したデジタルデバイスの拡張機能を提供する。【解決手段】  本発明にかかる方法は、ある区画の言語のバージョンに従って、使用されないオペレーションコードのリストを準備し、使用されないオペレーションコードのリストを第２の区画のコードに公開する。割り当てるオペレーションコードが、双方の区画によってサポートされた言語のバージョンにおいて使用されないオペレーションコードとなるように、第２の区画のコードは、当該オペレーションコードを、拡張機能に割り当てる。このオペレーションコードは、相互区画言語でコードを生成する際に使用され、関連した機能名を伴い、割り当てたオペレーションコードのテーブルとして第１の区画に公開される。生成されたコードを実行する区画は、拡張機能名およびオペレーションコードのテーブルに従って、オペレーションコードを機能に関連付ける。【選択図】図２
2006012158.tif 000002
【特許請求の範囲】
【請求項１】
相互区画言語仕様に準拠したマシン可読コード（２３２）を第２の区画（２３６）のインタープリタコード（２３４）に提示する第１の区画（２２０）のコードジェネレータコード（２２２）を有するデジタルデバイス（２０２）の拡張機能を提供する方法であって、
前記第２の区画で実施された前記相互区画言語仕様のバージョンに従って、使用されないオペレーションコードのリスト（２４２）を準備する（３０２）ステップと、
前記第１の区画のコード（２２２）に前記使用されないオペレーションコードのリスト（２４２）を公開する（３０４）ステップと、
割り当てるオペレーションコードが、前記第２の区画の前記相互区画言語仕様の前記バージョンで使用されないオペレーションコードであり、前記第１の区画で実施された前記相互区画言語仕様のバージョンで使用されないオペレーションコードである場合に、前記オペレーションコードに拡張機能を割り当てる（３０８）ステップと、
割り当てたオペレーションコード（２４６）のテーブルを、関連した機能名（２４４）と共に公開する（３１４）ステップと、
前記相互区画言語仕様に従って、生成するマシン可読命令（２３２）を生成する（３１０）ステップと
を含み、
前記生成したマシン可読命令（２３２）は、前記割り当てたオペレーションコード（２４６）の少なくとも１つを組み込む
方法。
【請求項２】
前記第１の区画（２２０）はファームウェア区画であり、前記第２の区画（２３６）はオペレーティングシステム区画である、請求項１に記載の方法。
【請求項３】
前記相互区画言語仕様は、アドバンストコンフィギュレーションアンドパワーインターフェースマシン言語（ＡＭＬ）である
請求項２に記載の方法。
【請求項４】
前記割り当てたオペレーションコード（２４６）のテーブルからの拡張オペレーションコードを、前記関連した機能名（２４４）に関連付けられた拡張機能とリンクするステップと、
前記生成したマシン可読命令（２３２）を実行する（３１６）ステップと、
をさらに含む請求項１に記載の方法。
【請求項５】
前記生成したマシン可読命令（２３２）を含み、前記割り当てたオペレーションコード（２４６）を利用するように、基本的な１組のマシン可読命令を拡張するステップ
をさらに含む請求項４に記載の方法。
【請求項６】
前記第１の区画（２２０）を再ブートするステップであって、前記第１の区画が、前記生成したマシン可読命令（２３２）を利用することが可能になる前記第１の区画（２２０）を再ブートするステップ
をさらに含む請求項４に記載の方法。
【請求項７】
相互区画言語仕様に準拠したマシン可読コード（２３２）を第２の区画（２３６）のマシン可読コード（２３４）に提示する第１の区画（２２０）のマシン可読ジェネレータコード（２２２）が記録されたマシン可読媒体を備えるメモリシステムであって、
前記ジェネレータコード（２２２）は、前記第２の区画で実施された前記相互区画言語仕様のバージョンに従って、使用されないオペレーションコードのリスト（２４２）を受け取ることができ、
前記ジェネレータコード（２２２）は、割り当てるオペレーションコードが、前記第２の区画の前記相互区画言語仕様の前記バージョンで使用されないオペレーションコードであり、前記第１の区画で実施された前記相互区画言語仕様のバージョンで使用されないオペレーションコードである場合に、前記オペレーションコードに拡張機能を割り当てる（３０８）ことができ、
前記ジェネレータコード（２２２）は、割り当てたオペレーションコード（２４６）のテーブルを、関連した機能名（２４４）と共に公開する（３１４）ことができ、前記相互区画言語仕様に従い、前記割り当てたオペレーションコード（２４６）を使用して、生成するマシン可読命令（２３２）を生成する（３１０）ことができる
メモリシステム。
【請求項８】
前記第１の区画（２２２）は、ファームウェア区画である
請求項７に記載のメモリシステム。
【請求項９】
前記相互区画言語仕様は、アドバンストコンフィギュレーションアンドパワーインターフェースマシン言語（ＡＭＬ）である
請求項８に記載のメモリシステム。
【請求項１０】
相互区画言語仕様に準拠したマシン可読コード（２３２）を、第２の区画（２３６）のマシン可読コード（２３４）に提示する第１の区画（２２０）のマシン可読コード（２２２）を有するデジタルデバイス（２０２）の拡張機能を提供する方法のマシン可読コードが記録されたマシン可読媒体を備えたコンピュータプログラム製品であって、
前記マシン可読コードは、
前記第２の区画で実施された前記相互区画言語仕様のバージョンに従って、使用されないオペレーションコードのリスト（２４２）を準備する（３０２）ステップと、
前記第１の区画のコード（２２２）に前記使用されないオペレーションコードのリスト（２４２）を公開する（３０４）ステップと、
割り当てるオペレーションコードが、前記第２の区画の前記相互区画言語仕様の前記バージョンで使用されないオペレーションコードであり、かつ、前記第１の区画で実施された前記相互区画言語仕様のバージョンで使用されないオペレーションコードである場合に、前記オペレーションコードに拡張機能を割り当てる（３０８）ステップと、
割り当てたオペレーションコード（２４６）のテーブルを、関連した機能名（２４４）と共に公開する（３１４）ステップと、
前記相互区画言語仕様に従って、生成するマシン可読命令（２３２）を生成する（３１０）ステップと
を実行するコードを含み、
前記生成したマシン可読命令（２３２）は、前記割り当てたオペレーションコード（２４６）を利用する
コンピュータプログラム製品。
【請求項１１】
前記第１の区画（２２２）は、ファームウェア区画である
請求項１０に記載のコンピュータプログラム製品。
【請求項１２】
前記相互区画言語仕様は、アドバンストコンフィギュレーションアンドパワーインターフェースマシン言語（ＡＭＬ）である
請求項１０に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデバイスのシステムファームウェアとオペレーティングシステムとの間の通信の分野に関する。
【背景技術】
【０００２】
［コードの区画化］
デジタルコンピュータを含めて、現代のデジタル計算デバイスで実行可能なコードは、多くの場合、複数の区画に分割される。
通常、これらの区画は、ファームウェア区画、オペレーティングシステム区画、およびアプリケーションコード区画を含む。
【０００３】
各区画のコードの出所は、多くの場合、異なるベンダ、または、同じベンダにおける異なる時点での異なるプログラマグループである。
デジタルデバイスは、通常は同じファームウェア区画コード上で、異なる時点に、異なるオペレーティングシステム区画およびアプリケーションコードを実行することができる。
さらに、各区画のコードは、他の区画の更新とは無関係に更新されることも一般的である。
【０００４】
［標準化の必要性］
システムが、ファームウェア、オペレーティングシステム、およびアプリケーションコードの可能な各組み合わせの過度なデバッグを必要とすることなく機能するように、区画間のインターフェースを標準化することが望ましい。
標準化されたインターフェースでは、いくつかの高度化した特徴によってドライバを追加することが必要な場合があるが、ハードウェアおよびソフトウェアの双方の基本的な特徴は機能すべきである。
【０００５】
［システム管理］
現代のデジタルデバイスは、類似のオペレーティングシステムの下で動作可能なものであっても、多くの場合、基礎となるハードウェアが大きく異なる。
システム管理およびグラフィカル表示ハードウェアは、多くの場合、システムごとに異なる。
システム管理機能には、電力管理および冷却制御、電力、ファンの速度、およびコンポーネントの温度を含むハードウェア監視、タイマ、プロセッサクロック生成、バッテリチャージおよびチャージ監視、ディスクドライブの電力制御およびエラー監視、メモリエラー訂正、複数のオペレーティングシステムの間でのシステムのパーティショニング、システムの複数のプロセッサ間のインターラクション、ならびにホットソケットが含まれ得る。
【０００６】
仕様の将来の改訂と互換性のある方法で相互区画（intercompartment）インターフェースを拡張することが望ましい。
特に、或る区画のコードが使用しないと想定されるオペレーションコードが、別の区画のコードによって事前に定義されていると想定される場合に、そのオペレーションコードに拡張機能を割り当てると、オペレーションが予想しないものとならない。
【発明の開示】
【課題を解決するための手段】
【０００７】
方法、メモリシステム、およびプログラム製品は、ＡＭＬ等の相互区画言語仕様に準拠したデジタルデバイスの拡張機能を提供する。
この方法は、或る区画の言語のバージョンに従って、使用されないオペレーションコードのリストを準備すること、およびこの使用されないオペレーションコードのリストを第２の区画のコードに公開することを含む。
【０００８】
次に、割り当てるオペレーションコードが、双方の区画によってサポートされた言語のバージョンにおいて使用されないオペレーションコードとなるように、第２の区画のコードは、当該オペレーションコードを拡張機能に割り当てる。
この割り当てたオペレーションコードは、相互区画言語でコードを生成する際に使用され、関連した機能名を伴った、割り当てたオペレーションコードのテーブルとして第１の区画に公開される。
次に、生成されたコードを実行する区画は、拡張機能名およびオペレーションコードのテーブルに従って、オペレーションコードを機能に関連付ける。
【発明を実施するための最良の形態】
【０００９】
システムオペレーションの多くの重要な特徴は、タスクキューイング、割り込みハンドリング、および多くのＩ／Ｏ機能を含むオペレーティングシステムに依存する。
従来、システムブートが完了すると、このような多くの機能は、オペレーティングシステムにインストールされているカスタム化されたデバイスドライバによって制御されていた。
【００１０】
多くのシステム管理機能は、オペレーティングシステムの制御の下、カスタム化されたデバイスドライバを必要とすることなく動作可能であることが望ましい。
【００１１】
アドバンストコンフィギュレーションアンドパワーインターフェース（ＡＣＰＩ）は、Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ（登録商標）、Ｉｎｔｅｌ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（登録商標）、およびＴｏｓｈｉｂａ（登録商標）によって共同開発されたオープンインダストリ仕様である。
ＡＣＰＩ標準規格は、ファームウェアおよびオペレーティングシステムがどのようにインターラクトして、デジタルデバイスのシステム管理機能を制御するかを統制する。
この記載の時点においては、この標準規格について２００３年８月付けの改訂版２．０ｃが入手可能である。
その標準規格のセクション１７に規定されているように、ＡＣＰＩマシン言語（ＡＭＬ）は、ＡＣＰＩに準拠したシステムのコンポーネントに使用される標準化されたマシン可読言語を提供して、オペレーティングシステムの制御下でハードウェア依存システムの管理機能を実行する。
【００１２】
ＡＭＬは、システム管理ハードウェアをアドレス指定する１組の所定の制御機能を提供する。
この所定の１組の機能、および、それらの機能を所定のオペレーションコードにコード化したものは、ＡＣＰＩ仕様のＡＭＬ仕様部の特定のバージョンに定義されている。
ＡＭＬ仕様は、これらの所定の機能およびコード化したものを指定するので、相互区画言語仕様（intercompartmental language specification）である。
【００１３】
ＡＭＬは、オペレーティングシステムが指示したハードウェアの電力管理オンライン再構成の標準機能を提供する。
これらの機能は、２進数オペレーションコードとしてインタープリット可能なＡＭＬで表現される。
この２進数オペレーションコードは、一続きのオペランドと結合することができる。
２進数オペレーションコードは、１６ビット数であり、ＡＭＬ仕様で定義されたものよりもさらに多くのオペレーションコードを可能にする。
【００１４】
図１は、デジタルデバイスで実施したＡＭＬを示している。
デジタルデバイス１０２は、周辺機器１０６およびシステム管理インターフェース１０８に接続されたプロセッサ１０４を含む。
システム管理インターフェース１０８は、冷却デバイス１１０、電力１１２供給制御、およびシステム監視センサ１１４を制御する。
また、プロセッサは、ファームウェアＥＥＰＲＯＭ１１６および１つまたは２つ以上のレベルのメモリシステム１１８にも接続されている。
メモリシステム１１８は、通常、ランダムアクセスメモリ（ＲＡＭ）およびディスクメモリの双方を含む。
【００１５】
システムブート時に、プロセッサ１０４は、ファームウェアＥＥＰＲＯＭ１１６からメモリシステム１１８のＲＡＭのファームウェア部１２０にファームウェアをコピーして実行する。
次に、ファームウェア１２０のブートコード１２２が、オペレーティングシステムカーネル１２４をロードして起動する。
オペレーティングシステムカーネル１２４は、オペレーティングシステムのプロセスキュー、Ｉ／Ｏキュー、および負荷監視１２６を初期化し、Ｉ／Ｏデバイスハンドラ１２８、およびシステムレベルのシステム監視／制御モジュール１３０を起動する。
【００１６】
ファームウェアの周辺機器／システム管理コード１３１は、１組のＡＭＬコード１３２のタスクをオペレーティングシステムに提供する。
一般的なシステムでは、このＡＭＬコードは、周辺機器／システム管理コード１３１によってファームウェアＥＥＰＲＯＭ１１６のイメージからコピーされる。
ＡＭＬコードは、オペレーティングシステム１３６の制御下で、ＡＭＬインタープリタ１３４によって実行される。
ＡＭＬコードタスクは、システム監視／制御モジュール１３０によって呼び出され、オペレーティングシステムカーネル１２４、Ｉ／Ｏハンドラ１２８、およびシステム監視／制御１３０タスクから周辺機器１０６へ、および、システム管理インターフェース１０８を通じて冷却１１０デバイス、電力１１２供給制御、センサ１１４、およびこのシステムで提供できるような他のシステム管理ハードウェアへ、インターフェースを提供する。
【００１７】
デジタルデバイスは急速なペースで進歩している。
新しいシステム管理ハードウェアが頻繁にリリースされ、多くの場合、ＡＭＬおよびＡＣＰＩの古いバージョンを定義した時には予想されなかった機能を提供する。
したがって、可能な最良の方法でシステムを制御できるように、１組の所定の制御機能を拡張して、新しい追加された機能を含める方法を有することが望ましい。
【００１８】
限定するものではなく例として、将来のポータブルコンピュータシステムは、バッテリに加えて、または、バッテリに代えて、燃料電池を組み込んだ電力システムを有するかもしれない。
このような電力システムは、ＡＭＬ仕様の初期のバージョンで予想されたものとは異なる電力１１２供給制御ハードウェア機能を必要とする可能性がある。
新しいシステムは、初期のＡＭＬで予想されなかった特徴を有するプログラマブルで、マルチ速度で、複数出力のクロック１４０を有するかもしれない。
同様に、新しい大きなマルチプロセッササーバは、仮想マシンにパーティショニングされるかもしれない。
このようなシステムは、システムのパーティショニングを制御する付加的な制御機能で最も良く機能するかもしれない。
【００１９】
ＡＭＬ仕様の特定のバージョンに対して提供された機能を超えて相互区画インターフェースを拡張する従来の方法は、この仕様に従って、使用されないオペレーションコードを決定する方法、および、これらのオペレーションコードを追加機能用の拡張オペレーションコードとして定義する方法である。
この方法は機能するが、次のＡＭＬ仕様が、これらの前に未定義のオペレーションコードにマッピングする新たな機能を定義するおそれがある。
これが行われると、次のＡＭＬ仕様を同時にサポートするようにオペレーティングシステムおよびファームウェア区画をアップグレードしなければならず、そうでない場合、これらのオペレーションコードの定義の衝突のため、予想されないオペレーションが生じるおそれがある。
【００２０】
ＡＭＬ仕様は、ＡＤＤ＿ＴＡＢＬＥ（テーブル追加）コマンドを提供する。
このＡＤＤ＿ＴＡＢＬＥコマンドは、システムブート時に存在する必要のある基本的な１組のＡＭＬ機能を超えて、実行可能な１組のＡＭＬ機能を動的に拡張するものである。
【００２１】
図２は、ＡＣＰＩ仕様およびＡＭＬ仕様の将来のリリースと互換性のある方法で、デジタルデバイスの新しい高度な機能を制御する拡張可能なＡＭＬを示している。
【００２２】
デジタルデバイス２０２は、周辺機器２０６およびシステム管理インターフェース２０８に接続されたプロセッサ２０４を含む。
システム管理インターフェース２０８は、冷却デバイス２１０、電力供給２１２、およびシステム監視センサ２１４を制御する。
また、プロセッサ２０４は、ファームウェアＥＥＰＲＯＭ２１６および１つまたは２つ以上のレベルのメモリシステム２１８にも接続されている。
メモリシステム２１８は、通常、ランダムアクセスメモリ（ＲＡＭ）およびディスクメモリの双方を含む。
【００２３】
図２および図３を参照して、システムブート時に、プロセッサ２０４は、ファームウェアＥＥＰＲＯＭ２１６からメモリシステム２１８のＲＡＭのファームウェア部２２０にファームウェアをコピーして実行する。
次に、ファームウェア２２０のブートコード２２３が、ＡＣＰＩ仕様で定義された共通機能の１組の基本ＡＭＬコード２２１を生成し（３００）、基本ＡＭＬコード２２１をオペレーティングシステムにアクセス可能な領域に配置することによって基本ＡＭＬコード２２１を公開し（３０１）、オペレーティングシステムカーネル２２４をロードして起動する（３０２）。
次に、オペレーティングシステムカーネル２２４は、オペレーティングシステムのプロセスキュー、Ｉ／Ｏキュー、負荷監視２２６を初期化し、Ｉ／Ｏデバイスハンドラ２２８、およびシステムレベルのシステム監視／制御モジュール２３０を起動する。
ファームウェア２２０のシステム管理コード２３１は、最小のシステム管理機能を提供し、システムブートが完了して、オペレーティングシステムがシステム管理を引き継ぐ（３１５）まで、冷却２１０、電力２１２、センサ２１４、およびシステムクロック２４０を制御する。
【００２４】
オペレーティングシステム区画２３６のＡＭＬインタープリタ２３４は、オペレーティングシステムによってサポートされたＡＣＰＩ仕様のバージョン下で、したがって、ＡＭＬ仕様のバージョン下で利用可能な、使用されないオペレーションコードのリスト２４２を準備する（３０３）。
使用されないオペレーションコードのリスト２４２には、オペレーティングシステムにロードされたハードウェア固有のドライバを指定する改訂識別子、および、サポートされたＡＣＰＩのバージョン、したがって、ＡＭＬのバージョンを指定する改訂識別子が付随する。
このリスト２４２は、オペレーティングシステム２３６およびファームウェア２２０の双方にアクセス可能なメモリに記憶されることによって公開される（３０４）。
リスト２４２が、ＡＭＬのファームウェア２２０のバージョンおよびオペレーティングシステム２３６のバージョンの双方で使用されないオペレーションコードのリストになるように、ファームウェアのＡＭＬコードジェネレータ２２２の機能は、このリスト２４２を検査し、オペレーティングシステムがサポートするＡＣＰＩ仕様のバージョン、したがって、ＡＭＬ仕様のバージョンに定義されたあらゆるオペレーションコードを削除する（３０６）。
【００２５】
オペレーティングシステム２３６およびファームウェア２２０の拡張版の互換性を検証できるように、使用されないオペレーションコードリスト２４２の公開には、オペレーティングシステム（ＯＳ）バージョン識別子２４３が付随する。
ＯＳバージョン識別子２４３は、オペレーティングシステム２３６にインストールされたＡＣＰＩハードウェア固有のドライバを示すフラグを含む。
【００２６】
システムがブートを続けるにつれて、高度ＡＭＬコード２３２が、ファームウェア２２０のＡＭＬコードジェネレータ２２２コンポーネントによって、ファームウェア内の先行物(precursor)から動的に生成される（３１０）。
また、ファームウェア区画２２０のコードジェネレータ２２２は、自身がＡＭＬコード２３２で使用する拡張機能名のリストも機能名テーブル２４４に準備し、これらの拡張機能名を、使用されないオペレーションコードリスト２４２から選択されたオペレーションコードに割り当てる（３０８）。
したがって、これらの割り当てられたオペレーションコードは、オペレーティングシステムによってサポートされたＡＭＬ仕様のバージョンで使用されないオペレーションコードであり、これらのオペレーションコードは、ファームウェアでサポートされたＡＭＬ仕様のバージョンで使用されないオペレーションコードでもある。
割り当てた機能オペレーションコード２４６のテーブルは、機能名テーブル２４４の機能名に対応するロケーションの割り当てた機能オペレーションコードで作成される（３１２）。
【００２７】
生成された高度ＡＭＬコード２３２、機能名テーブル２４４、および割り当てた機能オペレーションコード２４６は、オペレーティングシステム２３６のＡＭＬインタープリタ２３４にアクセス可能なメモリに配置されることによって公開される（３１４）。
オペレーティングシステム２３６は、ブートを終了して、アプリケーションプログラムの実行を開始することが許可される。
ＡＤＤ＿ＴＡＢＬＥコールが使用されて、オペレーティングシステム２３６は、システムオペレーションをサポートする際に、高度ＡＭＬコード２３２を使用するように指令される（３１３）。
【００２８】
システムオペレーションが進むにつれて、オペレーティングシステム２３６はシステム管理を引き継ぎ（３１５）、そのＡＭＬインタープリタ２３４は、アイドルなタイマタスクを含むシステム管理タスクがシステムハードウェアとインターフェースする必要があるときはいつでも、基本ＡＭＬコード２２１および高度ＡＭＬコード２３２を実行する（３１６）。
【００２９】
基本ＡＭＬコード２２１および高度ＡＭＬコード２３２は、オペレーティングシステムカーネル２２４の制御下で、ＡＭＬインタープリタ２３４によって実行され、システムプロセスおよび入出力（Ｉ／Ｏ）キュー２２６を利用することができる。
ＡＭＬコードタスクは、システム監視／制御モジュール２３０によって呼び出され、オペレーティングシステムカーネル２２４、Ｉ／Ｏハンドラ２２８、およびシステム監視／制御２３０のタスクから周辺機器２０６へ、および、システム管理インターフェース２０８を通じて冷却２１０デバイス、電力供給制御２１２、センサ２１４、およびこのシステムで提供できるような他のシステム管理ハードウェアへ、インターフェースを提供する。
【００３０】
ＡＭＬインタープリタは、認識しないオペレーションコードに遭遇すると、そのオペレーションコードが、割り当てた機能オペレーションコード２４６のテーブルにあるかどうかを調べる。
割り当てた機能オペレーションコード２４６のテーブルで発見された認識されないオペレーションコードは、そのオペレーションコードに関連した機能名テーブル２４４の機能名によって指定された機能とリンクされ（３２０）、適切な拡張機能が実行される。
そのオペレーションコードに再び遭遇した時に機能名テーブル２４４の機能名の参照が必要ないように、これらの機能はリンクされた状態を維持する。
【００３１】
代替的な実施の形態では、図２および図４を参照して、システムブート時に、プロセッサ２０４は、ブートコード２２３を実行し、ファームウェアＥＥＰＲＯＭ２１６からメモリシステム２１８のＲＡＭのファームウェア部２２０にファームウェアをコピーして実行する。
次に、ファームウェア２２０のブートコード２２３が、ＡＣＰＩ仕様で定義された共通機能の１組の基本ＡＭＬ２２１を生成し（４００）、基本ＡＭＬ２２１をオペレーティングシステムにアクセス可能な領域に配置することによって基本ＡＭＬ２２１を公開し（４０１）、次いで、オペレーティングシステムカーネル２２４をロードして起動する（４０２）。
次に、オペレーティングシステムカーネル２２４は、オペレーティングシステムのプロセスキュー、Ｉ／Ｏキュー、負荷監視２２６機能を初期化し、Ｉ／Ｏデバイスハンドラ２２８、およびシステムレベルのシステム監視／制御モジュール２３０を起動する。
ファームウェア２２０のシステム管理コード２３１は、最小のシステム管理機能を提供し、この時点で、冷却デバイス２１０、電力制御２１２、センサ２１４、およびシステムクロック２４０を制御する。
【００３２】
オペレーティングシステム区画２３６のＡＭＬインタープリタ２３４は、オペレーティングシステムがサポートするＡＣＰＩ仕様のバージョン下で、したがって、ＡＭＬ仕様のバージョン下で利用可能な、使用されないオペレーションコードのリスト２４２を準備する（４０３）。
使用されないオペレーションコードのリストには、オペレーティングシステムにロードされたハードウェア固有のドライバを指定する改訂識別子、および、サポートされたＡＣＰＩのバージョンを指定する改訂識別子が付随する。
このリスト２４２は、オペレーティングシステム２３６およびファームウェア２２０の双方にアクセス可能なメモリに記憶されることによって公開される（４０４）。
この時点で、第１ステージのブート完了フラグがメモリにセットされ、オペレーティングシステム２３６は停止する。
【００３３】
リスト２４２が、ＡＭＬのファームウェア２２０のバージョンおよびオペレーティングシステム２３６のバージョンの双方で使用されないオペレーションコードのリストになるように、ファームウェア２２０のＡＭＬコードジェネレータ２２２の機能は、使用されないオペレーションコードのリスト２４２を検査し、オペレーティングシステムがサポートするＡＭＬ仕様のバージョンに定義された、使用されないオペレーションコードのリストのあらゆるオペレーションコードを削除する（４０６）。
【００３４】
システムがブートを続けるにつれて、高度ＡＭＬコード２３２が、ファームウェア２２０のＡＭＬコードジェネレータ２２２コンポーネントによって、ファームウェア内の先行物から動的に生成される（４１０）。
また、ファームウェア区画２２０のコードジェネレータ２２２は、自身がＡＭＬコード２３２で使用する拡張機能名のリストも機能名テーブル２４４に準備し、これらの拡張機能名を、使用されないオペレーションコードリスト２４２から選択されたオペレーションコードに割り当てる（４０８）。
したがって、これらの割り当てられたオペレーションコードは、オペレーティングシステムによってサポートされたＡＭＬ仕様のバージョンで使用されないオペレーションコードであり、これらのオペレーションコードは、ファームウェアでサポートされたＡＭＬ仕様のバージョンで使用されないオペレーションコードでもある。
オペレーションコードのこれらの割り当ては、機能名テーブル２４４の機能名に対応するロケーションの割り当てた機能オペレーションコード２４６の作成４１２テーブルに記録される。
【００３５】
生成された高度ＡＭＬコード２３２、機能名テーブル２４４、および割り当てた機能オペレーションコード２４６は、オペレーティングシステムのＡＭＬインタープリタ２３４にアクセス可能なメモリに配置されることによって公開される（４１４）。
【００３６】
カーネル２２４が新たなプロセスキュー、Ｉ／Ｏキュー、および負荷監視構造体２２６を構築してアプリケーションプログラムの実行開始を許可されるプロセスにおいて、オペレーティングシステムは再ブートされ（４１３）、そのカーネル２２４は再起動される。
高度ＡＭＬコード２３２は、システムオペレーションをサポートする際に使用される。
【００３７】
システムオペレーションが進行するにつれて、オペレーティングシステムは、ファームウェアからシステム管理を引き継ぎ（４１５）、ＡＭＬインタープリタ２３４は、アイドルなタイマタスクを含むシステム管理タスクがシステムハードウェアとインターフェースする必要があるときはいつでも、基本ＡＭＬコード２２１および高度ＡＭＬコード２３２のルーチンを実行する。
【００３８】
図３の実施の形態と同様に、基本ＡＭＬコード２２１および高度ＡＭＬコード２３２は、オペレーティングシステム２３６のカーネル２２４の制御下で、ＡＭＬインタープリタ２３４によって実行され、システムプロセスおよび入出力（Ｉ／Ｏ）キュー２２６を利用することができる。
ＡＭＬコードタスクは、システム監視／制御モジュール２３０によって呼び出され、オペレーティングシステムカーネル２２４、Ｉ／Ｏハンドラ２２８、およびシステム監視／制御２３０のタスクから周辺機器２０６へ、および、システム管理インターフェース２０８を通じて冷却２１０デバイス、電力２１２供給制御、センサ２１４、およびこのシステムで提供できるような他のシステム管理ハードウェアへ、インターフェースを提供する。
【００３９】
ＡＭＬインタープリタ２３４は、認識しないオペレーションコードに遭遇すると、そのオペレーションコードが、割り当てた機能オペレーションコード２４６のテーブルにあるかどうかを調べる。
割り当てた機能オペレーションコード２４６のテーブルで発見された認識されないオペレーションコードは、そのオペレーションコードに関連した機能名テーブル２４４の機能名によって指定された機能とリンクされ（４２０）、適切な拡張機能が実行される。
そのオペレーションコードに再び遭遇した時に機能名テーブル２４４の機能名の参照が必要ないように、これらの機能はリンクされた状態を維持する。
【００４０】
コンピュータプログラム製品は、コンピュータ可読コードが記録されたあらゆるマシン可読媒体、例えばＥＥＰＲＯＭ２１６、ＥＰＲＯＭ、ＲＯＭ、ＲＡＭ、ＤＲＡＭ、ディスクメモリ、テープである。
このコンピュータ可読コードは、コンピュータによって読み出されてコンピュータで実行されると、特定の方法、機能、または一続きの機能を実行するようにそのコンピュータに指令する。
このプログラム製品のコンピュータ可読コードは、ＡＭＬインタープリタ、ＡＭＬコードジェネレータ、ＡＭＬコードジェネレータを組み込んだファームウェア等のプログラムの一部であってもよいし、そのようなプログラムの全部であってもよい。
本明細書で説明したような拡張オペレーション用の動的に割り当てられたオペレーションコードを使用してＡＭＬコードを生成するコンピュータ可読コードを含んだファームウェアＥＥＰＲＯＭ、または、ファームウェアＥＥＰＲＯＭを含むコンピュータは、コンピュータプログラム製品である。
【００４１】
上記内容は、特に、本発明の特定の実施の形態に関して図示して説明してきたが、本発明の趣旨から逸脱することなく、その形式および詳細においてさまざまな他の変更を行えることが当業者には理解されよう。
本明細書で開示され、かつ、添付した特許請求の範囲によって包含されたより広い概念から逸脱することなく、この説明を異なる実施の形態に適応させる際に、さまざまな変更が行えることが理解されるべきである。
【図面の簡単な説明】
【００４２】
【図１】システム管理ハードウェアを制御するＡＭＬを実施する、当該技術分野で既知のデジタルデバイスのブロック図である。
【図２】システム管理ハードウェアを制御する拡張可能ＡＭＬを実施するデジタルデバイスのブロック図である。
【図３】拡張可能ＡＭＬを実施する方法の一実施の形態の部分的なフローチャートである。
【図４】再ブートがＡＤＤ＿ＴＡＢＬＥコマンドの代わりに使用される代替的な一実施の形態の部分的なフローチャートである。
【符号の説明】
【００４３】
２０４・・・プロセッサ，
２０６・・・周辺機器，
２０８・・・システム管理インターフェース，
２１４・・・センサ，
２１６・・・ファームウェアＥＥＰＲＯＭ，
２１８・・・メモリシステム，
２２０・・・ファームウェア，
２２１・・・基本ＡＭＬコード，
２２２・・・ＡＭＬジェネレータ，
２２３・・・ブートコード，
２２４・・・オペレーティングシステムカーネル，
２２８・・・Ｉ／Ｏハンドラ，
２３０・・・システム監視／制御，
２３１・・・システム管理コード，
２３２・・・高度ＡＭＬコード，
２３４・・・ＡＭＬインタープリタ，
２３６・・・オペレーティングシステム，
２４０・・・クロック，
２４４・・・機能名テーブル，
【図１】
2006012158.tif 000003
【図２】
2006012158.tif 000004
【図３】
2006012158.tif 000005
【図４】
2006012158.tif 000006