JP2004054921A - コンピュータシステムのコンポーネントデータを提供する方法および装置 - Google Patents
コンピュータシステムのコンポーネントデータを提供する方法および装置 Download PDFInfo
- Publication number
- JP2004054921A JP2004054921A JP2003157533A JP2003157533A JP2004054921A JP 2004054921 A JP2004054921 A JP 2004054921A JP 2003157533 A JP2003157533 A JP 2003157533A JP 2003157533 A JP2003157533 A JP 2003157533A JP 2004054921 A JP2004054921 A JP 2004054921A
- Authority
- JP
- Japan
- Prior art keywords
- component
- data
- computer
- data structure
- acpi
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】コンピュータシステム情報を受け渡すためのインタフェースを提供する。
【解決手段】インタフェースは、コンピュータ可読媒体に格納されたデータ構造を含む。データ構造は、コンピュータシステムのコンポーネントに関するコンポーネントデータのためのフィールドを有する。データ構造は、データ構造内のコンポーネントデータを捜し出すための識別子を使用してコンポーネントデータを埋める第1のプログラムの格納に利用することができる。第1のプログラムは、コンポーネントを発見することが可能である。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラムによりアクセス可能である。第2のコンピュータプログラムは、オペレーティングシステムがコンポーネントデータを取得することを支援するものである。
【選択図】図1A
【解決手段】インタフェースは、コンピュータ可読媒体に格納されたデータ構造を含む。データ構造は、コンピュータシステムのコンポーネントに関するコンポーネントデータのためのフィールドを有する。データ構造は、データ構造内のコンポーネントデータを捜し出すための識別子を使用してコンポーネントデータを埋める第1のプログラムの格納に利用することができる。第1のプログラムは、コンポーネントを発見することが可能である。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラムによりアクセス可能である。第2のコンピュータプログラムは、オペレーティングシステムがコンポーネントデータを取得することを支援するものである。
【選択図】図1A
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関する。特に、本発明は、SAL(システム抽象化層)とACPI(Advanced Configuration and power interface)との間でシステム構成情報を受け渡すインタフェースに関する。
【0002】
【従来の技術】
ACPI(Advanced Configuration and power interface)は、ラップトップ、デスクトップ、サーバ等を含むコンピュータのオペレーティングシステムにハードウェア状態情報を利用できるようにする仕様である。ACPIはまた、ハードウェア資源を操作できるようにする。たとえば、ACPIは、電力管理を向上させるために、コンピュータシステムの周辺機器の電源をオンオフできるようにすることによって電力管理を支援する。ACPIはまた、外部装置によってコンピュータシステムをオンオフできるようにする。たとえば、マウスに触れる、またはキーを押下すると、ACPIを使用するコンピュータシステムを起動させることができる。
【0003】
従来より、ACPIは、様々な理由により扱いが難しい。第1に、ACPIは、コンピュータシステムプラットフォームにネイティブ(固有)のアセンブリ言語で書かれていない。その代わりに、ACPIは、独自の原始言語および機械語であるACPI原始言語(ASL)およびACPI機械語(AML)をそれぞれ有する。用途が高度に特化されているため、ASLのプログラマは比較的少ない。さらに、ASLは、使用が限定されていることから構造体が比較的少ない。その上、ACPIコードの設計は従来、モノリシック(monolithic:一体式)である。したがってこれにより、ACPIコードを他のプラットフォーム、さらには同じプラットフォームの異なる構成に移植することが困難になる。このため、異なるプラットフォームを扱うには、新しいASLコードを書く必要がある。ASLプログラマの数が限られているため、新しいコードを書くことがより問題になり、費用がかかるようになる。
【0004】
ACPIは、静的テーブルおよび解釈可能テーブルの双方からなる。ブートアップ時に、システムファームウェアは静的テーブルを構築し、オペレーティングシステムがこの静的テーブルを使用する。解釈可能テーブルはAMLからなる。AMLはコンパイルされてから、システムファームウェアに併合される。オペレーティングシステムは、AMLを解釈可能テーブルから読み取り、ACPIインタプリタを使用して、構成された(architected)インタフェースを実行する。このようにして、オペレーティングシステムはハードウェア資源を操作する。この従来の方法は、解釈可能テーブルはシステムファームウェアに併合されるため柔軟性、拡張性を欠き、各種システム構成に適合するように再プログラムするために相当の時間を要する。
【0005】
たとえば、従来、開発者は、プラットフォーム、すなわちその変数の特定の構成を指定するACPIコードを書く。不都合なことに、さらに小さなハードウェア変更が行われる場合、設計を変更する必要がある。このためには、新しいAMLコードを書き、新しいテーブルをシステムファームウェアに併合する必要がある。したがって、従来の設計は移植不可能、すなわち再使用することができない。
【0006】
さらに、従来、ACPIでは、プラットフォームの変数がある場合、または相互に排他的なACPI要件を有する2つ以上のACPIアウェアOSシステムをACPIがサポートする場合、異なるシステムファームウェアROM(読み取り専用メモリ)またはBIOS(基本入出力システム)を使用する必要があった。同じシステムが複数のオペレーティングシステムをサポートすべき場合、異なるシステムファームウェアROMを使用する必要もあった。
【0007】
したがって、ランタイム時にコンポーネント情報を提供する従来の方法およびシステムに伴う一つの問題は、異なるプラットフォームにコードを移植することが困難なことである。かかる方法およびシステムに伴う別の問題は、同じプラットフォーム内の異なる構成にコードを移植することが困難なことである。かかる従来の方法およびシステムに伴う別の問題は、これら方法およびシステムにあまり拡張性がないことである。さらに別の問題は、新しいASLコードを書いてテストするために追加の開発費用がかかることである。
【0008】
【発明が解決しようとする課題】
本発明の目的は、コンピュータシステム情報を受け渡すためのインタフェースを提供することである。
【0009】
【課題を解決するための手段】
インタフェースは、コンピュータ読取可能媒体に格納されたデータ構造を含む。データ構造は、コンピュータシステムのコンポーネントに関するコンポーネントデータのためのフィールドを有する。データ構造は、データ構造内のコンポーネントデータを捜し出すための識別子を使用してコンポーネントデータを埋める第1のプログラムの格納に利用することができる。第1のプログラムは、コンポーネントを発見することが可能である。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラムによりアクセス可能である。第2のコンピュータプログラムは、オペレーティングシステムがコンポーネントデータを取得することを支援するものである。
【0010】
本明細書に組み込まれ、本明細書の一部をなす添付図面は、本発明の実施形態を示し、説明と併せて本発明の原理の説明に役立つ。
【0011】
【発明の実施の形態】
本発明のコンピュータシステムデータを提供する方法および装置についての以下の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が記載される。しかし、本発明は、これら特定の詳細なしでも、また代替の要素または方法を使用することによっても実施することができる。他の場合では、周知の方法、手順、コンポーネント、および回路については、本発明の態様を不必要に曖昧にしないように詳細に説明しない。
【0012】
本発明の実施形態は、コンピュータシステムコンポーネントに関連するデータを提供するインタフェースである。インタフェースは、SAL(システム抽象化層)とACPI(Advanced Configuration and power interface)との間にあることができる。インタフェースは、コンピュータ読取可能媒体に格納されるデータ構造を含むことができる。データ構造は、たとえばコンピュータシステムブート時に、SALによって構築することが可能である。データ構造は、コンピュータシステムのコンポーネントに関連するコンポーネントデータのためのフィールドを有する階層スキーマを有することができる。データ構造内のコンポーネントデータを見つけるための識別子があり、情報が求められているコンポーネントのタイプを指定することによって特定プロセスを補助することができる。識別子スキーマは、2つのプログラムで共通であることができる。データ構造は、識別子を使用してコンポーネントデータを埋める第1のプログラム(たとえば、SAL)の格納に利用することができる。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラム(たとえば、ACPI)によりアクセス可能である。このようにして、第1のプログラムと第2のプログラムとの間にインタフェースが設けられる。第2のプログラム(たとえば、ACPI)は、データを、たとえばメソッド呼び出しを介してシステム情報を要求したオペレーティングシステムに送る前に再フォーマットすることができる。
【0013】
本発明の実施形態は、コンピュータシステムプラットフォームの間で移植可能である。さらに、本発明の実施形態は、同じプラットフォームの各種構成間で移植可能である。本発明の実施形態は拡張可能である。本発明の実施形態では、費用のかかるASLコードの書き換えおよびシステムファームウェアROMの変更を避けることにより開発費用が抑えられる。
【0014】
図1Aは、例示的なコンピュータシステム150の論理構成を示す。本発明の実施形態は、コンピュータシステム150のコンポーネント情報を受け渡すデータ構造インタフェースで、かかるシステム150の論理表現を構築することができる。図1B、図1Cは、例示的なコンピュータシステムの論理構成を反映した例示的なデータ構造インタフェースを示す。本発明の実施形態は、どのコンポーネントがブートアップ時に存在することになるかについての事前知識がまったくない状態で、データ構造インタフェースをシステムブートアップ時に構築する。したがって、本発明の実施形態は、ブートアップ時に存在する特定のコンピュータシステム150の構成に適合する。
【0015】
再び図1Aを参照すると、例示的なコンピュータシステム150は、システムボードとも呼ばれることがある一つまたは複数のセル160を含むことができる。セル160は、ベース管理コントローラ(BMC)160、いくつかの中央演算処理装置(CPU)170、およびいくつかのシリアルデバイス(たとえば、汎用非同期送受信回路すなわちUART)190を備えることができる。セル160は、いくつかのローカルバスアダプタ(LBA)180をそれぞれ有しうるいくつかのシステムバスアダプタ(SBA)175も有することができる。最後に、各LBA180は、いくつかのスロット185を有することができる。図1Aは単なる例示にすぎない。すべてのコンポーネントが常に存在するわけではなく、他のタイプのコンポーネントがコンピュータシステム150にあってもよい。本発明の実施形態は、ACPIコードを書き換える必要なく、存在する構成が何であれその構成に適宜適合する。
【0016】
図1B、図1Cは、システムコンポーネント情報をあるプログラムから別のプログラムに渡すことができるように、2つのコンピュータプログラム間のインタフェースとして機能可能な例示的なデータ構造100(たとえば、受け渡し(handoff:ハンドオフ)構造)を示す。たとえば、あるプログラムが受け渡し構造100を埋め、別のプログラムがデータを使用することができる。受け渡し構造100は、システム内のコンポーネントに関する情報を格納する階層スキーマを含むことができる。受け渡し構造100は、メタデータ、シグネチャ等の情報のヘッダ105を含むことができる。本発明の実施形態はACPIとSALとの間のインタフェースを提供することから、ヘッダはACPI/SAL受け渡し構造ヘッダと呼ばれる。
【0017】
スキーマは、いくつかのレベル110に区分化することができる。各レベル110は、一つまたは複数のタイプのコンポーネントに関連する情報を含むことができる。第1のレベル110aを参照すると、第1のレベル110aにおける唯一のコンポーネントタイプはセルである。本例では、情報は、セルエントリ125のアレイ120を含む。第2のレベル110bは、5つの異なるタイプのコンポーネントについての情報を含む。ベース管理コントローラ(BMC)情報121は、本例では一つのベース管理コントローラしかないため、エントリ125のアレイ120として編成されない。その他のコンポーネントについての情報は、本例では0またはそれよりも多くのエントリ125のアレイ120として編成される。しかし、任意のコンポーネントタイプの編成は、柔軟なソリューションを提供するために、アレイ120であっても、または単一エントリであってもよい。第2のレベル110bは、中央演算処理装置(CPU)アレイ120、ローカルバスアダプタ(LBA)固有データアレイ120、シリアルデバイスアレイ120、およびシステムバスアダプタ(SBA)アレイ120も含む。これらアレイ120は例示的なものである。たとえば、第2のレベル110bは、UART情報のアレイなど他のコンポーネント情報も含みうる。
【0018】
図1Cを参照すると、第3のレベル110cは、ローカルバスアダプタ(LBA)についてのエントリ125のアレイ120である単一コンポーネントタイプについての情報を含む。最後に、第4のレベル110dは、スロットについてのエントリ125のアレイ120を含む。
【0019】
受け渡し構造100の各種エントリ125は、他のエントリ125にリンクすることが可能である。たとえば、セルエントリ125の一つが、BMC情報121、中央演算処理装置(CPU)エントリ125a、LBA固有データエントリ125b、シリアルデバイスエントリ125c、およびシステムバスアダプタ(SBA)エントリ125dにリンクされる。セルエントリ125gは、システムの論理構成を反映する場合、一つまたは複数のコンポーネントタイプの複数のエントリ125にリンクすることができる。たとえば、コンピュータシステムが構成されるとき、セルは複数のSBAを有しうる。第3のレベル110cおよび第4のレベル110dの前に、SBAエントリ125dはLBAエントリ125eにリンクされ、LBA125eはスロットエントリ125fにリンクされる。SBAエントリ125dを複数のLBAエントリ125eにリンクし、LBAエントリ125eを複数のスロットエントリ125fにリンクすることができる。
【0020】
受け渡し構造100は、一実施形態では、チップセット固有情報を含むことができる。このように、固有のパラメータ値を各チップセットのAML実装形態(implementation)に渡すことができる(AMLは、受け渡し構造100内のデータの最終的な消費者であることができる)。たとえば、AML実装形態はチップセットX、Y、およびZをサポートすることができる。この場合、受け渡し構造100は、3つのサポートされるチップセットそれぞれのデータ構造を含むことができ、各データ構造は、チップセットのAMLが必要とするパラメータ値を含む。たとえば、これは、LBA固有データ情報120のアレイ120に格納することができる。したがって、本発明の実施形態では、複数のチップセットをサポートするAML実装形態が可能である。
【0021】
次に、図2を参照すると、本発明の実施形態は、コンポーネント情報が受け渡し構造100のどこにあるかを特定するために使用される共通キーすなわち一意の識別子200を提供する。共通キー200は、受け渡し構造100を埋めるプログラム(たとえば、SAL)および受け渡し構造100内の情報を使用するプログラム(たとえば、ACPI)によって知られている。共通キー200は、いくつかのコンポーネント識別子220を連結することによって形成することができる。各レベル110に一つのコンポーネント識別子がありうる。コンポーネント識別子220は、いくつかの考えられるコンポーネントの中のコンポーネントを指すことができる。たとえば、4レベルコンポーネントの論理階層を有するシステムでは、共通キーはコンポーネントごとに4つの別個の値を有しうる。したがって、図2とともに図1Bの例を参照すると、「7341」という共通キー200は、7番目のセルエントリ125gの3番目のSBAエントリ125dの4番目のLBAエントリ125eの最初のスロットエントリ125fを特定することができる。
【0022】
場合によっては、所与のレベル110に2つ以上のコンポーネントタイプがありうるため、さらなる情報がそのコンポーネントデータの特定に必要である。たとえば、情報が図1Bのスキーマ内の第2のレベル110bコンポーネントについて求められる場合、どのコンポーネントタイプ情報が求められいるかについて知るために、さらなる情報が必要となる。したがって、一実施形態では、ACPIは、どのタイプのコンポーネント情報が求められているかについての情報を受け取る。たとえば、ACPIは、シリアルデバイスエントリ情報が求められていると決定するか、またはその旨通知される。次いで、ACPIが受け渡し構造に共通キー200でインデックスを作成すると、これも要素として組み込み、シリアルデバイスアレイ120内の関連エントリ125を選択する。
【0023】
本明細書に述べたように、図1Bの編成は例示的なものである。図3は、システム情報を受け渡すための受け渡し構造300の別の実施形態を示す。本実施形態では、第1のレベル310aは、ドメインに関する情報を含む(たとえば、ドメイン情報のアレイ120)。たとえば、システムは複数のオペレーティングシステムをサポートすることができ、各オペレーティングシステムはそれぞれのドメインを有する。第2のレベル310bは、ハードウェアがどのようにレイアウトされたかに応じて、いくつかありうるセルについての情報を含むことができる。第3のレベル310cは、アダプタ情報を含む。第4のレベル310dはPCI−PCIブリッジ情報を含み、第5のレベル310eはスロット情報を含む。
【0024】
図3の例の共通キー200は、5つのコンポーネント値を有しうる。たとえば、「23111」の共通キーは、2番目のドメインの3番目のセルの最初のアダプタの最初のPCI−PCIブリッジの最初のスロットを指すことができる。
【0025】
図1および図3は階層スキーマを示すが、かかるスキーマは必要ではない。一実施形態では、共通キー200は、スキーマ内のエントリとシステム内の考えられるコンポーネントとの間に1対1のマッピングを提供する。これは、コンピュータシステム150内のあらゆるコンポーネントが、関連する固有のキーを有することを意味する。
【0026】
本発明の実施形態は、SALとACPIとの間のインタフェースを使用してコンポーネントデータを提供する方法を提供する。図4のプロセス400のステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ410において、インタフェースを提供する受け渡し構造100、300が構築される。受け渡し構造は、コンピュータシステムブート時にSAL(たとえば、システムファームウェア)によって構築することができる。
【0027】
ステップ420において、受け渡し構造100、300にSALが格納される。SALは、システムコンポーネントを発見するステップおよび取得した情報を使用して受け渡し構造100、300を埋めるステップを行うことができる。SALは、共通キー200を使用して、コンポーネントデータを受け渡し構造100、300のどこに配置するかを決めることができる。
【0028】
ステップ430において、ACPIが受け渡し構造100、300にインデックスを作成して、コンポーネントデータを取得する。ACPIは、共通キーならびにコンポーネントデータタイプを使用することができる。たとえば、ACPIは、データが求められているコンポーネントのタイプを特定するか、またはコンポーネントデータについてのより一般的な要求であることができる、OSからの呼び出しを受け取る。これに応答して、ACPIは適当な共通キー200を構築し、共通キー200がコンポーネントデータを検索してOSからの要求を満たす。これは、受け渡し構造100、300に2回以上インデックスを作成することを含むことができる。
【0029】
ステップ440において、受け渡し構造100、300からのコンポーネントデータの一部が、要求を出したプログラム、たとえばオペレーティングシステムに提供される。このステップは、ACPIが、要求に適するようにコンポーネントデータを再フォーマットすることを含みうる。たとえば、要求は、指定されたフォーマットに従ってデータが戻されると予想される「_CRS呼び出し(_CRS
call)」であることができる。
【0030】
本発明の実施形態では、受け渡し構造100、300をほぼどこにでも配置することが可能である。さらに、配置は、システムブート時に行うことができる。したがって、受け渡し構造100、300のサイズおよびロケーションの双方をブートアップ時に選択することができる。これにより、ACPIコードがプラットフォームから独立したものにすることが可能である。その上、受け渡し構造100、300は、ランタイム時にモーフィングして、所与のプラットフォームおよびシステム構成をサポートすることができる。したがって、受け渡し構造100、300の厳密な構成は常に同じになるわけではない。実施形態はさらに、コンポーネント構成が同じコンピュータシステムに異なる受け渡し構造100、300を構築するように指示する場合には、そのように構築することができる。たとえば、所与のシステムは、1つ、2つ、または3つのPCIバスで製造することができる。ブートアップ時に、受け渡し構造100、300のサイズおよび構成が実際の構成に適合される。これにより、従来のソリューションでは必要であった複数のACPIコードソリューションを提供する必要がなくなる。本発明の実施形態は、システムコンポーネントの故障にも適合する。たとえば、PCIバスがブートアップ時に故障した場合、これは受け渡し構造100、300に正しく報告される。
【0031】
最大の柔軟性を提供するために、データ構造100、300は任意の都合のよいロケーションに配置することが可能である。本発明の実施形態は、第1のコンピュータプログラム(たとえば、システムファームウェアまたはSAL)にロケーションを確立し、そのロケーションに第2のコンピュータプログラム(たとえば、ACPIルーチン)を伝達する方法を提供する。次に、図5を参照すると、第1のポインタをファームウェアインタフェーステーブル(FIT)510に配置することができる。しかし、本発明の実施形態は、FIT510の使用に制限されない。より一般的に、実施形態は、システムファームウェアROMにおいて情報(たとえば、データまたはコンポーネント情報)を見つける方法を提供するために任意の構成されたロケーションを使用することができる。構成されたロケーションは、ポインタを格納するためのものであってもよい。たとえば、ポインタは、データまたはコンポーネント情報を指すことができる。FIT510は、システムファームウェア内の異なるコンポーネントについてのエントリを含むことができる。FIT510は、要求されたコンポーネントについての構成されたセクション511を含みうる。FIT510は、任意のコンポーネントに関連するフィールドを有することが可能なOEM(Original Equipment Manufacture:独自製品生産)セクション512も含みうる。
【0032】
受け渡し構造FITエントリ515は、OEMセクション512のどこに存在してもよく、受け渡し構造ポインタ525を指す。受け渡し構造ポインタ525は、ACPIが後にポインタを検索するためにアクセス可能などこの場所にあってもよい。たとえば、受け渡し構造ポインタ525は、主記憶装置、スクラッチRAM(ランダムアクセスメモリ)、不揮発性メモリ等にあることができる。この柔軟性により、AMLを何等書き換えることなく、受け渡し構造100、300のロケーションを移動することが可能である。これは、ACPIがFIT510のロケーションを知っており、したがって受け渡し構造FITエントリ515を見つけることができるためである。
【0033】
本発明の実施形態は、受け渡しデータ構造100、300のロケーションを中継する方法を提供し、これを図6のプロセス600に示す。プロセス600のうちの少なくともいくつかのステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ610において、ACPIがアクセス可能なメモリロケーションの識別子が決定される。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのFIT内のエントリであることができる。このようにして、ACPIは、ACPIが立ち上がるときに、ポインタを見つけることが可能になる。
【0034】
ステップ620において、第1のポインタ(たとえば、受け渡し構造FITエントリ515)がFIT510に格納される。FITはシステムROMの一部として実施することができるため、このステップは、別個のROM構築プロセスの一部として行うことが可能である。
【0035】
ステップ630において、システムファームウェアは、メモリの一部を受け渡し構造100、300に割り当てる。これはシステムブートアップ時に行うことができるが、本発明はそのように制限されない。メモリ割り当ては、受け渡し構造100、300とインタフェースする双方のプログラムがアクセス可能ないずれの場所であってもよい。たとえば、システムファームウェアは、主記憶装置、スクラッチRAM、不揮発性メモリ等を割り当てることができる。次いで、システムファームウェアは、受け渡し構造100、300を構築してこれを埋める。たとえば、プロセス400のステップ410および420を行うことができる。
【0036】
ステップ635において、システムファームウェアが、受け渡し構造ポインタ525を、FIT510内のポインタが指すロケーションに格納する。受け渡し構造ポインタ525は、受け渡し構造100、300を指す。
【0037】
ACPIが立ち上がると、ポインタにアクセスすることにより受け渡し構造100、300を見つけることができる(510、525)。これは、ステップ640において、ACPIコードがFITテーブル510を立ち上げて第1のポインタを見つけることによって実現することができる。たとえば、ACPIコードは、受け渡し構造FITエントリ515が、所与のコンポーネントタイプのフィールドのロケーションにおけるFIT510のOEMセクション512にあることを知ることができる。任意の適したコンポーネントタイプを選択することが可能である。コンポーネントタイプ51が選択される場合、ACPIコードは、受け渡し構造FITエントリ515がコンポーネントタイプ51のFIT510のフィールドにあることがわかる。
【0038】
ステップ650において、ACPIコードは、第1のポインタ(たとえば、受け渡し構造FITエントリ515)を使用して第2のポインタ(たとえば、受け渡し構造ポインタ525)にアクセスする。このようにして、ACPIは、予め確立された位置から開始することによって受け渡し構造100、300のロケーションを決定する。
【0039】
ステップ660において、ACPIコードは、第2のポインタを使用して受け渡し構造100、300にアクセスする。したがって、本発明の実施形態は、受け渡し構造100、300に柔軟なロケーションおよびサイズを提供することが可能である。仮に受け渡し構造100、300のロケーションが同じである場合には、受け渡し構造100、300は柔軟性を欠くことになる。
【0040】
本発明を特定の実施形態について説明したが、本発明がかかる実施形態により制限されるものと解釈すべきではなく、むしろ、併記の特許請求の範囲により解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1A】本発明の実施形態がデータインタフェースに表される例示的なコンピュータシステムの論理構成を示す図。
【図1B】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を示す図。
【図1C】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を、図1Bの続きから示す図。
【図2】本発明の実施形態による、コンポーネント情報を提供するためのインタフェースにおいてデータを操作する共通キーの図。
【図3】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造の図。
【図4】本発明の実施形態による、コンポーネント情報を提供するプロセスのステップを示すフローチャート。
【図5】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタを示す図。
【図6】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタをセットアップして使用するプロセスのステップを示すフローチャート。
【符号の説明】
100 データ構造
150 コンピュータシステム
200 複数の識別子
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関する。特に、本発明は、SAL(システム抽象化層)とACPI(Advanced Configuration and power interface)との間でシステム構成情報を受け渡すインタフェースに関する。
【0002】
【従来の技術】
ACPI(Advanced Configuration and power interface)は、ラップトップ、デスクトップ、サーバ等を含むコンピュータのオペレーティングシステムにハードウェア状態情報を利用できるようにする仕様である。ACPIはまた、ハードウェア資源を操作できるようにする。たとえば、ACPIは、電力管理を向上させるために、コンピュータシステムの周辺機器の電源をオンオフできるようにすることによって電力管理を支援する。ACPIはまた、外部装置によってコンピュータシステムをオンオフできるようにする。たとえば、マウスに触れる、またはキーを押下すると、ACPIを使用するコンピュータシステムを起動させることができる。
【0003】
従来より、ACPIは、様々な理由により扱いが難しい。第1に、ACPIは、コンピュータシステムプラットフォームにネイティブ(固有)のアセンブリ言語で書かれていない。その代わりに、ACPIは、独自の原始言語および機械語であるACPI原始言語(ASL)およびACPI機械語(AML)をそれぞれ有する。用途が高度に特化されているため、ASLのプログラマは比較的少ない。さらに、ASLは、使用が限定されていることから構造体が比較的少ない。その上、ACPIコードの設計は従来、モノリシック(monolithic:一体式)である。したがってこれにより、ACPIコードを他のプラットフォーム、さらには同じプラットフォームの異なる構成に移植することが困難になる。このため、異なるプラットフォームを扱うには、新しいASLコードを書く必要がある。ASLプログラマの数が限られているため、新しいコードを書くことがより問題になり、費用がかかるようになる。
【0004】
ACPIは、静的テーブルおよび解釈可能テーブルの双方からなる。ブートアップ時に、システムファームウェアは静的テーブルを構築し、オペレーティングシステムがこの静的テーブルを使用する。解釈可能テーブルはAMLからなる。AMLはコンパイルされてから、システムファームウェアに併合される。オペレーティングシステムは、AMLを解釈可能テーブルから読み取り、ACPIインタプリタを使用して、構成された(architected)インタフェースを実行する。このようにして、オペレーティングシステムはハードウェア資源を操作する。この従来の方法は、解釈可能テーブルはシステムファームウェアに併合されるため柔軟性、拡張性を欠き、各種システム構成に適合するように再プログラムするために相当の時間を要する。
【0005】
たとえば、従来、開発者は、プラットフォーム、すなわちその変数の特定の構成を指定するACPIコードを書く。不都合なことに、さらに小さなハードウェア変更が行われる場合、設計を変更する必要がある。このためには、新しいAMLコードを書き、新しいテーブルをシステムファームウェアに併合する必要がある。したがって、従来の設計は移植不可能、すなわち再使用することができない。
【0006】
さらに、従来、ACPIでは、プラットフォームの変数がある場合、または相互に排他的なACPI要件を有する2つ以上のACPIアウェアOSシステムをACPIがサポートする場合、異なるシステムファームウェアROM(読み取り専用メモリ)またはBIOS(基本入出力システム)を使用する必要があった。同じシステムが複数のオペレーティングシステムをサポートすべき場合、異なるシステムファームウェアROMを使用する必要もあった。
【0007】
したがって、ランタイム時にコンポーネント情報を提供する従来の方法およびシステムに伴う一つの問題は、異なるプラットフォームにコードを移植することが困難なことである。かかる方法およびシステムに伴う別の問題は、同じプラットフォーム内の異なる構成にコードを移植することが困難なことである。かかる従来の方法およびシステムに伴う別の問題は、これら方法およびシステムにあまり拡張性がないことである。さらに別の問題は、新しいASLコードを書いてテストするために追加の開発費用がかかることである。
【0008】
【発明が解決しようとする課題】
本発明の目的は、コンピュータシステム情報を受け渡すためのインタフェースを提供することである。
【0009】
【課題を解決するための手段】
インタフェースは、コンピュータ読取可能媒体に格納されたデータ構造を含む。データ構造は、コンピュータシステムのコンポーネントに関するコンポーネントデータのためのフィールドを有する。データ構造は、データ構造内のコンポーネントデータを捜し出すための識別子を使用してコンポーネントデータを埋める第1のプログラムの格納に利用することができる。第1のプログラムは、コンポーネントを発見することが可能である。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラムによりアクセス可能である。第2のコンピュータプログラムは、オペレーティングシステムがコンポーネントデータを取得することを支援するものである。
【0010】
本明細書に組み込まれ、本明細書の一部をなす添付図面は、本発明の実施形態を示し、説明と併せて本発明の原理の説明に役立つ。
【0011】
【発明の実施の形態】
本発明のコンピュータシステムデータを提供する方法および装置についての以下の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が記載される。しかし、本発明は、これら特定の詳細なしでも、また代替の要素または方法を使用することによっても実施することができる。他の場合では、周知の方法、手順、コンポーネント、および回路については、本発明の態様を不必要に曖昧にしないように詳細に説明しない。
【0012】
本発明の実施形態は、コンピュータシステムコンポーネントに関連するデータを提供するインタフェースである。インタフェースは、SAL(システム抽象化層)とACPI(Advanced Configuration and power interface)との間にあることができる。インタフェースは、コンピュータ読取可能媒体に格納されるデータ構造を含むことができる。データ構造は、たとえばコンピュータシステムブート時に、SALによって構築することが可能である。データ構造は、コンピュータシステムのコンポーネントに関連するコンポーネントデータのためのフィールドを有する階層スキーマを有することができる。データ構造内のコンポーネントデータを見つけるための識別子があり、情報が求められているコンポーネントのタイプを指定することによって特定プロセスを補助することができる。識別子スキーマは、2つのプログラムで共通であることができる。データ構造は、識別子を使用してコンポーネントデータを埋める第1のプログラム(たとえば、SAL)の格納に利用することができる。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラム(たとえば、ACPI)によりアクセス可能である。このようにして、第1のプログラムと第2のプログラムとの間にインタフェースが設けられる。第2のプログラム(たとえば、ACPI)は、データを、たとえばメソッド呼び出しを介してシステム情報を要求したオペレーティングシステムに送る前に再フォーマットすることができる。
【0013】
本発明の実施形態は、コンピュータシステムプラットフォームの間で移植可能である。さらに、本発明の実施形態は、同じプラットフォームの各種構成間で移植可能である。本発明の実施形態は拡張可能である。本発明の実施形態では、費用のかかるASLコードの書き換えおよびシステムファームウェアROMの変更を避けることにより開発費用が抑えられる。
【0014】
図1Aは、例示的なコンピュータシステム150の論理構成を示す。本発明の実施形態は、コンピュータシステム150のコンポーネント情報を受け渡すデータ構造インタフェースで、かかるシステム150の論理表現を構築することができる。図1B、図1Cは、例示的なコンピュータシステムの論理構成を反映した例示的なデータ構造インタフェースを示す。本発明の実施形態は、どのコンポーネントがブートアップ時に存在することになるかについての事前知識がまったくない状態で、データ構造インタフェースをシステムブートアップ時に構築する。したがって、本発明の実施形態は、ブートアップ時に存在する特定のコンピュータシステム150の構成に適合する。
【0015】
再び図1Aを参照すると、例示的なコンピュータシステム150は、システムボードとも呼ばれることがある一つまたは複数のセル160を含むことができる。セル160は、ベース管理コントローラ(BMC)160、いくつかの中央演算処理装置(CPU)170、およびいくつかのシリアルデバイス(たとえば、汎用非同期送受信回路すなわちUART)190を備えることができる。セル160は、いくつかのローカルバスアダプタ(LBA)180をそれぞれ有しうるいくつかのシステムバスアダプタ(SBA)175も有することができる。最後に、各LBA180は、いくつかのスロット185を有することができる。図1Aは単なる例示にすぎない。すべてのコンポーネントが常に存在するわけではなく、他のタイプのコンポーネントがコンピュータシステム150にあってもよい。本発明の実施形態は、ACPIコードを書き換える必要なく、存在する構成が何であれその構成に適宜適合する。
【0016】
図1B、図1Cは、システムコンポーネント情報をあるプログラムから別のプログラムに渡すことができるように、2つのコンピュータプログラム間のインタフェースとして機能可能な例示的なデータ構造100(たとえば、受け渡し(handoff:ハンドオフ)構造)を示す。たとえば、あるプログラムが受け渡し構造100を埋め、別のプログラムがデータを使用することができる。受け渡し構造100は、システム内のコンポーネントに関する情報を格納する階層スキーマを含むことができる。受け渡し構造100は、メタデータ、シグネチャ等の情報のヘッダ105を含むことができる。本発明の実施形態はACPIとSALとの間のインタフェースを提供することから、ヘッダはACPI/SAL受け渡し構造ヘッダと呼ばれる。
【0017】
スキーマは、いくつかのレベル110に区分化することができる。各レベル110は、一つまたは複数のタイプのコンポーネントに関連する情報を含むことができる。第1のレベル110aを参照すると、第1のレベル110aにおける唯一のコンポーネントタイプはセルである。本例では、情報は、セルエントリ125のアレイ120を含む。第2のレベル110bは、5つの異なるタイプのコンポーネントについての情報を含む。ベース管理コントローラ(BMC)情報121は、本例では一つのベース管理コントローラしかないため、エントリ125のアレイ120として編成されない。その他のコンポーネントについての情報は、本例では0またはそれよりも多くのエントリ125のアレイ120として編成される。しかし、任意のコンポーネントタイプの編成は、柔軟なソリューションを提供するために、アレイ120であっても、または単一エントリであってもよい。第2のレベル110bは、中央演算処理装置(CPU)アレイ120、ローカルバスアダプタ(LBA)固有データアレイ120、シリアルデバイスアレイ120、およびシステムバスアダプタ(SBA)アレイ120も含む。これらアレイ120は例示的なものである。たとえば、第2のレベル110bは、UART情報のアレイなど他のコンポーネント情報も含みうる。
【0018】
図1Cを参照すると、第3のレベル110cは、ローカルバスアダプタ(LBA)についてのエントリ125のアレイ120である単一コンポーネントタイプについての情報を含む。最後に、第4のレベル110dは、スロットについてのエントリ125のアレイ120を含む。
【0019】
受け渡し構造100の各種エントリ125は、他のエントリ125にリンクすることが可能である。たとえば、セルエントリ125の一つが、BMC情報121、中央演算処理装置(CPU)エントリ125a、LBA固有データエントリ125b、シリアルデバイスエントリ125c、およびシステムバスアダプタ(SBA)エントリ125dにリンクされる。セルエントリ125gは、システムの論理構成を反映する場合、一つまたは複数のコンポーネントタイプの複数のエントリ125にリンクすることができる。たとえば、コンピュータシステムが構成されるとき、セルは複数のSBAを有しうる。第3のレベル110cおよび第4のレベル110dの前に、SBAエントリ125dはLBAエントリ125eにリンクされ、LBA125eはスロットエントリ125fにリンクされる。SBAエントリ125dを複数のLBAエントリ125eにリンクし、LBAエントリ125eを複数のスロットエントリ125fにリンクすることができる。
【0020】
受け渡し構造100は、一実施形態では、チップセット固有情報を含むことができる。このように、固有のパラメータ値を各チップセットのAML実装形態(implementation)に渡すことができる(AMLは、受け渡し構造100内のデータの最終的な消費者であることができる)。たとえば、AML実装形態はチップセットX、Y、およびZをサポートすることができる。この場合、受け渡し構造100は、3つのサポートされるチップセットそれぞれのデータ構造を含むことができ、各データ構造は、チップセットのAMLが必要とするパラメータ値を含む。たとえば、これは、LBA固有データ情報120のアレイ120に格納することができる。したがって、本発明の実施形態では、複数のチップセットをサポートするAML実装形態が可能である。
【0021】
次に、図2を参照すると、本発明の実施形態は、コンポーネント情報が受け渡し構造100のどこにあるかを特定するために使用される共通キーすなわち一意の識別子200を提供する。共通キー200は、受け渡し構造100を埋めるプログラム(たとえば、SAL)および受け渡し構造100内の情報を使用するプログラム(たとえば、ACPI)によって知られている。共通キー200は、いくつかのコンポーネント識別子220を連結することによって形成することができる。各レベル110に一つのコンポーネント識別子がありうる。コンポーネント識別子220は、いくつかの考えられるコンポーネントの中のコンポーネントを指すことができる。たとえば、4レベルコンポーネントの論理階層を有するシステムでは、共通キーはコンポーネントごとに4つの別個の値を有しうる。したがって、図2とともに図1Bの例を参照すると、「7341」という共通キー200は、7番目のセルエントリ125gの3番目のSBAエントリ125dの4番目のLBAエントリ125eの最初のスロットエントリ125fを特定することができる。
【0022】
場合によっては、所与のレベル110に2つ以上のコンポーネントタイプがありうるため、さらなる情報がそのコンポーネントデータの特定に必要である。たとえば、情報が図1Bのスキーマ内の第2のレベル110bコンポーネントについて求められる場合、どのコンポーネントタイプ情報が求められいるかについて知るために、さらなる情報が必要となる。したがって、一実施形態では、ACPIは、どのタイプのコンポーネント情報が求められているかについての情報を受け取る。たとえば、ACPIは、シリアルデバイスエントリ情報が求められていると決定するか、またはその旨通知される。次いで、ACPIが受け渡し構造に共通キー200でインデックスを作成すると、これも要素として組み込み、シリアルデバイスアレイ120内の関連エントリ125を選択する。
【0023】
本明細書に述べたように、図1Bの編成は例示的なものである。図3は、システム情報を受け渡すための受け渡し構造300の別の実施形態を示す。本実施形態では、第1のレベル310aは、ドメインに関する情報を含む(たとえば、ドメイン情報のアレイ120)。たとえば、システムは複数のオペレーティングシステムをサポートすることができ、各オペレーティングシステムはそれぞれのドメインを有する。第2のレベル310bは、ハードウェアがどのようにレイアウトされたかに応じて、いくつかありうるセルについての情報を含むことができる。第3のレベル310cは、アダプタ情報を含む。第4のレベル310dはPCI−PCIブリッジ情報を含み、第5のレベル310eはスロット情報を含む。
【0024】
図3の例の共通キー200は、5つのコンポーネント値を有しうる。たとえば、「23111」の共通キーは、2番目のドメインの3番目のセルの最初のアダプタの最初のPCI−PCIブリッジの最初のスロットを指すことができる。
【0025】
図1および図3は階層スキーマを示すが、かかるスキーマは必要ではない。一実施形態では、共通キー200は、スキーマ内のエントリとシステム内の考えられるコンポーネントとの間に1対1のマッピングを提供する。これは、コンピュータシステム150内のあらゆるコンポーネントが、関連する固有のキーを有することを意味する。
【0026】
本発明の実施形態は、SALとACPIとの間のインタフェースを使用してコンポーネントデータを提供する方法を提供する。図4のプロセス400のステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ410において、インタフェースを提供する受け渡し構造100、300が構築される。受け渡し構造は、コンピュータシステムブート時にSAL(たとえば、システムファームウェア)によって構築することができる。
【0027】
ステップ420において、受け渡し構造100、300にSALが格納される。SALは、システムコンポーネントを発見するステップおよび取得した情報を使用して受け渡し構造100、300を埋めるステップを行うことができる。SALは、共通キー200を使用して、コンポーネントデータを受け渡し構造100、300のどこに配置するかを決めることができる。
【0028】
ステップ430において、ACPIが受け渡し構造100、300にインデックスを作成して、コンポーネントデータを取得する。ACPIは、共通キーならびにコンポーネントデータタイプを使用することができる。たとえば、ACPIは、データが求められているコンポーネントのタイプを特定するか、またはコンポーネントデータについてのより一般的な要求であることができる、OSからの呼び出しを受け取る。これに応答して、ACPIは適当な共通キー200を構築し、共通キー200がコンポーネントデータを検索してOSからの要求を満たす。これは、受け渡し構造100、300に2回以上インデックスを作成することを含むことができる。
【0029】
ステップ440において、受け渡し構造100、300からのコンポーネントデータの一部が、要求を出したプログラム、たとえばオペレーティングシステムに提供される。このステップは、ACPIが、要求に適するようにコンポーネントデータを再フォーマットすることを含みうる。たとえば、要求は、指定されたフォーマットに従ってデータが戻されると予想される「_CRS呼び出し(_CRS
call)」であることができる。
【0030】
本発明の実施形態では、受け渡し構造100、300をほぼどこにでも配置することが可能である。さらに、配置は、システムブート時に行うことができる。したがって、受け渡し構造100、300のサイズおよびロケーションの双方をブートアップ時に選択することができる。これにより、ACPIコードがプラットフォームから独立したものにすることが可能である。その上、受け渡し構造100、300は、ランタイム時にモーフィングして、所与のプラットフォームおよびシステム構成をサポートすることができる。したがって、受け渡し構造100、300の厳密な構成は常に同じになるわけではない。実施形態はさらに、コンポーネント構成が同じコンピュータシステムに異なる受け渡し構造100、300を構築するように指示する場合には、そのように構築することができる。たとえば、所与のシステムは、1つ、2つ、または3つのPCIバスで製造することができる。ブートアップ時に、受け渡し構造100、300のサイズおよび構成が実際の構成に適合される。これにより、従来のソリューションでは必要であった複数のACPIコードソリューションを提供する必要がなくなる。本発明の実施形態は、システムコンポーネントの故障にも適合する。たとえば、PCIバスがブートアップ時に故障した場合、これは受け渡し構造100、300に正しく報告される。
【0031】
最大の柔軟性を提供するために、データ構造100、300は任意の都合のよいロケーションに配置することが可能である。本発明の実施形態は、第1のコンピュータプログラム(たとえば、システムファームウェアまたはSAL)にロケーションを確立し、そのロケーションに第2のコンピュータプログラム(たとえば、ACPIルーチン)を伝達する方法を提供する。次に、図5を参照すると、第1のポインタをファームウェアインタフェーステーブル(FIT)510に配置することができる。しかし、本発明の実施形態は、FIT510の使用に制限されない。より一般的に、実施形態は、システムファームウェアROMにおいて情報(たとえば、データまたはコンポーネント情報)を見つける方法を提供するために任意の構成されたロケーションを使用することができる。構成されたロケーションは、ポインタを格納するためのものであってもよい。たとえば、ポインタは、データまたはコンポーネント情報を指すことができる。FIT510は、システムファームウェア内の異なるコンポーネントについてのエントリを含むことができる。FIT510は、要求されたコンポーネントについての構成されたセクション511を含みうる。FIT510は、任意のコンポーネントに関連するフィールドを有することが可能なOEM(Original Equipment Manufacture:独自製品生産)セクション512も含みうる。
【0032】
受け渡し構造FITエントリ515は、OEMセクション512のどこに存在してもよく、受け渡し構造ポインタ525を指す。受け渡し構造ポインタ525は、ACPIが後にポインタを検索するためにアクセス可能などこの場所にあってもよい。たとえば、受け渡し構造ポインタ525は、主記憶装置、スクラッチRAM(ランダムアクセスメモリ)、不揮発性メモリ等にあることができる。この柔軟性により、AMLを何等書き換えることなく、受け渡し構造100、300のロケーションを移動することが可能である。これは、ACPIがFIT510のロケーションを知っており、したがって受け渡し構造FITエントリ515を見つけることができるためである。
【0033】
本発明の実施形態は、受け渡しデータ構造100、300のロケーションを中継する方法を提供し、これを図6のプロセス600に示す。プロセス600のうちの少なくともいくつかのステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ610において、ACPIがアクセス可能なメモリロケーションの識別子が決定される。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのFIT内のエントリであることができる。このようにして、ACPIは、ACPIが立ち上がるときに、ポインタを見つけることが可能になる。
【0034】
ステップ620において、第1のポインタ(たとえば、受け渡し構造FITエントリ515)がFIT510に格納される。FITはシステムROMの一部として実施することができるため、このステップは、別個のROM構築プロセスの一部として行うことが可能である。
【0035】
ステップ630において、システムファームウェアは、メモリの一部を受け渡し構造100、300に割り当てる。これはシステムブートアップ時に行うことができるが、本発明はそのように制限されない。メモリ割り当ては、受け渡し構造100、300とインタフェースする双方のプログラムがアクセス可能ないずれの場所であってもよい。たとえば、システムファームウェアは、主記憶装置、スクラッチRAM、不揮発性メモリ等を割り当てることができる。次いで、システムファームウェアは、受け渡し構造100、300を構築してこれを埋める。たとえば、プロセス400のステップ410および420を行うことができる。
【0036】
ステップ635において、システムファームウェアが、受け渡し構造ポインタ525を、FIT510内のポインタが指すロケーションに格納する。受け渡し構造ポインタ525は、受け渡し構造100、300を指す。
【0037】
ACPIが立ち上がると、ポインタにアクセスすることにより受け渡し構造100、300を見つけることができる(510、525)。これは、ステップ640において、ACPIコードがFITテーブル510を立ち上げて第1のポインタを見つけることによって実現することができる。たとえば、ACPIコードは、受け渡し構造FITエントリ515が、所与のコンポーネントタイプのフィールドのロケーションにおけるFIT510のOEMセクション512にあることを知ることができる。任意の適したコンポーネントタイプを選択することが可能である。コンポーネントタイプ51が選択される場合、ACPIコードは、受け渡し構造FITエントリ515がコンポーネントタイプ51のFIT510のフィールドにあることがわかる。
【0038】
ステップ650において、ACPIコードは、第1のポインタ(たとえば、受け渡し構造FITエントリ515)を使用して第2のポインタ(たとえば、受け渡し構造ポインタ525)にアクセスする。このようにして、ACPIは、予め確立された位置から開始することによって受け渡し構造100、300のロケーションを決定する。
【0039】
ステップ660において、ACPIコードは、第2のポインタを使用して受け渡し構造100、300にアクセスする。したがって、本発明の実施形態は、受け渡し構造100、300に柔軟なロケーションおよびサイズを提供することが可能である。仮に受け渡し構造100、300のロケーションが同じである場合には、受け渡し構造100、300は柔軟性を欠くことになる。
【0040】
本発明を特定の実施形態について説明したが、本発明がかかる実施形態により制限されるものと解釈すべきではなく、むしろ、併記の特許請求の範囲により解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1A】本発明の実施形態がデータインタフェースに表される例示的なコンピュータシステムの論理構成を示す図。
【図1B】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を示す図。
【図1C】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を、図1Bの続きから示す図。
【図2】本発明の実施形態による、コンポーネント情報を提供するためのインタフェースにおいてデータを操作する共通キーの図。
【図3】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造の図。
【図4】本発明の実施形態による、コンポーネント情報を提供するプロセスのステップを示すフローチャート。
【図5】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタを示す図。
【図6】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタをセットアップして使用するプロセスのステップを示すフローチャート。
【符号の説明】
100 データ構造
150 コンピュータシステム
200 複数の識別子
Claims (10)
- システム情報のインタフェースを提供するコンピュータ読取可能媒体であって、
前記コンピュータ読取可能媒体に格納されるデータ構造であって、コンピュータシステムの複数のコンポーネントに関連するコンポーネントデータについて複数のフィールドを含むデータ構造を有し、
前記データ構造は、該データ構造内の前記コンポーネントデータを捜し出すための複数の識別子を用いてコンポーネントデータを埋めている第1のコンピュータプログラムの格納に利用することができ、該第1のコンピュータプログラムは前記コンポーネントを発見することが可能であり、
前記コンポーネントデータは、前記複数の識別子を使用して前記データ構造にインデックスを作成する第2のコンピュータプログラムによりアクセス可能であり、該第2のコンピュータプログラムは、オペレーティングシステムの前記コンポーネントデータの取得を支援するためのものである、
コンピュータ読取可能媒体。 - 前記データ構造は、前記コンピュータシステムのブート時に前記第1のコンピュータプログラムの格納に利用することができる請求項1記載のコンピュータ読取可能媒体。
- 前記第1のコンピュータプログラムはシステムファームウェアである請求項1記載のコンピュータ読取可能媒体。
- 前記第2のコンピュータプログラムは、前記複数の識別子およびコンポーネントタイプを使用して前記データ構造にインデックスを作成することにより、オペレーティングシステムによる前記コンポーネントデータの取得を支援するためのものである請求項1記載のコンピュータ読取可能媒体。
- 前記コンポーネントデータは、前記オペレーティングシステムからの該コンポーネントデータ要求に応答して、該オペレーティングシステムに送ることができる請求項1記載のコンピュータ読取可能媒体。
- 前記データ構造は階層スキーマを含み、該スキーマは複数のレベルを含み、該レベルのそれぞれは一つまたは複数のコンポーネントタイプを有し、該コンポーネントタイプは該タイプの一つまたは複数のコンポーネントを有する請求項1記載のコンピュータ読取可能媒体。
- 前記複数のコンポーネントのうちの所与のコンポーネントのコンポーネントデータは、前記複数の識別子のうちの識別子およびコンポーネントタイプによって識別される請求項1記載のコンピュータ読取可能媒体。
- コンポーネント情報を提供する方法であって、
a)コンピュータシステムのコンポーネントデータを格納するためのデータ構造を構築するステップと、
b)前記データ構造のどこに前記コンポーネントデータが格納されているかを特定する複数の識別子を使用して、前記データ構造にシステムコンポーネントデータを格納するステップと、
c)前記コンポーネントデータの一部に対する要求に応答して、構成および電力管理プログラムが、前記複数の識別子のうちの識別子を使用して前記データ構造にインデックスを作成するステップと、
d)前記コンポーネントデータの一部を提供するステップと、
を含む方法。 - 前記c)は、ACPIコンピュータコードで前記データ構造のインデックスを作成することを含む請求項8記載の方法。
- 前記データ構造は、複数のコンポーネントタイプの情報を含み、
前記c)は、前記データ構造に前記複数の識別子のうちの前記識別子および前記複数のコンポーネントタイプのうちのコンポーネントタイプでインデックスを作成することを含む、
請求項8記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/173,221 US7225427B2 (en) | 2002-06-14 | 2002-06-14 | Method and device for providing computer system component data |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004054921A true JP2004054921A (ja) | 2004-02-19 |
Family
ID=22631034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003157533A Withdrawn JP2004054921A (ja) | 2002-06-14 | 2003-06-03 | コンピュータシステムのコンポーネントデータを提供する方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7225427B2 (ja) |
JP (1) | JP2004054921A (ja) |
GB (1) | GB2393534A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245190B2 (en) * | 2004-06-14 | 2012-08-14 | Alcatel Lucent | First and second manager components that communicate to initialize and/or shut down software components in an ordered sequence |
US8458308B1 (en) * | 2006-08-23 | 2013-06-04 | Infoblox Inc. | Operating system fingerprinting |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5909592A (en) | 1994-09-07 | 1999-06-01 | Intel Corporation | Method in a basic input-output system (BIOS) of detecting and configuring integrated device electronics (IDE) devices |
US6263378B1 (en) | 1996-06-03 | 2001-07-17 | Sun Microsystems, Inc. | System and method for rapid development of bootstrap device detection modules |
US5903894A (en) | 1997-03-03 | 1999-05-11 | Microsoft Corporation | System and method for using a hierarchical data structure to control and identify devices and represent connections between the devices |
US5999730A (en) * | 1997-10-27 | 1999-12-07 | Phoenix Technologies Limited | Generation of firmware code using a graphic representation |
US6094700A (en) * | 1998-03-13 | 2000-07-25 | Compaq Computer Corporation | Serial bus system for sending multiple frames of unique data |
US6167511A (en) | 1998-06-15 | 2000-12-26 | Phoenix Technologies Ltd. | Method to reflect BIOS set up changes into ACPI machine language |
US6061745A (en) | 1998-08-13 | 2000-05-09 | Adaptec, Inc. | BBS one BIOS image multicard support |
US6167512A (en) | 1998-09-30 | 2000-12-26 | Phoenix Technologies, Ltd. | Dynamic creation of ACPI APIC tables using MP specification |
US6081890A (en) | 1998-11-30 | 2000-06-27 | Intel Corporation | Method of communication between firmware written for different instruction set architectures |
US6564375B1 (en) * | 1999-07-23 | 2003-05-13 | Cisco Technology, Inc. | Reusable components for customization of wizard-based applications |
US20030009654A1 (en) | 2001-06-29 | 2003-01-09 | Nalawadi Rajeev K. | Computer system having a single processor equipped to serve as multiple logical processors for pre-boot software to execute pre-boot tasks in parallel |
US6865614B2 (en) * | 2001-07-02 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Method for transferring a packed data structure to an unpacked data structure by copying the packed data using pointer |
US6948094B2 (en) * | 2001-09-28 | 2005-09-20 | Intel Corporation | Method of correcting a machine check error |
US7493438B2 (en) * | 2001-10-03 | 2009-02-17 | Intel Corporation | Apparatus and method for enumeration of processors during hot-plug of a compute node |
US20030115443A1 (en) * | 2001-12-18 | 2003-06-19 | Cepulis Darren J. | Multi-O/S system and pre-O/S boot technique for partitioning resources and loading multiple operating systems thereon |
US7673090B2 (en) * | 2001-12-19 | 2010-03-02 | Intel Corporation | Hot plug interface control method and apparatus |
EP1357475A1 (en) | 2002-04-23 | 2003-10-29 | Hewlett-Packard Company | Data processing system and method |
-
2002
- 2002-06-14 US US10/173,221 patent/US7225427B2/en not_active Expired - Fee Related
-
2003
- 2003-06-03 JP JP2003157533A patent/JP2004054921A/ja not_active Withdrawn
- 2003-06-04 GB GB0312849A patent/GB2393534A/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
GB0312849D0 (en) | 2003-07-09 |
GB2393534A (en) | 2004-03-31 |
US20030233368A1 (en) | 2003-12-18 |
US7225427B2 (en) | 2007-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7363480B1 (en) | Method, system, and computer-readable medium for updating the firmware of a computing device via a communications network | |
US5854905A (en) | Extensible bios for boot support of devices on multiple hierarchical buses | |
US7797696B1 (en) | Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure | |
US6434695B1 (en) | Computer operating system using compressed ROM image in RAM | |
US8555043B1 (en) | Dynamically updating a computer system firmware image | |
US7454547B1 (en) | Data exchange between a runtime environment and a computer firmware in a multi-processor computing system | |
US9395968B1 (en) | Uniquely identifying and validating computer system firmware | |
US8260818B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
US8176142B2 (en) | Shared JAVA jar files | |
US20100235831A1 (en) | Method for dynamic configuration of virtual machine | |
US7743072B2 (en) | Database for storing device handle data in an extensible firmware interface environment | |
CN105190550A (zh) | 用于启动具有多个中央处理器的计算机系统的方法 | |
US20040267708A1 (en) | Device information collection and error detection in a pre-boot environment of a computer system | |
US8539214B1 (en) | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware | |
US7921247B1 (en) | Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment | |
US10838861B1 (en) | Distribution of memory address resources to bus devices in a multi-processor computing system | |
US7017034B2 (en) | System and method for using a firmware interface table to dynamically load multiple ACPI SSDT tables | |
JP2004070945A (ja) | ファームウェアインタフェーステーブルを用いてacpiのssdtを動的にロードするシステムおよび方法 | |
CN101779196B (zh) | Pci设备的i/o空间请求抑制方法 | |
US7757012B2 (en) | Configurable mapping of devices to bus functions | |
KR20180023784A (ko) | 사전 부팅 환경에서 raid 볼륨에 접근하는 데이터 저장 시스템 및 방법 | |
US7873807B1 (en) | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware | |
JP2004021987A (ja) | データインタフェースのロケーションを提供する方法およびシステム | |
US8078637B1 (en) | Memory efficient peim-to-peim interface database | |
JP2004054921A (ja) | コンピュータシステムのコンポーネントデータを提供する方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060905 |