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