(57)【要約】【課題】データインタフェースのロケーションを受け渡す方法を提供する。【解決手段】本方法は、システムファームウェア読み出し専用メモリ（ＲＯＭ）に関連する情報を見つけるための第１のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第１のポインタが指すメモリロケーションに第２のポインタが格納される。第２のポインタはデータ構造を指す。【選択図】図５
2004021987.tif 000002
【特許請求の範囲】
【請求項１】
柔軟なデータインタフェースを提供する方法であって、
ａ）システムファームウェア読み出し専用メモリ（ＲＯＭ）に関連する情報を見つけるための第１のポインタを、構成されたロケーションに格納するステップと、
ｂ）受け渡しシステムコンポーネント情報のインタフェースであるデータ構造にメモリの一部を割り当てるステップと、
ｃ）前記第１のポインタが指すメモリロケーションに、前記データ構造を指す第２のポインタを格納するステップと、
を含む方法。
【請求項２】
前記システムファームウェアは、前記第２のポインタをランダムアクセスメモリに格納する請求項１記載の方法。
【請求項３】
前記システムファームウェアは、前記第２のポインタをシステムブートアップ時にランダムアクセスメモリに格納する請求項１記載の方法。
【請求項４】
ｄ）前記第１のポインタを見つけるために、前記構成されたロケーションを辿るステップと、
ｅ）前記第１のポインタを使用して前記第２のポインタにアクセスするステップと、
ｆ）前記第２のポインタを使用して前記データ構造にアクセスするステップと、
をさらに含む請求項１記載の方法。
【請求項５】
ｄ）ＡＣＰＩプログラムが、前記第１のポインタを見つけるために、前記構成されたロケーションを辿るステップと、
ｅ）前記ＡＣＰＩプログラムが前記第１のポインタを使用して前記第２のポインタにアクセスするステップと、
ｆ）前記ＡＣＰＩプログラムが前記第２のポインタを使用して前記データ構造にアクセスするステップと、
をさらに含む請求項１記載の方法。
【請求項６】
前記データ構造は、システムファームウェアとＡＣＰＩとの間に前記インタフェースを設ける請求項１記載の方法。
【請求項７】
ファームウェアインタフェース情報を提供するための構造内の第１のメモリロケーションに格納される第１のポインタと、
第２のメモリロケーションに格納される第２のポインタと、
を有し、
該第１のポインタは該第２のポインタを指し、
該第２のポインタは、第３のメモリロケーションにあるデータ構造を指し、前記コンピュータシステム内のコンポーネントに関連する情報について、該データ構造は、システムファームウェアとＡＣＰＩとの間の受け渡しインタフェースとして機能する、
コンピュータシステム。
【請求項８】
前記構造はファームウェアインタフェーステーブルである請求項７記載のコンピュータシステム。
【請求項９】
前記第１のポインタは、前記ファームウェアインタフェーステーブルのＯＥＭセクションに格納される請求項８記載のコンピュータシステム。
【請求項１０】
前記第２のメモリロケーションはランダムアクセスメモリ内にある請求項７記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関する。特に、本発明は、データ構造のロケーションをＡＣＰＩ（ａｄｖａｎｃｅｄ　ｃｏｎｆｉｇｕｒａｔｉｏｎ　ａｎｄ　ｐｏｗｅｒ　ｉｎｔｅｒｆａｃｅ）に受け渡す方法およびシステムに関する。
【０００２】
【従来の技術】
ＡＣＰＩ（Ａｄｖａｎｃｅｄ　Ｃｏｎｆｉｇｕｒａｔｉｏｎ　ａｎｄ　ｐｏｗｅｒ　ｉｎｔｅｒｆａｃｅ）は、ラップトップ、デスクトップ、サーバ等を含むコンピュータのオペレーティングシステムにハードウェア状態情報を利用できるようにする仕様である。ＡＣＰＩはまた、ハードウェア資源を操作できるようにする。たとえば、ＡＣＰＩは、電力管理を向上させるために、コンピュータシステムの周辺機器の電源をオンオフできるようにすることによって電力管理を支援する。ＡＣＰＩはまた、外部装置によってコンピュータシステムをオンオフできるようにする。たとえば、マウスに触れる、またはキーを押下すると、ＡＣＰＩを使用するコンピュータシステムを起動させることができる。
【０００３】
従来より、ＡＣＰＩは、様々な理由により扱いが難しい。第１に、ＡＣＰＩは、コンピュータシステムプラットフォームにネイティブ（固有）のアセンブリ言語で書かれていない。その代わりに、ＡＣＰＩは、独自の原始言語および機械語であるＡＣＰＩ原始言語（ＡＳＬ）およびＡＣＰＩ機械語（ＡＭＬ）をそれぞれ有する。用途が高度に特化されているため、ＡＳＬのプログラマは比較的少ない。さらに、ＡＳＬは、使用が限定されていることから構造体が比較的少ない。その上、ＡＣＰＩコードの設計は従来、モノリシック（ｍｏｎｏｌｉｔｈｉｃ：一体式）である。したがってこれにより、ＡＣＰＩコードを他のプラットフォーム、さらには同じプラットフォームの異なる構成に移植することが困難になる。このため、異なるプラットフォームを扱うには、新しいＡＳＬコードを書く必要がある。ＡＳＬプログラマの数が限られているため、新しいコードを書くことがより問題になり、費用がかかるようになる。
【０００４】
ＡＣＰＩは、静的テーブルおよび解釈可能テーブルの双方からなる。ブートアップ時に、システムファームウェアは静的テーブルを構築し、オペレーティングシステムがこの静的テーブルを使用する。解釈可能テーブルはＡＭＬからなる。ＡＭＬはコンパイルされてから、システムファームウェアに併合される。オペレーティングシステムは、ＡＭＬを解釈可能テーブルから読み取り、ＡＣＰＩインタプリタを使用して、構成された（ａｒｃｈｉｔｅｃｔｅｄ）インタフェースを実行する。このようにして、オペレーティングシステムはハードウェア資源を操作する。この従来の方法は、解釈可能テーブルはシステムファームウェアに併合されるため柔軟性、拡張性を欠き、各種システム構成に適合するように再プログラムするために相当の時間を要する。
【０００５】
たとえば、従来、開発者は、プラットフォーム、すなわちその変数の特定の構成を指定するＡＣＰＩコードを書く。不都合なことに、さらに小さなハードウェア変更が行われる場合、設計を変更する必要がある。このためには、新しいＡＭＬコードを書き、新しいテーブルをシステムファームウェアに併合する必要がある。したがって、従来の設計は移植不可能、すなわち再使用することができない。
【０００６】
さらに、従来、ＡＣＰＩでは、プラットフォームの変数がある場合、または相互に排他的なＡＣＰＩ要件を有する２つ以上のＡＣＰＩアウェアＯＳシステムをＡＣＰＩがサポートする場合、異なるシステムファームウェアＲＯＭ（読み取り専用メモリ）またはＢＩＯＳ（基本入出力システム）を使用する必要があった。同じシステムが複数のオペレーティングシステムをサポートすべき場合、異なるシステムファームウェアＲＯＭを使用する必要もあった。
【０００７】
したがって、ランタイム時にコンポーネント情報を提供する従来の方法およびシステムに伴う一つの問題は、異なるプラットフォームにコードを移植することが困難なことである。かかる方法およびシステムに伴う別の問題は、同じプラットフォーム内の異なる構成にコードを移植することが困難なことである。かかる従来の方法およびシステムに伴う別の問題は、これら方法およびシステムにあまり拡張性がないことである。さらに別の問題は、新しいＡＳＬコードを書いてテストするために追加の開発費用がかかることである。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、データインタフェースのロケーションを受け渡す方法を提供することである。
【０００９】
【課題を解決するための手段】
本方法は、システムファームウェア読み出し専用メモリ（ＲＯＭ）に関連する情報を見つけるための第１のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第１のポインタが指すメモリロケーションに第２のポインタが格納される。第２のポインタはデータ構造を指す。
【００１０】
本明細書に組み込まれ、本明細書の一部をなす添付図面は、本発明の実施形態を示し、説明と併せて本発明の原理の説明に役立つ。
【００１１】
【発明の実施の形態】
本発明のコンピュータシステムデータを提供する方法および装置についての以下の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が記載される。しかし、本発明は、これら特定の詳細なしでも、また代替の要素または方法を使用することによっても実施することができる。他の場合では、周知の方法、手順、コンポーネント、および回路については、本発明の態様を不必要に曖昧にしないように詳細に説明しない。
【００１２】
本発明の実施形態は、データインタフェースのロケーションを、ＡＣＰＩ（ａｄｖａｎｃｅｄ　ｃｏｎｆｉｇｕｒａｔｉｏｎ　ａｎｄ　ｐｏｗｅｒ　ｉｎｔｅｒｆａｃｅ）に受け渡す方法である。本方法は、システムファームウェア読み出し専用メモリ（ＲＯＭ）に関連する情報を捜し出す、構成されたロケーションになりうる第１のメモリロケーションの識別子を決定することを含む。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのファームウェアインタフェーステーブル（ＦＩＴ）内のエントリであることができる。第１のポインタは第１のメモリロケーションに格納される。たとえば、ＦＩＴを含むＲＯＭが構築されると、ポインタをＦＩＴの一部にすることができる。システムファームウェアは、システムブートアップ時に、第１のポインタが指す第２のメモリロケーションに第２のポインタを格納することができる。第２のポインタは、システムファームウェアとＡＣＰＩとの間でシステムコンポーネント情報を受け渡すためのデータ構造を指す。ＡＣＰＩは、コンポーネントタイプ識別子を使用して、第１のポインタを求めてＦＩＴテーブルを探索し、第１のポインタを使用して第２のポインタにアクセスしてデータインタフェースを見つける。したがって、データインタフェースのサイズおよびロケーションには柔軟性がある。
【００１３】
本発明の実施形態は、コンピュータシステムプラットフォームの間で移植可能である。さらに、本発明の実施形態は、同じプラットフォームの各種構成間で移植可能である。本発明の実施形態は拡張可能である。本発明の実施形態では、費用のかかるＡＳＬコードの書き換えおよびシステムファームウェアＲＯＭの変更を避けることにより開発費用が抑えられる。
【００１４】
本発明の実施形態は、コンピュータシステムコンポーネントに関連するデータを提供するインタフェースである。インタフェースは、システム抽象化層（ＳＡＬ）とＡＣＰＩ（ａｄｖａｎｃｅｄ　ｃｏｎｆｉｇｕｒａｔｉｏｎ　ａｎｄ　ｐｏｗｅｒ　ｉｎｔｅｒｆａｃｅ）との間にあることができる。インタフェースは、コンピュータ読取可能媒体に格納されたデータ構造を備えることができる。データ構造は、たとえば、コンピュータシステムブート時にＳＡＬによって構築されることができる。データ構造は、コンピュータシステムのコンポーネントに関連するコンポーネントデータについてのフィールドを有する階層スキーマを有することができる。データ構造内でコンポーネントデータを見つけるための識別子があり、情報が求められるコンポーネントタイプを指定することにより、特定プロセスを補助することが可能である。識別子のスキーマは、２つのプログラム間で共通であることができる。データ構造は、識別子を使用してコンポーネントデータを埋める第１のプログラム（たとえば、ＳＡＬ）の格納に利用することができる。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第２のプログラム（たとえば、ＡＣＰＩ）によりアクセス可能である。このようにして、第１のプログラムと第２のプログラムとの間にインタフェースが設けられる。第２のプログラム（たとえば、ＡＣＰＩ）は、データを、たとえばメソッド呼び出しを介してシステム情報を要求したオペレーティングシステムに送る前に再フォーマットすることができる。
【００１５】
図１Ａは、例示的なコンピュータシステム１５０の論理構成を示す。本発明の実施形態は、コンピュータシステム１５０のコンポーネント情報を受け渡すデータ構造インタフェースで、かかるシステム１５０の論理表現を構築することができる。図１Ｂ、図１Ｃは、例示的なコンピュータシステムの論理構成を反映した例示的なデータ構造インタフェースを示す。本発明の実施形態は、どのコンポーネントがブートアップ時に存在することになるかについての事前知識がまったくない状態で、データ構造インタフェースをシステムブートアップ時に構築する。したがって、本発明の実施形態は、ブートアップ時に存在する特定のコンピュータシステム１５０の構成に適合する。
【００１６】
再び図１Ａを参照すると、例示的なコンピュータシステム１５０は、システムボードとも呼ばれることがある一つまたは複数のセル１６０を含むことができる。セル１６０は、ベース管理コントローラ（ＢＭＣ）１６０、いくつかの中央演算処理装置（ＣＰＵ）１７０、およびいくつかのシリアルデバイス（たとえば、汎用非同期送受信回路すなわちＵＡＲＴ）１９０を備えることができる。セル１６０は、いくつかのローカルバスアダプタ（ＬＢＡ）１８０をそれぞれ有しうるいくつかのシステムバスアダプタ（ＳＢＡ）１７５も有することができる。最後に、各ＬＢＡ１８０は、いくつかのスロット１８５を有することができる。図１Ａは単なる例示にすぎない。すべてのコンポーネントが常に存在するわけではなく、他のタイプのコンポーネントがコンピュータシステム１５０にあってもよい。本発明の実施形態は、ＡＣＰＩコードを書き換える必要なく、存在する構成が何であれその構成に適宜適合する。
【００１７】
図１Ｂ、図１Ｃは、システムコンポーネント情報をあるプログラムから別のプログラムに渡すことができるように、２つのコンピュータプログラム間のインタフェースとして機能可能な例示的なデータ構造１００（たとえば、受け渡し（ｈａｎｄｏｆｆ：ハンドオフ）構造）を示す。たとえば、あるプログラムが受け渡し構造１００を埋め、別のプログラムがデータを使用することができる。受け渡し構造１００は、システム内のコンポーネントに関する情報を格納する階層スキーマを含むことができる。受け渡し構造１００は、メタデータ、シグネチャ等の情報のヘッダ１０５を含むことができる。本発明の実施形態はＡＣＰＩとＳＡＬとの間のインタフェースを提供することから、ヘッダはＡＣＰＩ／ＳＡＬ受け渡し構造ヘッダと呼ばれる。
【００１８】
スキーマは、いくつかのレベル１１０に区分化することができる。各レベル１１０は、一つまたは複数のタイプのコンポーネントに関連する情報を含むことができる。第１のレベル１１０ａを参照すると、第１のレベル１１０ａにおける唯一のコンポーネントタイプはセルである。本例では、情報は、セルエントリ１２５のアレイ１２０を含む。第２のレベル１１０ｂは、５つの異なるタイプのコンポーネントについての情報を含む。ベース管理コントローラ（ＢＭＣ）情報１２１は、本例では一つのベース管理コントローラしかないため、エントリ１２５のアレイ１２０として編成されない。その他のコンポーネントについての情報は、本例では０またはそれよりも多くのエントリ１２５のアレイ１２０として編成される。しかし、任意のコンポーネントタイプの編成は、柔軟なソリューションを提供するために、アレイ１２０であっても、または単一エントリであってもよい。第２のレベル１１０ｂは、中央演算処理装置（ＣＰＵ）アレイ１２０、ローカルバスアダプタ（ＬＢＡ）固有データアレイ１２０、シリアルデバイスアレイ１２０、およびシステムバスアダプタ（ＳＢＡ）アレイ１２０も含む。これらアレイ１２０は例示的なものである。たとえば、第２のレベル１１０ｂは、ＵＡＲＴ情報のアレイなど他のコンポーネント情報も含みうる。
【００１９】
図１Ｃを参照すると、第３のレベル１１０ｃは、ローカルバスアダプタ（ＬＢＡ）についてのエントリ１２５のアレイ１２０である単一コンポーネントタイプについての情報を含む。最後に、第４のレベル１１０ｄは、スロットについてのエントリ１２５のアレイ１２０を含む。
【００２０】
受け渡し構造１００の各種エントリ１２５は、他のエントリ１２５にリンクすることが可能である。たとえば、セルエントリ１２５の一つが、ＢＭＣ情報１２１、中央演算処理装置（ＣＰＵ）エントリ１２５ａ、ＬＢＡ固有データエントリ１２５ｂ、シリアルデバイスエントリ１２５ｃ、およびシステムバスアダプタ（ＳＢＡ）エントリ１２５ｄにリンクされる。セルエントリ１２５ｇは、システムの論理構成を反映する場合、一つまたは複数のコンポーネントタイプの複数のエントリ１２５にリンクすることができる。たとえば、コンピュータシステムが構成されるとき、セルは複数のＳＢＡを有しうる。第３のレベル１１０ｃおよび第４のレベル１１０ｄの前に、ＳＢＡエントリ１２５ｄはＬＢＡエントリ１２５ｅにリンクされ、ＬＢＡ１２５ｅはスロットエントリ１２５ｆにリンクされる。ＳＢＡエントリ１２５ｄを複数のＬＢＡエントリ１２５ｅにリンクし、ＬＢＡエントリ１２５ｅを複数のスロットエントリ１２５ｆにリンクすることができる。
【００２１】
受け渡し構造１００は、一実施形態では、チップセット固有情報を含むことができる。このように、固有のパラメータ値を各チップセットのＡＭＬ実装形態（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）に渡すことができる（ＡＭＬは、受け渡し構造１００内のデータの最終的な消費者であることができる）。たとえば、ＡＭＬ実装形態はチップセットＸ、Ｙ、およびＺをサポートすることができる。この場合、受け渡し構造１００は、３つのサポートされるチップセットそれぞれのデータ構造を含むことができ、各データ構造は、チップセットのＡＭＬが必要とするパラメータ値を含む。たとえば、これは、ＬＢＡ固有データ情報１２０のアレイ１２０に格納することができる。したがって、本発明の実施形態では、複数のチップセットをサポートするＡＭＬ実装形態が可能である。
【００２２】
次に、図２を参照すると、本発明の実施形態は、コンポーネント情報が受け渡し構造１００のどこにあるかを特定するために使用される共通キーすなわち一意の識別子２００を提供する。共通キー２００は、受け渡し構造１００を埋めるプログラム（たとえば、ＳＡＬ）および受け渡し構造１００内の情報を使用するプログラム（たとえば、ＡＣＰＩ）によって知られている。共通キー２００は、いくつかのコンポーネント識別子２２０を連結することによって形成することができる。各レベル１１０に一つのコンポーネント識別子がありうる。コンポーネント識別子２２０は、いくつかの考えられるコンポーネントの中のコンポーネントを指すことができる。たとえば、４レベルコンポーネントの論理階層を有するシステムでは、共通キーはコンポーネントごとに４つの別個の値を有しうる。したがって、図２とともに図１Ｂの例を参照すると、「７３４１」という共通キー２００は、７番目のセルエントリ１２５ｇの３番目のＳＢＡエントリ１２５ｄの４番目のＬＢＡエントリ１２５ｅの最初のスロットエントリ１２５ｆを特定することができる。
【００２３】
場合によっては、所与のレベル１１０に２つ以上のコンポーネントタイプがありうるため、さらなる情報がそのコンポーネントデータの特定に必要である。たとえば、情報が図１Ｂのスキーマ内の第２のレベル１１０ｂコンポーネントについて求められる場合、どのコンポーネントタイプ情報が求められいるかについて知るために、さらなる情報が必要となる。したがって、一実施形態では、ＡＣＰＩは、どのタイプのコンポーネント情報が求められているかについての情報を受け取る。たとえば、ＡＣＰＩは、シリアルデバイスエントリ情報が求められていると決定するか、またはその旨通知される。次いで、ＡＣＰＩが受け渡し構造に共通キー２００でインデックスを作成すると、これも要素として組み込み、シリアルデバイスアレイ１２０内の関連エントリ１２５を選択する。
【００２４】
本明細書に述べたように、図１Ｂの編成は例示的なものである。図３は、システム情報を受け渡すための受け渡し構造３００の別の実施形態を示す。本実施形態では、第１のレベル３１０ａは、ドメインに関する情報を含む（たとえば、ドメイン情報のアレイ１２０）。たとえば、システムは複数のオペレーティングシステムをサポートすることができ、各オペレーティングシステムはそれぞれのドメインを有する。第２のレベル３１０ｂは、ハードウェアがどのようにレイアウトされたかに応じて、いくつかありうるセルについての情報を含むことができる。第３のレベル３１０ｃは、アダプタ情報を含む。第４のレベル３１０ｄはＰＣＩ−ＰＣＩブリッジ情報を含み、第５のレベル３１０ｅはスロット情報を含む。
【００２５】
図３の例の共通キー２００は、５つのコンポーネント値を有しうる。たとえば、「２３１１１」の共通キーは、２番目のドメインの３番目のセルの最初のアダプタの最初のＰＣＩ−ＰＣＩブリッジの最初のスロットを指すことができる。
【００２６】
図１および図３は階層スキーマを示すが、かかるスキーマは必要ではない。一実施形態では、共通キー２００は、スキーマ内のエントリとシステム内の考えられるコンポーネントとの間に１対１のマッピングを提供する。これは、コンピュータシステム１５０内のあらゆるコンポーネントが、関連する固有のキーを有することを意味する。
【００２７】
本発明の実施形態は、ＳＡＬとＡＣＰＩとの間のインタフェースを使用してコンポーネントデータを提供する方法を提供する。図４のプロセス４００のステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ４１０において、インタフェースを提供する受け渡し構造１００、３００が構築される。受け渡し構造は、コンピュータシステムブート時にＳＡＬ（たとえば、システムファームウェア）によって構築することができる。
【００２８】
ステップ４２０において、受け渡し構造１００、３００にＳＡＬが格納される。ＳＡＬは、システムコンポーネントを発見するステップおよび取得した情報を使用して受け渡し構造１００、３００を埋めるステップを行うことができる。ＳＡＬは、共通キー２００を使用して、コンポーネントデータを受け渡し構造１００、３００のどこに配置するかを決めることができる。
【００２９】
ステップ４３０において、ＡＣＰＩが受け渡し構造１００、３００にインデックスを作成して、コンポーネントデータを取得する。ＡＣＰＩは、共通キーならびにコンポーネントデータタイプを使用することができる。たとえば、ＡＣＰＩは、データが求められているコンポーネントのタイプを特定するか、またはコンポーネントデータについてのより一般的な要求であることができる、ＯＳからの呼び出しを受け取る。これに応答して、ＡＣＰＩは適当な共通キー２００を構築し、共通キー２００がコンポーネントデータを検索してＯＳからの要求を満たす。これは、受け渡し構造１００、３００に２回以上インデックスを作成することを含むことができる。
【００３０】
ステップ４４０において、受け渡し構造１００、３００からのコンポーネントデータの一部が、要求を出したプログラム、たとえばオペレーティングシステムに提供される。このステップは、ＡＣＰＩが、要求に適するようにコンポーネントを再フォーマットすることを含みうる。たとえば、要求は、指定されたフォーマットに従ってデータが戻されると予想される「＿ＣＲＳ呼び出し（＿ＣＲＳ　ｃａｌｌ）」であることができる。
【００３１】
本発明の実施形態では、受け渡し構造１００、３００をほぼどこにでも配置することが可能である。さらに、配置は、システムブート時に行うことができる。したがって、受け渡し構造１００、３００のサイズおよびロケーションの双方をブートアップ時に選択することができる。これにより、ＡＣＰＩコードがプラットフォームから独立したものにすることが可能である。その上、受け渡し構造１００、３００は、ランタイム時にモーフィングして、所与のプラットフォームおよびシステム構成をサポートすることができる。したがって、受け渡し構造１００、３００の厳密な構成は常に同じになるわけではない。実施形態はさらに、コンポーネント構成が同じコンピュータシステムに異なる受け渡し構造１００、３００を構築するように指示する場合には、そのように構築することができる。たとえば、所与のシステムは、１つ、２つ、または３つのＰＣＩバスで製造することができる。ブートアップ時に、受け渡し構造１００、３００のサイズおよび構成が実際の構成に適合される。これにより、従来のソリューションでは必要であった複数のＡＣＰＩコードソリューションを提供する必要がなくなる。本発明の実施形態は、システムコンポーネントの故障にも適合する。たとえば、ＰＣＩバスがブートアップ時に故障した場合、これは受け渡し構造１００、３００に正しく報告される。
【００３２】
最大の柔軟性を提供するために、データ構造１００、３００は任意の都合のよいロケーションに配置することが可能である。本発明の実施形態は、第１のコンピュータプログラム（たとえば、システムファームウェアまたはＳＡＬ）にロケーションを確立し、そのロケーションに第２のコンピュータプログラム（たとえば、ＡＣＰＩルーチン）を伝達する方法を提供する。次に、図５を参照すると、第１のポインタをファームウェアインタフェーステーブル（ＦＩＴ）５１０に配置することができる。しかし、本発明の実施形態は、ＦＩＴ５１０の使用に制限されない。より一般的に、実施形態は、システムファームウェアＲＯＭにおいて情報（たとえば、データまたはコンポーネント情報）を見つける方法を提供するために任意の、構成されたロケーションを使用することができる。構成されたロケーションは、ポインタを格納するためのものであってもよい。たとえば、ポインタは、データまたはコンポーネント情報を指すことができる。ＦＩＴ５１０は、システムファームウェア内の異なるコンポーネントについてのエントリを含むことができる。ＦＩＴ５１０は、要求されたコンポーネントについての構成されたセクション５１０を含みうる。ＦＩＴ５１０は、任意のコンポーネントに関連するフィールドを有することが可能なＯＥＭ（Ｏｒｉｇｉｎａｌ　Ｅｑｕｉｐｍｅｎｔ　Ｍａｎｕｆａｃｔｕｒｅ：独自製品生産）セクション５１２も含みうる。
【００３３】
受け渡し構造ＦＩＴエントリ５１５は、ＯＥＭセクション５１２のどこに存在してもよく、受け渡し構造ポインタ５２５を指す。受け渡し構造ポインタ５２５は、ＡＣＰＩが後にポインタを検索するためにアクセス可能などこの場所にあってもよい。たとえば、受け渡し構造ポインタ５２５は、主記憶装置、スクラッチＲＡＭ（ランダムアクセスメモリ）、不揮発性メモリ等にあることができる。この柔軟性により、ＡＭＬを何等書き換えることなく、受け渡し構造１００、３００のロケーションを移動することが可能である。これは、ＡＣＰＩがＦＩＴ５１０のロケーションを知っており、したがって受け渡し構造ＦＩＴエントリ５１５を見つけることができるためである。
【００３４】
本発明の実施形態は、受け渡しデータ構造１００、３００のロケーションを中継する方法を提供し、これを図６のプロセス６００に示す。プロセス６００のうちの少なくともいくつかのステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ６１０において、ＡＣＰＩがアクセス可能なメモリロケーションの識別子が決定される。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのＦＩＴ内のエントリであることができる。このようにして、ＡＣＰＩは、ＡＣＰＩが立ち上がるときに、ポインタを見つけることが可能になる。
【００３５】
ステップ６２０において、第１のポインタ（たとえば、受け渡し構造ＦＩＴエントリ５１５）がＦＩＴ５１０に格納される。ＦＩＴはシステムＲＯＭの一部として実施することができるため、このステップは、別個のＲＯＭ構築プロセスの一部として行うことが可能である。
【００３６】
ステップ６３０において、システムファームウェアは、メモリの一部を受け渡し構造１００、３００に割り当てる。これはシステムブートアップ時に行うことができるが、本発明はそのように制限されない。メモリ割り当ては、受け渡し構造１００、３００とインタフェースする双方のプログラムがアクセス可能ないずれの場所であってもよい。たとえば、システムファームウェアは、主記憶装置、スクラッチＲＡＭ、不揮発性メモリ等を割り当てることができる。次いで、システムファームウェアは、受け渡し構造１００、３００を構築してこれを埋める。たとえば、プロセス４００のステップ４１０および４２０を行うことができる。
【００３７】
ステップ６３５において、システムファームウェアが、受け渡し構造ポインタ５２５を、ＦＩＴ５１０内のポインタが指すロケーションに格納する。受け渡し構造ポインタ５２５は、受け渡し構造１００、３００を指す。
【００３８】
ＡＣＰＩが立ち上がると、ポインタにアクセスすることにより受け渡し構造１００、３００を見つけることができる（５１０、５２５）。これは、ステップ６４０において、ＡＣＰＩコードがＦＩＴテーブル５１０を辿り、第１のポインタを見つけることによって実現することができる。たとえば、ＡＣＰＩコードは、受け渡し構造ＦＩＴエントリ５１５が、所与のコンポーネントタイプのフィールドのロケーションにおけるＦＩＴ５１０のＯＥＭセクション５１２にあることを知ることができる。任意の適したコンポーネントタイプを選択することが可能である。コンポーネントタイプ５１が選択される場合、ＡＣＰＩコードは、受け渡し構造ＦＩＴエントリ５１５がコンポーネントタイプ５１のＦＩＴ５１０のフィールドにあることがわかる。
【００３９】
ステップ６５０において、ＡＣＰＩコードは、第１のポインタ（たとえば、受け渡し構造ＦＩＴエントリ５１５）を使用して第２のポインタ（たとえば、受け渡し構造ポインタ５２５）にアクセスする。このようにして、ＡＣＰＩは、予め確立された位置から開始することによって受け渡し構造１００、３００のロケーションを決定する。
【００４０】
ステップ６６０において、ＡＣＰＩコードは、第２のポインタを使用して受け渡し構造１００、３００にアクセスする。したがって、本発明の実施形態は、受け渡し構造１００、３００に柔軟なロケーションおよびサイズを提供することが可能である。仮に受け渡し構造１００、３００のロケーションが同じである場合には、受け渡し構造１００、３００は柔軟性を欠くことになる。
【００４１】
本発明を特定の実施形態について説明したが、本発明がかかる実施形態により制限されるものと解釈すべきではなく、むしろ、併記の特許請求の範囲により解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図１Ａ】本発明の実施形態がデータインタフェースに表される例示的なコンピュータシステムの論理構成を示す図。
【図１Ｂ】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を示す図。
【図１Ｃ】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を、図１Ｂの続きから示す図。
【図２】本発明の実施形態による、コンポーネント情報を提供するためのインタフェースにおいてデータを操作する共通キーの図。
【図３】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造の図。
【図４】本発明の実施形態による、コンポーネント情報を提供するプロセスのステップを示すフローチャート。
【図５】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタを示す図。
【図６】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタをセットアップして使用するプロセスのステップを示すフローチャート。
【符号の説明】
１００、３００　受け渡し構造
５１０　ＦＩＴ
５１５　受け渡し構造ＦＩＴエントリ
５２５　受け渡し構造ポインタ
【図１Ａ】
2004021987.tif 000003
【図１Ｂ】
2004021987.tif 000004
【図１Ｃ】
2004021987.tif 000005
【図２】
2004021987.tif 000006
【図３】
2004021987.tif 000007
【図４】
2004021987.tif 000008
【図５】
2004021987.tif 000009
【図６】
2004021987.tif 000010