(57)【要約】【課題】  リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、アクセス遅延を起因とした処理速度の低下がある。【解決手段】  データ処理装置は、リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、データの処理に用いるパラメータを格納する共有メモリとを有する。ここで、モジュールは、共有メモリから取得したパラメータを格納する格納手段と、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが格納手段に格納されていない場合、共有メモリに対してパラメータの取得を要求する要求手段と、要求手段により共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、当該パラメータを用いてデータを処理する処理手段とを具備する。【選択図】  図１
2011134014.tif 000002
【特許請求の範囲】
【請求項１】
リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、
前記データの処理に用いるパラメータを格納する共有メモリと
を有し、
前記モジュールは、
前記共有メモリから取得したパラメータを格納する格納手段と、
他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、
前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する要求手段と、
前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、
前記パラメータを用いてデータを処理する処理手段と
を具備することを特徴とするデータ処理装置。
【請求項２】
前記識別手段は、
前記送信手段により前記パラメータを必要とするデータが送信された後、該データが自モジュールに戻ってきた回数を判定し、
前記処理手段は、
前記識別手段により自モジュールに予め設定されている周回値以上、前記データが戻ってきたと判定された場合、当該データを処理する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記送信手段により送信されたデータが再び自モジュールに戻ってくるまでに要する時間を第１の時間とし、前記要求手段により前記共有メモリへ前記パラメータを要求してから前記格納手段に該要求に基づくパラメータが格納されるまでに要する時間を第２の時間とした場合、前記第２の時間を前記第１の時間により除算したときに得られる商を越える自然数の中で最小の値を前記周回値として決定する
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記送信手段は、
受信したデータの周回数をカウントアップして当該データに周回数情報として付加して送信する
ことを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記送信手段は、
前記処理手段による処理が実施されたデータの前記周回数情報を初期化する
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記識別手段は、
前記周回数情報に基づいて前記データが前記リング状の複数のモジュールを周回した周回数を判定する
ことを特徴とする請求項４又は５に記載のデータ処理装置。
【請求項７】
前記複数のモジュールは、
前記共有メモリに格納されたパラメータを用いずにデータ処理を行なうモジュールを少なくとも１つ含む
ことを特徴とする請求項１乃至６のいずれか１項に記載のデータ処理装置。
【請求項８】
前記処理手段は、
前記要求手段により前記共有メモリに要求したパラメータを処理に必要とするデータを再び受信した場合に、前記格納手段に前記パラメータが格納されていれば、前記データを処理する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、前記データの処理に用いるパラメータを格納する共有メモリとを有するデータ処理装置におけるデータ処理方法であって、
前記モジュールの格納手段が、前記共有メモリから取得したパラメータを格納する工程と、
前記モジュールの識別手段が、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する工程と、
前記モジュールの要求手段が、前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する工程と、
前記モジュールの送信手段が、前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する工程と、
前記モジュールの処理手段が、前記パラメータを用いてデータを処理する工程と
を含むことを特徴とするデータ処理装置におけるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びそのデータ処理方法に関する。
【背景技術】
【０００２】
一連のデータ処理（例えば、プリント画像処理）を高速且つ効率的に行なう技術が知られている。例えば、各処理を所定の機能毎に分割してハード化し、当該ハード化されたモジュールを用いて一連のデータ処理をパイプライン的に実行する技術が知られている。
【０００３】
例えば、画像処理においては、一連の処理の順序を変えることにより処理の効率化を図れる。例えば、所定の画素数の画像を出力装置に向けて出力する場合、画素数（解像度）を合わせるために解像度変換が必要となる。入力画像の画素数が出力装置の対応している画素数よりも多い場合は、処理の上流側で解像度を変換し、画素数を減らしてから後続の処理を行なうと効率が良い。これに対して、入力画像の画素数が出力装置の対応している画素数よりも少ない場合は、解像度変換を行なわずに画素数が少ない状態で後続の処理を実施し、出力の直前（下流側）で解像度変換を行なうと効率が良い。
【０００４】
また、例えば、ある空間（例えば、入力デバイス空間）から標準的な空間（例えば、解像度６００ｐｐｉ、ＣＩＥＬＡＢ色空間）の形式にデータ変換した後、画像処理を実施し、更に別の空間（例えば、出力デバイス空間）の形式にデータ変換する場合がある。この場合、入力側と出力側の空間変換部の処理順（１次元ＬＵＴ、行列演算、３次元ＬＵＴ等の処理の順序）は逆になる。つまり、処理の順序を入れ変えることができれば、同じ処理モジュールを入力側と出力側とで共用できる。しかし、一般に、このような処理においては、処理の順序を変えることができないため、例えば、モジュールを多重に（すなわち、同じ機能のモジュールを複数）実装していた。
【０００５】
これを解決するため、各処理モジュール間をリング状のネットワーク（リングバス）で接続する技術が提案されている（特許文献１、特許文献２）。この手法によれば、リングバスにおいてデータの接続先を変更することにより、処理順序を変更できる。なお、特許文献２においては、処理モジュール各々がプロセッサにより実行されるため、各プロセッサのプログラムを変更することによっても上記変更が行なえる。
【０００６】
また、バス接続された処理モジュールにおいて、データ内に存在しない外部パラメータを用いた処理を実行する場合がある。この場合、例えば、処理モジュール内にメモリを配し、システム起動前に当該メモリ内に当該外部パラメータを設定するようにすればよい。
【０００７】
しかし、処理モジュール内にメモリを持つように構成した場合、コスト増を招いてしまう。そのため、共有メモリに外部パラメータを格納し、当該外部パラメータを用いてデータ処理を行なう技術も提案されている。この手法の場合、共有メモリにアクセスする必要があるので、不特定な遅延が発生し、連続したデータを処理する際の処理速度が低下してしまう虞がある。特に、リングバスに接続された処理モジュールにおいて、このような遅延が発生してしまうと、遅延発生以降、遅延が発生した処理モジュールでは、データを処理できなくなる。この場合、データは、リングバス上を周回しなくてはいけなくなり、処理速度が著しく低下してしまう。これを解決するため、記憶装置側で制御し遅延の増加を抑制する技術が提案されている（特許文献３、特許文献４）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０１−０２３３４０号公報
【特許文献２】特開平０１−０２９９３８号公報
【特許文献３】特開平７−３１９７５５号公報
【特許文献４】特開２００５−２４２４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来の手法（特許文献３、特許文献４）においては、複数の共有メモリ全てに対して遅延の増加を抑制する制御（又は回路）を施さなければならない。共有メモリ全てにこのような制御を行なうように構成した場合、回路規模やコストが増大する。
【００１０】
本発明は、上記課題に鑑みてなされたものであり、リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、簡単な構成でアクセス遅延を起因とした処理速度の低下を抑制するようにした技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明の一態様によるデータ処理装置は、リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、前記データの処理に用いるパラメータを格納する共有メモリとを有し、前記モジュールは、前記共有メモリから取得したパラメータを格納する格納手段と、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する要求手段と、前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、前記パラメータを用いてデータを処理する処理手段とを具備することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、簡単な構成でアクセス遅延を起因とした処理速度の低下を抑制させられる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施の形態に係わるデータ処理装置８０の構成の一例を示す図。
【図２】図１に示すリングバス４１上を流れるデータの構成の一例を示す図。
【図３】図１に示す第１の処理モジュール３０の構成の一例を示す図。
【図４】図１に示す第２の処理モジュール２０の構成の一例を示す図。
【図５】第１の処理モジュール３０の処理の流れの一例を示すフローチャート。
【図６】図１に示すデータ処理装置８０における処理の一例を示すシーケンスチャート。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【００１５】
（実施形態１）
図１は、本発明の一実施の形態に係わるデータ処理装置８０の構成の一例を示す図である。
【００１６】
データ処理装置８０には、入出力モジュール１０と、第１の処理モジュール３０（３０ａ、３０ｂ）と、第２の処理モジュール２０（２０ａ〜２０ｃ）とがリング状に接続されている。これらモジュール（１０、２０、３０）は、リングバス４１を介して通信可能に接続される。この場合、第１の処理モジュール３０及び第２の処理モジュール２０は、それぞれ複数設けられている。また、各モジュールは、一方のモジュールからデータを受信し、自モジュールで処理すべきものについては処理して他方のモジュールへ送信するように構成されている。ここで、自モジュールで処理すべきでないものはそのまま他方のモジュールへ送信する。
【００１７】
また、データ処理装置８０には、各モジュール（１０、２０、３０）における動作を統括制御する制御部４２と、共有メモリ４３とが具備される。図１の場合、共有メモリ４３は、１つしか示されていないが、複数設けてもよい。
【００１８】
共有メモリ４３は、第１の処理モジュール３０の外部に設けられた外部メモリであり、第１の処理モジュール３０により共有して使用される。共有メモリ４３には、例えば、第１の処理モジュール３０がデータ処理に用いるパラメータが格納されている。第１の処理モジュール３０が共有メモリ４３からパラメータを取得（読み出し）する場合、その取得に要する時間は、必ずしも一定ではない（短い場合もあれば多い場合もある）。
【００１９】
入出力モジュール１０は、データをリングバス４１に入出力する。第１の処理モジュール３０及び第２の処理モジュール２０は、予め定められた順番に従って入出力モジュール１０により入力されたデータに対してデータ処理（例えば、解像度変換等の画像処理）を行なう。
【００２０】
ここで、本実施形態に係わるデータ処理装置８０の説明を分かり易くするために、データ処理手順の一例について簡単に説明する。なお、説明の便宜上、処理モジュール２０ａ→２０ｃ→３０ａの順番でデータ処理が行なわれ、第２の処理モジュール２０ｂ及び第１の処理モジュール３０ｂにおいては、データ処理を行なわないものとする。
【００２１】
データは、入出力モジュール１０からリングバス４１に出力される。リングバス４１に出力されたデータは、最初にデータ処理を行なう第２の処理モジュール２０ａに入力される。第２の処理モジュール２０ａにおいて処理されたデータは、再び、リングバス４１に出力され、次にデータ処理を行なう第２の処理モジュール２０ｃに入力される。第２の処理モジュール２０ｃにおいて処理されたデータは、再び、リングバス４１に出力され、次にデータ処理を行なう第１の処理モジュール３０ａに入力される。
【００２２】
ここで、第１の処理モジュール３０ａは、共有メモリ４３に対してパラメータの取得を要求し、当該データに対する処理は行なわず、そのままデータをリングバス４１に出力する。その後、第１の処理モジュール３０ａから出力されたデータは、リングバス４１上を周回して再度、第１の処理モジュール３０ａに入力される。当該データの周回中に、第１の処理モジュール３０ａは、共有メモリ４３からのパラメータの取得が完了している。
【００２３】
リングバス４１上を周回したデータは、所定回数周回した後、再度、第１の処理モジュール３０ａに入力される。すると、第１の処理モジュール３０ａは、当該データの周回中に共有メモリ４３から取得したパラメータを用いて当該データを処理する。そして、処理後のデータをリングバス４１に出力する。その後、第１の処理モジュール３０ａにより処理されたデータは、入出力モジュール１０に入力される。入出力モジュール１０は、当該処理後のデータを外部に出力する。これにより、入力データに対する一連の処理が終了する。
【００２４】
ここで、図２を用いて、図１に示すリングバス４１上を流れるデータ（パケット）の構成の一例について説明する。
【００２５】
パケット５０は、ｖａｌｉｄフラグ５１と、ｓｔａｌｌフラグ５２と、接続ＩＤ５３と、カウント値（ＣＮＴ）５４と、周回数（ＬＰ）５５と、データ５６とを有する。
【００２６】
ｖａｌｉｄフラグ５１は、当該パケット５０が有効であるか否かを示す情報であり、ｓｔａｌｌフラグ５２は、当該パケット５０が保留状態であるか否かを示す情報である。接続ＩＤ５３は、データの論理的な接続を識別するのに用いられる識別情報であり、カウント値（ＣＮＴ）５４は、データの送信順を示す情報である。周回数５５は、周回数（ＬＰ：ループ回数）を示す情報であり、データ５６は、データ本体部を示す情報である。
【００２７】
なお、ｖａｌｉｄフラグ５１、ｓｔａｌｌフラグ５２、接続ＩＤ５３、カウント値（ＣＮＴ）５４に対しては、第１の処理モジュール３０や第２の処理モジュール２０、入出力モジュール１０により適宜値が設定される。周回数５５に対しては、データがリングバス４１上を周回（１ループ）する都度、第２の処理モジュール２０により値（ＬＰ＝ＬＰ＋１）が設定される。
【００２８】
次に、図３を用いて、図１に示す第１の処理モジュール３０（３０ａ、３０ｂ）の構成の一例について説明する。すなわち、共有メモリ４３にアクセスする処理モジュールについて説明する。
【００２９】
第１の処理モジュール３０は、その機能的な構成として、通信部３１と、パラメータ要求部３２と、処理部３３と、パラメータ格納部３４とを具備する。
【００３０】
通信部３１は、データの通信を制御する。具体的には、リングバス４１から自モジュールにデータを入力したり、処理後のデータをリングバス４１に出力したりする。通信部３１は、識別部３５と、送信部３６とを有する。送信部３６は、入力カウンタ３７と、出力カウンタ３８と、情報設定部３９とを具備する。
【００３１】
パラメータ要求部３２は、共有メモリ４３に対してメモリアクセスの要求を行ない、当該メモリ４３内に格納されたパラメータを要求する。パラメータ格納部３４は、パラメータ要求部３２によるパラメータの要求に基づいて取得されたパラメータを格納する。なお、ここでいうパラメータには、データ処理に用いる参照値（変数や設定値、ルックアップテーブルなど）そのものと、当該データ処理に用いる参照値に対応するカウント値（入力データにおけるカウント値（ＣＮＴ）５４）とが含まれる。すなわち、パラメータ格納部３４には、参照値とカウント値との組み合わせがパラメータとして複数格納される。処理部３３は、パラメータ格納部３４に格納されたパラメータを取得し、当該パラメータを用いてデータ処理を行なう。
【００３２】
識別部３５は、データが自モジュールに入力されると、パラメータ要求部３２によるメモリアクセス要求（パラメータ要求）処理と、処理部３３によるデータ処理とのいずれかを選択的に実行させる。具体的には、パラメータを用いる処理が必要な処理対象のデータが最初に自モジュール（第１の処理モジュール３０）に入力された時には、パラメータ要求部３２によるメモリアクセス要求を機能させる。また、処理対象のデータが所定周リングバス４１を周回した後に自モジュール（第１の処理モジュール３０）に入力された時には（後述の周回値に達した時（周回値以上））、処理部３３によるデータ処理を機能させる。なお、周回値に達した時は、メモリアクセスを要求したデータが所定回数、自モジュールに戻って来た場合に相当する。この処理を実現するため、識別部３５には、周回値を保持する周回値保持部３５１と、入力データ内の周回数情報（周回数（ＬＰ）５５）に基づいて当該データの周回数を判定するデータ判定部３５２とが設けられる。なお、周回値保持部３５１に保持される周回値は、メモリアクセス要求した後、データをリングバス４１に周回させる周回数の指標を示す。
【００３３】
なお、周回値は、制御部４２により予め算出しておく。周回値の算出では、まず、第１の処理モジュール３０が処理に必要なパラメータを取得（読み込む）するのに要する最大時間を求める。そして、この最大時間を越えるような最小のリングバス周回数を求め、それを周回値とする。例えば、リングバス４１上をデータが１周するのに要する時間がａ（第１の時間）であり、共有メモリ４３からパラメータを取得するのに要する最大時間がｂ（第２の時間）であり、周回値がｓであるとする。この場合、ｓ＞ｂ／ａ（ｓは自然数）となる。ｂ／ａ（第２の時間を第１の時間により除算したときに得られる商）を越える最小の自然数を周回値ｓとして決定するのが望ましい。
【００３４】
入力カウンタ３７は、入力（受信）したデータの数をカウントする。出力カウンタ３８は、出力（送信）したデータの数をカウントする。情報設定部３９は、入力データ（処理対象のデータ）のヘッダ部（符号５１〜符号５５）に対して設定情報を設定する。例えば、図２に示す符号５１〜符号５５に対して情報を設定したり、変更したりする。
【００３５】
次に、図４を用いて、図１に示す第２の処理モジュール２０（２０ａ〜２０ｃ）の構成の一例について説明する。
【００３６】
第２の処理モジュール２０は、その機能的な構成として、通信部２１と、処理部２５とを有する。
【００３７】
通信部２１は、データの通信を制御する。具体的には、リングバス４１から自モジュールにデータを入力したり、処理後のデータをリングバス４１に出力したりする。通信部２１は、入力カウンタ２２と、出力カウンタ２３と、情報設定部２４とを具備する。入力カウンタ２２は、入力（受信）したデータの数をカウントする。出力カウンタ２３は、出力（送信）したデータの数をカウントする。情報設定部２４は、入力データ（処理対象のデータ）のヘッダ部（符号５１〜符号５５）に対して設定情報を設定する。例えば、図２に示す符号５１〜符号５５に対して情報を設定したり、変更したりする。処理部２５は、入力データに対して各種処理を実行する。
【００３８】
ここで、図５を用いて、図１に示す第１の処理モジュール３０における処理の流れの一例について説明する。
【００３９】
第１の処理モジュール３０は、通信部３１において、データを入力（受信）すると（Ｓ１０１でＹＥＳ）、当該データが処理対象データであるか否かの判定を行なう。具体的には、データ判定部３５２において、入力データのｖａｌｉｄフラグ５１を参照し、当該データが有効であるか否かを確認する。有効であれば、データ判定部３５２は更に、当該入力データの接続ＩＤ５３を参照し、当該接続ＩＤが自モジュール（第１の処理モジュール３０）の接続ＩＤとなっているか否かを確認する。
【００４０】
処理対象のデータでなければ（Ｓ１０２でＮＯ）、第１の処理モジュール３０は、再度、Ｓ１０１の処理に戻り、データ待ち状態となる。処理対象のデータであれば（Ｓ１０２でＹＥＳ）、第１の処理モジュール３０は、データ判定部３５２において、入力データの周回数（ＬＰ）５５を参照し、最初の周回目のデータ（１度も周回していないデータ）であるか否かを判定する。なお、処理対象でないデータは、通信部２１が、そのままリングバス４１へ出力する。図５に示すＳ１０１及びＳ１０２の処理は、第２の処理モジュール２０でも同様に行なわれる。
【００４１】
判定の結果、入力データが最初の周回目（ＬＰ＝０）であれば（Ｓ１０３でＹＥＳ）、第１の処理モジュール３０は、識別部３５において、入力データのカウント値（ＣＮＴ）５４が入力カウンタ３７の値と等しいか否かの判定を行なう。これにより、第１の処理モジュール３０は、正しい順序でデータが流れているか否かを確認できる。
【００４２】
正しい順序通りのデータであれば（Ｓ１０５でＹＥＳ）、第１の処理モジュール３０の識別部３５は、パラメータ要求部３２を機能させ、共有メモリ４３へメモリアクセスの要求を行なう（Ｓ１０５）。これにより、共有メモリ４３にアクセスしパラメータを読み出した後、共有メモリ４３に格納されたパラメータが第１の処理モジュール３０のパラメータ格納部３４に格納されることになる。なお、上述した通り、このパラメータの取得には、時間を要する。
【００４３】
メモリアクセス要求を行なった後、第１の処理モジュール３０は、情報設定部３９において、入力データの周回数（ＬＰ）５５を「１」加算する（Ｓ１０６）。すなわち、入力データの周回数（ＬＰ）５５を「１」カウントアップして付加する。
【００４４】
また、第１の処理モジュール３０は、入力カウンタ３７において、内部カウンタの値を「１」加算した後、情報設定部３９において、入力データのカウント値（ＣＮＴ）５４を「１」加算する（Ｓ１０７）。その後、第１の処理モジュール３０は、情報設定部３９において、入力データのｓｔａｌｌフラグ５２に「１（フラグオン）」を設定するとともに（Ｓ１０８）、通信部３１において、当該入力データをリングバス４１に出力する（Ｓ１０９）。そして、再度、Ｓ１０１の処理に戻り、データ待ち状態となる。
【００４５】
Ｓ１０４の判定の結果、正しい順序通りのデータでなければ（Ｓ１０４でＮＯ）、第１の処理モジュール３０は、情報設定部３９において、入力データのｓｔａｌｌフラグ５２に「１（フラグオン）」を設定する（Ｓ１０８）。そして、通信部３１において、当該入力データをリングバス４１に出力する（Ｓ１０９）。その後、第１の処理モジュール３０は、再度、Ｓ１０１の処理に戻り、データ待ち状態となる。
【００４６】
また、Ｓ１０３の判定の結果、入力データが最初の周回数でなければ（Ｓ１０３でＮＯ）、第１の処理モジュール３０は、データ判定部３５２において、当該入力データの周回数（ＬＰ）５５と周回値保持部３５１に保持された周回値（所定周回数）とを比較する。これにより、入力データの周回数が、所定周回数に達しているか否かの判定を行なう。
【００４７】
判定の結果、データの周回数が所定周回数に達していなければ（Ｓ１１０でＹＥＳ）、第１の処理モジュール３０は、情報設定部３９において、入力データの周回数（ＬＰ）５５を「１」加算する（Ｓ１０６）。そして、入力カウンタ３７において、内部カウンタの値を「１」加算した後、情報設定部３９において、入力データのカウント値（ＣＮＴ）５４を「１」加算する（Ｓ１０７）。その後、第１の処理モジュール３０は、情報設定部３９において、入力データのｓｔａｌｌフラグ５２に「１（フラグオン）」を設定するとともに（Ｓ１０８）、通信部３１において、当該入力データをリングバス４１に出力する（Ｓ１０９）。そして、再度、Ｓ１０１の処理に戻り、データ待ち状態となる。つまり、共有メモリ４３からのパラメータの取得が完了していないと考えられるので、そのパラメータを取得するまでの間、データを周回させる。これにより、データの周回の間に、第１の処理モジュール３０は、他のデータを処理することができる（後述のアクセスタイムの確保に相当する）。また、パラメータを取得するまで第１の処理モジュール３０内に、データを留めておく必要もなくなる。
【００４８】
一方、データの周回が所定周回数に達していれば（Ｓ１１０でＮＯ）、第１の処理モジュール３０の識別部３５は、処理部３３を機能させ、データ処理を実行させる。これにより、第１の処理モジュール３０は、処理部３３において、パラメータ格納部３４に格納されたパラメータを用いて入力データを処理する（Ｓ１１１）。なお、上述した通り、パラメータ格納部３４に格納されたパラメータは、カウント値と対応付けられており、処理部３３においては、入力カウンタ３７のカウント値と対応付けられているパラメータを用いてデータを処理する。
【００４９】
データ処理が済むと、第１の処理モジュール３０は、情報設定部３９において、処理後のデータのｓｔａｌｌフラグ５２を「０（フラグオフ）」に戻す（Ｓ１１２）。また、当該データの接続ＩＤを次の処理モジュールのＩＤに変更し（Ｓ１１３）、当該データの周回数（ＬＰ）５５を初期値「０」に戻す（すなわち、初期化する）。また、このとき、第１の処理モジュール３０は、出力カウンタ３８において、内部カウンタを「１」加算する（Ｓ１１４）。
【００５０】
その後、第１の処理モジュール３０は、通信部３１において、当該処理後のデータをリングバス４１に出力する（Ｓ１１５）。これにより、第１の処理モジュール３０による処理が終了し、処理後のデータは、他の処理モジュールにより処理されるか、又は入出力モジュール１０により外部に出力される。
【００５１】
ここで、図６を用いて、図１に示すデータ処理装置８０における処理の全体動作について具体例を挙げて説明する。ここでは、説明を分かり易くするため、以下の条件時における動作について説明する。
【００５２】
１）第２の処理モジュール２０におけるデータ処理時間、第１の処理モジュール３０におけるパラメータを用いたデータ処理時間は、全て「４」サイクルとする。
【００５３】
２）第１の処理モジュール３０が、共有メモリ４３からパラメータを取得するのに要する時間を「２〜４（遅延時間０〜２＋取得時間２）」サイクルとする。
【００５４】
３）データは、「１」サイクルで次のモジュールに移動するものとする。また、入出力モジュール１０からは、「４」サイクル間隔で新たなデータがリングバス４１に出力されるとする。第２の処理モジュール２０及び第１の処理モジュール３０からリングバス４１へは、常に、データを出力できるとする。
【００５５】
４）その他の処理時間、例えば、通信部２１と処理部２５との間で行なうデータ送受信の時間、パラメータ要求部３２によりパラメータ要求を行なう時間は、上記処理時間と比べて微量であるため「０」サイクルとする。また、例えば、通信部３１と、パラメータ要求部３２及び処理部３３との間で行なうデータ送受信の時間、処理部３３がパラメータ格納部３４からパラメータを取得するのに要する時間も上記処理時間と比べて微量であるため「０」サイクルとする。
【００５６】
５）処理モジュール２０ａ→２０ｃ→３０ａの順番でデータ処理を行なうものとし、第２の処理モジュール２０ｂ、第１の処理モジュール３０ｂでは処理を行なわないとする。
【００５７】
以下、図６を参照して説明する。この処理が開始されると、データ処理装置８０は、まず、制御部４２おいて、周回値（所定周回数）を求める。ここで、データ処理装置８０には、入出力モジュール１０、３個の第２の処理モジュール２０、２個の第１の処理モジュール３０が設けられるため、データがリングバス４１を１周するのに要する時間は、「６」サイクルとなる。また、共有メモリ４３からパラメータを取得するのに要する最大時間は、「４」サイクルであるので、当該最大時間を越える値の中で最小となるリングバス４１の周回数は「１」である。そのため、第１の処理モジュール３０における周回値保持部３５１には、「１」が設定される。
【００５８】
ここで、入出力モジュール１０は、リングバス４１にデータを出力する。このデータは、「１」サイクル後に第２の処理モジュール２０ａに入力される（Ｓ２０１）。第２の処理モジュール２０ａにおいては、当該データを処理する（Ｓ２０２）。当該処理モジュール２０ａにおけるデータ処理時間は、上述した通り、「４」サイクルであるので、第２の処理モジュール２０ａに入力されたデータは、「４」サイクル後、リングバス４１に出力される。なお、入出力モジュール１０は、「４」サイクル間隔で新たなデータをリングバス４１に出力するため、入出力モジュール１０は、当該Ｓ２０２の処理中に、次のデータ（Ｎ＋１番目）を第２の処理モジュール２０ａに向けて出力する。
【００５９】
第２の処理モジュール２０ａからリングバス４１に出力されたデータは、第２の処理モジュール２０ｂを経て「２」サイクル後に第２の処理モジュール２０ｃに入力される（Ｓ２０３及びＳ２０４）。
【００６０】
第２の処理モジュール２０ｃにおいては、当該データを処理する（Ｓ２０５）。当該処理モジュール２０ｃにおけるデータ処理時間は、上述した通り、「４」サイクルであるので、第２の処理モジュール２０ｃに入力されたデータは、「４」サイクル後、リングバス４１に出力される。
【００６１】
第２の処理モジュール２０ｃからリングバス４１に出力されたデータは、「１」サイクル後に第１の処理モジュール３０ａに入力される（Ｓ２０６）。ここで、第１の処理モジュール３０ａは、パラメータ要求部３２において、メモリアクセスの要求を実施し、共有メモリ４３からパラメータを要求する。なお、パラメータ要求に要する時間は、上述した通り、「０」サイクルである。また、このとき、データの接続ＩＤが第１の処理モジュール３０ａに設定される。そのため、当該データは、リングバス４１を所定回数周回した後（この場合、周回値が「１」であるため、１周後）、再度、第１の処理モジュール３０ａに入力されることになる。
【００６２】
その後、第１の処理モジュール３０ａは、リングバス４１にデータを出力する（Ｓ２０９）。このデータは、第１の処理モジュール３０ｂ、入出力モジュール１０、第２の処理モジュール２０（２０ａ〜２０ｃ）を経た後、再度、第１の処理モジュール３０ａに入力される（Ｓ２１０〜Ｓ２１４）。なお、データの周回中に、Ｓ２０７によるデータ要求に伴ったパラメータの読み出しが最大「４」サイクルの時間をかけて完了している（Ｓ２０８）。これにより、データ周回後、再度、第１の処理モジュール３０ａにデータが入力された際には、第１の処理モジュール３０ａのパラメータ格納部３４には、パラメータが格納された状態となっている。
【００６３】
ここで、第１の処理モジュール３０ａは、処理部３３において、パラメータ格納部３４に格納されたパラメータを用いて入力データを処理する（Ｓ２１５）。当該処理モジュール３０ａにおけるデータ処理時間は、上述した通り、「４」サイクルであるので、第１の処理モジュール３０ａに入力されたデータは、「４」サイクル後、リングバス４１に出力される。
【００６４】
その後、第１の処理モジュール３０ａからリングバス４１に出力されたデータは、第１の処理モジュール３０ｂを経て「２」サイクル後に入出力モジュール１０へ入力される。そして、入出力モジュール１０は、当該データに対する処理が終了しているため、当該データを外部に出力する。
【００６５】
ここで、データ処理装置８０（リングバス４１）における全体の処理時間を考える。入出力モジュール１０からリングバス４１にデータが出力された時点から、当該データに対する処理が終了した後、再度、入出力モジュール１０に戻ってくるまでの処理時間は、「２４」サイクルである。
【００６６】
すなわち、各処理対象データ毎に、リングバス１周（６サイクル）＋第２の処理モジュール２０ａ（４サイクル）＋第２の処理モジュール２０ｃ（４サイクル）＋第１の処理モジュール３０ａ（１０サイクル）の処理が行なわれる。なお、第１の処理モジュール３０ａにおける処理時間の内訳は、パラメータ要求（０サイクル）＋リングバス１周（６サイクル）＋パラメータを用いたデータ処理（４サイクル）となる。
【００６７】
ここで、上述した制御（アクセスタイム確保の制御）を行なわない場合におけるリングバス全体の処理時間を考える。この場合、共有メモリにアクセスする処理モジュールの処理時間は、パラメータを用いたデータ処理（４サイクル）＋パラメータ取得処理（遅延時間０〜２サイクル＋パラメータ取得時間２サイクル）により、「６〜８」サイクル必要となる。そのため、共有メモリにアクセスする処理モジュールにおいては、データが入力されてから「６〜８」サイクルの間、他のデータを処理することができない。この場合、当該処理できないデータは、再び、リングバスをループすることになるので、入出力モジュールからのデータ入力間隔は、少なくとも「８」サイクル必要となる。
【００６８】
そのため、最初のデータの処理時には、「２２」サイクルで済むが、８サイクル間隔で各データを処理していくため、総合的な処理時間としては、上記実施形態の場合よりも多くの時間が掛かってしまう。なお、１つのデータに対する処理の内訳は、リングバス１周（６サイクル）＋共有メモリ非アクセスの処理モジュール（４サイクル）＋共有メモリ非アクセスの処理モジュール（４サイクル）＋共有メモリにアクセスする処理モジュール（８サイクル）になる。
【００６９】
最後に、まとめとして、上記アクセスタイム確保の制御を行なわない場合と行なう場合とでは、１番目のデータの処理が終わるまでの時間は、「２」サイクル分、アクセスタイム確保の制御を行なう場合の方が遅い。しかし、アクセスタイム確保の制御を行なうようにした場合、データの処理間隔が、アクセスタイム確保の制御を行なわない場合よりも短いため、全体としての処理時間を短くでき、処理速度の低下を抑制できる。
【００７０】
以上説明したように本実施形態によれば、リングバス上でデータを周回させることにより共有メモリへのアクセスタイムを確保（隠蔽）する。
【００７１】
なお、上述した実施形態では、周回値に達するまでデータを周回させる場合を例に挙げて説明したが、これに限られない。例えば、データは、少なくとも１周、周回させれば１周分のアクセスタイムを隠蔽することができる。そのため、場合によっては、パラメータの取得が済んでいなくても、データの周回を止め、第１の処理モジュール３０内にデータを留めるようにしてもよい。
【００７２】
また、上述した実施形態では、周回させたデータが、再び、自モジュールに戻ってくる回数（リングバス４１を周回する回数）をカウントし、その回数が周回値に達するまでデータを周回させていたが、これに限られない。例えば、識別部３５において、パラメータ格納部３４を参照し、共有メモリ４３からパラメータ格納部３４にパラメータが格納された時点でデータの周回を止め、データ処理を実施するようにしてもよい。
【００７３】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ、ＧＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011134014.tif 000003
【図２】
2011134014.tif 000004
【図３】
2011134014.tif 000005
【図４】
2011134014.tif 000006
【図５】
2011134014.tif 000007
【図６】
2011134014.tif 000008