(57)【要約】【課題】仮想レーンのＩＯ性能を最大化するようにバッファ空間を再割り当てするためのシステム及び方法を提供する。【解決手段】  このシステム及び方法は、未使用中の仮想レーンからバッファ空間を取り、当該未使用中のバッファ空間を使用中の仮想レーンに再割り当てする。例えば、４つの仮想レーンをサポートする実施形態において、２つの仮想レーンだけが使用されている場合、このシステム及び方法は、使用中の２つの仮想レーンによる使用のために他の未使用中の２つの仮想レーンからのバッファ空間を再割り当てする。【選択図】  図６
2008287717.tif 000002
【特許請求の範囲】
【請求項１】
ハブ及び複数のブリッジを有するコンピュータ・システムにおいて仮想レーン資源を割り当てるための方法であって、
前記コンピュータ・システムにおいて利用可能なブリッジを識別するステップを含み、
前記利用可能なブリッジの各々が複数の仮想レーンを含み、前記複数の仮想レーンの各々がそれぞれの仮想レーン資源を含み、前記複数の仮想レーンが割り当て済みの仮想レーン及び未割り当て済みの仮想レーンを含み、
前記未割り当て済みの仮想レーンからの仮想レーン資源を前記割り当て済みの仮想レーンに再割り当てするステップをさらに含む、方法。
【請求項２】
前記複数のブリッジの各々ごとにデータ・フローの方向を決定するステップをさらに含み、
前記再割り当てするステップが、前記データ・フローの方向を考慮に入れる、請求項１に記載の方法。
【請求項３】
仮想レーン資源の粒度を決定するステップをさらに含み、
前記再割り当てするステップが、前記仮想レーン資源の粒度を考慮に入れる、請求項１に記載の方法。
【請求項４】
前記複数のブリッジの各々が入力ポート及び出力ポートを含み、
前記再割り当てするステップが、ポートが入力ポート又は出力ポートの何れであるかを考慮に入れる、請求項１に記載の方法。
【請求項５】
前記複数のブリッジがループ構成及びストリング構成のうち少なくとも１つの形態で構成され、
前記再割り当てするステップが、前記複数のブリッジが前記ループ構成又は前記ストリング構成のうち何れの形態で構成されているかを考慮に入れる、請求項１に記載の方法。
【請求項６】
前記ハブ及び前記複数のブリッジがリンクを介して結合され、
前記リンクが、InfiniBand プロトコル及び PCI Express プロトコルのうち少なくとも１つに準拠する、請求項１に記載の方法。
【請求項７】
コンピュータ・システムであって、
プロセッサと、
前記プロセッサに結合されたハブと、
前記プロセッサに結合された複数のブリッジと、
前記プロセッサによって実行可能な命令から成るコンピュータ・プログラム・コードを記録したコンピュータ使用可能媒体とを備え、
前記命令が、
前記複数のブリッジを識別する動作を実行するように構成され、
前記複数のブリッジの各々が複数の仮想レーンを含み、前記複数の仮想レーンの各々がそれぞれの仮想レーン資源を含み、前記複数の仮想レーンが割り当て済みの仮想レーン及び未割り当て済みの仮想レーンを含み、
前記命令が、
前記未割り当て済みの仮想レーンからの仮想レーン資源を前記割り当て済みの仮想レーンに再割り当てする動作を実行するようにさらに構成されている、コンピュータ・システム。
【請求項８】
前記命令が、
前記複数のブリッジの各々ごとにデータ・フローの方向を決定する動作を実行するようにさらに構成され、
前記再割り当てする動作が、前記データ・フローの方向を考慮に入れる、請求項７に記載のコンピュータ・システム。
【請求項９】
前記命令が、
仮想レーン資源の粒度を決定する動作を実行するようにさらに構成され、
前記再割り当てする動作が、前記仮想レーン資源の粒度を考慮に入れる、請求項７に記載のコンピュータ・システム。
【請求項１０】
前記複数のブリッジの各々が入力ポート及び出力ポートを含み、
前記再割り当てする動作が、ポートが入力ポート又は出力ポートの何れであるかを考慮に入れる、請求項７に記載のコンピュータ・システム。
【請求項１１】
前記複数のブリッジがループ構成及びストリング構成のうち少なくとも１つの形態で構成され、
前記再割り当てする動作が、前記複数のブリッジが前記ループ構成又は前記ストリング構成のうち何れの形態で構成されているかを考慮に入れる、請求項７に記載のコンピュータ・システム。
【請求項１２】
前記ハブ及び前記複数のブリッジがリンクを介して結合され、
前記リンクが、InfiniBand プロトコル及び PCI Express プロトコルのうち少なくとも１つに準拠する、請求項７に記載のコンピュータ・システム。
【請求項１３】
コンピュータ・システムであって、
プロセッサと、
前記プロセッサに結合されたハブと、
前記プロセッサに結合された複数のブリッジと、
仮想レーン資源を再割り当てするためのシステムとを備え、
前記仮想レーン資源を再割り当てするためのシステムが、
前記複数のブリッジを識別するためのモジュールを有し、
前記複数のブリッジの各々が複数の仮想レーンを含み、前記複数の仮想レーンの各々がそれぞれの仮想レーン資源を含み、前記複数の仮想レーンが割り当て済みの仮想レーン及び未割り当て済みの仮想レーンを含み、
前記仮想レーン資源を再割り当てするためのシステムが、
前記未割り当て済みの仮想レーンからの仮想レーン資源を前記割り当て済みの仮想レーンに再割り当てするためのモジュールをさらに有する、コンピュータ・システム。
【請求項１４】
前記仮想レーン資源を再割り当てするためのシステムが、
前記複数のブリッジの各々ごとにデータ・フローの方向を決定するためのモジュールをさらに有し、
前記再割り当てするためのモジュールが、前記データ・フローの方向を考慮に入れる、請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記仮想レーン資源を再割り当てするためのシステムが、
仮想レーン資源の粒度を決定するためのモジュールをさらに有し、
前記再割り当てするためのモジュールが、前記仮想レーン資源の粒度を考慮に入れる、請求項１３に記載のコンピュータ・システム。
【請求項１６】
前記複数のブリッジの各々が入力ポート及び出力ポートを含み、
前記再割り当てするためのモジュールが、ポートが入力ポート又は出力ポートの何れであるかを考慮に入れる、請求項１３に記載のコンピュータ・システム。
【請求項１７】
前記複数のブリッジがループ構成及びストリング構成のうち少なくとも１つの形態で構成され、
前記再割り当てするためのモジュールが、前記複数のブリッジが前記ループ構成又は前記ストリング構成のうち何れの形態で構成されているかを考慮に入れる、請求項１３に記載のコンピュータ・システム。
【請求項１８】
前記ハブ及び前記複数のブリッジがリンクを介して結合され、
前記リンクが、InfiniBand プロトコル及び PCI Express プロトコルのうち少なくとも１つに準拠する、請求項１３に記載のコンピュータ・システム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願の主題は、「Dynamically Reassigning Virtual Lane Resources」と題する、米国特許出願第１１／７５１１１９号（２００７年５月２１日出願）の主題に関連する。
【技術分野】
【０００２】
本発明は、コンピュータの入出力（ＩＯ）性能を向上させることに係り、さらに詳細に説明すれば、仮想レーンのＩＯ性能を最大化するようにバッファ割り振りを再割り当てすることに係る。
【背景技術】
【０００３】
最近の社会では、コンピュータに対する依存度が継続的に増加しているので、コンピュータ技術は、増大した性能要求に対応するために多くの面で進歩しなければならなかった。多くの場合、増大した性能要求を満たすためには、より速くより複雑なハードウェア・コンポーネントを提供することが望ましい。さらに、多くのアプリケーションでは、プロセッサや、記憶装置、ネットワーク接続等の周辺コンポーネントのような複数のハードウェア・コンポーネントは、総合的なシステム性能を向上させるために並列に動作される。
【０００４】
開発努力が向けられた１つの特定分野は、コンピュータによって利用されるハードウェア・コンポーネントを管理するという分野である。例えば、これらのハードウェア・コンポーネントは、記憶装置、ネットワーク接続、ワークステーション、アダプタ、コントローラ及びこれらのコンポーネントをコンピュータのプロセッサに接続するために利用される他の相互接続ハードウェア装置を含む。一般に、ＩＯ資源とも呼ばれる周辺コンポーネントは、プロセッサとＩＯ資源の間の通信をパスする「ファブリック」を形成するための１つ以上の中間の相互接続ハードウェア装置を介して、コンピュータに結合される。
【０００５】
高性能コンピュータの設計では、ＩＯ性能は、当該設計の通信ニーズを処理するために相互接続ハードウェア装置の複雑な構成を必要とすることがある。ある場合には、これらの通信ニーズは、コンピュータのプロセッサが収容される筐体とは別個で且つ当該筐体に結合される追加の筐体を必要とするほどに十分に大きくなることがある。
【０００６】
複雑な設計では、ＩＯアダプタのような周辺コンポーネントは、コンピュータの主筐体又は補助筐体の一方又は両方に配列されるスロットを使用する、ＩＯファブリックに結合される。他のコンポーネントは、他の方法で、例えば、ケーブル及び他のタイプのコネクタを介して、ＩＯファブリックに結合される。しかし、これらの他のタイプのコネクタも、スロットと呼ばれる。従って、使用されるコネクタのタイプに拘わらず、ＩＯスロットは、ＩＯ資源がＩＯファブリックを介してコンピュータと通信するための、接続点又はＩＯ終了点を表す。
【０００７】
高性能コンピュータの設計では、システム内で利用可能なＩＯスロットの数は、数百まで拡大することができる。多数のＩＯスロットに対処する場合、ＩＯ機能は、ＩＯドロワーを使用して、プロセッサ複合体から分離することができる。これらのＩＯドロワーをプロセッサ複合体に接続するために、ＩＯ機能は、２つのコンポーネント、すなわちハブ及びブリッジに分割される。ハブとは、プロセッサ複合体（プロセッサ・ノードとも呼ばれる）に直接接続される、ＩＯ機能の部分を意味する。ブリッジとは、ハブに接続する、ＩＯドロワー内のコンポーネントを意味する。
【０００８】
ＩＯドロワーの設計に依存して、ＩＯドロワー当たり１つ以上のＩＯブリッジが存在する。システムの規模が拡大するとともに、ＩＯハブの数が増加し、従ってＩＯブリッジの数も増加する。複数のＩＯブリッジを単一のハブに接続する場合、これらのブリッジを繋ぎ合わせて、ループ構成又はストリング構成の形態でハブに接続することができる。ハブとブリッジとの間でデータをパスするためのバスは、InfiniBand 又はPCI Express のような業界基準のバスである。InfiniBand 又はPCI Express プロトコルに準拠するバスは、種々のコンポーネント間でデータをパスするために、「仮想レーン」と呼ばれる概念を使用する。各仮想レーンは、データを両方向でパスするために、設定された量のバッファ空間を割り当てられる。仮想レーンに関係する１つの問題は、コスト及び空間の制限に起因して、仮想レーン当たりのバッファ空間の量が制限されるということである。この制限は、システム及び個々のＩＯコンポーネントの総合的なＩＯ性能を決定する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、仮想レーンのＩＯ性能を最大化するように、初期化及びランタイムのアプリケーション中に、バッファ空間を再割り当てするための方法を提供することが望ましいであろう。
【課題を解決するための手段】
【００１０】
本発明に従って、仮想レーンのＩＯ性能を最大化するようにバッファ空間を再割り当てする方法が提供される。この方法は、未使用中の仮想レーンからのバッファ空間を取り、当該未使用中のバッファ空間を使用中の仮想レーンに再割り当てする。例えば、４つの仮想レーンをサポートする実施形態において、２つの仮想レーンだけが使用されている場合、この方法は、使用中の２つの仮想レーンによる使用のために他の未使用中の２つの仮想レーンからのバッファ空間を再割り当てする。
【００１１】
仮想レーンのバッファ空間を再割り当てする場合、仮想レーンのバッファ空間は、データの移動方向に基づいて、割り当てることができる。仮想レーンのバッファ空間は、データをパスするために使用される空間と、データを受信するために使用される空間とに分離される。データをパスするためには、データを近隣のコンポーネントに伝達するのに十分な空間だけが必要であり、データを受信するためには、要求されたデータ及び他のコンポーネントから伝達されるデータの両方を捕捉できる程度の空間を有することが望ましい。
【００１２】
従って、本発明の１つの側面では、未使用中の仮想レーンから除去されたバッファ空間は、データ・フローの方向に基づいて、再割り当てされる。データをパスするために使用される仮想レーンについては、このバッファ空間は、最小のバッファ空間サイズに設定される。また、データを受信するために使用される仮想レーンについては、このバッファ空間は、最大のバッファ空間サイズに設定される。
【００１３】
本発明の他の側面では、バッファ空間を再割り当てする場合に、ブリッジの構成も考慮される。例えば、これらのブリッジがループ構成又はストリング構成の何れかの形態で構成されている場合、データが流れる方向は、各ブリッジがハブに対してどの相対位置にあるかによって変わるであろう。すなわち、ループ構成の場合、ブリッジのうちの幾つかはハブに向かう１つの方向にデータを送信するのに対し、幾つかのブリッジは他の方向にデータを送信する。ストリング構成については、データは、ハブに対して１つの方向に流れるに過ぎない。
【００１４】
バッファ空間を再割り当てするためのシステムは、初期化中に、生じ得る種々の構成を決定して、コンピュータ・システムを構成する。さらに、このシステムは、（エラー条件、ドロワーの追加又は除去、ループからストリングへの分解又はループへのストリングの接続等に起因して）データの方向が変わるようなランタイム状況に対処する。これらの場合、このシステムは、コンピュータ・システムの性能を維持するために、ランタイム中にバッファを再割り振りする。また、ある場合には、このシステムにとっては、再割り振りに先立ってデータが一時的に停止された箇所を考慮に入れることが望ましい。
【００１５】
ある実施形態では、このシステムは、コンピュータ・システムのファームウェア内に実装される。コンピュータ・システムの初期化中、このファームウェアは、どの仮想レーンが使用されないかを決定し、そのバッファ空間を残存する仮想レーンに再割り当てする。次に、このファームウェアは、ブリッジがハブにどのように接続されているかに基づいて、ＩＯ性能を最大化するようにバッファ空間を割り当てる。その結果、データを受信する仮想レーン・ポートは、データをパスする仮想レーンと比較すると、バッファ空間の大部分を有するようになる。その後、このファームウェアは、データ方向の変更についてコンピュータ・システムをモニタする。もし、かかる変更が検出されるならば、このファームウェアは、データ・フローを一時的に停止させた後、他の方向における性能を最大化するように仮想レーン・バッファを再割り当てする。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明が実装される代表的なコンピュータ・システム１００を示す。コンピュータ・システム１００は、少なくとも１つのプロセッサ・ノード１１０を含み、当該プロセッサ・ノードは、InfiniBand リンクのようなリンクを介して、入出力（ＩＯ）ドロワー１１２に結合される。プロセッサ・ノード１１０は、複数のプロセッサ１２０ａ及び１２０ｂを含み、当該各プロセッサは、メモリ１２２及びハブ１２４に結合される。ＩＯドロワー１１２は、１つ以上のブリッジ１４０を含む。ハブ１２４及びブリッジ１４０の組み合わせは、ＩＯコントローラ（ＩＯＣ）を提供する。ＩＯドロワー１１２は、物理的なパッケージである。一般に、ＩＯドロワー１１２は、ラック内に存在する。
【００１７】
ハブ１２４は、複数のアーキテクチャ・ポート１５０ａ、１５０ｂを実装する。ブリッジ１４０の各々は、複数のアーキテクチャ・ポート１５２ａ、１５２ｂを実装する。各ポートは、装置をリンクに結合する両方向インタフェースを提供する。リンクは、２つの装置上の２つのポート間の両方向高速接続である。
【００１８】
メモリ１２２は、揮発性及び不揮発性メモリの両方を含む。ファームウェア１６０は、メモリ１２２内に格納され、少なくとも１つのプロセッサ１２０によって実行される。ファームウェア１６０は、仮想レーン資源を再割り当てするためのシステム１６２を含む。
【００１９】
ある実施形態では、コンピュータ・システム１００は、複数のＩＯドロワー１１２を含む。その場合、各ＩＯドロワー１１２は、ＩＯドロワー１１２当たり、複数（例えば、６〜２０個）のスロット及び１つ以上（例えば、１〜４個）のブリッジを含む。これらのＩＯドロワー１１２は、ストリング構成又はループ構成の何れかの形態で互いに結合される。ＩＯスロットの各々は、PCIX 又はPCI Express プロトコルのようなＩＯプロトコルに準拠する。
【００２０】
情報は、仮想レーンを介して、ハブ１２４とブリッジ１４０との間で通信される。仮想レーンは、クラス・タイプ（例えば、応答／要求）に基づいてデータを分離することを可能にし、そしてサービスの品質、並びに順序付け及びコヒーレンシの問題に対処する。
【００２１】
ハブ１２４とブリッジ１４０との間でデータを転送するための、２つの主要なコマンド・タイプとして、要求及び応答がある。要求が使用されるのは、ある装置が、DMA 読み取り／書き込み、メモリ・マップ読み取り／書き込み、ＩＯ読み取り／書き込み、構成読み取り／書き込み、メッセージ及び割り込みを求める場合である。これに対し、応答が使用されるのは、DMA 読み取り要求から戻されるデータのように、ある要求からデータが戻される場合である。要求及び応答は、順不同であり、独立のストリームとして処理される。そうするために、要求及び応答は、異なる仮想レーンを割り当てられる。
【００２２】
図２は、ポート及びリンクの相互接続を例示する。各ポート１５０、１５２は、複数の仮想レーン２１０、送信機２２０及び受信機２２２を含む。各仮想レーンは、送信バッファ２３０及び受信バッファ２３２を含む。各バッファ対は、一の仮想レーン・バッファ資源を提供する。
【００２３】
１つの実施形態では、ハブ１２４及びブリッジ１４０の各ポート１５０、１５２は、４対の送信／受信バッファ対を実装する。各ポートが実装する複数の仮想レーンは、データ・パケットを送信及び受信するために使用されるデータ・バッファとして機能するデータ仮想レーン（ＶＬ０〜 ＶＬ３）と、ＳＭＰパケットを送信及び受信するために専用されるサブネット管理パケット（ＳＭＰ）バッファとして機能する仮想レーン１５（ＶＬ１５）を含む。
【００２４】
全ての仮想レーンがデータを移送するために同じ物理ワイヤ（リンク）を使用するにも拘わらず、各仮想レーンは、独立のデータ・ストリームとして処理される。各仮想レーンは、独立のデータ・ストリームであるから、各仮想レーンは、独立のバッファ空間、アービトレーション及び仮想レーンごとの移送プロトコルに関連する他のアイテムを含む。各仮想レーンは、データを両方向にパスするために、設定された量のバッファ空間を割り当てられる。このバッファ空間は、装置間で授受されるデータを一時的に格納するために使用される。ハブ１２４及びブリッジ１４０は、それらの間で互いに利用可能なバッファ空間の量を通信するために、フロー制御を使用する。もし、隣接する装置がパスされているデータを格納するために十分なバッファ空間を有していなければ、供給元の装置はデータを転送することができない。
【００２５】
図３は、ループ構成の形態を有する、ハブ１２４及び複数のブリッジ１４０の相互接続を例示する。このループ構成では、ハブ１２４のポート１は、ブリッジ０のポート１に結合される。ブリッジ０のポート２は、ブリッジ１のポート１に結合される。ブリッジ１のポート２は、ブリッジ２のポート１に結合される。ブリッジ２のポート２は、ブリッジ３のポート１に結合される。ブリッジ３のポート２は、ハブ１２４のポート２に結合される。
【００２６】
図４は、ストリング構成の形態を有する、ハブ１２４及び複数のブリッジ１４０の相互接続を例示する。このストリング構成では、ハブ１２４のポート１は、ブリッジ０のポート１に結合される。ブリッジ０のポート２は、ブリッジ１のポート１に結合される。ブリッジ１のポート２は、ブリッジ２のポート１に結合される。ブリッジ２のポート２は、ブリッジ３のポート１に結合される。ブリッジ３のポート２は、結合されない。ハブ１２４のポート２も、結合されない。
【００２７】
図５は、複数ストリング構成の形態を有する、ハブ１２４及び複数のブリッジ１４０の相互接続を例示する。この複数ストリング構成では、ハブ１２４のポート１は、ブリッジ０のポート１に結合される。さらに、ブリッジ１のポート２は、ブリッジ２のポート１に結合される。ブリッジ２のポート２は、ブリッジ３のポート１に結合される。ブリッジ３のポート２は、ハブ１２４のポート２に結合される。ブリッジ０及びブリッジ１は、接続されない。
【００２８】
図６は、仮想レーン資源を再割り当てするためのシステム６００の動作のフローチャートを示す。ステップ６１０で、システム６００は、コンピュータ・システム１００内の利用可能なハブ１２４及びブリッジ１４０を識別する。ステップ６１２で、システム６００は、コンピュータ・システム１００内のどの仮想レーンが割り当てられていない（すなわち、コンピュータ・システム１００によって使用されていない）かを決定する。例えば、１つの実装では、ＩＯドロワー１１２は４つの仮想レーンを有するが、仮想レーン０及び１だけが割り当てられる。もし、システム６００が、使用されていない幾つかの仮想レーンを決定すれば、ステップ６１４で、システム６００は、未使用中の仮想レーンからのバッファ空間のうちの一部又は全部を、使用中の仮想レーンに再割り当てする。例えば、仮想レーン２及び３が使用されていない実施形態では、システム６００は、仮想レーン２及び３からのバッファ空間を、仮想レーン０及び１に再割り当てする。
【００２９】
ステップ６２０で、システム６００は、コンピュータ・システム１００内のデータ・フローを決定する。データ・フローは、初期化中にファームウェア１６０によって割り当てられてもよいし、又はステップ６２０で、ファームウェア１６０によって割り当てられてもよい。資源の割り当てのある側面は、データ・フローの方向に依存する。ステップ６２２で、システム６００は、データ・フローに基づいて仮想レーン資源を構成する。
【００３０】
ストリング構成については、全てのデータは、ハブ１２４と任意のブリッジ１４０の間の１つの方向に流れる。ストリング構成については、ファームウェア１６０は、１つの方向におけるデータ・フローを割り当てる。ループ構成では、任意のブリッジ１４０は、ハブ１２４へデータを送信するために２つの可能なデータ経路を有する。１つの実施形態では、ループ構成のために、ファームウェア１６０は、ブリッジ１４０の半分がハブ１２４のポート１にデータを送信し且つブリッジ１４０の半分がハブ１２４のポート２にデータを送信するように、データ・フローを分割する。もし、ファームウェア１６０が、特定のブリッジ１４０のスロットにどの装置が結合されているかを考慮に入れた上で、装置の潜在的な帯域幅及びブリッジ１４０の数に基づいて、データ・フローを割り当てるのであれば、ファームウェア１６０は、ブリッジ１４０を前述のものとは異なる態様で割り当てることができる。システム６００は、データ・フロー機能と関係するハブ１２４及びブリッジ１４０内のレジスタを読み取ることにより、データ・フローの方向を決定する。
【００３１】
ステップ６２４で、システム６００は、仮想レーン資源の増分を識別し、各仮想レーンごとに割り当てるべきバッファ空間の量を決定する。
【００３２】
例えば、２Ｋバイトの利用可能な仮想レーン・バッファ資源及び５１２バイトの仮想レーン・バッファの粒度を有するコンピュータ・システム１００では、複数の可能な仮想レーン・バッファの割り当てが存在する。これらの仮想レーン・バッファの割り当ては、次のものを含む。
（１）  ＶＬ０＝５１２、   ＶＬ１＝１５３６、
（２）  ＶＬ０＝１５３６、 ＶＬ１＝５１２
（３）  ＶＬ０＝１０２４、 ＶＬ１＝１０２４
【００３３】
但し、仮想レーン・バッファのサイズ及び仮想レーン・バッファの粒度については、他の可能な割り当ても利用することができる。
【００３４】
ストリング構成では、ハブ１２４の経路内にある１つのポートは、ハブ１２４に直接に接続されるか、又はハブ１２４に接続される１つ以上のブリッジに結合される。ループ構成では、ブリッジ１４０の一方のポートがハブ１２４のポート１の経路内にあるのに対し、ブリッジ１４０の他方のポートはハブ１２４のポート２の経路内にある。ループ構成では、全てのブリッジ１４０はハブ１２４に至る２つの経路を有するにも拘わらず、データは単に１つの経路上を流れるに過ぎない。
【００３５】
また、ＩＯドロワー１１２は、ハブ１２４当たり一連のブリッジ１４０を含むことができるから、１つのブリッジ１４０は、それ自体のデータを伴うことなしに、ハブ１２４と通信する隣接ブリッジとの間でパススルー・データを授受することができる。
【００３６】
ステップ６２８で、システム６００は、ブリッジ１４０のデータ・フローの方向に基づいて、全てのブリッジのための仮想レーン入力ポートのバッファ設定値を構成する。ここで、ハブ１２４へデータを送信しているブリッジ・ポートは、入力ポート（ingress port）と呼ばれる。一方、ハブ１２４から遠ざかる方向の隣接ブリッジにデータをパスしているブリッジ・ポートは、出力ポート（egress port）と呼ばれる。
【００３７】
入力ポートについては、要求は、ハブ１２４の方向にパスされる。これらの要求は、ブリッジ１４０で内部的に生成されるか、又は出力ポートからのパススルーとして処理される。これらの要求は短期であるから、バッファ要件は、少なくともハブ１２４の方向にパスされる要求である。入力ポートについては、応答は、以前の要求からのデータを表す。かかる以前の要求は、内部要求であるか、又は出力ポートの下流にあるブリッジ１４０からの要求の何れかである。性能を最大化するとともに、隣接ブリッジが入力ポートへより多くの応答データを送信する前に待機しなければならない時間を最小化するために、応答のための仮想レーン資源は、最大化されるべきである。従って、入力ポートについては、応答のための仮想レーン・バッファリングを最大化するとともに、要求のための仮想レーン・バッファリングを最小化することが望ましい。
【００３８】
例えば、２Ｋバイトの仮想レーン・バッファ資源を有するコンピュータ・システム１００を使用する場合、入力ポートについては、仮想レーン０が要求を処理するように構成されるのに対し、仮想レーン１は応答を処理するように構成される。その結果、これらの資源は、ＶＬ０資源が５１２バイトに最小化され且つＶＬ１資源が１５３６バイトに最大化されるように構成される。
【００３９】
出力ポートについては、要求は、隣接ブリッジ１４０から受信される。１つの隣接ブリッジ１４０が存在する場合と、複数の隣接ブリッジ１４０が存在する場合がある。ボトルネックになることを回避するために、出力ポートは、できるだけ多くの要求を受け入れるように構成されるべきである。従って、要求を処理する出力ポートのための仮想レーンのバッファ空間は、最大化されるべきである。出力ポートについては、応答は、入力ポートから出力ポートに流れる。応答は比較的短期の期間中にパススルーしているから、大量のバッファ空間は必要ない。というのは、応答の性能は、当該出力ポートがデータを転送している、隣接ブリッジ１４０の入力ポートの仮想レーン・バッファリングにより決定されるからである。従って、出力ポートについては、要求のための仮想レーン・バッファリングを最大化するとともに、応答のための仮想レーン・バッファリングを最小化することが望ましい。
【００４０】
例えば、２Ｋバイトの仮想レーン・バッファ資源を有するコンピュータ・システム１００を使用する場合、出力ポートについては、仮想レーン０が要求を処理するように構成されるのに対し、仮想レーン１は応答を処理するように構成される。その結果、これらの資源は、ＶＬ０資源が１５３６バイトに最大化され且つＶＬ１資源が５１２バイトに最小化されるように構成される。
【００４１】
このように、隣接ブリッジ１４０からのデータを受信することに関連する仮想レーンが最大化されるのに対し、当該ブリッジ内にあるポート間でデータをパス縷々ことに関連する仮想レーンは最小化される。
【００４２】
図３を再び参照して１例を説明すると、ファームウェア１６０は、ハブ１２４のポート１に最も近い２つのブリッジ（ブリッジ０及び１）について、データが当該ブリッジのポート１を通してハブ１２４のポート１に向かう方向に流れるように当該ブリッジのデータ・フローを設定するとともに、ハブ１２４のポート２に最も近い２つのブリッジ（ブリッジ２及び３）について、データが当該ブリッジのポート２を通してハブ１２４のポート２に向かう方向に流れるように当該ブリッジのデータ・フローを設定する。
【００４３】
例えば、２Ｋバイトの仮想レーン・バッファ資源を有するコンピュータ・システム１００を使用する場合、ブリッジ０及び１については、これらの資源は次のように割り当てられる。すなわち、要求を処理するためのポート１の仮想レーン０資源が（例えば、５１２バイトに）最小化され、応答を処理するためのポート１の仮想レーン１資源が（例えば、１５３６バイトに）最大化されるのに対し、要求を処理するためのポート２の仮想レーン０資源は（例えば、１５３６バイトに）最大化され、応答を処理するためのポート２の仮想レーン１資源は（例えば、５１２バイトに）最小化される。また、ブリッジ２及び３については、これらの資源は次のように割り当てられる。すなわち、要求を処理するためのポート１の仮想レーン０資源が（例えば、１５３６バイトに）最大化され、応答を処理するためのポート１の仮想レーン１資源が（例えば、５１２バイトに）最小化されるのに対し、要求を処理するためのポート２の仮想レーン０資源は（例えば、５１２バイトに）最小化され、応答を処理するためのポート２の仮想レーン１資源は（例えば、１５３６バイトに）最大化される。
【００４４】
図４を再び参照して１例を説明すると、ファームウェア１６０は、４つのブリッジの全てについて、データが当該ブリッジのポート１を通してハブ１２４のポート１に向かう方向に流れるように当該ブリッジのデータ・フローを設定し、その逆も同様である。
【００４５】
例えば、２Ｋバイトの仮想レーン・バッファ資源を有するコンピュータ・システム１００を使用する場合、これらの資源は次のように割り当てられる。すなわち、要求を処理するためのポート１の仮想レーン０資源が（例えば、５１２バイトに）最小化され、応答を処理するためのポート１の仮想レーン１資源が（例えば、１５３６バイトに）最大化されるのに対し、要求を処理するためのポート２の仮想レーン０資源は（例えば、１５３６バイトに）最大化され、応答を処理するためのポート２の仮想レーン１資源は（例えば、５１２バイトに）最小化される。
【００４６】
仮想レーン資源の再割り当ては、コンピュータ・システム１００の初期化プロセス（すなわち、コンピュータ・システム１００のブート）中に生じ得る。かかる再割り当ては、「静的な再割り当て」と呼ばれる。また、ある状況では、コンピュータ・システム１００が実行中に再割り当て動作を行うことが望ましいことがある。かかる再割り当ては、「動的な再割り当て」と呼ばれる。
【００４７】
例えば、（ループの１端が切断される場合のように）ブリッジ構成がループ構成からストリング構成に変わる場合は、仮想レーン資源の動的な再割り当てが望ましい。（ループ内の２つのブリッジが切断される場合のように）ブリッジ構成がループ構成から複数ストリング構成に変わる場合は、仮想レーン資源の動的な再割り当てが望ましい。また、ＩＯドロワー１１２がシステムに追加される場合や、ＩＯドロワー１１２がシステムから除去される場合も、仮想レーン資源の動的な再割り当てが望ましい。
【００４８】
さらに詳細に説明すれば、ブリッジ構成がループ構成からストリング構成に変わる状況については、仮想レーン資源が最初に再割り当てされたとき、あるブリッジ（例えば、ブリッジ０及び１）の仮想レーン資源がデータを一方の方向に送信するように構成されたのに対し、他のブリッジ（例えば、ブリッジ２及び３）の仮想レーン資源は他方の方向にデータを送信するように構成された。もし、ランタイム中に、ブリッジ構成が変われば、仮想レーン資源の再割り当てを行わない限り、仮想レーン資源の性能が悪影響を受けるであろう。
【００４９】
仮想レーン資源を再割り当てするためのシステム６００は、パーティションを管理するファームウェア・ハイパーバイザ内に含まれるか、又はランタイム抽象化サービス（ＲＴＡＳ）の一部であるファームウェア要素内に含まれる。
【００５０】
ブリッジ構成の変更をファームウェア１６０に知らせるためには、複数の機構を利用することができる。例えば、ファームウェア１６０は、エラーが生じたことを報告する割り込みを介して、ブリッジ構成の変更を知ることができる。また、ファームウェア１６０は、データ・フローの方向及びケーブルの接続を検査するポーリング機構を介して、ブリッジ構成の変更を知ることができる。さらに、ファームウェア１６０は、ユーザがＩＯドロワー１１２の追加又は除去を望んでいる状況では、サービス・コールを介して、ブリッジ構成の変更を知ることができる。
【００５１】
不良ケーブル又は他のエラー条件のために指示が阻止されるようなエラー状況については、ループ・モードにあれば、ブリッジ１４０は、自動的にハブ１２４の反対のポートに向かうようにトラフィックの方向を反転する。しかし、トラフィックの方向が反転されると、仮想レーン資源の構成はもはや最適化されない。かかる最適化の欠如は、新しいデータ・フローの方向を考慮に入れるように仮想レーン・バッファの割り振りが動的に再割り当てされない限り、７５%のデータ損失に帰着することがある。
【００５２】
図７は、仮想レーン資源を動的に再割り当てするためのシステム７００の動作を示す。ステップ７１０で、システム７００は、ブリッジ構成の変更が生じたか否かを決定する。かかる決定は、ブリッジ構成の変更が生じたか否かを決定するように、ポーリング・モードで動作するシステム７００によって行うことができる。かかる変更は、割り込みの受付又はサービス・コールの指示によって検出することができる。もし、割り込みが検出されるならば、システム７００は、ステップ７１２で、エラー条件が存在するか否かを決定する。もし、エラー条件が存在すれば、システム７００は、ステップ７１４で、ブリッジ構成を分析することにより、データ・フローの方向が変わったか否かを決定する。もし、データ・フローの方向が変わっていなければ、何もせず、ブリッジ構成の変更が生じたか否かを決定するためにモニタリングを継続する。もし、データ・フローの方向が変わっていれば、システム７００は、ステップ７１６で、新しいブリッジ構成のための資源を最適化するように仮想レーン資源の再割り振りプロセスを開始する。
【００５３】
具体的には、もし、ＩＯドロワー１１２に関するエラーが生じて、ループ構成が（例えば、ストリング構成又は複数ストリング構成に）変わったならば、システム７００は、仮想レーン・バッファ資源の割り当てを再割り振りする。
【００５４】
すなわち、システム７００は、ループが切断された箇所（すなわち、ループの端部又は中間）を決定する。次に、システム７００は、各ブリッジ１４０ごとにデータ・フローの方向を決定する。もし、当該ブリッジがストリングの端部に位置すれば、データ・フローの方向は同じである。一方、当該ブリッジがストリングの中間に位置すれば、データ・フローの方向は、ブリッジ構成の切断箇所に依存する。次に、システム７００は、これらのブリッジ１４０を経由する全てのトラフィックを一時的に停止する。次に、システム７００は、各ブリッジ１４０ごとに決定されたデータ・フローの方向に基づいて、仮想レーン・バッファリングを再割り振りした後、これらのブリッジ内のトラフィック・フローを再開する。
【００５５】
エラー条件については、システム７００は、通常、エラー条件を指示するハードウェアからの割り込みを介して、エラーが生じたことを決定する。しかし、システム７００は、データ・フローの方向に関係する各ブリッジ１４０内のレジスタのポーリングを介して、エラーが生じたことを決定することもできる。もし、これらのレジスタが、データ・フローの方向がシステム７００によって理解されているものとは異なることを指示すれば、システム７００は、新しく識別されたデータ・フローのための資源を最適化するプロセスを開始するであろう。
【００５６】
ストリング構成からループ構成へのブリッジ構成の変更については、ブリッジがかかる割り込みを生成するように構成されていることを条件として、これを割り込みを介して識別することができる。しかし、通常の場合、ストリング構成からループ構成への変更は、ポーリングによって識別される。ファームウェア１６０は、InfiniBand ケーブルのようなリンクの存在について、レジスタの他のセットを検査することができる。もし、ファームウェア１６０が、あるケーブルが再接続されるか又は交換されたことを決定すれば、ファームウェア１６０は、ブリッジ構成をストリング構成からループ構成に調整することができる。ブリッジ構成がストリング構成からループ構成に変更される場合には、性能上の理由で、仮想レーン資源を再平衡化（rebalance）することが重要である。というのは、その結果、データ・トラフィックのためにハブ１２４の両方のポートをコンピュータ・システム１００が利用できるようになるからである。
【００５７】
仮想レーン資源を再平衡化する場合、システム７００は、先ず、ケーブル接続を検出する。次に、システム７００は、ポートが活動的で且つ利用可能となるように、ハブ１２４のポートを構成する。次に、システム７００は、各ブリッジ１４０を経由するトラフィック・フローを一時的に停止する。次に、システム７００は、ストリング構成からのトラフィックを再平衡化するように、幾つかのブリッジ１４０のためのデータ・フローをブリッジ構成にリダイレクトする。次に、システム７００は、各ブリッジ１４０ごとの新しいデータ・フローに基づいて、仮想レーン・バッファリングを再割り振りする。次に、システム７００は、各ブリッジ１４０を経由するトラフィック・フローを再開する。
【００５８】
新しいＩＯドロワー１１２が追加される場合、ファームウェア１６０は、新しいＩＯドロワー１１２が構成に加わったことを通知される。次に、システム７００は、新しく追加されたＩＯドロワー１１２の電源を入れて、ＩＯドロワー１１２を構成する。次に、システム７００は、新しいＩＯドロワー１１２内のブリッジ１４０のブリッジ構成（すなわち、これらのブリッジ１４０が、ループ構成、ストリング構成又は複数ストリング構成の何れの形態で構成されているか）を決定する。次に、システム７００は、ＩＯドロワー１１２内の各ブリッジ１４０ごとにデータ・フローを決定する。もし、当該ブリッジがループ構成の形態で配列されているならば、システム７００は、理想的なデータ・フローがまだ割り当てられていないことを条件として、かかるデータ・フローを決定する。次に、システム７００は、各ブリッジ１４０ごとのデータ・フローに基づいて、仮想レーン・バッファリングを再割り振りするとともに、ＩＯドロワー１１２内のトラフィック・フローを再開する。
【００５９】
ＩＯドロワー１１２がコンピュータ・システム１００から除去される場合、システム７００は、ＩＯドロワー１１２の電源を切るとともに、ケーブルを再接続して残存するブリッジ構成を完成するようにユーザにプロンプトを出すことを除き、ＩＯドロワー１１２が追加される場合と殆ど同じ態様で機能する。
【００６０】
以上、好ましい実施形態を参照して本発明を説明したが、当業者にとっては、本発明の趣旨及び範囲を逸脱することなく、開示された形態及び細部に種々の変更を施し得ることは明らかであろう。さらに、明細書及び請求項で使用されている、「コンピュータ」、「システム」、「コンピュータ・システム」又は「計算装置」という用語は、パーソナル・コンピュータ、サーバ、ワークステーション、ネットワーク・コンピュータ、メインフレーム・コンピュータ、ルータ、スイッチ、パーソナル・デジタル・アシスタント（ＰＤＡ）、電話機等の、データを処理／送信／受信／捕捉／格納することができる任意のデータ処理システムを含む。
【００６１】
当業者には明らかなように、本発明は、方法、システム又はコンピュータ・プログラム製品として具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェア及びハードウェア要素の両方を含む実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明は、コンピュータによって使用可能なプログラム・コードを具体化した、コンピュータ使用可能媒体上のコンピュータ・プログラム製品の形式を取ることができる。例えば、バッファを再割り当てするためのシステム６００を、ファームウェア１６０の実装に関連して説明したが、当業者にとっては、このシステム６００をソフトウェアの形態、ハードウェアの形態又はハードウェア及びソフトウェアのある組み合わせの形態で実装できることは明らかであろう。
【００６２】
図面のうちブロック図は、本発明の種々の実施形態に従ったシステム及び方法の可能な実装のアーキテクチャ、機能性及び動作を例示する。これらのブロック図の各ブロック及びブロックの組み合わせは、指定された機能を実行する、専用ハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装できることに留意されたい。
【００６３】
本発明に関する記述は、例示及び説明を目的として与えられたものであり、網羅的であること及び開示された形態に本発明を限定することを意図するものではない。当業者にとって、本発明の趣旨及び範囲を逸脱することなく、多くの修正及び変更を施し得ることは明らかであろう。実施形態は、本発明の原理及び実用上のアプリケーションを最もよく説明し、考えられる特定の用途に適するような種々の修正を伴う種々の実施形態に関して当業者が本発明を理解することを可能にするために、選択され説明されたものである。
【図面の簡単な説明】
【００６４】
【図１】本発明が実装される代表的なコンピュータ・システムを示すブロック図である。
【図２】仮想レーンのデータ・フローを例示するブロック図である。
【図３】ループ構成の形態を有する、ハブ及び複数のブリッジの相互接続を例示するブロック図である。
【図４】ストリング構成の形態を有する、ハブ及び複数のブリッジの相互接続を例示するブロック図である。
【図５】複数ストリング構成の形態を有する、ハブ及び複数のブリッジの相互接続を例示するブロック図である。
【図６】仮想レーン資源を再割り当てするためのシステムの動作を示すフローチャートである。
【図７】仮想レーン資源を動的に再割り当てするためのシステムの動作を示すフローチャートである。
【符号の説明】
【００６５】
１００    コンピュータ・システム
１１０    プロセッサ・ノード
１１２    入出力（ＩＯ）ドロワー
１２０    プロセッサ
１２２    メモリ及び
１２４    ハブ
１４０    ブリッジ
１５０    アーキテクチャ・ポート
１５２    アーキテクチャ・ポート
１６０    ファームウェア
１６２    仮想レーン資源を再割り当てするためのシステム
【図１】
2008287717.tif 000003
【図２】
2008287717.tif 000004
【図３】
2008287717.tif 000005
【図４】
2008287717.tif 000006
【図５】
2008287717.tif 000007
【図６】
2008287717.tif 000008
【図７】
2008287717.tif 000009