专利摘要:
データスイッチをプロキシコントローラと組み合わせて開示し、このデータスイッチは、少なくとも1つの入出力(I/O)装置と、メモリを含む少なくとも1つのサーバーとの間で、データトラフィック及び制御トラフィックをルーティングするように構成され、このメモリは、一組のデータバッファ、及びコマンド/状態記述子のリストを含むアドレス空間を有する。このデータスイッチは:i)パケットヘッダーを検査することによって異なる種類のトラフィックを区別し;ii) データトラフィックは、少なくとも1つのI/O装置と少なくとも1つのサーバーとの間で直接ルーティングし;iii) 制御トラフィックは、プロキシコントローラを経由してルーティングするように構成されている。このようにして、プロキシコントローラは、(一般に帯域幅の10%未満で構成される)制御トラフィックのみを処理すればよいので、I/O装置を仮想化することができる。
公开号:JP2011507065A
申请号:JP2010536539
申请日:2008-12-01
公开日:2011-03-03
发明作者:ピーカルスキー マレック
申请人:ヴァーテンシス リミテッド;
IPC主号:G06F13-14
专利说明:

[0001] 本発明の好適例は、入出力(I/O)装置、例えばイーサネット(登録商標)コントローラ、ファイバーチャンネル・コントローラの仮想化に関するものである。]
背景技術

[0002] コンピュータネットワークの実現では、イーサネット(登録商標)コントローラ及びストレージ・コントローラのようなI/Oリソースは、従来、サーバー内に組み込まれ、各サーバーは、それ自身のI/Oリソースの組を有する。しかし、高性能I/Oリソースはしばしば、サーバー自体より高価になり得るので、複数のサーバーが、これらのサーバーの外部にある1つ以上のI/Oリソースを共用することが有利である。さらに、これらのサーバーの1つ以上が故障した場合でも、関連するI/Oリソースはまだ使用することができるので、こうした構成はよりロバスト(頑健)であり得る。]
[0003] I/O仮想化は、標準的なI/O装置と標準的なサーバーとの間でアクセスを変換して、これらのI/O装置を複数のサーバー間で共用することができ、この共用がサーバー及びI/O装置の両方に対して隠蔽されるようにする手法である。]
[0004] I/O仮想化は多数の利点を有する。各仮想システムは、それ自身の専用I/Oリソースを必要とするのに対し、多数の物理的構成では、クライアントまたはサーバー上で利用可能なI/O装置は、その数が不十分であるか、あるいは、各アプリケーションに必要なI/O接続性及び帯域幅を提供するための適正な種類ではないことがある。]
[0005] さらに、集中管理型I/Oリソースの使用は、ネットワーク及びシステムの管理を簡略化しつつ、I/Oのスケーラビリティ(拡張性)を改善する。ブレードサーバー及びラックマウントサーバーは共に、必要時に、必要なリソースにアクセスすることができる。さらに、I/Oは集中化したスイッチから管理することができるので、管理者はリソースをより容易かつ効率的に割り当てることができる。]
[0006] 集中化によるI/O仮想化への取り組みは、ネットワークI/O負荷平衡化及び帯域幅管理を最大化するための新たな機会をネットワーク管理者に提供する。例えば、サーバーが追加的帯域幅を必要とする場合に、ネットワーク管理者は、より大きいI/O容量を割り当てることができる。これに加えて、サーバーが必要以上のI/Oリソースを有する場合は、これらのリソースを、より必要としている他のサーバーに再割り当てすることができる。]
[0007] I/O仮想化は、より高いシステム信頼性に役立つ見込みがある。ネットワーク・インフラストラクチャ(基盤)全体にわたって、周辺装置及びポートにおける過度の冗長性を解消して、ネットワーク内の構成要素数を低減することによって、故障率が最小化される。]
[0008] ネットワーク管理者は、I/Oリソースを性能上の必要性により良好に整合させることができ、これにより、使用するカード、ケーブル及びポートをより少数にすることができるので、I/O仮想化は、システムコストを劇的に低減することも約束する。]
[0009] 今日の一般的なI/O装置仮想化の解決法は次の通りである:
1.VMware(登録商標)、Xen(登録商標)、及びマイクロソフト・バーチャルサーバー(Microsoft Virtual Server)(登録商標)のようなサーバー仮想化ソフトウェアによる仮想装置のエミュレーション。これは、単一の物理的サーバー上の複数の仮想マシンが、単一の物理的I/O装置を共用することを可能にする。複数の物理的サーバー間でI/Oリソースを共用する能力は存在しない。
2.イーサネット(登録商標)またはインフィニバンド(Infiniband)(登録商標)のような、I/Oネットワークと組み合わされた高レベルのI/O仮想化。これは、複数のサーバーが、特化したI/Oゲートウェイ機器によって提供される抽象化されたI/Oサービスへのアクセスを共用することを可能にする。
3.PCI-SIG IOV規格によって規定される低レベル、PCIベースのI/O仮想化。これは、普遍的なPCIプロトコルへの拡張を規定して、複数のサーバーがコモディティ(標準品)のI/O装置を共用することを可能にする。
4.PCI IOV的な特徴を既存の装置に追加する、帯域内仮想化装置の追加による、レガシー(旧式的)I/O装置の低レベル、PCIベースのI/O仮想化。これは、2005年に見られたNextIOの非営利技術デモンストレータを代表例とする。]
[0010] 高レベルの解決法(上記1及び2)は、I/O仮想化の管理的利点のいくつかをもたらすが、大きなコストを要し、厳しい性能ペナルティ(性能上の不利)を頻繁に伴う。このことは、I/Oトラフィックは、変換/カプセル化のいくつかの層を経なければならず、そしてハードウェアI/O装置をソフトウェアでエミュレートするということによる。低性能のI/Oにとっては、このことは許容可能な解決法であるが、高I/O性能システムでは、これらの解決法は非実用的である。]
[0011] PCI-SIG IOVの解決法(上記3)は、ネイティブのI/Oインタフェースが真のマルチホストのネットワークになることを可能にし、そしてI/O装置が複数のサーバーをサポートすることができるようにI/O装置を変更することによって、これらのコスト/性能の問題を解決する。エミュレーション及びプロトコルの変換は存在しない。しかし、既存のPCIインフラストラクチャが、完全に前方(上位)互換性ではないという実用上の問題が存在する。特にこの問題を解決するためには、種々の新式のI/O装置及びスイッチ装置を設計し、実現し、市場に出さなければならず、複雑な相互依存性があれば、この技術を導入することのできる方法が明らかでない。]
[0012] NextIOは、2005年にPCIIOVデモンストレータ(実証装置)を製造し(上記4)、PCI IOVデモンストレータは、(例えばPCI-SIG規格通りの)IOVスイッチを実現し、かつ帯域内仮想化フロントエンド装置を各装置に追加することによって、既存のI/O装置を使用している。しかし、フロントエンド装置はコモディティI/O装置に比べて非常に高価であるので、このことは商業的に実現可能な解決法ではなかった。]
発明が解決しようとする課題

