(57)【要約】【課題】ハードウェアサイズ、コスト及び電力消費を増大させることなく、コンピュータにおいてレガシデバイスにアクセスする方法を提供する。【解決手段】本発明にかかるＯＳにハードウェアアクセスを提供する方法は、第１のハードウェアデバイスをエミュレートする仮想化データインタフェースとして使用するため、データ処理構成のファームウェアアドレス空間の一部を割り当てること（５０２）と、仮想化データインタフェースをＯＳに提示すること（５０４）と、第１のハードウェアデバイスとインタフェースするＯＳの標準化カーネルコンポーネントを使用して、仮想化データインタフェースにアクセスすること（５０６）と、標準化カーネルコンポーネントを介するＯＳによる仮想化データインタフェースのアクセスに基づき、仮想化インタフェースと第２のハードウェアデバイスとの間でデータを交換すること（５０８）とを含む。【選択図】図５
2006309754.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムに対しハードウェアアクセスを提供するプロセッサベースの方法であって、
第１のハードウェアデバイスをエミュレートする仮想化データインタフェースとして使用するために、データ処理構成のファームウェアアドレス空間の一部を割り当てること（５０２）と、
前記仮想化データインタフェースを前記オペレーティングシステムに提示すること（５０４）と、
前記第１のハードウェアデバイスとインタフェースするように適合された前記オペレーティングシステムの標準化カーネルコンポーネントを使用して、前記仮想化データインタフェースにアクセスすること（５０６）と、
前記標準化カーネルコンポーネントを介する前記オペレーティングシステムによる前記仮想化データインタフェースのアクセスに基づき、前記仮想化インタフェースと第２のハードウェアデバイスとの間でデータを交換すること（５０８）と
を含む方法。
【請求項２】
前記ファームウェアアドレス空間の一部を割り当てることは、ＰＣＩコンフィギュレーション空間（１２８）の一部を割り当てること
を含む請求項１に記載の方法。
【請求項３】
前記仮想化データインタフェースにアクセスすることは、システム抽象化レイヤ（ＳＡＬ）（１２６）を介して前記仮想化データインタフェースにアクセスすること
を含む請求項２に記載の方法。
【請求項４】
前記仮想化データインタフェースにアクセスすることは、拡張可能ファームウェアインタフェース（ＥＦＩ）（１０６）を介して前記仮想化データインタフェースにアクセスすること
を含む請求項２に記載の方法。
【請求項５】
前記仮想化データインタフェースにアクセスすることは、アドバンスト・コンフィグレーション・アンド・パワー・インタフェース（ＡＣＰＩ）（１２７）を介して前記仮想化データインタフェースにアクセスすること
を含む請求項１に記載の方法。
【請求項６】
前記仮想化データインタフェースは、仮想ＵＡＲＴインタフェース（２０２）、仮想キーボードインタフェース（２０６）及び仮想ディスプレイインタフェース（２０４）のうちのそれぞれ１つを介する、ＵＡＲＴ、キーボード及びビデオディスプレイのうちの少なくとも１つに対するアクセスを提供する
請求項１に記載の方法。
【請求項７】
前記仮想化インタフェースと前記第２のハードウェアデバイスとの間でデータを交換することは、前記仮想化インタフェースと、ネットワーキングカード及び外部データバスアダプタのうちの少なくとも１つ（２１２）との間でデータを交換すること
を含む請求項１に記載の方法。
【請求項８】
前記仮想化データインタフェースを前記オペレーティングシステムに提示することは、非標準デバイスの仮想化ＰＣＩ列挙（３００、３１０）を提示すること
を含む請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理に関し、特にファームウェアランタイムサービスを使用して仮想デバイスに対するアクセスを提供することに関する。
【背景技術】
【０００２】
最新のパーソナルコンピュータ（ＰＣ）は、過去何十年かにわたる多くの技術革新から利益を得てきた。性能利得は、プロセッサ速度を上昇させることとともに、入出力（Ｉ／Ｏ）バスによるデータ転送速度を上昇させることによって達成された。Ｉ／Ｏ速度の向上は、主に新たなインタフェース規格を実装すること（implementation）によって実現されたが、下位互換性のためには、多くのレガシインタフェースが依然としてＰＣに含まれていることが必要であった。
【０００３】
「ｘ８６」プロセッサアーキテクチャでは、原標準Ｉ／Ｏインタフェースには、外部周辺機器のためのシリアルポート及びパラレルポートと、プラグインカードのための業界標準アーキテクチャ（ＩＳＡ）バスと、フロッピー（登録商標）ディスク及びハードドライブのためのインテグレーテッドドライブエレクトロニクス（ＩＤＥ；Integrated Drive Electronics）インタフェースとが含まれていた。最新のＰＣは、依然としてこれらのインタフェースのうちのいくつかを含む場合があるが、外部周辺機器のためのユニバーサルシリアルバス（ＵＳＢ）及びＩＥＥＥ１３９４と、カードのための周辺コンポーネント相互接続（ＰＣＩ；Peripheral Component Interconnect）バスと、拡張ＩＤＥ及びＡＴアタッチメント（ＡＴＡ）ハードドライブとに確実に移行してきた。ポータブルコンピュータのためのパーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）デバイス及びビデオカードのためのアドバンスト・グラフィック・プロセッサ（ＡＧＰ；Advanced Graphic Processor）バスインタフェース等、さまざまなハードウェア及び環境に対し、他の専用インタフェースが開発されてきた。
【０００４】
コンピュータＩ／Ｏ規格においてこれらの進歩があっても、オペレーティングシステムは、依然として、既知の汎用インタフェースへのアクセスを必要とする場合がある。これらの汎用インタフェースは、多くの環境下で安全に使用することができる最小公分母を表す。たとえば、Ｗｉｎｄｏｗｓ（登録商標）及びＵｎｉｘ（登録商標）カーネルのバージョンによっては、端末装置を介してオペレーティングシステムにアクセスすることができる。歴史的に、これらの端末装置は、コンピュータのシリアルポートに接続された「ダム」端末であった。カーネルメッセージログ等のいくつかのクリティカルタスクをこの端末（「コンソール」とも呼ぶ）に向ける場合がある。これらの端末を、ユーザアクセスのためのログイン又はカーネルデバッガへの入力を提供する等、システム入力のために使用する場合がある。
【０００５】
ダム端末は、通常、ホストマシンの汎用非同期送受信器（ＵＡＲＴ；Universal Asynchronous Receiver-Transmitter）に接続される。ＵＡＲＴは、シリアル伝送ラインによりデータを送受信する。ＵＡＲＴは、出て行くデータをシリアライズし、入ってくるシリアルデータをバイトにアセンブルし、それらのバイトをバッファに配置する。多くの一般に使用されるＵＡＲＴは、伝送ラインにおいて非同期に通信するが、たとえば両通信デバイスがクロック信号に同期される場合、同期して通信する同様のデバイスもある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
オペレーティングシステムはまた、キーボード、マウス及びディスプレイ等の他の最小公分母デバイスが必要な場合がある。データセンタ環境では、各コンピュータに対しこれらの実際のデバイスの各々を、このようなデバイスによって必要とされる可能性のある関連するコネクタ及び電源とともに提供することは実際的でない場合がある。コンピューティングシステムに追加のハードウェアを含めることにより、コスト、必要な空間及び電力消費が増大する。多くの高密度なデータセンタでは、これらの要素の３つのすべてが重んじられる。したがって、ハードウェアサイズ、コスト及び電力消費を増大させることなく、コンピュータにおいてレガシデバイスアクセスを提供する方法を提供することが望ましい。
【課題を解決するための手段】
【０００７】
第１のハードウェアデバイスをエミュレートする仮想化データインタフェースとして使用するために、データ処理構成のファームウェアアドレス空間の一部を割り当てることにより、オペレーティングシステムに対しハードウェアアクセスが提供される。仮想化データインタフェースはオペレーティングシステムに提示される。オペレーティングシステムは、第１のハードウェアデバイスとインタフェースするように適合されたオペレーティングシステムの標準化カーネルコンポーネントを使用して、仮想化データインタフェースにアクセスする。データは、標準化カーネルコンポーネントを介するオペレーティングシステムによる仮想化データインタフェースのアクセスに基づき、仮想化インタフェースと第２のハードウェアデバイスとの間で交換される。
【発明を実施するための最良の形態】
【０００８】
さまざまな実施形態の以下の説明では、その一部を形成し、且つ本発明を実施することができるさまざまな例示的な方法が例として示されている、添付図面を参照する。本発明の範囲から逸脱することなく構造的変更及び動作的変更を行ってもよいため、他の実施形態を利用してもよい、ということが理解されなければならない。
【０００９】
概して、本開示は、ファームウェアランタイムサービスを使用してハードウェアインタフェースをエミュレートすることに関する。ハードウェアを、ファームウェアによって提供されるＰＣＩコンフィギュレーション空間アクセスを使用してエミュレートしてもよい。アーキテクチャによっては、ＰＣＩコンフィギュレーション空間に、ファームウェアの抽象化レイヤによってアクセスしてもよい。このように、オペレーティングシステム及び他のソフトウェアは、ダイレクトハードウェアアクセス（たとえば、Ｉ／Ｏアドレス空間に書き込むこと）を必要とすることなくＰＣＩデバイス構成にアクセスすることができる。これにより、ＰＣＩコンフィギュレーション空間をファームウェアで操作することができるため、仮想ＰＣＩデバイスを実装することも可能になる。そのため、たとえば、最小システム要件を満たす仮想シリアル通信ポートをファームウェアで実装することができる。仮想シリアルポートを、異なるタイプの通信チャネルを使用してシリアルデータを転送するように構成することができ、又は仮想シリアルポートが、システムが確実にＯＳの最小ハードウェア要件を満たすようにプレースホルダ（たとえば「ビットバケット」）として動作しても（act）よい。
【００１０】
エミュレートされたデバイスインタフェースを利用することにより多くのコンピューティングシステムが利益を得ることができる、ということが理解されよう。特に、複数の標準化インタフェースを必要とするシステムは、この手法から利益を得る可能性がある。標準化インタフェースには、シリアルポート、パラレルポート、キーボード、ディスプレイ、記憶装置、ネットワーキング等、既知のデータ及びプロトコルコンフィギュレーションに準拠するインタフェースが含まれる可能性がある。これらの標準化インタフェースは、標準化されたデバイスドライバ、ダイレクトカーネルアクセス等を含む標準化カーネルコンポーネントによってアクセスされる場合がある。標準化デバイスドライバには、エミュレートされたインタフェースによって変更することなく使用することができるレガシドライバが含まれる。標準化ドライバには、レガシドライバの動作（behavior）を採用するが、特にエミュレートされた又は仮想化された標準ハードウェアインタフェースを利用するように書かれている専用ドライバも含まれてもよい。エミュレートされたデバイスインタフェースは、当該技術分野において知られる標準化カーネルコンポーネントの任意の組合せを使用してもよい、ということが理解されよう。
【００１１】
仮想化インタフェースから利益を得る可能性のあるシステムの一タイプには、パーティション化可能システムが含まれる。パーティション化可能システムは、ノード（又はセル）から成り、パーティションは、独立したジョブに割り当てられたサブシステムである。パーティション化可能システムは、実行中の複数のＯＳイメージを有する単一システムを含んでもよく、且つ／又は単一複合／ラックで実行している複数のコンピュータを含んでもよい。このようなシステムにおける各パーティションは、異なる可能性のあるオペレーティングシステムの、障害を含むインスタンスを実行する。各アクティブなパーティションは、シリアルポート、ビデオ、キーボード、マウス、ネットワークインタフェース等、ハードウェアの最小セットを必要とする場合がある。
【００１２】
パーティション化システムでは、各パーティションに実際のデバイスを割り当てることが困難となる場合がある。パーティション化システムの各パーティションに対し別々のデバイスを含めるために必要な空間、電力及びコストにより、実装によっては実際的でなくなる可能性がある。これは、特に、パーティションを手動で又は自動的に再割当てするか又は再構成することができる場合に当てはまる。それにも関わらず、パーティション化システム及び同様のコンピューティング構成に対しレガシデバイスアクセスを提供することには多くの利点がある。これらの利点は互換性及び信頼性を含む。場合によっては、ＯＳは、既存のレガシドライバを利用して仮想デバイスにアクセスし、それにより、特別なデバイスドライバ、追加のハードウェア及び／又は専用ハードウェアが必要でなくなる。
【００１３】
ここで図１を参照すると、本発明の実施形態による、仮想デバイスインタフェース１０２を利用するコンピューティングアーキテクチャ１００が示されている。この例におけるコンピューティングアーキテクチャ１００は、ファームウェア１０６と対話するオペレーティングシステム（ＯＳ）１０４を含む。ＯＳは、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（商標）、Ｕｎｉｘ（登録商標）、ＭａｃＯＳ（商標）等を含む当該技術分野において既知の任意のＯＳであってもよい。ファームウェア１０６は、特定のプラットフォーム特化ハードウェア１１０と相互動作するように設計されたリードオンリメモリ（ＲＯＭ）又は消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）チップとして含まれることが多い。また、ファームウェア１０６を、システムランダムアクセスメモリ（ＲＡＭ）から再配置し実行することも可能であり、ディスクからロードし同様にＲＡＭから実行することも可能である。ファームウェア１０６は、ＯＳ１０４のブート時間中にプラットフォーム特化ハードウェア１１０のさまざまな要素にアクセスするのを容易にするブートドライバ１０８を含んでもよい。
【００１４】
ファームウェア１０６はまた、拡張可能ファームウェアインタフェース（ＥＦＩ）仕様において定義されるようなインタフェースを含んでもよい。ＥＦＩは、ＯＳ１０４とハードウェア１１０との間をインタフェースする汎用且つ拡張可能な規格を定義する。この例におけるＥＦＩレイヤは、ＯＳローダ１１２、ブートサービス１１４及びランタイムサービス１１６を含む。ＯＳローダ１１２は、標準化されたブートサービス１１４及びランタイムサービス１１６を使用してＯＳ１０４をロードする１つのソフトウェアである。ＥＦＩブートサービス１１４は、デバイスを、ブート時間中に使用するためにデバイス「ハンドル」及び「プロトコル」に抽象化する。この抽象化により、デバイスのエンドユーザが基礎的なインプリメンテーションに関して気にする必要なく、レガシＯＳローダ（たとえばレガシＢＩＯＳコード）を再使用することができる。ＥＦＩランタイムサービス１１６はまた、ランタイム中にＯＳ１０４が使用するための基礎的なハードウェア資源の抽象化も提供する。
【００１５】
ファームウェア１０６には、他の抽象化レイヤが存在してもよい。たとえば、Ｉｔａｎｉｕｍ（商標）アーキテクチャは、ＥＦＩに加えてシステム抽象化レイヤ（ＳＡＬ；System Abstraction Layer）を定義する。ＳＡＬは、プラットフォーム特化ハードウェア１１０独自の（unique）機能をカプセル化し、それらの機能を汎用インタフェースで提示する。特に、ＳＡＬは、プロセッサ１１８以外のハードウェア１１０を抽象化する。ＳＡＬがアクセス可能なハードウェア１１０には、メモリ１２０、ブートデバイス（たとえばハードディスク）１２２及び入出力（Ｉ／Ｏ）サブシステム１２４が含まれてもよい。特に、ＳＡＬは、コンピューティングアーキテクチャ１００のＰＣＩコンフィギュレーション空間１２８に対するアクセスを提供する。
【００１６】
図示するファームウェア１０６は、ＳＡＬランタイムサービスモジュール１２６を含む。このモジュール１２６は、実行している間（たとえばブート後）のＯＳ１０４に対しハードウェア機能をカプセル化するランタイムサービスルーチンを提供する。ＥＦＩブートサービス１１４及びランタイムサービス１１６もまた、ＳＡＬランタイムサービス１２６とインタフェースしてもよい。ＯＳ１０４は、プラットフォーム特化ハードウェア及び特にＰＣＩコンフィギュレーション空間１２８にアクセスするためにＳＡＬランタイムサービス１２６の手続きを呼び出してもよい。ＳＡＬランタイムサービスモジュール１２６は、ＳＡＬを介してハードウェアにアクセスするための時間が直接ＯＳ１０４を介してハードウェアにアクセスするための時間と同程度であるように設計される。
【００１７】
ＯＳ１０４によるすべてのハードウェアアクセスがＳＡＬ１２６又はＥＦＩを介する必要はない。たとえば、アドバンスト・コンフィグレーション・アンド・パワー・インタフェース（ＡＣＰＩ；Advanced Configuration and Power Interface）１２７は、コンピューティング構成におけるＯＳ指向コンフィギュレーション（OS-directed configuration）のための業界標準インタフェースである。ＡＣＰＩは、ＰＣＩハードウェアを含むシステムハードウェアのコンフィギュレーション、定義及びデバイス発見を提供する明確なインタフェース仕様を提供する。
【００１８】
ＳＡＬランタイムサービス１２６、ＥＥＩランタイムサービス１１６及び／又はＡＣＰＩ１２７を、ＰＣＩコンフィギュレーション空間１２８を使用してＯＳ１０４及び関連ソフトウェアに対し仮想デバイスインタフェース１０２を提示するために使用してもよい。仮想デバイスインタフェース１０２は、一般に、標準化デバイスの動作をエミュレートするが、同様に非標準デバイスをエミュレートしてもよい。仮想デバイスインタフェース１０２によってエミュレートされた標準化デバイスは、一般に、ＵＡＲＴ、ビデオディスプレイ、キーボード等、ＯＳ１０４において十分にサポートされている単純なレガシデバイスである。
【００１９】
仮想デバイスインタフェース１０２において行われるデータ転送を、１つ又は複数の物理データ転送デバイスに中継してもよい。同様に、複数の仮想デバイスインタフェース１０２と交換されるデータを、単一データ転送デバイス上に多重化してもよい。データ転送デバイスは、システム要件を満たす任意のデバイスであってもよい。たとえば、仮想デバイスインタフェース１０２とリモートにデータを交換することが望まれる場合、ネットワークカードを、データをリモートに転送する目的でデータ転送デバイスとして利用してもよい。仮想デバイスインタフェース１０２出力データをローカルに格納することが望まれる場合、ハードディスク又は他のローカル記憶装置がデータ転送デバイスとして動作してもよい。
【００２０】
ネットワークカード等のデバイスは、Ｉ／Ｏバスによってプロセッサ（複数可）に接続される。１つの一般に使用されるＩ／Ｏバスは、周辺コンポーネント相互接続（ＰＣＩ）である。ＰＣＩは、最新の汎用コンピュータに組み込まれるローカルバス規格である。ＰＣＩを、Ｉｎｔｅｌ（登録商標）ｘ８６、ｘ８６−６４、Ｉｔａｎｉｕｍ、ＥＭ６４Ｔ、ＡＭＤ６４、Ａｌｐｈａ、ＰｏｗｅｒＰＣ（商標）、ＡＲＭ、ＭＩＰＳ等を含む、現在知られているか又は後に開発されるあらゆるプロセッサアーキテクチャで実装してもよい。ＰＣＩバスは、プロセッサとローカルに接続された周辺デバイスとの高速データ交換を容易にする。
【００２１】
単一のＰＣＩデバイスは、８つまでの別個の機能を提供してもよい。これらの機能は、デバイスのコンフィギュレーション空間において別々にアドレス指定可能であり、その１つの例は、ＰＣＩコンフィギュレーション空間１２８として表される。コンフィギュレーション空間１２８は、識別、初期化及び制御のために各デバイスによって保持される１ブロックのメモリロケーションを指す。ＰＣＩ互換デバイス（ホスト／バスブリッジを除く）は、ＰＣＩコンフィギュレーション空間１２８を実装する。ＰＣＩ仕様は、コンフィギュレーションヘッダとして知られるコンフィギュレーション空間１２８の一部で実装される１組のレジスタを定義する。これらのレジスタは、デバイスＩＤ（Device ID）、ベンダＩＤ（Vendor ID）、クラスコード（Class Code）等の値を含む。
【００２２】
ｘ８６アーキテクチャでは、ＰＣＩコンフィギュレーション空間１２８は、Ｉ／Ｏアドレス空間に位置する２つの３２ビットポートを使用してアクセスされる。ＳＡＬを利用するアーキテクチャでは、ＰＣＩコンフィギュレーション空間１２８にアクセスするために別のメカニズムが使用される。ＳＡＬ仕様は、ＳＡＬランタイムサービス１２６によって提供されるようなＳＡＬ手続き呼出しを使用してＰＣＩコンフィギュレーション空間１２８にアクセスすることを含む。このようなシステムでは、アクセスの信頼性を低下させる非同期イベントが発生する可能性があるため、Ｉ／Ｏポートを使用してＰＣＩコンフィギュレーション空間１２８にアクセスすべきではない。ＰＣＩコンフィギュレーション空間１２８へのアクセスを、ＥＦＩランタイムサービス１１６及びＡＰＣＩ１２７等のファームウェアサービスによって提供してもよい。
【００２３】
当業者には、ＰＣＩコンフィギュレーション空間１２８が、仮想デバイスインタフェース１０２を実装するために使用してもよいハードウェアインタフェースの一例に過ぎないということが理解されよう。仮想デバイスインタフェース１０２を、他のインタフェース１３０によって表されるように、現在知られているか又は後に開発されるあらゆる他の専用又は汎用ハードウェアＩ／Ｏインタフェースを利用するように書いてもよい。概して、ファームウェアにおいてデバイスのエミュレートをサポートする任意のハードウェアインタフェースを使用して、仮想インタフェース１０２を提供してもよい。
【００２４】
ファームウェア１０６において仮想デバイスインタフェース１０２を提供する１つの利点は、システム開発者が、インタフェース１０２によってエミュレートされる実際のハードウェアを提供する必要なく、ＯＳ１０４に対しシミュレートされたデバイスアクセスを提供することができる、ということである。図２は、本発明の実施形態による、ファームウェア１０６においてエミュレートされるデバイスの１つの例を示す。この例では、バスコンフィギュレーション空間２０１を介して、複数の仮想デバイスインタフェース２００が提供される。図示する仮想デバイスインタフェース２００には、仮想ＵＡＲＴインタフェース２０２、仮想ディスプレイインタフェース２０４、仮想キーボードインタフェース２０６及び仮想パラレルポートインタフェース２０８が含まれる。これらのインタフェース２００の各々は、ハードウェアに含めるには実際的でない可能性があるがＯＳ１０４に必要とされる可能性があるレガシインタフェースを表してもよい。たとえば、仮想ＵＡＲＴインタフェース２０２、仮想ディスプレイインタフェース２０４及び仮想キーボードインタフェース２０６を、ロギング、デバッギング及び制御の目的で使用してもよい。仮想パラレルインタフェース２０８を、ラインプリンタ又は他のプリント／ロギングデバイスをエミュレートするために使用してもよい。
【００２５】
ファームウェア１０６はまた、インタフェース２００に関連するデータ及び状態を操作する他のソフトウェアを含んでもよい。たとえば、仮想ＵＡＲＴインタフェース２０２は、１つ又は複数のデータ転送デバイス２１２によって通信するためにデータをフォーマットし、アセンブルし、且つ同期化するトランスレータモジュール２１０を利用してもよい。インタフェース２００のうちの１つを介して通信されるデータを翻訳するために、同様のモジュールを使用してもよい。たとえば、仮想ディスプレイインタフェース２０４及び仮想キーボードインタフェース２０６をコンソールエミュレータモジュール２１４に結合してもよく、コンソールエミュレータモジュール２１４は、それら結合された２つのインタフェース２０４、２０６に対し適当な入出力を処理する。
【００２６】
仮想インタフェース２００を、任意のタイプのデータ転送デバイス２１２と通信するように構成してもよい。デバイス２１２を、ローカルに接続してもよく（たとえばオンボード）、又はリモートに接続してもよい。このようなデバイス２１２は、ネットワークカード／チップ２１６、ＵＳＢポート２１８、無線通信デバイス２２０、又は汎用デバイス２２２によって表されるような当該技術分野において既知である他のあらゆるデータ交換／通信／格納デバイスを含んでもよい。
【００２７】
本発明の実施形態による仮想デバイスインタフェースの特定のインプリメンテーションの詳細を、図３に示す。一例としての仮想インタフェース３００は、ＰＣＩコンフィギュレーション空間３０１においてフロッピードライブをエミュレートするように構成される。このようなインタフェース３００は、たとえば、ドライバ及びＢＩＯＳイメージ等のシステムデータを更新するために必要である場合がある。インタフェース３００は、ＰＣＩコンフィギュレーション空間３０１においてＰＣＩコンフィギュレーションヘッダ３０２を含む。ヘッダ３０２は、ＰＣＩコンフィギュレーションヘッダ３０２において使用されるクラスコードレジスタ３０３を含む。クラスコードレジスタ３０３は、たとえば０１０２００ｈに設定され、これは、ＰＣＩ仕様においてフロッピードライブを表すように指定される事前定義された値である。コンフィギュレーションヘッダ３０２の他のレジスタもまた、フロッピードライブデバイスに対して適当に設定される。
【００２８】
仮想インタフェース３００は、エミュレーションモジュール３０４を含む。エミュレーションモジュール３０４は、コンフィギュレーションヘッダ３０２をフロッピーデバイスとして提示するとともに、このようなデバイスに対して適切に（appropriate）ＰＣＩデータ転送を実行するように構成されるフロッピードライブインタフェース３０６を含む。ハードウェアインタフェース３０８は、データ転送ハードウェア２１２とデータを交換するように構成される。エミュレーションモジュール３０４は、フロッピードライブインタフェース３０６をハードウェアインタフェース３０８に結合し、それにより、ＯＳ１０４は、データ転送ハードウェア２１２をフロッピードライブとして「見る」。
【００２９】
第２の例としての仮想インタフェース３１０は、コンソール（たとえばＵＡＲＴ）をエミュレートするように構成される。このようなインタフェース３１０を、たとえばＯＳ１０４で実行しているコンソールアプリケーションによって使用してもよい。このインタフェース３１０は、ＰＣＩコンフィギュレーション空間３１３において第２のヘッダ３１２を利用する。クラスコードレジスタ３０３は、ＰＣＩ仕様において定義されるような適切な値に設定される。エミュレーションモジュール３１４は、ＰＣＩ側のコンソールインタフェース３１６とハードウェアインタフェース３１８との間の通信を処理する。ハードウェアインタフェース３１８は、データ転送ハードウェア２１２と通信するように構成される。
【００３０】
図３において提示される仮想インタフェース３００及び３１０は、本発明の実施形態によって実装できるインタフェース例に過ぎない。本明細書で説明する概念を使用して任意のタイプのハードウェアインタフェースを仮想化してもよい、ということが理解されよう。このようなハードウェアインタフェースには、キーボード、マウス、トラックボール、ジョイスティック、タブレット、プロセッサ、モデム、ハードドライブ、光ドライブ、半導体メモリ、ネットワークインタフェース、音声、ビデオ、カメラ、テープドライブ等が含まれてもよい。
【００３１】
さらに、仮想化されたインタフェース３００及び３１０を、非標準デバイスのＰＣＩ列挙（enumeration）を使用して実装してもよい。たとえば、システムが、ファームウェアによって分割される複数のパーティションを有する場合、単一デバイス（たとえばコンソール）を、ＰＣＩコンフィギュレーション空間において各ＯＳを仮想化ＵＡＲＴで提示することによりパーティション間で共有してもよい。ＯＳを、ＯＳがＩ／Ｏポート又はメモリマップドＩ／Ｏを使用することができる方法と同様にＰＣＩコンフィギュレーション空間を使用する標準的な方法（たとえばドライバを変更する）で変更してもよい。これを、非常にわずかなコード変更を用いて且つデバイスに特化した知識を必要とすることなく達成することができる。このインプリメンテーションはまた、ＯＳに対し新たなアプリケーションプログラムインタフェースを理解させる必要なく又はコンソールを多重化するＯＳ特化ドライバを有する必要なく、ＯＳが仮想化デバイスにアクセスすることができる、という利点を提供する。
【００３２】
図３の例は、単一のオペレーティングシステムに提示され、単一のハードウェアデバイス２１２にアクセスするために用いられる、２つの異なる仮想インタフェース３００、３１０を示す。他の構成では、１つ又は複数のデバイスにアクセスするために多くの、同様又は同一の仮想インタフェースを用いることが望ましい場合がある。１つのこのような構成を図４Ａに示し、本発明の実施形態によるパーティション化可能コンピューティング構成４０２に用いられる複数の仮想デバイスインタフェース４００を示す。
【００３３】
コンピューティング構成４０２は、ＯＳ４０４、４０６及び４０８によって表されるように、複数のオペレーティングシステムを実行することができる。ＯＳ４０４、４０６及び４０８は、バスコンフィギュレーション空間４１２を提供するファームウェア４１０にアクセスすることができる。バスコンフィギュレーション空間４１２は、各々がＯＳ４０４、４０６及び４０８に各々関連してもよい、仮想インタフェース４１４、４１６及び４１８を提供する。仮想インタフェース４１４、４１６及び４１８は、実質的に同様又は同一であってもよい。たとえば、仮想インタフェース４１４、４１６及び４１８は、各々が同じＵＡＲＴ仕様（たとえば１６５５０、８２５０）に準拠してもしなくてもよい仮想ＵＡＲＴを表してもよい。
【００３４】
エミュレータ／マルチプレクサモジュール４２０は、仮想インタフェース４１４、４１６及び４１８のすべてを介してデータを交換し、そのデータをデータ転送ハードウェア４２２に通信することができる。エミュレータ／マルチプレクサ４２０を、仮想インタフェース４１４、４１６及び４１８によって提示されるデバイスの性能をエミュレートし、データ転送ハードウェア４２２と複数のインタフェース４１４、４１６及び４１８との間のデータの配置を制御する（たとえば多重化／逆多重化（demultiplexing））するように構成してもよい。たとえば、この構成を使用して、仮想化ＵＡＲＴインタフェース４１４、４１６及び４１８を介してオペレーティングシステム４０４、４０６及び４０８のデバッグデータを転送し、そのデータをネットワークカード等の１つ又は複数のデータ転送デバイス４２２に対して多重化してもよい。
【００３５】
図４Ａに示す仮想化ＵＡＲＴインタフェース４１４、４１６及び４１８は、単一パーティションで実行する複数のＯＳイメージ４０４、４０６及び４０８をサービスしてもよい。図４Ｂには、本発明の実施形態による代替構成４２４を示す。コンピューティング構成４２４は、複数のパーティション４２６、４２７及び４２８を含む。パーティションは各々、ＯＳイメージ４３２、仮想パーティション４３４、ファームウェア４３８及びコンフィギュレーション空間４４０を含む。複数のＯＳイメージ４３２は各々、それぞれのパーティション４２６、４２７及び４２８において独立して実行する。
【００３６】
各仮想パーティション４３４は、それ自体のブートディスクと、それ自体のＣＰＵと、それ自体のＬＡＮ接続と、その仮想パーティション４３４でホストされるＯＳ４３２及びアプリケーションを実行するために十分なメモリのサブセットとを含んでもよい。この構成に、仮想化ＵＡＲＴインタフェース４３６が含まれ、それを、図４Ａに関連して上述したように各パーティション４２６、４２７及び４２８のファームウェア４３８及びコンフィギュレーション空間４４０で実装してもよい。
【００３７】
バスコンフィギュレーション空間４４０は、各々がパーティション４２６、４２７及び４２８のＯＳイメージ４３２に関連してもよい仮想インタフェース４４２、４４４及び４４６を提供する。仮想インタフェース４４２、４４４及び４４６は、実質的に同様又は同一であってもよい。仮想インタフェース４４２、４４４及び４４６は、標準又は非標準デバイスの仮想化ＰＣＩ列挙を表してもよい。図４Ａに示す構成と同様に、図４Ｂのコンピューティング構成４２４は、仮想インタフェース４４２、４４４及び４４６のいくつか又はすべてとデータを交換しそのデータをデータ転送ハードウェア４５２に通信することができるエミュレータ／マルチプレクサモジュール４５０を含む。
【００３８】
ここで図５を参照すると、本発明の実施形態によるファームウェアランタイムサービスを使用して仮想デバイスアクセスを提供する手続き５００が示されている。データ処理構成のファームウェアの一部を、第１のハードウェアデバイスをエミュレートする仮想化データインタフェースとして使用するために割り当てる（５０２）。第１のハードウェアデバイスは、任意のデバイス、特にＯＳの標準化カーネルコンポーネントを使用してアクセスできるデバイスであってもよい。仮想化データインタフェースを、オペレーティングシステムに提示する（５０４）。たとえば、仮想化インタフェースを、ＰＣＩコンフィギュレーション空間においてセットアップしてもよい。そして、オペレーティングシステムの標準化カーネルコンポーネント（たとえばデバイスドライバ）を使用して仮想化データインタフェースにアクセスする（５０６）。仮想化インタフェースと第２のハードウェアデバイスとの間でデータを交換する（５０８）。この交換５０８は、通常、オペレーティングシステムによる仮想化データインタフェースのアクセスによる。
【００３９】
本発明の実施形態を実施するプロセッサベースの命令は、命令のコンピュータ読取可能媒体の形態及び種々の他の形態で配布することができる、ということが理解されよう。このようなプロセッサベースの命令の本明細書における説明は、配布を実行するために実際に使用される信号搬送媒体の特定のタイプに係らず等しく適用される。コンピュータ読取可能媒体の例には、ＥＰＲＯＭ、ＲＯＭ、テープ、紙、フロッピーディスク、ハードディスクドライブ、ＲＡＭ及びＣＤ−ＲＯＭ等の媒体と、デジタル及びアナログ通信リンク等の伝送タイプ媒体とが含まれる。
【００４０】
本発明の例としての実施形態の上述した説明を、例示及び説明の目的で提示した。それは、網羅的であるようにも、又は発明を開示した正確な形態に限定するようにも意図されていない。上記教示に鑑みて多くの変更及び変形が可能である。本発明の範囲は、この詳細な説明で限定されるのではなく、添付の特許請求の範囲によって定義される、ということが意図されている。
【図面の簡単な説明】
【００４１】
【図１】本発明の実施形態による仮想デバイスアクセスを提供するように構成されたソフトウェアアーキテクチャを示す図である。
【図２】本発明の実施形態によるバスコンフィギュレーション空間において実装される仮想デバイスインタフェースを示す図である。
【図３】本発明の実施形態によるＰＣＩコンフィギュレーション空間において実装される仮想デバイスインタフェースの詳細を示す図である。
【図４Ａ】本発明の実施形態による仮想デバイスインタフェースを使用して単一のパーティションにおいて複数のオペレーティングシステムからの出力を多重化することを示す図である。
【図４Ｂ】本発明の実施形態による仮想デバイスインタフェースを使用して複数のパーティションからの出力を多重化することを示す図である。
【図５】本発明の実施形態による仮想デバイスアクセスを提供する手続きを示す図である。
【符号の説明】
【００４２】
１００・・・コンピューティングアーキテクチャ
１０２・・・仮想デバイスインタフェース
１０４・・・オペレーティングシステム
１０６・・・ファームウエア
１０８・・・ファームウェアブートドライバ
１１０・・・プラットフォーム特化ハードウェア
１１２・・・ＥＦＩ  ＯＳローダ
１１４・・・ＥＦＩブートサービス
１１６・・・ＥＦＩランタイムサービス
１１８・・・プロセッサ（複数可）
１２０・・・メモリ
１２２・・・ブートデバイス
１２４・・・Ｉ／Ｏサブシステム
１２６・・・ＳＡＬランタイムサービス
１２８・・・ＰＣＩコンフィギュレーション空間
１３０・・・他のインタフェース
２００・・・仮想デバイスインタフェース
２０１・・・バスコンフィギュレーション空間
２０２・・・仮想ＵＡＲＴインタフェース
２０４・・・仮想ディスプレイインタフェース
２０６・・・仮想キーボードインタフェース
２０８・・・仮想パラレルインタフェース
２１０・・・トランスレータ
２１２・・・データ転送ハードウエア
２１４・・・コンソールエミュレータ
２１６・・・ネットワーク
２１８・・・ＵＳＢポート
２２０・・・無線通信
２２２・・・汎用
３００・・・仮想インタフェース
３０１、３１３・・・ＰＣＩコンフィギュレーション空間
３０２・・・コンフィギュレーションヘッダ
３０３・・・クラスコードレジスタ
３０４、３１４・・・エミュレーションモジュール
３０６・・・ＦＤインタフェース
３０８・・・ハードウェアインタフェース
３１０・・・インタフェース
３１２・・・第２のヘッダ
３１３・・・ＰＣＩコンフィギュレーション空間
３１６・・・コンソールインタフェース
４００・・・仮想デバイスインタフェース
４０２・・・コンピューティング構成
４０４、４０６、４０８・・・ＯＳ
４１０・・・ファームウェア
４１２・・・バスコンフィギュレーション空間
４１４、４１６、４１８・・・仮想インタフェース
４２０・・・エミュレータ／マルチプレクサ
４２２・・・データ転送ハードウェア
４２４・・・本発明の代替構成
４２６、４２７、４２８・・・パーティション
４３２・・・ＯＳイメージ
４３４・・・仮想パーティション
４３６・・・仮想化ＵＡＲＴインタフェース
４３８・・・ファームウェア
４４０・・・コンフィギュレーション空間
４４２、４４４、４４６・・・仮想インタフェース
４５０・・・エミュレータ／マルチプレクサ
４５２・・・データ転送ハードウェア
【図１】
2006309754.tif 000003
【図２】
2006309754.tif 000004
【図３】
2006309754.tif 000005
【図４Ａ】
2006309754.tif 000006
【図４Ｂ】
2006309754.tif 000007
【図５】
2006309754.tif 000008