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