JP2004021987A - データインタフェースのロケーションを提供する方法およびシステム - Google Patents
データインタフェースのロケーションを提供する方法およびシステム Download PDFInfo
- Publication number
- JP2004021987A JP2004021987A JP2003157534A JP2003157534A JP2004021987A JP 2004021987 A JP2004021987 A JP 2004021987A JP 2003157534 A JP2003157534 A JP 2003157534A JP 2003157534 A JP2003157534 A JP 2003157534A JP 2004021987 A JP2004021987 A JP 2004021987A
- Authority
- JP
- Japan
- Prior art keywords
- pointer
- acpi
- interface
- information
- location
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/4226—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with asynchronous protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
【課題】データインタフェースのロケーションを受け渡す方法を提供する。
【解決手段】本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を見つけるための第1のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第1のポインタが指すメモリロケーションに第2のポインタが格納される。第2のポインタはデータ構造を指す。
【選択図】図5
【解決手段】本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を見つけるための第1のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第1のポインタが指すメモリロケーションに第2のポインタが格納される。第2のポインタはデータ構造を指す。
【選択図】図5
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関する。特に、本発明は、データ構造のロケーションを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】
【課題を解決するための手段】
本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を見つけるための第1のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第1のポインタが指すメモリロケーションに第2のポインタが格納される。第2のポインタはデータ構造を指す。
【0010】
本明細書に組み込まれ、本明細書の一部をなす添付図面は、本発明の実施形態を示し、説明と併せて本発明の原理の説明に役立つ。
【0011】
【発明の実施の形態】
本発明のコンピュータシステムデータを提供する方法および装置についての以下の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が記載される。しかし、本発明は、これら特定の詳細なしでも、また代替の要素または方法を使用することによっても実施することができる。他の場合では、周知の方法、手順、コンポーネント、および回路については、本発明の態様を不必要に曖昧にしないように詳細に説明しない。
【0012】
本発明の実施形態は、データインタフェースのロケーションを、ACPI(advanced configuration and power interface)に受け渡す方法である。本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を捜し出す、構成されたロケーションになりうる第1のメモリロケーションの識別子を決定することを含む。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのファームウェアインタフェーステーブル(FIT)内のエントリであることができる。第1のポインタは第1のメモリロケーションに格納される。たとえば、FITを含むROMが構築されると、ポインタをFITの一部にすることができる。システムファームウェアは、システムブートアップ時に、第1のポインタが指す第2のメモリロケーションに第2のポインタを格納することができる。第2のポインタは、システムファームウェアとACPIとの間でシステムコンポーネント情報を受け渡すためのデータ構造を指す。ACPIは、コンポーネントタイプ識別子を使用して、第1のポインタを求めてFITテーブルを探索し、第1のポインタを使用して第2のポインタにアクセスしてデータインタフェースを見つける。したがって、データインタフェースのサイズおよびロケーションには柔軟性がある。
【0013】
本発明の実施形態は、コンピュータシステムプラットフォームの間で移植可能である。さらに、本発明の実施形態は、同じプラットフォームの各種構成間で移植可能である。本発明の実施形態は拡張可能である。本発明の実施形態では、費用のかかるASLコードの書き換えおよびシステムファームウェアROMの変更を避けることにより開発費用が抑えられる。
【0014】
本発明の実施形態は、コンピュータシステムコンポーネントに関連するデータを提供するインタフェースである。インタフェースは、システム抽象化層(SAL)とACPI(advanced configuration and power interface)との間にあることができる。インタフェースは、コンピュータ読取可能媒体に格納されたデータ構造を備えることができる。データ構造は、たとえば、コンピュータシステムブート時にSALによって構築されることができる。データ構造は、コンピュータシステムのコンポーネントに関連するコンポーネントデータについてのフィールドを有する階層スキーマを有することができる。データ構造内でコンポーネントデータを見つけるための識別子があり、情報が求められるコンポーネントタイプを指定することにより、特定プロセスを補助することが可能である。識別子のスキーマは、2つのプログラム間で共通であることができる。データ構造は、識別子を使用してコンポーネントデータを埋める第1のプログラム(たとえば、SAL)の格納に利用することができる。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラム(たとえば、ACPI)によりアクセス可能である。このようにして、第1のプログラムと第2のプログラムとの間にインタフェースが設けられる。第2のプログラム(たとえば、ACPI)は、データを、たとえばメソッド呼び出しを介してシステム情報を要求したオペレーティングシステムに送る前に再フォーマットすることができる。
【0015】
図1Aは、例示的なコンピュータシステム150の論理構成を示す。本発明の実施形態は、コンピュータシステム150のコンポーネント情報を受け渡すデータ構造インタフェースで、かかるシステム150の論理表現を構築することができる。図1B、図1Cは、例示的なコンピュータシステムの論理構成を反映した例示的なデータ構造インタフェースを示す。本発明の実施形態は、どのコンポーネントがブートアップ時に存在することになるかについての事前知識がまったくない状態で、データ構造インタフェースをシステムブートアップ時に構築する。したがって、本発明の実施形態は、ブートアップ時に存在する特定のコンピュータシステム150の構成に適合する。
【0016】
再び図1Aを参照すると、例示的なコンピュータシステム150は、システムボードとも呼ばれることがある一つまたは複数のセル160を含むことができる。セル160は、ベース管理コントローラ(BMC)160、いくつかの中央演算処理装置(CPU)170、およびいくつかのシリアルデバイス(たとえば、汎用非同期送受信回路すなわちUART)190を備えることができる。セル160は、いくつかのローカルバスアダプタ(LBA)180をそれぞれ有しうるいくつかのシステムバスアダプタ(SBA)175も有することができる。最後に、各LBA180は、いくつかのスロット185を有することができる。図1Aは単なる例示にすぎない。すべてのコンポーネントが常に存在するわけではなく、他のタイプのコンポーネントがコンピュータシステム150にあってもよい。本発明の実施形態は、ACPIコードを書き換える必要なく、存在する構成が何であれその構成に適宜適合する。
【0017】
図1B、図1Cは、システムコンポーネント情報をあるプログラムから別のプログラムに渡すことができるように、2つのコンピュータプログラム間のインタフェースとして機能可能な例示的なデータ構造100(たとえば、受け渡し(handoff:ハンドオフ)構造)を示す。たとえば、あるプログラムが受け渡し構造100を埋め、別のプログラムがデータを使用することができる。受け渡し構造100は、システム内のコンポーネントに関する情報を格納する階層スキーマを含むことができる。受け渡し構造100は、メタデータ、シグネチャ等の情報のヘッダ105を含むことができる。本発明の実施形態はACPIとSALとの間のインタフェースを提供することから、ヘッダはACPI/SAL受け渡し構造ヘッダと呼ばれる。
【0018】
スキーマは、いくつかのレベル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情報のアレイなど他のコンポーネント情報も含みうる。
【0019】
図1Cを参照すると、第3のレベル110cは、ローカルバスアダプタ(LBA)についてのエントリ125のアレイ120である単一コンポーネントタイプについての情報を含む。最後に、第4のレベル110dは、スロットについてのエントリ125のアレイ120を含む。
【0020】
受け渡し構造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にリンクすることができる。
【0021】
受け渡し構造100は、一実施形態では、チップセット固有情報を含むことができる。このように、固有のパラメータ値を各チップセットのAML実装形態(implementation)に渡すことができる(AMLは、受け渡し構造100内のデータの最終的な消費者であることができる)。たとえば、AML実装形態はチップセットX、Y、およびZをサポートすることができる。この場合、受け渡し構造100は、3つのサポートされるチップセットそれぞれのデータ構造を含むことができ、各データ構造は、チップセットのAMLが必要とするパラメータ値を含む。たとえば、これは、LBA固有データ情報120のアレイ120に格納することができる。したがって、本発明の実施形態では、複数のチップセットをサポートするAML実装形態が可能である。
【0022】
次に、図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を特定することができる。
【0023】
場合によっては、所与のレベル110に2つ以上のコンポーネントタイプがありうるため、さらなる情報がそのコンポーネントデータの特定に必要である。たとえば、情報が図1Bのスキーマ内の第2のレベル110bコンポーネントについて求められる場合、どのコンポーネントタイプ情報が求められいるかについて知るために、さらなる情報が必要となる。したがって、一実施形態では、ACPIは、どのタイプのコンポーネント情報が求められているかについての情報を受け取る。たとえば、ACPIは、シリアルデバイスエントリ情報が求められていると決定するか、またはその旨通知される。次いで、ACPIが受け渡し構造に共通キー200でインデックスを作成すると、これも要素として組み込み、シリアルデバイスアレイ120内の関連エントリ125を選択する。
【0024】
本明細書に述べたように、図1Bの編成は例示的なものである。図3は、システム情報を受け渡すための受け渡し構造300の別の実施形態を示す。本実施形態では、第1のレベル310aは、ドメインに関する情報を含む(たとえば、ドメイン情報のアレイ120)。たとえば、システムは複数のオペレーティングシステムをサポートすることができ、各オペレーティングシステムはそれぞれのドメインを有する。第2のレベル310bは、ハードウェアがどのようにレイアウトされたかに応じて、いくつかありうるセルについての情報を含むことができる。第3のレベル310cは、アダプタ情報を含む。第4のレベル310dはPCI−PCIブリッジ情報を含み、第5のレベル310eはスロット情報を含む。
【0025】
図3の例の共通キー200は、5つのコンポーネント値を有しうる。たとえば、「23111」の共通キーは、2番目のドメインの3番目のセルの最初のアダプタの最初のPCI−PCIブリッジの最初のスロットを指すことができる。
【0026】
図1および図3は階層スキーマを示すが、かかるスキーマは必要ではない。一実施形態では、共通キー200は、スキーマ内のエントリとシステム内の考えられるコンポーネントとの間に1対1のマッピングを提供する。これは、コンピュータシステム150内のあらゆるコンポーネントが、関連する固有のキーを有することを意味する。
【0027】
本発明の実施形態は、SALとACPIとの間のインタフェースを使用してコンポーネントデータを提供する方法を提供する。図4のプロセス400のステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ410において、インタフェースを提供する受け渡し構造100、300が構築される。受け渡し構造は、コンピュータシステムブート時にSAL(たとえば、システムファームウェア)によって構築することができる。
【0028】
ステップ420において、受け渡し構造100、300にSALが格納される。SALは、システムコンポーネントを発見するステップおよび取得した情報を使用して受け渡し構造100、300を埋めるステップを行うことができる。SALは、共通キー200を使用して、コンポーネントデータを受け渡し構造100、300のどこに配置するかを決めることができる。
【0029】
ステップ430において、ACPIが受け渡し構造100、300にインデックスを作成して、コンポーネントデータを取得する。ACPIは、共通キーならびにコンポーネントデータタイプを使用することができる。たとえば、ACPIは、データが求められているコンポーネントのタイプを特定するか、またはコンポーネントデータについてのより一般的な要求であることができる、OSからの呼び出しを受け取る。これに応答して、ACPIは適当な共通キー200を構築し、共通キー200がコンポーネントデータを検索してOSからの要求を満たす。これは、受け渡し構造100、300に2回以上インデックスを作成することを含むことができる。
【0030】
ステップ440において、受け渡し構造100、300からのコンポーネントデータの一部が、要求を出したプログラム、たとえばオペレーティングシステムに提供される。このステップは、ACPIが、要求に適するようにコンポーネントを再フォーマットすることを含みうる。たとえば、要求は、指定されたフォーマットに従ってデータが戻されると予想される「_CRS呼び出し(_CRS call)」であることができる。
【0031】
本発明の実施形態では、受け渡し構造100、300をほぼどこにでも配置することが可能である。さらに、配置は、システムブート時に行うことができる。したがって、受け渡し構造100、300のサイズおよびロケーションの双方をブートアップ時に選択することができる。これにより、ACPIコードがプラットフォームから独立したものにすることが可能である。その上、受け渡し構造100、300は、ランタイム時にモーフィングして、所与のプラットフォームおよびシステム構成をサポートすることができる。したがって、受け渡し構造100、300の厳密な構成は常に同じになるわけではない。実施形態はさらに、コンポーネント構成が同じコンピュータシステムに異なる受け渡し構造100、300を構築するように指示する場合には、そのように構築することができる。たとえば、所与のシステムは、1つ、2つ、または3つのPCIバスで製造することができる。ブートアップ時に、受け渡し構造100、300のサイズおよび構成が実際の構成に適合される。これにより、従来のソリューションでは必要であった複数のACPIコードソリューションを提供する必要がなくなる。本発明の実施形態は、システムコンポーネントの故障にも適合する。たとえば、PCIバスがブートアップ時に故障した場合、これは受け渡し構造100、300に正しく報告される。
【0032】
最大の柔軟性を提供するために、データ構造100、300は任意の都合のよいロケーションに配置することが可能である。本発明の実施形態は、第1のコンピュータプログラム(たとえば、システムファームウェアまたはSAL)にロケーションを確立し、そのロケーションに第2のコンピュータプログラム(たとえば、ACPIルーチン)を伝達する方法を提供する。次に、図5を参照すると、第1のポインタをファームウェアインタフェーステーブル(FIT)510に配置することができる。しかし、本発明の実施形態は、FIT510の使用に制限されない。より一般的に、実施形態は、システムファームウェアROMにおいて情報(たとえば、データまたはコンポーネント情報)を見つける方法を提供するために任意の、構成されたロケーションを使用することができる。構成されたロケーションは、ポインタを格納するためのものであってもよい。たとえば、ポインタは、データまたはコンポーネント情報を指すことができる。FIT510は、システムファームウェア内の異なるコンポーネントについてのエントリを含むことができる。FIT510は、要求されたコンポーネントについての構成されたセクション510を含みうる。FIT510は、任意のコンポーネントに関連するフィールドを有することが可能なOEM(Original Equipment Manufacture:独自製品生産)セクション512も含みうる。
【0033】
受け渡し構造FITエントリ515は、OEMセクション512のどこに存在してもよく、受け渡し構造ポインタ525を指す。受け渡し構造ポインタ525は、ACPIが後にポインタを検索するためにアクセス可能などこの場所にあってもよい。たとえば、受け渡し構造ポインタ525は、主記憶装置、スクラッチRAM(ランダムアクセスメモリ)、不揮発性メモリ等にあることができる。この柔軟性により、AMLを何等書き換えることなく、受け渡し構造100、300のロケーションを移動することが可能である。これは、ACPIがFIT510のロケーションを知っており、したがって受け渡し構造FITエントリ515を見つけることができるためである。
【0034】
本発明の実施形態は、受け渡しデータ構造100、300のロケーションを中継する方法を提供し、これを図6のプロセス600に示す。プロセス600のうちの少なくともいくつかのステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ610において、ACPIがアクセス可能なメモリロケーションの識別子が決定される。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのFIT内のエントリであることができる。このようにして、ACPIは、ACPIが立ち上がるときに、ポインタを見つけることが可能になる。
【0035】
ステップ620において、第1のポインタ(たとえば、受け渡し構造FITエントリ515)がFIT510に格納される。FITはシステムROMの一部として実施することができるため、このステップは、別個のROM構築プロセスの一部として行うことが可能である。
【0036】
ステップ630において、システムファームウェアは、メモリの一部を受け渡し構造100、300に割り当てる。これはシステムブートアップ時に行うことができるが、本発明はそのように制限されない。メモリ割り当ては、受け渡し構造100、300とインタフェースする双方のプログラムがアクセス可能ないずれの場所であってもよい。たとえば、システムファームウェアは、主記憶装置、スクラッチRAM、不揮発性メモリ等を割り当てることができる。次いで、システムファームウェアは、受け渡し構造100、300を構築してこれを埋める。たとえば、プロセス400のステップ410および420を行うことができる。
【0037】
ステップ635において、システムファームウェアが、受け渡し構造ポインタ525を、FIT510内のポインタが指すロケーションに格納する。受け渡し構造ポインタ525は、受け渡し構造100、300を指す。
【0038】
ACPIが立ち上がると、ポインタにアクセスすることにより受け渡し構造100、300を見つけることができる(510、525)。これは、ステップ640において、ACPIコードがFITテーブル510を辿り、第1のポインタを見つけることによって実現することができる。たとえば、ACPIコードは、受け渡し構造FITエントリ515が、所与のコンポーネントタイプのフィールドのロケーションにおけるFIT510のOEMセクション512にあることを知ることができる。任意の適したコンポーネントタイプを選択することが可能である。コンポーネントタイプ51が選択される場合、ACPIコードは、受け渡し構造FITエントリ515がコンポーネントタイプ51のFIT510のフィールドにあることがわかる。
【0039】
ステップ650において、ACPIコードは、第1のポインタ(たとえば、受け渡し構造FITエントリ515)を使用して第2のポインタ(たとえば、受け渡し構造ポインタ525)にアクセスする。このようにして、ACPIは、予め確立された位置から開始することによって受け渡し構造100、300のロケーションを決定する。
【0040】
ステップ660において、ACPIコードは、第2のポインタを使用して受け渡し構造100、300にアクセスする。したがって、本発明の実施形態は、受け渡し構造100、300に柔軟なロケーションおよびサイズを提供することが可能である。仮に受け渡し構造100、300のロケーションが同じである場合には、受け渡し構造100、300は柔軟性を欠くことになる。
【0041】
本発明を特定の実施形態について説明したが、本発明がかかる実施形態により制限されるものと解釈すべきではなく、むしろ、併記の特許請求の範囲により解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1A】本発明の実施形態がデータインタフェースに表される例示的なコンピュータシステムの論理構成を示す図。
【図1B】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を示す図。
【図1C】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を、図1Bの続きから示す図。
【図2】本発明の実施形態による、コンポーネント情報を提供するためのインタフェースにおいてデータを操作する共通キーの図。
【図3】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造の図。
【図4】本発明の実施形態による、コンポーネント情報を提供するプロセスのステップを示すフローチャート。
【図5】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタを示す図。
【図6】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタをセットアップして使用するプロセスのステップを示すフローチャート。
【符号の説明】
100、300 受け渡し構造
510 FIT
515 受け渡し構造FITエントリ
525 受け渡し構造ポインタ
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関する。特に、本発明は、データ構造のロケーションを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】
【課題を解決するための手段】
本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を見つけるための第1のポインタを構成されたロケーションに格納することを含む。メモリの一部が、システムコンポーネント情報を受け渡すインタフェースであるデータ構造に割り当てられる。第1のポインタが指すメモリロケーションに第2のポインタが格納される。第2のポインタはデータ構造を指す。
【0010】
本明細書に組み込まれ、本明細書の一部をなす添付図面は、本発明の実施形態を示し、説明と併せて本発明の原理の説明に役立つ。
【0011】
【発明の実施の形態】
本発明のコンピュータシステムデータを提供する方法および装置についての以下の詳細な説明では、本発明の完全な理解を提供するために多くの特定の詳細が記載される。しかし、本発明は、これら特定の詳細なしでも、また代替の要素または方法を使用することによっても実施することができる。他の場合では、周知の方法、手順、コンポーネント、および回路については、本発明の態様を不必要に曖昧にしないように詳細に説明しない。
【0012】
本発明の実施形態は、データインタフェースのロケーションを、ACPI(advanced configuration and power interface)に受け渡す方法である。本方法は、システムファームウェア読み出し専用メモリ(ROM)に関連する情報を捜し出す、構成されたロケーションになりうる第1のメモリロケーションの識別子を決定することを含む。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのファームウェアインタフェーステーブル(FIT)内のエントリであることができる。第1のポインタは第1のメモリロケーションに格納される。たとえば、FITを含むROMが構築されると、ポインタをFITの一部にすることができる。システムファームウェアは、システムブートアップ時に、第1のポインタが指す第2のメモリロケーションに第2のポインタを格納することができる。第2のポインタは、システムファームウェアとACPIとの間でシステムコンポーネント情報を受け渡すためのデータ構造を指す。ACPIは、コンポーネントタイプ識別子を使用して、第1のポインタを求めてFITテーブルを探索し、第1のポインタを使用して第2のポインタにアクセスしてデータインタフェースを見つける。したがって、データインタフェースのサイズおよびロケーションには柔軟性がある。
【0013】
本発明の実施形態は、コンピュータシステムプラットフォームの間で移植可能である。さらに、本発明の実施形態は、同じプラットフォームの各種構成間で移植可能である。本発明の実施形態は拡張可能である。本発明の実施形態では、費用のかかるASLコードの書き換えおよびシステムファームウェアROMの変更を避けることにより開発費用が抑えられる。
【0014】
本発明の実施形態は、コンピュータシステムコンポーネントに関連するデータを提供するインタフェースである。インタフェースは、システム抽象化層(SAL)とACPI(advanced configuration and power interface)との間にあることができる。インタフェースは、コンピュータ読取可能媒体に格納されたデータ構造を備えることができる。データ構造は、たとえば、コンピュータシステムブート時にSALによって構築されることができる。データ構造は、コンピュータシステムのコンポーネントに関連するコンポーネントデータについてのフィールドを有する階層スキーマを有することができる。データ構造内でコンポーネントデータを見つけるための識別子があり、情報が求められるコンポーネントタイプを指定することにより、特定プロセスを補助することが可能である。識別子のスキーマは、2つのプログラム間で共通であることができる。データ構造は、識別子を使用してコンポーネントデータを埋める第1のプログラム(たとえば、SAL)の格納に利用することができる。コンポーネントデータは、データ構造に識別子を使用してインデックスを作成する第2のプログラム(たとえば、ACPI)によりアクセス可能である。このようにして、第1のプログラムと第2のプログラムとの間にインタフェースが設けられる。第2のプログラム(たとえば、ACPI)は、データを、たとえばメソッド呼び出しを介してシステム情報を要求したオペレーティングシステムに送る前に再フォーマットすることができる。
【0015】
図1Aは、例示的なコンピュータシステム150の論理構成を示す。本発明の実施形態は、コンピュータシステム150のコンポーネント情報を受け渡すデータ構造インタフェースで、かかるシステム150の論理表現を構築することができる。図1B、図1Cは、例示的なコンピュータシステムの論理構成を反映した例示的なデータ構造インタフェースを示す。本発明の実施形態は、どのコンポーネントがブートアップ時に存在することになるかについての事前知識がまったくない状態で、データ構造インタフェースをシステムブートアップ時に構築する。したがって、本発明の実施形態は、ブートアップ時に存在する特定のコンピュータシステム150の構成に適合する。
【0016】
再び図1Aを参照すると、例示的なコンピュータシステム150は、システムボードとも呼ばれることがある一つまたは複数のセル160を含むことができる。セル160は、ベース管理コントローラ(BMC)160、いくつかの中央演算処理装置(CPU)170、およびいくつかのシリアルデバイス(たとえば、汎用非同期送受信回路すなわちUART)190を備えることができる。セル160は、いくつかのローカルバスアダプタ(LBA)180をそれぞれ有しうるいくつかのシステムバスアダプタ(SBA)175も有することができる。最後に、各LBA180は、いくつかのスロット185を有することができる。図1Aは単なる例示にすぎない。すべてのコンポーネントが常に存在するわけではなく、他のタイプのコンポーネントがコンピュータシステム150にあってもよい。本発明の実施形態は、ACPIコードを書き換える必要なく、存在する構成が何であれその構成に適宜適合する。
【0017】
図1B、図1Cは、システムコンポーネント情報をあるプログラムから別のプログラムに渡すことができるように、2つのコンピュータプログラム間のインタフェースとして機能可能な例示的なデータ構造100(たとえば、受け渡し(handoff:ハンドオフ)構造)を示す。たとえば、あるプログラムが受け渡し構造100を埋め、別のプログラムがデータを使用することができる。受け渡し構造100は、システム内のコンポーネントに関する情報を格納する階層スキーマを含むことができる。受け渡し構造100は、メタデータ、シグネチャ等の情報のヘッダ105を含むことができる。本発明の実施形態はACPIとSALとの間のインタフェースを提供することから、ヘッダはACPI/SAL受け渡し構造ヘッダと呼ばれる。
【0018】
スキーマは、いくつかのレベル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情報のアレイなど他のコンポーネント情報も含みうる。
【0019】
図1Cを参照すると、第3のレベル110cは、ローカルバスアダプタ(LBA)についてのエントリ125のアレイ120である単一コンポーネントタイプについての情報を含む。最後に、第4のレベル110dは、スロットについてのエントリ125のアレイ120を含む。
【0020】
受け渡し構造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にリンクすることができる。
【0021】
受け渡し構造100は、一実施形態では、チップセット固有情報を含むことができる。このように、固有のパラメータ値を各チップセットのAML実装形態(implementation)に渡すことができる(AMLは、受け渡し構造100内のデータの最終的な消費者であることができる)。たとえば、AML実装形態はチップセットX、Y、およびZをサポートすることができる。この場合、受け渡し構造100は、3つのサポートされるチップセットそれぞれのデータ構造を含むことができ、各データ構造は、チップセットのAMLが必要とするパラメータ値を含む。たとえば、これは、LBA固有データ情報120のアレイ120に格納することができる。したがって、本発明の実施形態では、複数のチップセットをサポートするAML実装形態が可能である。
【0022】
次に、図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を特定することができる。
【0023】
場合によっては、所与のレベル110に2つ以上のコンポーネントタイプがありうるため、さらなる情報がそのコンポーネントデータの特定に必要である。たとえば、情報が図1Bのスキーマ内の第2のレベル110bコンポーネントについて求められる場合、どのコンポーネントタイプ情報が求められいるかについて知るために、さらなる情報が必要となる。したがって、一実施形態では、ACPIは、どのタイプのコンポーネント情報が求められているかについての情報を受け取る。たとえば、ACPIは、シリアルデバイスエントリ情報が求められていると決定するか、またはその旨通知される。次いで、ACPIが受け渡し構造に共通キー200でインデックスを作成すると、これも要素として組み込み、シリアルデバイスアレイ120内の関連エントリ125を選択する。
【0024】
本明細書に述べたように、図1Bの編成は例示的なものである。図3は、システム情報を受け渡すための受け渡し構造300の別の実施形態を示す。本実施形態では、第1のレベル310aは、ドメインに関する情報を含む(たとえば、ドメイン情報のアレイ120)。たとえば、システムは複数のオペレーティングシステムをサポートすることができ、各オペレーティングシステムはそれぞれのドメインを有する。第2のレベル310bは、ハードウェアがどのようにレイアウトされたかに応じて、いくつかありうるセルについての情報を含むことができる。第3のレベル310cは、アダプタ情報を含む。第4のレベル310dはPCI−PCIブリッジ情報を含み、第5のレベル310eはスロット情報を含む。
【0025】
図3の例の共通キー200は、5つのコンポーネント値を有しうる。たとえば、「23111」の共通キーは、2番目のドメインの3番目のセルの最初のアダプタの最初のPCI−PCIブリッジの最初のスロットを指すことができる。
【0026】
図1および図3は階層スキーマを示すが、かかるスキーマは必要ではない。一実施形態では、共通キー200は、スキーマ内のエントリとシステム内の考えられるコンポーネントとの間に1対1のマッピングを提供する。これは、コンピュータシステム150内のあらゆるコンポーネントが、関連する固有のキーを有することを意味する。
【0027】
本発明の実施形態は、SALとACPIとの間のインタフェースを使用してコンポーネントデータを提供する方法を提供する。図4のプロセス400のステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ410において、インタフェースを提供する受け渡し構造100、300が構築される。受け渡し構造は、コンピュータシステムブート時にSAL(たとえば、システムファームウェア)によって構築することができる。
【0028】
ステップ420において、受け渡し構造100、300にSALが格納される。SALは、システムコンポーネントを発見するステップおよび取得した情報を使用して受け渡し構造100、300を埋めるステップを行うことができる。SALは、共通キー200を使用して、コンポーネントデータを受け渡し構造100、300のどこに配置するかを決めることができる。
【0029】
ステップ430において、ACPIが受け渡し構造100、300にインデックスを作成して、コンポーネントデータを取得する。ACPIは、共通キーならびにコンポーネントデータタイプを使用することができる。たとえば、ACPIは、データが求められているコンポーネントのタイプを特定するか、またはコンポーネントデータについてのより一般的な要求であることができる、OSからの呼び出しを受け取る。これに応答して、ACPIは適当な共通キー200を構築し、共通キー200がコンポーネントデータを検索してOSからの要求を満たす。これは、受け渡し構造100、300に2回以上インデックスを作成することを含むことができる。
【0030】
ステップ440において、受け渡し構造100、300からのコンポーネントデータの一部が、要求を出したプログラム、たとえばオペレーティングシステムに提供される。このステップは、ACPIが、要求に適するようにコンポーネントを再フォーマットすることを含みうる。たとえば、要求は、指定されたフォーマットに従ってデータが戻されると予想される「_CRS呼び出し(_CRS call)」であることができる。
【0031】
本発明の実施形態では、受け渡し構造100、300をほぼどこにでも配置することが可能である。さらに、配置は、システムブート時に行うことができる。したがって、受け渡し構造100、300のサイズおよびロケーションの双方をブートアップ時に選択することができる。これにより、ACPIコードがプラットフォームから独立したものにすることが可能である。その上、受け渡し構造100、300は、ランタイム時にモーフィングして、所与のプラットフォームおよびシステム構成をサポートすることができる。したがって、受け渡し構造100、300の厳密な構成は常に同じになるわけではない。実施形態はさらに、コンポーネント構成が同じコンピュータシステムに異なる受け渡し構造100、300を構築するように指示する場合には、そのように構築することができる。たとえば、所与のシステムは、1つ、2つ、または3つのPCIバスで製造することができる。ブートアップ時に、受け渡し構造100、300のサイズおよび構成が実際の構成に適合される。これにより、従来のソリューションでは必要であった複数のACPIコードソリューションを提供する必要がなくなる。本発明の実施形態は、システムコンポーネントの故障にも適合する。たとえば、PCIバスがブートアップ時に故障した場合、これは受け渡し構造100、300に正しく報告される。
【0032】
最大の柔軟性を提供するために、データ構造100、300は任意の都合のよいロケーションに配置することが可能である。本発明の実施形態は、第1のコンピュータプログラム(たとえば、システムファームウェアまたはSAL)にロケーションを確立し、そのロケーションに第2のコンピュータプログラム(たとえば、ACPIルーチン)を伝達する方法を提供する。次に、図5を参照すると、第1のポインタをファームウェアインタフェーステーブル(FIT)510に配置することができる。しかし、本発明の実施形態は、FIT510の使用に制限されない。より一般的に、実施形態は、システムファームウェアROMにおいて情報(たとえば、データまたはコンポーネント情報)を見つける方法を提供するために任意の、構成されたロケーションを使用することができる。構成されたロケーションは、ポインタを格納するためのものであってもよい。たとえば、ポインタは、データまたはコンポーネント情報を指すことができる。FIT510は、システムファームウェア内の異なるコンポーネントについてのエントリを含むことができる。FIT510は、要求されたコンポーネントについての構成されたセクション510を含みうる。FIT510は、任意のコンポーネントに関連するフィールドを有することが可能なOEM(Original Equipment Manufacture:独自製品生産)セクション512も含みうる。
【0033】
受け渡し構造FITエントリ515は、OEMセクション512のどこに存在してもよく、受け渡し構造ポインタ525を指す。受け渡し構造ポインタ525は、ACPIが後にポインタを検索するためにアクセス可能などこの場所にあってもよい。たとえば、受け渡し構造ポインタ525は、主記憶装置、スクラッチRAM(ランダムアクセスメモリ)、不揮発性メモリ等にあることができる。この柔軟性により、AMLを何等書き換えることなく、受け渡し構造100、300のロケーションを移動することが可能である。これは、ACPIがFIT510のロケーションを知っており、したがって受け渡し構造FITエントリ515を見つけることができるためである。
【0034】
本発明の実施形態は、受け渡しデータ構造100、300のロケーションを中継する方法を提供し、これを図6のプロセス600に示す。プロセス600のうちの少なくともいくつかのステップは、命令としてコンピュータ読取可能媒体に格納し、汎用プロセッサで実行することができる。ステップ610において、ACPIがアクセス可能なメモリロケーションの識別子が決定される。たとえば、識別子はコンポーネントタイプであり、メモリロケーションは、そのコンポーネントタイプのFIT内のエントリであることができる。このようにして、ACPIは、ACPIが立ち上がるときに、ポインタを見つけることが可能になる。
【0035】
ステップ620において、第1のポインタ(たとえば、受け渡し構造FITエントリ515)がFIT510に格納される。FITはシステムROMの一部として実施することができるため、このステップは、別個のROM構築プロセスの一部として行うことが可能である。
【0036】
ステップ630において、システムファームウェアは、メモリの一部を受け渡し構造100、300に割り当てる。これはシステムブートアップ時に行うことができるが、本発明はそのように制限されない。メモリ割り当ては、受け渡し構造100、300とインタフェースする双方のプログラムがアクセス可能ないずれの場所であってもよい。たとえば、システムファームウェアは、主記憶装置、スクラッチRAM、不揮発性メモリ等を割り当てることができる。次いで、システムファームウェアは、受け渡し構造100、300を構築してこれを埋める。たとえば、プロセス400のステップ410および420を行うことができる。
【0037】
ステップ635において、システムファームウェアが、受け渡し構造ポインタ525を、FIT510内のポインタが指すロケーションに格納する。受け渡し構造ポインタ525は、受け渡し構造100、300を指す。
【0038】
ACPIが立ち上がると、ポインタにアクセスすることにより受け渡し構造100、300を見つけることができる(510、525)。これは、ステップ640において、ACPIコードがFITテーブル510を辿り、第1のポインタを見つけることによって実現することができる。たとえば、ACPIコードは、受け渡し構造FITエントリ515が、所与のコンポーネントタイプのフィールドのロケーションにおけるFIT510のOEMセクション512にあることを知ることができる。任意の適したコンポーネントタイプを選択することが可能である。コンポーネントタイプ51が選択される場合、ACPIコードは、受け渡し構造FITエントリ515がコンポーネントタイプ51のFIT510のフィールドにあることがわかる。
【0039】
ステップ650において、ACPIコードは、第1のポインタ(たとえば、受け渡し構造FITエントリ515)を使用して第2のポインタ(たとえば、受け渡し構造ポインタ525)にアクセスする。このようにして、ACPIは、予め確立された位置から開始することによって受け渡し構造100、300のロケーションを決定する。
【0040】
ステップ660において、ACPIコードは、第2のポインタを使用して受け渡し構造100、300にアクセスする。したがって、本発明の実施形態は、受け渡し構造100、300に柔軟なロケーションおよびサイズを提供することが可能である。仮に受け渡し構造100、300のロケーションが同じである場合には、受け渡し構造100、300は柔軟性を欠くことになる。
【0041】
本発明を特定の実施形態について説明したが、本発明がかかる実施形態により制限されるものと解釈すべきではなく、むしろ、併記の特許請求の範囲により解釈されるべきであることを理解されたい。
【図面の簡単な説明】
【図1A】本発明の実施形態がデータインタフェースに表される例示的なコンピュータシステムの論理構成を示す図。
【図1B】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を示す図。
【図1C】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造を、図1Bの続きから示す図。
【図2】本発明の実施形態による、コンポーネント情報を提供するためのインタフェースにおいてデータを操作する共通キーの図。
【図3】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースのデータ構造の図。
【図4】本発明の実施形態による、コンポーネント情報を提供するプロセスのステップを示すフローチャート。
【図5】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタを示す図。
【図6】本発明の実施形態による、コンポーネント情報を受け渡すためのインタフェースへのポインタをセットアップして使用するプロセスのステップを示すフローチャート。
【符号の説明】
100、300 受け渡し構造
510 FIT
515 受け渡し構造FITエントリ
525 受け渡し構造ポインタ
Claims (10)
- 柔軟なデータインタフェースを提供する方法であって、
a)システムファームウェア読み出し専用メモリ(ROM)に関連する情報を見つけるための第1のポインタを、構成されたロケーションに格納するステップと、
b)受け渡しシステムコンポーネント情報のインタフェースであるデータ構造にメモリの一部を割り当てるステップと、
c)前記第1のポインタが指すメモリロケーションに、前記データ構造を指す第2のポインタを格納するステップと、
を含む方法。 - 前記システムファームウェアは、前記第2のポインタをランダムアクセスメモリに格納する請求項1記載の方法。
- 前記システムファームウェアは、前記第2のポインタをシステムブートアップ時にランダムアクセスメモリに格納する請求項1記載の方法。
- d)前記第1のポインタを見つけるために、前記構成されたロケーションを辿るステップと、
e)前記第1のポインタを使用して前記第2のポインタにアクセスするステップと、
f)前記第2のポインタを使用して前記データ構造にアクセスするステップと、
をさらに含む請求項1記載の方法。 - d)ACPIプログラムが、前記第1のポインタを見つけるために、前記構成されたロケーションを辿るステップと、
e)前記ACPIプログラムが前記第1のポインタを使用して前記第2のポインタにアクセスするステップと、
f)前記ACPIプログラムが前記第2のポインタを使用して前記データ構造にアクセスするステップと、
をさらに含む請求項1記載の方法。 - 前記データ構造は、システムファームウェアとACPIとの間に前記インタフェースを設ける請求項1記載の方法。
- ファームウェアインタフェース情報を提供するための構造内の第1のメモリロケーションに格納される第1のポインタと、
第2のメモリロケーションに格納される第2のポインタと、
を有し、
該第1のポインタは該第2のポインタを指し、
該第2のポインタは、第3のメモリロケーションにあるデータ構造を指し、前記コンピュータシステム内のコンポーネントに関連する情報について、該データ構造は、システムファームウェアとACPIとの間の受け渡しインタフェースとして機能する、
コンピュータシステム。 - 前記構造はファームウェアインタフェーステーブルである請求項7記載のコンピュータシステム。
- 前記第1のポインタは、前記ファームウェアインタフェーステーブルのOEMセクションに格納される請求項8記載のコンピュータシステム。
- 前記第2のメモリロケーションはランダムアクセスメモリ内にある請求項7記載のコンピュータシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/173,331 US6976119B2 (en) | 2002-06-14 | 2002-06-14 | Method and system for providing a location of a data interface |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004021987A true JP2004021987A (ja) | 2004-01-22 |
Family
ID=22631540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003157534A Withdrawn JP2004021987A (ja) | 2002-06-14 | 2003-06-03 | データインタフェースのロケーションを提供する方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6976119B2 (ja) |
JP (1) | JP2004021987A (ja) |
GB (1) | GB2393291B (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7953900B2 (en) * | 2003-10-22 | 2011-05-31 | Hewlett-Packard Development Company, L.P. | System and method for discovering I/O bus capabilities on a computer system via ACPI |
US7188339B2 (en) * | 2003-10-24 | 2007-03-06 | Hewlett-Packard Development Company, L.P. | ACPI preprocessor |
US7418529B2 (en) * | 2006-05-12 | 2008-08-26 | Apple Inc. | Method and apparatus for communicating with an embedded controller which includes a reference to metadata objects within a computing device |
US9836307B2 (en) * | 2015-06-24 | 2017-12-05 | Intel Corporation | Firmware block dispatch based on fusing |
EP3403183B1 (en) * | 2016-03-17 | 2019-04-24 | Qualcomm Incorporated | Type-c factory and special operating mode support |
US10079499B2 (en) | 2016-03-17 | 2018-09-18 | Qualcomm Incorporated | Type-C factory and special operating mode support |
US9778309B1 (en) | 2016-03-17 | 2017-10-03 | Qualcomm Incorporated | Type-C factory and special operating mode support |
Family Cites Families (13)
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 |
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 |
US6721881B1 (en) * | 2000-09-29 | 2004-04-13 | Dell Products L.P. | System and method for determining if a display device configuration has changed by comparing a current indicator with a previously saved indicator |
US6772330B2 (en) * | 2001-01-26 | 2004-08-03 | Dell Products L.P. | System and method for storing component information and a program in a hidden partition, and loading the component information to a reserved portion of the memory using the program |
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 |
US20030041271A1 (en) * | 2001-08-14 | 2003-02-27 | Rajeev Nalawadi | Reporting and handling multiple platform variants |
EP1357475A1 (en) | 2002-04-23 | 2003-10-29 | Hewlett-Packard Company | Data processing system and method |
-
2002
- 2002-06-14 US US10/173,331 patent/US6976119B2/en not_active Expired - Lifetime
-
2003
- 2003-06-03 JP JP2003157534A patent/JP2004021987A/ja not_active Withdrawn
- 2003-06-04 GB GB0312858A patent/GB2393291B/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB0312858D0 (en) | 2003-07-09 |
GB2393291A (en) | 2004-03-24 |
GB2393291B (en) | 2006-09-27 |
US6976119B2 (en) | 2005-12-13 |
US20030233174A1 (en) | 2003-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7590835B1 (en) | Dynamically updating a computer system firmware image | |
US8578360B1 (en) | Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure | |
US7558804B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
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 | |
US8176142B2 (en) | Shared JAVA jar files | |
US7809918B1 (en) | Method, apparatus, and computer-readable medium for providing physical memory management functions | |
US6081879A (en) | Data processing system and virtual partitioning method for creating logical multi-level units of online storage | |
CN105190550A (zh) | 用于启动具有多个中央处理器的计算机系统的方法 | |
US7743072B2 (en) | Database for storing device handle data in an extensible firmware interface environment | |
US10289785B1 (en) | Platform architecture creation for a system-on-chip | |
WO1999066399A9 (en) | Method to reflect bios setup changes into acpi machine language | |
CN105264506A (zh) | 向内存映射配置分配处理器 | |
CN101477477B (zh) | 内核空间隔离方法、空间管理实体及系统 | |
US7921247B1 (en) | Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment | |
US7536536B1 (en) | Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device | |
US8214585B2 (en) | Enabling parallel access volumes in virtual machine environments | |
US10838861B1 (en) | Distribution of memory address resources to bus devices in a multi-processor computing system | |
CN101779196B (zh) | Pci设备的i/o空间请求抑制方法 | |
US7593956B1 (en) | Interface to a human interface infrastructure database in an extensible firmware interface environment | |
JP2004021987A (ja) | データインタフェースのロケーションを提供する方法およびシステム | |
US7757012B2 (en) | Configurable mapping of devices to bus functions | |
US7873807B1 (en) | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware | |
US6295587B1 (en) | Method and apparatus for multiple disk drive access in a multi-processor/multi-disk drive system | |
US7225427B2 (en) | Method and device for providing computer system component data |
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 |