説明

データ処理装置及びそのデータ処理方法

【課題】
リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、アクセス遅延を起因とした処理速度の低下がある。
【解決手段】
データ処理装置は、リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、データの処理に用いるパラメータを格納する共有メモリとを有する。ここで、モジュールは、共有メモリから取得したパラメータを格納する格納手段と、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが格納手段に格納されていない場合、共有メモリに対してパラメータの取得を要求する要求手段と、要求手段により共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、当該パラメータを用いてデータを処理する処理手段とを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びそのデータ処理方法に関する。
【背景技術】
【0002】
一連のデータ処理(例えば、プリント画像処理)を高速且つ効率的に行なう技術が知られている。例えば、各処理を所定の機能毎に分割してハード化し、当該ハード化されたモジュールを用いて一連のデータ処理をパイプライン的に実行する技術が知られている。
【0003】
例えば、画像処理においては、一連の処理の順序を変えることにより処理の効率化を図れる。例えば、所定の画素数の画像を出力装置に向けて出力する場合、画素数(解像度)を合わせるために解像度変換が必要となる。入力画像の画素数が出力装置の対応している画素数よりも多い場合は、処理の上流側で解像度を変換し、画素数を減らしてから後続の処理を行なうと効率が良い。これに対して、入力画像の画素数が出力装置の対応している画素数よりも少ない場合は、解像度変換を行なわずに画素数が少ない状態で後続の処理を実施し、出力の直前(下流側)で解像度変換を行なうと効率が良い。
【0004】
また、例えば、ある空間(例えば、入力デバイス空間)から標準的な空間(例えば、解像度600ppi、CIELAB色空間)の形式にデータ変換した後、画像処理を実施し、更に別の空間(例えば、出力デバイス空間)の形式にデータ変換する場合がある。この場合、入力側と出力側の空間変換部の処理順(1次元LUT、行列演算、3次元LUT等の処理の順序)は逆になる。つまり、処理の順序を入れ変えることができれば、同じ処理モジュールを入力側と出力側とで共用できる。しかし、一般に、このような処理においては、処理の順序を変えることができないため、例えば、モジュールを多重に(すなわち、同じ機能のモジュールを複数)実装していた。
【0005】
これを解決するため、各処理モジュール間をリング状のネットワーク(リングバス)で接続する技術が提案されている(特許文献1、特許文献2)。この手法によれば、リングバスにおいてデータの接続先を変更することにより、処理順序を変更できる。なお、特許文献2においては、処理モジュール各々がプロセッサにより実行されるため、各プロセッサのプログラムを変更することによっても上記変更が行なえる。
【0006】
また、バス接続された処理モジュールにおいて、データ内に存在しない外部パラメータを用いた処理を実行する場合がある。この場合、例えば、処理モジュール内にメモリを配し、システム起動前に当該メモリ内に当該外部パラメータを設定するようにすればよい。
【0007】
しかし、処理モジュール内にメモリを持つように構成した場合、コスト増を招いてしまう。そのため、共有メモリに外部パラメータを格納し、当該外部パラメータを用いてデータ処理を行なう技術も提案されている。この手法の場合、共有メモリにアクセスする必要があるので、不特定な遅延が発生し、連続したデータを処理する際の処理速度が低下してしまう虞がある。特に、リングバスに接続された処理モジュールにおいて、このような遅延が発生してしまうと、遅延発生以降、遅延が発生した処理モジュールでは、データを処理できなくなる。この場合、データは、リングバス上を周回しなくてはいけなくなり、処理速度が著しく低下してしまう。これを解決するため、記憶装置側で制御し遅延の増加を抑制する技術が提案されている(特許文献3、特許文献4)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開平01−023340号公報
【特許文献2】特開平01−029938号公報
【特許文献3】特開平7−319755号公報
【特許文献4】特開2005−242408号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来の手法(特許文献3、特許文献4)においては、複数の共有メモリ全てに対して遅延の増加を抑制する制御(又は回路)を施さなければならない。共有メモリ全てにこのような制御を行なうように構成した場合、回路規模やコストが増大する。
【0010】
本発明は、上記課題に鑑みてなされたものであり、リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、簡単な構成でアクセス遅延を起因とした処理速度の低下を抑制するようにした技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するため、本発明の一態様によるデータ処理装置は、リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、前記データの処理に用いるパラメータを格納する共有メモリとを有し、前記モジュールは、前記共有メモリから取得したパラメータを格納する格納手段と、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する要求手段と、前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、前記パラメータを用いてデータを処理する処理手段とを具備することを特徴とする。
【発明の効果】
【0012】
本発明によれば、リングバスに接続された複数の処理モジュールにより各種処理を実行する構成において、簡単な構成でアクセス遅延を起因とした処理速度の低下を抑制させられる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施の形態に係わるデータ処理装置80の構成の一例を示す図。
【図2】図1に示すリングバス41上を流れるデータの構成の一例を示す図。
【図3】図1に示す第1の処理モジュール30の構成の一例を示す図。
【図4】図1に示す第2の処理モジュール20の構成の一例を示す図。
【図5】第1の処理モジュール30の処理の流れの一例を示すフローチャート。
【図6】図1に示すデータ処理装置80における処理の一例を示すシーケンスチャート。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。
【0015】
(実施形態1)
図1は、本発明の一実施の形態に係わるデータ処理装置80の構成の一例を示す図である。
【0016】
データ処理装置80には、入出力モジュール10と、第1の処理モジュール30(30a、30b)と、第2の処理モジュール20(20a〜20c)とがリング状に接続されている。これらモジュール(10、20、30)は、リングバス41を介して通信可能に接続される。この場合、第1の処理モジュール30及び第2の処理モジュール20は、それぞれ複数設けられている。また、各モジュールは、一方のモジュールからデータを受信し、自モジュールで処理すべきものについては処理して他方のモジュールへ送信するように構成されている。ここで、自モジュールで処理すべきでないものはそのまま他方のモジュールへ送信する。
【0017】
また、データ処理装置80には、各モジュール(10、20、30)における動作を統括制御する制御部42と、共有メモリ43とが具備される。図1の場合、共有メモリ43は、1つしか示されていないが、複数設けてもよい。
【0018】
共有メモリ43は、第1の処理モジュール30の外部に設けられた外部メモリであり、第1の処理モジュール30により共有して使用される。共有メモリ43には、例えば、第1の処理モジュール30がデータ処理に用いるパラメータが格納されている。第1の処理モジュール30が共有メモリ43からパラメータを取得(読み出し)する場合、その取得に要する時間は、必ずしも一定ではない(短い場合もあれば多い場合もある)。
【0019】
入出力モジュール10は、データをリングバス41に入出力する。第1の処理モジュール30及び第2の処理モジュール20は、予め定められた順番に従って入出力モジュール10により入力されたデータに対してデータ処理(例えば、解像度変換等の画像処理)を行なう。
【0020】
ここで、本実施形態に係わるデータ処理装置80の説明を分かり易くするために、データ処理手順の一例について簡単に説明する。なお、説明の便宜上、処理モジュール20a→20c→30aの順番でデータ処理が行なわれ、第2の処理モジュール20b及び第1の処理モジュール30bにおいては、データ処理を行なわないものとする。
【0021】
データは、入出力モジュール10からリングバス41に出力される。リングバス41に出力されたデータは、最初にデータ処理を行なう第2の処理モジュール20aに入力される。第2の処理モジュール20aにおいて処理されたデータは、再び、リングバス41に出力され、次にデータ処理を行なう第2の処理モジュール20cに入力される。第2の処理モジュール20cにおいて処理されたデータは、再び、リングバス41に出力され、次にデータ処理を行なう第1の処理モジュール30aに入力される。
【0022】
ここで、第1の処理モジュール30aは、共有メモリ43に対してパラメータの取得を要求し、当該データに対する処理は行なわず、そのままデータをリングバス41に出力する。その後、第1の処理モジュール30aから出力されたデータは、リングバス41上を周回して再度、第1の処理モジュール30aに入力される。当該データの周回中に、第1の処理モジュール30aは、共有メモリ43からのパラメータの取得が完了している。
【0023】
リングバス41上を周回したデータは、所定回数周回した後、再度、第1の処理モジュール30aに入力される。すると、第1の処理モジュール30aは、当該データの周回中に共有メモリ43から取得したパラメータを用いて当該データを処理する。そして、処理後のデータをリングバス41に出力する。その後、第1の処理モジュール30aにより処理されたデータは、入出力モジュール10に入力される。入出力モジュール10は、当該処理後のデータを外部に出力する。これにより、入力データに対する一連の処理が終了する。
【0024】
ここで、図2を用いて、図1に示すリングバス41上を流れるデータ(パケット)の構成の一例について説明する。
【0025】
パケット50は、validフラグ51と、stallフラグ52と、接続ID53と、カウント値(CNT)54と、周回数(LP)55と、データ56とを有する。
【0026】
validフラグ51は、当該パケット50が有効であるか否かを示す情報であり、stallフラグ52は、当該パケット50が保留状態であるか否かを示す情報である。接続ID53は、データの論理的な接続を識別するのに用いられる識別情報であり、カウント値(CNT)54は、データの送信順を示す情報である。周回数55は、周回数(LP:ループ回数)を示す情報であり、データ56は、データ本体部を示す情報である。
【0027】
なお、validフラグ51、stallフラグ52、接続ID53、カウント値(CNT)54に対しては、第1の処理モジュール30や第2の処理モジュール20、入出力モジュール10により適宜値が設定される。周回数55に対しては、データがリングバス41上を周回(1ループ)する都度、第2の処理モジュール20により値(LP=LP+1)が設定される。
【0028】
次に、図3を用いて、図1に示す第1の処理モジュール30(30a、30b)の構成の一例について説明する。すなわち、共有メモリ43にアクセスする処理モジュールについて説明する。
【0029】
第1の処理モジュール30は、その機能的な構成として、通信部31と、パラメータ要求部32と、処理部33と、パラメータ格納部34とを具備する。
【0030】
通信部31は、データの通信を制御する。具体的には、リングバス41から自モジュールにデータを入力したり、処理後のデータをリングバス41に出力したりする。通信部31は、識別部35と、送信部36とを有する。送信部36は、入力カウンタ37と、出力カウンタ38と、情報設定部39とを具備する。
【0031】
パラメータ要求部32は、共有メモリ43に対してメモリアクセスの要求を行ない、当該メモリ43内に格納されたパラメータを要求する。パラメータ格納部34は、パラメータ要求部32によるパラメータの要求に基づいて取得されたパラメータを格納する。なお、ここでいうパラメータには、データ処理に用いる参照値(変数や設定値、ルックアップテーブルなど)そのものと、当該データ処理に用いる参照値に対応するカウント値(入力データにおけるカウント値(CNT)54)とが含まれる。すなわち、パラメータ格納部34には、参照値とカウント値との組み合わせがパラメータとして複数格納される。処理部33は、パラメータ格納部34に格納されたパラメータを取得し、当該パラメータを用いてデータ処理を行なう。
【0032】
識別部35は、データが自モジュールに入力されると、パラメータ要求部32によるメモリアクセス要求(パラメータ要求)処理と、処理部33によるデータ処理とのいずれかを選択的に実行させる。具体的には、パラメータを用いる処理が必要な処理対象のデータが最初に自モジュール(第1の処理モジュール30)に入力された時には、パラメータ要求部32によるメモリアクセス要求を機能させる。また、処理対象のデータが所定周リングバス41を周回した後に自モジュール(第1の処理モジュール30)に入力された時には(後述の周回値に達した時(周回値以上))、処理部33によるデータ処理を機能させる。なお、周回値に達した時は、メモリアクセスを要求したデータが所定回数、自モジュールに戻って来た場合に相当する。この処理を実現するため、識別部35には、周回値を保持する周回値保持部351と、入力データ内の周回数情報(周回数(LP)55)に基づいて当該データの周回数を判定するデータ判定部352とが設けられる。なお、周回値保持部351に保持される周回値は、メモリアクセス要求した後、データをリングバス41に周回させる周回数の指標を示す。
【0033】
なお、周回値は、制御部42により予め算出しておく。周回値の算出では、まず、第1の処理モジュール30が処理に必要なパラメータを取得(読み込む)するのに要する最大時間を求める。そして、この最大時間を越えるような最小のリングバス周回数を求め、それを周回値とする。例えば、リングバス41上をデータが1周するのに要する時間がa(第1の時間)であり、共有メモリ43からパラメータを取得するのに要する最大時間がb(第2の時間)であり、周回値がsであるとする。この場合、s>b/a(sは自然数)となる。b/a(第2の時間を第1の時間により除算したときに得られる商)を越える最小の自然数を周回値sとして決定するのが望ましい。
【0034】
入力カウンタ37は、入力(受信)したデータの数をカウントする。出力カウンタ38は、出力(送信)したデータの数をカウントする。情報設定部39は、入力データ(処理対象のデータ)のヘッダ部(符号51〜符号55)に対して設定情報を設定する。例えば、図2に示す符号51〜符号55に対して情報を設定したり、変更したりする。
【0035】
次に、図4を用いて、図1に示す第2の処理モジュール20(20a〜20c)の構成の一例について説明する。
【0036】
第2の処理モジュール20は、その機能的な構成として、通信部21と、処理部25とを有する。
【0037】
通信部21は、データの通信を制御する。具体的には、リングバス41から自モジュールにデータを入力したり、処理後のデータをリングバス41に出力したりする。通信部21は、入力カウンタ22と、出力カウンタ23と、情報設定部24とを具備する。入力カウンタ22は、入力(受信)したデータの数をカウントする。出力カウンタ23は、出力(送信)したデータの数をカウントする。情報設定部24は、入力データ(処理対象のデータ)のヘッダ部(符号51〜符号55)に対して設定情報を設定する。例えば、図2に示す符号51〜符号55に対して情報を設定したり、変更したりする。処理部25は、入力データに対して各種処理を実行する。
【0038】
ここで、図5を用いて、図1に示す第1の処理モジュール30における処理の流れの一例について説明する。
【0039】
第1の処理モジュール30は、通信部31において、データを入力(受信)すると(S101でYES)、当該データが処理対象データであるか否かの判定を行なう。具体的には、データ判定部352において、入力データのvalidフラグ51を参照し、当該データが有効であるか否かを確認する。有効であれば、データ判定部352は更に、当該入力データの接続ID53を参照し、当該接続IDが自モジュール(第1の処理モジュール30)の接続IDとなっているか否かを確認する。
【0040】
処理対象のデータでなければ(S102でNO)、第1の処理モジュール30は、再度、S101の処理に戻り、データ待ち状態となる。処理対象のデータであれば(S102でYES)、第1の処理モジュール30は、データ判定部352において、入力データの周回数(LP)55を参照し、最初の周回目のデータ(1度も周回していないデータ)であるか否かを判定する。なお、処理対象でないデータは、通信部21が、そのままリングバス41へ出力する。図5に示すS101及びS102の処理は、第2の処理モジュール20でも同様に行なわれる。
【0041】
判定の結果、入力データが最初の周回目(LP=0)であれば(S103でYES)、第1の処理モジュール30は、識別部35において、入力データのカウント値(CNT)54が入力カウンタ37の値と等しいか否かの判定を行なう。これにより、第1の処理モジュール30は、正しい順序でデータが流れているか否かを確認できる。
【0042】
正しい順序通りのデータであれば(S105でYES)、第1の処理モジュール30の識別部35は、パラメータ要求部32を機能させ、共有メモリ43へメモリアクセスの要求を行なう(S105)。これにより、共有メモリ43にアクセスしパラメータを読み出した後、共有メモリ43に格納されたパラメータが第1の処理モジュール30のパラメータ格納部34に格納されることになる。なお、上述した通り、このパラメータの取得には、時間を要する。
【0043】
メモリアクセス要求を行なった後、第1の処理モジュール30は、情報設定部39において、入力データの周回数(LP)55を「1」加算する(S106)。すなわち、入力データの周回数(LP)55を「1」カウントアップして付加する。
【0044】
また、第1の処理モジュール30は、入力カウンタ37において、内部カウンタの値を「1」加算した後、情報設定部39において、入力データのカウント値(CNT)54を「1」加算する(S107)。その後、第1の処理モジュール30は、情報設定部39において、入力データのstallフラグ52に「1(フラグオン)」を設定するとともに(S108)、通信部31において、当該入力データをリングバス41に出力する(S109)。そして、再度、S101の処理に戻り、データ待ち状態となる。
【0045】
S104の判定の結果、正しい順序通りのデータでなければ(S104でNO)、第1の処理モジュール30は、情報設定部39において、入力データのstallフラグ52に「1(フラグオン)」を設定する(S108)。そして、通信部31において、当該入力データをリングバス41に出力する(S109)。その後、第1の処理モジュール30は、再度、S101の処理に戻り、データ待ち状態となる。
【0046】
また、S103の判定の結果、入力データが最初の周回数でなければ(S103でNO)、第1の処理モジュール30は、データ判定部352において、当該入力データの周回数(LP)55と周回値保持部351に保持された周回値(所定周回数)とを比較する。これにより、入力データの周回数が、所定周回数に達しているか否かの判定を行なう。
【0047】
判定の結果、データの周回数が所定周回数に達していなければ(S110でYES)、第1の処理モジュール30は、情報設定部39において、入力データの周回数(LP)55を「1」加算する(S106)。そして、入力カウンタ37において、内部カウンタの値を「1」加算した後、情報設定部39において、入力データのカウント値(CNT)54を「1」加算する(S107)。その後、第1の処理モジュール30は、情報設定部39において、入力データのstallフラグ52に「1(フラグオン)」を設定するとともに(S108)、通信部31において、当該入力データをリングバス41に出力する(S109)。そして、再度、S101の処理に戻り、データ待ち状態となる。つまり、共有メモリ43からのパラメータの取得が完了していないと考えられるので、そのパラメータを取得するまでの間、データを周回させる。これにより、データの周回の間に、第1の処理モジュール30は、他のデータを処理することができる(後述のアクセスタイムの確保に相当する)。また、パラメータを取得するまで第1の処理モジュール30内に、データを留めておく必要もなくなる。
【0048】
一方、データの周回が所定周回数に達していれば(S110でNO)、第1の処理モジュール30の識別部35は、処理部33を機能させ、データ処理を実行させる。これにより、第1の処理モジュール30は、処理部33において、パラメータ格納部34に格納されたパラメータを用いて入力データを処理する(S111)。なお、上述した通り、パラメータ格納部34に格納されたパラメータは、カウント値と対応付けられており、処理部33においては、入力カウンタ37のカウント値と対応付けられているパラメータを用いてデータを処理する。
【0049】
データ処理が済むと、第1の処理モジュール30は、情報設定部39において、処理後のデータのstallフラグ52を「0(フラグオフ)」に戻す(S112)。また、当該データの接続IDを次の処理モジュールのIDに変更し(S113)、当該データの周回数(LP)55を初期値「0」に戻す(すなわち、初期化する)。また、このとき、第1の処理モジュール30は、出力カウンタ38において、内部カウンタを「1」加算する(S114)。
【0050】
その後、第1の処理モジュール30は、通信部31において、当該処理後のデータをリングバス41に出力する(S115)。これにより、第1の処理モジュール30による処理が終了し、処理後のデータは、他の処理モジュールにより処理されるか、又は入出力モジュール10により外部に出力される。
【0051】
ここで、図6を用いて、図1に示すデータ処理装置80における処理の全体動作について具体例を挙げて説明する。ここでは、説明を分かり易くするため、以下の条件時における動作について説明する。
【0052】
1)第2の処理モジュール20におけるデータ処理時間、第1の処理モジュール30におけるパラメータを用いたデータ処理時間は、全て「4」サイクルとする。
【0053】
2)第1の処理モジュール30が、共有メモリ43からパラメータを取得するのに要する時間を「2〜4(遅延時間0〜2+取得時間2)」サイクルとする。
【0054】
3)データは、「1」サイクルで次のモジュールに移動するものとする。また、入出力モジュール10からは、「4」サイクル間隔で新たなデータがリングバス41に出力されるとする。第2の処理モジュール20及び第1の処理モジュール30からリングバス41へは、常に、データを出力できるとする。
【0055】
4)その他の処理時間、例えば、通信部21と処理部25との間で行なうデータ送受信の時間、パラメータ要求部32によりパラメータ要求を行なう時間は、上記処理時間と比べて微量であるため「0」サイクルとする。また、例えば、通信部31と、パラメータ要求部32及び処理部33との間で行なうデータ送受信の時間、処理部33がパラメータ格納部34からパラメータを取得するのに要する時間も上記処理時間と比べて微量であるため「0」サイクルとする。
【0056】
5)処理モジュール20a→20c→30aの順番でデータ処理を行なうものとし、第2の処理モジュール20b、第1の処理モジュール30bでは処理を行なわないとする。
【0057】
以下、図6を参照して説明する。この処理が開始されると、データ処理装置80は、まず、制御部42おいて、周回値(所定周回数)を求める。ここで、データ処理装置80には、入出力モジュール10、3個の第2の処理モジュール20、2個の第1の処理モジュール30が設けられるため、データがリングバス41を1周するのに要する時間は、「6」サイクルとなる。また、共有メモリ43からパラメータを取得するのに要する最大時間は、「4」サイクルであるので、当該最大時間を越える値の中で最小となるリングバス41の周回数は「1」である。そのため、第1の処理モジュール30における周回値保持部351には、「1」が設定される。
【0058】
ここで、入出力モジュール10は、リングバス41にデータを出力する。このデータは、「1」サイクル後に第2の処理モジュール20aに入力される(S201)。第2の処理モジュール20aにおいては、当該データを処理する(S202)。当該処理モジュール20aにおけるデータ処理時間は、上述した通り、「4」サイクルであるので、第2の処理モジュール20aに入力されたデータは、「4」サイクル後、リングバス41に出力される。なお、入出力モジュール10は、「4」サイクル間隔で新たなデータをリングバス41に出力するため、入出力モジュール10は、当該S202の処理中に、次のデータ(N+1番目)を第2の処理モジュール20aに向けて出力する。
【0059】
第2の処理モジュール20aからリングバス41に出力されたデータは、第2の処理モジュール20bを経て「2」サイクル後に第2の処理モジュール20cに入力される(S203及びS204)。
【0060】
第2の処理モジュール20cにおいては、当該データを処理する(S205)。当該処理モジュール20cにおけるデータ処理時間は、上述した通り、「4」サイクルであるので、第2の処理モジュール20cに入力されたデータは、「4」サイクル後、リングバス41に出力される。
【0061】
第2の処理モジュール20cからリングバス41に出力されたデータは、「1」サイクル後に第1の処理モジュール30aに入力される(S206)。ここで、第1の処理モジュール30aは、パラメータ要求部32において、メモリアクセスの要求を実施し、共有メモリ43からパラメータを要求する。なお、パラメータ要求に要する時間は、上述した通り、「0」サイクルである。また、このとき、データの接続IDが第1の処理モジュール30aに設定される。そのため、当該データは、リングバス41を所定回数周回した後(この場合、周回値が「1」であるため、1周後)、再度、第1の処理モジュール30aに入力されることになる。
【0062】
その後、第1の処理モジュール30aは、リングバス41にデータを出力する(S209)。このデータは、第1の処理モジュール30b、入出力モジュール10、第2の処理モジュール20(20a〜20c)を経た後、再度、第1の処理モジュール30aに入力される(S210〜S214)。なお、データの周回中に、S207によるデータ要求に伴ったパラメータの読み出しが最大「4」サイクルの時間をかけて完了している(S208)。これにより、データ周回後、再度、第1の処理モジュール30aにデータが入力された際には、第1の処理モジュール30aのパラメータ格納部34には、パラメータが格納された状態となっている。
【0063】
ここで、第1の処理モジュール30aは、処理部33において、パラメータ格納部34に格納されたパラメータを用いて入力データを処理する(S215)。当該処理モジュール30aにおけるデータ処理時間は、上述した通り、「4」サイクルであるので、第1の処理モジュール30aに入力されたデータは、「4」サイクル後、リングバス41に出力される。
【0064】
その後、第1の処理モジュール30aからリングバス41に出力されたデータは、第1の処理モジュール30bを経て「2」サイクル後に入出力モジュール10へ入力される。そして、入出力モジュール10は、当該データに対する処理が終了しているため、当該データを外部に出力する。
【0065】
ここで、データ処理装置80(リングバス41)における全体の処理時間を考える。入出力モジュール10からリングバス41にデータが出力された時点から、当該データに対する処理が終了した後、再度、入出力モジュール10に戻ってくるまでの処理時間は、「24」サイクルである。
【0066】
すなわち、各処理対象データ毎に、リングバス1周(6サイクル)+第2の処理モジュール20a(4サイクル)+第2の処理モジュール20c(4サイクル)+第1の処理モジュール30a(10サイクル)の処理が行なわれる。なお、第1の処理モジュール30aにおける処理時間の内訳は、パラメータ要求(0サイクル)+リングバス1周(6サイクル)+パラメータを用いたデータ処理(4サイクル)となる。
【0067】
ここで、上述した制御(アクセスタイム確保の制御)を行なわない場合におけるリングバス全体の処理時間を考える。この場合、共有メモリにアクセスする処理モジュールの処理時間は、パラメータを用いたデータ処理(4サイクル)+パラメータ取得処理(遅延時間0〜2サイクル+パラメータ取得時間2サイクル)により、「6〜8」サイクル必要となる。そのため、共有メモリにアクセスする処理モジュールにおいては、データが入力されてから「6〜8」サイクルの間、他のデータを処理することができない。この場合、当該処理できないデータは、再び、リングバスをループすることになるので、入出力モジュールからのデータ入力間隔は、少なくとも「8」サイクル必要となる。
【0068】
そのため、最初のデータの処理時には、「22」サイクルで済むが、8サイクル間隔で各データを処理していくため、総合的な処理時間としては、上記実施形態の場合よりも多くの時間が掛かってしまう。なお、1つのデータに対する処理の内訳は、リングバス1周(6サイクル)+共有メモリ非アクセスの処理モジュール(4サイクル)+共有メモリ非アクセスの処理モジュール(4サイクル)+共有メモリにアクセスする処理モジュール(8サイクル)になる。
【0069】
最後に、まとめとして、上記アクセスタイム確保の制御を行なわない場合と行なう場合とでは、1番目のデータの処理が終わるまでの時間は、「2」サイクル分、アクセスタイム確保の制御を行なう場合の方が遅い。しかし、アクセスタイム確保の制御を行なうようにした場合、データの処理間隔が、アクセスタイム確保の制御を行なわない場合よりも短いため、全体としての処理時間を短くでき、処理速度の低下を抑制できる。
【0070】
以上説明したように本実施形態によれば、リングバス上でデータを周回させることにより共有メモリへのアクセスタイムを確保(隠蔽)する。
【0071】
なお、上述した実施形態では、周回値に達するまでデータを周回させる場合を例に挙げて説明したが、これに限られない。例えば、データは、少なくとも1周、周回させれば1周分のアクセスタイムを隠蔽することができる。そのため、場合によっては、パラメータの取得が済んでいなくても、データの周回を止め、第1の処理モジュール30内にデータを留めるようにしてもよい。
【0072】
また、上述した実施形態では、周回させたデータが、再び、自モジュールに戻ってくる回数(リングバス41を周回する回数)をカウントし、その回数が周回値に達するまでデータを周回させていたが、これに限られない。例えば、識別部35において、パラメータ格納部34を参照し、共有メモリ43からパラメータ格納部34にパラメータが格納された時点でデータの周回を止め、データ処理を実施するようにしてもよい。
【0073】
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU、GPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、
前記データの処理に用いるパラメータを格納する共有メモリと
を有し、
前記モジュールは、
前記共有メモリから取得したパラメータを格納する格納手段と、
他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する識別手段と、
前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する要求手段と、
前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する送信手段と、
前記パラメータを用いてデータを処理する処理手段と
を具備することを特徴とするデータ処理装置。
【請求項2】
前記識別手段は、
前記送信手段により前記パラメータを必要とするデータが送信された後、該データが自モジュールに戻ってきた回数を判定し、
前記処理手段は、
前記識別手段により自モジュールに予め設定されている周回値以上、前記データが戻ってきたと判定された場合、当該データを処理する
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記送信手段により送信されたデータが再び自モジュールに戻ってくるまでに要する時間を第1の時間とし、前記要求手段により前記共有メモリへ前記パラメータを要求してから前記格納手段に該要求に基づくパラメータが格納されるまでに要する時間を第2の時間とした場合、前記第2の時間を前記第1の時間により除算したときに得られる商を越える自然数の中で最小の値を前記周回値として決定する
ことを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記送信手段は、
受信したデータの周回数をカウントアップして当該データに周回数情報として付加して送信する
ことを特徴とする請求項1乃至3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記送信手段は、
前記処理手段による処理が実施されたデータの前記周回数情報を初期化する
ことを特徴とする請求項4に記載のデータ処理装置。
【請求項6】
前記識別手段は、
前記周回数情報に基づいて前記データが前記リング状の複数のモジュールを周回した周回数を判定する
ことを特徴とする請求項4又は5に記載のデータ処理装置。
【請求項7】
前記複数のモジュールは、
前記共有メモリに格納されたパラメータを用いずにデータ処理を行なうモジュールを少なくとも1つ含む
ことを特徴とする請求項1乃至6のいずれか1項に記載のデータ処理装置。
【請求項8】
前記処理手段は、
前記要求手段により前記共有メモリに要求したパラメータを処理に必要とするデータを再び受信した場合に、前記格納手段に前記パラメータが格納されていれば、前記データを処理する
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項9】
リング状に接続され、所定の順番に従ってデータを処理する複数のモジュールと、前記データの処理に用いるパラメータを格納する共有メモリとを有するデータ処理装置におけるデータ処理方法であって、
前記モジュールの格納手段が、前記共有メモリから取得したパラメータを格納する工程と、
前記モジュールの識別手段が、他のモジュールから受信したデータが自モジュールで処理すべきデータであるか否かを識別する工程と、
前記モジュールの要求手段が、前記識別手段により自モジュールで処理すべきと識別されたデータの処理に必要なパラメータが前記格納手段に格納されていない場合、前記共有メモリに対してパラメータの取得を要求する工程と、
前記モジュールの送信手段が、前記要求手段により前記共有メモリに要求したパラメータを必要とするデータを他のモジュールへ送信する工程と、
前記モジュールの処理手段が、前記パラメータを用いてデータを処理する工程と
を含むことを特徴とするデータ処理装置におけるデータ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate