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