[0013] 従って、既存のI/O装置、(これだけではないが)例えばPCII/O装置に仮想化を加え、さらに、既存の解決法に関して以上で概説した問題を回避することが望まれる。]
課題を解決するための手段

[0014] 以下の説明では、本発明のPCI(Peripheral Component Interconnect Standard(周辺装置相互接続規格)、PCIエクスプレス(登録商標)を含む)実現を参照するが、異なる環境では他の具体例が用途を見出し得ることは明らかである。]
[0015] 本発明の第1の態様によれば、プロキシコントローラと組み合わされるデータスイッチが提供され、このデータスイッチは、少なくとも1つの入力/出力(I/O)装置と、メモリを含む少なくとも1つのサーバーとの間で、データトラフィック及び制御トラフィックをルーティング(経路設定)するように構成され、上記メモリは、一組のデータバッファ、及びコマンド/状態記述子(ステータス・ディスクリプタ)のリストを有し、このデータスイッチは:
i)パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;
ii) データトラフィックは、少なくとも1つのI/O装置と少なくとも1つのサーバーとの間で直接ルーティング(経路設定)し;
iii) 制御トラフィックは、プロキシコントローラを経由してルーティングする
ように構成されている。]
[0016] 本発明の第2の態様によれば、少なくとも1つの入力/出力(I/O)装置と少なくとも1つのサーバーとの間で、プロキシコントローラと組み合わされるデータスイッチを経由して、データトラフィック及び制御トラフィックをルーティングする方法が提供され、このサーバーは、一組のデータバッファ及びコマンド/状態記述子のリストを有するメモリを含み、このデータスイッチは:
i)パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;
ii) データトラフィックは、少なくとも1つのI/O装置と少なくとも1つのサーバーとの間で直接ルーティング(経路設定)し;
iii) 制御トラフィックは、プロキシコントローラを経由してルーティングする
ように構成されている。]
[0017] プロキシコントローラは、上記記述子を読み込み、この記述子のフォーマットを理解するように構成されている。大部分の記述子は、少なくとも1つのデータバッファ及び/または後続するコマンドまたは状態記述子への少なくとも1つのポインタを有するが、一部の記述子はポインタを含まないことがある(例えば、単純な「リセット」コマンド用の記述子)。プロキシコントローラはこれらの記述子のフォーマットを理解することができるので、従って、どのポインタがデータバッファへのポインタであり、どのポインタが後続する記述子へのポインタかがわかる。メモリ内の記述子とデータバッファの配分は任意である。プロキシコントローラは、記述子へのポインタとデータバッファへのポインタとを容易に区別することができるように、当該プロキシコントローラが有する記述子のコピーを修正し、このことは一般に、ポインタ中の1つ以上の非上位ビットを割り当てて、このポインタが記述子ポインタであるか否かを示すことによって行う。さらに、あるポインタが後続する記述子へのポインタであるかデータバッファポインタであるかを示すために使用する以外の1つ以上の非上位ビットを修正するように当該ポインタを修正して、複数のサーバーまたはサーバーメモリのどれが、元の未修正の記述子またはデータバッファを含んでいるかを示すことができる。]
[0018] 修正に使用する非上位ビットの数は、サーバーの数が与えられれば、無理なく可能な限り少なく選定して、スイッチハードウェアを簡略化することが好ましい。例えば、1ビットを使用して、記述子とデータバッファとを区別することができ、そして追加的にNビットを使用して、最大2N台のサーバーをサポートする発信元サーバーを識別することができる。]
[0019] このようにして、I/O装置は、データバッファ及び記述子がいくつかのサーバーメモリ空間内に散在している通常の(例えばPCI)物理アドレス空間内ではなく、記述子とデータバッファの配分が構造化された、単一の統合された仮想アドレス空間内で(無意識のうちに)動作するように作製されている。]
[0020] このような、仮想アドレス空間内の記述子及びデータバッファの構造化した配置は、データスイッチが、制御トラフィック(記述子アクセス)をプロキシコントローラ経由でルーティングすることを可能にするが、(データバッファへの、またはデータバッファからの)データトラフィックを、スイッチによって、I/O装置と適切なサーバーとの間で直接ルーティングすることも可能にする。]
[0021] 換言すれば、スイッチが制御トラフィックとデータトラフィックとを識別して分離し、制御トラフィックをプロキシコントローラにリダイレクト(転送)することができるように、プロキシコントローラは制御トラフィックを修正し、このことは、ハードウェア仮想化「コプロセッサ」として実現することができ、データトラフィックはI/O装置とサーバーとの間で直接ルーティングされる。]
[0022] 好適例では、非上位ビットの修正は、アドレス空間内の一組の領域内への記述子のマッピング、及びこのアドレス空間内の他の不連続な一組の領域内へのデータバッファのマッピングとして見ることができ、これにより、スイッチは、これらの二組の(領域の)一方へのアクセスと他方へのアクセスとを容易に区別することができることは明らかである。単純な好適例では、このことは、各組を1つの領域のみで構成することによって比較的簡単にすることができるが、複数の領域で構成される組は、その代わりに、より複雑な好適例において実現することができる。]
[0023] 上記マッピングは、プロキシコントローラによって、及びスイッチによって共に行われる。一般に、プロキシコントローラは、上記ポインタを修正することによって、フォワードマッピング(例えば、複数のサーバー空間から単一の仮想空間へのマッピング)を行う。スイッチは、上記ポインタを元の形に戻すことによって、リバースマッピング(仮想空間から複数のサーバー空間へのマッピング)を行う。このことは、スイッチ及びプロキシコントローラは、サーバー及びI/O装置に対して本質的にトランスペアレントであることを意味する。]
[0024] PCIでは、制御トラフィックは一般に、全帯域幅の約6〜8%のみを構成し、このことは、NextIOの解決法のように高い実現コストを生じさせることなしに、あるいは、現在のソフトウェアの解決法におけるように低性能を生じさせることなしに、プロキシコントローラをハードウェアで実現することができることを意味する。プロキシコントローラは、全帯域幅の残りの92〜94%を構成するデータトラフィックにアクセスするかデータトラフィックを処理する必要がない。データトラフィックは、通常のようにスイッチによってルーティングされ、プロキシコントローラを完全にバイパスする。]
[0025] 本願に記載するデータスイッチは、これに限らないが例えばPCIスイッチであり、通常は、サーバーとI/O装置との間で次のトランザクション型を搬送する:
i) サーバーからI/O装置へのコマンド。
ii) サーバーによるI/O装置内のリソースの状態読出し。
iii) I/O装置が、サーバーメモリ内のコマンド記述子を読出し中。
iv) I/O装置が、状態記述子をサーバーメモリに書込み中。
v) I/O装置が、サーバーメモリ内のデータバッファを読出し/書込み中。]
[0026] スイッチは、上記トランザクションのすべてを識別し、型v)以外のすべてをプロキシコントローラにリダイレクト(転送)する。(帯域幅の90%以上を占める)トランザクション型v)は、通常のように進めることができる。トランザクション型i)及びii)は、所定伝搬方向用の一意的なフィールドをPCIパケットヘッダー内に有するので、容易に識別される(トランザクション型i)及びii)は共に、サーバーからI/O装置へのサーバー主導のトランザクションである(即ち、最初のパケットが下流に送信される)のに対し、トランザクション型iii)、iv)及びv)はすべて、I/O装置からサーバーへの装置主導のトランザクションである)。しかし、スイッチが型v)を型iii)及びiv)から分離するためには、以下の節で説明する新たなメカニズムを必要とする。]
[0027] データバッファは、メモリ内の当該データバッファのアドレスのみによって、コマンド/状態記述子と区別することができる。現実のシステムでは、すべてのデータバッファがメモリ内に任意に散在する例が多数存在するので、すべてのデータバッファ及び記述子が、すべてのサーバーメモリ空間内に存在する場所をスイッチが記憶していることは、実用的でない。I/O装置のデータバッファへのアクセスを、コマンド/状態記述子へのアクセスから分離するために、I/O装置は、通常のPCI物理アドレス空間ではなく、単純な「仮想アドレス空間」内で(無意識のうちに)動作するように作製されている。この仮想アドレス空間は、すべてのコマンド/状態記述子のリストを、明確に規定された領域内に有する。スイッチは、メモリアドレスを単純な値と比較しさえすればよいので、このことは、スイッチが、型v)のトランザクションを型iii)及びiv)のトランザクションから分離することを容易にする。]
[0028] 制御トランザクションとデータトランザクションとを分離すると共に、スイッチは、特定データバッファが配置されているサーバーを知る必要がある。コマンド/状態記述子と同様に、プロキシコントローラは、各サーバーのデータバッファを特定の仮想アドレス空間領域内にマッピングすることができ、これにより、スイッチは単純なアドレス比較によってサーバーを識別することができる。スイッチは、上位ビットを用いてサーバーを識別すると共に、これらのビットをトランザクション上に戻すこともできる。]
[0029] プロキシコントローラは、次のように仮想アドレス空間を生成することができる:
I/O動作を開始するために、サーバーは:
1.一組のデータバッファをメモリ内に生成し、
2.コマンド/状態記述子のリストをメモリ内に作成することができる。これらの記述子は、データバッファへのポインタ、及び「次の」コマンド/状態記述子へのポインタも有する。
3.サーバーは、最初のコマンド記述子へのポインタを有するI/O装置に直接、コマンドを送信する(型i)のトランザクション)。従来は、I/O装置がこのことを利用して、最初のコマンド記述子をメモリから読み出していたが、今度は、スイッチがこのコマンドをプロキシコントローラにリダイレクトする。
4.プロキシコントローラは、コマンド記述子を読み込む。プロキシコントローラは、記述子のフォーマットを理解し、従って、どれがデータバッファへのポインタであり、どれが次の記述子へのポインタであるかを知る。プロキシコントローラは、他の記述子へのポインタが(例えば最上位ビットを設定することによって)アドレス空間の上位領域内にマッピングされるように、当該プロキシコントローラが有する記述子のコピーを修正する。データバッファポインタは、各サーバーのバッファが連続領域内にマッピングされるように修正される。
5.プロキシコントローラは、サーバーからの元の直接的なコマンドを、今度は第1記述子の新たな位置を指示(ポイント)するように修正して、このコマンドをI/O装置に転送する。
6.I/O装置は、このコマンド中のポインタを用いて、最初のコマンド記述子をフェッチする。スイッチは、これが上位アドレスからの記述子クセスであることを識別して、要求をプロキシコントローラにリダイレクトし、プロキシコントローラは、修正した記述子の内容で応答する。
7.I/O装置がデータバッファにアクセスすると、スイッチは下位アドレスによってこのことを識別して、トランザクションを適切なサーバーに直接ルーティングする。
8.I/O動作が完了すると、I/O装置は「割込み(インタラプト)」によってサーバーに信号通知し、この「割込み」は、単にサーバーメモリ内の所定位置へのメモリ書込みである。コマンド/状態記述子と同様に、この「割込み」は、初期化中に、プロキシコントローラによって上位アドレス領域内に再マッピングされており、これにより、スイッチは、この「割込み」を容易にプロキシコントローラにリダイレクトすることができる。
ことができる。]
[0030] 上記メカニズムにより、スイッチは、低帯域幅の制御トラフィックを、高帯域幅の制御トラフィックから分離して、低帯域幅の制御トラフィックのみをプロキシコントローラに送信することができる。こうして、このプロキシコントローラは、仮想化機能(本明細書では説明しない)を提供することができる。]
[0031] また、重要なこととして、この動作中には、サーバーもI/O装置も、何か異常な(非仮想化システムとは異なる)ことが発生したことには気が付かない。本発明の実施例の動作は全体的に、サーバー及びI/O装置に対してトランスペアレントである。]
[0032] 例えば、PCIスイッチの通常動作を修正し、I/O装置を仮想アドレス空間内で動作させることによって、本発明の実施例は、サーバーとI/O装置との間にあるPCIインタフェース内の制御パスとデータパスとの厳密な分離を可能にする。]
[0033] このことは、プロキシコントローラまたは仮想化コプロセッサが、高帯域幅のデータパスを取り扱う負担なしに、専ら制御パス上で動作することを可能にする。]
[0034] 本発明の好適な実施例は、これに加えて、要求されたデータバッファを有するサーバーをスイッチが容易に識別することを可能にし、従って、上記トランザクションをいくつかのサーバーのうち1つに対して適切にルーティングすることを可能にする。このことは、単一のI/O装置をいくつかのサーバー間で共用することを可能にする。]
[0035] 本発明の実施例を、ネイティブなPCIの解決法として実現して、ソフトウェア仮想化に関連する高コスト及び低性能を回避することができる。]
[0036] さらに、本発明の実施例は、PCIマルチルートIOV(PCI Multi-Root IOV)のような新たな規格に準拠するために、I/O装置の集合の再設計を必要としない。本発明の実施例は、既存のレガシー(旧式的)I/O装置と協働することができる。]
[0037] さらに、本発明の実施例は、高帯域幅のデータパスを、サーバーとI/O装置との間で直接ルーティングすることを可能にすることによって、プロキシコントローラまたは仮想化コプロセッサのデータ処理要求を簡略化する。このことは、プロキシコントローラまたはコプロセッサを、低コストのハードウェアで実現することができ、従って、商業的に実現可能なシステムに要求されるコスト/性能をもたらすことができることを意味する。]
[0038] 以上で説明したポインタ操作は、スイッチによって実行される、最上位の制御トラフィックのプロキシコントローラへの再ルーティングの一態様に過ぎないことは明らかである。サーバーとI/O装置との間の大部分のトランザクションについては、制御トラフィック自体はパケットヘッダーから容易に識別することができ、従って、特別な処理または準備を必要としない。複雑性が生じるのは、I/O装置によって開始されるメモリアクセスにおいてのみであり(この点では、記述子アクセスとデータバッファアクセスとは通常、区別がつかないことによる)、このメモリアクセスでは、ポインタ修正またはポインタ操作が必要になる。]
[0039] 本明細書の説明及び特許請求の範囲全体を通して、「備える」及び「含む」、及びこれらの語の変化形、例えば「備えている」は、「含むが、それに限定されない」ことを意味し、他の成分、添加物、構成要素、整数値またはステップを排除せず、排除することを意図したものではない。]
[0040] 本明細書の説明及び特許請求の範囲全体を通して、各構成要素は複数存在し得るが、文脈上そう解釈すべきでない場合を除く。特に、本明細書は、単数並びに複数を意図しているが、文脈上そう解釈すべきでない場合を除く。]
[0041] 本発明の特定態様、実施例、または例に関連して説明した特徴、整数値、特性、化合物、化学的成分または化学基は、不適合でなければ、本明細書で説明した他のあらゆる態様、実施例または例に適用可能であることは明らかである。]
[0042] 本発明をより良く理解し、本発明を実施することのできる方法を示すために、以下、例として図面を参照しながら説明する。]
図面の簡単な説明

