(57)【特許請求の範囲】
【請求項１】
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理装置であって、
前記モジュールは、
前記パケットを受信する受信手段と、
前記受信手段により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定手段と、
前記判定手段により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別手段と、
前記判別手段により判別された前記コマンド種別に基づいて、前記モジュールからのパケット送信間隔を決定する決定手段と、
前記決定手段により決定された前記パケット送信間隔をタイマに設定する設定手段と、
前記設定手段により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記判別手段により前記コマンド種別が前記書込みモードであると判別された場合、前記設定手段は、前記パケット送信間隔として第１間隔を設定し、
前記判別手段により前記コマンド種別が前記読出しモードであると判別された場合、前記設定手段は、前記パケット送信間隔として前記第１間隔よりも長い第２間隔を設定し、
前記判別手段により前記コマンド種別が前記入替えモードであると判別された場合、前記設定手段は、前記パケット送信間隔として前記第２間隔よりも長い第３間隔を設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記パケット送信間隔をクロック数により決定し、
前記第２間隔は前記第１間隔よりも前記クロック数が１クロックだけ長い間隔であり、前記第３間隔は前記第２間隔よりも前記クロック数が１クロックだけ長い間隔であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理装置であって、
前記モジュールは、
前記パケットを受信する受信手段と、
前記受信手段により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定手段と、
前記判定手段により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別手段と、
前記判別手段により判別された前記コマンド種別に基づいて、前記コマンド種別ごとに予め定められた、前記モジュールからのパケット送信間隔を選択する選択手段と、
前記選択手段により選択された前記パケット送信間隔をタイマに設定する設定手段と、
前記設定手段により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信手段と、
を備えることを特徴とする情報処理装置。
【請求項５】
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理方法であって、
前記モジュールは、
受信手段が、前記パケットを受信する受信工程と、
判定手段が、前記受信工程により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定工程と、
判別手段が、前記判定工程により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別工程と、
決定手段が、前記判別工程により判別された前記コマンド種別に基づいて、前記モジュールからのパケット送信間隔を決定する決定工程と、
設定手段が、前記決定工程により決定された前記パケット送信間隔をタイマに設定する設定工程と、
送信手段が、前記設定工程により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信工程と、
を有することを特徴とする情報処理方法。
【請求項６】
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理方法であって、
前記モジュールは、
受信手段が、前記パケットを受信する受信工程と、
判定手段が、前記受信工程により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定工程と、
判別手段が、前記判定工程により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別工程と、
選択手段が、前記判別工程により判別された前記コマンド種別に基づいて、前記コマンド種別ごとに予め定められた、前記モジュールからのパケット送信間隔を選択する選択工程と、
設定手段が、前記選択工程により選択された前記パケット送信間隔をタイマに設定する設定工程と、
送信手段が、前記設定工程により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信工程と、
を有することを特徴とする情報処理方法。
【請求項７】
請求項５または６に記載の情報処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関し、特にデータ駆動方式の情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、ハードウェアによって実現される処理回路を並列実行することによって効率よくデータ処理を行う方法として、バス型のパイプライン接続によるものがある（例えば、特許文献１参照）。
【０００３】
この接続方式では、入力端において外部メモリからＩ／Ｆを介して入力されたデータは、接続された順序に基づいて順次処理された後に出力端において外部メモリ等へ出力される。そのため、その処理順序は予めハードウェア実装時に接続された順序によって制限され、順序入れ替えを含む任意の処理順序を実行することはできない。
【０００４】
上記の課題を解決するために、処理回路間の接続をリング型のバスで接続する方法が開示されている（例えば、特許文献２乃至４参照）。
【０００５】
また、画像のフィルタ処理を並列に処理する技術として、データに制御コードを付けてリングバスに送出し、制御コードに従ってデータの取り込みの制御を行う方法がある。これによりオーバーラップ部のデータを複数のプロセッサで受信できるようにする方法も開示されている（例えば、特許文献５参照）。
【０００６】
また、画像処理の構成を容易に変更可能とすると共に、バス競合による処理速度の低下を少なくするために、複数画像処理部と（入出力）制御部をリング状に接続する。そしてデータをパケット化して該リング状に接続したバス上を単方向に転送する方法が開示されている（例えば、特許文献６参照）。
【０００７】
また、パイプライン化されるコンピュータ・グラフィックス・システムにおいて、高い通信帯域幅を実現するために、グラフィックス処理要素をリング状に結合するバス構造を有する。それぞれのグラフィックス処理要素はリング内の前の処理要素からコマンドおよび情報信号を受信し、リング内の次に続く処理要素へ情報を送るように結合される、コア処理ユニットおよびインタフェース・ユニットを有する。上記リング状に結合するバスは、クロック信号（ＣＬＫ）と、バッファされる情報準備信号（Ｂ＿Ｒｄｙ）と、バッファされない情報準備信号（Ｕ＿Ｒｄｙ）と、ビジー信号（Ｂｕｓｙ）と、タイプ・フィールド信号（Ｔｙｐｅ［８：０］）と、情報フィールド信号（Ｉｎｆｏ［３１：０］）とを持つ。クロック信号（ＣＬＫ）、タイプ・フィールド信号（Ｔｙｐｅ［８：０］）および情報フィールド信号（Ｉｎｆｏ［３１：０］）は、リング上で下流方向に送られる。一方、バッファされる情報準備信号（Ｂ＿Ｒｄｙ）と、バッファされない情報準備信号（Ｕ＿Ｒｄｙ）およびビジー信号（Ｂｕｓｙ）とは、リング上で、上流方向に供給される方法が開示されている（例えば、特許文献７参照）。
【０００８】
また、リングバス上を周回するデータ量の上限を超えるデータトラフィックの発生によりデータオーバーフローが発生する。このデータオーバーフローを回避する方法として、遅延パケットの挿入やデータのリングからの一時退避、リングバスへの出力抑制といった技術が開示されている（例えば、特許文献８または特許文献９参照）
さらに、リングバスによって接続され、独立した動作を行うプロセッサのそれぞれが、共有メモリに対して集中的に処理データならびに参照データ等のアクセスを行うことにより、メモリアクセスの競合が発生する。このメモリアクセスの競合を回避するために、プロセッサごとに２ポートメモリにより構成するローカル分散メモリを備え、各メモリに対して処理に必要なデータを適宜送信・収集する技術が開示されている（例えば、特許文献１０参照）。
【０００９】
一方で、２ポートメモリを使用せず、各分散処理プロセッサに接続された記憶部に対してコマンドを発行して、内部データの書込み（Ｗ）、読出し（Ｒ）を行う技術も開示されている（例えば、特許文献１１参照）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第２７３４２４６号公報
【特許文献２】特開平０１−０２３３４０号公報
【特許文献３】特許第２８３４２１０号公報
【特許文献４】特許第２５１８２９３号公報
【特許文献５】特開昭６３−２４７８５８号公報
【特許文献６】特許第０３９０７４７１号公報
【特許文献７】特許第０３８８０７２４号公報
【特許文献８】特開平２−１７１９７５号公報
【特許文献９】特開平７−３２５８００号公報
【特許文献１０】特公平６−４６４１３号公報
【特許文献１１】特許第４３５９４９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来は、リングバス上に配置されたプロセッサのそれぞれが備える分散内部メモリ（またはレジスタ）に対して、設定パラメータなどの設定データと、画像データなどの処理データとを分けては記載されていない。
【００１２】
一方、近年のハードウェア実装においては、画像処理の自由度を拡大するために多くのパラメータを必要とするものがある。パラメータ数の増大は、画像処理の性能を圧迫する。よって、こうした設定パラメータをいかに高速に転送するかが、課題となっている。
【００１３】
また、特許文献８では、分散内部メモリ（またはレジスタ）へのデータまたは設定パラメータの書込み・読出し時の制御については開示されていない。
【００１４】
単一方向にデータを流通させる単一のリングバスによる複数プロセッサが接続されて構成される画像処理装置を考える。その場合、リングバス状に接続されたプロセッサが内部に備える設定値等を保持する分散メモリ（またはレジスタ）に対する設定データ処理も、画像データなどの処理データと共に時分割的に多重して転送することが必須である。設定データ処理とは、書込み（Ｗ）、読み出し（Ｒ）、入替え（Ｅｘ）の各処理である。さらに、処理プロセッサが処理中であるために受け取ることができないデータパケットがあると、そのデータパケットはそのまま保留ビットを立てられてリングバス上を周回する。この周回するパケットの数が一定数を超えると、リングバス上にデータを投入することも、リングバスから抜き出すことも不可能となるデッドロック状態に陥ることが知られている。
【００１５】
このようなデッドロック状態を回避するために、画像処理の対象となるデータは、適切な速度で投入制御されるべきである。適切な速度とは、処理に使用されるプロセッサの画像処理速度、および、処理順序入れ替えなどのためにリングバス上を周回するパケットのトラフィックを考慮して決定されるべき速度である。これは設定データについても同様であり、画像処理の対象となるデータは、各プロセッサにおける分散メモリ（またははレジスタ）に対する読書き処理速度に依存した速度で投入制御されるべきである。
【００１６】
実際は、画像データは高解像度印刷画像処理のように大容量データである場合もあれば、プレビュー画像作成のように１６０×１２０画素などのごく小さな画素数を処理する小容量データである場合もある。この処理において、例えばＲＧＢ各１０ビット入力データに対する１次元ルックアップテーブル（以下、「ＬＵＴ１Ｄ」と称する）を処理実行前に設定する場合と、１０２４エントリ×３色＝３０７２の設定データを転送しなければならない。これは処理データの１６％を占めるデータ量となる。このＬＵＴ１Ｄが２つある場合、全処理データ量の３割を占めてしまう。設定データ量の多さが全体の処理量に大きな影響を及ぼしている。
【００１７】
こうした状況において、例えば特許文献９に開示されるように、指定された一定期間データの送信を抑制する技術が提案されている。しかしながら、設定データは処理データに対して速く処理できることが一般的であるため、この技術だけでは、遅い処理データの速度で設定データが処理されてしまい、本来の設定処理速度を得ることができないという問題がある。
【００１８】
このように、従来の技術では、画像処理に先立って必要な、設定データの転送速度を  画像データの転送速度とは別個に制御することができず、本来の処理性能を十分に引き出せないという課題がある。
【００１９】
上記の課題に鑑み、本発明は、画像処理に先立って必要な、設定データの転送速度を  画像データの転送速度とは別個に制御して、より高速に処理を実行することを目的とする。
【課題を解決するための手段】
【００２０】
上記の目的を達成する本発明に係る情報処理装置は、
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理装置であって、
前記モジュールは、
前記パケットを受信する受信手段と、
前記受信手段により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定手段と、
前記判定手段により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別手段と、
前記判別手段により判別された前記コマンド種別に基づいて、前記モジュールからのパケット送信間隔を決定する決定手段と、
前記決定手段により決定された前記パケット送信間隔をタイマに設定する設定手段と、
前記設定手段により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信手段と、
を備えることを特徴とする。
【００２１】
また、上記の目的を達成する本発明に係る情報処理装置は、
リング状に接続された複数のモジュール間でパケットを単一方向に巡回させて当該パケットを送受信する情報処理装置であって、
前記モジュールは、
前記パケットを受信する受信手段と、
前記受信手段により受信された前記パケットに含まれるデータが、前記モジュールが有する処理モジュールが処理する処理データであるか、または、前記処理モジュールの設定を内部に含まれるコマンドにより変更する設定データであるか、を判定する判定手段と、
前記判定手段により前記パケットに含まれるデータが前記設定データであると判定された場合、前記設定データの内部に含まれる前記コマンドの種類を示すコマンド種別が、少なくとも、前記モジュールへ前記設定データを書き込む書込みモードと、前記モジュールから当該モジュールに保持されている既設定データを読み出す読出しモードと、前記モジュールから前記既設定データを読み出した後に前記設定データを前記モジュールへ書き込む入替えモードと、の何れであるかを判別する判別手段と、
前記判別手段により判別された前記コマンド種別に基づいて、前記コマンド種別ごとに予め定められた、前記モジュールからのパケット送信間隔を選択する選択手段と、
前記選択手段により選択された前記パケット送信間隔をタイマに設定する設定手段と、
前記設定手段により前記タイマに設定された前記パケット送信間隔で前記パケットを送信する送信手段と、
を備えることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、画像処理に先立って必要な、設定データの転送速度を  画像データの転送速度とは別個に制御して、より高速に処理を実行することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】情報処理装置のモジュールの構成例を示す図。
【図２】リングバス上を流れるパケットのフィールド構成例を示す図。
【図３】リングバスの構成例を示す図。
【図４】システム構成例を示す図。
【図５】（ａ）入出力モジュールの構成例を示す図、（ｂ）設定部の構成例を示す図。
【図６】設定コマンドによる内部メモリ・レジスタ書込みシーケンスを示す図。
【図７】（ａ）受信部の構成例を示す図、（ｂ）送信部の構成例を示す図。
【図８】（ａ）設定方法、アドレスを自由に指定する形式を示す図、（ｂ）設定方法、アドレスの初期値を与える形式を示す図、（ｃ）入力処理部で設定方法、アドレスを自動的に付与する形式を示す図。
【図９】コマンド展開処理における設定処理の手順を示すフローチャート。
【図１０】設定コマンドの検索処理手順を示すフローチャート。
【図１１】転送速度設定コマンドの配置例を示す図。
【図１２】コマンド種別に応じて複数の送信間隔を切替える送信間隔タイマの構成例を示す図。
【図１３】コマンド展開処理における設定処理の手順を示すフローチャート。
【図１４】コマンドを展開しながら転送速度を決定する処理の手順を示すフローチャート。
【発明を実施するための形態】
【００２４】
（第１実施形態）
まず、図１を参照して、本発明に係る情報処理装置のモジュールの構成例について説明する。モジュール１００は、リングバス１１０に接続されている単体のモジュールである。モジュール１００は、通信部１２０と、処理部１３０と、設定部１４０とを備える。リングバス１１０は、各モジュール１００をリング状に接続するバスである。
【００２５】
通信部１２０は、モジュール１００とリングバス１１０との間でのデータの送受信を行い、且つ、リングバス１１０上を流れるデータパケットを保持する機能も果たす。通信部１２０は、受信部１２１と、送信部１２２と、セレクタ１２３と、バッファ１２４とを備える。受信部１２１は、リングバス１１０上を流れるデータパケットのうち、当該モジュール１００で処理すべきデータを受信する。送信部１２２は、処理部１３０で処理済みのデータ、または、通信部１２０で加工されたデータについての送信パケットの生成および送信を行う。セレクタ１２３は、送信部１２２の判断に応じて、リングバス１１０より入力されたパケット、または、送信部１２２で生成されたパケットのいずれかを選択して出力する。バッファ１２４は、リングバス１１０を介して入力されるパケットを一時的に保持する。
【００２６】
処理部１３０は、通信部１２０で受信されたデータを処理する。設定部１４０は、処理部１３０の処理において参照または変更される設定パラメータやデータを保持する。詳細は後述する。次に、図２（ａ）および図２（ｂ）を参照して、リングバス１１０上を流れるパケットのフィールド構成の例を示す。
【００２７】
本発明に係る通信路は、単一方向に流れる単一のリングバスである。そのため、各プロセッサで処理される処理データも、各プロセッサを設定する設定データも同一のリングバス１１０上に多重化して送受信される。領域２００は、処理データのパケット内のフィールドの構成例を示している。設定コマンドパケット２１０は、設定データのパケット内のフィールドの構成例を示している。コマンドタイプＴフィールド２０６は、コマンドタイプである。受信部１２１は、このフィールドが保持する値を判別し、処理データであればそれを処理部１３０に送るように制御し、設定データであればそれを設定部１４０に送るように制御する。
【００２８】
図２（ａ）を参照して、領域２００に示す処理データパケットについて説明する。ｖａｌｉｄフラグ２０１は、パケットが有効であることを示す。ｓｔａｌｌフラグ２０２は、パケットが受信保留であることを示す。接続ＩＤ２０３は、モジュール１００の論理的な処理順序を識別する。カウント値２０４は、データの送信順を示す。データフィールド２０５は、処理されるデータである。
【００２９】
次に、図２（ａ）を参照して、設定コマンドパケット２１０に示す設定データパケットについて説明する。ｖａｌｉｄフラグ２１１は、パケットが有効であることを示す。ｓｔａｌｌフラグ２１２は、パケットが受信保留であることを示す。接続ＩＤ２１３は、モジュールの論理的な処理順序を識別する。カウント値２１４は、データの送信順を示す。設定先モジュールＩＤフィールド２１５は、設定を適用するモジュール１００を特定する。ＭＯＤＥフィールド２１６は、設定処理モードを示し、書込み（Ｗ）、読出し（Ｒ）、または入替え（Ｅｘ）のいずれかのモードを示す値を保持する。アドレスフィールド２１７は、設定データを保持する内部メモリまたはレジスタを特定する。データフィールド２１８は、設定データであり、ＭＯＤＥフィールド２１６により示されるモードに応じて以下のような意味を有する。
【００３０】
書込み（Ｗ）モードにおいては、書き込まれるデータを保持する。読出し（Ｒ）モードにおいては、接続ＩＤ２１３で識別されるモジュール１００に到達するまでは無効なデータを保持する。そして、モジュール１００において読み出し処理を行った後は、内部メモリまたはレジスタの、アドレスフィールド２１７によって指定されたアドレスに格納されるデータを保持する。
【００３１】
入替え（Ｅｘ）モードにおいては、接続ＩＤ２１３で識別されるモジュール１００に到達するまでは、アドレスフィールド２１７で指定されるアドレスに書き込むデータを保持する。そして、モジュール１００で設定処理を行った後は、アドレスフィールド２１７で指定されるアドレスに、書込みを行う直前に保持されていたデータを読み出したものを保持する。
【００３２】
このようなパケットのフィールド構成を持つことにより、単一方向に流れる単一のリングバスのみを用いてシステムを構成することができるため、モジュール間の結線などを最小限に抑えることができる。
【００３３】
次に、図３を参照して、個々のモジュールを接続してリングバス３００を構成した際の構成例について説明する。ターミナルモジュール３１０（以下、「モジュールＡ」とも称する）は、外部のデータバスとの接続３６０を介して外部からデータを入力する。そして、リングバス３００上にある他のモジュールにおいて処理が終了したデータを外部データバスとの接続３５０を介して外部に出力する。モジュール３２０（以下、「モジュールＢ」とも称する）、モジュール３３０（以下、「モジュールＣ」とも称する）、およびモジュール３４０（以下、「モジュールＤ」とも称する）は、リングバス３００に接続されたモジュールである。モジュールごとに異なる処理を行ってもよく、いくつかのモジュールで同じ処理を行ってもよい。また、ここには４つのモジュールによって構成されるリングバス３００を例示しているが、リングバス３００を構成するモジュールの数には特に制限はなく、より多くのモジュールまたはより少ないモジュールを用いてリングバス３００を構成してもよい。
【００３４】
このようなリングバス３００の構成により、接続順序とは異なる順序でデータを巡回させ、モジュールによるデータ処理を実行することが可能である。例えば、モジュールＡ、モジュールＤ、モジュールＣ、モジュールＢの順に処理を行う場合を考える。
【００３５】
モジュールＡの送信ＩＤ３１１とモジュールＤの受信ＩＤ３４２に同じ接続ＩＤ値“１”を設定する。モジュールＤの送信ＩＤ３４１とモジュールＣの受信ＩＤ３３２に同じ接続ＩＤ値“３”を設定する。モジュールＣの送信ＩＤ３３１とモジュールＢの受信ＩＤ３２２に同じ接続ＩＤ値“４”を設定する。モジュールＢの送信ＩＤ３２１とモジュールＡの受信ＩＤ３１２に同じ接続ＩＤ値“８”を設定する。このように設定することによって、処理順序の指定を行うことができる。
【００３６】
処理データは、この設定に従って各モジュールで処理されながら、リングバス３００上をＡ→Ｄ→Ｃで１周、Ｃ→Ｂで１周、最後にＢ→Ａで１周して出力される。このような状況において、あるモジュールが処理中であるときに次のパケットが到達すると、モジュールは処理できない。そのため、受信したパケットをモジュール内に取り込まず、パケットのｓｔａｌｌフラグ２０２またはｓｔａｌｌフラグ２１２を「有効」に変更してリングバス３００に送信する。当然、モジュールの処理速度よりも早くパケットを次々とリングバス上に投入すると、ｓｔａｌｌフラグ２０２またはｓｔａｌｌフラグ２１２が有効となったパケットでリングバス３００が埋め尽くされてしまい、その後パケットを投入することができなくなる。これはいずれの処理中のモジュールでも同じことであるため、処理済のパケットもリングバス３００に投入できなくなり、入力も出力もできないいわゆるデッドロック状態となってしまう。後述する設定コマンドにおいても、設定コマンドの処理速度に見合った間隔でパケットを投入しなければ、デッドロック状態となってしまう。
【００３７】
図４を参照して、本発明に係る情報処理装置４２０を配置するシステムの構成例をについて説明する。システム制御部４００は、ＣＰＵ４０１と、ＲＯＭ４０２と、ＲＡＭ４０３と、外部記憶装置４０４とを備える。ＣＰＵ４０１は、各種の演算制御を実行する。ＲＯＭ４０２は、固定データやプログラムを格納する。ＲＡＭ４０３は、データの一時保存やプログラムのロードに使用される。外部記憶装置４０４は、外部データを記憶して保持する。
【００３８】
データ入力部４１０は、処理すべきデータをシステムの外部から入力する。データ入力部４１０は、例えば、イメージスキャナおよびＡ／Ｄ変換器などのデバイスによって構成される画像読み込み装置、または、マイクおよびＡ／Ｄ変換などのデバイスによって構成される音声入力装置であってもよい。情報処理装置４２０は、本発明に係る情報処理装置である。
【００３９】
データ出力部４３０は、システムにおいて処理済みのデータを外部に出力する。データ出力部４３０は、例えば、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置、または、音声データをＤ／Ａ変換器等を通して出力する音声出力装置であってもよい。
【００４０】
データ入力部４１０に入力されたデータは、システム制御部４００に送られてＣＰＵ４０１によって処理されてもよいし、そのままＲＡＭ４０３や外部記憶装置４０４に一時記録されてもよい。また、情報処理装置４２０は、データ入力部４１０から入力データを直接受け取って処理を行ってもよく、システム制御部４００からの指示によって、一旦ＲＡＭ４０３に蓄積されたデータを読み出して処理を行ってもよい。同様に、情報処理装置４２０からの出力は、再度システム制御部４００に送られてもよいし、直接データ出力部４３０に送られて出力処理が実行されてもよい。情報処理装置４２０は、システム制御部４００の制御によって、様々なデータ処理内容が設定され、処理データが供給されて動作する。
【００４１】
図５（ａ）を参照して、入出力モジュールの構成例について説明する。外部のメモリとのデータの入出力を行う入出力モジュール５００は、リングバス１１０を構成する他の処理モジュールと異なるモジュールである。
【００４２】
通信部５２０は、入出力モジュール５００とリングバス１１０との間でのデータの送受信を行い、且つ、リングバス１１０上を流れるデータパケットを保持する機能も果たす。通信部５２０は、受信部５２１と、送信部５２２と、セレクタ５２３と、バッファ５２４とを備える。受信部５２１は、リングバス１１０から転送されるパケットを受信する。送信部５２２は、逆にリングバス１１０に対してパケットを送信する。セレクタ５２３は、パケットの内容に応じて、リングバス１１０上を流れてきたデータか、本入出力モジュール５００において投入される入力データかのいずれかを出力するように選択する。バッファ５２４は、リングバス１１０上を流れるパケットを一時的に保持する。
【００４３】
本実施形態では、リングバス１１０は、一つのデータパケットを１クロックサイクルに一度に転送できるパラレル通信路であるとして説明を行うが、パケットデータに対して少ないビット数を複数クロックに分けて転送するシリアル通信路であってもよい。
【００４４】
出力処理部５３０は、リングバス１１０からのデータを外部に出力する。入力処理部５４０は、リングバス１１０に対して未処理データを入力する。設定部５５０は、出力処理部５３０に対する動作設定値などを設定して保持する。設定部５６０は、入力処理部５４０に対する動作設定値などを設定して保持する。
【００４５】
このような構成の入出力モジュール５００を用いることによって、リングバス１１０へのデータ入力と、リングバス１１０からのデータ出力とを行う。本実施形態では、特に入出力モジュール５００を一つの通信路に接続することにより、入力と出力の同期制御が容易となる構成例を示している。しかし、必ずしもこのような構成のみに限定する必要はなく、入力処理部５４０と出力処理部５３０とに別々に通信部５２０を接続したモジュールとしてもよい。その場合は、入力モジュールにおいては、出力処理部５３０および設定部５５０が存在しない構成となる。一方、出力モジュールにおいては入力処理部５４０および設定部５６０が存在しない構成となる。
【００４６】
次に図５（ｂ）を参照して、図１または図５（ａ）における設定部の構成例を説明する。設定部６００は、図１における設定部１４０または図５（ａ）における設定部５５０および設定部５６０に相当する。
【００４７】
設定部６００は、コマンド入力部６０１と、コマンド出力部６０２と、解析部６０３と、シーケンス部６０４と、内部メモリ・レジスタ６０５と、アドレス通信路６０６と、データ通信路６０７とを備える。コマンド入力部６０１は、通信部１２０または入力処理部５４０から設定コマンドを受け付ける。コマンド出力部６０２は、通信部１２０または通信部５２０に処理済設定コマンドを出力する。ここでは、後述する解析部６０３の解析結果を参照し、入力されたコマンドの種類を示すコマンド種別が書込み（Ｗ）コマンドである場合は、コマンド入力部６０１から通知されたコマンドをそのまま出力する。一方、入力されたコマンドが読出し（Ｒ）コマンドまたは入替え（Ｅｘ）コマンドである場合は、コマンド入力部６０１から通知されるコマンドに、後述するシーケンス部６０４から通知される読出しデータを格納して出力する。解析部６０３は、入力されたコマンドの種別を解析する。
【００４８】
解析部６０３は、コマンドパケット内のＭｏｄｅフィールド２１６の内容を解析する。内部メモリ・レジスタ６０５は、モジュールごとに設定値または処理データ等を保持する。シーケンス部６０４は、解析部６０３の解析結果に従って、内部メモリ・レジスタ６０５に対して、書込み（Ｗ）、読出し（Ｒ）または入替え（Ｅｘ）のいずれかのアクセスのシーケンス制御を行う。アドレス通信路６０６は、コマンド入力部６０１から通知される設定コマンドパケット２１０のアドレスフィールド２１７を通知する。
【００４９】
データ通信路６０７は、シーケンス部６０４と内部メモリ・レジスタ６０５の間でデータを通信する。解析部６０３による解析結果が書込み（Ｗ）コマンドである場合には、データフィールド２１８が保持する値を内部メモリ・レジスタ６０５に書き込む。一方、解析部６０３による解析結果が読出し（Ｒ）コマンドである場合には、アドレス通信路６０６を介して通知したアドレスのデータ（既設定データ）を読み出す。または入替え（Ｅｘ）コマンドの場合にはアドレス通信路６０６を解して通知したアドレスのデータを読み出すと共に、データフィールド２１８が保持する値を書き込む。
【００５０】
また、通信路６１０は、設定部６００に対してコマンドを入力するための通信路である。コマンドは、図１においては通信部１２０から設定部１４０に伝達され、図５（ａ）においては入力処理部５４０から設定部５６０に伝達される。一方、通信路６２０は、本設定部６００で処理されたコマンドを出力するための通信路である。図１においては通信部１２０へ出力し、図５（ａ）においては入力部側の設定部５６０では通信部５２０へ出力する一方、出力部側の設定部５５０では出力処理部５３０へ出力する。
【００５１】
通信路６３０は、設定部６００で設定された内部メモリ・レジスタ６０５の内容を処理部１３０、出力処理部５３０、入力処理部５４０へ通知するための通信路である。また、処理部１３０、出力処理部５３０、入力処理部５４０からのデータを記録したりするために使用される通信路でもある。
【００５２】
ここで示すように、内部メモリ・レジスタ６０５は、必ずしも設定コマンドパケットによって外部からの設定値を記録するだけではなく、処理部１３０等において処理された結果をコマンドによって読出し可能に保持してもよい。さらに、予め設定コマンドによって内部メモリ・レジスタ６０５に対して初期値を設定した後、その後入力される処理データパケットを処理する際にこの内部メモリ・レジスタ６０５を参照し、処理によって変更された設定値を書き戻す動作を行ってもよい。
【００５３】
例えば、ある画像Ａの画素値についての出現回数すなわちヒストグラムを取得するようなケースを考える。この場合、まず初期値として内部メモリ・レジスタ６０５のヒストグラム保持領域に全て０を書き込むコマンドを投入する。その後、処理部１３０は、画像データを順次処理しながら、内部メモリ・レジスタ６０５に出現回数を順次加算していく処理を行う。画像Ａの全ての画素を処理し終えたところで、内部メモリ・レジスタ６０５に蓄積された出現回数値を順次読み出すコマンドを投入する。
【００５４】
このような処理では、内部メモリ・レジスタ６０５では、外部からのコマンドによる初期値の書込みおよび処理後のヒストグラムの読み出しという設定部６００からのアクセスと、通信路６３０を介して処理部１３０からリードモディファイライトアクセスとが行われている。
【００５５】
次に、図６を参照して、設定コマンドパケット２１０のＭｏｄｅフィールド２１６の内容に応じて、シーケンス部６０４が内部メモリ・レジスタ６０５に対して行うアクセスシーケンスを説明する。
【００５６】
まず、図６（ａ）に、Ｍｏｄｅが書込み（Ｗ）である場合のシーケンスを示す。この場合は、コマンド入力後の１クロック目でアドレス７０１の通知と書込みデータ７０２の通知を内部メモリ・レジスタ６０５に対して行い、処理を終了する。従って、書込み（Ｗ）コマンドは、１サイクルで処理を終了する。
【００５７】
次に図６（ｂ）に、Ｍｏｄｅが読出し（Ｒ）である場合のシーケンスを示す。この場合は、コマンド入力後の１クロック目でリードアドレス７０３を発行する。内部メモリ・レジスタ６０５はこのアドレスをデコードし、該当する領域のデータ７０４を次の２クロック目で返して処理を終了する。従って、読出し（Ｒ）コマンドは２サイクルで処理を終了する。
【００５８】
次に、図６（ｃ）に、Ｍｏｄｅが入替え（Ｅｘ）である場合のシーケンスを示す。この場合は、コマンド入力後の１クロック目でリードアドレス７０５を発行する。内部メモリ・レジスタ６０５はこのアドレスをデコードし、該当する領域のデータ７０６を次の２クロック目で返す。続いて３クロック目で、コマンドが運搬してきたデータ７０８をと同じアドレス７０７（アドレス値は７０５と同じ）と共に通知し、内部メモリ・レジスタ６０５はこれを記録する。従って、入替え（Ｅｘ）コマンドは３サイクルで処理を終了する。
【００５９】
このように、設定コマンドは書込み（Ｗ）、読出し（Ｒ）、入替え（Ｅｘ）の種別により処理速度が異なるため、それぞれの処理速度にあわせて投入間隔（パケット送信間隔）を例えばクロック数単位で制御する必要がある。安全のために最も遅い入替え（Ｅｘ）コマンドにあわせて全てを３サイクル間隔で転送すると、１サイクルで処理可能な書込みコマンドについては処理時間に３倍の無駄が生じる。
【００６０】
パラメタライズ設計手法などにより、ハードウェアやプロセッサの設定情報またはプログラムデータの量は増加の一途であり、設定処理におけるオーバーヘッドを低減しなければ、本来のプロセッサの能力を十分引き出すことができない。そのため、設定コマンドのモードに応じた速度制御が必要となる。
【００６１】
図７（ａ）を参照して、図１における受信部１２１および図５（ａ）における受信部５２１の構成例について説明する。受信部５２１（または受信部１２１）は、受信ＩＤ部８０１と、受信カウンタ８０２と、比較部８０３と、コマンド解析部８０４とを備える。
【００６２】
受信ＩＤ部８０１は、設定部５５０（または設定部１４０）が保持する受信ＩＤを参照する。比較部８０３は、リングバス１１０上のパケットのｖａｌｉｄフラグ２０１、接続ＩＤ２０３、およびカウント値２０４と、受信ＩＤ部８０１、および受信カウンタ８０２とを比較する。該パケットのｖａｌｉｄフラグ２０１が有効であり、該パケットの接続ＩＤ２０３が受信ＩＤ８０１部と一致し、該パケットのカウント値２０４が受信カウンタ８０２の値と一致する場合、比較部８０３はリングバス１１０のパケットを受信すると判定する。
【００６３】
比較部８０３によりリングバス１１０のパケットを受信すると判定された場合、比較部８０３はコマンド解析部８０４にパケットデータを出力するとともに、有効なデータであるという判定を受信カウンタ８０２に通知する。そして、この通知を受けて受信カウンタ８０２はカウント値を更新する。さらに、受信したためにバッファ５２４に保持されるパケットのＶａｌｉｄフラグ２０１をリセットすることで、該パケットを空パケットへと変更する。
【００６４】
コマンド解析部８０４は、比較部８０３から出力された該パケットのコマンドタイプＴフィールド２０６を参照する。そして、これが処理データである場合には出力処理部５３０または処理部１３０へパケットのデータフィールド２０５を出力する。一方、これが設定データである場合には設定部５５０または設定部１４０へ、Ｍｏｄｅフィールド２１６、アドレスフィールド２１７、およびデータフィールド２１８を出力する。
【００６５】
図７（ｂ）を参照して、図１における送信部１２２および図５における送信部５２２の構成例について説明する。送信部５２２（または送信部１２２）は、送信ＩＤ部９０１と、送信カウンタ９０２と、送信間隔タイマ９０３と、出力制御部９０４と、パケット生成部９０５と、を備える。送信ＩＤ部９０１は、設定部５６０に保持される送信ＩＤを参照する。送信間隔タイマ９０３は、送信抑制期間を計測し、また設定部５６０に保持される初期値を参照する。信号９０６は、入力処理部５４０（または処理部１３０）に対する出力許可・抑制信号である。信号９０７は、設定部５６０（または処理部１３０）から送信ＩＤ部９０１、送信間隔タイマ９０３の初期値を読み出す信号である。出力９０８は、設定部５６０からの設定コマンドの出力である。出力９０９は、入力処理部５４０からの処理済データの出力である。
【００６６】
出力制御部９０４は、バッファ５２４に保持されているパケットのｖａｌｉｄフラグ２０１とｓｔａｌｌフラグ２０２とを比較し、且つ接続ＩＤ２０３と送信ＩＤ部９０１とを比較する。そして、ｖａｌｉｄフラグ２０１が有効である場合には、データ出力を抑制するように入力処理部５４０（または処理部１３０）に通知する。一方、ｖａｌｉｄフラグ２０１が無効である場合には、空パケットであることから出力可能であるため、データ出力の許可を入力処理部５４０（または処理部１３０）に通知する。
【００６７】
出力制御部９０４が入力処理部５４０に対して出力を許可し、かつ入力処理部５４０が出力を行う場合、パケット生成部９０５は、入力処理部５４０から処理済データを受け取る。そして、送信ＩＤ部９０１、送信カウンタ９０２の値を付加すると共にｖａｌｉｄフラグ２０１を有効にして、ｓｔａｌｌフラグ２０２を無効にして出力パケットを生成する。さらに、送信抑制期間を計測する送信間隔タイマ９０３の値が所定の値に到達していれば、出力パケットはセレクタ５２３（またはセレクタ１２３）に出力される。そして、セレクタ５２３はバッファ５２４のパケットではなくパケット生成部９０５からの出力をリングバス１１０に出力する。
【００６８】
次に図８を参照して、入力処理部５４０が外部メモリより読み込む設定コマンドの展開例について説明する。図８（ａ）は、システム制御部４００において、コマンドタイプＴフィールド２０６、Ｍｏｄｅフィールド２１６、アドレスフィールド２１７、データフィールド２１８を、個々のデータに対してそれぞれ明示的に展開する形式の例である。
【００６９】
展開されたコマンドの総数はＮＵＭ１０１１に記録されることで指示されている。入力処理部５４０はこれを読みこみ、送信部５２２において、Ｖａｌｉｄフラグ２１１、Ｓｔａｌｌフラグ２１２、接続ＩＤ２１３、カウント値２１４を付加してリングバスに出力することで、設定コマンドパケット２１０を生成する。
【００７０】
この形式の利点は、任意のアドレスにランダムに、書込み（Ｗ）、読出し（Ｒ）、入替え（Ｅｘ）を行うことができることであり、システム制御部４００によって柔軟に情報処理装置４２０を制御することが可能である。
【００７１】
図８（ｂ）は、システム制御部４００において、コマンドタイプＴフィールド２０６、設定先モジュールＩＤフィールド２１５、Ｍｏｄｅフィールド２１６、アドレスフィールド２１７を最初に一度だけ展開する形式の例である。そして、残りの領域にはデータのみを連続して展開する場合の形式の例である。展開したデータの総数はＮＵＭ１０１２に記録されることで指示されている。
【００７２】
この場合は、入力処理部５４０が特定の法則にしたがってＭｏｄｅフィールド２１６、アドレスフィールド２１７を更新しながらコマンド形式を整形する。例えば、特定の内部メモリ・レジスタ６０５が非常に多くのエントリを持っている場合であって、且つこのエントリを全て設定するような場合には、図８（ａ）の方式ではコマンド展開メモリ１０００のサイズが非常に大きくなってしまうことが懸念される。
【００７３】
従って、図８（ｂ）に示すようにアドレスの初期値を最初に与えておき、これを読み込んだ入力処理部５４０は、その後ＮＵＭ１０１２に示される数だけデータを順次読み込み、これに順次アドレスをインクリメント（＋１）しつつ付加する。これにより、図８（ａ）で示した場合と同じ出力を得る事が可能である。
【００７４】
この形式の利点は、上記のとおりコマンドヘッダ部分であるコマンドタイプＴフィールド２０６、設定先モジュールＩＤフィールド２１５、Ｍｏｄｅフィールド２１６、アドレスフィールド２１７を個々のデータごとにメモリ上に展開しないで済む点である。これにより、コマンド展開メモリの容量を削減できることにある。
【００７５】
図８（ｃ）は、システム制御部４００においては設定データのみを展開し、全てのコマンドヘッダ部分は入力処理部５４０ないしは送信部５２２において付加する場合の形式の例である。
【００７６】
この場合、入力処理部５４０は、予め固定的に設定先モジュールＩＤフィールド２１５、Ｍｏｄｅフィールド２１６、アドレスフィールド２１７の値を内部に持つか、コマンドとはまったく異なる設定方法によって予めそれらを与えられている。これらの情報を用いて、データのみを読み出しつつコマンドヘッダ部分を作成して出力する。
【００７７】
この形式の利点は、本来の設定データバッファに、転送に関わる余計なコマンドヘッダ情報をおかずに済むことであり、データバッファとして他のソフト処理などと共通に利用可能となることである。
【００７８】
図９を参照して、本発明に係る処理の手順を示すフローチャートについて説明する。
【００７９】
ステップＳ１１０１において、設定しなければならないコマンドをＲＡＭ４０３に展開する。このときの展開形式は図８（ａ）〜図８（ｃ）で説明したいずれかの形式である。ステップＳ１１０２において、展開されたコマンドを検索し、特にＭｏｄｅフィールド２１６の内容が、書込み（Ｗ）、読出し（Ｒ）、入替え（Ｅｘ）のいずれであるかを判別しつつコマンド転送速度を決定する。そして、本処理ステップの実行結果として、送信間隔タイマ９０３の設定値を決定する。
【００８０】
ステップＳ１１０３において、ステップＳ１１０２で決定された送信間隔タイマ９０３の設定を行う。この設定は、コマンド形式で展開する場合と、別途設定方法を介して設定部５６０に指示する場合のいずれかにより実施することができる。
【００８１】
ステップＳ１１０４において、準備されたコマンドの転送開始を情報処理装置に対して指示する。ステップＳ１１０５において、処理が終了するまで待機する。ステップＳ１１０６において、処理が終了したか否かを判定する。処理が終了していないと判定された場合、ステップＳ１１０５に戻る。
【００８２】
図１０を参照して、図８（ａ）で示したコマンド展開形式に関する検索処理手順を示すフローチャートについて説明する。
【００８３】
ステップＳ１２０１において、図９のステップＳ１１０１で予め展開されているコマンド領域の先頭アドレスを設定する。
【００８４】
ステップＳ１２０２において、処理すべきコマンド数ＮＵＭ１０１１を読み取る。ステップＳ１２０３において、パケット投入間隔Ｌに初期値を設定し、かつ内部変数となる間隔候補Ｋを初期化する。
【００８５】
ステップＳ１２０４において、全てのコマンドを検索したか否かが判定される。全てのコマンドを検索したと判定された場合（ステップＳ１２０４；ＹＥＳ）、ＮＵＭ＝０と判別されて処理が終了する。一方、全てのコマンドを検索していないと判定された場合（ステップＳ１２０４；ＮＯ）、ステップＳ１２０５に進む。
【００８６】
ステップＳ１２０５において、該当する順番で書かれているコマンドのＭｏｄｅフィールド２１６を読み出す。ステップＳ１２０６において、Ｍｏｄｅフィールド２１６の内容が書込み（Ｗ）であるか否かが判定される。書込み（Ｗ）であると判定された場合（ステップＳ１２０６；ＹＥＳ）、ステップＳ１２０７に進む。一方、書込み（Ｗ）でないと判定された場合（ステップＳ１２０６；ＮＯ）、ステップＳ１２０８に進む。
【００８７】
ステップＳ１２０７において、間隔候補Ｋを１とする（第１間隔）。
【００８８】
ステップＳ１２０８において、Ｍｏｄｅフィールド２１６の内容が読出し（Ｒ）であるか否かが判定される。読出し（Ｒ）であると判定された場合（ステップＳ１２０８；ＹＥＳ）、ステップＳ１２０９に進む。一方、読出し（Ｒ）でないと判定された場合（ステップＳ１２０８；ＮＯ）、ステップＳ１２１０に進む。
【００８９】
ステップＳ１２０９において、間隔候補Ｋを２とする（第２間隔）。ステップＳ１２１０において、Ｍｏｄｅフィールド２１６の内容が入替え（Ｅｘ）であるか否かが判定される。入替え（Ｅｘ）であると判定された場合（ステップＳ１２１０；ＹＥＳ）、ステップＳ１２１１に進む。一方、入替え（Ｅｘ）でないと判定された場合（ステップＳ１２１０；ＮＯ）、ステップＳ１２１２に進む。ステップＳ１２１１において、間隔候補Ｋを３とする（第３間隔）。第１間隔よりも第２間隔の方が間隔が長く、同様に第２間隔よりも第３間隔の方が間隔が長い。
【００９０】
なお、本処理では、ループ処理の中で間隔候補Ｋの初期値を更新していない。これは、後の処理においてＫの値の大きいものを記録する判断が行われるためである。ただし、安全のためにループ処理ごとに初期値を更新してもよい。
【００９１】
ステップＳ１２１２において、いずれのコマンド形式でもない場合であり、間隔候補値Ｋを特定の間隔値Ｍとする。これは、例えば画像処理を行う際の投入間隔であってもよい。一般に、単純に設定値を設定する処理よりも、画像処理の方が処理内容は多く、プロセッサの実現の仕方によっては多くの処理時間を必要とすることがある。このような場合、設定パケットよりも処理データパケットの方がゆっくりと投入される必要がある。よって、コマンドタイプＴフィールド２０６が処理データである場合を含め、コマンド形式が未知のものである場合には、予め指定される処理間隔Ｍを用いることにより、このようなケースに対応してもよい。
【００９２】
ステップＳ１２１３において、間隔候補Ｋがパケット投入間隔Ｌよりも大きいか否かが判定される。間隔候補Ｋがパケット投入間隔Ｌよりも大きいと判定された場合（ステップＳ１２１３；ＹＥＳ）、ステップＳ１２１４に進む。一方、間隔候補Ｋがパケット投入間隔Ｌ以下であると判定された場合（ステップＳ１２１３；ＮＯ）、ステップＳ１２１５に進む。
【００９３】
ステップＳ１２１４において、パケット投入間隔Ｌの値を間隔候補Ｋで更新する。なお、パケット投入間隔Ｌ＝０と初期値を設定した場合、間隔候補Ｋがパケット投入間隔Ｌよりも大きいと判定され（ステップＳ１２１３；ＹＥＳ）、ステップＳ１２１４に進むことになる。その場合、ステップＳ１２１３の処理は省略可能である。よって、前述する他の実行中のデータ処理がない場合など、最低の転送間隔を設定する必要がない場合などでは、ステップＳ１２１３を取り外して常にステップＳ１２１４を実行するように実施してもよい。
【００９４】
ステップＳ１２１５において、残りのコマンド数を減算すると共に、次に読み出すコマンドの位置へ読み取りアドレスを更新する。その後、ステップＳ１２０４に戻る。
【００９５】
ここで、パケット投入間隔Ｌの初期値について、簡単に説明する。例えば、設定処理ではなく、画像データを処理する場合のモジュールの処理速度が３サイクル以上かかる場合を考える。この場合、設定コマンド以外のデータ、すなわち処理データは、例えば他のデータ処理が同一リング状上で互いに重複しないモジュールを用いて実行中である場合などには、当該実行中のデータトラフィックに対して影響を及ぼさない間隔で投入される必要がある。例えば、他の実行中のデータフローでは、２サイクルに一度データがリングバスに投入されており、且つ、その処理中のデータがリングバス全体の容量の５０％を使用しているとする。この場合、たとえコマンド転送が最高速度で１サイクルに１コマンドを投入できる条件であったとしても、そのようにコマンドをリングバスに投入してしまうと、他に実行中のデータフローを完全に止めてしまうことになりかねない。また、場合によってはリングバス上で帯域オーバーフローを生じてデッドロック状態を引き起こす可能性がある。
【００９６】
このようなことから、パケット投入間隔Ｌの初期値は、他に実行中のデータフローが存在するか否かによって変更される可能性があるため、ここでは値を明記しない。他に実行中のデータフローが存在しない場合には、例えば１を初期値とすることができる。処理モジュールの動作速度（例えば、駆動周波数）がリングバスの動作速度よりも遅い場合には、その比をかけた値を初期値としてもよい。
【００９７】
また、図８（ｂ）の場合は、コマンド領域の先頭に一つだけあるコマンドヘッダ情報を参照すればよい。この場合は、その後の全てのデータが同じモードで処理されるため、間隔の設定はＮＵＭ１０１２だけのコマンドに対して一律の設定でよい。同様に図８（ｃ）の場合は、別途与えられるコマンドヘッダの情報を参照すること以外は、図８（ｂ）の場合と同様である。
【００９８】
図１１を参照して、図９のステップＳ１１０３の転送速度設定処理一例を説明する。この場合、コマンド１３０１により示される、コマンド列の最初のコマンドを、速度設定用コマンドとして挿入する。この速度設定用コマンドは、予めステップＳ１１０１においてＤＡＴＡ領域１３０５を空の状態で展開しておいてもよい。
【００９９】
図９のステップＳ１１０２で決定された転送間隔を、ステップＳ１１０３の設定処理においてＤＡＴＡ領域１３０５に上書きする。なお、ＩＤ１３０２は入力処理部５４０を示すＩＤである。Ｍｏｄｅ１３０３は書込み（Ｗ）を格納している。またアドレス１３０４は、設定部５６０における送信間隔を保持する内部メモリまたはレジスタのアドレス値を保持することとなる。このアドレス１３０４は、送信部５２２の送信間隔タイマ９０３により参照されることとなる。
【０１００】
コマンド１３０１により示される速度設定用コマンドによって、他の設定コマンドに先立って転送速度を設定するコマンドを発行して、ステップＳ１１０２の間隔決定処理で決定された速度を、他のコマンドの全てに適用することが可能となる。
【０１０１】
ここに示す例のように設定を行うことにより、情報処理装置内の各モジュールに対する設定方法をコマンドフォーマットの転送のみに集約することが可能となる。一方、入出力処理を行うモジュールＡの設定は、システム制御部４００から直接アクセスして実行されてもよい。この場合は、コマンド１３０１より示される速度設定用コマンドを省略し、転送実行指示をモジュールＡに対して実行するのに先立って、送信間隔の設定が行われることとなる。
【０１０２】
全ての設定が終了した後に、画像データの処理を続けて行う場合を想定すると、コマンド転送が全て終了した際に、画像処理時の間隔にリセットしておく必要がある。このような画像処理時の間隔を設定するコマンド１３０６をコマンド列の最後に展開してもよい。
【０１０３】
（第２実施形態）
図１２を参照して、第２実施形態に係る送信間隔タイマ９０３の構成例について説明する。送信間隔タイマ９０３は、タイマ１４０１と、タイマ値保持部１４０２と、コマンド解析部１４０３と、タイマ値選択部１４０４とを備える。
【０１０４】
タイマ１４０１は、送信間隔を計測する。タイマ値保持部１４０２は、タイマ値を保持する。コマンド解析部１４０３は、これから送信するコマンドのＭｏｄｅフィールド２１６を解析する。タイマ値選択部１４０４は、コマンド解析部１４０３による解析結果に従って、設定部５６０ないし設定部１４０に複数保持されているタイマ値のうちから、適切なタイマ値を選択して、タイマ値保持部１４０２に設定する。
【０１０５】
まず、これから送信されようとするコマンドのＭｏｄｅフィールド２１６の内容がコマンド解析部１４０３に入力される。すると、コマンド解析部１４０３は、そのコマンドが書込み（Ｗ）、読出し（Ｒ）、入替え（Ｅｘ）のいずれであるかを解析して、その解析結果をタイマ値選択部１４０４に通知する。
【０１０６】
タイマ値選択部１４０４は、設定部５６０（設定部１４０）に予め保持されている、書込み（Ｗ）パケットに対する間隔値Ｌｗ、読出し（Ｒ）パケットに対する間隔値ＬＲ、入替え（Ｅｘ）パケットに対する間隔値ＬＥｘのいずれかを、コマンド解析部１４０３の解析結果に基づいて選択する。選択された値は、タイマ１４０１が所定の値に到達し、送信許可をパケット生成部９０５に通知するタイミングと同期して、タイマ値保持部１４０２に設定される。
【０１０７】
タイマ１４０１は、例えばダウンカウント動作を行う場合、タイマ値保持部１４０２に保持されているタイマ値を毎サイクル１ずつ減じていき、タイマ値が０となったところで送信許可を発生させてもよい。また、逆にアップカウントする場合には、タイマ１４０１が内部に保持するカウント値を初期値０から開始して１ずつ増やしていき、タイマ値保持部１４０２に保持されたタイマ値と同じ値に到達したら送信許可を発生させてもよい。アップカウントの場合、タイマ１４０１の内部のカウント値は送信許可を発生させた後、再び０に初期化されることとなる。
【０１０８】
このような構成をとることにより、第１実施形態で説明したような動的な検索による設定値の確定をソフトウェアで行う必要がなくなる。また、図８（ａ）のコマンド列においてＭｏｄｅフィールド２１６の値が様々に混在していても、個々のコマンドに対して自動的に最適な送信間隔で送信を行うことが可能となる。
【０１０９】
また、複数の送信間隔値Ｌｗ、ＬＲ、ＬＥｘは、信号９０７により示されるように外部から参照されるのではなく、送信間隔タイマ９０３の内部に固定的に保持されてもよい。ただし、他に実行中のデータフローによってリングバスが一定のトラフィック状態にある場合には、必ずしも適切な間隔制御ができない可能性がある。そのため、単一のデータフローのみ処理することが確定している情報処理装置において特に有効な方法である。
【０１１０】
データ処理においては、複数のモジュールが処理に関係し、かつモジュールごとに処理速度が異なることが想定される。そのため、従来は、正しくパケット投入間隔を求めるためには処理に関係する全てのモジュールの処理速度、および処理データ量の増減を考慮しなければならない。しかしながら、設定コマンドは、特定のモジュールの設定のみを行うことから、Ｍｏｄｅフィールド２１６の内容を考慮するだけで投入間隔を制御することが可能となる
（第３実施形態）
予め展開した設定コマンドを検索してパケット投入間隔を決定するのではなく、設定コマンドを展開するのと同時にその設定コマンドのコマンドタイプＴフィールド２０６を常に監視して、適宜パケット投入間隔を切替えるコマンドを挿入してもよい。
【０１１１】
図１３を参照して、第３実施形態に係る処理の手順を示すフローチャートについて説明する。
【０１１２】
ステップＳ１５０１において、設定しなければならないコマンドを生成しつつ、Ｍｏｄｅフィールド２１６の内容に応じて転送速度を決定し、ＲＡＭ４０３に展開する。このときの展開形式は図８（ａ）〜（ｃ）で説明したいずれかの形式である。
【０１１３】
ステップＳ１５０２において、準備されたコマンドの転送開始を情報処理装置に対して指示する。ステップＳ１５０３において、処理が終了するまで待機する。ステップＳ１５０４において、処理が終了したと判定されるまで、ステップＳ１５０３に戻る。
【０１１４】
図１４を参照して、第３実施形態に係るコマンド展開処理の手順を示すフローチャートについて説明する。
【０１１５】
ステップＳ１６０１において、これからコマンド展開を行うメモリ領域の先頭アドレスが設定される。ステップＳ１６０２において、設定すべきコマンド数をＮＵＭに読み取り、カウンタｉを０に初期化する。
【０１１６】
ステップＳ１６０３において、パケット投入間隔Ｌに初期値を設定し、処理中に保持する１つ前のコマンドに対する間隔設定の記録値Ｌｓの値をＬに設定し、且つ内部変数となる間隔候補Ｋを０に初期化する。
【０１１７】
ステップＳ１６０４において、カウンタｉがＮＵＭ以上であるか否かが判定される。これにより、全てのコマンドを検索したか否かが判定できる。全てのコマンドを検索したと判定された場合（ステップＳ１６０４；ＹＥＳ）、ステップＳ１６２４に進む。
【０１１８】
ステップＳ１６０５において、これから展開するコマンドが生成される。ステップＳ１６０６において、Ｍｏｄｅフィールド２１６の内容が書込み（Ｗ）であるか否かが判定される。書込み（Ｗ）であると判定された場合（ステップＳ１６０６；ＹＥＳ）、ステップＳ１６０７に進む。一方、書込み（Ｗ）でないと判定された場合（ステップＳ１６０６；ＮＯ）、ステップＳ１６０８に進む。
【０１１９】
ステップＳ１６０７において、間隔候補Ｋを１とする。ステップＳ１６０８において、Ｍｏｄｅフィールド２１６の内容が読出し（Ｒ）であるか否かが判定される。読出し（Ｒ）であると判定された場合（ステップＳ１６０８；ＹＥＳ）、ステップＳ１６０９に進む。一方、読出し（Ｒ）でないと判定された場合（ステップＳ１６０８；ＮＯ）、ステップＳ１６１０に進む。
【０１２０】
ステップＳ１６０９において、間隔候補Ｋを２とする。ステップＳ１６１０において、Ｍｏｄｅフィールド２１６の内容が入替え（Ｅｘ）であるか否かが判定される。入替え（Ｅｘ）であると判定された場合（ステップＳ１６１０；ＹＥＳ）、ステップＳ１６１に進む。一方、入替え（Ｅｘ）でないと判定された場合（ステップＳ１６１０；ＮＯ）、ステップＳ１６１２に進む。
【０１２１】
ステップＳ１６１１において、間隔候補Ｋを３とする。本処理においても、ループ処理の中で間隔候補Ｋの初期値を更新していないが、これは、Ｋの値の大きいものを記録する判断が後にあるためであり、安全のためループ処理ごとに初期値を更新してもよい。
【０１２２】
ステップＳ１６１２において、いずれのコマンド形式でもない場合であり、間隔候補値Ｋを特定の間隔値Ｍとする。これは、例えば画像処理を行う際の投入間隔であってもよい。一般に、単純に設定値を設定する処理よりも、画像処理の方が処理内容は多く、プロセッサの実現の仕方によっては多くの処理時間を必要とする。このような場合、設定パケットよりも処理データパケットの方がゆっくりと投入される必要がある。よって、コマンドタイプＴフィールド２０６が処理データである場合を含めて、コマンド形式が未知である場合には、予め指定される処理間隔Ｍを用いることにより、このようなケースに対応してもよい。
【０１２３】
ステップＳ１６１３において、間隔候補Ｋがパケット投入間隔Ｌよりも大きいか否かが判定される。間隔候補Ｋがパケット投入間隔Ｌよりも大きいと判定された場合（ステップＳ１６１３；ＹＥＳ）、ステップＳ１６１４に進む。一方、間隔候補Ｋがパケット投入間隔Ｌ以下であると判定された場合（ステップＳ１６１３；ＮＯ）、ステップＳ１６１８に進む。
【０１２４】
ステップＳ１６１４において、間隔候補Ｋが間隔現在値Ｌｓと等しいか否かが判定される。間隔候補Ｋが間隔現在値Ｌｓと等しいと判定された場合（ステップＳ１６１４；ＹＥＳ）、ステップＳ１６２２に進む。一方、間隔候補Ｋが間隔現在値Ｌｓと等しくないと判定された場合（ステップＳ１６１４；ＮＯ）、ステップＳ１６１５に進む。
【０１２５】
ステップＳ１６１５において、ここで転送速度を変更する必要があることから、間隔現在値Ｌｓに間隔候補Ｋを記録する。その後、ステップＳ１６１６に進む。
【０１２６】
ステップＳ１６１６において、間隔をＫとするコマンドを展開する。その後、ステップＳ１６１７に進む。ステップＳ１６１７において、ＮＵＭをインクリメント（＋１）した後、コマンド展開アドレスを更新する。
【０１２７】
ステップＳ１６１８において、間隔現在値Ｌｓの値がパケット投入間隔Ｌと等しいか否かが判定される。間隔現在値Ｌｓの値がパケット投入間隔Ｌと等しいと判定された場合（ステップＳ１６１８；ＹＥＳ）、ステップＳ１６２２に進む。一方、間隔現在値Ｌｓの値がパケット投入間隔Ｌと等しくないと判定された場合（ステップＳ１６１８；ＮＯ）、ステップＳ１６１９に進む。
【０１２８】
ステップＳ１６１９において、ここで転送速度を変更する必要があることから、間隔現在値Ｌｓにパケット投入間隔Ｌを記録する。その後、ステップＳ１６２０に進む。ステップＳ１６２０において、間隔をＬとするコマンドを展開する。その後、ステップＳ１６２１に進む。
【０１２９】
ステップＳ１６２１において、ＮＵＭをインクリメント（＋１）した後、コマンド展開アドレスを更新する。ステップＳ１６２２において、ステップＳ１６０５で生成されたコマンドを展開する。
【０１３０】
ステップＳ１６２３において、残りのコマンド数を減算して、次のコマンド展開位置にアドレスを更新する。その後、ステップＳ１６０４に戻る。ステップＳ１６２４において、その後実行される画像処理時における間隔Ｍを設定するコマンドが展開され、ＮＵＭはインクリメント（＋１）される。その後、ステップＳ１６２５に進む。
【０１３１】
ステップＳ１６２５において、間隔設定コマンド数を考慮した全コマンド数ＮＵＭを図８（ａ）のＮＵＭ１０１１の領域に記録する。その後、処理が終了する。
【０１３２】
このようにコマンド展開時に展開する一つ一つのコマンドに対してＭｏｄｅフィールド２１６を参照しつつ送信間隔を判断する。そして、一つ前の間隔と同じ間隔でよい場合には間隔設定コマンドを展開せず、異なる場合にのみ展開するようにすることによって、任意のコマンドシーケンスに対して精密な速度制御が可能となる。
【０１３３】
当然のことであるが、この処理においては、Ｍｏｄｅフィールド２１６の値が頻繁に変わる設定コマンド列では間隔設定コマンドが多く展開される。よって、できるだけ同一のＭｏｄｅフィールド２１６の内容を持つコマンドを集めて展開することで、間隔設定コマンドの割合を減らすことができる。
【０１３４】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005539101.tif 000002
【図２】
0005539101.tif 000003
【図３】
0005539101.tif 000004
【図４】
0005539101.tif 000005
【図５】
0005539101.tif 000006
【図６】
0005539101.tif 000007
【図７】
0005539101.tif 000008
【図８】
0005539101.tif 000009
【図９】
0005539101.tif 000010
【図１０】
0005539101.tif 000011
【図１１】
0005539101.tif 000012
【図１２】
0005539101.tif 000013
【図１３】
0005539101.tif 000014
【図１４】
0005539101.tif 000015