(57)【要約】【課題】処理装置間の伝送路を効率良く使用してスループットの高いパケット転送ができるデータ転送回路を提供できる。【解決手段】本発明によるパケット転送回路２０は、第１の処理装置１０１から入力される複数の入力フリットＲｉを統合してマージデータＲｍを生成するデータマージ部１と、マージデータＲｍ内のフリット数２０５と、マージデータ発行制御部２とを具備する。マージデータ発行部２は、マージデータ内のフリット数２０５とＩ／Ｏコントローラ３０１における入力バッファ３１の空きエントリ数２０４とを比較し、フリット数２０５が空きエントリ数２０４以下である場合、マージデータ発行許可信号２０１をデータマージ部１に発行する。データマージ部１は、マージデータ発行許可信号１に応答してマージデータＲｍを第２のＩ／Ｏコントローラ３０１に転送する。【選択図】図２
2007214981.tif 000002
【特許請求の範囲】
【請求項１】
第１の処理装置からクロックサイクルに応じて入力されるフリットを入力順に統合してマージデータを生成するデータマージ部と、
前記マージデータ内のフリット数と、第２の処理装置における入力バッファの空きエントリ数とを比較し、前記フリット数が前記空きエントリ数以下である場合、マージデータ発行許可信号を前記データマージ部に発行するマージデータ発行制御部とを具備し、
前記データマージ部は、前記マージデータ発行許可信号に応答して前記マージデータを前記第２の処理装置に転送する
データ転送回路。
【請求項２】
請求項１に記載のデータ転送回路において、
前記データマージ部は前記第１の処理装置からフリットが入力される毎に、入力された全てのフリットを統合してマージデータを生成し、前記マージデータ内のフリット数をマージデータ発行要求信号とともに前記マージデータ発行制御部に送信し、
前記マージデータ発行制御部は、前記マージデータ発行要求信号に応答して、前記フリット数と前記エントリ数とを比較し、前記マージデータ内のフリット数が前記空きエントリ数以下である場合、前記マージデータ発行許可信号を前記データマージ部へ発行する
データ転送回路。
【請求項３】
請求項１又は２に記載のデータ転送回路において、
前記データマージ部から転送されたマージデータを一時格納するバッファと、
前記マージデータ発行許可信号が発行されてから、前記データマージ部から前記バッファに前記マージデータが送出されるまでの前記クロックサイクル＋１によって設定されるエントリ数である発行可能エントリ数を保持する発行可能エントリ数保持部とを更に具備し、
前記マージデータ発行制御部は前記バッファに格納しているマージデータが使用中のエントリ数と、前記発行可能エントリ数とを比較し、前記使用中のエントリ数が前記発行可能エントリ数以下である場合、マージデータの発行許可信号を前記データマージ部に発行し、
前記データマージ部は、前記発行許可信号に応答して、マージデータを前記バッファを介して前記第２の処理装置へ転送する
データ転送回路。
【請求項４】
請求項３に記載のデータ転送回路において、
クロックサイクル毎に前記バッファに出力指示信号を発行するバッファ出力制御部を更に具備し、
前記マージデータ発行制御部は前記バッファに対し、前記クロックサイクル毎に格納指示信号を発行し、
前記バッファは前記格納信号に応答して前記データマージ部から送出されるマージデータのフリットを格納し、前記出力指示信号に応答して前記フリットを前記第２の処理装置に転送し、
前記出力制御部は前記第２の処理装置からのクレジット信号に基づき前記入力バッファの空きエントリ数を算出し前記マージデータ発行制御部に出力する
データ転送回路。
【請求項５】
請求項４に記載のデータ転送回路において、
前記出力指示信号と前記格納指示信号とに基づいて前記バッファに格納しているマージデータが使用中のエントリ数を算出し、前記マージデータ発行制御部に出力するバッファ使用エントリ数算出部を更に具備する
データ転送回路。
【請求項６】
請求項４に記載のデータ転送回路において、
前記バッファ出力制御部は前記第２の処理装置における入力バッファの総エントリ数を保持し、
前記クレジット信号に含まれる前記入力バッファの使用エントリ数と前記総エントリ数を用いて前記入力バッファの空きエントリ数を算出し、前記マージデータ発行制御部に出力する
データ転送回路。
【請求項７】
請求項１から６に記載のデータ転送回路において、
前記データマージ部は、生成したマージデータを転送するまで、前記第１の処理装置から入力されるフリットを統合してマージデータを生成する
データ転送回路。
【請求項８】
請求項１から７いずれか１項に記載のデータ転送回路において、
前記フリットは、前記第２の処理装置からのリードリクエストに応答して前記第１の処理装置から出力されるリプライデータの一部である
データ転送回路。
【請求項９】
請求項１から８いずれか１項に記載のデータ転送回路において、
前記第２の処理装置は、Ｉ／Ｏコントローラである
データ転送回路。
【請求項１０】
請求項１から９いずれか１項に記載のデータ転送回路と、
前記データ転送回路に接続される第１の処理装置と、
前記データ転送回路を介して前記第１の処理装置に接続されるＩ／Ｏコントローラと、
前記Ｉ／Ｏコントローラを介して前記第１の処理装置に対しリードリクエストを発行する第３の処理装置とを具備し、
前記第１の処理装置は、前記リードリクエストに対応するリプライデータをフリットに分割し、前記フリットをクロックサイクルに同期して前記データ転送回路に出力し、
前記データ転送回路は前記フリットを入力順に統合してマージデータを生成し、前記マージデータを前記Ｉ／Ｏコントローラを介して前記第３の処理装置に転送する
マルチプロセッサシステム。
【請求項１１】
第１の処理装置からクロックサイクルに応じて入力されるフリットを順に統合してマージデータを生成するステップと、
前記マージデータ内のフリット数と、第２の処理装置における入力バッファの空きエントリ数とを比較するステップと、
前記フリット数が前記空きエントリ数以下である場合、前記マージデータを前記第２の処理装置に転送するステップとを具備する
データ転送方法。
【請求項１２】
請求項１１に記載のデータ転送方法において、
前記第１の処理装置からフリットが入力される毎に、入力された全てのフリットを統合してマージデータを生成するステップ
前記マージデータを生成する毎に、前記マージデータ内のフリット数を前記マージデータ発行要求信号とともに発行するステップと、
前記マージデータ発行要求信号に応答して、前記フリット数と前記エントリ数とを比較するステップと、
前記フリット数が前記空きエントリ数以下である場合、前記マージデータの発行許可信号を発行するステップと、
前記発行許可信号に応答して前記マージデータを前記第２の処理装置に転送するステップとを具備する
データ転送方法。
【請求項１３】
請求項１２に記載のデータ転送方法において、
前記発行許可信号に応答して前記マージデータを第２の処理装置に転送するステップは、
前記発行許可信号に応答して前記マージデータをバッファに転送するステップと、
前記バッファから前記第２の処理装置に前記マージデータを転送するステップとを備え、
前記マージデータを生成する毎に、前記発行許可信号が発行されてから前記マージデータが送出されるまでの前記クロックサイクル＋１によって設定されるエントリ数である発行可能エントリ数と、前記バッファに格納しているマージデータが使用中のエントリ数とを比較するステップと、
前記使用中のエントリ数が前記発行可能エントリ数が以下である場合、マージデータの発行許可信号を発行するステップとを備える
データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送回路、マルチプロセッサシステム、及びデータ転送方法に関し、特に、マルチプロセッサシステムの処理装置間において、リードリクエストに応答したリプライデータの転送を制御するデータ転送回路、マルチプロセッサシステム、及びデータ転送方法に関する。
【背景技術】
【０００２】
一般に処理装置間におけるデータ転送では、転送するデータに宛て先情報等を含むヘッダを付加し、パケットとしてまとめて転送する。パケットを転送する際、パケットを複数のフリットに分割し、クロックに同期して１フリット毎に転送を行う。ここで、フリットとは１クロックの転送における送信可能なデータの最小単位であり、通常８〜６４ｂｉｔ程度の大きさである。
【０００３】
ある処理装置Ａが扱う事ができる最大データ長（例えば１２８Ｂｙｔｅ）が、ある処理装置Ｂで扱う事のできる最大データ長（例えば４ｋＢｙｔｅ）より小さい場合、処理装置Ａと処理装置Ｂの間に位置するデータ転送回路は、処理装置Ｂから処理装置Ａに転送されるデータを、処理装置Ａで扱える最大データ長に分割して処理するのが通常である。逆に、処理装置Ａから処理装置Ｂに転送されるデータは、データ転送回路によって統合（マージ）処理されてから転送される。例えば、処理装置Ｂから処理装置Ａに対しリードリクエストが発行され、そのリードリクエストに応答して処理装置Ａからリプライデータが転送される場合、データ転送回路は、リードリクエストの情報を含むパケットを分割して処理装置Ａに転送し、リードリクエストに対応する全てのリプライデータ、又は所定のフリット数分のリプライデータをマージして処理装置Ｂに転送する。このように従来技術によるデータ転送回路では、マージするフリット数が決まっているため、処理装置Ｂへの伝送路が空いている場合でもリプライデータのマージ完了を待ち合わせなけらばならず、伝送路を効率良く使用できないためスループットが低下してしまう。
【０００４】
以下に、パケット転送方式に関する開示例が示される。
【０００５】
特開平０１−０８１５５１号公報には複数のデータを合計データ長が予め定められたパケット長を越えない範囲で合成し、一つのパケットとして通信回線に送出する送信装置と、受信するパケットに含まれるデータを付加されているデータ長に基づき分離する受信装置とを用いたパケット転送方式が記載されている（特許文献１参照）。又、特開昭５９−０８１９４７号公報には、パケット交換局において予め記憶しているパケット長より短いデータを結合して、当該パケット長に等しい長さのパケットを生成して伝送するパケット転送方式が記載されている（特許文献２参照）。しかし、特許文献１及び２に記載のパケット転送方式では、予め定められたパケット長になるまで待機しなければならず、伝送路を効率良く使用できないためスループットが低下してしまう。
【０００６】
特開２００４−０３２２８３号公報には、伝送パケットの受信状況や伝送路の状態に基づいた誤り耐性を有する伝送パケットを送信する送信装置が記載されている（特許文献３参照）。特許文献３に記載の受信装置は、送信装置からの伝送パケットの受信間隔、破棄パケット数、スループット等を取得し、この取得結果を送信装置に送信する。送信装置は、この取得結果に基づき送信するパケットのインターリーブ長やペイロード長を決定する。このように、特許文献１に記載の送信装置は、受信状況と伝送路の状態とに応じた伝送パケットを伝送することで、受信装置の処理負荷を軽減できる。特許文献３に記載の送信装置は、１フレーム分のデータを読み込み、そのデータをパラメータ決定部の結果に応じたペイロード長で分割して送信することで、転送効率を向上させている。しかし、データが分割されて転送されるため、転送データに付与されるヘッダ数は増加する。このため転送するデータの総情報量が増加し、スループットが低下する。又、データの読み込みと送信のタイミングによっては、転送するデータを待ち合わせる可能性がある。
【０００７】
特開平１１−２３４３４７号公報には、受信バッファ不足による送信待ち状態による転送低下を回避し、データ転送の効率を向上させるデータ通信におけるバッファ管理方法が記載されている（特許文献４参照）。特許文献４に記載のデータ送信装置は、送信予定のデータのサイズとともに受信バッファの空き容量の確認信号をデータ受信装置に送信する。データ装置装置は受信装置からの応答に基づき、空き領域が送信予定のデータサイズ以上である場合一括送信し、データサイズ以下である場合、空き領域サイズ分のデータを分割して送信する。しかし、データが分割されて転送されるため、転送データに付与されるヘッダ数は増加する。このため転送するデータの総情報量が増加し、スループットが低下する。
【特許文献１】特開平０１−０８１５５１号公報
【特許文献２】特開昭５９−０８１９４７号公報
【特許文献３】特開２００４−０３２２８３号公報
【特許文献４】特開平１１−２３４３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、処理装置間の伝送路を効率良く使用してスループットの高いパケット転送ができるデータ転送回路、マルチプロセッサシステム、及びデータ転送方法を提供することである。
【０００９】
又、他の本発明の目的は、転送するリプライデータのフリットを効率的にマージすることができるデータ転送回路、マルチプロセッサシステム、及びデータ転送方法を提供することができる。
【課題を解決するための手段】
【００１０】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明によるデータ転送回路（２０）は、第１の処理装置（１０１）からクロックサイクルに応じて入力されるフリット（Ｒｉ）を入力順に統合してマージデータ（Ｒｍ）を生成するデータマージ部（１）と、マージデータ発行制御部（２）とを具備する。マージデータ発行制御部（２）は、マージデータ（Ｒｍ）内のフリット数（２０５）と第２の処理装置（３０１）における入力バッファ（３１）の空きエントリ数（２０４）とを比較し、フリット数（２０５）以下である場合、マージデータ発行許可信号（２０１）をデータマージ部（１）に発行する。データマージ部（１）は、マージデータ発行許可信号（１）に応答してマージデータ（Ｒｍ）を第２の処理装置（３０１）に転送する。このように、本発明によるデータ転送回路は、統合（マージ）したマージデータ（Ｒｍ）のフリット数（２０５）がデータの転送先の空きエントリ数（２０４）以下であるとき、マージデータ（Ｒｍ）を処理装置（３０１）に転送する。このため、本発明によるデータ転送回路（２０）では、リプライデータの全てのフリットをマージする必要が無く、転送先の入力バッファ（３１）の空き容量に応じてマージデータ（Ｒｍ）のフリット数を変化させることができる。又、本発明に係るデータマージ部（１）は、マージデータ（Ｒｍ）の転送許可を受け付けるまで、入力されるフリット（Ｒｉ）をマージし続ける。すなわち、マージデータ（Ｒｍ）を転送しない間はマージ処理を実行し続けるため、より多くのフリット（Ｒｉ）をマージすることができる。
【００１２】
本発明に係るデータマージ部（１）は第１の処理装置（１０１）からフリット（Ｒｉ）が入力される毎に、入力された全てのフリット（Ｒｉ）を統合してマージデータ（Ｒｍ）を生成し、マージデータ（Ｒｍ）内のフリット数（２０５）をマージデータ発行要求信号（２００）とともにマージデータ発行制御部（２）に送信する。マージデータ発行制御部（２）は、マージデータ発行要求信号（２００）に応答して、フリット数（２０５）とエントリ数（２０４）とを比較する。この際、マージデータ（Ｒｍ）内のフリット数（２０５）が空きエントリ数（２０４）以下である場合、マージデータ発行許可信号（２０１）をデータマージ部（１）へ発行する。このように、本発明のデータ転送回路（２０）はフリット（Ｒｉ）の入力の都度、入力されたフリット（Ｒｉ）をマージし、そのマージデータ（Ｒｍ）の転送可否を判定する。このように、入力されたフリット（Ｒｉ）をマージする毎に通信先の空き容量を確認するため、必要以上のフリット（Ｒｉ）をマージすることなくマージデータ（Ｒｍ）を転送することができる。すなわち、本発明によればリプライデータ（Ｒ）の効率的なマージ処理を行うことができる。又、転送先の空き容量が小さく転送できない場合、転送先の空き容量が大きくなるまで、より多くのフリットをマージすることができる。このため、転送するパケット数が抑制され、付与するヘッダ数は削減される。すなわち、無駄なデータの転送を抑制することで伝送路のスループットを向上することができる。
【００１３】
本発明によるデータ転送回路（２０）は、更に、データマージ部（１）から転送されたマージデータ（Ｒｍ）を一時格納するバッファ（５）と、発行可能エントリ数（２０２）を保持する発行可能エントリ数保持部（６）とを更に具備する。ここで、発行可能エントリ数（２０２）とは、マージデータ発行許可信号（２０１）が発行されてから、データマージ部（１）からバッファ（５）にマージデータ（Ｒｍ）が送出されるまでのクロックサイクル＋１によって設定されるエントリ数である。マージデータ発行制御部（２）は、先行してバッファ（５）に格納されているマージデータ（Ｒ１）が使用中のエントリ数（２０３）と、発行可能エントリ数（２０２）とを比較し、使用中のエントリ数（２０３）が発行可能エントリ数（２０２）以下である場合、マージデータ（Ｒｍ）の発行許可信号（２０１）をデータマージ部（１）に発行する。データマージ部（１）は、発行許可信号（２０１）に応答して、マージデータ（Ｒｍ）をバッファ（５）を介して第２の処理装置（３０１）へ転送する。このように設定された発行可能エントリ数（２０２）によって、マージデータ（Ｒｍ）の転送を制御することで、バッファ（５）に先行して格納されたマージデータ（Ｒ１）の最後のフリットが、バッファ（５）から処理装置（３０１）に転送されるのと同時に、後続のマージデータ（Ｒ２）の最初のフリットがバッファ（５）に送出される。すなわち、先行してバッファ（５）に送出されたマージデータ（Ｒ１）と後続のマージデータ（Ｒ２）とを途切れなく連続して処理装置（３０１）に転送することが可能となる。このため、伝送路を効率良く利用でき、スループットを向上することができる。
【発明の効果】
【００１４】
本発明によるデータ転送回路及びデータ転送方法によれば、処理装置間の伝送路を効率良く使用してスループットの高いパケット転送ができる。
【００１５】
又、転送するリプライデータのフリットを効率的にマージして転送することができる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して、本発明によるデータ転送回路の実施の形態が説明される。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【００１７】
図１を参照して、マルチプロセッサシステム内に設けられる処理装置１０１とＩ／Ｏコントローラ３０１との間に設けられるパケット転送回路２０１を一例に、本発明によるデータ転送回路の実施の形態が説明される。処理装置１０１は、Ｉ／Ｏコントローラ３０１から発行されたリードリクエストに応答してリプライデータＲをＩ／Ｏコントローラ３０１に転送する。この際、処理装置１０１は、リプライデータＲを１クロックサイクルに転送可能なデータ量のフリット（例えばフリットＦ０〜Ｆｍ）に分割し、それぞれをクロックサイクル毎に入力フリットＲｉとしてパケット転送回路２０１に入力する。本発明によるパケット転送回路２０は、クロックサイクルに応じて入力されたフリットＲｉを順に統合（マージ）し、リードリクエストに対応するリプライデータＲ内の全てのフリットＦ０〜Ｆｍの入力を待たずに、マージ処理されたマージデータＲｍをＩ／Ｏコントローラ３０１に転送する。ここで、マージ処理されて転送されるマージデータＲｍのフリット数は、Ｉ／Ｏコントローラ３０１までの伝送路の空き状況（Ｉ／Ｏコントローラ３０１における入力バッファ３１の空き状況やバッファ５に先行して格納されているリプライデータ）に応じて決定されるため任意である。以下、実施の形態について詳細に説明される。
【００１８】
（構成）
（本発明によるマルチプロセッサシステムの構成）
図１は、本発明によるパケット転送回路２０を備えるマルチプロセッサシステムの構成を示すブロック図である。本発明に係るマルチプロセッサシステムは、バスで相互に接続されたＣＰＵ１１やメモリ１２等を備える演算処理装置である処理装置１０１及び１０２と、パケット転送回路２０１及び２０２と、処理装置１０１及び１０２へのパケットデータの入出力制御を行う入出力制御回路（Ｉ／Ｏコントローラ）３０１及び３０２とを備えている。処理装置１０とパケット転送回路２０とは、データ線１００で接続され、パケット転送回路とＩ／Ｏコントローラ３０とはデータ線１０２で接続されている。又、Ｉ／Ｏコントローラ３０１と３０２との間は、データ線１０３で接続されている。
【００１９】
ここで、処理装置１０１で処理可能な最大データ長は、処理装置１０２で処理可能な最大データ長よりも小さいものとする。以下の説明では、処理装置１０１内のＣＰＵ１１１が処理装置１０２からのリードリクエストに応答してメモリ１２１からリプライデータＲを読み出し、パケット転送回路２０１を介して処理装置１０２に転送することを一例に説明される。
【００２０】
処理装置１０１内のＣＰＵ１１１は、転送するリプライデータＲをデータ線１００１の伝送容量に応じたデータ量のフリットに分割し、それぞれを入力フリットＲｉとしてクロックサイクルに同期してパケット転送回路２０１に送出する。パケット転送回路２０１は、入力フリットＲｉを入力順にマージしてマージデータＲｍを生成する。又、このマージデータＲｍをパケットデータとしてＩ／Ｏコントローラ３０１に転送する。Ｉ／Ｏコントローラ３０１は、転送されたパケットデータを入力バッファ３１に一時格納し、パケットデータのヘッダに基づきＩ／Ｏコントローラ３０２を介して処理装置１０２に転送する。この際、処理装置１０２側のパケット転送回路２０２は、転送されたパケットデータをデータ線１００２の伝送容量に応じたフリットに分割して処理装置１０２に転送する。処理装置１０２のＣＰＵ１１２は、転送されたデータをメモリ１２２に格納する。
【００２１】
（本発明によるパケット転送回路の構成）
図２は、本発明によるパケット転送回路２０の構成を示すブロック図である。図２を参照して、処理装置１０１に接続されるパケット転送回路２０１を一例に、本発明によるパケット転送回路２０の構成の詳細が説明される。パケット転送回路２０１は、データ線１００１を介して処理装置１０１に接続されるデータマージ部１、マージデータ発行制御部２、バッファ使用エントリ数算出部３、バッファ出力制御部４、データ線１０２１を介してＩ／Ｏコントローラ３０１に接続されるバッファ５、発行可能エントリ数保持部６を具備している。
【００２２】
データマージ部１は、処理装置１０１からデータ線１００１を介して送出される入力フリットＲｉを順にマージしてマージデータＲｍを生成する。又、入力フリットＲｉが入力される毎にマージデータ発行要求信号２００をマージデータ発行制御部２に発行する。マージデータ発行要求信号２００はマージデータＲｍ内に含まれるフリット数を示す情報（以下、発行要求フリット数２０５と称す）を含んでいる。ここで、１フリットは１クロックサイクルに転送され、バッファ５の１エントリに対応するデータ量のデータとする。データマージ部１はマージデータ発行制御部２から発行されるマージデータ発行許可信号２０１に応答して、データ線１０１１を介して、マージデータＲｍをバッファ５に出力する。
【００２３】
バッファ５は、マージデータ発行制御部２が発行する格納指示３００に応答して、データマージ部１からデータ線１０１を介して送出されるマージデータＲｍを格納する。又、バッファ出力制御部４が発行する出力指示信号３０１に応答して、データ線１０２を介してＩ／Ｏコントローラ３０１にマージデータＲｍを転送する。
【００２４】
発行可能エントリ数保持部６は、発行可能エントリ数２０２を保持している。発行可能エントリ数２０２とは、バッファ５に先行してマージデータＲｍが格納されている場合、後続のマージデータＲｍがバッファ５に待機する時間を最小にするために設定されるマージデータＲｍの転送条件である。好ましくは、先行してバッファ５に送出されたマージデータＲｍと後続のマージデータＲｍとが途切れなく連続してバッファ５から処理装置３０１に転送されるように設定される。すなわち、先行して格納されたマージデータＲｍの最後のフリットＦがバッファ５から送出される次のクロックサイクルで、後続のマージデータＲｍの最初のフリットＦがバッファ５から送出されるように、発行可能エントリ数２０２は設定される。
【００２５】
ここで、データマージ部１にはマージデータ発行許可信号２０１が発行されてからマージデータＲｍのフリットの先頭をバッファ５に送出するまでのクロックサイクルが設定されている。このため、発行可能エントリ数２０２は、マージデータＲｍの転送を制御するマージデータ発行許可信号２０１が発行されてから、データ線１０１１にマージデータＲｍが送出されるまでのクロックサイクル＋１によって設定されるエントリ数となる。ここで、１フリットはバッファ５の１エントリに対応する。発行可能エントリ数保持部６は、発行可能エントリ数２０２をマージデータ発行制御部２に出力する。
【００２６】
バッファ出力制御部４は、通信先のＩ／Ｏコントローラ３０１から送信されるクレジット信号３０２に応答して通信先のＩ／Ｏコントローラ３０１における入力バッファ３１の空きエントリ数（以下、通信先空きエントリ数２０４と称す）を算出する。この際、クレジット信号３０２にはＩ／Ｏコントローラ３０１の入力バッファ３１における使用領域の情報（例えば使用中の領域のアドレス、又は使用中のエントリ数）が含まれる。バッファ出力制御部４は、通信先のＩ／Ｏコントローラ３０１の入力バッファ３１の領域情報（例えばアドレス情報、又は総エントリ数）を保持している。バッファ出力制御部４は、クレジット信号３０２に含まれる入力バッファ３１の使用領域の情報と、保持している通信先の入力バッファ３１の領域情報に基づいて、通信先空きエントリ数２０４を算出する。又、算出した通信先空きエントリ数２０４をマージデータ発行制御部２に出力する。更に通信先のＩ／Ｏコントローラ３０１の入力バッファ３１の空きエントリ数に基づきバッファ５に格納されているマージデータＲｍの出力判定を行い、出力可能であれば出力指示信号３０１をバッファ５とバッファ使用エントリ数算出部３に出力する。出力指示信号３０１が入力されたバッファ５は格納しているフリットＦをクロックサイクル毎にＩ／Ｏコントローラ３０１に転送する。
【００２７】
バッファ使用エントリ数算出部３は、格納指示信号３００と出力指示信号３０１とに基づきバッファ５において使用中のエントリ数（以下、使用エントリ数２０３と称す）を算出し、その使用エントリ数２０３をマージデータ発行制御部２に出力する。バッファ使用エントリ数算出部３は、格納指示信号３００に含まれる格納先情報（例えば格納先アドレスや格納先のエントリ数）からバッファ５で使用予定のエントリ数を算出する。又、出力指示信号３０１に含まれる空き情報（例えば出力予定のアドレスや出力予定のエントリ数）から新たに空き領域となるエントリ数を算出する。バッファ使用エントリ数算出部３は、これらの使用予定のエントリ数と空き領域となるエントリ数、及び前回算出した使用エントリ数２０３を用いて最新の使用エントリ数２０３を算出する。
【００２８】
マージデータ発行制御部２は、マージデータ発行要求信号２００の入力を契機に、発行要求フリット数２０５と、発行可能エントリ数信号２０２と使用エントリ数信号２０３及び、通信先空きエントリ数信号２０４に基づいて、データマージ部１でマージ処理されたマージデータＲｍをＩ／Ｏコントローラ３０１に転送するか否かを判定する。ここで、マージデータ発行制御部２は、使用エントリ数２０３が発行可能エントリ数２０２以下である場合、かつ、発行要求フリット数２０５が通信先空きエントリ数２０４以下である場合にデータマージ部１へマージデータ発行要求信号２０１を送出する。
【００２９】
ここで、図３及び図４を参照して、発行可能エントリ数２０２の設定について詳細に説明される。図３及び図４は、マージデータ発行許可信号２０１に応答してデータマージ部１から出力されるマージデータＲｍの出力タイミングを示すタイミングチャートである。ここでは、バッファ５に先行して格納されたマージデータＲｍを先行マージデータＲ１、先行マージデータＲ１に続いてバッファ５に出力されるマージデータＲｍを後続マージデータＲ２とする。ただし、先行マージデータＲ１は、フリットＦ０、Ｆ１、Ｆ２を含み、後続マージデータＲ２はフリットＦ１０、Ｆ１１、Ｆ１２、Ｆ１３を含むものとする。以下、先行マージデータＲ１がクロックサイクルＴ０の時にバッファ５からデータ線１０２に出力される場合について説明される。
【００３０】
図３は、発行可能エントリ数２０２を１とした場合におけるマージデータＲ１及びＲ２の出力タイミングを示すタイミングチャートである。図３を参照して、データマージ部１が、マージデータ発行許可信号２０１が入力されると同時（クロックサイクルＴ２）に後続マージデータＲ２の先頭フリットＦ１０をバッファ５に出力できる場合、発行エントリ数２０２は１に設定される。
【００３１】
図４は、発行可能エントリ数２０２を３とした場合におけるマージデータＲ１及びＲ２の出力タイミングを示すタイミングチャートである。図４を参照して、データマージ部１が、マージデータ発行許可信号２０１が入力されたクロックサイクルＴ０の２クロックサイクル後（クロックサイクルＴ２）に後続マージデータＲ２の先頭フリットＦ１０をバッファ５に出力できる場合、発行可能エントリ数２０２は３に設定される。
【００３２】
マージデータ発行制御部２は、使用エントリ数２０３が発行可能エントリ数２０２以下の時にマージデータ発行許可信号２０１を発行する。このため、発行可能エントリ数２０２が１の場合、バッファ５に先行マージデータＲ１のフリットＦ２が１つ格納されている時にマージデータ発行許可信号２０１が発行される。同様に、発行可能エントリ数２０２が３に設定された場合、バッファ５に先行マージデータＲ１のフリットＦ０〜Ｆ２の３つのフリットＦが格納されている時にマージデータ発行許可信号２０１が発行される。このようなタイミングでマージデータ発行許可信号２０１が発行されることで、後続のマージデータＲｍはバッファ５で待機することなくバッファ５からＩ／Ｏコントローラ３０１に転送される。バッファ５における待機時間が無くなるため、データマージ部１におけるマージ処理の時間が増加し、より多くの入力フリットＲｉをマージすることができる。
【００３３】
（動作）
以下、図３から図９を参照して、本発明によるパケット転送回路２０の実施の形態におけるパケット転送動作について説明される。ここでは、処理装置１０２から発行されたリードリクエストに応答して処理装置１０１からＩ／Ｏコントローラ３０１に対しリプライデータＲが転送されることを一例に説明される。
【００３４】
図５は、本発明によるパケット転送回路２０の実施の形態におけるパケット転送動作を示すフロー図である。処理装置１０１のＣＰＵ１１１はリードリクエストに応答してリプライデータＲをメモリから抽出し、パケット転送回路２０１に送出する。この際、ＣＰＵ１１１はリプライデータＲをフリットＦ０〜Ｆｍに分割し、それぞれを入力フリットＲｉとしてクロックサイクル毎にパケット転送回路２０１に送出する（ステップＳ２）。
【００３５】
データマージ部１は、処理装置１０１からデータ線１００を介して送信される入力フリットＲｉを受信順にマージしてマージデータＲｍを生成する（ステップＳ４）。次に、マージデータＲｍに含まれるフリットの数を発行要求フリット数２０５としてデータ発行要求信号２００に含めてマージデータ発行制御部２に発行する（ステップＳ６）。マージデータ発行制御部２は、マージデータ発行要求信号２００の入力を契機に、データマージ部１からバッファ５へのマージデータＲｍの発行判定を行う（ステップＳ８及びステップＳ１２）。データマージ部１は、マージデータ発行要求信号２００を発行した後、この発行判定に並行して、入力フリットＲｉの入力を待機する（ステップＳ１０）。その後、次のクロックサイクルにおいて入力フリットＲｉが入力されると、再び入力フリットＲｉをマージしてマージデータＲｍを生成する（ステップＳ２、Ｓ４）。このようにデータマージ部１は、ステップＳ２からステップＳ１０を繰り返し、入力フリットＲｉを入力順にマージし、マージデータＲｍを生成する毎にマージデータ発行要求信号２００を発行する。
【００３６】
マージデータ発行制御部２は、発行要求フリット数２０５と、通信先のＩ／Ｏコントローラ３０１の入力バッファ３１の空きエントリ数を示す通信先空きエントリ数２０４とを比較する発行判定処理（ステップＳ８）と、発行可能エントリ数２０２と、バッファ５で使用中のエントリ数を示す使用エントリ数２０３とを比較する発行判定処理（ステップＳ１２）とを実行する。発行判定結果は「待ち」と「発行」の２つのステータスから成る。使用エントリ数２０３が発行可能エントリ数２０２より大きい場合（ステップＳ１２ＮＯ）、又は、発行要求フリット数２０５が通信先空きエントリ数２０４より大きい場合（ステップＳ８ＮＯ）、マージデータ発行制御部２は発行判定結果を「待ち」と判定し、マージデータ発行許可信号２０１を発行しない。マージデータ発行制御部２は、続いて発行されるマージデータ発行要求２００に応答して、再度マージデータの発行判定を行う（ステップＳ８、Ｓ１２）。
【００３７】
発行判定処理において使用エントリ数２０３が発行可能エントリ数２０２以下であり（ステップＳ１２Ｙｅｓ）、かつ、発行要求フリット数２０５が通信先空きエントリ数２０４以下である場合（ステップＳ８Ｙｅｓ）、マージデータ発行制御部２は発行判定結果を「発行」と判定する。「発行」と判定されると、マージデータ発行制御部２は、マージデータ発行許可信号２０１をデータマージ部１に発行するとともに、バッファ５に対し格納指示信号３００を発行する（ステップＳ１４）。データマージ部１はマージデータ発行許可信号２０１に応答して、マージデータＲｍにヘッダを付与してバッファ５に転送する（ステップＳ１６）。又、バッファ出力制御部４は、Ｉ／Ｏコントローラ３０１の入力バッファ３１の空き容量に応じてバッファ５に出力指示信号５を発行し、バッファ５に格納されたマージデータＲｍをデータ線１０２を介してＩ／Ｏコントローラ３０１に転送する（ステップＳ１８）。以上のようにステップＳ２からステップＳ１８の動作を繰り返し、パケット転送回路２０１は、Ｉ／Ｏコントローラ３０１からのリードリクエストに対応するリプライデータＲを構成するフリットＦ０〜ＦｍをＩ／Ｏコントローラ３０１に転送する。
【００３８】
図６から図９を参照して、本発明によるマージデータ発行制御部２における発行判定処理が説明される。ここで、データマージ部１は、マージデータ発行許可信号２０１を受け付けると同時にマージデータＲｍをバッファ５に送出するように設定されているものとする。すなわち、発行可能エントリ数２０２は１に設定されている。設定図６から図９は、発行可能エントリ数２０２が１に設定された場合のマージデータ発行制御部２における発行判定処理の一例を示す概念図である。図６及び図７は、バッファ５にマージデータＲｍが格納されていない場合（使用エントリ数２０３が０）の発行判定処理の一例を示す概念図である。
【００３９】
図６を参照して、データマージ部１に入力フリットＲｉとしてフリットＦ１が入力されると、データマージ部１は先行して入力されていたフリットＦ０とマージしてマージデータＲｍを生成する。又、マージデータ発行制御部２に対しマージデータ発行要求信号２００を発行する。この際、マージデータ発行制御部２は、マージデータＲｍを構成するフリット数＝２を、発行要求フリット数２０５としてマージデータ発行要求信号２００に含ませる。このとき、マージデータ発行制御部２は、バッファ出力制御部４から通信先空きエントリ数２０４＝１を取得しているものとする。マージデータ発行制御部２は、マージデータ発行許可信号２００に応答し、発行可能エントリ数２０２＝１と使用可能エントリ数２０３＝０とを比較する。又、通信先空きエントリ数２０４＝１と発行要求フリット数２０５＝２とを比較する。この場合、発行要求フリット数２０５が通信先エントリ数２０４より大きくなるため判定結果は「待ち」となり、マージデータ発行制御部２はマージデータ発行許可信号２０１の発行を待機する。
【００４０】
図７を参照して、データマージ部１に更に入力フリットＲｉとしてフリットＦ２が入力されると、データマージ部１は入力されたフリットＦ２と、先行して処理装置１０１から入力されたマージデータＲｍ（フリットＦ０及びＦ１）とをマージして新たなマージデータＲｍを生成する。又、データマージ部１はこのマージデータＲｍのフリット数＝３を発行要求フリット数２０５としてマージ発行要求信号２００に含めてマージデータ発行制御部２に対し発行する。ここで、マージデータ発行制御部２は、バッファ出力制御部４から通信先空きエントリ数２０４＝１０を取得しているものとする。マージデータ発行制御部２は、マージデータ発行許可信号２００に応答し、発行可能エントリ数２０２＝１と使用可能エントリ数２０３＝０とを比較する。又、通信先空きエントリ数２０４＝１０と発行要求フリット数２０５＝３とを比較する。この場合、使用エントリ数２０３が発行可能エントリ数２０２より小さく、且つ、発行要求フリット数２０５が通信先エントリ数２０４より小さくなるため、判定結果は「転送可能」となり、マージデータ発行制御部２はマージデータ発行許可信号２０１をデータマージ部１に発行する。マージデータ発行許可信号２０１を受信したデータマージ部１はマージデータＲｍ内のフリットＦ０〜Ｆ２をクロックサイクルに同期してバッファ５に順に転送する。
【００４１】
図８及び図９は、バッファ５にマージデータＲｍが既に格納されている場合の発行判定処理の一例を示す概念図である。ここで、バッファ５に既に格納されているマージデータＲｍを先行マージデータＲ１（フリットＦ０〜Ｆ２）、後続してバッファ５に格納されるマージデータＲｍを後続マージデータＲ２とする。
【００４２】
図８を参照して、クロックサイクルＴ０に同期して、データマージ部１にフリットＦ１２が入力されるとともに、フリットＦ０がバッファ５からＩ／Ｏコントローラ３０１に転送される。データマージ部１は入力されたフリットＦ１２とマージデータＲｍ（フリットＦ１０及びＦ１１）とをマージして新たなマージデータＲｍ（フリットＦ１０〜Ｆ１２）を生成する。又、マージデータ発行制御部２に対しマージデータ発行要求信号２００を発行する。この際、マージデータ発行制御部２は、マージデータＲｍを構成するフリット数＝３を発行要求フリット数２０５としてマージデータ発行要求信号２００に含ませる。バッファ使用エントリ数算出部３は、フリットＦ０に対する出力指示信号３０１と、先行マージデータＲ１（フリットＦ０〜Ｆ１）に対する格納指示信号３００に基づき使用エントリ数２０３＝２を算出する。マージデータ発行制御部２はマージデータ発行許可信号２００に応答して、バッファ使用エントリ数算出部３から使用エントリ数２０３＝２を、バッファ出力制御部４から通信先空きエントリ数２０４＝８を取得する。続いてマージデータ発行制御部２は、発行可能エントリ数２０２＝１と使用可能エントリ数２０３＝２とを比較する。又、通信先空きエントリ数２０４＝８と発行要求フリット数２０５＝３とを比較する。この場合、使用エントリ数２０３が発行可能エントリ数２０２より大きくなるため判定結果は「待ち」となり、マージデータ発行制御部２はマージデータ発行許可信号２０１の発行を待機する。
【００４３】
図９を参照して、次のクロックサイクルＴ１に同期して、データマージ部１にフリットＦ１３が入力されるとともに、フリットＦ１がバッファ５からＩ／Ｏコントローラ３０１に転送される。データマージ部１は入力されたフリットＦ１３と、マージデータＲｍ（フリットＦ１０〜Ｆ１２）とをマージして新たなマージデータＲｍ（フリットＦ１０〜Ｆ１３）を生成する。又、データマージ部１はこのマージデータＲｍのフリット数＝４を発行要求フリット数２０５としてマージ発行要求信号２００に含めてマージデータ発行制御部２に発行する。このとき、バッファ使用エントリ数算出部３は、フリットＦ１に対する出力指示信号３０１と、先行マージデータＲ１（フリットＦ０〜Ｆ１）に対する格納指示信号３００に基づき使用エントリ数２０３＝１を算出する。マージデータ発行制御部２はマージデータ発行許可信号２００に応答して、バッファ使用エントリ数算出部３から使用エントリ数２０３＝１を、バッファ出力制御部４から通信先空きエントリ数２０４＝７を取得する。続いてマージデータ発行制御部２は、マージデータ発行許可信号２００に応答し、発行可能エントリ数２０２＝１と使用エントリ数２０３＝１とを比較する。又、通信先空きエントリ数２０４＝７と発行要求フリット数２０５＝４とを比較する。この場合、使用エントリ数２０３が発行可能エントリ数２０２と等しく、且つ、発行要求フリット数２０５が通信先エントリ数２０４より小さくなるため、判定結果は「転送可能」となり、マージデータ発行制御部２はマージデータ発行許可信号２０１をデータマージ部１に発行する。
【００４４】
ここで、マージデータ発行許可信号２０１は、フリットＦ１３がデータマージ部１に入力されたクロックサイクルＴ１の次のクロックサイクルＴ２で発行される。マージデータ発行許可信号２０１を受信すると同時にデータマージ部１はマージデータＲｍ内のフリットＦ１０をバッファ５に送出する。又、これと同じクロックサイクルＴ２で、バッファ５はフリットＦ２をＩ／Ｏコントローラ３０１に転送する。更に、次のクロックサイクルＴ３で、フリットＦ１１はバッファ５に送出され、フリットＦ１０はＩ／Ｏコントローラ３０１に転送される。このように、先行マージデータＲ１（フリットＦ０〜Ｆ２）と後続マージデータＲ２（フリットＦ１０〜Ｆ１３）とが途切れなくＩ／Ｏコントローラ３０１に転送される。
【００４５】
以上のように、発行判定の結果が「待ち」の場合は、ステップＳ８及びステップＳ１２における判定条件を共に満たすまでデータマージ部１へのマージデータ発行許可信号２０１の送出を抑止し、マージデータＲｍの発行をデータマージ部１で待ち合わせる。又、マージデータ発行制御部２で発行判定の結果が「発行」の場合、又は、「待ち」から「発行」となり待ち合わせが解除された場合、データマージ部１は、マージデータ発行許可信号２０１の入力を契機にその時点までマージしたマージデータＲｍをパケットデータとしてバッファ５経由で通信先の処理装置１０２に送出する。
【００４６】
このように、発行判定の際に「待ち」と判定された場合、データマージ部１からマージデータＲｍが直ぐにデータ線１０２に送出されず、より多くの入力フリットＲｉをマージする為、効率的なマージ処理が可能となる。又、リプライデータＲの転送先のＩＯコントローラ３０１における入力バッファ３１の使用エントリ数２０３に基づきマージデータＲｍの転送を制御するため、データ線１０２のスループットを空けないようにマージデータＲｍを転送することができる。
【００４７】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【図面の簡単な説明】
【００４８】
【図１】図１は、本発明によるマルチプロセッサシステムの実施の形態における構成を示すブロック図である。
【図２】図２は、本発明によるパケット転送回路の実施の形態における構成の示すブロック図である。
【図３】図３は、発行可能エントリ数を１とした場合における、データマージ部から出力されるマージデータの出力タイミングを示すタイミングチャートである。
【図４】図４は、発行可能エントリ数を３とした場合における、データマージ部から出力されるマージデータの出力タイミングを示すタイミングチャートである。
【図５】図５は、本発明によるパケット転送回路の実施の形態におけるパケット転送動作の流れを示すフロー図である。
【図６】図６は、発行可能エントリ数が１に設定され、バッファに先行マージデータが格納されていない場合のマージデータ発行制御部における発行判定処理の一例を示す概念図である。
【図７】図７は、発行可能エントリ数が１に設定され、バッファに先行マージデータが格納されていない場合のマージデータ発行制御部における発行判定処理の一例を示す概念図である。
【図８】図８は、発行可能エントリ数が１に設定され、バッファに先行マージデータが格納されている場合のマージデータ発行制御部における発行判定処理の一例を示す概念図である。
【図９】図９は、発行可能エントリ数が１に設定され、バッファに先行マージデータが格納されている場合のマージデータ発行制御部における発行判定処理の一例を示す概念図である。
【符号の説明】
【００４９】
１：データマージ部
２：マージデータ発行制御部
３：バッファ使用エントリ数算出部
４：バッファ出力制御部
５：バッファ
６：発行可能エントリ数保持部
１０１、１０２：処理装置
２０１、２０２：パケット転送回路
３０１、３０２：Ｉ／Ｏコントローラ
３１：入力バッファ
２００：マージデータ発行要求信号
２０１：マージデータ発行許可信号
２０２：発行可能エントリ数
２０３：使用エントリ数
２０４：通信先空きエントリ数
２０５：発行要求フリット数
１００１、１００２、１０１１、１０１２、１０２１、１０２２、１０３：データ線
３００：格納指示信号
３０１：出力指示信号
３０２：クレジット信号
Ｔ０〜Ｔ５：クロックサイクル
Ｆ０〜Ｆｍ：フリット
Ｒ：リプライデータ
Ｒｉ：入力フリット
Ｒｍ：マージデータ
Ｒ１：先行マージデータ
Ｒ２：後続マージデータ
【図１】
2007214981.tif 000003
【図２】
2007214981.tif 000004
【図３】
2007214981.tif 000005
【図４】
2007214981.tif 000006
【図５】
2007214981.tif 000007
【図６】
2007214981.tif 000008
【図７】
2007214981.tif 000009
【図８】
2007214981.tif 000010
【図９】
2007214981.tif 000011