[0043] 本発明の実施例のアーキテクチャを示す図である。
2つのサーバーアドレス空間の、仮想アドレス空間内へのマッピングを示す図である。]
実施例

[0044] 図1に、一対のサーバー2、3と一対のnon-Multi Root Aware(non-MRA:非マルチルート・アウェア)I/O装置4、5間に相互接続されたデータスイッチ1を略図形式で示す。図からわかるように、データトラフィック6は、サーバー2、3とI/O装置4、5との間にあるスイッチ1を通して直接ルーティングされるのに対し、制御トラフィック7は、プロキシコントローラまたは仮想化コプロセッサ8に指向される。トラフィック6、7の帯域幅は一般に約20Gbit/sであり、トラフィックの90%以上はデータトラフィック6であり、従って、スイッチング/制御目的とは無関係である。] 図1
[0045] プロキシコントローラ8は、既存のPCII/O装置4、5に仮想化を加える実用的手段であり、従来技術の解決法の欠点の一部を回避するのに役立つ。プロキシコントローラ8は、ネイティブなPCI I/O相互接続に基づき、従って、性能を低下させるプロトコル変換及びソフトウェアエミュレーションを回避する。プロキシコントローラ8は、新式のPCI-SIG Multi-Root IOV装置(と互換性はあるが)を必要としない。プロキシコントローラ8は、NextIO技術デモンストレータのコスト及び他の実用上の問題(電力、空間)を抱えることがない。プロキシコントローラ8は、スイッチ1がPCI制御パス7とデータパス6とを分離し、制御トラフィック7をハードウェア仮想化「コプロセッサ」8にリダイレクトすることができるように、PCIスイッチ1の通常の挙動を変更することによって、このことを行う。制御トラフィック7は、PCI帯域幅の約6〜8%のみを構成し、従って、コプロセッサ8は、NextIOの解決法におけるような高い実現コスト、あるいはソフトウェアの解決法にけるような低性能を生じさせることなしに、ハードウェアで実現することができる。仮想化機能は、データへのアクセスを必要としない。高帯域幅データは、PCIスイッチ1内で通常のようにルーティングされ、コプロセッサ8を完全にバイパスする。]
[0046] このことは、サーバーバッファをコプロセッサ8の仮想アドレス空間内にマッピングすることによって達成される。こうしたマッピングの例を図2に示し、サーバー2のアドレス空間9を左側に示し、サーバー3のアドレス空間10を右側に示し、仮想アドレス空間11を中央に示す。図からわかるように、各アドレス空間9及び10内の記述子ポインタD0、D1、D2は、仮想アドレス空間11の上位にマッピングされる。このことは、関連する記述子内のポインタを修正することによって、例えば、ポインタの最上位ビットを、データバッファポインタの等価なビットの値とは異なる値(0または1)に設定することによって達成される。] 図2
[0047] 次に、I/O装置は、これらのポインタを用いて、メモリアクセス要求を発行することによって記述子及びデータバッファにアクセスし、これらのポインタは、要求パケットのヘッダー内のアドレスフィールド中に配置する。]
[0048] このようにして、型v)のデータトラフィックと、型iii)またはiv)の制御トラフィックとを区別し、このトラフィックを、パケットヘッダーの単純な検査による要求に応じて、サーバー2、3またはコプロセッサ8に対してルーティングすることは、スイッチ1にとって簡単なことになる。]
[0049] さらに、いくつかのサーバー2、3が単一のI/O装置4を共用することを可能にするために、パケットヘッダーの次の4ビットを用いて、どちらの特定サーバー2、3が制御パケットの意図した受信機であるかを識別することができる。4ビットを使用することは、16台のサーバーが1つのI/O装置を共用することを可能にする。追加的ビット(即ち、先行ビットに続く5ビット)を借りることは、32台のサーバーが1つのI/O装置を共用することを可能にする。]
[0050] 例えば、再び図2を参照すれば、サーバー2内のデータバッファからのデータは、仮想アドレス空間11内の、記述子ポインタDをマッピングした領域の直下にある連続領域にマッピングし、サーバー3のデータバッファからのデータは、仮想アドレス空間11内の、サーバー2のデータバッファからのデータをマッピングした領域の直下にある連続領域にマッピングする。] 図2
[0051] コプロセッサ8及びスイッチ1は、パケットヘッダーの、最上位ビット及び後続するビット以外の部分を使用するように構成するか、プログラムすることができる。]
[0052] 本発明の実施例のアドレスマッピング態様の具体例を挙げるために、次のシーケンス(順序)を考えることができる。このことは、最上位ビットを制御/データトラフィック識別用に使用し、後続する4ビットをサーバー識別用に使用することを仮定する:
・I/O装置4を仮想化して、最大16台のサーバー2、3間で共用する。
・コプロセッサ8は、64ビットサーバーのアドレス空間の上位5ビットが未使用である(すべて「0」である)ものと仮定する。
・コプロセッサ8は、記述子及びデータバッファを、ビット59〜62がサーバーIDを含むように修正する。
・コプロセッサ8は、ビット「63」=1となるように記述子ポインタを修正する。
・スイッチ1は、ビット63=「1」では、I/O装置4からのすべてのメモリアクセスを、コプロセッサ8にリダイレクトする。
・スイッチ1は、ビット63=「0」では、I/O装置4からのすべてのメモリアクセスを、ビット59:62によって指示されるサーバー2、3にルーティングすると共に、これらのビットをクリアする。]
权利要求:

