JP4095384B2 - Information processing system, information processing apparatus, information processing method, program, and storage medium - Google Patents
Information processing system, information processing apparatus, information processing method, program, and storage medium Download PDFInfo
- Publication number
- JP4095384B2 JP4095384B2 JP2002260397A JP2002260397A JP4095384B2 JP 4095384 B2 JP4095384 B2 JP 4095384B2 JP 2002260397 A JP2002260397 A JP 2002260397A JP 2002260397 A JP2002260397 A JP 2002260397A JP 4095384 B2 JP4095384 B2 JP 4095384B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- communication
- completed
- data communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Small-Scale Networks (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、IEEE1394等のインターフェースで接続される情報処理システム、情報処理装置、情報処理方法、プログラム及び記憶媒体に関するものである。
【0002】
【従来の技術】
セントロニクス、USB、そしてIEEE1394等の各種インターフェースにおいてホストとデバイスの1対1接続、通信を行なう場合、ホスト・デバイス間でデバイスの各種機能を制御するためにために通信プロトコルの1セッション中に複数の論理チャネル接続を樹立し、チャネルごとにデータ転送を行なう。
【0003】
IEEE1394上のデータ通信プロトコルであるSBP(シリアルバスプロトコル)−2は、それ自体では、ひとつのロジカルユニットにおいて、データ転送の単位であるORB(オペレーションリクエストブロック)1個に対して1つのデータバッファが参照されるため、片方向の単一データチャネル、片方向半二重のデータ通信を行なう仕組みになっており、複数論理チャネルを実現するのは困難であった。現在規格策定中のSBP−2の機能拡張版であるSBP−3においては、この点に注目し、ロジカルユニットにおけるデータ転送の単位であるORBに対して2つのデータバッファを参照できるようにして1ロジカルユニットにつき2つのデータ転送チャネルを実現することを可能とする拡張が行なわれた。
【0004】
【発明が解決しようとする課題】
しかしながらSBP−3のデータ転送においては2つのデータ転送チャネルのフローコントロールはあくまでもORB単位で行なわれるため、何らかの理由によりどちらかのデータ転送チャネルにおいてデータの送受信ができなくなった場合、またどちらかのデータ転送チャネルのデータ転送が他のチャネルよりも遅い場合、正常に転送されているチャネル、速いほうのチャネルが影響を受けてしまう。
【0005】
これは、片方のデータバッファに対するアクセスが正常終了しても、もう片方のデータバッファアクセスが完了しないとそのORBに対する完了通知をSBP−3のイニシエータに対して通知できず、ロジカルユニットとしてのデータ転送が滞ってしまうためである。
【0006】
本発明は、上記従来技術の課題を解決するためになされたもので、その目的とするところは、IEEE1394バス等の2つのチャネルを用いて効率的なデータ転送を行うことにある。
【0007】
【課題を解決するための手段】
上記目的を達成するため、本発明に係るシステムは、
通信制御バスで接続された第1、第2機器を含む情報処理システムであって、
前記第1機器は、
1つのコマンドブロックに対し複数のデータバッファを割り当て
前記第2機器は、
前記コマンドブロックに従って前記複数のデータバッファの少なくとも1つに対するデータ通信を行うデータ通信手段と、
前記データ通信手段によって前記複数のデータバッファのいずれか1つに対するデータ通信が完了した場合には当該データ通信が完了した1つのデータバッファを特定するための情報と前記複数のデータバッファの中でデータ通信が完了していないデータバッファを特定するための情報とを含むステータスを前記第1機器に通知し、前記データ通信手段によって前記複数のデータバッファ全てに対するデータ通信が完了した場合には当該全てのデータバッファに対するデータ通信が完了したことを示すステータスを前記第1機器に通知する完了通知手段と、
を有することを特徴とする。
【0009】
前記通信制御バスはIEEE1394に準拠しており、前記第1機器と前記第2機器との間では、シリアルバスプロトコル3を通信プロトコルとしてデータ通信を行うことを特徴とする。
【0010】
前記完了通知手段は、前記第1機器のステータスFIFOに、前記データバッファの内、データ通信が完了したデータバッファを示すステータスを発行することを特徴とする。
【0011】
前記完了通知手段は、前記データバッファごとに独立してデータ通信の完了を通知することを特徴とする。
【0012】
前記完了通知手段は、更に、前記複数のデータバッファの全てに対するデータ通信の完了を通知することを特徴とする。
【0013】
前記第1機器は、前記データバッファに格納されているデータの識別情報を前記ORBに含むことを特徴とする。
【0014】
上記目的を達成するため、本発明に係る方法は、
通信制御バスで接続された第1、第2機器間における通信方法であって、前記第1機器から前記第2機器へ送信する1つのコマンドブロックに対し複数のデータバッファを割り当て、前記第2機器は、前記コマンドブロックに従って前記複数のデータバッファの少なくとも1つに対するデータ通信を行い、当該データ通信によって前記複数のデータバッファのいずれか1つに対するデータ通信が完了した場合には当該データ通信が完了した1つのデータバッファを特定するための情報と前記複数のデータバッファの中でデータ通信が完了していないデータバッファを特定するための情報とを含むステータスを前記第1機器に通知し、前記データ通信によって前記複数のデータバッファ全てに対するデータ通信が完了した場合には当該全てのデータバッファに対するデータ通信が完了したことを示すステータスを前記第1機器に通知することを特徴とする。
【0016】
上記目的を達成するため、本発明に係る装置は、
他の機器と通信制御バスで接続された情報処理装置であって、
1つのコマンドブロックに対し複数のデータバッファを割り当てた他の機器に対して、前記コマンドブロックに従って前記複数のデータバッファの少なくとも1つに対するデータ通信を行うデータ通信手段と、
前記データ通信手段によって前記複数のデータバッファのいずれか1つに対するデータ通信が完了した場合には当該データ通信が完了した1つのデータバッファを特定するための情報と前記複数のデータバッファの中でデータ通信が完了していないデータバッファを特定するための情報とを含むステータスを前記第1機器に通知し、前記データ通信手段によって前記複数のデータバッファ全てに対するデータ通信が完了した場合には当該全てのデータバッファに対するデータ通信が完了したことを示すステータスを前記他の機器に通知する完了通知手段と、
を有することを特徴とする。
【0022】
また、上記目的を達成するため、本発明に係るプログラムは、上記通信方法をコンピュータに実現させる。また、本発明に係る記憶媒体は、そのプログラムを格納する。
【0023】
【発明の実施の形態】
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素の相対配置、表示画面等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0024】
(第1実施形態)
本発明の第1実施形態としての情報処理システムについて説明する前に、IEEE1394の技術の概要について説明する。
【0025】
〈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」に記述されている。
【0026】
(1)概要
図2にIEEE1394規格に準拠したデジタルインタフェース(以下、1394インタフェース)を具備するノードにより構成される通信システム(以下、1394ネットワーク)の一例を示す。1394ネットワークは、シリアルデータの通信可能なバス型ネットワークを構成するものである。
【0027】
図2において、各ノードA〜Fは、IEEE1394規格に準拠した通信ケーブルを介して接続されている。これらのノードA〜Hは、例えば、PC(Personal Computer)、デジタルVTR(Video Tape Recorder)、DVD(Digital Video Disc)プレーヤ、デジタルカメラ、ハードディスク、モニタ等の電子機器である。
【0028】
1394ネットワークの接続方式は、ディジーチェーン方式とノード分岐方式とに対応しており、自由度の高い接続を可能としている。
【0029】
又、1394ネットワークでは、例えば、既存の機器を削除したり、新たな機器を追加したり、既存の機器の電源をON/OFFしたりした場合に、自動的にバスリセットを行う。このバスリセットを行うことにより、1394ネットワークは、新たな接続構成の認識と各機器に対するID情報の割り当てとを自動的に行うことができる。この機能によって、1394ネットワークは、ネットワークの接続構成を常時認識することができる。
【0030】
又、1394ネットワークは、他の機器から転送されたデータを中継する機能を有している。この機能により、全ての機器がバスの動作状況を把握することができる。
【0031】
又、1394ネットワークは、Plug&Playと呼ばれる機能を有している。この機能により、全ての機器の電源をOFFにすることなく、接続するだけで自動に接続機器を認識することができる。
【0032】
又、1394ネットワークは、100/200/400Mbpsのデータ転送速度に対応している。上位のデータ転送速度を持つ機器は、下位のデータ転送速度をサポートすることができるため、異なるデータ転送速度に対応する機器同士を接続することができる。
【0033】
更に、1394ネットワークは、2つの異なるデータ転送方式(即ち、アシンクロナス転送モードとアイソクロナス転送モード)に対応している。
【0034】
アシンクロナス(Asynchronous)転送モードは、必要に応じて非同期に転送することが要求されるデータ(即ち、コントロール信号やファイルデータ等)を転送する際に有効である。又、アイソクロナス(Isochronous)転送モードは、所定量のデータを一定のデータレートで連続的に転送することが要求されるデータ(即ち、ビデオデータやオーディオデータ等)を転送する際に有効である。
【0035】
アシンクロナス転送モードとアイソクロナス転送モードとは、各通信サイクル(通常1サイクルは、125μS)内において、混在させることが可能である。各転送モードは、サイクルの開始を示すサイクル・スタート・パケット(以下、CSP)の転送後に実行される。
【0036】
尚、各通信サイクル期間において、アイソクロナス転送モードは、アシンクロナス転送モードよりも優先順位が高く設定されている。又、アイソクロナス転送モードの転送帯域は、各通信サイクル内で保証されている。
【0037】
(2)アーキテクチャ
次に、図3を用いて1394インタフェースの構成要素を説明する。
【0038】
1394インタフェースは、機能的に複数のレイヤ(階層)から構成されている。図3において、1394インタフェースは、IEEE1394規格に準拠した通信ケーブル301を介して他のノードの1394インタフェースと接続される。又、1394インタフェースは、1つ以上の通信ポート302を有し、通信ポート302は、ハードウェア部に含まれるフィジカル・レイヤ303と接続される。
【0039】
図3において、ハードウェア部は、フィジカル・レイヤ303とリンク・レイヤ304とから構成されている。フィジカル・レイヤ303は、他のノードとの物理的、電気的なインタフェース、バスリセットの検出とそれに伴う処理、入出力信号の符号化/復号化、バス使用権の調停等を行う。又、リンク・レイヤ304は、通信パケットの生成と送受信、サイクルタイマの制御等を行なう。
【0040】
又、図3において、ファームウェア部は、トランザクション・レイヤ305とシリアル・バス・マネージメント306とを含んでいる。トランザクション・レイヤ305は、アシンクロナス転送モードを管理し、各種のトランザクション(リード、ライト、ロック)を提供する。シリアル・バス・マネージメント306は、後述するCSRアーキテクチャに基づいて、自ノードの制御、自ノードの接続状態の管理、自ノードのID情報の管理、シリアルバスネットワークの資源管理を行う機能を提供する。
【0041】
以上、ハードウェア部とファームウェア部とが実質的に1394インタフェースを構成するものであり、それらの基本構成は、IEEE1394規格により規定されている。
【0042】
又、ソフトウェア部に含まれるアプリケーション・レイヤ307は、使用するアプリケーションソフトによって異なり、ネットワーク上でどのようにデータを通信するのかを制御する。例えば、デジタルVTRの動画像データの場合は、AV/Cプロトコルなどの通信プロトコルによって規定されている。
【0043】
(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)は、ブロードキャスト通信、アイソクロナスパケットの転送の場合には存在しない。
【0044】
又、リンク・レイヤ304は、上述のサービスに基づいて、上述の2種類の転送方式、即ち、アシンクロナス転送モード、アイソクロナス転送モードを実現する。
【0045】
(2−2)トランザクション・レイヤ305
図5は、トランザクション・レイヤ305の提供可能なサービスを示す図である。図5において、トランザクション・レイヤ305は、次の4つのサービスを提供する。即ち、▲1▼応答ノードに対して所定のトランザクションを要求するトランザクション要求(TR_DATA.request)、▲2▼応答ノードに所定のトランザクション要求の受信を通知するトランザクション通知(TR_DATA.indication)、▲3▼応答ノードからの状態情報(ライト、ロックの場合は、データを含む)を受信したことを示すトランザクション応答(TR_DATA.response)、▲4▼要求ノードからの状態情報を確認するトランザクション確認(TR_DATA.confirmation)である。
【0046】
又、トランザクション・レイヤ305は、上述のサービスに基づいてアシンクロナス転送を管理し、次の3種類のトランザクション、即ち、▲1▼リード・トランザクション、▲2▼ライト・トランザクション、▲3▼ロック・トランザクションを実現する。
【0047】
▲1▼リード・トランザクションは、要求ノードが応答ノードの特定アドレスに格納された情報を読み取る。
【0048】
▲2▼ライト・トランザクションは、要求ノードが応答ノードの特定アドレスに所定の情報を書き込む。
【0049】
▲3▼ロック・トランザクションは、要求ノードが応答ノードに対して参照データと更新データとを転送し、応答ノードの特定アドレスの情報とその参照データとを比較し、その比較結果に応じて特定アドレスの情報を更新データに更新する。
【0050】
(2−3)シリアル・バス・マネージメント306
シリアル・バス・マネージメント306は、具体的に、次の3つの機能を提供することができる。3つの機能とは、即ち、▲1▼ノード制御、▲2▼アイソクロナス・リソース・マネージャ(以下、IRM)、▲3▼バスマネージャである。
【0051】
▲1▼ノード制御は、上述の各レイヤを管理し、他のノードとの間で実行されるアシンクロナス転送を管理する機能を提供する。
【0052】
▲2▼IRMは、他のノードとの間で実行されるアイソクロナス転送を管理する機能を提供する。具体的には、転送帯域幅とチャネル番号の割り当てに必要な情報を管理し、これらの情報を他のノードに対して提供する。
【0053】
IRMは、ローカルバス上に唯一存在し、バスリセット毎に他の候補者(IRMの機能を有するノード)の中から動的に選出される。又、IRMは、後述のバスマネージャの提供可能な機能(接続構成の管理、電源管理、速度情報の管理等)の一部を提供してもよい。
【0054】
▲3▼バスマネージャは、IRMの機能を有し、IRMよりも高度なバス管理機能を提供する。具体的には、より高度な電源管理(通信ケーブルを介して電源の供給が可能か否か、電源の供給が必要か否か等の情報を各ノード毎に管理)、より高度な速度情報の管理(各ノード間の最大転送速度の管理)、より高度な接続構成の管理(トポロジ・マップの作成)、これらの管理情報に基づくバスの最適化等を行ない、更にこれらの情報を他のノードに提供する機能を有する。
【0055】
又、バスマネージャは、シリアルバスネットワークを制御するためのサービスをアプリケーションに対して提供できる。ここで、サービスには、シリアルバス制御要求(SB_CONTROL.request)、シリアルバス・イベント制御確認(SB_CONTROL.confirmation)、シリアルバス・イベント通知(SB_CONTROL.indication)等がある。
【0056】
SB_CONTROL.requestは、アプリケーションがバスリセットを要求するサービスである。SB_CONTROL.confirmationは、SB_CONTROL.requestをアプリケーションに対して確認するサービスである。SB_CONTROL.indicationは、非同期に発生するイベントをアプリケーションに対して通知するサービスである。
【0057】
(3)アドレス指定
図6は、1394インタフェースにおけるアドレス空間を説明する図である。尚、1394インタフェースは、ISO/IEC 13213:1994に準じたCSR(Command and Status Register)アーキテクチャに従い、64ビット幅のアドレス空間を規定している。
【0058】
図6において、最初の10ビットのフィールド601は、所定のバスを指定するID番号に使用され、次の6ビットのフィールド602は、所定の機器(ノード)を指定するID番号に使用される。この上位16ビットを「ノードID」と呼び、各ノードはこのノードIDにより他のノードを識別する。又、各ノードは、このノードIDを用いて相手を識別した通信を行うことができる。
【0059】
残りの48ビットからなるフィールドは、各ノードの具備するアドレス空間(256Mバイト構造)を指定する。その内の20ビットのフィールド603は、アドレス空間を構成する複数の領域を指定する。
【0060】
フィールド603において、「0〜0xFFFFD」の部分は、メモリ空間と呼ばれる。「0xFFFFE」の部分は、プライベート空間と呼ばれ、各ノードで自由に利用できるアドレスである。又、「0xFFFFE」の部分は、レジスタ空間と呼ばれ、バスに接続されたノード間において共通の情報を格納する。各ノードは、レジスタ空間の情報を用いることにより、各ノード間の通信を管理することができる。
【0061】
最後の28ビットのフィールド604は、各ノードにおいて共通或いは固有となる情報が格納されるアドレスを指定する。
【0062】
例えば、レジスタ空間において、最初の512バイトは、CSRアーキテクチャーのコア(CSRコア)レジスタ用に使用される。CSRコア・レジスタに格納される情報のアドレス及び機能を図7に示す。図中のオフセットは、「0xFFFFF0000000」からの相対位置である。
【0063】
次の512バイトは、シリアルバス用のレジスタとして使用される。シリアルバス・レジスタに格納される情報のアドレス及び機能を図8に示す。図中のオフセットは、「0xFFFFF0000200」からの相対位置である。
【0064】
その次の1024バイトは、コンフィグレーションROM(Configuration ROM)用に使用される。
【0065】
コンフィグレーションROMには最小形式と一般形式とがあり、「0xFFFFF0000400」から配置される。最小形式のコンフィグレーションROMを図9に示す。図9において、ベンダIDは、IEEEにより各ベンダに対して固有に割り当てられた24ビットの数値である。
【0066】
又、一般形式のコンフィグレーションROMを図10に示す。図10において、上述のベンダIDは、ルートディレクトリ(Root Directory)1002に格納されている。Bus Info Block1001とRoot Leaf1005とには、各ノードを識別する固有のID情報としてノードユニークIDを保持することが可能である。
【0067】
ここで、ノードユニークIDは、メーカー、機種に関わらず、1つのノードを特定することのできる固有のIDを定めるようになっている。ノードユニークIDは64ビットにより構成され、上位24ビットは上述のベンダIDを示し、下位48ビットは各ノードを製造するメーカーにおいて自由に設定可能な情報(例えば、ノードの製造番号等)を示す。尚、このノードユニークIDは、例えばバスリセットの前後で継続して特定のノードを認識する場合に使用される。
【0068】
又、図10において、ルートディレクトリ1002には、ノードの基本的な機能に関する情報を保持することが可能である。詳細な機能情報は、ルートディレクトリ1002からオフセットされるサブディレクトリとしてのユニットディレクトリ(Unit Directories)1004に格納される。ユニットディレクトリ1004には、例えば、ノードのサポートするソフトウェアユニットに関する情報が格納される。具体的には、ノード間のデータ通信を行うためのデータ転送プロトコル、所定の通信手順を定義するコマンドセット等に関する情報が保持される。
【0069】
又、図10において、ノード依存情報ディレクトリ(Node Dependent Info Directory)1003には、デバイス固有の情報を保持することが可能である。ノード依存情報ディレクトリ1003は、ルートディレクトリ1002によりオフセットされる。
【0070】
更に、図10において、ベンダー依存情報(Vendor Dependent Information)1006には、ノードを製造、或いは販売するベンダ固有の情報を保持することができる。
【0071】
残りの領域は、ユニット空間と呼ばれ、各ノード固有の情報、例えば、各機器の識別情報(会社名、機種名等)や使用条件等が格納されたアドレスを指定する。ユニット空間のシリアルバス装置レジスタに格納される情報のアドレス及び機能を図11に示す。図中のオフセットは、「0xFFFFF0000800」からの相対位置である。
【0072】
尚、一般的に、異種のバスシステムの設計を簡略化したい場合、各ノードは、レジスタ空間の最初の2048バイトのみを使うべきである。つまり、CSRコア・レジスタ、シリアルバス・レジスタ、コンフィグレーションROM、ユニット空間の最初の2048バイトの合わせて4096バイトで構成することが望ましい。
【0073】
(4)通信ケーブルの構成
図12にIEEE1394規格に準拠した通信ケーブルの断面図を示す。
【0074】
通信ケーブルは、2組のツイストペア信号線と電源ラインとにより構成されている。電源ラインを設けることによって、1394インタフェースは、主電源のOFFとなった機器、故障により電力低下した機器等にも電力を供給することができる。尚、電源線内を流れる電源の電圧は8〜40V、電流は最大電流DC1.5Aと規定されている。
【0075】
2組のツイストペア信号線には、DS-Link(Data/Strobe Link)符号化方式にて符号化された情報信号が伝送される。図13は、DS-Link符号化方式を説明する図である。
【0076】
このDS-Link符号化方式は、高速なシリアルデータ通信に適しており、その構成は、2組のより対線を必要とする。一組のより対線は、データ信号を送り、他のより対線は、ストローブ信号を送る構成になっている。受信側は、2組の信号線から受信したデータ信号とストローブ信号との排他的論理和をとることによって、クロックを再現することができる。
【0077】
尚、DS-Link符号化方式を用いることにより、1394インタフェースには、例えば次のような利点がある。▲1▼他の符号化方式に比べて転送効率が高い。▲2▼PLL回路が不要となり、コントローラLSIの回路規模を小さくできる。▲3▼アイドル状態であることを示す情報を送る必要が無いため、トランシーバ回路をスリープ状態とし易く、消費電力の低減を図ることができる。
【0078】
(5)バスリセット
各ノードの1394インタフェースは、ネットワークの接続構成に変化が生じたことを自動的に検出することができる。この場合、1394ネットワークは以下に示す手順によりバスリセットと呼ばれる処理を行う。尚、接続構成の変化は、各ノードの具備する通信ポートにかかるバイアス電圧の変化により検知することができる。
【0079】
ネットワークの接続構成の変化(例えば、ノードの挿抜、ノードの電源のON/OFFなどによるノード数の増減)を検出したノード、又は新たな接続構成を認識する必要のあるノードは、1394インタフェースを介して、バス上にバスリセット信号を送信する。
【0080】
バスリセット信号を受信したノードの1394インタフェースは、バスリセットの発生を自身のリンク・レイヤ304に伝達すると共に、そのバスリセット信号を他のノードに転送する。バスリセット信号を受信したノードは、今まで認識していたネットワークの接続構成及び各機器に割り当てられたノードIDをクリアにする。最終的に全てのノードがバスリセット信号を検知した後、各ノードは、バスリセットに伴う初期化処理(即ち、新たな接続構成の認識と新たなノードIDの割り当て)を自動的に行う。
【0081】
尚、バスリセットは、先に述べたような接続構成の変化による起動の他に、ホスト側の制御によって、アプリケーション・レイヤ307がフィジカル・レイヤ303に対して直接命令を出すことによって起動させることも可能である。
【0082】
又、バスリセットが起動するとデータ転送は一時中断され、バスリセットに伴う初期化処理の終了後、新しいネットワークのもとで再開される。
【0083】
(6)バスリセット起動後のシーケンス
バスリセットの起動後、各ノードの1394インタフェースは、新たな接続構成の認識と新たなノードIDの割り当てとを自動的に実行する。以下、バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを図14〜16を用いて説明する。
【0084】
図14は、図2の1394ネットワークにおけるバスリセット起動後の状態を説明する図である。
【0085】
図14において、ノードAは1つの通信ポート、ノードBは2つの通信ポート、ノードCは2つの通信ポート、ノードDは3つの通信ポート、ノードEは1つの通信ポート、ノードFは1つの通信ポートを具備している。各ノードの通信ポートには、各ポートを識別するためにポート番号を付されている。
【0086】
以下、図14におけるバスリセットの開始からノードIDの割り当てまでを図15のフローチャートを用いて説明する。
【0087】
図15において、1394ネットワークを構成する各ノードA〜Fは、バスリセットが発生したか否かを常時監視している(ステップS1501)。接続構成の変化を検出したノードからバスリセット信号が出力されると、各ノードは以下の処理を実行する。
【0088】
バスリセットの発生後、各ノードは、夫々の具備する通信ポート間において親子関係の宣言を行なう(ステップS1502)。
【0089】
各ノードは、全てのノード間の親子関係が決定されるまで、ステップS1502の処理を繰り返し行なう(ステップS1503)。
【0090】
全てのノード間の親子関係が決定した後、1394ネットワークは、ネットワークの調停を行なうノード、即ちルートを決定する。(ステップS1504)。
【0091】
ルートを決定した後、各ノードの1394インタフェース夫々は、自己のノードIDを自動的に設定する作業を実行する(ステップS1505)。
【0092】
全てのノードに対してノードIDの設定がなされるまで、各ノードは所定の手順に基づきステップS1505の処理を実行する(ステップS1506)。
【0093】
最終的に全てのノードに対してノードIDが設定された後、各ノードは、アイソクロナス転送或いはアシンクロナス転送を実行する(ステップS1507)。
【0094】
ステップS1507の処理を実行すると共に、各ノードの1394インタフェースは、再びバスリセットの発生を監視する。バスリセットが発生した場合には、ステップS1501以降の処理を再び実行する。
【0095】
以上の手順により、各ノードの1394インタフェースは、バスリセットが起動する毎に、新たな接続構成の認識と新たなノードIDの割り当てとを自動的に実行することができる。
【0096】
(7)親子関係の決定
次に、図16を用いて、図15に示したステップS1502の処理(即ち、各ノード間の親子関係を認識する処理)について詳細に説明する。
【0097】
図16において、バスリセットの発生後、1394ネットワーク上の各ノードA〜Fは、自分の具備する通信ポートの接続状態(接続又は未接続)を確認する(ステップS1601)。
【0098】
通信ポートの接続状態の確認後、各ノードは、他のノードと接続されている通信ポート(以下、接続ポート)の数をカウントする(ステップS1602)。
【0099】
ステップS1602の処理の結果、接続ポートの数が1つである場合、そのノードは、自分が「リーフ」であると認識する(ステップS1603)。ここで、リーフとは、1つのノードとのみ接続されているノードのことである。
【0100】
リーフとなるノードは、その接続ポートに接続されているノードに対して、「自分は子(Child)」であることを宣言する(ステップS1604)。このとき、リーフは、その接続ポートが「親ポート(親ノードと接続された通信ポート)」であると認識する。
【0101】
ここで、親子関係の宣言は、まず、ネットワークの末端であるリーフとブランチとの間にて行われ、続いて、ブランチとブランチとの間で順次に行われる。各ノード間の親子関係は、早く宣言の行なえる通信ポートから順に決定される。又、各ノード間において、子であることを宣言した通信ポートは「親ポート」であると認識され、その宣言を受けた通信ポートは「子ポート(子ノードと接続された通信ポート)」であると認識される。例えば、図14において、ノードA、E、Fは、自分がリーフであると認識した後、親子関係の宣言を行う。これにより、ノードA−B間では子−親、ノードE−D間では子−親、ノードF−D間では子−親と決定される。
【0102】
又、ステップS1602の処理の結果、接続ポートの数が2つ以上の場合、そのノードは、自分を「ブランチ」であると認識する(ステップS1605)。ここで、ブランチとは、2つ以上のノードと接続されているノードのことである。
【0103】
ブランチとなるノードは、各接続ポートのノードから親子関係の宣言を受け付ける(ステップS1606)。宣言を受け付けた接続ポートは、「子ポート」として認識される。
【0104】
1つの接続ポートを「子ポート」と認識した後、ブランチは、まだ親子関係の決定されていない接続ポート(即ち、未定義ポート)が2つ以上あるか否かを検出する(ステップS1607)。その結果、未定義ポートが2つ以上ある場合、ブランチは、再びステップS1606の動作を行う。
【0105】
ステップS1607の結果、未定義ポートが1つだけ存在する場合、ブランチは、その未定義ポートが「親ポート」であると認識し、そのポートに接続されているノードに対して「自分は子」であることを宣言する(ステップS1608、S1609)。
【0106】
ここで、ブランチは、残りの未定義ポートが1つになるまで自分自身が子であると他のノードに対して宣言することができない。例えば、図14において、ノードB、C、Dは、自分がブランチであると認識すると共に、リーフ或いは他のブランチからの宣言を受け付ける。ノードDは、D−E間、D−F間の親子関係が決定した後、ノードCに対して親子関係の宣言を行っている。又、ノードDからの宣言を受けたノードCは、ノードBに対して親子関係の宣言を行っている。
【0107】
又、ステップS1608の処理の結果、未定義ポートが存在しない場合(つまり、ブランチの具備する全ての接続ポートが親ポートとなった場合)、そのブランチは、自分自身がルートであることを認識する。(ステップS1610)。
【0108】
例えば、図14において、接続ポートの全てが親ポートとなったノードBは、1394ネットワーク上の通信を調停するルートとして他のノードに認識される。ここで、ノードBがルートと決定されたが、ノードBの親子関係を宣言するタイミングが、ノードCの宣言するタイミングに比べて早い場合には、他のノードがルートになる可能性もある。即ち、宣言するタイミングによっては、どのノードもルートとなる可能性がある。従って、同じネットワーク構成であっても同じノードがルートになるとは限らない。
【0109】
このように全ての接続ポートの親子関係が宣言されることによって、各ノードは、1394ネットワークの接続構成を階層構造(ツリー構造)として認識することができる(ステップS1611)。尚、上述の親ノードは階層構造における上位であり、子ノードは階層構造における下位となる。
【0110】
(8)ノードIDの割り当て
図17は、図15に示したステップS1505の処理(即ち、自動的に各ノードのノードIDを割り当てる処理)を詳細に説明するフローチャートである。ここで、ノードIDは、バス番号とノード番号とから構成されるが、本実施の形態では、各ノードを同一バス上に接続するものとし、各ノードには同一のバス番号が割り当てられるものとする。
【0111】
図17において、ルートは、ノードIDが未設定のノードが接続されている子ポートの内、最小番号を有する通信ポートに対してノードIDの設定許可を与える(ステップS1701)。
【0112】
尚、図17において、ルートは、最小番号の子ポートに接続されている全ノードのノードIDを設定した後、その子ポートを設定済とし、次に最小となる子ポートに対して同様の制御を行なう。最終的に子ポートに接続された全てのノードのID設定が終了した後、ルート自身のノードIDを設定する。尚、ノードIDに含まれるノード番号は、基本的にリーフ、ブランチの順に0、1、2…と割り当てられる。従って、ルートが最も大きなノード番号を有することになる。
【0113】
ステップS1701において、設定許可を得たノードは、自分の子ポートの内、ノードIDが未設定となるノードを含む子ポートがあるか否かを判断する(ステップS1702)。
【0114】
ステップS1702において、未設定ノードを含む子ポートが検出された場合、上述の設定許可を得たノードは、その子ポートに直接接続されたノードに対してその設定許可を与えるように制御する(ステップS1703)。
【0115】
ステップS1703の処理後、上述の設定許可を得たノードは、自分の子ポートの内、ノードIDが未設定であるノードを含む子ポートがあるか否かを判断する(ステップS1704)。ここで、ステップS1704の処理後、未設定ノードを含む子ポートの存在が検出された場合、そのノードは、再びステップS1703の処理を実行する。
【0116】
又、ステップS1702或いはS1704において、未設定ノードを含む子ポートが検出されなかった場合、設定許可を得たノードは、自分自身のノードIDを設定する(ステップS1705)。
【0117】
自分のノードIDを設定したノードは、自己のノード番号、通信ポートの接続状態に関する情報等を含んだセルフIDパケットをブロードキャストする(ステップS1706)。尚、ブロードキャストとは、あるノードの通信パケットを、1394ネットワークを構成する不特定多数のノードに対して転送することである。
【0118】
ここで、各ノードは、このセルフIDパケットを受信することにより、各ノードに割り当てられたノート番号を認識することができ、自分に割り当てられるノード番号を知ることができる。例えば、図14において、ルートであるノードBは、最小ポート番号「#1」の通信ポートに接続されたノードAに対してノードID設定の許可を与える。ノードAは、自己のノード番号「No.0」と割り当て、自分自身に対してバス番号とノード番号とからなるノードIDを設定する。又、ノードAは、そのノード番号を含むセルフIDパケットをブロードキャストする。
【0119】
図18にセルフIDパケットの構成例を示す。図18において、1801はセルフIDパケットを送出したノードのノード番号を格納するフィールド、1802は対応可能な転送速度に関する情報を格納するフィールド、1803はバス管理機能(バスマネージャの能力の有無等)の有無を示すフィールド、1804は電力の消費及び供給の特性に関する情報を格納するフィールドである。
【0120】
又、図18において、1805はポート番号「#0」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールド、1806はポート番号「#1」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールド、1807はポート番号「#2」となる通信ポートの接続状態に関する情報(接続、未接続、通信ポートの親子関係等)を格納するフィールドである。
【0121】
尚、セルフIDパケットを送出するノードにバスマネージャとなり得る能力がある場合には、フィールド1803に示すコンテンダビットを「1」とし、なり得る能力がなければ、コンテンダビットを0とする。
【0122】
ここで、バスマネージャとは、上述のセルフIDパケットに含まれる各種の情報に基づいて、バスの電源管理(通信ケーブルを介して電源の供給が可能か否か、電源の供給が必要か否か等の情報を各ノード毎に管理する)、速度情報の管理(各ノードの対応可能な転送速度に関する情報から各ノード間の最大転送速度を管理する)、トポロジ・マップ情報の管理(通信ポートの親子関係情報からネットワークの接続構成を管理する)、トポロジ・マップ情報に基づくバスの最適化等を行ない、それらの情報を他のノードに提供する機能を有するノードである。これらの機能により、バスマネージャとなるノードは1394ネットワーク全体のバス管理を行なうことができる。
【0123】
ステップS1706の処理後、ノードIDの設定を行ったノードは、親ノードがあるか否かを判断する(ステップS1707)。親ノードがある場合、その親ノードが、ステップS1702以下の処理を再び実行する。そして、まだノードIDの設定されていないノードに対して許可を与える。
【0124】
又、親ノードが存在しない場合、そのノードは、ルート自身であると判断される。ルートは、全ての子ポートに接続されたノードに対してノードIDが設定されたか否かを判別する(ステップS1708)。
【0125】
ステップS1708において、全てのノードに対するID設定処理が終了しなかった場合、ルートは、そのノードを含む子ポートの内、最小番号となる子ポートに対してID設定の許可を与える(ステップS1701)。その後、ステップS1702以下の処理を実行する。
【0126】
又、全てのノードに対するID設定処理が終了した場合、ルートは、自分自身のノードIDの設定を実行する(ステップS1709)。ノードIDの設定後、ルートは、セルフIDパケットをブロードキャストする(ステップS1710)。
【0127】
以上の処理によって、1394ネットワークは、各ノードに対して自動的にノードIDを割り当てることができる。
【0128】
ここで、ノードIDの設定処理後、複数のノードがバスマネージャの能力を具備する場合、ノード番号の最も大きいノードがバスマネージャとなる。つまり、ネットワーク内で最大となるノード番号を持つルートがバスマネージャになり得る機能を有している場合には、ルートがバスマネージャとなる。
【0129】
しかしながら、ルートにその機能が備わっていない場合には、ルートの次に大きいノード番号を具備するノードがバスマネージャとなる。又、どのノードがバスマネージャになったかについては、各ノードがブロードキャストするセルフIDパケット内のコンテンダビット1803をチェックすることにより把握することができる。
【0130】
(9)アービトレーション
図19は、図1の1394ネットワークにおけるアービトレーションを説明する図である。
【0131】
1394ネットワークでは、データ転送に先立って、必ずバス使用権のアービトレーション(調停)を行なう。1394ネットワークは、論理的なバス型ネットワークであり、各ノードから転送された通信パケットを他のノードに中継することによって、ネットワーク内の全てのノードに同じ通信パケットを転送することのできる。従って、通信パケットの衝突を防ぐために、必ずアービトレーションが必要となる。これによって、ある時間において一つのノードのみが転送を行なうことができる。
【0132】
図19(a)は、ノードBとノードFとが、バス使用権の要求を発している場合について説明する図である。
【0133】
アービトレーションが始まるとノードB、Fは、夫々親ノードに向かって、バス使用権の要求を発する。ノードBの要求を受けた親ノード(即ち、ノードC)は、自分の親ノード(即ち、ノードD)に向かって、そのバス使用権を中継する。この要求は、最終的に調停を行なうルート(ノードD)に届けられる。
【0134】
バス使用要求を受けたルートは、どのノードにバスを使用させるかを決める。この調停作業はルートとなるノードのみが行なえるものであり、調停によって勝ったノードにはバスの使用許可が与えられる。
【0135】
図19(b)は、ノードFの要求が許可され、ノードBの要求が拒否されたことを示す図である。
【0136】
アービトレーションに負けたノードに対してルートは、DP(Data prefix)パケットを送り、拒否されたことを知らせる。拒否されたノードは、次回のアービトレーションまでバス使用要求を待機する。
【0137】
以上のようにアービトレーションを制御することによって、1394ネットワークは、バスの使用権を管理することができる。
【0138】
(10)通信サイクル
アイソクロナス転送モードとアシンクロナス転送モードとは、各通信サイクル期間内において時分割に混在させることができる。ここで、通信サイクルの期間は、通常、125μSである。
【0139】
図20は、1通信サイクルにおいてアイソクロナス転送モードとアシンクロナス転送モードとを混在させた場合を説明する図である。
【0140】
アイソクロナス転送モードは、アシンクロナス転送モードより優先して実行される。その理由は、サイクル・スタート・パケットの後、アシンクロナス転送を起動するために必要なアイドル期間(subaction gap)が、アイソクロナス転送を起動するため必要なアイドル期間(isochronous gap)よりも長くなるように設定されているためである。これにより、アイソクロナス転送は、アシンクロナス転送に優先して実行される。
【0141】
図20において、各通信サイクルのスタート時には、サイクル・スタート・パケット(以下、CSP)が所定のノードから転送される。各ノードは、このCSPを用いて時刻調整を行うことによって、他のノードと同じ時間を計時することができる。
【0142】
(11)アイソクロナス転送モード
アイソクロナス転送モードは、同期型の転送方式である。アイソクロナスモード転送は、通信サイクルの開始後、所定の期間において実行可能である。又、アイソクロナス転送モードは、リアルタイム転送を維持するために、各サイクル毎に必ず実行される。
【0143】
アイソクロナス転送モードは、特に動画像データや音声データ等のリアルタイムな転送を必要とするデータの転送に適した転送モードである。アイソクロナス転送モードは、アシンクロナス転送モードのように1対1の通信ではなく、ブロードキャスト通信である。つまり、あるノードから送出されたパケットは、ネットワーク上の全てのノードに対して一様に転送される。尚、アイソクロナス転送には、ack(受信確認用返信コード)は存在しない。
【0144】
図20において、チャネルe(ch e)、チャネルs(ch s)、チャネルk(ch k)は、各ノードがアイソクロナス転送を行う期間を示す。1394インタフェースでは、複数の異なるアイソクロナス転送を区別するために、夫々異なるチャネル番号を与えている。これにより、複数ノード間でのアイソクロナス転送が可能となる。ここで、このチャネル番号は、送信先を特定するものではなく、データに対する論理的な番号を与えているに過ぎない。
【0145】
又、図20に示したアイソクロナス gapとは、バスのアイドル状態を示すものである。このアイドル状態が一定時間を経過した後、アイソクロナス転送を希望するノードは、バスが使用できると判断し、アービトレーションを実行する。
【0146】
次に、図21にアイソクロナス転送モードに基づいて転送される通信パケットのフォーマットを示す。以下、アイソクロナス転送モードに基づいて転送される通信パケットを、アイソクロナスパケットと称する。
【0147】
図21において、アイソクロナスパケットはヘッダ部2101、ヘッダCRC2102、データ部2103、データCRC2104から構成される。
【0148】
ヘッダ部2101には、データ部2103のデータ長を格納するフィールド2105、アイソクロナスパケットのフォーマット情報を格納するフィールド2106、アイソクロナスパケットのチャネル番号を格納するフィールド2107、パケットのフォーマット及び実行しなければならない処理を識別するトランザクションコード(tcode)を格納するフィールド2108、同期化コードを格納するフィールド2109がある。
【0149】
(12)アシンクロナス転送モード
アシンクロナス転送モードは、非同期型の転送方式である。アシンクロナス転送は、アイソクロナス転送期間の終了後、次の通信サイクルが開始されるまでの間(即ち、次の通信サイクルのCSPが転送されるまでの間)、実行可能である。
【0150】
図20において、最初のサブアクション・ギャップ(subaction gap)は、バスのアイドル状態を示すものである。このアイドル時間が一定値になった後、アシンクロナス転送を希望するノードは、バスが使用できると判断し、アービトレーションを実行する。
【0151】
アービトレーションによりバスの使用権を得たノードは、図22に示すパケットを所定のノードに対して転送する。このパケットを受信したノードは、ack(受信確認用返送コード)或いは応答パケットをack gap後に返送する。
【0152】
図22は、アシンクロナス転送モードに基づく通信パケットのフォーマットを示す図である。以下、アシンクロナス転送モードに基づいて転送される通信パケットを、アシンクロナスパケットと称する。
【0153】
図22において、アシンクロナスパケットは、ヘッダ部2201、ヘッダCRC2202、データ部2203、データCRC2204から構成される。
【0154】
ヘッダ部2201において、フィールド2205には宛先となるノードのノードID、フィールド2206にはソースとなるノードのノードID、フィールド2207には一連のトランザクションを示すためのラベル、フィールド2208には再送ステータスを示すコード、フィールド2209にはパケットのフォーマット及び実行しなければならない処理を識別するトランザクションコード(tcode)、フィールド2210には優先順位、フィールド2211には宛先のメモリ・アドレス、フィールド2212にはデータ部のデータ長、フィールド2213には拡張されたトランザクション・コードが格納される。
【0155】
又、アシンクロナス転送は、自己ノードから相手ノードへの1対1の通信である。転送元ノードから転送されたパケットは、ネットワーク中の各ノードに行き渡るが、自分宛てのアドレス以外のものは無視される。従って、宛先となるノードのみが、そのパケットを読み込むことができる。
【0156】
尚、アシンクロナス転送中に次のCSPを転送すべき時間に至った場合、無理に転送を中断せず、その転送が終了した後、次のCSPを送信する。これにより、1つの通信サイクルが125μS以上続いたときは、その分、次の通信サイクル期間を短縮する。このようにすることによって、1394ネットワークは、ほぼ一定の通信サイクルを保持することができる。
【0157】
(13)デバイスマップ
デバイスマップを作成するためにアプリケーションが1394ネットワークのトポロジーを知る手段として、IEEE1394規格上は以下の手段がある。
【0158】
1.バスマネージャーのトポロジーマップレジスターをリードする
2.バスリセット時にセルフIDパケットから推定する
しかし上記1、2の手段では、各ノードの親子関係によるケーブル接続順のトポロジーは判明するものの、物理的な位置関係のトポロジーを知ることはできない(実装されていないポートまで見えてしまう、といった問題もある)。
【0159】
また、デバイスマップを作成するための情報を、コンフィギュレーションROM以外のデータベースとして持つ、といった手段もあるが、その場合、各種情報を得る手段はデータベースアクセスのためのプロトコルに依存してしまう。
【0160】
ところで、コンフィギュレーションROM自体やコンフィギュレーションROMを読む機能は、IEEE1394規格を遵守したデバイスが必ず持つものである。そこで、デバイスの位置、機能等の情報を各ノードのコンフィギュレーションROMに格納し、それらをアプリケーションから読む機能を与えることにより、データベースアクセス、データ転送等の特定のプロトコルに依存することなく、各ノードのアプリケーションがいわゆるデバイスマップ表示機能を実装することができる。
【0161】
すなわち、コンフィグレーションROMにはノード固有の情報として物理的な位置、機能などが格納可能であり、デバイスマップ表示機能の実現に使用することが可能である。
【0162】
この場合、アプリケーションが物理的な位置関係による1394ネットワークトポロジーを知る手段としては、バスリセット時やユーザからの要求時に、各ノードのコンフィギュレーションROMを読み取ることにより、1394ネットワークのトポロジーを知る、という方法が可能となる。さらに、コンフィギュレーションROM内にノードの物理的位置のみならず、機能などの各種ノード情報も記述すれば、コンフィギュレーションROMを読むことで、ノードの物理的位置と同時に各ノードの機能情報等も得ることができる。アプリケーションが各ノードのコンフィギュレーションROM情報を取得する際には、指定ノードの任意のコンフィギュレーションROM情報を取得するAPIを用いる。
【0163】
このような手段を用いることにより、IEEE1394ネットワーク上のデバイスのアプリケーションは、物理的なトポロジーマップ、各ノードの機能マップなど、用途に応じて様々なデバイスマップを作成することができ、ユーザが必要な機能をもつデバイスを選択する、といったことも可能となる。
【0164】
(14)SBP−2の概要
SBP−2(Serial Bus Protocol2)は、NCITS傘下のTechnical Committee T10のプロジェクトとして1996より標準化の審議が進められ、1998年にANSI NCITS 325-1998として標準化が認可された、IEEE1394バスに関するプロトコルである。レイヤとしては、IEEE1394−1995のトランザクション層の上位に位置するコマンド/データ転送プロトコルである。当初SBP−2は、SCSIコマンドによって、IEEE1394上のデバイスを動作させることを、主な目的として開発されたが、SCSIコマンドに限らず、他のコマンドを載せることもできる。
【0165】
SBP−2の特徴として以下の4つが挙げられる。
【0166】
1)イニシエータ(Initiator)/ターゲット(Target)構成のマスタスレイブモデル(Master Slave Model)であり、マスタであるイニシエータがログイン、ログアウト、タスク、マネージメント、コマンド発行等の全ての権限と責任を持つ。
【0167】
2)バスモデルとしてのIEEE1394の特徴を生かした共有メモリモデル(Shared Memory Model)である。コマンド等のターゲットへの要求内容は、基本的には全てシステムメモリ内に置かれ、要求を受けたターゲットがシステムメモリの内容を読みに行く。又は、システムメモリへ要求されたステータス等の情報を書きこむ。
【0168】
即ち、通信のためのリソースを一箇所に集中できるので、リソースの負担を非常に軽くでき、かつターゲットが自分のペースでシステムメモリへ読み書きできるので、ターゲットの設計の自由度が高く、システムメモリのアクセスをH/W化することにより高速化が容易である。つまり、高性能にも、徹底した低コストモデルにもできる。
【0169】
3)メッセージ交換のためのコマンド群を一連のリンクリストとして記述する仕組みがあるため、レイテンシによる効率低下を隠蔽できるため、IEEE1394バスの特徴を生かした、高速で効率の高いデータ通信を実現できる。
【0170】
4)コマンドセットに依存しない構造である。つまり様々なコマンドセットに対応可能である。
【0171】
特徴1)に示したように、SBP−2はマスタであるイニシエータが全ての権限と責任を持つマスタスレイブモデルであるため、全てはイニシエータからの動作をトリガーにして行われる。イニシエータからのログイン、ログアウト要求やタスクマネージメント要求、コマンド等は、ORB(Operation Request Block)と呼ぶデータ構造に内包された形でターゲットに送られる。正しくは、イニシエータが自メモリに置き、ターゲットがそれを読み出す。図23に、主なORBの種類を示す。
【0172】
1)ダミーORB:ターゲットフェッチエージェントのイニシャライズ時、タスクのキャンセル等に使用する。ターゲットにはno operationとして扱われる。
【0173】
2)コマンドブロックORB:データ転送コマンド、デバイス制御コマンド等のコマンドを内包するORBである。詳細を図24に示す。対応するデータバッファ又はページテーブルのアドレス及びサイズを示すデータディスクリプタ(data_descriptor)、データサイズフィールド(data_size)を有する。また、次のコマンドブロックORBのアドレスを示すネクストORBフィールド(next_ORB)を有するので、コマンドをリンクできるのが特徴である。
【0174】
3)マネージメントORB:マネージメント要求(ログイン、ログアウトを含むアクセス要求、及びタスクマネージメント要求)を内包するORBである。詳細を図25に示す。タスクマネージメントの要求内容(アボートタスクセット(Abort Task Set)、ターゲットリセット等)を示すファンクションフィールド(function)と、ターゲットからの完了ステータスのアドレスを示すステータスFIFO(Status_FIFO)のフィールドを有するのが特徴である。
【0175】
この内、マネージメントORBについては、イニシエータは、ターゲットが応答を返すまで次のORBを発行することができない。一方、ダミーORBを含むコマンドブロックORBには、図24のようにネクストORBフィールドとして次のORBのアドレスを指示するフィールドがあるため、次々とコマンドを連結し、図26のようにリンクリストの形で一連のコマンド列を発行することができる。このネクストORBフィールドがnullの場合は、次に続くORBがないことを示す。
【0176】
また、このコマンドブロックORBの他のフィールドにはデータバッファ又はページテーブルのアドレス及びサイズを示すフィールド(データディスクリプタ及びデータサイズ)があり、例えばコマンドの内容がライトコマンドならば、ターゲットはデータディスクリプタで示されたシステムメモリ上のデータバッファにアクセスし、そこからライトデータを読みこむ。また、コマンドの内容がリードコマンドならば、ターゲットはデータディスクリプタで示されたシステムメモリ上のデータバッファにアクセスし、そこへコマンドの要求するデータを書きこむ。
【0177】
図27及び図28に、データバッファを直接示す場合と、ページテーブルを経由する場合を示す。物理的に不連続な領域のデータバッファを、ページテーブルにより、連続的に扱うことができ、仮想記憶による連続論理領域を物理的に再配置する必要がなくなるわけである。
【0178】
イニシエータからの様々な要求を実行するターゲット側の仕組みを、エージェント(Agent)と称する。エージェントには、マネージメントORBを実行するマネージメントエージェントと、コマンドブロックORBを実行するコマンドブロックエージェントがある。
【0179】
マネージメントエージェントには、マネージメントORBのアドレスをイニシエータがターゲットに知らせるためにストアする、マネージメントエージェントレジスタがある。
【0180】
コマンドブロックエージェントは、イニシエータのコマンドリンクリストからコマンドをフェッチしてくるため、フェッチエージェントとも呼ばれる。フェッチエージェントにも、コマンドブロックORBの先頭アドレスをイニシエータがストアするORBポインタレジスタと、イニシエータがターゲットにコマンドをFetchして貰いたいことを知らせるドアベルレジスタ等を含む、コマンドブロックエージェントレジスタがある。
【0181】
ターゲットはイニシエータからのORBの実行を完了すると、その実行完了のステータスを、ステータスブロックと言うデータ構造の形で(完了の成否に拘らず)イニシエータのステータスFIFOの示すアドレスにストアする。ステータスブロックの例を、図29に示す。
【0182】
ターゲットは最低8バイト、最大32バイトのステータス情報をストアすることができる。マネージメントORBの場合は、図25のステータスFIFOフィールドにORBの一部として明示的にステータスFIFOアドレスが提供されるので、ターゲットは指定されたアドレスにステータスブロックをストアする。それ以外の場合は、フェッチエージェントのコンテキストから得られるステータスFIFOにステータスブロックをストアする。コマンドブロックORBの場合は、イニシエータはステータスFIFOアドレスをログイン要求の一部として提供する。
【0183】
通常ターゲットは、イニシエータの発するORBに対してステータスFIFOアドレスにステータスブロックを書き込むことによって応答するが、デバイス側に変化が発生し、ロジカルユニットに影響する場合は、イニシエータからの要求が無くても自発的にアンソリシテッドステータス(Unsolicited Status)を返すこともできる。この場合のステータスFIFOアドレスは、イニシエータからのログイン要求の際にイニシエータから提供されるステータスFIFOアドレスである。
【0184】
SBP−2におけるイニシエータとターゲットの動作を、図30の動作モデルを用いて説明する。
【0185】
SBP−2の動作は、イニシエータが、ターゲットに対してログイン要求のためのマネージメントORB(ログインORB)を発行することから始まる。ターゲットは、イニシエータからの要求に対してログインレスポンスで応える。
【0186】
ログイン要求が受け入れられると、ターゲットからはログインレスポンスとしてコマンドブロックエージェントレジスタの先頭アドレスがかえされる。
【0187】
ログイン要求が受け入れられると、ターゲットのマネージメントエージェントは、イニシエータからのその後のタスクマネージメント要求を受け付ける。イニシエータは、タスクマネージメントORBを発行して、タスクの実行に必要な情報のやり取りをターゲットとの間で行う。ターゲットはイニシエータの発するORBに対してステータスFIFOにステータスブロックを書き込むことによって応答するが、デバイス側に変化が発生し、ロジカルユニットに影響する場合は、イニシエータからの要求が無くても自主的にアンソリシテッドステータスを返すこともできることは前述の通りである。
【0188】
タスクマネージメントに関するやり取りに続いて、イニシエータは必要なコマンドブロックORB(list)を自分のメモリ領域に形成する。そして、図31のように、ターゲットのコマンドブロックエージェントレジスタのORBポインタにORBの先頭アドレスを書きこむか又はコマンドブロックエージェントレジスタのドアベルレジスタを叩いて、ターゲットに対して通信すべきORBがイニシエータにあることを知らせる。
【0189】
これに応じて、ターゲットは、図32のように、ORBポインタに書かれたORBの先頭アドレス情報をもとにイニシエータのメモリにアクセスし、ORBを順次処理する。
【0190】
ところで、タスクの実行モデルには、オーダードモデルとアンオーダードモデルがある。オーダードモデルでは、ORBはリストの順番に沿って行われ、ターゲットの完了ステータスも順番に返される。アンオーダードモデルでは、ORBの実行順位に制約は無いが、どの順位でも最終的に同じ実行結果が得られるようにイニシエータが責任を持たなければならない。
【0191】
イニシエータからターゲットへのデータ転送はターゲットからシステムメモリへのリードトランザクションによって行われ、一方ターゲットからイニシエータへのデータ転送は、システムメモリへのライトトランザクションによって行われる。即ちデータバッファの転送は方向によらずターゲットが主導する。逆に言えば、ターゲットは自分に都合の良いペースでシステムメモリからのデータを読み出すことができる訳である。イニシエータはターゲットがORBを実行中でも、リストの最後のORBのネクストアドレスを次のORBのアドレスに書き換え、ターゲットのドアベルレジスタを再び叩いてターゲットに変更を知らせることにより、リンクリストにORBを追加することができる。ターゲットは、イニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返す。イニシエータは完了ステータス(ステータスブロック)が返されたのを見て、その対象ORBのターゲットによる実行が完了したことを知る。完了したORBは、(ネクストORBフィールドがnullでなければ)タスクセットのリンクリストから外すことができる、イニシエータはその空いたリソースを利用して、必要なら次のコマンドをコマンドリンクリストの最後に追加しても良い。
【0192】
このようにしてORBが実行されタスクが実行される。
【0193】
タスクが終了し、アクセスをつづける必要が無い場合は、イニシエータはログアウトORBを発行し、ターゲットが応えてログアウトが完了する。
【0194】
(15)SBP−3の概要
SBP−3(Serial Bus Protocol3)は、SBP−2を拡張し機能を追加することによりSBP−2において効率が悪かった点、欠いていた機能を補充する目的で2000年後半から規格化作業が行なわれている。
【0195】
SBP−3において拡張された代表的な機能を挙げると以下の通りになる。
1.アイソクロナスデータ転送機能
2.デバイスハンドルによるイニシエータ/ターゲット特定にとるノードID非依存機能
3.1つのORB内の双方向データ転送機能
ここでは上記機能のうち3について説明する。
【0196】
SBP−3はSBP−2と下位互換性を持っており、その基本的なデータ転送シーケンスはSBP−2の概要で説明した通りである。すなわち、イニシエータからターゲットへのデータ転送はターゲットからシステムメモリへのリードトランザクションによって行われ、一方ターゲットからイニシエータへのデータ転送は、システムメモリへのライトトランザクションによって行われる。ターゲットは自分に都合の良いペースでORBを読み出し、ORBの内容をデコードすることによって転送動作の種別情報を知る。ターゲットはORBに対応する転送動作がイニシエータからターゲットへのデータ転送か、ターゲットからイニシエータへのデータ転送なのか、そしてその転送動作がイニシエータ内のどのシステムメモリ領域に対して行なわれるか、をデコードし、該当する転送動作を行なう。またターゲットはそのORBで指定された転送動作を完了した際には、イニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返す。
【0197】
SBP−3ではコマンドブロックORB、つまり、データ転送コマンド、デバイス制御コマンド等のコマンドを内包するORBを2種類定義している。ひとつはコマンドブロックORBが有するリクエストフォーマットフィールドの値が0のものであり、SBP−2で定義されたコマンドブロックORBと同一のものである。「(14)SBP−2の概要」で説明したように、ORBが参照するデータバッファ又はページテーブルのアドレス及びサイズを示すデータディスクリプタ、データサイズフィールド、次のコマンドブロックORBのアドレスを示すネクストORBフィールド、そしてデータバッファに対するデータ転送方向を示すディレクションフィールドに代表されるデータ転送に関わるパラメータを指定するフィールドからなる。
【0198】
SBP−3で新規に定義されたコマンドブロックORBはリクエストフォーマットフィールドの値が1となっており従来のORBと区別がつけられる。
【0199】
このORBの特徴は1つのORBから2つのデータバッファが参照されるということである。
【0200】
データバッファ又はページテーブルのアドレス及びサイズを示すデータディスクリプタ、データサイズフィールド、ディレクションフィールド等データバッファに関するフィールドがそれぞれ2組用意され、これによりORBから2つのデータバッファの参照が可能となる。
【0201】
このORBを使用し、一つのデータバッファはターゲットへのライト用バッファ、もう一方のデータバッファはターゲットからのリード用バッファとして使うことにより双方向ORBとして活用することができる。
【0202】
イニシエータは必要なコマンドブロックORBリストを自分のメモリ領域に形成し、上記のように双方向ORBをアペンドしてターゲットのコマンドブロックエージェントレジスタのORBポインタにORBリストの先頭アドレスを書きこむか又はコマンドブロックエージェントレジスタのドアベルレジスタを叩いて、ターゲットに対して通信すべきORBがイニシエータにあることを知らせる。ターゲットは、ORBポインタに書かれたORBの先頭アドレス情報をもとにイニシエータのメモリにアクセスし、ORBをフェッチし、順次処理する。
【0203】
双方向ORBをフェッチしたターゲットは指定された2つのデータバッファそれぞれに対してデータ転送処理を行なう。片側のバッファに対応するディレクションフィールドは0となっていて、ターゲットはデータディスクリプタで示されたシステムメモリ上のデータバッファにアクセスし、そこからライトデータを読みこむ。またもう片方のバッファに対応するディレクションフィールドは1となっていてターゲットはデータディスクリプタで示されたシステムメモリ上のデータバッファにアクセスし、そこへコマンドの要求するデータを書きこむ。
【0204】
両方のデータバッファアクセスが完了するとターゲットはイニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を返し、そのORBの実行完了を通知する。
【0205】
図33は、SBP−3でのコマンドブロックORBの動作を示す図である。図32で示したSBP−2と比較すると、SBP−3では1つのORBに対してデータバッファアクセスを示す線が2本になっており、SBP−2が1つのデータバッファへのアクセスしかできなかった点が変更されている。2つのデータバッファに独立してアクセスできることにより、イニシエータからターゲットへの2つのデータチャネルを1つのORBに当てはめることができる。データバッファへのデータの流れる方向はそれぞれのデータバッファで規定できる。つまり、2つのデータチャネルをイニシエータからターゲットへのデータ送信に用いることもできるし、一方をイニシエータからターゲットへのデータ送信、他方をターゲットからイニシエータへのデータ送信に用いることもできる。また、もちろん、ターゲットからイニシエータへのデータ送信に2つのデータチャネルを用いることもできる。更に、ホストとプリンタで使うような場合、一方をホストからプリンタへの印字データのために使い、他方をプリンタからホストへのステータス情報を流すために使うことも可能となる。
【0206】
図34にSBP−3の2つのデータバッファを保持する場合のコマンドブロックORBの詳細を示している。SBP−2と異なり、2組のデータバッファを扱えるようにするために、2つのデータディスクリプタと2つのバッファ情報フィールドが用意されている。図中"d"で示したフィールドにそれぞれのデータバッファの方向を指定することができる。その内容はSBP−2と同様であって、0であればイニシエータからターゲット、1であればターゲットからイニシエータへの方向を示している。
【0207】
〈本実施形態に係る情報処理システム〉
図1は、本実施形態の情報処理システムを示す図であり、IEEE1394で接続されたホストコンピュータ(以下ホスト)1aとプリンタ1bを表している。
【0208】
ホスト1aとプリンタ1bの通信はIEEE1394インターフェース上で使われる代表的なデータ転送プロトコルであるSBP(Serial Bus Protocol)−3プロトコルを使って行なわれ、ホスト−プリンタ間のデータ転送を行なうための通信チャネルとしてロジカルユニット0が予め定められている。
【0209】
図1中、ホスト1aはSBP−3プロトコルを用いたイニシエータとしてSBP−3のターゲットであるプリンタ装置1bとの間で通信を行うシステムである。またこの通信システムの場合、SBP−3プロトコルの上位コマンドセットとして予め規定されたプリンタ制御用通信コマンドプロトコルに基づいてホスト−プリンタ間通信が行なわれ、コマンドに従った処理が行なわれる。
【0210】
プリンタ1bはホスト1aから送られたプリンタコントロール、並びにプリントデータを受信し処理する機能と、プリンタ1bへのコントロールに対応して現在のプリンタステータスデータをホストに送信する機能とをそれぞれ提供する複数のデータ転送チャネルCH1,CH2を備える。またこれらのデータ転送チャネル用の通信セッション確立、切断といったマネージメントリクエストを処理するマネージメントエージェントMAを装備している。
【0211】
各データ転送チャネルCH1,CH2はSBP−3プロトコルで定義されたデュアルデータディスクリプタを備えたORBの活用によりデータ転送が行なわれる。それぞれのチャネルは二つのデータディスクリプタで指定されるデータバッファによりデータ転送を行なう。フェッチエージェントFAによりフェッチされるORBはコマンドブロック・エージェントCAにより実行状態が管理され、ORBで指定される2つのデータバッファに対する所定の処理はエクセキューション・エージェントEA0、EA1によりライト、またはリード処理される。フェッチエージェントはSBP−2/3のオーダードモデルに従いイニシエータから発行されるORBをシーケンシャルに処理することにより上記所定の処理を実行させる仕組みとなっている。
【0212】
本実施形態では、プリンタ制御用通信コマンドプロトコルとしてSBP−3を使用することにより、ORB中二つのデータディスクリプタで指定されるデータバッファをそれぞれデータ転送チャネルとしてアロケートし、一方のデータ転送チャネルにはプリントデータを、もう一方のデータ転送チャネルにはプリンタ制御コマンドの転送が行なわれるモデル仕様として定義されている。
【0213】
〈本実施形態に係るステータスブロック〉
通常、SBP−3ではターゲットはORBで指定されたデータバッファに対する処理が完了した際に、それをイニシエータに通知するための完了通知としてイニシエータのステータスFIFOのアドレスに完了ステータス(ステータスブロック)を発行する。しかし、図33のように、1つのORBにおいて2つのデータディスクリプタフィールドを用い2つのデータバッファが指定されている場合に、両方のデータバッファ処理が完了した時点でのみ完了ステータス(ステータスブロック)が発行される。片方のデータバッファに対するアクセスが正常終了しても、もう片方のデータバッファアクセスが完了しないとそのORBに対する完了通知をSBP−3のイニシエータに対して通知できず、ロジカルユニットとしてのデータ転送が滞ってしまう。このため、何らかの理由によりどちらかのデータ転送チャネルにおいてデータの送受信ができなくなった場合、またどちらかのデータ転送チャネルのデータ転送が他のチャネルよりも遅い場合、正常に転送されているチャネル、速いほうのチャネルが影響を受けてしまう。
【0214】
本実施形態に係るシステムにおいて、1つのデータバッファを印字データ、もう1つをステータスのために使うとすると、プリンタが印字データのデータバッファを全て受け取るまで、ホストに対してステータスを戻せないことが発生する。これではステータス情報を随時受け取りことができないことになる。
【0215】
そこで、本実施形態では、図35に示すようなステータスブロックを発行し、データバッファごとのアクセス完了を通知できる構成となっている。
【0216】
図35は、本実施の形態に係るプリンタ制御用通信コマンドプロトコルでの、データバッファ処理が完了した時点で発行する完了ステータス(ステータスブロック)を示す図である。
【0217】
図35に示すように、このステータスブロックには、コマンドセット依存フィールドにデータバッファ毎の完了ステータスをあらわすフィールドとしてa,b1,b2が定義されている。
【0218】
a,b1,b2は、それぞれ、データバッファを表していて、b1は図34で示した1番目のデータディスクリプタが示すデータバッファに対応しており、b2は2番目のデータディスクリプタが示すデータバッファに対応している。aはこれら2つのデータディスクリプタが示す両方のデータバッファに対応する。a,b1,b2のフィールドにはそれぞれ0または1の値がセットされ、1の場合に対応するバッファの完了を示し、0であれば対応するバッファの未完了を示す。つまり、aに1が指定された場合、2つのバッファに対するデータ通信が同時に完了したことを示す。a,b1,b2の3つのフィールドに対する値のセットにより、1つ目のバッファの完了、2つ目のバッファの完了、1,2両方のバッファの完了を個別あるいは同時に通知することができる。
【0219】
図36は、このようなステータスブロックを採用した場合のコマンドブロックORBの動作を示す図である。図のように、ステータスFIFOに対するアクセスは、複数回(この場合2回)行われる。ここで、ステータスFIFOへのアクセスは図35に示したステータスブロックで行われ、a,b1,b2のいずれかのビットに1が設定される。例えば、2つ目のバッファに対する処理のみが完了した場合、1度目のステータスブロックで、b2に1、b1に0がセットされ、1つ目のバッファの処理が完了した場合、2度目のステータスブロックで、b2に0、b1に1がセットされる。このように、それぞれのバッファについて、個別にステータスブロックが送信される。b1,b2共に完了が通知されたので、処理していたORBの完了が通知されたことになる。また、a,に1を設定することで2つのバッファに対するデータ通信の終了を1つのステータスブロックで行うこともできる。
【0220】
以上のように、本実施形態の情報処理システムでは、コマンドブロックに複数のデータバッファを有するようなコマンド実行処理において、個別のデータバッファに対する完了通知を指定することが可能となり、よりバッファの制御を詳細に行うことができる。また同時に複数のデータバッファの完了通知がそろうことによりコマンドブロックの完了と判断することが可能なため、完了通知の回数を少なくすることができる。また1度で全てのデータバッファの完了を通知することが可能となり、完了通知を簡略化することと従来技術との互換性を保つことができる。
【0221】
ひいては、データバッファごとに独立してステータスFIFOにステータスを書き込むことができるので、印字データとは独立してステータスのみを連続してホストに返すことのできるプリントシステムを実現できる。
【0222】
(他の実施形態)
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。また、上記実施形態では通信制御バスとしてIEEE1394を利用した例について説明したが、本発明はこれに限定されるものではなく、USBなどの他の規格のバスを利用しても良い。
【0223】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【0224】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0225】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0226】
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
【0227】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明のクレームに含まれるものである。
【0228】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0229】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0230】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【0231】
【発明の効果】
本発明によれば、IEEE1394バス等の2つのチャネルを用いて効率的なデータ転送を行うことができる。
【図面の簡単な説明】
【図1】本発明のホスト・プリンタ通信システムの構成を示した図である。
【図2】1394シリアルバスのネットワークの構成を示した図である。
【図3】本発明の1394シリアルバスの構成要素を示した図である。
【図4】本発明の1394シリアルバスのリンク・レイヤ提供可能なサービスを示す図である。
【図5】本発明の1394シリアルバスのトランズアクション・レイヤ提供可能なサービスを示す図である。
【図6】1394インタフェースにおけるアドレス空間を説明する図である
【図7】1394インタフェースにおけるCSRコア・レジスタに格納される情報のアドレス及び機能を示す図である。
【図8】1394インタフェースにおけるシリアルバス・レジスタに格納される情報のアドレス及び機能を示す図である。
【図9】1394インタフェースにおける最小形式のコンフィグレーションROMを示す図である。
【図10】1394インタフェースにおける一般形式のコンフィグレーションROMを示す図である。
【図11】1394インタフェースにおけるシリアルバス装置レジスタに格納される情報のアドレス及び機能を示す図である。
【図12】IEEE1394規格に準拠した通信ケーブルの断面図である。
【図13】 DS-Link符号化方式を説明する図である。
【図14】バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを示した図である。
【図15】バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを示した図である。
【図16】バスリセットの開始からノードIDの割り当て処理までの基本的なシーケンスを示した図である。
【図17】図15に示したステップS1505の処理(即ち、自動的に各ノードのノードIDを割り当てる処理)を詳細に説明するフローチャートである。
【図18】1394インターフェースにおけるセルフIDパケットの構成を示した図である。
【図19】1394ネットワークにおけるアービトレーションを説明する図である。
【図20】1通信サイクルにおいてアイソクロナス転送モードとアシンクロナス転送モードとを混在させた場合を説明する図である。
【図21】アイソクロナス転送モードに基づいて転送される通信パケットのフォーマットを示した図である。
【図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】本発明の実施形態としての情報処理システムにおけるステータスブロックのフォーマットを示した図である。
【図36】本発明の実施形態としての情報処理システムにおけるコマンドORBの動作を示した図である。[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an information processing system, an information processing apparatus, an information processing method, a program, and a storage medium connected by an interface such as IEEE1394.
[0002]
[Prior art]
When performing one-to-one connection and communication between the host and the device in various interfaces such as Centronics, USB, and IEEE1394, a plurality of communication sessions are performed during one session of the communication protocol in order to control various functions of the device between the host and the device. Establish logical channel connection and transfer data for each channel.
[0003]
SBP (Serial Bus Protocol) -2, which is a data communication protocol on IEEE1394, itself has one data buffer for one ORB (Operation Request Block) which is a unit of data transfer in one logical unit. Since it is referred to, it has a mechanism for performing one-way single data channel and one-way half-duplex data communication, and it has been difficult to realize a plurality of logical channels. In SBP-3, which is a function expansion version of SBP-2 that is currently being developed, this point is noted, and two data buffers can be referred to the ORB that is a unit of data transfer in the logical unit. An extension was made to allow two data transfer channels per logical unit.
[0004]
[Problems to be solved by the invention]
However, in the SBP-3 data transfer, the flow control of the two data transfer channels is performed in units of ORBs. Therefore, when data transmission / reception cannot be performed in any one of the data transfer channels for some reason, either one of the data When the data transfer of the transfer channel is slower than the other channels, the channel that is normally transferred and the faster channel are affected.
[0005]
This is because even if the access to one data buffer is normally completed, if the access to the other data buffer is not completed, the completion notification for the ORB cannot be notified to the initiator of SBP-3, and the data transfer as a logical unit is performed. This is because of the delay.
[0006]
The present invention has been made to solve the above-described problems of the prior art, and an object thereof is to perform efficient data transfer using two channels such as an IEEE 1394 bus.
[0007]
[Means for Solving the Problems]
In order to achieve the above object, a system according to the present invention provides:
An information processing system including first and second devices connected by a communication control bus,
The first device is:
Allocate multiple data buffers for one command block
The second device is
Data communication means for performing data communication with respect to at least one of the plurality of data buffers according to the command block;
When data communication to any one of the plurality of data buffers is completed by the data communication meansData communication completed1 data bufferAnd status information including information for specifying a data buffer in which data communication is not completed among the plurality of data buffersTo the first device, and when the data communication to all the plurality of data buffers is completed by the data communication means, the data communication to all the data buffers is completed.Show statusCompletion notification means for notifying the first deviceWhen,
It is characterized by having.
[0009]
The communication control bus conforms to IEEE 1394, and data communication is performed between the first device and the second device using the
[0010]
The completion notifying unit issues a status indicating a data buffer in which data communication has been completed, among the data buffers, to a status FIFO of the first device.
[0011]
The completion notification unit notifies completion of data communication independently for each data buffer.
[0012]
The completion notification means further notifies completion of data communication for all of the plurality of data buffers.
[0013]
The first device includes identification information of data stored in the data buffer in the ORB.
[0014]
In order to achieve the above object, the method according to the present invention comprises:
A communication method between first and second devices connected by a communication control bus, wherein a plurality of data buffers are allocated to one command block transmitted from the first device to the second device, and the second device Performs data communication with respect to at least one of the plurality of data buffers according to the command block, and when data communication with respect to any one of the plurality of data buffers is completed by the data communication,Data communication completed1 data bufferAnd status information including information for specifying a data buffer in which data communication is not completed among the plurality of data buffersTo the first device, and when the data communication to all the plurality of data buffers is completed by the data communication, the fact that the data communication to all the data buffers is completed.Show statusThe first device is notified.
[0016]
In order to achieve the above object, an apparatus according to the present invention provides:
An information processing apparatus connected to another device via a communication control bus,
Data communication means for performing data communication with respect to at least one of the plurality of data buffers in accordance with the command block to another device in which a plurality of data buffers are allocated to one command block;
When data communication to any one of the plurality of data buffers is completed by the data communication meansData communication completed1 data bufferAnd status information including information for specifying a data buffer in which data communication is not completed among the plurality of data buffersTo the first device, and when the data communication to all the plurality of data buffers is completed by the data communication means, the data communication to all the data buffers is completed.Show statusA completion notifying means for notifying the other device;
It is characterized by having.
[0022]
Moreover, in order to achieve the said objective, the program concerning this invention makes a computer implement | achieve the said communication method. The storage medium according to the present invention stores the program.
[0023]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the drawings. However, the relative arrangement of components, the display screen, and the like described in this embodiment are not intended to limit the scope of the present invention only to those unless otherwise specified.
[0024]
(First embodiment)
Before describing the information processing system according to the first embodiment of the present invention, an outline of IEEE 1394 technology will be described.
[0025]
<Overview of IEEE 1394 technology>
Hereinafter, the technology of the IEEE 1394-1995 standard applied to the digital interface of the present embodiment will be briefly described. Details of the IEEE 1394-1995 standard (hereinafter referred to as the IEEE 1394 standard) are described in “IEEE Standard for a High Performance Serial” published by IEEE (The Institute of Electrical and Electronics Engineers, Inc.) on August 30, 1996. Bus ”.
[0026]
(1) Overview
FIG. 2 shows an example of a communication system (hereinafter referred to as a 1394 network) composed of nodes having a digital interface (hereinafter referred to as a 1394 interface) compliant with the
[0027]
In FIG. 2, each of the nodes A to F is connected via a communication cable conforming to the
[0028]
The connection method of the 1394 network corresponds to the daisy chain method and the node branching method, and connection with a high degree of freedom is possible.
[0029]
Further, in the 1394 network, for example, when an existing device is deleted, a new device is added, or an existing device is turned on / off, the bus is automatically reset. By performing this bus reset, the 1394 network can automatically recognize a new connection configuration and assign ID information to each device. With this function, the 1394 network can always recognize the connection configuration of the network.
[0030]
The 1394 network has a function of relaying data transferred from other devices. With this function, all devices can grasp the operating status of the bus.
[0031]
The 1394 network has a function called Plug & Play. With this function, it is possible to automatically recognize connected devices by simply connecting them without turning off the power of all devices.
[0032]
The 1394 network supports data transfer rates of 100/200/400 Mbps. A device having a higher data transfer rate can support a lower data transfer rate, and thus devices corresponding to different data transfer rates can be connected to each other.
[0033]
Furthermore, the 1394 network supports two different data transfer methods (ie, an asynchronous transfer mode and an isochronous transfer mode).
[0034]
The asynchronous transfer mode is effective when transferring data that is required to be transferred asynchronously as needed (that is, control signals, file data, etc.). In addition, the isochronous transfer mode is effective when transferring data (that is, video data, audio data, etc.) required to continuously transfer a predetermined amount of data at a constant data rate.
[0035]
Asynchronous transfer mode and isochronous transfer mode can be mixed in each communication cycle (usually one cycle is 125 μS). Each transfer mode is executed after transfer of a cycle start packet (hereinafter referred to as CSP) indicating the start of a cycle.
[0036]
In each communication cycle period, the isochronous transfer mode is set to have a higher priority than the asynchronous transfer mode. In addition, the transfer bandwidth in the isochronous transfer mode is guaranteed within each communication cycle.
[0037]
(2) Architecture
Next, components of the 1394 interface will be described with reference to FIG.
[0038]
The 1394 interface is functionally composed of a plurality of layers (hierarchies). In FIG. 3, the 1394 interface is connected to the 1394 interface of another node via a
[0039]
In FIG. 3, the hardware unit is composed of a
[0040]
In FIG. 3, the firmware section includes a
[0041]
As described above, the hardware unit and the firmware unit substantially constitute a 1394 interface, and their basic configuration is defined by the
[0042]
Further, the
[0043]
(2-1)
FIG. 4 is a diagram showing services that the
[0044]
The
[0045]
(2-2)
FIG. 5 is a diagram showing services that the
[0046]
The
[0047]
(1) In the read transaction, the request node reads information stored at a specific address of the response node.
[0048]
(2) In the write transaction, the requesting node writes predetermined information to a specific address of the responding node.
[0049]
(3) In the lock transaction, the request node transfers reference data and update data to the response node, compares the specific address information of the response node with the reference data, and determines the specific address according to the comparison result. Update the information to update data.
[0050]
(2-3)
Specifically, the
[0051]
{Circle around (1)} Node control provides a function of managing the above-described layers and managing asynchronous transfer executed with other nodes.
[0052]
(2) The IRM provides a function for managing isochronous transfer executed with other nodes. Specifically, information necessary for assigning the transfer bandwidth and channel number is managed, and the information is provided to other nodes.
[0053]
The IRM exists only on the local bus, and is dynamically selected from other candidates (nodes having an IRM function) at each bus reset. In addition, the IRM may provide a part of functions (connection configuration management, power management, speed information management, etc.) that can be provided by a bus manager described later.
[0054]
(3) The bus manager has an IRM function and provides a more advanced bus management function than the IRM. Specifically, more advanced power management (information such as whether power can be supplied via a communication cable or whether power supply is required is managed for each node), more advanced speed information Management (management of maximum transfer speed between each node), management of more advanced connection configuration (creation of topology map), bus optimization based on these management information, etc., and further, this information is transmitted to other nodes It has a function to provide.
[0055]
The bus manager can provide a service for controlling the serial bus network to the application. The service includes a serial bus control request (SB_CONTROL.request), a serial bus event control confirmation (SB_CONTROL.confirmation), a serial bus event notification (SB_CONTROL.indication), and the like.
[0056]
SB_CONTROL.request is a service for which an application requests a bus reset. SB_CONTROL.confirmation is a service for confirming SB_CONTROL.request to the application. SB_CONTROL.indication is a service that notifies an application of an event that occurs asynchronously.
[0057]
(3) Address specification
FIG. 6 is a diagram for explaining an address space in the 1394 interface. The 1394 interface defines a 64-bit width address space according to a CSR (Command and Status Register) architecture conforming to ISO / IEC 13213: 1994.
[0058]
In FIG. 6, the first 10-
[0059]
The remaining 48 bits field specifies the address space (256 Mbyte structure) of each node. Among them, a 20-
[0060]
In the
[0061]
The last 28-
[0062]
For example, in the register space, the first 512 bytes are used for CSR architecture core (CSR core) registers. FIG. 7 shows the address and function of information stored in the CSR core register. The offset in the figure is a relative position from “0xFFFFF0000000”.
[0063]
The next 512 bytes are used as a serial bus register. FIG. 8 shows the address and function of information stored in the serial bus register. The offset in the figure is a relative position from “0xFFFFF0000200”.
[0064]
The next 1024 bytes are used for a configuration ROM.
[0065]
The configuration ROM has a minimum format and a general format, and is arranged from “0xFFFFF0000400”. A minimum configuration ROM is shown in FIG. In FIG. 9, the vendor ID is a 24-bit numerical value uniquely assigned to each vendor by IEEE.
[0066]
A general configuration ROM is shown in FIG. In FIG. 10, the vendor ID is stored in a
[0067]
Here, the node unique ID is a unique ID that can identify one node regardless of the manufacturer and model. The node unique ID is composed of 64 bits, the upper 24 bits indicate the above-mentioned vendor ID, and the lower 48 bits indicate information that can be freely set by a manufacturer that manufactures each node (for example, the manufacturing number of the node). This node unique ID is used when, for example, a specific node is continuously recognized before and after a bus reset.
[0068]
In FIG. 10, a
[0069]
In FIG. 10, a node dependent information directory (Node Dependent Info Directory) 1003 can hold device-specific information. The node
[0070]
Further, in FIG. 10, vendor-specific information (Vendor Dependent Information) 1006 can hold information unique to a vendor that manufactures or sells a node.
[0071]
The remaining area is called a unit space, and specifies an address in which information unique to each node, for example, identification information (company name, model name, etc.) of each device and usage conditions are stored. FIG. 11 shows addresses and functions of information stored in the serial bus device registers in the unit space. The offset in the figure is a relative position from “0xFFFFF0000800”.
[0072]
In general, each node should use only the first 2048 bytes of the register space if it is desired to simplify the design of a heterogeneous bus system. In other words, it is desirable that the CSR core register, serial bus register, configuration ROM, and the first 2048 bytes of the unit space are combined to be 4096 bytes.
[0073]
(4) Configuration of communication cable
FIG. 12 shows a cross-sectional view of a communication cable conforming to the
[0074]
The communication cable includes two pairs of twisted pair signal lines and a power supply line. By providing the power supply line, the 1394 interface can supply power to a device whose main power is turned off, a device whose power is reduced due to a failure, or the like. Note that the voltage of the power source flowing in the power line is defined as 8 to 40 V, and the current is defined as the maximum current DC1.5A.
[0075]
An information signal encoded by the DS-Link (Data / Strobe Link) encoding method is transmitted to the two pairs of twisted pair signal lines. FIG. 13 is a diagram for explaining the DS-Link encoding method.
[0076]
This DS-Link encoding method is suitable for high-speed serial data communication, and its configuration requires two pairs of twisted pairs. One pair of twisted pairs is configured to send data signals, and the other twisted pair is configured to send strobe signals. The receiving side can reproduce the clock by taking the exclusive OR of the data signal received from the two sets of signal lines and the strobe signal.
[0077]
By using the DS-Link encoding method, the 1394 interface has the following advantages, for example. {Circle around (1)} Transfer efficiency is higher than other encoding methods. (2) No PLL circuit is required and the circuit scale of the controller LSI can be reduced. {Circle around (3)} Since there is no need to send information indicating the idle state, the transceiver circuit can be easily put into the sleep state, and power consumption can be reduced.
[0078]
(5) Bus reset
The 1394 interface of each node can automatically detect that a change has occurred in the network connection configuration. In this case, the 1394 network performs a process called bus reset according to the following procedure. A change in connection configuration can be detected by a change in bias voltage applied to a communication port included in each node.
[0079]
A node that detects a change in the connection configuration of the network (for example, increase / decrease in the number of nodes due to node insertion / removal, power ON / OFF of the node, etc.) A bus reset signal on the bus.
[0080]
The 1394 interface of the node that has received the bus reset signal transmits the occurrence of the bus reset to its
[0081]
The bus reset can be started by the
[0082]
In addition, when the bus reset is activated, the data transfer is temporarily interrupted and resumed under a new network after the initialization process accompanying the bus reset is completed.
[0083]
(6) Sequence after starting bus reset
After the bus reset is activated, the 1394 interface of each node automatically recognizes a new connection configuration and assigns a new node ID. Hereinafter, a basic sequence from the start of the bus reset to the node ID assignment process will be described with reference to FIGS.
[0084]
FIG. 14 is a diagram illustrating a state after the bus reset is activated in the 1394 network of FIG.
[0085]
In FIG. 14, node A has one communication port, node B has two communication ports, node C has two communication ports, node D has three communication ports, node E has one communication port, and node F has one communication. Port. The communication port of each node is assigned a port number for identifying each port.
[0086]
Hereinafter, the process from the start of the bus reset to the node ID assignment in FIG. 14 will be described with reference to the flowchart of FIG.
[0087]
In FIG. 15, each of the nodes A to F configuring the 1394 network constantly monitors whether or not a bus reset has occurred (step S1501). When a bus reset signal is output from a node that has detected a change in connection configuration, each node executes the following processing.
[0088]
After the occurrence of the bus reset, each node declares a parent-child relationship between the respective communication ports (step S1502).
[0089]
Each node repeats the process of step S1502 until the parent-child relationship between all nodes is determined (step S1503).
[0090]
After the parent-child relationship between all the nodes is determined, the 1394 network determines a node that performs network arbitration, that is, a route. (Step S1504).
[0091]
After determining the route, each 1394 interface of each node performs an operation of automatically setting its own node ID (step S1505).
[0092]
Each node executes the process of step S1505 based on a predetermined procedure until the node ID is set for all the nodes (step S1506).
[0093]
After node IDs are finally set for all nodes, each node performs isochronous transfer or asynchronous transfer (step S1507).
[0094]
While executing the processing of step S1507, the 1394 interface of each node again monitors the occurrence of a bus reset. If a bus reset has occurred, the processing from step S1501 is executed again.
[0095]
With the above procedure, the 1394 interface of each node can automatically execute recognition of a new connection configuration and assignment of a new node ID each time a bus reset is activated.
[0096]
(7) Determination of parent-child relationship
Next, the processing in step S1502 shown in FIG. 15 (that is, processing for recognizing the parent-child relationship between each node) shown in FIG. 15 will be described in detail with reference to FIG.
[0097]
In FIG. 16, after the occurrence of the bus reset, each of the nodes A to F on the 1394 network confirms the connection state (connected or not connected) of the communication port included in the node (step S1601).
[0098]
After confirming the connection state of the communication ports, each node counts the number of communication ports (hereinafter referred to as connection ports) connected to other nodes (step S1602).
[0099]
As a result of the processing in step S1602, if the number of connection ports is one, the node recognizes that it is a “leaf” (step S1603). Here, a leaf is a node connected to only one node.
[0100]
The node serving as the leaf declares that it is a “child” to the node connected to the connection port (step S1604). At this time, the leaf recognizes that the connection port is a “parent port (communication port connected to the parent node)”.
[0101]
Here, the declaration of the parent-child relationship is first performed between the leaf and the branch, which are the ends of the network, and then sequentially performed between the branch and the branch. The parent-child relationship between each node is determined in order from the communication port that can be declared early. In addition, between each node, the communication port declared to be a child is recognized as a “parent port”, and the communication port receiving the declaration is “child port (communication port connected to child node)”. It is recognized that there is. For example, in FIG. 14, the nodes A, E, and F declare a parent-child relationship after recognizing that they are leaves. As a result, the node A-B is determined as a child-parent, the node E-D is determined as a child-parent, and the node FD is determined as a child-parent.
[0102]
If the number of connection ports is two or more as a result of the processing in step S1602, the node recognizes itself as a “branch” (step S1605). Here, a branch is a node connected to two or more nodes.
[0103]
The node serving as the branch receives a parent-child relationship declaration from the node of each connection port (step S1606). The connection port that received the declaration is recognized as a “child port”.
[0104]
After recognizing one connection port as a “child port”, the branch detects whether or not there are two or more connection ports that have not yet been determined to have a parent-child relationship (that is, undefined ports) (step S1607). As a result, when there are two or more undefined ports, the branch performs the operation of step S1606 again.
[0105]
If only one undefined port exists as a result of step S1607, the branch recognizes that the undefined port is a “parent port”, and “is a child” for the node connected to the port. Is declared (steps S1608 and S1609).
[0106]
Here, the branch cannot declare to other nodes that it is a child until there is one remaining undefined port. For example, in FIG. 14, nodes B, C, and D recognize that they are branches and accept declarations from leaves or other branches. The node D declares the parent-child relationship to the node C after the parent-child relationship between DE and DF is determined. Further, the node C that has received the declaration from the node D declares a parent-child relationship to the node B.
[0107]
If there is no undefined port as a result of the processing in step S1608 (that is, if all connection ports included in the branch are parent ports), the branch recognizes that it is the root. . (Step S1610).
[0108]
For example, in FIG. 14, a node B in which all of the connection ports are parent ports is recognized by other nodes as a route for arbitrating communication on the 1394 network. Here, the node B is determined to be the root, but if the timing of declaring the parent-child relationship of the node B is earlier than the timing of declaring the node C, another node may become the root. In other words, depending on the timing of declaration, any node may become the root. Therefore, the same node is not necessarily the root even in the same network configuration.
[0109]
Thus, by declaring the parent-child relationship of all the connection ports, each node can recognize the connection configuration of the 1394 network as a hierarchical structure (tree structure) (step S1611). Note that the above parent node is higher in the hierarchical structure, and the child node is lower in the hierarchical structure.
[0110]
(8) Node ID assignment
FIG. 17 is a flowchart for explaining in detail the processing in step S1505 shown in FIG. 15 (that is, processing for automatically assigning the node ID of each node). Here, the node ID is composed of a bus number and a node number. In this embodiment, each node is connected to the same bus, and each node is assigned the same bus number. To do.
[0111]
In FIG. 17, the route gives the node ID setting permission to the communication port having the smallest number among the child ports connected to the node whose node ID is not set (step S1701).
[0112]
In FIG. 17, after setting the node IDs of all the nodes connected to the child port with the smallest number, the root sets the child port and sets the same control for the next smallest child port. Do. Finally, after the ID setting of all the nodes connected to the child port is completed, the node ID of the root itself is set. Note that the node numbers included in the node ID are basically assigned 0, 1, 2,... In the order of leaves and branches. Therefore, the route has the largest node number.
[0113]
In step S1701, the node that has obtained the setting permission determines whether or not there is a child port including a node whose node ID is not set among its child ports (step S1702).
[0114]
When a child port including an unset node is detected in step S1702, the node that has obtained the above setting permission performs control so as to give the setting permission to the node directly connected to the child port (step S1703). ).
[0115]
After the processing in step S1703, the node that has obtained the above setting permission determines whether there is a child port including a node whose node ID is not set among its child ports (step S1704). If the presence of a child port including an unset node is detected after the process of step S1704, the node executes the process of step S1703 again.
[0116]
If no child port including an unset node is detected in step S1702 or S1704, the node that has obtained the setting permission sets its own node ID (step S1705).
[0117]
The node that has set its own node ID broadcasts a self ID packet including information about its own node number, communication port connection status, and the like (step S1706). Note that broadcasting means transferring a communication packet of a certain node to an unspecified number of nodes constituting the 1394 network.
[0118]
Here, each node can recognize the note number assigned to each node by receiving this self-ID packet, and can know the node number assigned to itself. For example, in FIG. 14, the node Node B, which is the root, grants node ID setting permission to the node A connected to the communication port having the minimum port number “# 1”. Node A assigns its own node number “No. 0”, and sets a node ID composed of a bus number and a node number for itself. Node A broadcasts a self ID packet including the node number.
[0119]
FIG. 18 shows a configuration example of the self ID packet. In FIG. 18, 1801 is a field for storing the node number of the node that sent the self-ID packet, 1802 is a field for storing information on the transfer rate that can be supported, and 1803 is a bus management function (whether or not the bus manager is capable). A field indicating presence / absence, 1804 is a field for storing information on power consumption and supply characteristics.
[0120]
In FIG. 18, 1805 is a field for storing information on the connection state of the communication port having the port number “# 0” (connected, unconnected, parent-child relationship of communication ports, etc.), and 1806 is the port number “# 1”. A field for storing information related to the connection status of the communication port (connected, not connected, parent-child relationship of the communication port, etc.) 1807 is information related to the connection status of the communication port having the port number “# 2” (connected, not connected, communication) This is a field for storing a parent-child relationship of ports).
[0121]
If the node that transmits the self ID packet has the capability of becoming a bus manager, the contender bit shown in the
[0122]
Here, the bus manager refers to bus power management (whether power can be supplied via a communication cable, whether power supply is required, based on various information included in the self-ID packet described above. Etc. for each node), speed information management (the maximum transfer speed between each node is managed from information on the transfer speed that can be handled by each node), topology map information management (for communication ports) It is a node having a function of managing a network connection configuration from parent-child relationship information), optimizing a bus based on topology map information, and providing such information to other nodes. With these functions, a node serving as a bus manager can perform bus management of the entire 1394 network.
[0123]
After the processing in step S1706, the node that has set the node ID determines whether there is a parent node (step S1707). If there is a parent node, the parent node executes the processing from step S1702 onward. Then, permission is given to a node for which a node ID has not yet been set.
[0124]
If no parent node exists, it is determined that the node is the root itself. The root determines whether or not node IDs are set for the nodes connected to all the child ports (step S1708).
[0125]
In step S1708, if the ID setting process for all nodes is not completed, the root gives ID setting permission to the child port having the smallest number among the child ports including the node (step S1701). Thereafter, the processing after step S1702 is executed.
[0126]
When the ID setting process for all nodes is completed, the root executes setting of its own node ID (step S1709). After setting the node ID, the route broadcasts a self ID packet (step S1710).
[0127]
Through the above processing, the 1394 network can automatically assign a node ID to each node.
[0128]
Here, after the node ID setting process, when a plurality of nodes have the bus manager capability, the node having the largest node number becomes the bus manager. That is, when the route having the largest node number in the network has a function that can be a bus manager, the route becomes the bus manager.
[0129]
However, if the route does not have the function, the node having the next highest node number in the route becomes the bus manager. Further, which node is the bus manager can be grasped by checking the
[0130]
(9) Arbitration
FIG. 19 is a diagram for explaining arbitration in the 1394 network of FIG.
[0131]
In the 1394 network, arbitration of bus use right is always performed prior to data transfer. The 1394 network is a logical bus network, and the same communication packet can be transferred to all the nodes in the network by relaying the communication packet transferred from each node to other nodes. Therefore, arbitration is always required to prevent communication packet collisions. Thus, only one node can perform transfer at a certain time.
[0132]
FIG. 19A is a diagram illustrating a case where the node B and the node F issue a bus use right request.
[0133]
When arbitration starts, the nodes B and F issue a bus use right request to the parent node. The parent node (that is, node C) that has received the request from node B relays the right to use the bus toward its parent node (that is, node D). This request is finally delivered to the route (node D) that performs arbitration.
[0134]
The route that receives the bus use request determines which node uses the bus. This arbitration work can be performed only by the root node, and the bus use permission is given to the node that has won the arbitration.
[0135]
FIG. 19B is a diagram illustrating that the request from the node F is permitted and the request from the node B is rejected.
[0136]
The route sends a DP (Data prefix) packet to the node that lost the arbitration to inform that it has been rejected. The rejected node waits for a bus use request until the next arbitration.
[0137]
By controlling arbitration as described above, the 1394 network can manage the right to use the bus.
[0138]
(10) Communication cycle
The isochronous transfer mode and the asynchronous transfer mode can be mixed in a time division manner within each communication cycle period. Here, the period of the communication cycle is usually 125 μS.
[0139]
FIG. 20 is a diagram illustrating a case where the isochronous transfer mode and the asynchronous transfer mode are mixed in one communication cycle.
[0140]
The isochronous transfer mode is executed with priority over the asynchronous transfer mode. The reason is that after the cycle start packet, the idle period (subaction gap) required to start asynchronous transfer is set longer than the idle period (isochronous gap) required to start isochronous transfer. It is because it has been. As a result, isochronous transfer is executed in preference to asynchronous transfer.
[0141]
In FIG. 20, at the start of each communication cycle, a cycle start packet (hereinafter referred to as CSP) is transferred from a predetermined node. Each node can measure the same time as other nodes by adjusting the time using this CSP.
[0142]
(11) Isochronous transfer mode
The isochronous transfer mode is a synchronous transfer method. The isochronous mode transfer can be executed in a predetermined period after the start of the communication cycle. The isochronous transfer mode is always executed every cycle in order to maintain real-time transfer.
[0143]
The isochronous transfer mode is a transfer mode particularly suitable for transferring data that requires real-time transfer such as moving image data and audio data. The isochronous transfer mode is not a one-to-one communication like the asynchronous transfer mode but a broadcast communication. That is, a packet transmitted from a certain node is uniformly transferred to all nodes on the network. Note that ack (reception confirmation reply code) does not exist in isochronous transfer.
[0144]
In FIG. 20, channel e (ch e), channel s (ch s), and channel k (ch k) indicate periods during which each node performs isochronous transfer. In the 1394 interface, different channel numbers are assigned to distinguish a plurality of different isochronous transfers. As a result, isochronous transfer between a plurality of nodes becomes possible. Here, this channel number does not specify a transmission destination, but merely gives a logical number to data.
[0145]
The isochronous gap shown in FIG. 20 indicates the idle state of the bus. After this idle state has passed for a certain time, a node desiring isochronous transfer determines that the bus can be used and performs arbitration.
[0146]
Next, FIG. 21 shows a format of a communication packet transferred based on the isochronous transfer mode. Hereinafter, a communication packet transferred based on the isochronous transfer mode is referred to as an isochronous packet.
[0147]
In FIG. 21, an isochronous packet is composed of a
[0148]
The
[0149]
(12) Asynchronous transfer mode
Asynchronous transfer mode is an asynchronous transfer method. Asynchronous transfer can be executed after the end of the isochronous transfer period until the next communication cycle is started (that is, until the CSP of the next communication cycle is transferred).
[0150]
In FIG. 20, the first subaction gap indicates the idle state of the bus. After this idle time reaches a constant value, a node desiring asynchronous transfer determines that the bus can be used and performs arbitration.
[0151]
The node that has obtained the bus use right by arbitration transfers the packet shown in FIG. 22 to a predetermined node. The node receiving this packet returns ack (reception confirmation return code) or a response packet after ack gap.
[0152]
FIG. 22 is a diagram illustrating a format of a communication packet based on the asynchronous transfer mode. Hereinafter, a communication packet transferred based on the asynchronous transfer mode is referred to as an asynchronous packet.
[0153]
In FIG. 22, the asynchronous packet is composed of a
[0154]
In the
[0155]
Asynchronous transfer is one-to-one communication from the self node to the partner node. The packet transferred from the transfer source node is distributed to each node in the network, but other than the address addressed to itself is ignored. Therefore, only the destination node can read the packet.
[0156]
If it is time to transfer the next CSP during asynchronous transfer, the next CSP is transmitted after the transfer is completed without forcibly interrupting the transfer. As a result, when one communication cycle continues for 125 μS or more, the next communication cycle period is shortened accordingly. By doing so, the 1394 network can maintain a substantially constant communication cycle.
[0157]
(13) Device map
In order to create a device map, there are the following means on the
[0158]
1. Read the bus manager topology map register
2. Estimate from self ID packet at bus reset
However, with the above 1 and 2 methods, the topology of the cable connection order based on the parent-child relationship of each node is known, but the topology of the physical positional relationship cannot be known (the problem is that even ports that are not mounted can be seen) Also).
[0159]
In addition, there is a means for storing information for creating a device map as a database other than the configuration ROM. In this case, the means for obtaining various types of information depends on a protocol for database access.
[0160]
By the way, the configuration ROM itself and the function of reading the configuration ROM are necessarily provided by a device that complies with the
[0161]
That is, the configuration ROM can store the physical position, function, and the like as node-specific information, and can be used to realize a device map display function.
[0162]
In this case, as a means for the application to know the 1394 network topology based on the physical positional relationship, the method of knowing the topology of the 1394 network by reading the configuration ROM of each node at the time of bus reset or a request from the user. Is possible. Further, if not only the physical position of the node but also various node information such as functions are described in the configuration ROM, the function information of each node can be obtained simultaneously with the physical position of the node by reading the configuration ROM. be able to. When the application acquires the configuration ROM information of each node, an API that acquires arbitrary configuration ROM information of the designated node is used.
[0163]
By using such means, device applications on the
[0164]
(14) Overview of SBP-2
SBP-2 (Serial Bus Protocol 2) is a protocol related to the
[0165]
The following four can be cited as features of SBP-2.
[0166]
1) A master slave model having an initiator / target configuration, and the master initiator has all authority and responsibility such as login, logout, task, management, and command issue.
[0167]
2) A shared memory model that makes use of the features of
[0168]
In other words, the resources for communication can be concentrated in one place, so the burden of resources can be greatly reduced, and the target can read and write to the system memory at its own pace. Speeding up is easy by making access H / W. In other words, it can be a high performance or a thorough low-cost model.
[0169]
3) Since there is a mechanism for describing a group of commands for exchanging messages as a series of linked lists, it is possible to conceal the degradation in efficiency due to latency, and high-speed and high-efficiency data communication utilizing the features of the
[0170]
4) The structure does not depend on the command set. In other words, it can support various command sets.
[0171]
As shown in feature 1), since SBP-2 is a master slave model in which the initiator, which is the master, has all authority and responsibility, all operations are performed using the operation from the initiator as a trigger. A login, logout request, task management request, command, and the like from the initiator are sent to the target in a form included in a data structure called an ORB (Operation Request Block). Correctly, the initiator places it in its own memory and the target reads it. FIG. 23 shows main ORB types.
[0172]
1) Dummy ORB: Used to cancel a task when the target fetch agent is initialized. Treated as no operation by the target.
[0173]
2) Command block ORB: an ORB containing commands such as a data transfer command and a device control command. Details are shown in FIG. It has a data descriptor (data_descriptor) indicating the address and size of the corresponding data buffer or page table, and a data size field (data_size). Further, since it has a next ORB field (next_ORB) indicating the address of the next command block ORB, it is characterized in that commands can be linked.
[0174]
3) Management ORB: An ORB containing management requests (access requests including login and logout, and task management requests). Details are shown in FIG. It has a function field (function) that indicates the task management request contents (Abort Task Set, target reset, etc.) and a status FIFO (Status_FIFO) field that indicates the address of the completion status from the target. is there.
[0175]
Among these, regarding the management ORB, the initiator cannot issue the next ORB until the target returns a response. On the other hand, the command block ORB including the dummy ORB has a field for designating the address of the next ORB as the next ORB field as shown in FIG. 24. Therefore, the commands are linked one after another, and the form of the link list as shown in FIG. A series of command sequences can be issued with. When this next ORB field is null, it indicates that there is no subsequent ORB.
[0176]
The other fields of this command block ORB include fields (data descriptor and data size) indicating the address and size of the data buffer or page table. For example, if the command content is a write command, the target is indicated by the data descriptor. The data buffer on the designated system memory is accessed and the write data is read therefrom. If the content of the command is a read command, the target accesses the data buffer on the system memory indicated by the data descriptor and writes the data requested by the command there.
[0177]
27 and 28 show a case where the data buffer is shown directly and a case where it passes through the page table. The data buffer in the physically discontinuous area can be handled continuously by the page table, and there is no need to physically relocate the continuous logical area by virtual storage.
[0178]
A mechanism on the target side that executes various requests from the initiator is referred to as an agent. The agent includes a management agent that executes a management ORB and a command block agent that executes a command block ORB.
[0179]
The management agent has a management agent register that stores the address of the management ORB for the initiator to inform the target.
[0180]
The command block agent is also called a fetch agent because it fetches commands from the command link list of the initiator. The fetch agent also has a command block agent register including an ORB pointer register in which the initiator stores the head address of the command block ORB, a doorbell register for informing that the initiator wants to fetch a command to the target, and the like.
[0181]
When the target completes the execution of the ORB from the initiator, the target stores the execution completion status in an address indicated by the initiator status FIFO in the form of a data structure called a status block (regardless of whether the completion is successful). An example of the status block is shown in FIG.
[0182]
The target can store a minimum of 8 bytes and a maximum of 32 bytes of status information. In the case of the management ORB, since the status FIFO address is explicitly provided as a part of the ORB in the status FIFO field of FIG. 25, the target stores the status block at the designated address. Otherwise, the status block is stored in the status FIFO obtained from the fetch agent context. In the case of a command block ORB, the initiator provides the status FIFO address as part of the login request.
[0183]
Normally, the target responds to the ORB issued by the initiator by writing a status block to the status FIFO address. However, if a change occurs on the device side and affects the logical unit, the target will not respond even if there is no request from the initiator. It is also possible to return an unsolicited status. The status FIFO address in this case is a status FIFO address provided from the initiator when a login request is issued from the initiator.
[0184]
The operation of the initiator and target in SBP-2 will be described using the operation model of FIG.
[0185]
The operation of SBP-2 starts when the initiator issues a management ORB (login ORB) for a login request to the target. The target responds with a login response to the request from the initiator.
[0186]
When the login request is accepted, the head address of the command block agent register is returned as a login response from the target.
[0187]
When the login request is accepted, the target management agent accepts subsequent task management requests from the initiator. The initiator issues a task management ORB to exchange information necessary for executing the task with the target. The target responds to the ORB issued by the initiator by writing a status block in the status FIFO. However, if a change occurs on the device side and affects the logical unit, it will be voluntarily unsolicited even if there is no request from the initiator. As described above, the limited status can also be returned.
[0188]
Following the exchange related to task management, the initiator forms a necessary command block ORB (list) in its own memory area. Then, as shown in FIG. 31, the ORB to be communicated to the target is in the initiator by writing the ORB head address in the ORB pointer of the target command block agent register or hitting the doorbell register of the command block agent register. Let them know.
[0189]
In response to this, the target accesses the memory of the initiator based on the ORB head address information written in the ORB pointer as shown in FIG. 32, and sequentially processes the ORB.
[0190]
By the way, the task execution model includes an ordered model and an unordered model. In the ordered model, ORB is performed in the order of the list, and the completion status of the target is also returned in order. In the unordered model, there is no restriction on the execution order of ORB, but the initiator must be responsible for finally obtaining the same execution result in any order.
[0191]
Data transfer from the initiator to the target is performed by a read transaction from the target to the system memory, while data transfer from the target to the initiator is performed by a write transaction to the system memory. That is, the transfer of the data buffer is led by the target regardless of the direction. In other words, the target can read data from the system memory at a convenient pace. The initiator adds the ORB to the linked list by rewriting the next address of the last ORB in the list to the next ORB address even when the target is executing the ORB, and notifying the target by hitting the target doorbell register again. Can do. The target returns a completion status (status block) to the address of the initiator status FIFO. The initiator sees that the completion status (status block) is returned and knows that the execution of the target ORB by the target has been completed. The completed ORB can be removed from the task set link list (if the next ORB field is not null), the initiator will use the free resource and add the next command to the end of the command link list if necessary You may do it.
[0192]
In this way, the ORB is executed and the task is executed.
[0193]
If the task ends and there is no need to continue access, the initiator issues a logout ORB and the target responds to complete the logout.
[0194]
(15) Overview of SBP-3
SBP-3 (Serial Bus Protocol 3) has been standardized since the second half of 2000 for the purpose of supplementing the lack of functions in that SBP-2 was inefficient by adding SBP-2 and adding functions. It is.
[0195]
Typical functions expanded in SBP-3 are as follows.
1. Isochronous data transfer function
2. Node ID independent function for initiator / target identification by device handle
3. Bidirectional data transfer function in one ORB
Here, three of the above functions will be described.
[0196]
SBP-3 is backward compatible with SBP-2, and the basic data transfer sequence is as described in the outline of SBP-2. That is, data transfer from the initiator to the target is performed by a read transaction from the target to the system memory, while data transfer from the target to the initiator is performed by a write transaction to the system memory. The target reads out the ORB at a pace convenient to itself, and learns the type information of the transfer operation by decoding the contents of the ORB. The target decodes whether the transfer operation corresponding to the ORB is data transfer from the initiator to the target, data transfer from the target to the initiator, and to which system memory area in the initiator the transfer operation is performed. The corresponding transfer operation is performed. When the target completes the transfer operation specified by the ORB, the target returns a completion status (status block) to the status FIFO address of the initiator.
[0197]
In SBP-3, two types of command blocks ORB, that is, ORBs including commands such as data transfer commands and device control commands are defined. One is that the value of the request format field of the command block ORB is 0, which is the same as the command block ORB defined in SBP-2. As described in “(14) Outline of SBP-2”, the data descriptor indicating the address and size of the data buffer or page table referred to by the ORB, the data size field, and the next ORB field indicating the address of the next command block ORB And a field for designating parameters related to data transfer represented by a direction field indicating the data transfer direction with respect to the data buffer.
[0198]
The command block ORB newly defined in SBP-3 has a value of 1 in the request format field, and can be distinguished from the conventional ORB.
[0199]
The feature of this ORB is that two data buffers are referenced from one ORB.
[0200]
Two sets of fields relating to the data buffer, such as a data descriptor indicating the address and size of the data buffer or page table, a data size field, and a direction field, are prepared, and the two data buffers can be referred from the ORB.
[0201]
Using this ORB, one data buffer can be used as a bidirectional ORB by using it as a buffer for writing to the target and the other data buffer as a buffer for reading from the target.
[0202]
The initiator forms the necessary command block ORB list in its own memory area, appends the bidirectional ORB as described above, and writes the head address of the ORB list to the ORB pointer of the target command block agent register or the command block Strike the doorbell register of the agent register to inform the initiator that there is an ORB to communicate with. The target accesses the memory of the initiator based on the ORB head address information written in the ORB pointer, fetches the ORB, and sequentially processes it.
[0203]
The target that fetched the bidirectional ORB performs data transfer processing for each of the two designated data buffers. The direction field corresponding to the buffer on one side is 0, and the target accesses the data buffer on the system memory indicated by the data descriptor and reads the write data therefrom. The direction field corresponding to the other buffer is 1, and the target accesses the data buffer on the system memory indicated by the data descriptor and writes the data requested by the command there.
[0204]
When both data buffer accesses are completed, the target returns a completion status (status block) to the address of the initiator status FIFO and notifies the completion of execution of the ORB.
[0205]
FIG. 33 is a diagram illustrating the operation of the command block ORB in SBP-3. Compared to SBP-2 shown in FIG. 32, SBP-3 has two lines indicating data buffer access to one ORB, and SBP-2 can only access one data buffer. The point has been changed. The ability to access the two data buffers independently allows two data channels from the initiator to the target to be applied to one ORB. The direction of data flow to the data buffer can be defined by each data buffer. That is, two data channels can be used for data transmission from the initiator to the target, one can be used for data transmission from the initiator to the target, and the other can be used for data transmission from the target to the initiator. Of course, two data channels can be used for data transmission from the target to the initiator. Further, when used in a host and a printer, one can be used for print data from the host to the printer, and the other can be used to send status information from the printer to the host.
[0206]
FIG. 34 shows details of the command block ORB in the case of holding two data buffers of SBP-3. Unlike SBP-2, two data descriptors and two buffer information fields are prepared in order to handle two sets of data buffers. The direction of each data buffer can be specified in the field indicated by “d” in the figure. The content is the same as that of SBP-2, where 0 indicates the direction from the initiator to the target, and 1 indicates the direction from the target to the initiator.
[0207]
<Information processing system according to this embodiment>
FIG. 1 is a diagram showing an information processing system according to this embodiment, and shows a host computer (hereinafter referred to as a host) 1a and a
[0208]
Communication between the
[0209]
In FIG. 1, a
[0210]
The
[0211]
Each of the data transfer channels CH1 and CH2 performs data transfer by utilizing an ORB having a dual data descriptor defined by the SBP-3 protocol. Each channel performs data transfer by a data buffer specified by two data descriptors. The execution state of the ORB fetched by the fetch agent FA is managed by the command block agent CA, and predetermined processing for the two data buffers specified by the ORB is written or read by the execution agents EA0 and EA1. The The fetch agent has a mechanism for executing the predetermined processing by sequentially processing the ORB issued from the initiator in accordance with the ordered model of SBP-2 / 3.
[0212]
In this embodiment, by using SBP-3 as a printer control communication command protocol, the data buffers specified by two data descriptors in the ORB are allocated as data transfer channels, respectively, and printing is performed on one data transfer channel. Data is defined as a model specification in which printer control commands are transferred to the other data transfer channel.
[0213]
<Status block according to this embodiment>
Normally, in SBP-3, when the processing for the data buffer specified by the ORB is completed, the target issues a completion status (status block) to the status FIFO address of the initiator as a completion notification for notifying the initiator of the processing. . However, as shown in FIG. 33, when two data buffers are specified using two data descriptor fields in one ORB, a completion status (status block) is issued only when both data buffer processes are completed. Is done. Even if the access to one data buffer ends normally, if the other data buffer access is not completed, the completion notification for that ORB cannot be sent to the initiator of SBP-3, and data transfer as a logical unit is delayed. End up. For this reason, when data transmission / reception cannot be performed on one of the data transfer channels for some reason, or when data transfer on one of the data transfer channels is slower than the other channels, the channel being transferred normally is fast. The other channel will be affected.
[0214]
In the system according to the present embodiment, if one data buffer is used for print data and the other is used for status, the status cannot be returned to the host until the printer receives all the print data data buffers. appear. This means that status information cannot be received at any time.
[0215]
Therefore, in the present embodiment, a status block as shown in FIG. 35 is issued to notify the completion of access for each data buffer.
[0216]
FIG. 35 is a diagram showing a completion status (status block) issued when data buffer processing is completed in the printer control communication command protocol according to the present embodiment.
[0217]
As shown in FIG. 35, in the status block, a, b1, and b2 are defined as fields indicating the completion status for each data buffer in the command set dependent field.
[0218]
a, b1, and b2 respectively represent data buffers, b1 corresponds to the data buffer indicated by the first data descriptor shown in FIG. 34, and b2 indicates the data buffer indicated by the second data descriptor. It corresponds. a corresponds to both data buffers indicated by these two data descriptors. A value of 0 or 1 is set in each of the fields a, b1, and b2, indicating that the corresponding buffer is completed when the value is 1, and indicating that the corresponding buffer is not completed when the value is 0. That is, when 1 is designated for a, it indicates that data communication with respect to the two buffers has been completed simultaneously. By setting values for the three fields a, b1, and b2, completion of the first buffer, completion of the second buffer, and completion of both
[0219]
FIG. 36 is a diagram showing the operation of the command block ORB when such a status block is adopted. As shown in the figure, access to the status FIFO is performed a plurality of times (in this case, twice). Here, access to the status FIFO is performed in the status block shown in FIG. 35, and 1 is set in any bit of a, b1, and b2. For example, when only the processing for the second buffer is completed, 1 is set for b2 and 0 is set for b1 in the first status block, and when the processing for the first buffer is completed, the second status block Thus, 0 is set to b2 and 1 is set to b1. Thus, the status block is transmitted individually for each buffer. Since both b1 and b2 are notified of completion, the completion of the ORB being processed is notified. Further, by setting 1 to a, it is possible to end data communication with respect to two buffers with one status block.
[0220]
As described above, in the information processing system according to the present embodiment, it is possible to specify a completion notification for individual data buffers in a command execution process having a plurality of data buffers in a command block, thereby further controlling the buffer. Can be done in detail. In addition, since it is possible to determine that the command block is completed when notifications of completion of a plurality of data buffers are simultaneously obtained, the number of completion notifications can be reduced. In addition, it is possible to notify completion of all data buffers at one time, so that the completion notification can be simplified and compatibility with the prior art can be maintained.
[0221]
As a result, since the status can be written to the status FIFO independently for each data buffer, it is possible to realize a printing system that can continuously return only the status to the host independently of the print data.
[0222]
(Other embodiments)
Although the embodiments of the present invention have been described in detail above, the present invention may be applied to a system constituted by a plurality of devices or may be applied to an apparatus constituted by one device. In the above embodiment, an example in which
[0223]
In the present invention, a software program that realizes the functions of the above-described embodiments is directly or remotely supplied to a system or apparatus, and the computer of the system or apparatus reads and executes the supplied program code. Including the case where it is also achieved by. In that case, as long as it has the function of a program, the form does not need to be a program.
[0224]
Accordingly, since the functions of the present invention are implemented by computer, the program code installed in the computer also implements the present invention. That is, the claims of the present invention include the computer program itself for realizing the functional processing of the present invention.
[0225]
In this case, the program may be in any form as long as it has a program function, such as an object code, a program executed by an interpreter, or script data supplied to the OS.
[0226]
As a recording medium for supplying the program, for example, floppy (registered trademark) disk, hard disk, optical disk, magneto-optical disk, MO, CD-ROM, CD-R, CD-RW, magnetic tape, nonvolatile memory card ROM, DVD (DVD-ROM, DVD-R) and the like.
[0227]
As another program supply method, a client computer browser is used to connect to an Internet homepage, and the computer program of the present invention itself or a compressed file including an automatic installation function is downloaded from the homepage to a recording medium such as a hard disk. Can also be supplied. It can also be realized by dividing the program code constituting the program of the present invention into a plurality of files and downloading each file from a different homepage. That is, a WWW server that allows a plurality of users to download a program file for realizing the functional processing of the present invention on a computer is also included in the claims of the present invention.
[0228]
In addition, the program of the present invention is encrypted, stored in a storage medium such as a CD-ROM, distributed to users, and key information for decryption is downloaded from a homepage via the Internet to users who have cleared predetermined conditions. It is also possible to execute the encrypted program by using the key information and install the program on a computer.
[0229]
In addition to the functions of the above-described embodiments being realized by the computer executing the read program, the OS running on the computer based on the instruction of the program is a part of the actual processing. Alternatively, the functions of the above-described embodiment can be realized by performing all of them and performing the processing.
[0230]
Furthermore, after the program read from the recording medium is written in a memory provided in a function expansion board inserted into the computer or a function expansion unit connected to the computer, the function expansion board or The CPU or the like provided in the function expansion unit performs part or all of the actual processing, and the functions of the above-described embodiments are realized by the processing.
[0231]
【The invention's effect】
According to the present invention, efficient data transfer can be performed using two channels such as an
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration of a host / printer communication system according to the present invention.
FIG. 2 is a diagram showing a network configuration of a 1394 serial bus.
FIG. 3 is a diagram showing components of a 1394 serial bus according to the present invention.
FIG. 4 is a diagram showing a service capable of providing a link layer of a 1394 serial bus according to the present invention.
FIG. 5 is a diagram showing a service capable of providing a transaction layer of a 1394 serial bus according to the present invention.
FIG. 6 is a diagram for explaining an address space in a 1394 interface;
FIG. 7 is a diagram showing an address and a function of information stored in a CSR core register in the 1394 interface.
FIG. 8 is a diagram showing the address and function of information stored in a serial bus register in the 1394 interface.
FIG. 9 is a diagram showing a configuration ROM in the minimum format in the 1394 interface.
FIG. 10 is a diagram showing a general configuration ROM in a 1394 interface.
FIG. 11 is a diagram showing an address and a function of information stored in a serial bus device register in the 1394 interface.
FIG. 12 is a cross-sectional view of a communication cable conforming to the
FIG. 13 is a diagram for explaining a DS-Link encoding method.
FIG. 14 is a diagram showing a basic sequence from the start of bus reset to node ID assignment processing.
FIG. 15 is a diagram showing a basic sequence from the start of bus reset to node ID assignment processing;
FIG. 16 is a diagram showing a basic sequence from the start of bus reset to node ID assignment processing;
FIG. 17 is a flowchart for explaining in detail the processing in step S1505 shown in FIG. 15 (that is, processing for automatically assigning the node ID of each node).
FIG. 18 is a diagram showing a configuration of a self ID packet in a 1394 interface.
FIG. 19 is a diagram for explaining arbitration in a 1394 network.
FIG. 20 is a diagram illustrating a case where an isochronous transfer mode and an asynchronous transfer mode are mixed in one communication cycle.
FIG. 21 is a diagram showing a format of a communication packet transferred based on an isochronous transfer mode.
FIG. 22 is a diagram showing a packet format of asynchronous transfer according to the present invention.
FIG. 23 is a diagram showing ORB types in SBP-2.
FIG. 24 is a diagram showing a format of a command block ORB in SBP-2.
FIG. 25 is a diagram showing a format of a management ORB in SBP-2.
FIG. 26 is a diagram showing a link list of a command block ORB in SBP-2.
FIG. 27 is a diagram showing direct access of a data buffer in SBP-2.
FIG. 28 is a diagram showing the use of a page table in SBP-2.
FIG. 29 is a diagram showing a format of a status FIFO in SBP-2.
FIG. 30 is a diagram illustrating a login operation in SBP-2.
FIG. 31 is a diagram showing an initial operation of task execution in SBP-2.
FIG. 32 is a diagram showing an operation of a command ORB in SBP-2.
FIG. 33 is a diagram showing the operation of a command ORB in SBP-3.
FIG. 34 is a diagram showing a format of a command block ORB in SBP-3.
FIG. 35 is a diagram showing a format of a status block in the information processing system as an embodiment of the present invention.
FIG. 36 is a diagram showing an operation of a command ORB in the information processing system as an embodiment of the present invention.
Claims (8)
前記第1機器は、
1つのコマンドブロックに対し複数のデータバッファを割り当て、
前記第2機器は、
前記コマンドブロックに従って前記複数のデータバッファの少なくとも1つに対するデータ通信を行うデータ通信手段と、
前記データ通信手段によって前記複数のデータバッファのいずれか1つに対するデータ通信が完了した場合には当該データ通信が完了した1つのデータバッファを特定するための情報と前記複数のデータバッファの中でデータ通信が完了していないデータバッファを特定するための情報とを含むステータスを前記第1機器に通知し、前記データ通信手段によって前記複数のデータバッファ全てに対するデータ通信が完了した場合には当該全てのデータバッファに対するデータ通信が完了したことを示すステータスを前記第1機器に通知する完了通知手段と、
を有することを特徴とする情報処理システム。An information processing system including first and second devices connected by a communication control bus,
The first device is:
Assign multiple data buffers to one command block,
The second device is
Data communication means for performing data communication with respect to at least one of the plurality of data buffers according to the command block;
When data communication with respect to any one of the plurality of data buffers is completed by the data communication means, information for specifying one data buffer for which the data communication has been completed and data in the plurality of data buffers The first device is notified of a status including information for specifying a data buffer for which communication has not been completed, and when the data communication means completes data communication for all of the plurality of data buffers, A completion notifying means for notifying the first device of a status indicating that data communication with the data buffer has been completed;
An information processing system comprising:
1つのコマンドブロックに対し複数のデータバッファを割り当てた他の機器に対して、前記コマンドブロックに従って前記複数のデータバッファの少なくとも1つに対するデータ通信を行うデータ通信手段と、
前記データ通信手段によって前記複数のデータバッファのいずれか1つに対するデータ通信が完了した場合には当該データ通信が完了した1つのデータバッファを特定するための情報と前記複数のデータバッファの中でデータ通信が完了していないデータバッファを特定するための情報とを含むステータスを前記第1機器に通知し、前記データ通信手段によって前記複数のデータバッファ全てに対するデータ通信が完了した場合には当該全てのデータバッファに対するデータ通信が完了したことを示すステータスを前記他の機器に通知する完了通知手段と、
を有することを特徴とする情報処理装置。An information processing apparatus connected to another device via a communication control bus,
Data communication means for performing data communication with respect to at least one of the plurality of data buffers in accordance with the command block to another device in which a plurality of data buffers are allocated to one command block;
When data communication with respect to any one of the plurality of data buffers is completed by the data communication means, information for specifying one data buffer for which the data communication has been completed and data in the plurality of data buffers The first device is notified of a status including information for specifying a data buffer for which communication has not been completed, and when the data communication means completes data communication for all of the plurality of data buffers, A completion notifying means for notifying the other device of a status indicating that data communication to the data buffer is completed;
An information processing apparatus comprising:
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002260397A JP4095384B2 (en) | 2002-09-05 | 2002-09-05 | Information processing system, information processing apparatus, information processing method, program, and storage medium |
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 |
---|---|---|---|
JP2002260397A JP4095384B2 (en) | 2002-09-05 | 2002-09-05 | Information processing system, information processing apparatus, information processing method, program, and storage medium |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004104255A JP2004104255A (en) | 2004-04-02 |
JP4095384B2 true JP4095384B2 (en) | 2008-06-04 |
Family
ID=32261130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002260397A Expired - Fee Related JP4095384B2 (en) | 2002-09-05 | 2002-09-05 | Information processing system, information processing apparatus, information processing method, program, and storage medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4095384B2 (en) |
-
2002
- 2002-09-05 JP JP2002260397A patent/JP4095384B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004104255A (en) | 2004-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4536981B2 (en) | Information signal processing apparatus and information signal processing method | |
JP4035235B2 (en) | Electronics | |
JP4027189B2 (en) | Information processing system, information processing apparatus, information processing method, program, and storage medium | |
JP2003174486A (en) | Information communication device, information communication method and information communication processing program | |
US6823408B2 (en) | Electronic equipment, and method for controlling state of physical layer circuit therefor | |
EP1184791A2 (en) | Information processing apparatus connected to a serial bus and method therefore | |
JP2001160939A (en) | Image processing unit, and image processing system, and control method therefor | |
JP2001274813A (en) | Device and method for processing information signal, and storage medium | |
JP2000259545A (en) | Information processing device, its method and recording medium | |
US7346714B2 (en) | Notification of completion of communication with a plurality of data storage areas | |
JP4095384B2 (en) | Information processing system, information processing apparatus, information processing method, program, and storage medium | |
JP2004102443A (en) | Information processing system, information processing method, program and storage medium | |
JP4109983B2 (en) | Communications system | |
JP2004064665A (en) | Data transfer device, transmitting device, receiving device, and method for controlling them | |
JP2003110651A (en) | Data processing method, data processing apparatus, communication protocol and program | |
JP2005044078A (en) | Communication method, printing device, and host device | |
JP2006134222A (en) | Information processor and method | |
JP2003229857A (en) | Serial bus system, device for managing band of serial bus, and communication equipment | |
JP2004179898A (en) | Image processing apparatus | |
JP2009027349A (en) | Network apparatus | |
JP2001144783A (en) | Serial bus bridge, terminal equipment, information communication system, its method and storage medium | |
JP2004223965A (en) | Printing device | |
JPH11177589A (en) | Data transfer device, data processing method therefor and computer readable storage medium stored with program | |
JP2004192559A (en) | Image processing system | |
JP2004179899A (en) | Image processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050902 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070810 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070820 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071019 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071116 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080116 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080125 |
|
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: 20080215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080307 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110314 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: 20120314 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130314 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140314 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |