(57)【特許請求の範囲】
【請求項１】
データを送受信する複数のポート部と、データを周回させる周回方向が決められたリング状の中継路を構成する複数のデータ中継部とを備え、
前記複数のポート部それぞれのポート部は、前記複数のデータ中継部のうちいずれかのデータ中継部に対応付けられたポート受信部とポート送信部とを備え、
前記複数のポート部それぞれのポート受信部は、伝送路から通信データを受信し、受信した通信データを前記複数のポート部それぞれのポート送信部のうちいずれかのポート送信部を宛先とする通信データとして所定のポート周期で出力し、
前記通信データを出力したポート受信部に対応付けられたデータ中継部は、前記通信データを入力し、前記通信データを前記所定のポート周期より短い所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データが中継されたデータ中継部は、前記通信データを前記所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データの前記宛先のポート送信部に対応付けられたデータ中継部は、前記通信データを前記宛先のポート送信部に出力し、
前記通信データの前記宛先のポート送信部は、前記通信データを入力し、前記通信データを受信した前記伝送路とは異なる伝送路に送信する交換機であって、
前記交換機は、０からＸ（Ｘは１以上の整数）までの整数値を繰り返しカウントする際に前記所定の中継周期に１ずつカウントし、カウントした値であるカウンタ値を出力するカウンタを備え、
前記所定のポート周期は、前記所定の中継周期の（Ｘ＋１）倍の時間であり、
前記通信データは、パケットを構成する複数の部分データのうちの部分データであり、
前記複数のポート部は、第０〜第Ｘのポート部であり、前記複数のデータ中継部は、第０〜第Ｘのデータ中継部であり、
第ｘ（ｘは０以上Ｘ以下の整数）のポート部は、第ｘのポート受信部と、第ｘのポート送信部とを備え、
前記第ｘのポート送信部は、前記カウンタから出力されたカウンタ値を記憶した後に前記カウンタ値を出力するフリップフロップである第ｘのカウンタ値用フリップフロップと、前記第ｘのポート送信部を宛先とするパケットを構成する複数の部分データのうちの１つ目の部分データが前記第ｘのポート送信部に入力されてから、前記第ｘのポート送信部を宛先とするパケットを構成する複数の部分データの最終の部分データが前記第ｘのポート送信部に入力されるまでの間、第１のフラグ値を示すパケットフラグを出力する第ｘのパケットフラグ用フリップフロップとを有し、
第ｙ（ｙは１以上Ｘ−１以下の整数）のポート受信部は、
部分データを受信した場合、受信した部分データを前記所定のポート周期で第ｙのデータ中継部に出力すると共に、出力する部分データが最終の部分データであるか否かを示す最終データフラグと、出力する部分データの宛先となるポート送信部を識別する宛先ポート番号と、を第ｙのデータ中継部に出力し、
第ｙのデータ中継部は、
第ｙ−１のデータ中継部から部分データと最終データフラグと宛先ポート番号とが出力された場合、第ｙ−１のデータ中継部から出力された部分データと最終データフラグと宛先ポート番号とを前記所定の中継周期で前記中継路に出力し、
前記第ｙ−１のデータ中継部から部分データと最終データフラグと宛先ポート番号とが出力されず、前記第ｙのポート受信部から部分データと最終データフラグと宛先ポート番号とが出力された場合、前記第ｙのポート受信部から出力された部分データと最終データフラグと宛先ポート番号とを前記所定の中継周期で前記中継路に出力し、
第ｙ＋１のポート送信部は、
前記第ｙのデータ中継部から出力された宛先ポート番号を入力し、
入力した宛先ポート番号が前記第ｙ＋１のポート送信部を識別する固定ポート番号と一致し、第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値以外のフラグ値を示す場合、前記カウンタから出力されているカウンタ値を第ｙ＋１のカウンタ値用フリップフロップに記憶し、前記第ｙのデータ中継部から出力された部分データを入力し、入力した部分データを前記異なる伝送路に送信し、
入力した宛先ポート番号が前記固定ポート番号と一致し、前記第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値を示し、前記カウンタから出力されているカウンタ値が前記第ｙ＋１のカウンタ値用フリップフリップから出力されているカウンタ値と一致しない場合、前記第ｙのデータ中継部から出力された部分データの送信を行わず、
入力した宛先ポート番号が前記固定ポート番号と一致し、前記第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値を示し、前記カウンタから出力されているカウンタ値が前記第ｙ＋１のカウンタ値用フリップフロップから出力されているカウンタ値と一致する場合、前記第ｙのデータ中継部から出力された部分データを入力し、入力した部分データを前記異なる伝送路に送信する
ことを特徴とする交換機。
【請求項２】
データを送受信する複数のポート部と、データを周回させる周回方向が決められたリング状の中継路を構成する複数のデータ中継部とを備え、
前記複数のポート部それぞれのポート部は、前記複数のデータ中継部のうちいずれかのデータ中継部に対応付けられたポート受信部とポート送信部とを備え、
前記複数のポート部それぞれのポート受信部は、伝送路から通信データを受信し、受信した通信データを前記複数のポート部それぞれのポート送信部のうちいずれかのポート送信部を宛先とする通信データとして所定のポート周期で出力し、
前記通信データを出力したポート受信部に対応付けられたデータ中継部は、前記通信データを入力し、前記通信データを前記所定のポート周期より短い所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データが中継されたデータ中継部は、前記通信データを前記所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データの前記宛先のポート送信部に対応付けられたデータ中継部は、前記通信データを前記宛先のポート送信部に出力し、
前記通信データの前記宛先のポート送信部は、前記通信データを入力し、前記通信データを受信した前記伝送路とは異なる伝送路に送信するデータ転送方法であって、
０からＸ（Ｘは１以上の整数）までの整数値を繰り返しカウントする際に前記所定の中継周期に１ずつカウントし、カウントした値であるカウンタ値を出力するカウンタを備え、
前記所定のポート周期は、前記所定の中継周期の（Ｘ＋１）倍の時間であり、
前記通信データは、パケットを構成する複数の部分データのうちの部分データであり、
前記複数のポート部は、第０〜第Ｘのポート部であり、前記複数のデータ中継部は、第０〜第Ｘのデータ中継部であり、
第ｘ（ｘは０以上Ｘ以下の整数）のポート部は、第ｘのポート受信部と、第ｘのポート送信部とを備え、
前記第ｘのポート送信部は、前記カウンタから出力されたカウンタ値を記憶した後に前記カウンタ値を出力するフリップフロップである第ｘのカウンタ値用フリップフロップと、前記第ｘのポート送信部を宛先とするパケットを構成する複数の部分データのうちの１つ目の部分データが前記第ｘのポート送信部に入力されてから、前記第ｘのポート送信部を宛先とするパケットを構成する複数の部分データの最終の部分データが前記第ｘのポート送信部に入力されるまでの間、第１のフラグ値を示すパケットフラグを出力する第ｘのパケットフラグ用フリップフロップとを有し、
第ｙ（ｙは１以上Ｘ−１以下の整数）のポート受信部は、
部分データを受信した場合、受信した部分データを前記所定のポート周期で第ｙのデータ中継部に出力すると共に、出力する部分データが最終の部分データであるか否かを示す最終データフラグと、出力する部分データの宛先となるポート送信部を識別する宛先ポート番号と、を第ｙのデータ中継部に出力し、
第ｙのデータ中継部は、
第ｙ−１のデータ中継部から部分データと最終データフラグと宛先ポート番号とが出力された場合、第ｙ−１のデータ中継部から出力された部分データと最終データフラグと宛先ポート番号とを前記所定の中継周期で前記中継路に出力し、
前記第ｙ−１のデータ中継部から部分データと最終データフラグと宛先ポート番号とが出力されず、前記第ｙのポート受信部から部分データと最終データフラグと宛先ポート番号とが出力された場合、前記第ｙのポート受信部から出力された部分データと最終データフラグと宛先ポート番号とを前記所定の中継周期で前記中継路に出力し、
第ｙ＋１のポート送信部は、
前記第ｙのデータ中継部から出力された宛先ポート番号を入力し、
入力した宛先ポート番号が前記第ｙ＋１のポート送信部を識別する固定ポート番号と一致し、第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値以外のフラグ値を示す場合、前記カウンタから出力されているカウンタ値を第ｙ＋１のカウンタ値用フリップフロップに記憶し、前記第ｙのデータ中継部から出力された部分データを入力し、入力した部分データを前記異なる伝送路に送信し、
入力した宛先ポート番号が前記固定ポート番号と一致し、前記第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値を示し、前記カウンタから出力されているカウンタ値が前記第ｙ＋１のカウンタ値用フリップフリップから出力されているカウンタ値と一致しない場合、前記第ｙのデータ中継部から出力された部分データの送信を行わず、
入力した宛先ポート番号が前記固定ポート番号と一致し、前記第ｙ＋１のパケットフラグ用フリップフロップから出力されているパケットフラグが前記第１のフラグ値を示し、前記カウンタから出力されているカウンタ値が前記第ｙ＋１のカウンタ値用フリップフロップから出力されているカウンタ値と一致する場合、前記第ｙのデータ中継部から出力された部分データを入力し、入力した部分データを前記異なる伝送路に送信する
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、パケットを転送する交換機およびデータ転送方法に関するものである。
【背景技術】
【０００２】
一般に、Ｎ×Ｎのような多ノードのスイッチには、クロスバー型の回路が用いられる。
しかし、クロスバー型回路には全ての受信ポートの中から１つの受信ポートを選択するためのセレクタがポート数（Ｎ）と同じ数だけ必要なため、回路規模が大きくなる。
【０００３】
一方、特許文献１に開示されているスイッチは、２−ｔｏ−１セレクタとフリップフロップとを交互にリング状に配置している。この構成の場合、クロスバー型回路に比べて回路規模は小さくなる。
しかし、あるポートから受信したパケットがリングを流れている期間、その経路上に接続されている他のポートは送受信が出来ずに待たされる。そのため、クロスバー型回路に比べて転送効率が悪くなる、という課題があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−１６７５６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、例えば、データを効率良く転送できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の交換機は、
データを送受信する複数のポート部と、データを周回させる周回方向が決められたリング状の中継路を構成する複数のデータ中継部とを備える。
前記複数のポート部それぞれのポート部は、前記複数のデータ中継部のうちいずれかのデータ中継部に対応付けられたポート受信部とポート送信部とを備える。
前記複数のポート部それぞれのポート受信部は、伝送路から通信データを受信し、受信した通信データを前記複数のポート部それぞれのポート送信部のうちいずれかのポート送信部を宛先とする通信データとして所定のポート周期で出力し、
前記通信データを出力したポート受信部に対応付けられたデータ中継部は、前記通信データを入力し、前記通信データを前記所定のポート周期より短い所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データが中継されたデータ中継部は、前記通信データを前記所定の中継周期で前記周回方向の下流側のデータ中継部に中継し、
前記通信データの前記宛先のポート送信部に対応付けられたデータ中継部は、前記通信データを前記宛先のポート送信部に出力し、
前記通信データの前記宛先のポート送信部は、前記通信データを入力し、前記通信データを受信した前記伝送路とは異なる伝送路に送信する。
【発明の効果】
【０００７】
本発明によれば、例えば、データを効率良く転送することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるパケット交換機９００の構成図。
【図２】実施の形態１におけるポート１００Ａ〜Ｈの受信部１１０の構成図。
【図３】実施の形態１における受信部１１０のデータイネーブル信号と最終データフラグとパケットの部分データとの関係図。
【図４】実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの構成図。
【図５】実施の形態１におけるリング回路ブロック２００の制御回路２３０の構成図。
【図６】実施の形態１におけるポート１００Ａ〜Ｈの送信部１２０の構成図。
【図７】実施の形態１におけるパケット交換機９００の動作を表すタイミングチャート。
【図８】実施の形態１におけるパケット交換機９００の動作を表すタイミングチャート。
【図９】実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの動作を表すタイミングチャート。
【図１０】実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの動作を表すタイミングチャート。
【図１１】実施の形態１におけるリング回路ブロック２００Ｆとポート１００Ｆの送信部１２０との動作を表すタイミングチャート。
【図１２】実施の形態１におけるパケット交換機９００のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
回路規模が小さく、データの転送効率が高いパケット交換機について説明する。
【００１０】
図１は、実施の形態１におけるパケット交換機９００の構成図である。
実施の形態１におけるパケット交換機９００の構成について、図１に基づいて説明する。
【００１１】
パケット交換機９００は、パケット（通信データの一例）を宛先の通信装置へ届けるためにパケットを中継する通信装置である。ルータ、スイッチまたはスイッチングハブはパケット交換機９００の一例である。
【００１２】
パケット交換機９００（交換機の一例）は、複数のポート１００（ポート部の一例）と、ポート１００と同じ個数のリング回路ブロック２００（中継部の一例）と、１つのカウンタ３００（カウンタ部の一例）とを備える。
実施の形態１では、パケット交換機９００が８つのポート１００Ａ〜Ｈと、８つのリング回路ブロック２００Ａ〜Ｈと、１つのカウンタ３００とを備える場合について説明する。但し、ポート１００およびリング回路ブロック２００の数は２つから７つまたは９つ以上であっても構わない。
【００１３】
以下、ポート１００Ａ〜Ｈを動作させる動作クロックを「ポートクロック」といい、リング回路ブロック２００Ａ〜Ｈを動作させる動作クロックを「リング回路クロック」という。
リング回路クロックのクロック周波数は、ポートクロックのクロック周波数のＮ倍である。ここで、「Ｎ」はリング回路ブロック２００Ａ〜Ｈの個数「８」を意味する。
つまり、リング回路クロックのクロック周期は、ポートクロックのクロック周期のＮ分の１である。
【００１４】
ポート１００Ａ〜Ｈは、通信ケーブルの端子を挿入する端子口（図示省略）を有するインタフェース回路であり、パケットを通信するコンピュータまたは他のパケット交換機と伝送路（通信ケーブルまたはネットワーク）を介して通信接続する。
以下、ポート１００Ａ〜Ｈに接続するコンピュータまたは他のパケット交換機（いずれも通信装置の一例）を「ノード」という。
【００１５】
ポート１００Ａ〜Ｈはそれぞれ、伝送路からパケットを受信する受信部１１０と、パケットを伝送路へ送信する送信部１２０とを備える。
【００１６】
リング回路ブロック２００Ａ〜Ｈはリング状に接続されてリング回路（中継路の一例）を構成し、ポート１００Ａ〜Ｈの受信部１１０によって受信されたパケットの部分データ（通信データの一例）を所定の周回方向に周回させる。図１に示すリング回路ブロック２００Ａ〜Ｈはパケットの部分データを左回り（中継方向の一例）に周回させる。
以下、リング回路の周回方向の上流側を「前段」といい、リング回路の周回方向の下流側を「後段」という。例えば、リング回路ブロック２００Ａの前段にはリング回路ブロック２００Ｈが配置され、リング回路ブロック２００Ａの後段にはリング回路ブロック２００Ｂが配置されている。
【００１７】
リング回路ブロック２００Ａ〜Ｈはそれぞれ、セレクタ２１０（「ＳＥＬ」と記す）と、フリップフロップ部２２０（ＦＦ又は「ＦＦ部」と記す）とを備える。
リング回路ブロック２００ｘ（ｘはＡからＨのいずれか）のセレクタ２１０は、ポート１００ｘの受信部１１０によって受信されるパケットの部分データと、前段のリング回路ブロック２００のフリップフロップ部２２０から出力されるパケットの部分データとのうち、いずれかのパケットの部分データを選択する回路である。
リング回路ブロック２００ｘのフリップフロップ部２２０は、リング回路ブロック２００ｘのセレクタ２１０によって選択されたパケットの部分データを後段のリング回路ブロック２００のセレクタ２１０へ出力する回路である。
例えば、リング回路ブロック２００Ａのセレクタ２１０は、ポート１００Ａの受信部１１０によって受信されたパケットのデータと前段のリング回路ブロック２００Ｈのフリップフロップ部２２０から出力されたデータとのうち、いずれかのデータを選択する。また、リング回路ブロック２００Ａのフリップフロップ部２２０は、リング回路ブロック２００Ａのセレクタ２１０によって選択されたデータを後段のリング回路ブロック２００Ｂのセレクタ２１０へ出力する。
【００１８】
カウンタ３００は、ポートクロックの１回のクロック周期（１サイクル）の間、リング回路クロックのクロック周期をカウントする回路である。
実施の形態１において、カウンタ３００は「０」から「７」までの整数値を繰り返しカウントする。
【００１９】
図２は、実施の形態１におけるポート１００Ａ〜Ｈの受信部１１０の構成図である。
実施の形態１におけるポート１００Ａ〜Ｈの受信部１１０の構成について、図２に基づいて説明する。
【００２０】
受信部１１０はパケットを構成する部分データを伝送路から受信する。
パケットは、送信元のノードを識別する送信元アドレス、宛先のノードを識別する宛先アドレス、送信対象のデータ（ペイロードデータ）などを含んだデータである。
【００２１】
受信部１１０は、Ｓ／Ｐ変換部１１１と、データ解析部１１２と、受信バッファ１１３と、受信処理記憶部１１４とを備える。但し、パケット交換機９００が受信処理記憶部１１４を一つ備え、一つの受信処理記憶部１１４をポート１００Ａ〜Ｈそれぞれの受信部１１０が共有してもよい。
【００２２】
図２に示す受信部１１０がポート１００ｘ（ｘはＡからＨのいずれか）の受信部１１０である場合、図２の「リング回路ブロック」はリング回路ブロック２００ｘを意味する。
【００２３】
Ｓ／Ｐ変換部１１１は、伝送路からパケットの部分データをシリアル（直列）に受信し、受信したパケットの部分データをパラレル（並列）にデータ解析部１１２へ出力する。例えば、Ｓ／Ｐ変換部１１１はポートクロックの１回のクロック周期当たり８ビットの部分データを１ビットずつ受信し、受信した８ビットの部分データをポートクロックの１回のクロック周期でデータ解析部１１２へ出力する。
Ｓ／Ｐ変換部１１１は、パケットの部分データと共に信号値「１」のデータイネーブル信号をデータ解析部１１２へ出力し、最後の部分データと共にフラグ値「１」の最終データフラグをデータ解析部１１２へ出力する。
【００２４】
データイネーブル信号は、パケットの部分データを出力していることを通知するための信号である。データイネーブル信号の信号値「１」はパケットの部分データを出力していることを意味し、データイネーブル信号の信号値「０」はパケットの部分データを出力していないことを意味する。
最終データフラグは、パケットを構成する最後の部分データの出力が終了したことを通知するためのフラグ（データまたは信号）である。最終データフラグのフラグ値「１」は最後の部分データの出力が終了したことを意味し、最終データフラグのフラグ値「０」は最後の部分データの出力が終了していないことを意味する。
【００２５】
データ解析部１１２は、Ｓ／Ｐ変換部１１１から出力されるパケットの部分データを入力し、入力したパケットの部分データを受信バッファ１１３に蓄積する。
データ解析部１１２は、受信バッファ１１３に蓄積したパケットの部分データから宛先アドレスを取得する。例えば、受信処理記憶部１１４に宛先アドレスを含む部分データの順番を示す宛先データ番号を予め記憶しておく。そして、データ解析部１１２は宛先データ番号が示す順番に蓄積したパケットの部分データから宛先アドレスを取得する。
データ解析部１１２は、取得した宛先アドレスに対応付けられた宛先ポート番号を受信処理記憶部１１４内の変換テーブル１１９から取得する。変換テーブル１１９は、宛先アドレスと、宛先のポート１００を識別する宛先ポート番号（宛先ポート識別子の一例）とを対応付けたデータである。変換テーブル１１９は受信処理記憶部１１４に予め記憶しておく。
【００２６】
データ解析部１１２はパケットの部分データを受信バッファ１１３から取得し、取得したパケットの部分データをリング回路ブロックへ出力し、リング回路ブロックへ出力したパケットの部分データを受信バッファ１１３から削除する。但し、リング回路ブロックからフラグ値「１」のウエイトフラグが出力されている場合、データ解析部１１２は、リング回路ブロックへ出力したパケットの部分データを受信バッファ１１３から削除しない。この場合、同じ部分データが繰り返しリング回路ブロックに出力されることになる。
データ解析部１１２は、パケットの部分データと共に、データイネーブル信号と宛先ポート番号とをリング回路ブロックへ出力する。
データ解析部１１２は、最後の部分データを出力したときにはフラグ値「１」の最終データフラグもリング回路ブロックへ出力する。
【００２７】
図３は、実施の形態１における受信部１１０のデータイネーブル信号と最終データフラグとパケットの部分データとの関係図である。
受信部１１０のＳ／Ｐ変換部１１１またはデータ解析部１１２（図２参照）は、図３に示すように、パケットの部分データを出力している間、信号値「１（Ｈｉｇｈ）」のデータイネーブル信号を出力し、最後の部分データを出力したときにフラグ値「１（Ｈｉｇｈ）」の最終データフラグを出力する。
【００２８】
図４は、実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの構成図である。
実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの構成について、図４に基づいて説明する。
【００２９】
リング回路ブロック２００Ａ〜Ｈはそれぞれ、セレクタ２１０と、フリップフロップ部２２０と、制御回路２３０とを備える。
フリップフロップ部２２０は、３つのフリップフロップ２２１〜２２３を備える。
【００３０】
図４において、「リング前段」は前段のリング回路ブロック２００を意味し、「リング後段」は後段のリング回路ブロック２００を意味する。
また、「現段受信部」は現段のポート１００の受信部１１０を意味し、「後段送信部」は後段のポート１００の送信部１２０を意味する。
例えば、図４がリング回路ブロック２００Ａを表している場合、「リング前段」はリング回路ブロック２００Ｈであり、「リング後段」はリング回路ブロック２００Ｂであり、「現段受信部」はポート１００Ａの受信部１１０であり、「後段送信部」はポート１００Ｂの送信部１２０である。
【００３１】
セレクタ２１０は、現段受信部から出力されるパケットの部分データと、リング前段から出力されるパケットの部分データとのうちいずれかのパケットの部分データを選択する回路である。
【００３２】
セレクタ２１０は、現段受信部とリング前段とのそれぞれから、パケットの部分データと部分データの宛先ポート番号と最終データフラグとを入力する。
【００３３】
制御回路２３０から信号値「０」のセレクト信号が出力された場合、セレクタ２１０はリング前段を選択し、リング前段から入力したパケットの部分データと部分データの宛先ポート番号と最終データフラグとをフリップフロップ部２２０へ出力する。
制御回路２３０から信号値「１」のセレクト信号が出力された場合、セレクタ２１０は、現段受信部を選択し、現段受信部から入力したパケットの部分データと部分データの宛先ポート番号と最終データフラグとをフリップフロップ部２２０へ出力する。
【００３４】
制御回路２３０はセレクト信号をセレクタ２１０に出力する回路である。
セレクト信号は、現段受信部からのパケットの部分データとリング前段からのパケットの部分データとのうちいずれかのパケットの部分データを選択するための信号である。
制御回路２３０の詳細については後述する。
【００３５】
フリップフロップ２２１〜２２３は、セレクタ２１０から出力されたパケットの部分データと部分データの宛先ポート番号と最終データフラグとを入力して記憶する回路である。
フリップフロップ２２１〜２２３は、記憶したパケットの部分データと部分データの宛先ポート番号と最終データフラグとをリング後段と後段送信部とに出力する。
【００３６】
図５は、実施の形態１におけるリング回路ブロック２００の制御回路２３０の構成図である。
実施の形態１におけるリング回路ブロック２００の制御回路２３０の構成について、図５に基づいて説明する。
【００３７】
図５において「リング前段」「リング後段」「現段受信部」「後段送信部」の意味は図４と同じである。
「現段送信部」は、現段のポート１００の送信部１２０を意味する。例えば、図５がリング回路ブロック２００Ａの制御回路２３０を示している場合、「現段送信部」はポート１００Ａの送信部１２０を意味する。
「カウンタ」は、カウンタ３００を意味する。
【００３８】
制御回路２３０は、デコーダ２３１と、３つのＡＮＤ回路２３２〜２３４と、フリップフロップ２３５とを備える。
【００３９】
デコーダ２３１は、カウンタ３００からカウンタ値を入力し、入力したカウンタ値に応じてポート動作信号を出力する回路である。
カウンタ値が「０」である場合、デコーダ２３１は信号値「１」のポート動作信号を出力し、カウンタ値が「０」以外である場合、デコーダ２３１は信号値「０」のポート動作信号を出力する。
【００４０】
ポート動作信号は、ポートクロックのクロック周期毎のタイミング、つまり、ポート１００Ａ〜Ｈが動作を開始するタイミングを通知するための信号である。
ポート動作信号の信号値「０」はポート１００Ａ〜Ｈが動作を開始しないタイミングであることを意味し、ポート動作信号の信号値「１」はポート１００Ａ〜Ｈが動作を開始するタイミングであることを意味するものとする。
ポート１００Ａ〜Ｈは、カウンタ３００のカウンタ値が「０」から「１」になるタイミングで動作を開始する。
【００４１】
ＡＮＤ回路２３２は、デコーダ２３１から出力されるポート動作信号とリング前段のフリップフロップ２３５から出力されるデータフラグとに応じてセレクト信号をセレクタ２１０へ出力する。
ポート動作信号の信号値が「１」であって、且つデータフラグのフラグ値が「０」である場合、ＡＮＤ回路２３２は、信号値「１」のセレクト信号をセレクタ２１０へ出力する。それ以外の場合、ＡＮＤ回路２３２は信号値「０」のセレクト信号をセレクタ２１０へ出力する。
【００４２】
ＡＮＤ回路２３３は、デコーダ２３１から出力されるポート動作信号とリング前段のフリップフロップ２３５から出力されるデータフラグとに応じてウエイトフラグを現段受信部へ出力する。
ポート動作信号の信号値が「１」であって、且つデータフラグのフラグ値が「１」である場合、ＡＮＤ回路２３３は、フラグ値「１」のウエイトフラグを現段受信部へ出力する。それ以外の場合、ＡＮＤ回路２３３はフラグ値「０」のウエイトフラグを現段受信部へ出力する。
ウエイトフラグは、現段受信部に新たな部分データの出力を停止させるためのフラグ（データまたは信号）である。
【００４３】
ＡＮＤ回路２３４は、デコーダ２３１から出力されるポート動作信号と現段受信部から出力されるデータイネーブル信号とに応じてフラグセット信号をフリップフロップ２３５へ出力する。
ポート動作信号の信号値が「１」であって、且つデータイネーブル信号の信号値が「１」である場合、ＡＮＤ回路２３４は、信号値「１」のフラグセット信号をフリップフロップ２３５へ出力する。それ以外の場合、ＡＮＤ回路２３４は信号値「０」のフラグセット信号をフリップフロップ２３５へ出力する。
フラグセット信号は、データフラグにフラグ値「１」を設定するための信号である。
【００４４】
フリップフロップ２３５はデータフラグを記憶し、記憶したデータフラグをリング後段と後段送信部とに出力する回路である。
フリップフロップ２３５は、ＡＮＤ回路２３４から出力されるフラグセット信号と、現段送信部から出力されるフラグクリア信号とに応じてデータフラグを更新する。
フラグセット信号の信号値が「１」である場合（但し、フラグクリア信号の信号値が「１」である場合を除く）、フリップフロップ２３５はデータフラグにフラグ値「１」を設定する。
フラグクリア信号の信号値が「１」である場合、フリップフロップ２３５はデータフラグにフラグ値「０」を設定する。
フラグセット信号とフラグクリア信号との両方の信号値が「０」である場合、フリップフロップ２３５は、リング前段のフリップフロップ２３５から出力されたデータフラグと同じフラグ値をリング後段と後段送信部とへ出力する。
【００４５】
図６は、実施の形態１におけるポート１００Ａ〜Ｈの送信部１２０の構成図である。
実施の形態１におけるポート１００Ａ〜Ｈの送信部１２０の構成について、図６に基づいて説明する。
【００４６】
送信部１２０は、送信制御部１２１と、Ｐ／Ｓ変換部１２２と、比較器１２３と、２つのＡＮＤ回路１２４〜１２５と、２つのフリップフロップ１２６〜１２７とを備える。
【００４７】
図６において、「リング前段」は前段のリング回路ブロック２００を意味し、「リング現段」は現段のリング回路ブロック２００を意味する。例えば、図６がポート１００Ａの送信部１２０を示している場合、「リング前段」はリング回路ブロック２００Ｈを意味し、「リング現段」はリング回路ブロック２００Ａを意味する。
「カウンタ」はカウンタ３００を意味する。
【００４８】
送信制御部１２１は、ＡＮＤ回路１２４から信号値「１」のフラグクリア信号が出力されているか否かを判定する。
ＡＮＤ回路１２４から信号値「１」のフラグクリア信号が出力されている場合、送信制御部１２１は、リング前段から出力されるパケットの部分データとデータフラグと最終データフラグとを入力する。
送信制御部１２１は、入力したパケットの部分データをポートクロックのクロック周期に合わせてＰ／Ｓ変換部１２２へ出力する。送信制御部１２１は、パケットの部分データと共にデータイネーブル信号をＰ／Ｓ変換部１２２へ出力する。また、送信制御部１２１は、最後の部分データをＰ／Ｓ変換部１２２へ出力するときにはフラグ値「１」の最終データフラグをＰ／Ｓ変換部１２２へ出力する。
【００４９】
Ｐ／Ｓ変換部１２２は、送信制御部１２１から出力されるパケットの部分データをパラレルに入力し、入力したパケットの部分データを送信バッファ（図示省略）に蓄積する。また、Ｐ／Ｓ変換部１２２は、送信制御部１２１から出力されるデータイネーブル信号と最終データフラグとを入力する。
Ｐ／Ｓ変換部１２２は、送信バッファに蓄積したパケットの部分データを用いてパケットを生成し、生成したパケット伝送路へシリアルに送信する。このとき、Ｐ／Ｓ変換部１２２は、フラグ値「１」の最終データフラグに基づいて最後の部分データを判定する。
【００５０】
ＡＮＤ回路１２４は、リング前段から出力されるデータフラグと比較器１２３から出力される比較信号とに応じてフラグクリア信号を送信制御部１２１、リング現段、フリップフロップ１２６およびＡＮＤ回路１２５へ出力する。
リング前段から出力されるデータフラグのフラグ値が「１」であり、且つ比較器１２３から出力される比較信号の信号値が「１」である場合、ＡＮＤ回路１２４はフラグ値「１」のデータフラグを出力する。それ以外の場合、ＡＮＤ回路１２４はフラグ値「０」のデータフラグを出力する。
【００５１】
比較器１２３は、リング前段から出力される宛先ポート番号と、カウンタ３００から出力されるカウンタ値と、フリップフロップ１２７から出力されるカウンタ値と、フリップフロップ１２６から出力されるパケットフラグとに応じて、比較信号をＡＮＤ回路１２４へ出力する。
また、比較器１２３は、現段のポート１００を識別するポート番号を予め記憶する。以下、比較器１２３が記憶するポート番号を「固定ポート番号」という。
【００５２】
パケットフラグは、同一パケットの部分データが出力されている期間を通知するフラグ（データまたは信号）である。パケットフラグ「１」は同一パケットの部分データが出力されていることを意味し、パケットフラグ「０」は同一パケットの部分データの出力が終了したことを意味する。
【００５３】
以下の（１）から（３）の条件を満たす場合または（１）及び（４）の条件を満たす場合、比較器１２３は信号値「１」の比較信号を出力する。それ以外の場合、比較器１２３は信号値「０」の比較信号を出力する。
（１）リング前段から出力される宛先ポート番号と、固定ポート番号とが一致する。
（２）カウンタ３００から出力されるカウンタ値と、フリップフロップ１２７から出力されるカウンタ値とが一致する。
（３）フリップフロップ１２６から出力されるパケットフラグのフラグ値が「１」である。
（４）フリップフロップ１２６から出力されるパケットフラグのフラグ値が「０」である。
【００５４】
フリップフロップ１２７はカウンタ値を記憶し、記憶したカウンタ値を比較器１２３へ出力する回路である。
フリップフロップ１２７は、ＡＮＤ回路１２４から出力されるフラグクリア信号の信号値が「１」であるときにカウンタ３００から出力されたカウンタ値を入力し、入力したカウンタ値を記憶する。
【００５５】
これにより、フリップフロップ１２７は、同一パケットの全ての部分データが送信制御部１２１に入力されている間（パケットフラグのフラグ値が「１」である間）、同一のカウンタ値を記憶することができる。
【００５６】
また、カウンタ値はポート１００Ａ〜Ｈの個数「０〜７」をカウントした値であるため、リング前段が同じカウンタ値で出力した部分データは、同じポート１００によって受信された部分データである。
したがって、送信制御部１２１は、特定のポート１００によって受信される一つのパケットの全ての部分データを入力し終わるまで同じパケットの部分データだけを入力し、他のポート１００によって受信された他のパケットの部分データを入力しない。他のパケットの部分データは、送信制御部１２１が一つのパケットの全ての部分データを入力し終わるまで、リング回路ブロック２００Ａ〜Ｈが構成するリング回路を巡回する。
【００５７】
フリップフロップ１２６はパケットフラグを記憶し、記憶したパケットフラグを比較器１２３へ出力する回路である。
フリップフロップ１２６は、ＡＮＤ回路１２４から出力されるフラグクリア信号の信号値が「１」である場合にパケットフラグのフラグ値を「１」に更新する。
フリップフロップ１２６は、ＡＮＤ回路１２５から出力されるフラグクリア信号の信号値が「１」である場合にパケットフラグのフラグ値を「０」に更新する。
ＡＮＤ回路１２４から出力されるフラグクリア信号とＡＮＤ回路１２５から出力されるフラグリセット信号との両方の信号値が「１」である場合、フリップフロップ１２６はパケットフラグのフラグ値を「０」に更新する。
ＡＮＤ回路１２４から出力されるフラグクリア信号とＡＮＤ回路１２５から出力されるフラグリセット信号との両方の信号値が「０」である場合、フリップフロップ１２６はパケットフラグのフラグ値を更新しない。つまり、フリップフロップ１２６は前回更新したパケットフラグを比較器１２３へ出力する。
【００５８】
ＡＮＤ回路１２５は、ＡＮＤ回路１２４から出力されるフラグクリア信号とリング前段から出力される最終データフラグとに応じてフラグリセット信号をフリップフロップ１２６へ出力する。
ＡＮＤ回路１２４から出力されるフラグクリア信号の信号値が「１」であり、且つリング前段から出力される最終データフラグのフラグ値が「１」である場合、ＡＮＤ回路１２５は、フラグ値「１」のフラグリセット信号をフリップフロップ１２６へ出力する。それ以外の場合、ＡＮＤ回路１２５は、信号値「０」のフラグリセット信号をフリップフロップ１２６へ出力する。
【００５９】
図７、図８は、実施の形態１におけるパケット交換機９００の動作を表すタイミングチャートである。
実施の形態１におけるパケット交換機９００の動作について、図７、図８に基づいて説明する。
【００６０】
図７において、「ポートクロック」は、ポート１００Ａ〜Ｈの動作クロックのクロック信号を示す。
「リング回路クロック」は、リング回路ブロック２００Ａ〜Ｈの動作クロックのクロック信号を示す。
「カウンタ値」は、カウンタ３００によってカウントされたカウンタ値を示す。
「受信データＡ」は、ポート１００Ａの受信部１１０からリング回路ブロック２００Ａのセレクタ２１０へ出力されるパケットの部分データを示す。
「受信データＦ」は、ポート１００Ｆの受信部１１０からリング回路ブロック２００Ｆのセレクタ２１０へ出力されるパケットの部分データを示す。
「中継データｘ（ｘはＡからＨのいずれか）」は、リング回路ブロック２００ｘのフリップフロップ部２２０から次段のポート１００の送信部１２０と次段のリング回路ブロック２００のセレクタ２１０とに出力されるパケットの部分データを示す。
【００６１】
図７に示すように、リング回路クロックのクロック周波数は、ポートクロックのクロック周波数のＮ倍（Ｎはリング回路ブロック２００Ａ〜Ｈの個数）である。
つまり、リング回路クロックのクロック周期（サイクル）は、ポートクロックのクロック周期のＮ分の１である。
【００６２】
図７に示すように、カウンタ３００はリング回路クロックと同期してカウンタ値をカウントする。
カウンタ値「０」は、ポート１００Ａ〜Ｈの受信部１１０が受信データ（例えば「ＤＦ−１」「ＤＨ−１」「ＤＦ−２」「ＤＨ−２」をリング回路ブロック２００Ａ〜Ｈのセレクタ２１０へ出力するタイミングであることを意味する。
【００６３】
図７において、ポート１００Ａの受信部１１０が受信データＡ「ＤＦ−１」をリング回路ブロック２００Ａのセレクタ２１０へ出力すると同時に、ポート１００Ｆの受信部１１０が受信データＦ「ＤＨ−１」をリング回路ブロック２００Ｆのセレクタ２１０へ出力したものとする。
受信データＡ「ＤＦ−１」は宛先がポート１００Ｆであるパケットの１番目の部分データであり、受信データＦ「ＤＨ−１」は宛先がポート１００Ｈであるパケットの１番目の部分データである。
【００６４】
リング回路ブロック２００Ａ〜Ｅのフリップフロップ部２２０は受信データＡ「ＤＦ−１」を中継し、受信データＡ「ＤＦ−１」はカウンタ値「５」のタイミングでリング回路ブロック２００Ｅのフリップフロップ部２２０から出力される（中継データＡ−Ｅ）。
リング回路ブロック２００Ｆ〜Ｇのフリップフロップ部２２０は受信データＦ「ＤＨ−１」を中継し、受信データＦ「ＤＨ−１」はカウンタ値「２」のタイミングでリング回路ブロック２００Ｇのフリップフロップ部２２０から出力される（中継データＦ−Ｇ）。
【００６５】
図８において、「ポートクロック」「リング回路クロック」「カウンタ値」「中継データｘ」は図７と同じ意味である。
「ラッチデータＦ」はポート１００Ｆの送信部１２０の送信制御部１２１が記憶するパケットの部分データを示し、「送信データＦ」はポート１００Ｆの送信部１２０の送信制御部１２１からＰ／Ｓ変換部１２２へ出力されるパケットの部分データ（接続信号）を示す。
「ラッチデータＨ」はポート１００Ｈの送信部１２０の送信制御部１２１が記憶するパケットの部分データを示し、「送信データＨ」はポート１００Ｈの送信部１２０の送信制御部１２１からＰ／Ｓ変換部１２２へ出力されるパケットの部分データ（接続信号）を示す。
【００６６】
図８において、ポート１００Ｈの送信部１２０の送信制御部１２１はリング回路ブロック２００Ｇのフリップフロップ部２２０から出力される中継データＧ「ＤＨ−１」を入力し、入力した中継データＧ「ＤＨ−１」をラッチデータＨとして記憶する。送信制御部１２１はカウンタ値「１」のタイミングでラッチデータＨ「ＤＨ−１」をＰ／Ｓ変換部１２２へ出力する。
ポート１００Ｆの送信部１２０の送信制御部１２１はリング回路ブロック２００Ｅのフリップフロップ部２２０から出力される中継データＥ「ＤＦ−１」を入力し、入力した中継データＥ「ＤＦ−１」をラッチデータＦとして記憶する。送信制御部１２１はカウンタ値「１」のタイミングでラッチデータＦ「ＤＦ−１」をＰ／Ｓ変換部１２２へ出力する。
【００６７】
図７、図８において、２番目の部分データ「ＤＦ−２」「ＤＨ−２」は、ポートクロックの１周期後に１番目の部分データ「ＤＦ−１」「ＤＨ−１」と同様に処理される。
【００６８】
図９、図１０は、実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの動作を表すタイミングチャートである。
実施の形態１におけるリング回路ブロック２００Ａ〜Ｈの動作について、図９、図１０に基づいて説明する。リング回路ブロック２００Ａ〜Ｈの構成については図４、図５を参照のこと。
【００６９】
図９において、「通番」は、リング回路ブロック２００Ａ〜Ｈの動作クロックのクロック周期（サイクル）の通番を示す。
「ポートクロック」は、ポート１００Ａ〜Ｈの動作クロックのクロック信号を示す。
「リング回路クロック」は、リング回路ブロック２００Ａ〜Ｈの動作クロックのクロック信号を示す。
「カウンタ値」は、カウンタ３００によってカウントされたカウンタ値を示す。
「受信データ」は、現段のポート１００ｘ（ｘはＡ〜Ｈのいずれか）の受信部１１０から現段のリング回路ブロック２００ｘのセレクタ２１０へ出力されるパケットの部分データを示す。
「前段データ」は、前段のリング回路ブロック２００のフリップフロップ部２２０から現段のリング回路ブロック２００ｘのセレクタ２１０へ出力されるパケットの部分データを示す。
「選択データ」は、「受信データ」と「前段データ」とのうち、現段のリング回路ブロック２００ｘのセレクタ２１０が選択してフリップフロップ部２２０へ出力するパケットの部分データを示す。
「セレクト信号」は、現段のリング回路ブロック２００ｘの制御回路２３０からセレクタ２１０へ出力されるセレクト信号を示す。
「中継データ」は、現段のリング回路ブロック２００ｘのフリップフロップ部２２０から次段のポート１００の送信部１２０と次段のリング回路ブロック２００のセレクタ２１０とに出力されるパケットの部分データを示す。
「ウエイトフラグ」は、現段のリング回路ブロック２００ｘの制御回路２３０から現段のポート１００ｘの受信部１１０へ出力されるウエイトフラグを示す。
「データイネーブル」は、現段のポート１００ｘの受信部１１０から現段のリング回路ブロック２００ｘの制御回路２３０へ出力されるデータイネーブル信号を示す。
【００７０】
図９において、通番「３」（カウンタ値が「０」）のクロック周期で以下の（１）から（３）の動作があったものとする。
（１）現段のポート１００ｘの受信部１１０が、受信データ「Ｐ０」を現段のリング回路ブロック２００ｘのセレクタ２１０に出力した。（２）前段のリング回路ブロック２００のフリップフロップ部２２０が、前段データ「Ｒ０−０」を現段のリング回路ブロック２００ｘのセレクタ２１０に出力した。（３）現段のリング回路ブロック２００ｘの制御回路２３０がセレクト信号「１」をセレクタ２１０に出力した。
このとき、セレクト信号の信号値が「１」であるため、現段のリング回路ブロック２００ｘのセレクタ２１０は、受信データ「Ｐ０」と前段データ「Ｒ０−０」とのうち受信データ「Ｐ０」を選択データとして選択し、選択データ「Ｐ０」をフリップフロップ部２２０へ出力する。現段のリング回路ブロック２００ｘのフリップフロップ部２２０は、セレクタ２１０から出力された選択データ「Ｐ０」を中継データとして次段のポート１００の送信部１２０と次段のリング回路ブロック２００のセレクタ２１０とに出力する。
【００７１】
通番「１１」（カウンタ値が「０」）のクロック周期で以下の（４）から（６）の動作があったものとする。
（４）現段のポート１００ｘの受信部１１０が、受信データ「Ｐ１」を現段のリング回路ブロック２００ｘのセレクタ２１０に出力した。（５）前段のリング回路ブロック２００のフリップフロップ部２２０が、前段データ「Ｒ１−０」を現段のリング回路ブロック２００ｘのセレクタ２１０に出力した。（６）現段のリング回路ブロック２００ｘの制御回路２３０がセレクト信号「０」をセレクタ２１０に出力した。（７）現段のリング回路ブロック２００ｘの制御回路２３０がウエイトフラグ「１」を現段のポート１００ｘの受信部１１０に出力した。
このとき、セレクト信号の信号値が「０」であるため、現段のリング回路ブロック２００ｘのセレクタ２１０は、受信データ「Ｐ１」と前段データ「Ｒ１−０」とのうち前段データ「Ｒ１−０」を選択データとして選択し、選択データ「Ｒ１−０」をフリップフロップ部２２０へ出力する。現段のリング回路ブロック２００ｘのフリップフロップ部２２０は、セレクタ２１０から出力された選択データ「Ｒ１−０」を中継データとして次段のポート１００の送信部１２０と次段のリング回路ブロック２００のセレクタ２１０とに出力する。
また、ウエイトフラグ「１」が出力されたため、現段のポート１００ｘの受信部１１０は、受信データ「Ｐ１」をポートクロックの次のクロック周期でも出力する。
【００７２】
現段のポート１００ｘの受信部１１０は、受信データ「Ｐ０」「Ｐ１」を受信している間、データイネーブル「１」を現段のリング回路ブロック２００ｘの制御回路２３０へ出力する。
【００７３】
図１０において、「通番」「ポートクロック」「リング回路クロック」「カウンタ値」「セレクト信号」「ウエイトフラグ」「データイネーブル」は、図９と同じ意味である。
「前段データフラグ」は、前段のリング回路ブロック２００の制御回路２３０から現段のリング回路ブロック２００ｘの制御回路２３０に入力されるデータフラグを示す。
「フラグセット信号」は、現段のリング回路ブロック２００ｘの制御回路２３０内で発生するフラグセット信号を示す。
「後段データフラグ」は、現段のリング回路ブロック２００ｘの制御回路２３０から後段のリング回路ブロック２００の制御回路２３０へ出力されるデータフラグを示す。
前段データフラグおよび後段データフラグの網掛けは、フラグ値が「０」と「１」とのどちらでもあっても構わないことを意味している。
【００７４】
図１０において、通番「３」のクロック周期では、カウンタ値が「０」であり、前段データフラグが「０」である。この場合、現段のリング回路ブロック２００ｘの制御回路２３０は、セレクト信号「１」をセレクタ２１０に出力する。
【００７５】
通番「１１」のクロック周期では、カウンタ値が「０」であり、前段データフラグが「１」である。この場合、現段のリング回路ブロック２００ｘの制御回路２３０は、ウエイトフラグ「１」を現段のポート１００ｘの受信部１１０に出力する。
【００７６】
通番「３」「１１」のクロック周期では、カウンタ値が「０」であり、データイネーブルが「１」である。この場合、フラグセット信号の信号値は「１」になる。そして、現段のリング回路ブロック２００ｘの制御回路２３０は、後段データフラグ「１」を後段のリング回路ブロック２００の制御回路２３０に出力する。
【００７７】
図１１は、実施の形態１におけるリング回路ブロック２００Ｆとポート１００Ｆの送信部１２０との動作を表すタイミングチャートである。
実施の形態１におけるリング回路ブロック２００Ｆとポート１００Ｆの送信部１２０との動作について、図１１に基づいて説明する。
リング回路ブロック２００Ｆの構成については図４、図５を参照のこと。ポート１００Ｆの送信部１２０の構成については図６を参照のこと。
リング回路ブロック２００Ａ〜Ｅ、Ｇ、Ｈはリング回路ブロック２００Ｆと同様に動作し、ポート１００Ａ〜Ｅ、Ｇ、Ｈの送信部１２０はポート１００Ｆの送信部１２０と同様に動作する。
【００７８】
図１１において、「通番」は、リング回路ブロック２００Ｆの動作クロックのクロック周期（サイクル）の通番を示す。
「ポートクロック」は、ポート１００Ｆの動作クロックのクロック信号を示す。
「リング回路クロック」は、リング回路ブロック２００Ｆの動作クロックのクロック信号を示す。
「カウンタ値」は、カウンタ３００によってカウントされたカウンタ値を示す。
「前段データフラグ」は、前段のリング回路ブロック２００Ｅの制御回路２３０からリング回路ブロック２００Ｆの制御回路２３０に入力されるデータフラグを示す。
「前段データ」は、前段のリング回路ブロック２００Ｅのフリップフロップ部２２０から、ポート１００Ｆの送信部１２０とリング回路ブロック２００Ｆのセレクタ２１０とに出力されるパケットの部分データを示す。
「前段ポート番号」は、前段データの宛先ポート番号を示す。
「フラグクリア信号」は、ポート１００Ｆの送信部１２０からリング回路ブロック２００Ｆの制御回路２３０へ出力されるフラグクリア信号を示す。
「後段データ」は、リング回路ブロック２００Ｆのフリップフロップ部２２０から、後段のポート１００Ｇの送信部１２０と後段のリング回路ブロック２００Ｇのセレクタ２１０とに出力されるパケットの部分データを示す。
「後段ポート番号」は、後段データの宛先ポート番号を示す。
「後段データフラグ」は、リング回路ブロック２００Ｆの制御回路２３０から後段のリング回路ブロック２００Ｇの制御回路２３０へ出力されるデータフラグを示す。
前段データ、前段ポート番号、後段データ、後段ポート番号の網掛けは、データが無い又はデータが無効であることを意味する。
【００７９】
図１１において、ポート１００Ｆの宛先ポート番号が「５」であるものとする。
【００８０】
例えば、通番「１」「３」「６」のクロック周期において、前段データ「Ｒ０−２」「Ｒ０−０」「Ｒ１−５」の宛先はポート１００Ｆ以外のポート１００である（前段ポート番号≠「５」）。
この場合、ポート１００Ｆの送信部１２０またはリング回路ブロック２００Ｆは、以下のように動作する。
ポート１００Ｆの送信部１２０は、前段データ「Ｒ０−２」「Ｒ０−０」「Ｒ１−５」を入力しても入力した前段データを送信しない。
リング回路ブロック２００Ｆの制御回路２３０は、データフラグ「１」を後段のリング回路ブロック２００Ｇの制御回路２３０へ出力する。
リング回路ブロック２００Ｆのフリップフロップ部２２０は、前段データ「Ｒ０−２」「Ｒ０−０」「Ｒ１−５」を後段データとして後段のポート１００Ｇの送信部１２０と後段のリング回路ブロック２００Ｇのセレクタ２１０とに出力する。
【００８１】
通番「７」のクロック周期において、前段データ「Ｒ１−４」の宛先はポート１００Ｆである（前段ポート番号＝「５」）。
この場合、ポート１００Ｆの送信部１２０またはリング回路ブロック２００Ｆは、以下のように動作する。
ポート１００Ｆの送信部１２０は前段データ「Ｒ１−４」を入力し、入力した前段データ「Ｒ１−４」を送信する。そして、ポート１００Ｆの送信部１２０は、リング回路ブロック２００Ｆの制御回路２３０にフラグクリア信号「１」を出力する。
リング回路ブロック２００Ｆの制御回路２３０は、ポート１００Ｆの送信部１２０からフラグクリア信号「１」が出力されたため、後段データフラグを「１」から「０」にリセットし、後段データフラグ「０」を後段のリング回路ブロック２００Ｇの制御回路２３０へ出力する。
リング回路ブロック２００Ｆのフリップフロップ部２２０は、前段データ「Ｒ１−４」を後段データとして後段のポート１００Ｇの送信部１２０と後段のリング回路ブロック２００Ｇのセレクタ２１０とに出力する。但し、後段データフラグが「０」であるため、後段データ「Ｒ１−４」は無効なデータとして扱われる。つまり、後段データ「Ｒ１−４」は伝送路へ送信されない。
【００８２】
通番「９」のクロック周期において、前段データ「Ｒ１−２」の宛先はポート１００Ｆである（前段ポート番号＝「５」）。また、通番「４」から通番「１１」までがポートクロックの一つのクロック周期である。
この場合、ポート１００Ｆの送信部１２０またはリング回路ブロック２００Ｆは、以下のように動作する。
ポート１００Ｆの送信部１２０は、ポートクロックの同一周期内（通番「７」）で既に前段データ「Ｒ１−４」を入力している。このため、ポート１００Ｆの送信部１２０は新たに前段データ「Ｒ１−２」を入力できず、フラグクリア信号「１」を出力しない。
リング回路ブロック２００Ｆのフリップフロップ部２２０は、前段データ「Ｒ１−２」を後段データとして後段のポート１００Ｇの送信部１２０と後段のリング回路ブロック２００Ｇのセレクタ２１０とに出力する。このとき、後段データフラグが「０」であるため、後段データ「Ｒ１−２」は有効なデータとして扱われる。つまり、後段データ「Ｒ１−２」はその後のいずれかのタイミングで伝送路へ送信される。
【００８３】
通番「１５」のクロック周期において、前段データ「Ｒ２−４」の宛先はポート１００Ｆである（前段ポート番号＝「５」）。また、通番「１２」以降のポートクロックのクロック周期は、通番「４」から通番「１１」までのポートクロックのクロック周期と異なる。
この場合、ポート１００Ｆの送信部１２０またはリング回路ブロック２００Ｆは、以下のように動作する。
ポート１００Ｆの送信部１２０は、前段データ「Ｒ１−４」を入力したときの前回のカウンタ値「４」と今回のカウンタ値「４」とを比較する。このとき、送信部１２０は、前回のカウンタ値「４」と今回のカウンタ値「４」とが一致するため、前段データ「Ｒ２−４」を入力し、入力した前段データ「Ｒ２−４」を送信する。そして、ポート１００Ｆの送信部１２０は、リング回路ブロック２００Ｆの制御回路２３０にフラグクリア信号「１」を出力する。
リング回路ブロック２００Ｆの制御回路２３０は、ポート１００Ｆの送信部１２０からフラグクリア信号「１」が出力されたため、後段データフラグを「１」から「０」にリセットし、後段データフラグ「０」を後段のリング回路ブロック２００Ｇの制御回路２３０へ出力する。
リング回路ブロック２００Ｆのフリップフロップ部２２０は、前段データ「Ｒ２−４」を後段データとして後段のポート１００Ｇの送信部１２０と後段のリング回路ブロック２００Ｇのセレクタ２１０とに出力する。但し、後段データフラグが「０」であるため、後段データ「Ｒ２−４」は無効なデータとして扱われる。つまり、後段データ「Ｒ２−４」は伝送路へ送信されない。
【００８４】
パケット交換機９００は、各ポートからリング回路にデータを入力するタイミングを同期させる。パケット交換機９００は、送信ポート（例えば、送信部１２０）に自宛てのパケットが到着したら、そのパケットの送信が完了するまで、他ポートからリング回路に入力したデータをリング内に巡回させる。これにより、パケット交換機９００はポートの優先制御を行うことができる。
【００８５】
実施の形態１において、パケット交換機９００のポート１００Ａ〜Ｈは、以下の理由（１）（２）により、上流側で近いポート１００が受信したパケットを上流側で遠いポート１００（下流側で近いポート１００）が受信したパケットよりも優先して送信する。
つまり、ポート１００はｎ段前のポート１００が受信したパケットをｎ＋１段前のポート１００が受信したパケットよりも優先して送信する。
例えば、ポート１００Ａは、１段前のポート１００Ｈが受信したパケットを２段前のポート１００Ｇが受信したパケットよりも優先して送信する。このような優先制御を「絶対優先制御」という。
（１）複数のポート１００が同じポート１００を宛先とするパケットを同じタイミングで受信した場合、上流側の近いポート１００によって受信されたパケットの部分データが、上流側の遠いポート１００によって受信されたパケットの部分データよりも先に、宛先のポート１００に到達する。（２）宛先のポート１００は一つのパケットを構成する全ての部分データを送信し終わるまで、他のパケットの部分データを送信しない。
【００８６】
図１２は、実施の形態１におけるパケット交換機９００のハードウェア資源の一例を示す図である。
図１２において、パケット交換機９００（コンピュータの一例）は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、バッファ９０９、通信ボード９０５などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ＲＯＭ９０３、ＲＡＭ９０４、バッファ９０９は記憶装置の一例である。
【００８７】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
通信ボード９０５は、ポート１００Ａ〜Ｈやリング回路ブロック２００Ａ〜Ｈとして機能する。
【００８８】
ＲＯＭ９０３またはＲＡＭ９０４には、ＯＳ（オペレーティングシステム）、プログラム群、ファイル群が記憶されている。
【００８９】
プログラム群には、パケット交換機９００の機能（ポート１００、リング回路ブロック２００、「〜部」など）を実行するプログラムが含まれる。プログラムは、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、パケット交換機９００を機能させるものであり、またパケット交換の手順や方法をパケット交換機９００に実行させるものである。
【００９０】
ファイル群には、パケット交換機９００で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００９１】
実施の形態において構成図およびタイミングチャートに含まれている矢印は主としてデータや信号の入出力を示す。
構成図やタイミングチャートなどに基づいて説明するパケット交換機９００の処理はＣＰＵ９０１や記憶装置などのハードウェアを用いて実行される。
【００９２】
実施の形態においてポート１００、リング回路ブロック２００または「〜部」として説明するものはハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００９３】
実施の形態１において、リング回路クロックのクロック周波数がポートクロックのクロック周波数のＮ倍以上（Ｎはリング回路ブロック２００の個数）、つまり、リング回路クロックのクロック周期がポートクロックのＮ分の１以下であっても構わない。
また、リング回路クロックのクロック周波数がポートクロックのクロック周波数の２倍からＮ−１倍、つまり、リング回路クロックのクロック周期がポートクロックのクロック周期の２分の１からＮ分の１であっても構わない。
但し、これらの場合、カウンタ３００のカウンタ値とポート１００Ａ〜Ｈのポート番号との対応関係がずれるため、カウンタ３００のカウンタ値とポート１００Ａ〜Ｈのポート番号との対応関係を記憶管理する必要がある。
【００９４】
実施の形態１において、パケット交換機９００は、一つの宛先パケット番号で複数または全てのポート１００を識別し、同じパケットを複数または全てのポート１００から送信しても構わない。
【００９５】
実施の形態１において、例えば、以下のようなパケット交換機９００について説明した。
パケット交換機９００は、データを送受信する複数のポート部（例えば、ポート１００Ａ〜Ｈ）と、データを周回させる周回方向が決められたリング状の中継路を構成する複数のデータ中継部（例えば、リング回路ブロック２００Ａ〜Ｈ）とを備える。
複数のポート部それぞれのポート部は、複数のデータ中継部のうちいずれかのデータ中継部に対応付けられたポート受信部（例えば、受信部１１０）とポート送信部（例えば、送信部１２０）とを備える。
複数のポート部それぞれのポート受信部は、伝送路から通信データ（例えば、パケットの部分データ）を受信し、受信した通信データを複数のポート部それぞれのポート送信部のうちいずれかのポート送信部を宛先とする通信データとして所定のポート周期（例えば、ポートクロックのクロック周期）で出力する。
通信データを出力したポート受信部に対応付けられたデータ中継部は、通信データを入力し、通信データを所定のポート周期より短い所定の中継周期（例えば、リング回路クロックのクロック周期）で周回方向の下流側のデータ中継部に中継する。
通信データが中継されたデータ中継部は、通信データを所定の中継周期で周回方向の下流側のデータ中継部に中継する。
通信データの宛先のポート送信部に対応付けられたデータ中継部は、通信データを宛先のポート送信部に出力する。
通信データの宛先のポート送信部は、通信データを入力し、通信データを受信した伝送路とは異なる伝送路に送信する。
【００９６】
また例えば、以下のようなパケット交換機９００について説明した。
パケット交換機９００は、ノード数分のフリップフロップ（例えば、フリップフロップ部２２０）をリング状に配置し、各フリップフロップ間に２−ｔｏ−１セレクタ（例えば、セレクタ２１０）を配置する。２−ｔｏ−１セレクタは、リング回路を回るデータと、ポートを通してノードから受信したパケットデータとの何れかを選択し、ポートは各フリップフロップの出力を送信する。リング回路内のフリップフロップのクロック（例えば、リング回路クロック）はポートのクロック（例えば、ポートクロック）のＮ倍以上の周波数であり、ポートとフリップフロップは時分割で動作する。
【００９７】
リング回路内のフリップフロップの動作周波数がポートの動作周波数のＮ倍以上であるため、パケット交換機９００は、リング回路に入力したデータをポートのクロックの１サイクルで転送することができる。つまり、パケット交換機９００は、宛先ポートが重ならない限り全ポートのデータを並列で転送することができる。これにより、パケット交換機９００は、転送効率がクロスバー型スイッチと同等であって回路規模が小さい、という効果を奏することができる。
パケット交換機９００は、各ポートからリング回路にデータを入力するタイミングが同期している。また、自宛てのパケットを受け取った送信ポートは、パケットの送信が完了するまで他のポートからリング回路に入力したデータを無視する。これにより、パケット交換機９００は、単純な回路で固定優先制御を行うことができる。
【００９８】
実施の形態２．
実施の形態１と異なる優先制御を行うパケット交換機について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００９９】
パケット交換機９００の構成、ポート１００Ａ〜Ｈの構成、リング回路ブロック２００Ａ〜Ｈの構成は、実施の形態１と同様である。
但し、ポート１００Ａ〜Ｈの送信部１２０の動作は、実施の形態１で説明した動作と以下のように異なる。
【０１００】
実施の形態２におけるポート１００Ａ〜Ｈの送信部１２０の動作について、図６に基づいて説明する。
図６において、比較器１２３は、フリップフロップ１２６からパケットフラグ「０」が出力された場合、以下のように動作する。
【０１０１】
パケットフラグ「０」が出力されてからポートクロックの１周期が経過する前にリング前段からの宛先ポート番号と固定ポート番号とが一致した場合、比較器１２３は、信号値「１」の比較信号を出力する代わりに信号値「０」の比較信号を出力する。さらに、比較器１２３は、カウンタ３００から出力されるカウンタ値を記憶する。以下、比較器１２３に記憶したカウンタ値を「保留カウンタ値」という。
パケットフラグ「０」が出力されてからポートクロックの１周期が経過した後にリング前段からの宛先ポート番号と固定ポート番号とが一致し、保留カウンタ値とカウンタ３００から出力されるカウンタ値とが一致した場合、比較器１２３は、信号値「１」の比較信号を出力する。以後の比較器１２３の動作は実施の形態１と同じである。
【０１０２】
比較器１２３の上記の動作により、パケット交換機９００は、送信し終わったパケットの受信元のポート１００が新たに受信したパケットよりも、他のポート１００が受信したパケットを優先して送信することができる。このような優先制御を「ラウンドロビン制御」という。
【０１０３】
例えば、ポート１００Ｈの受信部１１０が、ポート１００Ａを宛先とする第１のパケットＨを受信し、第１のパケットＨを受信した後にポート１００Ａを宛先とする第２のパケットＨを受信するものとする。また、ポート１００Ｇの受信部１１０がポート１００Ａを宛先とする第１のパケットＧを受信したものとする。
さらに、ポート１００Ａの送信部１２０は、ポート１００Ａを宛先とする３つのパケットのうち、ポート１００Ｈの受信部１１０によって受信された第１のパケットＨを最初に送信したものとする。
この場合、ポート１００Ａの送信部１２０は、ポート１００Ｇの受信部１１０によって受信された第１のパケットＧを、ポート１００Ｈによって受信された第２のパケットＨより優先して送信する。つまり、ポート１００Ａの送信部１２０は、第１のパケットＨ、第１のパケットＧ、第２のパケットＨの順番に送信を行う。
【０１０４】
実施の形態２において、例えば、以下のようなパケット交換機９００について説明した。
ポート１００は、直前に送信したパケットの送信元となるポートの、前段のポートから順番にパケットデータを受け付ける。
パケット交換機９００は、入力ポートを特定する為の比較器１２３とＮ進カウンタ（カウンタ３００）を利用してラウンドロビン制御を実現している。これにより、回路規模が大きくならず、特定のポートが固定的に優先されず、全ポートに対し公平に伝送帯域を割り当てることができる。
【符号の説明】
【０１０５】
１００  ポート、１１０  受信部、１１１  Ｓ／Ｐ変換部、１１２  データ解析部、１１３  受信バッファ、１１４  受信処理記憶部、１１９  変換テーブル、１２０  送信部、１２１  送信制御部、１２２  Ｐ／Ｓ変換部、１２３  比較器、１２４，１２５  ＡＮＤ回路、１２６，１２７  フリップフロップ、２００  リング回路ブロック、２１０  セレクタ、２２０  フリップフロップ部、２２１〜２２３  フリップフロップ、２３０  制御回路、２３１  デコーダ、２３２〜２３４  ＡＮＤ回路、２３５  フリップフロップ、３００  カウンタ、９００  パケット交換機、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９０９  バッファ。
【図１】
0005826085.tif 000002
【図２】
0005826085.tif 000003
【図３】
0005826085.tif 000004
【図４】
0005826085.tif 000005
【図５】
0005826085.tif 000006
【図６】
0005826085.tif 000007
【図７】
0005826085.tif 000008
【図８】
0005826085.tif 000009
【図９】
0005826085.tif 000010
【図１０】
0005826085.tif 000011
【図１１】
0005826085.tif 000012
【図１２】
0005826085.tif 000013