請求項1
プロキシコントローラと組み合わされるデータスイッチであって、少なくとも1つの入力/出力(I/O)装置と、メモリを含む少なくとも1つのサーバーとの間で、データトラフィック及び制御トラフィックをルーティングするように構成され、前記メモリは、一組のデータバッファ、及びコマンド/状態記述子のリストを含むアドレス空間を有するデータスイッチにおいて、このデータスイッチが、i)パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;ii) データトラフィックは、前記少なくとも1つのI/O装置と前記少なくとも1つのサーバーとの間で直接ルーティングし;iii) 制御トラフィックは、前記プロキシコントローラを経由してルーティングするように構成されていることを特徴とするデータスイッチ。
請求項2
前記プロキシコントローラが、前記記述子を読み込んでコピーし、前記記述子内で、前記データバッファへのポインタである第1クラスのポインタと、後続する記述子へのポインタである第2クラスのポインタとを区別するように構成されていることを特徴とする請求項1に記載のデータスイッチ。
請求項3
前記プロキシコントローラが、前記第1クラスのポインタと前記第2クラスのポインタとが前記スイッチによって互いに区別可能になるように、当該プロキシコントローラが有する前記記述子のコピーを修正するように構成されていることを特徴とする請求項2に記載のデータスイッチ。
請求項4
前記プロキシコントローラが、前記第1クラスのポインタ中の1つ以上の非上位ビットを第1設定値に設定し、前記第2クラスのポインタ中の1つ以上の非上位ビットを第2設定値に設定するように構成されていることを特徴とする請求項3に記載のデータスイッチ。
請求項5
前記第1クラスのポインタ及び/または前記第2クラスのポインタ中の追加的な非上位ビットを、複数のサーバーのうち、元の未修正の前記記述子及び/または前記データバッファを含むサーバーについての指標を与えるように設定することを特徴とする請求項4に記載のデータスイッチ。
請求項6
前記プロキシコントローラが、前記サーバーの前記アドレス空間を、前記プロキシコントローラの仮想アドレス空間内にマッピングするように構成されていることを特徴とする請求項1〜5のいずれかに記載のデータスイッチ。
請求項7
前記記述子を、前記仮想空間の第1組の領域内にマッピングし、前記データバッファを、前記仮想アドレス空間の第2組の領域内にマッピングすることを特徴とする請求項6に記載のデータスイッチ。
請求項8
前記第1組の領域と前記第2組の領域とが、不連続な領域であることを特徴とする請求項7に記載のデータスイッチ。
請求項9
前記第1組の領域及び前記第2組の領域の各々が、それぞれ単一の第1領域及び単一の第2領域で構成されることを特徴とする請求項7または8に記載のデータスイッチ。
請求項10
前記スイッチが、前記仮想アドレス空間の前記第1組の領域へのアクセスを、前記プロキシコントローラを経由してルーティングし、前記仮想アドレス空間の前記第2組の領域へのアクセスを、前記I/O装置と前記サーバーとの間で直接ルーティングするように構成され、前記第1組の領域へのアクセスは制御トラフィックから成り、前記第2組の領域へのアクセスはデータトラフィックから成ることを特徴とする請求項7、8または9に記載のデータスイッチ。
請求項11
データトラフィック及び制御トラフィックを、少なくとも1つの入力/出力(I/O)装置と少なくとも1つのサーバーとの間で、プロキシコントローラと組み合わされるデータスイッチを経由してルーティングする方法であって、前記サーバーが、一組のデータバッファ及びコマンド/状態記述子のリストを有するメモリを含む方法において、前記データスイッチが、i)パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;ii) データトラフィックは、前記少なくとも1つのI/O装置と前記少なくとも1つのサーバーとの間で直接ルーティングし;iii) 制御トラフィックは、前記プロキシコントローラを経由してルーティングすることを特徴とする方法。
請求項12
前記プロキシコントローラが、前記記述子を読み込んでコピーし、前記記述子内で、データバッファへのポインタである第1クラスのポインタと、後続する記述子へのポインタである第2クラスのポインタとを区別することを特徴とする請求項11に記載の方法。
請求項13
前記プロキシコントローラが、前記第1クラスのポインタと前記第2クラスのポインタとが前記スイッチによって互いに区別可能になるように、当該プロキシコントローラが有する前記記述子のコピーを修正することを特徴とする請求項12に記載の方法。
請求項14
前記プロキシコントローラが、前記第1クラスのポインタ中の1つ以上の非上位ビットを第1設定値に設定し、前記第2クラスのポインタ中の1つ以上の非上位ビットを第2設定値に設定することを特徴とする請求項13に記載の方法。
請求項15
前記第1クラスのポインタ及び/または前記第2クラスのポインタ中の追加的な非上位ビットを、複数のサーバーのうち、元の未修正の前記記述子及び/または前記データバッファを含むサーバーについての指標を与えるように設定することを特徴とする請求項14に記載の方法。
請求項16
前記プロキシコントローラが、前記サーバーの前記アドレス空間を、前記プロキシコントローラの仮想アドレス空間内にマッピングすることを特徴とする請求項11〜15のいずれかに記載の方法。
請求項17
前記記述子を、前記仮想空間の第1組の領域内にマッピングし、前記データバッファを、前記仮想アドレス空間の第2組の領域内にマッピングすることを特徴とする請求項16に記載の方法。
請求項18
前記第1組の領域と前記第2組の領域とが、不連続な領域であることを特徴とする請求項17に記載の方法。
請求項19
前記第1組の領域及び前記第2組の領域の各々が、それぞれ単一の第1領域及び単一の第2領域で構成されることを特徴とする請求項17または18に記載の方法。
請求項20
前記仮想アドレス空間の前記第1組の領域へのアクセスを、前記プロキシコントローラを経由してルーティングし、前記仮想アドレス空間の前記第2組の領域へのアクセスを、前記I/O装置と前記サーバーとの間で直接ルーティングし、前記第1組の領域へのアクセスは制御トラフィックから成り、前記第2組の領域へのアクセスはデータトラフィックから成ることを特徴とする請求項17〜19のいずれかに記載の方法。
請求項21
実質的に、図面を参照して本明細書で説明されているか図面に図示されている、プロキシコントローラと組み合わされるデータスイッチ。
請求項22
実質的に、図面を参照して本明細書で説明されているか図面に図示されている、データトラフィック及び制御トラフィックをルーティングする方法。
类似技术:
公开号 | 公开日 | 专利标题
EP3042297B1|2018-05-23|Universal pci express port
US10417160B2|2019-09-17|System and method for extended peripheral component interconnect express fabrics
US9448957B2|2016-09-20|Unified system area network and switch
US8489778B2|2013-07-16|Method and apparatus for using a single multi-function adapter with different operating systems
US10095645B2|2018-10-09|Presenting multiple endpoints from an enhanced PCI express endpoint device
US9201830B2|2015-12-01|Input/output | expansion response processing in a peripheral component interconnect express | environment
Pfister2001|An introduction to the infiniband architecture
US8719817B2|2014-05-06|Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management
KR101782342B1|2017-09-27|가상 스토리지 타겟 오프로드 기법
US9990140B2|2018-06-05|Methods of providing access to I/O devices
KR100666515B1|2007-01-11|저장 및 포워드 스위치 장치, 시스템 및 방법
US7299266B2|2007-11-20|Memory management offload for RDMA enabled network adapters
US8359408B2|2013-01-22|Enabling functional dependency in a multi-function device
US6813653B2|2004-11-02|Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US7380046B2|2008-05-27|Method, apparatus, and computer program product for routing packets utilizing a unique identifier, included within a standard address, that identifies the destination host computer system
US7386637B2|2008-06-10|System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US7398337B2|2008-07-08|Association of host translations that are associated to an access control level on a PCI bridge that supports virtualization
US20160085718A1|2016-03-24|Nvm express controller for remote access of memory and i/o over ethernet-type networks
US8412863B2|2013-04-02|Storage apparatus and virtual port migration method for storage apparatus
US7664909B2|2010-02-16|Method and apparatus for a shared I/O serial ATA controller
US6697878B1|2004-02-24|Computer having a remote procedure call mechanism or an object request broker mechanism, and data transfer method for the same
TWI439867B|2014-06-01|動態實體及虛擬多重路徑輸入/輸出
US7602774B1|2009-10-13|Quality of service for server applications
US8156270B2|2012-04-10|Dual port serial advanced technology attachment | disk drive
US6622193B1|2003-09-16|Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
同族专利:
公开号 | 公开日
US9021125B2|2015-04-28|
JP5469081B2|2014-04-09|
GB2455347A|2009-06-10|
GB2455347B|2012-04-11|
GB0723939D0|2008-01-23|
US20090150563A1|2009-06-11|
CN101889263A|2010-11-17|
WO2009071941A1|2009-06-11|
CN101889263B|2013-04-03|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-11-26| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111125 |
2012-12-17| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121217 |
2013-01-09| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130108 |
2013-04-04| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130403 |
2013-06-26| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130625 |
2013-09-14| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130913 |
2013-12-26| TRDD| Decision of grant or rejection written|
2014-01-08| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140107 |
2014-02-06| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140130 |
2014-02-07| R150| Certificate of patent or registration of utility model|Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5469081 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2014-03-24| S531| Written request for registration of change of domicile|Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
2014-03-24| S533| Written request for registration of change of name|Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
2014-03-24| S111| Request for change of ownership or part of ownership|Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
2014-03-24| S631| Written request for registration of reclamation of domicile|Free format text: JAPANESE INTERMEDIATE CODE: R313631 |
2014-04-01| R350| Written notification of registration of transfer|Free format text: JAPANESE INTERMEDIATE CODE: R350 |
2014-04-28| RD02| Notification of acceptance of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |
2017-02-07| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-02-06| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-02-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-01-30| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-02-01| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2022-02-02| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]