(57)【要約】【課題】  システム資源割り当て情報を必要とすることなく動作可能なプラットフォーム独立ファームウェアモジュールを提供する。【解決手段】  本発明は、ブートアップオペレーション中に書き込み可能なデータ領域を設定する方法を対象とする。本発明にかかる方法においては、ファームウェアモジュールが、システムブートアップのオペレーション中に、読み出し専用メモリ位置から書き込み可能メモリ位置に再配置される。ファームウェアモジュール用のメモリ割り当ておよび付加的メモリ割り当てを含む書き込み可能メモリ位置の一部が確保される。システム資源割り当ての事前の知識がなくても、付加的メモリ割り当てはランタイムデータ領域として指定される。【選択図】図３
2005182780.tif 000002
【特許請求の範囲】
【請求項１】
ランタイムデータ領域を設定するコンピュータ実施される方法であって、
システムブートアップのオペレーション中に、読み出し専用メモリ位置（６０４）から書き込み可能メモリ位置（６０３）にファームウェアモジュール（２１０）を再配置することと、
前記ファームウェアモジュール（２１０）用のメモリ割り当ておよび付加的メモリ割り当て（２１３）を含む前記書き込み可能メモリ位置（６０３）の一部を確保することと、
前記付加的メモリ割り当て（２１３）を前記ランタイムデータ領域（２１３）として指定することと
を含み、
前記ランタイムデータ領域（２１３）は、システム資源割り当ての事前の知識を必要とすることなく作成される
方法。
【請求項２】
前記再配置することは、
システムファームウェア機能（２２０）のシステムコールを受け取ることと、
前記ファームウェアモジュール（２１０）用の前記メモリ割り当て、前記付加的メモリ割り当て（２１３）、および前記システムファームウェア機能（２２０）用のメモリ割り当てを要求する、前記システムコールに対する応答を返すことと
をさらに含む請求項１に記載の方法。
【請求項３】
前記システムファームウェア機能（２２０）のサイズを決定することと、
前記ファームウェアモジュール（２１０）のサイズを決定することと、
前記ランタイムデータ領域（２１３）のサイズを決定することと
をさらに含む請求項２に記載の方法。
【請求項４】
前記システムファームウェア機能（２２０）は、
プロセッサ抽象レイヤ
を備える
請求項２に記載の方法。
【請求項５】
前記ファームウェアモジュール（２１０）は、リアルモードで動作する
請求項１に記載の方法。
【請求項６】
前記ファームウェアモジュール（２１０）は、仮想モードで動作する
請求項１に記載の方法。
【請求項７】
前記ファームウェアモジュール（２１０）は、リアルモードおよび仮想モードで動的に動作する
請求項１に記載の方法。
【請求項８】
システム独立ランタイムデータ記憶領域を作成する方法であって、
システムブートアップのオペレーション中に、システムファームウェア機能（２２０）のサイズを決定するシステムコールをインターセプトすることと、
書き込み可能メモリ位置（６０３）の一部を求める要求を伝達する、前記システムコールに対する応答を返すことと、
前記書き込み可能メモリ位置（６０３）の一部を確保することと
を含み、
メモリ割り当てが、前記ランタイムデータ領域（２１３）として指定され、
前記ランタイムデータ領域（２１３）は、システム資源割り当ての事前の知識を必要とすることなく作成される
方法。
【請求項９】
読み出し専用メモリ位置（６０４）に存在するファームウェアモジュール（２１０）を利用し、前記インターセプトを実行する読み出し専用メモリ位置（６０４）に存在するファームウェアモジュール（２１０）を利用すること
をさらに含む請求項８に記載の方法。
【請求項１０】
前記システムファームウェア機能（２２０）および前記ファームウェアモジュール（２１０）を、前記読み出し専用メモリ位置（６０４）から前記書き込み可能メモリ位置（６０３）へ再配置すること
をさらに含む請求項９に記載の方法。
【請求項１１】
前記ランタイムデータ領域は、前記ファームウェアモジュールの部分コンポーネントを構成する
請求項１０に記載の方法。
【請求項１２】
前記ランタイムデータ領域は、前記ファームウェアモジュールおよび前記システムファームウェア機能から分離されている
請求項１０に記載の方法。
【請求項１３】
前記システムブートアップのオペレーションは、Ｉｎｔｅｌ  Ｉｔａｎｉｕｍ（登録商標）プロセッサによって実行される
請求項８に記載の方法。
【請求項１４】
前記システムファームウェア機能は、
プロセッサ抽象レイヤ
を備える
請求項１３に記載の方法。
【請求項１５】
前記ファームウェアモジュールは、リアルモードで動作する
請求項９に記載の方法。
【請求項１６】
前記ファームウェアモジュールは、仮想モードで動作する
請求項９に記載の方法。
【請求項１７】
前記ファームウェアモジュールは、リアルモードおよび仮想モードで動的に動作する
請求項９に記載の方法。
【請求項１８】
ランタイムデータ領域を作成する方法であって、
システムブートアップのオペレーション中に、読み出し専用メモリ位置から書き込み可能メモリ位置へシステムファームウェア機能を再配置するシステムコールを受け取ることと、
前記書き込み可能メモリ位置の第１の部分を前記システムファームウェア機能用に割り当てることと、
前記書き込み可能メモリ位置の付加的部分を割り当てて、該付加的メモリ割り当てを前記ランタイムデータ領域として指定することと
を含み、
前記ランタイムデータ領域は、システム資源割り当ての事前の知識を必要とすることなく作成される
方法。
【請求項１９】
前記システムファームウェア機能は、
プロセッサ抽象レイヤ
を備える
請求項１８に記載の方法。
【請求項２０】
ファームウェアモジュールを使用し、前記インターセプトを実行するファームウェアモジュールを使用すること
をさらに含む請求項１８に記載の方法。
【請求項２１】
前記書き込み可能メモリ位置の第３の部分を、前記ファームウェアモジュールに割り当てること
をさらに含む請求項２０に記載の方法。
【請求項２２】
前記書き込み可能メモリ位置の前記付加的部分を、前記ファームウェアモジュールに割り当てることと、
前記ファームウェアモジュールの一部を前記ランタイムデータ領域として指定することと
をさらに含む請求項２０に記載の方法。
【請求項２３】
前記ファームウェアモジュールは、リアルモードで動作する
請求項２０に記載の方法。
【請求項２４】
前記ファームウェアモジュールは、仮想モードで動作する
請求項２０に記載の方法。
【請求項２５】
前記ファームウェアモジュールは、リアルモードおよび仮想モードで動的に動作する
請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、データ処理の分野に関する。
より具体的には、本発明の実施の形態は、ブートアップオペレーション中に書き込み可能なデータ領域を設定する方法を対象とする。
【背景技術】
【０００２】
システムブートファームウェアは、通常、読み出し専用メモリ（ＲＯＭ）に記憶されて、コンピュータシステムのブートおよびコンフィギュレーションならびにファームウェア上で実行されるオペレーティングシステムのサポートに使用される。
システムファームウェアは、状態情報等のシステムに関する情報を保存するために、「スクラッチＲＡＭ」とも呼ばれる書き込み可能メモリ位置を必要とする。
プラットフォーム依存ファームウェアを使用するシステムでは、ファームウェアモジュールをプログラミングする際に、システム資源割り当て（例えば、スクラッチＲＡＭにアクセスできるメモリの位置、スクラッチＲＡＭにアクセスする方法等）の事前の知識が必要とされる。
【０００３】
プラットフォーム特有のファームウェアモジュールまたはプラットフォーム依存ファームウェアモジュールを作成する際、既知のシステム資源割り当て（例えば、スクラッチＲＡＭにアクセスできるメモリの位置、スクラッチＲＡＭにアクセスする方法等）は、プラットフォームスクラッチＲＡＭをモジュールに公開するのに使用される。
すなわち、スクラッチＲＡＭにアクセスできるメモリ位置、スクラッチＲＡＭにアクセスする方法等は、モジュールに符号化される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、システムプラットフォームに変更が行われるごとに、システム資源割り当ては変化することがあり、したがって、ファームウェアモジュールの変更も同様に必要となる場合がある。
したがって、ファームウェアモジュールがスクラッチＲＡＭ等のシステム資源に継続してアクセスできるように、ファームウェアモジュールも同様に変更しなければならないことから、プラットフォームの変更は複雑である。
その結果、製造サイクルが長くなるおそれがあり、プラットフォームの変更の実施に加えて、新たなモジュールを商業的に流通させる場合には、ファームウェアモジュールの変更に追加コストがかかるおそれがある。
【０００５】
この理由により、システムプラットフォームに変更が行われる場合にファームウェアモジュールを変更する必要がないことから、プラットフォーム独立ファームウェアモジュールが好ましい。
しかしながら、各プラットフォームは、異なるまたは固有のシステム資源割り当て情報を有する場合があるので、プラットフォーム独立ファームウェアモジュールを作成する場合、任意の１つのタイプのプラットフォーム特有のシステム資源割り当て情報を使用することができない。
したがって、一例として、スクラッチメモリへのアドレスオフセットをシステムファームウェアモジュールにハードコード化することはできない。
その結果、システム資源割り当て情報を必要とすることなく動作可能なプラットフォーム独立ファームウェアモジュールが必要とされる。
【課題を解決するための手段】
【０００６】
一実施の形態では、ファームウェアモジュールが、システムブートアップのオペレーション中に、読み出し専用メモリ位置から書き込み可能メモリ位置に再配置される。
ファームウェアモジュール用のメモリ割り当ておよび付加的メモリ割り当てを含む書き込み可能メモリ位置の一部が確保される。
システム資源割り当ての事前の知識がなくても、付加的メモリ割り当てはランタイムデータ領域として指定される。
【０００７】
添付図面は、本明細書の一部に組み込まれて、本明細書の一部を形成する。
添付図面は、本発明の実施の形態を示し、明細書本文と共に本発明の原理を説明するのに役立つ。
特に言及しない限り、この明細書本文で参照される図面は、縮尺どおりに描かれていないものと理解されるべきである。
【発明を実施するための最良の形態】
【０００８】
次に、本発明の実施の形態を詳細に参照する。
実施の形態の例は、添付図面に示されている。
本発明を以下の実施の形態と共に説明するが、以下の実施の形態は、本発明をこれらの実施の形態のみに限定するように意図されていないことが理解されよう。
それとは異なり、本発明は、添付の特許請求の範囲によって規定される本発明の精神および範囲内に含まれ得る代替形態、変更形態、および等価形態を網羅するように意図されている。
さらに、本発明の以下の詳細な説明では、本発明の十分な理解を提供するために、いくつかの具体的な詳細が述べられる。
しかしながら、本発明の実施の形態は、これらの具体的な詳細がなくても実施することができる。
それ以外の場合には、本発明の態様を不必要に分かりにくくしないように、既知の方法、手順、コンポーネント、および回路は詳細に説明されていない。
【０００９】
［表記および用語］
以下の詳細な説明のいくつかの部分は、手順、論理ブロック、処理、およびコンピュータメモリ内のデータビットに対するオペレーションの他のシンボル表現の点から提示される。
これらの記述および表現は、データ処理技術の分野の当業者が他の当業者に自身の作業の内容を最も効率的に伝達するのに使用される手段である。
本出願では、手順、論理ブロック、プロセス等は、所望の結果をもたらす首尾一貫した一連のステップまたは命令であると考えられる。
ステップは、物理量の物理操作を必要とするものである。
必ずではないが、通常、これらの量は、コンピュータシステムにおいて記憶、転送、結合、比較、およびそれ以外の操作が可能な電気信号または磁気信号の形を取る。
【００１０】
しかしながら、これらの用語および類似の用語のすべては、適切な物理量に関連付けられ、これらの量に適用される単なる便利なラベルにすぎないことに留意すべきである。
以下の説明から明らかなように特に指定のない限り、本発明の全体を通じて、「再配置する」、「確保する」、「指定する」、「受け取る」、「返す」、「決定する」、「インターセプトする」、「利用する」、「割り当てる」等の用語を利用する説明は、コンピュータシステムまたは同様の電子計算デバイスの動作およびプロセスを指すことが理解されよう。
このコンピュータシステムまたは同様の電子計算デバイスは、そのコンピュータシステムのレジスタおよびメモリ内で物理（電子）量として表現されたデータを操作し、コンピュータシステムのメモリもしくはレジスタまたは他のこのような情報の記憶デバイス、送信デバイス、または表示デバイス内で同様に物理量として表現される他のデータに変換するものである。
【００１１】
図１は、本発明の実施の形態を実施することができる例示のコンピュータシステムのブロック図である。
図１の実施の形態では、第１のプロセス（例えば、プロセス１０２ａ）および第２のプロセス（例えば、プロセス１０２ｂ）が、バス１０１を介してキャッシュ１１０に接続される。
本発明の実施の形態では、２つ以上のプロセッサに共通のキャッシュを提供することができる。
別のコンポーネントもシステム１００と共に利用することができ、明確にするために省略されていることが理解されよう。
本発明の実施の形態では、読み出し専用メモリ位置（例えば、図６の不揮発性メモリ６０４）に配置されたファームウェアコンポーネントが、システムブートアップのオペレーション中に書き込み可能メモリ位置（例えば、図６の揮発性メモリ６０３）に再配置される。
【００１２】
図１の実施の形態では、キャッシュ１１０を制御するファームウェアモジュールが、システムブートアップ中に書き込み可能メモリ位置に再配置される。
本発明の一実施の形態によると、ファームウェアモジュールが書き込み可能メモリ位置に再配置される場合、本発明は、そのファームウェアモジュール用に書き込み可能データ領域の一部を確保する。
さらに、本発明は、書き込み可能メモリ位置の付加的部分を確保し、ランタイムデータ領域としてその付加的部分を指定する。
このランタイムデータ領域は、その後、必要に応じてファームウェアモジュールにより使用することができる。
使用する際に、本発明は、システム資源割り当ての事前の知識を必要とすることなく、システムファームウェア用の書き込み可能メモリ位置を設定する。
より具体的には、本実施の形態では、読み出し専用メモリモジュールをハードコード化する場合に、スクラッチＲＡＭへのアドレスオフセットを知る必要はない。
したがって、この実施の形態では、ランタイムデータ領域は、例えば、マシン状態情報、データ、エラーシーディング情報、メモリアドレスポインタ等を記憶するシステムファームウェア機能によって使用することもできる。
したがって、プラットフォーム特有の書き込み可能メモリ領域を必要とするのではなく、書き込み可能メモリ位置がファームウェアモジュール自身によって指定されるので、本発明は、プラットフォーム独立ファームウェアモジュールを設定するのに使用することができる。
【００１３】
図２Ａは、本発明の実施の形態による読み出し専用メモリ６０４から書き込み可能メモリ６０３へのファームウェアモジュール２１０の転送を示すブロック図である。
図２Ａの実施の形態では、ファームウェアモジュール２１０およびシステムファームウェア機能２２０は、読み出し専用メモリ６０４に記憶される。
多くのコンピュータシステムでは、いくつかのシステムファームウェア機能が、システムブートアップのオペレーション中に書き込み可能メモリ位置（例えば、ＲＡＭ）６０３に書き込まれる。
次に、読み出し専用メモリ６０４のシステムファームウェア機能２２０が無効にされ、システムファームウェア機能２２０が書き込まれた書き込み可能メモリ６０３の位置にアクセスすることによって、システムファームウェア機能２２０がアクセスされる。
【００１４】
図２Ａの実施の形態では、ファームウェアモジュール２１０およびシステムファームウェア機能２２０は、ブートアップオペレーション中に書き込み可能メモリ６０３に再配置される。
本発明の実施の形態では、ファームウェアモジュール２１０は、ブートアッププロセス中のシステムファームウェア機能２２０とコンピュータオペレーティングシステムとの間のシステムコールをインターセプトする。
このインターセプトは、コンピュータシステムにトランスペアレントな方法で行われる。
システムファームウェア機能２２０が書き込み可能メモリ６０３に再配置されると、ファームウェアモジュール２１０も同様に再配置される。
【００１５】
一実施の形態では、システムファームウェア機能２２０は、カリフォルニア州サニーベールのＩｎｔｅｌ（登録商標）社から市販されているＩｔａｎｉｕｍ（登録商標）プロセッサファミリーの実施において利用されるプロセッサ抽象レイヤ（ＰＡＬ）を備える。
本実施の形態は、特にＩｔａｎｉｕｍ（登録商標）プロセッサファミリーを説明するが、本発明の実施の形態は、他のコンピュータシステムおよび／またはプロセッサで実施することにも良く適している。
本実施の形態では、ＰＡＬファームウェアは、プロシージャコール、エラー回復ルーチン、プロセッサセルフテストルーチン等のプロセッサ実施態様特有の機能を抽象化し、また、プロセッサを最初にブートするのに必要なコードも含む。
図２Ａの実施の形態では、ＰＡＬ（例えば、システムファームウェア機能２２０）が書き込み可能メモリ６０３に書き込まれる際に、ファームウェアモジュール２１０は、自身を書き込み可能メモリ６０３に書き込むようにするコマンドも同様に生成する。
本実施の形態は、ＰＡＬと共にファームウェア機能２１０を再配置することを説明するが、本発明の実施の形態は、さまざまなシステムファームウェア機能と共にファームウェアモジュール２１０を再配置することにもよく適している。
【００１６】
本実施の形態では、ファームウェアモジュール２１０は、読み出し専用メモリ６０４に占める量よりも多くの量の書き込み可能メモリ６０３を確保する。
換言すると、本発明は、ファームウェアモジュール２１０自身のコードに実際に必要なものよりも多くの付加的空間を書き込み可能メモリ６０３に確保する。
本発明の実施の形態では、書き込み可能メモリ６０３のこの付加的空間は、システムファームウェア機能（例えば、システムファームウェア機能２２０）およびファームウェアモジュール２１０の書き込み可能データ領域として使用可能なランタイムデータ領域として指定される。
【００１７】
本発明の実施の形態に従ってファームウェアモジュール２１０に付加的メモリ割り当てを確保するさまざまな方法が存在する。
一実施の形態では、本発明は、ファームウェアモジュールが読み出し専用メモリ６０４にハードコード化される時に、ランタイムデータ領域の付加的空間を含む読み出し専用メモリ６０３のファームウェアモジュール２１０内に静的データ構造体をコンパイルする。
当初、ファームウェアモジュール２１０のデータ構造体は、読み出し専用メモリ６０４内にあることから書き込むことができない。
しかしながら、ファームウェアモジュール２１０を書き込み可能メモリ６０３に再配置すると、そのデータ領域は、必要に応じて、ファームウェアモジュール２１０およびシステムファームウェア機能２２０によって使用することができる。
【００１８】
別の実施の形態では、本発明は、ファームウェアモジュール２１０用の書き込み可能メモリ６０３の割り当て、システムファームウェア機能２２０用の書き込み可能メモリ６０３の別の割り当て、および書き込み可能ランタイムデータ領域として指定される書き込み可能メモリ６０３の付加的割り当てを確保することを開始する。
ファームウェアモジュール２１０が書き込み可能メモリ６０３に再配置されると、付加的メモリ割り当ては、ランタイムデータ領域として使用されるように指定され、必要に応じて、ファームウェアモジュール２１０およびシステムファームウェア機能２２０によって使用することができる。
【００１９】
本実施の形態では、ファームウェアモジュール２１０は、書き込み可能メモリ６０３に再配置された後に、ＰＡＬを介したオペレーティングシステムとプラットフォームハードウェアとの間のプロシージャコール時に、継続して介在（interpose）する。
一実施の形態では、ファームウェアモジュール２１０は、書き込み可能メモリ６０３に再配置された後にキャッシュ２１０のキャッシュコントローラの機能も果たし、キャッシュのフラッシュ、キャッシュの初期化、ダイレクトメモリアクセス（ＤＭＡ）等のキャッシュを制御するオペレーション中に使用される。
【００２０】
以下の説明は、本発明の実施の形態によるシステムファームウェア機能（例えば、システムファームウェア機能２２０）と共にファームウェアモジュール２１０を再配置する一方法を対象とする。
本発明の一実施の形態では、本発明は、システムファームウェア機能２２０（例えば、ＰＡＬプロシージャ）とシステムの残りの部分との間にファームウェアモジュール２１０を介在させる。
例えば、ブートアッププロセス中、ＰＡＬモジュールが書き込み可能メモリ位置に再配置されるまで、一時記憶位置として使用されるレジスタのアドレスが、読み出し専用メモリ６０４に配置されたＰＡＬモジュールに送られる。
本発明の実施の形態では、ファームウェアモジュール２１０は、このアドレスを送るシステムコールをインターセプトして、レジスタのアドレスを保存する。
【００２１】
本実施の形態では、ファームウェアモジュール２１０は、オペレーティングシステムからＰＡＬに送られるターゲットエントリポイントをインターセプトし、このエントリポイントは、システムコール中にＰＡＬへのエントリポイントとして使用されることになる。
ファームウェアモジュール２１０は、このアドレスを一時記憶位置に保存し、ファームウェアモジュール２１０のエントリポイントである新たなエントリポイントをシステムに渡す。
この新たなエントリポイントは、次に、（例えば、システムコールがＰＡＬに対して行われた時に）ファームウェアモジュール２１０への固定エントリポイントとしてシステムにより使用される。
これによって、ＰＡＬおよびファームウェアモジュール２１０が、オペレーティングシステムにトランスペアレントな方法で書き込み可能メモリ６０３に再配置されると、ＰＡＬへのシステムコールのインターセプトが容易になる。
さらに、ファームウェアモジュール２１０のサイズが判明しているので、ランタイムデータ領域およびＰＡＬへのオフセットを、ファームウェアモジュール２１０への固定エントリポイントから計算することができる。
その結果、スクラッチＲＡＭへのハードコード化されたアドレスは、本発明の実施の形態では必要ではない。
その代わり、ランタイムデータ領域およびＰＡＬのメモリ位置は、ファームウェアモジュール２１０へのエントリポイントを基準とした（relative to）ものになる。
さらに、ランタイムデータ領域およびＰＡＬの双方の位置は、共にファームウェアモジュール２１０へのエントリポイントを基準とするので、ＰＡＬは、必要に応じてランタイムデータ領域にアクセスすることができる。
【００２２】
次に、ＰＡＬ（例えば、図２Ａのシステムファームウェア機能２２０）のサイズを決定するシステムコールが、ファームウェアモジュール２１０によってインターセプトされる。
本実施の形態では、ファームウェアモジュール２１０は、システムファームウェア機能２２０のサイズを決定し、書き込み可能メモリ６０３の一部を確保する応答を送る。
一方、ファームウェアモジュール２１０は、ＰＡＬモジュールのサイズを報告するだけではなく、ファームウェアモジュール２１０、ＰＡＬモジュール（例えば、図２Ｂのシステムファームウェア機能２２０）、およびランタイムデータ領域（例えば、図２Ｂのランタイムデータ領域２１３）用の付加的割り当てを記憶するのに十分な書き込み可能メモリ６０３の一部を確保する応答も送る。
これらのコンポーネントが再配置される書き込み可能メモリ６０３の一部のアドレスが送られる。
ＰＡＬが書き込み可能メモリ６０３に再配置（コピー）されると、本発明は、書き込み可能メモリ６０３の書き込み可能メモリ位置へＰＡＬと共にファームウェアモジュール２１０を再配置する。
上述したように、ファームウェアモジュール２１０は、ランタイムデータ領域として使用される付加的領域を含むようにコンパイルすることもできるし、その目的のために書き込み可能メモリ６０３の量を追加して確保することもできる。
本実施の形態では、ファームウェアモジュール２１０およびシステムファームウェア機能２２０が書き込み可能メモリ６０３に再配置されて、ランタイムデータ領域２１３が適切に初期化されてデータを記憶する準備ができたことを確認すると、本発明は、「署名ワード（signature word）」を書き込む。
これは、正しいメモリ位置を確認するのに使用できるので、誤ったデータ領域にデータを記憶することも防止する。
【００２３】
図２Ｂは、本発明の実施の形態によるシステム資源割り当てをより詳細に示すブロック図である。
図２Ｂに示すように、書き込み可能メモリ６０３は、インターポーザ２１１、グローバルポインタ２１２、ランタイムデータ領域２１３、およびシステムファームウェア機能２２０を備える。
上述したように、システムファームウェア機能２２０が読み出し専用メモリから書き込み可能メモリ位置に再配置されると、ファームウェアモジュール２１０は、システムファームウェア機能２２０と共に再配置され、システムファームウェア機能２２０へのシステムコールをインターセプトする。
図２Ｂの実施の形態では、ファームウェアモジュール２１０は、書き込み可能メモリ６０３に再配置されており、ここでは、インターポーザ２１１、グローバルポインタ２１２、およびランタイムデータ領域２１３を備える。
上述したように、本発明の他の実施の形態では、インターポーザ２１１用および／またはシステムファームウェア機能２２０用の書き込み可能データ領域として使用できるデータ構造体をインターポーザ２１１内にハードコード化することによってランタイムデータ領域を実施することができる。
【００２４】
本発明の実施の形態では、インターポーザ２１１は、自身が制御するレジスタ領域のアドレスをランタイムデータ領域２１３に記憶する。
本発明の実施の形態では、ブートプロセス中に、オペレーティングシステムは、これらのレジスタの仮想アドレスを登録するシステムコールを行うことができ、このシステムコールは、インターポーザ２１１によってインターセプトされる。
インターポーザ２１１は、レジスタ領域のベースアドレスを送り、オペレーティングシステムは、レジスタ領域の仮想アドレスを返し、この仮想アドレスは、インターポーザ２１１によってランタイムデータ領域２１３に記憶される。
本発明の実施の形態では、インターポーザ２１１は、プロセス（例えば、図１のプロセス１０２ａ）がいつリアルモードで実行されているかを判断し、ランタイムデータ領域２１３に記憶されたアドレスを使用してレジスタにアクセスする。
あるいは、インターポーザ２１１は、プロセス（例えば、図１のプロセス１０２ａ）がいつ仮想モードで実行されているかを検出することもできる。
これを判断すると、インターポーザ２１１は、ランタイムデータ領域２１３に記憶された仮想アドレスにアクセスする。
このように、本発明の実施の形態は、リアルモードおよび仮想モードの双方において、オペレーティングシステムにトランスペアレントな方法で動作する。
【００２５】
図３は、本発明の実施の形態によるランタイムデータ領域を設定する、コンピュータ実施される方法３００のフローチャートである。
図３のステップ３１０において、本発明は、システムブートアップのオペレーション中に、読み出し専用メモリ６０４から書き込み可能メモリ６０３へファームウェアモジュール２１０を再配置する。
図２Ａを参照して上述したように、システムファームウェア機能がブートアップオペレーション中に再配置されると、ファームウェアモジュール２１０は、読み出し専用メモリ６０４から書き込み可能メモリ６０３へ再配置される。
【００２６】
図３のステップ３２０において、ファームウェアモジュール２１０用のメモリ割り当ておよび付加的メモリ割り当てを含む書き込み可能メモリ６０３の一部が確保される。
図２Ａを参照して上述したように、書き込み可能メモリ６０３へのファームウェアモジュール２１０の再配置中、本発明は、書き込み可能メモリ６０３の付加的部分を確保する。
一実施の形態では、この書き込み可能メモリ６０３の付加的部分は、ファームウェアモジュール２１０から分離している。
別の実施の形態では、メモリ６０３の付加的部分は、読み出し専用メモリが製造された時に、ファームウェアモジュール２１０内にコンパイルされたデータ構造体である。
【００２７】
図３のステップ３３０において、本発明は、システム資源割り当ての事前の知識を必要とすることなく、付加的メモリ割り当てをランタイムデータ領域として指定する。
図２Ａを参照して上述したように、付加的メモリ割り当ては、ランタイムデータ領域として指定され、システム状態情報を記憶するのに使用でき、また、必要に応じてファームウェアモジュール２１０および／またはシステムファームウェア機能２２０が使用できるデータの一時記憶装置に使用することができる。
ランタイムデータ領域へのアクセスは、書き込み可能メモリに再配置されたファームウェアモジュールへのエントリポイント（例えば、図２Ｂのインターポーザ２１１へのエントリポイント）から参照されることは好都合である。
このように、本発明によって、固定メモリ位置を参照しないシステムファームウェアの書き込み可能メモリ位置へのアクセスが可能になる。
その結果、本発明によって、システム資源割り当ての事前の知識を必要とすることなく、書き込み可能メモリ６０３を利用できるプラットフォーム独立ファームウェアモジュールを作成することが容易になる。
【００２８】
図４は、本発明の実施の形態によるシステム独立ランタイムデータ記憶領域を作成する方法４００のフローチャートである。
図４のステップ４１０において、本発明は、システムブートアップのオペレーション中に、システムファームウェア機能のサイズを決定するシステムコールをインターセプトする。
図２Ａを参照して上述したように、本発明のファームウェアモジュール２１０は、ブートアッププロセス中、および、後の書き込み可能メモリ６０３への再配置時に、システムファームウェア機能２２０（例えば、プロセッサ抽象レイヤ（ＰＡＬ）モジュール）へのシステムコールをインターセプトする。
【００２９】
図４のステップ４２０において、本発明は、書き込み可能メモリ位置の一部を求める要求を伝達する、システムコールに対する応答を返す。
図２Ａを参照して上述したように、ファームウェアモジュール２１０は、書き込み可能メモリ６０３の一部を確保する、ステップ４１０のシステムコールに対する応答を送る。
本発明の実施の形態では、ファームウェアモジュール２１０は、ランタイムデータ領域として使用することができる書き込み可能メモリ６０３の付加的部分を確保する。
【００３０】
図４のステップ４３０において、本発明は、書き込み可能メモリ６０３の一部を確保し、システム資源割り当ての事前の知識を必要とすることなく、この書き込み可能メモリ６０３の一部をランタイムデータ領域として指定する。
図２Ａを参照して上述したように、システムファームウェア機能２２０（例えば、ＰＡＬ）およびファームウェアモジュール２１０が書き込み可能メモリに再配置されると、ファームウェアモジュール２１０は、書き込み可能メモリ６０３の付加的部分（例えば、ランタイムデータ領域２１３）を確保し、この付加的部分をランタイムデータ領域として指定する。
本発明は、システム資源割り当ての事前の知識を必要とすることなく、これをランタイムデータ領域として指定する。
【００３１】
図５は、本発明の実施の形態によるランタイムデータ領域を作成する方法５００のフローチャートである。
図５のステップ５１０において、本発明のファームウェアモジュール２１０は、システムブートアップのオペレーション中に、システムファームウェア機能を書き込み可能メモリ６０３に再配置するシステムコールを受け取る。
図２Ａを参照して上述したように、システムファームウェア機能２２０へのシステムコールは、システムブートアップのオペレーション中にファームウェアモジュール２１０によってインターセプトされる。
本実施の形態では、本発明は、ファームウェアモジュール２１０へのエントリポイントをオペレーティングシステムに返し、オペレーティングシステムは、次に、システムファームウェア機能２２０にアクセスする際にこのエントリポイントを使用する。
【００３２】
図５のステップ５２０において、書き込み可能メモリ６０３の第１の部分がシステムファームウェア機能２２０用に割り当てられる。
図２Ａを参照して上述したように、システムコールがシステムファームウェア機能２２０に送られ、システムファームウェア機能２２０を再配置する際にどれだけの量の書き込み可能メモリが必要とされるかが決定される。
本発明のファームウェアモジュール２１０は、このシステムコールをインターセプトし、システムファームウェア機能２２０用に書き込み可能メモリ位置の第１の部分を確保する応答を送る。
さらに、ファームウェアモジュール２１０は、書き込み可能メモリ領域に再配置する前に自身用の書き込み可能メモリ６０３の一部を確保する。
【００３３】
図５のステップ５３０において、書き込み可能メモリ位置の付加的部分が、システム資源割り当ての事前の知識を必要とすることなく、ランタイムデータ領域として割り当てられる。
図２Ａを参照して上述したように、ファームウェアモジュール２１０およびシステムファームウェア機能２２０が、ブートアッププロセス中に書き込み可能メモリ６０３に再配置される際に、本発明は、ランタイムデータ領域用に書き込み可能メモリ６０３の付加的部分を割り当てる。
本発明の実施の形態では、ランタイムデータ領域は、ファームウェアモジュール２１０内にコンパイルされたデータ構造体を構成することもできるし、書き込み可能メモリ６０３の別個の部分（例えば、図２Ｂのランタイムデータ領域２１３）とすることもできる。
本発明は、システム資源割り当ての事前の知識を必要とすることなく、書き込み可能メモリ６０３の一部をランタイムデータ領域２１３として指定する。
これは、ランタイムデータ領域２１３の位置が、書き込み可能メモリ６０３内の所定のメモリ位置ではなく、ファームウェアモジュール２１０へのエントリポイントを基準とすることから可能である。
【００３４】
図６を参照して、本発明の一部は、例えば、汎用コンピュータネットワーク（図示せず）の一部として使用されるコンピュータシステム６００に存在するコンピュータ可読でコンピュータ実行可能な命令で構成される。
図６のコンピュータシステム６００は単なる例示であり、本発明は、汎用コンピュータシステム、埋込式コンピュータシステム、ラップトップコンピュータシステム、ハンドヘルドコンピュータシステム、およびスタンドアロンコンピュータシステムが含まれる複数の異なるコンピュータシステム内で動作できることが理解されよう。
【００３５】
本実施の形態では、コンピュータシステム６００は、さまざまなコンポーネント間、すなわち、デジタル情報および命令を処理する中央プロセッサユニット（ＣＰＵ）６０２、例えば、デジタル情報および命令を記憶する揮発性ランダムアクセスメモリ（ＲＡＭ）で構成される書き込み可能メモリ６０３、およびより永続的性質の情報および命令を記憶する読み出し専用メモリ６０４間でデジタル情報を伝達するアドレス／データバス６０１を含む。
さらに、コンピュータシステム６００は、膨大な量のデータを記憶するデータ記憶デバイス６０５（例えば、磁気ドライブ、光ドライブ、フロッピィドライブ、テープドライブ等）も含むことができる。
【００３６】
オプションとしてコンピュータシステム６００に接続されるデバイスには、コンピュータユーザに情報を表示する表示デバイス６０６、英数字入力デバイス６０７（例えば、キーボード）、および、データ、選択、更新等を入力するカーソル制御デバイス６０８（例えば、マウス、トラックボール、ライトペン等）が含まれる。
また、コンピュータシステム６００は、音響信号を放出するメカニズム（図示せず）も含むことができる。
【００３７】
図６に戻って、図６のオプションの表示デバイス６０６は、液晶デバイス、陰極線管、または、ユーザに認識可能なグラフィック画像および英数字文字を生成するのに適した他の表示デバイスとすることができる。
オプションのカーソル制御デバイス６０８は、コンピュータユーザが、表示デバイス６０６の表示スクリーン上において可視的シンボル（カーソル）の２次元移動の信号を動的に送れるようにする。
カーソル制御デバイス６０８の多くの実施態様が当技術分野において知られており、トラックボール、マウス、タッチパッド、ジョイスティック、または、所与の方向の移動もしくは挙動変位（manner displacement）の移動を信号で送ることができる英数字入力６０７上の特別なキーが含まれる。
あるいは、特別なキーおよびキーシーケンスのコマンドを使用した英数字入力６０７からの入力を介してカーソルを指示し、かつ／または、起動することもできることが理解されよう。
あるいは、複数の特殊適合されたカーソル指示デバイスからの入力を介してカーソルを指示し、かつ／または、起動することもできる。
【００３８】
さらに、コンピュータシステム６００は、周辺デバイス６１０（例えば、コンピュータネットワーク、モデム、大容量記憶デバイス等）とインターフェースする入出力（Ｉ／Ｏ）信号ユニット（例えば、インターフェース）６０９を含むこともできる。
したがって、コンピュータシステム６００は、クライアント／サーバ環境等のネットワークに接続することができ、それによって、複数のクライアント（例えば、パーソナルコンピュータ、ワークステーション、ポータブルコンピュータ、ミニコンピュータ、端末等）が、所望のタスクを実行するプロセスを実行するのに使用される。
【００３９】
本発明の好ましい実施の形態、すなわち、ランタイムデータ領域を設定するコンピュータ実施される方法は上記のように説明される。
本発明を特定の実施の形態で説明してきたが、本発明は、このような実施の形態によって限定されるものと解釈されるべきではなく、添付の特許請求の範囲に従って解釈されるべきであることが理解されるべきである。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の形態を実施することができる例示のコンピュータシステムのブロック図である。
【図２Ａ】本発明の実施の形態による読み出し専用メモリから書き込み可能メモリへのファームウェアモジュールの転送を示すブロック図である。
【図２Ｂ】本発明の実施の形態によるシステム資源割り当てをより詳細に示すブロック図である。
【図３】本発明の実施の形態によるランタイムデータ領域を設定する、コンピュータ実施される方法のフローチャートである。
【図４】本発明の実施の形態によるシステム独立ランタイムデータ記憶領域を作成する方法のフローチャートである。
【図５】本発明の実施の形態によるランタイムデータ領域を作成する方法のフローチャートである。
【図６】本発明の実施の形態を実施することができる例示のコンピュータシステムのブロック図である。
【符号の説明】
【００４１】
１０２ａ，１０２ｂ・・・プロセス１，２，
１１０・・・キャッシュ，
２１０・・・ファームウェアモジュール，
２１１・・・インターポーザ，
２１２・・・グローバルポインタ，
２１３・・・ランタイムデータ領域，
２２０・・・システムファームウェア機能，
６０３・・・書き込み可能メモリ，
６０４・・・読み出し専用メモリ，
６０２・・・プロセッサ，
６０３・・・書き込み可能メモリ，
６０４・・・読み出し専用メモリ，
６０５・・・データ記憶デバイス，
６０６・・・表示デバイス，
６０７・・・英数字入力，
６０８・・・カーソル制御，
６０９・・・入出力通信デバイス，
６１０・・・周辺デバイス，
【図１】
2005182780.tif 000003
【図２Ａ】
2005182780.tif 000004
【図２Ｂ】
2005182780.tif 000005
【図３】
2005182780.tif 000006
【図４】
2005182780.tif 000007
【図５】
2005182780.tif 000008
【図６】
2005182780.tif 000009