(57)【特許請求の範囲】
【請求項１】
転送データを一以上のパケットに変換するパケット化処理部と、
前記パケット化処理部から発行される前記パケットを保存する第１メモリと、
前記パケット化処理部から発行され前記第１メモリに保存される前記パケットの数を、第１計数値として計数する第１カウンタと、
前記第１カウンタによる前記第１計数値に応じて前記パケット化処理部から前記第１メモリへの前記パケットの発行を制御する第１制御部と、
前記第１メモリから前記転送データの受信側における第２メモリへ転送され前記第２メモリに保存される前記パケットの数に対応する第２計数値として、前記パケットを分割して得られるサイクル単位の数を計数する第２カウンタと、
前記第２カウンタによる前記第２計数値に応じて前記第１メモリから前記第２メモリへの前記パケットの転送を制御する第２制御部と、
前記第１メモリから前記第２メモリへの前記パケットの転送に伴う前記第１カウンタによる前記第１計数値の減算を指示する第１開放信号を生成して前記第１カウンタへ出力するとともに、前記第２カウンタによる前記第２計数値に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する第１開放信号生成部と、を有する送信装置。
【請求項２】
前記第２カウンタによる前記第２計数値に基づき、前記第２メモリに前記パケットを保存可能な空き領域が有るか否かの判定を行なう判定部、を有し、
前記第１開放信号生成部は、前記判定部による前記判定の結果に応じて前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する、請求項１に記載の送信装置。
【請求項３】
前記第１開放信号生成部は、
前記判定部が前記空き領域が有ると判定した場合、前記第１メモリから前記第２メモリへの前記パケットの先頭を検出する先頭検出タイミングで前記第１開放信号を前記第１カウンタへ出力する一方、
前記判定部が前記空き領域が無いと判定した場合、前記第１メモリから前記第２メモリへの前記パケットの最後尾を検出する最後尾検出タイミングで前記第１開放信号を前記第１カウンタへ出力する、請求項２に記載の送信装置。
【請求項４】
前記パケットを成す前記サイクル単位のうち、先頭のサイクル単位を検出するタイミングを前記先頭検出タイミングとして検出する先頭検出部と、
前記パケットを成す前記サイクル単位のうち、最後尾のサイクル単位を検出するタイミングを前記最後尾検出タイミングとして検出する最後尾検出部と、を有する、請求項３に記載の送信装置。
【請求項５】
前記判定部は、前記第２カウンタによる前記第２計数値と、前記サイクル単位の数で表わした前記パケットのパケット長と、前記サイクル単位の数で表わした前記第２計数値の上限値と、に基づき、前記第２メモリに前記空き領域が有るか否かの判定を行なう、請求項４に記載の送信装置。
【請求項６】
前記判定部は、
前記第２カウンタの上限値から前記パケットのパケット長を減算した値が前記第２計数値以上である場合、前記空き領域が有ると判定する一方、
前記第２カウンタの上限値から前記パケットのパケット長を減算した値が前記第２計数値よりも小さい場合、前記空き領域が無いと判定する、請求項５に記載の送信装置。
【請求項７】
送信部と、受信部とを有し、
前記送信部は、請求項１〜請求項６のいずれか一項の送信装置であり、
前記受信部は、
前記第２メモリと、
前記第２メモリからの前記パケットの転送に伴う前記第２カウンタによる前記第２計数値の減算を指示する第２開放信号生成して前記第２カウンタへ出力する第２開放信号生成部と、を有する、送受信装置。
【請求項８】
パケット化処理部から発行され第１メモリに保存されるパケットの数を、第１計数値として、第１カウンタによって計数し、
前記第１カウンタによる前記第１計数値に応じて前記パケット化処理部から前記第１メモリへの前記パケットの発行を制御し、
前記第１メモリから前記転送データの受信側における第２メモリへ転送され前記第２メモリに保存される前記パケットの数に対応する第２計数値として、前記パケットを分割して得られるサイクル単位の数を、第２カウンタによって計数し、
前記第２カウンタによる前記第２計数値に応じて前記第１メモリから前記第２メモリへの前記パケットの転送を制御し、
前記第１メモリから前記第２メモリへの前記パケットの転送に伴う前記第１カウンタによる前記第１計数値の減算を指示する第１開放信号を生成して出力し、
前記第２カウンタによる前記第２計数値に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する、送受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件明細書に開示の発明は、送信装置、送受信装置、および送受信方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integration）チップ間やＬＳＩチップ内でデータの転送を行なう際、転送対象のデータは、一以上のパケットに組み立てられてから、パケット蓄積用の第１メモリに一時的に格納される。この後、第１メモリに格納されたパケットは、次段（転送先，受信側）におけるパケット蓄積用の第２メモリへ転送される。
【０００３】
第１メモリおよび第２メモリとしては、ＦＩＦＯ（First-In First-Out）方式のキューが用いられる。以下では、第１メモリをFIFO#1と表記し、第２メモリをFIFO#2と表記する場合がある。また、パケットの組立ラインが２以上存在する場合、組立ライン毎にFIFO#1が備えられ、調停部（アービタ）によって選択されたFIFO#1におけるパケットが、FIFO#2へ転送される。
【０００４】
このようなパケットの転送処理においては、クレジット制御が用いられる。クレジット制御とは、例えば、パケット組立回路からFIFO#1へパケットを格納する際、FIFO#1に格納されるパケットの数を、パケット組立回路側のアップダウンカウンタ（USEDカウンタ#0）によって計数して管理する制御方法である。同様に、クレジット制御は、例えばFIFO#1からFIFO#2へパケットを転送する際にも適用される。つまり、パケット受信側のFIFO#2に格納されるパケットの数は、FIFO#1側のアップダウンカウンタ（USEDカウンタ#1）によって計数され管理される。
【０００５】
マルチプロセッサシステムにおいて、送信側から受信側へ転送されたパケットは、受信側のFIFO#2に格納される。このとき、パケット転送が終了するのを見越して当該パケット転送と並行して次のパケット転送を開始すると、パケットの容量によってはFIFO#2がパケットで溢れてしまう場合がある。この場合、パケットの一部をFIFO#2に格納することができず、システムダウンに繋がるおそれがある。
【０００６】
このようなシステムダウンの発生を確実に抑止するため、最も安全なタイミング、つまり、FIFO#1から読み出されるパケットの最後尾を検出したタイミングで、USEDカウンタ#0の計数値をカウントダウンする開放信号（FREE#1）が発行される。これにより、パケットがその最後尾までFIFO#2へ転送されたタイミングで、USEDカウンタ#0の計数値がカウントダウンされてFIFO#1の一パケット分の領域が開放され、次のパケットがFIFO#1に格納されてFIFO#2へ転送されるように、パケットの転送制御が行なわれる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２２１７５６号公報
【特許文献２】特開２００８−６６８１７号公報
【特許文献３】特開２００８−１１３１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、FIFO#1からFIFO#2へのパケット転送を完了するタイミング、つまりFIFO#1の一パケット分の領域が開放されるタイミングとほぼ同じタイミングで、次のパケットの転送（送受信）が開始される。これにより、パケットをFIFO#2に格納できずFIFO#2がパケットで溢れてしまうことを防止している。
【０００９】
しかし、パケットの最後尾を検出するタイミングでFIFO#1の一パケット分の領域を開放する場合、パケット組立回路からFIFO#1へ発行されるパケット間に無駄な空き時間が発生し、パケットの転送効率が低下するおそれがある。
【００１０】
一つの側面で、本件明細書に開示の発明は、パケットの転送効率の向上をはかることを目的とする。
【課題を解決するための手段】
【００１１】
本件の送信装置は、転送データを一以上のパケットに変換するパケット化処理部と、前記パケット化処理部から発行される前記パケットを保存する第１メモリと、を有する。また、本件の送信装置は、第１カウンタ，第１制御部，第２カウンタ，第２制御部および第１開放信号生成部を有する。前記第１カウンタは、前記パケット化処理部から発行され前記第１メモリに保存される前記パケットの数を、第１計数値として計数する。前記第１制御部は、前記第１カウンタによる前記第１計数値に応じて前記パケット化処理部から前記第１メモリへの前記パケットの発行を制御する。前記第２カウンタは、前記第１メモリから前記転送データの受信側における第２メモリへ転送され前記第２メモリに保存される前記パケットの数に対応する第２計数値として、前記パケットを分割して得られるサイクル単位の数を計数する。前記第２制御部は、前記第２カウンタによる前記第２計数値に応じて前記第１メモリから前記第２メモリへの前記パケットの転送を制御する。前記第１開放信号生成部は、前記第１メモリから前記第２メモリへの前記パケットの転送に伴う前記第１カウンタによる前記第１計数値の減算を指示する第１開放信号を生成して前記第１カウンタへ出力する。そして、前記第１開放信号生成部は、前記第２カウンタによる前記第２計数値に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する。
【発明の効果】
【００１２】
パケットの転送効率を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】マルチプロセッサシステムの構成例を示すブロック図である。
【図２】パケットのフォーマットの一例を示す図である。
【図３】（Ａ）はパケット単位のクレジット制御の一例を説明する図、（Ｂ）はサイクル単位のクレジット制御の一例を説明する図である。
【図４】比較対象技術としての送受信装置の構成例を示すブロック図である。
【図５】図４に示す第１開放信号生成部の動作を説明する図である。
【図６】図４に示す送受信装置の動作を説明するフローチャートである。
【図７】図４に示す送受信装置の動作をより詳細に説明するタイミングチャートである。
【図８】本発明の第１実施形態としての送受信装置の構成例を示すブロック図である。
【図９】図８に示す比較器の動作を説明する図である。
【図１０】図８に示す第１開放信号生成部の動作を説明する図である。
【図１１】図８に示す送受信装置の動作を説明するフローチャートである。
【図１２】図８に示す送受信装置の動作をより詳細に説明するタイミングチャートである。
【図１３】本発明の第２実施形態としての送受信装置の構成例を示すブロック図である。
【図１４】図１３に示す送受信装置の動作を説明するタイミングチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１５】
〔１〕比較対象技術および本実施形態の概要
まず、図１を参照し、本件の技術（送受信装置／送受信方法）や、本件の技術と比較する比較対象技術を適用されるマルチプロセッサシステム１の構成例について説明する。
【００１６】
図１に示すマルチプロセッサシステム１は、例えば、複数のＣＰＵ（Central Processing Unit）１０Ａ，１０Ｂと、複数のメモリ１１Ａ，１１Ｂと、Ｉ／Ｏ（Input/Output）ハブ１２と、ＨＤＤ（Hard Disk Drive）１３と、ＬＡＮ（Local Area Network）１４とを含む。
【００１７】
図１では、ＣＰＵの数が２であるマルチプロセッサシステム１が例示される。２つのＣＰＵ１０Ａ，１０Ｂは、相互に通信可能に直結接続されるとともに、独自のインタフェースを介してそれぞれメモリ１１Ａ，１１Ｂを接続される。また、２つのＣＰＵ１０Ａ，１０Ｂは、Ｉ／Ｏハブ１２を介してＨＤＤ１３およびＬＡＮ１４を接続される。このとき、ＣＰＵ１０Ａ，１０ＢおよびＩ／Ｏハブ１２は、一つのＬＳＩチップに含まれてもよいし、それぞれ異なるＬＳＩチップに含まれてもよい。
【００１８】
図４〜図７を参照し後述する比較対象技術や図８〜図１４を参照し後述する本件の技術は、上述したマルチプロセッサシステム１におけるＣＰＵ１０Ａ，１０Ｂ，Ｉ／Ｏハブ１２，ＨＤＤ１３，ＬＡＮ１４の間におけるデータ転送に適用することができる。
【００１９】
ＬＳＩチップ間やＬＳＩチップ内でデータの転送を行なう際、ＬＳＩ内において、転送対象のデータ（以下、転送データという）は、パケット組立回路（例えば図４，図８の符号１０１参照）によって一以上のパケットに組み立てられる。
【００２０】
組み立てられたパケットは、パケット蓄積用の第１メモリ（例えば図４，図８の符号２０１参照）に一時的に格納される。この後、第１メモリに格納されたパケットは、次段（転送先，受信側）におけるパケット蓄積用の第２メモリ（例えば図４，図８の符号３０１参照）へ転送されて格納される。つまり、パケット組立回路から第１メモリを経由し第２メモリに到るパスが存在する。第１メモリ（FIFO#1）および第２メモリ（FIFO#2）としては、ＦＩＦＯ方式のキューが用いられる。
【００２１】
このようなパケットの転送処理においては、前述したクレジット制御が用いられる。クレジット制御とは、例えば、パケット組立回路からFIFO#1へパケットを格納する際、FIFO#1に格納されるパケットの数を、パケット組立回路側のアップダウンカウンタ（第１カウンタ；例えば図４，図８の符号１０２参照）によって計数して管理する制御方法である。同様に、クレジット制御は、例えばFIFO#1からFIFO#2へパケットを転送する際にも適用される。つまり、パケット受信側のFIFO#2に格納されるパケットの数は、FIFO#1側のアップダウンカウンタ（第２カウンタ；例えば図４，図８の符号２０２参照）によって計数され管理される。以下では、パケット組立回路側のアップダウンカウンタをUSEDカウンタ#0と表記し、FIFO#1側のアップダウンカウンタをUSEDカウンタ#1と表記する場合がある。
【００２２】
クレジット制御としては、パケット単位のクレジット制御とサイクル単位のクレジット制御との２種類がある。各クレジット制御について説明する前に、図２を参照してパケットのフォーマットの一例について説明する。図２に示すフォーマットの一例において、一つのパケットは、ヘッダ部とデータ部とを有し、５つのサイクル単位に分割され、７２ビットのバス線によって転送される。このとき、ヘッダ部は、先頭のサイクル単位Ａとして転送され、データ部は、４つのサイクル単位Ｂ，Ｃ，Ｄ，Ｅとして転送され、一つのパケットのパケット長は、サイクル単位Ａ〜Ｅの数（サイクル数）５であると定義される。
【００２３】
パケット単位のクレジット制御の一例を図３（Ａ）に示す。図３（Ａ）に示す例では、USEDカウンタ#0による計数値が０から１にカウントアップされてから、パケット０（サイクル単位Ａ〜Ｅ）が、パケット組立回路からFIFO#1に入力される。この後、パケット０（サイクル単位Ａ〜Ｅ）が、FIFO#1からFIFO#2へ転送入力される。そして、パケット０の最後尾がFIFO#2に入力されたタイミングで、開放信号（FREE#1）がUSEDカウンタ#0に対して生成出力される。開放信号（FREE#1）を受けたUSEDカウンタ#0は、１から０にカウントダウンする。これにより、USEDカウンタ#0は、FIFO#1に格納されるパケットの量を、パケット単位の数（つまりパケットの数そのもの）で管理する。
【００２４】
サイクル単位のクレジット制御の一例を図３（Ｂ）に示す。図３（Ｂ）に示す例では、USEDカウンタ#0による計数値が０から１にカウントアップされてから、パケット０のサイクル単位Ａが、パケット組立回路からFIFO#1に入力される。以下同様に、USEDカウンタ#0による計数値をカウントアップしてから、パケット０のサイクル単位Ｂ〜Ｅが、一つずつパケット組立回路からFIFO#1に入力され、USEDカウンタ#0による計数値は５までカウントアップされる。この後、パケット０のサイクル単位ＡがFIFO#1からFIFO#2へ転送入力されると、開放信号（FREE#1）がUSEDカウンタ#0に対して生成出力される。開放信号（FREE#1）を受けたUSEDカウンタ#0は、５から４にカウントダウンする。以下同様に、パケット０のサイクル単位Ｂ〜Ｅが、一つずつFIFO#1からFIFO#2へ転送入力され、USEDカウンタ#0による計数値は０までカウントダウンされる。これにより、USEDカウンタ#0は、FIFO#1に格納されるパケットの量を、サイクル単位の数で管理する。
【００２５】
次に、図４を参照して、本件の技術と比較する比較対象技術としての送受信装置の構成例、特に、パケットのクレジット制御に係る構成の一例について説明する。図４はその一例を示すブロック図である。比較対象技術としての送受信装置は、図４に示すように、送信ブロック１００，中継ブロック２００および受信ブロック３００を有する。
【００２６】
送信ブロック１００は、パケット組立回路１０１，USEDカウンタ１０２，パケット長設定レジスタ１０３，最大値設定レジスタ１０４，送信部１０５および受信部１０６を有する。
【００２７】
パケット組立回路１０１は、転送データを一以上のパケット（図２参照）に組み立てるもので、転送データを一以上のパケットに変換するパケット化処理部に相当する。
【００２８】
USEDカウンタ１０２は、パケット組立回路１０１から発行されFIFO#1（第１メモリ２０１）に保存されるパケットの数に対応する第１計数値を計数する第１カウンタ（アップダウンカウンタ）に相当する。以下、USEDカウンタ１０２をUSEDカウンタ#0と表記する。USEDカウンタ#0は、図３（Ａ）により説明したパケット単位のクレジット制御を実行するためのもので、第１計数値として、パケットの数を計数する。つまり、FIFO#1におけるパケットの格納状況は、USEDカウンタ#0によって管理される。
【００２９】
また、USEDカウンタ#0は、第１計数値に応じてパケット組立回路１０１からFIFO#1へのパケットの発行（読出し）を制御する第１制御部に相当する機能を併せもつ。USEDカウンタ#0は、USEDカウンタ#0による第１計数値を１カウントアップしてからパケット発行をパケット組立回路１０１に対し指示する。USEDカウンタ#0は、第１計数値と最大値設定レジスタ１０４に設定されるUSEDカウンタ#0の最大値とを比較し、第１計数値がUSEDカウンタ#0の最大値未満である場合、第１計数値のカウントアップおよびパケット発行指示を行なう。第１計数値がUSEDカウンタ#0の最大値である場合、USEDカウンタ#0は、第１計数値のカウントアップおよびパケット発行指示を停止する。USEDカウンタ#0は、後述の第１開放信号（FREE#1）を受信すると、第１計数値を１カウントダウンする。USEDカウンタ#0は、パケット組立回路１０１からパケットの送信完了通知を受け、パケットの発行完了を確認する。
【００３０】
パケット長設定レジスタ１０３は、一つのパケットを構成するサイクル単位の数（サイクル数）によって規定される、一つのパケットのパケット長（Ｂ）を設定される。例えば、図２に示すパケットのパケット長（Ｂ）としては、５が設定される。
【００３１】
最大値設定レジスタ１０４は、USEDカウンタ#0によって計数される第１計数値の最大値つまりFIFO#1に格納されるパケットの数の最大値を設定される。例えば、パケットの数の最大値としては、２が設定される。
【００３２】
送信部１０５は、ハードウエアによって実現可能なドライバであり、後述する中継ブロック２００における受信部２０６に対し、パケット組立回路１０１からのパケットを送信する。
【００３３】
受信部１０６は、ハードウエアによって実現可能なレシーバであり、後述する中継ブロック２００における送信部２０９からの後述の第１開放信号（FREE#1）を受信してUSEDカウンタ#0に通知する。
【００３４】
中継ブロック２００は、ＦＩＦＯ２０１，USEDカウンタ２０２，パケット検出部２０３，第１開放信号生成部２０４，最大値設定レジスタ２０５，受信部２０６，２０７および送信部２０８，２０９を有する。
【００３５】
ＦＩＦＯ２０１は、送信ブロック１００のパケット組立回路１０１から発行されるパケットをパケット単位で入力されて保存する第１メモリに相当する。以下、ＦＩＦＯ２０１をFIFO#1と表記する。
【００３６】
USEDカウンタ２０２は、FIFO#1から転送データの受信側（受信ブロック３００）における第２メモリ３０１（後述）へ転送され第２メモリ３０１に保存されるパケットの数に対応する第２計数値を計数する第２カウンタに相当する。以下、USEDカウンタ２０２をUSEDカウンタ#1と表記する。USEDカウンタ#1は、図３（Ｂ）により説明したサイクル単位のクレジット制御を実行するためのもので、第２計数値として、一つのパケットを分割して得られるサイクル単位の数を計数する。つまり、FIFO#2におけるパケット（サイクル単位）の格納状況は、USEDカウンタ#1によって管理される。
【００３７】
また、USEDカウンタ#0は、第２計数値に応じてFIFO#1から第２メモリ３０１（後述）へのパケットの転送を制御する第２制御部に相当する機能を併せもつ。USEDカウンタ#1は、USEDカウンタ#1による第２計数値を１カウントアップしてからパケット発行をFIFO#1に対し指示する。USEDカウンタ#1は、第２計数値と最大値設定レジスタ２０５に設定されるUSEDカウンタ#1の最大値（Ａ）とを比較し、第２計数値がUSEDカウンタ#1の最大値Ａ未満である場合、第２計数値のカウントアップおよびパケット発行指示を行なう。第２計数値がUSEDカウンタ#1の最大値Ａである場合、USEDカウンタ#1は、第２計数値のカウントアップおよびパケット発行指示を停止する。USEDカウンタ#1は、後述の第２開放信号（FREE#1）を受信すると、第２計数値を１カウントダウンする。USEDカウンタ#1は、FIFO#1からパケットの送信完了通知を受け、パケットの発行完了を確認する。
【００３８】
パケット検出部２０３は、FIFO#1から発行される（読み出される）パケットを検出するもので、最後尾検出部２０３ａを有する。最後尾検出部２０３ａは、FIFO#1から第２メモリ３０１（後述）へ転送されるパケットを成すサイクル単位のうち、最後尾のサイクル単位を検出し、当該最後尾のサイクル単位の検出タイミングを最後尾検出タイミングとして検出する。最後尾検出部２０３ａは、最後尾検出タイミングでＬ（Low）からＨ（High）に切り換わる最後尾検出信号Ｘを、第１開放信号生成部２０４に出力する。
【００３９】
第１開放信号生成部２０４は、FIFO#1から第２メモリ３０１（後述）へのパケットの転送に伴うUSEDカウンタ#0による第１計数値のカウントダウン（減算）を指示する第１開放信号を生成してUSEDカウンタ#0へ出力する。以下、第１開放信号をFREE#1と表記する。FREE#1生成部２０４は、図５に示す真理値表に従って、以下のように動作する。図５は、図４に示すFREE#1生成部２０４の動作を説明する図であり、FREE#1生成部２０４の入出力の真理値表を示す図である。
【００４０】
FREE#1生成部２０４は、USEDカウンタ２０２からのパケット発行指示と、最後尾検出部２０３ａからの最後尾検出信号Ｆとを入力され、FREE#1（カウントダウン指示）をUSEDカウンタ#0に対し出力する。パケット発行指示は、パケットの発行をFIFO#1に指示するタイミングでＬからＨに切り換わる。最後尾検出信号Ｆは、前述した通り、最後尾検出タイミングでＬからＨに切り換わる。そして、USEDカウンタ#0に対し出力されるFREE#1は、パケット発行指示および最後尾検出信号ＦがいずれもＨとなった場合にＨに切り換わる。それ以外の場合、USEDカウンタ#0に対し出力されるFREE#1はＬに維持される。
【００４１】
最大値設定レジスタ２０５は、USEDカウンタ#1によって計数される第２計数値の最大値つまりFIFO#2に格納されるサイクル単位の数（サイクル数）の最大値（Ａ）を設定される。例えば、サイクル数の最大値（Ａ）としては、パケット２個分に相当するサイクル数である１０が設定される。
【００４２】
受信部２０６は、ハードウエアによって実現可能なレシーバであり、送信ブロック１００における送信部１０５からのパケットをパケット単位で受信しFIFO#1に入力する。
【００４３】
受信部２０７は、ハードウエアによって実現可能なレシーバであり、後述する受信ブロック３００における送信部３０４からの後述の第２開放信号（FREE#2）を受信してUSEDカウンタ#1に通知する。
【００４４】
送信部２０８は、ハードウエアによって実現可能なドライバであり、後述する受信ブロック３００における受信部３０３に対し、FIFO#1からのパケットを送信する。
【００４５】
送信部２０９は、ハードウエアによって実現可能なドライバであり、送信ブロック１００における受信部１０６に対し、第１開放信号生成部２０４からのFREE#1を送信する。
【００４６】
受信ブロック３００は、ＦＩＦＯ３０１，第２開放信号生成部３０２，受信部３０３および送信部３０４を有する。
【００４７】
ＦＩＦＯ３０１は、中継ブロック２００のFIFO#1から転送されるパケットをサイクル単位で入力されて保存する第２メモリに相当する。以下、ＦＩＦＯ３０１をFIFO#2と表記する。
【００４８】
第２開放信号生成部３０２は、FIFO#2からのパケットの転送（読出し）に伴うUSEDカウンタ#1による第２計数値のカウントダウン（減算）を指示する第２開放信号を生成してUSEDカウンタ#1へ出力する。このとき、第２開放信号生成部３０２は、FIFO#2からパケットを成す一サイクル単位が読み出される都度、第２開放信号を生成する。以下、第２開放信号をFREE#2と表記する。
【００４９】
受信部３０３は、ハードウエアによって実現可能なレシーバであり、中継ブロック２００における送信部２０８からのパケットをサイクル単位で受信しFIFO#2に入力する。
【００５０】
送信部３０４は、ハードウエアによって実現可能なドライバであり、中継ブロック２００における受信部２０７に対し、FREE#2生成部３０２からのFREE#2を送信する。
【００５１】
なお、パケット組立回路１０１，USEDカウンタ１０２，ＦＩＦＯ２０１，USEDカウンタ２０２，パケット検出部２０３，FREE#1生成部２０４，ＦＩＦＯ３０１およびFREE#2生成部３０２としての機能は、ハードウエアによって実現されてもよい。また、これらの機能は、マルチプロセッサシステム１内の処理部がプログラムを実行することによって実現されてもよい。
【００５２】
次に、図６に示すフローチャート（ステップＳ１〜Ｓ７）に従って、図４に示す送受信装置の動作、特に、パケットのクレジット制御に係る動作について説明する。
【００５３】
まず、USEDカウンタ#0による第１計数値が、最大値設定レジスタ１０４に設定された最大値（例えば２）であるか否かが、上記第１制御部としての機能によって判断される（ステップＳ１）。第１計数値が最大値である場合（ステップＳ１のＹＥＳルート）、処理は、ステップＳ２〜Ｓ４をスキップしステップＳ５へ移行する。
【００５４】
一方、第１計数値が最大値でない場合（ステップＳ１のＮＯルート）、上記第１制御部としての機能によって、USEDカウンタ#0による第１計数値が１カウントアップされ（ステップＳ２）、USEDカウンタ#0からパケット生成回路１０１へパケット発行指示が出力される。これに伴い、パケットが、パケット生成回路１０１から発行送信され（ステップＳ３）、FIFO#1に格納される（ステップＳ４）。
【００５５】
この後、FIFO#1からパケットの最後尾（最終のサイクル単位）が送信されたことが、最後尾検出部２０３ａによって検出されるのを待機する（ステップＳ５のＮＯルート）。パケットの最後尾が送信されたことが、最後尾検出部２０３ａによって検出されると（ステップＳ５のＹＥＳルート）、FREE#1生成部２０４によってFREE#1が生成されUSEDカウンタ#0へ送信される（ステップＳ６）。FREE#1を受けたUSEDカウンタ#0は、第１計数値を１カウントダウンし（ステップＳ７）、次の処理の開始を待機する。
【００５６】
次に、図７に示すタイミングチャート（矢印Ａ１〜Ａ１６）に従って、図４に示す送受信装置の動作、特に、パケットのクレジット制御に係る動作について、より詳細に説明する。
【００５７】
図４に示す比較対象技術では、転送データは、パケット組立回路１０１にて例えばパケット０に組み立てられ、組み立てられたパケット０は、FIFO#1に一時的に格納される。この後、FIFO#1に格納されたパケットは、次段のFIFO#2に格納される。このように、パケット組立回路１０１からFIFO#1を経由しFIFO#2に到るパスが形成される。
【００５８】
このとき、パケット組立回路１０１からFIFO#1へのパケット転送方式は、パケット単位のクレジット制御とする。FIFO#1からFIFO#2へのパケット転送方式は、サイクル単位のクレジット制御とする。ここで、FIFO#1は、２個のパケットを格納可能であり、FIFO#2は、パケット２個分に相当する１０個のサイクル単位を格納可能であるとする。
【００５９】
図７に示すように、USEDカウンタ#0は、第１計数値を０から１にカウントアップした後、パケット組立回路１０１へパケット発行指示を通知する（矢印Ａ１参照）。これに伴い、転送データは、パケット組立回路１０１によって例えばパケット０に組み立てられる。組み立てられたパケット０（サイクル単位０Ａ〜０Ｅ）は、FIFO#1に一時的に格納される（矢印Ａ２参照）。図７におけるUSEDカウンタ#0の値は、FIFO#1に格納されるパケットの数を示す。
【００６０】
この時点で、USEDカウンタ#0による第１計数値は１であり、まだ最大値２に到達していない。このため、USEDカウンタ#0は、当該第１計数値を１から２にカウントアップした後、パケット組立回路１０１へパケット発行指示を通知する（矢印Ａ３参照）。これに伴い、パケット０に続いてパケット１（サイクル単位１Ａ〜１Ｅ）が組み立てられFIFO#1に一時的に格納される（矢印Ａ４参照）。
【００６１】
この時点で、USEDカウンタ#0による第１計数値は２であり、最大値２に到達している。このため、USEDカウンタ#0は、第１計数値のカウントアップおよびパケット発行指示を停止し、FREE#1を受けて第１計数値が２から１にカウントダウンされるまで待機する。
【００６２】
このようにFIFO#1にパケット０および１が格納された状態で、USEDカウンタ#1は、第２計数値を０から１にカウントアップした後、FIFO#1へパケット発行指示を通知する。これに伴い、パケット０の先頭サイクル単位０Ａが、FIFO#1から読み出され、FIFO#2に送信され入力される（矢印Ａ５，Ａ６参照）。以後、同様に、USEDカウンタ#1は、第２計数値を１ずつカウントアップしてFIFO#1へパケット発行指示を通知することで、パケット０のサイクル単位０Ｂ，０Ｃ，０Ｄ，０Ｅを、順次、FIFO#1から読み出し、FIFO#2に送信して入力する。これにより、USEDカウンタ#1による第２計数値は０から５になる。図７におけるUSEDカウンタ#1の値は、FIFO#2に格納される、サイクル単位の数を示す。
【００６３】
この時点で、USEDカウンタ#1による第２計数値は５であり、まだ最大値１０に到達していない。このため、パケット０のサイクル単位０Ａ〜０Ｅと同様にして、パケット１のサイクル単位１Ａ〜１Ｅが、順次、FIFO#1から読み出され、FIFO#2に送信され入力される。これにより、USEDカウンタ#1による第２計数値は５から１０になる。
【００６４】
この時点で、USEDカウンタ#1による第２計数値は１０であり、最大値に到達している。このため、USEDカウンタ#1は、第２計数値のカウントアップおよびパケット発行指示を停止し、FREE#2を受けて第２計数値が最大値未満の値にカウントダウンされるまで待機する。
【００６５】
一方、最後尾検出部２０３ａによってパケット０の最後尾サイクル単位０Ｅが検出され最後尾検出信号Ｆが立ち上がると、FREE#1が、FREE#1生成部２０４によって生成され（矢印Ａ７参照）、USEDカウンタ#0へ送信される（矢印Ａ８参照）。
【００６６】
USEDカウンタ#0は、FREE#1を受信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#0は、第１計数値を１から２にカウントアップした後、パケット０と同様、パケット２（サイクル単位２Ａ〜２Ｅ）をFIFO#1に一時的に格納する（矢印Ａ９，Ａ１０参照）。
【００６７】
また、図７に示す例では、パケット２のFIFO#1への格納中に、最後尾検出部２０３ａによってパケット１の最後尾サイクル単位１Ｅが検出され最後尾検出信号Ｆが立ち上がる。これにより、FREE#1が、FREE#1生成部２０４によって生成され（矢印Ａ１１参照）、USEDカウンタ#0へ送信される（矢印Ａ１２参照）。USEDカウンタ#0は、FREE#1を受信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#0は、第１計数値を１から２にカウントアップした後、パケット１と同様、パケット３（サイクル単位３Ａ〜３Ｅ）をFIFO#1に一時的に格納する（矢印Ａ１３，Ａ１４参照）。
【００６８】
そして、図７に示す例では、FIFO#2からパケット０のサイクル単位０Ａが読み出されると、FREE#2が、FREE#2生成部３０２によって生成され（矢印Ａ１５参照）、USEDカウンタ#1へ送信される（矢印Ａ１６参照）。USEDカウンタ#1は、FREE#2を受信すると、第２計数値を１０から９にカウントダウンする。以後、同様に、FIFO#2からサイクル単位０Ｂ〜１Ｅが読み出される都度、FREE#2が生成されてUSEDカウンタ#1へ送信される。これにより、FIFO#2からサイクル単位１Ｅが読み出された時点で、USEDカウンタ#1による第２計数値は、０までカウントダウンされる。この時点で、FIFO#2は空状態になっている。
【００６９】
比較対象技術では、図７に示すように、FIFO#2に空きがある場合、パケット組立回路１０１からFIFO#1へ複数のパケット（図７では２つのパケット０，１）が連続的に入力される。これに伴い、USEDカウンタ#0による第１計数値は最大値の２となり、パケット組立回路１０１からパケットが発行されない状態になる。そして、FIFO#1からパケット０の最後尾サイクル単位０Ｅが送信された後に、FREE#1が生成されてUSEDカウンタ#0へ送信され、USEDカウンタ#0が２から１にカウントダウンされる。
【００７０】
ところで、転送データから組み立てられたパケットをFIFO#1に格納してから次段のFIFO#2に格納するパスにおいて、FIFO#1からパケットの最後尾が出力されたタイミングでFREE#1を送信すると、FIFO#1にパケットの一部を格納可能な空きが発生する。例えば、パケット組立回路１０１からFIFO#2までパケットを連続的に送信する場合、図７に示すごとく、パケット０の最後尾０Ｅの送信タイミングでFREE#1を送信した後にパケット組立回路１０１からパケット２を送信すると、パケット１とパケット２との間に空き時間Ｔ１が発生する。このような空き時間Ｔ１により、パケットの転送効率が低下する。一般的に、マルチプロセッサシステムでは、パケットとパケットとの間に空き時間が生じると、パケットの転送効率が低下し、処理性能が低下してしまう。このため、FIFO#2がパケットで溢れてしまうのを確実に防止しながら、パケットの転送効率の向上をはかることが望まれている。
【００７１】
そこで、本件の技術では、USEDカウンタ#1による第２計数値Ｄに応じて、FREE#1をUSEDカウンタ#0へ出力するタイミングが変更される。つまり、第２計数値Ｄに基づき、FIFO#2にパケットを保存可能な空き領域が有るか否かの判定を行ない、その判定の結果に応じてFREE#1をUSEDカウンタ#0へ出力するタイミングを変更する。ここで、USEDカウンタ#1による第２計数値Ｄは、FIFO#2の使用量に相当する情報を、サイクル単位の数で表わしている。
【００７２】
より具体的に、本件の技術では、空き領域が有ると判定した場合、FIFO#1からFIFO#2へのパケットの先頭を検出する先頭検出タイミングでFREE#1をUSEDカウンタ#0へ出力する。一方、空き領域が無いと判定した場合、FIFO#1からFIFO#2へのパケットの最後尾を検出する最後尾検出タイミングでFREE#1をUSEDカウンタ#0へ出力する。
【００７３】
このとき、本件の技術では、パケットを成すサイクル単位のうち、先頭のサイクル単位を検出するタイミングを先頭検出タイミングとして検出する。一方、パケットを成すサイクル単位のうち、最後尾のサイクル単位を検出するタイミングを最後尾検出タイミングとして検出する。
【００７４】
また、本件の技術では、USEDカウンタ#1による第２計数値Ｄと、サイクル単位の数で表わしたパケットのパケット長Ｂと、サイクル単位の数で表わした第２計数値の上限値(USEDカウンタ#1の最大値)Ａと、に基づき、FIFO#2に空き領域（余裕）が有るか否かの判定を行なう。より具体的に、第２計数値の上限値Ａからパケット長Ｂを減算した値Ｃが第２計数値Ｄ以上である場合、前記空き領域が有ると判定する一方、前記値Ｃ（＝Ａ−Ｂ）が第２計数値Ｄよりも小さい場合、空き領域が無いと判定する。
【００７５】
このように、本件の技術では、FIFO#2のパケット格納領域に空きが有るとき、FIFO#1から送信されるパケットの先頭を検出したタイミングで、FREE#1が生成送信される。一方、FIFO#2のパケット格納領域に空きが無いとき、FIFO#1から送信されるパケットの最後尾を検出したタイミングで、FREE#1が生成送信される。FREE_1の送信タイミングをFIFO#2のパケット格納状態に応じて変化させることで、FIFO#2がパケットで溢れてしまうのを確実に防止しながら、パケットの転送効率を向上することができる。
【００７６】
本件の技術では、パケット転送に際して、USEDカウンタ#0/#1が、パケット送信前に計数値を１カウントアップする。また、FREE#1/#2によりFIFO#1/#2における現在の空き状況を送信側に通知することができる。これにより、USEDカウンタ#0/#1は、FIFO#1/#2の格納しているパケット数（パケット格納状態）を管理することができる。したがって、パケット先頭のタイミングであっても次のパケットが溢れないだけの空き領域がFIFO#1/#2に存在することを判断することが可能であり、このような空き領域があると判断できれば、次のパケットのFIFO#1への格納を開始することができる。このため、パケットとパケットとの無駄な空き時間を短縮することができる。
【００７７】
〔２〕第１実施形態
次に、図８を参照して、本発明の第１実施形態としての送受信装置の構成例、特に、パケットのクレジット制御に係る構成の一例について説明する。図８はその一例を示すブロック図である。
【００７８】
第１実施形態としての送受信装置は、図８に示すように、送信ブロック１００，中継ブロック２００Ａおよび受信ブロック３００を有する。送信ブロック１００および中継ブロック２００Ａは送信装置（送信部）に相当し、受信ブロック３００は受信装置（受信部）に相当する。
【００７９】
送信ブロック１００は、図４に示す比較対象技術と同様の、パケット組立回路１０１，USEDカウンタ１０２，パケット長設定レジスタ１０３，最大値設定レジスタ１０４，送信部１０５および受信部１０６を有しているので、その説明は省略する。また、受信ブロック３００は、図４に示す比較対象技術と同様の、ＦＩＦＯ３０１，第２開放信号生成部３０２，受信部３０３および送信部３０４を有する。したがって、以下では、第１実施形態における中継ブロック２００Ａの構成について詳細に説明する。
【００８０】
中継ブロック２００Ａは、ＦＩＦＯ２０１（FIFO#1），USEDカウンタ２０２（USEDカウンタ#2），パケット検出部２０３Ａ，第１開放信号生成部（FREE#1生成部）２０４Ａ，最大値設定レジスタ２０５，受信部２０６，２０７，送信部２０８，２０９および開放信号発行タイミング制御部２１０を有する。以下、開放信号発行タイミング制御部２１０をFREE発行タイミング制御部２１０と表記する。
【００８１】
つまり、中継ブロック２００Ａは、図４に示す比較対象技術におけるパケット検出部２０３およびFREE#1生成部２０４に代えてパケット検出部２０３ＡおよびFREE#1生成部２０４Ａが備えられる点と、FREE発行タイミング制御部２１０が新たに追加された点とで、図４に示す比較対象技術と異なっている。
【００８２】
パケット検出部２０３Ａは、FIFO#1から発行される（読み出される）パケットを検出するもので、最後尾検出部２０３ａおよび先頭検出部２０３ｂを有する。
【００８３】
最後尾検出部２０３ａは、FIFO#1からFIFO#2へ転送されるパケットを成すサイクル単位のうち、最後尾のサイクル単位を検出し、当該最後尾のサイクル単位の検出タイミングを最後尾検出タイミングとして検出する。最後尾検出部２０３ａは、最後尾検出タイミングでＬからＨに切り換わる最後尾検出信号Ｆを、FREE#1生成部２０４Ａに出力する。
【００８４】
先頭検出部２０３ｂは、FIFO#1からFIFO#2へ転送されるパケットを成すサイクル単位のうち、先頭のサイクル単位を検出し、当該先頭のサイクル単位の検出タイミングを先頭検出タイミングとして検出する。先頭検出部２０ｂは、先頭検出タイミングでＬからＨに切り換わる先頭検出信号Ｇを、FREE#1生成部２０４Ａに出力する。
【００８５】
第１実施形態では、USEDカウンタ#1による第２計数値Ｄに応じて、FREE#1をUSEDカウンタ#0へ出力するタイミングを変更すべく、FREE発行タイミング制御部２１０が新たに追加される。FREE発行タイミング制御部２１０は、USEDカウンタ#1による第２計数値Ｄに基づき、FIFO#2にパケットを保存可能な空き領域が有るか否かの判定を行なう判定部に相当する。そして、後述のごとく、FREE#1生成部２０４Ａは、FREE発行タイミング制御部２１０による判定の結果に応じて、FREE#1をUSEDカウンタ#0へ出力するタイミングを変更する。
【００８６】
このため、FREE発行タイミング制御部２１０は、USEDカウンタ#1による第２計数値Ｄと、サイクル単位の数で表わしたパケットのパケット長Ｂと、サイクル単位の数で表わした第２計数値の上限値Ａと、に基づき、FIFO#2に空き領域が有るか否かの判定を行なう。ここで、第２計数値の上限値Ａは、最大値設定レジスタ２０５に予め設定されたUSEDカウンタ#1の最大値に相当するもので、例えば１０である。
【００８７】
より具体的に、FREE発行タイミング制御部２１０は、第２計数値の上限値Ａからパケット長Ｂを減算した値Ｃが第２計数値Ｄ以上である場合、前記空き領域が有ると判定する一方、前記値Ｃ（＝Ａ−Ｂ）が第２計数値Ｄよりも小さい場合、空き領域が無いと判定する。ここで、パケット長Ｂは、パケット長設定レジスタ１０３に予め設定された、一つのパケットを構成するサイクル単位の数であり、例えば５である。
【００８８】
FREE発行タイミング制御部２１０は、上述のような演算および判定を行なうべく、減算器２１１および比較器２１２を有する。減算器２１１は、第２計数値の上限値Ａからパケット長Ｂを減算した値Ｃを算出する。比較器２１２は、図９に示す真理値表に従って、以下のように動作する。図９は、図８に示す比較器２１２の動作を説明する図であり、比較器２１２の入出力の真理値表を示す図である。比較器２１２は、値Ｃと第２計数値Ｄとを比較しＣ≧Ｄである場合、FIFO#2に空き領域が有ると判定し、パケットの先頭でFREE#1を送信すべくパケットの先頭／最後尾の選択信号ＥをＨに立ち上げる。一方、比較器２１２は、値Ｃと第２計数値Ｄとを比較しＣ＜Ｄである場合、FIFO#2に空き領域が無いと判定し、パケットの最後尾でFREE#1を送信すべくパケットの先頭／最後尾の選択信号ＥをＬに立ち下げる。
【００８９】
FREE#1生成部２０４Ａは、FIFO#1からFIFO#2へのパケットの転送に伴うUSEDカウンタ#0による第１計数値のカウントダウン（減算）を指示するFREE#1を生成してUSEDカウンタ#0へ出力する。FREE#1生成部２０４Ａは、図１０に示す真理値表に従って、以下のように動作する。図１０は、図８に示すFREE#1生成部２０４Ａの動作を説明する図であり、FREE#1生成部２０４Ａの入出力の真理値表を示す図である。
【００９０】
FREE#1生成部２０４Ａは、USEDカウンタ２０２からのパケット発行指示と、比較器２１２からのパケットの先頭／最後尾の選択信号Ｅと、最後尾検出部２０３ａからの最後尾検出信号Ｆと、先頭検出部２０３ｂからの先頭検出信号Ｇと、を入力される。そして、FREE#1生成部２０４Ａは、これらの入力に応じて、FREE#1（カウントダウン指示）をUSEDカウンタ#0に対し出力する。
【００９１】
ここで、パケット発行指示は、パケットの発行をFIFO#1に指示するタイミングでＬからＨに切り換わる。選択信号Ｅは、FIFO#2に空き領域（余裕）が有る場合にＨに立ち上がり、FIFO#2に空き領域（余裕）が無い場合にＬに立ち下がる。また、最後尾検出信号Ｆは、最後尾検出タイミングでＬからＨに切り換わる。先頭検出信号Ｇは、先頭検出タイミングでＬからＨに切り換わる。
【００９２】
そして、USEDカウンタ#0に対し出力されるFREE#1は、パケット発行指示および選択信号ＥがＨになった場合、つまりFIFO#2に余裕が有る状態でパケット発行指示が行なわれた場合、先頭検出信号ＧがＨとなると（パケットの先頭検出タイミングで）Ｈに立ち上がる。一方、USEDカウンタ#0に対し出力されるFREE#1は、パケット発行指示がＨで選択信号ＥがＬになった場合、つまりFIFO#2に余裕が無い状態でパケット発行指示が行なわれた場合、最後尾検出信号ＦがＨとなると（パケットの最後尾検出タイミングで）Ｈに立ち上がる。それ以外の場合、USEDカウンタ#0に対し出力されるFREE#1はＬに維持される。
【００９３】
次に、図１１に示すフローチャート（ステップＳ１１〜Ｓ２３）に従って、図８に示す送受信装置の動作、特に、パケットのクレジット制御に係る動作について説明する。
【００９４】
まず、USEDカウンタ#0による第１計数値が、最大値設定レジスタ１０４に設定された最大値（例えば２）であるか否かが、上記第１制御部としての機能によって判断される（ステップＳ１１）。第１計数値が最大値である場合（ステップＳ１１のＹＥＳルート）、処理は、ステップＳ１２〜Ｓ１４をスキップしステップＳ１５へ移行する。
【００９５】
一方、第１計数値が最大値でない場合（ステップＳ１１のＮＯルート）、上記第１制御部としての機能によって、USEDカウンタ#0による第１計数値が１カウントアップされ（ステップＳ１２）、USEDカウンタ#0からパケット生成回路１０１へパケット発行指示が出力される。これに伴い、パケットが、パケット生成回路１０１から発行送信され（ステップＳ１３）、FIFO#1に格納される（ステップＳ１４）。
【００９６】
この後、減算器２１２によって、第２計数値の上限値（USEDカウンタ#1の最大値）Ａからパケット長Ｂを減算した値Ｃが算出される（ステップＳ１５）。そして、比較器２１２によって、USEDカウンタ#1による第２計数値Ｄ（FIFO#2の使用量に相当するサイクル単位の数）が、ステップＳ１５で算出された値Ｃ以下であるか否かの判定が行なわれる（ステップＳ１６）。
【００９７】
第２計数値Ｄが値Ｃ以下である場合、つまりFIFO#2にパケット長Ｂのパケットを格納する余裕が有る場合（ステップＳ１６のＹＥＳルート）、FIFO#1からのパケット送信が開始される（ステップＳ１７）。そして、FIFO#1からパケットの先頭（最初のサイクル単位）が送信されたことが、先頭検出部２０３ｂによって検出されるのを待機する（ステップＳ１８のＮＯルート）。
【００９８】
パケットの先頭が送信されたことが、先頭検出部２０３ｂによって検出されると（ステップＳ１８のＹＥＳルート）、FREE#1生成部２０４ＡによってFREE#1が生成されUSEDカウンタ#0へ送信される（ステップＳ２２）。FREE#1を受けたUSEDカウンタ#0は、第１計数値を１カウントダウンし（ステップＳ２３）、次の処理の開始を待機する。
【００９９】
一方、第２計数値Ｄが値Ｃを超えている場合、つまりFIFO#2にパケット長Ｂのパケットを格納する余裕が無い場合（ステップＳ１６のＮＯルート）、FIFO#1からのパケット送信が開始され（ステップＳ１９）、FIFO#1からパケットの先頭（最初のサイクル単位）が送信される（ステップＳ２０）。このとき、FIFO#1からパケットの最後尾（最終のサイクル単位）が送信されたことが、最後尾検出部２０３ａによって検出されるのを待機する（ステップＳ２１のＮＯルート）。
【０１００】
パケットの最後尾が送信されたことが、最後尾検出部２０３ａによって検出されると（ステップＳ２１のＹＥＳルート）、FREE#1生成部２０４ＡによってFREE#1が生成されUSEDカウンタ#0へ送信される（ステップＳ２２）。FREE#1を受けたUSEDカウンタ#0は、第１計数値を１カウントダウンし（ステップＳ２３）、次の処理の開始を待機する。
【０１０１】
次に、図１２に示すタイミングチャート（矢印Ａ１〜Ａ６，Ａ５′〜Ａ１２′，Ａ１３〜Ａ１６）に従って、図８に示す送受信装置の動作、特に、パケットのクレジット制御に係る動作について、より詳細に説明する。
【０１０２】
図８に示す第１実施形態の送受信装置でも、転送データは、パケット組立回路１０１にて例えばパケット０に組み立てられ、組み立てられたパケット０は、FIFO#1に一時的に格納される。この後、FIFO#1に格納されたパケットは、次段のFIFO#2に格納される。このように、パケット組立回路１０１からFIFO#1を経由しFIFO#2に到るパスが形成される。
【０１０３】
このとき、パケット組立回路１０１からFIFO#1へのパケット転送方式は、パケット単位のクレジット制御とする。FIFO#1からFIFO#2へのパケット転送方式は、サイクル単位のクレジット制御とする。ここで、FIFO#1には２個のパケットを格納可能であり、レジスタ１０４にはUSEDカウンタ#0による第１計数値の最大値として２が設定される。また、FIFO#2にはパケット２個分に相当する１０個のサイクル単位を格納可能であり、レジスタ２０５にはUSEDカウンタ#1による第２計数値の最大値Ａとして１０が設定される。さらに、一パケットのパケット長Ｂは５サイクル単位であるとし、レジスタ１０３にはパケット長Ｂとして５が設定される。
【０１０４】
図１２に示すように、USEDカウンタ#0は、第１計数値を０から１にカウントアップした後、パケット組立回路１０１へパケット発行指示を通知する（矢印Ａ１参照）。これに伴い、転送データは、パケット組立回路１０１によって例えばパケット０に組み立てられる。組み立てられたパケット０（サイクル単位０Ａ〜０Ｅ）は、FIFO#1に一時的に格納される（矢印Ａ２参照）。図１２におけるUSEDカウンタ#0の値は、FIFO#1に格納されるパケットの数を示す。
【０１０５】
この時点で、USEDカウンタ#0による第１計数値は１であり、まだ最大値２に到達していない。このため、USEDカウンタ#0は、当該第１計数値を１から２にカウントアップした後、パケット組立回路１０１へパケット発行指示を通知する（矢印Ａ３参照）。これに伴い、パケット０に続いてパケット１（サイクル単位１Ａ〜１Ｅ）が組み立てられFIFO#1に一時的に格納される（矢印Ａ４参照）。
【０１０６】
この時点で、USEDカウンタ#0による第１計数値は２であり、最大値２に到達している。このため、USEDカウンタ#0は、第１計数値のカウントアップおよびパケット発行指示を停止し、FREE#1を受けて第１計数値が２から１にカウントダウンされるまで待機する。
【０１０７】
このようにFIFO#1にパケット０および１が格納された状態で、USEDカウンタ#1は、第２計数値Ｄを０から１にカウントアップした後、FIFO#1およびFREE#1生成部２０４Ａへパケット発行指示を通知する。これに伴い、パケット０の先頭サイクル単位０Ａが、FIFO#1から読み出され、FIFO#2に送信され入力される（矢印Ａ５，Ａ６参照）。図１２におけるUSEDカウンタ#1の値は、FIFO#2に格納される、サイクル単位の数を示す。
【０１０８】
このとき、FREE#1生成部２０４Ａに入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝Ａ−Ｂ＝１０−５＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは１であるため、Ｃ≧ＤつまりFIFO#2に余裕が有ると判断される。したがって、比較器２１２からFREE#1生成部２０４Ａに入力される選択信号Ｅが、Ｈ状態になる（図９参照）。さらに、パケット０の先頭サイクル単位０ＡがFIFO#2に送信されたことが先頭検出部２０３ｂによって検出されるため、先頭検出部２０３ｂからFREE#1生成部２０４Ａに入力される先頭検出信号Ｇが、Ｈ状態になる。
【０１０９】
これにより、図１０に示すように、FREE#1生成部２０４ＡからUSEDカウンタ#0へ送信されるFREE#1はＨ状態になり（矢印Ａ７′参照）、カウントダウン指示がUSEDカウンタ#0に送信される（矢印Ａ８′参照）。
【０１１０】
USEDカウンタ#0は、FREE#1を受信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#0は、第１計数値を１から２にカウントアップした後、パケット０と同様、パケット２（サイクル単位２Ａ〜２Ｅ）をFIFO#1に一時的に格納する（矢印Ａ９′，Ａ１０′参照）。
【０１１１】
一方、USEDカウンタ#1は、第２計数値Ｄを０から１にカウントアップしパケット発行指示の通知を行なった後、同様に、USEDカウンタ#1は、第２計数値Ｄを１ずつカウントアップしてFIFO#1へパケット発行指示を通知することで、パケット０のサイクル単位０Ｂ，０Ｃ，０Ｄ，０Ｅを、順次、FIFO#1から読み出し、FIFO#2に送信して入力する。これにより、USEDカウンタ#1による第２計数値Ｄは１から５になる。
【０１１２】
パケット０の最後尾サイクル単位０ＥをFIFO#2に入力する際、第２計数値Ｄは５であるため、比較器２１２からFREE#1生成部２０４Ａに入力される選択信号ＥはＨ状態になるが、先頭検出部２０３ｂからFREE#1生成部２０４Ａに入力される先頭検出信号ＧはＬ状態になる。したがって、図１０に示すように、FREE#1生成部２０４ＡからUSEDカウンタ#0へ送信されるFREE#1はＬ状態になり、カウントダウン指示はUSEDカウンタ#0に送信されない。
【０１１３】
また、パケット０の最後尾サイクル単位０ＥをFIFO#2に入力した時点で、USEDカウンタ#1による第２計数値は５であり、まだ最大値１０に到達していない。このため、パケット０のサイクル単位０Ａ〜０Ｅと同様にして、パケット１のサイクル単位１Ａ〜１Ｅが、順次、FIFO#1から読み出され、FIFO#2に送信され入力される。
【０１１４】
このとき、USEDカウンタ#1は、第２計数値Ｄを５から６にカウントアップした後、FIFO#1およびFREE#1生成部２０４Ａへパケット発行指示を通知する（矢印Ａ５′参照）。これに伴い、パケット１の先頭サイクル単位１Ａが、FIFO#1から読み出され、FIFO#2に送信され入力される（矢印Ａ６′参照）。
【０１１５】
このとき、FREE#1生成部２０４Ａに入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは６であるため、Ｃ＜ＤつまりFIFO#2に余裕が無いと判断される。したがって、比較器２１２からFREE#1生成部２０４Ａに入力される選択信号Ｅが、Ｌ状態になる（図９参照）。さらに、パケット１の最後尾サイクル単位１Ｅはまだ送信されていないので、最後尾検出部２０３ａからFREE#1生成部２０４Ａに入力される最後尾検出信号Ｆが、Ｌ状態になる。
【０１１６】
これにより、図１０に示すように、FREE#1生成部２０４ＡからUSEDカウンタ#0へ送信されるFREE#1はＬ状態になり、カウントダウン指示はUSEDカウンタ#0に送信されない。
【０１１７】
この後、パケット１の最後尾サイクル単位１ＥをFIFO#2に入力する際、FREE#1生成部２０４Ａに入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは１０であるため、Ｃ＜ＤつまりFIFO#2に余裕が無いと判断される。したがって、比較器２１２からFREE#1生成部２０４Ａに入力される選択信号Ｅが、Ｌ状態になる（図９参照）。さらに、パケット１の最後尾サイクル単位１ＥがFIFO#2に送信されたことが最後尾検出部２０３ａによって検出されるため、最後尾検出部２０３ａからFREE#1生成部２０４Ａに入力される最後尾検出信号Ｆが、Ｈ状態になる。
【０１１８】
これにより、図１０に示すように、FREE#1生成部２０４ＡからUSEDカウンタ#0へ送信されるFREE#1はＨ状態になり（矢印Ａ１１′参照）、カウントダウン指示がUSEDカウンタ#0に送信される（矢印Ａ１２′参照）。
【０１１９】
この時点で、USEDカウンタ#1による第２計数値Ｄは１０であり、最大値Ａに到達している。このため、USEDカウンタ#1は、第２計数値Ｄのカウントアップおよびパケット発行指示を停止し、FREE#2を受けて第２計数値Ｄが最大値Ａ未満の値にカウントダウンされるまで待機する。
【０１２０】
一方、USEDカウンタ#0は、FREE#1を受信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#0は、第１計数値を１から２にカウントアップした後、パケット２と同様、パケット３（サイクル単位３Ａ〜３Ｅ）をFIFO#1に一時的に格納する（矢印Ａ１３，Ａ１４参照）。
【０１２１】
そして、図１２に示す例では、FIFO#2からパケット０のサイクル単位０Ａが読み出されると、FREE#2が、FREE#2生成部３０２によって生成され（矢印Ａ１５参照）、USEDカウンタ#1へ送信される（矢印Ａ１６参照）。USEDカウンタ#1は、FREE#2を受信すると、第２計数値Ｄを１０から９にカウントダウンする。以後、同様に、FIFO#2からサイクル単位０Ｂ〜１Ｅが読み出される都度、FREE#2が生成されてUSEDカウンタ#1へ送信される。これにより、FIFO#2からサイクル単位１Ｅが読み出された時点で、USEDカウンタ#1による第２計数値Ｄは、０までカウントダウンされる。この時点で、FIFO#2は空状態になっている。
【０１２２】
上述したように、第１実施形態の送受信装置では、Ｃ≧Ｄの時つまりFIFO#2に余裕が有る場合、FIFO#1から送信されるパケットの先頭を検出したタイミングの通知で、FREE生成部２０４ＡからUSEDカウンタ#0へFREE#1（カウントダウン指示）が送信される。このとき、FIFO#1から送信されるパケットの最後尾を検出したタイミングの通知は無視される。
【０１２３】
また、Ｃ＜Ｄの時つまりFIFO#2に余裕が無い場合、FIFO#1から送信されるパケットの先頭を検出したタイミングの通知は無視される。しかし、FIFO#1から送信されるパケットの最後尾を検出したタイミングの通知で、FREE生成部２０４ＡからUSEDカウンタ#0へFREE#1（カウントダウン指示）が送信される。
【０１２４】
このように、第１実施形態の送受信装置では、パケット組立回路１０１からFIFO#1を通りFIFO#2までのパケット転送について、FIFO#1からパケットを送信する際、USEDカウンタ#0へFREE#1を送信するタイミングが変更される。これにより、最恵条件（例えばFIFO#2の容量が十分に大きい場合）であれば、現在のパケットと次のパケットとの間の空き時間をゼロにすることができ、パケットの転送効率を飛躍的に向上させることができる。
【０１２５】
パケット長によっては上記空き時間をゼロにできない場合でも、FIFO#2に空き領域が有ると判定すると同時に次のパケットの送信を開始することができ、比較対象技術の場合と比較して、次のパケットをFIFO#1へより早く送信することができる。
【０１２６】
逆に、後段のFIFO#2の空き領域が少なくなった場合、前段のFIFO#1においては、パケットの最後尾が送信された後にFREE#1が送信されてパケットの格納領域が開放される。これにより、パケットの転送タイミングを遅くすることができ、システムダウンの発生を防止すべく、前段のFIFO#1に、パケット保存可能な空き領域を確保することができる。
【０１２７】
これにより、パケットの一部をFIFO#1/#2に格納できないことによるシステムダウンを回避しつつ、パケット間の空き時間を短縮してパケットの転送効率を向上させることができる。
【０１２８】
例えば図１２に示すように、FIFO#2に空き領域が有るときには、パケット組立回路１０１からFIFO#1へパケット０およびパケット１が連続して送信される。これに伴い、USEDカウンタ#0による第１計数値は最大値の２となり、パケット組立回路１０１からパケットは出力されなくなる。そして、FIFO#1からパケット０の先頭サイクル単位０Ａが送信された後に、USEDカウンタ#0にFREE#1が送信され、USEDカウンタ#0による第１計数値が１にカウントダウンされる。これにより、パケット組立回路１０１は、パケット２を送信することができる状態になる。したがって、図７に示す空き時間Ｔ１と図１２に示す空き時間Ｔ２とを比較しても明らかなように、本実施形態の送受信装置によれば、パケット１とパケット２との間の空き時間を、比較対象技術よりも短縮することができる。
【０１２９】
換言すると、FIFO_2に空き領域が有りUSEDカウンタ#1による第１計数値が小さいとき（例えば５以下）、FIFO#1からパケットの先頭が送信された後に、FREE#1が送信されUSEDカウンタ#0による第１計数値が１減算される。これに伴い、パケット組立回路１０１は、パケットを送信することができ、パケット組立回路１０１からFIFO#1のパケットを、比較対象技術に比べ、より早く送信することができる。
【０１３０】
一方、FIFO#2の空き領域が少なくなりUSEDカウンタ#1の第２係数値が大きいとき（例えば６以上）、FIFO#1からパケットの最後尾が送信された後に、FREE#1が送信されUSEDカウンタ#0による第１計数値が１減算される。これにより、パケットの転送タイミングを遅くして、FIFO#1にパケット保存可能な空き領域を確保することができ、送信したパケットを格納できなくなることはない。
【０１３１】
〔３〕第２実施形態
次に、図１３を参照して、本発明の第２実施形態としての送受信装置の構成例、特に、パケットのクレジット制御に係る構成の一例について説明する。図１３はその一例を示すブロック図である。
【０１３２】
上述した第１実施形態では、パケットの組立ラインが一つ存在する場合について説明したが、本件は、これに限定されるものでなく、パケットの組立ラインが２以上存在する場合にも適用される。第２実施形態では、パケットの組立ラインが二つ存在する場合、つまり２チャンネル合流型のパケットのクレジット制御に適用した場合について説明する。二つのチャネルをそれぞ０chおよび１chと表記する場合がある。また、０chに属する構成要素を示す符号には“−０”を付す一方、１chに属する構成要素を示す符号には“−１”を付す。
【０１３３】
第２実施形態としての送受信装置は、図１３に示すように、２つの送信ブロック１００−０，１００−１と、中継ブロック２００Ｂと、受信ブロック３００とを有する。送信ブロック１００−０，１００−１および中継ブロック２００Ｂは送信装置（送信部）に相当し、受信ブロック３００は受信装置（受信部）に相当する。なお、受信ブロック３００は、第１実施形態と同様に構成されているので、その説明は省略する。
【０１３４】
送信ブロック１００−０は、０chに対応するもので、パケット組立回路１０１−０，USEDカウンタ１０２−０，パケット長設定レジスタ１０３，最大値設定レジスタ１０４，送信部１０５−０および受信部１０６−０を有する。パケット組立回路１０１−０，USEDカウンタ１０２−０，送信部１０５−０および受信部１０６−０は、０chの組立ラインにおいて、第１実施形態のパケット組立回路１０１，USEDカウンタ１０２，送信部１０５および受信部１０６と同様の機能を果たす。以下、USEDカウンタ１０２−０をUSEDカウンタ#00と表記する。パケット長設定レジスタ１０３および最大値設定レジスタ１０４は、第１実施形態と同様の機能を果たし、０chおよび１chの組立ラインによって共用され、送信ブロック１００−０に備えられ、送信ブロック１００−１には備えられない。
【０１３５】
送信ブロック１００−１は、１chに対応するもので、パケット組立回路１０１−１，USEDカウンタ１０２−１，送信部１０５−１および受信部１０６−１を有する。パケット組立回路１０１−１，USEDカウンタ１０２−１，送信部１０５−１および受信部１０６−１は、１chの組立ラインにおいて、第１実施形態のパケット組立回路１０１，USEDカウンタ１０２，送信部１０５および受信部１０６と同様の機能を果たす。以下、USEDカウンタ１０２−１をUSEDカウンタ#01と表記する。
【０１３６】
中継ブロック２００Ｂは、ＦＩＦＯ２０１−０，２０１−１，USEDカウンタ２０２（USEDカウンタ#1），パケット検出部２０３Ａ−０，２０３Ａ−１，第１開放信号生成部２０４Ａ−０，２０４Ａ−１，最大値設定レジスタ２０５，受信部２０６−０，２０６−１，２０７，送信部２０８，２０９−０，２０９−１，FREE発行タイミング制御部２１０およびアービタ２１３を有する。
【０１３７】
ＦＩＦＯ２０１−０，２０１−１は、それぞれ０ch，１chの組立ラインにおいて第１実施形態のＦＩＦＯ２０１（FIFO#1）と同様の機能を果たす。以下、ＦＩＦＯ２０１−０，２０１−１をそれぞれFIFO#10，FIFO#11と表記する。
【０１３８】
USEDカウンタ#1，最大値設定レジスタ２０５，受信部２０６，送信部２０８およびFREE発行タイミング制御部２１０は、それぞれ第１実施形態と同様の機能を果たし、０chおよび１chの組立ラインによって共用される。
【０１３９】
パケット検出部２０３Ａ−０，２０３Ａ−１は、それぞれ０ch，１chの組立ラインにおいて第１実施形態のパケット検出部２０３Ａと同様の機能を果たす。
【０１４０】
第１開放信号生成部２０４Ａ−０，２０４Ａ−１は、それぞれ０ch，１chの組立ラインにおいて第１実施形態のFREE#1生成部２０４Ａと同様の機能を果たす。第１開放信号生成部２０４Ａ−０は、０chのUSEDカウンタ#00に対し第１開放信号（カウントダウン指示）を送信する。同様に、第１開放信号生成部２０４Ａ−１は、１chのUSEDカウンタ#01に対し第１開放信号（カウントダウン指示）を送信する。以下、０chの第１開放信号をFREE#00と表記し、第１開放信号生成部２０４Ａ−０をFREE#00生成部２０４Ａ−０と表記し、１chの第１開放信号をFREE#01と表記し、第１開放信号生成部２０４Ａ−１をFREE#01生成部２０４Ａ−１と表記する場合がある。
【０１４１】
受信部２０６−０，２０６−１は、それぞれ０ch，１chの組立ラインにおいて第１実施形態の受信部２０６と同様の機能を果たす。第２実施形態において、受信部２０６−０，２０６−１は、それぞれ送信部１０５−０，１０５−１からパケットを受信しFIFO#10，FIFO#11に入力する。
【０１４２】
送信部２０９−０，２０９−１は、それぞれ０ch，１chの組立ラインにおいて第１実施形態の送信部２０９と同様の機能を果たす。第２実施形態において、送信部２０９−０，２０９−１は、それぞれFREE#00，FREE#01を受信部１０６−０，１０６−１へ送信する。
【０１４３】
アービタ２１３は、例えば、図示しない制御部や処理部からの指示を受け、FIFO#10およびFIFO#11のいずれか一方に対しパケットの送信許可を出力することで、０chおよび１chのいずれか一方を選択する調停部としての機能を果たす。送信許可を受けたFIFO#10またはFIFO#11におけるパケット（サイクル単位）が、アービタ２１３および送信部２０８を通じて受信ブロック３００へ送信される。
【０１４４】
次に、図１４に示すタイミングチャート（矢印Ｂ１〜Ｂ１８）に従って、図１３に示す送受信装置の動作、特に、パケットのクレジット制御に係る動作について、詳細に説明する。
【０１４５】
図１３に示す第２実施形態の送受信装置では、０chおよび１chのそれぞれにおいて、転送データは、パケット組立回路１０１−０および１０１−１にて例えばパケット０および２に組み立てられる。組み立てられたパケット０，２は、それぞれFIFO#10，FIFO#11に一時的に格納される。そして、アービタ２１３によって選択されたFIFO#10またはFIFO#11のパケット（サイクル単位）が、次段のFIFO#2に送信されて格納される。アービタ２１３は、２つのチャネル０chおよび１chを交互に選択し、FIFO#10のパケットとFIFO#11のパケットとを交互に受信ブロック３００へ出力する。
【０１４６】
このとき、パケット組立回路１０１−０，１０１−１からFIFO#10，FIFO#11へのパケット転送方式は、パケット単位のクレジット制御とする。FIFO#10，FIFO#11からアービタ２１３経由でFIFO#2へのパケット転送方式は、サイクル単位のクレジット制御とする。ここで、FIFO#10，FIFO#11には２個のパケットを格納可能であり、レジスタ１０４にはUSEDカウンタ#00/#01による第１計数値の最大値として２が設定される。また、第１実施形態と同様、FIFO#2にはパケット２個分に相当する１０個のサイクル単位を格納可能であり、レジスタ２０５にはUSEDカウンタ#1による第２計数値の最大値Ａとして１０が設定される。さらに、一パケットのパケット長Ｂは５サイクル単位であるとし、レジスタ１０３にはパケット長Ｂとして５が設定される。
【０１４７】
ここで、動作開始時点において、アービタ２１３は、０chのFIFO#10に対し送信許可を出力し、０chのFIFO#10を選択しているものとする。この状態で、図１４に示すように、USEDカウンタ#00/#01は、第１計数値を０から１にカウントアップした後、パケット組立回路１０１−０／１へパケット発行指示を通知する（矢印Ｂ１／Ｂ５参照）。これに伴い、転送データは、パケット組立回路１０１−０／１によって例えばパケット０／１に組み立てられる。組み立てられたパケット０（サイクル単位０Ａ〜０Ｅ）およびパケット１（サイクル単位１Ａ〜１Ｅ）は、それぞれFIFO#10/#11に一時的に格納される（矢印Ｂ２／Ｂ６参照）。図１４におけるUSEDカウンタ#00/#01の値は、FIFO#10/#11に格納されるパケットの数を示す。
【０１４８】
この時点で、USEDカウンタ#00/#01による第１計数値は１であり、まだ最大値２に到達していない。このため、USEDカウンタ#00/#01は、当該第１計数値を１から２にカウントアップした後、パケット組立回路１０１−０／１へパケット発行指示を通知する（矢印Ｂ３／Ｂ７参照）。これに伴い、パケット０／１に続いてパケット２（サイクル単位２Ａ〜２Ｅ）およびパケット３（サイクル単位３Ａ〜３Ｅ）が組み立てられFIFO#10/#11に一時的に格納される（矢印Ｂ４／Ｂ８参照）。
【０１４９】
この時点で、USEDカウンタ#00/#01による第１計数値は２であり、最大値２に到達している。このため、USEDカウンタ#00/#01は、第１計数値のカウントアップおよびパケット発行指示を停止し、FREE#00/#01を受けて第１計数値が２から１にカウントダウンされるまで待機する。
【０１５０】
このとき、図１４に示す例では、アービタ２１３によって０chのFIFO#10が選択されている。したがって、USEDカウンタ#1は、第２計数値Ｄを０から１にカウントアップした後、FIFO#10およびFREE#00生成部２０４Ａ−０へパケット発行指示を通知する。これに伴い、パケット０の先頭サイクル単位０Ａが、FIFO#10から読み出され、アービタ２１３を経由してFIFO#2に送信され入力される（矢印Ｂ９，Ｂ１０参照）。図１４におけるUSEDカウンタ#1の値は、FIFO#2に格納される、サイクル単位の数を示す。
【０１５１】
このとき、FREE#00生成部２０４Ａ−０に入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝Ａ−Ｂ＝１０−５＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは１であるため、Ｃ≧ＤつまりFIFO#2に余裕が有ると判断される。したがって、比較器２１２からFREE#00生成部２０４Ａ−０に入力される選択信号Ｅが、Ｈ状態になる（図９参照）。さらに、パケット０の先頭サイクル単位０ＡがFIFO#2に送信されたことが、パケット検出部２０３Ａ−０の先頭検出部２０３ｂによって検出されるため、先頭検出部２０３ｂからFREE#00生成部２０４Ａ−０に入力される先頭検出信号Ｇが、Ｈ状態になる。
【０１５２】
これにより、図１０に示すように、FREE#00生成部２０４Ａ−０からUSEDカウンタ#00へ送信されるFREE#00はＨ状態になり（矢印Ｂ１１参照）、カウントダウン指示がUSEDカウンタ#00に送信される（矢印Ｂ１２参照）。
【０１５３】
USEDカウンタ#00は、FREE#00を受１信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#00は、第１計数値を１から２にカウントアップした後、パケット０と同様、パケット４（サイクル単位４Ａ〜４Ｅ）をFIFO#10に一時的に格納する（矢印Ｂ１３，Ｂ１４参照）。
【０１５４】
一方、USEDカウンタ#1は、第２計数値Ｄを０から１にカウントアップしパケット発行指示の通知を行なった後、同様に、USEDカウンタ#1は、第２計数値Ｄを１ずつカウントアップしてFIFO#10へパケット発行指示を通知することで、パケット０のサイクル単位０Ｂ，０Ｃ，０Ｄ，０Ｅを、順次、FIFO#10から読み出し、アービタ２１３経由でFIFO#2に送信して入力する。これにより、USEDカウンタ#1による第２計数値Ｄは１から５になる。
【０１５５】
パケット０の最後尾サイクル単位０ＥをFIFO#2に入力する際、第２計数値Ｄは５であるため、比較器２１２からFREE#00生成部２０４Ａ−０に入力される選択信号ＥはＨ状態になるが、パケット検出部２０３Ａ−０の先頭検出部２０３ｂからFREE#00生成部２０４Ａ−０に入力される先頭検出信号ＧはＬ状態になる。したがって、図１０に示すように、FREE#00生成部２０４Ａ−１からUSEDカウンタ#00へ送信されるFREE#00はＬ状態になり、カウントダウン指示はUSEDカウンタ#00に送信されない。
【０１５６】
この後、パケット０の最後尾サイクル単位０ＥをFIFO#2に入力した時点で、アービタ２１３は、１chのFIFO#11に対し送信許可を出力し、１chのFIFO#11を選択するように切り換える。このとき、USEDカウンタ#1による第２計数値は５であり、まだ最大値１０に到達していない。このため、パケット０のサイクル単位０Ａ〜０Ｅと同様にして、パケット１のサイクル単位１Ａ〜１Ｅが、順次、FIFO#11から読み出され、アービタ２１３を経由してFIFO#2に送信され入力される。
【０１５７】
このとき、USEDカウンタ#1は、第２計数値Ｄを５から６にカウントアップした後、FIFO#11およびFREE#01生成部２０４Ａ−１へパケット発行指示を通知する。これに伴い、パケット１の先頭サイクル単位１Ａが、FIFO#11から読み出され、アービタ２１３を経由してFIFO#2に送信され入力される。
【０１５８】
このとき、FREE#01生成部２０４Ａ−１に入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは６であるため、Ｃ＜ＤつまりFIFO#2に余裕が無いと判断される。したがって、比較器２１２からFREE#01生成部２０４Ａ−１に入力される選択信号Ｅが、Ｌ状態になる（図９参照）。さらに、パケット１の最後尾サイクル単位１Ｅはまだ送信されていないので、パケット検出部２０３Ａ−１の最後尾検出部２０３ａからFREE#01生成部２０４Ａ−１に入力される最後尾検出信号Ｆが、Ｌ状態になる。
【０１５９】
これにより、図１０に示すように、FREE#01生成部２０４Ａ−１からUSEDカウンタ#01へ送信されるFREE#01はＬ状態になり、カウントダウン指示はUSEDカウンタ#01に送信されない。
【０１６０】
この後、パケット１の最後尾サイクル単位１ＥをFIFO#2に入力する際、FREE#01生成部２０４Ａ−１に入力されるパケット発行指示が、Ｈ状態になる。また、減算器２１１によって値Ｃ＝５が算出されるとともに、この時点でのUSEDカウンタ#1による第２計数値Ｄは１０であるため、Ｃ＜ＤつまりFIFO#2に余裕が無いと判断される。したがって、比較器２１２からFREE#01生成部２０４Ａ−１に入力される選択信号Ｅが、Ｌ状態になる（図９参照）。さらに、パケット１の最後尾サイクル単位１ＥがFIFO#2に送信されたことが、パケット検出部２０３Ａ−１の最後尾検出部２０３ａによって検出されるため、最後尾検出部２０３ａからFREE#01生成部２０４Ａ−１に入力される最後尾検出信号Ｆが、Ｈ状態になる。
【０１６１】
これにより、図１０に示すように、FREE#01生成部２０４Ａ−１からUSEDカウンタ#01へ送信されるFREE#01はＨ状態になり（矢印Ｂ１５参照）、カウントダウン指示がUSEDカウンタ#01に送信される（矢印Ｂ１６参照）。
【０１６２】
この時点で、USEDカウンタ#1による第２計数値Ｄは１０であり、最大値Ａに到達している。このため、USEDカウンタ#1は、第２計数値Ｄのカウントアップおよびパケット発行指示を停止し、FREE#2を受けて第２計数値Ｄが最大値Ａ未満の値にカウントダウンされるまで待機する。
【０１６３】
一方、USEDカウンタ#01は、FREE#01を受信すると、第１計数値を２から１にカウントダウンする。これに伴い、USEDカウンタ#01は、第１計数値を１から２にカウントアップした後、パケット１と同様、パケット５（サイクル単位５Ａ〜５Ｅ）をFIFO#11に一時的に格納する（矢印Ｂ１７，Ｂ１８参照）。なお、図１４では、図１２において示したFIFO#2の出力およびFREE#2の図示は省略されている。
【０１６４】
このように、第２実施形態によれば、２チャンネル合流型のパケットのクレジット制御において第１実施形態と同様の技術を適用することで、図１４に示すごとく、パケット２とパケット４との間の空き時間Ｔ３を、図８に示す空き時間Ｔ２と同様、短縮することができる。したがって、第２実施形態においても、第１実施形態と同様の作用効果を得ることができる。
【０１６５】
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１６６】
上述した実施形態では、FIFO#1，FIFO#10，FIFO#11に格納可能なパケットの数、つまりUSEDカウンタ#0，USEDカウンタ#00，USEDカウンタ#01による第１計数値の上限値を２としたが、本発明はこれに限定されるものではない。また、上述した実施形態では、パケットのパケット長を５サイクル単位としたが、本発明はこれに限定されるものではない。さらに、上述した実施形態では、FIFO#2に格納可能なサイクル単位の数、つまりUSEDカウンタ#1による第２計数値の上限値を１０（パケット２個分）としたが、本発明はこれに限定されるものではない。
【０１６７】
また、パケット組立回路１０１，１０１−０，１０１−１；USEDカウンタ１０２，１０２−０，１０２−１；ＦＩＦＯ２０１，２０１−０，２０１−１，USEDカウンタ２０２，パケット検出部２０３Ａ，２０３Ａ−０，２０３Ａ−１；第１開放信号生成部２０４Ａ，２０４Ａ−０，２０４Ａ−１，ＦＩＦＯ３０１および第２開放信号生成部３０２としての機能は、ハードウエアによって実現されてもよい。また、これらの機能は、マルチプロセッサシステム１内の処理部がプログラムを実行することによって実現されてもよい。
【０１６８】
上述のごとく処理部がプログラムを実行することで上記機能を実現する場合、当該プログラムは、コンピュータ読取可能な記録媒体であって可搬型の非一時的な記録媒体に記録された形態で提供される。当該記録媒体としては、磁気ディスク，光ディスク，光磁気ディスクなどが挙げられる。また、光ディスクとしては、ＣＤ（Compact Disk），ＤＶＤ（Digital Versatile Disk），ブルーレイディスクなどが挙げられる。ＣＤは、ＣＤ−ＲＯＭ（Read Only Memory），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを含む。ＤＶＤは、ＤＶＤ−ＲＡＭ，ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ(High Definition) ＤＶＤなどを含む。
【０１６９】
このとき、処理部は、上述のごとき記録媒体からプログラムを読み取って内部記憶装置または外付けの記憶装置に格納して用いる。なお、処理部は、プログラムを、ネットワーク（図示略）を介して受信し内部記憶装置または外付けの記憶装置に格納して用いてもよい。
【０１７０】
さらに、処理部は、マルチプロセッサシステム１を構成するＣＰＵであってもよいし、ＦＰＧＡ（Field Programmable Gate Array），ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device）のいずれか一つであってもよいし、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【０１７１】
〔５〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
【０１７２】
（付記１）
転送データを一以上のパケットに変換するパケット化処理部と、
前記パケット化処理部から発行される前記パケットを保存する第１メモリと、
前記パケット化処理部から発行され前記第１メモリに保存される前記パケットの数に対応する第１計数値を計数する第１カウンタと、
前記第１カウンタによる前記第１計数値に応じて前記パケット化処理部から前記第１メモリへの前記パケットの発行を制御する第１制御部と、
前記第１メモリから前記転送データの受信側における第２メモリへ転送され前記第２メモリに保存される前記パケットの数に対応する第２計数値を計数する第２カウンタと、
前記第２カウンタによる前記第２計数値に応じて前記第１メモリから前記第２メモリへの前記パケットの転送を制御する第２制御部と、
前記第１メモリから前記第２メモリへの前記パケットの転送に伴う前記第１カウンタによる前記第１計数値の減算を指示する第１開放信号を生成して前記第１カウンタへ出力するとともに、前記第２カウンタによる前記第２計数値に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する第１開放信号生成部と、を有する送信装置。
【０１７３】
（付記２）
前記第２カウンタによる前記第２計数値に基づき、前記第２メモリに前記パケットを保存可能な空き領域が有るか否かの判定を行なう判定部、を有し、
前記第１開放信号生成部は、前記判定部による前記判定の結果に応じて前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する、付記１に記載の送信装置。
【０１７４】
（付記３）
前記第１開放信号生成部は、
前記判定部が前記空き領域が有ると判定した場合、前記第１メモリから前記第２メモリへの前記パケットの先頭を検出する先頭検出タイミングで前記第１開放信号を前記第１カウンタへ出力する一方、
前記判定部が前記空き領域が無いと判定した場合、前記第１メモリから前記第２メモリへの前記パケットの最後尾を検出する最後尾検出タイミングで前記第１開放信号を前記第１カウンタへ出力する、付記２に記載の送信装置。
【０１７５】
（付記４）
前記第１カウンタは、前記第１計数値として、前記パケットの数を計数し、
前記第２カウンタは、前記第２計数値として、前記パケットを分割して得られるサイクル単位の数を計数し、
前記パケットを成す前記サイクル単位のうち、先頭のサイクル単位を検出するタイミングを前記先頭検出タイミングとして検出する先頭検出部と、
前記パケットを成す前記サイクル単位のうち、最後尾のサイクル単位を検出するタイミングを前記最後尾検出タイミングとして検出する最後尾検出部と、を有する、付記３に記載の送信装置。
【０１７６】
（付記５）
前記判定部は、前記第２カウンタによる前記第２計数値と、前記サイクル単位の数で表わした前記パケットのパケット長と、前記サイクル単位の数で表わした前記第２計数値の上限値と、に基づき、前記第２メモリに前記空き領域が有るか否かの判定を行なう、付記４に記載の送信装置。
【０１７７】
（付記６）
前記判定部は、
前記第２計数値の上限値から前記パケットのパケット長を減算した値が前記第２計数値以上である場合、前記空き領域が有ると判定する一方、
前記第２計数値の上限値から前記パケットのパケット長を減算した値が前記第２計数値よりも小さい場合、前記空き領域が無いと判定する、付記５に記載の送信装置。
【０１７８】
（付記７）
送信部と、受信部とを有し、
前記送信部は、付記１〜付記６のいずれか一項の送信装置であり、
前記受信部は、
前記第２メモリと、
前記第２メモリからの前記パケットの転送に伴う前記第２カウンタによる前記第２計数値の減算を指示する第２開放信号を生成して前記第２カウンタへ出力する第２開放信号生成部と、を有する、送受信装置。
【０１７９】
（付記８）
パケット化処理部から発行され第１メモリに保存されるパケットの数に対応する第１計数値を、第１カウンタによって計数し、
前記第１カウンタによる前記第１計数値に応じて前記パケット化処理部から前記第１メモリへの前記パケットの発行を制御し、
前記第１メモリから前記転送データの受信側における第２メモリへ転送され前記第２メモリに保存される前記パケットの数に対応する第２計数値を、第２カウンタによって計数し、
前記第２カウンタによる前記第２計数値に応じて前記第１メモリから前記第２メモリへの前記パケットの転送を制御し、
前記第１メモリから前記第２メモリへの前記パケットの転送に伴う前記第１計数値の減算を指示する第１開放信号を生成して出力し、
前記第２カウンタによる前記第２計数値に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する、送受信方法。
【０１８０】
（付記９）
前記第２カウンタによる前記第２計数値に基づき、前記第２メモリに前記パケットを保存可能な空き領域が有るか否かの判定を行ない、
前記判定の結果に応じて、前記第１開放信号を前記第１カウンタへ出力するタイミングを変更する、付記７に記載の送信装置。
【０１８１】
（付記１０）
前記空き領域が有ると判定した場合、前記第１メモリから前記第２メモリへの前記パケットの先頭を検出する先頭検出タイミングで前記第１開放信号を出力する一方、
前記空き領域が無いと判定した場合、前記第１メモリから前記第２メモリへの前記パケットの最後尾を検出する最後尾検出タイミングで前記第１開放信号を出力する、付記８に記載の送受信方法。
【０１８２】
（付記１１）
前記第１計数値として、前記パケットの数を計数し、
前記第２計数値として、前記パケットを分割して得られるサイクル単位の数を計数し、
前記パケットを成す前記サイクル単位のうち、先頭のサイクル単位を検出するタイミングを前記先頭検出タイミングとして検出し、
前記パケットを成す前記サイクル単位のうち、最後尾のサイクル単位を検出するタイミングを前記最後尾検出タイミングとして検出する、付記１０に記載の送受信方法。
【０１８３】
（付記１２）
前記第２計数値と、前記サイクル単位の数で表わした前記パケットのパケット長と、前記サイクル単位の数で表わした前記第２計数値の上限値と、に基づき、前記第２メモリに前記空き領域が有るか否かの判定を行なう、付記１１に記載の送受信方法。
【０１８４】
（付記１３）
前記第２計数値の上限値から前記パケットのパケット長を減算した値が前記第２計数値以上である場合、前記空き領域が有ると判定する一方、
前記第２計数値の上限値から前記パケットのパケット長を減算した値が前記第２計数値よりも小さい場合、前記空き領域が無いと判定する、付記１２に記載の送受信方法。
【０１８５】
（付記１４）
前記第２メモリからの前記パケットの転送に伴う前記第２カウンタによる前記第２計数値の減算を指示する第２開放信号を生成して前記第２カウンタへ出力する、付記８〜付記１３のいずれか一項に記載の送受信方法。
【符号の説明】
【０１８６】
１    マルチプロセッサシステム
１０Ａ，１０Ｂ    ＣＰＵ
１１Ａ，１１Ｂ    メモリ
１２    Ｉ／Ｏハブ
１３    ＨＤＤ
１４    ＬＡＮ
１００，１００−０，１００−１    送信ブロック（送信部，送信装置，送受信装置）
１０１，１０１−０，１０１−１    パケット組立回路（パケット化処理部）
１０２，１０２−０，１０２−１    USEDカウンタ（第１カウンタ，第１制御部）
１０３    パケット長設定レジスタ
１０４    最大値設定レジスタ
１０５，１０５−０，１０５−１    送信部
１０６，１０６−０，１０６−１    受信部
２００，２００Ａ，２００Ｂ    中継ブロック（送信部，送信装置，送受信装置）
２０１，２０１−０，２０１−１    ＦＩＦＯ（第１メモリ）
２０２    USEDカウンタ（第２カウンタ，第２制御部）
２０３，２０３Ａ，２０３Ａ−０，２０３Ａ−１    パケット検出部
２０３ａ    最後尾検出部
２０３ｂ    先頭検出部
２０４，２０４Ａ，２０４Ａ−０，２０４Ａ−１    第１開放信号生成部
２０５    最大値設定レジスタ
２０６，２０６−０，２０６−１，２０７    受信部
２０８，２０９，２０９−０，２０９−１    送信部
２１０    開放信号発行タイミング制御部（判定部）
２１１    減算器
２１２    比較器
２１３    アービタ（調停部）
３００    受信ブロック（受信部，受信装置，送受信装置）
３０１    ＦＩＦＯ（第２メモリ）
３０２    第２開放信号生成部
３０３    受信部
３０４    送信部
【図１】
0006593164.tif 000002
【図２】
0006593164.tif 000003
【図３】
0006593164.tif 000004
【図４】
0006593164.tif 000005
【図５】
0006593164.tif 000006
【図６】
0006593164.tif 000007
【図７】
0006593164.tif 000008
【図８】
0006593164.tif 000009
【図９】
0006593164.tif 000010
【図１０】
0006593164.tif 000011
【図１１】
0006593164.tif 000012
【図１２】
0006593164.tif 000013
【図１３】
0006593164.tif 000014
【図１４】
0006593164.tif 000015