(57)【要約】      （修正有）【課題】マルチプロセッサコンピュータシステムにおいてシステム内データ伝送の帯域幅を増大させる。【解決手段】  ファブリックエージェントチップは、コンピュータシステムにおける第１のセルボード上の第１のメモリコントローラとコンピュータシステムにおける他のセルボード上の他のメモリコントローラとの間のインタフェースとしての役割を果たす。コンピュータシステムにおいて、セルボードは、システムファブリックにより相互接続され、第１のメモリコントローラによって読み出されるメモリデータは、ファブリックエージェントチップにより送信される前に、コーデックエンジンにより圧縮する。逆に、ファブリックエージェントチップにより受信されるメモリデータは、第１のメモリコントローラに提供する前に、コーデックエンジンにより伸長される。【選択図】図３
2005071352.tif 000002
【特許請求の範囲】
【請求項１】
システムファブリック（１１６）と、
前記システムファブリック（１１６）に接続された複数のセルボード（１０２ａ〜１０２ｄ）であって、
少なくとも１つのマイクロプロセッサ（１０４ａ〜１０４ｎ）と、
メモリ（１１２ａ）と、
前記メモリ（１１２ａ）と前記少なくとも１つのマイクロプロセッサ（１０４ａ〜１０４ｎ）との間に連結されたマイクロコントローラ（１１０ａ）と、
前記マイクロコントローラ（１１０ａ）と前記システムファブリック（１１６）との間に連結されたファブリックエージェントチップ（１１４ａ）と、
前記マイクロコントローラ（１１０ａ）と前記ファブリックエージェントチップ（１１４ａ）との間に連結された圧縮／伸長（コーデック）エンジン（３２０ａ）と
をそれぞれ備えた複数のセルボード（１０２ａ〜１０２ｄ）と
を具備するコンピュータシステム（３００）。
【請求項２】
前記複数のセルボード（１０２ａ〜１０２ｄ）それぞれは、
複数のプロセッサ
を含む
請求項１に記載のコンピュータシステム。
【請求項３】
前記ファブリックエージェントチップ（１１４ａ）は、
前記コーデックエンジン（３２０ａ）
を含む
請求項１に記載のコンピュータシステム。
【請求項４】
システムファブリック（１１６）と、
複数のセルボード（１０２ａ〜１０２ｄ）であって、
少なくとも１つのプロセッサ（１０４ａ〜１０４ｎ）と、
メモリ（１１２ａ）と、
前記メモリ（１１２ａ）と前記少なくとも１つのマイクロプロセッサ（１０４ａ〜１０４ｎ）との間に連結され、前記少なくとも１つのプロセッサ（１０４ａ〜１０４ｎ）と前記メモリ（１１２ａ）との間の情報を制御する、メモリ制御手段（１１０ａ）と、
前記メモリ制御手段（１１０ａ）と前記システムファブリック（１１６）との間に連結され、前記メモリ制御手段（１１０ａ）と前記システムファブリック（１１６）との間の通信を制御する、通信手段（１１４ａ）と、
前記メモリ制御手段（１１０ａ）と前記通信手段（１１４ａ）との間に連結され、前記通信手段（１１４ａ）により前記システムファブリック（１１６）を通して受信される通信を圧縮し、前記通信手段（１１４ａ）により前記システムファブリック（１１６）を通して送信される通信を伸長する、圧縮／伸長手段（３２０ａ）と
をそれぞれ備えた複数のセルボード（１０２ａ〜１０２ｄ）と
を具備するコンピュータシステム（３００）。
【請求項５】
前記複数のセルボード（１０２ａ〜１０２ｄ）それぞれは、
複数のプロセッサ
を含む
請求項４に記載のコンピュータシステム。
【請求項６】
前記通信手段（１１４ａ）は、
前記圧縮／伸長手段（３２０ａ）
を含む
請求項４に記載のコンピュータシステム。
【請求項７】
（Ａ）マルチプロセッサコンピュータシステム（３００）において第１のメモリコントローラ（１１０ｄ）からデータ（５１４）を取得すること（４１８）と、
（Ｂ）前記データ（５１４）を圧縮すること（４２０）であって、圧縮データ（５１８）をもたらすことと、
（Ｃ）前記マルチプロセッサコンピュータシステム（３００）において前記圧縮データ（５１８）をシステムファブリック（１１６）を介して送信すること（４２４）と
を含む方法（４００）。
【請求項８】
前記ステップ（Ｂ）および（Ｃ）を、前記マルチプロセッサコンピュータシステム（３００）において、ファブリックエージェントチップ（１１４ｄ）によって実行する
請求項７に記載の方法。
【請求項９】
マルチプロセッサコンピュータシステム（３００）において、第１のメモリコントローラ（１１０ａ）からデータ（５１４）を取得する手段（３２０ｄ）と、
前記データ（５１４）を圧縮し、圧縮データ（５１８）をもたらす圧縮手段（３２０ａ）と、
前記マルチプロセッサコンピュータシステム（３００）において、前記圧縮データ（５１８）をシステムファブリック（１１６）を介して送信する送信手段（１１４ｄ）と
を含む装置（１１４ａ）。
【請求項１０】
前記圧縮手段と、
前記送信手段と
を含むファブリックエージェントチップ
を含む請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサコンピュータシステムに関し、特に、マルチプロセッサコンピュータシステムにおけるシステム内データ伝送の帯域幅を増大させる技術に関する。
【背景技術】
【０００２】
初期のコンピュータは、それぞれ、コンピュータ上のすべてのソフトウェアを実行しその他コンピュータの動作を制御する、中央処理装置（ＣＰＵ）と呼ばれる単一プロセッサを有していた。
したがって、コンピュータが動作することのできる速度は、任意の特定時刻に利用可能な最高速の個々のプロセッサの速度によって制限されていた。
【０００３】
その後、複数のプロセッサを組み込むことができるコンピュータが開発された。
単一マルチプロセッサコンピュータ（ＭＰ）は、その複数のプロセッサを使用して動作を並列に実行することができ、それにより、単一プロセッサのものより高い集合体としての処理速度を達成することができる。
したがって、マルチプロセッサコンピュータは、ある程度まで、プロセッサ技術の現在の状況によって課される処理速度制限を克服することができる。
単一ハイエンドサーバは、たとえば、並列に動作する１、２、４、８または１６個の相互接続されたプロセッサを含む場合がある。
マルチプロセッシング技術の進歩は、単一ＭＰ内で相互接続することができるプロセッサの数を増大させ続ける可能性がある。
【０００４】
種々のマルチプロセッサコンピュータアーキテクチャがあるが、対称型マルチプロセッシング（ＳＭＰ）アーキテクチャは、もっとも広く使用されているアーキテクチャのうちの１つである。
図１を参照すると、ＳＭＰアーキテクチャを有するコンピュータシステム１００がブロック図形態で示されている。
コンピュータシステム１００は、クロスバスイッチ１１６を使用して相互接続される複数のセルボード１０２ａ〜１０２ｄを有する。
セルボード１０２ａ〜１０２ｄのそれぞれは、複数のＣＰＵ、システムバスおよびメインメモリを有する。
【０００５】
例示および説明を容易にするために、セルボード１０２ａを、図１により詳細に示し、ここでより詳細に説明する。
しかしながら、他のセルボード１０２ｂ〜１０２ｄは、セルボード１０２ａのものと同様のコンポーネントおよび構成を有してもよい。
セルボード１０２ａは、複数のＣＰＵ１０４ａ〜１０４ｎ（ｎは、２、４、８または１６等の数）を有する。
ＣＰＵ１０４ａ〜１０４ｎは、それぞれオンボードキャッシュ１０６ａ〜１０６ｎを有する。
セルボード１０２ａはまた、システムバス１０８と、メインメモリ１１２ａと、メモリコントローラ１１０ａと、を有する。
ＣＰＵ１０２ａ〜１０２ｎは、システムバス１０８に直接連結され、メインメモリ１１２ａは、メモリコントローラ１１０ａを介してシステムバス１０８に連結される。
当業者には既知であるように、ＣＰＵ１０４ａ〜１０４ｎは、システムバス１０８を通して互いに通信することができ、システムバス１０８を通しメモリコントローラ１１０ａを介してメモリ１１２ａにアクセスすることができる。
【０００６】
セルボード１０２ａ〜１０２ｄのそれぞれはそれ自体のローカルシステムメモリ（メモリ１１２ａ等）を有するが、セルボード１０２ａ〜１０２ｄのメモリを、セルボード１０２ａ〜１０２ｄのＣＰＵが、単一の結合された仮想アドレス空間を使用してアドレス指定することができる。
クロスバスイッチ１１６は、かかる共有メモリアクセスを実行するセルボード１０２ａ〜１０２ｄ間の通信と他のセルボード間通信とのためのメカニズムを提供する。
概して、クロスバスイッチは、装置を接続することができる複数の入出力ポートを有する装置である。
クロスバスイッチ１１６の一対の入出力ポートに接続された一対の装置は、その入出力ポートの対を接続するスイッチ１１６内に形成された経路に亙って互いに通信することができる。
装置間に構成された経路を、幾分かの持続時間固定することができ、あるいは望ましい場合は変更することができる。
クロスバスイッチ内で複数の経路が同時にアクティブであってもよく、それにより、装置の複数の対がクロスバスイッチを介して互いに当時にかつ互いを干渉することなく通信することができる。
【０００７】
クロスバスイッチを、通常はすべての装置が共有する単一通信チャネルがある、バスと対照させることができる。
バスに対するクロスバスイッチの顕著な利点は、任意の２つの装置間のトラフィックの増大が、他の装置の対の間のトラフィックに影響を与えない、ということである。
さらに、クロスバベースのアーキテクチャは、通常、バスベースのアーキテクチャよりすぐれたスケーラビリティを提供する。
【０００８】
セルボード１１６は、より一般的には、「システムファブリック」または「スイッチングファブリック」の一部であり、それら用語は、セルボード１０２ａ〜１０２ｄが互いに通信するのを可能にするコンピュータシステム１００のコンポーネントを言う。
たとえばシステム１００に複数のクロスバスイッチがある場合、システムファブリックは、かかるクロスバスイッチのすべてを含む。
【０００９】
セルボード１０２ａはまた、クロスバスイッチ１１６に連結され、セルボード１０２ａとシステム１００内の他のセルボード１０２ｂ〜１０２ｄとの間のインタフェースとして作用する、ファブリックエージェントチップ１１４ａも有する。
他のセルボード１０２ｂ〜１０２ｄは、同様に、それら自体のファブリックエージェントチップ１１４ｂ〜１１４ｄをそれぞれ有する。
ファブリックエージェントチップ１１４ａ〜１１４ｄを、システムファブリックの一部とみなしてもよい。
【００１０】
上述したように、セルボード１０２ａ〜１０２ｄのローカルメモリに、単一仮想アドレス空間を使用してアクセスすることができる。
図１に示すシステム１００等のＳＭＰでは、セルボード１０２ｂ〜１０２ｄのファブリックエージェントチップ１１４ａ〜１１４ｄは、このグローバル共有メモリアドレス空間を可能にする。
たとえば、ＣＰＵ１０４ａがメモリコントローラ１１０ａに対し、グローバル仮想アドレス空間のメモリロケーション（またはメモリロケーションの範囲）をアドレス指定するメモリアクセス要求を発行する場合を考える。
メモリコントローラ１１０ａは、ローカルメモリ１１２ａへのメモリアクセス要求を満足することができない場合、その要求をファブリックエージェントチップ１１４ａに転送する。
ファブリックエージェントチップ１１４ａは、その要求のグローバルメモリアドレスを、要求されたメモリのロケーションを指定する新たなメモリアドレスに変換し、その新たなアドレスを使用して新たなメモリアクセス要求をクロスバスイッチ１１６に送信する。
クロスバスイッチ１１６は、メモリアクセス要求を、適当なセルボードのファブリックエージェントチップに転送する。
【００１１】
要求されたメモリアクセスを、可能な場合は、受信側セルボードのローカルメモリを使用して実行し、その結果を、クロスバスイッチ１１６を介してファブリックエージェントチップ１１４ａに返信し、メモリコントローラ１１０ａを介してＣＰＵ１０４ａに返す。
受信側セルボードのローカルメモリを使用してメモリアクセス要求を満足することができない場合、クロスバスイッチ１１６に連結されたＩ／Ｏサブシステム１１８を使用してそのメモリアクセス要求を満足してもよい。
Ｉ／Ｏサブシステム１１８は、たとえば、仮想メモリ方式に従ってメモリの頻繁にはアクセスされない部分を格納する１つまたは複数のハードディスクドライブを有してもよい。
【００１２】
それにより、セルボード１０２ａ〜１０２ｄのＣＰＵは、セルボード１０２ａ〜１０２ｄのファブリックエージェントチップ１１４ａ〜１１４ｄを使用して、クロスバスイッチ１１６を介して他のセルボード１０２ａ〜１０２ｄのいずれかのメインメモリにアクセスすることができる。
かかるシステムの１つの目標は、ＣＰＵ１０４ａ〜１０４ｄが、メモリアクセス要求に対する応答を、かかる要求がオンボードメモリから満足されるか、オフボードメモリから満足されるか、またはＩ／Ｏサブシステム１１８から満足されるかに関らず同様に送信し受信することができるという意味で、ＣＰＵ１０４ａ〜１０４ｄに対して透過的なメモリアクセスを実施することである。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
図１から、セルボード１０２ａに転送するおよびセルボード１０２ａから転送されるすべてのデータは、ファブリックエージェントチップ１１４ａを通過しなければならないことが分かる。
したがって、セルボード１０２ａに対するおよびセルボード１０２ａからの帯域幅は、ファブリックエージェントチップ１１４ａの最大帯域幅によって制限される。
同様に、クロスバスイッチ１１６は、その特定のアーキテクチャおよび実施態様によって最大帯域幅を有する。
【００１４】
ファブリックエージェントチップ１１４ａ、クロスバスイッチ１１６およびセルボード１０２ａ〜１０２ｄとクロスバスイッチ１１６との間（およびあるならば他のクロスバスイッチ間）のリンクによって課せられる帯域幅制限は、セルボード１０２ａのＣＰＵ１０４ａ〜１０４ｎによって要求される総帯域幅がファブリックエージェントチップ１１４ａとクロスバスイッチ１１６との最大大域幅を超過しない限り、いかなる問題も提示しない。
しかしながら、処理速度がおよそ１８ヶ月毎に２倍になり続けるにしたがい、およびセルボード１０２ａ〜１０２ｄのそれぞれのＣＰＵの数が増大するにしたがい、ＣＰＵ１０４ａ〜１０４ｎは、ファブリックエージェントチップ１１４ａとクロスバスイッチ１１６とが提供することができるものより高い帯域幅を要求するメモリアクセス動作を実行する可能性がある。
【００１５】
この問題に対してとられてきた１つの手法は、ＣＰＵ１０４ａ〜１０４ｎがより高速のＣＰＵによって置き換えられる場合、または各セルボードのＣＰＵの数が増大する場合に、クロスバスイッチ１１６を再設計するというものである。
しかしながら、クロスバスイッチ１１６を再設計することは、冗漫であり、時間がかかり、かつ費用がかかる。
特に、クロスバスイッチ１１６のリンクを高速化することは、雑音または他の設計上の障害により妨げられる可能性があり、クロスバスイッチ１１６のリンクの数を増大することにより、クロスバスイッチ１１６のサイズが増大し、クロスバスイッチ１１６がより多くの電力を消費することになり、クロスバスイッチ１１６を製造するコストが増大する。
【００１６】
したがって、必要なことは、マルチプロセッサコンピュータシステムにおいてシステム内データ伝送の帯域幅を増大させる技術である。
【課題を解決するための手段】
【００１７】
マルチプロセッサコンピュータシステムにおいてファブリックエージェントチップとともに使用する、圧縮／伸長（コーデック（codec））エンジンを提供する。
ファブリックエージェントチップは、コンピュータシステムにおける第１のセルボード上の第１のメモリコントローラとコンピュータシステムにおける他のセルボード上の他のメモリコントローラとの間のインタフェースとしての役割を果たす。
コンピュータシステムにおけるセルボードを、システムファブリックによって相互接続する。
第１のメモリコントローラによって読み出されるメモリデータを、ファブリックエージェントチップによりシステムファブリックを通して送信する前に、コーデックエンジンにより圧縮する。
逆に、ファブリックエージェントチップによってシステムファブリックを通して受信されるメモリデータを、第１のメモリコントローラに提供する前に、コーデックエンジンにより伸長する。
コンピュータシステムにおける他のファブリックエージェントチップに対し、同様に対応するコーデックエンジンを提供してもよい。
【００１８】
たとえば、本発明の一態様において、コンピュータシステムであって、システムファブリックと、システムファブリックに接続された複数のセルボードであって、それぞれが、少なくとも１つのマイクロプロセッサと、メモリと、メモリと少なくとも１つのマイクロプロセッサとの間に連結されたマイクロコントローラと、マイクロコントローラとシステムファブリックとの間に連結されたファブリックエージェントチップと、マイクロコントローラとファブリックエージェントチップとの間に連結された圧縮／伸長（コーデック）エンジンと、を備えた複数のセルボードと、を具備するコンピュータシステムが提供される。
システムファブリックはたとえば、１つまたは複数のクロスバスイッチを備えてもよい。
【００１９】
複数のセルボードのそれぞれにおけるコーデックエンジンは、メモリコントローラによりファブリックエージェントチップに送出されるデータを圧縮する手段と、ファブリックエージェントチップによりメモリコントローラに送出されるデータを伸長する手段と、を備えてもよい。
コーデックエンジンは、ファブリックエージェントチップのコンポーネントであってもよい。
【００２０】
本発明の別の態様において、方法であって、（Ａ）マルチプロセッサコンピュータシステムにおいて第１のメモリコントローラからデータを取得するステップと、（Ｂ）データを圧縮し圧縮データをもたらす、圧縮するステップと、（Ｃ）マイクロプロセッサコンピュータシステムにおいて圧縮データをシステムファブリックを介して送信するステップと、を含む方法が提供される。
マルチプロセッサコンピュータシステムは、ステップ（Ｂ）および／または（Ｃ）を実行するファブリックエージェントチップを備えてもよい。
【００２１】
本方法は、さらに、（Ｄ）圧縮されたデータを伸長して第１のメモリコントローラから取得されたデータを生成する、伸長するステップと、（Ｅ）第２のメモリコントローラによって発行された第１のメモリ読出し要求に応じて、第１のメモリコントローラから取得されるデータを第２のメモリコントローラに提供するステップと、を含んでもよい。
本方法はまた、マイクロプロセッサによって発行される第２のメモリ読出し要求に応じて、第１のメモリコントローラから取得されるデータをマイクロプロセッサに提供すること、および／または、第１のメモリコントローラから取得されるデータを第２のメモリコントローラによって制御されるメモリに格納すること等のステップを実行してもよい。
【００２２】
本発明のさまざまな態様および実施形態の他の特徴および利点は、以下の説明および特許請求の範囲から明らかとなろう。
【発明を実施するための最良の形態】
【００２３】
マルチプロセッサコンピュータシステムにおいてファブリックエージェントチップとともに使用する、圧縮／伸長（コーデック）エンジンを提供する。
ファブリックエージェントチップは、コンピュータシステムにおける第１のセルボード上の第１のメモリコントローラとコンピュータシステムにおける他のセルボード上の他のメモリコントローラとの間のインタフェースとしての役割を果たす。
コンピュータシステムにおけるセルボードを、システムファブリックによって相互接続する。
第１のメモリコントローラによって読み出されるメモリデータを、ファブリックエージェントチップによりシステムファブリックを通して送信される前に、コーデックエンジンにより圧縮する。
逆に、ファブリックエージェントチップによってシステムファブリックを通して受信されるメモリデータを、第１のメモリコントローラに提供される前にコーデックエンジンにより伸長する。
コンピュータシステムにおける他のファブリックエージェントチップに対し、同様に対応するコーデックエンジンを提供してもよい。
【００２４】
本発明の特定の実施形態について説明する前に、従来技術によるシステム１００がメモリアクセスを実行するために使用する可能性のある技術についてより詳細に説明する。
図２を参照すると、メモリ読出し動作を実行するためにシステム１００が実行する可能性のある動作を示すデータフロー図が示されている。
【００２５】
図２に示す例では、セルボード１０２ａのＣＰＵ１０４ａは、システムバス１０８を通してメモリコントローラ１１０ａにメモリ読出し要求２０２を発行する。
メモリ読出し要求２０２は、セルボード１０２ａのメモリ１１２ａと他のセルボード１０２ｂ〜１０２ｄのメモリ（図示せず）とをともに包含するグローバル（仮想）アドレス空間を使用して１つまたは複数のメモリアドレスを指定する。
例示の目的で、読出し要求によって指定されるメモリは、セルボード１０２ａのメインメモリ１１２ａ内にないものと仮定する。
【００２６】
メモリコントローラ１１０ａは、読出し要求２０２を受取り、その要求されたメモリがオンボードメモリ１１２ａにないと判断する。
メモリコントローラ１１０ａは、たとえば、オンボードメモリ１１２ａ内のメモリアドレス範囲のテーブルを参照することにより、この判断を行ってもよい。
結果として、メモリコントローラ１１０ａは、もとの読出し要求２０２を、他のセルボード１０２ｂ〜１０２ｄのうちの１つにおけるメモリから読み出すことによって満足することができるように、メモリ要求２０４をファブリックエージェントチップ１１４ａに送出する。
読出し要求２０４は、通常、読出し要求２０２と同じグローバルメモリアドレス空間を使用する。
【００２７】
セルボード１０２ａのファブリックエージェントチップ１１４ａは、読出し要求２０４を受け取ることに応じて、読出し要求２０４によって要求される同じメモリアドレスからのデータを要求する読出し要求２０６を、クロスバスイッチ１１６に送出する。
しかしながら、ファブリックエージェントチップ１１４ａは、要求されたメモリアドレスを、クロスバスイッチ１１６によって理解されるメモリアドレス空間のアドレスに変換してもよい。
ファブリックエージェントチップ１１４ａとクロスバスイッチ１１６とを、通常は、共有される事前定義されたプロトコルに従って互いに通信するように設計する。
【００２８】
クロスバスイッチ１１６は、読出し要求２０６を受け取ることに応じて、セルボード１０２ｂ〜１０２ｄのいずれが読出し要求２０６を受信するべきかを判断し、その読出し要求２０６を適当なセルボードに転送する。
この例では、セルボード１０２ｄが、読出し要求２０６によってアドレス指定されるメモリを含み、したがってクロスバスイッチ１１６がセルボード１０２ｄに読出し要求２０６を転送するものと仮定する。
【００２９】
図３に示すように、セルボード１０２ｄは、ファブリックエージェントチップ１１４ｄを有する。
図１には示さないが、セルボード１０２ｄはまた、メインメモリ１１０ｄとメモリコントローラ１１０ｄ（図２）とを有する。
ファブリックエージェントチップ１１４ｄは、クロスバスイッチ１１６から読出し要求２０６を受信し、読出し要求２０６におけるメモリアドレスをグローバル仮想アドレス空間のアドレスに戻すように変換し、適当な読出し要求２０６をセルボード１０２ｄのメモリコントローラ１１０ｄに送出する。
メモリコントローラ１１０ｄは、メモリ１１２ｄにおける読出し要求２０６によってアドレス指定されたメモリロケーションからデータ２０８を読み出す。
読出しデータ２０８は、たとえば、メモリデータの１つまたは複数のページを含んでもよい。
【００３０】
メモリコントローラ１１０ｄは、読出しデータ２０８を、ファブリックエージェントチップ１１４ｄ、クロスバスイッチ１１６、ファブリックエージェントチップ１１４ａおよびメモリコントローラ１１０ａを介してＣＰＵ１０４ａに返送する。
それにより、読出しデータ２０８は、ローカルオンボードメモリ１１２ａから直接満足される読出し要求から区別のつかない（ＣＰＵ１０４ａの観点から）方法で、初期読出し要求２０２に応じてＣＰＵ１０４ａによって受け取られる。
【００３１】
ここで、本発明の特定の実施形態について説明する。
図３を参照すると、本発明の一実施形態によるコンピュータシステム３００のブロック図が示されている。
システム３００は、図１に示すシステム１００と同じコンポーネントのうちのいくつかを備える対称型マルチプロセッシング（ＳＭＰ）コンピュータシステムである。
たとえば、システム３００は、セルボード１０２ａ〜１０２ｄと、クロスバスイッチ１１６と、Ｉ／Ｏサブシステム１１８と、を備える。
【００３２】
システム３００のセルボード１０２ａ〜１０２ｄは依然として、ファブリックエージェントチップ１１４ａ〜１１４ｄを備える。
さらに、セルボード１０２ａ〜１０２ｄは、圧縮／伸長（コーデック）エンジン３２０ａ〜３２０ｄを備える。
コーデックエンジン３２０ａ〜３２０ｄのそれぞれは、ファブリックエージェントチップ１１４ａ〜１１４ｄのうちの対応するものによって送信されかつ受信されるデータを圧縮し伸長する。
ここで、コーデックエンジン３２０ａ〜３２０ｄの動作についてより詳細に説明する。
【００３３】
図４Ａおよび図４Ｂを参照すると、本発明の一実施形態によりメモリ読出し要求を処理するためにシステム３００が実行する方法４００のフローチャートが示されている。
図５Ａおよび図５Ｂを参照すると、方法４００によって実行される動作を示すデータフロー図が示されている。
当業者は、メモリ書込み要求を処理するために図４および図５によって示す技術をいかに使用するかを理解するであろう。
【００３４】
図５Ａおよび図５Ｂに示す例では、セルボード１０２ａのＣＰＵ１０４ａは、図２に関して上述した方法で、システムバス１０８を通してメモリコントローラ１１０ａにメモリ読出し要求５０２を発行する（ステップ４０２）。
例示の目的で、読出し要求５０２によって指定されるメモリロケーションがセルボード１０２ａのメインメモリ１１２ａ内にないものと仮定する。
【００３５】
メモリコントローラ１１０ａは、読出し要求５０２を受取り、その要求されたメモリがオンボードメモリ１１２ａにはないと判断する。
したがって、メモリコントローラ１１０ａは、他のセルボード１０２ｂ〜１０２ｄのうちの１つにおけるメモリから読み出すことによりもとの読出し要求５０２を満足させることができるように、メモリ読出し要求５０４をファブリックエージェントチップ１１４ａに送出する（ステップ４０４）。
【００３６】
読出し要求５０４は、コーデックエンジン３２０ａによってインターセプトされる。
図５Ａおよび図５Ｂに示す例では、コーデックエンジン３２０ａは、読出しまたは書込みデータを含むメッセージのデータ部分のみを圧縮し伸長する。
読出し要求５０４はメモリアクセス要求であり、いかなる読出しまたは書込みデータも含まないため、コーデックエンジン３２０ａは、読出し要求５０４を圧縮も伸長もすることなくファブリックエージェントチップ１１４ａに転送する（ステップ４０６）。
【００３７】
セルボード１０２ａのファブリックエージェントチップ１１４ａは、読出し要求５０４を受け取ることに応じて、図２に関して上述したように、読出し要求５０４によって要求される同じメモリロケーションを要求する読出し要求５０６をクロスバスイッチ１１６に送信する（ステップ４０８）。
クロスバスイッチ１１６は、読出し要求５０６を受信することに応じて、セルボード１０２ｂ〜１０２ｄのいずれが読出し要求５０６を受信するべきかを判断し、その読出し要求５０６を適当なセルボードに転送する（ステップ４１０）。
本実施例では、セルボード１０２ｄが、読出し要求５０６によってアドレス指定されたメモリを有し、したがってクロスバスイッチ１１６が読出し要求５０６をセルボード１０２ｄに転送するものと仮定する。
【００３８】
セルボード１０２ｄは、クロスバスイッチ１１６ｄから読出し要求５０６を受信するファブリックエージェントチップ１１４ｄを備える。
ファブリックエージェントチップ１１４ｄは、読出し要求５０６におけるメモリアドレスをグローバル仮想アドレス空間に戻すように変換し、適当な読出し要求５０７を生成する（ステップ４１２）。
読出し要求５０７はコーデックエンジン３２０ｄが受け取り、コーデックエンジン３２０ｄは、読出し要求５０７をそのいずれの部分を圧縮も伸長もすることなくメモリコントローラ１１０ｄに転送する（ステップ４１４）。
【００３９】
メモリコントローラ１１０ｄは、メモリ１１２ｄの読出し要求５０８によってアドレス指定されるメモリロケーションからデータ５０８を読み出す（ステップ４１６）。
読出しデータ５０８は、たとえば、メモリデータの１つまたは複数のページを含んでもよい。
【００４０】
メモリコントローラ１１０ｄは、読出しデータ５０８を、ヘッダ部５１２と読出しデータ５０８を含むデータ部５１４とを含むメッセージ５１０で送出する（ステップ４１８）。
ヘッダ部とデータ部とを含むメッセージの使用は、当業者には既知であり、例示および説明を容易にするために上記図２の説明から省略した。
【００４１】
メッセージ５１０を、コーデックエンジン３２０ｄが受け取り、コーデックエンジン３２０ｄは、そのメッセージ５１０のデータ部５１４の読出しデータ５０８を圧縮する（ステップ４２０）。
コーデックエンジン３２０ｄは、ヘッダ５１２と圧縮形態の読出しデータ５０８を含むデータ部５１８とを含むメッセージ５１６を生成する（ステップ４２２）。
コーデックエンジン３２０ｄは、圧縮された読出しデータ５１８を生成するために、圧縮アルゴリズムのＬＺＷファミリ（たとえば、ＬＺ１、ＬＺ７７、ＬＺ７８）、ランレングス符号化（たとえば、ハフマン符号化、算術符号化）等、いかなる種類のデータ圧縮を使用してもよい。
【００４２】
メッセージ５１６を、ファブリックエージェントチップ１１４ｄが受け取り、ファブリックエージェントチップ１１４ｄは、ヘッダ５１２において参照されるメモリアドレスを、クロスバスイッチ１１６によって使用されるアドレス空間のメモリアドレスに変換する。
ファブリックエージェントチップ１１４ｄは、変換されたアドレスを使用するヘッダ５２２と、読出しデータ５０８の圧縮形態を含むデータ部５１８と、を含むメッセージ５２０を生成する。
ファブリックエージェントチップ１１４ｄは、メッセージ５２０を、クロスバスイッチ１１６を介してファブリックエージェントチップ１１４ａに送信する（ステップ４２４）。
ファブリックエージェントチップ１１４ａは、ヘッダ５２２のメモリアドレスをグローバル仮想アドレス空間のアドレスに戻すように変換し、ヘッダ５１２と圧縮形態の読出しデータ５０８を含むデータ部５１８とを含むメッセージ５２４を生成する。
ファブリックエージェントチップ１１４ａは、メッセージ５２４をコーデックエンジン３２０ａに送出し（ステップ４２６）、コーデックエンジン３２０ａは、メッセージ５２４のデータ部５１８を伸長し（ステップ４２８）、ヘッダ５１２と（圧縮されていない）読出しデータ５０８を含むデータ部５１４とを含むメッセージ５２６を生成する。
【００４３】
コーデックエンジン３２０ａは、メッセージ５２６をメモリコントローラ１１０ａに送出し（ステップ４３０）、メモリコントローラ１１０ａは、読出しデータ５０８を抽出してＣＰＵ１０４ａに送出する（ステップ４３２）。
それにより、読出しデータ５０８は、ＣＰＵ１０４ａにより、ローカルオンボードメモリ１１２ａから直接満足される読出し要求と（ＣＰＵ１０４ａの観点から）識別不可能な方法で、初期読出し要求５０２に応じて受け取られる（ステップ４３４）。
【００４４】
本発明の実施形態の利点には、以下のうちの１つまたは複数がある。
【００４５】
上述したように、プロセッサ速度がシステムファブリック帯域幅に対して増大し続けるにしたがい、マルチプロセッサコンピュータシステムのシステムファブリックの帯域幅が増大する必要がある。
本明細書で開示した技術を使用して、クロスバスイッチ１１６自体の実際の（ハードウェア）帯域幅を増大させることなく、システムファブリック帯域幅を有効に増大させることができる。
特に、データを送信する前に圧縮することにより、クロスバスイッチ１１６を通してより迅速に送信することができる。
送信側コーデックエンジンと受信側コーデックエンジンとが送信されたデータを十分迅速に圧縮し伸長することができる限り、かかる圧縮により、帯域幅を有効に増大させることができる。
【００４６】
クロスバスイッチ１１６がボトルネックなしにシステム間トラフィックを伝送するのを可能にすることに加えて、データ圧縮／伸長を使用することにより、コンピュータシステム３００で実行するアプリケーションによる性能を向上させることができる。
たとえば、データベースアプリケーション、ウェブサーバアプリケーションおよび大きいメモリのブロックに頻繁にアクセスする他のアプリケーションは、特に、本明細書で開示した技術を使用することによってもたらされる性能利得を受け易い。
【００４７】
システム３００を、コーデックエンジン３２０ａ〜３２０ｄを設計しセルボード１０２ａ〜１０２ｄにコーデックエンジン３２０ａ〜３２０ｄを追加することにより、従来技術によるシステム（図１に示すシステム１００等）に基づいて設計してもよい。
コーデックエンジン３２０ａ〜３２０ｄを、図３では別個のコンポーネントとして示すが、ファブリックエージェントチップ１１４ａ〜１１４ｄにそれぞれ統合してもよく、その場合、システム３００を、コーデックエンジン３２０ａ〜３２０ｄをそれぞれ組み込むようにファブリックエージェントチップ１１４ａ〜１１４ｄを再設計することによって設計してもよい。
そして、システム３００を、ファブリックエージェントチップ１１４ａ〜１１４ｄを、コーデックエンジン３２０ａ〜３２０ｄを含む新たなファブリックエージェントチップに置き換えることによって実施してもよい。
【００４８】
コーデックエンジン３２０ａ〜３２０ｄをファブリックエージェントチップ１１４ａ〜１１４ｄの動作に統合するため、コーデックエンジン３２０ａ〜３２０ｄによって実行される圧縮および伸長は、システム３００の他のコンポーネントに対して透過的である。
メモリコントローラ１１０ａとクロスバスイッチ１１６とは、たとえば、コーデックエンジン３２０ａがシステム３００にインストールされる場合であっても、ファブリックエージェントチップ１１４ａに送出されかつそこから受け取られるメッセージを、従来技術と同様に処理することができる。
【００４９】
したがって、上に開示した技術は、より高いシステム内帯域幅を達成するためにクロスバスイッチ１１６とシステムファブリックの他の要素との再設計および置き換えを必要とする技術に比較して、いくつかの利点を提供する。
たとえば、メモリコントローラ１１０ａおよび／またはクロスバスイッチ１１６を再設計し置き換えることは、ファブリックエージェントチップ１１４ａ〜１１４ｄを再設計し置き換えることに比較してコストがかかり時間を消費する可能性がある。
さらに、システム１００の他のいかなるコンポーネントをも再設計または置き換える必要なしに、ファブリックエージェントチップ１１４ａ〜１１４ｄを置き換えることができる。
対照的に、クロスバスイッチ１１６を再設計し置き換えるためには、しばしば、ファブリックエージェントチップ１１４ａ〜１１４ｄと、おそらくは電源、冷却システムおよびシステム１００の物理的フォームファクタを再設計しかつ／または置き換えることが必要である。
【００５０】
したがって、ファブリックエージェントチップ１１４ａ〜１１４ｄを置き換えるだけでよい解決策を、比較的容易に、比較的低コストで、かつシステム１００の他のコンポーネントを置き換える必要なしに、実施することができる。
特に、システム１００のＣＰＵ１０４ａ〜１０４ｎをより高速なＣＰＵの後続する世代と置き換える場合を考える。
かかるＣＰＵを導入する結果、既存のクロスバ１１６は、ＣＰＵ１０４ａ〜１０４ｎがそれらの最大速度で動作するために十分なシステム内帯域幅を提供することができなくなる可能性がある。
かかる場合、クロスバスイッチ１１６を、通常は、追加の帯域幅を提供するように再設計し置き換える。
しかしながら、本明細書で開示する技術を使用して、既存のクロスバスイッチ１１６を保持しながら、ファブリックエージェントチップ１１４ａ〜１１４ｄを再設計し置き換えることにより、十分なシステム内帯域幅を維持することができる。
ＣＰＵの１つのさらなる世代に対してさえも、既存のクロスバスイッチ１１６を保持することができることにより、ＣＰＵの次の世代を有するシステムを設計する場合に設計時間およびコストが低減されるという意味で顕著な利点を提供することができる。
【００５１】
上述したように、コーデックエンジン３２０ａは、データを圧縮し伸長するために種々の圧縮方式のうちのいずれを使用してもよい。
特定の所望の圧縮率は場合によって異なる可能性があるが、比較的小さい平均圧縮率（たとえば、２５％）であっても、より一般的にクロスバスイッチ１１６とシステムファブリックとの有効な帯域幅に関して測定される性能を著しく増大させることができる。
代表的な特性を有するデータに対しかかる圧縮率を一貫して達成することができ、比較的単純にかつ安価に実施することができるさまざまな圧縮アルゴリズムが、当該技術分野において既知である。
【００５２】
本発明を特定の実施形態に関して上に説明したが、上述した実施形態は単に例示するものとして提供され、本発明の範囲を限定または規定するものではない、ということを理解しなければならない。
限定されないが以下のものを含むさまざまな他の実施形態もまた、特許請求の範囲内にある。
【００５３】
本明細書では、本発明のさまざまな実施形態を対称型マルチプロセッサコンピュータアーキテクチャ（ＳＭＰ）に関して説明しているが、本発明の実施形態は、ＳＭＰに関連して使用することに限定されない。
本発明の実施形態を、たとえば、ＮＵＭＡ（non-uniform memory access（非均一メモリアクセス））マルチプロセッサコンピュータアーキテクチャに関連して使用してもよい。
【００５４】
図３において４つのセルボード１０２ａ〜１０２ｄを示しているが、これは、本発明の要件ではない。
むしろ、本明細書で開示する技術を、いかなる数のセルボードを有するマルチプロセッサコンピュータシステムに関連して使用してもよい。
さらに、システムの各セルボードは、いかなる数のプロセッサ（１を含む）を有してもよい。
本明細書で使用する「セルボード」という用語は、いかなる特定の種類のセルボードにも限定されず、むしろ、概して、１つまたは複数のプロセッサのセットがエージェントチップ等のインタフェースを介してシステムファブリックを通して通信するのを可能にする電気および／または機械コンポーネントの任意のセットを言う。
【００５５】
図３のシステム３００は、セルボード１０２ａ〜１０２ｄ間でメッセージを切り替えるクロスバスイッチ１１６を備えるが、本明細書で開示する技術を、クロスバスイッチ以外の通信手段を利用するシステムファブリックに関連して使用してもよい。
たとえば、２つ以上のセルボードを、クロスバスイッチではなくバスにより相互接続してもよい。
【００５６】
ファブリックエージェントチップ１１４ａ〜１１４ｄとコーデックエンジン３２０ａ〜３２０ｄとを、カスタム設計アナログおよび／またはデジタル回路、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはそれらの任意の組合せ等、種々の方法のうちの任意のもので実施してもよい。
【図面の簡単な説明】
【００５７】
【図１】対称型マルチプロセッシング（ＳＭＰ）アーキテクチャを有する従来技術によるコンピュータシステムのブロック図である。
【図２】メモリアクセス動作を実行するために図１のシステムが実行する可能性のある動作を示すデータフロー図である。
【図３】本発明の一実施形態による圧縮／伸長（コーデック）エンジンを含むマルチプロセッサコンピュータシステムのブロック図である。
【図４Ａ】本発明の一実施形態によりメモリ読出し動作を実行するために図３のシステムが実行する方法のフローチャートである。
【図４Ｂ】本発明の一実施形態によりメモリ読出し動作を実行するために図３のシステムが実行する方法のフローチャートである。
【図５Ａ】本発明の一実施形態により図４Ａの方法によって実行される動作を示すデータフロー図である。
【図５Ｂ】本発明の一実施形態により図４Ｂの方法によって実行される動作を示すデータフロー図である。
【符号の説明】
【００５８】
１０２・・・セルボード、
１０６・・・キャッシュ、
１０８・・・システムバス、
１１０・・・メモリコントローラ、
１１２・・・メインメモリ、
１１４・・・ファブリックエージェントチップ、
１１６・・・クロスバスイッチ、
１１８・・・Ｉ／Ｏサブシステム、
３２０ａ・・・圧縮／伸長エンジン、
３２０・・・コーデックエンジン、
１１０・・・メモリコントローラ、
１１２・・・メインメモリ、
１１４・・・ファブリックエージェントチップ、
１１６・・・クロスバスイッチ、
５１２，５２２・・・ヘッダ、
５０２，５０４，５０６，５０７・・・読出し要求、
３２０・・・コーデックエンジン、
５０８，５１４・・・読出しデータ、
５１８・・・圧縮読出しデータ、
【図１】
2005071352.tif 000003
【図２】
2005071352.tif 000004
【図３】
2005071352.tif 000005
【図４Ａ】
2005071352.tif 000006
【図４Ｂ】
2005071352.tif 000007
【図５Ａ】
2005071352.tif 000008
【図５Ｂ】
2005071352.tif 000009