(57)【特許請求の範囲】
【請求項１】
バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、
ハードウェアによる連続パケット転送を指示する第１のスタートコマンドを処理手段が発行した場合に、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理を実行する転送実行回路と、
前記転送実行回路により連続パケット転送処理が実行されている間に、パケット転送を指示する第２のスタートコマンドを処理手段が発行した場合には、連続パケット転送における１つのトランザクション又は１つのパケット転送の完了を待って、前記第２のスタートコマンドによるパケット転送を許可する調停回路とを含み、
前記転送実行回路が、
相手ノードの記憶手段にページテーブルが存在する場合には、該ページテーブルを相手ノードからフェッチするページテーブルフェッチ回路と、相手ノードの記憶手段にページテーブルが存在しない場合には、ページ境界情報に基づいて仮想的なページテーブルを生成するページテーブル生成回路と、ペイロードサイズのパケットに転送データを分割するペイロード分割回路と、データ転送の実行を制御する転送実行制御回路と、相手ノードに送信する要求パケットの制御情報を生成する制御情報生成回路の少なくとも１つを含むことを特徴とするデータ転送制御装置。
【請求項２】
バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、
ハードウェアによる連続パケット転送を指示する第１のスタートコマンドを処理手段が発行した場合に、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理を実行する転送実行回路と、
前記転送実行回路により連続パケット転送処理が実行されている間に、パケット転送を指示する第２のスタートコマンドを処理手段が発行した場合には、連続パケット転送における１つのトランザクション又は１つのパケット転送の完了を待って、前記第２のスタートコマンドによるパケット転送を許可する調停回路と、
パケットの制御情報が格納される制御情報領域とパケットのデータが格納されるデータ領域とを有し、ランダムアクセス可能なパケット記憶手段と、
前記パケット記憶手段への書き込みアドレスを発生するアドレス発生回路とを含み、
前記パケット記憶手段の前記制御情報領域が、第１の制御情報領域と、前記転送実行回路により制御情報が書き込まれる第２の制御情報領域とに分離されており、
前記アドレス発生回路が、前記調停回路からの調停結果に基づいて、第１の制御情報領域のアドレスと第２の制御情報領域のアドレスのいずれのアドレスを発生するのかを切り替えることを特徴とするデータ転送制御装置。
【請求項３】
バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、
ハードウェアによる連続パケット転送を指示する第１のスタートコマンドを処理手段が発行した場合に、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理を実行する転送実行回路と、
前記転送実行回路により連続パケット転送処理が実行されている間に、パケット転送を指示する第２のスタートコマンドを処理手段が発行した場合には、連続パケット転送における１つのトランザクション又は１つのパケット転送の完了を待って、前記第２のスタートコマンドによるパケット転送を許可する調停回路と、
パケットの制御情報が格納される制御情報領域とパケットのデータが格納されるデータ領域とを有し、ランダムアクセス可能なパケット記憶手段を含み、
前記パケット記憶手段の前記データ領域が、第１の層用の第１のデータが格納される第１のデータ領域と、前記転送実行回路による連続パケット転送の対象となる第２の層用の第２のデータが格納される第２のデータ領域とに分離されていることを特徴とするデータ転送制御装置。
【請求項４】
請求項３において、
トランザクションをスタートさせる要求パケットを相手ノードに対して送信する際に、前記要求パケットに含まれるトランザクション識別情報の中に、相手ノードから応答パケットを受信した際に行う処理を指示するための指示情報を含ませ、
相手ノードから応答パケットを受信した場合に、応答パケットのトランザクション識別情報が含む前記指示情報に基づき、応答パケットの制御情報、第１、第２のデータを、各々、前記制御情報領域、前記第１、第２のデータ領域に書き込むことを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記調停回路が、
前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第１のスタート信号がアクティブになった後に前記第２のスタート信号がアクティブになった場合には、前記第１のスタート信号による転送処理を先にスタートさせ、前記完了信号がアクティブになった後に、前記第２のスタート信号による転送処理をスタートさせることを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記調停回路が、
前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第１、第２のスタート信号が同時にアクティブになった場合には、前記第２のスタート信号による転送処理を優先することを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記調停回路が、
前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第２のスタート信号がアクティブになった後に前記第１のスタート信号がアクティブになった場合には、前記第２のスタート信号による転送処理を先にスタートさせ、前記完了信号がアクティブになった後に、前記第１のスタート信号による転送処理をスタートさせることを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
ＩＥＥＥ１３９４の規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して他のノードから受信したデータに所与の処理を施す装置と、
処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする電子機器。
【請求項１０】
請求項１乃至８のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して他のノードに転送するデータに所与の処理を施す装置と、
処理が施されるデータを取り込むための装置とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置及びこれを含む電子機器に関し、特に、バスに接続される複数のノード間でＩＥＥＥ１３９４などの規格に準じたデータ転送を行うデータ転送制御装置及びこれを含む電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、ＩＥＥＥ１３９４と呼ばれるインターフェース規格が脚光を浴びている。このＩＥＥＥ１３９４は、次世代のマルチメディアにも対応可能な高速シリアルバスインターフェースを規格化したものである。このＩＥＥＥ１３９４によれば、動画像などのリアルタイム性が要求されるデータも扱うことができる。また、ＩＥＥＥ１３９４のバスには、プリンタ、スキャナ、ＣＤ−ＲＷドライブ、ハードディスクドライブなどのコンピュータの周辺機器のみならず、ビデオカメラ、ＶＴＲ、ＴＶなどの家庭用電化製品も接続できる。このため、電子機器のデジタル化を飛躍的に促進できるものとして期待されている。
【０００３】
さて、このＩＥＥＥ１３９４においては、バスに電子機器が新たに接続されたり、バスから電子機器が取り外されたりして、バスに接続されるノードが増減すると、いわゆるバスリセットが発生する。そしてバスリセットが発生するとノードのトポロジ情報がクリアされ、その後、トポロジ情報が自動的に再設定される。即ち、バスリセットの発生後、ツリー識別（ルートノードの決定）、自己識別が行われ、その後、アイソクロナスリソースマネージャ等の管理ノードが決定される。そして通常のパケット転送が開始される。
【０００４】
しかしながら、このＩＥＥＥ１３９４に準拠したデータ転送制御装置には次のような課題があることが判明した。
【０００５】
即ち、現在のＩＥＥＥ１３９４規格によれば最大で４００Ｍｂｐｓの転送速度が実現可能となっている。しかし、現実には、処理のオーバーヘッドの存在に起因して、システム全体の実転送速度はこれよりもかなり低くなっている。つまり、ＣＰＵ上で動作するファームウェア（処理手段）が、転送データを準備したり、転送データをパケットに分割したり、転送開始コマンドを発行したりするなどの処理に多くの時間を要してしまい、バス上での転送速度が速くても、結局、高速なデータ転送を実現できない。
【０００６】
特に、周辺機器に組み込まれるＣＰＵは、パーソナルコンピュータなどのホストシステムに組み込まれるＣＰＵに比べて処理能力が低い。このため、ファームウェア等の処理のオーバーヘッドの問題は、非常に深刻なものとなる。従って、このようなオーバーヘッドの問題を効果的に解消できる技術が望まれている。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ファームウェア等の処理のオーバーヘッドを軽減し、小規模なハードウェアで高速なデータ転送を実現できるデータ転送制御装置及びこれが用いられる電子機器を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために本発明は、バスに接続される複数のノード間でのデータ転送のためのデータ転送制御装置であって、ハードウェアによる連続パケット転送を指示する第１のスタートコマンドを処理手段が発行した場合に、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理を実行する転送実行回路と、前記転送実行回路により連続パケット転送処理が実行されている間に、パケット転送を指示する第２のスタートコマンドを処理手段が発行した場合には、連続パケット転送における１つのトランザクション又は１つのパケット転送の完了を待って、前記第２のスタートコマンドによるパケット転送を許可する調停回路とを含むことを特徴とする。
【０００９】
本発明によれば、処理手段が第１のスタートコマンドを発行すると、ハードウェアにより、転送データが複数のパケットに分割されて連続転送される。従って、処理手段は、第１のスタートコマンドを発行した後は、連続パケット転送が完了するのを待つだけでよいため、処理手段の処理負担を格段に軽減できる。
【００１０】
そして、一旦、このような連続パケット転送が開始してしまうと、全てのパケットの転送が完了するまで、ある程度の待ち時間が必要になる。従って、連続パケット転送の完了を待っていたのでは、第２のスタートコマンドによるパケット転送に不具合が生じる可能性がある。
【００１１】
本発明によれば、連続パケット転送の最中に、第２のスタートコマンドによるパケット転送を割り込ませることができるため、連続パケット転送が全て完了するのを待つことなく、第２のスタートコマンドによるパケット転送を実行できるようになる。従って、上記のような不具合が生じるのを効果的に防止できる。
【００１２】
また本発明は、前記転送実行回路が、相手ノードの記憶手段にページテーブルが存在する場合には、該ページテーブルを相手ノードからフェッチするページテーブルフェッチ回路と、相手ノードの記憶手段にページテーブルが存在しない場合には、ページ境界情報に基づいて仮想的なページテーブルを生成するページテーブル生成回路と、ペイロードサイズのパケットに転送データを分割するペイロード分割回路と、データ転送の実行を制御する転送実行制御回路と、相手ノードに送信する要求パケットの制御情報を生成する制御情報生成回路の少なくとも１つを含むことを特徴とする。このような回路ブロックを含ませることで、ページテーブルのフェッチ・生成処理や、パケットのペイロード分割処理や、データ転送の実行を制御する処理や、要求パケットの制御情報（ヘッダ等）を生成する処理などをハードウェアにより実行できるようになる。これにより、処理手段の負担を大幅に軽減できる。
【００１３】
また本発明は、前記調停回路が、前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第１のスタート信号がアクティブになった後に前記第２のスタート信号がアクティブになった場合には、前記第１のスタート信号による転送処理を先にスタートさせ、前記完了信号がアクティブになった後に、前記第２のスタート信号による転送処理をスタートさせることを特徴とする。このようにすれば、第１のスタート信号が第２の信号よりも先にアクティブになった場合には、第１のスタート信号による転送処理（トランザクション、パケット転送）を実行し、その転送処理の完了を待って、第２のスタート信号による転送処理を実行できるようになる。
【００１４】
また本発明は、前記調停回路が、前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第１、第２のスタート信号が同時にアクティブになった場合には、前記第２のスタート信号による転送処理を優先することを特徴とする。このようにすれば、例えば、相手ノードから要求パケットが転送されてきた場合などに、この要求パケットに対して直ぐに応答パケットを返せるようになる。
【００１５】
また本発明は、前記調停回路が、前記転送実行回路による転送開始要求時にアクティブになる第１のスタート信号と、前記第２のスタートコマンドによる転送開始要求時にアクティブになる第２のスタート信号と、転送完了時にアクティブになる完了信号とを受け、前記第２のスタート信号がアクティブになった後に前記第１のスタート信号がアクティブになった場合には、前記第２のスタート信号による転送処理を先にスタートさせ、前記完了信号がアクティブになった後に、前記第１のスタート信号による転送処理をスタートさせることを特徴とする。このようにすれば、第２のスタート信号が第１の信号よりも先にアクティブになった場合には、第２のスタート信号による転送処理（トランザクション、パケット転送）を実行し、その転送処理の完了を待って、第１のスタート信号による転送処理を実行できるようになる。
【００１６】
また本発明は、パケットの制御情報が格納される制御情報領域とパケットのデータが格納されるデータ領域とを有し、ランダムアクセス可能なパケット記憶手段と、前記パケット記憶手段への書き込みアドレスを発生するアドレス発生回路とを含み、前記パケット記憶手段の前記制御情報領域が、第１の制御情報領域と、前記転送実行回路により制御情報が書き込まれる第２の制御情報領域とに分離されており、前記アドレス発生回路が、前記調停回路からの調停結果に基づいて、第１の制御情報領域のアドレスと第２の制御情報領域のアドレスのいずれのアドレスを発生するのかを切り替えることを特徴とする。このようにすれば、第１、第２の制御情報領域のアドレスを簡素な処理で切り替えることができるようになる。そして、このようなアドレス切替が可能になることで、第２の制御情報領域に対して、転送実行回路が生成した制御情報を連続して書き込めるようになり、ハードウェアによる制御情報の生成・書き込み処理の簡素化を図れる。
【００１７】
また本発明は、パケットの制御情報が格納される制御情報領域とパケットのデータが格納されるデータ領域とを有し、ランダムアクセス可能なパケット記憶手段を含み、前記パケット記憶手段の前記データ領域が、第１の層用の第１のデータが格納される第１のデータ領域と、前記転送実行回路による連続パケット転送の対象となる第２の層用の第２のデータが格納される第２のデータ領域とに分離されていることを特徴とする。本発明によれば、パケットの制御情報（例えばヘッダ、フッター）は制御情報領域に格納され、パケットの第１のデータ（例えばトランザクション層用のデータ）は第１のデータ領域に格納され、パケットの第２のデータ（例えばアプリケーション層用のデータ）は第２のデータ領域に格納される。このようにすれば、第２のデータ領域から第２のデータを連続して読み出して、第２の層に転送することができるようになる。これにより、データ転送を飛躍的に高速化できる。
【００１８】
なお本発明では、前記第１のデータが、前記第１の層のプロトコルで使用されるコマンドデータであり、前記第２のデータが、アプリケーション層で使用されるデータであることが望ましい。
【００１９】
また本発明は、トランザクションを開始させる要求パケットを相手ノードに対して送信する際に、前記要求パケットに含まれるトランザクション識別情報の中に、相手ノードから応答パケットを受信した際に行う処理を指示するための指示情報を含ませ、相手ノードから応答パケットを受信した場合に、応答パケットのトランザクション識別情報が含む前記指示情報に基づき、応答パケットの制御情報、第１、第２のデータを、各々、前記制御情報領域、前記第１、第２のデータ領域に書き込むことを特徴とする。このようにすれば、応答ノードから応答パケットが返信されてきた時に、ファームウェアなどの処理手段が関与することなく、指示情報により指示される領域に応答パケットの制御情報、第１、第２のデータが自動的に書き込まれるようになる。従って、処理手段の処理負担を格段に軽減できる。
【００２０】
また、本発明では、ＩＥＥＥ１３９４の規格に準拠したデータ転送を行うことが望ましい。
【００２１】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して他のノードから受信したデータに所与の処理を施す装置と、処理が施されたデータを出力又は記憶するための装置とを含むことを特徴とする。また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して他のノードに送信するデータに所与の処理を施す装置と、処理が施されるデータを取り込むための装置とを含むことを特徴とする。
【００２２】
本発明によれば、他のノードから転送されたデータを電子機器において出力したり記憶したりする処理、電子機器において取り込んだデータを他のノードに転送したりする処理を高速化することが可能になる。また、本発明によれば、データ転送制御装置を小規模化できると共に、データ転送を制御するファームウェアなどの処理負担を軽減できるため、電子機器の低コスト化、小規模化などを図ることも可能になる。
【００２３】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２４】
１．ＩＥＥＥ１３９４
まず、ＩＥＥＥ１３９４について簡単に説明する。
【００２５】
１．１  概要
ＩＥＥＥ１３９４（ＩＥＥＥ１３９４−１９９５、Ｐ１３９４．ａ）では１００〜４００Ｍｂｐｓの高速なデータ転送が可能となっている（Ｐ１３９４．ｂでは８００〜３２００Ｍｂｐｓ）。また、転送速度が異なるノードをバスに接続することも許される。
【００２６】
各ノードはツリー状に接続されており、１つのバスに最大で６３個のノードが接続可能になっている。なお、バスブリッジを利用すれば約６４０００個のノードを接続することも可能である。
【００２７】
ＩＥＥＥ１３９４では、パケットの転送方式として非同期転送とアイソクロナス転送が用意されている。ここで非同期転送は、信頼性が要求されるデータの転送に好適な転送方式であり、アイソクロナス転送は、リアルタイム性が要求される動画像や音声などのデータの転送に好適な転送方式である。
【００２８】
１．２  層構造
ＩＥＥＥ１３９４の層構造（プロトコル構成）を図１に示す。
【００２９】
ＩＥＥＥ１３９４のプロトコルは、トランザクション層、リンク層、物理層により構成される。また、シリアルバスマネージメントは、トランザクション層、リンク層、物理層をモニターしたり制御したりするものであり、ノードの制御やバスのリソース管理のための種々の機能を提供する。
【００３０】
トランザクション層は、上位層にトランザクション単位のインターフェース（サービス）を提供し、下層のリンク層が提供するインターフェースを通して、リードトランザクション、ライトトランザクション、ロックトランザクション等のトランザクションを実施する。
【００３１】
ここで、リードトランザクションでは、応答ノードから要求ノードにデータが転送される。一方、ライトトランザクションでは、要求ノードから応答ノードにデータが転送される。またロックトランザクションでは、要求ノードから応答ノードにデータが転送され、応答ノードがそのデータに処理を施して要求ノードに返信する。
【００３２】
リンク層は、アドレッシング、データチェック、パケット送受信のためのデータフレーミング、アイソクロナス転送のためのサイクル制御などを提供する。
【００３３】
物理層は、リンク層により使用されるロジカルシンボルの電気信号への変換や、バスの調停や、バスの物理的インターフェースを提供する。
【００３４】
１．３  ＳＢＰ-2
さて、図２に示すように、ＩＥＥＥ１３９４のトランザクション層の一部の機能を含む上位のプロトコルとして、ＳＢＰ-2（Serial Bus Protocol-2）と呼ばれるプロトコルが提案されている。
【００３５】
ここでＳＢＰ-2は、ＳＣＳＩのコマンドセットをＩＥＥＥ１３９４のプロトコル上で利用可能にするために提案されたものである。このＳＢＰ-2を用いれば、既存のＳＣＳＩ規格の電子機器で使用されていたＳＣＳＩのコマンドセットに最小限の変更を加えて、ＩＥＥＥ１３９４規格の電子機器に使用できるようになる。従って、電子機器の設計や開発を容易化できる。また、ＳＣＳＩのコマンドだけではなく、デバイス固有のコマンドもカプセル化して利用できるため、非常に汎用性が高い。
【００３６】
図３に示すようにＳＢＰ-2では、まず、イニシエータ（例えばパーソナルコンピュータ）により作成されたログインＯＲＢ（Operation Request Block）を用いてログイン処理が行われる（ステップＴ１）。次に、ダミーＯＲＢを用いてフェッチエージェントの初期化が行われる（ステップＴ２）。そして、ノーマルコマンドＯＲＢを用いてコマンド処理が行われ（ステップＴ３）、最後に、ログアウトＯＲＢを用いてログアウト処理が行われる（ステップＴ４）。
【００３７】
ステップＴ３のコマンド処理においては、図４のＡ１に示すように、イニシエータがライト要求パケットを転送して（ライト要求トランザクションを発行して）、ターゲットのドアベルレジスタをリングする。すると、Ａ２に示すように、ターゲットがリード要求パケットを転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータが作成したＯＲＢ（ノーマルコマンドＯＲＢ）が、ターゲットのデータバッファにフェッチされる。そして、ターゲットは、フェッチされたＯＲＢに含まれるコマンドを解析する。
【００３８】
そして、ＯＲＢに含まれるコマンドがＳＣＳＩのリードコマンドであった場合には、Ａ３に示すように、ターゲットは、一連のライト要求パケットをイニシエータに転送する。これにより、例えばターゲットのメディア（ＣＤ−ＲＷ）から読み出されたデータ（ストリーム）が、イニシエータのデータバッファに転送されることになる。
【００３９】
一方、ＯＲＢに含まれるコマンドがＳＣＳＩのライトコマンドであった場合には、図５のＢ１に示すように、ターゲットがリード要求パケットをイニシエータに転送し、イニシエータが対応するリード応答パケットを返す。これにより、イニシエータのデータバッファに格納されているデータ（ストリーム）がターゲットに転送され、ターゲットのメディアに書き込まれることになる（ターゲットがプリンタの場合には印刷される）。
【００４０】
このＳＢＰ-2によれば、ターゲットは、自身が都合の良いときに要求パケットを転送して（トランザクションを発行して）、データを送受信できる。従って、イニシエータとターゲットが同期して動く必要がなくなるため、データ転送効率を高めることができる。
【００４１】
なお、ＩＥＥＥ１３９４の上位プロトコルとしては、ＳＢＰ-2以外にも、ＦＣＰ（Function Control Protocol）と呼ばれるプロトコルなども提案されている。
【００４２】
さて、ターゲット、イニシエータ間でデータ転送を行う場合、図６（Ａ）のようにイニシエータ（相手ノード）のデータバッファ（記憶手段）にページテーブルが存在する場合と、存在しない場合がある。
【００４３】
そして、ページテーブルが存在する場合には、図６（Ｂ）に示すように、イニシエータが作成したＯＲＢの中には、そのページテーブルのアドレスやエレメント数が含まれる。そして、転送データのアドレス（読み出しアドレス、書き込みアドレス）は、このページテーブルを用いて間接アドレス指定される。
【００４４】
一方、ページテーブルが存在しない場合には、図６（Ｃ）に示すように、ＯＲＢの中にはアドレスとデータ長が含まれ、転送データのアドレスが直接アドレス指定される。
【００４５】
２．全体構成
次に、本実施形態のデータ転送制御装置の全体構成の例について図７を用いて説明する。
【００４６】
図７において、ＰＨＹインターフェース１０は、ＰＨＹデバイス（物理層のデバイス）とのインターフェースを行う回路である。
【００４７】
リンクコア２０（リンク手段）は、リンク層のプロトコルやトランザクション層のプロトコルの一部をハードウェアにより実現する回路であり、ノード間でのパケット転送のための各種サービスを提供する。レジスタ２２は、リンクコア２０を制御するためのレジスタである。
【００４８】
ＦＩＦＯ（Asynchronous Transmission Fifo）３０、ＦＩＦＯ（Isochronous Transmission Fifo）３２、ＦＩＦＯ（Reception Fifo）３４は、各々、非同期送信用、アイソクロナス送信用、受信用のＦＩＦＯであり、例えばレジスタや半導体メモリなどのハードウェアにより構成される。本実施形態では、これらのＦＩＦＯ３０、３２、３４の段数は非常に少ない。例えば１つのＦＩＦＯの段数は、好ましくは３段以下であり、更に好ましくは２段以下となる。
【００４９】
ＤＭＡＣ４０（読み出し手段）、ＤＭＡＣ４２（読み出し手段）、ＤＭＡＣ４４（書き込み手段）は、各々、ＡＴＦ用、ＩＴＦ用、ＲＦ用のＤＭＡコントローラである。これらのＤＭＡＣ４０、４２、４４を用いることで、ＣＰＵ６６に介入されることなく、ＲＡＭ８０とリンクコア２０との間でのデータ転送が可能になる。なお、レジスタ４６は、ＤＭＡＣ４０、４２、４４などを制御するためのレジスタである。
【００５０】
ポートインターフェース５０は、アプリケーション層のデバイス（例えばプリンタの印字処理を行うデバイス）とのインターフェースを行う回路である。
【００５１】
ＦＩＦＯ（ＰＦ）５２は、アプリケーション層のデバイスとの間でのデータ転送のためのＦＩＦＯであり、ＤＭＡＣ５４は、ＰＦ用のＤＭＡコントローラである。レジスタ５６は、ポートインターフェース５０やＤＭＡＣ５４を制御するレジスタである。
【００５２】
ＳＢＰ-2コア８４（転送実行回路）は、ＳＢＰ-2のプロトコルの一部やトランザクション層の一部をハードウェアにより実現する回路である。このＳＢＰ-2コア８４の機能により、転送データを一連のパケットに分割し、分割された一連のパケットを連続転送する処理が可能になる。なお、レジスタ８８は、ＳＢＰ-2コア８４を制御するためのレジスタであり、ＤＭＡＣ（ＳＢＰ-2用）８６は、ＳＢＰ-2コア８４用のＤＭＡコントローラである。
【００５３】
ＲＡＭ領域管理回路３００は、ＲＡＭ８０の各領域を管理するための回路である。ＲＡＭ領域管理回路３００は、ＲＡＭ８０の各領域がフルになったり、エンプティになった場合に、各種のフル信号、エンプティ信号を用いてＤＭＡＣ４０、４２、４４、５４、８６を制御する。
【００５４】
ＣＰＵインターフェース６０は、データ転送制御装置をコントロールするＣＰＵ６６（処理手段）とのインターフェースを行う回路である。ＣＰＵインターフェース６０は、アドレスデコーダ６２、データ同期化回路６３、割り込みコントローラ６４を含む。クロック制御回路６８は、本実施形態で使用されるクロックを制御するものであり、ＰＨＹデバイス（ＰＨＹチップ）から送られてくるＳＣＬＫ（データ転送制御装置のシステムクロック）や、ＨＣＬＫ（ＣＰＵ６６の動作クロック）が入力される。
【００５５】
バッファマネージャ７０は、ＲＡＭ８０とのインターフェースを管理する回路である。バッファマネージャ７０は、バッファマネージャの制御のためのレジスタ７２、ＲＡＭ８０へのバス接続を調停する調停回路７４、各種の制御信号を生成するシーケンサ７６を含む。
【００５６】
ＲＡＭ８０は、ランダムアクセス可能なパケット記憶手段として機能するものであり、その機能は例えばＳＲＡＭ、ＳＤＲＡＭ、ＤＲＡＭなどにより実現される。
【００５７】
なおＲＡＭ８０は、本実施形態のデータ転送制御装置に内蔵させることが特に望ましいが、その一部又は全部を外付けにすることも可能である。
【００５８】
図８に、ＲＡＭ８０のメモリマップの一例を示す。図８に示すように本実施形態では、ＲＡＭ８０が、ヘッダ領域（ＡＲ２、ＡＲ３、ＡＲ４、ＡＲ６）とデータ領域（ＡＲ５、ＡＲ７、ＡＲ８、ＡＲ９）に分離されている。そして、パケットのヘッダ（広義には制御情報）はヘッダ領域に格納され、パケットのデータ（ＯＲＢ、ストリーム）はデータ領域に格納される。
【００５９】
また本実施形態では、図８に示すように、ＲＡＭ８０のデータ領域（ＡＲ５、ＡＲ７、ＡＲ８、ＡＲ９）が、ＯＲＢ領域（ＡＲ５、ＡＲ７）とストリーム領域（ＡＲ８、ＡＲ９）に分離されている。
【００６０】
更に本実施形態では、ＲＡＭ８０が、受信領域（ＡＲ２、ＡＲ４、ＡＲ５、ＡＲ９）と送信領域（ＡＲ３、ＡＲ６、ＡＲ７、ＡＲ８）に分離されている。
【００６１】
なお、ＯＲＢ（第１の層用の第１のデータ）は、上述したようにＳＢＰ-2用のデータ（コマンド）である。一方、ストリーム（第１の層より上層の第２の層用の第２のデータ）は、アプリケーション層用のデータ（プリンタの印字データ、ＣＤ−ＲＷの読み出し・書き込みデータ、スキャナによる取り込み画像データ等）である。
【００６２】
また、ＡＲ１、ＡＲ２、ＡＲ３に示すＨＷ（ハードウェア）用ページテーブル領域、ＨＷ用受信ヘッダ領域、ＨＷ用送信ヘッダ領域は、図７に示すＳＢＰ-2コア８４が、ページテーブルや受信ヘッダや送信ヘッダを書き込んだり読み出したりするための領域である。
【００６３】
なお、図８においてＡＲ４、ＡＲ５、ＡＲ８、ＡＲ９に示す領域は、いわゆるリングバッファ構造になっている。
【００６４】
さて、図７のバス９０（或いはバス９２、９４）は、アプリケーションに接続されるものである（第１のバス）。またバス９５（或いはバス９６）はデータ転送制御装置をコントロールし、或いはデータをリード・ライトするためのものであり、データ転送制御装置をコントロールするデバイス（例えばＣＰＵ）に電気的に接続される（第２のバス）。またバス１００（或いはバス１０２、１０４、１０５、１０６、１０７、１０８、１０９）は、物理層のデバイス（ＰＨＹデバイス）に電気的に接続されるものである（第３のバス）。また、バス１１０は、ランダムアクセス可能な記憶手段であるＲＡＭ８０に電気的に接続されるものである（第４のバス）。またバス９９は、ＳＢＰ-2コア８４がハードウェアによりＳＢＰ-2を実現するためのヘッダ情報やページテーブル情報をリード・ライトするためのものである（第５のバス）。
【００６５】
バッファマネージャ７０の調停回路７４は、ＤＭＡＣ４０、４２、４４、ＣＰＵインターフェース６０、ＤＭＡＣ８６、５４からのバスアクセス要求の調停を行う。そして、この調停結果に基づいて、各々、バス１０５、１０７、１０９、９６、９９、９４のいずれかと、ＲＡＭ８０のバス１１０との間にデータの経路が確立される（第１、第２、第３、第５のバスのいずれかと第４のバスとの間にデータ経路が確立される）。
【００６６】
本実施形態の１つの特徴は、ランダムアクセスが可能でありパケットを格納するＲＡＭ８０を設けると共に、互いに分離されるバス９０、９５、９９、１００と、これらのバスをＲＡＭ８０のバス１１０に接続するための調停回路７４とを設けた点にある。
【００６７】
このようにすることで図９に示すように、データ転送制御装置１２０、アプリケーション層のデバイス１２４間のバス９０と、ＣＰＵバス９６と、データ転送制御装置１２０、ＲＡＭ８０間のバス１１０とを分離できる。従って、ＣＰＵバス９６をデータ転送の制御のみに使用できるようになる。また、バス９０を占有して、データ転送制御装置１２０、アプリケーション層のデバイス１２４間でデータ転送を行うことができるようになる。例えば、データ転送制御装置１２０が組み込まれる電子機器がプリンタである場合には、バス９０を占有して印字データを転送できるようになる。この結果、ＣＰＵ６６の処理負担を軽減でき、システム全体の実転送速度を高めることができる。またＣＰＵ６６として安価なものを採用できると共に、ＣＰＵバス９６として高速なバスを使用する必要性がなくなる。このため、電子機器の低コスト化、小規模化を図れるようになる。
【００６８】
３．ＳＢＰ-2コア（転送実行回路）の構成
図１０に、図７のＳＢＰ-2コア８４の構成例を示す。ＳＢＰ-2コア８４は、転送データを一連のパケットに自動的に分割し、分割された一連のパケットを連続転送するための回路であり、主に図４のＡ３、図５のＢ１に示すパケット転送をハードウェアにより実行する。
【００６９】
メイン制御回路２００は、ＳＢＰ-2コア８４の全体を制御するための回路であり、レジスタ２０２、２０４、２０６、２０８を含む。
【００７０】
ここで、レジスタ２０２、２０４、２０６は、各々、データ転送（ハードウェアＳＢＰ-2処理）のスタートコマンド、ポーズコマンド、レジュームコマンドをファームウェア（ＣＰＵ）が発行するためのレジスタである。即ち、ファームウェアがレジスタ２０２に１を書き込むと、転送データを一連のパケットに分割して連続転送する処理が開始する。そして、この転送処理中に、ファームウェアがレジスタ２０４に１を書き込むと、データ転送処理がポーズされ、レジスタ２０６に１を書き込むと、ポーズされていたデータ転送処理が再開される。
【００７１】
レジスタ２０８は、ページテーブルの存在、不存在を設定するためのレジスタである。即ち、ファームウェアは、イニシエータからのＯＲＢを解析し、イニシエータのデータバッファにページテーブルが存在しないと判断した場合には、レジスタ２０８に１を書き込む。一方、存在すると判断した場合（図６（Ａ）の場合）には、レジスタ２０８に０を書き込む。
【００７２】
ページテーブルフェッチ回路２１０は、イニシエータ（相手ノード）のデータバッファ（記憶手段）にページテーブルが存在する場合に、そのページテーブルをイニシエータからフェッチするための処理を行う回路である。より具体的には、ページテーブルフェッチ回路２１０は、送信ヘッダ生成回路２６０にページテーブルのフェッチを指示し、フェッチが完了すると、ページテーブルアドレスやページテーブルサイズの更新をページテーブル生成回路２２０に指示する。
【００７３】
ページテーブル生成回路２２０は、イニシエータのデータバッファにページテーブルが存在しない場合に、仮想的なページテーブルを生成する回路である。より具体的には、メイン制御回路２００からページテーブルの生成が指示されると、所与のアルゴリズムにしたがってページテーブルを生成する。そして、生成されたページテーブルを、エレメント保持回路２３０やバッファインターフェース２９０を介してＲＡＭのＨＷ用ページテーブル領域に書き込むための処理を行う。
【００７４】
なお、ページテーブルが存在するか否かは、前述のように、レジスタ２０８の設定値に基づき判断される。また、ページテーブルフェッチ回路２１０、ページテーブル生成回路２２０によりフェッチ又は生成されたページテーブルは、ＲＡＭのＨＷ用ページテーブル領域（図８のＡＲ１）に格納される。
【００７５】
ページテーブル生成回路２２０が含むレジスタ２２２には、イニシエータからのＯＲＢにより指定されたページ境界サイズが設定される。またレジスタ２２４、２２６には、ページテーブルが存在する場合には、ＯＲＢにより指定されたページテーブルアドレス、ページテーブルサイズ（エレメント数）が設定される（図６（Ｂ）参照）。一方、ページテーブルが存在しない場合には、転送データの先頭アドレスとデータ長が設定される（図６（Ｃ）参照）。またエレメントカウンタ２２８は、ページテーブルの生成の際に、ページテーブルのエレメント数（エレメントポインタ）をカウントする処理を行う。
【００７６】
エレメント保持回路２３０は、ＳＢＰ-2コアの処理対象となるページテーブルエレメントの情報を保持する回路であり、ページテーブルエレメントのセグメント長を保持するレジスタ２３２と、セグメントオフセットアドレスを保持するレジスタ２３４を含む。
【００７７】
転送実行制御回路２４０は、ＳＢＰ-2コアによるデータ転送（ストリーム転送）の実行を制御する回路であり、レジスタ２４２、２４４を含む。そして、レジスタ２４２は、現在処理中のページテーブルエレメントの番号を表示する。またレジスタ２４４には、データ転送を開始するページテーブルエレメントの番号が、ファームウェアにより設定される。これにより、ファームウェアは任意のページテーブルエレメントからのデータ転送を開始できるようになる。
【００７８】
ペイロード分割回路２５０は、転送データを、ペイロードサイズのパケットに分割する処理を行う。ペイロード分割回路２５０が含むレジスタ２５２には、ＯＲＢにより指定された最大ペイロードサイズが設定される。またレジスタ２５４は、実際のペイロードサイズを表示する。ペイロード分割回路２５０は、ＲＡＭのＨＷページテーブル領域（図８のＡＲ１）から読み出されてレジスタ２３２に保持されるページテーブルエレメントのセグメント長と、レジスタ２５２に設定された最大ペイロードサイズとに基づいて、ペイロード分割処理を行うことになる。
【００７９】
送信ヘッダ生成回路２６０は、ファームウェアにより設定されたスピードコードやデスティネーションＩＤなどに基づいて、図４のＡ３、図５のＢ１の各要求パケットのヘッダを生成する処理を行う。そして、生成されたヘッダは、ＲＡＭのＨＷ用送信ヘッダ領域（図８のＡＲ３）に格納される。このように本実施形態では、連続転送される一連の要求パケットのヘッダがハードウェアにより自動生成されるため、ファームウェアの処理負担を大幅に軽減できる。
【００８０】
トランザクション制御回路２７０は、リンクコアなどの外部の回路ブロックからのエラー情報やステータス情報を受け、トランザクションの実行のための種々の処理を行う。そして、トランザクションの実行が完了すると、トランザクション完了信号ＴＣｏｍｐをアクティブにして、ページテーブルフェッチ回路２１０やペイロード分割回路２５０に知らせる。このように本実施形態のＳＢＰ-2コアは、パケット単位ではなく、トランザクション単位でデータ転送処理を管理している。
【００８１】
スプリットタイマ２８０は、トランザクションの開始時にスプリットタイムをロードし、カウントダウンを開始する。そして、カウント値が０になったら、タイムアウトになったことをトランザクション制御回路２７０に伝える。
【００８２】
バッファインターフェース２９０は、図７のバッファマネージャ７０とのインターフェースとして機能する回路である。ＳＢＰ-2コア８４の各ブロックは、このバッファインターフェース２９０を介して、バッファマネージャ７０に対してＲＡＭ８０へのアクセスを要求することになる。
【００８３】
３．１  メイン制御回路
次に、メイン制御回路２００の動作について図１１のフローチャートを用いて説明する。
【００８４】
まず、ＨＷ用ページテーブル領域に既に格納されているページテーブルを使用するか否かを判断し（ステップＳ１）、使用する場合にはステップＳ５に、使用しない場合にはステップＳ２に移行する。既にＨＷ用ページテーブル領域に格納されているページテーブルを使用するか否かの設定は、ファームウェアが所与のレジスタに所与の設定値を書き込むことで実現される。
【００８５】
次に、図１０のレジスタ２０８の設定値に基づき、イニシエータのデータバッファにページテーブルが存在するか否かを判断する（ステップＳ２）。そして、存在する場合には、ページテーブルフェッチ回路２１０に対して、ページテーブルのフェッチ処理の開始を指示する（ステップＳ３）。一方、存在しない場合には、ページテーブル生成回路２２０に対して、ページテーブルの生成処理の開始を指示する（ステップＳ４）。
【００８６】
そして、ページテーブルのフェッチ又は生成処理が完了すると、転送実行制御回路２４０に対して、転送実行処理（ストリームデータタスク）の開始を指示する（ステップＳ５）。
【００８７】
なお、本実施形態のページテーブル生成回路２２０は以下に説明するような手法でページテーブルを生成する。
【００８８】
例えば図１２に示すように、転送データの先頭アドレスＳＡがページ境界ＰＢ０、ＰＢ１間にあり、終了アドレスＥＡがページ境界ＰＢ４、ＰＢ５間にあったとする。この場合に、ページテーブル生成回路２２０は、ページ境界ＰＢ１、ＰＢ４間（第Ｋ、第Ｌのページ境界間）のページテーブルのエレメント数が、１（広義には所定数）となる仮想的なページテーブルを生成する。
【００８９】
より具体的には、先頭アドレスＳＡとページ境界ＰＢ１間がＸ種のページテーブルエレメント（第１のページテーブルエレメント）になり、ページ境界ＰＢ１、ＰＢ４間がＹ種のページテーブルエレメント（第２のページテーブルエレメント）になり、ページ境界ＰＢ４と終了アドレスＥＡ間がＺ種のページテーブルエレメント（第３のページテーブルエレメント）になる３ページのページテーブルを生成する。
【００９０】
但し、転送データの先頭アドレスＳＡがページ境界ＰＢ１（第Ｋのページ境界）上にある場合には、Ｘ種のページテーブルエレメントは生成されず、２ページのページテーブルになる。また、転送データの終了アドレスＥＡがページ境界ＰＢ４（第Ｌのページ境界）上にある場合には、Ｚ種のページテーブルエレメントは生成されず、２ページのページテーブルになる。更に、転送データの先頭アドレスＳＡがページ境界ＰＢ０、ＰＢ１間にあり、終了アドレスＥＡがページ境界ＰＢ０、ＰＢ１間又はＰＢ１上にある場合には、ＳＡ、ＥＡ間がＸ種のページテーブルエレメントとなる１ページのページテーブルが生成される。
【００９１】
また本実施形態では、図１０のペイロード分割回路２５０が、最大ペイロードサイズがページ境界サイズの約数となるペイロードサイズのパケットに、転送データを分割している。即ち図１３において、最大ペイロードサイズＭａｘＰＬＳがページ境界サイズＰＢＳの約数となるようなパケット分割が行われる。
【００９２】
このように、最大ペイロードサイズＭａｘＰＬＳをページ境界サイズＰＢＳの約数にすれば、例えば図１３のＣ１やＣ２に示すように、ページ境界ＰＢ２やＰＢ３においてパケットのペイロードがページ境界をまたがないようになる。従って、本実施形態のようにＰＢ１、ＰＢ４間のページテーブルエレメント数が１となるようなページテーブルを生成した場合にも、ページ境界を越えないという制約を遵守しながらデータ転送を行えるようになる。
【００９３】
３．２  転送実行（ストリームタスク）制御回路
次に、転送実行制御回路２４０の動作について図１４のフローチャートを用いて説明する。
【００９４】
まず、図１０のカレントエレメント番号のレジスタ２４２に、レジスタ２４４のスタートエレメント番号をロードする（ステップＳ４０）。そして、カレントエレメント番号のページテーブルエレメントを、ＲＡＭのＨＷ用ページテーブル領域から読み出す処理を行う（ステップＳ４１）。より具体的には、転送実行制御回路２４０は、処理対象となるページテーブルエレメントの読み出しをバッファインターフェース２９０に指示する。すると、バッファインターフェース２９０は、処理対象となるページテーブルエレメントをＲＡＭのＨＷ用ページテーブル領域から読み出し、ページテーブルエレメントのセグメント長をレジスタ２３２に、セグメントオフセットアドレスをレジスタ２３４に書き込む。
【００９５】
次に、ペイロード分割回路２５０に対してペイロード分割処理の開始を指示する（ステップＳ４２）。
【００９６】
次に、現在のページテーブルエレメントの処理を終了したか否かを判断し（ステップＳ４３）、終了していない場合にはステップＳ４２に戻る。一方、終了した場合には、全てのページテーブルエレメントの処理を終了したか否かを判断すし（ステップＳ４４）、終了していない場合には、カレントエレメント番号を＋１して（ステップＳ４５）、ステップＳ４１に戻る。
【００９７】
なお、全てのページテーブルエレメントの処理を終了したか否かは、レジスタ２２６のページテーブルサイズを８で除算することで得られるエレメント数と、カレントエレメント番号とを比較することで判断する。
【００９８】
３．３  ペイロード分割回路
次に、ペイロード分割回路２５０の動作について図１５のフローチャートを用いて説明する。ペイロード分割回路２５０は、図１３に示すようにペイロードサイズのパケットに転送データを分割する処理を行うものである。
【００９９】
まず、図１０のレジスタ２３２に格納されるページテーブルエレメントのセグメント長の残りバイト数が、最大ペイロードサイズ以上になっているか否かを判断する（ステップＳ５１）。そして、残りバイト数が最大ペイロードサイズ以上になっている場合には、パケットのペイロードサイズを最大ペイロードサイズに設定する（ステップＳ５２）。一方、図１３のＣ３やＣ４に示すように、残りバイト数が最大ペイロードサイズよりも小さくなっている場合には、パケットのペイロードサイズを残りバイト数に設定する（ステップＳ５３）。
【０１００】
ペイロードサイズの設定後、トランザクションの実行処理の開始（送信ヘッダの生成）を送信ヘッダ生成回路２６０に指示する（ステップＳ５４）。そして、トランザクション制御回路２７０からの信号ＴＣｏｍｐによりトランザクションの完了が知らされると、エレメント保持回路２３０に対して、レジスタ２３２、２３４に格納されているページテーブルエレメントのセグメント長（残りバイト数）、セグメントオフセットアドレス（先頭アドレス）の更新を指示する（ステップＳ５５）。
【０１０１】
次に、メイン制御回路２００からの信号Ｐａｕｓｅに基づいて、処理をポーズするか否かを判断する（ステップＳ５６）。即ち、信号Ｐａｕｓｅがアクティブになった場合には処理をポーズする。そしてポーズされた場合には、信号Ｐａｕｓｅが非アクティブになったことを条件に、処理をレジュームする（ステップＳ５７）。
【０１０２】
３．４  送信ヘッダ生成回路、トランザクション制御回路
次に、送信ヘッダ生成回路２６０、トランザクション制御回路２７０の動作について図１６のフローチャートを用いて説明する。
【０１０３】
まず、要求パケットのヘッダを生成し、ＨＷ用送信ヘッダ領域（図８のＡＲ３）に書き込む（ステップＳ６１）。より具体的には、図４のＡ３のようにイニシエータにデータを送信する場合には、ライト要求（ブロックライト要求）パケットのヘッダをＨＷ用送信ヘッダ領域に書き込む。一方、図５のＢ１のようにイニシエータからデータを受信する場合や、ページテーブルをフェッチする場合には、リード要求パケットのヘッダをＨＷ用送信ヘッダ領域に書き込む。
【０１０４】
次に、転送のスタート信号（ＨＷＳｔａｒｔ）をアクティブにして転送の開始を指示し（ステップＳ６２）、イニシエータからのＡＣＫの受信を待つ（ステップＳ６３）。
【０１０５】
次に、送信パケットがリード要求パケットであった場合には、ＡＣＫペンディングか否かを判断し（ステップＳ６５）、ＡＣＫペンディングでない場合にはステップＳ７２に移行してエラーポーズ状態にする。一方、ＡＣＫペンディングの場合には、スプリットタイマの起動を指示して（ステップＳ６６）、応答パケットの受信を待つ（ステップＳ６７）。
【０１０６】
次に、応答パケットの受信がパーフェクトであったか否かを判断し（ステップＳ６８）、ＤＣＥの場合には再度応答パケットが受信されるのを待ち、パーフェクトの場合にはステップＳ６９に移行し、その他の場合にはステップＳ７２に移行してエラーポーズ状態にする。そして、ステップＳ６９に移行した場合にはスプリットタイマの停止を指示し、信号ＴＣｏｍｐをアクティブにして転送データのポインタを更新する（ステップＳ７０）。
【０１０７】
一方、送信パケットがライト要求パケットであった場合には、まず、ＡＣＫペンディングか否かを判断する（ステップＳ７１）。そして、ＡＣＫペンディングの場合にはステップＳ６６に移行し、ＡＣＫコンプリートの場合にはステップＳ７０に移行し、それ以外の場合にはステップＳ７２に移行してエラーポーズ状態にする。
【０１０８】
なお、ステップＳ７２に移行して処理がエラーポーズになった場合には、処理がレジュームされたことを条件に、ステップＳ６２に移行する（ステップＳ７３）。即ち、この場合には、ＨＷ用送信ヘッダ領域に既に書き込まれている送信ヘッダを再利用して、転送を再開することになる。
【０１０９】
４．ＨＷ（ハードウェア）転送とＦＷ（ファームウェア）転送の調停
以上のように本実施形態によれば、図４のＡ３や図５のＢ１に示す連続パケット転送がハードウェアにより自動実行される。より具体的には、まず、ファームウェアが、連続パケット転送を指示するＨＷ転送スタートコマンド（第１のスタートコマンド）を発行する（図１０のレジスタ２０２に１を書き込む）。すると、ＳＢＰ-2コアが、ページテーブルのフェッチ又は生成処理、ペイロード分割処理、送信ヘッダの生成処理、各パケットの転送スタート処理、エラー処理などをハードウェアにより自動実行する。これにより、ページテーブル分の転送データ（ＯＲＢのリードコマンドやライトコマンドで指定されるサイズの転送データ）が、一連のパケットに分割されて自動転送されるようになる。そして、全てのパケットの転送が完了すると、そのことが、割り込みなどを用いてファームウェアに知らされる。従って、ファームウェアは、ＨＷ転送スタートコマンドを発行した後は、連続パケット転送が完了するのを待つだけでよい。この結果、ファームウェアの処理負担を格段に軽減できるようになり、データ転送制御装置の実転送速度を大幅に向上できる。
【０１１０】
さて、このような連続パケット転送（ＨＷ転送）を指示するＨＷ転送スタートコマンド以外にも、単一パケット転送を指示するＦＷ転送スタートコマンド（第２のスタートコマンド）をファームウェアが発行する場合がある。例えば、相手ノードから要求パケットが転送されてきた場合には、その要求パケットに対応する応答パケットを相手ノードに転送する必要がある。この場合には、その応答パケットを転送するためのＦＷ転送スタートコマンドをファームウェアが発行する。そして、応答パケットは、相手ノードのスプリットタイマがタイムアウトになる前に転送しなければならない。従って、ファームウェアは、要求パケットを受け取ってから、なるべく早い時期に、ＦＷ転送スタートコマンドを発行して応答パケットを転送する必要がある。
【０１１１】
ところが、一旦、ＨＷ転送（連続パケット転送）が開始してしまうと、全てのパケットの転送が完了するまで、ある程度の待ち時間が必要になる。特に、転送データのサイズが大きい場合には、この待ち時間は非常に長くなる。従って、ＨＷ転送の完了を待っていたのでは、相手ノードのスプリットタイマがタイムアウトしてしまうなどの不具合が生じる可能性がある。
【０１１２】
そこで、本実施形態では、ＨＷ転送期間に、ＦＷ転送スタートコマンドが発行された場合には、ＨＷ転送における１つのトランザクション（又は１つのパケット転送）の完了を待って、ＦＷ転送（ＦＷ転送スタートコマンドによるパケット転送）を許可する調停を行っている。
【０１１３】
例えば図１７では、Ｅ１においてＨＷ転送スタートコマンドが発行されておりこれによりＥ２に示すようにＨＷ転送がスタートする。この場合にＥ３のようにＦＷ転送スタートコマンドが発行されると、Ｅ４に示すようにトランザクション４の完了を待ってＦＷ転送による１つのパケット転送が行われる。そして、ＦＷ転送が完了すると、Ｅ５に示すようにＨＷ転送が再開する。
【０１１４】
このようにすることで、ＨＷ転送の最中にＦＷ転送を割り込ませることが可能になり、ＨＷ転送の完了を待つことなく、ＦＷ転送を実行できるようになる。これにより、ＦＷ転送が待たされることで相手ノードのスプリットタイマがタイムアウトしてしまうというような不具合を防止できる。
【０１１５】
また図１７のＥ４に示すように、１つのトランザクションの完了を待ってＦＷ転送が行われるため、ＨＷ転送に転送エラーが生じるなどの不具合も生じない。
【０１１６】
更に、１つのトランザクションの完了後、次のトランザクションが開始するまでの期間は、下層のリンクコアやＰＨＹデバイスがＳＢＰ-2コアにより占有されていない。従って、この期間にＦＷ転送の処理を割り込ませれば、ＳＢＰ-2コアにより占有されていないリンクコアやＰＨＹデバイスを利用してパケットを転送できるようになり、好都合である。
【０１１７】
なお、以上では、１つのトランザクション（要求パケットとその要求パケットに対応する応答パケット）の完了を待ってＦＷ転送を行わせる場合について説明したが、１つのパケット転送の完了を待ってＦＷ転送を行わせることも可能である。
【０１１８】
４．１  調停回路の構成及び動作
次に、本実施形態の調停回路の構成及び動作について具体的に説明する。
【０１１９】
図１８に、図７のＤＭＡＣ４０の詳細な構成例を示す。
【０１２０】
図１８において、ＤＭＡＣ４０は、調停回路４００とアクセス要求発生回路４１０とアドレス発生回路４２０とアクセス要求実行回路４３０を含む。
【０１２１】
ここで調停回路４００は、ＨＷ転送とＦＷ転送の調停を行う回路である。より具体的には、ＨＷ転送の実行中に、ＦＷ転送スタートコマンドが発行された場合には、ＨＷ転送における１つのトランザクション（又は１つのパケット転送）の完了を待って、ＦＷ転送スタートコマンドによるパケット転送を許可する調停を行う。
【０１２２】
例えば、ＣＰＵ（ファームウェア）がＨＷ転送スタートコマンド（第１のスタートコマンド）を発行して、レジスタ２０２に１を書き込むと、ＳＢＰ-2コア８４（転送実行回路）によるＨＷ転送がスタートする。そして、図１６のステップＳ６３に示すように、ＳＢＰ-2コア８４は、各パケット（トランザクション）の転送開始を要求する毎にＨＷＳｔａｒｔ（第１のスタート信号）を１（アクティブ）にする。
【０１２３】
一方、ＣＰＵがＦＷ転送スタートコマンド（第２のスタートコマンド）を発行して、レジスタ４４０に１を書き込むと、ＦＷ転送の開始が要求され、ＦＷＳｔａｒｔ（第２のスタート信号）がアクティブになる。
【０１２４】
そして、調停回路４００は、これらのＨＷＳｔａｒｔ、ＦＷＳｔａｒｔや、リンクコア２０からのＣｏｍｐ、ＮｏｔＣｏｍｐ、ＳｅｌｆＩＤを受けて、調停処理を行うことになる。
【０１２５】
アクセス要求発生回路４１０は、バッファマネージャ７０からの読み出しアクノリッジメントであるＲＡＣＫやＦＩＦＯ３０からのＦＵＬＬを受け、読み出し要求であるＲＲＥＱをバッファマネージャ７０に出力する。
【０１２６】
アドレス発生回路４２０は、調停回路４００からのＨＷＤＭＡＲｕｎ、ＲｅａｌＧｏ、バッファマネージャ７０からのＲＤＡＴＡなどを受けて、ＲＡＭ８０の読み出しアドレスであるＲＡＤＲを発生する。
【０１２７】
アクセス要求実行回路４３０は、調停回路４００からのＲｅａｌＧｏ、ＦＩＦＯ３０からのＥＭＰＴＹ、リンクコア２０からの各種制御信号を受けて、アクセス要求を実行する処理を行う。
【０１２８】
図１９（Ａ）、（Ｂ）、図２０に、調停回路４００の状態遷移図を示す。
【０１２９】
図１９（Ａ）において、状態Ｓ００ではＨＷＲｅｑｕｅｓｔｅｄ＝０になっている。そして、この状態で、ＨＷＳｔａｒｔ＝１且つＳｅｌｆＩＤ（自己識別期間信号）＝０になると、次のクロックで状態Ｓ０１に移行し、ＨＷＲｅｑｕｅｓｔｅｄ＝１になる。即ち、自己識別期間中ではない時にＨＷＳｔａｒｔが１になると、ＨＷ転送が要求されたことを示す信号であるＨＷＲｅｑｕｅｓｔｅｄが１になる。
【０１３０】
また図１９（Ｂ）において、状態Ｓ１０ではＦＷＲｅｑｕｅｓｔｅｄ＝０になっている。そして、この状態で、ＦＷＳｔａｒｔ＝１且つＳｅｌｆＩＤ＝０になると、次のクロックで状態Ｓ１１に移行し、ＦＷＲｅｑｕｅｓｔｅｄ＝１になる。即ち、自己識別期間中ではない時にＦＷＳｔａｒｔが１になると、ＦＷ転送が要求されたことを示す信号であるＦＷＲｅｑｕｅｓｔｅｄが１になる。
【０１３１】
図２０において、状態Ｓ２０では、ＨＷＧｏ、ＦＷＧｏ、ＨＷＤＭＡＲｕｎ、ＦＷＤＭＡＲｕｎ、ＨＷＣｏｍｐ、ＦＷＣｏｍｐ、ＨＷＮｏｔＣｏｍｐ、ＦＷＮｏｔＣｏｍｐが０になっている。
【０１３２】
状態Ｓ２０においてＨＷＲｅｑｕｅｓｔｅｄ＝１（図１９（Ａ）の状態Ｓ０１）且つＦＷＲｅｑｕｅｓｔｅｄ＝０になると、次のクロックで状態Ｓ２１に移行し、ＨＷ転送をスタートさせる信号であるＨＷＧｏ＝１になる。そして、次のクロックでＨＷＧｏ＝０、ＨＷＤＭＡＲｕｎ＝１になる（状態Ｓ２２）。
【０１３３】
次に、リンクコア２０からの転送完了信号であるＣｏｍｐ＝１になると、次のクロックでＨＷＣｏｍｐ＝１、ＨＷＤＭＡＲｕｎ＝０になる（状態Ｓ２３）。一方、転送が正しく完了しなかったことを示す信号であるＮｏｔＣｏｍｐ＝１になると、次のクロックでＨＷＮｏｔＣｏｍｐ＝１、ＨＷＤＭＡＲｕｎ＝０になる（状態Ｓ２４）。
【０１３４】
一方、状態Ｓ２０においてＦＷＲｅｑｕｅｓｔｅｄ＝１（図１９（Ｂ）の状態Ｓ１１）になると、次のクロックで状態Ｓ２５に移行し、ＦＷ転送をスタートさせる信号であるＦＷＧｏ＝１になる。そして、次のクロックでＦＷＧｏ＝０、ＦＷＤＭＡＲｕｎ＝１になる（状態Ｓ２６）。
【０１３５】
次に、Ｃｏｍｐ＝１になると、次のクロックでＦＷＣｏｍｐ＝１、ＦＷＤＭＡＲｕｎ＝０になる（状態Ｓ２７）。一方、ＮｏｔＣｏｍｐ＝１になると、次のクロックでＦＷＮｏｔＣｏｍｐ＝１、ＦＷＤＭＡＲｕｎ＝０になる（状態Ｓ２８）。
【０１３６】
次に調停回路４００の動作を図２１、図２２、図２３のタイミング波形図を用いて説明する。
【０１３７】
図２１は、ＦＷＳｔａｒｔ（第２のスタート信号）よりも先にＨＷＳｔａｒｔ（第１のスタート信号）がアクティブになった場合のタイミング波形図である。
【０１３８】
図２１のＦ１に示すようにＳＢＰ-2コア８４からのＨＷＳｔａｒｔが１になると、Ｆ２に示すようにＨＷＲｅｑｅｓｔｅｄ＝１になる（図１９（Ａ）の状態Ｓ０１）。すると、Ｆ３に示すようにＨＷＧｏ＝１になり（図２０の状態Ｓ２１）、Ｆ４に示すように、アドレス発生回路４２０、アクセス要求実行回路４３０への出力であるＲｅａｌＧｏ＝１になる。これにより、アドレス発生回路４２０、アクセス要求実行回路４３０によるＨＷ転送処理が開始される。
【０１３９】
ＨＷＧｏ＝１になると、Ｆ５に示すように、アドレス発生回路４２０への出力であるＨＷＤＭＡＲｕｎ＝１になる（状態Ｓ２２）。そして、トランザクション（パケット転送）が完了し、Ｆ６に示すようにリンクコア２０からの完了信号Ｃｏｍｐ＝１になると、Ｆ７、Ｆ８に示すようにＨＷＣｏｍｐ＝１、ＨＷＤＭＡＲｕｎ＝０になる（状態Ｓ２３）。そして、Ｆ９に示すようにＨＷＲｅｑｕｅｓｔｅｄ＝０に戻る（図１９（Ａ）の状態Ｓ００）。
【０１４０】
一方、ＨＷ転送中にＦＷ転送スタートコマンドが発行された場合、即ち、Ｆ１０に示すようにＨＷＳｔａｒｔ＝１になってからＣｏｍｐ＝１になる前にＦＷＳｔａｒｔ＝１になった場合には、Ｆ１１に示すようにＦＷＲｅｑｕｅｓｔｅｄ＝１になる（図１９（Ｂ）の状態Ｓ１１）。しかし、この場合には、Ｆ１２に示すように、直ぐにはＦＷＧｏ＝１にはならない。そして、Ｆ７に示すようにＨＷＣｏｍｐ＝１になった後に、Ｆ１３に示すようにＦＷＧｏ＝１になり（状態Ｓ２５）、Ｆ１４に示すようにＲｅａｌＧｏ＝１になる。
【０１４１】
ＦＷＧｏ＝１になると、Ｆ１６に示すように、レジスタ４４０（レジスタ４６）への出力であるＦＷＤＭＡＲｕｎ＝１になる。これにより、ＦＷＤＭＡＲｕｎ＝０に戻るまで、ＣＰＵによるレジスタ４４０への書き込みがマスクされる。
【０１４２】
そして、Ｆ１７に示すように完了信号Ｃｏｍｐ＝１になると、Ｆ１８、Ｆ１９に示すようにＦＷＣｏｍｐ＝１、ＦＷＤＭＡＲｕｎ＝０になる（状態Ｓ２７）。次に、Ｆ２０に示すようにＦＷＲｅｑｕｅｓｔｅｄ＝０に戻る（図１９（Ｂ）の状態Ｓ１０）。そして、Ｆ２１に示すようにＨＷ転送が再開される。
【０１４３】
以上のように本実施形態では、ＨＷＳｔａｒｔ＝１になった後にＦＷＳｔａｒｔ＝１になった場合には、ＨＷ転送が先にスタートし、ＨＷ転送における１つのトランザクションが完了した後に、ＦＷ転送がスタートする。そして、ＦＷ転送が完了すると、ＨＷ転送が再開する。
【０１４４】
図２２は、ＨＷＳｔａｒｔとＦＷＳｔａｒｔが同時にアクティブになった場合のタイミング波形図である。
【０１４５】
図２２のＧ１、Ｇ２に示すようにＨＷＳｔａｒｔとＦＷＳｔａｒｔが同時に１になった場合には、Ｇ３に示すようにＦＷ転送が優先される。これは図２０の状態Ｓ２０、Ｓ２１から明らかなように、図２２のＧ４に示すようにＦＷＲｅｑｕｅｓｔｅｄ＝１になると、ＨＷＲｅｑｕｅｓｔｅｄが０か１かに依らずに、ＦＷＧｏ＝１になるからである。そして、Ｇ５に示すようにＦＷ転送が完了した後に、Ｇ６に示すようにＨＷ転送がスタートする。
【０１４６】
以上のように本実施形態では、ＨＷＳｔａｒｔとＦＷＳｔａｒｔが同時に１になった場合には、ＦＷ転送を優先して先にスタートさせる。このようにすることで、相手ノードからの要求パケットに対して直ぐに応答パケットを返せるようになる。
【０１４７】
図２３は、ＨＷＳｔａｒｔよりも先にＦＷＳｔａｒｔがアクティブになった場合のタイミング波形図である。
【０１４８】
図２３のＨ１、Ｈ２に示すように、ＦＷＳｔａｒｔの方がＨＷＳｔａｒｔよりも先に１になると、まず、Ｈ３に示すようにＦＷ転送が先にスタートする。そして、Ｈ４に示すようにＦＷ転送による１つのパケット転送が完了した後に、Ｈ５に示すようにＨＷ転送がスタートする。
【０１４９】
以上のように本実施形態では、ＦＷＳｔａｒｔ＝１になった後にＨＷＳｔａｒｔ＝１になった場合には、ＦＷ転送が先にスタートし、ＦＷ転送が完了した後に、ＨＷ転送がスタートする。このようにすることで、相手ノードからの要求パケットに対して直ぐに応答パケットを返せるようになる。
【０１５０】
４．２  ＨＷ用ヘッダ領域、通常ヘッダ領域間のアドレス切り替え
さて、本実施形態では、ヘッダ領域（制御情報領域）が、図８のＡＲ２、ＡＲ３に示すような、ＳＢＰ-2コアによりヘッダ（制御情報）が書き込まれるＨＷ用ヘッダ領域（第２の制御情報領域）と、ＡＲ４、ＡＲ６に示すような、ファームウェアやリンクコアなどによりヘッダが書き込まれる通常のヘッダ領域（第１の制御情報領域）に分離されている。
【０１５１】
このように、ＳＢＰ-2コアに専用のＨＷ用ヘッダ領域を設けることで、ＳＢＰ-2コアは、生成したヘッダを連続してＨＷ用ヘッダ領域に書き込むことができるようになる。これにより、ＳＢＰ-2コアの処理や回路構成を簡素化できるようになる。即ち、ＨＷ用ヘッダ領域と通常のヘッダ領域が分離されていないと、ＳＢＰ-2コアが生成したヘッダと、それ以外のヘッダとがヘッダ領域で混在するようになってしまう。これにより、ヘッダの書き込み時のアドレス制御が複雑化し、ＳＢＰ-2コアの回路規模が増大化するという問題が生じる。本実施形態のようにＳＢＰ-2コアに専用のＨＷ用ヘッダ領域を設ければ、このような問題を解決でき、ＳＢＰ-2コアの回路の小規模化を図れるようになる。
【０１５２】
そして、本実施形態では、図１０のアドレス発生回路４２０が、調停回路４００からの調停結果である信号ＨＷＤＭＡＲｕｎに基づいて、ＨＷ用ヘッダ領域と通常のヘッダ領域のいずれのアドレスを発生するのかを切り替えている。
【０１５３】
より具体的には、例えば図２４に示すように、ＨＷＤＭＡＲｕｎ＝１の場合（ＨＷ転送の場合）には、ポインタＰＴＲをＨＷ用送信ヘッダ領域（ＡＲ３）に設定する。そして、ポインタＰＴＲを更新することで、ＳＢＰ-2コアにより生成された送信ヘッダの書き込みアドレスを発生する。
【０１５４】
一方、ＨＷＤＭＡＲｕｎ＝０の場合（ＨＷ転送でない場合）には、ポインタＰＴＲが送信ヘッダ領域（ＡＲ６）に設定されるように、ポインタＰＴＲを切り替える。そして、ポインタＰＴＲを更新することで、ファームウェアなどにより生成される送信ヘッダの書き込みアドレスを発生する。
【０１５５】
以上のように本実施形態では、調停回路４００からの信号ＨＷＤＭＡＲｕｎを利用するだけという簡易な手法で、ＨＷ用ヘッダ領域、通常ヘッダ領域間のアドレス切り替えに成功している。そして、このようなアドレス切り替えが可能になることで、ＳＢＰ-2コアに専用のＨＷ用ヘッダ領域に対して、ＳＢＰ-2コアが生成したヘッダを連続して書き込めるようになる。この結果、連続転送される一連のパケットのヘッダをハードウェアにより生成することが容易になる。
【０１５６】
５．データ領域の分離（ＯＲＢ領域とストリーム領域への分離）
本実施形態では、図７のＲＡＭ８０（パケット記憶手段）を、図８に示すようにヘッダ領域（ＡＲ２、ＡＲ３、ＡＲ４、ＡＲ６）とデータ領域（ＡＲ５、ＡＲ７、ＡＲ８、ＡＲ９）に分離すると共に、データ領域を、ＯＲＢ領域（ＡＲ５、ＡＲ７）とストリーム領域（ＡＲ８、ＡＲ９）に分離している。
【０１５７】
即ち、ＲＡＭをヘッダ領域とデータ領域に分離することで、ファームウェアは、ヘッダ領域からヘッダを連続して読み出したり、ヘッダ領域にヘッダを連続して書き込むことができるようになる。従って、ファームウェアの処理負担をある程度軽減できるという利点がある。しかしながら、データ転送の更なる高速化という観点からは、ヘッダ領域とデータ領域の分離だけでは不十分であることが判明した。
【０１５８】
例えば図２５（Ａ）では、パケットがヘッダとデータに分離され、ヘッダ１、２、３がヘッダ領域に格納され、データ１、２、３がデータ領域に格納されている。
【０１５９】
ここで、データには、前述のように、ＳＢＰ-2（第１の層）用のＯＲＢ（第１のデータ）と、上層であるアプリケーション層（第２の層）用のストリームとがある。従って、ＲＡＭをヘッダ領域とデータ領域に分離しただけでは、図２５（Ａ）のＤ１、Ｄ２、Ｄ３に示すように、データ領域においてＯＲＢとストリームとが混在するようになってしまう。
【０１６０】
このため、例えば、ＲＡＭからアプリケーション層のデバイスにストリームを転送する場合には、次のような処理が必要になる。即ち、まず、データポインタをＤ１の位置に設定してストリーム１１、１２、１３を読み出し、次に、データポインタをＤ２の位置に変更してストリーム２１、２２、２３を読み出す。その後、データポインタをＤ３の位置に変更してストリーム３１、３２、３３を読み出す。
【０１６１】
このように、ＲＡＭを単にヘッダ領域とデータ領域に分離しただけでは、アプリケーション層のデバイスへのストリーム転送の際に、データポインタの位置を煩雑に切り替える制御が必要になり、処理の複雑化や回路の大規模化という事態を招く。また、データ領域から連続してストリームを読み出すことができないため、データ転送制御装置の実転送速度をそれほど向上できない。
【０１６２】
一方、図２５（Ｂ）では、データ領域をＯＲＢ領域とストリーム領域に分離している。このようにすれば、ファームウェアはＯＲＢ領域からＯＲＢ１、２、３を連続して読み出すことができるようになる。また、前述のＳＢＰ-2コア８４の機能を利用して、ファームウェアを介在させることなくストリーム１１〜３３をＲＡＭのストリーム領域から連続して読み出し、アプリケーション層のデバイスへ転送できるようになる。即ち、図２６に示すように、相手ノード１２３（例えばパーソナルコンピュータ）とアプリケーション層のデバイス（例えばプリンタの印字処理を行うデバイス）との間で、ファームウェア（ＣＰＵ）６６の介在無しに、ストリーム（例えば印字データ）を高速に転送できるようになる。この結果、図２５（Ａ）に比べて、ファームウェアの処理負担を格段に軽減できると共に、データ転送を飛躍的に高速化できるようになる。
【０１６３】
なお、データ転送制御装置１２０がストリームを受信する場合のみならず、ストリームを送信する場合にも、データ領域を送信ＯＲＢ領域（図８のＡＲ７）と送信ストリーム領域（ＡＲ８）に分離することで、データ転送の高速化を図れる。即ち図２６の方向ＤＲ１に示すように相手ノード１２３からアプリケーション層のデバイス１２４（自ノード）にストリームを転送する場合のみならず、方向ＤＲ２に示すようにアプリケーション層のデバイス１２４から相手ノード１２３にストリームを転送する場合においても、データ転送の高速化を図れる。
【０１６４】
６．トランザクションラベルを利用した書き込み領域の切り替え
ＩＥＥＥ１３９４においては、各トランザクションを識別するための情報として、トランザクションラベルｔｌと呼ばれるものが使用される。
【０１６５】
即ち、トランザクションの要求ノードは、要求パケットの中にトランザクションラベルｔｌを含ませて、応答ノードに送信する。そして、この要求パケットを受信した応答ノードは、応答パケットの中に、上記と同一のｔｌを含ませて、要求ノードに返信する。要求ノードは、返信された応答パケットに含まれるｔｌを調べることで、その応答パケットが、自身が要求したトランザクションに対応する応答であることを確認できるようになる。
【０１６６】
トランザクションラベルｔｌは、応答ノードとの関係においてユニークであれば十分である。より具体的には、例えば要求ノードＮＤ１が応答ノードＮＤ２に対してｔｌ＝ＴＮ１のトランザクションを発行した場合には、そのトランザクションが未完了の間は、要求ノードＮＤ１は応答ノードＮＤ２に対して、ｔｌ＝ＴＮ１が付けられた他のトランザクションを発行することはできない。即ち、各トランザクションは、トランザクションラベルｔｌとソースＩＤとディスティネーションＩＤとによりユニークに特定されることになる。逆に言えば、トランザクションラベルｔｌは、上記の制約が守られている限り、どのような値を使うこともでき、他のノードは、どのようなｔｌも受け入れなければならない。
【０１６７】
さて、要求ノードが要求パケットを送信し、応答パケットの返信を待つ場合、応答パケットが返信されてきた際に行う処理が、既に決まっている場合がある。そこで、本実施形態は、上記のようなトランザクションラベルｔｌの性質に着目して、次のような手法を採用している。
【０１６８】
即ち、図２７（Ａ）に示すように、トランザクションを開始させる要求パケットを応答ノードに対して送信する際に、要求パケットに含まれるトランザクションラベルｔｌ（広義にはトランザクション識別情報）の中に、応答パケットの返信時に行うべき処理を指示する指示情報を含ませる。そして、応答ノードから応答パケットを受信した際に、ｔｌに含まれる指示情報に応じた処理を実行するようにする。
【０１６９】
このようにすれば、応答パケットが返送されてきた際に、ファームウェアが関与することなく、ｔｌに含まれる指示情報に応じた処理を、ＳＢＰ-2コア８４などのハードウェアにより実行できるようになる。これにより、ファームウェアの処理負担を軽減できると共に、データ転送の高速化を図れる。
【０１７０】
より具体的には、本実施形態では、応答ノードから応答パケットを受信した場合に、ｔｌに含まれる指示情報により指示される領域に、その応答パケットを格納するようにしている。
【０１７１】
即ち図２７（Ｂ）に示すように、トランザクションラベルｔｌのビット５、４を、指示情報を表すビットとして予め予約しておく。
【０１７２】
そして、返信されてきた応答パケットをＨＷ（ハードウェア）用領域に書き込む場合には、要求パケットのｔｌのビット５を１にセットして、応答ノードに送信する。一方、返信されてきた応答パケットをＦＷ（ファームウェア）用領域に書き込む場合には、要求パケットのｔｌのビット５を０にセットして、応答ノードに送信する。
【０１７３】
また、返信されてきた応答パケットをストリーム領域に書き込む場合には、要求パケットのｔｌのビット４を１にセットして、応答ノードに送信する。一方、返信されてきた応答パケットをＯＲＢ領域に書き込む場合には、要求パケットのｔｌのビット４を０にセットして、応答ノードに送信する。
【０１７４】
このようにすれば、応答パケットが返信されてきた時に、図２８に示すように応答パケットのヘッダ、データがＲＡＭの各領域に書き込まれるようになる。
【０１７５】
即ち、ｔｌ＝１×××××（×は、ドント・ケアという意味）である場合には、応答パケットのヘッダは、ＨＷ用受信ヘッダ領域に書き込まれ、ｔｌ＝０×××××である場合には、ＦＷ用受信ヘッダ領域に書き込まれる。
【０１７６】
また、ｔｌ＝１１××××である場合には、応答パケットのデータは、ＨＷ用受信ストリーム領域に書き込まれ、ｔｌ＝１０××××である場合には、ＨＷ用ページテーブル領域に書き込まれる。またｔｌ＝０１××××である場合には、応答パケットのデータは、ＦＷ用受信ストリーム領域に書き込まれ、ｔｌ＝００××××である場合には、ＦＷ用受信ＯＲＢ領域に書き込まれる。
【０１７７】
このようにすることで、ファームウェアを介在させることなく、応答パケットのヘッダ、データを、ハードウェア（回路）によりＲＡＭの各領域に自動的に書き込むことができるようになる。そして、ＲＡＭに応答パケットを書き込む処理を行うハードウェアの構成も簡素化でき、データ転送制御装置の小規模化を図れる。
【０１７８】
また、図２５（Ｂ）で説明したように、パケットのヘッダをヘッダ領域に、ＯＲＢをＯＲＢ領域に、ストリームをストリーム領域に自動的に書き込むことができるようになるため、ハードウェアの処理の簡素化、データ転送の高速化も図れるようになる。
【０１７９】
７．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【０１８０】
例えば図２９（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図３０（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１８はＣＰＵ５１０のワーク領域として機能する。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０１８１】
ＰＨＹデバイス５０２、データ転送制御装置５００を介して、パーソナルコンピュータなどの他のノードから送られてきた印字データは、バス５０４を介して印字処理部５１２に直接送られる。そして、印字データは、印字処理部５１２にて所与の処理が施され、プリントヘッダなどからなる印字部（データを出力するための装置）５１４により紙に印字されて出力される。
【０１８２】
図２９（Ｂ）に電子機器の１つであるスキャナの内部ブロック図を示し、図３０（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はスキャナをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２８はＣＰＵ５２０のワーク領域として機能する。
【０１８３】
光源、光電変換器などからなる画像読み取り部（データを取り込むための装置）５２２により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部５２４により処理される。そして、処理後の画像データがバス５０５を介してデータ転送制御装置５００に直接送られる。データ転送制御装置５００は、この画像データにヘッダなどを付加することでパケットを生成し、ＰＨＹデバイス５０２を介してパーソナルコンピュータなどの他のノードに送信する。
【０１８４】
図２９（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図３０（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３８はＣＰＵ５３０のワーク領域として機能する。
【０１８５】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データを取り込むための装置又はデータを記憶するための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、バス５０６を介してデータ転送制御装置５００に直接送られる。データ転送制御装置５００は、このデータにヘッダなどを付加することでパケットを生成し、ＰＨＹデバイス５０２を介してパーソナルコンピュータなどの他のノードに送信する。
【０１８６】
一方、ＰＨＹデバイス５０２、データ転送制御装置５００を介して、他のノードから送られてきたデータは、バス５０６を介して信号処理部５３４に直接送られる。そして、信号処理部５３４によりこのデータに所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０１８７】
なお、図２９（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０１８８】
また、図２９（Ａ）、（Ｂ）、（Ｃ）ではＲＡＭ５０１（図７のＲＡＭ８０に相当）がデータ転送制御装置５００の外部に設けられているが、ＲＡＭ５０１をデータ転送制御装置５００に内蔵させてもよい。
【０１８９】
本実施形態のデータ転送制御装置を電子機器に用いることで、高速なデータ転送が可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、ＣＤ−ＲＷからのデータの読み取りや、ＣＤ−ＲＷへのデータの書き込みを高速に行うことができるようになる。更に、例えば１つのホストシステムに複数の電子機器を接続して利用したり、複数のホストシステムに複数の電子機器を接続して利用したりすることも容易になる。
【０１９０】
また本実施形態のデータ転送制御装置を電子機器に用いることで、ＣＰＵ上で動作するファームウェアの処理負担が軽減され、安価なＣＰＵや低速のバスを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【０１９１】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０１９２】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１９３】
例えば、本発明のデータ転送制御装置の構成は、図７に示す構成が特に望ましいが、これに限定されるものではない。
【０１９４】
また、転送実行回路（ＳＢＰ-2コア）の構成も図１０に示す構成が特に望ましいが、これに限定されるものではなく、少なくとも、処理手段（ファームウェア）が第１のスタートコマンド（ＨＷ転送スタートコマンド）を発行した場合に、転送データを一連のパケットに分割して連続転送するための回路であればよい。例えば転送実行回路は、ページテーブルフェッチ回路、ページテーブル生成回路、ペイロード分割回路、転送実行制御回路、送信ヘッダ生成回路（制御情報生成回路）などの回路ブロックを含むことが望ましいが、これらの回路ブロックの一部を含まない構成とすることもできる。
【０１９５】
また、調停回路の調停手法も、図２１、図２２、図２３などで説明した手法が特に望ましいが、これに限定されるものではない。
【０１９６】
また、パケットの分離手法、パケット記憶手段の各領域へのパケットの書き込み手法、読み出し手法も、図８、図２５（Ｂ）で説明した手法に限定されるものではない。
【０１９７】
また、第１のデータはトランザクション層用のデータ、第２のデータはアプリケーション層用のデータであることが特に望ましいが、本発明の第１、第２のデータはこれに限定されるものではない。
【０１９８】
また、本発明は、ＩＥＥＥ１３９４規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＩＥＥＥ１３９４と同様の思想に基づく規格やＩＥＥＥ１３９４を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】ＩＥＥＥ１３９４の層構造について示す図である。
【図２】ＳＢＰ-2について説明するための図である。
【図３】ＳＢＰ-2のデータ転送処理の概略について説明するための図である。
【図４】データ（ストリーム）をターゲットからイニシエータに転送する場合のコマンド処理について説明するための図である。
【図５】データ（ストリーム）をイニシエータからターゲットに転送する場合のコマンド処理について説明するための図である。
【図６】図６（Ａ）、（Ｂ）、（Ｃ）は、ページテーブルについて説明するための図である。
【図７】本実施形態のデータ転送制御装置の構成例を示す図である。
【図８】ＲＡＭ（パケット記憶手段）の分離（分割）手法について説明するための図である。
【図９】本実施形態のデータ転送の手法について説明するための図である。
【図１０】ＳＢＰ-2コア（転送実行回路）の構成例を示す図である。
【図１１】メイン制御回路の動作を説明するためのフローチャートである。
【図１２】ページテーブルの生成手法について説明するための図である。
【図１３】パケットのペイロード分割手法について説明するための図である。
【図１４】転送実行制御回路の動作を説明するためのフローチャートである。
【図１５】ペイロード分割回路の動作を説明するためのフローチャートである。
【図１６】送信ヘッダ生成回路、トランザクション制御回路の動作について説明するためのフローチャートである。
【図１７】ＨＷ転送とＦＷ転送の調停手法について説明するための図である。
【図１８】本実施形態の調停回路を含むＤＭＡＣの構成例について示す図である。
【図１９】図１９（Ａ）、（Ｂ）は、調停回路の動作を説明するための状態遷移図である。
【図２０】調停回路の動作を説明するための状態遷移図である。
【図２１】ＦＷＳｔａｒｔよりも先にＨＷＳｔａｒｔがアクティブになった場合のタイミング波形図である。
【図２２】ＦＷＳｔａｒｔとＨＷＳｔａｒｔが同時にアクティブになった場合のタイミング波形図である。
【図２３】ＨＷＳｔａｒｔよりも先にＦＷＳｔａｒｔがアクティブになった場合のタイミング波形図である。
【図２４】調停回路からのＨＷＤＭＡＲｕｎに基づいて、ＨＷ用ヘッダ領域と通常のヘッダ領域のいずれのアドレスを発生するのかを切り替える手法について説明するための図である。
【図２５】図２５（Ａ）、（Ｂ）は、データ領域をＯＲＢ領域とストリーム領域に分離する手法について説明するための図である。
【図２６】相手ノードとアプリケーション層のデバイスとの間のストリーム転送の様子を示す図である。
【図２７】図２７（Ａ）、（Ｂ）は、トランザクションラベルについて説明するための図である。
【図２８】トランザクションラベルを利用して、ＲＡＭの各領域にパケットのヘッダ、データ（ＯＲＢ、ストリーム）を書き込む手法について説明するための図である。
【図２９】図２９（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図３０】図３０（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０  ＰＨＹインターフェース
２０  リンクコア
２２  レジスタ
３０  ＦＩＦＯ（ＡＴＦ）
３２  ＦＩＦＯ（ＩＴＦ）
３４  ＦＩＦＯ（ＲＦ）
４０  ＤＭＡＣ（ＡＴＦ用）
４２  ＤＭＡＣ（ＩＴＦ用）
４４  ＤＭＡＣ（ＲＦ用）
４６  レジスタ
５０  ポートインターフェース
５２  ＦＩＦＯ（ＰＦ）
５４  ＤＭＡＣ（ＰＦ用）
５６  レジスタ
６０  ＣＰＵインターフェース
６２  アドレスデコーダ
６３  データ同期化回路
６４  割り込みコントローラ
６６  ＣＰＵ
６８  クロック制御回路
７０  バッファマネージャ
７２  レジスタ
７４  調停回路
７６  シーケンサ
８０  ＲＡＭ（パケット記憶手段）
８４  ＳＢＰ-2コア（転送実行回路）
８６  ＤＡＭＡＣ（ＳＢＰ-2用）
９０、９２、９４  バス（第１のバス）
９５、９６        バス（第２のバス）
９９              バス（第５のバス）
１００、１０２、１０４、１０５、
１０６、１０７、１０８、１０９  バス（第３のバス）
１１０            バス（第４のバス）
１２０  データ転送制御装置
１２２  ＰＨＹデバイス
１２３  相手ノード
１２４  アプリケーション層のデバイス
２００  メイン制御回路
２０２、２０４、２０６、２０８  レジスタ
２１０  ページテーブルフェッチ回路
２２０  ページテーブル生成回路
２２２、２２４、２２６  レジスタ
２２８  エレメントカウンタ
２３０  エレメント保持回路
２３２、２３４  レジスタ
２４０  転送実行（ストリームタスク）制御回路
２４２、２４４  レジスタ
２５０  ペイロード分割回路
２５２、２５４  レジスタ
２６０  送信ヘッダ生成回路
２７０  トランザクション制御回路
２８０  スプリットタイマ
２９０  バッファインターフェース
４００  調停回路
４１０  アクセス要求発生回路
４２０  アドレス発生回路
４３０  アクセス要求実行回路
４４０  レジスタ
【図１】
0003843667.tif 000002
【図２】
0003843667.tif 000003
【図３】
0003843667.tif 000004
【図４】
0003843667.tif 000005
【図５】
0003843667.tif 000006
【図６】
0003843667.tif 000007
【図７】
0003843667.tif 000008
【図８】
0003843667.tif 000009
【図９】
0003843667.tif 000010
【図１０】
0003843667.tif 000011
【図１１】
0003843667.tif 000012
【図１２】
0003843667.tif 000013
【図１３】
0003843667.tif 000014
【図１４】
0003843667.tif 000015
【図１５】
0003843667.tif 000016
【図１６】
0003843667.tif 000017
【図１７】
0003843667.tif 000018
【図１８】
0003843667.tif 000019
【図１９】
0003843667.tif 000020
【図２０】
0003843667.tif 000021
【図２１】
0003843667.tif 000022
【図２２】
0003843667.tif 000023
【図２３】
0003843667.tif 000024
【図２４】
0003843667.tif 000025
【図２５】
0003843667.tif 000026
【図２６】
0003843667.tif 000027
【図２７】
0003843667.tif 000028
【図２８】
0003843667.tif 000029
【図２９】
0003843667.tif 000030
【図３０】
0003843667.tif 000031