(57)【要約】  データブロック読出制御装置は、振分単位に従って複数の受信バッファに振り分けて格納される複数のデータブロックのそれぞれに対応する振分単位を示す複数の識別子が当該複数のデータブロックの到来順で並べられた識別子列を格納する順序バッファと、識別子列における各振分単位の識別子の先頭位置を検出する検出部と、少なくとも、各振分単位の識別子の先頭位置及びデータブロック読出ルールとに基づいて、複数の受信バッファの一つから読み出すべきパケットを決定する決定部と、決定されたパケットを複数の受信バッファの一つから読み出す読出部とを含む。識別子は複数の受信バッファに格納されるデータブロックの振分単位の全てを表すために要求される最小数のビットで表現される。
2011111210.tif 000002
【特許請求の範囲】
【請求項１】
振分単位毎に用意された複数の受信バッファに格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を格納する順序バッファと、
前記識別子列における各振分単位の識別子の先頭位置を検出する検出部と、
少なくとも、前記各振分単位の識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定する決定部と、
前記決定部で決定されたデータブロックを前記複数の受信バッファの一つから読み出す読出部とを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックに対応する振分単位の全てを表すために要求される最小数のビットで表現される
データブロック読出制御装置。
【請求項２】
前記順序バッファは、前記識別子列を形成する複数の振分単位の識別子のそれぞれが格納される、少なくとも前記複数の受信バッファで格納可能なデータブロックの総数と等しい数の複数の記憶領域を有し、
前記検出部は、前記複数の記憶領域の保持内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項１に記載のデータブロック読出装置。
【請求項３】
前記複数の受信バッファに保持される複数のデータブロックに対応する振分単位の識別子を前記複数の記憶領域に先頭詰めで格納する制御を行う書込／読出制御部をさらに含み、
前記検出部は、前記複数の記憶領域の保持内容を前記順序バッファの先頭側から検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項４】
前記振分単位の数が２のｎ乗（n=1,2,3,・・・）の場合には、前記最小数ビットが採り得る値の全てに前記振分単位の全てが割り当てられ、
前記振分単位の数が２のｎ乗より１少ない場合には、前記最小数ビットが採り得る値の一つが振分単位の未割り当てを示す識別子として用いられ、
前記書込／読出制御部は、前記複数の格納領域に前記振分単位の識別子が先頭詰めで格納されるとともに、前記振分単位の識別子が格納されていない各格納領域が前記振分単位の未割り当てを示す識別子で満たされるように、前記複数の記憶領域に対する前記振分単位の識別子の格納制御を行う
請求項３に記載のデータブロック読出制御装置。
【請求項５】
前記複数の受信バッファに対する前記データブロックの最大格納数が夫々異なる場合に、前記検出部は、先頭の記憶領域から連続する、データブロックの最大格納数が最も小さい前記複数の受信バッファの一つの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値に等しい数の記憶領域の記憶内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項６】
前記複数の受信バッファにおける前記データブロックの最大格納数が等しい場合に、前記検出部は、先頭の記憶領域から連続する、前記複数の受信バッファのいずれか一つのデータブロックの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値に等しい数の記憶領域の記憶内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項７】
振分単位毎に用意された複数の受信バッファに格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を順序バッファに格納し、
前記識別子列における各振分単位の識別子の先頭位置を検出し、
少なくとも、前記各振分単位の識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定し、
前記決定されたパケットを前記複数の受信バッファの一つから読み出すことを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックの種別の全てを表すために要求される最小数のビットで表現される
データブロック読出制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データブロック読出制御装置に関する。
【背景技術】
【０００２】
従来、到来した複数の種別のパケットを種別毎に複数の受信バッファに格納し、予め定められた優先制御内容に従って、パケットを複数の受信バッファから読み出す技術がある。【０００３】
例えば、パケットベースのトランザクションでは、トランザクションのストールによってデッドロックが生じないように、各パケットに付与された優先度を元にしたパケットフォワードの順序付けルールが適用される。このルールに従って決定された順序でパケットがフォワードされる場合には、例えば、パケットのタイプ毎に設けられた複数の受信バッファと、パケット到来順序を保持／参照する機構とが用意される。
パケット到来順序は、パケット到来順でパケットのフォワードを行うために用意される。一方、複数の受信バッファは、優先度に従ったパケット間追い越しフォワードのために用意される。パケット間追い越しフォワードとは、優先度に従って、或るタイプのパケットを、当該パケットより先に到来した他のタイプのパケットよりも先にフォワードすることをいう。【０００４】
図９は、従来技術の一つであるパケット読出制御装置を示す。図９に示すパケット読出制御装置は、パケットが到来した順序情報を保持及び参照するために、パケット毎に到来順を示す順序情報としてのタグを生成し、記録していた。【０００５】
具体的には、図９に示すパケット読出制御装置では、受信パケットが到来すると、受信パケット内のタイプ識別子に従って、パケットのタイプ（ここでは、“Ａ”，“Ｂ”及び“Ｃ”）毎に用意された複数の受信バッファ（FIFO: First In First Out）の一つに受信パケットが格納される。【０００６】
一方、受信パケットが到来すると、受信トリガが発生するとともに、受信パケット中のタイプ識別子がタグ生成回路に入力される。タグ生成回路では、受信トリガを契機に、受信順序タグ生成カウンタが、タイプ識別子に対応する受信順序タグを生成する。受信順序タグは、タイプ識別子に従って、パケットタイプ毎に用意された複数のタグバッファ（ＦＩＦＯ）の一つに格納される。【０００７】
調停回路は、各タグバッファの先頭に格納されているタグ値を読み出し、各タグ値が示す受信順序を参照し、各タグ値に対応するパケット、すなわち各受信バッファの先頭に格納されているパケットの受信順（到来順）を確認する。一方、調停回路は、予め定められた優先制御内容、すなわちパケットタイプ間における順序付けルール（読み出しルール）に従って、読み出しを行うパケットを決定し、読出指示が受信バッファに与えられる。これによって、パケットが受信バッファから読み出され、フォワードされる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００５−５１８５７８号公報
【特許文献２】特開平２−１１７２４１号公報
【特許文献３】特開平５−２２７２１０号公報
【特許文献４】特開平１１−２９８５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術には以下の問題があった。すなわち、パケット毎に順序を示すタグを生成し、タグバッファに記録すると、タグバッファ自体の回路量が大きくなる。
例えば、３つの受信バッファがあり、各受信バッファは１６個のパケットを格納できると仮定する。一方、各受信バッファが最大格納数である１６個のパケットを格納している場合において、パケット毎に生成される各タグ値が各パケットの到来順序を示すには、タグ値が各受信バッファの最大格納数の和、すなわち４８(１６×３＝４８)通りの値を表現することが要求される。この場合、４８通りのタグ値を表現する最小のビット数は６ビットとなる。【００１０】
従って、タグバッファに要求される最小容量は、２８８ビットとなる（６(タグ値)×16(パケット最大格納数)×３(受信バッファ数)＝２８８[bit]）。【００１１】
本発明の態様の一つの目的は、データブロックの到来順序情報の記録に要求される容量を削減可能なデータブロック読出制御装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明の態様の一つは、データブロック読出制御装置である。パケット読出制御装置は、振分単位毎に用意された複数の受信バッファに振り分けて格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を格納する順序バッファと、
前記識別子列における各振分単位の識別子の先頭位置を検出する検出部と、
少なくとも、前記各識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定する決定部と、
前記決定部で決定されたデータブロックを前記複数の受信バッファの一つから読み出す読出部とを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックに対応する振分単位の全てを表すために要求される最小数のビットで表現される。
【発明の効果】
【００１３】
本発明の態様の一つによれば、データブロックの到来順序情報の記録に要求される容量を削減することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１におけるデータブロック読出制御装置の構成例を示す図である。
【図２】図１に示したオーダーバッファの詳細構成例を示す図である。
【図３】図１に示した先頭位置検出回路の詳細構成例を示す図である。
【図４】各識別子の先頭位置検出動作の例を示す。
【図５】オーダーバッファ（ＦＦ群）のクリア動作の例を示す。
【図６】実施形態２におけるデータブロック読出制御装置の構成例を示す図である。
【図７】実施形態３におけるデータブロック読出制御装置の構成例を示す図である。
【図８】実施形態３における各パケットタイプの先頭位置の検査範囲を決定する方法の説明図である。
【図９】従来技術の説明図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。以下の実施形態における構成は例示であり、本発明は実施の形態の構成に限定されない。
【００１６】
＜実施形態１＞
図１は、実施形態１におけるデータブロック読出装置の構成例を示す図である。実施形態１では、データブロック読出装置として、データブロックとしてのパケットの振分単位間での送出順序を制御するためのパケット読出装置について説明する。実施形態１の例では、パケット読出装置１は、振分単位である複数のパケットタイプとして、タイプ“Ｐ”，タイプ“Ｎ”及びタイプ“Ｃ”の三つのパケットタイプ（パケット種別）のパケットの送出順序を制御する。
【００１７】
一つ目のパケットタイプであるタイプ“Ｐ”は、完了通知の返信が要求されない処理のリクエストを含む“posted”である。二つ目のパケットタイプであるタイプ“Ｎ”は、完了通知の返信が要求される処理のリクエストを含む“non-posetd”である。三つ目のパケットタイプであるタイプ“Ｃ”は、処理の完了通知を含む“completion”である。以下、パケットタイプを区別することなく説明する場合には、単に「パケット」と表記し、パケットタイプを特定する必要がある場合には、タイプ“Ｐ”，すなわち“posted”のパケットを“Ｐパケット”と表記し、タイプ“Ｎ”，“non-posetd”のパケットを“Ｎパケット”と表記し、タイプ“Ｃ”，すなわち“completion”のパケットを“Ｃパケット”と表記する。
【００１８】
パケット読出装置１には、タイプ“Ｐ”，タイプ“Ｎ”及びタイプ“Ｃ”の各パケットを転送するためのチャネル（伝送路）が設けられている。チャネルを流れる各タイプのパケットに対し、パケット間でのパケットフォワードの順序付けルール（読出ルール）が適用される。実施形態１の例では、Ｐ、Ｃ、Ｎの順でフォワード（転送）の優先順位が予め決定されており、優先順位に従ってパケットが転送される。
【００１９】
図１において、パケット読出装置１は、受信バッファ群１０と、パケット読出制御装置２０とを備える。
【００２０】
受信バッファ群１０は、振り分け単位であるパケットタイプ毎に用意された複数の受信バッファを備える。ここでは、受信バッファ群１０は、パケットタイプ“Ｐ”，“Ｎ”及び“Ｃ”に対応する受信バッファ１１，１２，１３を備えている。各受信バッファ１１，１２，１３は、ＦＩＦＯであり、それぞれ、最大１６個の固定長又は可変長のパケットを格納することができる。
【００２１】
パケット読出制御装置２０は、パケット書込制御部としての受信バッファ書込制御回路２１と、順序バッファとしてのオーダーバッファ２２と、検出部としての先頭位置検出回路２３と、決定部としての調停回路２４と、パケット読出制御部としての受信バッファ読出制御回路２５とを備えている。
【００２２】
図１において、パケット読出装置１の受信部２６では、１つずつ到来したパケットが受信される。受信部２６は、受信バッファ群１０，受信バッファ書込制御回路２１，オーダーバッファ２２に接続されている。
【００２３】
受信バッファ群１０には、受信部２６で受信されたパケットが入力され、パケットは、振分単位であるパケットタイプに従い、受信バッファ１１，１２，１３のいずれかに振り分けて格納される。受信バッファ１１には、Ｐパケットが格納される。受信バッファ１２には、Ｎパケットが格納される。受信バッファ１３には、Ｃパケットが格納される。
【００２４】
また、受信バッファ群１０の受信バッファ１１〜１３の蓄積量を監視する監視部１６が設けられている。監視部１６には、受信バッファ書込制御回路から出力されるパケットの書込命令と、受信バッファ読出制御回路２５から出力される受信バッファ読出命令とが入力される。監視部１６は、例えば、受信バッファ群１０をなす複数の受信バッファ（受信バッファ１１〜１３）毎に用意されたカウンタ（初期値“０”）を有している。受信バッファ書込制御回路２１からの書込命令の入力時には、監視部１６は、当該書込命令でパケットの書込が指定された受信バッファを特定し、当該受信バッファに対応するカウンタの値に１を加算する。一方、受信バッファ読出制御回路２１からの受信バッファ読出命令の入力時には、当該受信バッファ読出命令でパケットの読出が指定された受信バッファを特定し、当該受信バッファに対応するカウンタの値から１を減じる。受信バッファ書込制御回路２１及びオーダーバッファ２２には、受信部２６が有する図示しないエンコーダでエンコードされる、パケット内のタイプ識別子が入力される。
【００２５】
タイプ識別子はパケットタイプを示す情報であり、複数の受信バッファ１１〜１３に格納されるパケットの振分単位、すなわち、受信バッファ１１〜１３に格納されるパケットの全てのパケットタイプを表すために要求されるビット数で表現されている。本実施形態では、パケットタイプは、“Ｐ”，“Ｎ”及び“Ｃ”の３種類であるため、タイプ識別子は２ビットで表現される。具体的には、Ｐパケットにはビット値“０１”が割り当てられ、Ｎパケットにはビット値“１０”が割り当てられ、Ｃパケットには“１１”が割り当てられる。ビット値“００”は、パケットタイプが未割り当てである“non”として扱われる。
【００２６】
また、受信バッファ書込制御回路２１及びオーダーバッファ２２には、受信部２６でのパケット受信“有効”を示すパケット受信valid信号（Pkt＿Rcv＿Val）が入力される。パケット受信valid信号は、受信トリガとして受信バッファ書込制御回路２１及びオーダーバッファ２２で用いられる。
【００２７】
受信バッファ書込制御回路２１は、受信されたパケットのタイプ識別子が入力され、且つパケット受信valid信号を受け取ると、パケット受信valid信号をトリガとして、タイプ識別子の内容を参照し、タイプ識別子に対応する受信バッファへのパケットの書込命令を受信バッファ群１０に与える。
【００２８】
受信バッファ群１０では、受信バッファ書込制御回路２１からのパケットの書込命令に応じて、受信部２６から入力されたパケットを、タイプ識別子に対応する受信バッファに格納する。このようにして、受信部２６で受信されたパケットが、タイプ識別子に応じて受信バッファ１１〜１３のいずれかに振り分けられる。
【００２９】
オーダーバッファ２２は、複数ステージ（複数段）を有するシフタ型バッファである。オーダーバッファ２２は、直列接続された複数のステージを構成する記憶領域としてのフリップフロップ（ＦＦ）を含むＦＦ群２２１と、カウンタ（Count）２２２と、書込／読出制御部(Write/Read制御部)２２３とを備える。
【００３０】
ＦＦ群２２１は、受信バッファ群１０のパケット最大格納数に等しい数のＦＦを含む。この例では、受信バッファ群１０のパケットの最大格納数４８（３タイプ×１６パケット）に等しい４８個のフリップフロップＦＦ＿０１〜ＦＦ＿４８が直列に接続されている。図１では、ＦＦ＿４８が先頭で、ＦＦ＿０１が末尾となっている。
【００３１】
具体的には、各ＦＦの入力側には、セレクタ２２３５が接続されており、セレクタ２２３５の入力端子の一つには、受信部２６からのタイプ識別子が流れる信号線Ｌ２が接続される。また、セレクタ２２３５の入力端子の他の一つは、次ステージのＦＦの出力端子と接続される。但し、最後尾のステージに位置するＦＦ＿０１の入力側に設けられたセレクタ２２３５の入力端子の他の一つには、未割り当てを示す“non”が入力されるようになっている。
【００３２】
これによって、各ＦＦの入力端子には、セレクタ２２３５によって、信号線Ｌ２からのタイプ識別子（“Ｐ”，“Ｎ”，“Ｃ”）と、次ステージのＦＦの保持内容（“Ｐ”，“Ｎ”，“Ｃ”又は“non”。但し、ＦＦ＿０１は“non”のみ）との一方が入力される。
【００３３】
書込／読出制御部２２３は、各セレクタ２２３５の動作を制御することで、ＦＦ群２２１に対し、パケット読出装置１に到来した有効なパケットのタイプ識別子をパケットの到来順（受信順）で格納することができる。また、書込／読出制御部２２３は、セレクタ２２３５の動作制御を通じて、受信バッファ群１０から読み出されたパケットのタイプ識別子をＦＦ群２２１から消去することもできる。よって、ＦＦ群２２１は、受信バッファ群１０に格納されている各パケットのタイプ識別子を到来順（受信順）で保持することができる。また、書込／読出制御部２２３は、受信バッファ群１０に格納されているパケットのタイプ識別子をＦＦ群２２１に前詰めで格納する。書込／読出制御部２２３の詳細構成は後述する。
【００３４】
図２は、図１に示したオーダーバッファ２２の詳細構成例を示す図である。図２において、カウンタ２２２は、ＦＦ群２２１に格納されるタイプ識別子の数、すなわち、受信バッファ群で保持されているパケットの数を示すカウンタ値（初期値“００”）を保持する。また、カウンタ値は、ＦＦ群２２１に対するタイプ識別子の書込位置を指定するために用いられる。
【００３５】
カウンタ２２２には、有効なパケットが受信部２６で受信されたことを示すパケット受信valid信号（Pkt＿Rcv＿Val）と、受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）とが入力される。パケット読出開始信号（Rd＿Start）は、受信バッファ群１０からのパケットの読出開始を指示する信号である。
【００３６】
カウンタ２２２は、パケット受信valid信号（Pkt＿Rcv＿Val）の入力をトリガとして、カウンタ値に１を加算する。これに対し、カウンタ２２２は、パケット読出開始信号（Rd＿Start）の入力をトリガとして、カウント値から１を減じる。従って、カウント値は、ＦＦ群２２１に格納されているタイプ識別子の数、すなわち、受信バッファ群１０で保持されているパケットの数を示す。
【００３７】
書込／読出制御部２２３には、上述したパケット受信valid信号（Pkt＿Rcv＿Val），パケット読出開始信号（Rd＿Start），カウンタ２２２のカウンタ値，及び受信バッファ読出制御回路２５からのクリアライン位置信号（Clear＿LINE）が入力される。クリアライン位置信号は、受信バッファ１０から読み出されるパケットのタイプ識別子を保持するＦＦを指定する値（“０１”〜“４８”）を含んでいる。
【００３８】
パケット受信valid信号は、受信部２６と接続された信号線Ｌ１を流れる。受信部２６からのタイプ識別子（Type＿ID）は、信号線Ｌ２を流れる。受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）は、信号線Ｌ３を流れる。受信バッファ読出制御回路２５からのクリアライン位置（Clear＿LINE）は、信号線Ｌ４を流れる。
【００３９】
書込／読出制御部２２３は、セレクタ２２３１と、デコーダ２２３２と、ＦＦ群２２１のステージ数（ＦＦの数。実施形態１の例では４８）と同数のＡＮＤ回路２２３３と、ＦＦ群２２１のステージ数と同数のＡＮＤ回路２２３４と、減算器２２３６と、シフト制御部２２３７と、ＦＦ群２２１のステージ数と同数のＡＮＤ回路２２３８とを備えている。
【００４０】
パケット受信valid信号が流れる信号線Ｌ１は、各ＡＮＤ回路２２３３の一方の入力端子に接続されている。また、信号線Ｌ１はカウンタ２２２に接続されており、カウンタ２２２は、パケット受信valid信号（Pkt＿Rcv＿Val）の受信を契機として、カウンタ２２２で保持されるカウンタ値に１を加算する。
【００４１】
カウンタ２２２の出力端子は、セレクタ２２３１及び減算器２２３６に接続されている。減算器２２３６は、カウンタ２２２のカウンタ値から１を減じる。減算器２２３６は、セレクタ２２３１に接続されている。
【００４２】
セレクタ２２３１は、カウンタ２２２からのカウンタ値と減算器２２３６によってカウンタ値から１を減じた値（減算値）との一方をデコーダ２２３２に出力する。セレクタ２２３１は、信号線Ｌ３を流れるパケット読出開始信号（Rd＿Start）の入力がない場合には、カウンタ２２２からのカウンタ値を選択してデコーダ２２３３に入力する。これに対し、セレクタ２２３１は、パケット読出開始信号が信号線Ｌ３に入力されると、入力されたパケット読出開始信号を選択条件として、減算器２２３６からの出力をデコーダ２２３２に出力する。セレクタ２２３１の作用については後述する。
【００４３】
なお、信号線Ｌ３は、カウンタ２２２に接続されており、カウンタ２２２は、パケット読出開始信号（Rd＿Start）の受信を契機として、カウンタ２２２が保持するカウンタ値から１を減算する。
【００４４】
デコーダ２２３２は、各ＡＮＤ回路２２３３の他方の入力端子と接続される複数の出力端子を備える。デコーダ２２３２は、セレクタ２２３１から入力されるカウンタ値又はカウンタ値の減算値に対応する出力端子からオン信号を出力し、残りの出力端子からオフ信号を出力する。各ＡＮＤ回路２２３３は、ＦＦ群２２１をなすＦＦ＿４８〜ＦＦ＿０１と対応づけられている。例えば、デコーダにカウンタ値“０”が入力された場合には、ＦＦ＿４８に対応するＡＮＤ回路２２３３＿４８のみにオン信号が与えられ、残りのＡＮＤ回路２２３３にはオフ信号が与えられる。
【００４５】
各ＡＮＤ回路２２３３は、ＡＮＤ回路２２３３自身が有する双方の入力端子への入力がオンとなることを条件にオン信号を出力する。当該オン信号は、ＡＮＤ回路２２３３と対応するＦＦに対するタイプ識別子の書込イネーブル信号（WriteEN＿X(01≦X≦48)）として機能する。書込イネーブル信号は、ＦＦ群２２１をなす各ＦＦの入力側に設けられたセレクタ２２３５に対する、信号線Ｌ２を流れるタイプ識別子（Type＿ID）の選択条件となる。
【００４６】
ＦＦ＿４８〜ＦＦ＿０２の入力側に設けられた各セレクタ２２３５は、信号線を介して次ステージのＦＦに接続されている。一方、ＦＦ＿０１の入力側に設けられたセレクタ２２３５には、未割り当てを示す “non”（“００”）が入力される。
これによって、各セレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子と、次ステージのＦＦの保持内容（但し、ＦＦ＿０１対応のセレクタ２２３５は“non”）との一方を選択し、先頭側のＦＦに出力する。
【００４７】
また、セレクタ２２３５には、その後段に位置するＦＦの出力信号が入力されるようになっている。
【００４８】
各セレクタ２２３５が、次ステージのＦＦの保持内容又は“non”を選択する選択条件は、以下に説明する回路構成によって実現される。すなわち、パケット読出開始信号（Rd＿Start）が流れる信号線Ｌ３は、各ＡＮＤ回路２２３８の一方の入力端子に夫々接続されている。
【００４９】
信号線Ｌ４を流れるクリアライン位置（Clear＿LINE）は、シフト制御部２２３７に入力される。シフト制御部２２３７は、各ＡＮＤ回路２２３８の他方の入力端子に接続されており、クリアライン位置（“０１”〜“４８”）に応じて、各ＡＮＤ回路２２３８に対するオン信号の出力を制御する。複数のＡＮＤ回路２２３８は、ＦＦ群２２１をなすＦＦのステージ数と同数のＡＮＤ回路からなり、各ＦＦに対応づけられている。
【００５０】
実施形態１の例では、シフト制御部２２３７は、クリアライン位置に応じて、当該クリアライン位置のＦＦ及び当該クリアライン位置より後段のＦＦに対応するＡＮＤ回路２２３８にオン信号を入力し、当該クリアラインより前のＦＦに対応するＡＮＤ回路２２３８があれば、当該ＡＮＤ回路２２３８にオフ信号を入力するように動作する。
【００５１】
例えば、ラインクリア位置が“４８”である場合には、シフト制御部２２３７は、ＡＮＤ回路２２３８の全てにオン信号を出力する。ラインクリア位置が“４７”である場合には、シフト制御部２２３７は、ラインクリア位置より前に位置するＦＦ＿４８に対応するＡＮＤ回路２２３８（２２３８＿４８）にオフ信号を入力し、残りのＡＮＤ回路２２３８にはオン信号を入力する。同様の動作が、他のラインクリア位置“４６”〜“０１”についても行われる。ラインクリア位置が最後尾である“０１”の場合には、シフト制御部２２３７は、ＦＦ＿０１に対応するＡＮＤ回路２２３８に対してオン信号を入力し、残りのＡＮＤ回路２２３８にはオフ信号を入力する。
【００５２】
各ＡＮＤ回路２２３８は、パケット読出開始信号（Rd＿Start）が入力され、且つシフト制御部２２３７からオン信号が入力された場合にオン信号を出力する。ＡＮＤ回路２２３８のオン信号は、シフト命令信号（Shift＿X（01≦X≦48））として機能する。
【００５３】
各ＡＮＤ回路２２３８の出力端子は、ＦＦ群２２１をなす各ＦＦに対応づけられた複数のＡＮＤ回路２２３４の一方の入力端子に夫々接続されている。各ＡＮＤ回路２２３４の他方の入力端子には、同一のＦＦに対応するＡＮＤ回路２２３３から出力された書込イネーブル信号（WriteEN＿X）の反転信号が入力される。よって、各ＡＮＤ回路２２３４は、書込イネーブル信号がオフであり、且つシフト命令信号がオンである場合にオン信号を出力する。
【００５４】
ＡＮＤ回路２２３４から出力されるオン信号は、ＡＮＤ回路２２３４と対応するＦＦの入力側に位置するセレクタ２２３５に対する、次ステージのＦＦの保持内容又は“non”の選択条件となる。
【００５５】
よって、各ＦＦ＿４８〜ＦＦ＿０１では、対応するＡＮＤ回路２２３３から書込イネーブル信号が出力される一方で、ＡＮＤ回路２２３４がオフのときには、信号線Ｌ２を流れるタイプ識別子が当該ＦＦに書き込まれる。これに対し、ＦＦに対応するＡＮＤ回路２２３３がオフ（書込イネーブル信号なし）で対応するＡＮＤ回路２２３４がオンのときには、当該ＦＦに対し、次ステージのＦＦの保持内容又は“non”が書き込まれる。
【００５６】
以上説明した書込／読出制御部２２３は、以下のように動作する。オーダーバッファ２２の初期リセット直後は、ＦＦ群２２１の全てのＦＦ＿４８〜ＦＦ＿０１に“non”が保持された初期化状態にされる。また、初期化状態では、カウンタ値は初期値“００”とされる。このとき、デコーダ２２３２からは、カウンタ値“００”に応じてＦＦ＿４８に対応するＡＮＤ回路２２３３＿４８にオン信号が入力され、残りのＡＮＤ回路２２３３にはオフ信号が入力された状態となる。
【００５７】
このような状態において、受信部２６からパケット受信valid信号とタイプ識別子とが出力されたと仮定する。すると、信号線Ｌ１を流れるパケット受信valid信号によって、ＡＮＤ回路２２３３＿４８がオンとなり、書込イネーブル信号（WriteEN＿48）がＡＮＤ回路２２３３＿４８から出力される。この時点で、信号線Ｌ３及びＬ４に対するパケット読出開始信号及びラインクリア位置はオフ（入力なし）であるので、ＦＦ＿４８に対応するＡＮＤ回路２２３４＿４８はオフである。よって、ＦＦ＿４８に対応するセレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子を選択してＦＦ＿４８に入力する。これによって、ＦＦ＿４８がタイプ識別子を保持する。
【００５８】
一方、カウンタ２２２は、パケット受信valid信号の入力に応じて、カウンタ値“００”に１を加算する。よって、カウンタ値は“０１”となり、デコーダ２２３２は、ＦＦ＿４７に対応するＡＮＤ回路２２３３（２２３３＿４７）のみにオン信号を入力し、残りのＡＮＤ回路２２３３にはオフ信号を入力する状態となる。
【００５９】
その後、さらに、受信部２６からのパケット受信valid信号及びタイプ識別子が信号線Ｌ１及び信号線Ｌ２にそれぞれ入力されたと仮定する。すると、パケット受信valid信号によって、ＡＮＤ回路２２３３＿４７がオンとなり、書込イネーブル信号（WriteEN＿47）が出力される。この時点で、信号線Ｌ３及びＬ４に対するパケット読出開始信号及びラインクリア位置はオフ（入力なし）であるので、ＦＦ＿４７に対応するＡＮＤ回路２２３４＿４７はオフである。よって、ＦＦ＿４７に対応するセレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子を選択してＦＦ＿４７に入力する。ＦＦ＿４８及びＦＦ＿４６〜ＦＦ０１は、書込イネーブル信号及びＡＮＤ回路２２３４の出力が共にオフであるので、保持内容を維持し続ける。これによって、ＦＦ＿４８及びＦＦ＿４７がタイプ識別子を保持した状態となる。
【００６０】
一方、カウンタ２２２は、パケット受信valid信号の入力に応じて、カウンタ値“０１”に１を加算する。よって、カウンタ値は“０２”となる。
【００６１】
その後、ＦＦ＿４８に保持されたタイプ識別子を有するパケットの、受信バッファ群１０からのパケット読出開始信号（Rd＿Start）が受信バッファ読出制御回路２５から信号線Ｌ３に入力され、続いて、ＦＦ＿４８の保持内容を消去するためのラインクリア位置“４８”が受信バッファ読出制御回路２５から信号線Ｌ３に入力されたと仮定する。
【００６２】
この場合、パケット読出開始信号及びシフト制御部２２３７の、クリアライン位置“４８”に応じた出力により、全てのＡＮＤ回路２２３８がオンとなり、シフト命令信号（Shift＿X）を出力する。この時点で、各ＡＮＤ回路２２３３からの書込イネーブル信号はオフであるので、全てのＡＮＤ回路２２３４がオンとなる。すると、ＦＦ＿４８〜ＦＦ０２に対応するセレクタ２２３５は、次ステージのＦＦの保持内容を選択して、対応するＦＦに保持させる。よって、ＦＦ＿４７〜ＦＦ０１の保持内容が前詰めにシフトし、ＦＦ＿４８の保持内容が消去される。また、ＦＦ＿０１に対応するセレクタ２２３５は、“non”をＦＦ＿０１に保持させる。
【００６３】
その後、例えば、ＦＦ＿４８に保持されたタイプ識別子を有するパケットのパケット読出開始信号及びラインクリア位置が信号線Ｌ３及びＬ４に入力される一方で、パケット受信valid信号及びタイプ識別子が信号線Ｌ１及びＬ２に入力されたと仮定する。
【００６４】
この場合、上述したＦＦ＿４７〜ＦＦ＿０１の保持内容の前詰めシフトでＦＦ＿４８の保持内容が消去される。このとき、カウンタ２２２のカウンタ値は“０１”なのだが、ここで、カウンタ値“０１”に応じた位置にタイプ識別子が書き込まれると、ＦＦ＿４８が空いているにも拘わらず、ＦＦ＿４７にタイプ識別子が書き込まれることになる。このため、パケット読出開始信号が入力されている間は、セレクタ２２３１は、減算器２２３６からの減算値、すなわちカウンタ値“０１”から１を減じた減算値“００”を選択してデコーダ２２３２に入力する。これによって、ＦＦ＿４８に対するタイプ識別子の書込イネーブル信号（WriteEN＿48）が発生し、ＦＦ＿４８にタイプ識別子が書き込まれる。一方、カウンタ２２２のカウンタ値は、パケット読出開始信号によって１減算されるが（"０１"→"００"）、パケット受信valid信号によって１加算された状態となる（"００"→"０１"）。
【００６５】
以上説明したように、複数のタイプ識別子が、パケット読出装置１へのパケットの到来順でＦＦ群２２１に格納されることによって、ＦＦ群２２１は、受信バッファ群１０に格納された複数のパケットに対応するタイプ識別子が到来順で並べられた識別子列を保持することになる。すなわち、ＦＦ群２２１の先頭から末尾に向かって受信時刻の古い順で、受信したパケットの各々に対応するタイプ識別子が保持される。これによって、ＦＦ群２２１の先頭側に位置する識別子程、到来順の古いパケットを示すことになる。
【００６６】
また、書込／読出制御部２２３は、タイプ識別子を先頭詰めでＦＦ群２２１に格納する。すなわち、書込／読出制御部２２３は、タイプ識別子の書込に際して、カウンタ２２２からのカウンタ値を参照し、受信部２６から転送されてくるタイプ識別子を、カウンタ値又は減算値に応じた位置に書き込む。
【００６７】
これによって、受信パケットに対応する複数のタイプ識別子がＦＦ＿４８を先頭として連続して後続のＦＦ群に格納される。このように、識別子列が先頭詰めでＦＦ群２２１に格納されることによって、タイプ識別子を保持するＦＦのステージ位置が、パケットの到来順序を示すことになる。
【００６８】
或るパケットが受信バッファ群１０から読み出された場合、書込／読出制御部２２３は、受信バッファ読出制御回路２５からのパケット読出開始信号及びクリアライン位置を受けて、受信バッファ群１０から読み出されたパケットに対応するタイプ識別子を、当該タイプ識別子を保持しているＦＦから消去するとともに、当該仮想チャネル識別子が消去されたＦＦの直後から末尾までの各ＦＦに保持されたタイプ識別子を１つずつ先頭側にシフトさせる。このようにして、書込／読出制御部２２３は、タイプ識別子をＦＦから消去するときに、後続のＦＦの保持内容をシフトさせて、先頭詰め状態が維持されるように、タイプ識別子の書込制御を行う。
【００６９】
以下、受信バッファ群１０から読み出すべきパケットを決定するための構成要素である、先頭位置検出回路２３，調停回路２４及び受信バッファ読出制御回路２５の詳細について説明する。
【００７０】
先頭位置検出回路２３は、先頭Ｐ位置検出回路２３１と、先頭Ｎ位置検出回路２３２と、先頭Ｃ位置検出回路２３３とを含んでいる。ＦＦ群２２１に含まれる各ＦＦの出力端子には、各ＦＦが保持するタイプ識別子をデコードするデコーダ２２４が接続されている。デコーダ２２４は、Ｐ，Ｎ，Ｃに対応する三つの出力ライン（Ｐライン，Ｎライン，Ｃライン）を有している。各Ｐライン（Ｐ０１ライン〜Ｐ４８ライン）は、先頭Ｐ位置検出回路２３１に接続され、各Ｎライン（Ｎ０１ライン〜Ｎ４８ライン）は、先頭Ｎ位置検出回路２３２に接続され、各Ｃライン（Ｃ０１ライン〜Ｃ４８ライン）は、先頭Ｃ位置検出回路２３３に接続されている。
【００７１】
デコーダ２２４は、対応するＦＦの保持内容をデコードし、デコード結果が“Ｐ”であればＰラインのみにオン信号を出力し、残りのＮライン及びＣラインにはオフ信号を出力する。また、デコード結果が“Ｎ”であれば、デコーダ２２４は、Ｎラインのみにオン信号を出力し、残りのＰライン及びＣラインにはオフ信号を出力する。また、デコード結果が“Ｃ”であれば、デコーダ２２４は、Ｃラインのみにオン信号を出力し、残りのＰライン及びＮラインにはオフ信号を出力する。また、ＦＦの保持内容が“non”であれば、デコーダ２２４はＰライン，Ｎライン及びＣラインの全てにオフ信号を出力する。
【００７２】
例えば、ＦＦ＿４８に接続されたデコーダ２２４は、ＦＦ＿４８に対応するＰライン（Ｐ４８ライン），Ｎライン（Ｎ４８ライン），Ｃライン（Ｃ４８ライン）を有する。Ｐ４８ラインは、先頭Ｐ位置検出回路２３１に接続され、Ｎ４８ラインは、先頭Ｎ位置検出回路２３２に接続され、Ｃ４８ラインは、先頭Ｃ位置検出回路２３３に接続されている。
【００７３】
ＦＦ＿４８に接続されたデコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が“Ｐ”である場合には、Ｐ４８ラインをオンに設定し（オン信号を出力）、残りのＮ４８ライン及びＣ４８ラインをオフに設定する（オフ信号を出力する）。また、デコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が“Ｎ”である場合に、Ｎ４８ラインをオンに設定し、Ｐ４８ライン及びＣ４８ラインをオフにする。さらに、デコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が“Ｃ”である場合にＣ４８ラインをオンに設定し、Ｐ４８ライン及びＮ４８ラインをオフにする。このような動作が、他のＦＦ＿４７〜０１に接続されたデコーダ２２４でも行われる。但し、ＦＦの保持内容が“non”である場合には、デコーダ２２４は全ての出力ラインをオフにする。
【００７４】
図３は、先頭位置検出回路２３の構成例を示す。先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３として、例えば、プライオリティエンコーダを適用することができる。先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３は、ほぼ同様の構成を備えているので、例として先頭位置Ｐ位置検出回路２３１について説明する。
【００７５】
図３に示す例では、先頭Ｐ位置検出回路２３１は、プライオリティエンコーダとして、Ｐ４７ライン〜Ｐ０１ライン（ＦＦ＿４７〜ＦＦ＿０１）に対応するＮ個（実施形態１の例ではＮ＝４７）のＡＮＤ回路２３１１＿４７〜２３１１＿０１（但し、図３では、２３１１＿４７〜２３１１＿４５のみを例示）と、信号検出回路２３１２とを備えている。以下、ＡＮＤ回路２３１１＿４７〜２３１１＿０１を区別することなく説明する場合には、ＡＮＤ回路２３１１と表記する。
【００７６】
Ｐ４８ラインは、直接に信号検出回路２３１２に接続されている。残りのＰ４７〜Ｐ０１ラインは、対応するＡＮＤ回路２３１１＿４７〜２３１１＿０１の入力端子に接続されている。また、各Ｐラインを流れるオン／オフ信号は、自身のライン番号より小さいライン番号に対応する各ＡＮＤ回路２２３１が有する反転入力端子に入力される。
【００７７】
例えば、Ｐ４８ラインを流れるオン／オフ信号は、Ｐ４７〜Ｐ０１ラインに対応するＡＮＤ回路２３１１＿４７〜２３１１＿０１が有する反転入力端子に夫々入力される。また、Ｐ４７ラインを流れるオン／オフ信号は、Ｐ４６〜Ｐ０１ラインに対応するＡＮＤ回路２３１１＿４６〜２３１１＿０１が有する反転入力端子にそれぞれ接続される。このように、各ＡＮＤ回路２３１１は、対応するＰライン番号より大きいライン番号を有する各Ｐラインからのオン／オフ信号の反転信号が入力されるための１以上の反転入力端子を有している。従って、各ＡＮＤ回路２３１１は、対応するＰラインからオン信号が入力され、且つ当該ＡＮＤ回路２３１１が有する全ての反転入力端子に対してオフ信号が入力される場合にのみオン信号を出力する。言い換えれば、各ＡＮＤ回路２３１１は、ＡＮＤ回路２３１１に対応するＦＦがタイプ識別子“Ｐ”を保持する先頭のＦＦである場合にのみ、オン状態となる。
【００７８】
上述したように、Ｐ４８ラインは、信号検出回路に接続されている。また、ＡＮＤ回路２３１１＿４７〜２３１１＿０１の出力端子は、信号線を介して信号検出回路２３１２に接続されている。ここで、Ｐ４８ライン，及びＡＮＤ回路２３１１＿４７〜２３１１＿０１と信号検出回路とを夫々結ぶ複数の信号線を、説明のために「入力ライン４８〜０１（ＩＬ４８〜０１）」と呼ぶ。
【００７９】
信号検出回路２３１２では、入力ラインＩＬ４８〜０１のオン／オフ（０／１）を、入力ラインＩＬ４８〜０１までを大きい番号順で並べた４８ビットのビット列として認識することができる。上述したＡＮＤ回路２３１１＿４７〜２３１１＿０１の回路構成によって、入力ラインＩＬ４８〜０１のいずれか一つのみがオンとなり、残りの入力ラインはオフとなる。このため、信号検出回路２３１２は、入力ラインＩＬ４８を先頭として、４８ビットのビット列からオン（“１”）となっているビットの位置を検出し、検出された位置を、ＦＦ群２２１においてタイプ識別子“Ｐ”を最も先頭側で保持するＦＦに対応するＰライン番号（P＿LINE＿NUM）として出力する。
【００８０】
先頭Ｎ位置検出回路２３２は、先頭Ｐ位置検出回路２３１におけるＰラインがＮラインであることを除けば、先頭Ｐ位置検出回路２３１と同じ構成を有する。すなわち、ＡＮＤ回路２３１１＿４７〜２３１１＿０１に相当するＡＮＤ回路２３２１＿４７〜２３２１＿０１と、信号検出回路２３１２に相当する信号検出回路２３２２とを備えている。信号検出回路２３２２は、信号検出回路２３１２と同様の処理を行い、ＦＦ群２２１において、タイプ識別子“Ｎ”を最も先頭側で保持するＦＦに対応するＮライン番号（N＿LINE＿NUM）を出力する。
【００８１】
同様に、先頭Ｃ位置検出回路２３３は、先頭Ｐ位置検出回路２３１におけるＰラインがＣラインであることを除けば、先頭Ｐ位置検出回路２３１と同じ構成を有する。すなわち、ＡＮＤ回路２３１１＿４７〜２３１１＿０１に相当するＡＮＤ回路２３３１＿４７〜２３３１＿０１と、信号検出回路２３１２に相当する信号検出回路２３３２とを備えている。信号検出回路２３３２は、信号検出回路２３１２と同様の処理を行い、ＦＦ群２２１において、タイプ識別子“Ｃ”を最も先頭側で保持するＦＦに対応するＣライン番号（C＿LINE＿NUM）を出力する。
【００８２】
以上のように、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２及び先頭Ｃ位置検出回路２３３のそれぞれは、出力がオン状態の出力ラインのうち最も先頭の出力ラインの番号、すなわち、最も先頭よりのＦＦのステージ位置を、Ｐパケット，Ｎパケット，Ｃパケットの先頭位置として検出する。
【００８３】
図４は、各識別子の先頭位置検出動作の例を示す。例えば、図４に示すように、ＦＦ＿４８〜ＦＦ＿４３に対し、複数のタイプ識別子が先頭から順に“Ｃ”，“Ｎ”，“Ｎ”，“Ｐ”，“Ｐ”，“Ｃ”の順序で保持されていると仮定する。
【００８４】
この場合、先頭Ｐ位置検出回路２３１は、タイプ識別子”Ｐ”を保持する最も先頭のＦＦ４８に対応するＰライン番号“４５”を検出する。同様に、先頭Ｎ位置検出回路２３２は、タイプ識別子”Ｎ”を保持する最も先頭のＦＦ４７に対応するＮライン番号“４７”を検出し、先頭Ｃ位置検出回路２３３は、タイプ識別子”Ｃ”を保持する最も先頭のＦＦ４８に対応するＣライン番号“４８”を検出する。このように、先頭位置検出回路２３により、Ｐ，Ｎ，Ｃそれぞれのパケットタイプに関して、到来時刻の最も古いパケットのＦＦ群２２１における位置、すなわち、Ｐパケット，Ｎパケット，Ｃパケットの先頭位置が検出される。
【００８５】
先頭Ｐ位置検出回路２３１は、仮想チャネル識別子“Ｐ”の先頭位置を示すＰライン番号を示すP_LINE_NUM信号を出力する。先頭Ｎ位置検出回路２３２は、仮想チャネル識別子“Ｎ”の先頭位置を示すＮライン番号を示すN_LINE_NUM信号を出力する。先頭Ｃ位置検出回路２３１は、仮想チャネル識別子“Ｃ”の先頭位置を示すＣライン番号を示すC_LINE_NUM信号を出力する。各検出部２３１，２３２，２３３は、出力すべきラインがない、すなわち読み出すパケットが無い場合には、“０”を出力する。
【００８６】
調停回路２４には、先頭位置検出回路２３からの出力信号、つまりP_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号が入力される。調停回路２４では、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３からそれぞれ受け取る出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号）によって、Ｐ，Ｎ，Ｃの各パケットの有無と、Ｐ，Ｎ，Ｃの各パケットタイプ間の到来順序を知ることができる。調停回路２４では、さらに、パケットタイプ間でのフォワード順序付けルールを考慮して、受信バッファ群１０から読み出すべきパケット、すなわちパケット読出を実行すべき受信バッファを決定する調停処理を行う。
【００８７】
本実施形態では、調停回路２４は、Ｐ，Ｃ，Ｎの到来順序を認識し、フォワード順序付けルールに従って、Ｐ，Ｃ，Ｎの優先順位で、読み出すべきパケットのパケットタイプ（パケット読出を実行すべき受信バッファ）を決定する。但し、調停処理で使用されるフォワード順序付けルールは、上記した優先順位に加えて、或いは優先順位に代えて、他の条件となるルールが用いられるようにしても良い。要は、調停回路２４の利用する調停ルールは、１以上の条件を用いて適宜設定可能である。
【００８８】
調停回路２４は、パケットを読み出す受信バッファを決定すると、パケットの読出要求（REQ）と、読出対象のパケットタイプを示す信号（Type）とを受信バッファ読出制御回路２５へ出力する。
【００８９】
ここで、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３からそれぞれ出力される出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号）は、調停回路２４だけでなく、調停回路２４によって出力制御されるセレクタ２７にも入力される。
【００９０】
調停回路２４は、調停処理によってパケット読出を実行すべき受信バッファを決定すると、セレクタ２７に対し、決定した受信バッファに対応する出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号のいずれか）の選択を指示する制御信号を与える。セレクタ２７は、制御信号に従った出力信号を選択し、選択した出力信号を読出対象のパケットに対応するタイプ識別子のライン番号（格納位置：ODR＿Rd＿LINE）として、受信バッファ読出制御回路２５に出力する。これによって、読出が決定されたパケットのタイプ識別子を格納するＦＦに対応するライン番号（ODR＿Rd＿LINE）が受信バッファ読出制御回路２５に入力される。
【００９１】
受信バッファ読出制御回路２５は、受信バッファ読み出しの開始タイミング制御を行なう。受信バッファ読出制御回路２５は、調停回路２４からパケットの読出要求（REQ）を受け取ると、調停回路２４が出力したパケットタイプを示す信号（Type）で示される、調停回路２４が指定したパケットタイプに対応する受信バッファ（１１〜１３のいずれか）を特定し、特定した受信バッファに対する受信バッファ読出命令を発行する。
【００９２】
受信バッファ読出制御回路２５が出力する受信バッファ読出命令は、受信バッファ群１０の読出回路（セレクタ１１Ａ）に入力され、受信バッファ読出命令に対応する受信バッファからのパケットがセレクタ１１Ａにより選択され、送出先へ向けて出力される。
【００９３】
受信バッファ読出制御回路２５は、読出命令の出力とあわせ、パケット読出開始信号(Rd＿Start)を出力する。パケット読出開始信号（Rd＿Start）は、上述したように、信号線Ｌ３を介してオーダーバッファ２２のカウンタ２２２及び書込／読出制御部２２３に入力される。また、受信バッファ読出制御回路２５は、パケット読出開始信号（Rd_Start）とともに、読出対象のパケットに対応するタイプ識別子を保持したＦＦの保持内容のクリアライン位置（Clear_LINE）を出力する。クリアライン位置は、信号線Ｌ４を通じてオーダーバッファ２２の書込／読出制御部２２３に入力される。これによって、書込／読出制御部２２３は、上述したようなパケット読出開始信号及びクリアライン位置の入力時における動作を行い、クリアライン位置に応じたＦＦより後段の各ＦＦに保持されたタイプ識別子又は“non”を夫々１つずつ先頭側にシフトさせることによって、クリアライン位置のＦＦに保持されたタイプ識別子を消去する。また、最後尾のＦＦ＿０１に“non”が書き込まれる。
【００９４】
図５は、オーダーバッファ（ＦＦ群２２１）のクリア動作の例を示す。例えば、パケットの読出前において、ＦＦ群２２１の４８ステージ（ＦＦ＿４８）〜４３ステージ（ＦＦ＿４３）までに、タイプ識別子が先頭からＣ，Ｎ，Ｐ，Ｎ，Ｐ，Ｃで格納されていたと仮定する（ＦＦ＿０１〜ＦＦ＿４２までは“non”と仮定する）。
【００９５】
ここで、調停回路２４による調停によって、ＦＦ＿４６のタイプ識別子“Ｐ”に対応するパケットが受信バッファ１１から読み出されたと仮定する。すると、書込／読出制御部２２３には、受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）と、ＦＦ＿４６（Ｐ４６ライン）のクリアライン位置とが入力される。すると、書込／読出制御部２２３は、図５に示すように、パケット読出開始信号及びクリアライン位置に応じて、ＦＦ＿４５〜ＦＦ＿４３の保持内容“Ｎ”，“Ｐ”，“Ｃ”及びＦＦ＿４２〜ＦＦ＿０１の保持内容“non”を先頭側のステージへシフトさせることによって、ＦＦ＿４６に保持された“Ｐ”を消去する。そして、末尾のＦＦ＿０１には“non”を格納する。これによって、到来時刻の最も古いパケットは、常に先頭ステージ（４８ステージ）から検査すれば良い状態が保たれる。
【００９６】
なお、上記の書込／読出制御部２２３の動作において説明したように、ＦＦ群２２１に対するタイプ識別子のクリア動作とＦＦ群２２１に対するタイプ識別子の書込が同時に行われる場合には、書込／読出制御部２２３は、ＦＦ群２２１に対するシフト動作を先に行って、受信バッファから読み出されたパケットのクリア識別子を消去し、その後、ＦＦ群２２１に新たに書き込まれるクリア識別子を、「クリア動作が無い時の位置＋１」に相当する書込位置のＦＦに保持させる。
【００９７】
実施形態１によると、受信バッファ群１０に格納されている各パケット内のタイプ識別子が、パケットの到来順で、オーダーバッファ２２が有するＦＦ群２２１での物理的なステージ位置に格納される。すなわち、パケットの振分単位の識別子であるタイプ識別子がパケットの到来順に並べられた識別子列が、オーダーバッファ２２１に格納される。
【００９８】
そして、識別子列における各パケットの識別子（タイプ識別子Ｐ，Ｎ，Ｃ）の先頭位置が先頭位置検出回路２３で検出されることによって、調停回路２４は、Ｐ，Ｎ，Ｃの各パケットの到来順を認識でき、フォワード順序付けルールや送信先のBUSY状態を考慮して、次に読み出すべきパケットを決定することができる。
【００９９】
ここで、オーダーバッファ２２のＦＦ群２２１に要求される容量は、２ビット（タイプ識別子のビット数）×１６（各受信バッファのパケット最大格納数）×３（受信バッファ数）＝９６[bit]となる。よって、図９に比べて要求される容量を大幅に削減することができる。これによって、到来順序情報を記憶する回路量を削減することができる。
【０１００】
＜実施形態２＞
次に、実施形態２について説明する。実施形態２は、実施形態１で説明したパケット読出装置１と同様の構成を有するので、主として相違点について説明し、共通点については同一の符号を付して説明を省略する。
【０１０１】
振分単位（実施形態１の例ではパケットのタイプ数）の数が２のｎ乗（ｎ＝1,2,3,・・・）、すなわち（２，４，８，１６・・・）である場合において、実施形態１で説明したように、未割り当ての識別子“non”を含めると、識別子のビット数を、「振分単位数＋１ｂｉｔ」としなければならない。このため、未割り当てを示す“non”を用いなくても、実施形態１と同様のパケットの読出順序制御が可能な実施形態を、実施形態２として説明する。
【０１０２】
図６は、実施形態２に係るデータブロック読出装置（パケット読出装置１Ａ）の構成例を示す。パケット読出装置１Ａは、実施形態１で説明したパケット読出装置１における受信バッファ群１０及びパケット読出制御装置２０に相当する、受信バッファ群１０Ａと、パケット読出制御装置２０Ａとを備えている。
【０１０３】
実施形態２は、以下の点で実施形態１と異なっている。すなわち、実施形態１では、パケットタイプ数は、“Ｐ”，“Ｎ”及び“Ｃ”の三つであったが、実施形態４では、パケットタイプ“Ｘ（eXtended Type）”が追加されて、パケットタイプが四種類となっている。
【０１０４】
このため、受信バッファ群１０Ａは、Ｐパケット，Ｎパケット及びＣパケットを夫々保持する受信バッファ１１〜１３に加えて、タイプ“Ｘ”のパケット（Ｘパケットと称する）を保持するための受信バッファ１４をさらに備えている。各受信バッファ１１〜１４には、最大１２個のパケットが蓄積される。
【０１０５】
実施形態２における受信部２６は、到来したパケットに含まれる識別子を、２ビットのタイプ識別子にエンコードする。このとき、タイプ“Ｐ”，“Ｎ”，“Ｃ”，“Ｘ”の夫々は、タイプ識別子を示す２ビット“００”，“０１”，“１０”，“１１”に夫々エンコードされる。
【０１０６】
エンコードされたタイプ識別子及びパケット受信valid信号は、実施形態１と同様に受信バッファ書込制御回路２１に入力される。受信バッファ書込制御回路２１は、タイプ識別子に従って、受信部２６から送出されるパケットを受信バッファ１１〜１４のいずれかに保持させる。なお、タイプ識別子及びパケット受信valid信号は、信号線Ｌ１及びＬ２を介して、実施形態１のオーダーバッファ２２に相当するオーダーバッファ２２Ａに入力される点は、実施形態１と同様である。
【０１０７】
オーダーバッファ２２Ａは、以下の点で実施形態１のオーダーバッファ２２と異なっている。第１に、未割り当ての識別子“non”の発生源が省略されており、ＦＦ群２２１における末尾のＦＦ＿０１には、“non”が入力されないようになっている。すなわち、書込／読出制御部２２３からＦＦ＿０１へのタイプ識別子の書込イネーブル信号が発行された場合に、信号線Ｌ２を流れるタイプ識別子がＦＦ＿０１に書き込まれるようになっている。書込／読出制御部２２３は、実施形態１とほぼ同様の構成（図２）を備えている。
【０１０８】
また、各ＦＦ＿４８〜ＦＦ０１の出力端子に接続された各デコーダ２２４は、実施形態１と異なり、タイプ識別子“Ｐ”，“Ｎ”，“Ｃ”及び“Ｘ”に応じた四つの出力端子を有している。四つの出力端子は、デコーダ２２４の後段に設けられた四つのＡＮＤ回路（ＡＮＤ回路群２２６）における、一方の入力端子に接続されている。
【０１０９】
デコーダ２２４は、対応するＦＦに保持されたタイプ識別子のデコードを行う。デコーダ２２４は、デコード結果に従い、ＦＦに保持されたタイプ識別子に対応する出力端子のみにオン信号を出力し、残りの出力端子にはオフ信号を出力する。
【０１１０】
これにより、ＡＮＤ回路群２２６は、デコード結果が“Ｐ”のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿１と表記）と、デコード結果が“Ｎ”のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿２と表記）と、デコード結果が“Ｃ”のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿３と表記）と、デコード結果が“Ｘ”のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿４と表記）とからなる。
【０１１１】
オーダーバッファ２２Ａには、カウンタ２２２のカウンタ値が入力される有効範囲選択部２２５が追加されている（有効範囲選択部２２５の詳細は後述）。有効範囲選択部２２５の出力端子は、各デコーダの後段に設けられた各ＡＮＤ回路群２２６＿１〜２２６＿４の他方の出力端子に接続されている。
【０１１２】
各ＡＮＤ回路群２２６におけるＡＮＤ回路２２６＿１〜２２６＿３の出力端子は、実施形態１で説明したＰライン，Ｎライン，Ｃラインを介して、先頭位置検出回路２３Ａの先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，先頭Ｃ位置検出回路２３３に夫々接続されている。
【０１１３】
また、各ＡＮＤ回路２２６＿４の出力端子は信号線を介して、先頭位置検出回路２３Ａに設けられた先頭Ｘ位置検出回路２３４に接続されている。先頭Ｘ位置検出回路２３４と各ＡＮＤ回路２２６＿４とを結ぶ複数の信号線は、各デコーダ２２４によるデコード結果“Ｘ”を先頭Ｘ位置検出回路２３４に伝達するためのＸライン（Ｘ４８〜Ｘ０１ライン）として機能する。
【０１１４】
先頭Ｘ位置検出回路２３４は、ＦＦ群２２１におけるタイプ識別子“Ｘ”の先頭格納位置を検出するため回路であり、図３に示した先頭Ｐ位置検出回路２３１とのほぼ同様の構成を備えている。すなわち、図示しないが、図３に示した先頭Ｐ位置検出回路２３１が有する複数のＡＮＤ回路２３１１及び信号検出回路２３１２と同様のＡＮＤ回路群及び信号検出回路を備えており、これらのＡＮＤ回路群及び信号検出回路とＸ４８〜Ｘ０１ラインとの結線状態は、先頭Ｐ位置検出回路と同様となっている。従って、先頭Ｘ位置検出回路２３４の信号検出回路（図示せず）は、ＦＦ群２２１において最も先頭側でタイプ識別子“Ｘ”を保持するＦＦのステージ数を示すX＿LINE＿NUM信号を出力することができる。
X＿LINE＿NUM信号は、P＿LINE＿NUM信号，N＿LINE＿NUM信号，C＿LINE＿NUM信号と同様に、調停回路２４及びセレクタ２７に入力される。
【０１１５】
調停回路２４は、実施形態１と同様の手法、すなわち、フォワード順序付けルールに従って、パケットの読出を実行する受信バッファを決定する。例えば、調停回路２４は、優先順位がＰ，Ｃ，Ｎ，Ｘであるフォワード順序付けルールに従って、パケットの読出を実行すべき受信バッファを決定し、セレクタ２７に対する制御信号を出力することができる。
【０１１６】
有効範囲選択部２２５は、ＦＦ群２２１の有効なステージを規定する。すなわち、有効範囲選択部２２５は、各ＡＮＤ回路群２２６のＡＮＤ回路２２６＿１〜２２６＿４と接続される複数の（実施形態２の例では４８本）の制御ラインＣＬ（ＣＬ４８〜ＣＬ０１）を有している。有効範囲選択部２２５は、カウンタ２２２から入力されるカウンタ値に応じた出力ラインにオン信号を出力し、残りの出力ラインにはオフ信号を出力する。
【０１１７】
ここで、カウンタ値の初期値が“００”であると仮定すると、カウンタ値が“０１”のとき（すなわち、ＦＦ＿４８のみがタイプ識別子を保持するとき）は、ＣＬ４８のみにオン信号を出力する。カウンタ値が“０２”のとき（すなわち、ＦＦ＿４８及びＦＦ＿４７にタイプ識別子が保持されているとき）は、ＣＬ４８及びＣＬ４７にオン信号を出力する。このように、有効範囲選択部２２５は、カウンタ値から求まる、タイプ識別子を保持するＦＦと対応する制御ラインＣＬにのみオン信号を出力し、残りの制御ラインＣＬはオフとする。
【０１１８】
従って、タイプ識別子を保持していないＦＦに対応する制御ラインＣＬはオフとなるので、制御ラインＣＬがオフであるＡＮＤ回路群２２６の出力はオフとなる。従って、制御ラインＣＬがオンである、すなわちタイプ識別子を保持しているＦＦに対応するＡＮＤ回路群２２６のみから、デコーダ２２４からのオン信号が先頭位置検出回路２３Ａに入力される。
【０１１９】
以上の説明を除き、実施形態２の構成及び動作は、実施形態１と同様であるので説明を省略する。
【０１２０】
実施形態２におけるパケット読出装置１Ａによれば、オーダーバッファ２２Ａに格納される識別子の中に、“non”を含めることなく、実施形態１で説明したパケット読出装置１と同様のパケット読出制御を実行することができる。このため、振分単位数（実施形態２の例ではパケットタイプ数）が４である場合には、識別子２ビット幅に設定することができる。また、振分単位数（パケット単位数）を２にする場合には、１ビット幅（０又は１）にすることができる。すなわち、識別子のビット幅を振分単位数に対して必要最小限のビット幅にすることができる。
【０１２１】
なお、実施形態２の構成例において、振分単位（パケットタイプ数）が２にされる場合には、受信部２６におけるエンコード処理で、パケットタイプに応じてエンコード結果が“０”又は“１”となるように設定され、受信バッファ書込制御回路２１がタイプ識別子（“０”または“１”）に従って受信バッファ群１０Ａ中の二つの受信バッファにパケットを振り分けて格納するための設定が施される。さらに、各デコーダ２２４が、ＦＦの保持内容のデコード結果が“０”か“１”かに応じて、対応する出力ラインのみにオン信号を出力し、残りをオフにする動作を行うための設定が施される。
【０１２２】
実施形態２の構成は、振分単位数が上述したような２や４と異なる２のｎ乗である場合にも適用が可能である。
【０１２３】
＜実施形態３＞
次に、実施形態３について説明する。実施形態３は、実施形態１で説明したパケット読出装置１と同様の構成を有するので、主として相違点について説明し、共通点については同一の符号を付して説明を省略する。
【０１２４】
実施形態３では、実施形態１のパケット読出制御回路２０を基本構成として、パケットタイプ毎に先頭位置を検出する際の、別の方法について説明する。実施形態１では、ＦＦ群２２１をなす全てのＦＦにデコーダ２２４が設けられ、各ＦＦで保持されるパケットタイプが検査されていた。実施形態３では、ＦＦ群２２１に設けられるデコーダ２２４の数を減らす方法について説明する。図７は、実施形態３におけるデータブロック読出装置（パケット読出装置１Ｂ）の構成例を示す図である。図７において、受信バッファ群１０Ｂは、実施形態１で説明したＰパケット，Ｎパケット及びＣパケットを夫々保持する受信バッファ１１，１２及び１３を備えている、但し、実施形態３では、受信バッファ群１０Ｂに格納可能なパケットの総数は、実施形態１（４８個）と等しいが、各受信バッファ１１〜１３における最大格納数が実施形態１と異なっている。
【０１２５】
実施形態３の例では、受信バッファ１１の最大格納数は１５個，受信バッファ１２の最大格納数は１６個，受信バッファ１３の最大格納数は１７個であり、各受信バッファ１１〜１３は最大格納数を上限として、固定長又は可変長のパケットを格納することができる。
【０１２６】
また、パケット読出装置１Ｂでは、ＦＦ群２２１の出力側に設けられるデコーダ２２４が、後述する検査範囲の決定方法に従って決められた検査範囲に属するステージのＦＦのみに設けられている。
【０１２７】
実施形態３では、以下の検査範囲の決定手法で、デコーダ２２４が設けられるＦＦのステージ数が絞られている。検査範囲の決定にあたり、パケットタイプ数（振分単位数）がｎ、それぞれのパケットタイプに対応する各受信バッファの最大格納数がS1 ... Sn（ｎは0より大きい整数）としたとき、最大格納数が最も小さい受信バッファの最大格納数は、「１」とみなす。この最大格納数「１」に残りの受信バッファの最大格納数の和を加えた数が算出される。そして、算出された数が、各パケットタイプの先頭位置を検査する検査範囲のステージ数とされ、ＦＦ群２２１の先頭（ＦＦ＿４８）から、検査範囲のステージ数に属する各ＦＦの出力側にデコーダ２２４が設けられている。図８は、実施形態３におけるＦＦ群２２１の検査範囲の決定方法を示す。実施形態３の例では、上述したように、受信バッファ１１，１２及び１３のパケットの最大格納数は、夫々１５個，１６個，１７個であり、受信バッファ群１０Ｂで格納可能なパケットの総数は、受信バッファ１１〜１３の各最大格納数の和である４８（１５＋１６＋１７＝４８）である。従って、ＦＦ群２２１が有すべきＦＦの数（オーダーバッファステージ数）は、受信バッファ群１０Ｂで格納可能なパケットの総数と等しい４８[ステージ]である。
【０１２８】
これに対し、各パケットタイプの先頭位置を検査する範囲（検査範囲）となるステージ数は、以下のようにして決定される。すなわち、受信バッファ１１〜１３の最大格納数の中で最も小さい最大格納数は、受信バッファ１１の最大格納数“１５”[個]である。この最大格納数“１５”を“１”とみなしたときの全ての受信バッファ１１〜１３の最大格納数の合計値を求める。すなわち、“１”と見なされた受信バッファ１１の最大格納数と、残りの受信バッファ１２及び１３の最大格納数“１６”及び“１７”とが加算され、加算結果“３４”が得られる。この加算結果“３４”が、検査範囲となるステージ数として決定される。理由は、以下の通りである。
【０１２９】
もし、１７個のＣパケット及び１６個のＮパケットに対応するタイプ識別子（計３３個）がＦＦ群２２１に格納されている場合には、先頭ステージ（ＦＦ＿４８）から３３ステージ（ＦＦ＿１６）までを使用していることになる。この場合、パケットの送信側は、Ｃパケット及びＮパケットの送信を控える。このため、次に受信有効とされるパケットは必ずＰパケットとなる。よって、先頭ステージ（ＦＦ＿４８）から３４ステージ（ＦＦ＿１５）までの間には、先頭に受信したＰパケットの識別子“Ｐ”が必ず格納されることになる。
【０１３０】
従って、ＦＦ＿４８からＦＦ＿１５までの保持内容を検査すれば、Ｐ，Ｎ，Ｃの全てのタイプ識別子の先頭位置を検出することができる。従って、実施形態３では、図７に示したように、検査範囲（先頭から３４ステージまで）に相当するＦＦ＿４８〜ＦＦ＿１５の出力側にのみ、デコーダ２２４が設けられている。
【０１３１】
この検査範囲の決定手法では、各受信バッファの最大受信可能数が２以上で、且つ全ての受信バッファの最大受信可能数が等しい場合に、検査が必要なステージ数（検査範囲）は最も小さくなる。
【０１３２】
例えば、実施形態１のように、全ての受信バッファ１１〜１３の最大格納数がそれぞれ１６[個]である場合には、受信バッファのいずれか一つの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値を求める。すると、１＋１６＋１６＝３３となり、実施形態３の例よりも検査範囲が小さくなる。
【０１３３】
実施形態３によれば、ＦＦの保持内容をデコードするデコーダ２２４は、検査範囲に属するＦＦ＿４８〜ＦＦ＿１５のみに設けられる。これによって、デコーダ２２４の数、及び各デコーダ２２４と先頭位置検出回路２３とのライン数を減らすことができる。よって、パケット読出制御装置の回路量の削減を図ることができる。
【０１３４】
実施形態１〜３に示した構成は、適宜組み合わせることができる。また、実施形態１〜３で説明した構成は、複数の受信バッファからのパケット（データブロック）読出しに関して、パケット（データブロック）の到来順と、受信バッファ間の優先順位を考慮するようなパケット読出装置（データブロック読出装置）に適用することができる。
【０１３５】
実施形態１〜３では、データブロックがパケットである例について説明したが、データブロックの形式は“パケット”に限定されず、“フレーム”，“データグラム”，“セル”，“ファイル”，“ページ”などと呼ばれる様々なデータブロックの単位であって、振分単位として適用可能な識別子が付与されるものであれば良い。
【０１３６】
また、実施形態１〜３では、振分単位がパケットタイプである例について説明したが、振分単位は、データブロックに関わる様々な単位（属性種別）を適用することができる。また、振分単位は、同種類のデータブロックの転送先を示す識別子であっても良い。例えば、振分単位は、データブロックの転送先の識別子（チャネル種別）であっても良い。この場合、チャネルは実チャネルでも仮想チャネルであってもよい。或いは、振分単位は、データブロックの宛先を示すアドレスであっても良い。
【符号の説明】
【０１３７】
Ｌ１〜Ｌ４・・・信号線
１・・・パケット読出制御装置
１０・・・受信バッファ群
１１，１２，１３・・・受信バッファ
１１Ａ・・・セレクタ
１６・・・監視部
２０・・・パケット読出回路
２１・・・受信バッファ書込制御回路
２２・・・オーダーバッファ
２３・・・先頭位置検出回路
２４・・・調停回路
２５・・・受信バッファ読出制御回路
２６・・・受信部
２７・・・セレクタ
２２１・・・フリップフロップ群（ＦＦ群）
２２２・・・カウンタ
２２３・・・書込／読出制御部
２２４・・・デコーダ
２２５・・・有効範囲選択部
２２６・・・ＡＮＤ回路群
２３１・・・先頭Ｐ位置検出回路
２３２・・・先頭Ｎ位置検出回路
２３３・・・先頭Ｃ位置検出回路
２２３１・・・セレクタ
２２３２・・・デコーダ
２２３３，２２３４，２２３８・・・ＡＮＤ回路群
２２３７・・・シフト制御部
【図１】
2011111210.tif 000003
【図２】
2011111210.tif 000004
【図３】
2011111210.tif 000005
【図４】
2011111210.tif 000006
【図５】
2011111210.tif 000007
【図６】
2011111210.tif 000008
【図７】
2011111210.tif 000009
【図８】
2011111210.tif 000010
【図９】
2011111210.tif 000011
【手続補正書】
【提出日】平成24年10月11日(2012.10.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
振分単位毎に用意された複数の受信バッファに格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を格納する順序バッファと、
前記識別子列における各振分単位の識別子の先頭位置を検出する検出部と、
少なくとも、前記各振分単位の識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定する決定部と、
前記決定部で決定されたデータブロックを前記複数の受信バッファの一つから読み出す読出部とを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックに対応する振分単位の全てを表すために要求される最小数のビットで表現される
データブロック読出制御装置。
【請求項２】
前記順序バッファは、前記識別子列を形成する複数の振分単位の識別子のそれぞれが格納される、少なくとも前記複数の受信バッファで格納可能なデータブロックの総数と等しい数の複数の記憶領域を有し、
前記検出部は、前記複数の記憶領域の保持内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項１に記載のデータブロック読出制御装置。
【請求項３】
前記複数の受信バッファに保持される複数のデータブロックに対応する振分単位の識別子を前記複数の記憶領域に先頭詰めで格納する制御を行う書込／読出制御部をさらに含み、
前記検出部は、前記複数の記憶領域の保持内容を前記順序バッファの先頭側から検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項４】
前記振分単位の数が２のｎ乗（n=1,2,3,・・・）の場合には、前記最小数ビットが採り得る値の全てに前記振分単位の全てが割り当てられ、
前記振分単位の数が２のｎ乗より１少ない場合には、前記最小数ビットが採り得る値の
一つが振分単位の未割り当てを示す識別子として用いられ、
前記書込／読出制御部は、前記複数の格納領域に前記振分単位の識別子が先頭詰めで格納されるとともに、前記振分単位の識別子が格納されていない各格納領域が前記振分単位の未割り当てを示す識別子で満たされるように、前記複数の記憶領域に対する前記振分単位の識別子の格納制御を行う
請求項３に記載のデータブロック読出制御装置。
【請求項５】
前記複数の受信バッファに対する前記データブロックの最大格納数が夫々異なる場合に、前記検出部は、先頭の記憶領域から連続する、データブロックの最大格納数が最も小さい前記複数の受信バッファの一つの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値に等しい数の記憶領域の記憶内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項６】
前記複数の受信バッファにおける前記データブロックの最大格納数が等しい場合に、前記検出部は、先頭の記憶領域から連続する、前記複数の受信バッファのいずれか一つのデータブロックの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値に等しい数の記憶領域の記憶内容を検査することによって、前記識別子列における各振分単位の識別子の先頭位置を検出する
請求項２に記載のデータブロック読出制御装置。
【請求項７】
振分単位毎に用意された複数の受信バッファに格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を順序バッファに格納し、
前記識別子列における各振分単位の識別子の先頭位置を検出し、
少なくとも、前記各振分単位の識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定し、
前記決定されたデータブロックを前記複数の受信バッファの一つから読み出すことを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックの種別の全てを表すために要求される最小数のビットで表現される
データブロック読出制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データブロック読出制御装置に関する。
【背景技術】
【０００２】
従来、到来した複数の種別のパケットを種別毎に複数の受信バッファに格納し、予め定められた優先制御内容に従って、パケットを複数の受信バッファから読み出す技術がある。
【０００３】
例えば、パケットベースのトランザクションでは、トランザクションのストールによってデッドロックが生じないように、各パケットに付与された優先度を元にしたパケットフォワードの順序付けルールが適用される。このルールに従って決定された順序でパケットがフォワードされる場合には、例えば、パケットのタイプ毎に設けられた複数の受信バッファと、パケット到来順序を保持／参照する機構とが用意される。パケット到来順序は、パケット到来順でパケットのフォワードを行うために用意される。一方、複数の受信バッファは、優先度に従ったパケット間追い越しフォワードのために用意される。パケット間追い越しフォワードとは、優先度に従って、或るタイプのパケットを、当該パケットより先に到来した他のタイプのパケットよりも先にフォワードすることをいう。
【０００４】
図９は、従来技術の一つであるパケット読出制御装置を示す。図９に示すパケット読出制御装置は、パケットが到来した順序情報を保持及び参照するために、パケット毎に到来順を示す順序情報としてのタグを生成し、記録していた。
【０００５】
具体的には、図９に示すパケット読出制御装置では、受信パケットが到来すると、受信パケット内のタイプ識別子に従って、パケットのタイプ（ここでは、"Ａ"，"Ｂ"及び"Ｃ"）毎に用意された複数の受信バッファ（FIFO: First In First Out）の一つに受信パケットが格納される。
【０００６】
一方、受信パケットが到来すると、受信トリガが発生するとともに、受信パケット中のタイプ識別子がタグ生成回路に入力される。タグ生成回路では、受信トリガを契機に、受信順序タグ生成カウンタが、タイプ識別子に対応する受信順序タグを生成する。受信順序タグは、タイプ識別子に従って、パケットタイプ毎に用意された複数のタグバッファ（ＦＩＦＯ）の一つに格納される。
【０００７】
調停回路は、各タグバッファの先頭に格納されているタグ値を読み出し、各タグ値が示す受信順序を参照し、各タグ値に対応するパケット、すなわち各受信バッファの先頭に格納されているパケットの受信順（到来順）を確認する。一方、調停回路は、予め定められた優先制御内容、すなわちパケットタイプ間における順序付けルール（読み出しルール）に従って、読み出しを行うパケットを決定し、読出指示が受信バッファに与えられる。これによって、パケットが受信バッファから読み出され、フォワードされる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００５−５１８５７８号公報
【特許文献２】特開平２−１１７２４１号公報
【特許文献３】特開平５−２２７２１０号公報
【特許文献４】特開平１１−２９８５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術には以下の問題があった。すなわち、パケット毎に順序を示すタグを生成し、タグバッファに記録すると、タグバッファ自体の回路量が大きくなる。例えば、３つの受信バッファがあり、各受信バッファは１６個のパケットを格納できると仮定する。一方、各受信バッファが最大格納数である１６個のパケットを格納している場合において、パケット毎に生成される各タグ値が各パケットの到来順序を示すには、タグ値が各受信バッファの最大格納数の和、すなわち４８(１６×３＝４８)通りの値を表現することが要求される。この場合、４８通りのタグ値を表現する最小のビット数は６ビットとなる。
【００１０】
従って、タグバッファに要求される最小容量は、２８８ビットとなる（６(タグ値)×16(パケット最大格納数)×３(受信バッファ数)＝２８８[bit]）。
【００１１】
本発明の態様の一つの目的は、データブロックの到来順序情報の記録に要求される容量を削減可能なデータブロック読出制御装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明の態様の一つは、データブロック読出制御装置である。データブロック読出制御装置は、振分単位毎に用意された複数の受信バッファに振り分けて格納される複数のデータブロックのそれぞれに対応する振分単位の識別子が当該複数のデータブロックの到来順で並べられた識別子列を格納する順序バッファと、
前記識別子列における各振分単位の識別子の先頭位置を検出する検出部と、
少なくとも、前記各識別子の先頭位置と、予め定められた前記複数の受信バッファからのデータブロックの読出ルールとに基づいて、前記複数の受信バッファの一つから読み出すべきデータブロックを決定する決定部と、
前記決定部で決定されたデータブロックを前記複数の受信バッファの一つから読み出す読出部とを含み、
前記振分単位の識別子は、前記複数の受信バッファに格納されるデータブロックに対応する振分単位の全てを表すために要求される最小数のビットで表現される。
【発明の効果】
【００１３】
本発明の態様の一つによれば、データブロックの到来順序情報の記録に要求される容量を削減することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１におけるデータブロック読出制御装置の構成例を示す図である。
【図２】図１に示したオーダーバッファの詳細構成例を示す図である。
【図３】図１に示した先頭位置検出回路の詳細構成例を示す図である。
【図４】各識別子の先頭位置検出動作の例を示す。
【図５】オーダーバッファ（ＦＦ群）のクリア動作の例を示す。
【図６】実施形態２におけるデータブロック読出制御装置の構成例を示す図である。
【図７】実施形態３におけるデータブロック読出制御装置の構成例を示す図である。
【図８】実施形態３における各パケットタイプの先頭位置の検査範囲を決定する方法の説明図である。
【図９】従来技術の説明図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。以下の実施形態における構成は例示であり、本発明は実施の形態の構成に限定されない。
【００１６】
＜実施形態１＞
図１は、実施形態１におけるデータブロック読出装置の構成例を示す図である。実施形態１では、データブロック読出装置として、データブロックとしてのパケットの振分単位間での送出順序を制御するためのパケット読出装置について説明する。実施形態１の例では、パケット読出装置１は、振分単位である複数のパケットタイプとして、タイプ"Ｐ"，タイプ"Ｎ"及びタイプ"Ｃ"の三つのパケットタイプ（パケット種別）のパケットの送出順序を制御する。
【００１７】
一つ目のパケットタイプであるタイプ"Ｐ"は、完了通知の返信が要求されない処理のリクエストを含む"posted"である。二つ目のパケットタイプであるタイプ"Ｎ"は、完了通知
の返信が要求される処理のリクエストを含む"non-posetd"である。三つ目のパケットタイプであるタイプ"Ｃ"は、処理の完了通知を含む"completion"である。以下、パケットタイプを区別することなく説明する場合には、単に「パケット」と表記し、パケットタイプを特定する必要がある場合には、タイプ"Ｐ"，すなわち"posted"のパケットを"Ｐパケット"と表記し、タイプ"Ｎ"，"non-posetd"のパケットを"Ｎパケット"と表記し、タイプ"Ｃ"，すなわち"completion"のパケットを"Ｃパケット"と表記する。
【００１８】
パケット読出装置１には、タイプ"Ｐ"，タイプ"Ｎ"及びタイプ"Ｃ"の各パケットを転送するためのチャネル（伝送路）が設けられている。チャネルを流れる各タイプのパケットに対し、パケット間でのパケットフォワードの順序付けルール（読出ルール）が適用される。実施形態１の例では、Ｐ、Ｃ、Ｎの順でフォワード（転送）の優先順位が予め決定されており、優先順位に従ってパケットが転送される。
【００１９】
図１において、パケット読出装置１は、受信バッファ群１０と、パケット読出制御装置２０とを備える。
【００２０】
受信バッファ群１０は、振り分け単位であるパケットタイプ毎に用意された複数の受信バッファを備える。ここでは、受信バッファ群１０は、パケットタイプ"Ｐ"，"Ｎ"及び"
Ｃ"に対応する受信バッファ１１，１２，１３を備えている。各受信バッファ１１，１２
，１３は、ＦＩＦＯであり、それぞれ、最大１６個の固定長又は可変長のパケットを格納することができる。
【００２１】
パケット読出制御装置２０は、パケット書込制御部としての受信バッファ書込制御回路２１と、順序バッファとしてのオーダーバッファ２２と、検出部としての先頭位置検出回路２３と、決定部としての調停回路２４と、パケット読出制御部としての受信バッファ読出制御回路２５とを備えている。
【００２２】
図１において、パケット読出装置１の受信部２６では、１つずつ到来したパケットが受信される。受信部２６は、受信バッファ群１０，受信バッファ書込制御回路２１，オーダーバッファ２２に接続されている。
【００２３】
受信バッファ群１０には、受信部２６で受信されたパケットが入力され、パケットは、振分単位であるパケットタイプに従い、受信バッファ１１，１２，１３のいずれかに振り分けて格納される。受信バッファ１１には、Ｐパケットが格納される。受信バッファ１２には、Ｎパケットが格納される。受信バッファ１３には、Ｃパケットが格納される。
【００２４】
また、受信バッファ群１０の受信バッファ１１〜１３の蓄積量を監視する監視部１６が設けられている。監視部１６には、受信バッファ書込制御回路２１から出力されるパケットの書込命令と、受信バッファ読出制御回路２５から出力される受信バッファ読出命令とが入力される。監視部１６は、例えば、受信バッファ群１０をなす複数の受信バッファ（受信バッファ１１〜１３）毎に用意されたカウンタ（初期値"０"）を有している。受信バッファ書込制御回路２１からの書込命令の入力時には、監視部１６は、当該書込命令でパケットの書込が指定された受信バッファを特定し、当該受信バッファに対応するカウンタの値に１を加算する。一方、受信バッファ読出制御回路２５からの受信バッファ読出命令の入力時には、当該受信バッファ読出命令でパケットの読出が指定された受信バッファを特定し、当該受信バッファに対応するカウンタの値から１を減じる。受信バッファ書込制御回路２１及びオーダーバッファ２２には、受信部２６が有する図示しないエンコーダでエンコードされる、パケット内のタイプ識別子が入力される。
【００２５】
タイプ識別子はパケットタイプを示す情報であり、複数の受信バッファ１１〜１３に格
納されるパケットの振分単位、すなわち、受信バッファ１１〜１３に格納されるパケットの全てのパケットタイプを表すために要求されるビット数で表現されている。本実施形態では、パケットタイプは、"Ｐ"，"Ｎ"及び"Ｃ"の３種類であるため、タイプ識別子は２ビットで表現される。具体的には、Ｐパケットにはビット値"０１"が割り当てられ、Ｎパケットにはビット値"１０"が割り当てられ、Ｃパケットには"１１"が割り当てられる。ビット値"００"は、パケットタイプが未割り当てである"non"として扱われる。
【００２６】
また、受信バッファ書込制御回路２１及びオーダーバッファ２２には、受信部２６でのパケット受信"有効"を示すパケット受信valid信号（Pkt＿Rcv＿Val）が入力される。パケット受信valid信号は、受信トリガとして受信バッファ書込制御回路２１及びオーダーバ
ッファ２２で用いられる。
【００２７】
受信バッファ書込制御回路２１は、受信されたパケットのタイプ識別子が入力され、且つパケット受信valid信号を受け取ると、パケット受信valid信号をトリガとして、タイプ識別子の内容を参照し、タイプ識別子に対応する受信バッファへのパケットの書込命令を受信バッファ群１０に与える。
【００２８】
受信バッファ群１０では、受信バッファ書込制御回路２１からのパケットの書込命令に応じて、受信部２６から入力されたパケットを、タイプ識別子に対応する受信バッファに格納する。このようにして、受信部２６で受信されたパケットが、タイプ識別子に応じて受信バッファ１１〜１３のいずれかに振り分けられる。
【００２９】
オーダーバッファ２２は、複数ステージ（複数段）を有するシフタ型バッファである。オーダーバッファ２２は、直列接続された複数のステージを構成する記憶領域としてのフリップフロップ（ＦＦ）を含むＦＦ群２２１と、カウンタ（Count）２２２と、書込／読
出制御部(Write/Read制御部)２２３とを備える。
【００３０】
ＦＦ群２２１は、受信バッファ群１０のパケット最大格納数に等しい数のＦＦを含む。この例では、受信バッファ群１０のパケットの最大格納数４８（３タイプ×１６パケット）に等しい４８個のフリップフロップＦＦ＿０１〜ＦＦ＿４８が直列に接続されている。図１では、ＦＦ＿４８が先頭で、ＦＦ＿０１が末尾となっている。
【００３１】
具体的には、各ＦＦの入力側には、セレクタ２２３５が接続されており、セレクタ２２３５の入力端子の一つには、受信部２６からのタイプ識別子が流れる信号線Ｌ２が接続される。また、セレクタ２２３５の入力端子の他の一つは、次ステージのＦＦの出力端子と接続される。但し、最後尾のステージに位置するＦＦ＿０１の入力側に設けられたセレクタ２２３５の入力端子の他の一つには、未割り当てを示す"non"が入力されるようになっ
ている。
【００３２】
これによって、各ＦＦの入力端子には、セレクタ２２３５によって、信号線Ｌ２からのタイプ識別子（"Ｐ"，"Ｎ"，"Ｃ"）と、次ステージのＦＦの保持内容（"Ｐ"，"Ｎ"，"Ｃ"又は"non"。但し、ＦＦ＿０１は"non"のみ）との一方が入力される。
【００３３】
書込／読出制御部２２３は、各セレクタ２２３５の動作を制御することで、ＦＦ群２２１に対し、パケット読出装置１に到来した有効なパケットのタイプ識別子をパケットの到来順（受信順）で格納することができる。また、書込／読出制御部２２３は、セレクタ２２３５の動作制御を通じて、受信バッファ群１０から読み出されたパケットのタイプ識別子をＦＦ群２２１から消去することもできる。よって、ＦＦ群２２１は、受信バッファ群１０に格納されている各パケットのタイプ識別子を到来順（受信順）で保持することができる。また、書込／読出制御部２２３は、受信バッファ群１０に格納されているパケット
のタイプ識別子をＦＦ群２２１に前詰めで格納する。書込／読出制御部２２３の詳細構成は後述する。
【００３４】
図２は、図１に示したオーダーバッファ２２の詳細構成例を示す図である。図２において、カウンタ２２２は、ＦＦ群２２１に格納されるタイプ識別子の数、すなわち、受信バッファ群で保持されているパケットの数を示すカウンタ値（初期値"００"）を保持する。また、カウンタ値は、ＦＦ群２２１に対するタイプ識別子の書込位置を指定するために用いられる。
【００３５】
カウンタ２２２には、有効なパケットが受信部２６で受信されたことを示すパケット受信valid信号（Pkt＿Rcv＿Val）と、受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）とが入力される。パケット読出開始信号（Rd＿Start）は、受信バッファ群１０からのパケットの読出開始を指示する信号である。
【００３６】
カウンタ２２２は、パケット受信valid信号（Pkt＿Rcv＿Val）の入力をトリガとして、カウンタ値に１を加算する。これに対し、カウンタ２２２は、パケット読出開始信号（Rd＿Start）の入力をトリガとして、カウント値から１を減じる。従って、カウント値は、
ＦＦ群２２１に格納されているタイプ識別子の数、すなわち、受信バッファ群１０で保持されているパケットの数を示す。
【００３７】
書込／読出制御部２２３には、上述したパケット受信valid信号（Pkt＿Rcv＿Val），パケット読出開始信号（Rd＿Start），カウンタ２２２のカウンタ値，及び受信バッファ読
出制御回路２５からのクリアライン位置信号（Clear＿LINE）が入力される。クリアライ
ン位置信号は、受信バッファ群１０から読み出されるパケットのタイプ識別子を保持するＦＦを指定する値（"０１"〜"４８"）を含んでいる。
【００３８】
パケット受信valid信号は、受信部２６と接続された信号線Ｌ１を流れる。受信部２６
からのタイプ識別子（Type＿ID）は、信号線Ｌ２を流れる。受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）は、信号線Ｌ３を流れる。受信バッファ読
出制御回路２５からのクリアライン位置信号（Clear＿LINE）は、信号線Ｌ４を流れる。
【００３９】
書込／読出制御部２２３は、セレクタ２２３１と、デコーダ２２３２と、ＦＦ群２２１のステージ数（ＦＦの数。実施形態１の例では４８）と同数のＡＮＤ回路２２３３と、ＦＦ群２２１のステージ数と同数のＡＮＤ回路２２３４と、減算器２２３６と、シフト制御部２２３７と、ＦＦ群２２１のステージ数と同数のＡＮＤ回路２２３８とを備えている。
【００４０】
パケット受信valid信号が流れる信号線Ｌ１は、各ＡＮＤ回路２２３３の一方の入力端
子に接続されている。また、信号線Ｌ１はカウンタ２２２に接続されており、カウンタ２２２は、パケット受信valid信号（Pkt＿Rcv＿Val）の受信を契機として、カウンタ２２２で保持されるカウンタ値に１を加算する。
【００４１】
カウンタ２２２の出力端子は、セレクタ２２３１及び減算器２２３６に接続されている。減算器２２３６は、カウンタ２２２のカウンタ値から１を減じる。減算器２２３６は、セレクタ２２３１に接続されている。
【００４２】
セレクタ２２３１は、カウンタ２２２からのカウンタ値と減算器２２３６によってカウンタ値から１を減じた値（減算値）との一方をデコーダ２２３２に出力する。セレクタ２２３１は、信号線Ｌ３を流れるパケット読出開始信号（Rd＿Start）の入力がない場合に
は、カウンタ２２２からのカウンタ値を選択してデコーダ２２３２に入力する。これに対し、セレクタ２２３１は、パケット読出開始信号が信号線Ｌ３に入力されると、入力され
たパケット読出開始信号を選択条件として、減算器２２３６からの出力をデコーダ２２３２に出力する。セレクタ２２３１の作用については後述する。
【００４３】
なお、信号線Ｌ３は、カウンタ２２２に接続されており、カウンタ２２２は、パケット読出開始信号（Rd＿Start）の受信を契機として、カウンタ２２２が保持するカウンタ値
から１を減算する。
【００４４】
デコーダ２２３２は、各ＡＮＤ回路２２３３の他方の入力端子と接続される複数の出力端子を備える。デコーダ２２３２は、セレクタ２２３１から入力されるカウンタ値又はカウンタ値の減算値に対応する出力端子からオン信号を出力し、残りの出力端子からオフ信号を出力する。各ＡＮＤ回路２２３３は、ＦＦ群２２１をなすＦＦ＿４８〜ＦＦ＿０１と対応づけられている。例えば、デコーダにカウンタ値"０"が入力された場合には、ＦＦ＿４８に対応するＡＮＤ回路２２３３＿４８のみにオン信号が与えられ、残りのＡＮＤ回路２２３３にはオフ信号が与えられる。
【００４５】
各ＡＮＤ回路２２３３は、ＡＮＤ回路２２３３自身が有する双方の入力端子への入力がオンとなることを条件にオン信号を出力する。当該オン信号は、ＡＮＤ回路２２３３と対応するＦＦに対するタイプ識別子の書込イネーブル信号（WriteEN＿X(01≦X≦48)）とし
て機能する。書込イネーブル信号は、ＦＦ群２２１をなす各ＦＦの入力側に設けられたセレクタ２２３５に対する、信号線Ｌ２を流れるタイプ識別子（Type＿ID）の選択条件となる。
【００４６】
ＦＦ＿４８〜ＦＦ＿０２の入力側に設けられた各セレクタ２２３５は、信号線を介して次ステージのＦＦに接続されている。一方、ＦＦ＿０１の入力側に設けられたセレクタ２２３５には、未割り当てを示す "non"（"００"）が入力される。これによって、各セレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子と、次ステージのＦＦの保持内容（但し、ＦＦ＿０１対応のセレクタ２２３５は"non"）との一方を選択し、先頭側のＦＦに出力
する。
【００４７】
また、セレクタ２２３５には、その後段に位置するＦＦの出力信号が入力されるようになっている。
【００４８】
各セレクタ２２３５が、次ステージのＦＦの保持内容又は"non"を選択する選択条件は
、以下に説明する回路構成によって実現される。すなわち、パケット読出開始信号（Rd＿Start）が流れる信号線Ｌ３は、各ＡＮＤ回路２２３８の一方の入力端子に夫々接続され
ている。
【００４９】
信号線Ｌ４を流れるクリアライン位置信号（Clear＿LINE）は、シフト制御部２２３７
に入力される。シフト制御部２２３７は、各ＡＮＤ回路２２３８の他方の入力端子に接続されており、クリアライン位置（"０１"〜"４８"）に応じて、各ＡＮＤ回路２２３８に対するオン信号の出力を制御する。複数のＡＮＤ回路２２３８は、ＦＦ群２２１をなすＦＦのステージ数と同数のＡＮＤ回路からなり、各ＦＦに対応づけられている。
【００５０】
実施形態１の例では、シフト制御部２２３７は、クリアライン位置に応じて、当該クリアライン位置のＦＦ及び当該クリアライン位置より後段のＦＦに対応するＡＮＤ回路２２３８にオン信号を入力し、当該クリアラインより前のＦＦに対応するＡＮＤ回路２２３８があれば、当該ＡＮＤ回路２２３８にオフ信号を入力するように動作する。
【００５１】
例えば、ラインクリア位置が"４８"である場合には、シフト制御部２２３７は、ＡＮＤ回路２２３８の全てにオン信号を出力する。ラインクリア位置が"４７"である場合には、
シフト制御部２２３７は、ラインクリア位置より前に位置するＦＦ＿４８に対応するＡＮＤ回路２２３８（２２３８＿４８）にオフ信号を入力し、残りのＡＮＤ回路２２３８にはオン信号を入力する。同様の動作が、他のラインクリア位置"４６"〜"０１"についても行われる。ラインクリア位置が最後尾である"０１"の場合には、シフト制御部２２３７は、ＦＦ＿０１に対応するＡＮＤ回路２２３８に対してオン信号を入力し、残りのＡＮＤ回路２２３８にはオフ信号を入力する。
【００５２】
各ＡＮＤ回路２２３８は、パケット読出開始信号（Rd＿Start）が入力され、且つシフ
ト制御部２２３７からオン信号が入力された場合にオン信号を出力する。ＡＮＤ回路２２３８のオン信号は、シフト命令信号（Shift＿X（01≦X≦48））として機能する。
【００５３】
各ＡＮＤ回路２２３８の出力端子は、ＦＦ群２２１をなす各ＦＦに対応づけられた複数のＡＮＤ回路２２３４の一方の入力端子に夫々接続されている。各ＡＮＤ回路２２３４の他方の入力端子には、同一のＦＦに対応するＡＮＤ回路２２３３から出力された書込イネーブル信号（WriteEN＿X）の反転信号が入力される。よって、各ＡＮＤ回路２２３４は、書込イネーブル信号がオフであり、且つシフト命令信号がオンである場合にオン信号を出力する。
【００５４】
ＡＮＤ回路２２３４から出力されるオン信号は、ＡＮＤ回路２２３４と対応するＦＦの入力側に位置するセレクタ２２３５に対する、次ステージのＦＦの保持内容又は"non"の
選択条件となる。
【００５５】
よって、各ＦＦ＿４８〜ＦＦ＿０１では、対応するＡＮＤ回路２２３３から書込イネーブル信号が出力される一方で、ＡＮＤ回路２２３４がオフのときには、信号線Ｌ２を流れるタイプ識別子が当該ＦＦに書き込まれる。これに対し、ＦＦに対応するＡＮＤ回路２２３３がオフ（書込イネーブル信号なし）で対応するＡＮＤ回路２２３４がオンのときには、当該ＦＦに対し、次ステージのＦＦの保持内容又は"non"が書き込まれる。
【００５６】
以上説明した書込／読出制御部２２３は、以下のように動作する。オーダーバッファ２２の初期リセット直後は、ＦＦ群２２１の全てのＦＦ＿４８〜ＦＦ＿０１に"non"が保持
された初期化状態にされる。また、初期化状態では、カウンタ値は初期値"００"とされる。このとき、デコーダ２２３２からは、カウンタ値"００"に応じてＦＦ＿４８に対応するＡＮＤ回路２２３３＿４８にオン信号が入力され、残りのＡＮＤ回路２２３３にはオフ信号が入力された状態となる。
【００５７】
このような状態において、受信部２６からパケット受信valid信号とタイプ識別子とが
出力されたと仮定する。すると、信号線Ｌ１を流れるパケット受信valid信号によって、
ＡＮＤ回路２２３３＿４８がオンとなり、書込イネーブル信号（WriteEN＿48）がＡＮＤ
回路２２３３＿４８から出力される。この時点で、信号線Ｌ３及びＬ４に対するパケット読出開始信号及びラインクリア位置はオフ（入力なし）であるので、ＦＦ＿４８に対応するＡＮＤ回路２２３４＿４８はオフである。よって、ＦＦ＿４８に対応するセレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子を選択してＦＦ＿４８に入力する。これによって、ＦＦ＿４８がタイプ識別子を保持する。
【００５８】
一方、カウンタ２２２は、パケット受信valid信号の入力に応じて、カウンタ値"００"
に１を加算する。よって、カウンタ値は"０１"となり、デコーダ２２３２は、ＦＦ＿４７に対応するＡＮＤ回路２２３３（２２３３＿４７）のみにオン信号を入力し、残りのＡＮＤ回路２２３３にはオフ信号を入力する状態となる。
【００５９】
その後、さらに、受信部２６からのパケット受信valid信号及びタイプ識別子が信号線
Ｌ１及び信号線Ｌ２にそれぞれ入力されたと仮定する。すると、パケット受信valid信号
によって、ＡＮＤ回路２２３３＿４７がオンとなり、書込イネーブル信号（WriteEN＿47
）が出力される。この時点で、信号線Ｌ３及びＬ４に対するパケット読出開始信号及びラインクリア位置はオフ（入力なし）であるので、ＦＦ＿４７に対応するＡＮＤ回路２２３４＿４７はオフである。よって、ＦＦ＿４７に対応するセレクタ２２３５は、信号線Ｌ２を流れるタイプ識別子を選択してＦＦ＿４７に入力する。ＦＦ＿４８及びＦＦ＿４６〜ＦＦ０１は、書込イネーブル信号及びＡＮＤ回路２２３４の出力が共にオフであるので、保持内容を維持し続ける。これによって、ＦＦ＿４８及びＦＦ＿４７がタイプ識別子を保持した状態となる。
【００６０】
一方、カウンタ２２２は、パケット受信valid信号の入力に応じて、カウンタ値"０１"
に１を加算する。よって、カウンタ値は"０２"となる。
【００６１】
その後、ＦＦ＿４８に保持されたタイプ識別子を有するパケットの、受信バッファ群１０からのパケット読出開始信号（Rd＿Start）が受信バッファ読出制御回路２５から信号
線Ｌ３に入力され、続いて、ＦＦ＿４８の保持内容を消去するためのラインクリア位置"
４８"が受信バッファ読出制御回路２５から信号線Ｌ３に入力されたと仮定する。
【００６２】
この場合、パケット読出開始信号及びシフト制御部２２３７の、クリアライン位置"４
８"に応じた出力により、全てのＡＮＤ回路２２３８がオンとなり、シフト命令信号（Shift＿X）を出力する。この時点で、各ＡＮＤ回路２２３３からの書込イネーブル信号はオ
フであるので、全てのＡＮＤ回路２２３４がオンとなる。すると、ＦＦ＿４８〜ＦＦ０２に対応するセレクタ２２３５は、次ステージのＦＦの保持内容を選択して、対応するＦＦに保持させる。よって、ＦＦ＿４７〜ＦＦ０１の保持内容が前詰めにシフトし、ＦＦ＿４８の保持内容が消去される。また、ＦＦ＿０１に対応するセレクタ２２３５は、"non"を
ＦＦ＿０１に保持させる。
【００６３】
その後、例えば、ＦＦ＿４８に保持されたタイプ識別子を有するパケットのパケット読出開始信号及びラインクリア位置が信号線Ｌ３及びＬ４に入力される一方で、パケット受信valid信号及びタイプ識別子が信号線Ｌ１及びＬ２に入力されたと仮定する。
【００６４】
この場合、上述したＦＦ＿４７〜ＦＦ＿０１の保持内容の前詰めシフトでＦＦ＿４８の保持内容が消去される。このとき、カウンタ２２２のカウンタ値は"０１"なのだが、ここで、カウンタ値"０１"に応じた位置にタイプ識別子が書き込まれると、ＦＦ＿４８が空いているにも拘わらず、ＦＦ＿４７にタイプ識別子が書き込まれることになる。このため、パケット読出開始信号が入力されている間は、セレクタ２２３１は、減算器２２３６からの減算値、すなわちカウンタ値"０１"から１を減じた減算値"００"を選択してデコーダ２２３２に入力する。これによって、ＦＦ＿４８に対するタイプ識別子の書込イネーブル信号（WriteEN＿48）が発生し、ＦＦ＿４８にタイプ識別子が書き込まれる。一方、カウン
タ２２２のカウンタ値は、パケット読出開始信号によって１減算されるが（"０１"→"０
０"）、パケット受信valid信号によって１加算された状態となる（"００"→"０１"）。
【００６５】
以上説明したように、複数のタイプ識別子が、パケット読出装置１へのパケットの到来順でＦＦ群２２１に格納されることによって、ＦＦ群２２１は、受信バッファ群１０に格納された複数のパケットに対応するタイプ識別子が到来順で並べられた識別子列を保持することになる。すなわち、ＦＦ群２２１の先頭から末尾に向かって受信時刻の古い順で、受信したパケットの各々に対応するタイプ識別子が保持される。これによって、ＦＦ群２２１の先頭側に位置する識別子程、到来順の古いパケットを示すことになる。
【００６６】
また、書込／読出制御部２２３は、タイプ識別子を先頭詰めでＦＦ群２２１に格納する
。すなわち、書込／読出制御部２２３は、タイプ識別子の書込に際して、カウンタ２２２からのカウンタ値を参照し、受信部２６から転送されてくるタイプ識別子を、カウンタ値又は減算値に応じた位置に書き込む。
【００６７】
これによって、受信パケットに対応する複数のタイプ識別子がＦＦ＿４８を先頭として連続して後続のＦＦ群に格納される。このように、識別子列が先頭詰めでＦＦ群２２１に格納されることによって、タイプ識別子を保持するＦＦのステージ位置が、パケットの到来順序を示すことになる。
【００６８】
或るパケットが受信バッファ群１０から読み出された場合、書込／読出制御部２２３は、受信バッファ読出制御回路２５からのパケット読出開始信号及びクリアライン位置を受けて、受信バッファ群１０から読み出されたパケットに対応するタイプ識別子を、当該タイプ識別子を保持しているＦＦから消去するとともに、当該仮想チャネル識別子が消去されたＦＦの直後から末尾までの各ＦＦに保持されたタイプ識別子を１つずつ先頭側にシフトさせる。このようにして、書込／読出制御部２２３は、タイプ識別子をＦＦから消去するときに、後続のＦＦの保持内容をシフトさせて、先頭詰め状態が維持されるように、タイプ識別子の書込制御を行う。
【００６９】
以下、受信バッファ群１０から読み出すべきパケットを決定するための構成要素である、先頭位置検出回路２３，調停回路２４及び受信バッファ読出制御回路２５の詳細について説明する。
【００７０】
先頭位置検出回路２３は、先頭Ｐ位置検出回路２３１と、先頭Ｎ位置検出回路２３２と、先頭Ｃ位置検出回路２３３とを含んでいる。ＦＦ群２２１に含まれる各ＦＦの出力端子には、各ＦＦが保持するタイプ識別子をデコードするデコーダ２２４が接続されている。デコーダ２２４は、Ｐ，Ｎ，Ｃに対応する三つの出力ライン（Ｐライン，Ｎライン，Ｃライン）を有している。各Ｐライン（Ｐ０１ライン〜Ｐ４８ライン）は、先頭Ｐ位置検出回路２３１に接続され、各Ｎライン（Ｎ０１ライン〜Ｎ４８ライン）は、先頭Ｎ位置検出回路２３２に接続され、各Ｃライン（Ｃ０１ライン〜Ｃ４８ライン）は、先頭Ｃ位置検出回路２３３に接続されている。
【００７１】
デコーダ２２４は、対応するＦＦの保持内容をデコードし、デコード結果が"Ｐ"であればＰラインのみにオン信号を出力し、残りのＮライン及びＣラインにはオフ信号を出力する。また、デコード結果が"Ｎ"であれば、デコーダ２２４は、Ｎラインのみにオン信号を出力し、残りのＰライン及びＣラインにはオフ信号を出力する。また、デコード結果が"
Ｃ"であれば、デコーダ２２４は、Ｃラインのみにオン信号を出力し、残りのＰライン及
びＮラインにはオフ信号を出力する。また、ＦＦの保持内容が"non"であれば、デコーダ
２２４はＰライン，Ｎライン及びＣラインの全てにオフ信号を出力する。
【００７２】
例えば、ＦＦ＿４８に接続されたデコーダ２２４は、ＦＦ＿４８に対応するＰライン（Ｐ４８ライン），Ｎライン（Ｎ４８ライン），Ｃライン（Ｃ４８ライン）を有する。Ｐ４８ラインは、先頭Ｐ位置検出回路２３１に接続され、Ｎ４８ラインは、先頭Ｎ位置検出回路２３２に接続され、Ｃ４８ラインは、先頭Ｃ位置検出回路２３３に接続されている。
【００７３】
ＦＦ＿４８に接続されたデコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が"Ｐ"である場合には、Ｐ４８ラインをオンに設定し（オン信号を出力）、残りのＮ４８ライン及びＣ４８ラインをオフに設定する（オフ信号を出力する）。また、デコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が"Ｎ"である場合に、Ｎ４８ラインをオンに設定し、Ｐ４８ライン及びＣ４８ラインをオフにする。さらに、デコーダ２２４は、ＦＦ＿４８が保持するタイプ識別子が"Ｃ"である場合にＣ４８ラインをオンに設定し、Ｐ４８ライン及
びＮ４８ラインをオフにする。このような動作が、他のＦＦ＿４７〜０１に接続されたデコーダ２２４でも行われる。但し、ＦＦの保持内容が"non"である場合には、デコーダ２
２４は全ての出力ラインをオフにする。
【００７４】
図３は、先頭位置検出回路２３の構成例を示す。先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３として、例えば、プライオリティエンコーダを適用することができる。先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３は、ほぼ同様の構成を備えているので、例として先頭位置Ｐ位置検出回路２３１について説明する。
【００７５】
図３に示す例では、先頭Ｐ位置検出回路２３１は、プライオリティエンコーダとして、Ｐ４７ライン〜Ｐ０１ライン（ＦＦ＿４７〜ＦＦ＿０１）に対応するＮ個（実施形態１の例ではＮ＝４７）のＡＮＤ回路２３１１＿４７〜２３１１＿０１（但し、図３では、２３１１＿４７〜２３１１＿４５のみを例示）と、信号検出回路２３１２とを備えている。以下、ＡＮＤ回路２３１１＿４７〜２３１１＿０１を区別することなく説明する場合には、ＡＮＤ回路２３１１と表記する。
【００７６】
Ｐ４８ラインは、直接に信号検出回路２３１２に接続されている。残りのＰ４７〜Ｐ０１ラインは、対応するＡＮＤ回路２３１１＿４７〜２３１１＿０１の入力端子に接続されている。また、各Ｐラインを流れるオン／オフ信号は、自身のライン番号より小さいライン番号に対応する各ＡＮＤ回路２３３１が有する反転入力端子に入力される。
【００７７】
例えば、Ｐ４８ラインを流れるオン／オフ信号は、Ｐ４７〜Ｐ０１ラインに対応するＡＮＤ回路２３１１＿４７〜２３１１＿０１が有する反転入力端子に夫々入力される。また、Ｐ４７ラインを流れるオン／オフ信号は、Ｐ４６〜Ｐ０１ラインに対応するＡＮＤ回路２３１１＿４６〜２３１１＿０１が有する反転入力端子にそれぞれ接続される。このように、各ＡＮＤ回路２３１１は、対応するＰライン番号より大きいライン番号を有する各Ｐラインからのオン／オフ信号の反転信号が入力されるための１以上の反転入力端子を有している。従って、各ＡＮＤ回路２３１１は、対応するＰラインからオン信号が入力され、且つ当該ＡＮＤ回路２３１１が有する全ての反転入力端子に対してオフ信号が入力される場合にのみオン信号を出力する。言い換えれば、各ＡＮＤ回路２３１１は、ＡＮＤ回路２３１１に対応するＦＦがタイプ識別子"Ｐ"を保持する先頭のＦＦである場合にのみ、オン状態となる。
【００７８】
上述したように、Ｐ４８ラインは、信号検出回路に接続されている。また、ＡＮＤ回路２３１１＿４７〜２３１１＿０１の出力端子は、信号線を介して信号検出回路２３１２に接続されている。ここで、Ｐ４８ライン，及びＡＮＤ回路２３１１＿４７〜２３１１＿０１と信号検出回路とを夫々結ぶ複数の信号線を、説明のために「入力ライン４８〜０１（ＩＬ４８〜０１）」と呼ぶ。
【００７９】
信号検出回路２３１２では、入力ラインＩＬ４８〜０１のオン／オフ（０／１）を、入力ラインＩＬ４８〜０１までを大きい番号順で並べた４８ビットのビット列として認識することができる。上述したＡＮＤ回路２３１１＿４７〜２３１１＿０１の回路構成によって、入力ラインＩＬ４８〜０１のいずれか一つのみがオンとなり、残りの入力ラインはオフとなる。このため、信号検出回路２３１２は、入力ラインＩＬ４８を先頭として、４８ビットのビット列からオン（"１"）となっているビットの位置を検出し、検出された位置を、ＦＦ群２２１においてタイプ識別子"Ｐ"を最も先頭側で保持するＦＦに対応するＰライン番号（P＿LINE＿NUM）として出力する。
【００８０】
先頭Ｎ位置検出回路２３２は、先頭Ｐ位置検出回路２３１におけるＰラインがＮライン
であることを除けば、先頭Ｐ位置検出回路２３１と同じ構成を有する。すなわち、ＡＮＤ回路２３１１＿４７〜２３１１＿０１に相当するＡＮＤ回路２３２１＿４７〜２３２１＿０１と、信号検出回路２３１２に相当する信号検出回路２３２２とを備えている。信号検出回路２３２２は、信号検出回路２３１２と同様の処理を行い、ＦＦ群２２１において、タイプ識別子"Ｎ"を最も先頭側で保持するＦＦに対応するＮライン番号（N＿LINE＿NUM）を出力する。
【００８１】
同様に、先頭Ｃ位置検出回路２３３は、先頭Ｐ位置検出回路２３１におけるＰラインがＣラインであることを除けば、先頭Ｐ位置検出回路２３１と同じ構成を有する。すなわち、ＡＮＤ回路２３１１＿４７〜２３１１＿０１に相当するＡＮＤ回路２３３１＿４７〜２３３１＿０１と、信号検出回路２３１２に相当する信号検出回路２３３２とを備えている。信号検出回路２３３２は、信号検出回路２３１２と同様の処理を行い、ＦＦ群２２１において、タイプ識別子"Ｃ"を最も先頭側で保持するＦＦに対応するＣライン番号（C＿LINE＿NUM）を出力する。
【００８２】
以上のように、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２及び先頭Ｃ位置検出回路２３３のそれぞれは、出力がオン状態の出力ラインのうち最も先頭の出力ラインの番号、すなわち、最も先頭よりのＦＦのステージ位置を、Ｐパケット，Ｎパケット，Ｃパケットの先頭位置として検出する。
【００８３】
図４は、各識別子の先頭位置検出動作の例を示す。例えば、図４に示すように、ＦＦ＿４８〜ＦＦ＿４３に対し、複数のタイプ識別子が先頭から順に"Ｃ"，"Ｎ"，"Ｎ"，"Ｐ"，"Ｐ"，"Ｃ"の順序で保持されていると仮定する。
【００８４】
この場合、先頭Ｐ位置検出回路２３１は、タイプ識別子"Ｐ"を保持する最も先頭のＦＦ４８に対応するＰライン番号"４５"を検出する。同様に、先頭Ｎ位置検出回路２３２は、タイプ識別子"Ｎ"を保持する最も先頭のＦＦ４７に対応するＮライン番号"４７"を検出し、先頭Ｃ位置検出回路２３３は、タイプ識別子"Ｃ"を保持する最も先頭のＦＦ４８に対応するＣライン番号"４８"を検出する。このように、先頭位置検出回路２３により、Ｐ，Ｎ，Ｃそれぞれのパケットタイプに関して、到来時刻の最も古いパケットのＦＦ群２２１における位置、すなわち、Ｐパケット，Ｎパケット，Ｃパケットの先頭位置が検出される。
【００８５】
先頭Ｐ位置検出回路２３１は、仮想チャネル識別子"Ｐ"の先頭位置を示すＰライン番号を示すP_LINE_NUM信号を出力する。先頭Ｎ位置検出回路２３２は、仮想チャネル識別子"
Ｎ"の先頭位置を示すＮライン番号を示すN_LINE_NUM信号を出力する。先頭Ｃ位置検出回
路２３３は、仮想チャネル識別子"Ｃ"の先頭位置を示すＣライン番号を示すC_LINE_NUM信号を出力する。各検出部２３１，２３２，２３３は、出力すべきラインがない、すなわち読み出すパケットが無い場合には、"０"を出力する。
【００８６】
調停回路２４には、先頭位置検出回路２３からの出力信号、つまりP_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号が入力される。調停回路２４では、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３からそれぞれ受け取る出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号）によって、Ｐ，Ｎ，Ｃの各パケットの有無と、Ｐ，Ｎ，Ｃの各パケットタイプ間の到来順序を知ることができる。調停回路２４では、さらに、パケットタイプ間でのフォワード順序付けルールを考慮して、受信バッファ群１０から読み出すべきパケット、すなわちパケット読出を実行すべき受信バッファを決定する調停処理を行う。
【００８７】
本実施形態では、調停回路２４は、Ｐ，Ｃ，Ｎの到来順序を認識し、フォワード順序付けルールに従って、Ｐ，Ｃ，Ｎの優先順位で、読み出すべきパケットのパケットタイプ（
パケット読出を実行すべき受信バッファ）を決定する。但し、調停処理で使用されるフォワード順序付けルールは、上記した優先順位に加えて、或いは優先順位に代えて、他の条件となるルールが用いられるようにしても良い。要は、調停回路２４の利用する調停ルールは、１以上の条件を用いて適宜設定可能である。
【００８８】
調停回路２４は、パケットを読み出す受信バッファを決定すると、パケットの読出要求（REQ）と、読出対象のパケットタイプを示す信号（Type）とを受信バッファ読出制御回
路２５へ出力する。
【００８９】
ここで、先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，及び先頭Ｃ位置検出回路２３３からそれぞれ出力される出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号）は、調停回路２４だけでなく、調停回路２４によって出力制御されるセレクタ２７にも入力される。
【００９０】
調停回路２４は、調停処理によってパケット読出を実行すべき受信バッファを決定すると、セレクタ２７に対し、決定した受信バッファに対応する出力信号（P_LINE_NUM信号、N_LINE_NUM信号およびC_LINE_NUM信号のいずれか）の選択を指示する制御信号を与える。セレクタ２７は、制御信号に従った出力信号を選択し、選択した出力信号を読出対象のパケットに対応するタイプ識別子のライン番号（格納位置：ODR＿Rd＿LINE）として、受信
バッファ読出制御回路２５に出力する。これによって、読出が決定されたパケットのタイプ識別子を格納するＦＦに対応するライン番号（ODR＿Rd＿LINE）が受信バッファ読出制
御回路２５に入力される。
【００９１】
受信バッファ読出制御回路２５は、受信バッファ読み出しの開始タイミング制御を行なう。受信バッファ読出制御回路２５は、調停回路２４からパケットの読出要求（REQ）を
受け取ると、調停回路２４が出力したパケットタイプを示す信号（Type）で示される、調停回路２４が指定したパケットタイプに対応する受信バッファ（１１〜１３のいずれか）を特定し、特定した受信バッファに対する受信バッファ読出命令を発行する。
【００９２】
受信バッファ読出制御回路２５が出力する受信バッファ読出命令は、受信バッファ群１０の読出回路（セレクタ１１Ａ）に入力され、受信バッファ読出命令に対応する受信バッファからのパケットがセレクタ１１Ａにより選択され、送出先へ向けて出力される。
【００９３】
受信バッファ読出制御回路２５は、読出命令の出力とあわせ、パケット読出開始信号(Rd＿Start)を出力する。パケット読出開始信号（Rd＿Start）は、上述したように、信号線Ｌ３を介してオーダーバッファ２２のカウンタ２２２及び書込／読出制御部２２３に入力される。また、受信バッファ読出制御回路２５は、パケット読出開始信号（Rd_Start）とともに、読出対象のパケットに対応するタイプ識別子を保持したＦＦの保持内容のクリアライン位置（Clear_LINE）を出力する。クリアライン位置は、信号線Ｌ４を通じてオーダーバッファ２２の書込／読出制御部２２３に入力される。これによって、書込／読出制御部２２３は、上述したようなパケット読出開始信号及びクリアライン位置の入力時における動作を行い、クリアライン位置に応じたＦＦより後段の各ＦＦに保持されたタイプ識別子又は"non"を夫々１つずつ先頭側にシフトさせることによって、クリアライン位置のＦ
Ｆに保持されたタイプ識別子を消去する。また、最後尾のＦＦ＿０１に"non"が書き込ま
れる。
【００９４】
図５は、オーダーバッファ（ＦＦ群２２１）のクリア動作の例を示す。例えば、パケットの読出前において、ＦＦ群２２１の４８ステージ（ＦＦ＿４８）〜４３ステージ（ＦＦ＿４３）までに、タイプ識別子が先頭からＣ，Ｎ，Ｐ，Ｎ，Ｐ，Ｃで格納されていたと仮定する（ＦＦ＿０１〜ＦＦ＿４２までは"non"と仮定する）。
【００９５】
ここで、調停回路２４による調停によって、ＦＦ＿４６のタイプ識別子"Ｐ"に対応するパケットが受信バッファ１１から読み出されたと仮定する。すると、書込／読出制御部２２３には、受信バッファ読出制御回路２５からのパケット読出開始信号（Rd＿Start）と
、ＦＦ＿４６（Ｐ４６ライン）のクリアライン位置とが入力される。すると、書込／読出制御部２２３は、図５に示すように、パケット読出開始信号及びクリアライン位置に応じて、ＦＦ＿４５〜ＦＦ＿４３の保持内容"Ｎ"，"Ｐ"，"Ｃ"及びＦＦ＿４２〜ＦＦ＿０１の保持内容"non"を先頭側のステージへシフトさせることによって、ＦＦ＿４６に保持され
た"Ｐ"を消去する。そして、末尾のＦＦ＿０１には"non"を格納する。これによって、到
来時刻の最も古いパケットは、常に先頭ステージ（４８ステージ）から検査すれば良い状態が保たれる。
【００９６】
なお、上記の書込／読出制御部２２３の動作において説明したように、ＦＦ群２２１に対するタイプ識別子のクリア動作とＦＦ群２２１に対するタイプ識別子の書込が同時に行われる場合には、書込／読出制御部２２３は、ＦＦ群２２１に対するシフト動作を先に行って、受信バッファから読み出されたパケットのクリア識別子を消去し、その後、ＦＦ群２２１に新たに書き込まれるクリア識別子を、「クリア動作が無い時の位置＋１」に相当する書込位置のＦＦに保持させる。
【００９７】
実施形態１によると、受信バッファ群１０に格納されている各パケット内のタイプ識別子が、パケットの到来順で、オーダーバッファ２２が有するＦＦ群２２での物理的なステージ位置に格納される。すなわち、パケットの振分単位の識別子であるタイプ識別子がパケットの到来順に並べられた識別子列が、オーダーバッファ２２１に格納される。
【００９８】
そして、識別子列における各パケットの識別子（タイプ識別子Ｐ，Ｎ，Ｃ）の先頭位置が先頭位置検出回路２３で検出されることによって、調停回路２４は、Ｐ，Ｎ，Ｃの各パケットの到来順を認識でき、フォワード順序付けルールや送信先のBUSY状態を考慮して、次に読み出すべきパケットを決定することができる。
【００９９】
ここで、オーダーバッファ２２のＦＦ群２２１に要求される容量は、２ビット（タイプ識別子のビット数）×１６（各受信バッファのパケット最大格納数）×３（受信バッファ数）＝９６[bit]となる。よって、図９に比べて要求される容量を大幅に削減することが
できる。これによって、到来順序情報を記憶する回路量を削減することができる。
【０１００】
＜実施形態２＞
次に、実施形態２について説明する。実施形態２は、実施形態１で説明したパケット読出装置１と同様の構成を有するので、主として相違点について説明し、共通点については同一の符号を付して説明を省略する。
【０１０１】
振分単位（実施形態１の例ではパケットのタイプ数）の数が２のｎ乗（ｎ＝1,2,3,・・・）、すなわち（２，４，８，１６・・・）である場合において、実施形態１で説明したように、未割り当ての識別子"non"を含めると、識別子のビット数を、「振分単位数＋１
ｂｉｔ」としなければならない。このため、未割り当てを示す"non"を用いなくても、実
施形態１と同様のパケットの読出順序制御が可能な実施形態を、実施形態２として説明する。
【０１０２】
図６は、実施形態２に係るデータブロック読出装置（パケット読出装置１Ａ）の構成例を示す。パケット読出装置１Ａは、実施形態１で説明したパケット読出装置１における受信バッファ群１０及びパケット読出制御装置２０に相当する、受信バッファ群１０Ａと、パケット読出制御装置２０Ａとを備えている。
【０１０３】
実施形態２は、以下の点で実施形態１と異なっている。すなわち、実施形態１では、パケットタイプ数は、"Ｐ"，"Ｎ"及び"Ｃ"の三つであったが、実施形態２では、パケットタイプ"Ｘ（eXtended Type）"が追加されて、パケットタイプが四種類となっている。
【０１０４】
このため、受信バッファ群１０Ａは、Ｐパケット，Ｎパケット及びＣパケットを夫々保持する受信バッファ１１〜１３に加えて、タイプ"Ｘ"のパケット（Ｘパケットと称する）を保持するための受信バッファ１４をさらに備えている。各受信バッファ１１〜１４には、最大１２個のパケットが蓄積される。
【０１０５】
実施形態２における受信部２６は、到来したパケットに含まれる識別子を、２ビットのタイプ識別子にエンコードする。このとき、タイプ"Ｐ"，"Ｎ"，"Ｃ"，"Ｘ"の夫々は、タイプ識別子を示す２ビット"００"，"０１"，"１０"，"１１"に夫々エンコードされる。
【０１０６】
エンコードされたタイプ識別子及びパケット受信valid信号は、実施形態１と同様に受
信バッファ書込制御回路２１に入力される。受信バッファ書込制御回路２１は、タイプ識別子に従って、受信部２６から送出されるパケットを受信バッファ１１〜１４のいずれかに保持させる。なお、タイプ識別子及びパケット受信valid信号は、信号線Ｌ１及びＬ２
を介して、実施形態１のオーダーバッファ２２に相当するオーダーバッファ２２Ａに入力される点は、実施形態１と同様である。
【０１０７】
オーダーバッファ２２Ａは、以下の点で実施形態１のオーダーバッファ２２と異なっている。第１に、未割り当ての識別子"non"の発生源が省略されており、ＦＦ群２２１にお
ける末尾のＦＦ＿０１には、"non"が入力されないようになっている。すなわち、書込／
読出制御部２２３からＦＦ＿０１へのタイプ識別子の書込イネーブル信号が発行された場合に、信号線Ｌ２を流れるタイプ識別子がＦＦ＿０１に書き込まれるようになっている。書込／読出制御部２２３は、実施形態１とほぼ同様の構成（図２）を備えている。
【０１０８】
また、各ＦＦ＿４８〜ＦＦ０１の出力端子に接続された各デコーダ２２４は、実施形態１と異なり、タイプ識別子"Ｐ"，"Ｎ"，"Ｃ"及び"Ｘ"に応じた四つの出力端子を有している。四つの出力端子は、デコーダ２２４の後段に設けられた四つのＡＮＤ回路（ＡＮＤ回路群２２６）における、一方の入力端子に接続されている。
【０１０９】
デコーダ２２４は、対応するＦＦに保持されたタイプ識別子のデコードを行う。デコーダ２２４は、デコード結果に従い、ＦＦに保持されたタイプ識別子に対応する出力端子のみにオン信号を出力し、残りの出力端子にはオフ信号を出力する。
【０１１０】
これにより、ＡＮＤ回路群２２６は、デコード結果が"Ｐ"のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿１と表記）と、デコード結果が"Ｎ"のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿２と表記）と、デコード結果が"Ｃ"のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿３と表記）と、デコード結果が"Ｘ"のときにオン信号が入力されるＡＮＤ回路（ＡＮＤ回路２２６＿４と表記）とからなる。
【０１１１】
オーダーバッファ２２Ａには、カウンタ２２２のカウンタ値が入力される有効範囲選択部２２５が追加されている（有効範囲選択部２２５の詳細は後述）。有効範囲選択部２２５の出力端子は、各デコーダの後段に設けられた各ＡＮＤ回路群２２６＿１〜２２６＿４の他方の出力端子に接続されている。
【０１１２】
各ＡＮＤ回路群２２６におけるＡＮＤ回路２２６＿１〜２２６＿３の出力端子は、実施
形態１で説明したＰライン，Ｎライン，Ｃラインを介して、先頭位置検出回路２３Ａの先頭Ｐ位置検出回路２３１，先頭Ｎ位置検出回路２３２，先頭Ｃ位置検出回路２３３に夫々接続されている。
【０１１３】
また、各ＡＮＤ回路２２６＿４の出力端子は信号線を介して、先頭位置検出回路２３Ａに設けられた先頭Ｘ位置検出回路２３４に接続されている。先頭Ｘ位置検出回路２３４と各ＡＮＤ回路２２６＿４とを結ぶ複数の信号線は、各デコーダ２２４によるデコード結果"Ｘ"を先頭Ｘ位置検出回路２３４に伝達するためのＸライン（Ｘ４８〜Ｘ０１ライン）として機能する。
【０１１４】
先頭Ｘ位置検出回路２３４は、ＦＦ群２２１におけるタイプ識別子"Ｘ"の先頭格納位置を検出するため回路であり、図３に示した先頭Ｐ位置検出回路２３１とのほぼ同様の構成を備えている。すなわち、図示しないが、図３に示した先頭Ｐ位置検出回路２３１が有する複数のＡＮＤ回路２３１１及び信号検出回路２３１２と同様のＡＮＤ回路群及び信号検出回路を備えており、これらのＡＮＤ回路群及び信号検出回路とＸ４８〜Ｘ０１ラインとの結線状態は、先頭Ｐ位置検出回路と同様となっている。従って、先頭Ｘ位置検出回路２３４の信号検出回路（図示せず）は、ＦＦ群２２１において最も先頭側でタイプ識別子"
Ｘ"を保持するＦＦのステージ数を示すX＿LINE＿NUM信号を出力することができる。
X＿LINE＿NUM信号は、P＿LINE＿NUM信号，N＿LINE＿NUM信号，C＿LINE＿NUM信号と同様に、調停回路２４及びセレクタ２７に入力される。
【０１１５】
調停回路２４は、実施形態１と同様の手法、すなわち、フォワード順序付けルールに従って、パケットの読出を実行する受信バッファを決定する。例えば、調停回路２４は、優先順位がＰ，Ｃ，Ｎ，Ｘであるフォワード順序付けルールに従って、パケットの読出を実行すべき受信バッファを決定し、セレクタ２７に対する制御信号を出力することができる。
【０１１６】
有効範囲選択部２２５は、ＦＦ群２２１の有効なステージを規定する。すなわち、有効範囲選択部２２５は、各ＡＮＤ回路群２２６のＡＮＤ回路２２６＿１〜２２６＿４と接続される複数の（実施形態２の例では４８本）の制御ラインＣＬ（ＣＬ４８〜ＣＬ０１）を有している。有効範囲選択部２２５は、カウンタ２２２から入力されるカウンタ値に応じた出力ラインにオン信号を出力し、残りの出力ラインにはオフ信号を出力する。
【０１１７】
ここで、カウンタ値の初期値が"００"であると仮定すると、カウンタ値が"０１"のとき（すなわち、ＦＦ＿４８のみがタイプ識別子を保持するとき）は、ＣＬ４８のみにオン信号を出力する。カウンタ値が"０２"のとき（すなわち、ＦＦ＿４８及びＦＦ＿４７にタイプ識別子が保持されているとき）は、ＣＬ４８及びＣＬ４７にオン信号を出力する。このように、有効範囲選択部２２５は、カウンタ値から求まる、タイプ識別子を保持するＦＦと対応する制御ラインＣＬにのみオン信号を出力し、残りの制御ラインＣＬはオフとする。
【０１１８】
従って、タイプ識別子を保持していないＦＦに対応する制御ラインＣＬはオフとなるので、制御ラインＣＬがオフであるＡＮＤ回路群２２６の出力はオフとなる。従って、制御ラインＣＬがオンである、すなわちタイプ識別子を保持しているＦＦに対応するＡＮＤ回路群２２６のみから、デコーダ２２４からのオン信号が先頭位置検出回路２３Ａに入力される。
【０１１９】
以上の説明を除き、実施形態２の構成及び動作は、実施形態１と同様であるので説明を省略する。
【０１２０】
実施形態２におけるパケット読出装置１Ａによれば、オーダーバッファ２２Ａに格納される識別子の中に、"non"を含めることなく、実施形態１で説明したパケット読出装置１
と同様のパケット読出制御を実行することができる。このため、振分単位数（実施形態２の例ではパケットタイプ数）が４である場合には、識別子２ビット幅に設定することができる。また、振分単位数（パケット単位数）を２にする場合には、１ビット幅（０又は１）にすることができる。すなわち、識別子のビット幅を振分単位数に対して必要最小限のビット幅にすることができる。
【０１２１】
なお、実施形態２の構成例において、振分単位（パケットタイプ数）が２にされる場合には、受信部２６におけるエンコード処理で、パケットタイプに応じてエンコード結果が"０"又は"１"となるように設定され、受信バッファ書込制御回路２１がタイプ識別子（"
０"または"１"）に従って受信バッファ群１０Ａ中の二つの受信バッファにパケットを振
り分けて格納するための設定が施される。さらに、各デコーダ２２４が、ＦＦの保持内容のデコード結果が"０"か"１"かに応じて、対応する出力ラインのみにオン信号を出力し、残りをオフにする動作を行うための設定が施される。
【０１２２】
実施形態２の構成は、振分単位数が上述したような２や４と異なる２のｎ乗である場合にも適用が可能である。
【０１２３】
＜実施形態３＞
次に、実施形態３について説明する。実施形態３は、実施形態１で説明したパケット読出装置１と同様の構成を有するので、主として相違点について説明し、共通点については同一の符号を付して説明を省略する。
【０１２４】
実施形態３では、実施形態１のパケット読出制御回路２０を基本構成として、パケットタイプ毎に先頭位置を検出する際の、別の方法について説明する。実施形態１では、ＦＦ群２２１をなす全てのＦＦにデコーダ２２４が設けられ、各ＦＦで保持されるパケットタイプが検査されていた。実施形態３では、ＦＦ群２２１に設けられるデコーダ２２４の数を減らす方法について説明する。図７は、実施形態３におけるデータブロック読出装置（パケット読出装置１Ｂ）の構成例を示す図である。図７において、受信バッファ群１０Ｂは、実施形態１で説明したＰパケット，Ｎパケット及びＣパケットを夫々保持する受信バッファ１１，１２及び１３を備えている、但し、実施形態３では、受信バッファ群１０Ｂに格納可能なパケットの総数は、実施形態１（４８個）と等しいが、各受信バッファ１１〜１３における最大格納数が実施形態１と異なっている。
【０１２５】
実施形態３の例では、受信バッファ１１の最大格納数は１５個，受信バッファ１２の最大格納数は１６個，受信バッファ１３の最大格納数は１７個であり、各受信バッファ１１〜１３は最大格納数を上限として、固定長又は可変長のパケットを格納することができる。
【０１２６】
また、パケット読出装置１Ｂでは、ＦＦ群２２１の出力側に設けられるデコーダ２２４が、後述する検査範囲の決定方法に従って決められた検査範囲に属するステージのＦＦのみに設けられている。
【０１２７】
実施形態３では、以下の検査範囲の決定手法で、デコーダ２２４が設けられるＦＦのステージ数が絞られている。検査範囲の決定にあたり、パケットタイプ数（振分単位数）がｎ、それぞれのパケットタイプに対応する各受信バッファの最大格納数がS1 ... Sn（ｎ
は0より大きい整数）としたとき、最大格納数が最も小さい受信バッファの最大格納数は
、「１」とみなす。この最大格納数「１」に残りの受信バッファの最大格納数の和を加えた数が算出される。そして、算出された数が、各パケットタイプの先頭位置を検査する検
査範囲のステージ数とされ、ＦＦ群２２１の先頭（ＦＦ＿４８）から、検査範囲のステージ数に属する各ＦＦの出力側にデコーダ２２４が設けられている。図８は、実施形態３におけるＦＦ群２２１の検査範囲の決定方法を示す。実施形態３の例では、上述したように、受信バッファ１１，１２及び１３のパケットの最大格納数は、夫々１５個，１６個，１７個であり、受信バッファ群１０Ｂで格納可能なパケットの総数は、受信バッファ１１〜１３の各最大格納数の和である４８（１５＋１６＋１７＝４８）である。従って、ＦＦ群２２１が有すべきＦＦの数（オーダーバッファステージ数）は、受信バッファ群１０Ｂで格納可能なパケットの総数と等しい４８[ステージ]である。
【０１２８】
これに対し、各パケットタイプの先頭位置を検査する範囲（検査範囲）となるステージ数は、以下のようにして決定される。すなわち、受信バッファ１１〜１３の最大格納数の中で最も小さい最大格納数は、受信バッファ１１の最大格納数"１５"[個]である。この最大格納数"１５"を"１"とみなしたときの全ての受信バッファ１１〜１３の最大格納数の合計値を求める。すなわち、"１"と見なされた受信バッファ１１の最大格納数と、残りの受信バッファ１２及び１３の最大格納数"１６"及び"１７"とが加算され、加算結果"３４"が得られる。この加算結果"３４"が、検査範囲となるステージ数として決定される。理由は、以下の通りである。
【０１２９】
もし、１７個のＣパケット及び１６個のＮパケットに対応するタイプ識別子（計３３個）がＦＦ群２２１に格納されている場合には、先頭ステージ（ＦＦ＿４８）から３３ステージ（ＦＦ＿１６）までを使用していることになる。この場合、パケットの送信側は、Ｃパケット及びＮパケットの送信を控える。このため、次に受信有効とされるパケットは必ずＰパケットとなる。よって、先頭ステージ（ＦＦ＿４８）から３４ステージ（ＦＦ＿１５）までの間には、先頭に受信したＰパケットの識別子"Ｐ"が必ず格納されることになる。
【０１３０】
従って、ＦＦ＿４８からＦＦ＿１５までの保持内容を検査すれば、Ｐ，Ｎ，Ｃの全てのタイプ識別子の先頭位置を検出することができる。従って、実施形態３では、図７に示したように、検査範囲（先頭から３４ステージまで）に相当するＦＦ＿４８〜ＦＦ＿１５の出力側にのみ、デコーダ２２４が設けられている。
【０１３１】
この検査範囲の決定手法では、各受信バッファの最大受信可能数が２以上で、且つ全ての受信バッファの最大受信可能数が等しい場合に、検査が必要なステージ数（検査範囲）は最も小さくなる。
【０１３２】
例えば、実施形態１のように、全ての受信バッファ１１〜１３の最大格納数がそれぞれ１６[個]である場合には、受信バッファのいずれか一つの最大格納数を１とみなしたときの全ての受信バッファの最大格納数の合計値を求める。すると、１＋１６＋１６＝３３となり、実施形態３の例よりも検査範囲が小さくなる。
【０１３３】
実施形態３によれば、ＦＦの保持内容をデコードするデコーダ２２４は、検査範囲に属するＦＦ＿４８〜ＦＦ＿１５のみに設けられる。これによって、デコーダ２２４の数、及び各デコーダ２２４と先頭位置検出回路２３とのライン数を減らすことができる。よって、パケット読出制御装置の回路量の削減を図ることができる。
【０１３４】
実施形態１〜３に示した構成は、適宜組み合わせることができる。また、実施形態１〜３で説明した構成は、複数の受信バッファからのパケット（データブロック）読出しに関して、パケット（データブロック）の到来順と、受信バッファ間の優先順位を考慮するようなパケット読出装置（データブロック読出装置）に適用することができる。
【０１３５】
実施形態１〜３では、データブロックがパケットである例について説明したが、データブロックの形式は"パケット"に限定されず、"フレーム"，"データグラム"，"セル"，"フ
ァイル"，"ページ"などと呼ばれる様々なデータブロックの単位であって、振分単位とし
て適用可能な識別子が付与されるものであれば良い。
【０１３６】
また、実施形態１〜３では、振分単位がパケットタイプである例について説明したが、振分単位は、データブロックに関わる様々な単位（属性種別）を適用することができる。また、振分単位は、同種類のデータブロックの転送先を示す識別子であっても良い。例えば、振分単位は、データブロックの転送先の識別子（チャネル種別）であっても良い。この場合、チャネルは実チャネルでも仮想チャネルであってもよい。或いは、振分単位は、データブロックの宛先を示すアドレスであっても良い。
【符号の説明】
【０１３７】
Ｌ１〜Ｌ４・・・信号線
１・・・パケット読出制御装置
１０・・・受信バッファ群
１１，１２，１３・・・受信バッファ
１１Ａ・・・セレクタ
１６・・・監視部
２０・・・パケット読出回路
２１・・・受信バッファ書込制御回路
２２・・・オーダーバッファ
２３・・・先頭位置検出回路
２４・・・調停回路
２５・・・受信バッファ読出制御回路
２６・・・受信部
２７・・・セレクタ
２２１・・・フリップフロップ群（ＦＦ群）
２２２・・・カウンタ
２２３・・・書込／読出制御部
２２４・・・デコーダ
２２５・・・有効範囲選択部
２２６・・・ＡＮＤ回路群
２３１・・・先頭Ｐ位置検出回路
２３２・・・先頭Ｎ位置検出回路
２３３・・・先頭Ｃ位置検出回路
２２３１・・・セレクタ
２２３２・・・デコーダ
２２３３，２２３４，２２３８・・・ＡＮＤ回路群
２２３７・・・シフト制御部
【国際調査報告】
2011111210.tif 000012
2011111210.tif 000013
2011111210.tif 000014
2011111210.tif 000015