(57)【要約】【課題】  フロー制御とオーダリングルールが規定されたプロトコルで転送を行う多ポートのスイッチ回路において、パケットの目詰まり回避のための回路を小規模で実現する。【解決手段】  パケット受信側回路にパケット選択出力回路をもち転送データパス本数を絞る事で回路規模を抑え、かつ当該パケット選択出力回路は到着順出力指示信号による受信到着順パケット出力に加え、優先パケット種選択指示信号による選択パケット出力を行う事でフロー制御によって送信待機しているパケットをオーダリングルールによって別のパケット種が追い越せない事による目詰まりを回避可能とする。【選択図】  図1
2007323098.tif 000002
【特許請求の範囲】
【請求項１】
複数のパケット種を持つパケットを複数のデバイスへPCI Express プロトコルに基づきスイッチングを行う転送処理装置であって、
前記デバイスは、前記パケットを格納するデバイス用受信メモリをそれぞれに有するものであって、
前記パケット種の一である第１パケット種に対する前記デバイスの一である第１デバイスの前記デバイス用受信メモリの残量が不足した場合に、前記第１デバイスは、前記第１パケット種に対する受信メモリの残量が不足したことを示す第１信号を前記転送処理装置へ送信するものであって、
前記転送処理装置が前記第１信号を受信した場合に、前記転送処理装置は、到着順に従って前記第１パケット種以外の前記パケットを転送するものであって、
前記転送処理装置が前記第１信号を受信しない場合に、前記到着順に従って前記パケットを転送するものである転送処理装置。
【請求項２】
請求項１記載の転送処理装置において、
受信メモリと、
前記パケットの到着順を格納する到着順制御部と、
優先パケット種選択回路と、
パケット選択出力回路と、
パケット種指示回路とを有し、
前記受信メモリは、前記到着順に従って前記パケットを前記パケット種ごとに先入れ先出しするものであって、
前記パケット種選択出力回路は、前記パケット種の指定により前記パケットを前記受信メモリから選択し出力するものであって、
前記優先パケット種選択回路が前記第１信号を受信した場合に、前記優先パケット種選択回路は、前記第１パケット種の転送を禁止する第２信号を前記パケット種指示回路へ送信するものであって、
前記到着順制御部は、前記到着順に従って転送すべきパケット種を示す第３信号を前記パケット種指示回路へ送信するものであって、
前記第２信号を前記パケット種指示回路が受信した場合に、前記パケット種指示回路は、前記第２信号と前記第３信号とに基づいて、前記第１パケット種以外であって最先着の前記パケットに対応する前記パケット種を決定し、決定された前記パケット種を示す第４信号を前記パケット選択出力回路へ送信するものであって、
前記第４信号を前記パケット選択出力回路が受信した場合に、前記パケット選択回路は、前記第４信号が示すパケット種のパケットを前記受信メモリから選択し転送する転送処理装置。
【請求項３】
請求項２記載の転送処理装置において、
前記第２信号を前記パケット種指示回路が受信しない場合に、前記パケット種指示回路は、前記第３信号に基づいて、最先着の前記パケットに対応する前記パケット種を決定し、決定された前記パケット種を示す前記第４信号を前記パケット選択出力回路へ送信するものである転送処理装置。
【請求項４】
複数のパケット種を持つパケットを複数のデバイスへPCI Express プロトコルに基づきスイッチングを行う転送処理装置であって、
前記デバイスは、前記パケットを格納するデバイス用受信メモリをそれぞれに有するものであって、
前記パケット種の一である前記第１パケット種に対する前記デバイスの一である前記第１デバイスの前記デバイス用受信メモリの残量が不足した場合に、前記第１デバイスは、前記各パケット種に対する受信メモリの残量が不足したことを示す第１信号を前記転送処理装置へ送信するものであって、
前記転送処理装置が、前記第１信号を受信した場合に、前記転送処理装置は、パケット到着順に従って前記第１デバイス以外を宛先とする前記パケットを転送するものであって、
前記転送処理装置が前記第１信号を受信しない場合に、前記転送処理装置は、前記到着順に従って前記各パケットを転送するものである転送処理装置。
【請求項５】
請求項４記載の転送処理装置において、
受信メモリと、
前記パケットの到着順と宛先とを格納する送信パケット種決定部と、
パケット選択出力回路と、
前記送信パケット種決定部が前記第１信号を受信した場合に、前記送信パケット種決定部は、前記到着順と前記宛先に基づいて、前記第１デバイス以外の宛先であって最先着の前記パケットに対応するパケットを示す第２信号を前記パケット選択出力回路へ送信し、
前記第２信号を前記パケット選択出力回路が受信した場合に、前記パケット選択回路は、前記第２信号が示すパケットを、前記受信メモリから選択し転送するものである転送処理装置。
【請求項６】
請求項５記載の転送処理装置において、
前記第２信号を前記パケット種指示回路が受信しない場合に、前記到着順に基づいて、最先着の前記パケットに対応するパケットを示す前記第２信号を前記パケット選択出力回路へ送信するものである転送処理装置。
【請求項７】
請求項１から６の何れか一つに記載の転送処理装置において、
前記パケット種の一は、ライト要求を示すPosted、リード要求を示すNonPosted、リード要求に対する返信を示すCompletionの何れかである転送処理装置。
【請求項８】
請求項１から７の何れか一つに記載の転送処理装置において、
前記デバイスの一は、記憶媒体制御デバイス、画像処理制御デバイス、通信制御デバイスの何れか転送処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のパケット種とパケット種毎のフロー制御と、パケット種間のオーダリングルールが規定された共通のプロトコルでパケットの転送を行う転送処理装置であって、特に、３つ以上のポートからなるスイッチ回路に関する。
【背景技術】
【０００２】
PCI Expressは、PCIの後継規格としてコンピュータ全般に通用する標準拡張バスとして規格化されたバスであり、片方向2.5Gbps以上の全二重通信を可能とする高速データ転送及びシリアル転送を特徴とするデータ転送バスの名称である。
【０００３】
PCI-Expressでは主にPosted、NonPosted、Completionの３種のパケットを扱う。尚、Postedは主にライト要求、NonPostedは主にリード要求、Completionはリード要求に対する返信に用いられる。
【０００４】
また、パケット転送の際に送信RAMと受信RAMを用いた転送を行う。送信RAMから通信経路にパケットを送信する際に、接続先デバイスの受信RAMのオーバーフローを防ぐために送信側で受信RAMの空き状態を把握し、パケット送信のタイミングを制御するフロー制御を行う。受信側では送信RAMからのパケットの読み出し時または適時に、受信RAMの残り容量を送信側に対して通知する。送信側では受信側から通知された受信RAMの残り容量と送信予定パケットサイズを比較し、受信RAMの残り容量が送信予定パケットよりも少なかった場合は、受信RAMに空きができるまでパケットの転送を待機する。この様な制御を行うことにより受信RAMのオーバーフローを防止する。
【０００５】
このフロー制御をパケット種毎に行う場合、フロー制御によって待機しているパケット種を後から来たパケット種が、追い抜く事が可能か否かを規定したものがオーダリングルールである。代表的なものを挙げると「Postedは他のNonPostedを追い抜かなくてはならない」、「NonPostedはPostedを追い抜いてはならない」などがある。これらはデッドロックを防止する目的もしくは、データの整合性を保つために利用される。
【０００６】
例として、CPUからメモリに対してライトを行った後、CPUからメモリに対してリードを行い、先に行ったライトのデータとメモリから返信されたリードデータ間のコンペアチェックを行うような場合が考えられる。このとき、CPUからのライト要求であるPostedがリード要求であるNon-Postedに追い抜かれてしまうと正しくコンペアチェックを行うことが出来なくなってしまう。このような事態を防止するためパケット間にオーダリングルールが規定されている。
【０００７】
PCI Expressプロトコルでパケットの転送を行う3つ以上のポートからなるスイッチ回路では、フロー制御により転送待機しているパケット種を別のパケット種がオーダリングルールによって追い抜けない事がある。そのためフロー制御による転送待機を直接受けていない別のパケット種も転送待ち状態となる。
【０００８】
フロー制御による転送待機状態が発生すると、特定デバイスを宛先とする1パケット種に対するフロー制御が、同一デバイスを宛先とする他のパケット、及び他のデバイスを宛先とするパケットにも影響を与えることになり、フロー制御により転送待機されたパケットの為にスイッチ回路全体が目詰まりを起こす。
【０００９】
上記のようなパケット転送待機状態によるスイッチ回路全体の目詰まりを防止する方法として、各ポートで受信したパケットを他ポートに転送する際に中間RAMに一時的にパケットを蓄えておく方法がある。例えば特許文献1には中間RAMとして低速大規模RAMと高速小規模RAMを採用することで、パケットの転送効率を向上させる方式が考案されている。また、別の方法として、スイッチ回路内の転送データパスをパケット種毎に持つことにより他のパケット種の影響を受けずに転送を行うようにすることができる。
【００１０】
また、特許文献2にはPCI規格において受信部にて受信したパケットをパケット種毎に設定した優先度毎にRAMに格納し、送信部へ送信要求を出し送信部からの送信許可信号の返信を見てパケットを転送する方式が考案されている。このような方法を用いることで優先度の低いパケット種への送信許可信号が返信されない場合に送信要求を撤回し、優先度の高いパケット種を転送することが出来る。
【００１１】
また、特許文献3にはパケットをパケット種別に分離してRAMに格納し、各RAM出力の優先順位を論理フロー制御機構により変更することで、優先度の高いパケットが転送待ちした際に、転送待ち状態にあるパケットと同一宛先及び、他のデバイス宛のパケット転送に影響を与えない方式が提案されている。
【００１２】
【特許文献１】特開平7−264242号公報
【特許文献２】特開2001-320385号公報
【特許文献３】特開2003-18188号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述した従来の技術の、例えば、特許文献1に記載の図9に示すようなスイッチ回路内部に中間RAMを持つような場合、フロー制御とオーダリングルールによるスイッチ回路の目詰まりを防止する事はできるものの、フロー制御による転送待機の発生していない時にも中間RAMを介する分、中間RAMを介さない場合と比べて常にスイッチ回路の転送速度が遅くなる問題がある。
【００１４】
また、図10に示すようなスイッチ回路内の転送データパスをパケット種毎に持つ場合、他のパケット種の転送待機状態に影響を受けることなくパケットを転送可能であるが、スイッチ回路の送信RAMに転送されるパケットの順序がスイッチ回路の受信RAMに到着した順序と異なる可能性がある。このため、パケットの受信到着順を送信RAM側で管理する必要があり、追加制御回路が必要となる。
【００１５】
いずれの場合でもスイッチ回路の論理規模が大きくなってしまい、単位面積あたりに搭載する事の出来るポート数が少なくなってしまう。多ポート化する傾向にあるスイッチ回路において論理規模の縮小は重要な命題であり、論理規模を抑えた形での対策が求められる。
【００１６】
そこで本発明は上記問題点を鑑みてなされたものであり、フロー制御によって転送待機したパケット種を別のパケット種がオーダリングルールによって追い抜けない事による目
詰まりの回避を小規模な回路で実現しることで、高集積化を可能としたスイッチ回路を提供する。
【課題を解決するための手段】
【００１７】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記とおりである。
【００１８】
本発明のスイッチ回路では受信RAM側にパケット選択のためのセレクタを持つことにより、スッチ回路内のデータパスを1本とし、通常転送時には受信RAMへの到着順に送信RAMにパケットを転送し、目詰まり発生時には任意のパケット種を送信RAMに転送する機能を持つことで上記目的を達成することができる。また、優先転送パケットを選択する際に受信到着情報とRAM FULL信号に加えて、パケットの宛先情報を用いる事で、小規模な回路で同一パケット種で異なるデバイス間のパケットの追い抜きを実現する事ができる。
【発明の効果】
【００１９】
本発明を用いる事で、パケット種毎に設けた受信RAMの出力データパスをセレクタを用いて絞ることでスイッチ回路内のデータパスを1系統とし、通常転送時には到着順に転送を行い、目詰まり発生時には任意のパケット種を転送することによりパケットの目詰まりを小規模な回路にて回避することで、高集積なスイッチ回路を提供できる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明の実施形態を説明する。
【００２１】
図１は本発明のスイッチ回路300を用いた情報処理装置100のブロック図である。情報処理装置100は、CPU 200、スイッチ回路300、デバイスA 400、デバイスB 500から構成されており、CPU 200とスイッチ回路300は対CPU受信経路210、対CPU送信経路211によって相互に接続され、デバイスA 400とスイッチ回路300は対デバイスA送信経路410、対デバイスA受信経路411によって相互に接続され、デバイスB 500とスイッチ回路300は対デバイスB送信経路510、対デバイスB受信経路511によって相互に接続されている。
【００２２】
情報処理装置100は汎用のコンピュータシステム、デバイスA 400は記憶媒体制御デバイス、デバイスB 500は画像処理制御デバイスなどが想定され、デバイスA 400である記憶媒体制御デバイスからのデータをCPU 200にて演算を行い、デバイスB 500である画像処理制御デバイスに出力するといった情報処理動作が考えられる。
【００２３】
また、PCI-Expressとしての動作を考えた場合、想定されるパケット種には主にライト要求に用いられるPosted、リード要求に用いられるNonPosted、リードデータの返信に用いられるCompletionが挙げられる。
【００２４】
CPU 200は、CPU送信部220、CPU受信部230、フロー制御部及びオーダリングルール制御部240、CPU送信RAM 250、パケットセレクタ260から構成される。CPU 200で生成されたパケットはパケット種毎にCPU送信RAM 250に蓄えられ、パケット種毎にCPU送信経路251から出力される。フロー制御部及びオーダリングルール制御部240は、パケット送信先である対CPU受信RAM311のパケット種毎の残容量を示す信号である対CPU受信RAM残容量信号317を参照し、送信先の送信予定パケット種に対応する対CPU受信RAM 311の残り容量が送信予定のパケット種より少ない場合は、対CPU受信RAM 311がオーバーフローしないように送信パケットに対しフロー制御による待機をパケット種毎に行う。また、フロー制御部及びオーダリングルール制御部240は、フロー制御による待機時に他のパケット種がオーダリングルールに違反した追い越しをしないように送信パケット制御信号241を出力する。パケットセレクタ260は送信パケット制御信号241を参照し、指示されたパケット種を対CPU受信経路210を用いてスイッチ回路300に送信する。
【００２５】
スイッチ回路300はCPU 200とデバイスA 400、デバイスB 500間のパケット転送を行うスイッチ回路である。CPU 200から送信されたパケットを対CPU受信RAM311に蓄え、パケット種毎にパケット選択出力回路315に出力する。パケット選択出力回路315ではパケット種指示回路323から出力される転送パケット指示信号381を参照し、転送パケット種を選択出力する。パケット種指示回路323では到着順出力指示信号316及び優先パケット種選択指示信号333を参照し、転送パケット種を選択する。このとき、優先パケット種選択指示信号333が優先転送パケット種を示している場合には優先パケット種選択指示信号333に指定されたパケット種を選択し、優先パケット種選択指示信号333が到着順転送を示している場合には到着順出力指示信号316に示されるパケット種を選択する。パケット選択出力回路315で選択出力されたパケットはスイッチング制御部330を介して対デバイスA送信部340に格納し、対デバイスA送信経路410に転送されるか、または対デバイスB送信部360に格納し、対デバイスB送信経路510に転送される。
【００２６】
デバイスA 400は、デバイスA受信部420、デバイスA送信部430から構成される。デバイスA受信部420は対デバイスA送信経路410から転送されたパケットをパケット種毎にデバイスA受信RAM421に蓄え、要求された処理を実行する。また、デバイスA受信RAM 421の残り容量をパケット種毎にデバイスA受信RAM残容量信号422として出力する。デバイスA送信部430は送信パケットをパケット種毎に内部に蓄え、対デバイスA受信経路411を用いてパケットを対デバイスA受信部350に送信する。この時、パケット種毎の対デバイスA受信RAM残容量信号352を参照して送信予定パケット種に対応する対デバイスA受信部350の空き容量を確認し、転送パケットサイズより送信予定パケット種に対応する対デバイスA受信部350の空き容量が少ない場合は、フロー制御によりパケット種毎に送信を待機する。なお、本実施例ではパケット種毎の受信RAMの残り容量をデバイスA受信RAM残容量信号422を用いて通知しているが、対デバイスA受信経路411を用いて通知してもよく、対デバイスA受信RAM残容量信号352の代わりに、対デバイスA送信経路410を用いて通知してもよい。
【００２７】
次に、本発明のスイッチ回路300について詳細に説明する。スイッチ回路300は対CPU受信部310、対CPU送信部320、スイッチング制御部330、対デバイスA送信部340、対デバイスA受信部350、対デバイスB送信部360、対デバイスB受信部370などから構成される。
【００２８】
対CPU受信部310は対CPU受信経路210から転送されたパケットをパケット種毎に対CPU受信RAM311に格納し、同時に格納されたパケット毎の受信到着情報を到着順制御部313に格納する。受信RAM311にパケットが格納された時点で、受信RAM311への到着順を示す受信到着情報を付加し保持する。つまり、到着順制御部313は、パケットごとにCPU200から受信RAM300へ到着したパケットの順番を管理する。受信到着情報を用いれば上記パケット選択出力回路315からパケットを出力する際にその時点での最先着パケットを決定することができる。尚、対CPU受信RAM311では、図2に示すようにパケット種毎に書き込んだパケットをその順番に読み出す、即ち、パケット種毎にFIFO（先入れ先出し）で管理する。つまり、到着順制御部313では、パケット種に関わらず対CPU受信310への到着順を管理し、対CPU受信RAM311ではパケット種毎にFIFOで管理する。
【００２９】
対CPU受信RAM311に蓄えられたパケットはスイッチ回路から受信RAM転送経路319によってパケット種毎にパケット選択出力回路315に出力され、到着順制御部313から出力される到着順出力指示信号316及び、優先パケット種選択指示部331から出力される優先パケット種選択指示信号333を参照してスイッチ回路受信部送信経路332に選択出力される。パケット選択出力回路315では優先パケット種選択指示信号333が受信到着順での送信を示している際には到着順出力指示信号316に従って対CPU受信部310への到着順に送信パケット種を選択し、優先パケット種選択指示信号333が優先パケット種の送信を示している際には優先パケット種選択指示信号333に示される優先パケットを送信する。また、フロー制御の為に対CPU受信RAM 311の読み出し時または適時に、対CPU受信RAM 311のパケット種毎の残容量を残容量管理部314から対CPU受信RAM残容量信号317を用いてCPU送信部220に通知する。
【００３０】
対CPU送信部320はスイッチ回路送信部受信経路322から送信パケットを受け、パケット種毎に内部に保持した後、対CPU送信経路211を用いてCPU200へ出力する。この時、パケット種毎のCPU受信RAMの残容量を示すCPU受信RAM残容量信号231を参照し、送信予定パケット種に対応した受信RAMの残容量が送信予定パケット種のサイズより少ない場合はフロー制御によりパケット種毎に送信を待機する。なお、本実施例では受信RAMのパケット種毎の残り容量をCPU受信RAM残容量信号231を用いて通知しているが、対CPU受信経路210を用いて通知してもよく、対CPU受信RAM残容量信号317の代わりに対CPU送信経路211を用いて通知してもよい。
【００３１】
スイッチング制御部330ではスイッチ回路受信部送信経路332から転送されるパケットに対してスイッチングルータ334にてパケットヘッダ内のアドレスを参照し、対デバイスA用送信RAM送信経路336を用いて対デバイスA送信部340へ、または対デバイスB用送信RAM送信経路361を用いて対デバイスB送信部360へ転送を行う。また、対デバイスA受信部350、対デバイスB受信部370から転送されたパケットを対デバイスA用受信RAM受信経路351または、対デバイスB用受信RAM受信経路337、ポートアービトレーション339、スイッチ回路送信部受信経路322を介して対CPU送信部320に転送する。また、前記送信RAMの空き状態を示す送信RAM FULL信号をパケット種毎に用意する。優先パケット種選択指示部331においてパケット種毎の対デバイスA送信RAM FULL信号342、パケット種毎の対デバイスB送信RAM FULL信号362を参照し、送信RAMのFULL状態を検出した場合には優先パケット種選択指示信号333を用いてオーダリングルールに従って優先転送パケット種を指定する。上記送信RAMのパケット種毎の空き状態を監視すればオーダリングルールに従って優先転送パケットを決定する事ができる。例としてライトパケット種がリードパケット種を追い抜いて良いというオーダリングルールの時には、上記送信RAM FULL信号によりリードパケット種用送信RAMのFULL状態を検知し、ライトパケット種を優先転送パケット種としてパケット選択出力回路315に指示する事ができる。
【００３２】
対デバイスA送信部340では対デバイスA用送信RAM送信経路336によって転送されるパケットをパケット種毎に対デバイスA送信RAM 341に保持し、対デバイスA送信経路410を用いて送信する。この時、パケット種毎のデバイスA受信RAM残容量信号422を参照して送信予定のパケット種に対応するデバイスA受信RAM 421の空き容量が、送信予定のパケット種より少ない場合はフロー制御によりパケット種毎に転送を待機する。ここでもCPU送信部220同様にフロー制御による待機中に他のパケット種がオーダリングルールに違反した追い抜きをしないように制御を行う。また、対デバイスA送信RAM 341のパケット種毎の空き容量を監視し、空き容量が無くなった場合に空き容量の無くなったパケット種の送信RAMに対応する対デバイスA送信RAM FULL信号342をアサートする。
【００３３】
対デバイスA受信部350では対デバイスA受信経路411から送信されるパケットをパケット種毎に内部に保持し、対デバイスA用受信RAM受信経路351を用いてスイッチング制御部330へ転送する。
【００３４】
対デバイスB送信部360及び、対デバイスB受信部370は対デバイスA送信部340、対デバイスA受信部350と同様の動作を行う。
以上のように上記受信到着情報を用いた到着順でのパケット選択機能と、上記送信RAM FULL信号を用いた優先転送パケット種選択機能をパケット選択出力回路315で実現する事により、パケット選択出力回路313以降の転送データパスを1系統のみとする事が可能となり、小規模な回路でオーダリングルールによるパケット間の追い抜きを実現したスイッチ回路を提供する事ができる。
【００３５】
図2にパケット選択出力回路315の詳細を示す。ここではパケット種を3種として説明する。対CPU受信経路210から転送されたパケットは、パケット内のヘッダ部分に格納されているパケット種情報を元にパケット種毎に対CPU受信RAM 311に格納される。対CPU受信RAM 311からスイッチ回路受信RAM転送経路319を用いて出力されたパケットはパケット選択出力回路315にて選択され、スイッチ回路受信部送信経路332に出力される。CPU200から受信RAM311へのパケットの到着順を示す受信到着情報に基づいて、到着順制御部313から送信すべきパケット種を示す到着順出力指示信号316が出力される。パケット種指示回路323では、優先パケット種選択指示部331からの優先パケット種選択指示信号333が受信到着順でのパケット選択を指示している場合は、到着順出力指示信号316に基づき送信すべきパケット種を示す転送パケット指示信号381を用いてパケット選択出力回路315へ指示する。受信RAM311では、パケット種毎にFIFOで管理しているため、転送パケット指示信号381を用いて送信すべきパケット種のみをパケット種選択出力回路315へ指示すれば良い。パケット種選択出力回路315は、転送パケット指示信号381に基づいて送信すべきパケットをスイッチ回路受信部送信経路332に選択出力する。到着順制御部313はCPU200から受信RAM311へのパケットの到着順を示す受信到着情報に基づいて転送すべきパケット種を到着順出力指示信号316により指示しており、受信RAMではパケット種毎にFIFOで管理しているため、結果的に、受信RAMからスイッチ回路受信部送信経路332へCPU200から受信RAM311へのパケットの到着順に従って選択出力されることになる。
【００３６】
また、優先パケット種選択指示部331からの優先パケット種選択指示信号333が優先して転送すべきパケット種を示している場合には転送すべきパケット種を転送パケット指示信号381によりパケット種選択出力回路315へ指示する。パケット種選択出力回路315は、転送パケット指示信号381に基づいて送信すべきパケットをスイッチ回路受信部送信経路332に選択出力する。受信RAMではパケット種毎にFIFOで管理しているため、結果的に、優先して転送すべきパケット種のみがCPU200から受信RAM311へのパケットの到着順に従って選択出力されることになる。
【００３７】
図3にデコーダを使用したパケット種指示回路323の回路構成を示す。ここでは、受信到着順以外のパケット種を転送したい場合は優先パケット種選択指示信号333（図3内ではPriority_type[2:0]と表現）を各パケット種に対応する値とすることで、パケット種に対応する転送パケット指示信号381がアサートする。例としてType1のパケットを選択したい場合、優先パケット種選択指示信号333を001とすることで、対応する転送パケット指示信号381がアサートする。また、受信到着順にパケットを転送する場合は優先パケット種選択指示信号333を100とすることで、到着順出力指示信号316にて示されるパケット種が選択され、パケット種に対応する転送パケット指示信号381がアサートする。
【００３８】
優先パケット種選択指示信号333にて指示される受信到着順でのパケット種選択と優先パケット種選択の切り替えは、図3に示されるようなデコーダを使用した回路を用いる事が一般的である。この構成の長所は選択対象であるパケット種が増えた時に、デコーダに入力する優先パケット種選択指示信号333のbit幅の増加が小さい事から回路規模の抑制に有効である事が挙げられる。しかしながら、この構成では、優先パケット種選択指示信号333のbit幅の増加に合わせてデコーダ部のゲート段数も増加するため、ディレイの増加原因となると考えられる。
【００３９】
図4にデコーダを使用せず選択対象のパケット種に対して優先パケット種選択指示信号333を1対1に対応させたパケット種指示回路323の回路構成を示す。この時、優先パケット種選択指示信号333側で受信到着順でのパケット選択を示す信号を別途用意せず、受信到着順でのパケット選択と優先パケット種選択の切り替えを、同一の信号群の組み合わせにより生成する。本回路では優先パケット種選択の際には、パケット種に対応する優先パケット種選択指示信号333を1bitアサートする。
【００４０】
例としてType1のパケット種を転送したい場合は、対応する優先パケット種選択指示信号333（Type1_Priority）をアサートすることで、対応する転送パケット指示信号381（Type1_ready）がアサートする。また、受信到着順でのパケット選択の際には優先パケット種選択指示信号333を全bitアサートすることで到着順出力指示信号316にて示されるパケット種が選択され、パケット種に対応する転送パケット指示信号381がアサートする。
この構成の長所はデコーダを用いない分、ゲート段数を抑える事が出来るため、ディレイの抑制に有効である。また、受信到着順でのパケット選択を示す信号を別途用意しない分、回路規模の増加を抑えることができる。なお、受信到着順でのパケット選択を示す信号を別途用意した場合でも、受信到着順でのパケット選択を示す信号分回路規模は大きくなるものの、ゲート段数を抑えたディレイの少ない構成とする事が可能である。
【００４１】
上記に説明した方法により通常時には受信到着順でのパケット選択を、目詰まり発生時には優先パケットの選択をスイッチ回路側から指定することによって転送速度を犠牲にすることなく、かつ回路規模を抑えた形で目詰まりを防止できる。
【００４２】
以下の図5に目詰まり発生時の優先選択パケットによる追い抜きの様子を示す。図5は同一デバイス宛てのパケット種間で追い抜きを行う際のラダーチャートである。左側から順にCPU送信部220、対CPU受信部310、対デバイスA送信部340、デバイスA受信部420であり、下に向かって時間の経過を表している。ここではパケット種をリード要求、ライト要求の2種として説明する。
【００４３】
タイミングt0はCPUからデバイスＡのFIFO Aに対するリード要求（1）が対CPU受信部310及び対デバイスA送信部340を介してデバイスA受信部420に到着したところを示している。ここでリード（1）はFIFO Aのデータを読みにいこうとするが、FIFO Aはまだ空であるためにリード要求（1）はデバイスA受信部420にてFIFO Aにデータがライトされるのを待っている状態となる。
【００４４】
タイミングt1はリード（1）の後さらにデバイスAに対してリード要求（2）がデバイスA受信部420に格納されたところを示している。リード要求（1）が処理されるまでリード要求（2）は処理されないため、リード要求（1）同様にリード要求（2）もデバイスA受信部420内にとどまる事になる。本例ではデバイスA受信部420に格納可能なリード要求は2つまでとなっており、リード要求（2）が格納された時点でデバイスＡ内のリード用受信RAMはFULLとなる。また、デバイスAはデバイスA受信RAM残容量信号422によりリード用受信RAMがFULLとなった事をスイッチ回路に対して通知する。デバイスA受信RAM残容量信号422によりデバイスＡのリード用受信RAMがFULL状態となったことを知った対デバイスA送信部340はフロー制御による待機を受け、デバイスAへのリード転送を抑止する。
【００４５】
タイミングt2はさらにデバイスAへのリード要求（3）（4）がリード要求（3）、リード要求（4）の順で対デバイスA送信部340に格納されたところを示している。デバイスAリード用受信RAMは既にリード要求（1）及びリード要求（2）が格納されているためFULLであり、デバイスA受信RAM残容量信号422によってデバイスAのリード用受信RAMがFULLであることを知ったスイッチ回路の送信部はフロー制御による待機状態であるため、リード要求（3）（4）は対デバイスA送信部340より先に送信することが出来ない。そのためリード要求（3）（4）は対デバイスA送信部 340に蓄えられたままフロー制御による待機が解除されるのを待っている。本例では対デバイスA送信部 340も格納可能なリード要求数は2つとなっており、リード要求（3）（4）が格納された時点で対デバイスA送信部 340もFULL状態となるため、対デバイスA送信部340から対CPU受信部310に対して対デバイスAリード用送信RAM FULL信号が出力される。
【００４６】
タイミングt3はリード要求（5）、リード要求（6）、FIFOAへのライト要求（7）の順で対CPU受信部310に格納されたところを示す。ここでリード要求（5）（6）はスイッチ回路内の対デバイスAリード用RAMがFULL状態であるため、対CPU受信部310から対デバイスA送信部340に転送することが出来ない。追い越しを考慮していないスイッチ回路では、ライト要求（7）はリード要求（5）及びリード要求（6）を追い越すことが出来ないため、ライト要求（7）も対デバイスA送信部340に転送を行うことが出来ない。そのためデバイスAのFIFOAにライトする事が出来ず、デッドロック状態となってしまう。そこで本回路ではスイッチ回路の対デバイスAリード用送信RAMがFULL状態となった事を示す対デバイスAリード用送信RAM FULL信号がアサートした際に、優先パケット種選択指示部331からライト要求のパケットを優先転送パケットとして指示し、パケット選択出力回路315を用いて優先的にライト要求を転送可能とした。この様にスイッチ回路側から優先転送パケットを指定してパケット選択出力回路315から選択出力する事により、中間RAMやパケット種分のパスを持つ事無く回路規模を抑えた形でパケット間の追い抜きを実現する。
【００４７】
タイミングt4はリード要求（5）（6）を追い越したライト要求（7）が対デバイスA送信部340を介してデバイスA受信部420に格納されたところを示す。本発明のスイッチ回路によりリード要求を追い越したライト要求（7）はデバイスAのライト用受信RAMに格納され、FIFO Aへのライト処理を行う。FIFO AにデータがライトされたことでFIFO Aへのリード要求であるリード要求（1）が処理される。
【００４８】
タイミングt5はリード要求（1）が処理された事によりフロー制御による待機が解除され、詰まっていたリード要求が転送可能となったところを示す。この様に本発明のスイッチ回路を用いることによりデッドロックの回避を小規模な回路で実現する事ができる。
【００４９】
図6は本発明を用いたスイッチ回路300を含む情報処理装置100の別の実施例の一つである。図1に示す回路ではリード要求（6）がデバイスB宛てだったとしても追い越しを行うことが出来ず、FIFOAへのライト要求が来るのを待たなければならないが、本回路においては到着順制御部313及び、優先パケット種選択指示部331の替わりに送信パケット種決定部312を用いる事で異なるデバイス宛てのパケット間の追い抜きに対応している。
【００５０】
本回路において対CPU受信部310は対CPU受信経路210から転送されたパケットを対CPU受信RAM 311に格納し、それと同時にCPU 200から送信されてきたパケットの受信RAMへの受信到着順と宛先情報を送信パケット種決定部312に格納する。図1記載の到着順制御部313がパケットの受信到着順のみを保持していたのに対し、送信パケット種決定部312はパケットの受信到着順に加えてパケットの宛先情報も合わせて保持する。上記送信RAM FULL信号とあわせて上記宛先情報を用いれば、例えば上記と同じくライトパケット種がリードパケット種を追い抜いて良いというオーダリングルールの時に、あるデバイス宛てのポートがリードパケット種用送信RAM のFULL状態を示している場合で最先着パケットが別のデバイス宛てのリードパケット種である場合に後に続くライトパケット種を優先転送パケット種として指示するのではなく、最先着である別のデバイス宛てのリードパケット種をパケット選択回路が出力するように指示する事ができる。またリードパケット種用送信RAM のFULL状態を示しているデバイス宛てのリードパケット種が最先着の場合で、続いて別のデバイス宛てのリードパケット種、さらに続いてリードパケット種用送信RAM のFULL状態をしめしているデバイス宛てのライトパケット種が到着していた場合にも別のデバイス宛てのリードパケット種を優先転送パケット種として上記パケット選択回路に指示する事ができる。
【００５１】
対CPU送信RAM 311に蓄えられたパケットは図1同様にパケット選択出力回路315に出力され、送信パケット種決定部312から出力される送信パケット種指示信号321を参照して、送信パケット種指示信号321に示されるパケット種をスイッチ回路受信部送信経路332に選択出力する。送信パケット種決定部312では、対デバイスA送信RAM 341及び、対デバイスB送信RAM 363のパケット種毎のFULL状態を示す対デバイスA送信RAM FULL信号342、対デバイスB送信RAM FULL信号362がアサートしていない間は受信到着順に送信パケット種を指示する。
【００５２】
対デバイスA送信RAM FULL信号342、対デバイスB送信RAM FULL信号362のアサート時には、スイッチ回路の受信部に保持されているパケットの宛先情報を受信到着順に調べていき、各送信RAMに対応する送信RAM FULL信号のアサートしていない送信RAM、つまりFULL状態になっていない送信RAMへのパケットを優先して送信要求を出す。
【００５３】
デバイスA 400、デバイスB 500は、その受信RAM 421、521はパケット種毎に格納するものであるため、送信RAM FULL信号はパケット種毎にアサートされることになる。例として、デバイスA 400内の受信RAM421におけるType１のパケット種に対する受信RAMがFULL状態になった場合には、Type１のパケット種に対する対デバイスA送信RAM FULL信号342がアサートされることになる。この場合、送信パケット種決定部312は、Type１のパケット種に対する対デバイスA送信RAM FULL信号342がアサートされたことを検知して、デバイスAを宛先とするType1のパケット種以外のパケットを、CPU200からスイッチ回路300への到着順に従いパケットを選択し出力するように送信パケット種指示信号321をパケット選択出力回路315へ送信する。従って、デバイスAを宛先とするType1のパケット種以外のパケットを、CPU200からスイッチ回路300への到着順に従いパケットをパケット選択出力回路315が受信RAM311から選択し、スイッチ回路受信部送信経路332に出力される。受信到着順に加え宛先情報を保持する構成に変えることにより、目詰まり発生時にライト要求の到着を待たずに他のデバイス宛てのパケットを転送可能となる。
【００５４】
上記パケットの宛先情報を用いない実施形態では上記送信RAM FULL信号によって1つのデバイス宛てのリードパケット種用送信RAM FULL状態が検出されると、他のデバイス宛てのリードパケット種用送信RAMまで送信できなくなってしまうが、上記パケットの宛先情報をもつ構成の場合、1つのデバイス宛てのリードパケット種用送信RAM FULL状態が検出されても、他のデバイス宛てのリードパケット種を送信可能となる。
【００５５】
図7は異なるデバイス宛てのパケット種間で追い抜きを行う際のラダーチャートである。左側から順にCPU送信部、対CPU受信部、対デバイスA送信部、対デバイスB送信部、デバイスA受信部、デバイスB受信部であり、下に向かって時間の経過を表している。ここではパケット種をリード要求、ライト要求の2種として説明する。
【００５６】
タイミングt0からt2までの動作は図5と同様であり、リード要求（1）、（2）、（3）、（4）をCPUから順にデバイスAに対して送信する。
【００５７】
タイミングt3はデバイスA宛てのリード要求（5）、デバイスB宛てのリード要求（6）の順でスイッチ回路の受信部に格納された状態を示す。受信到着順ではリード（5）が送信されるはずであるが、対デバイスA送信部340は既にリード要求（3）及びリード要求（4）が格納されておりFULL状態であるので、リード（5）は対CPU受信部310から転送できない。しかし、本回路ではパケットの宛先情報を送信パケット種決定部312にて保持しているので、デバイスA宛てのリード要求が詰まっている場合でもデバイスB宛てのパケットは転送することが可能である。送信パケット種決定部312ではまず、スイッチ回路の対CPU受信RAM 311に格納されているパケットの受信到着順に送信可能パケットの探索を行う。デバイスAへのリード要求（5）が受信到着順では最初であるが、スイッチ回路のデバイスA用のリード送信RAMはFULL状態であり、対デバイスAリード用送信RAM FULL信号がアサートしているのでデバイスA宛てのリード要求は送れないと判断する。次に送信パケット種決定部312は受信到着順が2番目であるリード要求（2）の宛先をみて、デバイスB宛てであることから送信可能と判断し送信を行う。
【００５８】
タイミングt4はデバイスA宛てのリード要求（5）をデバイスB宛てのリード要求（6）が追い抜いて、デバイスBの受信部に格納された状態を示す。この様に送信パケット種決定部312に受信到着順情報に加え、宛先情報を置くことによりライト要求を待たずに他のデバイスへのパケットを送信することができる。
【００５９】
図8は本発明のスイッチ回路300を用いた情報処理装置100の別の実施例の一つである。本回路では受信到着順転送用のパケット選択出力回路315に加えて優先パケット転送用の優先パケット選択出力回路318を用意する。図1に配置されているパケット選択出力回路315に対して、図8に配置されているパケット選択出力回路は到着順出力パケットのみを選択出力し、優先パケットは優先パケット選択出力回路318からのみ選択出力される。
【００６０】
優先パケット種選択指示部331は対デバイスA送信RAM FULL信号342、及び対デバイスB送信RAM FULL信号362を参照し、受信到着順でのパケット種選択時にはパケット選択出力回路315に対して到着順出力信号324を出力し、優先パケット選択時には優先パケット選択出力回路318に対して優先パケット種選択指示信号333を出力する。パケット選択出力回路315は到着順出力信号324によって受信到着順転送を指示された時に到着順出力指示信号316より選択されたパケットをスイッチ回路受信部送信経路332を用いてスイッチング制御部330に送信する。また、優先パケット選択出力回路318は優先パケット選択時に優先パケット種選択指示信号333によって選択されたパケットをスイッチ回路受信部送信経路332を用いてスイッチング制御部330に送信する。この様に優先パケット種専用のパケット選択出力回路を用いる事で上記目的を達成している。
【００６１】
以上の説明では、主として本発明者によってなされた発明をその背景となった技術分野であるPCI-Express規格に適用した場合について説明したがそれに限定されるものはなく、例えばPCI-Expressに類似したプロトコルにてデータ転送を行う場合などに適用できる。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態におけるスイッチ回路のブロック図である。
【図２】本発明の実施の形態におけるパケット選択出力回路の詳細図である。
【図３】デコーダを持つパケット種指示回路である。
【図４】本発明の実施の形態におけるパケット種指示回路である。
【図５】同一デバイス宛てパケット間での追い越し発生時のラダーチャートである。
【図６】本発明の実施の形態におけるスイッチ回路のブロック図である。
【図７】異なるデバイス宛てパケット間での追い越し発生時のラダーチャートである。
【図８】本発明の実施の形態におけるスイッチ回路のブロック図である。
【図９】既存の技術を用いた中間RAMを持つスイッチ回路のブロック図である。
【図１０】既存の技術を用いたパケット種分のパスを持つスイッチ回路のブロック図である。
【符号の説明】
【００６３】
100…情報処理装置、200…CPU、210…対CPU受信経路,211…対CPU送信経路、220…CPU送信部、230…CPU受信部、231…CPU受信RAM残容量信号、240…フロー制御部及びオーダリング制御部、241…送信パケット制御信号、250…CPU送信RAM、251…CPU送信経路、260…パケットセレクタ、300…スイッチ回路、310…対CPU受信部、311…対CPU受信RAM、312…送信パケット種決定部、313…到着順制御部、314…残容量管理部、315…パケット選択出力回路、316…到着順出力指示信号、317…対CPU受信RAM残容量信号、318…優先パケット選択出力回路、319…スイッチ回路受信RAM転送経路、320…対CPU送信部、321…送信パケット種指示信号、322…スイッチ回路送信部受信経路、323…パケット種指示回路、324…到着順出力信号、330…スイッチング制御部、331…優先パケット種選択指示部、332…スイッチ回路受信部送信経路、333…優先パケット種選択指示信号、334…スイッチングルータ、335…バッファ、336…対デバイスA用送信RAM送信経路、337…対デバイスB用受信RAM受信経路、338…オーダリングルール回路、339…ポートアービトレーション、340…対デバイスA送信部、341…対デバイスA送信RAM、342…対デバイスA送信RAM FULL信号、350…対デバイスA受信部、351…対デバイスA用受信RAM受信経路、352…対デバイスA受信RAM残容量信号、360…対デバイスB送信部、361…対デバイスB用送信RAM送信経路、362…受信RAM残容量信号、363…対デバイスB送信RAM、370…対デバイスB受信部、380…デコーダ、381…転送パケット指示信号、400…デバイスA、410…対デバイスA送信経路、411…対デバイスA受信経路、420…デバイスA受信部、421…デバイスA受信RAM、422…デバイスA受信RAM残容量信号、430…デバイスA送信部、500…デバイスB、510…対デバイスB送信経路、511…対デバイスB受信経路、520…デバイスB受信部、521…デバイスB受信RAM、530…デバイスB送信部。
【図１】
2007323098.tif 000003
【図２】
2007323098.tif 000004
【図３】
2007323098.tif 000005
【図４】
2007323098.tif 000006
【図５】
2007323098.tif 000007
【図６】
2007323098.tif 000008
【図７】
2007323098.tif 000009
【図８】
2007323098.tif 000010
【図９】
2007323098.tif 000011
【図１０】
2007323098.tif 000012