JP3714341B2 - データ転送方法 - Google Patents
データ転送方法 Download PDFInfo
- Publication number
- JP3714341B2 JP3714341B2 JP2003155078A JP2003155078A JP3714341B2 JP 3714341 B2 JP3714341 B2 JP 3714341B2 JP 2003155078 A JP2003155078 A JP 2003155078A JP 2003155078 A JP2003155078 A JP 2003155078A JP 3714341 B2 JP3714341 B2 JP 3714341B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- data block
- transfer
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Description
【発明の属する技術分野】
本発明は、静止画像データや文書データ等のリアルタイム処理を必要としないデータを複数の機器間で転送する際に用いられるデータ転送方法に関する。
【0002】
【従来の技術】
近年、デジタルスチルカメラやプリンタなど静止画像を取り扱う機器の市場拡大が進んでいる。これらの機器は従来パーソナルコンピュータの存在する環境で使用されていたが、近年、これらの機器をコンピュータのない環境で簡単に取り扱いたいというニーズが高まっている。
【0003】
従来では、このような静止画や文書データに代表される、リアルタイム処理を必要としないデータの送受信を2個の機器間で行う場合には、一方の機器がもう一方の機器に対してコマンドを発行することで、データの送信または受信を行うのが一般的であった。
図15は、従来のデータ転送方法による静止画データシステムの第1の例を表すブロック図である。図15において、100は画像入力機器であるデジタルスチルカメラ、101は画像出力機器であるプリンタである。ユーザはデジタルスチルカメラ100の操作ボタンにより、内部の画像を選択し、これをプリンタ101に出力するよう指示を行う。するとデジタルスチルカメラ100がプリンタ101に対して、データ受信コマンド102を発行することでプリンタ101を受信可能状態とし、続いてデータ103の転送を行う。
【0004】
次に、従来のデータ転送方法による静止画データシステムの第2の例を図16に示す。図16においては、プリンタ101の操作パネルをユーザが操作することで、デジタルスチルカメラ100の画像を出力する場合を説明する。ユーザはプリンタ101の操作ボタンにより、デジタルスチルカメラ100上の画像データの出力する指示を行う。するとプリンタ101はデジタルスチルカメラ100に対してデータ送信コマンド104を出力し、このデータ送信コマンド104を受信したデジタルスチルカメラ100はプリンタ101に対してデータ103の転送処理を行う。
【0005】
さらに、従来のデータ転送方法による静止画データシステムの第3の例を図17に示す。図17においては、パーソナルコンピュータやデジタルテレビ用セットトップボックスなど、第3の機器の命令によって画像データをデジタルスチルカメラ100からプリンタ101に転送する場合を説明する。
図17において、105はパーソナルコンピュータを現している。まず、パーソナルコンピュータ105がデジタルスチルカメラ100に対してデータ入力用コマンド104を発行することで、データ103が一旦パーソナルコンピュータ105内に格納される。次に、パーソナルコンピュータ105はプリンタ101に対してデータ出力コマンド102を発行し、先ほどデジタルスチルカメラ100から受信、格納しておいたデータ103をプリンタに送信する処理を行う。すなわち、同じデータ103を(1)デジタルスチルカメラ100からパーソナルコンピュータ105に転送、(2)パーソナルコンピュータ105からプリンタ101に転送、という2段階の処理が必要であり、また同じデータを2回転送する必要が生じるため処理時間がかかる上に、パーソナルコンピュータ105にデータ103を格納するだけの格納領域が必要となり、効率が悪いシステムとなってしまう。
【0006】
そこで、この従来の一般的なデータ転送方法の効率向上を目的としたデータ転送方法として、ANSI X3.131-1986, Small Computer System Interface記載の「COPY コマンド」が提案されている。
図18は、この従来の改良されたデータ転送方法を用いた静止画データシステムの例の動作を説明するものである。
【0007】
図18において、106はパーソナルコンピュータがデジタルスチルカメラ100に対して画像データの転送を指示するCOPYコマンド、107はプリンタ101で発生したエラーをデジタルカメラ100に転送する第1のエラー通知、108はデジタルスチルカメラ100がパーソナルコンピュータ105に、プリンタ101のエラーを転送する第2のエラー通知を表している。
【0008】
まず、パーソナルコンピュータ105はデジタルスチルカメラ100に対して、「プリンタ101に対して画像を転送せよ」という指示を含むCOPYコマンド106を発行する。このCOPYコマンド106には、図15で説明したデータ受信コマンド102の内容が含まれており、同時にプリンタ101の識別子(SCSI ID)も含んでいる。
【0009】
デジタルスチルカメラ100はCOPYコマンド106を受信すると、その中に含まれているプリンタ101の識別子とデータ受信コマンド102の内容を解釈し、プリンタ101に対してデータ受信コマンド102を発行し、それに続いてデータ103をプリンタ101に対して送信する。
このように改良されたデータ転送方法によれば、第3の制御機器がデータ転送を指示しているにもかかわらず、データ103の転送は、デジタルスチルカメラ100からプリンタ101への1回だけであるので、処理の効率が確かに向上している。
【0010】
しかしながら、プリンタ101においてデータ転送中に、用紙切れや紙詰まりなどのエラーが発生し、データ受信を継続することができなくなったときは、図18の第1のエラー通信107に示すように、プリンタ101は、これらのエラー状態をデジタルスチルカメラ100に対して通知する。次に、プリンタ101からのエラー状態の通知を受けたデジタルスチルカメラ100は、図18の第2のエラー通信108に示すように、次は、パーソナルコンピュータ105に対してプリンタ101でのエラーの発生を通知することで、初めてパーソナルコンピュータ105はプリンタ101でのエラー発生を知ることができることになる。
【0011】
すなわち、前記したようなエラー状況において、エラーの発生した機器から直接エラー発生の通知を受けることができず、システム内でエラー通知の伝播を行わなければならないという非効率性を有していた。さらには、パーソナルコンピュータ105はデジタルスチルカメラ100から通知されるエラーが、デジタルスチルカメラ100で発生したものなのか、プリンタ101で発生したものなのかを必ず識別しなければならず、処理内容が複雑であるという課題を有していた。
【0012】
さらに、このようなCOPYコマンド106は、先に説明したデータ受信コマンド102やデータ送信コマンド104などとは異なり、第3の制御機器が存在するときのみに利用されるものであるため、さまざまな機器接続環境あるいはシステム構成に対応するためには、それぞれの機器がこれらの異なる2つの処理体系のコマンドをサポートする必要があった。
【0013】
【発明が解決しようとする課題】
以上説明した通り、従来から一般的である、「一方の機器がもう一方の機器に対してコマンドを発行することでデータの送信または受信を行う」転送方法を用いて、静止画データの転送を行うシステムを考えると、第3の制御機器の介在する環境においては、効率が悪く処理時間が必要以上にかかるシステムとなるという課題を有していた。
【0014】
また、従来の改良されたデータ転送方法を用いた場合でも、エラーが発生したときの処理が非効率的であり、さらには1対1の接続の時に用いられる処理体系と異なるコマンド処理体系の2つの体系をサポートする必要があり、機器に搭載されるソフトウエアの容量が不必要に大きくなり、複雑化するという課題を有していた。
【0015】
本発明は、これらの点に鑑みて、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なデータ転送方法を提供することを第1の目的とする。
さらに本発明は、データ転送の終了判断を簡単に行え、データ転送開始時にデータ長が分からないデータを転送可能なデータ転送方法を提供することを第2の目的とする。
【0016】
さらに本発明は、制御機器が転送すべきデータのデータ長を計算することなく、簡単な制御でデータを転送可能なデータ転送方法を提供することを第3の目的とする。
さらに本発明は、エラー発生時のデータ再送を簡単に処理可能なデータ転送方法を提供することを第4の目的とする。
【0017】
さらに本発明は、同一のデータを複数の機器に対して効率良く転送するデータ転送方法を提供することを第5の目的とする。
さらに本発明は、同一のデータを複数の機器に送信する時にもデータ送信側の機器の処理が簡単かつ高速に行えるデータ転送方法を提供することを第6の目的とする。
【0018】
さらに本発明は、制御機器のコマンド発行数が最小限とすることで簡単な制御でデータ転送が可能であり、さまざまな処理速度のデータ送信側の機器とデータ受信側の機器との組み合わせに容易に対応可能なデータ転送方法を提供することを第7の目的とする。
さらに本発明は、制御機器がデータブロックのデータ長を管理する必要がないデータ転送方法を提供することを第8の目的とする。
【0019】
さらに本発明は、データ送信側の機器が、受信側の機器の処理能力に応じた転送データブロックのパケット分割を容易に実現可能なデータ転送方法を提供することを第9の目的とする。
さらに本発明は、受信側の機器が内部処理状況に応じて1度に受信するデータ量を可変可能なデータ転送方法を提供することを第10の目的とする。
【0020】
さらに本発明は、非常に速度の遅いデータ送信側の機器やデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能なデータ転送方法を提供することを第11の目的とする
【0021】
【課題を解決するための手段】
各ノードに対してノード識別子が割り当てられるバスシステム上の第1のノードから第2のノードにデータを複数個のデータブロックに分割して転送するに際し、1個のデータブロック転送に先立って、制御ノードは第2のノードに対してデータブロック受信命令を発行し、次に第1のノードに対して、第2のノードのノード識別子を含むデータブロック送信命令を発行することで、第1のノードから第2のノードへのデータブロック転送が実行され、データブロック転送が終了した後に、第1のノードはデータブロック送信処理の実行結果を制御ノードに対して通知し、第2のノードはデータブロック受信処理の実行結果を制御ノードに対して通知するようにしたものである。
【発明の詳細な説明】
【0022】
これにより、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なデータ転送方法を得ることができる。
【0023】
【発明の実施の形態】
本発明の第1の発明は、各ノードに対してノード識別子が割り当てられるバスシステム上の第1のノードから第2のノードにデータをN個(Nは自然数)のデータブロックに分割して転送するに際し、1個のデータブロック転送に先立って、制御ノードは第2のノードに対してデータブロック受信命令を発行し、次に第1のノードに対して、第2のノードのノード識別子を含むデータブロック送信命令を発行することで、第1のノードから第2のノードへのデータブロック転送が実行され、前記データブロック転送が終了した後に、第1のノードは前記データブロック送信処理の実行結果を制御ノードに対して通知し、第2のノードは前記データブロック受信処理の実行結果を制御ノードに対して通知するものである。これにより、第1のノードから第2のノードのデータ転送を制御する制御ノードを定義し、データを送出する第1のノードに対してデータ送出先のノードの識別子を含む命令を発行することにより、機器の1対1接続の場合だけでなく、第3の制御機器が存在した場合のどちらでも、同一のコマンド体系で、高効率のデータ転送を可能とするものである。さらに、データ転送終了後それぞれのノードから制御ノードに対してデータ送受信処理の実行結果を通知することで、効率よく機器で発生したエラー条件を検出することを可能とする。
【0024】
また、本発明の第2の発明は、1回のデータブロック転送が終了した後、第1のノードが、制御ノードにデータブロック送信処理の実行結果とともに次に転送すべきデータブロックのデータ長を通知するものである。これにより、第1のノードが、制御ノードに次に転送すべきデータブロックのデータ長を通知することにより、制御機器が転送すべきデータのデータ長を計算することなく、簡単な制御でのデータ転送を可能とする。
【0025】
また、本発明の第3の発明は、第1のノードが、データブロック転送の際にエラーを検出したときに、制御ノードにデータブロック送信処理の実行結果とともに、エラーの発生したデータブロックの再送要求を通知するものである。これにより、第1のノードが、データブロック転送の際にエラーを検出したときに、制御ノードにデータブロック送信処理の実行結果とともに、エラーの発生したデータブロックの再送要求を通知することにより、エラー発生時のデータ再送を簡単に処理可能とする。
【0026】
また、本発明の第4の発明は、制御ノードが第1のノードにデータブロック送信指示命令を発行したのち、データブロック転送に先立って、前記第1のノードが前記第2のノードに対して、転送が行われるデータブロックのデータ長を通知するものである。これにより、制御ノードが第1のノードにデータブロック送信指示命令を発行したのち、データブロック転送に先立って、前記第1のノードが前記第2のノードに対して、転送が行われるデータブロックのデータ長を通知することにより、制御機器がそれぞれのデータ長を知らなくともデータ転送制御が行えるため、制御機器の転送処理の簡略化が可能である。
【0027】
また、本発明の第5の発明は、第1のノードからM個(Mは自然数)のノードに対して同一のデータを転送するにあたり、制御ノードは、前記第1のノードに対して、同一のデータブロックの送信指示命令を、データブロックを受信するノードの識別子を変化させながらM回発行し、これらの処理を前記データブロックの数N回(Nは自然数)繰り返す制御を行うものである。これにより、制御ノードが第1のノードに対して、同一のデータブロックの送信指示命令を、データブロックを受信するノードの識別子を変化させながらM回発行し、これらの処理を前記データブロックの数N回(Nは自然数)繰り返す制御を行うことにより、1台から複数台の機器にほぼ同時に同一のデータを配送するシステムを容易に実現可能とする。
【0028】
また、本発明の第6の発明は、前記制御ノードが前記第1のノードに対してデータブロック送信指示命令を発行する際に、その次に発行する予定のデータブロック送信指示命令が、(a)同一のデータブロックを指示するのか、(b)その次のデータブロックを指示するのか、のどちらであるかをあらわすフラグを含むものである。これにより、制御ノードが前記第1のノードに対してデータブロック送信指示命令を発行する際に、その次に発行する予定のデータブロック送信指示命令が、(a)同一のデータブロックを指示するのか、(b)その次のデータブロックを指示するのか、のどちらであるかをあらわすフラグを含むことにより、第1のノードが同じデータブロックを保持した状態でとどまるのか、次のデータブロックを準備する必要があるのかをあらかじめ検出できるため、第1のノードにおける内部処理の効率化が可能である。
【0029】
また、本発明の第7の発明は、1回のデータブロック転送が終了した後、第1のノードは、制御ノードに発行するデータブロック送信処理の実行結果とともに次に転送すべきデータブロックが最後のデータブロックであることを通知するものである。これにより、1回のデータブロック転送が終了した後、第1のノードは、制御ノードに発行するデータブロック送信処理の実行結果とともに次に転送すべきデータブロックが最後のデータブロックであることを通知することにより、データ転送開始時には、全データ長が不明な不定長データの転送を可能とする。
【0030】
また、本発明の第8の発明は、第1のノードから第2のノードへのデータ転送を、(1)前記第2のノードがデータ受信可能な状態を表す通知を前記第1のノードに送信する第1のステップ、(2)前記第1のノードが送信データブロックの準備が完了した時点で、前記第2のノードへデータブロックを転送する動作を行う第2のステップ、(3)前記第1のノードが前記第2のノードに前記データブロックの転送の終了を表す通知を送信する第3のステップ、の上記ステップを繰り返して実行するものである。すなわち、制御ノードから見るとデータの分割が行われない、すなわちN=1となるので、制御ノードが第1のノードおよび第2のノードへ発行するコマンドの発行数が減少するため、制御ノードの処理を簡単にすることが可能である。さらには、第1の機器が送信しようとするデータブロックの準備完了と第2の機器がデータブロック受信の準備完了をそれぞれ相手に通知することにより、さまざまな処理速度のデータ送信側の機器とデータ受信側の機器との組み合わせに容易に対応することが可能となる。
【0031】
また、本発明の第9の発明は、第1のステップでの通知に、第2のノードが第3のステップで受信可能な最大データ長を含むものであり、この情報を元に第1のノードが第2のノードが受信可能なデータブロック長を第2のノードから直接検出できるため、コマンドを発行する制御ノードが、データブロックのデータ長を管理する必要がない簡単なデータ転送が可能となる。
【0032】
また、本発明の第10の発明は、第2のステップでのデータブロック転送が、1個以上のパケットに分割されて転送される場合に、第1のステップでの応答は、第2のノードが1個のパケットで受信可能な最大データ長を含むものであり、この情報を元に第1のノードが第2のステップで転送するデータを、第2のノードの受信能力に応じた最適なパケット分割を容易に行えるため、さまざまなパケット受信能力を持つ機器に容易に対応することが可能となる。
【0033】
また、本発明の第11の発明は、第1のステップでの応答に含まれる、第2のノードが第2のステップで受信可能な最大データ長を、第2のノードの内部処理状況に応じて可変の値を返すことにより、第2のノードのメモリなどの内部資源の最適な管理・活用が可能となる。
また、本発明の第12の発明は、第3のステップのデータブロック長の通知が終了した後、所定時間aを経過した後に、第1のノードが第2のノードからの通知を受信しなかったときは、前記第1のノードはデータ転送を中止する処理を行うものであり、または、a>bである所定時間b以内に前記第2のノードが受信可能な状態にならなかった場合に、前記第2のノードが前記第1のノードに対して、受信不可能な状態を表す通知を送信することで、前記第1のノードは前記第2のノードからの通知待ち状態に移行すると共に、所定時間aの計測をやりなおすことにより、非常に速度の遅いデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することを可能とするものである。
【0034】
また、本発明の第13の発明は、第1のステップの通知が終了した後、所定時間cを経過した後に、第2のノードが第1ノードからのデータブロックを受信しなかったときは、前記第2のノードはデータ転送を中止する処理を行うものであり、または、c>dである所定時間d以内に前記第1のノードが送信可能な状態にならなかった場合に、前記第1のノードが前記第2のノードに対して、送信不可能な状態を表す通知を送信することで、前記第2のノードは前記第1のノードからの通知待ち状態に移行すると共に、所定時間cの計測をやりなおすことにより、非常に速度の遅いデータ送信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することを可能とするものである。
【0035】
以下、本発明の実施の形態について実施例として、図面を参照し説明する。
【0036】
【実施例】
(第1の実施例)
図1は、本発明のデータ転送方法の第1の実施例であるシステムのブロック図である。図1において、1はデジタルスチルカメラなどの画像を送出する機器であるデータ送信ノード(第1のノード)、2はプリンタなど画像を受信する機器であるデータ受信ノード(第2のノード)、3はパーソナルコンピュータやセットトップボックスなどの制御ノードであり、これらの機器は同一のバスシステムに接続されている。
【0037】
本実施例ではバスシステムとしてIEEE Std 1394-1995, Standard for a High Performance Serial Bus(以下、IEEE 1394-1995と記述する)を用い、これに接続された機器間でデータ転送を行う場合を例にとって説明する。
また、4は制御ノード3がデータ受信ノード2に対して発行するデータ受信命令、5は制御ノード3がデータ送信ノード1に対して発行するデータ送信命令であり、6はデータ送信ノード1からデータ受信ノード2に転送されるデータを表している。また、7はデータ送信ノード1がデータ送信命令5の実行結果を制御ノード3に報告するものであるデータ送信命令応答、8はデータ受信ノード2がデータ受信命令4の実行結果を制御ノード3に報告するデータ受信命令応答を表している。
【0038】
ここで、これらのデータ受信命令4、データ送信命令5、データ送信命令応答7、データ受信命令応答8は、IEC-61883, Proposed standard for Digital Interface for Consumer Electronic Audio/Video Equipmentで定義されているFunction Control Protocol(以下、FCPと記述する)を用いてコマンドとレスポンスの伝送を行うものであり、AV/C Digital Interface Command Set(以下、AV/Cコマンドと記述する)の規約に従って実行される。
【0039】
図2は、前記データ送信命令5およびデータ送信命令応答7のデータフォーマットを示すものである。図2において、10はパケットヘッダ部、11はデータブロック(コマンドフレーム)部、12はCRC部であり、これらの10、11、12によりIEEE 1394-1995で定義される非同期ライトパケットを構成する。また、13は16ビットのパケット送出先ノード識別子、14はパケット送出元ノード識別子であり、これらについてもIEEE 1394-1995で定義されているものである。
【0040】
AV/Cコマンドでは、データブロック部11にノードへの命令または命令応答のデータが含まれる。ここで、データ送信命令5とデータ送信命令応答7は、共通のデータ形式を有するもので、データ送信ノード1はデータ送信命令5を受信し、処理を実行した後で、先に受け取っていたデータブロック送信命令5の特定フィールドの値を必要に応じて書き換えた後、このパケットをデータ送信命令応答7として制御ノード3に転送する処理を行うものである。
【0041】
ここで、15はデータ送信指示コマンド、16はデータブロック再送要求ビット、17はエラーコード格納領域、18は最終データブロック通知ビット、19はデータ送信先ノード識別子、20はデータブロック番号、21はデータブロックデータ長をそれぞれ表している。
また、図3は、前記データ受信命令4およびデータ受信命令応答8のデータフォーマットを示すものである。図3の構成要素は、図2のデータ形式と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図3において、22はデータブロック受信を指示するデータブロック受信コマンドコード、23はデータ送信元ノード識別子である。
【0042】
以下、制御ノード3の制御のもとでデータをデータ送信ノード1からデータ受信ノード2に転送する際の動作について説明する。なお、本実施例では、一枚の静止画データを複数のデータブロックに分割して、それぞれを順次転送する場合を例にとって説明する。
図4は、静止画データの分割方法を表すものである。図4において、24は送信ノード1の内部に記憶されている、容量が150kBの静止画データであり、この静止画データ24は最大容量が32kBである5個のデータブロックに分割される。図4において、25は0番のデータブロック、26は1番のデータブロック、27は2番のデータブロック、28は3番のデータブロックであり、これらデータブロック25〜28のデータ長は、32kBである。また、29は最後のデータブロックに相当する4番のデータブロックであり、データブロック29のデータ長は22kBとなる。
【0043】
次に、図1を用いて、0番のデータブロック25を送信ノード1から受信ノード2に転送する処理を例にとってその動作を説明する。
まず、制御ノード3は受信ノード2に対して、図3のパケット形式を持つ、データ受信命令4を発行する。このときに発行されるパケットの各データフィールドの値を(表1)に示す。ここでは、データブロック番号20に0を設定し、0番データブロック25の転送を命令していることを表しており、そのデータブロックデータ長21は32kBと設定されている。また、エラーコード格納領域17については、データ受信ノード2が制御ノード3にデータ受信命令応答8を発行するときに、このフィールドに発生したエラーを表すエラーコードを設定するために設けられている。したがって、データ受信命令4においては、このフィールドの値が無効であることを表す、16進数のFFが格納される。
【0044】
【表1】
【0045】
データ受信命令4を受信したデータ受信ノード2は、制御ノード3に対してデータ受信命令4の発行が成功したことを通知した後、データ送信ノード1からのデータ送信待ち状態になる。
次に、制御ノード3は、データ受信命令4の発行が成功したことを確認した後、データ送信ノード1に対して、図2のパケット形式を持つ、データ送信命令5を発行する。このときに発行されるパケットの各データフィールドの値を(表2)に示す。ここでデータ受信命令4と同様の意味を持つフィールドについては説明を省略する。
【0046】
【表2】
【0047】
ここで、データブロック再送要求ビット16は0に設定されており、このデータブロックの転送が正常終了したら、次のデータブロック(この場合は1番のデータブロック26)の転送が行われる予定であることを表している。また、最終データブロック通知ビット18は、指示されたデータブロックの転送が終了した後、データ送信ノード1が制御ノード3にデータ送信命令応答8を発行するときに、次の処理で転送する予定のデータブロックが最後のデータブロックであったときに1にセットされ、そうでなければ0にセットされるものであるので、データ送信命令5においては、このフィールドの値が無効であることを表すため、ビットを1にセットしておく。
【0048】
データ送信命令5を受信したデータ送信ノード1は、制御ノード3に対してデータ送信命令5の発行が成功したことを通知した後、データ受信ノード2に対して、0番データブロック25の転送を開始する。
ここでのデータブロックの転送は、連続して発行される1個以上の、IEEE 1394-1995の非同期ライトパケットに分割されて送信される。
【0049】
なお、IEEE 1394-1995では、非同期ライトパケットに対して、ACKパケットが受信側から返されるので、非同期ライトパケットが受信側に正しく送信できたかどうかを送信側が確認することが可能であり、正しく送信できていなかった場合には、前記パケットの再送処理を行うことが可能である。
さらに、IEEE 1394-1995の非同期ライトパケットは、パケット送信ノードのノード識別子をそのパケットヘッダ部に含むので、ここでデータ受信ノード2に対して、データ送信ノード1以外の他のノードからのデータ転送が行われても、データ受信ノード2はこれらのデータを無視する処理を行う。
【0050】
また、これらの非同期ライトパケットには、受信ノード2のアドレス空間に含まれるデータ受信バッファ領域を指し示すオフセットアドレスを含む。
このデータ受信バッファ領域の先頭アドレスは、これらの処理に先立って発行されるAV/Cコマンドにより取得され、データ送信ノード1にあらかじめ通知されているものとする。ここで送信される1つ以上の非同期ライトパケットの最初のパケットに含まれるオフセットアドレスは、前記データ受信バッファ領域の先頭アドレスであり、その次のパケットに含まれるオフセットアドレスは、前記データ受信バッファ領域の先頭アドレスに、最初のデータパケットのデータ長を加えたアドレスに設定される。
【0051】
このように、1個のデータブロックは、データ受信ノード2のデータ受信バッファ領域の先頭から順にアドレスを増加させていった形のオフセットアドレスを含むものであり、パケットの再送とは、同一のオフセットアドレスを持つパケットを複数回送信することで実現することができる。
次に、0番のデータブロック25の転送を成功裏に終了したデータ送信ノード1は、すでに受信しているデータ送信命令5のデータブロック再送要求ビット16が0に設定されていたことを確認し、次回に要求されるデータブロックは、0番のデータブロック25の、次のデータブロックにあたる、1番のデータブロック26であることを認識する。そこで1番のデータブロック26のデータブロックデータ長が32kBであり、これが最後のデータブロックではないことも認識する。
【0052】
そこで、データ送信ノード1はこれらの情報を含む、データ送信命令応答7を制御ノード3に対して発行する。
ここで、データ送信命令応答は、図2のパケット形式からなり、その主要なデータフィールドの値を(表3)に示す。これらの値の内容については、基本的には(表2)の値がそのまま返されるが、パケット送信ノード識別子とパケット受信ノード識別子が入れ替わっており、データ送信ノード1から制御ノード3へのパケットであることを表している。また、データ転送中にエラーが発生していなかったので、エラーコード格納領域17にはエラーなしのコードが設定されている。また、次に送るべきデータブロックは、32kBのデータブロック長を持つ、1番データブロック26であるので、データブロック番号20には1が、データブロックデータ長21には32kBがそれぞれ設定されている。
【0053】
【表3】
【0054】
一方で、0番のデータブロック25を成功裏に受信完了したデータ受信ノード2は、受信した0番のデータブロック25の処理を開始する。たとえば、データ受信ノード2がプリンタ機器であった場合は、受信ブロックデータを内部のプリンタエンジンに転送し、印刷処理を開始する。
0番のデータブロック25の処理を完了した時点で、データ受信ノード2はデータ受信命令応答87を制御ノード3に対して発行する。
【0055】
ここで、データ受信命令応答8は図3のパケット形式からなり、その主要なデータフィールドの値を(表4)に示す。これらの値の内容については、基本的には(表1)の値がそのまま返されるが、パケット送信ノード識別子とパケット受信ノード識別子が入れ替わっており、データ受信ノード2から制御ノード3へのパケットであることを表している。また、データ転送中にエラーが発生していなかったので、エラーコード格納領域17にはエラーなしのコードが設定されている。
【0056】
【表4】
【0057】
なお、データ送信ノード1から制御ノード3に返されるデータ送信命令応答7と、データ受信ノード2から制御ノード3に返されるデータ受信命令応答8は、どちらが先に発行されるかは、データ送信ノード1とデータ受信ノード2の処理速度に応じて変化するため、制御ノード3は、これら2つのノードからの応答を待つ必要がある。
【0058】
制御ノード3が、双方のノードから応答を受信した時点で、0番のデータブロック25の転送が完了する。
次に、制御ノード3は、次のデータブロックである、1番データブロック26の転送処理を開始するが、先にデータ送信ノード1から受信しているデータ送信命令応答7のデータブロック番号20に、次に送るべきデータブロック番号である1が、データブロックデータ長21には1番データブロック26のデータブロックデータ長である32kBの値がそれぞれ格納されているので、これらの値を用いて、1番データブロック26の転送処理を開始することができる。
【0059】
このように、毎回データ送信ノード1に対して次のデータブロックの長さを確認する必要がないので、制御ノード3がデータ転送処理を簡単に行うことができる。
次に、図1を用いて、データブロックの転送中に、データ受信ノード2でエラーが発生した場合の処理について説明する。ここでは、プリンタ機器であるデータ受信ノード2で紙詰まりが発生した場合を例として説明する。
【0060】
0番データブロック25を転送中に、データ受信ノード2で紙詰まりが発生したため、データ受信ノード2がデータの受信を継続できなくなったと判断した。
すると、データ受信ノード2は、制御ノード3に対して、エラーが発生したことを通知するデータ受信命令応答8を発行する。そのパケット形式は図3の形式をとるが、エラーコード格納領域17に紙詰まりエラーのエラーコードが設定される。
【0061】
一方、データ送信ノード1は、突然データ受信ノード2がデータ受信を行わなくなったことを検出し、データブロックの送信を中止して、制御ノード3に対して、エラーが発生したことを通知するデータ送信命令応答7を発行する。そのパケット形式は図2の形式をとり、図2の各データフィールドに設定される値を(表5)に示す。
【0062】
【表5】
【0063】
エラーコード格納領域17には、伝送タイムアウトエラーのエラーコードが設定される。さらに、エラーが発生したため0番データブロック25の転送が失敗したため、図2のデータブロック番号20のフィールドには0が、データブロックデータ長21のフィールドには32kBがそれぞれ設定され、次の転送は0番データブロック25を行うよう、制御ノード3に要求していることを意味している。
【0064】
そこで、制御ノード3が、データ受信ノード2での紙詰まりエラーの解除を検出したあと、先にデータ送信ノード1から送られたデータブロック番号20とデータブロックデータ長21の値を用いて転送を再開する。
このように、データの送受信を行っているノードで何らかのエラーが発生した場合でも、これらのエラーの通知は、直接制御ノード3に発行される。
【0065】
また、エラーが発生したときに、データ送信ノード1がエラーの発生したデータブロックの番号とそのデータブロックデータ長を制御ノード3に通知するため、制御ノード3はこれらの情報を元にデータブロックの転送のやり直しを簡単な処理で行うことができる。
以上説明した手順を繰り返すことで、データブロックをデータ送信ノード1からデータ受信ノード2に順次転送していく。
【0066】
次に、データ転送の終了時の動作について説明する。
データ送信ノード1が、3番のデータブロック28の送信を成功裏に終了した時点で、データ送信ノード1は、すでに受信しているデータ送信命令5のデータブロック再送要求ビット16が0に設定されていたことを確認し、次回に要求されるデータブロックは、3番のデータブロック28の、次のデータブロックにあたる、4番のデータブロック29であることを認識する。さらに、4番のデータブロック29のデータブロックデータ長が22kBであり、これが最後のデータブロックであることも認識する。
【0067】
そこで、データ送信ノード1は、これらの情報を含む、データ送信命令応答7を制御ノード3に対して発行する。
ここで、データ送信命令応答は、図2のパケット形式からなり、その主要なデータフィールドの値を(表6)に示す。これらの値の内容については、基本的には(表2)の値がそのまま返されるが、次に送るべきデータブロックは、22kBのデータブロック長を持つ、4番データブロック29であるので、データブロック番号20には4が、データブロックデータ長21には22kBがそれぞれ設定されている。さらに、次に転送する予定のデータブロックである、4番のデータブロック29は最後のデータブロックであるので、最終データブロック通知ビット18が1にセットされる。
【0068】
【表6】
【0069】
前記データ送信命令応答7を受信した制御ノード3は、次のデータブロックの転送が最後の転送処理であることを、最終データブロック通知ビット18のビットが1にセットされていることから検出し、次の4番のデータブロック29の転送処理を行った後、全体の処理を終了する。
ここで、制御ノード3は、全体のデータ転送の回数を意識することなく、データ送信ノード1から発行されるデータ送信命令応答7の最終データブロック通知ビット18が0であれば次々とデータブロック転送処理を行い、1であればその次のデータブロック転送処理で処理を終了すれば良いため、制御ノード3があらかじめデータブロックの数を計算しておく必要がないため、制御処理が非常に簡単である。さらには、データの転送開始時にはそのデータ長がわからないような不定長データの転送も容易に実現可能である。
【0070】
(第2の実施例)
次に、本発明の第2の実施例について説明する。図5は本発明のデータ転送方法の第2の実施例であるシステムのブロック図である。なお、本実施例は、図1に示した第1の実施例と基本的には同等であるので、システムの構成要素およびその動作に関する詳細な説明は省略する。
【0071】
図5に示した第2の実施例が、先に説明した第1の実施例と異なる点は、制御ノード3がデータ送信ノード1と同一のノードである点である。
図5においては、図1で図示されていた、データ送信命令5およびデータ送信命令応答7については、内部的に処理されるため、バス上にこれらのパケットデータは送信されない。
【0072】
一方で、データ受信ノード2に対して発行されるデータ受信命令4は、図3で説明した第1の実施例の場合のパケット形式とまったく同じ形式をとる。ここで第1の実施例と本実施例の相違点は、パケット送出元ノード識別子13の値とデータ送信元ノード識別子23の値が同じ値となる点のみである。
この点を除けば、この第2の実施例の動作およびデータ受信ノード2の制御方法に関しては、先に説明した第1の実施例とまったく同じ処理でデータ転送処理を行うことが可能である。
【0073】
(第3の実施例)
次に、本発明の第3の実施例について説明する。図6は本発明のデータ転送方法の第3の実施例であるシステムのブロック図である。なお、本実施例は、図1に示した第1の実施例と基本的には同等であるので、システムの構成要素およびその動作に関する詳細な説明は省略する。
【0074】
図6に示した第3の実施例が、先に説明した第1の実施例と異なる点は、制御ノード3がデータ受信ノード2と同一のノードである点である。
図6においては、図1で図示されていた、データ受信命令4およびデータ受信命令応答8については、内部的に処理されるため、バス上にこれらのパケットデータは送信されない。
【0075】
一方で、データ送信ノード1に対して発行されるデータ受信命令5は、図2で説明した第1の実施例の場合のパケット形式とまったく同じ形式をとる。ここで第1の実施例と本実施例の相違点は、パケット送出先ノード識別子13の値とデータ送信先ノード識別子19の値が同じ値となる点のみである。
この点を除けば、この第3の実施例の動作およびデータ送信ノード1の制御方法に関しては、先に説明した第1の実施例とまったく同じ処理でデータ転送処理を行うことが可能である。
【0076】
以上、本発明の第1〜第3の実施例を比較することで、制御ノード3の制御の元で、データ送信ノード1からデータ送信ノード2へデータを転送するデータ転送方法を定義することで、様々なシステム構成に柔軟に対応可能で、かつ処理効率の良いシステムを構築することが可能となることがわかる。
(第4の実施例)
次に、本発明の第4の実施例について説明する。図7は、本発明の第4の実施例を説明するブロック図であり、1つのデータを複数のノードに並列に転送するシステムを表している。図7において、1はデータ送信ノード、3は制御ノード、5はデータ送信命令、7はデータ送信命令応答、200は第1のデータ受信ノード、201は第2のデータ受信ノード、202は第3のデータ受信ノードである。また、300は第1のデータ受信ノードに転送されるデータブロック、301は第2のデータ受信ノードに転送されるデータブロック、302は第3のデータ受信ノードに転送されるデータブロックである。
【0077】
次に、図7を用いて、本発明の第4の実施例の動作について説明する。なお、図7では説明を簡単にするために、制御ノード3からデータ受信ノードに発行されるデータ受信指示命令およびデータ受信ノードから制御ノード3に発行されるデータ受信指示命令応答を省略している。
ここでは、データ送信ノード1に存在する3番のデータブロック28を200から202までの3つのデータ受信ノードへ転送する処理を表している。
【0078】
まず、制御ノード3はデータ送信ノード1に3番目のデータブロックを第1のデータ受信ノード200に送信するデータ送信命令5を発行する。第1のデータ受信ノード200へのデータブロックの転送が完了したら、次に制御ノード3は送信ノード1に同じ3番目のデータブロックを第2のデータ受信ノード201に送信するデータ送信命令5を発行する。第2のデータ受信ノード201へのデータブロックの転送が完了したら、最後に制御ノード3は送信ノード1に同じ3番目のデータブロックを第3のデータ受信ノード202に送信するデータ送信命令5を発行する。第3のデータ受信ノード202へのデータブロックの転送が完了したら、次は第4のデータブロックについて、転送命令を順次発行する処理を行う。
【0079】
このような制御ノード3の動作により、単一のデータを並列に複数のデータ受信ノードに転送することが可能であり、データ送信ノード1がテープ機器のような、送信用データブロックを準備するのに長い時間がかかる機器や、データ転送速度の遅い機器である場合には、データブロックを準備する回数が直列処理を行う場合に比べて少なくなるため、トータルの処理時間が少なくなるという利点がある。
【0080】
また、図7で制御ノード3がデータ送信ノード1に発行するデータ送信命令のパケットのデータフィールドの値を(表7)に示す。(表7)には第1のデータ受信ノード200へのデータ送信命令と、第2のデータ受信ノード201へのデータ送信命令と、第3のデータ受信ノード202へのデータ送信命令のそれぞれのデータフィールドの値を説明している。ここでデータブロック再送要求ビット16の値が第1のデータ送信命令と第2のデータ送信命令では1にセットされており、第3のデータ送信命令では0が設定されている。(表8)にこれらのデータ送信命令に対するデータ送信指示命令応答のパケットのデータフィールドの値を示す。(表8)において、データブロック再送要求ビット16が1の状態でデータ送信指示命令が発行されていたため、第1のデータ受信ノードおよび第2のデータ受信ノードの場合はデータブロック番号は命令と同じ3が返っており、データブロックデータ長は32kBが返っている。一方、第3のデータ受信ノードではデータブロック再送要求ビット16が0の状態でデータ送信指示命令が発行されていたため、データブロック番号は4が返っており、データブロックデータ長は22kBが返っている。また、最終データブロック通知ビットに1がセットされ、次が最後のデータブロックであることを示している。
【0081】
【表7】
【0082】
【表8】
【0083】
ここで、データ送信ノード1は、データブロック再送要求ビット16に1がセットされているときは、次のデータブロックの転送準備を行わず、直前に転送したデータブロックを保持し、データブロック再送要求ビット16に0がセットされているときは、次のデータブロックの転送準備を行う動作をする。
すなわち、データブロック再送要求ビット16を設けることにより、本実施例のように同一のデータを複数のデータ受信ノードに送信する時にもデータ送信ノードの処理を簡単かつ高速に行うことができる。
【0084】
(第5の実施例)
次に、本発明の第5の実施例について説明する。図8は、本発明の第5の実施例の動作を説明する図であり、1つのデータを転送する際に、データブロックの分割を行わないシステムの動作を表している。ここでは、図4に示すような、容量が150KBの一枚の静止画データを転送する場合を例にとって説明する。本実施例では、データ送信ノード1とデータ受信ノード2との間でデータブロックへの分割処理が行われるものであり、制御ノード3はデータブロックへの分割に関与しない。なお、本実施例のシステム構成要素は、基本的には図1で説明したものと同一であるので、その説明を省略する。以下、図8を用いて本発明の第5の実施例の動作を説明する。
【0085】
まず、制御ノード3は、送信ノード1に対してデータ送信命令5を発行することで、データ送信処理の準備を指示する。次に制御ノード3は、データ受信ノード2に対してデータ受信命令4を発行することで、データ送信処理の開始を指示する。ここでデータ送信ノード1からデータ送信ノード2へのデータ転送処理6が実行され、一枚の静止画データが転送される。なお、データ転送処理6の詳細については後述する。
【0086】
データ転送処理6を終了した送信ノード1は、データの転送処理の実行結果を含む、データ送信命令応答7を制御ノード3に送信する。また、データ転送処理6を終了した受信ノード2は、データ転送処理の実行結果を含む、データ受信命令応答8を制御ノードに転送する。以上の手順により1枚の静止画データが転送される。
【0087】
なお、データ送信命令応答7およびデータ受信命令応答8のどちらが先に発行されるかは、データ送信ノード1の処理速度とデータ受信ノード2の処理速度とのバランスにより決定されるものであり、本実施例とその順番が入れ替わることもありうる。
図9は、本実施例のデータ送信命令5およびデータ送信命令応答7のデータフォーマットを示すものである。図9の構成要素は、図2に示した本発明の第1の実施例と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図9において、10はパケットヘッダ部、11はデータブロック(コマンドフレーム)部、12はCRC部である。また、13は16ビットのパケット送出先ノード識別子、14はパケット送出先ノード識別子であり、これらにより、IEEE 1394-1995の非同期ライトパケットを構成する。
【0088】
また、15はデータ送信指示コマンド、17はエラーコード格納領域、19はデータ送信先ノード識別子をそれぞれ表しているものである。
ここで、図9の本実施例のデータ送信命令と、図2の第1の実施例のデータ送信命令とを比較すると、データブロック再送要求ビット16、最終データブロック通知ビット18、データブロック番号20、データブロックデータ長21の情報を含んでおらず、より簡単なフォーマットになっていることがわかる。
【0089】
また、図10は、本実施例の前記データ受信命令4およびデータ受信命令応答8のデータフォーマットを示すものである。図10の構成要素は、図3のデータ形式と共通部分が多いので、同様の意味を持つデータフィールドの説明は省略する。図10において、22はデータブロック受信を指示するデータブロック受信コマンドコード、23はデータ送信元ノード識別子である。
【0090】
ここで、図10の本実施例のデータ受信指示命令と、図3の第1の実施例のデータ受信指示命令を比較すると、データブロック番号20およびデータブロックデータ長21の情報を含んでおらず、より簡単なフォーマットになっていることがわかる。
次に、本実施例のデータ転送処理の詳細を説明する。図11は、本発明の第5の実施例のデータ転送処理の動作の一部を表す図であり、図8のデータ転送処理6の先頭部分の処理内容を説明するものである。
【0091】
なお、本実施例のデータ受信ノード2は、受信用のデータバッファを内蔵しており、その容量は256kバイトであるとする。また、データ受信ノード2が受信可能な、IEEE 1394-1995の非同期ライトパケットの最大データ長は256バイトであり、データ送信ノード1が送信可能な、IEEE 1394-1995の非同期ライトパケットの最大データ長は32kバイトであるとする。
【0092】
また、本実施例では、データ受信ノード2からデータ送信ノード1への通知およびデータ受信ノード1からデータ送信ノード2への通知を行うにあたり、32ビット長のデータを含む、IEEE 1394-1995の非同期ライトパケットを発行する。
データ受信ノード2からデータ送信ノード1への通知に用いられるのパケットの32ビットのデータの形式は、以下の(表9)の通りである。
【0093】
【表9】
【0094】
ここで、「状態フィールド」に設定される値とその意味は以下の(表10)の通りである。
【0095】
【表10】
【0096】
データ送信ノード1からデータ受信ノード2への通知に用いられるのパケットの32ビットのデータの形式は、以下の(表11)の通りである。
【0097】
【表11】
【0098】
ここで、「状態フィールド」に設定される値とその意味は以下の(表12)の通りである。
【0099】
【表12】
【0100】
ここで、図11を用いて本実施例のデータ転送処理の動作について説明する。図11において、まず、Aに示すように、制御ノード3からのデータ送信指示命令を受信したデータ送信ノード1は、送信しようとするデータブロックの準備を開始する。また一方で、Bに示すように、制御ノード3からのデータ受信指示命令を受信したデータ受信ノード2は、データ送信ノード1からのデータ受信の準備を行う。
【0101】
次に、ステップ1に示すとおり、データ受信ノード2は、データ受信の準備が完了した時点で、データ送信ノード1に対してデータ受信ノード2が受信可能なデータのサイズを通知する。
ここで、ステップ1で送信されるパケットの値は、以下の通りである。
【0102】
【表13】
【0103】
次に、ステップ1の通知をデータ受信ノード2から受け取ったデータ送信ノード1は、送信データブロックの準備が完了した(図11中のC)後に、ステップ2に示すとおりデータブロック転送を開始する。ここで、データ送信ノード1は、データ受信ノード2が受信可能なデータブロックデータ長が64Kバイトであることから、転送を行うデータブロックデータ長をこの値以下に設定する。この場合には、データ送信ノード1が送信可能な最大データパケットのデータ長が32KBであり、データ送信ノード2は1回のデータブロック転送で32Kバイトを転送しようとしていることになる。
【0104】
次に、ステップ3に示すように、データ送信ノード1はデータ受信ノード2のバッファ領域に対する非同期ライトパケットを連続して送信することで、データブロック転送を開始する。
このステップ3において、データブロックは複数のパケットに分割して送信される。ここでデータ送信ノード1は、先のステップ1での通知から、データ受信ノード2は、最大パケットのデータ長が256バイトであることがあらかじめ分かっているので、32Kバイトのデータブロックをそれぞれ256バイトのパケットに分割する。すなわち本実施例では128個のパケットが送信される。
【0105】
また、これらの非同期ライトパケットには、データ受信ノード2のアドレス空間に含まれるデータ受信バッファ領域を指し示すオフセットアドレスを含み、これらのオフセットアドレスは、データ受信バッファ領域の先頭アドレスから、順にインクリメントされるものであることは、第1の実施例と同様である。
次に、データブロック転送が終了したら、ステップ3に示すとおり、データ送信ノード1は、転送したデータ長を含むパケットを送信することで、データブロック転送の終了をデータ受信ノード2に通知する。
【0106】
この時のパケットに含まれる情報は以下の通りである。
【0107】
【表14】
【0108】
ステップ3の通知が終了したら、データ送信ノード1は、Dに示すように、次のデータブロック転送に備えた準備を開始する。一方、データ受信ノード2は、Eに示すように、先ほど受信したデータブロックの処理を開始する。本実施例ではデータ受信ノード2はプリンタユニットであるので、図示しないバッファ領域に格納されたデータブロックを、プリンタ印写エンジンに送出する処理を開始する。
【0109】
次に、データ受信ノード2がデータブロックの処理を終了した段階で、ステップ1aに示すように、次のデータブロックを受信する準備ができたことを通知する。なお、ここでの通知においては、ステップ1と同様のパケットが送信される。
また、Fに示すように、次のデータブロックの準備が完了した段階で、データ送信ノード1はステップ2aに示すように、次のデータブロックのデータブロックの転送を開始する。
【0110】
ここで、再びデータブロックが複数のパケットに分割され送信されるが、これらのパケットに含まれる受信ノード2のオフセットアドレスもまた、前回のデータブロック転送と同様に、データ受信バッファ領域の先頭アドレスから順にインクリメントされるものである。
このように、以上説明したステップ1からステップ3の動作を繰り返すことで、1枚の静止画データが複数のデータブロックに分割されて転送される。
【0111】
次に、最後のデータブロックの処理を説明する。図12は、最後のデータブロックの転送処理が終わった後の終了動作を説明する図である。
ステップ3のデータブロックの転送が終了した後、データ送信ノード1は次のデータブロックの準備を始めるが、Gで表されるように、送信するデータがないことがわかる。
【0112】
次に、データ受信ノード2は、ステップ1の通り受信可能サイズの通知を送信してくるので、これに応答してステップ3bで、データ送信ノード1は、転送終了指示を送信する。
この時のパケットに含まれる情報は以下の通りである。
【0113】
【表15】
【0114】
次に、ステップ3bの通知を受けたデータ受信ノード2は、ステップ1bに示されるように、転送終了の受領の通知を送信する。
このときのパケットに含まれる情報は以下のとおりである。
【0115】
【表16】
【0116】
そこで、Hに示されるように、ステップ1bの通知を受信したデータ送信ノード1は、制御ノード3に対してデータ送信指示命令の応答を通知することで、1枚の画像の送信処理を終了する。なおこのHは、図8のデータ送信命令応答7に相当する。
また、Iに示されるように、ステップ1bの通知を送信したデータ受信ノード2は、制御ノード3に対してデータ受信指示命令の応答を通知することで、一枚の画像の受信処理を終了する。なおこのIは、図8のデータ受信命令応答8に相当する。
【0117】
このように、データ送信ノード1からデータ受信ノード2へのデータ転送を、(1)前記第2のノードがデータ受信可能な状態を表す通知を前記第1のノードに送信する第1のステップ、
(2)前記第1のノードが送信データブロックの準備が完了した時点で、前記第2のノードへデータブロックを転送する動作を行う第2のステップ、
(3)前記第1のノードが前記第2のノードに前記データブロックの転送の終了を表す通知を送信する第3のステップ、
の上記ステップを繰り返して実行することにより、制御ノードがデータ送信ノードおよびデータ受信ノードのそれぞれへ発行するコマンドの発行数が1個ずつで済むため、制御ノードの処理を簡単にすることが可能である。さらには、データ送信ノードが送信しようとするデータブロックの準備の完了と、データ受信ノードがデータブロック受信の準備完了をそれぞれ相手に通知することにより、さまざまな処理速度のデータ送信機器とデータ受信機器との組み合わせに容易に対応することが可能となる。
【0118】
また、第1のステップでの通知に、データ受信ノードが第2のステップで受信可能な最大データブロックデータ長を含むことにより、この情報を元にデータ送信ノードがデータ受信ノードが受信可能なデータブロック長を直接検出できるため、コマンドを発行する制御ノードが、データブロックのデータ長を管理する必要がない簡単なデータ転送が可能となる。
【0119】
また、第2のステップでのデータブロック転送が、1個以上のパケットに分割されて転送される場合に、第1のステップでの通知が、データ受信ノードが1個のパケットで受信可能な最大データ長を含むことにより、データ送信ノードが第2のステップで転送するデータを、データ受信ノードの受信能力に応じてパケット分割を容易に行えるため、さまざまなパケット受信能力を持つ機器に容易に対応することが可能となる。
【0120】
なお、本実施例では、データ受信ノード2の最大データブロックサイズおよび最大パケットデータ長が変化しない場合を例にとって説明したが、データ受信ノード2の内部処理状況に応じて、これらの値を可変とすることも可能である。
例えば、データ送信ノード1が、最大256Kバイトのデータブロックを送信するだけの能力を有しており、一方、データ受信ノード2は最大256Kバイトの最大データブロックを受信するだけの能力を有しているにもかかわらず、データ受信処理を同時に2つ処理していたため、データ送信ノード1には、128Kバイトの処理能力であるという応答を返している。この場合は、データブロックサイズが128Kバイトのデータ転送処理が行われる。
【0121】
ここで、データ受信ノード2が処理していたもう1つのデータ受信処理が完了した時点で、いままで利用できなかった128Kバイトのメモリが利用できるようになった後に、データ受信ノード2は、通知する最大データブロックサイズを128Kバイトから256Kバイトに変更する。次にデータ送信ノード1は、データ受信ノード2が256Kバイトの受信が可能になったことを検出すると、データ受信ノード2は256Kバイトのデータブロックのデータ転送処理を開始することができる。
【0122】
また、同様にデータ受信ノード2が最大パケットデータ長を変化させることにより、データ送信ノード1が、もっとも大きいデータ長を持つデータパケットを送信することにより、より効率の良いデータ転送を実現することができることは、いうまでもない。
このように、第1のステップでの通知に含まれる、第2のノードが第2のステップで受信可能な最大データ長を、第2のノードの内部処理状況に応じて可変の値を返すことにより、第2のノードのメモリなどの内部資源の最適な管理・活用が可能となる。
【0123】
次に、データ受信ノード2が非常にデータ処理速度の遅い機器であったときの動作およびデータ受信ノード2が反応不可能になった場合のエラー処理について、図13を用いて説明する。
図13において、ステップ3で表されるデータブロック長の通知が行われ、データブロックの転送が終了した後、データ受信ノード2はデータブロックの処理を開始する。これと同時に、データ送信ノード1は、内部のタイマーをスタートさせ、時間計測を開始する。データ送信ノード1は時間aを経過しても、データ受信ノード2からの応答がないときには、データ受信ノード2が、反応不可能なエラー状態になったと判断する処理を行う。
【0124】
ここでデータ受信ノード2が、a>bである、時間bが経過した後も、データの処理を完了できなかったときは、ステップ1c−1で表される受信不可能状態の通知を発行する。このステップ1c−1で送信されるパケットに含まれる情報は以下の通りである。
【0125】
【表17】
【0126】
ステップ1c−1の通知を受信したデータ送信ノード1は、タイマーの値をリセットさせ、再び時間計測を開始する。
ここで、ステップ1c−1の通知から時間bが経過するまえに、データ受信ノード2がデータ受信準備完了状態になった場合には、図11のステップ1で表される受信可能サイズの通知を行い、以降は図11の手順に従って処理を継続する。
【0127】
しかしながら、さらに時間bが経過しても、まだデータの処理が完了していないときには、ステップ1c−2に示されるような受信不可能状態の通知を発行する。なお、ここで発行されるパケットは、ステップ1c−1と同等のものである。
ここで再びデータ送信ノード1は、タイマーをリセットして、時間計測をやり直す。
【0128】
ここで、Jに示すような、ステップ1c−2の通知を行った後、データ受信ノード2が反応不可能になるような致命的エラーが発生した場合には、データ送信ノード1はステップ1c−2の通知から時間aが経過した後、データ受信ノード2が反応不可能な状況になったことを検出し、Kに示すように、制御ノード3に送信処理が失敗したことを通知し、データ転送処理が中止される。
【0129】
Kの通知を受け取った制御ノード3は、データ受信ノード2の状態を調査し、必要なエラー状態を取得する。また、制御ノード3がデータ受信ノード2の状態を調査しようとしても、データ受信ノード2が、やはり反応しないような場合には、ユーザに対してデータ受信ノード2が無反応状態のエラーになったことを通知するなどの処理を行う。
【0130】
なお、図には示していないが、Jの段階で、データ受信ノード2がエラー発生を検出し、かつデータ送信ノード1への応答が可能であったときには、以下に示すようなパケットを送信することで、データ転送を中断することも可能である。
【0131】
【表18】
【0132】
このような場合には、データ送信ノード1とデータ受信ノード2の両方が、制御ノード3に対して、エラーの発生を通知する処理を行う。
以上説明したように、第3のステップのデータブロック長の通知が終了した後、所定時間aを経過した後に、第1のノードが第2のノードからの通知を受信しなかったときは、前記第1のノードはデータ転送を中止する処理を行うものであり、または、a>bである所定時間b以内に前記第2のノードが受信可能な状態にならなかった場合に、前記第2のノードが前記第1のノードに対して、受信不可能な状態を表す通知を送信することで、前記第1のノードは前記第2のノードからの通知待ち状態に移行すると共に、所定時間aの計測をやりなおすことにより、非常に速度の遅いデータ受信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能となる。
【0133】
次に、データ送信ノード1が非常にデータ処理速度の遅い機器であったときの動作およびデータ送信ノード1が反応不可能になった場合のエラー処理について、図14を用いて説明する。
図14において、ステップ3で表されるデータ転送長の通知が終了した後、データ受信ノード2は、受信したデータブロックの処理を行い、ステップ1に示されるとおり、受信可能サイズの通知および受信準備完了の通知を行う。
【0134】
一方、データ送信ノード1はステップ3のデータブロックの転送が終了した後、次のデータブロックの準備を開始する。ステップ1の通知を受信したと同時に、データ送信ノード1は、内部のタイマーをスタートさせ、時間計測を開始する。データ受信ノード2は時間cを経過しても、データ送信ノード1からの応答がないときには、データ送信ノード1が、反応不可能なエラー状態になったと判断する処理を行う。
【0135】
ここでデータ送信ノード1が、c>dである、時間dが経過した後も、データの準備を完了できなかったときは、ステップ2c−1で表される送信不可能状態の通知を発行する。このステップ2c−1で送信されるパケットに含まれる情報は以下のとおりである。
【0136】
【表19】
【0137】
ステップ2c−1の通知を受信したデータ受信ノード2は、タイマーの値をリセットさせ、再び時間計測を開始する。
ここで、ステップ2c−1の通知から時間dが経過する前に、データ送信ノード1がデータ送信準備完了状態になった場合には、図11のステップ2で表される転送データ長の通知を行い、以降は図11の手順に従って処理を継続する。
【0138】
しかしながら、さらに時間dが経過しても、まだデータの準備が完了していないときには、ステップ2c−2に示されるような送信不可能状態の通知を発行する。なお、ここで発行されるパケットは、ステップ2c−1と同等のものである。
ここで再びデータ受信ノード2は、タイマーをリセットして、時間計測をやり直す。
【0139】
ここで、Lに示すような、ステップ2c−2の通知を行った後、データ送信ノード1が反応不可能になるような致命的エラーが発生した場合には、データ受信ノード2はステップ2c−2の通知から時間cが経過した後、データ送信ノード1が反応不可能な状況になったことを検出し、Mに示すように、制御ノード3に受信処理が失敗したことを通知し、データ転送処理が中止される。
【0140】
Mの通知を受け取った制御ノード3は、データ送信ノード1の状態を調査し、必要なエラー状態を取得する。また、制御ノード3がデータ送信ノード1の状態を調査しようとしても、データ送信ノード1が、やはり反応しないような場合には、ユーザに対してデータ送信ノード1が無反応状態のエラーになったことを通知するなどの処理を行う。
【0141】
なお、図には示していないが、Lの段階で、データ送信ノード1がエラー発生を検出し、かつデータ受信ノード2への応答が可能であったときには、以下に示すようなパケットを送信することで、データ転送を中断することも可能である。
【0142】
【表20】
【0143】
このような場合には、データ送信ノード1とデータ受信ノード2の両方が、制御ノード3に対して、エラーの発生を通知する処理を行う。
以上説明したように、第1のステップの通知が終了した後、所定時間cを経過した後に、第2のノードが第1ノードからの通知を受信しなかったときは、前記第2のノードはデータ転送を中止する処理を行うものであり、または、c>dである所定時間d以内に前記第1のノードが送信可能な状態にならなかった場合に、前記第1のノードが前記第1のノードに対して、送信不可能な状態を表す通知を送信することで、前記第2のノードは前記第1のノードからの通知待ち状態に移行すると共に、所定時間cの計測をやりなおすことにより、非常に速度の遅いデータ送信側の機器を用いた場合でも、エラー状況と機器の処理待ち状態が正確に区別することが可能となる。
【0144】
なお、以上の実施例では、AV/Cコマンドを用いて命令および応答の伝送を行う場合を例にとって説明したが、これ以外のコマンド伝送方式を用いても良い。
また、ノードが接続されるバスとして、IEEE 1394-1995を用いた場合を例にとって説明したが、これに限定されるものではなく、複数の機器が同時に接続可能なバスであれば良い。
【0145】
また、データブロックデータ長が、最後のデータブロックを除いて同じになる場合を例にとって説明したが、必ずしもこれに限定されるものではなく、たとえばすべてのデータブロックのデータ長が異なっても良い。このような場合は、送信されるデータブロックのデータ長は、第1のステップで送信される受信可能サイズ以下に設定され、これを超えるデータパケットは、データ受信ノード2によって無視または拒絶される。
【0146】
また、制御ノードが、データ送受信を行うノードと独立して存在する場合と、データ送信ノードに含まれる場合と、データ受信ノードに含まれる場合について説明したが、実際のシステム構成では、独立した制御ノードと、制御ノードを含むデータ送信ノードと、制御ノードを含むデータ受信ノードの3つの機器でシステムを構成することも可能である。このような場合では、ユーザがボタンを操作するなどのオペレーションを行った機器が制御ノードの機能を果たす。
【0147】
また、データ送信ノードとデータ受信ノードは、必ずしもそれぞれがデータの送信と受信という固定された機能を持つことを表しているのではなく、制御ノードにより発行されるコマンドの種類によって、あるノードがデータ送信ノードになったり、データ受信ノードになったりする構成も可能である。たとえば2台のデジタルスチルカメラを接続し、相互にデータを交換するようなシステムが実現可能可能であることはいうまでもない。
【0148】
【発明の効果】
本発明のデータ転送方法を用いることにより、様々なシステム構成に柔軟に対応可能で、処理の効率が良く、エラー処理が簡単なシステムを実現することが可能である。
【図面の簡単な説明】
【図1】本発明の第1の実施例によるデータ転送方法を用いたシステムのブロック図
【図2】同実施例によるデータ送信命令およびデータ送信命令応答のデータフォーマットを示す図
【図3】同実施例によるデータ受信命令およびデータ受信命令応答のデータフォーマットを示す図
【図4】同実施例による静止画データの分割方法を表す図
【図5】本発明の第2の実施例によるデータ転送方法を用いたシステムのブロック図
【図6】同第3の実施例によるデータ転送方法を用いたシステムのブロック図
【図7】同第4の実施例によるデータ転送方法を用いたシステムのブロック図
【図8】同第5の実施例によるデータ転送方法を用いたシステムの動作を表す図
【図9】同実施例によるデータ送信命令およびデータ送信命令応答のデータフォーマットを示す図
【図10】同実施例によるデータ受信命令およびデータ受信命令応答のデータフォーマットを示す図
【図11】同実施例によるデータ転送処理の動作の一部を表す図
【図12】同実施例によるデータ転送処理の終了動作を表す図
【図13】同実施例によるデータ送信処理が遅れた場合およびデータ送信処理が不可能になった場合の動作を表す図
【図14】同実施例によるデータ受信処理が遅れた場合およびデータ受信処理が不可能になった場合の動作を表す図
【図15】従来のデータ転送方法による静止画データシステムの第1の例を表すブロック図
【図16】従来のデータ転送方法による静止画データシステムの第2の例を表すブロック図
【図17】従来のデータ転送方法による静止画データシステムの第3の例を表すブロック図
【図18】従来の改良されたデータ転送方法を用いた静止画データシステムの例を表すブロック図
【符号の説明】
1 データ送信ノード
2 データ受信ノード
3 制御ノード
4 データ受信命令
5 データ送信命令
6 データ
7 データ送信命令応答
8 データ受信命令応答
Claims (1)
- 各ノードに対してノード識別子が割り当てられ各ノード間でそれぞれ通信を行うことが可能なシリアルバスにおいて、
制御ノードが第1のノードに対して、第2のノードのノード識別子を含むデータ送信命令を発行した後、前記制御ノードが前記第2のノードに対して、前記第1のノードのノード識別子を含むデータ受信命令を発行することで、前記第1のノードから前記第2のノードにデータを1以上のデータブロックに分割して転送する際に、
前記第1のノードから前記第2のノードへの転送は、
(1)前記第2のノードがデータ受信可能な状態を表す通知を前記第1のノードに送信する第1のステップ、
(2)前記第1のノードが送信データブロックの準備が完了した時点で、前記第2のノードへデータブロックを転送する動作を行う第2のステップ、
(3)前記第1のノードが前記第2のノードに前記データブロックの転送の終了を表す通知を送信する第3のステップ、
の上記ステップを繰り返すことで行われ、
第1のステップでの通知には、第2のノードが第2のステップで受信可能な最大データブロックデータ長を含み、
第2のステップでのデータブロック転送が、1個以上のパケットに分割されて転送されるものであり、第1のステップでの通知には、第2のノードが1個のパケットで受信可能な最大パケットデータ長を含み、
第3のステップでの通知には、第1のノードが第2のステップで送信したデータブロックデータ長を含むことを特徴とするデータ転送方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003155078A JP3714341B2 (ja) | 2003-05-30 | 2003-05-30 | データ転送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003155078A JP3714341B2 (ja) | 2003-05-30 | 2003-05-30 | データ転送方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13945398A Division JP3460579B2 (ja) | 1998-05-21 | 1998-05-21 | データ転送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004032735A JP2004032735A (ja) | 2004-01-29 |
JP3714341B2 true JP3714341B2 (ja) | 2005-11-09 |
Family
ID=31185382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003155078A Expired - Fee Related JP3714341B2 (ja) | 2003-05-30 | 2003-05-30 | データ転送方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3714341B2 (ja) |
-
2003
- 2003-05-30 JP JP2003155078A patent/JP3714341B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004032735A (ja) | 2004-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100294960B1 (ko) | 데이타 통신 시스템, 데이타 통신 방법, 및 데이타 통신 장치 | |
US6717694B1 (en) | Data transmission apparatus, system and method, and recording medium | |
EP0939529B1 (en) | Destination node, data communication system, method of controlling a destination node and method of operating a data communication system | |
EP1033657A2 (en) | Packet communication apparatus provided with manager means for managing packet labels | |
JP2000049834A (ja) | デ―タ通信システム、装置及び方法並びに記憶媒体 | |
JP3460579B2 (ja) | データ転送方法 | |
US20010034799A1 (en) | Packet transmission/reception processor | |
US6678769B1 (en) | Control apparatus and method for managing a logical connection between source and destination nodes | |
JP3719253B2 (ja) | データ受信ノード | |
JP3678238B2 (ja) | データ転送方法 | |
JP3714341B2 (ja) | データ転送方法 | |
JP3767578B2 (ja) | データ送信ノード | |
KR100431206B1 (ko) | 고속 라우터에서 분산 포워딩을 위한 테이블 관리 방법 | |
JPH11261613A (ja) | データ転送方法 | |
US9106608B2 (en) | Communication device, communication method, and non-transitory computer-readable recording medium | |
JP3148733B2 (ja) | 信号処理装置及び信号処理システム | |
JP3943698B2 (ja) | データ通信システム及びデータ通信装置 | |
JP2658931B2 (ja) | プリンタコントローラ | |
JP2006109016A (ja) | 送受信装置、送受信制御方法、プログラム、およびメモリ | |
JP2002281034A (ja) | 情報転送装置 | |
JP2004153803A (ja) | データ通信装置、データ通信システム、データ通信方法、データ通信プログラム及び情報記録媒体 | |
JPH11261608A (ja) | データ通信システム、データ通信装置、データ通信方法及び記憶媒体 | |
JP4028539B2 (ja) | データ通信装置及びデータ通信方法 | |
JPH11313091A (ja) | データ通信システム、装置及び方法並びに記憶媒体 | |
JPH11308255A (ja) | データ通信システム、方法及び装置並びに記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050425 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050524 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050705 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050708 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050815 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080902 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120902 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130902 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |