情報処理装置、情報処理方法
【課題】 複数の処理モジュールがリング状にバスで接続された情報処理システムにおいて、効率的にデータ処理を行う。
【解決手段】 バスを流れる空パケットにどの処理モジュールの専用パケットにするかを識別するIDを設定することで、特定の処理モジュールがバス上を流れるパケットを他の処理モジュールに占有される事を抑制する。
【解決手段】 バスを流れる空パケットにどの処理モジュールの専用パケットにするかを識別するIDを設定することで、特定の処理モジュールがバス上を流れるパケットを他の処理モジュールに占有される事を抑制する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理を行う複数のIP(モジュール)がリングバスで接続された情報処理装置及びその制御方法に関する。
【背景技術】
【0002】
リング状の通信ネットワーク(回路網)の1種であるトークンリングネットワーク(TRN)の概念を取り入れたもので、複数の処理部から構成されるTRN型データ駆動型処理システムがある(特許文献1)。
【0003】
データを送信したい処理部は、バスを周回しているフリートークンと呼ばれるパケットを獲得する。そして、フリートークンを獲得した処理部はトークンに宛先識別子や処理データをコピーしてバスに送出し宛先モジュールに送信する。
【0004】
一方、受信側の処理部は自らを宛先とするトークンを受信した場合に、処理データをコピーして受信が完了したことを示す受信完了フラグを設定し受信したトークンを再度リングバスに投入する。そして、送信元ノードは前記受信完了フラグが設定されていないトークンが戻ってきた場合は同じトークンを再送する。受信完了フラグが設定されているトークンが戻ってきた場合はトークンに付いているフラグをクリアする。
【0005】
以上の処理によって、例えばトークンが1つのときは一度に1つの処理部がリング状のバスを専有する通信方式が実現される。このような通信方式をトークンパッシングリング方式という。
【0006】
しかし、データ処理を行う複数のモジュールがリングバスで接続された情報処理システムにおいて、トークンパッシング方式を適用する場合、受信成功の成否に関わらずトークンを送信元に返送しなければならない。つまり、受信が成功していたとしても、受信した処理部から送信元した処理部まで戻されている途中のトークンは他の処理部が使用できないので効率的ではない。
【0007】
また、リングバスに複数の処理部を接続しているシステムではトークンパッシング方式のようにリングバスを流れるパケットを停滞させない事が重要である。これは、処理部が並列処理できる場合にリングバスを流れるデータの流れを止めてしまうと、処理可能な処理部が強制的に待ち状態になるためである。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開昭64−23340号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は複数の処理部がリングバスで接続された情報処理装置で、リングバスを流れるパケットの流れをなるべく停滞させずに、効率良くさせることを目的とする。
【課題を解決するための手段】
【0010】
この課題を解決するため、本発明の情報処理装置は複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、前記モジュールは、当該モジュール固有のIDを格納する格納手段と、IDを有するパケットを前記バスに対して送受信する通信手段と、前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、前記通信手段が、前記有効フラグが無効で且つパケットのIDと前記格納手段に格納しているIDとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする。
【発明の効果】
【0011】
本発明によれば、リングバスを流れるパケットの流れをなるべく停滞させずに、リングバスを流れるパケットのトラフィック量を最適化できる。
【図面の簡単な説明】
【0012】
【図1】通信処理部の概略構成を示すブロック図である。
【図2】パケットのフォーマットを示す図である。
【図3】複数のデータ処理部をリングバスで接続した処理装置を示す図である。
【図4】処理装置の初期設定処理を示すフローチャートである。
【図5】画像処理装置の概略構成を示すブロック図である。
【図6】実施例1の出力データ生成部の処理を示すフローチャートである。
【図7】実施例1におけるマッピング処理を図示する概略図である。
【図8】実施例2の出力データ生成部の処理を示すフローチャートである。
【図9】実施例2のパケット開放処理を示すフローチャートである。
【図10】統一IDと固有IDテーブルとの対応関係を保持するテーブルである。
【図11】実施例3の出力データ生成部の処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
<参考例>
まず、複数の情報処理部をリング状バスに接続した情報処理装置において、処理速度が低下する一例について説明する。図1は、通信路(バス)と情報処理部(以降、データ処理部)をつなぐ通信処理部108の構成を示すものであり、通信処理部にはデータ処理部107が接続されている。入力データ受信部101は、リングバス上を流れるデータパケットを受信する。入力データ識別部102は、入力されたデータパケットの制御情報を確認し、入力されたデータが、自ノードにおいて処理すべきデータかどうかを識別する。ここで、処理すべきデータであると判断した場合、パケットから抽出したデータを処理データ出力部103へ送信し、データを抽出したパケットのバリッドビットを変更し空パケットにする。
【0014】
処理データ出力部103は、入力データ識別部102において自ノードにおいて処理すべきデータであると判断されたデータを、データ処理部107に対して送出する。処理済みデータ入力部104は、自ノードのデータ処理部において処理済のデータの入力を受け取る。
【0015】
出力データ生成部105は出力すべきデータを保持していない場合、識別部102からのパケットはそのまま出力する。そして、入力部104から送られる、処理済であってバス上に出力すべきデータを有する場合は空パケットが回ってきた時に、出力用のパケットを生成する。出力データ送信部106は、出力データ生成部105が生成した出力データをリングバスに放出する。以上のように、リング状に接続される複数の処理モジュールについて、リング上を所定の一方向へデータを転送する。
【0016】
図2は、このようなデータ通信処理部のリングバスにおいて送受信されるパケットのデータ構造を示したものである。
【0017】
フィールド201は、データの処理順番を示すカウンタである。リング状のデータバスにおいては、連続する未処理データを含むデータパケットの一部がリング内を周回することがある。従って、通信処理部が受信するデータが、必ずしも対応するデータ処理部で最初に処理されるべきデータであるとは限らない。よって、このようなカウンタをデータに付随して持たせることで、入力された順など、正しい処理順番に従って処理を実行させる事が可能となる。なお、対応するデータ処理部とは、通信処理部がリングバスを介さずに直接通信可能なデータ処理部の事を指すものとする。
【0018】
フィールド202はこのデータパケットが保持しているデータが処理されるべき有効データであることを示すフラグである。これはすなわち、パケットが現在使用中であるかどうかを示すフラグと同じ意味を持つ。以下、このフラグをバリッドビット(有効フラグ)と呼称する。フィールド203は、このパケットが保持しているデータが何らかの理由で、処理すべきデータ処理部に処理されなかったことを示すフラグである。通常のパイプライン接続における、前段へのデータ供給停止要求ビット(disable信号)と同様の意味を持つ。以下、このフラグをストールビットと呼称する。
【0019】
フィールド204は、このデータを最後に処理したデータ処理部のIDである。データ通信処理部では、あらかじめ外部から設定された待ち受けIDを保持している。そして、前述の入力データ識別部102はこの待ち受けIDと、このデータパケット上のIDとを比較し、一致した際に処理データ出力部103にパケットを取り込んで処理を行う。また、フィールド205は、データやコマンドを格納する。(a)、(b)はデータパケットとコマンドパケットとを示しているが、フィールド205にデータとコマンドを混在させて格納してもよい。
【0020】
通常、IDを比較する前に、バリッドビットはパケットが有効であることを示す値に設定されているかを確認し、有効なパケットについてIDが一致するものを通信処理部がデータ処理部に処理させる。一方で、通信処理部はデータ処理部が処理したデータをパケットに格納する場合、バリッドビットはパケットが無効であることを示す値に設定されているかを確認し、無効なパケット(空のパケット)にデータを格納する。
【0021】
概念的には、リングバスを流れるパケットの総数はほぼ一定である、即ち、空パケットと有効なパケットとの和はほぼ一定であり、この一定数のパケットがリングバスを周回し続けている。ここで、空パケットとは格納するデータが無効とされたパケットであり、有効なパケットとはデータやコマンドを格納しているパケットである。
【0022】
図3(a)は、リングバスを採用している画像処理部の構成の一例を示す図である。
【0023】
データ取得部301は、外部記憶装置などから処理すべきデータを取得する。通信処理部302は、取得されたデータをリング状に構成されている通信路に供給する処理を行う。データ処理部304は、供給されたデータに対して所定の処理を行う。通常、情報処理を行う上で処理部が外部と通信する事のないスタンドアローンな状態を取る事はない。しかし、本明細書では処理部の通信処理について詳細に説明するために、処理部からデータ処理部と通信処理部を独立させて説明している。
【0024】
通信処理部303は、リング状に構成された通信路から、データ処理部303で処理すべきデータを通信路から選別して取り込む通信処理部である。この構成においては、データ処理部303および通信処理部304を有する処理部がリングバス307に1つ以上接続されている。
【0025】
出力通信処理部305は、処理済のデータを外部の記憶装置などに出力するため、リング状の通信路上から処理済のデータを選択して取り込む。出力部306は、通信処理部305により取り込まれた処理済のデータを外部記憶装置などに出力する。リングバス307は、これらの通信処理部を通信可能に連結するリング状のデータバスである。
【0026】
図3(b)は、図3(a)に示した構成において、デッドロックが発生する状態を説明する図である。ここでは、データの順番を示すために、データ309〜311の中に、データの入力順番を示す数字を記載している。
【0027】
データ処理部308は、一度に3つのデータを処理して出力するデータ処理部である。データ処理部308が3つのデータを取得してから処理を終了するまで、データ処理部308と一対一で通信する通信処理部303は処理結果を出力できない。
【0028】
ここで、データ取得部301が、データ処理部308の処理中も継続してデータを供給し続けた場合、リングバス上を周回するパケットのすべてが入力データで埋まってしまう事がある。その場合、空きパケットがなくなるために、データ処理部308から出力されるデータ309はリングバス307に出力できないまま停滞してしまう。
【0029】
また、データ処理部308は、自身が処理したデータの全てを出力するまで、次のデータ処理に移行できないものであるとする。この場合、データ処理部308は処理済データを出力できないため次のデータを取得することができない。一方で、データ取得部301も、通信処理部302がデータをリングバス307に出力できないため止まってしまう。
【0030】
さらに、データ出力部306も、出力すべき処理済データ309がデータ処理部308から出力されてこないため、いずれのデータも外部に出力することができない。
【0031】
このようにして、複数の処理部をリングバスに接続したデータ処理装置において、未処理データによってリングバス上のすべてのパケットが占有されてしまう事がある。それによって、データ処理部が次のデータを取得できない状態になり、処理を継続できないデッドロック状態に陥ってしまう。
【0032】
<実施例1>
次に本発明の一実施例である実施例1について説明する。なお、参考例と構成的、機能的にかわらないものについてはその説明を省略する。
【0033】
図5は、実施例1のシステムの概略構成を示す図である。制御処理部601はCPUやMPUなどの処理回路である。画像処理部602は、リングバスで接続されている複数の処理部(モジュール)を有する画像処理部である。
【0034】
RAM603は、処理する前の入力画像データや処理後の出力画像データ、又は、画像処理部602の設定パラメータに関するデータなどを格納する読み書き可能なメモリである。ROM504は、制御処理部501や画像処理部502の処理手順や、設定パラメータ等の定数などを保持可能な読み出し可能なメモリである。
【0035】
制御処理部501において、ROM504から読み出されたプログラムにしたがって、システムの制御ならびに画像処理部502への指示等を行う。画像処理部502は、処理装置501からの指示に従って画像処理を実行する。その際に、RAM503にあらかじめ格納されている入力画像データを読み出して処理を行い、処理結果を再びRAM503に書き込む。また、システムバス505は制御処理部501、画像処理部502、RAM503、画像処理部502を通信可能に接続するバスである。
【0036】
図4に制御処理部501による画像処理部502の設定処理の処理手順を示す。
【0037】
画像処理制御が開始されると、以下のステップに従って処理を実行する。ステップS401で制御処理部501は、ROM504から画像処理部502のデータ処理部の処理順番を読み出す。ステップS402で制御処理部501は、ROMからデータ処理部に与える処理パラメータを読み出す。ステップS403で制御処理部501は、読み出したデータ処理順番及び処理パラメータを用いて画像処理部502の制御パラメータを算出する処理を行う。
【0038】
ステップS404で制御処理部501は、ステップS703で算出した制御パラメータを用いて、画像処理部502に対する設定処理を行うステップS405で制御処理部501は、画像処理部502に対して処理開始の指示を行う。ステップS406で制御処理部501は、画像処理部502の設定の完了を確認し、
ステップS407において、設定処理が完了したと判断した場合には、処理を終了する。ここで、処理が未終了であった場合には、再びステップS406へ戻り、終了確認処理を継続する。
【0039】
また、図7は4つのモジュールがリング状に接続されている画像処理部502の構成を示すブロック図であって、マッピング処理を説明するのに適するようにデータ処理部とリングバス上のレジスタを強調している。画像処理部502は、通信処理部801〜804、データ処理部816〜819、レジスタ805〜812、リングバス813を有している。また、入出力バッファ814を介して画像処理部502の外部からデータを入力、もしくは外部へデータを出力可能に構成されている。通信処理部801〜804はそれぞれ自身が処理するデータを識別する情報(以下、待ち受けID)を格納するレジスタ815を具備する。本実施例では、データ処理部801〜804のレジスタに設定されている待ち受けIDと、受け取ったパケットのIDとが一致することを判別することで処理すべきパケットを識別するものとする。また、本実施例では説明を簡便にするため、データ処理部は1つの入力データを処理して1つの出力データを得るものとし、リングバスを周回するパケットの数の総数はレジスタに相当する8個とする。
【0040】
各データ処理部の待ち受けIDの設定やパケットのマッピングは制御処理部501で動作するソフトウェアプログラムが行う。まず、各データ処理部に固有のID(モジュール固有のID)をレジスタ816に割り振る。ここでは本実施例では待ち受けIDとして(1)を格納しているデータ処理部は処理回路外部へのデータの入出力を管理するように設定する。また、各データ処理部の固有のIDは予め固定の値を設定するようにしてもよい。
【0041】
次に制御処理部501は、各データ処理部の待ち受けID(wIDと表記している)を設定する。本実施例では、通信処理部801のwIDを(4)、データ処理部802のwIDを(3)、データ処理部803のwIDを(1)、データ処理部804のwIDを(2)と設定する。各処理部に固有IDと待ち受けIDとを設定すると、複数の処理部によるデータフローが仮想的に形成される。図7のように設定すると、バッファ814からデータを入力した後に、通信処理部801→データ処理部803→データ処理部802→データ処理部804の順番でパイプライン処理をした後にバッファ814へ出力される。
【0042】
次に、制御処理部501は、8個の空パケットを各レジスタにマッピングする。その際に、8個の空パケットはバリッドビットとして無効を示す値(0)を格納し、更に、IDを格納している。図7に示すように、レジスタ805にはIDとして3を格納するパケットがマッピングされている。同様にレジスタ806〜812には夫々、IDが1、4、2、4、3、2、1、のパケットが順にマッピングされている。本実施例ではデータ処理部が4つであり、4種類のIDの全てをマッピングする必要がある。ただし、データ処理に用いない処理部があるときはそのIDを有する空パケットをマッピングする必要はない。また、同じIDを有する空パケット同士の必要な間隔を配置間隔とする。本実施例では配置間隔を(1)としているため、同じIDを有する空パケットは隣り合わないようにマッピングされる。
【0043】
図1は、通信路(バス)とデータ処理部をつなぐ通信処理部の構成を示すものである。
【0044】
出力データ生成部105は、識別部102において自ノードで処理すべきデータでないと判断されたデータや、有効なデータを含んでいないと判断された空パケットや、処理済みデータ入力部104から送られる、処理済であってバス上に出力する必要のあるデータなどから、出力データを生成する。
【0045】
入力データ識別部102がデータを抽出してバリッドビットを無効にする際に、参考例の方式であればデータを抽出したパケットのIDやデータもクリアして構わないが、本実施例ではIDをクリアしない。
【0046】
そして、出力データ生成部105は、データ処理部が処理したデータをパケットに格納する際、バリッドビットを確認し空パケットであるかを確認し、更にパケットに付加されているIDが固有IDと一致するかを確認する。即ち、空パケットであって固有IDが一致するパケットにしか出力データ生成部は処理済のデータを格納しない。
【0047】
なお、入力データ識別部102は待ち受けIDを保持するレジスタを有しており、出力データ生成部は固有IDを保持するレジスタを有している。上述のステップ404において制御処理部501はこれらのレジスタに値を設定する。また、処理済データ入力部104はデータ処理部からデータを受け取った際に、データを保持している事を示すために保持フラグを出力データ生成部に設定する。すなわち、出力データ生成部105は保持フラグの値を有するレジスタを有している。なお、各構成がレジスタを有していると説明しているが、レジスタの値を参照可能な様に構成するだけでもよい。
【0048】
図6は出力データ生成部105が行う処理を示すフローチャートである。
【0049】
ステップ601では入力データ受信部101、入力データ識別部102を介してリングバスからパケットを取得する。ステップ602ではパケットからIDを取得する。ステップ603では固有IDを取得する。ステップ604では保持フラグをチェックする。フラグが1であればステップ607を実行する。一方、フラグが0であればステップ605を実行する。
【0050】
ステップ605ではデータ処理部から処理後データを取得する。ステップ606ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ607を実行する。得られなかった場合はステップ614を実行する。
【0051】
ステップ607では出力データ生成部105の取得したパケットのデータ有効信号が下がっているかを確認する。本実施例では、データ有効信号(バリッドビット)が(0)である場合に信号が下がっており、パケットが無効であることを示すものとする。そして、下がっていればステップ608でパケットのID(送信元ID)と処理部に設定されている固有IDが一致するかをチェックする。パケットのIDと処理部に設定されている固有IDが一致する場合はパケットのデータ格納領域に処理後のデータを格納する。さらに、ステップ610で保持フラグを0にクリアし、ステップ611でデータを格納したパケットのデータ有効信号を(1)に設定する。
【0052】
一方で、ステップ607でバリッドビットが(1)であった場合、又はステップ608でパケットのIDと処理部の固定IDが一致しない場合はステップ612で処理済データ入力部から取得したデータを一時的に保持する。ステップ612では処理後データをレジスタなどに格納し保持する。ステップ613では保持フラグを1にする。ステップ614ではパケットを出力しレジスタなどに格納する。
【0053】
以上のように実施例1では、概念的にリングバスを流れるパケットを複数のデータ処理部の1つに専用のパケットとし、データ処理に用いる処理部の夫々に少なくとも1つの専用のパケットを割り当てる。従って、実施例1ではパケットの格納するIDは処理部によって変更されることはない。これにより、同じ処理部が出力するパケットでバス上が埋め尽くされる事で生じるデッドロックを回避することができる。
【0054】
少なくとも、1つのデータ処理部(モジュール)について専用のパケットを設ければ、そのデータ処理部は他のデータ処理部にパケットを埋め尽くされる恐れが無くなる。複数のモジュールが順番にパイプライン処理をする場合に、入力されるパケットの数より多くのパケットを出力するモジュールよりも処理順番が後段のモジュールに専用のパケットを設ければ、パケット埋め尽くしによるデッドロックが発生する可能性は低くなる。
【0055】
また、図7に示すように同じIDを有するパケットを制御処理部501が隣り合わないように配置することで、リングバスを流れるパケットの偏りを減らし、データが効率良く処理されるようになる。例えば、同じIDを有するパケットが局所的に連続する場合、各処理部は自身の保持する固有IDと異なるIDを有するパケットが連続している間は処理したデータを出力できないので効率が良くないことがある。そこで、制御処理部501がパケットをマッピングする際に配置間隔というパラメータに基づいてマッピングするようにしてもよい。例えば、〔配置間隔=1〕の場合は同じIDを有するパケットの間には少なくとも1つの別のIDを有するパケットがマッピングされる。
【0056】
ただし、データ処理部の少なくとも1つが2つ以上のパケットを入力されないと、処理が始まらない場合(例えば、縮小処理等)、その処理部の固有IDを有するパケットのみ処理に必要な数だけ連続して配置してもよい。
【0057】
<実施例2>
実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【0058】
実施例1ではリングバスから取得したパケットのIDが処理部の固有IDと一致しない場合、出力データ生成部105はパケットに処理後のデータを格納しなかった。しかし、本実施例では一致しない場合でも、データ有効信号が無効を示していればパケットに処理後データの格納を行っても良いとする。以下の説明ではそのようなパケットを借用パケットと呼ぶ。また、借用したパケットは借用元のデータ処理部が借用する前のIDを再度格納することで開放する。
【0059】
なお、本実施例ではフィールド204にIDとは別に借用フラグを格納する領域を1ビット割り当てる。そして、フラグが1であれば借用パケットを示しており、0であれば借用パケットではないことを示しているとする。さらに、借用したパケットに借用する前のIDを付加する為に、各パケットを識別するパケット用の固有ID(以下、統一IDと呼称する)を付加する。
統一IDはパケット毎に固有の識別子とする。
【0060】
本実施例におけるデータ処理部のブロック図を図1に示す。
【0061】
出力データ生成部105は、入力データ識別部から取得する空パケットのIDが固有IDと異なっていても、現在借用しているパケット数が所定数を越えていなければ、データと自身の固有IDを格納する。出力データ生成部105には借用パケット数をカウントするカウンタを有している。また、空パケットを借用する際は、借用するパケットの元のIDと借用した処理部の固有IDとを図10に示すように借用テーブルに保持する。
【0062】
図8は本実施例におけるお出力データ生成部105のフローチャートである。なお、ステップ901、904〜908、913〜918は夫々、図6のステップ601、604〜608、609〜614と同様の処理であるので説明を省略する。
【0063】
ステップ902では借用パケット開放ステップを行う。詳細は後述する。
【0064】
ステップ903ではステップ902で借用パケットを開放したか否かを判断し、開放したのであればステップ918を実行する。開放しなかったのであればステップ904を実行する。
【0065】
ステップ909では借用パケットカウンタの値が設定数(最大借用パケット数)よりも小さいかをチェックする。借用パケットカウンタの値が最大借用パケット数よりも小さければ、ステップ910で借用パケットカウンタを1だけインクリメントする。ステップ911ではパケットのIDを自らの処理部の固有IDで上書きする。ステップ912ではテーブルに統一IDと固有IDとの対応を格納する。
【0066】
次にステップ902で示した借用パケット開放処理に関するフローチャートを図9に示す。以下で説明する。ステップ1001ではパケットから統一IDを取得する。ステップ1002ではパケットのデータ有効信号を確認する。データ有効信号が0であればステップ1003を実行し、1であれば処理を終了する。
【0067】
ステップ1003では借用フラグを0にする。ステップ1004ではテーブルから借用前のパケットのIDを取得する。ステップ1005では取得したIDをパケットのIDとして再び設定する。ステップ1006では借用パケットカウンタを1デクリメントする。
【0068】
以上説明したように受信した空パケットのIDが固有IDと異なる場合でも、一時的にパケットを借用することで、より効率的にデータ処理を行うことが可能である。
【0069】
なお、統一IDを用いなくても借用フラグを用いるだけでも同様の効果を奏する事ができる。その場合には、出力データ生成部105は借用フラグが1になっているパケットを受信した際に、開放する処理をテーブルに基づいて行う。ここで、テーブルには借用元のIDと借用先のIDとの個数の関係を示す情報があれば、それに基づいて借用パケットを開放すればよい。
【0070】
<実施例3>
実施例1、2と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。本実施例ではどのデータ処理部でも利用可能な共用パケットを配置する。
【0071】
また、本実施例において出力データ生成部105は実施例1の場合に加え、パケットのIDが未設定の場合、又はパケットが共用を示す情報が付加されている場合でもパケットに処理データの格納を行う。
【0072】
本実施例の出力データ生成部105は同じ固有IDを有するパケットを所定の制御間隔以上で配置するための設定値を格納するレジスタ(以降、データ間隔格納部1205)を有している、又は参照可能である。制限間隔はID毎に設定されてもよい。なお、レジスタ815をデータ間隔格納部1205として利用してもよい。
【0073】
なお、本実施例ではパケットID204の最上位1ビット目を共用フラグとしており、このフラグが1であれば共用を示しており、0であればそれ以外を示しているとする。もちろん、共用フラグ専用の領域を別に設けてもよい。一方、データ有効信号が0に設定されている際に自らの占有とした場合は、最上位2ビット目の借用フラグを1にするものとし、それ以外の場合は0にするものとする。同様に借用識別領域をパケットに設けてもよい。そのようなパケットを借用パケットと以下では呼ぶ。また、本実施例ではパケットのIDが0の場合は、IDが未設定であるとする。
【0074】
また、出力データ生成部105は、自らの固有IDを付加したパケットを少なくともデータ間隔格納部1205が保持する値以上の間隔をもって送出するようにできる。また、その動作は指示によってON・OFFの制御ができるものとする。
【0075】
図11は本実施例における出力データ生成部105のフローチャートである。ステップ1301ではパケット一時保持バッファからパケットを取得する。ステップ1302ではパケットからIDを取得する。ステップ1303では自らの固有IDを保持するレジスタを参照して固有IDを取得する。
【0076】
ステップ1304では保持フラグを確認する。この、フラグが0であればステップ1305を実行し、1であればステップ1307を実行する。
【0077】
ステップ1305ではデータ処理部から処理後データを取得する。ステップ1306ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ1307を実行し、得られなかった場合はステップ1323を実行する。
【0078】
ステップ1307ではパケットから取得したIDと固有IDとを比較し、一致すればステップ1308を実行し、一致しなければステップ1315を実行する。ステップ1308ではパケットのデータ有効信号が0であるかを確認し、0であればステップ1309を実行し、1であればステップ1314を実行する。
【0079】
ステップ1309ではパケットに処理後データを格納し、ステップ1310では保持フラグを0にし、ステップ1311ではパケットのデータ有効信号を1に設定する。
【0080】
ステップ1312ではパケットのIDとして固有IDを格納する。ステップ1307でパケットIDと固有IDとが等しかった場合にはステップ1312の処理を省略して構わない。
【0081】
ステップ1313ではデータ間隔カウンタを0にリセットする。
ステップ1314ではパケットが共用を示しているかを確認する。共用を示していればステップ1315を実行する。共用を示していなければステップ1318を実行する。
【0082】
ステップ1315ではパケットのデータ有効信号が0であるかを確認する。0であればステップ1316を実行する。1であればステップ1319を実行する。
【0083】
ステップ1316ではデータ間隔格納部から所定の間隔値を取得する。ステップ1317ではステップ1316で取得した間隔値とデータ間隔カウンタを比較してデータ間隔カウンタが間隔値以上の場合はステップ1309を実行する。そうでなければ、ステップ1319を実行する。
【0084】
ステップ1308ではパケットのIDが未設定かを確認する。パケットのIDが未設定の場合はステップ1316を実行し、未設定でない場合はステップ1319を実行する。
【0085】
ステップ1319では処理後データをレジスタに保持する。ステップ1320では保持フラグを1にする。ステップ1321ではデータ間隔カウンタを1だけインクリメントする。ステップ1322ではパケットのデータ有効信号を0にクリアする。
【0086】
ステップ1323ではパケットをレジスタ等にコピーする。
なお、実施例1及び実施例2の場合と同様に保持フラグはデータ処理装置初期化時に0クリアされるものとする。
【0087】
以上説明したようにデータ処理部識別情報が未設定のパケットや共用パケットを占有し、ある間隔ごとに配置することでより効率的にデータ処理を行うことが可能である。
【0088】
上述の各実施例では、パケットのマッピングは制御処理部101が行うとしているが、リングバス上にパケット制御部を設置し該パケット制御部が制御処理部101の代わりにパケットの割り当てを行う様にしてもよい。その場合、制御処理部101を通過するパケットについて、前述のようにIDを格納する処理を行えばよい。
【0089】
上述の各実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。また、説明の簡便のために通信部が6個の例を挙げたが、本発明を実施するためには通信部や処理部は複数有ればよい。
【0090】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
【0091】
また、本発明は前述した各実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【符号の説明】
【0092】
101 入力データ受信部
102 入力データ識別部
103 処理データ出力部
104 処理済みデータ入力部
105 出力データ生成部
106 出力データ送信部
107 データ処理部
【技術分野】
【0001】
本発明は、データ処理を行う複数のIP(モジュール)がリングバスで接続された情報処理装置及びその制御方法に関する。
【背景技術】
【0002】
リング状の通信ネットワーク(回路網)の1種であるトークンリングネットワーク(TRN)の概念を取り入れたもので、複数の処理部から構成されるTRN型データ駆動型処理システムがある(特許文献1)。
【0003】
データを送信したい処理部は、バスを周回しているフリートークンと呼ばれるパケットを獲得する。そして、フリートークンを獲得した処理部はトークンに宛先識別子や処理データをコピーしてバスに送出し宛先モジュールに送信する。
【0004】
一方、受信側の処理部は自らを宛先とするトークンを受信した場合に、処理データをコピーして受信が完了したことを示す受信完了フラグを設定し受信したトークンを再度リングバスに投入する。そして、送信元ノードは前記受信完了フラグが設定されていないトークンが戻ってきた場合は同じトークンを再送する。受信完了フラグが設定されているトークンが戻ってきた場合はトークンに付いているフラグをクリアする。
【0005】
以上の処理によって、例えばトークンが1つのときは一度に1つの処理部がリング状のバスを専有する通信方式が実現される。このような通信方式をトークンパッシングリング方式という。
【0006】
しかし、データ処理を行う複数のモジュールがリングバスで接続された情報処理システムにおいて、トークンパッシング方式を適用する場合、受信成功の成否に関わらずトークンを送信元に返送しなければならない。つまり、受信が成功していたとしても、受信した処理部から送信元した処理部まで戻されている途中のトークンは他の処理部が使用できないので効率的ではない。
【0007】
また、リングバスに複数の処理部を接続しているシステムではトークンパッシング方式のようにリングバスを流れるパケットを停滞させない事が重要である。これは、処理部が並列処理できる場合にリングバスを流れるデータの流れを止めてしまうと、処理可能な処理部が強制的に待ち状態になるためである。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開昭64−23340号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は複数の処理部がリングバスで接続された情報処理装置で、リングバスを流れるパケットの流れをなるべく停滞させずに、効率良くさせることを目的とする。
【課題を解決するための手段】
【0010】
この課題を解決するため、本発明の情報処理装置は複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、前記モジュールは、当該モジュール固有のIDを格納する格納手段と、IDを有するパケットを前記バスに対して送受信する通信手段と、前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、前記通信手段が、前記有効フラグが無効で且つパケットのIDと前記格納手段に格納しているIDとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする。
【発明の効果】
【0011】
本発明によれば、リングバスを流れるパケットの流れをなるべく停滞させずに、リングバスを流れるパケットのトラフィック量を最適化できる。
【図面の簡単な説明】
【0012】
【図1】通信処理部の概略構成を示すブロック図である。
【図2】パケットのフォーマットを示す図である。
【図3】複数のデータ処理部をリングバスで接続した処理装置を示す図である。
【図4】処理装置の初期設定処理を示すフローチャートである。
【図5】画像処理装置の概略構成を示すブロック図である。
【図6】実施例1の出力データ生成部の処理を示すフローチャートである。
【図7】実施例1におけるマッピング処理を図示する概略図である。
【図8】実施例2の出力データ生成部の処理を示すフローチャートである。
【図9】実施例2のパケット開放処理を示すフローチャートである。
【図10】統一IDと固有IDテーブルとの対応関係を保持するテーブルである。
【図11】実施例3の出力データ生成部の処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
<参考例>
まず、複数の情報処理部をリング状バスに接続した情報処理装置において、処理速度が低下する一例について説明する。図1は、通信路(バス)と情報処理部(以降、データ処理部)をつなぐ通信処理部108の構成を示すものであり、通信処理部にはデータ処理部107が接続されている。入力データ受信部101は、リングバス上を流れるデータパケットを受信する。入力データ識別部102は、入力されたデータパケットの制御情報を確認し、入力されたデータが、自ノードにおいて処理すべきデータかどうかを識別する。ここで、処理すべきデータであると判断した場合、パケットから抽出したデータを処理データ出力部103へ送信し、データを抽出したパケットのバリッドビットを変更し空パケットにする。
【0014】
処理データ出力部103は、入力データ識別部102において自ノードにおいて処理すべきデータであると判断されたデータを、データ処理部107に対して送出する。処理済みデータ入力部104は、自ノードのデータ処理部において処理済のデータの入力を受け取る。
【0015】
出力データ生成部105は出力すべきデータを保持していない場合、識別部102からのパケットはそのまま出力する。そして、入力部104から送られる、処理済であってバス上に出力すべきデータを有する場合は空パケットが回ってきた時に、出力用のパケットを生成する。出力データ送信部106は、出力データ生成部105が生成した出力データをリングバスに放出する。以上のように、リング状に接続される複数の処理モジュールについて、リング上を所定の一方向へデータを転送する。
【0016】
図2は、このようなデータ通信処理部のリングバスにおいて送受信されるパケットのデータ構造を示したものである。
【0017】
フィールド201は、データの処理順番を示すカウンタである。リング状のデータバスにおいては、連続する未処理データを含むデータパケットの一部がリング内を周回することがある。従って、通信処理部が受信するデータが、必ずしも対応するデータ処理部で最初に処理されるべきデータであるとは限らない。よって、このようなカウンタをデータに付随して持たせることで、入力された順など、正しい処理順番に従って処理を実行させる事が可能となる。なお、対応するデータ処理部とは、通信処理部がリングバスを介さずに直接通信可能なデータ処理部の事を指すものとする。
【0018】
フィールド202はこのデータパケットが保持しているデータが処理されるべき有効データであることを示すフラグである。これはすなわち、パケットが現在使用中であるかどうかを示すフラグと同じ意味を持つ。以下、このフラグをバリッドビット(有効フラグ)と呼称する。フィールド203は、このパケットが保持しているデータが何らかの理由で、処理すべきデータ処理部に処理されなかったことを示すフラグである。通常のパイプライン接続における、前段へのデータ供給停止要求ビット(disable信号)と同様の意味を持つ。以下、このフラグをストールビットと呼称する。
【0019】
フィールド204は、このデータを最後に処理したデータ処理部のIDである。データ通信処理部では、あらかじめ外部から設定された待ち受けIDを保持している。そして、前述の入力データ識別部102はこの待ち受けIDと、このデータパケット上のIDとを比較し、一致した際に処理データ出力部103にパケットを取り込んで処理を行う。また、フィールド205は、データやコマンドを格納する。(a)、(b)はデータパケットとコマンドパケットとを示しているが、フィールド205にデータとコマンドを混在させて格納してもよい。
【0020】
通常、IDを比較する前に、バリッドビットはパケットが有効であることを示す値に設定されているかを確認し、有効なパケットについてIDが一致するものを通信処理部がデータ処理部に処理させる。一方で、通信処理部はデータ処理部が処理したデータをパケットに格納する場合、バリッドビットはパケットが無効であることを示す値に設定されているかを確認し、無効なパケット(空のパケット)にデータを格納する。
【0021】
概念的には、リングバスを流れるパケットの総数はほぼ一定である、即ち、空パケットと有効なパケットとの和はほぼ一定であり、この一定数のパケットがリングバスを周回し続けている。ここで、空パケットとは格納するデータが無効とされたパケットであり、有効なパケットとはデータやコマンドを格納しているパケットである。
【0022】
図3(a)は、リングバスを採用している画像処理部の構成の一例を示す図である。
【0023】
データ取得部301は、外部記憶装置などから処理すべきデータを取得する。通信処理部302は、取得されたデータをリング状に構成されている通信路に供給する処理を行う。データ処理部304は、供給されたデータに対して所定の処理を行う。通常、情報処理を行う上で処理部が外部と通信する事のないスタンドアローンな状態を取る事はない。しかし、本明細書では処理部の通信処理について詳細に説明するために、処理部からデータ処理部と通信処理部を独立させて説明している。
【0024】
通信処理部303は、リング状に構成された通信路から、データ処理部303で処理すべきデータを通信路から選別して取り込む通信処理部である。この構成においては、データ処理部303および通信処理部304を有する処理部がリングバス307に1つ以上接続されている。
【0025】
出力通信処理部305は、処理済のデータを外部の記憶装置などに出力するため、リング状の通信路上から処理済のデータを選択して取り込む。出力部306は、通信処理部305により取り込まれた処理済のデータを外部記憶装置などに出力する。リングバス307は、これらの通信処理部を通信可能に連結するリング状のデータバスである。
【0026】
図3(b)は、図3(a)に示した構成において、デッドロックが発生する状態を説明する図である。ここでは、データの順番を示すために、データ309〜311の中に、データの入力順番を示す数字を記載している。
【0027】
データ処理部308は、一度に3つのデータを処理して出力するデータ処理部である。データ処理部308が3つのデータを取得してから処理を終了するまで、データ処理部308と一対一で通信する通信処理部303は処理結果を出力できない。
【0028】
ここで、データ取得部301が、データ処理部308の処理中も継続してデータを供給し続けた場合、リングバス上を周回するパケットのすべてが入力データで埋まってしまう事がある。その場合、空きパケットがなくなるために、データ処理部308から出力されるデータ309はリングバス307に出力できないまま停滞してしまう。
【0029】
また、データ処理部308は、自身が処理したデータの全てを出力するまで、次のデータ処理に移行できないものであるとする。この場合、データ処理部308は処理済データを出力できないため次のデータを取得することができない。一方で、データ取得部301も、通信処理部302がデータをリングバス307に出力できないため止まってしまう。
【0030】
さらに、データ出力部306も、出力すべき処理済データ309がデータ処理部308から出力されてこないため、いずれのデータも外部に出力することができない。
【0031】
このようにして、複数の処理部をリングバスに接続したデータ処理装置において、未処理データによってリングバス上のすべてのパケットが占有されてしまう事がある。それによって、データ処理部が次のデータを取得できない状態になり、処理を継続できないデッドロック状態に陥ってしまう。
【0032】
<実施例1>
次に本発明の一実施例である実施例1について説明する。なお、参考例と構成的、機能的にかわらないものについてはその説明を省略する。
【0033】
図5は、実施例1のシステムの概略構成を示す図である。制御処理部601はCPUやMPUなどの処理回路である。画像処理部602は、リングバスで接続されている複数の処理部(モジュール)を有する画像処理部である。
【0034】
RAM603は、処理する前の入力画像データや処理後の出力画像データ、又は、画像処理部602の設定パラメータに関するデータなどを格納する読み書き可能なメモリである。ROM504は、制御処理部501や画像処理部502の処理手順や、設定パラメータ等の定数などを保持可能な読み出し可能なメモリである。
【0035】
制御処理部501において、ROM504から読み出されたプログラムにしたがって、システムの制御ならびに画像処理部502への指示等を行う。画像処理部502は、処理装置501からの指示に従って画像処理を実行する。その際に、RAM503にあらかじめ格納されている入力画像データを読み出して処理を行い、処理結果を再びRAM503に書き込む。また、システムバス505は制御処理部501、画像処理部502、RAM503、画像処理部502を通信可能に接続するバスである。
【0036】
図4に制御処理部501による画像処理部502の設定処理の処理手順を示す。
【0037】
画像処理制御が開始されると、以下のステップに従って処理を実行する。ステップS401で制御処理部501は、ROM504から画像処理部502のデータ処理部の処理順番を読み出す。ステップS402で制御処理部501は、ROMからデータ処理部に与える処理パラメータを読み出す。ステップS403で制御処理部501は、読み出したデータ処理順番及び処理パラメータを用いて画像処理部502の制御パラメータを算出する処理を行う。
【0038】
ステップS404で制御処理部501は、ステップS703で算出した制御パラメータを用いて、画像処理部502に対する設定処理を行うステップS405で制御処理部501は、画像処理部502に対して処理開始の指示を行う。ステップS406で制御処理部501は、画像処理部502の設定の完了を確認し、
ステップS407において、設定処理が完了したと判断した場合には、処理を終了する。ここで、処理が未終了であった場合には、再びステップS406へ戻り、終了確認処理を継続する。
【0039】
また、図7は4つのモジュールがリング状に接続されている画像処理部502の構成を示すブロック図であって、マッピング処理を説明するのに適するようにデータ処理部とリングバス上のレジスタを強調している。画像処理部502は、通信処理部801〜804、データ処理部816〜819、レジスタ805〜812、リングバス813を有している。また、入出力バッファ814を介して画像処理部502の外部からデータを入力、もしくは外部へデータを出力可能に構成されている。通信処理部801〜804はそれぞれ自身が処理するデータを識別する情報(以下、待ち受けID)を格納するレジスタ815を具備する。本実施例では、データ処理部801〜804のレジスタに設定されている待ち受けIDと、受け取ったパケットのIDとが一致することを判別することで処理すべきパケットを識別するものとする。また、本実施例では説明を簡便にするため、データ処理部は1つの入力データを処理して1つの出力データを得るものとし、リングバスを周回するパケットの数の総数はレジスタに相当する8個とする。
【0040】
各データ処理部の待ち受けIDの設定やパケットのマッピングは制御処理部501で動作するソフトウェアプログラムが行う。まず、各データ処理部に固有のID(モジュール固有のID)をレジスタ816に割り振る。ここでは本実施例では待ち受けIDとして(1)を格納しているデータ処理部は処理回路外部へのデータの入出力を管理するように設定する。また、各データ処理部の固有のIDは予め固定の値を設定するようにしてもよい。
【0041】
次に制御処理部501は、各データ処理部の待ち受けID(wIDと表記している)を設定する。本実施例では、通信処理部801のwIDを(4)、データ処理部802のwIDを(3)、データ処理部803のwIDを(1)、データ処理部804のwIDを(2)と設定する。各処理部に固有IDと待ち受けIDとを設定すると、複数の処理部によるデータフローが仮想的に形成される。図7のように設定すると、バッファ814からデータを入力した後に、通信処理部801→データ処理部803→データ処理部802→データ処理部804の順番でパイプライン処理をした後にバッファ814へ出力される。
【0042】
次に、制御処理部501は、8個の空パケットを各レジスタにマッピングする。その際に、8個の空パケットはバリッドビットとして無効を示す値(0)を格納し、更に、IDを格納している。図7に示すように、レジスタ805にはIDとして3を格納するパケットがマッピングされている。同様にレジスタ806〜812には夫々、IDが1、4、2、4、3、2、1、のパケットが順にマッピングされている。本実施例ではデータ処理部が4つであり、4種類のIDの全てをマッピングする必要がある。ただし、データ処理に用いない処理部があるときはそのIDを有する空パケットをマッピングする必要はない。また、同じIDを有する空パケット同士の必要な間隔を配置間隔とする。本実施例では配置間隔を(1)としているため、同じIDを有する空パケットは隣り合わないようにマッピングされる。
【0043】
図1は、通信路(バス)とデータ処理部をつなぐ通信処理部の構成を示すものである。
【0044】
出力データ生成部105は、識別部102において自ノードで処理すべきデータでないと判断されたデータや、有効なデータを含んでいないと判断された空パケットや、処理済みデータ入力部104から送られる、処理済であってバス上に出力する必要のあるデータなどから、出力データを生成する。
【0045】
入力データ識別部102がデータを抽出してバリッドビットを無効にする際に、参考例の方式であればデータを抽出したパケットのIDやデータもクリアして構わないが、本実施例ではIDをクリアしない。
【0046】
そして、出力データ生成部105は、データ処理部が処理したデータをパケットに格納する際、バリッドビットを確認し空パケットであるかを確認し、更にパケットに付加されているIDが固有IDと一致するかを確認する。即ち、空パケットであって固有IDが一致するパケットにしか出力データ生成部は処理済のデータを格納しない。
【0047】
なお、入力データ識別部102は待ち受けIDを保持するレジスタを有しており、出力データ生成部は固有IDを保持するレジスタを有している。上述のステップ404において制御処理部501はこれらのレジスタに値を設定する。また、処理済データ入力部104はデータ処理部からデータを受け取った際に、データを保持している事を示すために保持フラグを出力データ生成部に設定する。すなわち、出力データ生成部105は保持フラグの値を有するレジスタを有している。なお、各構成がレジスタを有していると説明しているが、レジスタの値を参照可能な様に構成するだけでもよい。
【0048】
図6は出力データ生成部105が行う処理を示すフローチャートである。
【0049】
ステップ601では入力データ受信部101、入力データ識別部102を介してリングバスからパケットを取得する。ステップ602ではパケットからIDを取得する。ステップ603では固有IDを取得する。ステップ604では保持フラグをチェックする。フラグが1であればステップ607を実行する。一方、フラグが0であればステップ605を実行する。
【0050】
ステップ605ではデータ処理部から処理後データを取得する。ステップ606ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ607を実行する。得られなかった場合はステップ614を実行する。
【0051】
ステップ607では出力データ生成部105の取得したパケットのデータ有効信号が下がっているかを確認する。本実施例では、データ有効信号(バリッドビット)が(0)である場合に信号が下がっており、パケットが無効であることを示すものとする。そして、下がっていればステップ608でパケットのID(送信元ID)と処理部に設定されている固有IDが一致するかをチェックする。パケットのIDと処理部に設定されている固有IDが一致する場合はパケットのデータ格納領域に処理後のデータを格納する。さらに、ステップ610で保持フラグを0にクリアし、ステップ611でデータを格納したパケットのデータ有効信号を(1)に設定する。
【0052】
一方で、ステップ607でバリッドビットが(1)であった場合、又はステップ608でパケットのIDと処理部の固定IDが一致しない場合はステップ612で処理済データ入力部から取得したデータを一時的に保持する。ステップ612では処理後データをレジスタなどに格納し保持する。ステップ613では保持フラグを1にする。ステップ614ではパケットを出力しレジスタなどに格納する。
【0053】
以上のように実施例1では、概念的にリングバスを流れるパケットを複数のデータ処理部の1つに専用のパケットとし、データ処理に用いる処理部の夫々に少なくとも1つの専用のパケットを割り当てる。従って、実施例1ではパケットの格納するIDは処理部によって変更されることはない。これにより、同じ処理部が出力するパケットでバス上が埋め尽くされる事で生じるデッドロックを回避することができる。
【0054】
少なくとも、1つのデータ処理部(モジュール)について専用のパケットを設ければ、そのデータ処理部は他のデータ処理部にパケットを埋め尽くされる恐れが無くなる。複数のモジュールが順番にパイプライン処理をする場合に、入力されるパケットの数より多くのパケットを出力するモジュールよりも処理順番が後段のモジュールに専用のパケットを設ければ、パケット埋め尽くしによるデッドロックが発生する可能性は低くなる。
【0055】
また、図7に示すように同じIDを有するパケットを制御処理部501が隣り合わないように配置することで、リングバスを流れるパケットの偏りを減らし、データが効率良く処理されるようになる。例えば、同じIDを有するパケットが局所的に連続する場合、各処理部は自身の保持する固有IDと異なるIDを有するパケットが連続している間は処理したデータを出力できないので効率が良くないことがある。そこで、制御処理部501がパケットをマッピングする際に配置間隔というパラメータに基づいてマッピングするようにしてもよい。例えば、〔配置間隔=1〕の場合は同じIDを有するパケットの間には少なくとも1つの別のIDを有するパケットがマッピングされる。
【0056】
ただし、データ処理部の少なくとも1つが2つ以上のパケットを入力されないと、処理が始まらない場合(例えば、縮小処理等)、その処理部の固有IDを有するパケットのみ処理に必要な数だけ連続して配置してもよい。
【0057】
<実施例2>
実施例1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
【0058】
実施例1ではリングバスから取得したパケットのIDが処理部の固有IDと一致しない場合、出力データ生成部105はパケットに処理後のデータを格納しなかった。しかし、本実施例では一致しない場合でも、データ有効信号が無効を示していればパケットに処理後データの格納を行っても良いとする。以下の説明ではそのようなパケットを借用パケットと呼ぶ。また、借用したパケットは借用元のデータ処理部が借用する前のIDを再度格納することで開放する。
【0059】
なお、本実施例ではフィールド204にIDとは別に借用フラグを格納する領域を1ビット割り当てる。そして、フラグが1であれば借用パケットを示しており、0であれば借用パケットではないことを示しているとする。さらに、借用したパケットに借用する前のIDを付加する為に、各パケットを識別するパケット用の固有ID(以下、統一IDと呼称する)を付加する。
統一IDはパケット毎に固有の識別子とする。
【0060】
本実施例におけるデータ処理部のブロック図を図1に示す。
【0061】
出力データ生成部105は、入力データ識別部から取得する空パケットのIDが固有IDと異なっていても、現在借用しているパケット数が所定数を越えていなければ、データと自身の固有IDを格納する。出力データ生成部105には借用パケット数をカウントするカウンタを有している。また、空パケットを借用する際は、借用するパケットの元のIDと借用した処理部の固有IDとを図10に示すように借用テーブルに保持する。
【0062】
図8は本実施例におけるお出力データ生成部105のフローチャートである。なお、ステップ901、904〜908、913〜918は夫々、図6のステップ601、604〜608、609〜614と同様の処理であるので説明を省略する。
【0063】
ステップ902では借用パケット開放ステップを行う。詳細は後述する。
【0064】
ステップ903ではステップ902で借用パケットを開放したか否かを判断し、開放したのであればステップ918を実行する。開放しなかったのであればステップ904を実行する。
【0065】
ステップ909では借用パケットカウンタの値が設定数(最大借用パケット数)よりも小さいかをチェックする。借用パケットカウンタの値が最大借用パケット数よりも小さければ、ステップ910で借用パケットカウンタを1だけインクリメントする。ステップ911ではパケットのIDを自らの処理部の固有IDで上書きする。ステップ912ではテーブルに統一IDと固有IDとの対応を格納する。
【0066】
次にステップ902で示した借用パケット開放処理に関するフローチャートを図9に示す。以下で説明する。ステップ1001ではパケットから統一IDを取得する。ステップ1002ではパケットのデータ有効信号を確認する。データ有効信号が0であればステップ1003を実行し、1であれば処理を終了する。
【0067】
ステップ1003では借用フラグを0にする。ステップ1004ではテーブルから借用前のパケットのIDを取得する。ステップ1005では取得したIDをパケットのIDとして再び設定する。ステップ1006では借用パケットカウンタを1デクリメントする。
【0068】
以上説明したように受信した空パケットのIDが固有IDと異なる場合でも、一時的にパケットを借用することで、より効率的にデータ処理を行うことが可能である。
【0069】
なお、統一IDを用いなくても借用フラグを用いるだけでも同様の効果を奏する事ができる。その場合には、出力データ生成部105は借用フラグが1になっているパケットを受信した際に、開放する処理をテーブルに基づいて行う。ここで、テーブルには借用元のIDと借用先のIDとの個数の関係を示す情報があれば、それに基づいて借用パケットを開放すればよい。
【0070】
<実施例3>
実施例1、2と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。本実施例ではどのデータ処理部でも利用可能な共用パケットを配置する。
【0071】
また、本実施例において出力データ生成部105は実施例1の場合に加え、パケットのIDが未設定の場合、又はパケットが共用を示す情報が付加されている場合でもパケットに処理データの格納を行う。
【0072】
本実施例の出力データ生成部105は同じ固有IDを有するパケットを所定の制御間隔以上で配置するための設定値を格納するレジスタ(以降、データ間隔格納部1205)を有している、又は参照可能である。制限間隔はID毎に設定されてもよい。なお、レジスタ815をデータ間隔格納部1205として利用してもよい。
【0073】
なお、本実施例ではパケットID204の最上位1ビット目を共用フラグとしており、このフラグが1であれば共用を示しており、0であればそれ以外を示しているとする。もちろん、共用フラグ専用の領域を別に設けてもよい。一方、データ有効信号が0に設定されている際に自らの占有とした場合は、最上位2ビット目の借用フラグを1にするものとし、それ以外の場合は0にするものとする。同様に借用識別領域をパケットに設けてもよい。そのようなパケットを借用パケットと以下では呼ぶ。また、本実施例ではパケットのIDが0の場合は、IDが未設定であるとする。
【0074】
また、出力データ生成部105は、自らの固有IDを付加したパケットを少なくともデータ間隔格納部1205が保持する値以上の間隔をもって送出するようにできる。また、その動作は指示によってON・OFFの制御ができるものとする。
【0075】
図11は本実施例における出力データ生成部105のフローチャートである。ステップ1301ではパケット一時保持バッファからパケットを取得する。ステップ1302ではパケットからIDを取得する。ステップ1303では自らの固有IDを保持するレジスタを参照して固有IDを取得する。
【0076】
ステップ1304では保持フラグを確認する。この、フラグが0であればステップ1305を実行し、1であればステップ1307を実行する。
【0077】
ステップ1305ではデータ処理部から処理後データを取得する。ステップ1306ではデータ処理部から有効な処理後データが得られたかを確認する。有効な処理後データが得られた場合はステップ1307を実行し、得られなかった場合はステップ1323を実行する。
【0078】
ステップ1307ではパケットから取得したIDと固有IDとを比較し、一致すればステップ1308を実行し、一致しなければステップ1315を実行する。ステップ1308ではパケットのデータ有効信号が0であるかを確認し、0であればステップ1309を実行し、1であればステップ1314を実行する。
【0079】
ステップ1309ではパケットに処理後データを格納し、ステップ1310では保持フラグを0にし、ステップ1311ではパケットのデータ有効信号を1に設定する。
【0080】
ステップ1312ではパケットのIDとして固有IDを格納する。ステップ1307でパケットIDと固有IDとが等しかった場合にはステップ1312の処理を省略して構わない。
【0081】
ステップ1313ではデータ間隔カウンタを0にリセットする。
ステップ1314ではパケットが共用を示しているかを確認する。共用を示していればステップ1315を実行する。共用を示していなければステップ1318を実行する。
【0082】
ステップ1315ではパケットのデータ有効信号が0であるかを確認する。0であればステップ1316を実行する。1であればステップ1319を実行する。
【0083】
ステップ1316ではデータ間隔格納部から所定の間隔値を取得する。ステップ1317ではステップ1316で取得した間隔値とデータ間隔カウンタを比較してデータ間隔カウンタが間隔値以上の場合はステップ1309を実行する。そうでなければ、ステップ1319を実行する。
【0084】
ステップ1308ではパケットのIDが未設定かを確認する。パケットのIDが未設定の場合はステップ1316を実行し、未設定でない場合はステップ1319を実行する。
【0085】
ステップ1319では処理後データをレジスタに保持する。ステップ1320では保持フラグを1にする。ステップ1321ではデータ間隔カウンタを1だけインクリメントする。ステップ1322ではパケットのデータ有効信号を0にクリアする。
【0086】
ステップ1323ではパケットをレジスタ等にコピーする。
なお、実施例1及び実施例2の場合と同様に保持フラグはデータ処理装置初期化時に0クリアされるものとする。
【0087】
以上説明したようにデータ処理部識別情報が未設定のパケットや共用パケットを占有し、ある間隔ごとに配置することでより効率的にデータ処理を行うことが可能である。
【0088】
上述の各実施例では、パケットのマッピングは制御処理部101が行うとしているが、リングバス上にパケット制御部を設置し該パケット制御部が制御処理部101の代わりにパケットの割り当てを行う様にしてもよい。その場合、制御処理部101を通過するパケットについて、前述のようにIDを格納する処理を行えばよい。
【0089】
上述の各実施例で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係を制限するものではない。また、説明の簡便のために通信部が6個の例を挙げたが、本発明を実施するためには通信部や処理部は複数有ればよい。
【0090】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をコンピュータ等の処理装置(CPU、プロセッサ)にて実行することで実現できる。
【0091】
また、本発明は前述した各実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【符号の説明】
【0092】
101 入力データ受信部
102 入力データ識別部
103 処理データ出力部
104 処理済みデータ入力部
105 出力データ生成部
106 出力データ送信部
107 データ処理部
【特許請求の範囲】
【請求項1】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、
前記モジュールは、
当該モジュール固有のIDを格納する格納手段と、
IDを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、
前記通信手段が、前記有効フラグが無効で且つパケットのIDと前記格納手段に格納しているIDとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項2】
前記モジュールは待ち受けIDを保持する保持手段を更に有し、
前記通信手段は、前記有効フラグが有効で且つパケットのIDと前記保持手段に格納しているIDとが一致するパケットからデータを抽出して処理手段に送ることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記モジュールの夫々に前記固有のIDと前記待ち受けIDとを設定する設定手段を更に有することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記設定手段は、前記固有のIDと前記待ち受けIDとを夫々のモジュールに設定することで、前記複数のモジュールに所定の順番でパイプライン処理を実行させることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記設定手段が前記モジュールの夫々の通信手段に、前記IDを有するパケットを割り当てることを特徴とする請求項3又は4に記載の情報処理装置。
【請求項6】
前記設定手段が前記モジュール固有のIDの夫々を少なくとも1つのパケットに割り当てることを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記モジュール固有のIDの夫々をパケットに割り当てる際に、前記設定手段は配置間隔に応じて同じIDをパケットに割り当てることを特徴とする請求項5又は6に記載の情報処理装置。
【請求項8】
前記通信手段は、データを格納したパケットのフラグを有効にして前記バスに送出することを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
前記通信手段は、データを抽出したパケットのフラグを無効にして前記バスに送出することを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記有効フラグが無効であれば、パケットのIDと前記保持手段に格納しているIDとが一致していなくても、所定数のパケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項2乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記パケットはパケットを複数のモジュールで共用していることを示す共用フラグを有し、共用フラグの有効なパケットについて前記有効フラグが無効であれば、パケットのIDと前記保持手段に格納しているIDとが一致していなくても、前記通信手段が当該パケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項2乃至9のいずれか1項に記載の情報処理装置。
【請求項12】
前記格納手段がレジスタであることを特徴とする請求項1乃至11のいずれか1項に記載の情報処理装置。
【請求項13】
複数のモジュールがバスを介してリング状に接続され、該モジュールがパケットをリング上の所定の方向へ転送する情報処理装置において、
前記モジュールは、
当該モジュール固有のIDを格納する格納手段と、
IDを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットが有効である事を示す有効フラグとIDとを識別する識別手段と、
前記通信手段と一対一で接続され、前記識別手段によって有効であることが識別されているパケットのデータを処理する処理手段と、
前記通信手段は、前記識別手段が前記有効フラグの無効なパケットで且つパケットのIDが前記格納手段に格納しているIDと一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項14】
パケットにIDを設定する設定手段を前記リング状のバスに更に有し、当該設定手段はIDが設定されていないパケットが通過する際にIDを設定することを特徴とする請求項13に記載の情報処理装置。
【請求項15】
パケットにIDを設定する設定手段を前記リング状のバスに更に有し、当該設定手段は前記有効フラグが無効のパケットにIDを設定することを特徴とする請求項13に記載の情報処理装置。
【請求項16】
前記設定手段は、同じIDを有するパケットの間隔が制御間隔以上になるように制御することを特徴とする請求項14又は15に記載のデータ処理装置。
【請求項17】
前記設定手段は、前記ID毎の制御間隔を保持し、同じIDを有するパケットの間隔がIDに応じた制御間隔以上になるように制御することを特徴とする請求項16記載のデータ処理装置。
【請求項18】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置における情報処理方法であって、
前記モジュールが、
当該モジュール固有のIDを格納する格納工程と、
IDを有するパケットを前記バスに対して送受信する通信工程と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理工程とを備え、
前記通信工程では、前記有効フラグが無効で且つパケットのIDと前記格納工程で格納しているIDとが一致するパケットに、前記処理工程で処理したデータを格納して送出することを特徴とする情報処理方法。
【請求項1】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置において、
前記モジュールは、
当該モジュール固有のIDを格納する格納手段と、
IDを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理手段とを備え、
前記通信手段が、前記有効フラグが無効で且つパケットのIDと前記格納手段に格納しているIDとが一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項2】
前記モジュールは待ち受けIDを保持する保持手段を更に有し、
前記通信手段は、前記有効フラグが有効で且つパケットのIDと前記保持手段に格納しているIDとが一致するパケットからデータを抽出して処理手段に送ることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記モジュールの夫々に前記固有のIDと前記待ち受けIDとを設定する設定手段を更に有することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記設定手段は、前記固有のIDと前記待ち受けIDとを夫々のモジュールに設定することで、前記複数のモジュールに所定の順番でパイプライン処理を実行させることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記設定手段が前記モジュールの夫々の通信手段に、前記IDを有するパケットを割り当てることを特徴とする請求項3又は4に記載の情報処理装置。
【請求項6】
前記設定手段が前記モジュール固有のIDの夫々を少なくとも1つのパケットに割り当てることを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記モジュール固有のIDの夫々をパケットに割り当てる際に、前記設定手段は配置間隔に応じて同じIDをパケットに割り当てることを特徴とする請求項5又は6に記載の情報処理装置。
【請求項8】
前記通信手段は、データを格納したパケットのフラグを有効にして前記バスに送出することを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
前記通信手段は、データを抽出したパケットのフラグを無効にして前記バスに送出することを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記有効フラグが無効であれば、パケットのIDと前記保持手段に格納しているIDとが一致していなくても、所定数のパケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項2乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記パケットはパケットを複数のモジュールで共用していることを示す共用フラグを有し、共用フラグの有効なパケットについて前記有効フラグが無効であれば、パケットのIDと前記保持手段に格納しているIDとが一致していなくても、前記通信手段が当該パケットに前記処理手段の処理したデータを格納して送出することを特徴とする請求項2乃至9のいずれか1項に記載の情報処理装置。
【請求項12】
前記格納手段がレジスタであることを特徴とする請求項1乃至11のいずれか1項に記載の情報処理装置。
【請求項13】
複数のモジュールがバスを介してリング状に接続され、該モジュールがパケットをリング上の所定の方向へ転送する情報処理装置において、
前記モジュールは、
当該モジュール固有のIDを格納する格納手段と、
IDを有するパケットを前記バスに対して送受信する通信手段と、
前記パケットが有効である事を示す有効フラグとIDとを識別する識別手段と、
前記通信手段と一対一で接続され、前記識別手段によって有効であることが識別されているパケットのデータを処理する処理手段と、
前記通信手段は、前記識別手段が前記有効フラグの無効なパケットで且つパケットのIDが前記格納手段に格納しているIDと一致するパケットに、前記処理手段の処理したデータを格納して送出することを特徴とする情報処理装置。
【請求項14】
パケットにIDを設定する設定手段を前記リング状のバスに更に有し、当該設定手段はIDが設定されていないパケットが通過する際にIDを設定することを特徴とする請求項13に記載の情報処理装置。
【請求項15】
パケットにIDを設定する設定手段を前記リング状のバスに更に有し、当該設定手段は前記有効フラグが無効のパケットにIDを設定することを特徴とする請求項13に記載の情報処理装置。
【請求項16】
前記設定手段は、同じIDを有するパケットの間隔が制御間隔以上になるように制御することを特徴とする請求項14又は15に記載のデータ処理装置。
【請求項17】
前記設定手段は、前記ID毎の制御間隔を保持し、同じIDを有するパケットの間隔がIDに応じた制御間隔以上になるように制御することを特徴とする請求項16記載のデータ処理装置。
【請求項18】
複数のモジュールがバスを介してパケットを送受信することで通信可能に接続されている情報処理装置における情報処理方法であって、
前記モジュールが、
当該モジュール固有のIDを格納する格納工程と、
IDを有するパケットを前記バスに対して送受信する通信工程と、
前記パケットのうち、当該パケットが有効であることを示す有効フラグを有するパケットのデータを処理する処理工程とを備え、
前記通信工程では、前記有効フラグが無効で且つパケットのIDと前記格納工程で格納しているIDとが一致するパケットに、前記処理工程で処理したデータを格納して送出することを特徴とする情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−245953(P2010−245953A)
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願番号】特願2009−94099(P2009−94099)
【出願日】平成21年4月8日(2009.4.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年10月28日(2010.10.28)
【国際特許分類】
【出願日】平成21年4月8日(2009.4.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]