JPH11327815A - 通信制御方法及び装置及び通信システム - Google Patents

通信制御方法及び装置及び通信システム

Info

Publication number
JPH11327815A
JPH11327815A JP13399498A JP13399498A JPH11327815A JP H11327815 A JPH11327815 A JP H11327815A JP 13399498 A JP13399498 A JP 13399498A JP 13399498 A JP13399498 A JP 13399498A JP H11327815 A JPH11327815 A JP H11327815A
Authority
JP
Japan
Prior art keywords
target
initiator
instruction
orb
issued
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.)
Granted
Application number
JP13399498A
Other languages
English (en)
Other versions
JP4111472B2 (ja
Inventor
Takashi Isoda
隆司 礒田
Akihiro Shimura
明弘 志村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP13399498A priority Critical patent/JP4111472B2/ja
Priority to US09/310,952 priority patent/US6477587B1/en
Priority to EP19990303764 priority patent/EP0957433B1/en
Priority to DE69938988T priority patent/DE69938988D1/de
Publication of JPH11327815A publication Critical patent/JPH11327815A/ja
Priority to US10/238,675 priority patent/US6701386B2/en
Application granted granted Critical
Publication of JP4111472B2 publication Critical patent/JP4111472B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40123Interconnection of computers and peripherals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • H04L49/9052Buffering arrangements including multiple buffers, e.g. buffer pools with buffers of different sizes

Abstract

(57)【要約】 【課題】プリンタの資源が少なくても済み、通信切断後
の復旧が保証されたむ全2重通信路を提供する。 【解決手段】イニシエータは、ターゲットに対して発行
したORBに対応するコマンドを、I/O要求キュー2
02,203の中に、ターゲットから完了応答があるま
で保持する。ターゲットは、ライト実行エージェント1
04とリード実行エージェント106とを有し、イニシ
エータからのコマンドを処理する。両者の間の接続が断
たれ、再び接続されると、イニシエータは全てのORB
を消去した後、I/O要求キューの保持されたコマンド
をもとに、再度ORBを生成してターゲットに発行す
る。ターゲットは、ORBの処理時には、処理中のOR
Bの識別子と、読み出しあるいは書き込みを行っている
バッファのアドレスを保持している。再接続語には、保
持している識別子と、イニシエータから再発行されたO
RBの識別子とを比較し、一致していれば、保持されて
いるアドレスから読み出しあるいは書き込みを再開す
る。一致していなければ、そこORBは処理済みとみな
して、処理完了ステータスをイニシエータに返す。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えばホストコンピュ
ータとプリンタ等の機器同士を接続する通信制御方法及
び装置に関する。
【0002】
【従来の技術】近年、IEEE1394インターフェー
スが、コンピュータと周辺機器、あるいは周辺機器同士
の接続に用いられつつある。IEEE1394インター
フェースは、セントロニクスインターフェースなどのハ
ンドシェイク方式に比べて高速で、しかも双方向通信が
可能である。また、メモリバスモデルのインターフェー
スであり、IEEE1394インターフェースで接続さ
れた機器は、相手の機器に対して指定されたアドレスの
データを読み書きすることができる。
【0003】このIEEE1394は、広範囲に応用す
るための物理層及びリンク層のプロトコルを定めたもの
で、機器ごとの詳細なプロトコルは定められていない。
そのため、物理・リンク層としてIEEE1394を利
用したSBP(Serial Bus Protocol)−2などのトラン
スポート層のプロトコルが提案されている。トランスポ
ート層はアプリケーションに対してデータ転送機能を提
供する層であり、この層を利用するアプリケーション
は、互いにデータの交換が可能となる。
【0004】このSBP−2なるプロトコルは、IEE
E1394のメモリバスモデルとしての特徴を活かした
プロトコルであり、データの受信側がそれ自身の都合に
応じてデータを受信することができる。これに対して、
SBP−2以外のプロトコルには、非同期に発生するデ
ータの転送が可能となるものも、マルチチャネルが実現
できるものもあるが、そのようなプロトコルではIEE
E1394のメモリバスモデルとしての特徴を活かすこ
とができない。すなわち、ホストとプリンタの通信であ
れば、プリンタ側の都合に応じてデータ転送を行うこと
ができず、ホストがプリンタの状態を監視しながらデー
タ転送を行わねばならないことになる。
【0005】SBP−2では、データを転送する場合
に、まず送信側でログインという操作を行って通信相手
との間のチャネルを確立する。この際、ログインした側
がイニシエータと呼ばれ、イニシエータと接続された相
手側がターゲットと呼ばれる。データ転送は、イニシエ
ータからの指示に応じて、ターゲットからイニシエータ
のバッファにデータを読み書きすることで行われる。こ
の方式においては、イニシエータは、送信するデータを
格納したバッファのアドレスやサイズ等が書かれたOR
B(Operation Request Block)を作成し、そのORBの
アドレスをターゲットに知らせる。ターゲットでは自分
の都合に合わせてORBに書かれたアドレスやサイズに
基づいてイニシエータからデータを読み出し、あるいは
データを書き込み、それらの処理後ステータスブロック
を作成して、処理の状態をイニシエータに知らせること
になる。
【0006】
【発明が解決しようとする課題】このIEEE1394
の上に構築されるSBP−2プロトコルを利用して通信
を行う場合、特に、ホストコンピュータ等のデータ源を
イニシエータとし、それからターゲットであるプリンタ
装置などの周辺機器へのデータ転送に応用する場合、次
のような4つの問題点があった。(問題点1)全2重通
信のために手順が複雑である。
【0007】SBP−2では、基本的にデータの転送は
イニシエータによって管理され、ターゲットはイニシエ
ータへの非同期のデータ転送を行うことができない。す
なわち、SBP−2では、ターゲットがイニシエータへ
のデータ転送を行いたい時には、イニシエータに対して
アンソリシテドステータスでデータリード要求を送り、
イニシエータはそれに応じてORB生成し、ペンディン
グ中のORB(イニシエータからターゲットへのデータ
転送要求などが含まれている)のリストの末尾にその生
成したORBをつける。このORBは先頭から順番に処
理されるため、ターゲットがイニシエータにリード要求
を発行したタイミングではなく、イニシエータ側のOR
Bの処理が進み、ターゲットからのデータリード要求に
よるORBが処理されたときに初めてターゲットからイ
ニシエータにデータが転送されることになる。すなわ
ち、双方向の非同期なデータ転送が行えず、ターゲット
からイニシエータに転送すべきデータが非同期に発生す
る場合、例えばターゲットがプリンタであれば、そのプ
リンタでエラーが発生する場合など、直ちにイニシエー
タに伝達すべきデータを即時に伝達できない。
【0008】このため、例えばプリンタで非同期に発生
するデータを即座にホストに転送するためには、プリン
タをイニシエータとしてログイン手続きを行い、ホスト
コンピュータをターゲットとするデータ転送を行わねば
ならない。
【0009】このようにホストコンピュータとプリンタ
で互いにログインしてそれぞれがイニシエータでありタ
ーゲットであるような状況では、ホストコンピュータ及
びプリンタの双方にイニシエータとしてのプロセスとタ
ーゲットとしてのプロセスを備えなければならない。ま
た、ログインの操作もプリンタから行わねばならない。
【0010】プリンタのような画像を扱う周辺装置で
は、画像処理のために大量のメモリ資源やプロセッサ資
源を消費する。そのために、装置の構成を簡略化して原
価を節減したり、処理を迅速に行うため画像処理用途以
外に用いられる資源をできるだけ節約しなければならな
い。しかし、上述のように多くのプロセスを稼働するこ
とになればその分多くの資源を消費することになり、原
価低減・処理の効率化という目的に反することになる。
【0011】また、ホストコンピュータとプリンタとの
関係であれば、各方向に流れるデータは、印刷データと
それに対する処理状況といったように、互いに関連付け
られるものであるが、各方向について独立したログイン
によりチャネルを設定すると、それらデータとレスポン
スとを関連づけなければならず、そのための処理手順を
新たに追加する必要がある。
【0012】このようにIEEE1394及びSBP−
2をそのままホストコンピュータ−プリンタ装置間の通
信に適用することは適切でなく、各装置において必要と
される資源を減らすことや効率を向上させることが難し
かった。(問題点2)マルチチャネルを実現できない。
【0013】最近、周辺装置として種々の機能を複合さ
せた複合機が利用されつつある。例えば、ファクシミリ
装置を、スキャナ単体,プリンタ単体,ファクシミリと
してホストコンピュータ等から利用できるデジタル複合
機などがある。このような装置を利用する際には、各単
体機能ごとに独立した複数のチャネルを介して通信を行
えば、同時に複数の機能を利用することができる。
【0014】しかしながら、SBP−2では、マルチチ
ャネルを提供できないため、そのように単体機能を同時
に利用することが難しい。(問題点3)バスリセットに
対応できない。
【0015】IEEE1394では、1394シリアル
バスへの機器の新たな接続や取り外し、あるいは、接続
された機器の電源投入や切断といった、ネットワーク構
成の変化要因となる状態変化が発生するとバスリセット
が発生する。バスリセットは、バス上で上記のような状
態変化を検知したノードがバスリセット信号をバス上に
送信することで発生する。発生されたバスリセット信号
は、ノードからノードへと伝達され、ネットワーク上の
全ノードがバスリセット信号を受信すると、バスリセッ
トのための一連の動作が各ノードで行われる。
【0016】このようにバスリセットは、ネットワーク
上のノードにおける処理とは非同期に発生する。また、
バスリセットの原因となったノードとアプリケーション
については無関係なノードであっても、一旦バスリセッ
トが発生してしまえばバスリセットの処理を行わねばな
らない。このバスリセットの過程で、SBP−2で通信
を行っているノードでは、設定されていたコネクション
が切断されてしまい、再度コネクションをつなげてもバ
スリセット直前の状態から処理を続行できる保証が与え
られていない。
【0017】本発明は上記従来例に鑑みてなされたもの
で、1回のログインで全2重通信(互いに非同期な双方
向通信)を可能とし、また、データの交換に必要なプロ
セスやメモリといった資源を効率的に利用できる通信制
御方法及び装置及びそれを用いた印刷装置を提供するこ
とを目的とする。
【0018】また、マルチチャネルを実現する通信制御
方法及び装置及びそれを用いた印刷装置を提供すること
を目的とする。
【0019】また、バスリセットが発生しても、バスリ
セット直前の状態から処理の続行を保証する通信制御方
法及び装置及びそれを用いた印刷装置を提供することを
目的とする。
【0020】
【課題を解決するための手段】上記目的を達成するため
に本発明は次のような構成から成る。すなわち、イニシ
エータからターゲットに対して命令を発行することで、
前記イニシエータの有する記憶領域に対して、前記ター
ゲットによりデータの書き込みあるいは読み出しを行わ
せてデータを交換する通信制御方法であって、前記イニ
シエータは、ターゲットに対して発行した命令を、それ
ぞれの命令について処理を完了した旨の処理完了通知を
ターゲットから受けるまで、再発行可能な状態で発行済
の命令を保持する。
【0021】あるいは、イニシエータからターゲットに
対して命令を発行することで、前記イニシエータの有す
る記憶領域に対して、前記ターゲットによりデータの書
き込みあるいは読み出しを行わせてデータを交換する通
信システムであって、前記イニシエータは、ターゲット
に対して発行した命令を、それぞれの命令について処理
を完了した旨の処理完了通知をターゲットから受けるま
で、再発行可能な状態で発行済の命令を保持する。
【0022】あるいは、接続されたターゲットに対して
命令を発行することで、ターゲットによりデータの書き
込みあるいは読み出しを行わせてデータを交換する通信
制御装置であって、ターゲットにより読み書きさせる記
憶領域を含むメモリと、ターゲットに対して発行した命
令を、それぞれの命令について処理を完了した旨の処理
完了通知をターゲットから受けるまで、再発行可能な状
態で発行済の命令を保持する保持手段とを備える。
【0023】あるいは、接続されたイニシエータから発
行される命令に基づいてイニシエータの記憶領域に対し
てデータの書き込みあるいは読み出しを行ってデータを
交換する通信制御装置であって、前記イニシエータから
発行された命令の種類ごとに、実行中の命令の識別子を
保持する命令保持手段と、実行中の命令に対して書き込
みあるいは読み込みを行っている記憶領域のアドレスを
保持するアドレス保持手段とを備える。
【0024】あるいは、コンピュータにより、それに接
続されたターゲットに対して命令を発行することで、タ
ーゲットによりデータの書き込みあるいは読み出しを行
わせてデータを交換するためのプログラムを格納するコ
ンピュータ可読記憶媒体であって、前記プログラムによ
り、ターゲットに対して発行した命令を、それぞれの命
令について処理を完了した旨の処理完了通知をターゲッ
トから受けるまで、再発行可能な状態で発行済の命令を
保持する保持手段と、前記ターゲットに対して発行した
命令と、当該命令に基づいてターゲットにより読み書き
させる記憶領域との対応づけを保持する保持手段と、前
記ターゲットとの間の接続が一旦切断されて再接続され
た場合、前記保持手段により再発行可能な状態で保持さ
れている命令を、ターゲットに対して再発行する手段と
を実現する。
【0025】あるいは、コンピュータにより、それに接
続されたイニシエータから発行される命令に基づいてイ
ニシエータの記憶領域に対してデータの書き込みあるい
は読み出しを行ってデータを交換するためのプログラム
を格納するコンピュータ可読の記憶媒体であって、前記
プログラムにより、前記イニシエータから発行された命
令の種類ごとに、実行中の命令の識別子を保持する命令
保持手段と、実行中の命令に対して書き込みあるいは読
み込みを行っている記憶領域のアドレスを保持するアド
レス保持手段と、前記イニシエータとの間の接続が一旦
切断されて再接続された場合、前記イニシエータから発
行された命令の識別子と前記命令保持手段により保持さ
れている識別子とを比較し、一致している場合には、そ
の命令にしたがって、前記アドレス保持手段により保持
されている記憶領域のアドレスから読み出しあるいは書
き込みを行い、一致していない場合には、イニシエータ
に当該命令に対する処理完了通知を発行する手段とを実
現する。
【0026】
【発明の実施の形態】[第1の実施の形態]本発明の第
1の実施の形態として、ホストコンピュータとプリンタ
とを、IEEE1394で接続し、その上に構築された
SBP−2プロトコルを用いた、本発明に係るプロトコ
ル(以下SHPTと呼ぶ)に従ってデータ転送を行うプ
リンタシステムを説明する。図24は、そのプリンタシ
ステムにおけるハードウエア構成図である。 <システムのハードウエア構成>図24において、ホス
トコンピュータ200は、ROM3のプログラム用RO
Mに記憶された文書処理プログラム等に基づいて、図
形,イメージ,文字,表(表計算等を含む)等が混在し
た文書処理を実行するCPU1を備える。CPU1はシ
ステムデバイス4に接続される各デバイスをCPU1が
総括的に制御する。また、ROM3のプログラム用RO
Mには、CPU1の制御プログラム等が記憶され、RO
M3のフォント用ROMには上記文書処理の際に使用す
るフォントデータ等が記憶され、ROM3のデータ用R
OMは上記文書処理等を行う際に使用する各種データが
記憶される。RAM2は、CPU1の主メモリ,ワーク
エリア等として機能する。プログラムはRAM2に格納
されても良い。また、RAM2には、送信データバッフ
ァやORBを格納するシステムメモリが確保される。
【0027】キーボードコントローラ(KBC)5は、
キーボード9や不図示のポインティングデバイスからの
キー入力を制御する。CRTコントローラ(CRTC)
6は、CRTディスプレイ(CRT)10の表示を制御
する。メモリコントローラ(MC)7は、プートプログ
ラム,種々のアプリケーション,フォントデータ,ユー
ザファイル,編集ファイル等を記憶するハードディスク
(HD)、フロッピーディスク(FD)等の外部メモリ
11とのアクセスを制御する。1394インターフェー
ス8は、IEEE1394規格に従ってプリンタ100
に接続されて、プリンタ100との通信制御処理を実行
する。なお、CPU1は、例えばRAM2上に設定され
た表示情報RAMへのアウトラインフォントの展開(ラ
スタライズ)処理を実行し、CRT10上でのWYSI
WYGを可能としている。また、CPU1は、CRT1
0上の不図示のマウスカーソル等で指示されたコマンド
に基づいて登録された種々のウィンドウを開き、種々の
データ処理を実行する。
【0028】プリンタ100において、プリンタCPU
12は、ROM13のプログラム用ROMに記憶された
制御プログラム等或いは外部メモリ14に記憶された制
御プログラム等に基づいてシステムバス15に接続され
る各種のデバイスとのアクセスを総括的に制御し、印刷
部インタフェース16を介して接続される印刷部(プリ
ンタエンジン)17に出力情報としての画像信号を出力
する。また、このROM13のプログラムROMには、
後述する各種エージェントや画像処理を実現するCPU
12の制御プログラム等が記憶される。ROM13のフ
ォント用ROMには上記出力情報を生成する際に使用す
るフォントデータ等が記憶され、ROM13のデータ用
ROMには、ハードディスク等の外部メモリ14が無い
プリンタの場合には、ホストコンピュータ上で利用され
る情報等が記憶されている。CPU12は1394イン
ターフェース18を介してホストコンピュータとの通信
処理が可能となっており、プリンタ内の情報等をホスト
コンピュータ200に通知可能に構成されている。
【0029】RAM19は、CPU12の主メモリ、ワ
ークエリア等として機能するRAMで、図示しない増設
ポートに接続されるオプションRAMによりメモリ容量
を拡張することができるように構成されている。なお、
RAM19は、出力情報展開領域、環境データ格納領
域、NVRAM等に用いられる。
【0030】前述したハードディスク(HD)、ICカ
ード等の外部メモリ14は、メモリコントローラ(M
C)20によりアクセスを制御される。外部メモリ14
は、オプションとして接続され、フォントデータ、エミ
ュレーションプログラム、フォームデータ等を記憶す
る。また、操作パネル18には、操作のためのスイッチ
およびLED表示器等が配されている。また、前述した
外部メモリは1個に限らず、少なくとも1個以上備え、
内蔵フォントに加えてオプションフォントカード,言語
系の異なるプリンタ制御言語を解釈するプログラムを格
納した外部メモリを複数接続できるように構成されてい
ても良い。さらに、図示しないNVRAMを有し、操作
パネル1012からのプリンタモード設定情報を記憶す
るようにしても良い。
【0031】<イニシエータの構成>上述したハードウ
エア構成において、プリンタ100をターゲットとし、
ホストコンピュータ200をイニシエータとした通信シ
ステムを、図1及び図2に示す。本実施形態に置いて
は、これら構成は、それぞれホストコンピュータ及びプ
リンタにおけるCPUによりプログラムを実行すること
で実現される。まず、図2のイニシエータから説明す
る。
【0032】図2において、イニシエータであるホスト
コンピュータにおいては、プリンタドライバ等のクライ
アント206はSHPT処理部201を介してプリンタ
に対するデータ転送要求を発行するとともに、プリンタ
からの応答を受ける。
【0033】SHPT処理部201は、システムメモリ
に生成されるI/O要求キューやORBを管理してい
る。リードI/O要求キュー203にはクライアント2
06からのリード要求コマンドが、ライトI/O要求キ
ュー202にはクライアント206からのライト要求コ
マンドが、それぞれキューイングされる。ORBはイニ
シエータであるホストコンピュータからターゲットであ
るプリンタへ、あるいはプリンタからホストコンピュー
タへ渡されるデータバッファのアドレスやサイズ等を格
納したブロックであり、先頭のORBからORBリスト
204に順次リンクされている。このORBについて
は、次のような処理の原則がある。 (1)リードI/O要求キュー及びライトI/O要求キ
ューそれぞれの先頭から取り出したコマンドから順にO
RBが作成され、ORBリストの末尾につけられる。リ
ード/ライトの順序には特に制約はない。 (2)ORBは、ORBリストの先頭から順次フェッチ
される。完了通知(ステータスブロック)を受信する
と、そのステータスに対応するORBはORBリストか
らはずされる。 (3)リンクされるORBの数の上限は、後述するター
ゲットにおけるリードプリフェッチキュー及びライトプ
リフェッチキューの容量(それぞれ処理中のコマンドも
含む)の合計と同一である。 (1),(2)項により、ライトI/O要求,リードI
/O要求は、それぞれのI/O要求において、発生した
順にターゲットに発行されることが保証される。また、
(3)項により、ORBリスト中のI/O要求はターゲ
ットに渡されていることが保証される。この(3)項を
実現するために、SHPT処理部201は、プリンタの
2つのプリフェッチキューそれぞれについて2つのカウ
ンタを用意している。ひとつはCurrentReadQUEというカ
ウンタ203aであり、後述するターゲットのリードプ
リフェッチキューの現在の空容量を示している。また、
もうひとつはCurrentWriteQUEというカウンタ202a
であり、ターゲットのライトプリフェッチキューの空き
容量を示している。これらカウンタの初期値はターゲッ
トとなる機器が保持しており、ログイン時等にターゲッ
トから読み出され、イニシエータに記憶される。これら
カウンタはORBの生成と削除に合わせて増減される。
【0034】また、ORBを生成した際には、ターゲッ
ト側のドアベルレジスタと呼ばれるレジスタに所定値を
書き込む、あるいは、リストの先頭のORBのアドレス
をORBポインタと呼ばれるレジスタに書き込むことに
より、ORBが発生したことをターゲットに知らせる。
既にターゲットが実行しているORBリストの最後にO
RBした場合にはドアベルレジスタへの書き込みを行
い、ORBリストがない状態で新規に先頭のORBを作
成した場合には、ORBポインタへの書き込みを行う。
この手続きはSBP−2で規定されている。
【0035】また、SHPT処理部201は、ステータ
スFIFO205を含む。1394インターフェース1
09を介して受信されたステータスは、SHPT処理部
201により処理される。SHPT処理部201は、受
信したステータスに対応するORBをORBリスト20
4から外すとともに、そのORBに対応するコマンドを
I/O要求キューから外す。
【0036】イニシエータたるホストコンピュータは以
上のような機能的な構成からなっている。
【0037】<ターゲットの構成>図1は、ターゲット
たるプリンタの機能上の構成を示すブロック図である。
図1において、ドアベルレジスタ101aは、イニシエ
ータによって書き込まれるレジスタであり、ORBが新
たに生成されたことを示す。また、ORBポインタ10
1bには、新たに生成されたORBのアドレスがイニシ
エータにより書き込まれる。フェッチエージェント10
1は、ドアベル101aに書き込みがあると、1394
インターフェース101を介してORBポインタで示さ
れるORBを読み込む。ORBディスパッチャ102
は、フェッチエージェント101により読み込まれたO
RBがライトコマンドORBであればライトコマンドを
ライトプリフェッチキュー103の末尾につけ、リード
コマンドORBであればリードコマンドをリードプリフ
ェッチキュー105の末尾につける。このコマンドの種
類は、ORBのファンクションフィールドの値に応じて
判定される。
【0038】ライト実行エージェント104及びリード
実行エージェント106は、それぞれライトプリフェッ
チキュー103及びリードプリフェッチキュー105に
キューイングされたコマンドを先頭から取り出し、イニ
シエータのバッファへのデータの書込み及びイニシエー
タのバッファからのデータの読み出しを行う。その後、
ホストコンピュータにノーマルステータスを返す。
【0039】なお、リード実行エージェント106は、
例えばPDLを解釈実行してラスタデータを生成するラ
スタライザ等のクライアント108からのデータ転送要
求に応じて、リードプリフェッチキュー内のリードコマ
ンドで指定されたイニシエータのバッファにデータを書
き込む。このデータ転送要求は、イニシエータからのラ
イトコマンドやリードコマンドとは非同期に発生するた
め、イニシエータはリードコマンドORBによってリー
ドプリフェッチキューにリードコマンドを常時キューイ
ングしておく。ターゲットは、リードコマンドがプリフ
ェッチキューにキューイングされている限り、いつでも
データをイニシエータに渡すことができる。なお、バス
インターフェース110は、ターゲットであるプリンタ
100からイニシエータであるホストコンピュータ20
0のシステムメモリ208の所望のメモリロケーション
にアクセスするためのインターフェースである。
【0040】以上、イニシエータ及びタ−ゲットの構成
と動作を簡単に説明した。これらを更に詳しく説明する
前に、まずORBの詳しい内容を説明する。
【0041】<コマンドORB(Operation Request Blo
ck)の内容>図7はORB一般の構成を示す図である。
図7(A)において、"Next_ORB"(リンク)フィールド
301は、次のORBへのリンクである。次のORBが
ない場合にはそれを表す所定の値が入れられる。なお、
先頭のORBは、所定のアドレスレジスタにより示され
る。"data_descripter"(データデスクリプタ)フィー
ルド302は、データバッファのアドレスを示す。"d"
(方向)フィールド303は、ホストコンピュータから
プリンタへのデータ転送(0:ライト)か、プリンタか
らホストコンピュータへのデータ転送(1:リード)か
を示す。"data_size"(データサイズ)フィールド30
4は、アドレスフィールド302で指し示されるデータ
バッファのサイズを示す。以上、図の点線よりも上のフ
ィールド(未説明のフィールドも含めて)がSBP−2
で規定されているフィールドであり、これから説明する
フィールド305〜308が、SHPTに固有の処理に
用いられるフィールドである。
【0042】"PSID"フィールド305a,"SSID"フィー
ルド305bは、使用されるチャネルIDを表わしてい
る。"function"(ファンクション)フィールド306
は、図7(B)に示すようにORBの種類を示してい
る。0Hがライトコマンド、40Hがリードコマンドを
表わす。
【0043】"t"(タグ)ビット307はデータタグを
表している。"seq_ID"(シーケンスID)フィールド3
08は、ファンクションごと(リードあるいはライトコ
マンド)に、ORBの生成順に振られるシーケンシャル
な識別子である。この識別子は、本実施形態ではORB
が生成されるごとに1ずつ増えるように与えられる。な
お、このシーケンスIDフィールドに値を与える基準と
なるカウンタは、バスリセットや他の障害による影響を
受けない領域に設けられる。それは、ターゲットにおい
ては、シーケンスIDの連続性を前提として処理を行う
ためである。コントロールブロックフィールド309に
は、ファンクションフィールド306の値や、各ファン
クションに対してターゲットで実現される機能に応じて
様々な値が入れられる。なお、バッファのアドレスやサ
イズについては、I/O要求キューに入れられたコマン
ドからORB生成時に得る。次に、機能ごとにORBの
内容を説明する。
【0044】(ライトコマンドORB)図8はファンク
ション=0HのライトコマンドORBを示している。こ
のコマンドは、指定したバッファ内のデータをイニシエ
ータからターゲットに渡すためのコマンドである。ファ
ンクションフィールドの値は0Hであり、シーケンスI
Dは、ひとつのチャネルごとに、各ライトコマンドに対
して昇順に与えられる。
【0045】(リードコマンドORB)図9はファンク
ション=40HのリードコマンドORBを示している。
このコマンドは、イニシエータがターゲットからデータ
を読み出すためのコマンドである。ファンクションフィ
ールドの値は40Hであり、シーケンスIDは、ひとつ
のチャネルごとに、各リードコマンドに対して昇順に与
えられる。
【0046】(ステータスブロック)図10(A)〜
(C)は、ターゲットからイニシエータに返されるステ
ータスの形式及びその内容を示している。図10(A)
において、点線よりも上のフィールドはSBP−2で規
定されたフィールドであるため、特に説明をしない。P
SIDフィールド401,SSIDフィールド402,
ファンクションフィールド403,タグフィールド40
4は、図7のコマンドORBと同様のフィールである。
図10(B)にファンクションフィールドの値とその意
味を示す。
【0047】"SHPT_status"(SHPTステータス)フ
ィールド図10(C)に示すような意味を持つ。すなわ
ち、値が0であれば、そのステータス対応するコマンド
ORBについての処理は完了したことを示す。例えば、
対応するコマンドORBがライトコマンドであれば、S
HPTステータスが0のステータスブロックは、対応す
るライトコマンドORBで差し示されたバッファから、
ターゲットがデータを全て読み出し、ターゲットの持つ
バッファに書き込み終えたことを意味する。また、値が
1であれば、対応するコマンドORBの処理が部分的な
終了していることを示す。また、値が2であれば、対応
するコマンドORBの処理はエラーにより行われなかっ
たことを示す。このエラーを受けたイニシエータは、ク
ライアントにエラーである旨知らせるなどしてエラーに
対応する。
【0048】"length_hi"(レングスハイ)フィールド
405及び"length_lo"(レングスロウ)フィールド4
06は、処理されたデータ長を示す。
【0049】(ライトステータスブロック)図11は、
ファンクション=0のライトステータスブロックであ
り、ライトコマンドに対してターゲットからイニシエー
タに渡される。処理の状態は、SHPTステータスによ
り、図10(C)のように表わされる。
【0050】(リードステータスブロック)図12は、
ファンクション=40Hのリードステータスブロックで
あり、リードコマンドに対してターゲットからイニシエ
ータに渡される。処理の状態は、SHPTステータスに
より、図10(C)のように表わされる。
【0051】<ORBの管理>次に、以上説明したイニ
シエータ及びターゲットの構成や、コマンドORB及び
ステータスブロックの構成に基づいて、ORBがどのよ
うに用いられているか説明する。
【0052】図3は、イニシエータ及びクライアント間
におけるコマンドの流れを示している。まずライトコマ
ンドについて説明する。イニシエータのクライアントか
らデータ転送要求が発生すると、クライアントはターゲ
ットに渡すデータを格納したバッファのアドレス及びサ
イズを含むライトコマンドを、ライトI/O要求キュー
202の末尾につける。SHPT処理部201では、タ
ーゲットのライトプリフェッチキュー103の空き容量
を示すCurrentWriteQUE202aをチェックし、空きが
あればそのライトコマンドからORBを生成してORB
リスト204の末尾にリンクするが、空きがなければ空
きを待つ。図3の状態では、ライトプリフェッチキュー
はライトコマンドW1〜W4によっていっぱいであり、
その後のライトコマンドW5及びW6はライトI/O要
求キューで待たされている。なお、ORBが生成されて
もそれに対応するライトコマンドはライトI/O要求キ
ューから削除されず、ターゲットからの完了ステータス
を受けた時点で削除される。
【0053】SHPT処理部201は、ORBをORB
リストに入れると、1394インターフェースを介して
ターゲットのドアベル101aに書き込む、あるいは、
ORBポインタ101bに新たなORBのアドレスを書
き込む。ディスパッチャ102は、そのORBに基づい
て、ライトコマンドをライトプリフェッチキュー103
の末尾につける。ライト実行エージェント104は、ラ
イトプリフェッチキュー内のコマンドを順次実行する。
すなわち、ターゲットのクライアントの用意したバッフ
ァに、ライトコマンドで示されるバッファの内容を書き
込む。ライト実行エージェントは、コマンドの処理が完
了すると、SHPTステータスが「完了」であるステー
タスブロックをイニシエータのステータスFIFO20
5に書き込む。
【0054】SHPT処理部201は、ステータスFI
FOに入れられたステータスブロックを先頭から処理す
る。すなわち、SHPTステータスが「完了」であれ
ば、そのステータスブロックに対応するORBをORB
リストから外し、それとともにライトI/O要求キュー
内の対応するライトコマンドを削除する。以上の手順
は、リードコマンドについても全く同様である。ただ
し、リードコマンドは、ターゲットにおいてリードすべ
きデータが発生しない限り処理されない。従って、イニ
シエータから発行されたリードコマンドORBは、リー
ドすべきデータが発生するまでリードプリフェッチキュ
ーにキューイングされたままということになる。
【0055】イニシエータがホストコンピュータ、ター
ゲットがプリンタである場合、ホストコンピュータから
プリンタに印刷データを渡すためには、上述のライトコ
マンドを用いて、イニシエータのクライアントであるプ
リンタドライバから、ターゲットのクライアントである
ラスタライザに印刷データが渡される。また、ホストコ
ンピュータがプリンタの構成や状態を示す情報を要求す
る場合には、その旨のコマンド(クライアントレベルの
コマンド)をプリンタにライトコマンドで渡す。それを
受けたプリンタ(のクライアント)は、リードプリフェ
ッチキューにキューイングされているリードコマンドを
用いて、ホストコンピュータに要求されたデータを渡
す。さらに、プリンタでエラーが発生したような場合に
は、プリンタのクライアントは、リードプリフェッチキ
ューにキューイングされているリードコマンドを用い
て、自発的にエラー情報をホストコンピュータに渡すこ
とができる。このため、ホストコンピュータはプリンタ
と接続している間は、運用上少なくとも1つのリードO
RBをプリンタに対して発行しておく。さらに、リード
コマンドを常時リードプリフェッチキューにキューイン
グさせておくためには、少なくとも2つのリードORB
をプリンタに対して発行しておくことが望ましい。
【0056】図6はORBリストの更新の様子を示して
いる。状態1から、ライトコマンドW1とリードコマン
ドR1とが処理されてそれらのORBはORBから削除
される(状態2)。このため、ライトORBW2,W3
のリンク先はなくなる。この場合、これらORBは既に
ターゲットに渡っているため、これらをORBリストに
つなぎなおす必用はない。また、ORBリストになくと
も、I/O要求キューには対応コマンドが残っているた
め、後述するエラー復旧処理も正常に行うことができ
る。
【0057】<エラーの復旧(イニシエータ)>既に説
明したように、SBP−2では、ネットワークに異常
(エラー)に起因するバスリセットにより、イニシエー
タとターゲットとの間の接続は断たれてしまう。そこ
で、SHPTでは、バスリセットにより失われた状態を
復旧するための手順を定めている。図4〜図6を参照し
てその手順の概要を説明する。
【0058】図4はイニシエータの状態を示している。
図4において、状態1では、ライトコマンドW1〜W4
のライトORBと、リードコマンドR1〜R3のリード
ORBが発行されており、ライトコマンドW5,W6は
ライトI/O要求キュー202にとどめられた状態にあ
る。ターゲットにより1つのライトコマンドと2つのリ
ードコマンドとが処理され、イニシエータは状態2に遷
移する。処理されたコマンドに対応するORBはORB
リスト204からはずされ、空き領域となっている。こ
の状態では、ライトプリフェッチキューに空きが生じて
いるが、まだライトコマンドW5に対応するORBは発
行されていない。
【0059】ここでネットワーク上のエラーなどからバ
スリセットが発生する。バスリセットの処理が終えたな
ら、全てのORBをORBリストから消去する(状態
3)。ライトI/O要求キュー202ならびにリードI
/O要求キュー203は、バスリセットがあってもリセ
ットされることはない。
【0060】イニシエータは、コネクションを再設定し
た後、ライトI/O要求キューならびにリードI/O要
求キューを参照して、それらキューの内容から新たにO
RBを生成し、ターゲットに対して発行する。これが状
態4である。ORBの生成時に対応するコマンドに対し
て何等かのマークをしておけば、バスリセット直前の状
態を再現することができる。
【0061】また、図4には示されていないが、ステー
タスFIFOはバスリセットでは影響を受けないため、
特に復旧する必用はない。
【0062】<エラーの復旧(ターゲット)>図5は、
ターゲット側におけるバスリセット後の復旧の様子を示
す図である。イニシエータはORBリストを復旧させる
だけでその状態をバスリセット直前の状態に戻せるが、
ターゲットはリード/ライトコマンドに応じてバッファ
に対してリード/ライトを行うため、リード/ライト中
にバスリセットが発生した場合には、復旧後はその続き
を行わねばならない。そのために、ターゲットのリード
/ライト実行エージェントは、処理中のコマンドと、処
理中のバッファの位置を記憶している。
【0063】図5では例としてリードコマンドの場合を
示している。イニシエータがリードORBを発行し、タ
ーゲットはそれをリード実行エージェントによって処理
する。実行前に、リード実行エージェント106はこれ
から処理するリードORBのseq_IDフィールドを読み出
し、シーケンス識別子(Sequenceidentifier)として記憶
しておく。図5ではその値は「3」である。また、クラ
イアントのバッファにデータを書き込むに当たり、現在
書き込んでいるバッファのアドレスを実行ポインタ(Nex
texecpointer)として更新しつづける。図5ではその値
は「offset」である。これらの領域はバスリセットによ
って消去されないメモリ領域に確保される。
【0064】バスリセットが終了したなら、イニシエー
タはORBを改めて発行してくるため、リード実行エー
ジェントは、リードプリフェッチキューの先頭のORB
のseq_IDフィールドが、記憶されているシーケンス識別
子よりも古ければ、そのORBは既に処理は完了してい
るために、完了ステータスを返す。両者が一致すれば、
Nextexecpointerで示されるアドレスから書き込みを続
行する。
【0065】ライトコマンドについても同じ要領で復旧
される。
【0066】以上、本実施形態の印刷システムにおいて
用いられるコマンドおよびステータスについて説明し
た。次に、イニシエータおよびターゲットにおけるコマ
ンド及びステータスの処理手順を説明する。
【0067】<イニシエータのクライアントによるデー
タ転送要求>図13は、イニシエータのクライアントで
あるプリンタドライバ等から、ターゲットに対して、デ
ータを送信あるいは要求する際の手順を示している。
【0068】データ転送事項が発生したなら(ステップ
S1301)、そのために必用なコマンドがライトであ
るかリードであるか判定し(ステップS1302)、ラ
イトならばそのためのデータ転送バッファがあるか調べ
(ステップS1303)、また、ターゲットに渡すべき
送信データの準備ができているか調べて(ステップS1
304)、すべて準備できていれば、バッファのアドレ
スやサイズ等、必用な引き数を与えてライトコマンドを
作成し(ステップS1305)、ライト関数をコールす
る(ステップS1306)。
【0069】一方、リードコマンドであると判定されれ
ば、データを受けるための転送バッファがあるか調べ
(ステップS1307)、あればバッファのアドレスや
サイズ等、必用な引き数を与えてリードコマンドを作成
し(ステップS1308)、リード関数をコールする
(ステップS1309)。
【0070】例えば、データ転送事項がプリンタに対す
る印刷データの送信ならば、PDLなど、クライアント
レベルのコマンドやデータをバッファに用意し、ライト
コマンドを作成することになるし、データ転送事項がプ
リンタからの状態の読み出しであれば、その旨を示すク
ライアントレベルのコマンドを用意してライトコマンド
を作成するとともに、ターゲットからデータを受けるた
めのリードコマンドを作成する必用がある。また、ター
ゲットとの一連のデータ交換を行うに先立って、イニシ
エータのクライアントはリードコマンドを幾つか発行す
る。
【0071】図14は、イニシエータのクライアントが
下位すなわちSHTPの層から処理終了通知を受けた際
の処理手順である。まず、終了した処理がリードかライ
トか判定し(ステップS1401)、ライトであれば使
用したデータバッファを解放する(ステップS140
2)。一方、リードであれば、処理の終了はデータの受
信の完了であるから、受信したデータに対応した処理を
行い(ステップS1403)、データバッファを解放す
る(ステップS1404)。
【0072】<イニシエータのSHPT処理部による処
理>図15〜図18は、イニシエータのSHPT処理部
による処理手順である。図15(A)及び(B)は、そ
れぞれクライアントがコールするライト関数及びリード
関数の内容を示す。ライト関数では、ライトI/O要求
キューにライトコマンドを追加し、リード関数では、リ
ードI/O要求キューにリードコマンドを追加する。
【0073】(I/O要求キュー管理)図16(A),
(B)は、それぞれライトI/O要求キュー管理手順,
リードI/O要求キュー管理手順を示す。これらの手順
は、それぞれ単独のスレッドで行われる。両者の処理内
容は、管理対象がライトI/OキューとリードI/Oキ
ューとで異なるものの、同一であるため、ライトI/O
要求キュー管理手順のみを説明する。その説明のライト
I/O要求キューをリードI/O要求キューに、カウン
タCurrentWriteQUEをCurrentReadQUEに、参照番号のS
160XをS161Xに読み替えれば、リードI/O要
求キューの管理手順となる。
【0074】まず、ライトI/O要求キュー内にORB
化されていないコマンドがあるか調べる(ステップS1
601)。あれば、ターゲットのプリフェッチキューの
空き容量を示すカウンタCurrentWriteQUEが0より大き
いか、すなわち空きがあるか判定する(ステップS16
02)。空きがあればCurrentWriteQUEの値から1減じ
(ステップS1603)、ライトI/O要求キューに格
納されている、ORB化されていない先頭のコマンドを
基に、シーケンスID(Seq_ID)やSHPTコマンド(Fun
ction)を付加して、ORBを作成する(ステップS16
04)。
【0075】こうして作成したORBをORBリストに
つけ(ステップS1605)、ターゲットのドアベルに
書き込む、あるいは、ORBポインタにORBのアドレ
スを書き込む(ステップS1606)。このようにし
て、I/O要求キュー内のコマンドからORBが作成さ
れる。
【0076】(ステータスブロックに対する処理)図1
7は、ステータスブロックをターゲットから受けた際の
処理手順である。ORBに対する処理完了のステータス
ブロックを受けると、対応するORBをORBリストか
ら削除し(ステップS1701)、対応ORBがライト
かそれともリードか判定する(ステップS1702)。
ライトであれば、ライトI/O要求キューから、削除し
たORBの元となったコマンドを削除する(ステップS
1703)。そして、ターゲットで処理を終えた分だけ
プリフェッチキューが空いたはずなので、カウンタCurr
entWriteQUEに1加算する(ステップS1704)。最
後に、クライアントに処理の終了を通知する(ステップ
S1705)。クライアントはこれを受けて、図14の
処理を行うことになる。
【0077】一方、対応ORBがリードであると判定さ
れた場合には、リードI/O要求キューから、削除した
ORBの元となったコマンドを削除する(ステップS1
706)。そして、ターゲットで処理を終えた分だけプ
リフェッチキューが空いたはずなので、カウンタCurren
tReadQUEに1加算する(ステップS1707)。最後
に、クライアントに処理の終了を通知する(ステップS
1708)。
【0078】(エラー復旧処理)SHPT処理部におけ
る通常の処理は以上のとおりである。次にバスリセット
後などに復旧する手順を図18により説明する。バスリ
セットが生じてターゲットとのコネクションが切断され
てしまった場合、あらためてコネクションの再設定から
行わねばならない。
【0079】まず、新規のORBのリンク処理を中断し
(ステップS1801)、ORBリストを破棄する(ス
テップS1802)。この後コネクションの再接続命令
を出して(ステップS1803)、コネクションの確立
を調べ(ステップS1804)、コネクションが再度張
られたなら、ライトI/O要求キュー及びリードI/O
要求キュー内の先頭のコマンドから順に対応するORB
を作成する(ステップS1805)。作成されたORB
はORBリストにリンクされ(ステップS1806)、
ORBポインタにアドレスを書き込んで(ステップS1
807)、ターゲットにORBの発生を知らせる。
【0080】一方、コネクションが再設定できないまま
一定時間経過すると(ステップS1808)、ライトI
/O要求キュー及びリードI/O要求キュー内のコマン
ドをすべて破棄し(ステップS1809)、異常である
旨をクライアントに知らせて(ステップS1810)、
処理を終える。
【0081】異常の手順により、リセット後に、あらた
めてターゲットとのコネクションを確立し、リセット直
前のORBリストを復旧することができる。
【0082】<ターゲットによる処理>図19〜21
は、ORBを受けたターゲットによる処理手順である。
【0083】(フェッチエージェントによる処理)フェ
ッチエージェントはドアベルレジスタあるいはORBポ
インタに書き込みがあるとORBをフェッチする。ま
ず、ドアベルへの書き込みにより起動されたか判定し
(ステップS1901)、そうでなく、ORBポインタ
への書き込みにより起動されたのであればステップS1
905に進む。一方、ドアベルへの書き込みがあったな
らば、フラグNullflgをテストする(ステップS
1902)。このフラグは、ORBポインタに有効な値
がセットされていないことを示すフラグであり、Nul
lflgがオフであれば、ORBポインタには処理すべ
きORBのアドレスが書き込まれているから、ステップ
S1905へと進む。Nullflgがオンであれば、
現在のORBポインタで指されているORBのNext_ORB
フィールドの値を、ORBポインタへと書き込み(ステ
ップS1903)、Nullflgをオフにセットする
(ステップS1904)。
【0084】こうしてORBポインタに処理すべきOR
Bのアドレスが得られたなら、そのアドレスからORB
を読み出す(ステップS1905)。読み出したORB
のファンクションフィールドを参照して、そのSHPT
コマンドがライトであるかリードであるか判定する(ス
テップS1906)。ライトであればライトORBをラ
イトプリフェッチキューにつけ(ステップS190
7)、リードであればリードORBをリードプリフェッ
チキューにつける(ステップS1908)。
【0085】この後、処理を終えたORBのNext_ORBフ
ィールドを参照して、その内容がNULL、すなわちリンク
されているORBがなければ、フラグNullflgを
オンにして、ドアベルあるいはORBポインタへ書き込
みがあるまで待つ。一方、リンクされているORBがあ
れば、ORBポインタで指されているORBのNext_ORB
フィールドの値を、ORBポインタに書き込む(ステッ
プS1910)。ORBリストにリンクされているOR
B全てについてプリフェッチキューに入れるまで、この
手順を繰り返す。
【0086】このようにして、ORBリストのORBを
プリフェッチキューにいれる。また、ステップS190
6〜S1908の処理は、図1においてORBディスパ
ッチャとして説明した処理である。
【0087】(ライト実行エージェント)ライト実行エ
ージェントは、まずライトプリフェッチキューに未処理
のライトコマンドがあるか調べ(ステップS200
1)、あればNextreadpointerの指すORBをライトプ
リフェッチキューから取り出す(ステップS200
2)。なおNextreadpointerはキューの先頭のORBを
指し示すポインタである。ORBを読み出すと、そのO
RBのSeq_IDフィールドの値が、ライト実行エージェン
トが保持する変数Sequenceidentifierよりも小さい値で
あるか判定する(ステップS2003)。ただし、Seq_
ID及びSequenceidentifierはともに有限の桁数である。
そこで、Seq_ID及びSequenceidentifierがともにnビッ
トで表わされる場合、ステップS2003における比較
では、((2のn乗−1)<0(=2のn乗))と定め
ておく。
【0088】通常のシーケンスであれば、ひとつのOR
Bの処理終了後、Sequenceidentifierには後述のように
1加算される。また、SequenceidentifierとORBのSe
q_IDは同じ桁数であり、Seq_IDも1ずつ加算される。そ
のため、支障なく処理が進んでいる場合には、Sequence
identifierとORBのSeq_IDとは、ステップS2003
において一致しているはずである。したがって、正常に
処理が進めば、処理はステップS2003からステップ
S2004に移行する。
【0089】そこでは、クライアントがバッファを用意
してあるか調べ(ステップS2004)、用意できたな
ら、ORBのDataDescripterの値とライト実行エージェ
ントが保持するNextexecpointerに格納されたoffs
et値とを加えたアドレスから所定サイズのデータを読
み、クライアントが用意したバッファに格納する(ステ
ップS2005)。新たにORBの処理を行う場合に
は、offsetは0であるから、ORBにより指し示
されるバッファの先頭から読み出すことになる。また、
途中まで読み出されているバッファを続きから読む場合
には、offsetは、バッファ中における続きのアド
レスを示しているので、これを加算することで続きから
読み出しを続行できる。データをバッファに格納したな
ら、DataDescripterの値+offsetが次に読み出さ
れるアドレスを指すように、Nextexecpointerを更新す
る(ステップS2006)。このような読み出しを、O
RBのdata_sizeで示されるサイズ分に達するまで行う
(ステップS2007)。
【0090】こうして1つのORBの処理を終えると、
Sequenceidentifierに1加算して更新し(ステップS2
008)、Nextexecpointer(offset)を0に初
期化する(ステップS2009)。
【0091】処理を終えたなら、処理完了を通知するス
テータスブロックを作成し(ステップS2010)、ス
テータスFIFOに書き込み(ステップS2011)、
ターゲットのクライアントに受信完了を通知する(ステ
ップS2012)。
【0092】ステップS2003において、ORBのSe
q_IDがSequenceidentifierよりも小さい場合は、バスリ
セットなどにより、イニシエータが図18の手順でOR
Bリストを再生したような場合である。例えば、あるO
RBについて、ターゲットは処理を終え、Sequenceiden
tifierの値も更新していても、そのステータスブロック
がイニシエータに届いていない時点でバスリセットが発
生すると、イニシエータはそのORBもORBリストに
入れてしまう。この場合に、ORBのSeq_IDよりも実行
エージェントのSequenceidentifierの方が大きくなる。
この場合には、そのORBは処理を終えているため、ス
テップS2010以降によりステータスブロックをイニ
シエータに渡す。
【0093】(リード実行エージェント)リード実行エ
ージェントは、まずリードプリフェッチキューに未処理
のリードコマンドがあるか調べ(ステップS210
1)、あればNextreadpointerの指すORBをリードプ
リフェッチキューから取り出す(ステップS210
2)。このNextreadpointerは、ライト実行エージェン
トのそれと同じ名称ではあるが、それとは独立して備え
られている。なおNextreadpointerはキューの先頭のO
RBを指し示すポインタである。ORBを読み出すと、
そのORBのSeq_IDフィールドの値が、リード実行エー
ジェントが保持する変数Sequenceidentifierよりも小さ
い値であるか判定する(ステップS2103)。このSe
quenceidentifierも、ライト実行エージェントのそれと
同じ名称ではあるが、それとは独立して有する。Seq_ID
及びSequenceidentifierはともに有限の桁数である。そ
こで、Seq_ID及びSequenceidentifierがともにnビット
で表わされる場合、ステップS2103における比較で
は、((2のn乗−1)<0(=2のn乗))と定めて
おく。
【0094】通常のシーケンスであれば、ひとつのOR
Bの処理終了後、Sequenceidentifierには後述のように
1加算される。また、SequenceidentifierとORBのSe
q_IDは同じ桁数であり、Seq_IDも1ずつ加算される。そ
のため、支障なく処理が進んでいる場合には、Sequence
identifierとORBのSeq_IDとは、ステップS2003
において一致しているはずである。したがって、正常に
処理が進めば、処理はステップS2103からステップ
S2104に移行する。
【0095】そこでは、クライアントがデータを用意し
てあるか調べ(ステップS2104)、用意できたな
ら、ORBのDataDescripterの値とリード実行エージェ
ントが保持するNextexecpointerに格納されたoffs
et値とを加えたアドレスに、クライアントのデータを
所定サイズ書き込む(ステップS2105)。なお、こ
のNextexecpointerも、ライト実行エージェントのそれ
と同じ名称ではあるが、それとは別のポインタである。
新たにORBの処理を行う場合には、offsetは0
であるから、ORBにより指し示されるバッファの先頭
から書き込むことになる。また、途中まで書き込まれて
いるバッファを続きから書く場合には、offset
は、バッファ中における続きのアドレスを示しているの
で、これを加算することで続きから書き込みを続行でき
る。データをバッファに格納したなら、DataDescripter
の値+offsetが次に書き込まれるアドレスを指す
ように、Nextexecpointerを更新する(ステップS21
06)。このようなデータの書き込みを、クライアント
が用意したデータを書き込み終えるまで行う(ステップ
S2107)。
【0096】こうして1つのORBの処理を終えると、
Sequenceidentifierに1加算して更新し(ステップS2
108)、Nextexecpointer(offset)を0に初
期化する(ステップS2109)。
【0097】処理を終えたなら、処理完了を通知するス
テータスブロックを作成し(ステップS2110)、ス
テータスFIFOに書き込み(ステップS2111)、
ターゲットのクライアントに受信完了を通知する(ステ
ップS2112)。
【0098】ステップS2103において、ORBのSe
q_IDがSequenceidentifierよりも小さい場合は、バスリ
セットなどにより、イニシエータが図18の手順でOR
Bリストを再生したような場合であるので、ライト実行
エージェントと同様に、ステップS2110以降により
ステータスブロックをイニシエータに渡す。
【0099】<ターゲットへのデータライトシーケンス
>図22は、イニシエータ(ホストコンピュータ)から
ターゲット(プリンタ)へのライトを行う際のシーケン
ス例である。
【0100】なお、図中のSBP−2とは、SBP−2
規格で規定されたデータ、すなわちSBP−2で規定さ
れたフィールドを処理する処理層である。また、SHP
Tとは、SBP−2で規定されいない、ファンクション
ごとに定められた処理を行う処理層である。SHPTで
は、前述したフローチャートの手順を行う。SBP−2
は、その手順において、ORBのリンクやドアベルのラ
イト、ORBやステータスのSHPTへの引き渡し等の
機能を果たす。
【0101】まず、イニシエータのクライアントでデー
タ及びライトコマンドが、SHPTでORB(ここでは
ライトORB)が作成され、カウンタCurrentWriteQUE
が1減らされて、ORBのリンク要求がSBP−2に出
される(1901)。SBP−2ではORBをリンクし
てドアベルレジスタにライト要求を出す(1902)。
1394インタフェースにより、ドアベルレジスタが書
き込まれ(1903)、それがターゲットのSBP−2
に通知される(1904)。
【0102】通知を受けたSBP−2は、ORBリード
要求を1394インタフェースに出して(1905)、
システムメモリからORBが読み出される(190
6)。SHPTは、読み出されたORBの内容に応じて
対応キューに格納する(1907)。ここではライトコ
マンドORBなので、1394インタフェースに対して
データリード要求を出す(1908)。これに応じて、
指定されたアドレスからデータが読み出され、クライア
ントに渡される(1909)。クライアントは、この場
合画像の展開を行うラスタライザ等であり、データが展
開された画像であればそれはプリンタエンジンから印刷
出力されることになる。
【0103】処理が済むとライト実行エージェントから
SBP−2に対してステータスブロック送信要求が出さ
れ(1910)、ステータスブロックがイニシエータに
返される(1911)。イニシエータのSHTPは、こ
れを受けると対応ORBをリンクから削除し、空きキュ
ーカウンタを1増やす(1912)。
【0104】以上のシーケンスによりイニシエータから
ターゲットにデータが書き込まれる。
【0105】<ターゲットからのデータリードシーケン
ス>図23は、イニシエータ(ホストコンピュータ)か
らターゲット(プリンタ)のデータのリードを行う際の
シーケンス例である。
【0106】まず、イニシエータのクライアントでリー
ドコマンドが、SHPTでORB(ここではリードOR
B)が作成され、カウンタCurrentReadQUEが1減らされ
て、ORBのリンク要求がSBP−2に出される(19
01)。SBP−2ではORBをリンクしてドアベルレ
ジスタにライト要求を出す(1902)。1394イン
タフェースにより、ドアベルレジスタが書き込まれ(1
903)、それがターゲットのSBP−2に通知される
(1904)。
【0107】通知を受けたSBP−2は、ORBリード
要求を1394インタフェースに出して(1905)、
システムメモリからORBが読み出される(190
6)。SHPTは、読み出されたORBの内容に応じて
対応キューに格納する(1907)。
【0108】リード実行エージェントは、ここでイニシ
エータに渡すデータが発生するまで待つ。データが発生
すると、1394インタフェースに対してデータライト
要求を出す(2008)。これに応じて、指定されたア
ドレスに用意されたデータが書き込まれる(200
9)。
【0109】処理が済むとリード実行エージェントから
SBP−2に対してステータスブロック送信要求が出さ
れ(1910)、ステータスブロックがイニシエータに
返される(1911)。イニシエータのSHTPは、こ
れを受けると対応ORBをリンクから削除し、空きキュ
ーカウンタを1増やす(1912)。
【0110】このシーケンスによりイニシエータからタ
ーゲットのデータが読み出される。
【0111】以上のようにして、イニシエータとターゲ
ットとの間で、簡素な制御手順によりデータの交換が双
方向に行える。すなわち、イニシエータは所望のときに
所望のデータをターゲットに渡すことができる。また、
ターゲットは、イニシエータから渡されたデータをター
ゲット自身の都合に合わせて読み出すことができる。ま
た、ターゲットはイニシエータが準備していさえすれ
ば、自発的であろうと、あるいはイニシエータからの要
求であろうと、何時でもイニシエータにデータを渡すこ
とができる。また、バスリセットが発生しても、バスリ
セット直前の状態からの処理の続行を保証することがで
きる。
【0112】
【他の実施形態】さらに、図7に示したように、ORB
にはPSID,SSIDというチャネル識別子のフィー
ルドを備えている。そのため、SHPT処理部及びOR
Bディスパッチャがチャネル識別子を識別して、チャネ
ルごとに独立したキュー及び実行エージェントを用いて
ORBの生成・処理を行えば、マルチチャネルを実現す
ることができる。この場合、1つの機器であっても、そ
こに含まれる複数のクライアントそれぞれに1つのチャ
ネルを割り当てることで、クライアントごとに非同期の
通信を行わせることができる。このため、例えばデジタ
ル複合機であれば、それが有するスキャナやプリンタそ
れぞれについてクライアントとなるアプリケーションを
設けておけば、それと接続されたホストコンピュータか
らは、あたかもそれぞれの機能を独立した機器であるか
のように使用することができる。フローチャートで示し
たように、各キューの管理や実行エージェントは独立し
たプロセスであるために、マルチチャネル化は容易に行
うことができる。
【0113】なお、本発明は、複数の機器(例えばホス
トコンピュータ,インタフェイス機器,リーダ,プリン
タなど)から構成されるシステムに適用しても、一つの
機器からなる装置(例えば、複写機,ファクシミリ装置
など)に適用してもよい。
【0114】また、本発明の目的は、イニシエータとし
て図13〜図18の手順のプログラムコードを記録した
記憶媒体をコンピュータに供給し、そのコンピュータ
(またはCPUやMPU)が記憶媒体に格納されたプロ
グラムコードを読出し実行することによっても達成され
る。またターゲットも、図19〜図21の手順のプログ
ラムコードを記録した記憶媒体をコンピュータに供給
し、そのコンピュータ(またはCPUやMPU)が記憶
媒体に格納されたプログラムコードを読出し実行するこ
とによって実現できる。
【0115】この場合、記憶媒体から読出されたプログ
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。
【0116】プログラムコードを供給するための記憶媒
体としては、例えば、フロッピディスク,ハードディス
ク,光ディスク,光磁気ディスク,CD−ROM,CD
−R,磁気テープ,不揮発性のメモリカード,ROMな
どを用いることができる。
【0117】また、コンピュータが読出したプログラム
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれる。
【0118】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれる。
【0119】また、記憶媒体から読み出されたプログラ
ムコードを実行してイニシエータとなる主体はコンピュ
ータに限らず、データ転送機器であって、SBP−2の
ログイン能力があれば、どのような機器であっても良
い。
【0120】
【発明の効果】以上説明したように、本発明によれば、
イニシエータとターゲットとの間において、1回のログ
インで非同期な双方向通信を可能とし、また、データの
交換に必要なプロセスやメモリといった資源を効率的に
利用できる。
【0121】また、IEEE1394インターフェース
を利用しているために、ターゲット側へのデータ転送
を、ターゲットがその都合に応じて読み出すことで行う
ことができ、イニシエータがターゲットの都合によって
データ転送に占有されることを防止できる。
【0122】また、SBP−2プロトコルを利用してい
るため、ターゲットでキューされるのはORBだけで、
実際に転送されるデータそのものは処理待ちの間イニシ
エータに格納されている。このため、ターゲットのメモ
リ資源を小容量化できる。
【0123】また、簡単にマルチチャネルを実現でき
る。
【0124】また、最新の処理状態を保持することで、
バスリセットが発生しても、バスリセット後に、バスリ
セット直前の状態から処理を再開することができ、処理
の正常な続行を保証することができる。
【0125】
【図面の簡単な説明】
【図1】ターゲット(プリンタ)のブロック図である。
【図2】イニシエータ(ホストコンピュータ)のブロッ
ク図である。
【図3】イニシエータとターゲットとの間におけるキュ
ーの状態の一例を示す図である。
【図4】イニシエータにおけるバスリセット後の復旧の
様子の例を示す図である。
【図5】ターゲットにおけるバスリセット後の復旧の様
子の例を示す図である。
【図6】イニシエータにおいてORBリストからORB
を取り外す様子の例を示す図である。
【図7】ORB一般のフォーマットを示す図である。
【図8】ライトコマンドORBのフォーマットを示す図
である。
【図9】リードコマンドORBのフォーマットを示す図
である。
【図10】ステータスブロック一般のフォーマットを示
す図である。
【図11】ライトステータスブロックのフォーマットを
示す図である。
【図12】リードステータスブロックのフォーマットを
示す図である。
【図13】イニシエータのクライアントによる、データ
転送要求の発生時の処理手順のフローチャートである。
【図14】イニシエータのクライアントによる、SHT
Pからの処理終了通知受信時の処理手順のフローチャー
トである。
【図15】イニシエータのSHTP処理部により実行さ
れる、クライアントからコールされるライト関数及びリ
ード関数のフローチャートである。
【図16】イニシエータのSHTP処理部により実行さ
れる、ライトI/O要求キュー及びリードI/O要求キ
ューの管理手順のフローチャートである。
【図17】イニシエータのSHTP処理部により実行さ
れる、ステータスブロック受信時の処理手順のフローチ
ャートである。
【図18】イニシエータのSHTP処理部により実行さ
れる、バスリセット直後の復旧処理手順のフローチャー
トである。
【図19】ドアベルレジスタあるいはORBポインタに
書き込みが行われた際のターゲットのフェッチエージェ
ントによる処理手順のフローチャートである。
【図20】ライト実行エージェントによる処理手順のフ
ローチャートである。
【図21】リード実行エージェントによる処理手順のフ
ローチャートである。
【図22】イニシエータ(ホストコンピュータ)からタ
ーゲット(プリンタ)へのデータライト時のシーケンス
の図である。
【図23】イニシエータ(ホストコンピュータ)からタ
ーゲット(プリンタ)へのデータリード時のシーケンス
の図である。
【図24】IEEE1394インターフェースを用いた
プリンタシステムのハードウエア構成図である。
【符号の説明】
1 CPU 2 RAM 3 ROM 4 システムバス 12 CPU 13 ROM 19 RAM 101 フェッチエージェント 103,105 プリフェッチキュー 104 ライト実行エージェント 106 リード実行エージェント 108 ターゲット側クライアント 109 1394インターフェース 110 バスインターフェース 201 SHPT処理部 202 ライトI/O要求キュー 203 リードI/O要求キュー 204 ORBリスト 205 ステータスFIFO 206 イニシエータ側クライアント 207 ライトバッファ 208 リードバッファ

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 イニシエータからターゲットに対して命
    令を発行することで、前記イニシエータの有する記憶領
    域に対して、前記ターゲットによりデータの書き込みあ
    るいは読み出しを行わせてデータを交換する通信制御方
    法であって、 前記イニシエータは、ターゲットに対して発行した命令
    を、それぞれの命令について処理を完了した旨の処理完
    了通知をターゲットから受けるまで、再発行可能な状態
    で発行済の命令を保持することを特徴とする通信制御方
    法。
  2. 【請求項2】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記イニシエ
    ータは、ターゲットに対して発行した命令と、その命令
    により書き込みあるいは読み出しが行われる記憶領域と
    の対応づけを保持することを特徴とする請求項1に記載
    の通信制御方法。
  3. 【請求項3】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記イニシエ
    ータは、ターゲットに対して発行した命令により書き込
    みあるいは読み出しが行われる記憶領域の内容を保持す
    ることを特徴とする請求項1に記載の通信制御方法。
  4. 【請求項4】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記イニシエ
    ータは、再発行可能な状態で保持されている命令を、タ
    ーゲットに対して再発行することを特徴とする請求項1
    に記載の通信制御方法。
  5. 【請求項5】 前記ターゲットは、イニシエータから発
    行された命令の種類ごとに、実行中の命令の識別子と、
    実行中の命令に対して書き込みあるいは読み込みを行っ
    ている記憶領域のオフセットを保持することを特徴とす
    る請求項1に記載の通信制御方法。
  6. 【請求項6】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記ターゲッ
    トは、イニシエータから発行された命令の識別子と保持
    されている識別子とを比較し、一致している場合には、
    その命令にしたがって、保持されている記憶領域のオフ
    セットから読み出しあるいは書き込みを行い、一致して
    いない場合には、イニシエータに当該命令に対する処理
    完了通知を、イニシエータの記憶領域に対する読み出し
    あるいは書き込みを行わずに発行することを特徴とする
    請求項1に記載の通信制御方法。
  7. 【請求項7】 イニシエータからターゲットに対して命
    令を発行することで、前記イニシエータの有する記憶領
    域に対して、前記ターゲットによりデータの書き込みあ
    るいは読み出しを行わせてデータを交換する通信システ
    ムであって、 前記イニシエータは、ターゲットに対して発行した命令
    を、それぞれの命令について処理を完了した旨の処理完
    了通知をターゲットから受けるまで、再発行可能な状態
    で発行済の命令を保持することを特徴とする通信システ
    ム。
  8. 【請求項8】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記イニシエ
    ータは、ターゲットに対して発行した命令と、その命令
    により書き込みあるいは読み出しが行われる記憶領域と
    の対応づけを保持することを特徴とする請求項7に記載
    の通信システム。
  9. 【請求項9】 前記イニシエータとターゲットとの間の
    接続が一旦切断されて再接続された場合、前記イニシエ
    ータは、ターゲットに対して発行した命令により書き込
    みあるいは読み出しが行われる記憶領域の内容を保持す
    ることを特徴とする請求項7に記載の通信システム。
  10. 【請求項10】 前記イニシエータとターゲットとの間
    の接続が一旦切断されて再接続された場合、前記イニシ
    エータは、再発行可能な状態で保持されている命令を、
    ターゲットに対して再発行することを特徴とする請求項
    7に記載の通信システム。
  11. 【請求項11】 前記ターゲットは、イニシエータから
    発行された命令の種類ごとに、実行中の命令の識別子
    と、実行中の命令に対して書き込みあるいは読み込みを
    行っている記憶領域のオフセットを保持することを特徴
    とする請求項7に記載の通信システム。
  12. 【請求項12】 前記イニシエータとターゲットとの間
    の接続が一旦切断されて再接続された場合、前記ターゲ
    ットは、イニシエータから発行された命令の識別子と保
    持されている識別子とを比較し、一致している場合に
    は、その命令にしたがって、保持されている記憶領域の
    オフセットから読み出しあるいは書き込みを行い、一致
    していない場合には、イニシエータに当該命令に対する
    処理完了通知を、イニシエータの記憶領域に対する読み
    出しあるいは書き込みを行わずに発行することを特徴と
    する請求項7に記載の通信システム。
  13. 【請求項13】 接続されたターゲットに対して命令を
    発行することで、ターゲットによりデータの書き込みあ
    るいは読み出しを行わせてデータを交換する通信制御装
    置であって、 ターゲットにより読み書きさせる記憶領域を含むメモリ
    と、 ターゲットに対して発行した命令を、それぞれの命令に
    ついて処理を完了した旨の処理完了通知をターゲットか
    ら受けるまで、再発行可能な状態で発行済の命令を保持
    する保持手段とを備えることを特徴とする通信制御装
    置。
  14. 【請求項14】 前記ターゲットに対して発行した命令
    と、当該命令に基づいてターゲットにより読み書きさせ
    る前記記憶領域との対応づけを保持する保持手段を更に
    備えることを特徴とする請求項13に記載の通信制御装
    置。
  15. 【請求項15】 前記ターゲットとの間の接続が一旦切
    断されて再接続された場合、前記保持手段により再発行
    可能な状態で保持されている命令を、ターゲットに対し
    て再発行することを特徴とする請求項13に記載の通信
    制御装置。
  16. 【請求項16】 接続されたイニシエータから発行され
    る命令に基づいてイニシエータの記憶領域に対してデー
    タの書き込みあるいは読み出しを行ってデータを交換す
    る通信制御装置であって、 前記イニシエータから発行された命令の種類ごとに、実
    行中の命令の識別子を保持する命令保持手段と、 実行中の命令に対して書き込みあるいは読み込みを行っ
    ている記憶領域のオフセットを保持するオフセット保持
    手段とを備えることを特徴とする通信制御装置。
  17. 【請求項17】 前記イニシエータとの間の接続が一旦
    切断されて再接続された場合、前記イニシエータから発
    行された命令の識別子と前記命令保持手段により保持さ
    れている識別子とを比較し、一致している場合には、そ
    の命令にしたがって、前記オフセット保持手段により保
    持されている記憶領域のオフセットから読み出しあるい
    は書き込みを行い、一致していない場合には、イニシエ
    ータに当該命令に対する処理完了通知を、イニシエータ
    の記憶領域に対する読み出しあるいは書き込みを行わず
    に発行することを特徴とする請求項16に記載の通信制
    御装置。
  18. 【請求項18】 コンピュータにより、それに接続され
    たターゲットに対して命令を発行することで、ターゲッ
    トによりデータの書き込みあるいは読み出しを行わせて
    データを交換するためのプログラムを格納するコンピュ
    ータ可読記憶媒体であって、前記プログラムにより、 ターゲットに対して発行した命令を、それぞれの命令に
    ついて処理を完了した旨の処理完了通知をターゲットか
    ら受けるまで、再発行可能な状態で発行済の命令を保持
    する保持手段と、 前記ターゲットに対して発行した命令と、当該命令に基
    づいてターゲットにより読み書きさせる記憶領域との対
    応づけを保持する保持手段と、 前記ターゲットとの間の接続が一旦切断されて再接続さ
    れた場合、前記保持手段により再発行可能な状態で保持
    されている命令を、ターゲットに対して再発行する手段
    とを実現することを特徴とする記憶媒体。
  19. 【請求項19】 コンピュータにより、それに接続され
    たイニシエータから発行される命令に基づいてイニシエ
    ータの記憶領域に対してデータの書き込みあるいは読み
    出しを行ってデータを交換するためのプログラムを格納
    するコンピュータ可読の記憶媒体であって、前記プログ
    ラムにより、 前記イニシエータから発行された命令の種類ごとに、実
    行中の命令の識別子を保持する命令保持手段と、 実行中の命令に対して書き込みあるいは読み込みを行っ
    ている記憶領域のオフセットを保持するオフセット保持
    手段と、 前記イニシエータとの間の接続が一旦切断されて再接続
    された場合、前記イニシエータから発行された命令の識
    別子と前記命令保持手段により保持されている識別子と
    を比較し、一致している場合には、その命令にしたがっ
    て、前記オフセット保持手段により保持されている記憶
    領域のオフセットから読み出しあるいは書き込みを行
    い、一致していない場合には、イニシエータに当該命令
    に対する処理完了通知を、イニシエータの記憶領域に対
    する読み出しあるいは書き込みを行わずに発行する手段
    とを実現することを特徴とする記憶媒体。
JP13399498A 1998-05-15 1998-05-15 通信制御方法及び装置及び通信システム Expired - Fee Related JP4111472B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP13399498A JP4111472B2 (ja) 1998-05-15 1998-05-15 通信制御方法及び装置及び通信システム
US09/310,952 US6477587B1 (en) 1998-05-15 1999-05-13 Command-based communications between an initiator and a target
EP19990303764 EP0957433B1 (en) 1998-05-15 1999-05-14 Communication control method and apparatus
DE69938988T DE69938988D1 (de) 1998-05-15 1999-05-14 Datenübertragungssteuerverfahren und Vorrichtung
US10/238,675 US6701386B2 (en) 1998-05-15 2002-09-11 Identifier based data communication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13399498A JP4111472B2 (ja) 1998-05-15 1998-05-15 通信制御方法及び装置及び通信システム

Publications (2)

Publication Number Publication Date
JPH11327815A true JPH11327815A (ja) 1999-11-30
JP4111472B2 JP4111472B2 (ja) 2008-07-02

Family

ID=15117914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13399498A Expired - Fee Related JP4111472B2 (ja) 1998-05-15 1998-05-15 通信制御方法及び装置及び通信システム

Country Status (4)

Country Link
US (2) US6477587B1 (ja)
EP (1) EP0957433B1 (ja)
JP (1) JP4111472B2 (ja)
DE (1) DE69938988D1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937355B1 (en) 1999-03-19 2005-08-30 Seiko Epson Corporation Data communications apparatus for resuming data transfer after interruption
JP2007030190A (ja) * 2005-07-22 2007-02-08 Ricoh Co Ltd 画像形成装置、利用枚数制限サーバ、印刷枚数管理方法、印刷枚数管理プログラム、印刷枚数管理プログラムを記録した記録媒体
JP2018506085A (ja) * 2015-12-14 2018-03-01 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4109770B2 (ja) * 1998-12-02 2008-07-02 キヤノン株式会社 通信制御方法及び機器
JP2001287414A (ja) * 2000-04-05 2001-10-16 Sony Corp データ変換装置及び方法、印刷装置及び方法、印刷制御装置及び方法、印刷システム及び印刷方法、データ伝送方法
JP2002318777A (ja) * 2001-04-19 2002-10-31 Matsushita Electric Ind Co Ltd 高速シリアルインターフェース用のコマンド発行装置
US6601119B1 (en) * 2001-12-12 2003-07-29 Lsi Logic Corporation Method and apparatus for varying target behavior in a SCSI environment
JP4264924B2 (ja) * 2002-06-07 2009-05-20 ソニーマニュファクチュアリングシステムズ株式会社 データ転送方法
US6901463B2 (en) * 2003-03-05 2005-05-31 Sun Microsystems, Inc. Method and device for linking work requests with completion queue entries
US7366957B2 (en) * 2003-07-31 2008-04-29 Lsi Corporation Method and apparatus for controlling SAS/fibre target behavior from a host
US7669028B2 (en) * 2006-02-07 2010-02-23 International Business Machines Corporation Optimizing data bandwidth across a variable asynchronous clock domain
US9258391B2 (en) * 2009-05-29 2016-02-09 Canon Kabushiki Kaisha Processing method and apparatus
CN104615388B (zh) * 2013-11-01 2017-12-22 精工爱普生株式会社 打印控制系统
IN2014DE02931A (ja) 2013-11-01 2015-06-26 Seiko Epson Corp
JP6464211B2 (ja) * 2017-02-03 2019-02-06 ファナック株式会社 プログラマブルコントローラ
US11068214B2 (en) * 2017-12-19 2021-07-20 Kyocera Document Solutions, Inc. Printing computing device for printing PPL jobs having video data and methods for use with a printing system for printing PPL jobs having video data
CN109712268B (zh) * 2018-12-13 2022-01-04 北京遥测技术研究所 一种高速飞行器黑障区数据测量处理方法和处理器

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868742A (en) 1984-06-20 1989-09-19 Convex Computer Corporation Input/output bus for system which generates a new header parcel when an interrupted data block transfer between a computer and peripherals is resumed
US4644533A (en) 1985-05-06 1987-02-17 American Telephone & Telegraph Company Packet switch trunk circuit queueing arrangement
US5050066A (en) * 1988-10-14 1991-09-17 Intel Corporation Apparatus with a single memory and a plurality of queue counters for queuing requests and replies on a pipelined packet bus
DE69128615T2 (de) 1990-10-03 1998-04-23 Fujitsu Ltd Sendesteuerungssystem für eingangs/ausgangsbefehle in einem datenverarbeitungssystem
JPH04192030A (ja) * 1990-11-27 1992-07-10 Canon Inc プリンタバッファ装置
US5386524A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation System for accessing information in a data processing system
JP3002056B2 (ja) 1992-06-23 2000-01-24 キヤノン株式会社 プリンタ装置及び該装置における印刷制御方法
AU5169093A (en) 1992-10-02 1994-04-26 Compaq Computer Corporation Method for improving scsi operations by actively patching scsi processor instructions
FR2708763B1 (fr) * 1993-06-30 2002-04-05 Intel Corp Dispositif de mémoire flash, procédé et circuit de traitement d'un ordre d'utilisateur dans un dispositif de mémoire flash et système d'ordinateur comprenant un dispositif de mémoire flash.
US5625800A (en) * 1994-06-30 1997-04-29 Adaptec, Inc. SCB array external to a host adapter integrated circuit
US5548791A (en) 1994-07-25 1996-08-20 International Business Machines Corporation Input/output control system with plural channel paths to I/O devices
JPH08195764A (ja) * 1994-11-15 1996-07-30 Ricoh Co Ltd Lanインタフェイス装置
JP3315291B2 (ja) 1995-05-18 2002-08-19 株式会社リコー 画像形成ネットワーク装置
US5835721A (en) * 1995-08-21 1998-11-10 Apple Computer, Inc. Method and system for data transmission over a network link between computers with the ability to withstand temporary interruptions
US6055598A (en) * 1996-09-26 2000-04-25 Vlsi Technology, Inc. Arrangement and method for allowing sequence-independent command responses across a computer bus bridge
US6081849A (en) 1996-10-01 2000-06-27 Lsi Logic Corporation Method and structure for switching multiple contexts in storage subsystem target device
TW355762B (en) * 1996-12-26 1999-04-11 Toshiba Co Ltd Checkpoint rollback I/O control device and I/O control method
US5815677A (en) * 1996-12-31 1998-09-29 Compaq Computer Corporation Buffer reservation method for a bus bridge system
JP4086345B2 (ja) * 1997-09-09 2008-05-14 キヤノン株式会社 通信制御方法及び装置及び通信システム
US6240474B1 (en) * 1997-09-16 2001-05-29 International Business Machines Corporation Pipelined read transfers
JPH11194963A (ja) * 1997-12-26 1999-07-21 Fujitsu Ltd コマンド実行監視方法、及び、コマンド実行監視装置
US6895003B1 (en) 1998-02-24 2005-05-17 Canon Kabushiki Kaisha Communication system, apparatus, and method in which data transmission is interrupted for a bus reset
US6523058B1 (en) * 1998-09-29 2003-02-18 Stmicroelectronics Inc. State machine driven transport protocol interface
US6243778B1 (en) * 1998-10-13 2001-06-05 Stmicroelectronics, Inc. Transaction interface for a data communication system
US6185632B1 (en) * 1998-10-19 2001-02-06 Hewlett-Packard Company High speed communication protocol for IEEE-1394 including transmission of request and reply writes to a datagram-FIFO-address to exchange commands to end a job
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6363438B1 (en) * 1999-02-03 2002-03-26 Sun Microsystems, Inc. Method of controlling DMA command buffer for holding sequence of DMA commands with head and tail pointers
US6286074B1 (en) * 1999-03-24 2001-09-04 International Business Machines Corporation Method and system for reading prefetched data across a bridge system
US6301639B1 (en) * 1999-07-26 2001-10-09 International Business Machines Corporation Method and system for ordering priority commands on a commodity disk drive

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937355B1 (en) 1999-03-19 2005-08-30 Seiko Epson Corporation Data communications apparatus for resuming data transfer after interruption
JP2007030190A (ja) * 2005-07-22 2007-02-08 Ricoh Co Ltd 画像形成装置、利用枚数制限サーバ、印刷枚数管理方法、印刷枚数管理プログラム、印刷枚数管理プログラムを記録した記録媒体
JP2018506085A (ja) * 2015-12-14 2018-03-01 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタ内のロック管理方法、ロックサーバ及びクライアント
US10257282B2 (en) 2015-12-14 2019-04-09 Huawei Technologies Co., Ltd. Lock management method in cluster, lock server, and client
US10609150B2 (en) 2015-12-14 2020-03-31 Huawei Technologies Co., Ltd. Lock management method in cluster, lock server, and client

Also Published As

Publication number Publication date
US6477587B1 (en) 2002-11-05
DE69938988D1 (de) 2008-08-14
EP0957433B1 (en) 2008-07-02
US6701386B2 (en) 2004-03-02
JP4111472B2 (ja) 2008-07-02
US20030014564A1 (en) 2003-01-16
EP0957433A2 (en) 1999-11-17
EP0957433A3 (en) 2001-05-16

Similar Documents

Publication Publication Date Title
US7110831B2 (en) Communication control method, communication system, print control apparatus, printing apparatus, host apparatus, peripheral apparatus, and storage medium
US6647016B1 (en) Communication control method, communication control apparatus, and storage medium
US7296095B2 (en) Communication control method and apparatus, and communication system
JPH11327815A (ja) 通信制御方法及び装置及び通信システム
US20060242258A1 (en) File sharing system, file sharing program, management server and client terminal
JP2004341728A (ja) 印刷装置、印刷システム及びキャンセル方法
EP1033658A2 (en) Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with said two communication apparatus
JP3588416B2 (ja) 印刷システム、印刷サーバ装置及び端末装置
JP3799741B2 (ja) バスコントローラ
JP4307467B2 (ja) 通信制御方法及び通信システム
JP2010009147A (ja) 情報処理装置および情報処理方法、プログラム
JP2004126943A (ja) 印刷処理装置、印刷処理方法及び印刷処理プログラム
JP2000181662A (ja) 分散印刷システムおよびアプリケーションサーバ装置ならびに印刷サーバ装置
JP2000341361A (ja) 情報転送方法及び情報転送プログラムを記録した記録媒体
JP2000293381A (ja) データ転送装置及び記憶媒体
JP2003186821A (ja) データ処理システム
JPH11237996A (ja) 計算機間のデータ連携方法
JPS6263348A (ja) リモ−トフアイルコピ−方式
JPH10307729A (ja) 入出力先切替システム
JPH11353249A (ja) ファイルシステムおよびファイル転送方法
JPH11149432A (ja) データ転送処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050516

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20050516

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050516

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070612

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: 20080404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080407

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110418

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140418

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees