(57)【特許請求の範囲】
【請求項１】
被送信データを複数のセグメントデータに分割し、前記複数のセグメントデータを送信するソースノードと、
前記ソースノードから送信された前記複数のセグメントデータを受信するデスティネーションノードと、
前記ソースノードと、前記デスティネーションノードとの間に論理的な接続関係を設定するコントローラとを有し、
前記コントローラは、前記ソースノードが前記複数のセグメントデータの送信を開始する前に、前記論理的な接続関係を示す第１の情報と、前記コントローラに固有のＩＤを示す第２の情報とを、前記ソースノード及び前記デスティネーションノードに通知し、
前記ソースノードは、前記第１の情報及び前記第２の情報を用いて、前記複数のセグメントデータを送信することを特徴とするデータ通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソースノードと、デスティネーションノードとの間に論理的な接続関係を設定するコントローラを有するデータ通信システムに関する。
【０００２】
【従来の技術】
従来、パーソナルコンピュータ（以下、ＰＣ）の周辺機器の中で、最も利用頻度が高かったのはハードディスクやプリンタであった。これらの周辺機器は、専用の入出力インタフェース或いはＳＣＳＩ（small computer system interface）インタフェース等の汎用性のあるディジタルインターフェイスによってＰＣと接続されていた。
【０００３】
一方、近年、デジタルカメラ、デジタルビデオカメラ等のＡＶ（Audio/Visual）機器もＰＣの周辺装置の１つとして注目を浴びている。これらのＡＶ（Audio/Visual）機器も専用インタフェースを介してＰＣと接続されていた。
【０００４】
図１０は、ＰＣとＡＶ機器とにより構成された従来の通信システムを示す図である。図１０において、１０１はAV機器（デジタルカメラ）、１０２はＰＣ、１０３はプリンタである。
【０００５】
デジタルカメラ１０１において、１０４は撮像画像を圧縮して記録するメモリ、１０５はメモリ１０４に記録された圧縮画像データを伸長して復号する復号化部、１０６画像処理部、１０７はＤ／Ａコンバータ、１０８はＥＶＦからなる表示部、１０９はデジタルはカメラ１０１とＰＣ１０２とを接続する専用のデジタルＩ／Ｏ部である。
【０００６】
ＰＣ１０２において、１１０はＰＣ１０２とデジタルカメラ１０１とを接続する専用のデジタルＩ／Ｏ部、１１１はキーボードやマウスなどからなる操作部、１１２は圧縮画像データを伸長して復号する復号化部、１１３はディスプレイ、１１４はハードディスク、１１５はＲＡＭ等のメモリ、１１６はＭＰＵ、１１７はＰＣＩバス、１１８はＰＣ１０２とプリンタ１０３とを接続するＳＣＳＩインタフェースである。
【０００７】
プリンタ１０３において、１１９はプリンタ１０３とＰＣ１０２とを接続するＳＣＳＩインタフェース、１２０はメモリ、１２１はプリンタヘッド、１２２はプリンタ１０３の動作を制御するプリンタコントローラ、１２３はドライバである。
【０００８】
従来の通信システムにおいて、デジタルカメラ１０１の有するデジタルインタフェース（デジタルＩ／Ｏ部１０９）とプリンタ１０３の有するデジタルインタフェース（ＳＣＳＩインタフェース１１０）とは互換性がなく、それらを直接接続することはできなかった。そのため、デジタルカメラ１０１がプリンタ１０３に、例えば、静止画像を通信したい場合、必ずＰＣを介す必要があった。
【０００９】
又、従来の専用インタフェースやＳＣＳＩインタフェースでは、特にＡＶ機器の有する静止画像や動画像のような大容量のデータを扱う場合において、データ転送レートが低い、パラレル通信のため通信ケーブルが太い、接続できる周辺機器の数と種類が少ない、接続方式に制限がある、リアルタイムなデータ転送が行えない等の多くの問題があった。
【００１０】
このような問題点を解決する次世代の高速、高性能デジタルインタフェースの一つとして、ＩＥＥＥ（The Institute of Electrical and Electronics Engineers，Inc.）１３９４−１９９５規格が知られている。
【００１１】
ＩＥＥＥ１３９４−１９９５規格に準拠したデジタルインタフェース（以下、１３９４インタフェース）には、次のような特徴がある。
（１）データ転送速度が高速である。
（２）リアルタイムなデータ転送方式（即ち、Isochronous転送方式）とAsynchronous転送方式をサポートしている。
（３）自由度の高い接続構成（トポロジ）を構築できる。
（４）プラグ・アンド・プレイ機能と活線挿抜機能をサポートしている。
【００１２】
【発明が解決しようとする課題】
しかしながら、ＩＥＥＥ１３９４−１９９５規格では、コネクタの物理的、電気的な構成、最も基本的な２つのデータ転送方式等については定義しているが、どのような種類のデータを、どのようなデータ・フォーマットで、どのような通信プロトコルに基づいて送受信するのかについては定義していなかった。
【００１３】
又、ＩＥＥＥ１３９４−１９９５規格のＩｓｏｃｈｒｏｎｏｕｓ転送方式では、送出パケットに対する応答が規定されていないため、各Ｉｓｏｃｈｒｏｎｏｕｓパケットが確実に受信されたかは保証されない。従って、連続性のある複数のデータを確実に転送したい場合、或いは１つのファイルデータを複数のデータに分割して確実に転送したい場合、Ｉｓｏｃｈｒｏｎｏｕｓ転送方式を使用することはできなかった。
【００１４】
又、ＩＥＥＥ１３９４−１９９５規格のＩｓｏｃｈｒｏｎｏｕｓ転送方式では、転送帯域に空きがある場合でも、通信の総数が６４個に制限される。このため、少ない転送帯域で数多くの通信を行いたい場合、Ｉｓｏｃｈｒｏｎｏｕｓ転送方式を使用することはできなかった。
【００１５】
又、ＩＥＥＥ１３９４−１９９５規格では、ノードの電源のＯＮ／ＯＦＦ、ノードの接続／切り離し等に応じてバスリセットが生じた場合、データの転送を中断しなければならない。ところが、ＩＥＥＥ１３９４−１９９５規格では、バスリセットや伝送時のエラーによってデータ転送が中断した場合、どのような内容のデータを失ったのかについては知ることができなかった。更に、一度中断した転送を復帰するためには、非常に煩雑な通信手順を踏む必要があった。
【００１６】
ここで、バスリセットとは、新たなトポロジの認識と各ノードに割り当てられるアドレス（ノードＩＤ）の設定とを自動的に行う機能である。この機能により、ＩＥＥＥ１３９４−１９９５規格では、プラグ・アンド・プレイ機能と活線挿抜機能とを提供することができる。
【００１７】
又、ＩＥＥＥ１３９４−１９９５規格に準拠した通信システムにおいて、リアルタイム性は必要とされないが、信頼性が要求される比較的データ量の多いオブジェクトデータ（例えば、静止画像データ、グラフィックスデータ、テキストデータ、ファイルデータ、プログラムデータ等）を、１以上のセグメントデータに分割して連続的に転送するための通信プロトコルは具体的に提案されていなかった。
【００１８】
又、ＩＥＥＥ１３９４−１９９５規格に準拠した通信システムにおいて、データを非同期にブロードキャストする通信方式を用いて複数の機器間のデータ通信を実現するための通信プロトコルも具体的に提案されていなかった。
【００１９】
そこで、本発明は、リアルタイム性を必要としないデータ（例えば、静止画像データ）を転送することのできるデータ通信システムを提供することを目的とする。
【００２０】
【課題を解決するための手段】
本発明に係るデータ通信システムは、被送信データを複数のセグメントデータに分割し、前記複数のセグメントデータを送信するソースノードと、前記ソースノードから送信された前記複数のセグメントデータを受信するデスティネーションノードと、前記ソースノードと、前記デスティネーションノードとの間に論理的な接続関係を設定するコントローラとを有し、前記コントローラは、前記ソースノードが前記複数のセグメントデータの送信を開始する前に、前記論理的な接続関係を示す第１の情報と、前記コントローラに固有のＩＤを示す第２の情報とを、前記ソースノード及び前記デスティネーションノードに通知し、前記ソースノードは、前記第１の情報及び前記第２の情報を用いて、前記複数のセグメントデータを送信することを特徴とする。
【００２５】
【発明の実施の形態】
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
図１は、本実施例におけるデータ通信システムの構成の一例を示す図である。本実施例のデータ通信システムは、図１に示すように、コンピュータ１０、カメラ一体型デジタルビデオレコーダ２８、プリンタ６０により構成されている。
【００２６】
まず、コンピュータ１０の構成について説明する。１２はコンピュータ１０の動作を制御する演算処理装置（ＭＰＵ）である。１４はＩＥＥＥ１３９４−１９９５規格に準拠した機能と本実施例において規定する通信プロトコルに関する機能とを有する１３９４インタフェースである。
【００２７】
１６はキーボード、マウスなどからなる操作部である。１８は圧縮符号化されたディジタルデータ（動画像データ、静止画像データ、音声データ等）を復号するデコーダである。２０はＣＲＴディスプレイや液晶パネルなどの表示装置からなる表示部（ディスプレイ）である。
【００２８】
２２は各種のディジタルデータ（動画像データ、静止画像データ、音声データ、グラフィックスデータ、テキストデータ、プログラムデータ等）を記録するハードディスク（ＨＤ）である。２４は内部メモリである。２６はＰＣＩバスなどのコンピュータ１０内部の各処理部を相互に接続する内部バスである。
【００２９】
次に、カメラ一体型デジタルビデオレコーダ（以下、ＤＶＣＲと称する）２８の構成に突いて説明する。３０は被写体の光学像を電気信号に変換し、その電気信号をに変換する撮像部（ｏｐｔ）である。３２はアナログ-デジタル（Ａ／Ｄ）変換器である。
【００３０】
３４はディジタル化された動画像、静止画像を所定のフォーマットのディジタル画像データに変換する画像処理部である。３６は圧縮／伸長処理部であり、圧縮符号化されたディジタルデータ（動画像データ、静止画像データ、音声データ等）を復号する機能と、デジタル画像データを高能率符号化する（例えば、ＭＰＥＧ方式やＤＶ方式のように、所定の画像単位に直交変換後、量子化し、可変長符号化する）機能とを有する。
【００３１】
３８は高能率符号化されたディジタル画像データを一時的に格納するメモリである。４０は高能率符号化されていないディジタル画像データを一時的に格納するメモリである。４２はデータセレクタである。４４はＩＥＥＥ１３９４−１９９５規格に準拠した機能と本実施例において規定する通信プロトコルに関する機能とを有する１３９４インタフェースである。
【００３２】
４６、４８はメモリ３８とメモリ４０の書き込みと読み出しとを制御するメモリ制御部である。５０はＤＶＣＲ２８の動作を制御する制御部（システムコントローラ）であり、マイクロコンピュータを有する。５２はリモコンや操作パネル等からなる操作部である。５４は電子ビューファインダ（ＥＶＦ）である。５６はＤ／Ａ変換器である。
【００３３】
５８は磁気テープ、磁気ディスク、光磁気ディスク等の記録媒体からなる記録再生部で、各種のディジタルデータ（動画像データ、静止画像データ、音声データ等）を記録再生する。
【００３４】
次に、プリンタ６０の構成について説明する。６２はＩＥＥＥ１３９４−１９９５規格に準拠した機能と本実施例において規定する通信プロトコルに関する機能とを有する１３９４インタフェースである。６４はデータセレクタである。６６は操作ボタンやタッチパネル等からなる操作部である。
【００３５】
６８はプリンタ６０の動作を制御するプリンタコントローラである。７０はデコーダである。７２は内部メモリである。７４は１３９４インタフェースを介して受信された静止画像データ、テキストデータ、グラフィックスデータ等を処理する画像処理部である。７６はドライバである。７８はプリンタヘッドである。
【００３６】
図１に示すように、コンピュータ１０、ＤＶＣＲ２８及びプリンタ６０の各通信装置（以下、ノードと称する）は、１３９４インタフェース１４、４４、６２を介して相互に接続されている（以下、１３９４インタフェースによって構成されたネットワークを１３９４シリアルバスと称する）。
【００３７】
各ノードは、所定の通信プロトコルを定義することによって、各種のオブジェクトデータ（例えば、動画像データ、静止画像データ、音声データ、グラフィックスデータ、テキストデータ、プログラムデータ等）の授受、コマンドデータによる遠隔操作が可能となる。本実施例では、Ａｓｙｎｃｈｒｏｎｏｕｓ転送方式を用いた通信プロトコルを定義する。
【００３８】
次に、図１を用いて本実施例の通信システムを構成する各ノードの動作について説明する。
まず、コンピュータ１０を構成する各処理部の機能と動作について説明する。本実施例においてコンピュータ１０は、例えば、ＤＶＣＲ２８とプリンタ６０との間における画像データの送受信を制御するコントローラ、或いはＤＶＣＲ２８やプリンタ６０を遠隔操作するコントローラとして動作する。
【００３９】
ＭＰＵ１２は、ハードディスク２２に記録されているソフトウェアを実行するとともに、様々なデータを内部メモリ２４に移動させる。又、ＭＰＵ１２は、内部バス２６によって接続されている各処理部の調停動作なども合わせて行なう。
【００４０】
１３９４インタフェース１４は、１３９４シリアルバス上に転送された画像データを受信するとともに、ハードディスク２２や内部メモリ２４に記録されている画像データを１３９４シリアルバス上に送信することができる。又、１３９４インタフェース１４は、１３９４シリアルバス上の他のノードを遠隔操作するためのコマンドデータを送信することも可能である。更に、１３９４インタフェース１４は、１３９４シリアルバスを介して転送された信号を他のノードに転送する機能も有している。
【００４１】
ユーザは、操作部１６を介して所望のソフトウェアを選択し、ＭＰＵ１２にハードディスク２２に記録されているソフトウェアを実行させる。ここで、このソフトウェアに関する情報は、表示部２０によってユーザに提示される。デコーダ１８は、このソフトウェアに基づいて、１３９４シリアルバス上から受信した画像データをデコードする。デコードされた画像データは、表示部２０によってユーザに提示される。
【００４２】
次に、ＤＶＣＲ２８を構成する各処理部の機能と動作について説明する。
本実施例においてＤＶＣＲ２８は、例えば、本実施例の通信プロトコルに基づいて画像データをＡｓｙｎｃｈｒｏｎｏｕｓ転送する画像送信装置（ソース・ノード）として動作する。
撮像部３０は、被写体の光学像を輝度信号（Ｙ）と色差信号（Ｃ）とからなる電気信号に変換し、その電気信号をＡ／Ｄ変換器６０に供給する。Ａ／Ｄ変換器３２は、その電気信号をディジタル化する。
【００４３】
画像処理部３４は、ディジタル化された輝度信号と色差信号とに対して所定の画像処理を施すと共に、それらを多重化する。圧縮／伸長処理部３６は、ディジタル化された輝度信号と色差信号のデータ量を圧縮する。ここで、圧縮／伸長処理部３６は、独立した圧縮処理回路を用いて輝度信号と色差信号と並列に処理してもよい。又、共通の圧縮処理回路を用いてそれらを時分割に処理してもよい。
【００４４】
又、圧縮／伸長処理部３６では、伝送路誤りに強くするために、圧縮画像データに対してシャフリング処理を施す。これにより、連続的な符号誤り（即ち、バーストエラー）を、修整や補間の行いやすい離散的な誤り（即ち、ランダムエラー）に変換することができる。ここで、画像の画面内の粗密による情報量の偏りを均一化したい場合、圧縮処理の前に本処理工程を持ってくると、ランレングス等の可変長符号化を用いた場合の都合が良い。
【００４５】
圧縮／伸長処理部３６では、圧縮画像データに対して、シャフリングを復元するためのデータ識別情報（ＩＤ）を付加する。圧縮／伸長処理部３６は、記録再生時の誤りを低減する為に、圧縮画像データに対してエラー訂正符号（ECC）を付加する。
【００４６】
圧縮／伸長処理部３６にて圧縮された画像データは、メモリ３８と記録再生部５８とに供給される。記録再生部５８は、ＩＤやＥＣＣの付加された圧縮画像データを磁気テープ等の記録媒体に記録する。ここで、圧縮画像データは、音声データとは異なる独立の記録エリアに記録される。
【００４７】
一方、画像処理部３４からD/A変換器５６へ供給された画像データは、Ｄ／Ａ変換される。ＥＶＦ５４は、D/A変換器５６から供給されたアナログ画像信号を表示する。又、画像処理部３４にて処理された画像データは、メモリ４０にも供給される。ここで、メモリ４０には、非圧縮の画像データが格納される。
【００４８】
データセレクタ４２は、ユーザの指示に基づいてメモリ３８或いはメモリ４０を選択し、圧縮画像データ或いは非圧縮画像データを１３９４インタフェース４４に供給する。又、データセレクタ４２は、１３９４インタフェース４４から供給された画像データをメモリ３８或いはメモリ４０に供給する。
【００４９】
１３９４インタフェース４４は、後述する本実施例の通信プロトコルに基づいて、圧縮画像データ或いは非圧縮画像データをＡｓｙｎｃｈｒｏｎｏｕｓ転送する。又、１３９４インタフェース４４は、１３９４シリアルバスを介して、ＤＶＣＲ２８を制御するための制御コマンドを受信する。受信された制御コマンドは、データセレクタ４２を介して、制御部５０に供給される。１３９４インタフェース４４は、前記の制御コマンドに対するレスポンスを返送する。
【００５０】
次に、プリンタ６０を構成する各処理部の機能と動作について説明する。
本実施例において、プリンタ６０は、例えば、本実施例の通信プロトコルに基づいてＡｓｙｎｃｈｒｏｎｏｕｓ転送された画像データを受信して印刷する画像受信装置（デスティネーション・ノード）として動作する。
【００５１】
１３９４インタフェース６２は、１３９４シリアルバスを介してＡｓｙｎｃｈｒｏｎｏｕｓ転送された画像データや制御コマンドを受信する。又、１３９４インタフェース６２は、制御コマンドに対するレスポンスを送信する。
【００５２】
受信された画像データは、データセレクタ６４を介して、デコーダ７０に供給される。デコーダ７０は、該画像データをデコードし、その結果を画像処理部７４に出力する。画像処理部７４は、デコードされた画像データをメモリ７２に一時的に記憶する。
【００５３】
又、画像処理部７４は、メモリ７２に一時的に記憶された画像データを印刷用のデータに変換し、それをプリンタヘッド７８に供給する。プリンタヘッド７８は、プリンタコントローラ６８の制御に基づき、印刷を実行する。
【００５４】
一方、受信された制御コマンドは、データセレクタ６４を介して、プリンタコントローラ６８に入力される。プリンタコントローラ６８は、該制御データに基づいて印刷に関する様々な制御を行なう。例えば、ドライバ７６による紙送り、プリンタヘッド７８の位置等を制御する。
【００５５】
次に、図８を用いて本実施例の１３９４インタフェース１４、４４、６２の構成について詳細に説明する。１３９４インタフェースは、機能的に複数のレイヤ（階層）から構成されている。
【００５６】
図８において、１３９４インタフェースは、ＩＥＥＥ１３９４−１９９５規格に準拠した通信ケーブル８０１を介して他のノードの１３９４インタフェースと接続される。又、１３９４インタフェースは、１つ以上の通信ポート８０２を有し、各通信ポート８０２はハードウェア部に含まれるフィジカル・レイヤ８０３と接続される。
【００５７】
図８において、ハードウェア部は、フィジカル・レイヤ８０３とリンク・レイヤ８０４とから構成されている。フィジカル・レイヤ８０３は、他のノードとの物理的、電気的なインタフェース、バスリセットの検出とそれに伴う処理、入出力信号の符号化／復号化、バス使用権の調停等を行う。又、リンク・レイヤ８０４は、通信パケットの生成、各種の通信パケットの送受信、サイクルタイマの制御等を行なう。又、リンク・レイヤ８０４は、後述するAsynchronous broadcast packetの生成及び送受信の機能を提供する。
【００５８】
又、図８において、ファームウェア部は、トランザクション・レイヤ８０５とシリアル・バス・マネージメント８０６とを含んでいる。トランザクション・レイヤ８０５は、Asynchronous転送方式を管理し、各種のトランザクション（リード、ライト、ロック）を提供する。
【００５９】
又、トランザクション・レイヤ８０５は、後述するAsynchronous broadcast transaction機能を提供する。シリアル・バス・マネージメント８０６は、後述するＩＥＥＥ１２１２ＣＳＲ規格に基づいて、自ノードの制御、自ノードの接続状態の管理、自ノードのＩＤ情報の管理、シリアルバスネットワークの資源管理を行う機能を提供する。
【００６０】
図８に示すハードウェア部及びファームウェア部が実質的に１３９４インタフェースを構成するものであり、それらの基本構成は、ＩＥＥＥ１３９４−１９９５規格により規定されている。
【００６１】
又、ソフトウェア部に含まれるアプリケーション・レイヤ８０７は、使用するアプリケーションソフトによって異なり、どのようなオブジェクトデータをどのように転送するかを制御する。
【００６２】
後述する本実施例の通信プロトコルは、１３９４インタフェースを構成するハードウェア部及びファームウェア部の機能を拡張するものであり、ソフトウェア部に対して新規な転送手順を提供するものである。
【００６３】
（第１の実施例）
次に、図２を用いて、本実施例において規定する通信プロトコルの基本構成について説明する。
図２において、３００はコントローラ、３０２はソース・ノード、３０４はｎ（ｎ≧１）個のデスティネーション・ノード、３０６はソース・ノードの有するサブユニット（ｓｕｂｕｎｉｔ）、３０８は静止画像データ、グラフィックスデータ、テキストデータ、ファイルデータ、プログラムデータ等のオブジェクトデータ（object）である。
【００６４】
３１０はデスティネーション・ノード３０４内部にある第１のメモリ空間であり、所定のデスティネーション・オフセット（ｄｅｓｔｉｎａｔｉｏｎ#ｏｆｆｓｅｔ＃０）により指定される。３１２はソース・ノード３０２とデスティネーション・ノード３０４との間の論理的な接続関係（即ち、コネクション）を示す第１のコネクションである。ここで、デスティネーション・オフセットとは、ｎ個のデスティネーション・ノード３０４の有するメモリ空間を共通に指定するアドレスである。
【００６５】
３１４はデスティネーション・ノード３０４内部にある第ｎのメモリ空間であり、所定のデスティネーション・オフセット（ｄｅｓｔｉｎａｔｉｏｎ#ｏｆｆｓｅｔ＃ｎ）により指定される。３１６はソース・ノード３０２とデスティネーション・ノード３０４との間の論理的な接続関係（即ち、コネクション）を示す第ｎのコネクションである。
【００６６】
本実施例において、各ノードは、第１のメモリ空間３１０〜第ｎのメモリ空間３１４を、ＩＥＥＥ１２１２  ＣＳＲ（ＣｏｎｔｒｏｌａｎｄＳｔａｔｕｓＲｅｇｉｓｔｅｒＡｒｃｈｉｔｅｃｔｕｒｅ）規格（又は、ＩＳＯ／ＩＥＣ  １３２１３：１９９４規格）に準拠した６４ビットのアドレス空間により管理している。ＩＥＥＥ１２１２  ＣＳＲ規格とは、シリアルバス向けの制御、管理、アドレス割り振りを規定した規格である。
【００６７】
図６は、各ノードの有するアドレス空間について説明する図である。図６（ａ）は、６４ビットのアドレスにより表される論理的なメモリ空間である。又、図６（ｂ）は、図６（ａ）に示すメモリ空間の一部であり、例えば、上位１６ビットがＦＦＦＦ16となるアドレス空間である。図２に示す第１のメモリ空間３１０〜第ｎのメモリ空間３１４は、図６（ｂ）に示すメモリ空間の一部を使用する。各メモリ空間３１０〜３１４は、アドレスの下位４８ビットを示すデスティネーション・オフセットにより指定される。
【００６８】
図６（ｂ）において、例えば、００００００００００００16〜０００００００００３ＦＦ16は予約された領域であり、実際にオブジェクトデータ３０８の書き込まれる領域は、アドレスの下位４８ビットがＦＦＦＦＦ００００４００16以降となる領域である。
【００６９】
図２において、ソース・ノード３０２とは、後述する通信プロトコルに従ってオブジェクトデータ３０８を転送する機能をもつノードであり、デスティネーション・ノード３０４とは、ソース・ノード３０２から転送されたオブジェクトデータ３０８を受信する機能をもつノードである。又、コントローラ３００とは、後述する通信プロトコルに従ってソース・ノード３０２と１つ以上のデスティネーション・ノード３０４との間に、論理的な接続関係（即ち、コネクション）を設定し、それを管理する機能をもつノードである。
【００７０】
ここで、コントローラ３００、ソース・ノード３０２、デスティネーション・ノード３０４は、夫々独立した別々のノードにおいて機能してもよい。又、コントローラ３００とソース・ノード３０２とが、１つの同じノードにおいて機能してもよい。又、コントローラ３００とデスティネーション・ノード３０４とが、１つの同じノードにおいて機能してもよい。この場合、コントローラ３００とソース・ノード３０２或いはデスティネーション・ノード３０４との間のトランザクションが不要となり、通信手順が簡略化される。
【００７１】
本実施例では、コントローラ３００、ソース・ノード３０２、デスティネーション・ノード３０４の夫々が、独立した別々のノードにおいて機能する場合について説明する。例えば、１３９４インタフェース１４を具備するコンピュータ１０が、コントローラ３００として機能する。又、１３９４インタフェース４４を具備するＤＶＣＲ２８がソース・ノード３０２、１３９４インタフェース６２を具備するプリンタ６０がデスティネーション・ノード３０４として機能する。
【００７２】
本実施例では、図２に示すように、ソース・ノード３０２と１つ以上のデスティネーション・ノード３０４との間に、１つ以上のコネクションを設定することができる。これらのコネクションは、あるオブジェクトデータの転送要求がある場合に、１つ又は複数のコントローラ３００が後述する通信プロトコルに基づいて設定する。
【００７３】
本実施例では、１つのコネクションにおいて使用できるデスティネーション・オフセットを１つ或いは複数個設定することができる。このデスティネーション・オフセットの値は、予め設定された値であっても、コントローラ３００或いはソース・ノード３０２が可変的に設定する値であってもよい。尚、コネクションとデスティネーション・オフセットとの関係は、後述する通信プロトコルに基づいて設定される。
【００７４】
１つのコネクションに複数個のデスティネーション・オフセットを設定する場合、１つのコネクションで複数形態のデータ通信を同時に実現することができる。例えば、各形態のデータ通信に対して異なるデスティネーション・オフセットを割り当てることにより、１対１、１対Ｎ、Ｎ対Ｎのデータ通信を１つのコネクションで同時に実現することができる。
【００７５】
尚、本実施例において、コントローラ３００であるコンピュータ１０は、デスティネーション・ノード３０４として動作してもよい。この場合、１つのソース・ノード３０２と２つのデスティネーション・ノード３０４との間にコネクションが設定され、オブジェクトデータ３０８の転送が行われることになる。
【００７６】
又、本実施例において、コンピュータ１０がコントローラ３００として動作する場合について説明したが、コンピュータ１０が必ずコントローラ３００になる必要はない。ＤＶＣＲ２８或いはプリンタ６０がコントローラ３００として動作してもよい。
【００７７】
次に、本実施例において規定する通信プロトコルの基本的な転送手順について説明する。図３（ａ）及び図４は、あるコントローラ３００によって設定されたコネクションを用いて、１つのオブジェクトデータを転送するまでの手順を説明するシーケンスチャートである。図３（ｂ）では、１つのオブジェクトデータの転送中に、バスリセット或いは伝送エラーがあった場合の転送手順を説明するシーケンスチャートである。
【００７８】
本実施例の通信プロトコルでは、あるコントローラ３００が上述のコネクションの設定後、１つのオブジェクトデータを、１つ以上の「Asynchronous broadcast transaction」により転送する。Asynchronous broadcast transactionの詳細な通信手順については図３及び図４を用いて説明する。
【００７９】
又、Asynchronous broadcast transactionにおいて用いられるパケット（以下、Asynchronous broadcast packetと称する）については図４を用いて説明する。尚、上述のAsynchronous broadcast transactionとAsynchronous broadcast packetとは、本実施例の通信プロトコルにおいて規定する全く新規な通信手順及びパケット・フォーマットである。
【００８０】
以下、図３（ａ）及び図４を用いて、本実施例の通信プロトコルに基づく基本的な転送手順について説明する。
コントローラ３００は、ソース・ノード３０２と１つ以上のデスティネーション３０４との間の論理的な接続関係（コネクション）を識別するためのコネクションＩＤを設定する。次に、コントローラ３００は、そのコネクションＩＤと自己の有するワールド・ワイド・ユニークＩＤとを各ノードに通知し、１つのコネクションを設定する（図３（ａ）及び図４の４０１、４０２）。
【００８１】
コネクションＩＤの通知後、コントローラ３００は、ソース・ノード３０２に対してオブジェクトデータ３０８の転送を開始するように指示する（図３（ａ）及び図４の４０３）。
【００８２】
転送開始の指示を受けた後、ソース・ノード３０２は、１つ以上のデスティネーション・ノード３０４とネゴシエーションを実行し、Asynchronous broadcast transactionの初期設定を行う（図３（ａ）及び図４の４０４、４０５）。
【００８３】
初期設定の終了後、ソース・ノード３０２は、Asynchronous broadcast transactionを実行し、１つ以上のセグメントデータからなるオブジェクトデータ３０８を順次ブロードキャストする（図３（ａ）及び図４の４０６〜４０９）。
【００８４】
ここで、図７を用いて、本実施例におけるオブジェクトデータの転送モデルについて説明する。図７において、オブジェクトデータは、例えばデータサイズが１２８Ｋｂｙｔｅとなる静止画像データである。
【００８５】
ソース・ノード３０２は、初期設定において認識した各デスティネーション・ノード３０４の受信能力に応じてオブジェクトデータ３０８を、例えば５００個のセグメントデータ（１セグメントデータは２５６ｂｙｔｅ）に分割する。
【００８６】
ここで、１セグメントデータのデータサイズは、各デスティネーション・ノード３０４の有する内部バッファのサイズによりソース・ノード３０２が可変的に設定する。図７では、オブジェクトデータ３０８のデータサイズと同じ内部バッファを確保した場合を示す。
【００８７】
又、ソース・ノード３０２は、１つ以上のセグメントデータを少なくとも一回のAsynchronous broadcast transactionを用いて転送する。図７では、１つのセグメントデータを一回のAsynchronous broadcast transactionを用いて転送する。全てのセグメントデータの転送後、ソース・ノード３０２は、１つ以上のデスティネーション３０４とのデータ通信を終了する（図３（ａ）及び図４の４１０、４１１）。
【００８８】
次に、図３及び図４を用いて、コントローラ３００の動作について詳細に説明する。
コントローラ３００は、ユーザにより選択されたソース・ノード３０２と１つ以上のデスティネーション・ノード３０４とに対し、コネクションを設定するためのパケット（以下、コネクション設定パケット）をＡｓｙｎｃｈｒｏｎｏｕｓ転送する（図３（ａ）及び図４の４０１、４０２）。このパケットのペイロードには、コネクションＩＤとコントローラ３００のワールド・ワイド・ユニークＩＤとが格納されている。
【００８９】
次にコントローラ３００は、ソース・ノード３０２に対して送信コマンドパケット（transaction command packet）をＡｓｙｎｃｈｒｏｎｏｕｓ転送する（図３（ａ）及び図４の４０３）。
【００９０】
送信コマンドパケットを受信したソース・ノード３０２は、コントローラ３００から通知されたコネクションＩＤ、ワールド・ワイド・ユニークＩＤを用いて初期設定を行い、Asynchronous broadcast transactionを実行する（図３（ａ）の４０４〜４０９）。このAsynchronous broadcast transactionにより、ソース・ノード３０２は、１つ以上のセグメントデータからなるオブジェクトデータ３０８を順次転送することができる。
【００９１】
尚、本実施例の通信プロトコルにおいて、コントローラ３００は、コネクションの接続、非接続を管理する機能を提供するものである。従って、コネクション設定後におけるオブジェクトデータ３０８の転送は、ソース・ノード３０２とデスティネーション・ノード３０４との間のネゴシエーションにより実行される。
【００９２】
一連のAsynchronous broadcast transactionが終了した後、ソース・ノード３０２は、segment endを示すAsynchronous broadcast packet（以下、segment end packet）をブロードキャストする（図３（ａ）の４１０）。コントローラ３００は、ソース・ノード３０２からのsegment end packetを受け取った後、コネクションを解放してデータ転送を終了する（図３（ａ）の４１１）。
【００９３】
ここで、segment end packetは、ブロードキャストされるため、そのパケットの内容はデスティネーション・ノード３０４においても検出することができる。従って、コントローラ３００ではなく、デスティネーション・ノード３０４自体が、ソース・ノード３０２とのコネクションを解放するように構成してもよい。
【００９４】
次に、図３（ａ）及び図４を用いて、ソース・ノード３０２の動作について詳細に説明する。
コントローラ３００からのコネクション設定パケットと送信コマンドパケットとを受け取ったソース・ノード３０２は、各デスティネーション・ノード３０４に対してデータ転送を要求するためのAsynchronous broadcast packet（以下、send request packet）を送出する（図３（ａ）及び図４の４０４）。
【００９５】
ここで、send request packetは、オブジェクトデータ３０８をAsynchronous broadcast transactionを実行する前に必要な初期情報を得るためのリクエストパケットである。このパケットには、コントローラ３００によって指定されたコネクションＩＤとコントローラ３００のワールド・ワイド・ユニークＩＤが書き込まれている。
【００９６】
デスティネーション・ノード３０４は、send request packetに対応するレスポンスであることを示すAsynchronous broadcast packet（以下、ack response packet）をブロードキャストする（図３（ａ）及び図４の４０５）。
【００９７】
ここで、ack response packetには、send request packetと同じコネクションＩＤとワールド・ワイド・ユニークＩＤが格納されている。従って、ソース・ノード３０２は、受信パケットのコネクションＩＤとワールド・ワイド・ユニークＩＤを確認することによって、どのコネクションを介して転送されたack response packetであるかを識別することができる。
【００９８】
ここで、ack response packetには、各デスティネーション・ノード３０４の確保できる内部バッファのサイズと所定のメモリ空間を指定するオフセット・アドレスとが格納されている。ack response packetの受信後、ソース・ノード３０２は、各デスティネーション・ノード３０４のメモリ空間を共通に指定するデスティネーション・オフセットを設定し、Asynchronous broadcast transactionを開始する。
【００９９】
ここで、デスティネーション・オフセットは、各デスティネーション・ノード３０４のack response packetに含まれるオフセット・アドレスを用いて設定される。
【０１００】
尚、本実施例では、Asynchronous broadcast transactionにおいて使用されるデスティネーション・オフセットを、ack response packetに含まれるオフセット・アドレスを用いて設定しているがそれに限るものではない。
【０１０１】
例えば、コントローラ３００に各コネクションが使用するデスティネーション・オフセットを管理する機能を持たせ、コネクションＩＤの設定と共に、デスティネーション・オフセットを設定するように構成してもよい。この場合、各コネクションに対応するデスティネーション・オフセットは、コントローラ３００からソース・ノード３０２に対して通知される。
【０１０２】
次に、ソース・ノード３０２は、最初のAsynchronous broadcast packetを、上述のデスティネーション・オフセットの示すメモリ空間に対して書き込む（図３（ａ）及び図４の４０６）。このパケットには、コネクションＩＤ、ワールド・ワイド・ユニークＩＤ、セグメントデータのシークエンス番号が格納されている。
【０１０３】
最初のAsynchronous broadcast packetを送信した後、ソース・ノード３０２は、デスティネーション・ノード３０４からのレスポンス・パケットを待機する。デスティネーション・ノード３０４からは、コネクションＩＤ、ワールド・ワイド・ユニークＩＤ、シークエンス番号を格納したレスポンス・パケットがAsynchronous broadcast packetの形式で送出される。このレスポンス・パケットを受け取った後、ソース・ノード３０２は、シークエンス番号をインクリメントし、次のセグメントデータを含むAsynchronous broadcast packetを転送する（図３（ａ）及び図４の４０７）。
【０１０４】
この手順を繰り返して、ソース・ノード３０２は順次Asynchronous broadcast transactionを行う（図３（ａ）及び図４の４０８〜４０９）。デスティネーション・ノード３０４からのレスポンスを待機する最大の時間はあらかじめ決められており、その時間を過ぎてもレスポンスが帰ってこない場合は、同一シークエンス番号を用いて、同一データを再送する。
【０１０５】
又、デスティネーション・ノード３０４から再送を要求するレスポンス・パケットが転送された場合、ソース・ノード３０２は、指定されたシークエンス番号のデータを再度ブロードキャストすることもできる。
オブジェクトデータ３０８の全てをAsynchronous broadcast transactionした後、ソース・ノード３０２は、segment end packetをブロードキャストし、データ転送を終了する（図３（ａ）及び図４の４１０、４１１）。
【０１０６】
ここで、ソース・ノード３０２は上述のように、オブジェクトデータ３０８を必要に応じて１つ以上のセグメントデータに分割(segmentation)する。上述のレスポンス・パケットは、各セグメントデータをAsynchronous broadcast transactionする場合に伴い生ずることになる。本実施例では、１つのセグメントデータの転送を、１度のAsynchronous broadcast transactionにて行う。デスティネーション・ノード３０４は、上述のバッファサイズで示される容量のバッファを有している。
【０１０７】
尚、上述の実施例では、１つのセグメントデータのAsynchronous broadcast transactionに伴って必ずレスポンス・パケットを送出するように規定しているが、それに限るものではない。デスティネーション・ノード３０４の有するデータバッファが、複数の連続するセグメントデータによって満たされた後に、デスティネーション・ノード３０４がレスポンス・パケットの送信を行うように構成してもよい。
【０１０８】
次に、図３（ａ）及び図４を用いて、デスティネーション・ノード３０４の動作について詳細に説明する。
コントローラ３００からコネクション設定パケットを受け取ったデスティネーション・ノード３０４は、ソース・ノード３０２からのsend request packetを待機する（図３（ａ）及び図４の４０４）。
【０１０９】
send request packetを受け取ったデスティネーション・ノード３０４は、そのパケットに書かれているコネクションＩＤ及びワールド・ワイド・ユニークＩＤとを確認し、このパケットがソース・ノード３０２からのパケットであるかどうかを判別する。
【０１１０】
ソース・ノード３０２からのsend request packetを受信した後、各デスティネーション・ノード３０４は、コネクションＩＤ、ワールド・ワイド・ユニークＩＤ、確保できる内部バッファのサイズ、所定のメモリ空間を指定するオフセット・アドレスを書き込んだack response packetをブロードキャストする（図３（ａ）及び図４の４０５）。
【０１１１】
ソース・ノード３０２から転送されたAsynchronous broadcast packetをメモリ空間に書き込んだ後、デスティネーション・ノード３０４は、そのパケットのコネクションＩＤとワールド・ワイド・ユニークＩＤとを確認する。このコネクションＩＤとワールド・ワイド・ユニークＩＤが、コントローラ３００によって設定された値と一致する場合、レスポンス・パケット（コネクションＩＤ、ワールド・ワイド・ユニークＩＤ、受信パケットに含まれるシークエンス番号を含む）をブロードキャストする（図３（ａ）及び図４の４０６〜４０９）。
【０１１２】
この場合、受信パケットに含まれるセグメントデータは、内部バッファに格納される。ここで、受信パケットに含まれるコネクションＩＤ及びワールド・ワイド・ユニークＩＤが自己に設定されたコネクションＩＤ及びワールド・ワイド・ユニークＩＤと異なる場合、デスティネーション・ノード３０４は、その受信パケットを廃棄する。
【０１１３】
又、デスティネーション・ノード３０４は、受信パケットのシークエンス番号の不整合を検出した場合に、再送要求を示すレスポンス・パケットを送出することもできる。その場合、デスティネーション・ノード３０４は、再送を要求するシークエンス番号をソース・ノード３０２に通知する。
【０１１４】
全てのAsynchronous broadcast transactionを終了すると、ソース・ノード３０２からsegment end packetがブロードキャストされる。このパケットを受信すると、デスティネーション・ノード３０４はデータ転送プロセスを終了する（図３（ａ）及び図４の４１０）。
【０１１５】
segment end packetを受信した後、デスティネーション・ノード３０４は、segment end packetを正常に受信したことを示すレスポンス・パケットをブロードキャストする（図３（ａ）及び図４の４１１）。
【０１１６】
以上説明したように、本実施例の通信システムは、従来の通信方式の不便利性を解決することができる。又、リアルタイム性を必要としないデータ転送においても、簡便に高速にデータを転送することができる。
【０１１７】
又、本実施例では、コントローラ３００がコネクションを設定した後、オブジェクトデータの転送処理は、コントローラ３００に制御されることなくソース・ノード３００と各デスティネーション・ノード３０４との間において実行される。これにより、コントローラ３００の負荷を減らし、複雑な通信手順を踏むことのない簡単な通信プロトコルを提供することができる。
【０１１８】
又、本実施例では、デスティネーション・ノード３０４は、各Asynchronous broadcast transactionに対して必ずレスポンスを返すように構成されている。これにより、リアルタイム性の必要としないデータを確実に転送することのできる通信プロトコルを提供することができる。
【０１１９】
より確実なデータ転送を実現するためには、バスリセットや何らかの伝送エラーの発生によってデータ転送が中断した場合において、データを欠落させることなく速やかにデータ転送を再開させることが必要である。以下、図３（ｂ）を用いて、本実施例の通信プロトコルで規定する再開手順について説明する。
【０１２０】
例えば、シークエンス番号iのAsynchronous broadcast packetを受信した後にバスリセットが発生した場合、各ノードは転送処理を中断し、ＩＥＥＥ１３９４−１９９５規格で定められた手順に従ってバスの初期化、接続構成の認識、ノードＩＤの設定等を実行する（図３（ｂ）の４２０、４２１）。
【０１２１】
バスの再構築が完了した後、各デスティネーション・ノード３０４は、コネクションＩＤ、ワールド・ワイド・ユニークＩＤ、シークエンス番号ｉとを格納した再開要求パケット（resend request packet）をブロードキャストする（図３（ｂ）の４２２）。
【０１２２】
Asynchronous broadcast transactionの再開が可能な場合、ソース・ノード３０２は、受信したresend request packetのコネクションＩＤとワールド・ワイド・ユニークＩＤとを確認し、これらを格納したack response packetをブロードキャストする（図３（ｂ）の４２３）。
【０１２３】
その後、ソース・ノード３０２は、受信したresend request packetにより要求されたシークエンス番号以降のセグメントデータ、すなわち、シークエンス番号(i+1)で始まるセグメントデータを順次ブロードキャストする（図３（ｂ）の４２４）。
【０１２４】
前述の手順により、コントローラ３００、ソース・ノード３０２、デスティネーション・ノード３０４は、それぞれのノードＩＤを考慮することなく、データ転送が中断しても、その後のデータ転送を容易に、かつ、確実に再開することができる。
【０１２５】
又、前述のように、本実施例では、データ転送が中断した場合にも、コントローラ３００の制御手順が簡略化できる効果がある。
次に、図５を用いて本実施例において規定するAsynchronous broadcast packetの構成について説明する。Asynchronous broadcast packetは、例えば、１Ｑｕａｄｌｅｔ（４ｂｙｔｅｓ＝３２ｂｉｔｓ)を単位とするデータパケットである。
【０１２６】
まず、パケット・ヘッダ（ｐａｃｋｅｔｈｅａｄｅｒ）５２１の構成を説明する。
図５において、フィールド５０１（１６ｂｉｔｓ）は、destination#IDを示し、受信先（即ち、デスティネーション・ノード３０４）のノードＩＤを示す。本実施例の通信プロトコルでは、オブジェクトデータ３０８のAsynchronous broadcast transactionを実現するため、このフィールドの値をブロードキャスト用ＩＤ（即ち、「ＦＦＦＦ16」）とする。
【０１２７】
フィールド５０２（６ｂｉｔｓ）は、トランザクション・ラベル(tl)フィールドを示し、各トランザクション固有のタグである。
フィールド５０３（２ｂｉｔｓ）は、リトライ(rt)コードを示し、パケットがリトライを試みるかどうかを指定する。
【０１２８】
フィールド５０４（４ｂｉｔｓ）は、トランザクションコード(tcode)を示す。tcodeは、パケットのフォーマットや、実行しなければならないトランザクションのタイプを指定する。本実施例では、このフィールドの値を例えば「０００１2」とし、このパケットのデータ・ブロック５２２をdestination#offsetフィールド５０７の示すメモリ空間に書き込む処理（即ち、ライト・トランザクション）をリクエストする。
【０１２９】
フィールド５０５（４ｂｉｔｓ）は、プライオリティ(pri)を示し、優先順位を指定する。本実施例では、このフィールドの値は「００００2」とする。
フィールド５０６（１６ｂｉｔｓ）は、source#IDを示し、送信側（即ち、ソース・ノード３０２）のノードＩＤを示す。
【０１３０】
フィールド５０７（４８ｂｉｔｓ）は、destination#offsetを示し、各デスティネーション・ノード３０４の有するアドレス空間の下位４８ｂｉｔｓを共通に指定する。ここで、destination#offsetは、全てのコネクションにおいて同じ値を設定しても、コネクション毎に異なる値を設定してもよい。但し、異なる値を設定した方が複数のコネクションからのAsynchronous broadcast packetを並列的に処理できるため効率がよい。
【０１３１】
フィールド５０８（１６ｂｉｔｓ）は、data#lengthを示し、後述するデータフィールドの長さをバイト単位で示す。
フィールド５０９（１６ｂｉｔｓ）は、extended#tcodeを示す。本実施例では、このフィールドの値を「００００2」とする。
【０１３２】
フィールド５１０（３２ｂｉｔｓ）は、header#CRCを示し、上述したフィールド５０１〜５０９に対するエラー検出用コードが格納される。次に、データ・ブロック（ｄａｔａｂｌｏｃｋ）５２２の構成を説明する。本実施例において、データ・ブロック５２２は、ヘッダ・インフォメーション（ｐａｃｋｅｔｉｎｆｏｒｍａｔｉｏｎ）５２３とデータ・フィールド（ｄａｔａｆｉｅｌｄ）５２４とにより構成される。
【０１３３】
ヘッダ・インフォメーション５２３には、各ノード間の論理的な接続関係（即ち、コネクション）を識別するためのコネクションＩＤなどが格納される。尚、ヘッダ・インフォメーション５２３の構成は、使用目的に応じて異なる。
【０１３４】
又、データ・フィールド５２４は可変長なフィールドであり、上述のセグメントデータが格納される。ここで、データ・フィールド５２４に格納されるセグメントデータがクアッドレットの倍数でない場合、クアッドレットに満たない分には「０」が詰められる。
【０１３５】
フィールド５１１（２クワトレット、６４ｂｉｔｓ）は、コントローラ３００の有するワールド・ワイド・ユニークＩＤである。本実施例の１３９４インタフェースは、このワールド・ワイド・ユニークＩＤにより、ソース・ノード３０２とデスティネーション・ノード３０４との間のコネクションを設定したコントローラ３００を識別する。
【０１３６】
ここで、このワールド・ワイド・ユニークＩＤは、ＩＥＥＥ１３９４−１９９５規格に準拠する、各ノードが固有にもっているＩＤである。尚、本実施例では、各コネクションを設定したコントローラを識別するための情報としてワールド・ワイド・ユニークＩＤを使用したがこれに限るものではない。上述のバスリセット等によっても変化することなく、個々のノードを固有に識別できる情報であれば他の情報でもよい。
【０１３７】
フィールド５１２（１６ｂｉｔｓ）は、connection#IDを示し、本実施例のコネクションＩＤを格納する。本実施例の１３９４インタフェースは、このフィールドに格納されたコネクションＩＤに基づいてソース・ノード３０２と１つ以上のデスティネーション・ノード３０４との間に設定されたコネクションを識別する。
【０１３８】
本実施例において、１つのコントローラは、２16×（ノード数）のコネクションを確立することが可能である。これにより、各コネクションの使用する通信帯域の総量が伝送路の容量に達するまで、複数のコネクションを設定することが可能となる。
【０１３９】
又、本実施例の１３９４インタフェースは、上述のワールド・ワイド・ユニークＩＤとコネクションＩＤとにより、あるソース・ノード３０２と１つ以上のデスティネーション・ノード３０４との間に設定された絶対的なコネクションを識別することができる。
【０１４０】
従って、複数のコントローラ３００が、２つの異なる論理的な接続関係に対して同一のコネクションＩＤを設定することも可能である。つまり、各コントローラは、他のコントローラの設定したコネクションＩＤを気にすることなく、自己のコネクションＩＤを設定し、管理することができる。
【０１４１】
フィールド５１３（８ｂｉｔｓ）は、protocol#typeを示し、ヘッダ・インフォメーション５２３に基づく通信手順（即ち、通信プロトコルの種類）を示す。本実施例の通信プロトコルを示す場合、このフィールドの値は例えば「０１16」となる。
【０１４２】
フィールド５１４（８ｂｉｔｓ）は、control#flagsを示し、本実施例の通信プロトコルの通信手順等を制御する所定の制御データが設定される。本実施例では、このフィールドの最上位ビットを、例えば、再開要求(resend#request)フラグとする。従って、このフィールドの最上位ビットの値が「１」となる場合、本実施例の通信プロトコルに基づく再開要求が生じていることを示す。
【０１４３】
フィールド５１５（１６ｂｉｔｓ）は、sequence#numberを示し、特定のコネクションＩＤ（フィールド５１２で指定されたコネクションＩＤ）に基づいて転送されるパケットに対して連続的な値（即ち、シークエンス番号）を設定する。
【０１４４】
このシークエンス番号によって、デスティネーション・ノード３０４は、順次Asynchronous broadcast transactionされるセグメントデータの連続性を監視することができる。不一致が生じた場合、デスティネーション・ノード３０４は、このシークエンス番号に基づいて再送を要求することもできる。
【０１４５】
フィールド５１６（１６ｂｉｔｓ）は、reconfirmation#numberを示す。本実施例においてこのフィールドは、上述の再送要求フラグの値が１である場合にのみ意味を持つ。例えば、上述の再送要求フラグの値が１である場合、このフィールドには、再送を要求するパケットのシークエンス番号が設定される。
【０１４６】
フィールド５１７（１６ｂｉｔｓ）は、buffer#sizeを示す。このフィールドには、デスティネーション・ノード３０４のバッファ・サイズが設定される。
フィールド５１８（４８ｂｉｔｓ）は、offset#addressを示す。このフィールドには、デスティネーション・ノード３０４の有するアドレス空間の下位４８ｂｉｔｓが格納される。これにより、図２に示す第１のメモリ空間３１０〜第ｎのメモリ空間３１４の何れかが指定される。
【０１４７】
フィールド５１８（３２ｂｉｔｓ）は、data＿CRC を示し、上記のheader＿CRC と同様に、フィールド５１１〜５１７（ヘッダ・インフォメーション５２３とデータ・フィールド５２４とを含む）に対応するエラー検出用コードが格納される。
【０１４８】
（第２の実施例）
第２の実施例では、ソース・ノード３０２とデスティネーション・ノード３０４のパフォーマンスを高め、通信効率を向上させる例について説明する。
第２の実施例では、各コネクションＩＤをヘッダ部に格納されるデスティネーション・オフセットとを対応付け、受信パケットがどのコネクションを介してブロードキャストされたパケットであるかを簡単に識別することのできる構成について説明する。
【０１４９】
これにより、ネットワーク上の各ノードは、ヘッダ部のデスティネーション・オフセットをチェックするだけ各Asynchronous broadcast packetのコネクションを簡単に識別することができ、関係のないパケットのデータブロックをデコードすることなく廃棄することができる。
【０１５０】
次に、図９を用いて第２の実施例の通信プロトコルに基づく転送手順について説明する。尚、第２の実施例の通信プロトコルは、基本的に第１の実施例の通信プロトコルと同様に処理される。従って、図９において、図３と同様の処理を行う手順については同一の符号を付し、その詳細な説明を省略する。
【０１５１】
コントローラ３００は、ソース・ノード３０２と１つ以上のデスティネーション３０４との間の論理的な接続関係（コネクション）を識別するためのコネクションＩＤを設定する。
【０１５２】
次に、コントローラ３００は、そのコネクションＩＤを各ノードに通知し、１つのコネクションを設定する（図９の４０１、４０２）。この時、各デスティネーション・ノード３０４は、コントローラ３００から通知されたコネクションＩＤに対応付けたデスティネーション・オフセットをソース・ノード３０２及びコントローラ３００に通知する（図９の８０１、８０２）。
【０１５３】
ここで、コネクションＩＤとデスティネーション・オフセットとの対応は、全てのノードが管理しているものであり、デスティネーション・ノード３０４となったノードが、他のコネクションで使用していないデスティネーション・オフセットを設定する。
【０１５４】
コネクションＩＤの通知後、コントローラ３００は、ソース・ノード３０２に対してオブジェクトデータ３０８の転送を開始するように指示する（図９の４０３）。転送開始の指示を受けた後、ソース・ノード３０２は、１つ以上のデスティネーション・ノード３０４とネゴシエーションを実行し、データ通信の初期設定を行う（図９の４０４、４０５）。
【０１５５】
ここで、各デスティネーション・ノード３０４は、send request packetと同じコネクションＩＤと受信バッファの容量を示すバッファサイズとを上述のack response packetに格納してブロードキャストする。尚、各デスティネーション・ノード３０４は、第１の実施例とは異なり、オフセット・アドレスを通知しない。
【０１５６】
初期設定の終了後、ソース・ノード３０２は、Asynchronous broadcast transactionを実行し、１つ以上のセグメントデータからなるオブジェクトデータ３０８を順次ブロードキャストする（図９の４０６〜４０９）。ここで、各Asynchronous broadcast packetのデスティネーション・オフセットは、コネクションIDと１対１に対応するオフセット・アドレスであり、各デスティネーション・ノード３０４のメモリ空間を共通に指定する。全てのセグメントデータの転送後、ソース・ノード３０２は、１つ以上のデスティネーション３０４とのデータ通信を終了する（図９の４１０、４１１）。
【０１５７】
以上説明したのように、第２の実施例では、上述のコネクションＩＤとデスティネーション・オフセットとを１対１に対応付けることにより、受信パケットがどのコネクションを介してブロードキャストされたパケットであるかを簡単に識別することができる。
【０１５８】
（他の実施例）
上述の各実施例において説明した通信プロトコル及びそれを実現するために必要な各種の処理動作は、ソフトウェアによって実現することも可能である。例えば、上述の実施例の機能を実現するためのプログラムコードを記憶した記憶媒体を、各実施例の通信システムを構成する機器の制御部（例えば、図１のＭＰＵ１２、システムコントローラ５０、プリンタコントローラ６８）に供給するように構成する。
【０１５９】
そして、その制御部が、該記憶媒体に格納されたプログラムコードを読み出し、そのプログラムコードに従って各実施例の機能を実現するように通信システム或いは機器自体の動作を制御するように構成しても、上述の実施例を実現することができる。
【０１６０】
又、上述の実施例の機能を実現するためのプログラムコードを記憶した記憶媒体を、各機器の具備する１３９４インタフェース１４、４４、６２に供給し、該１３９４インタフェース１４、４４、６２の動作を制御する制御部（例えば、図７のシリアル・バス・マネージメント８０６）が、該記録媒体に記憶されたプログラムコードに従って各実施例の機能を実現するように処理動作を制御するように構成してもよい。
【０１６１】
この場合、上述の記憶媒体から読み出されたプログラムコード自体が各実施例の機能を実現することになり、そのプログラムコード自体及びそのプログラムコードを制御部に供給するための手段（例えば、記憶媒体自体）は本発明を構成する。
【０１６２】
かかるプログラムコードを記憶する記憶媒体としては、例えば、フロッピディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１６３】
又、上述の記憶媒体から読み出されたプログラムコードが、上述の制御部上で稼動しているＯＳ（オペレーティングシステム）或いは各種のアプリケーションソフト等と共同して、各実施例の機能を実現する場合も本発明に含まれることは言うまでもない。
【０１６４】
更に、上述の記憶媒体から読み出されたプログラムコードを、上述の制御部に接続された機能拡張ユニットに備わるメモリに格納した後、その機能拡張ユニットに備わる制御部が、該メモリに格納したプログラムコードに従って実際の処理の一部或いは全てを行い、その処理によって各実施例の機能を実現する場合も本発明に含まれることは言うまでもない。
【０１６５】
尚、本発明はその精神、又は主要な特徴から逸脱することなく、他の様々な形で実施することができる。
例えば、本実施例では、ＩＥＥＥ１３９４−１９９５規格に準拠したネットワークに適用可能な通信プロトコルについて説明したがそれに限るものではない。本実施例の通信プロトコルは、ＩＥＥＥ１３９４−１９９５規格のようなバス型ネットワークやバス型ネットワークを仮想的に構成できるネットワークに適用することもできる。
【０１６６】
従って、前述の各実施例ではあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は特許請求の範囲によって示すものであって、明細書本文には何等拘束されない。更に、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲のものである。
【０１６７】
【発明の効果】
本発明によれば、リアルタイム性を必要としないデータ（例えば、静止画像データ）を転送することができる。
【図面の簡単な説明】
【図１】本実施例の通信システムの構成例を示すブロック図である。
【図２】第１の実施例の通信プロトコルの基本構成を説明する概念図である。
【図３】第１の実施例の通信プロトコルの基本的な通信手順を説明するシーケンスチャートである。
【図４】第１の実施例の通信プロトコルの基本的な通信手順を説明するシーケンスチャートである。
【図５】第１の実施例のAsynchronous broadcast packetの構成を示す図である。
【図６】各ノードの有するアドレス空間を説明する図である。
【図７】オブジェクトデータの転送モデルについて説明する図である。
【図８】本実施例の１３９４インタフェースの構成を説明する図である。
【図９】第２の実施例の通信プロトコルに基づく転送手順について説明する図である。
【図１０】従来のシステムについて説明するブロック図である。
【符号の説明】
１０  コンピュータ
１２  演算処理装置（ＭＰＵ）
１４  １３９４インタフェース
１６  操作部
１８  デコーダ
２０  表示部（ディスプレイ）
２２  ハードディスク（ＨＤ）
２４  内部メモリ
２６  内部バス
２８  カメラー体型デジタルビデオレコーダ
３０  撮像部（ｏｐｔ）
３２  アナログーデジタル（Ａ／Ｄ）変換器
３４  画像処理部
３６  圧縮／伸長処理部
３８  メモリ
４０  メモリ
４２  データセレクタ
４４  インタフェース
５０  制御部（システムコントローラ）
５２  操作部
５４  電子ビューファインダ（ＥＶＦ）
５６  Ｄ／Ａ変換器
５８  記録再生部
６０  プリンタ
６２  １３９４インタフェース
６４  データセレクタ
６６  操作部
６８  プリンタコントローラ
７０  デコーダ
７２  内部メモリ
７４  画像処理部
７６  ドライバ
７８  プリンタヘッド
【図１】
0004143205.tif 000002
【図２】
0004143205.tif 000003
【図３】
0004143205.tif 000004
【図４】
0004143205.tif 000005
【図５】
0004143205.tif 000006
【図６】
0004143205.tif 000007
【図７】
0004143205.tif 000008
【図８】
0004143205.tif 000009
【図９】
0004143205.tif 000010
【図１０】
0004143205.tif 000011