明 細 書 技術分野
[0001] 本発明は、コンピュータおよびネットワーク装置で使われるコンピューティングデバ イスおよびネットワーキングデバイスの PCIエクスプレスインタフェースを拡張するイン ターコネクション用のスィッチおよびそのスィッチを用いたシステムに関する。 背景技術
[0002] 中央演算装置(CPU)、ハードディスク、グラフィックコントローラ等のコンビユーティ ングデバイス間、フォワーディングエンジン、ネットワークコントローラ等のネットヮーキ ングデバイス間、および、コンピューティングデバイスとネットワーキングデバイス間を 接続するバス規格として、ペリフエラルコンポーネントインターコネクト(PCI)が広く普 及している。この PCIの次世代規格として、 PCIのパラレルバスをシリアル化し、バケツ ト方式で通信を行う PCIエクスプレスが標準化されている。この PCIエクスプレスにより 形成される PCIエクスプレスシステムの一例が、非特許文献 1に記載されてレ、る。
[0003] 図 19に、非特許文献 1に記載されるシステムを模式的に示す。図 19に示す PCIェ タスプレスシステムは、コンピュータの中央演算処理を行う CPU101、 CPU101から の I/Oアクセスを制御するホストブリッジに搭載される PCIエクスプレスのルートコン プレックス 102、ホストブリッジに接続されるメモリ 103、ルートコンプレックス 102に接 続される PCIエクスプレススィッチ 104、 PCIエクスプレススィッチ 104に接続されるコ ンピューティングデバイスに搭載される PCIエクスプレスのエンドポイント 105、 106、 107で構成される。
[0004] PCIエクスプレススィッチ 104は、エンドポイントを接続する PCIエクスプレスインタフ エースの接続数を増やす目的で使われる。 PCIエクスプレススィッチ 104の内部回路 構成の一例が、非特許文献 2に記載されている。
[0005] 図 20に、非特許文献 2に記載されるスィッチを模式的に示す。図 20に示す PCIェ タスプレススィッチ 104は、ルートコンプレックス方向につながる上流 PCI— PCIブリツ ジ 1041と、エンドポイント方向につなカる下流 PCI— PCIプ、リッジ 1042, 1043, 104
4とで構成され、各 PCI— PCIブリッジ間は PCIエクスプレススィッチ内部バス 1045で 接続される。 部バス 1045上で転送されるパケット(TLP :Transaction Layer Pakcet)は、 CP U101のアドレス空間上で管理される PCIエクスプレスのフレームが使用される。本明 細書では、このフレームを TLPフレームと呼ぶ。 PCIエクスプレスでは、 TLPフレーム のヘッダの表記から TLPフレームの転送先を特定する手法として、アドレスルーティ ングと IDルーティングの 2種類が定義されている。アドレスルーティングは、あて先で あるエンドポイントなどに割り当てられた I/O空間あるいはメモリ空間を指定すること で、あて先を特定する手法であり、そのフレームフォーマットは非特許文献 3に記載さ れている。他方、 IDルーティングは、あて先が接続するバスの番号、同一バス内のデ バイス識別のために割り当てられたデバイス番号、デバイス内の各機能に割り当てら れたファンクション番号を指定することで、あて先を特定する手法であり、そのフレー ムフォーマットは非特許文献 4に記載されている。本明細書では、あて先を特定する 、 I/O空間あるいはメモリ空間、および、バス番号とデバイス番号とファンクション番 号を総称して、あて先アドレス空間と呼ぶ。
[0007] 図 21に、アドレスルーティング用フレーム(アドレスルーティング TLPフレーム)のフ ォーマットを示す。アドレスルーティング TLPフレームを用いたデータ転送では、 Byt e8の Address [31 : 2]のデータ領域があて先アドレス空間に用いられる。このフレー ムが図 20の PCIエクスプレススィッチ 104上に流れてきた場合、 PCIエクスプレススィ ツチ内部バス 1045上につながる全ての PCI— PCIブリッジがこのフレームを受信し、 フレームに格納されて!/、る Address [31: 2]に対応するデバイスが自ブリッジの先に つながつているブリッジが、このフレームをデバイスに転送する。また、通常、ブリッジ の先につながるデバイスが扱うアドレスは CPU101によって、アドレスが重ならないよ うに設定されるため、フレームは或る 1つの PCI— PCIブリッジから転送される。
[0008] 図 22に、 IDルーティング用フレーム(IDルーティング TLPフレーム)のフォーマット を示す。 IDルーティング TLPフレームを用いたデータ転送では、 Byte8のバス番号、 デバイス番号およびファンクション番号があて先アドレス空間に用いられる。この TLP
フレームが図 20の PCIエクスプレススィッチ 104に流れてきた場合、 PCIエクスプレス スィッチ内部バス 1045上につながる全ての PCI— PCIブリッジがそれをフレームを受 信する。そして、その TLPフレームに格納されているバス番号、デバイス番号および ファンクション番号に対応するデバイスに接続されているブリッジ力 S、この TLPフレー ムをデバイスに転送する。また、 IDルーティングに用いられるバス番号、デバイス番 号およびファンクション番号は、複数のデバイス間で重ならないように、 CPU101によ り設定される。よって、 TLPフレームは、或る 1つの PCI— PCIブリッジ力も転送される
〇
[0009] 図 19に示す PCIエクスプレスシステムは、複数のエンドポイントの内の任意のものを CPU101に接続することができる。し力、しな力 、 1つの CPUのみが接続されることを 想定したフレーム転送方法および PCIエクスプレススィッチ構成が適用されるため、 複数の CPUを接続することはできない。従って、複数の CPUの間でエンドポイントを 共有することはできない。
[0010] 上記問題を解決する手法として、以下の 2つの関連技術がある。
[0011] 一つは、ネットワークに複数の CPUとエンドポイントとを分散して接続し、それらの間 の接続を動的に設定するアドバンストスイツチングィンターコネクト (ASI)である。この ASIの一例が非特許文献 5に記載されている。
[0012] 図 23に、非特許文献 5に記載されたシステムを模式的に示す。図 23より、 ASIネッ トワーク 1301は次の構成要素を備える。ルートコンプレックス側 PCIエクスプレス一 A SIブリッジ 1302及び 1303は、対応するルートコンプレックス 102及び 109に接続さ れ、 TLPフレームをカプセル化した ASIパケットを送受信する。 ASIスィッチ 1304は 、 ASIパケットのあて先が接続されているポートに対し、その ASIパケットを転送する。 エンドポイント側 PCIエクスプレス ASIブリッジ 1305〜1307は、エンドポイント 105 〜; 107に接続され、 TLPフレームをカプセル化した ASIパケットを送受信する。ファ ブリックマネージャ 1308は、ルートコンプレックス側 PCIエクスプレス一 ASIブリッジ 1 302及び 1303と、エンドポイント側 PCIエクスプレス一 ASIブリッジ 1305〜 1306との 間の接続を管理する。
[0013] 上記関連技術の他方は、設定可能な PCIエクスプレススィッチを使用するというも
のである。その一例が特許文献 1に記載されて!/、る。
[0014] 図 24に、特許文献 1に記載されるシステムを模式的に示す。また、図 25に、そのシ ステムに用いられる PCIエクスプレススィッチの構成を示す。図 25を参照すると、設定 可能 PCIエクスプレススィッチ 111は、次の構成要素を備える。上流 PCI— PCIブリツ ジ 1111及び 1112は、ルートコンプレックス 102及び 109に接続される。下流 PCI— PCIブリッジ 1113〜; 1115は、エンドポイント 105〜; 107に接続される。 PCIエタスプ レススィッチ内部バス 1116は、上流 PCI— PCIブリッジ 1111と下流?じ1— ?じ1ブリッ ジ 1113〜; 1115とを接続する。 PCIエクスプレススィッチ内部バス 1117は、上流 PCI — PCIブリッジ 1112と下流 PCI— PCIブリッジ 1113〜; 1115とを接続する。ブリッジコ ントローラ論理 1118は、外部制御 1119に従って、 PCIエクスプレススィッチ内部バ ス 1116及び 1117と下流 PCI— PCIブリッジ 1113〜; 1115との接続関係を制卸する
〇
[0015] 次に、 PCIエクスプレスを使用したネットワークシステムについて説明する。
[0016] 図 26に、 PCIエクスプレスを使用した一般的なネットワークシステムの一例を示す。
このネットワークシステムでは、ポート;!〜 3に接続されるネットワーク用フォヮ一ディン グエンジン 402〜404をネットワーク用スィッチ 401で相互に接続する。ネットワーク 用フォワーディングエンジン 402〜404は、ポート;!〜 3から入力されるネットワークデ ータのあて先を解析する。ネットワーク用スィッチ 401は、或る 1ポートに対しデータを 転送するュニキャスト転送、及び、複数の特定のポートに対しデータを転送するマル チキャスト転送の 2つの動作を実行する。
[0017] また、図 26のシステムにおいて、転送データのあて先が不明な場合は、 CPU101 がプロトコル解析を行ってからルーティング転送を行う。そのために、 PCIエタスプレ ススィッチ 104力 S、 CPU101のルートコンプレックス 102とネットワーク用フォヮ一ディ ングエンジン 402〜404とを接続する。
[0018] 特許文献 1:特開 2005— 317021号公報
非特許文献 1 : PCI Express Base Specification Revision 1.1,PCI- SIG,March 28,2005, pp.30
非特許文献 2 : PCI Express Base Specification Revision 1.1,PCI- SIG,March 28,2005,
pp.34
非特許文献 3 : PCI Express Base Specification Revision 1.1,PCI- SIG,March 28,2005, pp.52,53
非特許文献 4 : PCI Express Base Specification Revision 1.1,PCI- SIG,March 28,2005, pp.54
非特許文献 5 : Protocol Interface #8(PI- 8) R1.0, ASI-SIG, February 2004,pp. 7-11 発明の開示
発明が解決しょうとする課題
[0019] 上述した PCIエクスプレスシステムにおいては、以下に述べるような課題がある。
[0020] 第 1の課題は、図 25に示す PCIエクスプレスを使用したシステムにおいて、ルートコ ンプレックス側につながるデバイス(CPU等)間の通信ができないことである。その理 由は、設定可能な PCIエクスプレススィッチ 111における内部バス 1116と内部バス 1 117とは完全に分離されていることにより、ルートコンプレックス 102につながる上流 P CI— PCIブリッジ 1111とルートコンプレックス109にっながる上流?じ1ー?じ1ブリッジ 1112とをつなぐパスが存在しな!/、からである。
[0021] 第 2の課題は、図 25に示す PCIエクスプレスを使用したシステムにおいて、それぞ れ異なるルートコンプレックス側につながるデバイス(CPU等)から同じエンドポイント に対する同時通信ができないことである。その理由は、設定可能な PCIエクスプレス スィッチ 111における内部ノ ス 1116と内部ノ ス 1117とに対し、下流 PCI— PCIブリ ッジ 1113〜; 1115が択一的に接続されるからである。エンドポイント 105が、ルートコ ンプレックス 102側の PCIエクスプレススィッチ内部バス 1116に接続されている場合 、 CPU108は、エンドポイント 105に対してデータを送信することができない。
[0022] 第 3の課題は、図 26に示す PCIエクスプレススィッチには、特定のデバイスに対し てのマルチキャスト転送機能がないことである。そのため、ネットワーク用スィッチ 401 及び PCIエクスプレススィッチ 104という 2種類のスィッチが必要になる。よって、シス テム構成が複雑になり、コストが高くなり、システム運用が複雑になるという課題がある
〇
[0023] 図 23に示す ASIネットワーク 1301を使用すれば、ルートコンプレックス側につなが
るデバイス(CPU等)間の通信、及び、異なるルートコンプレックス側につながるデバ イス(CPU等)から同じエンドポイントに対する同時通信、ならびに、マルチキャスト通 信が可能になる。し力もながら、フレームをカプセル化する処理が必要になるため、 データ転送時の遅延時間を削減し難ぐまた、回路規模が大きくなるという別の課題 力 sある。
[0024] 本発明は、以上のような事情に鑑みてなされたものであり、その目的は、 PCIェクス プレス準拠の TLPフレームを複数のデバイス間でカプセル化することなく送受信する ためのスィッチおよび該スィッチを用いたシステムを提供することにある。
課題を解決するための手段
[0025] 本発明に係るスィッチは、それぞれに接続されたデバイスとの間で PCIエクスプレス 準拠の TLPフレームを送受信する複数のブリッジと、前記複数のブリッジが接続され る複数のポートを有し、前記複数のポートのレ、ずれかから入力された TLPフレームの 宛先情報と該 TLPフレームを入力したポートとの組み合わせに応じて出力ポートを選 定し該出力ポートから前記 TLPフレームを出力するスィッチフォワーディング機構と を備える。
[0026] 本発明に係るシステムは、前記スィッチおよび相互に異なるいずれかの前記デバィ スに接続された第 1の PCIエクスプレスバスおよび第 2の PCIエクスプレスバスとを備 X·る。
発明の効果
[0027] 本発明によれば、 PCIエクスプレスを使用したシステムにおいて、フレームカプセル 化の処理を行うことなぐ CPUのようなデバイス間の通信が可能となる。これにより、デ ータ転送時の遅延の増大、及び、 LSI回路規模の増大を防ぐことができる。
図面の簡単な説明
[0028] [図 1]本発明に係るスィッチを使用したシステムの実施形態の構成を示すブロック図 である。
[図 2]本発明の実施形態の PCIエクスプレス拡張スィッチの内部構成を示すブロック 図である。
[図 3]本発明の実施形態の内の PCIエクスプレスパケットスィッチフォワーディング機
構の内部構成を示すブロック図である。
園 4]本発明の実施形態のグループ ID管理テーブルメモリの説明図である。
[図 5]本発明の実施形態の拡張アドレスルーティング TLPフレームの説明図である。
[図 6]本発明の実施形態の拡張 IDルーティング TLPフレームの説明図である。
[図 7]本発明の実施形態の拡張 TLPフォワーディングテーブルの説明図である。 園 8]本発明の実施形態の拡張アドレスルーティング用テーブルメモリの説明図であ 園 9]本発明の実施形態の拡張 IDルーティング用テーブルメモリの説明図である。
[図 10]本発明の実施形態のマルチキャストテーブルメモリの説明図である。
[図 11]本発明の実施形態の PCIエクスプレスパケットスィッチフォワーディング機構の 動作を示すフローチャートである。
園 12]本発明の実施形態の CPUが管理するアドレス空間に関する説明図である。 園 13]本発明の実施形態における CPU— CPU通信に用いる拡張アドレスルーティ ング用テーブルメモリの説明図である。
園 14]本発明の実施形態において複数の CPUがエンドポイントを共有する場合に用 いるグループ ID管理テーブルメモリの説明図である。
園 15]本発明の実施形態において複数の CPUがエンドポイントを共有する場合のァ ドレス空間に関する説明図である。
園 16]本発明の実施形態において複数の CPUがエンドポイントを共有する場合に用 いる拡張アドレスルーティング用テーブルメモリの説明図である。
園 17]本発明に係るスィッチを使用したシステムの他の実施形態の構成を示すブロッ ク図である。
園 18]本発明に係るスィッチを使用したシステムの他の実施形態の構成を示すブロッ ク図である。
園 19]非特許文献 1に基づくシステムの構成を示すブロック図である。
園 20]非特許文献 2に基づくシステムの構成を示すブロック図である。
[図 21]PCIエクスプレス準拠のアドレスルーティング用フレームのフォーマットに関す る説明図である。
[図 22]PCIエクスプレス準拠の IDルーティング用フレームのフォーマットに関する説 明図である。
[図 23]非特許文献 5に基づく ASIネットワークの構成を示すブロック図である。
[図 24]特許文献 1に基づくシステムの構成を示すブロック図である。
[図 25]特許文献 1に基づくシステムにおけるスィッチの内部構成を示すブロック図で ある。
[図 26]PCIエクスプレス準拠のスィッチを使用したネットワークシステムの構成を示す ブロック図である。
符号の説明
[0029] 304: PCIエクスプレス拡張スィッチ
20: PCIエクスプレスパケットスィッチフォワーディング機構
3041、 3042、 3043、 3044、 3045: PCI— PCIブリッジ
11、 12、 13、 14、 15 : PCIエクスプレスノ ス
102、 109 :ノレートコンプレックス
105〜; 107:エンドポイント
30 :制御 CPU
3040:外部制御インタフェース
発明を実施するための最良の形態
[0030] 次に本発明の実施の形態について図面を参照して詳細に説明する。
[0031] 図 1に、本発明の実施形態のシステム構成を示す。 PCIエクスプレスシステム 10は 、本発明に掛るスィッチに対応する PCIエクスプレス拡張スィッチ 304に、複数のル ートコンプレックス 102及び 109と複数のエンドポイント 105〜107とが PCIエタスプレ スバス;!;!〜 15を介して接続された構成である。ルートコンプレックス 102には、 CPU 101とメモリ 103と力 S接続され、ルートコンプレックス 109には、 CPU108とメモリ 110 とが接続されている。
[0032] 各ノレートコンプレックス 102及び 109、ならびに、エンドポイント 105〜; 107は、図 21 に示すアドレスルーティング TLPフレームおよび図 22に示す IDルーティング TLPフ レームを用いてデータ通信を行う機能を有する PCIエクスプレス対応のデバイスであ
[0033] 図 2に、 PCIエクスプレス拡張スィッチ 304の構成を示す。 PCIエクスプレス拡張スィ ツチ 304は、ルートコンプレックス 102と PCIエクスプレスバス 11により接続される PCI PCIブリッジ 3041と、ルートコンプレックス 109と PCIエクスプレスバス 12により接 続される PCI— PCIブリッジ 3042と、エンドポイント 105と PCIエクスプレスバス 13に より接続される PCI— PCIブリッジ 3043と、エンドポイント 106と PCIエクスプレスバス 14により接続される PCI— PCIブリッジ 3044と、エンドポイント 106と PCIエクスプレス ノ ス 15により接続される PCI— PCIブリッジ 3045と、これらのブリッジ 304;!〜 3045 に接続される PCIエクスプレスパケットスィッチフォワーディング機構 20と力、ら構成さ れている。
[0034] PCIエクスプレスパケットスィッチフォワーディング機構 20は、 PCI— PCIブリッジ 30 4;!〜 3045を接続できる入出力インタフェースである複数のポートを備え、ポート 1に PCI— PCIブリッジ 3041、ポート 2に PCI— PCIブリッジ 3024、ポート 3に PCI— PCI フ、、リッジ 3043、ポー卜 4ίこ PCI— PCIフ、、リッジ 3044、ポー卜 5ίこ PCI— PCIフ、、リッジ 30 45がそれぞれ接続されて!/、る。
[0035] PCI— PCIブリッジ 3041及び 3042、並びに、 PCI— PCIブリッジ 3043〜3045は 、例えば図 20あるいは図 25に示すような、本発明の関連技術の PCIエクスプレススィ ツチにおける上流 PCI— PCIブリッジおよび下流 PCI— PCIブリッジと同等の機能を 有するデバイスである。ただし、関連技術における上流および下流 PCI— PCIブリツ ジカ SPCIエクスプレススィッチ内部バスで相互に接続されているのに対し、 PCI-PC Iブリッジ 304;!〜 3045は、 PCIエクスプレスパケットスィッチフォワーディング機構 20 により相互に接続されている点が相違する。各ブリッジ 304;!〜 3045は、 PCIェクス プレスパケットスィッチフォワーディング機構 20の接続ポートに対し、図 21に示すアド レスルーティング TLPフレームまたは図 22に示す IDルーティング TLPフレームを送 信し、また接続ポートからそれらと同様な形式の TLPフレームを受信する。
[0036] PCIエクスプレスパケットスィッチフォワーディング機構 20は、 PCI— PCIブリッジ 30 4;!〜 3045力 S接続されたポート;!〜 5力、ら、前述のアドレスルーティング TLPフレーム または IDルーティング TLPフレームを受信する。また、 PCIエクスプレスパケットスイツ
チフォワーディング機構 20は、フレームのヘッダに設定されて!/、る宛先アドレス空間 および自機構(20)に設定されているシステム設定情報を、後述の情報テーブルに 照らし合わせることで、フレームの出力に用いる何れかのポート(1〜5)を選択する。 ここで、フレームのヘッダに設定されたあて先アドレス空間とは、そのフレームが図 21 のアドレスルーティング TLPフレームの場合はアドレス情報である。また、そのフレー ムが図 22に示す IDルーティング TLPフレームの場合はバス番号、デバイス番号およ びファンクション番号である。システム設定情報は、 PCIエクスプレスパケットスィッチ フォワーディング機構 20に外部制御インタフェース 3040を通じて接続された制御 C PU30から設定することができる。制御 CPU30が接続できる外部制御インタフェース 3040としては、 SMBus、 I2Cバス、または、 PCI— PCIブリッジ 3041等がつながれ た PCIエクスプレスインタフェースを用いることができる。
[0037] 図 3に、 PCIエクスプレスパケットスィッチフォワーディング機構 20の構成を示す。グ ループ ID管理テーブルメモリ 2047および拡張 TLPフォワーディングテーブル 204 は、外部制御インタフェース 3040を介して入力されるシステム設定情報を保持する 記憶手段を構成するものである。転送制御部 200は、ポート;!〜 5から受信した入力 TLPフレーム 21を、そのフレームのヘッダに設定されたあて先アドレス空間およびシ ステム設定情報に基づいて出力用のポート(1〜5)を選択し、選択したポートから出 力 TLPフレーム 22を出力する。転送制御部 200は、入力 TLPヘッダ書換器 205、テ 一ブルサーチ器 203、フレーム転送器 207、及び、出力 TLPヘッダ書換器 2051か ら構成される。
[0038] グループ ID管理テーブルメモリ 2047は、各ポート;!〜 5とグループ IDとの対応関係 などの情報を記憶するメモリである。図 4に、グループ ID管理テーブルメモリ 2047の 内容例を示す。図 4より、グループ ID管理テーブルメモリ 2047は、ポート番号に 1対 1に対応するテーブルエントリを有する。各テーブルエントリには、そのポート番号に 対応するグループ ID、ポート属性およびデバイス属性が記録される。
[0039] グループ IDの役割は、システム 10のデバイス(CPUやエンドポイントなど)を、同じ メモリ空間を共有するデバイス群にグループ化することである。一般の PCIエタスプレ スシステムでは、メモリ空間の割り当て管理をルートコンプレックス側のデバイスが行う
ので、ルートコンプレックス側の複数のデバイス間でメモリ空間を共有することはな!/ヽ 。従って、図 4に示すように、ポート番号「1」とポート番号「2」とにそれぞれ異なるダル ープ ID「1」及び「2」が設定されている。このように、ルートコンプレックス側のデバイス が接続される複数のポートに対しては、アドレス競合を避けるために、それぞれ異な るグループ IDが設定される。他方、エンドポイント側のデバイスが接続されるポートの うち、対応のデバイスが特定の CPUのみで使用されるポート群には、その CPUと同 じグループ IDが設定される。図 4において、ポート番号「3」にグループ ID「1」が設定 され、また、ポート番号「4」及び「5」の双方にグループ ID「2」が設定されている。これ は、図 1のエンドポイント 105を CPU101のみで使用し、エンドポイント 106及び 107 を CPU108のみで使用するための設定である。また、図 4には例示されていないが、 エンドポイント側の或るデバイスが複数の CPUで共用される場合には、そのデバイス には、それ専用のグループ IDが設定される。
[0040] 本実施の形態の場合、グループ IDは 4ビットである。これは、本実施の形態ではグ ループ IDを設定する TLPヘッダ領域として 4ビットの予約領域を使用するためである 。仮に、 5ビット以上の予約領域を使用することができる場合、グループ IDに 5ビット 以上の領域を割り当ててもょレ、。
[0041] グループ ID管理テーブルメモリ 2047のポート属性およびデバイス属性は、それぞ れ異なる観点で、ポートに接続される装置の種類を示す。すなわち、ポート属性は、 ポートに接続される装置として、ルートコンプレックスおよびエンドポイントと、スィッチ( PCIエクスプレス拡張スィッチ)との 2種類のうちの何れが接続されて!/、るかを示す。 具体的には、ルートコンプレックスおよびエンドポイントであれば値「0」、スィッチ(PC Iエクスプレス拡張スィッチ)であれば値「1」が設定される。他方、デバイス属性は、ポ ートに接続される装置として、ルートコンプレックス、エンドポイント、それ以外のスイツ チ等のブリッジの 3種類のうちの何れが接続されているかを示す。具体的には、ルー トコンプレックスであれば値「0」、エンドポイントであれば値「1」、ブリッジであれば値「 2」が設定される。これらポート属性およびデバイス属性の役割や利用方法について は後述する。
[0042] 入力 TLPヘッダ書換器 205は、グループ ID管理テーブルメモリ 2047を参照して、
入力 TLPフレーム 21のヘッダの予約領域に、当該入力 TLPフレーム 21を入力した ポートに対応するグループ IDを書き込むユニットである。グループ IDが設定されたァ ドレスルーティング TLPフレームまたは IDルーティング TLPフレームを、本明細書で は拡張アドレスルーティング TLPフレームおよび拡張 IDルーティング TLPフレームと 呼ぶ。
[0043] 図 5に、拡張アドレスルーティング TLPフレームのフレームフォーマットを示す。また 、図 6に拡張 IDルーティング TLPフレームのフレームフォーマットを示す。これらのフ ォーマットは、基本的な構成は図 21及び図 22に示すものと同様であり、それぞれの Byte8には、フレームの宛先情報としてのアドレスあるいはバス番号などが設定され る。図 5及び図 6に示すように、本実施形態の拡張アドレスルーティング TLPフレーム 及び拡張 IDルーティング TLPフレームにおいて、それぞれ ByteOの Address [19 : 1 6]に設定された 4ビットの予約領域には、前述のグループ ID901及び 902が書き込 まれる。また、図 6より、拡張 IDルーティング TLPフレームの Byte8における 1ビットの Address [31] (バス番号の 1ビット分)には、マルチキャスト指示情報 903が設定され る。本実施形態において、値「1」のマルチキャスト指示情報 903が設定されたフレー ムは、マルチキャスト転送用のフレームとして扱われる。
[0044] 拡張 TLPフォワーディングテーブル 204は、入力 TLPヘッダ書換器 205でヘッダ が書き換えられたフレーム、すなわち拡張アドレスルーティング TLPフレームおよび 拡張 IDルーティング TLPフレームの転送先を決定するためのルーティング情報を保 持する。図 7に、拡張 TLPフォワーディングテーブル 204の構成を示す。拡張アドレ スルーティング用テーブルメモリ 2044は、拡張アドレスルーティング TLPフレームの 転送先を決定するためのルーティング情報を保持する。拡張 IDルーティング用テー ブノレメモリ 2045は、拡張 IDルーティング TLPフレームのうちマルチキャスト指示情報 903力 S値「0」(非マルチキャスト)であるフレームの転送先を決定するためのルーティ ング情報を保持する。マルチキャストテーブルメモリ 2046は、拡張 IDルーティング T LPフレームのうちマルチキャスト指示情報 903が値「1」(マルチキャスト)であるフレ ームの転送先を決定するためのルーティング情報を保持する。
[0045] 図 8に、拡張アドレスルーティング用テーブルメモリ 2044の内容構成の一例を示す
。拡張アドレスルーティング用テーブルメモリ 2044の情報は、複数のテーブルェント リで構成される。各テーブルエントリには、 TLP送信先アドレス空間の下限値及び上 限値と、グループ IDと、出力ポート情報と、アドレススワップオフセット情報とが記録さ れる。 TLP送信先アドレス空間の下限値及び上限値は、 TLPフレームの宛先情報と して設定されている送信先アドレスの値と対比させる項目である。すなわち、図 8の T LP送信先アドレス空間の下限値及び上限値は、図 5の拡張アドレスルーティング TL Pフレームにおける Byte8の [31: 2]に記述されたアドレスと対比される項目である。 また、図 8のグループ IDは図 5の ByteOのグループ ID901と対比される項目である。 拡張アドレスルーティング用テーブルメモリ 2044の出力ポート情報は、前記対比によ り、アドレスおよびグループ IDがテーブル(2044)のものと一致した拡張アドレスルー ティング TLPフレームを出力するポートの番号である。アドレススワップオフセット情報 は、出力する TLPフレームのアドレスに加算すべきオフセット値を示す。このアドレス スワップオフセット情報は、 CPU間で TLPフレームを送受信する際に、必要に応じて 設定される。
[0046] 図 9に、拡張 IDルーティング用テーブルメモリ 2045の内容構成を示す。拡張 IDル 一ティング用テーブルメモリ 2045は、複数のテーブルエントリで構成されている。各 テーブルエントリには、バス番号、デバイス番号、ファンクション番号、グループ IDお よび出力ポート情報が記録される。このうち、バス番号、デバイス番号、ファンクション 番号およびグループ IDは、図 6の拡張 IDルーティング TLPフレームにおける宛先情 報としてのバス番号、デバイス番号およびファンクション番号(Byte8)と、グループ ID 902 (ByteO)と比較される項目である。出力ポート情報は、前記比較により、上記項 目がテーブル(2045)のものと一致した拡張 IDルーティング TLPフレームを出力す るポート番号である。
[0047] 図 10に、マルチキャストテーブルメモリ 2046の内容構成を示す。マルチキャストテ 一ブルメモリ 2046は、スィッチが受信した拡張 IDルーティング TLPフレームのマル チキャスト指示情報 903 (図 6)が「マルチキャスト」を表す場合に参照するものである 。マルチキャストテーブルメモリ 2046は、 「0x0000」〜「0x7FFF」までのメモリアドレ スに 1対 1に対応する総数 32768個のテーブルエントリで構成される。各テーブルェ
ントリには、ポートに 1対 1に対応するビットの集合である複数出力ポート情報が記録 される。マルチキャスト指示情報 903が値「 1」である拡張 IDルーティング TLPフレー ムの出力先を決定する際、その拡張 IDルーティング TLPフレーム中のバス番号(7ビ ット)、デバイス番号(5ビット)およびファンクション番号(3ビット)により構成される 15 ビット分の情報を、図 10の「メモリアドレス」と比較する。そして、「メモリアドレス」に一 致するエントリの複数出力ポート情報を選択し、その複数出力ポート情報の値「1」に 対応するポートを出力ポートとして決定する。
[0048] テーブルサーチ器 203は、入力 TLPヘッダ書換器 205から拡張アドレスルーティン グ TLPフレームまたは拡張 IDルーティング TLPフレームを受取り、その TLPフレーム の種類に応じて、拡張 TLPフォワーディングテーブル 204から転送先を決定する。ま た、出力する TLPフレームのヘッダの書換えが必要か否かを判断し、必要な場合は 出力 TLPヘッダ書換器 2051を用いて書換えを行う。そして、決定した出力ポートか らフレーム転送器 207を通じて出力 TLPフレーム 22を出力する。
[0049] 出力 TLPヘッダ書換器 2051は、テーブルサーチ器 203から指示されたヘッダの 書換え処理を行う。具体的には、アドレスオフセット値の加算、ヘッダ中のグループ I Dの削除などである。
[0050] フレーム転送器 207は、テーブルサーチ器 203から指示されたポートから出力 TLP フレーム 22を出力する処理を行う。マルチキャスト指示情報 903が値「1」である拡張 I Dルーティング TLPフレームの場合は、図 10のマルチキャストテーブルメモリ 2046に 基づき決定された複数のポートから、その TLPフレームを並列的に出力する。
[0051] 次に、本実施の形態の動作を説明する。
[0052] まず、グループ ID管理テーブルメモリ 2047 (図 4)および拡張 TLPフォヮ一ディン グテーブル 204 (図 7)の設定について説明する。本実施の形態の場合、制御 CPU3 0力 外部制御インタフェース 3040経由でグループ ID管理テーブルメモリ 2047およ び拡張 TLPフォワーディングテーブル 204をアクセスして必要な情報を設定する。
[0053] グループ ID管理テーブルメモリ 2047を設定する場合、複数の CPU (101,108)が 何れのエンドポイント(105〜; 107)を使用するかという運用形態に応じて、 PCIェクス プレスパケットスィッチフォワーディング機構 20の各ポートに対してグループ IDを設
定する。また、各ポートにつながる装置の種別に応じて、ポート属性及びデバイス属 性を設定する。
[0054] 拡張 TLPフォワーディングテーブル 204の拡張 IDルーティング用テーブルメモリ 2 045の設定では、エンドポイント 105等のデバイスごとに、そのデバイスに割り当てら れたバス番号、デバイス番号およびファンクション番号を、テーブル(2045)のバス番 号、デバイス番号およびファンクション番号の各項目に設定する。また、そのデバイス がつながるポート番号を出力ポート情報の項目に設定し、そのデバイスをどの CPU で使用するかという運用形態に応じたグループ IDをグループ IDの項目に設定する。 例えば、エンドポイント 105のデバイスに、バス番号「Bx」、デバイス番号「Dx」、ファ ンクシヨン番号「Fx」が割り当てられており、かつ、そのデバイスが CPU101からのみ 使用されると仮定する。この場合、拡張 IDルーティング用テーブルメモリ 2045の一 つのテーブルエントリにおいて、バス番号「Bx」、デバイス番号「Dx」、ファンクション 番号「Fx」が設定され、出力ポート情報にポート番号「3」が設定され、グループ IDに は、 CPU101がつながるポート 1に対応するグループ ID「1」が設定される。
[0055] 拡張アドレスルーティング用テーブルメモリ 2044の設定では、エンドポイント 105等 のデバイスごとに、そのデバイスに割り当て得るアドレス空間の下限値および上限値 をテーブル 2044の TLP送信先アドレス空間下限値および上限値に設定する。また 、そのデバイスがつながるポート番号を出力ポート情報の項目に設定し、そのデバィ スをどの CPUで使用するかという運用形態に応じたグループ IDをグループ IDの項 目に設定する。例えば、エンドポイント 105のデバイスに対し、アドレス空間下限値「A L」および上限値「AH」が割り当てられており、そのデバイスが CPU101からのみ使 用されると仮定する。この場合、拡張アドレスルーティング用テーブルメモリ 2044の 一つのテーブルエントリに、アドレス空間下限値「AL」および上限値「AH」が設定さ れ、出力ポート情報にポート番号「3」が設定され、グループ IDには、 CPU101がつ ながるポート 1に対応するグループ ID「1」が設定される。なお、本事例のように、対象 のデバイスがエンドポイントの場合、テーブル(2044)のアドレススワップオフセット情 報には、常に「0」が設定される。
[0056] 次に、図 2を参照して、ルートコンプレックス 102及び 109、並びに、エンドポイント 1
05〜107から送信された TLPフレームを、 PCIエクスプレス拡張スィッチ 304がスイツ チングして他のルートコンプレックス(102, 109)およびエンドポイント(105〜107)に 転送する際の動作を説明する。
[0057] ί可れかのデバイス(ノレートコンプレックスまたはエンドポイント)から PCIエクスプレス 拡張スィッチ 304に入力された TLPフレームは、何れかの PCI— PCIブリッジ(3041 — 3045)を介して、 PCIエクスプレスパケットスィッチフォワーディング機構 20の何れ かのポート(1〜5)に入力される。
[0058] PCIエクスプレスパケットスィッチフォワーディング機構 20は、入力された TLPフレ ームのヘッダ中のあて先アドレス空間および自機構 20のシステム設定情報に基づ!/ヽ て決定したポートからフレームを出力するというスイッチング処理を行う。
[0059] 図 11に示すフローチャートを参照して、 PCIエクスプレスパケットスィッチフォヮーデ イング機構 20の内部動作について説明する。あるポートから入力 TLPフレーム 21が 入力されると(ステップ S101)、入力 TLPヘッダ書換器 205が、その入力 TLPフレー ム 21を入力したポート番号をキーにして、グループ ID管理テーブルメモリ 2047を検 索する(ステップ S102)。この検索により、キーのポート番号に対応するグループ ID が設定されたエントリの内容を取得する。次に、入力 TLPヘッダ書換器 205は、取得 したグループ IDを入力 TLPフレーム 21のヘッダに書き込む(ステップ S103)。このと き、入力 TLPフレーム 21力 SIDルーティング TLPフレームであれば、図 6に示すように 、グループ ID902が設定された拡張 IDルーティング TLPフレームが生成される。ま た、入力 TLPフレーム 21が拡張アドレスルーティング TLPフレームであれば、図 5に 示すように、グループ ID901が設定された拡張アドレスルーティング TLPフレームが 生成される。入力 TLPヘッダ書換器 205で生成された TLPフレームは、テーブルサ ーチ器 203へ渡される。
[0060] テーブルサーチ器 203は、 TLPフレームを受け取ると、その種別を判別する(ステツ プ S104)。判別した種別が拡張アドレスルーティング TLPフレームである場合、テー ブノレサーチ器 203は、拡張 TLPフォワーディングテーブル 204中の拡張アドレスル 一ティング用テーブルメモリ 2044を参照して、当該 TLPフレームを出力するポートを 決定する(ステップ S105)。具体的には、拡張アドレスルーティング TLPフレームの B
yte8のアドレス [31 : 2]の値力 S、 TLP送信先アドレス空間下限値と上限値のアドレス 範囲に入っており、且つ、グループ ID901の値がグループ IDの値と一致するテープ ルエントリが選択され、そのテーブルエントリの出力ポート情報に設定されているポー トが出力ポートに決定される。また、そのテーブルエントリのアドレススワップオフセット 情報に「0」以外のオフセット情報が設定されて!/、る場合は、出力 TLPヘッダ書換器 2 051を用いて、拡張アドレスルーティング TLPフレームの Byte8のアドレス [31 : 2]の 値を、前記オフセット情報に格納されて!、るオフセット値だけ加算する書換処理を行 う(ステップ S 106)。フレーム転送器 207は、前記決定した出力ポートから拡張アドレ スルーティング TLPフレームを出力する(ステップ S 110)。
[0061] テーブルサーチ器 203は、 TLPフレームの種別の判定結果(ステップ S104)が拡 張 IDルーティング TLPフレームであった場合、そのマルチキャスト指示情報 903の 値力 マルチキャスト通信を表す「1」かどうかを判定する(ステップ S107)。マルチキ ャスト指示情報 903の値が「1」ではない場合、テーブルサーチ器 203は、拡張 IDル 一ティング用テーブルメモリ 2045を参照して、当該 TLPフレームを出力するポートを 決定する(ステップ S108)。具体的には、拡張 IDルーティング TLPフレーム中のバス 番号、デバイス番号およびファンクション番号の値カ、テーブルエントリ中のバス番号 、デバイス番号およびファンクション番号に一致し、且つ、グループ ID902の値がテ 一ブルエントリ中のグループ IDの値と一致するテーブルエントリが選択される。そして 、そのテーブルエントリの出力ポート情報に設定されているポートが出力ポートに決 定される。フレーム転送器 207は、前記決定したポートから拡張 IDルーティング TLP フレームを出力する(ステップ S110)。
[0062] また、マルチキャスト指示情報 903の上記判定の結果(ステップ S 107)、値が「1」で あった場合、テーブルサーチ器 203は、マルチキャストテーブルメモリ 2046を参照し て、当該 TLPフレームを出力する複数のポートを決定する(ステップ S109)。具体的 には、拡張 IDルーティング TLPフレーム中のバス番号、デバイス番号およびファンク シヨン番号からなる 15ビットの値をキーとして、マルチキャストテーブルメモリ 2046の エントリを検索する。そして、ヒットしたエントリの複数出力ポート情報を構成するビット マップにおける「1」のビットに対応する複数のポートを、出力ポートとして決定する。フ
レーム転送器 207は、マルチキャスト通信を行うベぐ前記決定したポートから拡張 I Dルーティング TLPフレームを並列的に出力する(ステップ S110)。
[0063] 以上の基本的な動作に加えて、 PCIエクスプレスパケットスィッチフォワーディング 機構 20は、グループ ID管理テーブルメモリ 2047に設定されたポート属性に応じて、 後述する a)及び b)のような付加的な処理を実行する。
[0064] a) PCIエクスプレスパケットスィッチフォワーディング機構 20は、 TLPフレームを出 力するために決定したポートのポート属性をグループ ID管理テーブルメモリ 2047で 参照する。その結果、対象のポート属性の値が「0」である場合、すなわち、その出力 ポートにつながるデバイスがルートコンプレックスあるいはエンドポイントである場合、 テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、出力すべき TLP フレームからグループ IDを削除する。これにより、ヘッダの ByteOに設定された 4ビッ トの予約領域を空白の状態に書換えた TLPフレームを出力する。これにより、ルート コンプレックスまたはエンドポイントは、従来の PCIエクスプレススィッチ経由で受け取 る TLPフレームと同様な TLPフレームを受け取ることができる。これに対し、出力ポー トのポート属性の値が「1」の場合、つまりその出力ポートにつながるデバイスがシステ ムにおける他の PCIエクスプレス拡張スィッチである場合、上記のようなグループ ID の書換えは行わない。
b) PCIエクスプレスパケットスィッチフォワーディング機構 20は、 TLPフレームを入 力したポートのポート属性をグループ ID管理テーブルメモリ 2047で参照する。その 結果、対象のポート属性の値力^ 1」の場合、つまりその入力ポートにつながるデバイ スがシステムにおける他の PCIエクスプレス拡張スィッチである場合、入力された TL Pフレームは、予約領域にグループ IDが設定されたものである。この場合、 PCIエタ スプレスパケットスィッチフォワーディング機構 20は、その拡張アドレスルーティング T LPフレームあるいは拡張 IDルーティング TLPフレームであると認識し、自スィッチ内 でのグループ IDの設定処理(図 11 :ステップ S 103)を省略する。他方、入力ポートの ポート属性の値が「0」の場合、つまり入力ポートにつながるデバイスがルートコンプレ ックスあるいはエンドポイントである場合、 PCIエクスプレスパケットスィッチフォヮーデ イング機構 20は、入力された TLPフレーム力、予約領域にグループ IDが設定されて
いない従来と同様なアドレスルーティング TLPフレームまたは IDルーティング TLPフ レームであると認識する。
[0065] 以上のような付加的な処理 a)及び b)を実行することにより、 PCIエクスプレス拡張ス イッチ 304に、従来と同様なデバイスを接続することができる。また、システムに複数 の PCIエクスプレス拡張スィッチ 304を配置し、それらの間で拡張アドレスルーティン グ TLPフレームおよび拡張 IDルーティング TLPフレームを転送することができる。
[0066] このように、 PCIエクスプレスパケットスィッチフォワーディング機構 20は、グループ I D管理テープ、ノレメモリ 2047により、ポートに接続されているデバイスがルートコンプレ ッタス、エンドポートおよびブリッジの何れであるかを認識する。これにより、 PCIェクス プレスパケットスィッチフォワーディング機構 20は、 TLPフレームの転送時に、そのフ レームの入力および出力に用いるポートが、ルートコンプレックス側のデバイスがつな がっている上流側のポートであるのか、あるいは、エンドポイント側のデバイスがつな 力 Sつている下流側のポートであるのかを把握することができる。
[0067] 本実施の形態の PCIエクスプレス拡張スィッチ 304は、そのシステム設定情報の内 容によって各種のスイッチング動作が可能である。以下では、 1) CPU101および CP U108間の通信、 2) CPU101または CPU108とエンドポイント 105との間の通信の 2 つの通信を例に挙げて、より具体的な動作を説明する。
[0068] 1) CPU101および CPU108間の通信
[0069] 図 12に、 CPU101が管理するアドレス空間(「グループ ID「1」のアドレス空間」)と、 CPU108が管理するアドレス空間(「グループ ID「2」のアドレス空間」 )の設定例を示 す。 CPU101および CPU108間で通信を行う場合、 CPU101は、自身が管理する アドレス空間の一部を CPU108ヘメモリマップする。また、 CPU108も自身が管理す るアドレス空間の一部を CPU101ヘメモリマップする。ここで、メモリマップとは、メモリ の領域をデバイスに割り当てることである。図 12に示す例の場合、グループ ID「1」( CPUIOI)およびグループ ID「2」(CPU108)間で他方へのマッピングに使用する アドレス空間として、互いに同じ「0x00— 00— 10— 00」〜「0x00— 00— 20— 00」 が設定されている。このような設定は両 CUPU間にアドレスの競合を招くが、その原 因は、 CPU101および CPU108が互いに独立して各自のアドレス空間の割り当てを
fiうことによる。
[0070] 上記のように、 CPU101および CPU108間で他方へのメモリマップに使用するアド レス空間が競合する場合、一般の手法では、それら CPU間の正常な通信が困難で ある。何故なら、例えば CPU101が、 CPU108にメモリマップしたアドレス「0x00— 0 0— 10— 00」にデータをライトすると、 CPU108のアドレス空間「0x00— 00— 10— 0 0」にライトされる力 それを CPU108が読み取るためにアドレス「0x00— 00— 10— 00」をリードすると、そのアドレス空間は CPU101にメモリマップされているため、 CP U108が管理するアドレス空間のアドレス「0x00— 00— 10— 00」がリードされること になるためである。
[0071] 上述のように CPU間で、他方にメモリマップするアドレス空間が競合する場合、アド レススワップオフセット情報を用いて競合を解除する。具体的には、図 13に示すよう な拡張アドレスルーティング用テーブルメモリを用意し、図示のエントリ E1及び E2に 示されるような設定を行う。エントリ E1の設定は、グループ ID「1」のデバイスから「0x 00— 00— 10— 00」〜「0x00— 00— 20— 00」の領域の TLPフレームが到来した場 合には、それを CPU108に対応するポート 2から出力し、かつ、「0x00— 00— 10— 00」だけアドレスをオフセットすべきことを意味する。また、テーブルエントリ E2の設定 (ま、グノレープ ID「2」のデノ イス力、ら「0x00— 00— 10— 00」〜「0x00— 00— 20— 0 0」の領域の TLPフレームが到来した場合には、それを CPU101に対応するポート 1 力、ら出力し、かつ、「0x00— 00— 10— 00」だけアドレスをオフセットすべきことを意 味する。
[0072] なお、グループ ID管理テーブルメモリ 2047には、図 4に示すような前述の設定が 行われる。
[0073] 以上のような設定が行われた状態において、例えば、 CPU101から CPU108へ T LPフレームが送信された際の PCIエクスプレス拡張スィッチ 304の動作は、次のよう になる。
[0074] CPU101のノレートコンプレックス 102力、ら、 列えば、アドレス「0x00— 00— 10— 00」 の TLPフレームが送信されると、その TLPフレームが PCI— PCIブリッジ 3041を介し て、 PCIエクスプレスパケットスィッチフォワーディング機構 20のポート 1へ入力される
〇
[0075] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 1から受信する。そ して、ポート 1に対応するグループ ID「1」をグループ ID管理テーブルメモリ 2047から 取得し、入力 TLPフレーム 21のヘッダにグループ IDとして「1」を書き込む。テーブル サーチ器 203は、転送先を決定するために、アドレス「0x00— 00— 10— 00」とダル ープ ID「1」とをキーにして、図 13の拡張アドレスルーティング用テーブルメモリを検 索する。検索の結果、エントリ E1がヒットし、出力ポート情報「2」及びアドレススワップ オフセット情報「0x00— 00— 10— 00」が得られる。
[0076] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、 TLPフレーム のヘッダからグループ IDを削除すると共に、アドレススワップオフセット値「0x00— 0 0— 10— 00」のカロ算処理を fiう。テープ、ノレサーチ器 203は、アドレス力 「0x00— 00 20— 00」に書き換えられた出力 TLPフレーム 22を、 CPU108が接続されるポート 2からフレーム転送器 207を用いて出力する。
[0077] ポート 2から出力された TLPフレームは、 PCI— PCIブリッジ 3042を経て CPU108 のルートコンプレックス 109により受信される。図 12に示されるように、グループ ID「1 」のアドレス空 「0x00— 00— 10— 00」〜「0x00— 00— 20— 00」(ま、 PCIエタスフ。 レス拡張スィッチ 304により「0x00— 00— 10— 00」だけオフセット処理されることに より、グループ ID「2」のアド、レス空間「0x00— 00— 20— 00」〜「0x00— 00— 30— 00」にマッピングされる。
[0078] 上記とは反対に CPU108から CPU101へ TLPフレームが送信された場合には、 P CIエクスプレス拡張スィッチ 304が以下のような動作を行う。
[0079] CPU108のノレートコンプレックス 109力、ら、 列えば、アドレス「0x00— 00— 10— 00」 の TLPフレームが送信されると、その TLPフレームが PCI— PCIブリッジ 3042を介し て PCIエクスプレスパケットスィッチフォワーディング機構 20のポート 2へ入力される。
[0080] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 2から受信する。そ して、ポート 2に対応するグループ ID「2」をグループ ID管理テーブルメモリ 2047から
取得し、入力 TLPフレーム 21のヘッダにグループ IDとして「2」を書き込む。テーブル サーチ器 203は、転送先を決定するために、アドレス「0x00— 00— 10— 00」とダル ープ ID「2」とをキーにして、図 13の拡張アドレスルーティング用テーブルメモリを検 索する。検索の結果、エントリ E2がヒットし、出力ポート情報「1」及びアドレススワップ オフセット情報「0x00— 00— 10— 00」が得られる。
[0081] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、 TLPフレーム のヘッダからグループ IDを削除すると共に、アドレススワップオフセット値「0x00— 0 0— 10— 00」のカロ算処理を fiう。テープ、ノレサーチ器 203は、アドレス力 「0x00— 00 20— 00」に書き換えられた出力 TLPフレーム 22を、 CPU101が接続されるポート 1からフレーム転送器 207を用いて出力する。
[0082] ポート 1から出力された TLPフレームは、 PCI— PCIブリッジ 3041を経て CPU101 のルートコンプレックス 102により受信される。図 12に示されるように、グループ ID「2 」のアドレス空 「0x00— 00— 10— 00」〜「0x00— 00— 20— 00」(ま、 PCIエタスフ。 レス拡張スィッチ 304により「0x00— 00— 10— 00」だけオフセット処理されることに より、グループ ID「1」のアド、レス空間「0x00— 00— 20— 00」〜「0x00— 00— 30— 00」にマッピングされる。
[0083] 2) CPU101または CPU108とエンドポイント 105との通信
[0084] 図 14に、本事例で用いるグループ ID管理テーブルメモリの設定内容を示す。ェン ドポイント 105を複数の CPU101及び 108で共用する場合、図 14に示すように、ェン ドポイント 105に対応するポートに専用のグループ IDを設定する。図示の例では、 C PU101が接続されるポート 1にグループ ID「 1」が設定され、 CPU108が接続される ポート 2にグループ ID「2」が設定されている。そのため、エンドポイント 105が接続さ れるポート 3には、専用のグループ IDとして「3」が設定されている。エンドポイント 105 に専用のグループ ID「3」を設定することで、エンドポイント 105に、専用の仮想的な アドレス空間を設定することができる。
[0085] 図 15に、本事例のアドレス空間のマッピングを示す。図 15には、 CPU101が管理 するアドレス空間(「グループ ID「1」のアドレス空間」)、及び、 CPU108が管理するァ ドレス空間(「グループ ID「 2」のアドレス空間」)に加え、エンドポイント 105に割り当て
られた前述の仮想的なアドレス空間(「グループ ID「3」のアドレス空間」)が示されて いる。 CPU101とエンドポイント 105との間で通信を行う場合、 CPU101は、自身が 管理するグループ ID「1」のアドレス空間の一部(「0x00— 10— 00— 00」〜「0x00
— 20— 00— 00」)をエンドポイント 105ヘメモリマップする。また、反対に、エンドポィ ント 105のグループ ID「3」のアドレス空間の一部(「0x00— 08— 00— 00」〜「0x00 —08— 10— 00」)を CPU101ヘメモリマップする。同様に、 CPU108とエンドポイン ト 105との間で通信を行う場合、 CPU108は、自身が管理するグループ ID「2」のアド レス空間の一部(「0x00— 40— 00— 00」〜「0x00— 50— 00— 00」)をエンドポイン ト 105ヘメモリマップする。また、反対に、エンドポイント 105のグループ ID「3」のアド レス空間の一部(「0x00— 08— 30— 00」〜「0x00— 09— 00— 00」)を CPU108へ
[0086] また、メモリマップの設定内容に応じて、 PCIエクスプレス拡張スィッチ 304の拡張 アドレスルーティング用テーブルメモリを、図 16のエントリ E11〜E14のように設定す る。エントリ E11の設定は、グループ ID「1」の「0x00— 10— 00— 00」〜「0x00— 20
— 00— 00」の領域の TLPフレームが到来した場合に、そのフレームを、エンドポイン ト 105に対応するポート 3から出力すべきことを意味する。エントリ E12の設定は、グ ノレープ ID「2」の「0x00— 40— 00— 00」〜「0x00— 50— 00— 00」の領域の TLPフ レームが到来した場合に、そのフレームを、エンドポイント 105に対応するポート 3か ら出力すべきことを意味する。エントリ E13の設定は、グループ ID「3」の「0x00— 08
— 00— 00」〜「0x00— 08— 10— 00」の領域の TLPフレームが到来した場合には、 そのフレームを、 CPU101に対応するポート 1から出力すべきことを意味する。ェント リ E14の設定 (ま、グノレープ ID「3」の「0x00— 08— 30— 00」〜「0x00— 09— 00— 0 0」の領域の TLPフレームが到来した場合には、そのフレームを、 CPU108に対応す るポート 2から出力すべきことを意味する。
[0087] 以上のような設定が行われた状態において、 CPU101からエンドポイント 105へフ レームが送信される場合の PCIエクスプレス拡張スィッチ 304の動作は次のようにな
[0088] CPU101のノレートコンプレックス 102力、ら、 列えば、アドレス「0x00— 10— 00— 00」
の TLPフレームが送信されると、その TLPフレームが PCI— PCIブリッジ 3041を経て PCIエクスプレスパケットスィッチフォワーディング機構 20のポート 1へ入力される。
[0089] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 1から受信する。そ して、ポート 1に対応するグループ ID「1」をグループ ID管理テーブルメモリ 2047から 取得し、入力 TLPフレーム 21のヘッダにグループ ID「1」を書き込む。テーブルサー チ器 203は、転送先を決定するために、アドレス「0x00— 10— 00— 00」とグノレープ I D「 1」とをキーにして、図 16の拡張アドレスルーティング用テーブルメモリを検索する 。検索の結果、エントリ E11がヒットし、出力ポート情報「3」が得られる。
[0090] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、上記の TLPフ レームのヘッダからグループ IDを削除する。フレーム転送器 207は、アドレス「0x00 10— 00— 00」の TLPフレームを、エンドポイント 105が接続されるポート 3から出 力 TLPフレーム 22として出力する。出力された TLPフレームは、 PCI— PCIブリッジ 3043を介してエンドポイント 105に受信される。
[0091] CPU108からエンドポイント 105へのフレームの送信動作は以下のように行われる
[0092] CPU108のノレートコンプレックス 109力、ら、 列えば、、アドレス「0x00— 40— 00— 00 」の TLPフレームが送信されると、その TLPフレームが PCI— PCIブリッジ 3042を経 て、 PCIエクスプレスパケットスィッチフォワーディング機構 20のポート 2へ入力される
[0093] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 2から受信する。そ して、ポート 2に対応するグループ ID「2」をグループ ID管理テーブルメモリ 2047から 取得し、入力 TLPフレーム 21のヘッダにグループ ID「2」を書き込む。テーブルサー チ器 203は、転送先を決定するために、アドレス「0x00— 40— 00— 00」とグノレープ I D「2」とをキーにして、図 16の拡張アドレスルーティング用テーブルメモリを検索する 。検索の結果、エントリ E12がヒットし、出力ポート情報「3」が得られる。
[0094] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、 TLPフレーム
のヘッダからグループ IDを削除する。フレーム転送器 207は、アドレス「0x00— 40
— 00— 00」の TLPフレームを、エンドポイント 105が接続されるポート 3から出力 TL Pフレーム 22として出力する。出力された TLPフレームは、 PCI— PCIブリッジ 3043 を介してエンドポイント 105に受信される。
[0095] 上記とは反対に、エンドポイント 105から CPU101へフレームが送信された場合、 P CIエクスプレス拡張スィッチ 304が以下のように動作する。
[0096] エンドポイント 105力、ら、例えば、アドレス「0x00— 08— 00— 00」の TLPフレーム が送信されると、そのフレームが PCI— PCIブリッジ 3043を経て PCIエクスプレスパ ケットスイッチフォワーディング機構 20のポート 3へ入力される。
[0097] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 3から受信する。そ して、ポート 3に対応するグループ ID「3」をグループ ID管理テーブルメモリ 2047から 取得し、入力 TLPフレーム 21のヘッダにグループ ID「3」を書き込む。テーブルサー チ器 203は、転送先を決定するために、アドレス「0x00— 08— 00— 00」とグノレープ I D「3」とをキーにして、図 16の拡張アドレスルーティング用テーブルメモリを検索する 。検索の結果、エントリ E13がヒットし、出力ポート情報「1」が得られる。
[0098] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、 TLPフレーム のヘッダからグループ IDを削除する。フレーム転送器 207は、アドレス「0x00— 08
— 00— 00」の TLPフレームを、 CPU101が接続されるポート 1から出力 TLPフレー ム 22として出力する。出力された TLPフレームは、 PCI— PCIブリッジ 3041を介して ルートコンプレックス 102で受信される。
[0099] エンドポイント 105から CPU108への TLPフレームの送信は以下のように行われる
[0100] エンドポイント 105力、ら、例えば、アドレス「0x00— 08— 30— 00」の TLPフレーム が送信されると、その TLPフレームが PCI— PCIブリッジ 3043を経て、 PCIエタスプ レスパケットスィッチフォワーディング機構 20のポート 3へ入力される。
[0101] PCIエクスプレスパケットスィッチフォワーディング機構 20の入力 TLPヘッダ書換器
205は、上記の TLPフレームを入力 TLPフレーム 21としてポート 3から受信する。そ
して、ポート 3に対応するグループ ID「3」をグループ ID管理テーブルメモリ 2047から 取得し、入力 TLPフレーム 21のヘッダにグループ ID「3」を書き込む。テーブルサー チ器 203は、転送先を決定するために、アドレス「0x00— 08— 30— 00」とグノレープ I D「3」とをキーにして、図 16の拡張アドレスルーティング用テーブルメモリを検索する 。検索の結果、エントリ E14がヒットし、出力ポート情報「2」が得られる。
[0102] テーブルサーチ器 203は、出力 TLPヘッダ書換器 2051を用いて、 TLPフレーム のヘッダからグループ IDを削除する。フレーム転送器 207は、アドレス「0x00— 08 — 30— 00」の TLPフレームを、 CPU108が接続されるポート 2から出力 TLPフレー ム 22として出力する。出力された TLPフレームは、 PCI— PCIブリッジ 3042を介して ルートコンプレックス 109で受信される。
[0103] 本実施の形態の効果を説明する。
[0104] PCIエクスプレスパケットスィッチフォワーディング機構 20により、任意の PCI— PCI ブリッジ間で TLPフレームの転送が可能となる。これにより、ルートコンプレックス 102 とルートコンプレックス 109との間の TLPフレーム転送、および、複数のルートコンプ レックス 102及び 109からの同一エンドポイントへの TLPフレームの転送が可能であ る。また、 PCIエクスプレスパケットスィッチフォワーディング機構 20は、入力された T LPフレームのヘッダにグループ IDを設定するというヘッダ書換え処理を行った後、 その TLPフレームに対応するフォワーディングテーブルを使用する。これにより、複 数の CPU (101 , 108)で独自に管理されるアドレス空間に生じ得るアドレス競合を避 けること力 Sできる。したがって、本実施形態によれば、データ転送時の遅延の増大、 及び、 LSI回路規模の増大を招くフレームカプセル化を行うことなぐルートコンプレ ックス側につながる複数の CPU間の通信が可能になる。また、異なるルートコンプレ ッタスにつながる複数の CPUから同一のエンドポイントに対して通信することが可能 になる。
[0105] さらにまた、 PCIエクスプレスパケットスィッチフォワーディング機構 20は、 TLPフレ ームカ SIDルーティングフレームであり、且つ、マルチキャスト通信が設定されたもので ある場合に、マルチキャストテーブルメモリを参照して転送先情報を選択する。これに より、特定のデバイスに対してのマルチキャスト転送を行うことが可能となる。よって、
本実施の形態の PCIエクスプレス拡張スィッチ 304を使用すれば、 1種類のスィッチ だけで、特定のデバイスに対してのマルチキャスト転送を行うネットワークシステムを 構築すること力できる。この点を図 17を参照して説明する。
[0106] 図 17に、図 26に示すシステムと同等の機能を、本実施の形態に係る PCIエタスプ レス拡張スィッチ 304を用いて実現したシステムの構成を示す。 PCIエクスプレス拡 張スィッチ 304は、前述したように、拡張 IDルーティング TLPフレーム 9021 (図 6)を 使ったマルチキャスト転送を行うことができる。図 17に示すシステムでは、 CPU101 およびメモリ 103が接続されたルートコンプレックス 102と、複数の拡張ネットワーク用 フォワーディングエンジン 112〜; 114と力 PCIエクスプレス拡張スィッチ 304により相 互に接続される。
[0107] 図 17のシステムにおいて、マルチキャスト転送を行う際、拡張ネットワーク用フォヮ ーデイングエンジン 112〜114は、拡張 IDルーティング TLPフレーム 9021 (図 6)の マルチキャスト指示情報 903を「1」に設定する。また、マルチキャスト転送で使用する グループ番号をバス番号、デバイス番号、ファンクション番号に設定したフレームを、 PCIエクスプレス拡張スィッチ 304に送信する。 PCIエクスプレス拡張スィッチ 304は 、上記フレームを受信すると、テーブルサーチ器 203により、バス番号、デバイス番号 、ファンクション番号からなる 15ビットの情報を参照メモリアドレスとして、マルチキャス トテーブルメモリ 2046 (図 10)を検索する。そして、この検索により得た出力ポートを 用いて、マルチキャスト転送を実行する。図 10より、例えば、参照するメモリアドレスが 「0x7FFF」の場合、複数出力ポー卜情報は、「0000— 0000— 0001— 1100」であ る。この場合、ポート 3、ポート 4及びポート 5が、マルチキャスト転送に用いる出力ポ ートとなる。
[0108] また、図 17のシステムにおいてュニキャスト転送を行う場合は、図 21に示すアドレ スルーティングフレーム、または、図 22に示す IDルーティングフレームが使用される 。このとき、 PCIエクスプレス拡張スィッチ 304は、拡張アドレスルーティング用テープ ルメモリ 2044または拡張 IDルーティング用テーブルメモリ 2045を参照することにより 、ュニキャスト用の転送ポートを決定する。
[0109] また、マルチキャスト転送機能を有する本実施の形態の PCIエクスプレス拡張スイツ
チ 304は、エンドポイントのデバイスの多重化により高信頼化が図られたコンピュータ システムにも適用できる。その適用例を図 18に示す。
[0110] 図 18に示すコンピュータシステムにおいて、 CPU101およびメモリ 103が接続され たルートコンプレックス 102は、現用のエンドポイント 105とその予備のエンドポイント 105'とに PCIエクスプレス拡張スィッチ 304を介して接続されている。 PCIエタスプレ ス拡張スィッチ 304は、正常時は、マルチキャスト転送機能により、ルートコンプレック ス 102からの送信フレームをエンドポイント 105と予備のエンドポイント 105'が接続さ れているポートとに対しマルチキャスト転送を行う。また、 PCIエクスプレス拡張スイツ チ 304は、エンドポイント 105からの受信フレームのみルートコンプレックス 102へ送 信する。これにより、エンドポイント 105及び予備のエンドポイント 105'は正常時は同 じ状態を保つことができる。
[0111] エンドポイント 105が故障した場合、 PCIエクスプレス拡張スィッチ 304は、予備の エンドポイント 105'からの受信フレームをルートコンプレックス 102へ送信する。これ により、エンドポイント 105のデバイスが故障しても、その動作を予備のエンドポイント 105'のデバイスが引き継ぐことができ、システムの高信頼化を図ることができる。
[0112] 以上本発明の実施の形態について説明した力 本発明は以上の例に限定されず、 その他各種の付加変更が可能である。上記実施形態では、有線で接続されたコンビ ユータシステムおよびネットワークシステムを前提として説明した力 有線または無線 にかかわらず、 PCIエクスプレス準拠のシステム環境全てに適用可能である。