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