(57)【要約】【課題】　コンピュータ資源を細粒分割する方法および機構を提供する。【解決手段】　複数のＩ／Ｏパスすなわちロープは、それぞれのロープがコンピュータシステム内の異なるパーティションに潜在的に属するように分割される。一実施形態では、到来キューおよび送出キューは、１つのロープに対するトランザクションが別のロープに干渉しないように設計される。各共通キューは、仮想キュー／バッファの集まりとして扱われる。コンポーネントは、イーサネット（登録商標）カード等の入出力（Ｉ／Ｏ）デバイスや他の入出力（Ｉ／Ｏ）デバイスである。キャッシュまたはＴＬＢを有するコヒーレントＩ／Ｏキャッシュは、それぞれが異なるパーティションに潜在的に属する複数のロープで共有することが可能である。【選択図】図１
2004054949.tif 000002
【特許請求の範囲】
【請求項１】
　コンピュータシステム（１００）においてハードウェアを分割する装置であって、前記コンピュータシステムは複数の入出力（Ｉ／Ｏ）パス（１４１〜１５６、１６１〜１７６）を備え、該Ｉ／Ｏパスはそれぞれホスト入出力（Ｉ／Ｏ）ブリッジ（１３１、１３３）に結合され、少なくとも１つのパーティションが前記複数のＩ／Ｏパスを包含し、装置は、
　アウトバウンドキュー（２０１、２０３、２１１〜２１８）階層であって、
　　単一のＩ／Ｏパスに割り当てられる最下位階層の最下位アウトバウンドキュー（２１１〜２１８）、および
　　１つまたは複数の上位レベルの上位アウトバウンドキュー（２０３）であって、前記１つまたは複数の上位レベルのアウトバウンドキュー中の上位アウトバウンドキューは、１つまたは複数の仮想キューセクションを含み、各最下位アウトバウンドキューは、前記１つまたは複数の仮想キューのうちの指定された仮想キューに対するデータの送受信を行う、１つまたは複数の上位レベルの上位アウトバウンドキュー（２０３）、
を含むアウトバウンドキュー（２０１、２０３、２１１〜２１８）階層と、
　パーティション識別（ＩＤ）を特定のＩ／Ｏパス上で発信されたトランザクションに割り当てるＩ／Ｏパスコントローラであって、前記パーティションＩＤは、前記特定のＩ／Ｏパスが割り当てられたパーティションに対応するＩ／Ｏパスコントローラと
　を備える装置。
【請求項２】
　前記ホストＩ／Ｏブリッジにキャッシュ（２３５）をさらに備え、
　該キャッシュはパーティションＩＤセクション（２４３）を含む
　請求項１記載の装置。
【請求項３】
　前記ホストＩ／Ｏブリッジは、キャッシュコントローラ（２３３）を含み、
　該キャッシュコントローラは、大域共有メモリに送られない要求について読み出し／書き込み要求のアドレス情報とパーティションＩＤとを比較する
　請求項２記載の装置。
【請求項４】
　前記キャッシュコントローラ（２３３）は、大域共有メモリに送られる要求のパーティションＩＤおよびアドレスを推測する
　請求項３記載の装置。
【請求項５】
　変換ルックアサイドバッファ（ＴＬＢ）（２３１）をさらに備え、該ＴＬＢはパーティションＩＤセクションを含み、特定のＩ／Ｏパスの前記パーティションＩＤが記録される
　請求項１記載の装置。
【請求項６】
　前記ホストＩ／Ｏブリッジは複数のレジスタ（２３７）を含み、該複数のレジスタのうちの１つまたは複数は、パーティションのオペレーティングシステムによってアクセスされ、他のパーティションのコンポーネントは、前記複数のレジスタのうちの前記１つまたは複数へのアクセスが拒絶される
　請求項１記載の装置。
【請求項７】
　コンピュータシステムにおいてハードウェアを分割する方法でって、
　ダイレクトメモリアクセス（ＤＭＡ）の場合、読み出しまたは書き込み動作であるＤＭＡ要求を発した（initiated）コンポーネントのパーティション識別（ＩＤ）に対応するパーティションＩＤを生成すること（３１０）と、
　リコール要求の場合、前記コンポーネントの前記アドレスおよび前記パーティションＩＤを、要求されたラインのアドレスおよびパーティションＩＤと比較することと、
　割り込みトランザクションおよび非コヒーレントメモリ読み出し／書き込みトランザクションの場合、前記発信コンポーネントの前記パーティションＩＤを前記トランザクションに添付することと
　を含む方法。
【請求項８】
　前記コンピュータシステムにおける各入出力（Ｉ／Ｏ）処理パスを特定することと、
　前記特定されたＩ／Ｏパスをそれぞれ別個のパーティションに分割することと
　をさらに含む請求項７記載の方法。
【請求項９】
　前記コンピュータシステムにおける各入出力（Ｉ／Ｏ）処理パスを特定することと、
　前記特定されたＩ／Ｏパスのうちの２つ以上のＩ／Ｏパスを別個のパーティションに分割することと
　をさらに含む請求項７記載の方法。
【請求項１０】
　カスケード階層になった出力キューを提供することをさらに含み、第１レベルの出力キューは２つ以上の仮想キューを含み、該仮想キューはそれぞれ第２レベルの出力キューに対応し、該第２レベルの出力キューにおいてストールすると、前記関連する第１レベルの仮想キューのみがストールする
　請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
　本技術分野は、多重かつ／または冗長サブシステムおよびコンポーネントを有するコンピュータシステムである。
【背景技術】
【０００２】
　現在のマルチプロセッサコンピュータシステムは、コンピュータシステムのハードウェア資源およびソフトウェア資源が各種パーティションに分けられるように通常分割される。
　たとえば、マルチプロセッサコンピュータシステムでは、プロセッサは２つ以上のプロセッサグループに分けることができる。
　たとえば、メモリバス等他の資源もプロセッサパーティションに含めることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
　キャッシュまたはＩ／Ｏトランザクションルックアサイドバッファ（ＴＬＢ）を有するコヒーレントな入出力（Ｉ／Ｏ）ハブチップは、複数のＩ／Ｏパスで共有することが可能である。
　現在のソリューションでは、同じキャッシュの下にあるすべてのロープが１つのパーティションに属するものと仮定している。
　現在のシステムではまた、Ｉ／Ｏハブ全体を１つのパーティションに配置している。
　これでは、多すぎる資源（たとえば、Ｉ／Ｏカードおよび接続）が１つのパーティションにロックされることになる。
【課題を解決するための手段】
【０００４】
　本明細書において、コンピュータ資源を細粒分割する方法および機構を記載する。
　特に、複数のＩ／Ｏパスすなわちロープは、それぞれのロープがコンピュータシステム内の異なるパーティションに潜在的に属するように分割される。
　一実施形態では、到来キューおよび送出キューは、１つのロープに対するトランザクションが別のロープに干渉しないように設計される。
【０００５】
　各共通キューは、仮想キュー／バッファの集まりとして扱われる。
　コンポーネントは、イーサネット（登録商標）カード等の入出力（Ｉ／Ｏ）デバイスや他の入出力（Ｉ／Ｏ）デバイスである。
　しかし、本方法および本機構は、Ｉ／Ｏデバイス以外のコンピュータコンポーネントによる使用にも適合することができる。
【０００６】
　キャッシュまたはＴＬＢを有するコヒーレントＩ／Ｏキャッシュは、それぞれが異なるパーティションに潜在的に属する複数のロープで共有することが可能である。
　これまでのソリューションでは、キャッシュの下にあるすべてのロープが同じパーティションに属するものと仮定していた。
　一実施形態では、複数のパーティションが１つのキャッシュ下に共存するため、パーティションの粒度が大きくなる。
【発明の効果】
【０００７】
　本発明によれば、コンピュータ資源を細粒分割する方法および機構が提供される。
【発明を実施するための最良の形態】
【０００８】
　詳細な説明では、同様の符号が同様の要素を指す添付図面を参照する。
　本明細書において、個々の処理パスすなわちロープのレベルにおいてコンピュータハードウェアコンポーネントすなわち要素を分割することができる方法および機構を記載する。
　実施形態では、到来キューおよび送出キューは、１つのロープに対するトランザクションが別のロープに干渉しないように設計される。
　各共通キューは、仮想キュー／バッファの集まりとして扱われる。
【０００９】
　コンピュータコンポーネントは、イーサネット（登録商標）カード等の入出力（Ｉ／Ｏ）デバイスや他の入出力（Ｉ／Ｏ）デバイスを含む。
　しかし、本方法および本機構は、Ｉ／Ｏデバイス以外のコンピュータコンポーネントによる使用にも適合することができる。
【００１０】
　図１は、１つのＩ／Ｏハブの下で複数のハードウェアパーティションを使用して細粒分割を提供する例示的なコンピュータアーキテクチャ１００のブロック図である。
　アーキテクチャ１００は、スケーラブルインタフェース１０５に共に結合されたノースブリッジチップ１０１および１０３を備える。
【００１１】
　ノースブリッジチップ１０１には、プロセッサ１１１〜１１４と、メモリバス１２１および１２２と、が結合される。
　ノースブリッジチップ１０３には、プロセッサ１１５〜１１８と、メモリバス１２３および１２４と、が結合される。
　メモリバス１２１〜１２４は、メモリコントローラ１２５〜１２８の制御下で動作することができる。
【００１２】
　アーキテクチャ１００内の各ノースブリッジは、Ｉ／Ｏリンクすなわちシステムバスインタフェースを通してホストＩ／Ｏブリッジに接続することができる。
　図１に示すように、ノースブリッジ１０１は、Ｉ／Ｏリンク１３２を通してホストＩ／Ｏブリッジ１３１に接続し、ノースブリッジチップ１０３は、Ｉ／Ｏリンク１３４を通してホストＩ／Ｏブリッジ１３３に接続する。
【００１３】
　ホストＩ／Ｏブリッジ１３１には、１６本のロープ１４１〜１５６が接続される。
　ホストＩ／Ｏブリッジ１３３には、別の１６本のロープ１６１〜１７６が接続される。
　図１に示すアーキテクチャ１００のコンピュータコンポーネントすなわち要素の構成は、例としてのみのものであり、アーキテクチャ１００は、図示するコンポーネントのそれぞれをより多く、またはより少なく備えてもよい。
【００１４】
　図２は、図１に示すホストＩ／Ｏブリッジ１３１等のホストＩ／Ｏブリッジのブロック図である。
　ホストＩ／Ｏブリッジ１３１は、Ｉ／Ｏリンクすなわちシステムバスインタフェース１３２を有して示される。
　ホストＩ／Ｏブリッジ１３１は、Ｉ／Ｏユニット１３７および１３９等の１つまたは複数のＩ／Ｏユニットを備えることができる。
【００１５】
　Ｉ／Ｏユニット１３７および１３９は、キャッシュ、変換ルックアサイドバッファ（ＴＬＢ）、キュー、レジスタ、および制御要素等、他の様々なコンピュータコンポーネントを制御するかまたは備えることができる。
　ホストＩ／Ｏブリッジ１３１に結合された１６本のロープは、図示のようにＩ／Ｏユニット１３７および１３９の間で分割することができる。
　個々のロープ１４１〜１５６は、他のコンピュータコンポーネントに接続しうる。
【００１６】
　かかるロープはそれぞれ、ロープコントローラ（図示せず）の制御下で動作することができる。
　図２に示す例では、ロープ１４１（ロープ０）は下位バスチップ１８１に接続し、下位バスチップ１８１はＰＣＩバス１８２に接続する。
　ロープ１４７および１４８（ロープ７および８）は下位バスチップ１８３に接続し、下位バスチップ１８３はＰＣＩ−Ｘバス１８４に接続する。
　図２に示す他のロープは、他のコンピュータコンポーネントに接続することができる。
【００１７】
　図１および図２に示す各種コンピュータコンポーネントは、分割可能である。
　分割は、ソフトウェアおよびハードウェアにおいて実現することができる。
　図３は、かかる１つの分割方式を示したものである。
　図示の例では、コンピュータコンポーネントをハードウェアにおいて２つのパーティションに分割することができ、パーティション０がプロセッサ１１１〜１１４、メモリバス１２１および１２２、ならびにホストＩ／Ｏブリッジ１３１を含む。
【００１８】
　パーティション１は、プロセッサ１１５〜１１８、メモリバス１２３および１２４、ならびにホストＩ／Ｏブリッジ１３３を含むことができる。
　かかる分割は、粗粒分割と呼ぶことのできる例であり、パーティション０および１のそれぞれの内の各種コンポーネントは、パーティションの境界を越えてコンポーネントの共有が発生しないように厳密に分離されている。
【００１９】
　さらに、分割は、ホストＩ／Ｏブリッジレベル等の粗いレベルにおいて定義され、ホストＩ／Ｏブリッジに接続される個々のロープは、分割方式に明示的に包含されない。
　言い換えれば、特定のホストＩ／Ｏブリッジに接続されたすべてのロープは、そのホストＩ／Ｏブリッジと同じパーティション内に含められる。
　同様に、すべてのプロセッサ（おおび複数のコアを有するプロセッサ内のコア）は、たとえば、ノースブリッジチップに結びついたパーティションと同じパーティションに包含される。
【００２０】
　代替の分割方式（図示せず）、すなわち細粒分割では、いくつかのコンピュータコンポーネントの共有が許される。
　たとえば、最小計算粒度がプロセッサ（またはプロセッサ内のコア）レベルであり、メモリがページ単位で割り当てられ、Ｉ／Ｏ資源をロープの粒度まで下げて割り当てることができる。
　この細粒分割は、コンピュータパフォーマンスおよびコスト削減に関して利点をもたらすが、個々のパーティションが互いに干渉しないように保証する機構および方法を必要とする。
【００２１】
　図４は、キュー中のデータの順方向進行を保証することによりパーティション干渉を回避する機構を示す。
　ホストＩ／Ｏブリッジ１３１は、システムバスインタフェース１３２におけるアウトバウンド共通キュー２０１（キュー０）を有して示される。
　キュー２０１は、アウトバウンドキュー２０３および２０４に供給することができる。
　アウトバウンドキュー２０３（キュー１）は、共通キューとして動作し、アウトバウンドキュー２１１〜２１８（キュー２〜９）に供給することができる。
【００２２】
　アウトバウンドキュー２１１〜２１８はそれぞれ図示のように特定のロープ（すなわち、ロープ１４９〜１５６）に割り当てられている。
　ロープ１４９〜１５６のうちの１本、たとえばロープ１５６に、アウトバウンドキュー２１８が空にならないという問題が生じた場合、上流すなわち共通キュー２０３およびその他のロープ１４９〜１５５が影響を受け、故障することがある。
【００２３】
　さらに、他のパーティションが悪影響を受ける場合がある。
　故障したロープ１５６からの逆圧が他のコンピュータコンポーネントに影響を与えないように、共通キュー２０３および２０１をそれぞれ独立したキューのグループとして扱うことができる。
　たとえば、共通キュー２０３（キュー２１１〜２１８に共通）を、下流キュー２１１〜２１８それぞれに１つずつ、８個の独立したキューのグループとして扱うことができる。
【００２４】
　一実施形態では、キュー２０３は、キュー２１１〜２１８それぞれにアドレス範囲を割り当てて、内部分割することができる。
　共通キューの分割に対する代替として、タイムアウト機構２２０をキュー２１１〜２１８に結合することができ、タイムアウト機構２２０は、関連するロープが故障した場合、指定された時間後にキュー２１１〜２１８のいずれかの内容を破棄する。
　そして、本明細書に述べる実施形態では、共通キューが情報およびデータを流し、関連するコンポーネントの考えられる付随的な故障による停滞を回避することができる。
【００２５】
　図５は、パーティション干渉を回避する他の機構を示す。
　図５では、ホストＩ／Ｏブリッジ１３１のＩ／Ｏユニット１３７が、パーティションＴＬＢ２３１、キャッシュコントローラ２３３、キャッシュ２３５、パーティションレジスタ２３７、およびキュー２３９を備えて示される。
【００２６】
　キャッシュ２３５は、トランザクションターゲットを特定するセクション、および特定のトランザクションに関連する他の情報を提供するセクションを含む。
　図示のように、キャッシュ２３５は、Ｃデータセクション２４１、Ｃタグセクション２４３、およびＣスタットセクション２４５を含むことができる。
【００２７】
　Ｃデータセクション２４１は、特定のキャッシュラインに関連するデータを含む。
　Ｃタグセクション２４３は、特定のキャッシュラインについてのアドレス情報を記録する。
　アドレス情報は、パーティションＩＤ、特定のロープ、おおびターゲットアドレスを含むことができる。
　Ｃスタットセクション２４５は、特定のキャッシュラインに固有の情報を記録する。
【００２８】
　たとえば、Ｃスタットセクション２４５は、特定のキャッシュラインが無効であることを示すことができる。
　ＴＬＢ２３１、キャッシュコントローラ２３３、キャッシュ２３５、パーティションレジスタ２３７、およびキュー２３９は連絡して、図１に示すアーキテクチャ１００により表されるコンピュータシステムの動作中にパーティションが干渉しないように保証する。
　上述したように、ホストＩ／Ｏブリッジ１３１（本例では）がパーティション０に割り当てられる。
【００２９】
　ホストＩ／Ｏブリッジ１３１のすべてのコンポーネントもまた、パーティション０に割り当てることができる。
　ロープ１４９〜１５６もパーティション０に割り当ててもよく（粗粒分割）、またはロープ１４９〜１５６を他のパーティションに割り当ててもよい。
　一実施形態において、ロープ１４９〜１５６をそれぞれ固有のパーティションに割り当てることができる。
　かかる各パーティションは、たとえば１ビットまたは２ビットのデータフィールドであり得るパーティションＩＤによって識別することができる。
【００３０】
　キャッシュ２３５は、トランザクションが各パーティション内の正しいコンポーネントに確実に送信されるように、パーティションのアドレスと併せてパーティションＩＤを使用することができる。
　たとえば、直接メモリアクセス（ＤＭＡ）読み出し（または書き込み）要求がロープに到着すると、ロープコントローラが、そのロープに関連するパーティションＩＤを生成する。
【００３１】
　次いで、アドレスおよびパーティションＩＤがキャッシュコントローラ２３３に送られる。
　キャッシュコントローラ２３３は、パーティションＩＤおよびアドレスを使用して、要求されたラインがキャッシュ２３５内に存在するかどうかを判断する。
【００３２】
　キャッシュミス（すなわち、要求されたラインが存在しない）がある場合、キャッシュコントローラ２３３は、フェッチ要求を適切なメモリコントローラに（たとえば、メモリバス１２１または１２２に（図１参照））送る。
　フェッチ要求は、キャッシュラインアドレス、ならびに読み出し（書き込み）要求を生成したロープのパーティションＩＤを含む。
【００３３】
　リコール要求とは、あるコンピュータコンポーネントがキャッシュラインの制御を有し、別のコンポーネントが同じラインを要求する場合に、キャッシュコントローラ２３３によって開始されるトランザクションである。
　リコール要求の場合、キャッシュコントローラ２３３は、キャッシュ２３５内のラインへのアドレスと併せて要求しているコンポーネントのパーティションＩＤを比較する。
【００３４】
　この規則への唯一の例外は、大域共有メモリ（ＧＳＭ）、すなわち複数のパーティションによって共有されるメモリであり得る。
　一実施形態では、キャッシュコントローラ２３３は、＜位置ＩＤ、アドレス＞がＧＳＭであることを推測し、リコールの場合、そのパーティションＩＤをＧＳＭの他のパーティションＩＤで置換する。
　代替の実施形態では、メモリコントローラは複数のリコールを生成し、かかる各リコールがＧＳＭに属するすべてのパーティションのパーティションＩＤを有する。
【００３５】
　割り込み、または非コヒーレントメモリ読み出し（書き込み）の場合、同じパーティションＩＤが添付される。
　プロセッサＩ／Ｏ書き込みまたは読み出しの場合、チェックが行われてプロセッサが、書き込みを行うロープのパーティションに属するかどうかを調べる。
【００３６】
　キャッシュフラッシュまたはＩ／ＯＴＬＢパージの場合、信頼のおけるプロセッサあるいはそのパーティションのプロセッサがラインフラッシュ（またはＴＬＢエントリのパージ）を許される。
　したがって、たとえば、プロセッサ１１１〜１１４は、ホストＩ／Ｏブリッジ１３１（図１参照）と同様にパーティション０に割り当てられていることから（本例では）、プロセッサ１１１〜１１４（図１参照）のみがＩ／Ｏ　ＴＬＢ２３１内のエントリのパージを許される。
　これにより、別のパーティション（たとえば、パーティション１）がパーティション０（またはコンピュータアーキテクチャ１００の任意の他のパーティション）に属するキャッシュラインをフラッシュ（またはＴＬＢエントリをパージ）しないよう保証される。
【００３７】
　図６は、図１の処理パス（ロープ）のうちの１本に接続されたコンポーネントによって開始された直接メモリアクセス（ＤＡＭ）読み出し動作３００を示すフローチャートである。
　動作３００はブロック３０５において開始する。
　ブロック３１０において、ロープ１５６に関連するコンポーネントがＤＭＡ読み出し要求を生成する。
【００３８】
　ブロック３１５において、ロープ１５６のロープコントローラが読み出し要求を受信する。
　ブロック３２０において、ロープコントローラは、ロープ１５６に関連するパーティションのパーティション識別を生成する。
　次いで、ブロック３２５において、ロープコントローラは、アドレスおよびパーティションＩＤをキャッシュコントローラ２３３に送る。
【００３９】
　ブロック３３０において、キャッシュコントローラ２３３が、キャッシュラインがキャッシュ２３５に存在するかどうかを判断する。
　キャッシュコントローラ２３３は、ラインがキャッシュ２３５に存在すると判断する場合、ブロック３３５において、要求されたラインをキャッシュ２３５から検索する。
【００４０】
　キャッシュコントローラ２３３は、キャッシュミスが発生したと判断する場合、ブロック３４０において、フェッチ要求を適切なメモリコントローラに送る。
　フェッチ要求は、キャッシュラインアドレスおよびパーティションＩＤを含む。ブロック３３５あるいは３４０のいずれか一方の後に、読み出し動作３００が終了する。
【産業上の利用可能性】
【００４１】
　本発明は、多重かつ／または冗長サブシステムおよびコンポーネントを有するコンピュータシステムに利用可能である。
【図面の簡単な説明】
【００４２】
【図１】多重／冗長コンポーネントを用いたコンピュータアーキテクチャの図である。
【図２】図１のコンピュータアーキテクチャにおいて使用されるホストＩ／Ｏブリッジの図である。
【図３】図１のアーキテクチャで使用することが可能な分割方式を示す図である。
【図４】あるパーティションが別のパーティションによる干渉を受けないようにするために使用されるキューシステムの図である。
【図５】図２のホストＩ／Ｏブリッジのコンポーネントの図である。
【図６】図１のコンピュータアーキテクチャの動作を示すフローチャートである。
【符号の説明】
【００４３】
１０１，１０２・・・ノースブリッジチップ、
１０５・・・スケーラブルインタフェース、
１１１〜１１８・・・プロセッサ、
１２１〜１２４・・・メモリバス、
１２５〜１２８・・・メモリコントローラ、
１３１，１３３・・・ホストＩ／Ｏブリッジ、
１３２，１３４・・・Ｉ／Ｏリンク、
１３７，１３９・・・Ｉ／Ｏユニット、
１４１〜１５６，１６１〜１７６・・・ロープ、
１８１・・・下位バスチップ、
１８２・・・ＰＣＩバス、
１８３・・・下位バスチップ、
１８４・・・ＰＣＩ−Ｘバス、
２０１・・・共通キュー
２０３，２０４，２１１〜２１８・・・アウトバウンドキュー
２２０・・・タイムアウト機構
２３１・・・パーティションＴＬＢ
２３３・・・キャッシュコントローラ、
２３５・・・キャッシュ、
２３７・・・パーティションレジスタ、
２３９・・・キュー、
２４１・・・Ｃデータセクション、
２４３・・・Ｃタグセクション、
２４５・・・Ｃスタットセクション、
【図１】
2004054949.tif 000003
【図２】
2004054949.tif 000004
【図３】
2004054949.tif 000005
【図４】
2004054949.tif 000006
【図５】
2004054949.tif 000007
【図６】
2004054949.tif 000008