(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用）
９０、９２、９４  バス（第１のバス）
９５、９６        バス（第２のバス）
９９              バス（第５のバス）
１００、１０２、１０４、１０５、
１０６、１０７、１０８、１０９  バス（第３のバス）
１１０            バス（第４のバス）
１２０  データ転送制御装置
１２２  ＰＨＹデバイス
１２３  相手ノード
１２４  アプリケーション層のデバイス
２００  メイン制御回路
２０２、２０４、２０６、２０８  レジスタ
２１０  ページテーブルフェッチ回路
２２０  ページテーブル生成回路
２２２、２２４、２２６  レジスタ
２２８  エレメントカウンタ
２３０  エレメント保持回路
２３２、２３４  レジスタ
２４０  転送実行（ストリームタスク）制御回路
２４２、２４４  レジスタ
２５０  ペイロード分割回路
２５２、２５４  レジスタ
２６０  送信ヘッダ生成回路
２７０  トランザクション制御回路
２８０  スプリットタイマ
２９０  バッファインターフェース
【図１】
0003780776.tif 000002
【図２】
0003780776.tif 000003
【図３】
0003780776.tif 000004
【図４】
0003780776.tif 000005
【図５】
0003780776.tif 000006
【図６】
0003780776.tif 000007
【図７】
0003780776.tif 000008
【図８】
0003780776.tif 000009
【図９】
0003780776.tif 000010
【図１０】
0003780776.tif 000011
【図１１】
0003780776.tif 000012
【図１２】
0003780776.tif 000013
【図１３】
0003780776.tif 000014
【図１４】
0003780776.tif 000015
【図１５】
0003780776.tif 000016
【図１６】
0003780776.tif 000017
【図１７】
0003780776.tif 000018
【図１８】
0003780776.tif 000019
【図１９】
0003780776.tif 000020
【図２０】
0003780776.tif 000021
【図２１】
0003780776.tif 000022
【図２２】
0003780776.tif 000023
【図２３】
0003780776.tif 000024
【図２４】
0003780776.tif 000025
【図２５】
0003780776.tif 000026
【図２６】
0003780776.tif 000027
【図２７】
0003780776.tif 000028
【図２８】
0003780776.tif 000029
【図２９】
0003780776.tif 000030