JP4109983B2 - 通信システム - Google Patents

通信システム Download PDF

Info

Publication number
JP4109983B2
JP4109983B2 JP2002373106A JP2002373106A JP4109983B2 JP 4109983 B2 JP4109983 B2 JP 4109983B2 JP 2002373106 A JP2002373106 A JP 2002373106A JP 2002373106 A JP2002373106 A JP 2002373106A JP 4109983 B2 JP4109983 B2 JP 4109983B2
Authority
JP
Japan
Prior art keywords
command
node
data
orb
commands
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
Application number
JP2002373106A
Other languages
English (en)
Other versions
JP2004207908A (ja
JP2004207908A5 (ja
Inventor
耕司 福長
敦 中村
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 JP2002373106A priority Critical patent/JP4109983B2/ja
Priority to US10/654,025 priority patent/US7346714B2/en
Publication of JP2004207908A publication Critical patent/JP2004207908A/ja
Publication of JP2004207908A5 publication Critical patent/JP2004207908A5/ja
Application granted granted Critical
Publication of JP4109983B2 publication Critical patent/JP4109983B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、IEEE1394等のインターフェースで接続される通信システムに関するものである。
【0002】
【従来の技術】
セントロニクス、USB、そしてIEEE1394等の各種インターフェースにおいてホストとデバイスの1対1接続で通信を行なう場合、ホスト−デバイス間では、デバイスの各種機能を制御するために通信プロトコルの1セッション中に複数の論理チャネル接続を樹立し、チャネルごとにデータ転送を行なう。
【0003】
IEEE1394上のデータ通信プロトコルであるSBP−2は、ひとつのイニシエータとひとつのターゲットの対から構成されるひとつのロジカルユニットにおいて、データ転送の単位であるORB1個に対して1つのデータバッファが参照される。そのため、片方向の単一データチャネルあるいは片方向半二重のデータ通信を行なう仕組みになっており、複数論理チャネルを実現するのは困難である。現在規格策定中のSBP−2の機能拡張版であるSBP−3においてはこの点に注目し、ロジカルユニットにおけるデータ転送の単位であるORBに対して2つのデータバッファを参照できるようにして1ロジカルユニットにつき2つのデータ転送チャネルを実現することを可能とする拡張が行なわれた。
【0004】
【発明が解決しようとする課題】
しかしながらSBP−3のデータ転送においては2つのデータ転送チャネルのフローコントロールはあくまでもORB単位で行なわれるため、何らかの理由によりどちらかのデータ転送チャネルにおいてデータの送受信が出来なくなった場合、またどちらかのデータ転送チャネルのデータ転送が他のチャネルよりも遅い場合、速いほうのチャネルが遅いチャネルの影響を受けてしまう。これは、片方のデータバッファに対するアクセスが正常終了しても、もう片方のデータバッファへのアクセスが完了しないとそのORBに対する完了通知(ステータスブロック)をSBP−3のイニシエータに対して通知できないためで、ロジカルユニットとしてのデータ転送が滞ってしまう為である。
【0005】
また1つのORBに2つのデータバッファとコマンドを配置することが出来るコマンドセットをSBP−3で実現するような場合、ターゲットデバイスによっては各コマンドが独立した条件に従って実行されることでより効率的なデータ転送を行うことが出来る場合がある。
【0006】
本発明は上記従来例に鑑みてなされたもので、コマンドごとに独立した条件を設定することを可能とし、コマンドごとに設定された条件に応じて実行する通信システムを提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するために本発明の通信システムは次の構成を備える。
【0008】
一次側装置において、1つのコマンドブロックに複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てて二次側装置に引き渡し、二次側装置において、コマンドブロックに含まれる複数のコマンドを独立して実行する通信システムであって、
前記一次側装置は、前記各データバッファに対応した複数のコマンドそれぞれに対して独立した条件を設定し、当該独立した条件がそれぞれ設定された複数のコマンドを含む1つのコマンドブロックを作成し、作成された前記1つのコマンドブロックを前記二次側装置に送信し、
前記二次側装置は、前記一次側装置から送信された前記1つのコマンドブロックを受信し、当該コマンドブロックに含まれる複数のコマンドを、それぞれのコマンドに設定されている条件に応じて実行する。
【0009】
【発明の実施の形態】
図1は、本発明を最もよくあらわす図であり、IEEE1394で接続されたホストコンピュータ(以下ホスト)1−aとプリンタ1−bを表している。
【0010】
コンピュータAとプリンタBの通信は、IEEE1394インターフェース上で使われる代表的なデータ転送プロトコルであるSBP(Serial Bus Protocol)−3(改)プロトコルを使って行なわれ、ホストープリンタ間のデータ転送を行なうための通信チャネルとしてLUN0が予め定められている。なおSBP−3(改)プロトコルは標準化されているSBP−3に若干の変更を施したもので、その概要は後述する。
【0011】
本実施形態では、SBP−3改プロトコル上において、イニシエータのクラスドライバ101(本実施形態ではプリンタクラス)と、ターゲットのコマンド処理部103との間で定義されたプロトコル層が定義されており、さらにその上に、イニシエータ上のプリンタドライバ101とターゲット上のPDL処理部104との間において、アプリケーション層のプロトコルが定義されている。アプリケーション層における取り決めは、ページ記述言語(PDL)の定義がその中心となる。中間層は、SBP−3とアプリケーション層との間にあってデバイスの種類等に応じて定義され、本実施形態ではデバイスがプリンタであるとして定義されている。この層における処理手順についても後述する。
【0012】
〈IEEE1394の技術の概要〉
以下、本実施例のデジタルインタフェースに適用されるIEEE1394−1995規格の技術について簡単に説明する。尚、IEEE1394−1995規格(以下、IEEE1394規格)についての詳細は、1996年の8月30日にIEEE(The Institute of Electrical and Electronics Engineers, Inc.)から出版された「IEEE Standard for a High Performance Serial Bus」に記述されている。
【0013】
(1)概要
図2にIEEE1394規格に準拠したデジタルインタフェース(以下、1394インタフェース)を具備するノードにより構成される通信システム(以下、1394ネットワーク)の一例を示す。1394ネットワークは、シリアルデータの通信可能なバス型ネットワークを構成するものである。
【0014】
図2において、各ノードA〜Fは、IEEE1394規格に準拠した通信ケーブルを介して接続されている。これらのノードA〜Hは、例えば、PC(Personal Computer)、デジタルVTR(Video Tape Recorder)、DVD(Digital Video Disc)プレーヤ、デジタルカメラ、ハードディスク、モニタ等の電子機器である。
【0015】
1394ネットワークの接続方式は、ディジーチェーン方式とノード分岐方式とに対応しており、自由度の高い接続を可能としている。
【0016】
又、1394ネットワークでは、例えば、既存の機器を削除したり、新たな機器を追加したり、既存の機器の電源をON/OFFしたりした場合に、自動的にバスリセットを行う。このバスリセットを行うことにより、1394ネットワークは、新たな接続構成の認識と各機器に対するID情報の割り当てとを自動的に行うことができる。この機能によって、1394ネットワークは、ネットワークの接続構成を常時認識することができる。
【0017】
又、1394ネットワークは、他の機器から転送されたデータを中継する機能を有している。この機能により、全ての機器がバスの動作状況を把握することができる。
【0018】
又、1394ネットワークは、Plug&Playと呼ばれる機能を有している。この機能により、全ての機器の電源をOFFにすることなく、接続するだけで自動に接続機器を認識することができる。
【0019】
又、1394ネットワークは、100/200/400Mbpsのデータ転送速度に対応している。上位のデータ転送速度を持つ機器は、下位のデータ転送速度をサポートすることができるため、異なるデータ転送速度に対応する機器同士を接続することができる。
【0020】
更に、1394ネットワークは、2つの異なるデータ転送方式(即ち、Asynchronous転送モードとIsochronous転送モード)に対応している。
【0021】
Asynchronous転送モードは、必要に応じて非同期に転送することが要求されるデータ(即ち、コントロール信号やファイルデータ等)を転送する際に有効である。又、Isochronous転送モードは、所定量のデータを一定のデータレートで連続的に転送することが要求されるデータ(即ち、ビデオデータやオーディオデータ等)を転送する際に有効である。
【0022】
Asynchronous転送モードとIsochronous転送モードとは、各通信サイクル(通常1サイクルは、125μS)内において、混在させることが可能である。各転送モードは、サイクルの開始を示すサイクル・スタート・パケット(以下、CSP)の転送後に実行される。 尚、各通信サイクル期間において、Isochronous転送モードは、Asynchronous転送モードよりも優先順位が高く設定されている。又、Isochronous転送モードの転送帯域は、各通信サイクル内で保証されている。
【0023】
(2)アーキテクチャ
次に、図3を用いて1394インタフェースの構成要素を説明する。
【0024】
1394インタフェースは、機能的に複数のレイヤ(階層)から構成されている。図3において、1394インタフェースは、IEEE1394規格に準拠した通信ケーブル301を介して他のノードの1394インタフェースと接続される。又、1394インタフェースは、1つ以上の通信ポート302を有し、通信ポート302は、ハードウェア部に含まれるフィジカル・レイヤ303と接続される。
【0025】
図3において、ハードウェア部は、フィジカル・レイヤ303とリンク・レイヤ304とから構成されている。フィジカル・レイヤ303は、他のノードとの物理的、電気的なインタフェース、バスリセットの検出とそれに伴う処理、入出力信号の符号化/復号化、バス使用権の調停等を行う。又、リンク・レイヤ304は、通信パケットの生成と送受信、サイクルタイマの制御等を行なう。
【0026】
又、図3において、ファームウェア部は、トランザクション・レイヤ305とシリアル・バス・マネージメント306とを含んでいる。トランザクション・レイヤ305は、Asynchronous転送モードを管理し、各種のトランザクション(リード、ライト、ロック)を提供する。シリアル・バス・マネージメント306は、後述するCSRアーキテクチャに基づいて、自ノードの制御、自ノードの接続状態の管理、自ノードのID情報の管理、シリアルバスネットワークの資源管理を行う機能を提供する。
【0027】
以上、ハードウェア部とファームウェア部とが実質的に1394インタフェースを構成するものであり、それらの基本構成は、IEEE1394規格により規定されている。
【0028】
又、ソフトウェア部に含まれるアプリケーション・レイヤ307は、使用するアプリケーションソフトによって異なり、ネットワーク上でどのようにデータを通信するのかを制御する。例えば、デジタルVTRの動画像データの場合は、AV/Cプロトコルなどの通信プロトコルによって規定されている。
【0029】
(2−1)リンク・レイヤ304
図4は、リンク・レイヤ304の提供可能なサービスを示す図である。図4において、リンク・レイヤ304は、次の4つのサービスを提供する。即ち、(1)応答ノードに対して所定のパケットの転送を要求するリンク要求(LK_DATA.request)、(2)応答ノードに所定のパケットの受信を通知するリンク通知(LK_DATA.indication)、(3)応答ノードからのアクノリッジを受信したことを示すリンク応答(LK_DATA.response)、(4)要求ノードからのアクノリッジを確認するリンク確認(LK_DATA.confirmation)である。尚、リンク応答(LK_DATA.response)は、ブロードキャスト通信、Isochronousパケットの転送の場合には存在しない。
【0030】
又、リンク・レイヤ304は、上述のサービスに基づいて、上述の2種類の転送方式、即ち、Asynchronous転送モード、Isochronous転送モードを実現する。
【0031】
(2−2)トランザクション・レイヤ305
図5は、トランザクション・レイヤ305の提供可能なサービスを示す図である。図5において、トランザクション・レイヤ305は、次の4つのサービスを提供する。即ち、(1)応答ノードに対して所定のトランザクションを要求するトランザクション要求(TR_DATA.request)、(2)応答ノードに所定のトランザクション要求の受信を通知するトランザクション通知(TR_DATA.indication)、(3)応答ノードからの状態情報(ライト、ロックの場合は、データを含む)を受信したことを示すトランザクション応答(TR_DATA.response)、(4)要求ノードからの状態情報を確認するトランザクション確認(TR_DATA.confirmation)である。
【0032】
又、トランザクション・レイヤ305は、上述のサービスに基づいてAsynchronous転送を管理し、次の3種類のトランザクション、即ち、(1)リード・トランザクション、(2)ライト・トランザクション、(3)ロック・トランザクションを実現する。
(1)リード・トランザクションは、要求ノードが応答ノードの特定アドレスに格納された情報を読み取る。
(2)ライト・トランザクションは、要求ノードが応答ノードの特定アドレスに所定の情報を書き込む。
(3)ロック・トランザクションは、要求ノードが応答ノードに対して参照データと更新データとを転送し、応答ノードの特定アドレスの情報とその参照データとを比較し、その比較結果に応じて特定アドレスの情報を更新データに更新する。
【0033】
(2−3)シリアル・バス・マネージメント306
シリアル・バス・マネージメント306は、具体的に、次の3つの機能を提供することができる。3つの機能とは、即ち、(1)ノード制御、(2)アイソクロナス・リソース・マネージャ(以下、IRM)、(3)バスマネージャである。
【0034】
(1)ノード制御は、上述の各レイヤを管理し、他のノードとの間で実行されるAsynchronous転送を管理する機能を提供する。
【0035】
(2)IRMは、他のノードとの間で実行されるIsochronous転送を管理する機能を提供する。具体的には、転送帯域幅とチャネル番号の割り当てに必要な情報を管理し、これらの情報を他のノードに対して提供する。
【0036】
IRMは、ローカルバス上に唯一存在し、バスリセット毎に他の候補者(IRMの機能を有するノード)の中から動的に選出される。又、IRMは、後述のバスマネージャの提供可能な機能(接続構成の管理、電源管理、速度情報の管理等)の一部を提供してもよい。
【0037】
(3)バスマネージャは、IRMの機能を有し、IRMよりも高度なバス管理機能を提供する。具体的には、より高度な電源管理(通信ケーブルを介して電源の供給が可能か否か、電源の供給が必要か否か等の情報を各ノード毎に管理)、より高度な速度情報の管理(各ノード間の最大転送速度の管理)、より高度な接続構成の管理(トポロジ・マップの作成)、これらの管理情報に基づくバスの最適化等を行ない、更にこれらの情報を他のノードに提供する機能を有する。
【0038】
又、バスマネージャは、シリアルバスネットワークを制御するためのサービスをアプリケーションに対して提供できる。ここで、サービスには、シリアルバス制御要求(SB_CONTROL.request)、シリアルバス・イベント制御確認(SB_CONTROL.confirmation)、シリアルバス・イベント通知(SB_CONTROL.indication)等がある。
【0039】
SB_CONTROL.requestは、アプリケーションがバスリセットを要求するサービスである。SB_CONTROL.confirmationは、SB_CONTROL.requestをアプリケーションに対して確認するサービスである。SB_CONTROL.indicationは、非同期に発生するイベントをアプリケーションに対して通知するサービスである。
【0040】
(3)アドレス指定
図6は、1394インタフェースにおけるアドレス空間を説明する図である。尚、1394インタフェースは、ISO/IEC 13213:1994に準じたCSR(Command and Status Register)アーキテクチャに従い、64ビット幅のアドレス空間を規定している。
【0041】
図6において、最初の10ビットのフィールド601は、所定のバスを指定するID番号に使用され、次の6ビットのフィールド602は、所定の機器(ノード)を指定するID番号に使用される。この上位16ビットを「ノードID」と呼び、各ノードはこのノードIDにより他のノードを識別する。又、各ノードは、このノードIDを用いて相手を識別した通信を行うことができる。
【0042】
残りの48ビットからなるフィールドは、各ノードの具備するアドレス空間(256Mバイト構造)を指定する。その内の20ビットのフィールド603は、アドレス空間を構成する複数の領域を指定する。
【0043】
フィールド603において、「0〜0xFFFFD」の部分は、メモリ空間と呼ばれる。「0xFFFFE」の部分は、プライベート空間と呼ばれ、各ノードで自由に利用できるアドレスである。又、「0xFFFFE」の部分は、レジスタ空間と呼ばれ、バスに接続されたノード間において共通の情報を格納する。各ノードは、レジスタ空間の情報を用いることにより、各ノード間の通信を管理することができる。
【0044】
最後の28ビットのフィールド604は、各ノードにおいて共通或いは固有となる情報が格納されるアドレスを指定する。
【0045】
例えば、レジスタ空間において、最初の512バイトは、CSRアーキテクチャーのコア(CSRコア)レジスタ用に使用される。CSRコア・レジスタに格納される情報のアドレス及び機能を図7に示す。図中のオフセットは、「0xFFFFF0000000」からの相対位置である。
【0046】
次の512バイトは、シリアルバス用のレジスタとして使用される。シリアルバス・レジスタに格納される情報のアドレス及び機能を図8に示す。図中のオフセットは、「0xFFFFF0000200」からの相対位置である。
【0047】
その次の1024バイトは、Configuration ROM用に使用される。
【0048】
Configuration ROMには最小形式と一般形式とがあり、「0xFFFFF0000400」から配置される。最小形式のConfiguration ROMを図9に示す。図9において、ベンダIDは、IEEEにより各ベンダに対して固有に割り当てられた24ビットの数値である。
【0049】
又、一般形式のConfiguration ROMを図10に示す。図10において、上述のベンダIDは、Root Directory1002に格納されている。Bus Info Block1001とRoot Leaf1005とには、各ノードを識別する固有のID情報としてノードユニークIDを保持することが可能である。
【0050】
ここで、ノードユニークIDは、メーカ、機種に関わらず、1つのノードを特定することのできる固有のIDを定めるようになっている。ノードユニークIDは64ビットにより構成され、上位24ビットは上述のベンダIDを示し、下位48ビットは各ノードを製造するメーカにおいて自由に設定可能な情報(例えば、ノードの製造番号等)を示す。尚、このノードユニークIDは、例えばバスリセットの前後で継続して特定のノードを認識する場合に使用される。
【0051】
又、図10において、Root Directory1002には、ノードの基本的な機能に関する情報を保持することが可能である。詳細な機能情報は、Root Directory1002からオフセットされるサブディレクトリ(Unit Directories1004)に格納される。Unit Directories1004には、例えば、ノードのサポートするソフトウェアユニットに関する情報が格納される。具体的には、ノード間のデータ通信を行うためのデータ転送プロトコル、所定の通信手順を定義するコマンドセット等に関する情報が保持される。
【0052】
又、図10において、Node Dependent Info Directory1003には、デバイス固有の情報を保持することが可能である。Node Dependent Info Directory1003は、Root Directory1002によりオフセットされる。
【0053】
更に、図10において、Vendor Dependent Information1006には、ノードを製造、或いは販売するベンダ固有の情報を保持することができる。
【0054】
残りの領域は、ユニット空間と呼ばれ、各ノード固有の情報、例えば、各機器の識別情報(会社名、機種名等)や使用条件等が格納されたアドレスを指定する。ユニット空間のシリアルバス装置レジスタに格納される情報のアドレス及び機能を図11に示す。図中のオフセットは、「0xFFFFF0000800」からの相対位置である。
【0055】
尚、一般的に、異種のバスシステムの設計を簡略化したい場合、各ノードは、レジスタ空間の最初の2048バイトのみを使うべきである。つまり、CSRコア・レジスタ、シリアルバス・レジスタ、Configuration ROM、ユニット空間の最初の2048バイトの合わせて4096バイトで構成することが望ましい。
【0056】
(4)通信ケーブルの構成
図12にIEEE1394規格に準拠した通信ケーブルの断面図を示す。
【0057】
通信ケーブルは、2組のツイストペア信号線と電源ラインとにより構成されている。電源ラインを設けることによって、1394インタフェースは、主電源のOFFとなった機器、故障により電力低下した機器等にも電力を供給することができる。尚、電源線内を流れる電源の電圧は8〜40V、電流は最大電流DC1.5Aと規定されている。
【0058】
2組のツイストペア信号線には、DS-Link(Data/Strobe Link)符号化方式にて符号化された情報信号が伝送される。図13は、DS-Link符号化方式を説明する図である。
【0059】
このDS-Link符号化方式は、高速なシリアルデータ通信に適しており、その構成は、2組のより対線を必要とする。一組のより対線は、データ信号を送り、他のより対線は、ストローブ信号を送る構成になっている。受信側は、2組の信号線から受信したデータ信号とストローブ信号との排他的論理和をとることによって、クロックを再現することができる。
【0060】
尚、DS-Link符号化方式を用いることにより、1394インタフェースには、例えば次のような利点がある。(1)他の符号化方式に比べて転送効率が高い。(2)PLL回路が不要となり、コントローラLSIの回路規模を小さくできる。(3)アイドル状態であることを示す情報を送る必要が無いため、トランシーバ回路をスリープ状態とし易く、消費電力の低減が図れる。
【0061】
(5)バスリセット
各ノードの1394インタフェースは、ネットワークの接続構成に変化が生じたことを自動的に検出することができる。この場合、1394ネットワークは以下に示す手順によりバスリセットと呼ばれる処理を行う。尚、接続構成に変化は、各ノードの具備する通信ポートかかるバイアス電圧の変化により検知することができる。
【0062】
ネットワークの接続構成の変化(例えば、ノードの挿抜、ノードの電源のON/OFFなどによるノード数の増減)を検出したノード、又は新たな接続構成を認識する必要のあるノードは、1394インタフェースを介して、バス上にバスリセット信号を送信する。
【0063】
バスリセット信号を受信したノードの1394インタフェースは、バスリセットの発生を自身のリンク・レイヤ304に伝達すると共に、そのバスリセット信号を他のノードに転送する。バスリセット信号を受信したノードは、今まで認識していたネットワークの接続構成及び各機器に割り当てられたノードIDをクリアにする。最終的に全てのノードがバスリセット信号を検知した後、各ノードは、バスリセットに伴う初期化処理(即ち、新たな接続構成の認識と新たなノードIDの割り当て)を自動的に行う。
【0064】
尚、バスリセットは、先に述べたような接続構成の変化による起動の他に、ホスト側の制御によって、アプリケーション・レイヤ307がフィジカル・レイヤ303に対して直接命令を出すことによって起動させることも可能である。
【0065】
又、バスリセットが起動するとデータ転送は一時中断され、バスリセットに伴う初期化処理の終了後、新しいネットワークのもとで再開される。
【0066】
(6)バスリセット起動後のシーケンス
バスリセットの起動後、各ノードの1394インタフェースは、新たな接続構成の認識と新たなノードIDの割り当てとを自動的に実行する。以下、バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを図14〜16を用いて説明する。
【0067】
図14は、図2の1394ネットワークにおけるバスリセット起動後の状態を説明する図である。
【0068】
図14において、ノードAは1つの通信ポート、ノードBは2つの通信ポート、ノードCは2つの通信ポート、ノードDは3つの通信ポート、ノードEは1つの通信ポート、ノードFは1つの通信ポートを具備している。各ノードの通信ポートには、各ポートを識別するためにポート番号を付されている。
【0069】
以下、図14におけるバスリセットの開始からノードIDの割り当てまでを図15のフローチャートを用いて説明する。
【0070】
図15において、1394ネットワークを構成する各ノードA〜Fは、バスリセットが発生したか否かを常時監視している(ステップS1501)。接続構成の変化を検出したノードからバスリセット信号が出力されると、各ノードは以下の処理を実行する。
【0071】
バスリセットの発生後、各ノードは、夫々の具備する通信ポート間において親子関係の宣言を行なう(ステップS1502)。
【0072】
各ノードは、全てのノード間の親子関係が決定されるまで、ステップS1502の処理を繰り返し行なう(ステップS1503)。
【0073】
全てのノード間の親子関係が決定した後、1394ネットワークは、ネットワークの調停を行なうノード、即ちルートを決定する。(ステップS1504)。
【0074】
ルートを決定した後、各ノードの1394インタフェース夫々は、自己のノードIDを自動的に設定する作業を実行する(ステップS1505)。
【0075】
全てのノードに対してノードIDの設定がなされるまで、各ノードは所定の手順に基づきステップS1505の処理を実行する(ステップS1506)。
【0076】
最終的に全てのノードに対してノードIDが設定された後、各ノードは、Isochronous転送或いはAsynchronous転送を実行する(ステップS1507)。
【0077】
ステップS1507の処理を実行すると共に、各ノードの1394インタフェースは、再びバスリセットの発生を監視する。バスリセットが発生した場合には、ステップS1501以降の処理を再び実行する。
【0078】
以上の手順により、各ノードの1394インタフェースは、バスリセットが起動する毎に、新たな接続構成の認識と新たなノードIDの割り当てとを自動的に実行することができる。
【0079】
(7)親子関係の決定
次に、図16を用いて、図15に示したステップS1502の処理(即ち、各ノード間の親子関係を認識する処理)について詳細に説明する。
【0080】
図16において、バスリセットの発生後、1394ネットワーク上の各ノードA〜Fは、自分の具備する通信ポートの接続状態(接続又は未接続)を確認する(ステップS1601)。
【0081】
通信ポートの接続状態の確認後、各ノードは、他のノードと接続されている通信ポート(以下、接続ポート)の数をカウントする(ステップS1602)。
【0082】
ステップS1602の処理の結果、接続ポートの数が1つである場合、そのノードは、自分が「リーフ」であると認識する(ステップS1603)。ここで、リーフとは、1つのノードとのみ接続されているノードのことである。
【0083】
リーフとなるノードは、その接続ポートに接続されているノードに対して、「自分は子(Child)」であることを宣言する(ステップS1604)。このとき、リーフは、その接続ポートが「親ポート(親ノードと接続された通信ポート)」であると認識する。
【0084】
ここで、親子関係の宣言は、まず、ネットワークの末端であるリーフとブランチとの間にて行われ、続いて、ブランチとブランチとの間で順次に行われる。各ノード間の親子関係は、早く宣言の行なえる通信ポートから順に決定される。又、各ノード間において、子であることを宣言した通信ポートは「親ポート」であると認識され、その宣言を受けた通信ポートは「子ポート(子ノードと接続された通信ポート)」であると認識される。例えば、図14において、ノードA、E、Fは、自分がリーフであると認識した後、親子関係の宣言を行う。これにより、ノードA−B間では子−親、ノードE−D間では子−親、ノードF−D間では子−親と決定される。
【0085】
又、ステップS1602の処理の結果、接続ポートの数が2つ以上の場合、そのノードは、自分を「ブランチ」であると認識する(ステップS1605)。ここで、ブランチとは、2つ以上のノードと接続されているノードのことである。
【0086】
ブランチとなるノードは、各接続ポートのノードから親子関係の宣言を受け付ける(ステップS1606)。宣言を受け付けた接続ポートは、「子ポート」として認識される。
【0087】
1つの接続ポートを「子ポート」と認識した後、ブランチは、まだ親子関係の決定されていない接続ポート(即ち、未定義ポート)が2つ以上あるか否かを検出する(ステップS1607)。その結果、未定義ポートが2つ以上ある場合、ブランチは、再びステップS1606の動作を行う。
【0088】
ステップS1607の結果、未定義ポートが1つだけ存在する場合、ブランチは、その未定義ポートが「親ポート」であると認識し、そのポートに接続されているノードに対して「自分は子」であることを宣言する(ステップS1608、S1609)。
【0089】
ここで、ブランチは、残りの未定義ポートが1つになるまで自分自身が子であると他のノードに対して宣言することができない。例えば、図14において、ノードB、C、Dは、自分がブランチであると認識すると共に、リーフ或いは他のブランチからの宣言を受け付ける。ノードDは、D−E間、D−F間の親子関係が決定した後、ノードCに対して親子関係の宣言を行っている。又、ノードDからの宣言を受けたノードCは、ノードBに対して親子関係の宣言を行っている。
【0090】
又、ステップS1608の処理の結果、未定義ポートが存在しない場合(つまり、ブランチの具備する全ての接続ポートが親ポートとなった場合)、そのブランチは、自分自身がルートであることを認識する。(ステップS1610)。
【0091】
例えば、図14において、接続ポートの全てが親ポートとなったノードBは、1394ネットワーク上の通信を調停するルートとして他のノードに認識される。ここで、ノードBがルートと決定されたが、ノードBの親子関係を宣言するタイミングが、ノードCの宣言するタイミングに比べて早い場合には、他のノードがルートになる可能性もある。即ち、宣言するタイミングによっては、どのノードもルートとなる可能性がある。従って、同じネットワーク構成であっても同じノードがルートになるとは限らない。
【0092】
このように全ての接続ポートの親子関係が宣言されることによって、各ノードは、1394ネットワークの接続構成を階層構造(ツリー構造)として認識することができる(ステップS1611)。尚、上述の親ノードは階層構造における上位であり、子ノードは階層構造における下位となる。
【0093】
(8)ノードIDの割り当て
図17は、図15に示したステップS1505の処理(即ち、自動的に各ノードのノードIDを割り当てる処理)を詳細に説明するフローチャートである。ここで、ノードIDは、バス番号とノード番号とから構成されるが、本実施例では、各ノードを同一バス上に接続するものとし、各ノードには同一のバス番号が割り当てられるものとする。
【0094】
図17において、ルートは、ノードIDが未設定のノードが接続されている子ポートの内、最小番号を有する通信ポートに対してノードIDの設定許可を与える(ステップS1701)。
【0095】
尚、図17において、ルートは、最小番号の子ポートに接続されている全ノードのノードIDを設定した後、その子ポートを設定済とし、次に最小となる子ポートに対して同様の制御を行なう。最終的に子ポートに接続された全てのノードのID設定が終了した後、ルート自身のノードIDを設定する。尚、ノードIDに含まれるノード番号は、基本的にリーフ、ブランチの順に0、1、2…と割り当てられる。従って、ルートが最も大きなノード番号を有することになる。
【0096】
ステップS1701において、設定許可を得たノードは、自分の子ポートの内、ノードIDが未設定となるノードを含む子ポートがあるか否かを判断する(ステップS1702)。
【0097】
ステップS1702において、未設定ノードを含む子ポートが検出された場合、上述の設定許可を得たノードは、その子ポートに直接接続されたノードに対してその設定許可を与えるように制御する(ステップS1703)。
【0098】
ステップS1703の処理後、上述の設定許可を得たノードは、自分の子ポートの内、ノードIDが未設定であるノードを含む子ポートがあるか否かを判断する(ステップS1704)。ここで、ステップS1704の処理後、未設定ノードを含む子ポートの存在が検出された場合、そのノードは、再びステップS1703の処理を実行する。
【0099】
又、ステップS1702或いはS1704において、未設定ノードを含む子ポートが検出されなかった場合、設定許可を得たノードは、自分自身のノードIDを設定する(ステップS1705)。
【0100】
自分のノードIDを設定したノードは、自己のノード番号、通信ポートの接続状態に関する情報等を含んだセルフIDパケットをブロードキャストする(ステップS1706)。尚、ブロードキャストとは、あるノードの通信パケットを、1394ネットワークを構成する不特定多数のノードに対して転送することである。
【0101】
ここで、各ノードは、このセルフIDパケットを受信することにより、各ノードに割り当てられたノート番号を認識することができ、自分に割り当てられるノード番号を知ることができる。例えば、図14において、ルートであるノードBは、最小ポート番号「#1」の通信ポートに接続されたノードAに対してノードID設定の許可を与える。ノードAは、自己のノード番号「No.0」と割り当て、自分自身に対してバス番号とノード番号とからなるノードIDを設定する。又、ノードAは、そのノード番号を含むセルフIDパケットをブロードキャストする。
【0102】
図18にセルフIDパケットの構成例を示す。図18において、1801はセルフIDパケットを送出したノードのノード番号を格納するフィールド、1802は対応可能な転送速度に関する情報を格納するフィールド、1803はバス管理機能(バスマネージャの能力の有無等)の有無を示すフィールド、1804は電力の消費及び供給の特性に関する情報を格納するフィールドである。
【0103】
又、図18において、1805はポート番号「#0」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールド、1806はポート番号「#1」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールド、1807はポート番号「#2」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールドである。
【0104】
尚、セルフIDパケットを送出するノードにバスマネージャとなり得る能力がある場合には、フィールド1803に示すコンテンダビットを「1」とし、なり得る能力がなければ、コンテンダビットを0とする。
【0105】
ここで、バスマネージャとは、上述のセルフIDパケットに含まれる各種の情報に基づいて、バスの電源管理(通信ケーブルを介して電源の供給が可能か否か、電源の供給が必要か否か等の情報を各ノード毎に管理する)、速度情報の管理(各ノードの対応可能な転送速度に関する情報から各ノード間の最大転送速度を管理する)、トポロジ・マップ情報の管理(通信ポートの親子関係情報からネットワークの接続構成を管理する)、トポロジ・マップ情報に基づくバスの最適化等を行ない、それらの情報を他のノードに提供する機能を有するノードである。これらの機能により、バスマネージャとなるノードは1394ネットワーク全体のバス管理を行なうことができる。
【0106】
ステップS1706の処理後、ノードIDの設定を行ったノードは、親ノードがあるか否かを判断する(ステップS1707)。親ノードがある場合、その親ノードが、ステップS1702以下の処理を再び実行する。そして、まだノードIDの設定されていないノードに対して許可を与える。
【0107】
又、親ノードが存在しない場合、そのノードは、ルート自身であると判断される。ルートは、全ての子ポートに接続されたノードに対してノードIDが設定されたか否かを判別する(ステップS1708)。
【0108】
ステップS1708において、全てのノードに対するID設定処理が終了しなかった場合、ルートは、そのノードを含む子ポートの内、最小番号となる子ポートに対してID設定の許可を与える(ステップS1701)。その後、ステップS1702以下の処理を実行する。
【0109】
又、全てのノードに対するID設定処理が終了した場合、ルートは、自分自身のノードIDの設定を実行する(ステップS1709)。ノードIDの設定後、ルートは、セルフIDパケットをブロードキャストする(ステップS1710)。
【0110】
以上の処理によって、1394ネットワークは、各ノードに対して自動的にノードIDを割り当てることができる。
【0111】
ここで、ノードIDの設定処理後、複数のノードがバスマネージャの能力を具備する場合、ノード番号の最も大きいノードがバスマネージャとなる。つまり、ネットワーク内で最大となるノード番号を持つルートがバスマネージャになり得る機能を有している場合には、ルートがバスマネージャとなる。
【0112】
しかしながら、ルートにその機能が備わっていない場合には、ルートの次に大きいノード番号を具備するノードがバスマネージャとなる。又、どのノードがバスマネージャになったかについては、各ノードがブロードキャストするセルフIDパケット内のコンテンダビット1803をチェックすることにより把握することができる。
【0113】
(9)アービトレーション
図19は、図1の1394ネットワークにおけるアービトレーションを説明する図である。
【0114】
1394ネットワークでは、データ転送に先立って、必ずバス使用権のアービトレーション(調停)を行なう。1394ネットワークは、論理的なバス型ネットワークであり、各ノードから転送された通信パケットを他のノードに中継することによって、ネットワーク内の全てのノードに同じ通信パケットを転送することのできる。従って、通信パケットの衝突を防ぐために、必ずアービトレーションが必要となる。これによって、ある時間において一つのノードのみが転送を行なうことができる。
【0115】
図19(a)は、ノードBとノードFとが、バス使用権の要求を発している場合について説明する図である。
【0116】
アービトレーションが始まるとノードB、Fは、夫々親ノードに向かって、バス使用権の要求を発する。ノードBの要求を受けた親ノード(即ち、ノードC)は、自分の親ノード(即ち、ノードD)に向かって、そのバス使用権を中継する。この要求は、最終的に調停を行なうルート(ノードD)に届けられる。
【0117】
バス使用要求を受けたルートは、どのノードにバスを使用させるかを決める。この調停作業はルートとなるノードのみが行なえるものであり、調停によって勝ったノードにはバスの使用許可が与えられる。
【0118】
図19(b)は、ノードFの要求が許可され、ノードBの要求が拒否されたことを示す図である。
【0119】
アービトレーションに負けたノードに対してルートは、DP(Data prefix)パケットを送り、拒否されたことを知らせる。拒否されたノードは、次回のアービトレーションまでバス使用要求を待機する。
【0120】
以上のようにアービトレーションを制御することによって、1394ネットワークは、バスの使用権を管理することができる。
【0121】
(10)通信サイクル
Isochronous転送モードとAsynchronous転送モードとは、各通信サイクル期間内において時分割に混在させることができる。ここで、通信サイクルの期間は、通常、125μSである。
【0122】
図20は、1通信サイクルにおいてIsochronous転送モードとAsynchronous転送モードとを混在させた場合を説明する図である。
【0123】
Isochronous転送モードは、Asynchronous転送モードより優先して実行される。その理由は、サイクル・スタート・パケットの後、Asynchronous転送を起動するために必要なアイドル期間(subaction gap)が、Isochronous転送を起動するため必要なアイドル期間(Isochronous gap)よりも長くなるように設定されているためである。これにより、Isochronous転送は、Asynchronous転送に優先して実行される。
【0124】
図20において、各通信サイクルのスタート時には、サイクル・スタート・パケット(以下、CSP)が所定のノードから転送される。各ノードは、このCSPを用いて時刻調整を行うことによって、他のノードと同じ時間を計時することができる。
【0125】
(11)Isochronous転送モード
Isochronous転送モードは、同期型の転送方式である。Isochronousモード転送は、通信サイクルの開始後、所定の期間において実行可能である。又、Isochronous転送モードは、リアルタイム転送を維持するために、各サイクル毎に必ず実行される。
【0126】
Isochronous転送モードは、特に動画像データや音声データ等のリアルタイムな転送を必要とするデータの転送に適した転送モードである。Isochronous転送モードは、Asynchronous転送モードのように1対1の通信ではなく、ブロードキャスト通信である。つまり、あるノードから送出されたパケットは、ネットワーク上の全てのノードに対して一様に転送される。尚、Isochronous転送には、ack(受信確認用返信コード)は存在しない。
【0127】
図20において、チャネルe(ch e)、チャネルs(ch s)、チャネルk(ch k)は、各ノードがIsochronous転送を行う期間を示す。1394インタフェースでは、複数の異なるIsochronous転送を区別するために、夫々異なるチャネル番号を与えている。これにより、複数ノード間でのIsochronous転送が可能となる。ここで、このチャネル番号は、送信先を特定するものではなく、データに対する論理的な番号を与えているに過ぎない。
【0128】
又、図20に示したIsochronous gapとは、バスのアイドル状態を示すものである。このアイドル状態が一定時間を経過した後、Isochronous転送を希望するノードは、バスが使用できると判断し、アービトレーションを実行する。
【0129】
次に、図21にIsochronous転送モードに基づいて転送される通信パケットのフォーマットを示す。以下、Isochronous転送モードに基づいて転送される通信パケットを、Isochronousパケットと称する。
【0130】
図21において、Isochronousパケットはヘッダ部2101、ヘッダCRC2102、データ部2103、データCRC2104から構成される。
【0131】
ヘッダ部2101には、データ部2103のデータ長を格納するフィールド2105、Isochronousパケットのフォーマット情報を格納するフィールド2106、Isochronousパケットのチャネル番号を格納するフィールド2107、パケットのフォーマット及び実行しなければならない処理を識別するトランザクションコード(tcode)を格納するフィールド2108、同期化コードを格納するフィールド2109がある。
【0132】
(12)Asynchronous転送モード
Asynchronous転送モードは、非同期型の転送方式である。Asynchronous転送は、Isochronous転送期間の終了後、次の通信サイクルが開始されるまでの間(即ち、次の通信サイクルのCSPが転送されるまでの間)、実行可能である。
【0133】
図20において、最初のサブアクション・ギャップ(subaction gap)は、バスのアイドル状態を示すものである。このアイドル時間が一定値になった後、Asynchronous転送を希望するノードは、バスが使用できると判断し、アービトレーションを実行する。
【0134】
アービトレーションによりバスの使用権を得たノードは、図22に示すパケットを所定のノードに対して転送する。このパケットを受信したノードは、ack(受信確認用返送コード)或いは応答パケットをack gap後に返送する。
【0135】
図22は、Asynchronous転送モードに基づく通信パケットのフォーマットを示す図である。以下、Asynchronous転送モードに基づいて転送される通信パケットを、Asynchronousパケットと称する。
【0136】
図22において、Asynchronousパケットは、ヘッダ部2201、ヘッダCRC2202、データ部2203、データCRC2204から構成される。
【0137】
ヘッダ部2201において、フィールド2205には宛先となるノードのノードID、フィールド2206にはソースとなるノードのノードID、フィールド2207には一連のトランザクションを示すためのラベル、フィールド2208には再送ステータスを示すコード、フィールド2209にはパケットのフォーマット及び実行しなければならない処理を識別するトランザクションコード(tcode)、フィールド2210には優先順位、フィールド2211には宛先のメモリ・アドレス、フィールド2212にはデータ部のデータ長、フィールド2213には拡張されたトランザクション・コードが格納される。
【0138】
又、Asynchronous転送は、自己ノードから相手ノードへの1対1の通信である。転送元ノードから転送されたパケットは、ネットワーク中の各ノードに行き渡るが、自分宛てのアドレス以外のものは無視される。従って、宛先となるノードのみが、そのパケットを読み込むことができる。
【0139】
尚、Asynchronous転送中に次のCSPを転送すべき時間に至った場合、無理に転送を中断せず、その転送が終了した後、次のCSPを送信する。これにより、1つの通信サイクルが125μS以上続いたときは、その分、次の通信サイクル期間を短縮する。このようにすることによって、1394ネットワークは、ほぼ一定の通信サイクルを保持することができる。
【0140】
(13)デバイス・マップ
デバイスマップを作成するためにアプリケーションが1394ネットワークのトポロジーを知る手段として、IEEE1394規格上は以下の手段がある。
1.バスマネージャーのトポロジーマップレジスターをリードする
2.バスリセット時にセルフIDパケットから推定する
しかし上記1、2の手段では、各ノードの親子関係によるケーブル接続順のトポロジーは判明するものの、物理的な位置関係のトポロジーを知ることは出来ない。(実装されていないポートまで見えてしまう、といった問題もある)
また、デバイスマップを作成するための情報を、コンフィギュレーションROM以外のデータベースとして持つ、といった手段もあるが、その場合、各種情報を得る手段はデータベースアクセスのためのプロトコルに依存してしまう。
【0141】
ところで、コンフィギュレーションROM自体やコンフィギュレーションROMを読む機能は、IEEE1394規格を遵守したデバイスが必ず持つものである。そこで、デバイスの位置、機能等の情報を各ノードのコンフィギュレーションROMに格納し、それらをアプリケーションから読む機能を与えることにより、データベースアクセス、データ転送等の特定のプロトコルに依存することなく、各ノードのアプリケーションがいわゆるデバイスマップ表示機能を実装することができる。
【0142】
コンフィグレーションROMにはノード固有の情報として物理的な位置、機能などが格納可能であり、デバイスマップ表示機能の実現に使用することが可能である。
【0143】
この場合、アプリケーションが物理的な位置関係による1394ネットワークトポロジーを知る手段としては、バスリセット時やユーザーからの要求時に、各ノードのコンフィギュレーションROMを読み取ることにより、1394ネットワークのトポロジーを知る、という方法が可能となる。さらに、コンフィギュレーションROM内にノードの物理的位置のみならず、機能などの各種ノード情報も記述することによって、コンフィギュレーションROMを読むことで、ノードの物理的位置と同時に各ノードの機能情報等も得ることができる。アプリケーションが各ノードのコンフィギュレーションROM情報を取得する際には、指定ノードの任意のコンフィギュレーションROM情報を取得するAPIを用いる。
【0144】
このような手段を用いることにより、IEEE1394ネットワーク上のデバイスのアプリケーションは、物理的なトポロジーマップ、各ノードの機能マップなど、用途に応じて様々なデバイスマップを作成することができ、ユーザーが必要な機能をもつデバイスを選択する、といったことも可能となる。
【0145】
〈SBP-2の概要〉
SBP-2(Serial Bus Protocol2)は、NCITS傘下のTechnical Committee T10のプロジェクトとして1996より標準化の審議が進められ、1998年にANSI NCITS 325-1998として標準化が認可された、IEEE1394バスに依存したプロトコルで有る。レイヤとしては、IEEE1394-1995のトランザクション層の上位に位置するコマンド/データトランスポートプロトコルで有る。当初SBP-2は、IEEE1394 上のデバイスをSCSIコマンドを用いて動作させる事を可能にする事を主な目的として開発されたが、SCSIコマンドに限らず他のコマンドを載せる事も出来る。SBP-2の特長を挙げると以下の通りになる。
【0146】
(1)イニシエータ(Initiator)/ターゲット(Target)構成のマスタスレーブモデルで有り、マスタで有るイニシエータがログイン、ログアウト、タスク管理、コマンド発行等の全ての権限と責任を持つ。
【0147】
(2)バスモデルとしてのIEEE1394の特長を生かした共有メモリモデルで有る(コマンド等のターゲットへの要求内容は、基本的には全てシステムメモリ内に置かれ、要求を受けたターゲットがシステムメモリの内容を読みに行く。又は、システムメモリへ要求されたステータス等の情報をを書きこむ)。
【0148】
即ち、通信の為のリソースを一箇所に集中出来るので、リソースの負担を非常に軽く出来、かつターゲットが自分のペースでシステムメモリへ読み書き出来るので、ターゲットの設計の自由度が高く、システムメモリのアクセスをハードウエア化することにより高速化が容易である(高性能にも、徹底した低コストモデルにも出来る)。
【0149】
(3)メッセージ交換の為のコマンド群を一連のリンクリストとして記述する仕組みが有る為、レイテンシによる効率低下を隠蔽できるため、IEEE1394バスの特長を生かした高速で、効率の高いデータ通信を実現できる。
【0150】
(4)コマンドセットインデペンデントな構造である(様々なコマンドセットに対応可能)。
【0151】
SBP-2はマスタで有るイニシエータが全ての権限と責任を持つマスタ−スレーブモデルで有り、全てはイニシエータからの動作をきっかけにして行われる。イニシエータからのログイン、ログアウト要求やタスク管理要求、コマンド等は、ORB(Operation Request Block)と呼ぶデータ構造に内包された形でターゲットに送られる。(正しくは、イニシエータが自メモリに置き、ターゲットがそれを読み出す)。図23に、主なORBの種類を示す。
【0152】
(1)ダミーORB:ターゲットフェッチエージェントのイニシャライズ時、タスクのキャンセル等に使用する。ターゲットにはno operation(無処理命令)として扱われる
(2)コマンドブロックORB:データ転送コマンド、デバイス制御コマンド等のコマンドを内包するORBで有る。対応するデータバッファ又はページテーブルのアドレス及びサイズを示すdata_descriptor, data_sizeフィールドを有する。次のコマンドブロックORBのアドレスを示すnext_ORBフィールドを有するので、コマンドをリンク出来るのが特長である(図24参照の事)。
【0153】
(3)管理ORB:マネージメント要求(ログイン、ログアウトを含むアクセス要求、及びタスクマネージメント要求)を内包するORBである。タスク管理の要求内容(タスクセット中断, ターゲットリセット等)を示すファンクションフィールドと、ターゲットからの完了ステータスのアドレスを示すステータスFIFOのフィールドを有するのが特長である(図25参照の事)。
【0154】
この内、管理ORB については、ターゲットが応答を返すまでイニシエータは次のORBを発行する事は出来ないが、Dummy ORBを含むコマンド Block ORBは、図26の様にリンクされたリストの形で一連のコマンド列として発行する事が出来る。即ちコマンドブロックORBには図2の様にnext_ORBフィールドとして次のORBのアドレスを指示するフィールドが有る為、次々とコマンドを連結する事が出来る。このフィールドがnullの場合は、次に続くORBが無いことを示す。
【0155】
また、このコマンドブロックORBの他のフィールドにはデータバッファ又はページテーブルのアドレス及びサイズを示すフィールド(data_descriptor及びdata_size)が有り、例えばコマンドの内容がライト(write)コマンドならばターゲットはdata_descriptorで示されたシステムメモリ上のData_Bufferにアクセスし、そこから書き込むべきデータを読みこむ。また、コマンドの内容がリード(Read)コマンドならばターゲットはdata_descriptorで示されたシステムメモリ上のData_Bufferにアクセスし、そこへコマンドの要求するデータを書きこむ。
【0156】
図27及び図28に、データバッファを直接示す場合と、ページテーブルを経由する場合を示す。ページテーブルにより、物理的に不連続な領域のデータバッファを、連続的に扱う事が出来、仮想記憶による連続論理領域を物理的に再配置する必要がなくなる訳である。
【0157】
イニシエータからの様々な要求を実行するターゲット側の仕組みを、エージェントと称する。エージェントには、管理ORBを実行する管理エージェントと、コマンドブロックORBを実行するコマンドブロックエージェントが有る。
【0158】
管理エージェントには、管理ORBのアドレスをイニシエータがターゲットに知らせる為にストアする、管理エージェントレジスタrが有る。
【0159】
コマンドブロックエージェントは、イニシエータのコマンドのリンクされたリストからコマンドをフェッチして来る為、フェッチエージェントとも呼ばれる。フェッチエージェントにも、コマンドブロックORBの先頭アドレスをイニシエータがストアするORBポインタレジスタと、イニシエータがターゲットにコマンドをフェッチして貰いたい事を知らせるドアベルレジスタ等を含む、コマンドブロックエージェントレジスタが有る。
【0160】
ターゲットはイニシエータからのORBの実行を完了すると、その実行完了のステータスを、ステータスブロックと言うデータ構造の形で(完了の成否に拘らず)イニシエータのステータスFIFOの示すアドレスにストアする。ステータスブロックの例を、図29に示す。
【0161】
ターゲットは最低8バイト、最大32バイトのステータス情報をストアする事が出来る。管理ORBの場合は、図25のステータスFIFOフィールドにORBの一部として明示的にステータスFIFOアドレスが提供されるので、ターゲットは指定されたアドレスにステータスブロックをストアする。それ以外の場合は、フェッチエージェントのコンテクストから得られるステータスFIFOにステータスブロックをストアする。コマンドブロックORBの場合は、イニシエータはステータスFIFOアドレスをログイン要求の一部として提供する。
【0162】
通常ターゲットは、イニシエータの発するORBに対してステータスFIFOアドレスにステータスブロックを書き込む事によって応答するが、デバイス側に変化が発生し、ロジカルユニットに影響する場合は、イニシエータからの要求が無くても自発的にアンソリシテッドステータスを返すことも出来る。この場合のステータスFIFOアドレスは、イニシエータからのログイン要求の際にイニシエータから提供されるステータスFIFOアドレスで有る。
【0163】
SBP-2におけるイニシエータとターゲットの動作を、図30の動作モデルを用いて説明する。
【0164】
SBP-2の動作は、イニシエータが、ターゲットに対してログイン要求の為の管理ORB(ログインORB)を発行する事から始まる。ターゲットは、イニシエータからの要求に対してログイン応答で応える(図30参照の事)。ログイン要求が受け入れられると、ターゲットからはログイン応答としてコマンドブロックエージェントレジスタの先頭アドレスが返って来る。
【0165】
ログイン要求が受け入れられると、ターゲットの管理エージェントは、イニシエータからのその後のタスク管理要求を受け付ける。イニシエータはタスク管理ORBを発行して、タスクの実行に必要な情報のやり取りをターゲットとの間で行う。ターゲットはイニシエータの発するORBに対してステータスFIFOにステータスブロックを書き込む事によって応答するが、デバイス側に変化が発生し、ロジカルユニットに影響する場合は、イニシエータからの要求が無くても自主的にアンソリシテッドステータスを返すことも出来る事は前述の通りである。タスク管理に関するやり取りに続いて、イニシエータは必要なコマンドブロックORB(リスト)を自分のメモリ領域に形成し、ターゲットのコマンドブロックエージェントレジスタのORBポインタに前記ORBの先頭アドレスを書きこみか又はコマンドブロックエージェントレジスタのドアベルレジスタを叩いて、ターゲットに対して通信すべきORBがイニシエータに有ることを知らせる(図31)。ターゲットは、上記ORBポインタに書かれた前記ORBの先頭アドレス情報をもとにイニシエータのメモリにアクセスし、ORBを順次処理する(図32)。
【0166】
ところで、タスクの実行モデルには、順序モデル(Ordered Model)と非順序モデル(Unordered Model)が有る。順序モデルでは、ORBはリストの順番に沿って行われ、ターゲットの完了ステータスも順番に返って来る。非順序モデルでは、ORBの実行順位に制約は無いが、どの順序でも最終的に同じ実行結果が得られる様にイニシエータが責任を持たなければならない。イニシエータからターゲットへのデータ転送はターゲットからシステムメモリへのリードトランザクションによって行われ、一方ターゲットからイニシエータへのデータ転送は、システムメモリへのライトトランザクションによって行われる。即ちデータバッファの転送は方向によらずターゲットが主導する。逆に言えば、ターゲットは自分に都合の良いペースでシステムメモリからのデータを読み出すことが出来る訳で有る。イニシエータはターゲットがORBを実行中でも、Listの最後のORBのnext_addressを次のORBのアドレスに書き換え、ターゲットのドアベルレジスタを再び叩いてターゲットに変更を知らせる事により、リンクされたリストにORBを追加する事が出来る。ターゲットは、イニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返す。イニシエータは完了ステータス(ステータスブロック)が返されたのを見て、その対象ORBのターゲットによる実行が完了した事を知る。完了したORBは、(next_ORBフィールドがnullでなければ)タスクセットのリンクされたリストから外す事が出来、イニシエータはその空いたリソースを利用して、必要なら次のコマンドをコマンドがリンクされたリストの最後に追加しても良い。このようにしてORBが実行されタスクが実行される。
【0167】
タスクが終了し、アクセスをつづける必要が無い場合は、イニシエータはログアウトORBを発行し、ターゲットが応えてログアウトが完了する。
【0168】
〈SBP-3の双方向データ転送機能〉
SBP-3(Serial Bus Protocol3)は、SBP-2を拡張し機能を追加することによりSBP-2において効率が悪かった点、欠いていた機能を補充する目的で2000年後半から規格化作業が行なわれている。
【0169】
SBP-3において拡張された代表的な機能を挙げると以下の通りになる。
1. アイソクロナス(Isochronous)データ転送機能
2. デバイスハンドルによるイニシエータ/ターゲットの特定によるノードID非依存機能
3. 1つのORB内の双方向データ転送機能
ここでは上記機能のうち第3番目の機能について説明する。
【0170】
SBP-3はSBP-2と下位互換性を持っており、その基本的なデータ転送シーケンスはSBP-2の概要で説明した通りである。すなわち、イニシエータからターゲットへのデータ転送はターゲットからシステムメモリへのリードトランザクションによって行われ、一方ターゲットからイニシエータへのデータ転送は、システムメモリへのライトトランザクションによって行われる。ターゲットは自分に都合の良いペースでORBを読み出し、ORBの内容をデコードすることによって転送動作の種別情報を知る。ターゲットはORBに対応する転送動作がイニシエータからターゲットへのデータ転送か、ターゲットからイニシエータへのデータ転送なのか、そしてその転送動作が、イニシエータ内のどのシステムメモリ領域に対して行なわれるかをデコードし、該当する転送動作を行なう。またターゲットはそのORBで指定された転送動作を完了した際には、イニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返す。
【0171】
SBP-3ではコマンドブロックORB、すなわちデータ転送コマンドや、デバイス制御コマンド等のコマンドを内包するORBとして2種類定義している。ひとつはコマンドブロックORBが有するリクエストフォーマットフィールドの値が0のものであり、SBP-2で定義されたコマンドブロックORBと同一のものである。〈SBP-2の概要〉の欄で説明したように、ORBが参照するデータバッファ又はページテーブルのアドレス及びサイズを示すdata _descriptor, data_size_field、次のコマンドブロックORBのアドレスを示すnext_ORBフィールド、そしてデータバッファに対するデータ転送方向を示すdirectionフィールドに代表されるデータ転送に関わるパラメータを指定するフィールドからなる。
【0172】
SBP-3で新規に定義されたコマンドブロックORB はリクエストフォーマットフィールドの値が1となっており従来のORBと区別がつけられる。
【0173】
このORBの特徴はひとつのORBから2つのデータバッファが参照されるということである。データバッファ又はページテーブルのアドレス及びサイズを示すdata_descriptor, data_sizeフィールド、directionフィールド等データバッファに関するフィールドがそれぞれ2組用意され、
これによりORBから2つのデータバッファの参照が可能となる。
【0174】
このORBを使用し、一つのデータバッファはターゲットへのライト用、もう一方のデータバッファはターゲットからのリード用バッファとして使うことにより双方向ORBとして活用することが出来る。
【0175】
イニシエータは必要なコマンドブロックORB(リスト)を自分のメモリ領域に形成し、上記のように双方向ORBをアペンドしてターゲットのコマンドブロックエージェントレジスタ のORBポインタに前記ORB(リスト)の先頭アドレスを書きこみか又はコマンドブロックエージェントレジスタのドアベルレジスタを叩いて、ターゲットに対して通信すべきORBがイニシエータに有ることを知らせる。ターゲットは、上記ORBポインタに書かれた前記ORBの先頭アドレス情報をもとにイニシエータのメモリにアクセスし、ORBをフェッチ、順次処理する。
【0176】
双方向ORBをフェッチしたターゲットは指定された2つのデータバッファそれぞれに対してデータ転送処理を行なう。片側のバッファに対応するdirectionフィールドは0となっていて、ターゲットはdata_descriptorで示されたシステムメモリ上のデータバッファにアクセスし、そこから書き込むべきデータを読みこむ。またもう片方ののバッファに対応するdirectionフィールドは1となっていてターゲットはdata_descriptorで示されたシステムメモリ上のデータバッファにアクセスし、そこへコマンドの要求するデータを書きこむ。
【0177】
両方のデータバッファアクセスが完了するとターゲットはイニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返し、そのORBの実行完了を通知する。
【0178】
図33にSBP-3でのコマンドブロックORBの動作を示している、図32で示したSBP-2と比較すると、SBP-3では1つのORBに対してデータバッファアクセスを示す線が2本になっており、SBP-2が1つのデータバッファへのアクセスしか出来なかった点が変更されている。2つのデータバッファに独立してアクセスできることにより、イニシエータからターゲットへの2つのデータチャネルを1つのORBに当てはめることが出来る。データバッファへのデータの流れる方向はそれぞれのデータバッファで規定できるため、イニシエータからターゲットへの方向を2本、イニシエータからターゲットへの方向を1本ターゲットからイニシエータへの方向を1本、ターゲットからイニシエータへの方向を2本設定することが可能になる。ホストとプリンタで使うような場合、1本をホストからプリンタへの印字データのために使い、もう1本をプリンタからホストへのステータス情報を流すために使うことも可能となる。
【0179】
図34にSBP-3の2つのデータバッファを保持する場合のコマンドブロックORBの詳細を示している。2組のデータバッファを扱えるようにするために、2つのdata_descritorとバッファ情報"d"〜"data_size"とがSBP-2に対して拡張されている。図中"d"で示したdirectionでそれぞれのデータバッファの方向を指定することが出来る。内容はSBP-2と同様で0であればイニシエータからターゲット、1であればターゲットからイニシエータへの方向を示している。
【0180】
〈本実施形態の説明〉
以下本発明の実施形態に関して詳細に説明する。
【0181】
図35に、SBP-2,SBP-3で使用されるステータスブロックに対して、本発明に係るSBP-3の改良版であるSBP-3改で使われるステータスブロックを示す。SBP-2,SBP-3と基本的には同じ構成となっていて、3番目のクアドレット(quadlet:4バイト分のデータ)に"a","b0","b1"の各フラグを配置した部分の追加がされている。"a","b0","b1"はそれぞれ対応するデータバッファの表していて、"b0"は図34で示した1番目のdata_descriptorに対応しており、"b1"は2番目のdata_descriptorに対応している。"a"はこれら2つのデータバッファ両方を同時に対応することを意味する。"a","b0","b1"はそれぞれ0,1の値が指定され、1の場合に対応するバッファの完了を示し、0であれば対応するバッファの未完了を示す。"a"に1が指定された場合、2つのバッファが同時に完了したことを示す。"a","b0","b1"3つのの指定の組み合わせにより、1つ目のバッファの完了、2つ目のバッファの完了、1,2両方のバッファの完了を個別あるいは同時に通知することが出来る。
【0182】
図36にSBP-3改でのコマンドブロックORBの動作を示している、ステータスFIFOに対するアクセスが複数回(この場合2回)行われることが示されている。図33のSBP-3の動作ではステータスFIFOへのアクセスは1度だけ行われている。図36で行われるステータスFIFOへのアクセスは図35に示したステータスブロックで行われ、"a","b0","b1"のいずれかのビットに1が設定される。例えば、2つ目のバッファに対する処理が完了した場合、1度目のステータスブロックへのアクセスでは、"b1"が1、"b0"に0がセットされ、1つ目のバッファの処理が完了した場合、2度目のステータスブロックへのアクセスでは、"b1"が0、"b0"に1がセットされる。それぞれのバッファに対して、個別にステータスブロックへのアクセスが行われる。"b0","b1"共に完了が通知されれば、処理していたORBが完了全てのコマンド完了が通知されたことになる。
【0183】
また、SBP-3と同じ動作を実現するためには"a"に1を設定することで2つのバッファの終了を1回のステータスブロックへのアクセスで行うことも出来る。
【0184】
SBP-3では、2つのデータバッファに対する処理が両方共に終了した時点で、ステータスFIFOにアクセスしORBの完了を通知する。このような動作のため、一方のデータバッファの終了を先に通知することが出来なかった。これをホストとプリンタの関係に当てはめて考えた場合、いつのデータバッファを印字データ、もう1つをステータスのために使うとすると、プリンタが印字データのデータバッファを全て受け取るまで、ホストに対してステータスを戻せないことが発生する。ステータス情報を随時受け取りことができないことになる。SBP-3改ではデータバッファごとに独立してステータスFIFOを戻せるように改造しているため、印字データとは独立してステータスを戻すことも可能となる。
【0185】
以上説明した、SBP-3改のプロトコルを用いたコマンドセットの一例について説明する。コマンドセットはプロトコル上でターゲットデバイスを制御するためのコマンドで、本実施形態では、ターゲットデバイスとして印字装置(プリンタ)を想定したコマンドとする。
【0186】
図37にその詳細な構成を示す。これは図34のcommand_blockの部分を詳細に記述した図で、1つのORBで2つのコマンドを扱えるようにするために、同じ形式をしたコマンド1,コマンド2(図37)を規定している。符号3712aで示した部分に対応するコマンドがコマンド1(Command1)であり、符号3702で示した部分に対応するコマンドがコマンド2(Command2)である。各コマンドはOpcode3711,Datalength_hi3712,Datalength_lo3713,Count3714,Interval3715から構成されている。
【0187】
Opcode3711は実行されるコマンドの種類を表し、図37の例では、WRITE,STATUSが定義されている。WRITEはプリンタへの印字データの書き込みを実行するコマンドで、イニシエータからターゲットであるプリンタ方向へのデータが流れることを示す。STATUSは、プリンタのステータス情報を取得するコマンドで、ステータス情報はターゲットのプリンタからイニシエータ方向へのデータが流れることを示す。イニシエータは印刷処理を行う際、印字データをプリンタへ送るコマンドを実行するのと同時に定期的にプリンタのステータス情報を取得する。イニシエータは取得したステータス情報からプリンタの状態をユーザに通知する作業を行う。これによりユーザはプリンタにエラー等が発生したことを知ることが出来る。
【0188】
Datalength_hi3712,Datalength_lo3713はイニシエータからターゲット(プリンタ)、あるいはターゲット(プリンタ)からイニシエータへの書き込みされたデータの量を示す。Count3714は、コマンドが実行される回数を指定する値で、1以上の値を取る。ただし、−1は無限の継続を意味する。Interval3715は、Count3714で指定された回数分のコマンドを実行する実行時間間隔を指定する値である。1以上の値をとり、本実施形態では1が1ms(ミリ秒)の単位を示すものとする、−1の値がInterval3715に指定された場合Interval3715の指定は行われないことを示す。このCount3714とInterval3715は2つの値の組み合わせによりいろいろなコマンドの実行条件を規定する。
【0189】
また、この時間間隔内でコマンドが完了しない場合には、タイムアウトと判定される。そのため、Count,Intervalは、コマンドが一定時間(Count * Interval)実行できないような場合のタイムアウト時間として使うことも出来る。例えばCount=1,Interval=1000を指定したような場合、コマンドの実行は1回のみで、1000msの時間が経過してもコマンドが実行されない場合、タイムアウトとなりその内容がイニシエータにステータスブロックで知らされることになる。またIntervalに−1が指定された場合にはコマンドがタイムアウトしない指定となる。
【0190】
図38にこのコマンドセットでのステータスブロックの詳細を示し、図35に示したSBP-3改でのステータスブロックに対して、コマンドセットに依存する部分を規定するものである。コマンドに対するステータスブロックは、元の形式にステータスが追加されている。STATUSフィールド3801はコマンドの完了状況を示し、本実施形態では完了(COMPLETE),タイムアウト(TIMEOUT)の2種類を定義する。COMPLETEはコマンドが正常に終了したことを示し、TIMEOUTはコマンドに指定されたCount,Intervalの条件によりコマンドの実行がタイムアウトしてコマンドの実行が行われなかったことを示す。
【0191】
図39は、イニシエーターとプリンタでの印字データとステータス情報の流れとステータスブロックへの書き込みを示した図で、ここではイニシエータは1つのORBの場合を示していて、ORBには印字データを保持するバッファ1とステータス情報を受け取るためのバッファ2を有している。ORBのコマンド実行に際してプリンタは、バッファ1から印字データを受け取り、ステータスバッファ2にプリンタのステータス情報を書き込み、ステータスブロックにそれぞれの完了を書き込むことで1つのORBに対する2つのコマンドの実行が完了したこととなる。この場合のコマンド内容を示したのが図40である。
【0192】
図40において、コマンド1については、data_descriptorにはバッファ1のアドレスがセットされ、方向を示すdにはイニシエータからプリンタの方向を示す0がセットされる。コマンドのopcodeには印字データの書き込みコマンドであるWRITEコマンドが指定され、Count=1,Interval=3000が指定されている。これはWRITEコマンドが1回実行されること、実行できない場合3000msでタイムアウトすることを指定している。
【0193】
コマンド2に対してはdata_descriptorにはバッファ2のアドレスがセットされ、方向を示すdにはプリンタからイニシエータの方向を示す1がセットされる。コマンドのopcodeにはステータス情報の書き込みコマンドであるSTATUSコマンドが指定され、Count=-1,Interval=1000が指定されている。これはコマンド2がステータス情報の取得コマンドであるSTATUSの実行で、Count=-1,Interval=1000が指定されている。これがSTATUSコマンドが、1000msの時間間隔で、無限に実行されることを意味している。図40に示したコマンドORBで、WRITE,STATUSの2つのコマンドの実行が指示されたことになる。
【0194】
このコマンドが問題なく実行された場合にプリンタか書き込むステータスブロックの例を図41に示す。1回のステータスブロックで完了を示すために、フラグa(図38)のところに1がセットされ、Status3801にCOMPLETEが指定されている。このステータスブロックの書き込み終了後、バッファ2にセットされている内容が最新のステータス情報になり、この情報を用いてユーザーに印字の状況を知らせることが出来る。
【0195】
図40,41で示したようにコマンドが2つとも同時に実行可能である場合には、特別に問題は発生しない。しかし実際のプリンタではこのように2つのコマンドを同時に実行することが出来ない場合が存在する。プリンタの種類、構成内容により異なるが、例えばインクジェットプリンタの場合では、印字データを受信できない時間帯(給紙、排紙中、回復動作中など)がある。それらが発生した場合、印字動作が一時的に中断されるため、すでに受け取っている印字データがあるために印字のためのバッファが一杯となり、次からの印字データを受け取ることが出来ない状態となる。一般的にそのような状態でもステータスのコマンドは実行できる場合が多い。ちょうどこの時に出されたコマンドは、本実施形態で示した、Count,Intervalの指定がないものであれば、プリンタが印字データを受信できるようになるまで、コマンドの実行は待たされたままとなる。
【0196】
図42に、このようなプリンタが印字データを受信できない状態、すなわちターゲットがイニシエータからデータを読むことができない状態で、図40に示したコマンドを実行した場合のステータスブロックに書き込まれる内容を示している。図42(a)に示すように、STATUSコマンドに対するステータスブロックの書き込みは、印字データ受け取れない状況でもステータス情報を書き込むことが出来るので、正常に行われてCOMPLETEが書き込まれる。STATUSコマンドはIntervalに1000msが指定されていて、実行回数Countは-1で無限が指定されているので、1000ms間隔で新しいステータス情報の書き込みを実行してステータスブロックに図42(a)でCOMPLETEの書き込みが行われる。
【0197】
一方WRITEコマンドはIntervalに3000msが指定されているので、この3000msの間にプリンタの印字データを受け取れない状態が解消されればステータスブロックにCOMPLETEで書き込むことが出来るが、3000msの間に解消されない場合には、図42(b)で示した、TIMEOUTでステータスブロックの書き込みが行われる。この場合、WRITEのコマンドは正しく実行されずTIMEOUTとなってしまったので、イニシエーターは印字を止めてしまうか、同じデータでリトライを実行する必要がある。イニシエーターはステータスブロックでTIMEOUTを知ることが出来、以降どうのように継続するかどうかを決めることが可能となる。WRITEコマンドがプリンタの印字データを受け取れないことで、実行できない状態でいる間でも、もう1つのコマンド(STATUSコマンド)は指定された一定間隔で実行することが出来るので、最新のステータス情報がこの時でも受け取ることが出来る。
【0198】
またタイムアウトの時間を指定できるので、印字の実行を中止するような場合にも有効に利用することが出来る。
【0199】
<本実施形態における処理手順の概略>
図43乃至図46に、上記説明したイニシエータおよびターゲットにおける処理の概略フローチャートを示す。
【0200】
図43は、図1のクラスドライバ102におけるコマンド発行時の処理手順である。クラスドライバ102は、プリンタドライバ101から、PDLコマンドリスト等をデータとしてターゲットのプリンタへ発行する依頼を受けた際の処理手順である。プリンタドライバ101は、例えばデータや前述したコマンドの実行回数、時間間隔等、コマンド等をパラメータとして、クラスドライバ102が提供する関数を呼び出す。もちろん、コマンドは2つまで指定できる。また、コマンドに従属する実行回数や時間間隔、データ長等のパラメータは、コマンドごとに指定される。なお、コマンドは1つであっても良いことは既に説明したとおりである。
【0201】
クラスドライバ102は、コマンドからコマンドブロックを作成し(ステップS4301)、指定されたパラメータとともにSBP−3のプロセッサ111(図1)に渡す(ステップS4302)。プロセッサ111は、引き渡されたパラメータに従ったアドレスやデータ長をdata_descripterやdata_sizeフィールドに記述し、コマンドの種類に基づいて方向フィールドd等を記述して、図37に示すORBを作成する。そして、作成したORBをORBリストにチェインする。
【0202】
チェインされたORBは、Ordered Modelであれば順次、Unordered Modelであれば、適切な順序で処理されていく。
【0203】
ターゲット1bへは、ドアベルレジスタ121へ書き込みを行うことでORB処理のきっかけを与える。ターゲットのコマンドブロックエージェント122は、イニシエータ1aにチェインされたORBのうち先頭のORBのアドレスをORBポインタ124にコピーして実行エージェント123へとORBの受信を通知する。
【0204】
図44は、実行エージェント123におけるORB処理手順のフローチャートである。
【0205】
ステップS4401において、ORBポインタ124で示されるORBのリクエストフォーマットフィールドをテストして、それが1であれば、コマンドが2つ含まれたORBであると判定する。このORBのことを以下の説明では単に2コマンドORBと呼ぶことにする。2コマンドORBでなければ通常のSBP−3(あるいはSBP−2)処理手順を遂行する。
【0206】
2コマンドORBであれば、ステップS4402においてそのうちの一方に注目し、ステップS4403において方向ビットdを判定する。方向ビットがイニシエータからターゲットへであれば、イニシエータからターゲットへのデータの引き渡しなので、ステップS4404において、ORBのコマンド部およびバッファのアドレス(data_descripter)やサイズ(data_size)にしたがってデータを読み出し、コマンド処理部103に渡す。
【0207】
一方、方向ビットdがターゲットからイニシエータへであれば、ターゲットからイニシエータへのデータの引き渡しであるので、ORBのコマンド部とデータを書き込むべきバッファ領域のアドレス(data_descripter)およびサイズ(data_size)をコマンド処理部103に渡す。
【0208】
ステップS4406では、注目ORB中の2つのコマンドについて処理が終えたか判定し、終えていなければステップS4402に戻る。
【0209】
図45は、図44のステップS4404またはS4405において引き渡されたデータを処理するコマンド処理部103における処理手順を示す。
【0210】
まずステップS4501においてコマンドを解析し、ステップS4502においてコマンドの内容に応じた処理を行う。例えばライトコマンドであれば、実行エージェントから受け取ったバッファの内容を、PDL処理部104に引き渡す。また、ステータスコマンドであれば、ステータスを読み取り(あるいはPDL処理部により読み取らせて)、それをクラスドライバ102に応答する。この処理は後述する。
【0211】
次にステップS4503で、コマンドのIntervalフィールドで指定された時間間隔に従って、応答監視タイマを設定する。そして、処理の応答(成功あるいは失敗あるいはタイムアウトなど)を待つ。そして、応答待ち状態となる。この状態は、ターゲットの処理系次第であり、たとえばいったんタスク終了したりあるいは係属するなど、いくつかの処理の選択肢をとり得る。ただし、いったんタスクを終了すると応答を非同期に処理する必要があるので、コマンド処理とその応答とを対応付けるための識別子等を、コマンドごとに管理する必要がある。
【0212】
応答が返るとまずステップS4504でその内容を判定する。ただし、タイムアウトの場合には、タイマ満了の割り込みによりそれを知ることになると考えられるので、判別すべきはどのコマンドに対するタイムアウトであるか、という点となる。
【0213】
さて、応答内容が処理の成功であれば、ステップS4504において「成功」である旨示すステータスブロックの内容を用意する。一方、タイムアウトであれば、「タイムアウト」であることを示すステータスブロックの内容をステップS4505で用意する。他のステータスがあれば、ステータスに応じた内容が用意されることはもちろんである。
【0214】
そして用意したステータスブロックの内容を、ステップS4507で実行エージェント123へと渡す。実行エージェント123は、イニシエータに用意されているアンソリシテッドレジスタを叩き(書き込み)、ステータスブロックがあることをイニシエータに通知する。
【0215】
最後に、ステップS4508で、コマンドのCountフィールドで指定される実行回数の繰返しが終了したか判定し、終了していなければステップS4502から繰り返す。もちろん残りの繰返し回数は1回減算しておき、次回はその値がステップS4508でテストされる。
【0216】
図46は、ステータスブロックを受信したイニシエータにおけるプロセッサ111による処理手順である。
【0217】
まずステップS4600で、受信したステータスブロックがアンソリシテッドステータスであるか、すなわち、対応するORBがORBリストにチェインされているか判定する。アンソリシテッドステータスであれば、そのステータスブロックに含まれるあるいは添付されたバッファの内容をクラスドライバ102に渡して、処理をゆだねる。
【0218】
一方、アンソリシテッドステータスでなければ、ステップS4601でクラスドライバ102へ終了の通知(成功あるいはタイムアウトなど)を行う。そして、ステップS4603において対応ORBが2コマンドORBであるか判定する。
【0219】
2コマンドORBであれば、ステップS4603において2つのコマンドに対するステータスブロックを受信しているか判定する。この判定は、ORBに関連づけてコマンド1およびコマンド2に対するステータスブロックの受信の履歴を記録しておくことで可能となる。
【0220】
全コマンドについてステータスブロックを受信していれば、ステップS4605において対応ORBをORBリストから削除する。一方、片方のコマンドについてのステータスブロックのみを受信した場合には、ステップS4604においてその旨を記録し、処理を終了する。
【0221】
以上の手順により、1つのORBに2つのコマンドを載せ、各コマンドについて指定された回数だけ指定された時間間隔で実行させることができる。あるいは、各コマンドについてタイムアウトの時間を設定することができる。
【0222】
さらに、2コマンドORBは、2つのコマンドについてステータスブロックを受信するまで削除されないので、イニシエータからターゲットへのデータの受け渡しを確実に行え、また、イニシエータの送信待機タイマがタイムアウトした場合であっても、再送信することが可能である。そしていったんデータ(コマンド)がターゲットにわたれば、ターゲットからのステータスは、アンソリシテッドステータスとして処理されるために、ORBリストがはけずに処理が遅滞する事態が生じることもない。
【0223】
また、SBP-3プロトコルでは2つのコマンドが1つのORBで実行できるようになったがコマンドごとに完了を確認する手段がなく、その点を改良したSBP-3改ではコマンドごとに完了の通知を受けることができるようになった。さらに、本実施形態においては、完了の条件をコマンド単位で指定することが出来るようになり、コマンドの内容やデバイスの構成により発生していた片方のコマンドが実行できない状況でも、他方のコマンドを期待どうりに有効に実行することが出来る。
【0224】
なお、上記手順において、2つのコマンドに対する応答を1つのステータスブロックで返す場合は、たとえば、2つのコマンドに対する応答がほぼ同時に得られることが期待できる場合が考えられる。たとえばコマンドが一致し、かつ、実行回数(Count)および時間間隔(Interval)が2つのコマンドについて一致する場合などに、適用できる。
【0225】
<プリンタシステムのハードウエア構成>
最後に、イニシエータであるホスト装置51(図1の1aに相当)とターゲットであるプリンタ52(図1の1bに相当)のハードウェア構成について説明する。図47は情報処理システムを構成するホスト装置51とプリンタ52のハードウェア構成概要を示すブロック図である。
【0226】
図2に示されているように、ホスト装置51は処理部1000とこれに周辺装置を含めてホスト装置全体を構成している。また、画像出力装置52は、記録ヘッド3010、記録ヘッド3010を搬送するキャリアを駆動するキャリア(CR)モータ3011、用紙を搬送する搬送モータ3012などの駆動部と、制御回路部3003とから構成されている。
【0227】
ホスト装置51の処理部1000は、制御プログラムに従ってホスト装置の全体制御を司るMPU1001、システム構成要素を互いに接続するバス1002、MPU1001が実行するプログラムやデータ等を一時記憶するDRAM1003、システムバスとメモリバス、MPU1001を接続するブリッジ1004、例えば、CRTなどの表示装置2001にグラフィック情報を表示するための制御機能を備えたグラフィックアダプタ1005を含んでいる。
【0228】
さらに、処理部1000はHDD装置2002とのインタフェースを司るHDDコントローラ1006、キーボード2003とのインタフェースを司るキーボードコントローラ1007、IEEE1394規格に従ってプリンタ52との間の通信を司る、IEEE1394である通信I/F1008を備えている。
【0229】
さらに、処理部1000には、グラフィックアダプタ1005を介して操作者にグラフィック情報等を表示する表示装置2001(この例では、CRT)が接続されている。更に、プログラムやデータが格納された大容量記憶装置であるハードディスクドライブ(HDD)装置2002、キーボード2003が夫々、コントローラを介して接続されている。
【0230】
一方、プリンタ52の制御回路部3003は、制御プログラム実行機能と周辺装置制御機能とを兼ね備えた、プリンタ52の全体制御を司るMCU3001、制御回路部内部の各構成要素を接続するシステムバス3002、記録データの記録ヘッド3010への供給、メモリアドレスデコーディング、キャリアモータへの制御パルス発生機構等を制御回路として内部に納めたゲートアレイ(G.A.)を備えている。
【0231】
また、制御回路部3003は、MCU3001が実行する制御プログラムやホスト印刷情報等を格納するROM3004、各種データ(画像記録情報やヘッドに供給される記録データ等)を保存するDRAM3005、IEEE1394規格に従いホスト装置51との間の通信を司るシリアルインタフェースである通信I/F3006、ゲートアレイ3003から出力されたヘッド記録信号に基づき、記録ヘッド3010を駆動する電気信号に変換するヘッドドライバ3007を備えている。
【0232】
さらに、制御回路部3003は、ゲートアレイ3003から出力されるキャリアモータ制御パルスを実際にキャリア(CR)モータ3011を駆動する電気信号に変換するCRモータドライバ3008、MCU3001から出力された搬送モータ制御パルスを、実際に搬送モータを駆動する電気信号に変換するLFモータドライバ3009を備えている。
【0233】
<他の実施形態>
以上説明した実施形態によれば、本発明は次のようなものとして把握できる。
【0234】
(1)一次側装置において、1つのコマンドブロックに複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てて二次側装置に引き渡し、二次側装置において、コマンドブロックに含まれる複数のコマンドを独立してあるいは非同期に実行する通信システムであって、
前記一次側装置は、各コマンドに対応する条件を当該コマンドが割り当てられたコマンドブロックに記述し、
前記二次側装置は、各コマンドを、それぞれに対応する条件に応じて実行する。
【0235】
(2)(1)において、前記条件は、コマンドの実行回数と実行間隔を含むことを特徴とする請求項1に記載の通信システム。
【0236】
(3)(1)または(2)において、前記二次側装置は、各コマンドの実行が終了する都度、独立して前記一次側装置に対して実行結果を応答する。
【0237】
(4)(3)において、前記一次側装置は、前記二次側装置に引き渡すコマンドブロックのリストを保持し、前記二次側装置から、1つのコマンドブロックに含まれる全コマンドについて実行結果の応答を受けた場合に、当該コマンドブロックを前記リストから削除する。
【0238】
(5)(1)乃至(4)において、前記一次側装置は前記コマンドブロックおよびデータバッファを格納するための記憶部を備え、前記二次側装置は、前記一時側装置の備える記憶部にアクセスすることでデータを交換する。
【0239】
(6)(1)乃至(5)において、前記一次側装置はホストコンピュータであり、前記二次側装置はプリンタであって、前記ホストコンピュータは、前記データバッファに印刷コマンドを書き込んで前記プリンタに引き渡し、前記プリンタは、引き渡された印刷コマンドに従って印刷処理を遂行する。
【0240】
(7)1つのコマンドブロックに複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てて二次側装置に引き渡す通信装置であって、
各コマンドに対応する条件を当該コマンドが割り当てられたコマンドブロックに記述し、前記二次側装置に前記コマンドブロックを引き渡す。
【0241】
(8)(7)において、前記条件は、コマンドの実行回数と実行間隔を含む。
【0242】
(9)(8)において、前記二次側装置に引き渡すコマンドブロックのリストを保持し、前記二次側装置から、1つのコマンドブロックに含まれる全コマンドについて実行結果の応答を受けた場合に、当該コマンドブロックを前記リストから削除する。
【0243】
(10)(7)乃至(9)において、前記コマンドブロックおよびデータバッファを格納するための記憶部を備え、前記二次側装置から前記記憶部にアクセスすることで前記二次側装置とデータを交換する。
【0244】
(11)(7)乃至(10)において、前記二次側装置はプリンタであって、前記データバッファに印刷コマンドを書き込んで前記プリンタに引き渡す。
【0245】
(12)一次側装置から、複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てられたコマンドブロックを読む通信装置であって、
前記コマンドブロックからコマンドおよびその条件を読み、各コマンドを、それぞれに対応する条件に応じて実行する。
【0246】
(13)(12)において、前記条件は、コマンドの実行回数と実行間隔を含む。
【0247】
(14)(12)または(13)において、各コマンドの実行が終了する都度、独立して前記一次側装置に対して実行結果を応答する。
【0248】
(15)(12)乃至(14)において、前記一次側装置は前記コマンドブロックおよびデータバッファを格納するための記憶部を備え、前記一時側装置の備える記憶部にアクセスすることでデータを交換する。
【0249】
(16)(12)乃至(15)を用いたプリンタであって、前記一次側装置はホストコンピュータであり、前記ホストコンピュータは、前記データバッファに印刷コマンドを書き込んで引き渡された印刷コマンドに従って印刷処理を遂行する。
【0250】
(17)また、(7)乃至(11)または(12)乃至(15)の機能を、コンピュータにより実現するためのプログラムも本発明に含まれる。
【0251】
【発明の効果】
上記説明したように、本発明によれば、複数のコマンドを含むコマンドブロックを二次側装置で処理させる場合に、実行の条件をコマンド単位で指定することが出来るようになり、コマンドの内容やデバイスの構成により発生していた片方のコマンドが実行できない状況でも、他方のコマンドを期待どうりに有効に実行することが出来る。
【図面の簡単な説明】
【図1】本発明のホスト・プリンタ通信システムの構成を示した図である。
【図2】1394シリアルバスのネットワークの構成を示した図である。
【図3】本発明の1394シリアルバスの構成要素を示した図である。
【図4】本発明の1394シリアルバスのリンク・レイヤ提供可能なサービスを示す図である。
【図5】本発明の1394シリアルバスのトランズアクション・レイヤ提供可能なサービスを示す図である。
【図6】1394インタフェースにおけるアドレス空間を説明する図である
【図7】1394インタフェースにおけるCSRコア・レジスタに格納される情報のアドレス及び機能を示す図である。
【図8】1394インタフェースにおけるシリアルバス・レジスタに格納される情報のアドレス及び機能を示す図である。
【図9】1394インタフェースにおける最小形式のConfiguration ROMを示す図である。
【図10】1394インタフェースにおける一般形式のConfiguration ROMを示す図である。
【図11】1394インタフェースにおけるシリアルバス装置レジスタに格納される情報のアドレス及び機能を示す図である。
【図12】IEEE1394規格に準拠した通信ケーブルの断面図である。
【図13】DS-Link符号化方式を説明する図である。
【図14】、
【図15】、
【図16】バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを示した図である。。
【図17】図15に示したステップS1505の処理(即ち、自動的に各ノードのノードIDを割り当てる処理)を詳細に説明するフローチャートである。
【図18】1394インターフェースにおけるセルフIDパケットの構成を示した図である。
【図19】1394ネットワークにおけるアービトレーションを説明する図である。
【図20】1通信サイクルにおいてIsochronous転送モードとAsynchronous転送モードとを混在させた場合を説明する図である。
【図21】Isochronous転送モードに基づいて転送される通信パケットのフォーマットを示した図である。
【図22】本発明のアシンクロナス転送のパケットフォーマットを示した図である。
【図23】SBP−2におけるORB種別を示した図である。
【図24】SBP−2におけるコマンドブロックORBのフォーマットを示した図である。
【図25】SBP−2におけるマネージメントORBのフォーマットを示した図である。
【図26】SBP−2におけるコマンドブロックORBのリンクリストを示した図である。
【図27】SBP−2におけるデータバッファの直接アクセスを示した図である。
【図28】SBP−2におけるページテーブルの使用を示した図である。
【図29】SBP−2におけるステータスFIFOのフォーマットを示した図である。
【図30】SBP−2におけるログイン動作を示した図である。
【図31】SBP−2にタスク実行の最初の動作を示した図である。
【図32】SBP−2におけるコマンドORBの動作を示した図である。
【図33】SBP−3におけるコマンドORBの動作を示した図である。
【図34】SBP−3におけるコマンドブロックORBのフォーマットを示した図である。
【図35】SBP−3改におけるステータスFIFOのフォーマットを示した図である。
【図36】SBP−3改におけるコマンドORBの動作を示した図である。
【図37】本実施形態におけるコマンドブロックORBのフォーマットを示した図である。
【図38】本実施形態におけるステータスFIFOのフォーマットを示した図である。
【図39】本実施形態におけるコマンドORBの動作を示した図である。
【図40】本実施形態におけるコマンドブロックORBの具体例を示した図である。
【図41】本実施形態における正常に終了したステータスFIFOの具体例を示した図である。
【図42】本実施形態におけるタイムアウトしたステータスFIFOの具体例を示した図である。
【図43】本実施形態におけるクラスドライバにおける処理手順の一例を示した図である。
【図44】本実施形態における実行エージェントにおける処理手順の一例を示した図である。
【図45】本実施形態におけるコマンド処理部における処理手順の一例を示した図である。
【図46】本実施形態におけるイニシエータにおけるステータスブロック処理手順の一例を示した図である。
【図47】本実施形態における印刷システムのハードウエアブロック図である。

Claims (13)

  1. 一次側装置において、1つのコマンドブロックに複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てて二次側装置に引き渡し、二次側装置において、コマンドブロックに含まれる複数のコマンドを独立して実行する通信システムであって、
    前記一次側装置は、前記各データバッファに対応した複数のコマンドそれぞれに対して独立した条件を設定し、当該独立した条件がそれぞれ設定された複数のコマンドを含む1つのコマンドブロックを作成し、作成された前記1つのコマンドブロックを前記二次側装置に送信し、
    前記二次側装置は、前記一次側装置から送信された前記1つのコマンドブロックを受信し、当該コマンドブロックに含まれる複数のコマンドを、それぞれのコマンドに設定されている条件に応じて実行する事を特徴とする通信システム。
  2. 前記条件は、コマンドの実行回数と実行間隔を含むことを特徴とする請求項1に記載の通信システム。
  3. 前記二次側装置は、各コマンドの実行が終了する都度、独立して前記一次側装置に対して実行結果を応答することを特徴とする請求項1或いは2に記載の通信システム。
  4. 前記一次側装置は、前記二次側装置に引き渡すコマンドブロックのリストを保持し、前記二次側装置から、1つのコマンドブロックに含まれる全コマンドについて実行結果の応答を受けた場合に、当該コマンドブロックを前記リストから削除することを特徴とする請求項1乃至3のいずれかに記載の通信システム。
  5. 前記一次側装置は前記ータバッファアクセスすることでデータを交換することを特徴とする請求項1乃至4のいずれかに記載の通信システム。
  6. 前記一次側装置はホストコンピュータであり、前記二次側装置はプリンタであって、前記ホストコンピュータは、前記データバッファに印刷コマンドを書き込んで前記プリンタに引き渡し、前記プリンタは、引き渡された印刷コマンドに従って印刷処理を遂行することを特徴とする請求項1乃至5のいずれかに記載の通信システム。
  7. 他の機器と通信可能な通信装置であって、
    複数のデータ格納領域のそれぞれに対応する複数のコマンドと、当該複数のコマンドのそれぞれに対して設定された独立した条件とを含む1つのコマンドブロックを生成する生成手段と、
    前記生成手段により生成された1つのコマンドブロックを他の機器に送信する送信手段とを有することを特徴とする通信装置。
  8. 前記条件は、コマンドの実行回数または実行間隔を含むことを特徴とする請求項7に記載の通信装置。
  9. コマンドブロックのリストを保持し、他の機器から、1つのコマンドブロックに含まれるコマンドに対する応答を受けた場合に、当該コマンドブロックを前記リストから削除することを特徴とする請求項7或いは8に記載の通信装置。
  10. 他の機器と通信可能な通信装置であって、
    複数のデータ格納領域のそれぞれに対応する複数のコマンドと、当該複数のコマンドのそれぞれに対して独立に設定された条件とを含む1つのコマンドブロックを前記他の機器 から受信する受信手段と、
    前記受信手段により受信された1つのコマンドブロックに含まれる前記複数のコマンド、それぞれのコマンドに対して設定された条件従って実行する実行手段とを有することを特徴とする通信装置。
  11. 前記条件は、コマンドの実行回数と実行間隔を含むことを特徴とする請求項10に記載の通信装置。
  12. 前記データ通信手段は、前記受信手段により受信されたコマンドブロックに含まれる複数の条件のそれぞれに従って、データ格納領域にデータを書き込む、またはデータ格納領域からデータを読み出すことを特徴とする請求項10或いは11に記載の通信装置。
  13. 一次側装置において、1つのコマンドブロックに複数の独立したデータバッファと各データバッファに対応した複数のコマンドを割り当てて二次側装置に引き渡し、二次側装置において、コマンドブロックに含まれる複数のコマンドを独立して実行する通信システムの制御方法であって、
    前記一次側装置が、前記各データバッファに対応した複数のコマンドそれぞれに対して独立した条件を設定し、当該独立した条件がそれぞれ設定された複数のコマンドを含む1つのコマンドブロックを作成し、作成された前記1つのコマンドブロックを前記二次側装置に送信し、
    前記二次側装置が、前記一次側装置から送信された前記1つのコマンドブロックを受信し、当該コマンドブロックに含まれる複数のコマンドを、それぞれのコマンドに設定されている条件に応じて実行する事を特徴とする通信システムの制御方法。
JP2002373106A 2002-09-05 2002-12-24 通信システム Expired - Fee Related JP4109983B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002373106A JP4109983B2 (ja) 2002-12-24 2002-12-24 通信システム
US10/654,025 US7346714B2 (en) 2002-09-05 2003-09-04 Notification of completion of communication with a plurality of data storage areas

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002373106A JP4109983B2 (ja) 2002-12-24 2002-12-24 通信システム

Publications (3)

Publication Number Publication Date
JP2004207908A JP2004207908A (ja) 2004-07-22
JP2004207908A5 JP2004207908A5 (ja) 2005-12-22
JP4109983B2 true JP4109983B2 (ja) 2008-07-02

Family

ID=32811505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002373106A Expired - Fee Related JP4109983B2 (ja) 2002-09-05 2002-12-24 通信システム

Country Status (1)

Country Link
JP (1) JP4109983B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008245046A (ja) 2007-03-28 2008-10-09 Brother Ind Ltd 複合機、およびデバイス制御システム
JP4333765B2 (ja) 2007-03-28 2009-09-16 ブラザー工業株式会社 デバイス制御システム

Also Published As

Publication number Publication date
JP2004207908A (ja) 2004-07-22

Similar Documents

Publication Publication Date Title
JP4035235B2 (ja) 電子機器
EP1134937B1 (en) Information signal processing apparatus, corresponding system, method and computer readable storage medium
JP4027189B2 (ja) 情報処理システム、情報処理装置、情報処理方法、プログラム及び記憶媒体
US6823408B2 (en) Electronic equipment, and method for controlling state of physical layer circuit therefor
US6963938B2 (en) Information processing apparatus and method therefor
JP2001119410A (ja) 自己識別フェーズにおける処理方法
JP4424700B2 (ja) 情報処理装置およびその制御方法
JP4109983B2 (ja) 通信システム
US7346714B2 (en) Notification of completion of communication with a plurality of data storage areas
JP2001274813A (ja) 情報信号処理装置及び情報信号処理方法並びに記憶媒体
JP4095384B2 (ja) 情報処理システム、情報処理装置、情報処理方法、プログラム及び記憶媒体
JP2003110651A (ja) データ処理方法、データ処理装置、通信プロトコル及びプログラム
JP2004064665A (ja) データ転送装置及び送信装置及び受信装置及びそれらの制御方法
JP2004102443A (ja) 情報処理システム、情報処理方法、プログラム及び記憶媒体
US7003604B2 (en) Method of and apparatus for cancelling a pending AV/C notify command
JP3943722B2 (ja) データ転送装置、データ転送システムおよびその方法、画像処理装置、並びに、記録媒体
JP2005044078A (ja) 通信方法、印刷装置及びホスト装置
JP2004179898A (ja) 画像処理装置
EP1182827A2 (en) Information control method, information processing apparatus, and information control system
JP2009027349A (ja) ネットワーク機器
JP2006134222A (ja) 情報処理装置及び方法
JP2001144783A (ja) シリアルバスブリッジ、端末装置、情報通信システム、情報通信方法並びに記憶媒体
JP2001160938A (ja) 画像処理装置及び画像処理システム、及びその制御方法
JP2004179899A (ja) 画像処理装置
JP2004192559A (ja) 画像処理システム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051028

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080307

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080407

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

Free format text: PAYMENT UNTIL: 20110411

Year of fee payment: 3

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130411

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140411

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees