(57)【要約】シングル・ルート入出力仮想化（ＳＲ−ＩＯＶ）機能を、レガシー機能として現出するように変換するシステム、及び対応する方法は、レガシー・ホストとＳＲ−ＩＯＶ対応可能なデバイスとを接続するスイッチ・プラットフォームを含む。スイッチ・プラットフォームには、タイプ毎にコンフィグレーション・サイクルを区別し、前記コンフィグレーション・サイクルを処理するようにプログラムしたプロセッサと、コンフィグレーション・サイクルに関するデータを保存する１つ又は複数のローカル・レジスタとを含む。【選択図】図７
2011517497.tif 000002
【特許請求の範囲】
【請求項１】
シングル・ルート入出力仮想化（ＳＲ−ＩＯＶ）機能を、レガシー機能として現出するように変換するシステムであって、
レガシー・ホストとＳＲ−ＩＯＶ対応可能なエンド・デバイスとを接続するスイッチ・プラットフォームを備え、
前記スイッチ・プラットフォームは、タイプ毎にコンフィグレーション・サイクルを区別し、前記コンフィグレーション・サイクルを処理するようにプログラムしたプロセッサと、
前記コンフィグレーション・サイクルに関するデータを保存する１つ又は複数のローカル・レジスタとを備えることを特徴とするシステム。
【請求項２】
前記コンフィグレーション・サイクルは、コンフィグレーション・レジスタにおけるアドレス空間を、前記エンド・デバイスの物理アドレスと関連付けることを特徴とする請求項１に記載のシステム。
【請求項３】
前記エンド・デバイスをＰＣＩｅのＩ／Ｏデバイスとすることを特徴とする請求項１に記載のシステム。
【請求項４】
前記ホスト・プロセッサからの入力メモリ・サイクルを、前記エンド・デバイスが理解可能なメモリ・サイクルに変換する手段を更に備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記エンド・デバイスの代わりに交換デバイスを挿入するホットプラグ操作を検出する手段と、
前記交換デバイスの仮想機能が、前記ホスト・プロセッサにレガシー機能として現出するように、前記交換デバイスをコンフィグレーションする手段とを更に備えることを特徴とする請求項１に記載のシステム。
【請求項６】
エンド・デバイスのＳＲ−ＩＯＶ仮想機能とレガシー・ホスト・プロセッサのアドレス空間との間で変換する方法であって、
前記エンド・デバイスと前記ホスト・プロセッサとの間のスイッチ・プラットフォーム仲介で、前記ホスト・プロセッサからコンフィグレーション・サイクルを受信し、
前記ホスト・プロセッサからの前記コンフィグレーション・サイクルをコンフィグレーション・レジスタと比較し、コンフィグレーション・サイクルのタイプを判定し、
前記受信したコンフィグレーション・サイクルに変換操作を実行し、
コンフィグレーション完了サイクルを、前記ホスト・プロセッサに返すことを含むことを特徴とする方法。
【請求項７】
前記変換したコンフィグレーション・サイクルを前記エンド・デバイスに送信し、
コンフィグレーション完了信号を、前記エンド・デバイスから受信し、
前記受信したコンフィグレーション完了信号を変換して、前記コンフィグレーション完了サイクルを作成することを更に含むことを特徴とする請求項６に記載の方法。
【請求項８】
入力メモリ・サイクルをコンフィグレーション・レジスタにおけるベース・アドレス・レジスタと比較することで、メモリ・アクセス・サイクルを変換することを更に含み、
メモリ・アドレスが変換されることを特徴とする請求項７に記載の方法。
【請求項９】
交換デバイスを前記エンド・デバイスの代わりに挿入するホットプラグ操作の指示を受信し、
コンフィグレーション・サイクルを、スイッチ・プラットフォームに送信し、
前記エンド・デバイスからコンフィグレーション完了サイクルを受信することを更に含むことを特徴とする請求項６に記載の方法。
【請求項１０】
前記スイッチ・プラットフォームにおいて前記交換デバイスに関する情報を保存し、  
前記スイッチ・プラットフォームにおいて前記コンフィグレーション完了サイクルを生成することを更に含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記スイッチ・プラットフォームにおいて前記交換デバイスに関する情報の第１部分を保存し、
前記交換デバイスに関する前記情報の第２部分を前記交換デバイスに送信し、
前記交換デバイスから、前記受信した情報の第２部分に基づくコンフィグレーション完了信号を受信し、
前記保存した情報の第１部分と前記コンフィグレーション完了信号とを組合せて、前記コンフィグレーション完了サイクルを生成し、
前記コンフィグレーション完了サイクルを、前記ホスト・プロセッサに送信することを更に含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記コンフィグレーション・サイクルを前記交換デバイスに送信し、
前記交換デバイスから、コンフィグレーション完了信号を受信し、
前記受信したコンフィグレーション完了信号を変換し、
前記変換した信号を、コンフィグレーション完了サイクルとして、前記ホスト・プロセッサに送信することを更に備えることを特徴とする請求項９に記載の方法。
【請求項１３】
レガシー・ホスト・プロセッサが、ＳＲ−ＩＯＶエンド・デバイスの割り当てられた仮想機能となり得るように、変換を行なうシステムであって、
前記ホスト・プロセッサと前記エンド・デバイスとの間にインテリジェント・スイッチ・ファブリック仲介を備え、
前記インテリジェント・スイッチ・ファブリックは、
仮想機能が発生するエンド・デバイスのタイプを識別する処理手段と、
前記エンド・デバイスに関する選択情報を保存する保存手段と、
入力されたホストの規定宛先情報を、対応するエンド・デバイスの規定宛先情報に変換する手段と、
前記エンド・デバイスに関する入力されたエンド・デバイス完了情報を、前記ホスト・プロセッサに関する対応する完了情報に変換する手段と、
コンフィグレーション・サイクル及びコンフィグレーション完了サイクルを、前記スイッチ・ファブリックで受信する手段とを備えることを特徴とするシステム。
【請求項１４】
交換デバイスで前記エンド・デバイスを交換するホットプラグ操作を発見する手段と、
前記交換デバイスを構成する手段とを更に含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記スイッチ・ファブリックにおいて、前記エンド・デバイスのバス／デバイス／機能情報に関する情報を保存する手段と、
前記スイッチ・ファブリックにおいて前記コンフィグレーション完了サイクルを生成することを更に含むことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記スイッチ・ファブリックにおいて、前記エンド・デバイスに関する情報の第１部分を保存する手段と、
前記エンド・デバイスに関する前記情報の第２部分を、前記エンド・デバイスに送信する手段と、
前記エンド・デバイスから、前記受信した情報の第２部分に基づくコンフィグレーション完了信号を受信する手段と、
前記保存した情報の第１部分と、前記コンフィグレーション完了信号を組合せて、前記コンフィグレーション完了サイクルを生成する手段と、
前記コンフィグレーション完了サイクルを、前記ホスト・プロセッサに送信する手段とを更に含むことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記コンフィグレーション・サイクルを前記エンド・デバイスに送信する手段と、
前記エンド・デバイスから、コンフィグレーション完了信号を受信する手段と、
前記受信したコンフィグレーション完了信号を変換する手段と、
前記変換した信号を、コンフィグレーション完了サイクルとして、前記ホスト・プロセッサに送信する手段とを更に含むことを特徴とする請求項１３に記載のシステム。
【請求項１８】
交換デバイスで前記エンド・デバイスを交換するホットプラグ操作を検出する手段と、
前記交換デバイスからのバス／デバイス／機能情報を交換する手段であって、前記交換デバイスの機能が、前記ホスト・プロセッサにレガシー機能として現出することを更に含むことを特徴とする請求項１３に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ・システムでは、様々な周辺構成要素又は入出力（Ｉ／Ｏ）デバイスを採用している。例えば、典型的なコンピュータ・システムは、モニタ、キーボード、マウス、ネットワーク制御装置、単一または複数の一連のディスク・ドライブ、又は任意にはプリンタを含むことが多い。サーバ等の高性能コンピュータ・システムでは、Ｉ／Ｏデバイス要件はより複雑となる。
【０００２】
コンポーネント・バスを介してＩ／Ｏデバイスに接続したコンピュータ・システムのホスト・プロセッサの例が、ＰＣＩ−ＳＩＧが発表したＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ローカル・バス仕様で規定されている。システムの初期化中、ホスト・プロセッサは、ＰＣＩバスに関する各ＰＣＩデバイスのデバイス・ドライバをロードする。典型的なＰＣＩデバイスは、各ＰＣＩデバイスのコンフィグレーション・メモリ空間に配置される複数のコンフィグレーション・レジスタを含む。例えば、ベンダーＩＤ、デバイスＩＤ、リビジョン・レジスタ等の識別レジスタを含むコンフィグレーション・レジスタを、デバイス・ドライバ及びホスト・システムで初期化又は通常操作中に読み出して、ＰＣＩデバイスを識別する。典型的には、識別レジスタは、ＰＣＩデバイスの製造プロセス中に固定値で組込まれており、ホストのデバイス・ドライバ又はオペレーション・システム（ＯＳ）では変更できない。その結果、ＰＣＩデバイスの特定のＩＤを探すレガシー・デバイス・ドライバは、異なるベンダーＩＤ又は異なるデバイスＩＤ等の異なる識別情報を持つＰＣＩデバイスとは動作しない。
【０００３】
ＰＣＩエクスプレス（ＰＣＩｅ）は、ＰＣＩを改良したもので、様々なコンピューティング・プラットフォームや通信プラットフォームの高性能な汎用Ｉ／Ｏ相互接続を規定する。ＰＣＩ使用モデル、ロード−ストア・アーキテクチャ、ソフトウェア・インタフェース等の主要なＰＣＩｅ属性は、ＰＣＩｅでも維持されるが、ＰＣＩのパラレル・バス実装については、ＰＣＩｅでは高度にスケーラブルな完全なシリアル・インタフェースに置換えられる。ＰＣＩｅは、高度なポイント・ツー・ポイント相互接続、スイッチに基づく技術、パケット化プロトコルを利用して、向上した性能特徴を提供する。
【０００４】
入出力仮想化（ＩＯＶ）は、Ｉ／Ｏデバイスを、同一の又は異なるＣＰＵで動作する複数のオペレーティング・システム（ＯＳ−システム・イメージと呼ばれることもある）で使用できる能力に付けられた名称である。現代のコンピューティング・システム及び記憶システムではＩＯＶを使用するが、これはＩＯＶにより、情報技術リソースの管理を負荷バランシングを通して向上させ、十分活用されていないリソースが有効に使用可能になるからである。例えば、ＩＯＶにより、コンピュータ・メモリ等の限定的なリソース組を、多数の異なるオペレーティング・システム間で共有してリソースを利用可能にすることで、アイドル・タイムを短縮して、更に十分に使用可能になる。従って、各ＯＳ用に別々なメモリを有した場合それぞれのメモリの利用率が低くなってしまうが、その代わりに、共有メモリを全てのオペレーティング・システムに使用可能にしたことで、共有メモリの利用率は、どの別々なリソースの利用率よりも高くなっている。
【０００５】
ＰＣＩｅ技術を組み込んだコンピューティング・システム及び通信システムが増大する一方で、多くのレガシー（例えば、ＰＣＩ）システムが依然として使用されている。そうしたレガシー・システムを、最新のＰＣＩｅシステムと組合せる場合、これらのレガシー・システムと最新ＰＣＩｅシステムとの通信で問題が生じることがある。
【発明の概要】
【０００６】
シングル・ルート入出力仮想化（ＳＲ−ＩＯＶ）機能を、レガシー機能として現出するように、変換するシステムを開示する。このシステムは、レガシー・ホストとＳＲ−ＩＯＶ対応可能なデバイスとを接続するスイッチ・プラットフォームを含む。スイッチ・プラットフォームは、タイプ毎にコンフィグレーション・サイクルを区別し、これらのコンフィグレーション・サイクルを処理するようにプログラムしたプロセッサと、コンフィグレーション・サイクルに関するデータを保存する１つ又は複数のローカル・レジスタとを含む。また、スイッチ・プラットフォーム・プロセッサにより、スイッチ・プラットフォームの他の操作を監視又は制御する。
【０００７】
ＳＲ−ＩＯＶ仮想機能とレガシー・ホスト・プロセッサのアドレス空間との間で変換を行なう方法も開示する。この方法は、ホスト・プロセッサからコンフィグレーション・サイクルを受信するステップと、ホスト・プロセッサからのコンフィグレーション・サイクルをコンフィグレーション・レジスタと比較するステップと、コンフィグレーション・サイクルのタイプを判定するステップと、受信したコンフィグレーション・サイクルで変換操作を実行するステップと、コンフィグレーション完了サイクルを、ホスト・プロセッサに返すステップとを含む。
【０００８】
更に、レガシー・ホスト・プロセッサが、ＳＲ−ＩＯＶエンド・デバイスの割当てられた仮想機能となり得るように、変換を行なうシステムも開示する。このシステムは、ホスト・プロセッサとエンド・デバイスとの間に、インテリジェント・スイッチ・ファブリック仲介を含む。スイッチ・ファブリックには、仮想機能が生じるエンド・デバイスのタイプを識別する処理手段と、エンド・デバイスに関する選択情報を保存する保存手段と、入力されたホストの宛先情報を対応するエンド・デバイスの規定宛先情報に変換する手段と、エンド・デバイスの入力エンド・デバイス完了情報を、ホスト・プロセッサの対応する完了情報に変換する手段とを含む。このシステムには更に、コンフィグレーション・サイクル及びコンフィグレーション完了サイクルをスイッチ・ファブリックで受信する手段を含む。
【図面の簡単な説明】
【０００９】
【図１】シングル・ルート・アーキテクチャを使用するＰＣＩｅ対応可能なコンピューティング・システムのブロック図である。
【図２】図１のシステム用コンフィグレーション空間の実施例を示す。
【図３】図１のシステムの仮想機能を利用するよう構成したレガシー・コンピューティング・システムに追加する例示的要素を示す。
【図４Ａ】図１の仮想機能が、図３のシステムに対するレガシー機能として現出するように、様々なコンフィグレーション・サイクルを変換する例示的メカニズムを示す。
【図４Ｂ】図１の仮想機能が、図３のシステムに対するレガシー機能として現出するように、様々なコンフィグレーション・サイクルを変換する例示的メカニズムを示す。
【図４Ｃ】図１の仮想機能が、図３のシステムに対するレガシー機能として現出するように、様々なコンフィグレーション・サイクルを変換する例示的メカニズムを示す。
【図５】図４Ａ〜図４Ｃに関して記載した変換を実現するのに使用する例示的なスイッチ・プラットフォーム及び関連するコントローラを示す。
【図６】メモリ変換を実現する例示的なメカニズムを示す。
【図７】図３のシステムで実行する例示的なルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１０】
詳細な説明では以上の図面を参照するが、同じ番号では同様のアイテムを指すものとする。
【００１１】
以下の説明では、ＰＣＩ−Ｅｘｐｒｅｓｓにおいて相互に接続したデバイスから構成するシステムをＰＣＩｅシステムと呼び、接続する数種類のデバイスをＰＣＩｅデバイスと呼び、これらのデバイスを接続するバスをＰＣＩｅバスと呼び、通信で使用するパケットをＰＣＩｅパケットと呼ぶ。ＰＣＩｅ以前の技術を使用しているシステムを、レガシー・システムと呼び、対応するレガシー・デバイス及びバスを有する。
【００１２】
図１を参照すると、ＰＣＩｅシステム１００は、ＰＣＩｅのツリー型トポロジの「ルート」としての役割を果たすものとして、ホスト・バスを介してＣＰＵ１２０と接続し、メモリ・バスを介してメモリ１３０と接続するルート・コンプレックス１１０を含むと共に、ファンアウト機能をＰＣＩｅバスに提供するＰＣＩｅスイッチ１４０と、ＰＣＩｅバスを介して接続するＩ／Ｏデバイス１５０とを含む。ＣＰＵ１２０を、汎用プロセッサ、埋め込みプロセッサ、又は専用処理要素としてもよい。メモリ１３０を、汎用メモリ又は埋め込みメモリとしてもよい。一般に、ＰＣＩｅのツリー型トポロジのＣＰＵ１２０に隣接したルート・コンプレックス１１０の側を上流と呼び、Ｉ／Ｏデバイス１５０に隣接したルート・コンプレックス１１０の側を下流と呼ぶ。図１では、２つのＩ／Ｏデバイス１５０を、ＰＣＩｅスイッチ１４０に接続しているが、接続可能なＩ／Ｏデバイス１５０の数は２つに限定にされるものではない。ＣＰＵ１２０で提供する設定ソフトウェアを、ＰＣＩシステム１００を構成するのに使用する。
【００１３】
各ＰＣＩｅデバイス１５０を、ルート・ポート１１５を通してルート・コンプレックス１１０に接続する。複数のＰＣＩｅデバイス１５０を単一のルート・ポート１１５に接続する場合には、スイッチ１４０等のスイッチを、ルート・ポート１１５とＰＣＩｅデバイス１５０の間に配置する。
【００１４】
プロセッサ１２０と関連して、仮想化仲介１６０を示したが、仮想化仲介１６０を使用して、システム１００の基盤となるハードウェアを抽象化して、各システム・イメージ（ＳＩ）１７０をシステム自体の仮想コンピューティング・システムで表示する。システム・イメージ１７０は、システム１００におけるアプリケーションを実行するのに使用するオペレーティング・システム等のソフトウェア要素とする。シングル・ルートＰＣＩマネージャ（ＳＲ−ＰＣＩＭ）１６５を、システムのＳＲ−ＩＯＶ能力を構成し、物理機能（ＰＦ）及び仮想機能（ＶＦ）を管理し、関連するエラー・イベントを処理するのに使用するソフトウェアとする。物理機能は、ＳＲ−ＩＯＶ能力をサポートし、ＳＲ−ＰＣＩＭ１６５、ＶＩ１６０、又はＳＩ１７０にアクセス可能なＰＣＩｅ機能である。仮想機能は、ＳＩ１７０が直接アクセス可能な軽量なＰＣＩｅ機能である。仮想機能は、異なるシステム・イメージ１７０で、連続的に共有できる。
【００１５】
最後に、図１で示したシステム１００は、「シングル・ルート」システムであることに、注意されたい。他のコンピューティング・システムでは、マルチ・ルートを使用してもよい。
【００１６】
ＰＣＩｅスイッチ１４０には、上流のＰＣＩ−ＰＣＩブリッジと、内部ＰＣＩバスと、下流のＰＣＩ−ＰＣＩブリッジとを、備える（次に構成要素を示す）。上流のＰＣＩ−ＰＣＩブリッジと下流のＰＣＩ−ＰＣＩブリッジには、各ブリッジの下流に接続したＰＣＩｅリソース空間に関する情報を保持する各コンフィグレーション・レジスタを備える。ＰＣＩｅリソース空間は、ＰＣＩｅシステムで使用する複数のアドレス下で占める空間である。
【００１７】
図２は、ＰＣＩｅタイプ０コンフィグレーション・レジスタの内部配列の例を示す略図である。アドレスの例として、デバイスＩＤはベンダーに特定の装置番号を指し、ベンダーＩＤはメーカー番号を指し（両方共オフセットは００ｈ）、クラス・コード（オフセットは０８ｈ）はデバイス属性を指す。アドレス・オフセット１０ｈ〜２４ｈ及び３０ｈを、ベース・アドレス・レジスタに使用する。ＳＲ−ＰＣＩＭ１６５に含む設定ソフトウェアで、レジスタ値を調べて、デバイスを識別できる。Ｉ／Ｏデバイスのアドレス空間を割り当てる際に、ベース・アドレス・レジスタを、ベース・アドレスを配線するＳＲ−ＰＣＩＭ１６５の設定ソフトウェアで使用する。デバイス識別及び関連プロセスは、ＰＣＩｅコンフィグレーション・サイクル中に行なわれる。こうしたコンフィグレーション・サイクルは、システム起動中及び場合によってはホットプラグ操作後に、行なわれる。以下で説明するように、本明細書で開示する変換デバイスでは同じレジスタ値を使用して、ＳＲ−ＩＯＶ仮想機能を、レガシー・ホストにレガシー機能として現出させる。
【００１８】
図１に戻ると、ＰＣＩｅに基づくシステム１００の起動時、初期コンフィグレーション・サイクル中に、ＰＣＩｅシステム１００に存在する全てのＰＣＩｅデバイスを、設定ソフトウェア１６０で検索する。特に、システム１００の全てのＰＣＩバスをスキャンし、ＰＣＩバス毎にある各スロットを、スロットを占領するＰＣＩｅデバイスの属性についてチェックする。次に、見つかった各ＰＣＩｅデバイスが必要とするＰＣＩｅリソース空間を連続的に割り当てて、コンフィグレーションを獲得する。例えば、図１のＰＣＩｅシステム１００では、ＰＣＩｅスイッチ１４０の下流に接続したＩ／Ｏデバイス１５０を、デバイスが必要とする夫々のリソース空間に割り当て、割り当てた空間のサイズに従い、図２で示したコンフィグレーション・レジスタにおける値を設定する。
【００１９】
ＰＣＩｅは、未使用のスロットへ／からＩ／Ｏデバイスのプラグを活電中に断接できるホットプラグ機能を提供する。ホットプラグは、Ｉ／Ｏデバイス等を、システムの他のデバイスを使用しながら、物理的に着脱可能にする技術である。従来のＰＣＩｅシステムでは、主なホットプラグ機能は、例えば、初期コンフィグレーション・サイクル中に図１のＰＣＩｅスイッチ１４０に取付けたＩ／Ｏデバイス１５０が故障した際、同様なＩ／Ｏデバイス１５０と交換する場合に、役に立つ。Ｉ／Ｏデバイス１５０をスロットに挿入すると、下流のＣＰＵ１２０とＩ／Ｏデバイス１５０との間にリンクを確立し、電気信号の同期や信用情報の交換等を自動的にアクティブにする。ホットプラグ・レジスタをオンにし、同時に割込みをＣＰＵ１２０に対して発生させる。割込みがトリガーとなり、ＳＲ−ＰＣＩＭ１６５の設定ソフトウェアを呼び出して、挿入したＩ／Ｏデバイス１５０をコンフィグレーションし、ホットプラグ・レジスタをクリアする。このコンフィグレーション・プロセスの完了後に、挿入したＩ／Ｏデバイス１５０をイネーブルにする。
【００２０】
システム１００ではホットプラグ操作でＩ／Ｏデバイスを交換可能にできるが、Ｉ／Ｏデバイス１５０を未使用のスロットに設置すると、ＰＣＩｅスイッチ１４０が保持するコンフィグレーション・レジスタや、既に割当てられているＰＣＩｅリソース空間に関する情報を含む他のＩ／Ｏデバイスが保持するベース・アドレス・レジスタを含む、全てのＰＣＩシステム１００を、リコンフィギュレーションする必要があるかも知れない。その訳は、初期コンフィグレーション・サイクル中、バス番号をＰＣＩｅバスに割り当て、デバイス番号、機能番号、３２ビットのＩ／Ｏ空間、３２ビットのメモリ空間、及び必要に応じて６４ビットのメモリ空間を、ＰＣＩｅスイッチ１４０及びＩ／Ｏデバイス１５０に連続的に割当てるが、これらは未使用のスロットには割当てない。従って、Ｉ／Ｏデバイス１５０を未使用のスロット（例えば、ＰＣＩｅスイッチ１４０の）に挿入すると、挿入したＩ／Ｏデバイス１５０に割り当てるＰＣＩｅリソース空間が、当前記空間を使用している別のＩ／Ｏデバイス１５０を妨害するかも知れない。
【００２１】
ＳＲ−ＩＯＶは、仮想機能と呼ばれる新タイプの機能を規定する新たなＰＣＩｅ仕様である。仮想機能は、従来の（レガシー）ＰＣＩ機能とは大幅に異なり、ＳＲ−ＩＯＶデバイスを取付けるホストのＰＣＩコードも変更する必要がある。ホストのＰＣＩコードを変更する代わりの手段として、仮想機能を通常のＰＣＩ機能のように見せることができる。この変換を、ＰＣＩホストが実行するコンフィグレーション・プロセスの一部として、生じさせる。この変換を、ホストと仮想機能との間に存在する中間デバイスで実行する。
【００２２】
図３では、図１のシステムの仮想機能を利用するよう構成したコンピューティング・システムのレガシー・ホスト・プロセッサに追加する例示的要素について、説明している。図３に示すように、コンピューティング・システム３００は、レガシー・ホスト・プロセッサ３１０を含み、プロセッサ３１０を、更なるスイッチ・プラットフォーム３２０を介して、１つ又は複数のＩ／Ｏデバイス１５０と接続する。Ｉ／Ｏデバイス１５０は、全ての関連する点において、図１に示した対応するデバイスと同様である。即ち、図３に示したＩ／Ｏデバイス１５０は、ＳＲ−ＩＯＶ仕様による仮想機能を実施する。一例として、Ｉ／Ｏデバイス１５０1は、ＳＲ−ＩＯＶ仕様に準じて構成された単一のイーサネット（登録商標、以下同じ）・ポートで、４つの仮想イーサネット・ポートを表すことができる。このように、４つの仮想イーサネット・ポートの何れかを、図１に示したシステム・イメージ１７０等、特定のシステム・イメージに割り当ててもよい。また、ホスト・プロセッサ３１０は、４つの仮想イーサネット・ポートの何れにもアクセスできる。しかしながら、ホスト・プロセッサ３１０は、ＰＣＩｅのＳＲ−ＩＯＶデバイスではないので、まずホスト・プロセッサ３１０に対して変換操作を完了して、Ｉ／Ｏデバイス１５０1とインターフェース接続する必要がある。通常、そうした変換は、コンピュータ・システム３００の起動中に、様々なコンフィグレーション・サイクルを実施して、接続したＩ／Ｏデバイス１５０をイネーブルにすると発生する。この変換を、スイッチ・プラットフォーム３２０で実行する。
【００２３】
図４Ａ〜図４Ｃでは、様々なコンフィグレーション・サイクルを、Ｉ／Ｏデバイス１５０の仮想機能が、レガシー機能として図３のホスト・プロセッサに現出するように、変換する例示的なメカニズムについて説明している。コンフィグレーション・サイクルのタイプには、図４Ａ〜図４Ｃに示したようなものがある。図４Ａでは、スイッチ・プラットフォーム３２０によって、ホストの規定宛先バス又はデバイス機能をエンド・デバイス（即ち、Ｉ／Ｏデバイス１５０）の規定宛先バス／デバイス／機能番号に対応させるように変えて、ホスト・プロセッサ３１０から入力されたタイプＡのコンフィグレーション・サイクルを変更する。１実施例では、タイプＡのコンフィグレーション・サイクルは、図２に示したように、アドレス空間０８ｈ、０Ｃｈ、２８ｈ、２Ｃｈ、３４ｈ、３８ｈに関するものである。こうして変更したコンフィグレーション・サイクルを、Ｉ／Ｏデバイス１５０から特定の情報を得るために、Ｉ／Ｏデバイス１５０に送出する。Ｉ／Ｏデバイス１５０からホスト・プロセッサ３１０に送出したコンフィグレーション完了サイクル信号を、同様に、スイッチ・プラットフォーム３２０で変換する。
【００２４】
図４Ｂでは、コンフィグレーション・サイクルを、スイッチ・プラットフォーム３２０で、信号をＩ／Ｏデバイス１５０に送出せずに、遮断し、処理する。１実施例では、この変換を、図２に示したように、コンフィグレーション空間のアドレス空間１０ｈ〜２４ｈ及び３０ｈに適用する。スイッチ・プラットフォーム３２０により、データをローカル・レジスタに書き込み、データをローカル・レジスタから読み出す。ローカル・レジスタに保存したＩ／Ｏデバイスについての情報に基づいて、スイッチ・プラットフォーム３２０でコンフィグレーション・サイクルを局所的に生成する。
【００２５】
図４Ｃでは、コンフィグレーション・サイクルは、コンフィグレーション・サイクルがＩ／Ｏデバイス１５０を通過する前に、宛先バス／デバイス／機能番号を変更させるが、データの一部を、このデータをローカル・レジスタに書き込む又は読み出すスイッチ・プラットフォーム３２０で処理する。スイッチ・プラットフォーム３２０において、入力Ｉ／Ｏデバイスの規定完了バス／デバイス／機能番号を、対応するホスト・プロセッサ３１０の完了したバス／デバイス／機能番号と一致させるように変換して、Ｉ／Ｏデバイス１５０から入力されたコンフィグレーション・サイクルを変更し、こうして変更した信号を、スイッチ・プラットフォーム３１０のローカル・レジスタからのデータと組合せて、出力するコンフィグレーション完了サイクルを作成する。
【００２６】
図５は、例示的なスイッチ・プラットフォーム３２０のブロック図である。図５では、スイッチ・プラットフォーム３２０を、プロセッサ３２２及びローカル・レジスタ３２４を含んで、視認できる。プロセッサ３２２を、ホスト・プロセッサ３１０からのコンフィグレーション・サイクルを遮断し、図４Ａ〜図４Ｃの３メカニズムの何れかを、必要な変換を実現するために適用するかを決定するよう、プログラムする。変換によっては、プロセッサ３２２により、ローカル・レジスタ３２４からデータを読み出す、又はデータを書き込む。
【００２７】
図６では、メモリ変換を実現する例示的メカニズムを説明している。コンフィグレーション・サイクルについては前述同様に、ホスト・プロセッサ３１０がメモリにアクセスするのに、コンフィグレーション空間レジスタ（図２に示した例）のために、メモリ・アドレスの何らかの変換が必要であるかも知れない。特に、コンフィグレーション空間レジスタ１８０は、ベース・アドレス・レジスタ（ＢＡＲ）を、アドレス・オフセット１０ｈ〜２４ｈ及び３０ｈとして示している。これらのアドレス・オフセットを、ホスト・プロセッサ３１０によりメモリアドレス機能を正確に解釈するように変換する。図６に示したように、ホスト・プロセッサ３１０は、メモリ・サイクルを発行し、このサイクルをスイッチ・プラットフォーム３２０で受取り、ローカルＢＡＲと比較する。一致が見つかった場合（アドレスがヒットした場合）、このアドレスを、プロセッサ３２２を使用して変換する。  比較して全く一致が見つからなかった場合は、プロセッサ３２２は、Ｕｎｓｕｐｐｏｒｔｅｄ  Ｒｅｑｕｅｓｔを発行する。
【００２８】
図７は、図３のシステムで実行される例示的なルーチン６００を説明するフローチャートである。このルーチンはブロック６０５から開始する。ブロック６１０では、スイッチ・プラットフォーム３２０でホスト・プロセッサ３１０からコンフィグレーション・サイクルを受信する。ブロック６１５では、コンフィグレーション・サイクルにおいて、特定のエンド・ポイント・デバイスに関して、プロセッサ３２２でコンフィグレーション・バス／デバイス／機能情報を比較する。ブロック６２０では、プロセッサにより、どのタイプのコンフィグレーション・サイクルを処理するかを判定する。ブロック６２５では、プロセッサ３２２により、ホスト・デバイスから意図するエンド・デバイスへの、必要なバス／デバイス／機能変換を実行する。
【００２９】
ブロック６３０では、プロセッサが、コンフィグレーション・サイクルがタイプＡ、Ｂ又はＣかを注記する。コンフィグレーション・サイクルがタイプＡ又はＣでなければ、ルーチン６００はブロック６４０に移動し、コンフィグレーション・サイクルはスイッチ・プラットフォーム３２０で終了する。しかしながら、コンフィグレーション・サイクルがタイプＡ又はＣのどちらかであれば、ルーチンはブロック６４５に移動して、コンフィグレーション・サイクルをエンド・デバイスに送る。ブロック６５０では、エンド・デバイスで適切に処理した後に、エンド・デバイスは、コンフィグレーション完了サイクルを返す。コンフィグレーション完了サイクルを変換し（ブロック６５５）、ルーチン６００は、ホスト・コンピュータに送信するブロック６６０に移動し、次に終了６６５する。
【図１】
2011517497.tif 000003
【図２】
2011517497.tif 000004
【図３】
2011517497.tif 000005
【図４Ａ】
2011517497.tif 000006
【図４Ｂ】
2011517497.tif 000007
【図４Ｃ】
2011517497.tif 000008
【図５】
2011517497.tif 000009
【図６】
2011517497.tif 000010
【図７】
2011517497.tif 000011
2011517497.tif 000012
【国際調査報告】
2011517497.tif 000013
2011517497.tif 000014