(57)【要約】【課題】リング状バスを用いた処理装置では、処理モジュールに入力することができないデータパケットがリング状バスを占有して処理が継続できないデッドロック状態に陥る可能性があった。【解決手段】リング状バスと、リング状バスに接続され、周回するパケットを用いて相互にデータの授受を行う複数のデータ処理手段と、リング状バスにパケットと区別される特別パケットを投入し、リング状バスを周回させる投入手段とを備え、複数のデータ処理手段の各々は、データの送信に際して特別パケットを空の状態で取得した場合には、特別パケットを用いて送信先のデータ処理手段がデータを受け入れ可能か否かを確認し、受け入れ可能であると判断された場合には、特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信することを特徴とする。【選択図】図１
2010268241.tif 000002
【特許請求の範囲】
【請求項１】
リング状バスと、
前記リング状バスに接続され、前記リング状バスを周回するパケットを用いて相互にデータの授受を行う複数のデータ処理手段と、
前記リング状バスに前記パケットと区別される特別パケットを投入し、前記リング状バスを周回させる投入手段とを備え、
前記複数のデータ処理手段の各々は、
データの送信に際して前記特別パケットを空の状態で取得した場合には、前記特別パケットを用いて前記データの送信先のデータ処理手段がデータを受け入れ可能か否かを確認する確認手段と、
前記確認手段により受け入れ可能であると判断された場合には、前記特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信する送信手段とを備えるデータ処理装置。
【請求項２】
前記確認手段は、
送信元のデータ処理手段から前記送信先のデータ処理手段に宛てて、前記特別パケットを問い合わせパケットとして送信する手段と、
前記送信先のデータ手段が前記問い合わせパケットを受信したときデータを受け入れ可能であれば、前記問い合わせパケットをそのまま前記リング状バスへ戻して前記リング状バスへ送信し、受け入れ不可であれば、前記問い合わせデータを空の状態の前記特別パケットに戻して前記リング状バスへ送信する手段と、
前記送信元のデータ処理手段は、前記送信先のデータ処理手段へ送信した前記問い合わせパケットを前記リング状バスより受信した場合に前記送信先のデータ処理手段が受け入れ可能であると判断する手段とを備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
外部にデータを入出力する入出力部を更に備える請求項１又は２に記載のデータ処理装置。
【請求項４】
トークンリングバスと、
前記トークンリングバスに接続され、前記トークンリングバスを周回するパケットを用いて相互にデータの授受を行う複数のデータ処理装置と、
前記トークンリングバスに前記パケットと区別される特別パケットを投入し、前記トークンリングバスを周回させる投入手段とを備え、
前記複数のデータ処理装置の各々は、
データの送信に際して前記特別パケットを空の状態で取得した場合には、前記特別パケットを用いて前記データの送信先のデータ処理装置がデータを受け入れ可能か否かを確認する確認手段と、
前記確認手段により受け入れ可能であると判断された場合には、前記特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信する送信手段とを備えるデータ処理システム。
【請求項５】
リング状バスと、前記リング状バスに接続され、前記リング状バスを周回するパケットを用いて相互にデータの授受を行う複数のデータ処理手段におけるデータ処理の方法であって、
前記リング状バスに前記パケットと区別される特別パケットを投入し、前記リング状バスを周回させる工程と、
前記複数のデータ処理手段の各々が、データの送信に際して前記特別パケットを空の状態で取得した場合には、前記特別パケットを用いて前記データの送信先のデータ処理手段がデータを受け入れ可能か否かを確認する工程と、
前記複数のデータ処理手段の各々が、前記確認の結果、受け入れ可能であると判断された場合には、前記特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信する工程とを備える方法。
【請求項６】
リング状バスと、
前記リング状バスに接続され、前記リング状バスを周回するパケットを用いて相互にデータの授受を行う複数のデータ処理手段と、
前記リング状バスに前記パケットと区別される特別パケットを投入し、前記リング状バスを周回させる投入手段と、
を備えるコンピュータを
データの送信に際して前記特別パケットを空の状態で取得した場合には、前記特別パケットを用いて前記データの送信先のデータ処理手段がデータを受け入れ可能か否かを確認する確認手段と、
前記確認手段により受け入れ可能であると判断された場合には、前記特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信する送信手段とを
実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のデータ処理部へのデータフローを制御することで確実なデータ処理を実現する情報処理システムに関する。
【背景技術】
【０００２】
従来、プリント画像処理のような一連のデータ処理を高速に効率よく実現するため、全体のデータ処理を所定の機能に分割してハード化し、ハード化されたモジュールを処理の流れ順に接続して一連のデータ処理をパイプライン的に実行する方法が知られている。
【０００３】
一方、画像処理においては、一連の処理の順序を変えることで効率的に処理を実現できる。例えば、所定の画素数の出力装置に画像を出力する場合、画素数あるいは解像度を合わせるため解像度変換が必要となる。入力画像の画素数が出力装置の画素数よりも多い場合は、処理の上流側で解像度変換を行い、画素数を少なくしてから処理を行った方が良い。しかし、入力画像の画素数が出力装置の画素数よりも少ない場合は、解像度変換を行わずに画素数が少ない状態で処理行い、出力の直前（下流側）で解像度変換を行った方が良い。
【０００４】
また例えば、ある空間（例えば、入力デバイス空間）から標準的な空間（例えば、解像度600ppi、CIELAB色空間等）に変換して処理を行い、別の空間（例えば、出力デバイス空間）に変換する場合を考える。このとき、入力側と出力側の空間変換部の処理順（１次元ＬＵＴ、行列演算、３次元ＬＵＴ等の処理の順序）は逆になる。つまり、処理の順序を変えることができれば、同じ処理モジュールを入力側と出力側とで共用することもできる。しかしながら、上記データ処理方法においては、処理の順序を変えることができない。従って、例えば同じ機能のモジュールを複数実装することで対応していたため無駄なモジュールがあった。
【０００５】
特許文献１では、上記課題を解決するためには、各処理モジュール間をリング状のネットワークで接続する方法が提案されている。この手法によれば、リング状ネットワークにてデータの接続先を変更することにより、処理順序の変更が可能である。
【０００６】
また、デッドロックとは、処理モジュールに入力することができないためデータパケットによってリング状バスに占有された状態を意味する。特許文献１では、このデッドロック状態で、一時的にデータパケットを保持するためのキューを具備することを提案している。つまり、デッドロック状態後に一時的なリング状バス上に空きをまず作る。そして、バスの占有によって妨害されていた処理モジュールに入力可能なデータパケットの送出を可能にしてリング状バス上での処理を継続できるようにする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０１−０２３３４０
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の方法では、デッドロック状態で一時的に有効とするキューの長さ（量）には上限がある。したがって、想定内の占有状況に対してはデッドロックを回避できるが、一時的なキューの有効化後も継続するような想定を超える占有状況が生じる場合がある。このときは、たとえ一時的なキューを使用したとしても、いずれは処理モジュールに入力することができないデータパケットが生じる可能性がある。その場合、リング状バスを占有して再度デッドロック状態に陥る。また、デッドロック状態を回避するための一時的な一定量のキューを用意する必要があり、データ装置の回路規模を不必要に大きくてしまう。
【０００９】
本発明は上述した課題を解決するものであり、リング状バス上のデッドロック状態を回避するデータ処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
データ処理装置であって、リング状バスと、前記リング状バスに接続され、前記リング上バスを周回するパケットを用いて相互にデータの授受を行う複数のデータ処理手段と、前記リング状バスに前記パケットと区別される特別パケットを投入し、前記リング状バスを周回させる投入手段とを備え、
前記複数のデータ処理手段の各々は、
データの送信に際して前記特別パケットを空の状態で取得した場合には、前記特別パケットを用いて前記データの送信先のデータ処理手段がデータを受け入れ可能か否かを確認する確認手段と、前記確認手段により受け入れ可能であると判断された場合には、前記特別パケットを用いて前記データを前記送信先のデータ処理手段へ送信する送信手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の構成をとることで、リング状バスが通常のデータパケットによってどのような占有状況であったとしても確実にデッドロック状態を回避することができる。また、従来の方法のようなデッドロック状態を回避するための一時的な一定量のキューを用意する必要がないため、データ装置の回路規模を小規模にできる。
【図面の簡単な説明】
【００１２】
【図１】データ処理装置の一構成例を示すブロック図。
【図２】通信部の一構成例を示すブロック図。
【図３】データ受信部の一構成例を示すブロック図。
【図４】データ送信部の一構成例を示すブロック図。
【図５】リング状バス上を流れるパケットの一構成例を示す図。
【図６】リング状バス上を流れるパケットの分類例を示す図。
【図７】データ受信部の動作手順を示すフロー図。
【図８】データ送信部の動作手順を示すフロー図。
【図９】５つのデータ処理部によるデータ処理装置の一構成例を示すブロック図。
【図１０】データ処理装置を有するシステムの構成例を示すブロック図。
【図１１】データ処理装置の制御手順を示すフロー図。
【発明を実施するための形態】
【００１３】
以下に本願発明の実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれる一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明である。
【００１４】
これより、添付図面に従って実施形態１について詳細に説明する。
【００１５】
＜実施形態１＞
（構成）
図１は、本発明の実施形態１におけるデータ処理装置の構成例を示すブロック図である。この図で、データ入出力部１０１は、通信部１０２−１と接続され、ｍ−１個の通信部１０２−２〜１０２−ｍの各々は、それぞれデータ処理部１０３−２〜１０３−ｍと接続されている。またｍ個の通信部１０２−１〜１０２−ｍの各々は、リング状バス１０４により隣接する通信部に接続され、相互にデータの授受を行う。図１では右端の通信部１０２−ｍを左端の通信部１０２−１に接続することでリング状バスを構成している。つまり、上記通信部１０２−１〜１０２−ｍは、リング状バス１０４を構成すると共に、リング状バスとデータ入出力部またはデータ処理部との間でのデータの送受信を行う。通常パケット１０５は、リング状バス１０４を周回することにより、所定の順序で、各データ処理部１０３−２〜１０３−ｍにおいて処理される。また、特別パケット１０６も少なくとも１つリング状バス１０４に投入させる。この特別パケットの投入により、後述する、問い合わせパケットおよび特別データ転送パケットを生成することが可能となる。
【００１６】
入力端子１５１より入力されたデータは、データ入出力部１０１を介して通信部１０２−１に入力される。入力されたデータはパケット化され前記リング状バスに流される。通信部１０２−１〜１０２−ｍは、予め設定された情報に従って、必要なパケットを前記リング状バスより取り込む。そして、取り込んだパケットよりデータを抽出し、データ処理部１０３に入力する。データ処理部１０３では、所定のデータ処理（例えば色空間変換や解像度変換等）を行い、処理後のデータを通信部１０２へ出力する。処理後のデータは、通信部１０２にてパケット化されリング状バスに流される。
【００１７】
このように通信部１０２−２〜１０２−ｍによって、所定の順番でデータがデータ処理部１０３−２〜１０３−ｍへ運搬されて次々に処理されて行く。そして、予め設定されたデータ処理が終了したデータは通信部１０２−１にてデータ入出力部１０１に取り込まれ、出力端子１５２より出力される。なお、データ入出力部１０１は、外部の機器（またはモジュール）とのインタフェースを行うものであり、通信部１０２−１にて直接インタフェース可能な場合は省略可能である。なお、図１のリング状バスは、ＩＥＥＥ８０２．５の規格で規定されたネットワーク（ＬＡＮ）のトークンリングバスと考えても良い。この場合、各通信部１０２−１〜１０２−ｍは、ノードを有し、このノードは、後述の接続ＩＤに対応する。そして、このトークンリングにおいても、ここで述べる特別パケットを適用できる。
【００１８】
図２は、通信部１０２の一構成例を示すブロック図である。この通信部は、ＣＰＵ（不図示）などを用いた制御部を有し、これから述べる各機能部の動作を総合的に制御する。この図において、受信部２０１はリング状バスにおけるパケットを受信し、バッファ２０２は受信したデータを一時的に保管し、セレクタ２０３は送信部２０４からのデータまたはバッファ２０２からのデータを選択してリング状バスへ送出し、送信部２０４はバッファ２０２または処理部からのデータを送信するための処理を行う。
【００１９】
１つ前の通信部の出力端子２５９は、この通信部の入力端子２５７に接続され、その結果、通信部１０２−１〜１０２−ｍによりリング状バスが構成される。また信号線を表わす２５１、２５２、２５３、２５４、２５５および２５６には、データ処理部１０３（１０３−２〜１０３−ｍの内の１つ）が接続されている。
【００２０】
図５にリング状バスを流れるデータパケット（以下パケット）のフォームの一例を示す。この図において、ＶＡＬＩＤフラグ５０１、ストールフラグ５０２、カウント５０３、および接続ＩＤ５０４で示される部分は、パケットのヘッダ部である。ＶＡＬＩＤフラグ５０１はパケットが有効であることを示すフラグであり、セット（１）で有効、クリア（０）で無効を示す。ストールフラグ５０２はパケットが受信保留か否かを示すフラグであり、セット（１）で保留、クリア（０）で非保留を示す。カウント５０３はデータの送信順を示すカウント値であり、通常１以上が有効値である。接続ＩＤ５０４はデータの論理的な接続を識別するための接続ノードＩＤであり、通常１以上が有効値である。データフレーム５０５は、通信部に入力または出力されるデータである。
【００２１】
パケットの各フラグの初期値はそれぞれＶＡＬＩＤフラグ５０１が無効（０）、ストールフラグ５０２が非保留（０）、カウント５０３が０、接続ＩＤ５０４が０とする。これは通常空きパケット（空の通常パケット）である。
【００２２】
特別空きパケット（空の特別パケット）は初期化時にストールフラグ５０２をセットして通常空きパケットと区別し、リング状バス上で使用できるようにすることで実現する。なお、処理中のどのパケットを特別パケットにするか、あるいは特別パケットを複数用意するかは重要ではない。また、途中で特別パケットの数を増減させることもできる。例えば、最初に特別なパケットを０個にしておいて必要な時に増やす、あるいは動作中の不必要な時に一時的に０個にする制御方法も考えられる。しかし特別パケットが必要な時に１個以上存在することを保証できるような増減制御が可能でない限りはこのように最初に特別パケットを０個にすることを避け、１個以上の特別パケットをリング状バスに周回させるべきである。
【００２３】
図２において、１つ前に処理を行った通信部より入力端子２５７を通じて入力されたパケットは、バッファ２０２にて一旦保持され、次のクロックサイクルでセレクタ２０３に出力される。同時に受信部２０１は、入力端子２５７のパケットを監視する。そしてデータ転送中のＶＡＬＩＤフラグ５０１が有効な通常パケットが成立するとvalid信号２５１を有効にし、出力線２５２よりデータ処理部１０３へデータを出力する。また、ＶＡＬＩＤフラグ５０１無効、ストールフラグ５０２保留、カウント５０３の値０を示すデータ転送中の特別パケットの受信条件が成立した場合も、パケットを取り込み、valid信号２５１を有効にし、同様にデータ処理部１０３へデータを出力する。このとき、通信部のＣＰＵは信号線２６０を介して、バッファ２０２にデータの取り込みを通知し、バッファ２０２に格納される該通常パケットのＶＡＬＩＤフラグ５０１をクリア、あるいは該特別パケットの接続ＩＤ５０４を０にしてパケットを無効化（空きパケット化）する。
【００２４】
一方、データ転送中の通常パケットの受信条件が成立しない場合、通信部のＣＰＵは信号線２６０を介して、バッファ２０２にデータの保留を通知し、バッファ２０２に格納される該パケットのストールフラグ５０２をセットする。なお、特別なパケットによるデータ転送は、後述の処理において受信可能が確認された後に行われるため、常に受信が保証される。
【００２５】
また、受信部２０１が特別パケットを使った受信可か否かの問い合わせパケット（ＶＡＬＩＤフラグ５０１が無効、ストールフラグ５０２が保留、カウント５０３の値が１以上、接続ＩＤ５０４が１以上）を自身の処理モジュール宛てであると検知した場合を考える。このときは受信条件が成立するならば受信可能であることを通知するためにこの問い合わせパケットをそのままとし（図７のＳ７１５）、受信条件が成立しないのであればこれを無効化する（図７のＳ７１６参照）。無効化された受信可能性問い合わせパケットは特別パケットの空きパケットになるので、自身の処理モジュールの受信可か否かの問い合わせパケットとして、あるいは、他の処理モジュールで受信可か否かの問い合わせパケットとして再利用される（図８のＳ８１５参照）。送信部２０４は、バッファ２０２の出力パケットの信号線２５８を監視する。パケットがデータ転送中ならば、リング状バスにデータを出力できないので、接続されているデータ処理部１０３からのデータ出力を保留するためにストール信号２５４をセットする。一方、パケットが空いている状態ならば、接続されているデータ処理部１０３からのデータの出力条件が成立する場合、ストール信号２５４リセットする。そしてデータ出力のためのパケット（データ転送パケット）を生成し、セレクタ２０３を制御して、出力端子２５９より該生成したデータ転送パケットをリング状バスに流す。
【００２６】
ここで、パケットの送受信がデッドロック状態に陥らないようにするのに特別パケットを使用することを考える。この場合、特別パケットを使用して、リング状バスの送信の相手（次処理モジュール）が確実に次回処理データを受信できるか否かの問い合わせを行うようにする。
【００２７】
このため送信部２０４では、空きパケットが特別パケットの場合、データ出力のためのパケットの代わりに、次回処理データを受信可か否かの問い合わせる特別問い合わせパケットを生成し、これをリング状バスに流す。そして、送信部２０４が送信した受信可か否かの問い合わせパケットがリング状バスを周回して自身に戻ってきたことを検知すると、これを受信可の返答と判断して受信が保証されたデータのための特別データ転送パケットを生成しデータ転送を行う。ただし、カウント５０３を使って、問い合わせたデータを既に別のパケットで送っていない（カウント値が増えていない）ことを確認した上で、特別データ転送パケットの転送を行う必要がある。
【００２８】
特別データ転送パケットでは、同種の特別問い合わせパケットと区別するため、カウント５０３の値を特別問い合わせパケットでは使用しない０とする。このとき処理番号であるカウント５０３は、既に問い合わせパケットによって次処理のモジュールが確認しているのでカウント５０３の値が０であっても問題なく伝送できる。また、データ転送パケットが特別パケットか、あるいは通常パケットかの識別は、ＶＡＬＩＤフラグ５０１と、ストールフラグ５０２の値の組み合わせにより可能である。したがって、いずれのデータ転送パケットもデータ取り込み後に無効化してそれぞれの種類の空きパケットに戻すことができるので、特別パケットが消滅する（０個になる）ことはない。
【００２９】
図６は、これまでに説明したリング状バスを流れる有効なパケットの種類をまとめたものである。番号６０１に示すＶＡＬＩＤフラグ５０１（Ｖ）、ストールフラグ５０２（Ｓ）、カウント５０３（ＣＯＵＮＴ）、接続ＩＤ５０４（ノードＩＤ）の組み合わせにより、通常パケットと特別パケットの識別が行える。これにより通常パケットは３種類、特別パケットが３種類の計６種類のパケットが識別可能であることがわかる。これらのパケットを状況に応じて使い分ける。
【００３０】
（動作フロー）
以下、受信部２０１の構成と動作フローをそれぞれ図３と図７を使って説明する。また送信部２０４の構成と動作フローをそれぞれ図４と図８を使って述べる。本実施形態では、通常にデータを処理していた処理モジュールが、リング状バスにおける特別パケット１０６を受信した場合に対する処理フローに特徴がある。送信元の処理モジュールが処理部において既に処理されたデータを送信先に送ることができる場合、もし特別パケット１０６の空きパケットを受信していたならばこれを使用して特別問い合わせパケットを生成し、送信先の処理モジュールへリング状バスを介して送信する。また、送信先の処理モジュールが、特別問い合わせパケットを受信し、もしデータを受け入れ可能であるならば、特別問い合わせパケットをそのままリング状バスへ戻す。送信元の処理モジュールは、自身の送った特別問い合わせパケットをリング状バスから受信した場合、送信先の処理モジュールは、データを受信可能と判断する。そして、自身の処理モジュールの送信部が、まだ通常パケットによりデータを送信先の処理モジュールに送信していない場合、この特別問い合わせパケットを特別なデータ転送パケットに再生成し、データをリング状バスへ送信する。一方、特別問い合わせパケットを受信した送信先の処理モジュールでデータが受け入れ不可ならば、受信した特別問い合わせパケットを特別空きパケットに再生成し、リング状バスへ送信する。
【００３１】
以上が、特別パケットに関する処理フローのあらましである。
【００３２】
図３は、受信部２０１の一構成例を示すブロック図である。この図において、レジスタ３０１は自身のノードＩＤを示し、カウンタ３０２は処理番号を表わす。比較部３０３は入力されたパケットをレジスタ３０１とカウンタ３０２の出力と比較する。判定部３０４は自身宛ての処理のためのパケットか否かを判定する。
【００３３】
図７は受信部２０１における処理手順のフロー図である。このフロー図のステップを併用して、処理の流れを説明する。
【００３４】
比較部３０３は入力端子２５７より入力されるリング状バス上のパケットのＶＡＬＩＤフラグ５０１、ストールフラグ５０２、カウント５０３、接続ＩＤ５０４を監視する。そしてＳ７０１で、受信部２０１はパケットのＶＡＬＩＤフラグ５０１が有効であることを検知し、Ｓ７０２で、判定部３０４が該パケットの接続ＩＤ５０４が自身のレジスタ３０１に格納されている接続ＩＤと一致していると判定する。
【００３５】
Ｓ７０３で判定部３０４がパケットのカウント５０３がカウンタ３０２の値と一致していることを判定する。なお、Ｓ７０１では受信部２０１はＶＡＬＩＤフラグ５０１の有効を検知するとvalid信号２５１を有効とする。またＳ７０２で、通信部１０２のＣＰＵは接続ＩＤの一致を検知すると接続ＩＤが一致したことを示す入力パケット判定信号を判定部３０４に入力する。同時に、Ｓ７０３ではカウンタの値の一致を検知するとカウント値一致信号それぞれ比較部３０３から判定部３０４に入力する。このとき出力線２５２には該パケットのデータがデータ処理部１０３へ出力される。
【００３６】
Ｓ７０１、Ｓ７０２、Ｓ７０３でのそれぞれの検知が成功すると、Ｓ７０４へ移る。Ｓ７０４で、判定部３０４は入力パケット判定信号、カウント値一致信号、接続されたデータ処理部１０３からのストール信号２５３により、データ処理部１０３がデータを取り込めるかどうかを判定する。データを取り込めるのは、入力パケット判定信号とカウント値一致信号が入力されており、かつ接続されているデータ処理部１０３からのストール信号２５３が非保留の場合である。データを取り込めると判定した場合、Ｓ７０６において通信部１０２のＣＰＵは、信号線２６０を介してバッファ２０２にデータ取り込みを通知する。そして、バッファ２０２に格納される該パケットのvalidフラグとストールフラグをクリアすることでパケットを無効化する。この無効化された通常パケットは、図８の送信部の動作フローにおけるＳ８０８のＮｏの選択の後に通常パケットのデータ送信用として使用される。更にＳ７０７で、データ処理部１０３へデータを取り込む。このとき、前記データ取り込み通知信号はカウンタ３０２にも入力される。そして、Ｓ７０８で次のクロックサイクルにおいてカウンタ３０２のカウント値をインクリメント（＋１）して処理を終了する。
【００３７】
一方、Ｓ７０４で通信部１０２のＣＰＵがデータを取り込めないと判定した場合は、Ｓ７０５にてバッファ２０２に信号線２６０を介してデータの保留を通知する。そして、バッファ２０２に格納される該パケットのストールフラグをセットして処理を終了する。Ｓ７０５において、今回取り込めなかったデータはリング状バスを周回することになり、次の受信機会を待つことになる。
【００３８】
ところで、Ｓ７０２では、通信部１０２のＣＰＵは接続ＩＤの不一致を検知すると該パケットは自身宛てのパケットではないと判定して処理を終了する。また、Ｓ７０３でカウンタの値の不一致を検知すると取り込み対象パケットであるがデータの取り込み順序があっていないと判定する。この場合は、やはりデータを取り込めないので、通信部１０２のＣＰＵはＳ７０５へ処理を進め、今回取り込めなかったデータをリング状バスに周回させる。
【００３９】
さて、比較部３０３はＳ７０１で該パケットのＶＡＬＩＤフラグ５０１の無効を検知すると、Ｓ７０９にて該パケットのストールフラグ５０２の保留状態を調べる。ストールフラグ５０２が非保留であれば、通信部１０２のＣＰＵは該パケットが無効な通常パケット（空きパケット）であると判定し処理を終了する。ストールフラグ５０２が保留であれば、該パケットは特別パケットであると判定しＳ７１０以降の処理を継続する。
【００４０】
Ｓ７１０では、通信部１０２のＣＰＵは判定部３０４により該パケットの接続ＩＤ５０４が０か否かを調べる。接続ＩＤ５０４が０であれば、該パケットは無効な特別パケット（空きパケット）であると判定し処理を終了する。接続ＩＤ５０４が１以上であればＳ７１１以降の処理を継続する。
【００４１】
Ｓ７１１では、通信部１０２のＣＰＵは判定部３０４により該パケットの接続ＩＤ５０４がレジスタ３０１に格納されている接続ＩＤと一致しているか調べる。接続ＩＤが一致していなければ、該パケットは自身以外宛のパケットであると判定し処理を終了する。接続ＩＤが一致していれば、該パケットは自身宛のパケットであると判定し、Ｓ７１２以降の処理を行う。なお、Ｓ７１１で接続ＩＤの一致を検知すると接続ＩＤが一致したことを示す入力パケット判定信号が、比較部３０３から判定部３０４へ入力される。
【００４２】
Ｓ７１２では、通信部１０２のＣＰＵは判定部３０４により該パケットのカウント５０３が０か否かを調べる。カウント５０３が０であれば、該パケットは自身宛の特別パケットを使ったデータ転送であると判定し、Ｓ７１３で信号線２６０を介してバッファ２０２にデータ取り込みを通知する。また、バッファ２０２に格納される該パケットの接続ＩＤ５０４を０にすることでパケットを無効化する。更に、Ｓ７０６以降のデータ取り込み処理を行った後に処理を終了する。なお、このときカウント値一致信号は比較部３０３から判定部３０４へ入力され、データ処理部１０３からのストール信号２５３は非保留状態となる。
【００４３】
一方、Ｓ７１２で該パケットのカウント５０３が１以上であれば、該パケットは自身宛ての特別問い合わせパケットである。したがって、これ以降は特別問い合わせパケットに対する応答処理になる。この処理では、まず処理順番を確かめるためにＳ７１４で通信部１０２のＣＰＵは判定部３０４により該パケットのカウント５０３がカウンタ３０２の値と一致しているか否かを調べる。カウント値が一致していれば処理順番は正しく、次のＳ７１５以降の処理を行う。なお、このときカウント値一致信号も比較部３０３から判定部３０４へ入力される。
【００４４】
Ｓ７１５では、通信部１０２のＣＰＵは判定部３０４により問い合わせのあった順番のパケットを取り込めるか否かを判定する。判定の方法はＳ７０４と同じである。したがって、データ処理部１０３からのストール信号２５３が非保留であれば取り込みが可能であり、問い合わせに対しては受信可の意味で該パケットをそのままリング状バスへ戻す。データ処理部１０３からのストール信号２５３が保留であれば受信不可である。この場合、Ｓ７１６で信号線２６０を介してバッファ２０２に格納される該パケットの接続ＩＤ５０４を０とすることで特別問い合わせパケットを無効化して特別空きパケットを生成し処理を終了する。なお、Ｓ７１４で該パケットのカウント５０３がカウンタ３０２の値と一致していない場合も問い合わせに対し受信不可である。従って、Ｓ７１６で特別問い合わせパケットを無効化する。
【００４５】
図４は、送信部２０４の一構成例を示すブロック図である。図中、レジスタ４０１は、次処理を行う処理モジュールの接続ＩＤの値を有し、カウンタ４０２は、次処理の処理モジュールの処理カウント値を示す。比較部４０３は、バッファ２０２からの出力をレジスタ４０１とカウンタ４０２の値を比較する。パケット生成部４０４は、データ処理部１０３で処理されたデータをパケット化し生成する。
【００４６】
図８は送信部２０４における処理手順のフローチャートである。比較部４０３は、バッファ２０２の出力パケット（信号線２５８）のＶＡＬＩＤフラグ５０１とストールフラグ５０２、カウント５０３、接続ＩＤ５０４を監視する。
【００４７】
そしてＳ８０１で、通信部１０２のＣＰＵは、パケットのＶＡＬＩＤフラグ５０１が有効であることを検知する。Ｓ８０２で該パケットのストールフラグ５０２が非保留であることを検知し、Ｓ８０３で接続ＩＤ５０４がレジスタ４０１に格納されている接続ＩＤと一致していることを検知する。なお、前記Ｓ８０１でＶＡＬＩＤフラグ５０１の有効が検知された場合は、該パケットが使用中であることを意味し、リング状バスにデータ処理部１０３のデータを出力できない。従って、接続されているデータ処理部１０３からのデータ出力を保留するためにストール信号２５４をセットする。また、Ｓ８０２では接続ＩＤの一致を検知すると接続ＩＤが一致したことを示す入力パケット判定信号を比較部４０３からパケット生成部４０４に入力する。
【００４８】
さて通信部１０２のＣＰＵがＳ８０１、８０２、８０３でのそれぞれの検知に成功した場合、自身が過去に通常パケットを使って次処理のためにリング状バスへ周回させたデータ転送パケットが受信も保留もされずに戻ってきたことを意味する。すなわちリング状バスにはこのパケットの受信者が何らかの事情で存在しないので、これをＳ８０４において除去（空パケット化）する。このために比較部４０３はパケット生成部４０４を介してセレクタ２０３を制御し、ＶＡＬＩＤフラグ５０１をクリアすることでパケットを無効化する。これによりパケット生成部４０４からのデータ転送が可能となるので、比較部４０３は接続されているデータ処理部１０３からのデータ出力の保留を解除するためにストール信号２５４をクリアする。
【００４９】
そして、次のＳ８０５では、無効な（空の）通常パケットを自身の通常のデータ転送に利用するかどうかを判定する。パケット生成部４０４は、接続されているデータ処理部１０３のＶＡＬＩＤ信号２５６を参照する。パケット生成部４０４が、データ処理部１０３からのデータ出力が可能と判定した場合、すなわちＶＡＬＩＤ信号２５６が有効の場合を考える。このときＳ８０６にてＶＡＬＩＤフラグ５０１を有効、ストールフラグ５０２を非保留、カウント５０３をカウンタ４０２のカウント値、接続ＩＤ５０４をレジスタ４０１の接続ＩＤを付加したデータパケットを生成する。そして、通信部１０２のＣＰＵは、セレクタ２０３を制御し、出力端子２５９より生成したパケットをリング状バス上に流す。更に、次のクロックサイクルでＳ８０７によってカウンタ４０２のカウント値をインクリメント（＋１）する。
【００５０】
ところで、Ｓ８０２でパケットのストールフラグ５０２が保留であることを検知した場合は、自身或いは自身以外宛ての通常パケットのデータ転送パケットかつ保留中パケットを意味する。この場合このパケットを使用することはできないので、処理を終了する。また、Ｓ８０３で接続ＩＤの不一致を検知した場合は、自身以外宛ての通常パケットのデータ転送中パケットであるので、やはりこれを使用することはできないので、処理を終了する。またＳ８０５において通信部１０２のＣＰＵが、データ処理部１０３からの出力すべきデータ出力が無いと判定した場合も、処理することはできない。従って、セレクタ２０３を制御して、出力端子２５９より空の通常パケットをリング状バスに流す。
【００５１】
さて、比較部４０３がＳ８０１で該パケットのＶＡＬＩＤフラグ５０１の無効を検知した場合を考える。このとき、通信部１０２のＣＰＵは、接続されているデータ処理部１０３からのデータ出力を可能にするためにストール信号２５４をクリアし、Ｓ８０８で該パケットのストールフラグ５０２の保留状態を調べる。ストールフラグ５０２が非保留であれば、該パケットは無効な通常パケット（空きパケット）であると判定し、Ｓ８０５以降のデータ出力処理を継続する。ストールフラグ５０２が保留であれば、該パケットは特別パケットであると判定しＳ８０９以降の処理を継続する。
【００５２】
Ｓ８０９では、通信部１０２のＣＰＵは該パケットの接続ＩＤ５０４が０か否かを調べる。接続ＩＤ５０４が０であれば、該パケットは無効な特別空きパケットであると判定し、後述のＳ８１４以降の受信可か否かの問い合わせ処理を継続する。接続ＩＤ５０４が１以上であればＳ８１０以降の処理を継続する。
【００５３】
Ｓ８１０では、通信部１０２のＣＰＵは該パケットの接続ＩＤ５０４がレジスタ４０１に格納されている接続ＩＤと一致しているか否かを調べる。接続ＩＤが一致していなければ、該パケットは自身以外宛のパケットであると判定し処理を終了する。接続ＩＤが一致していれば、該パケットは自身がリング状バスへ流した特別問い合わせパケットが受理されたと判定し、Ｓ８１１以降の処理を継続する。なお、Ｓ８１０で接続ＩＤの一致を検知すると接続ＩＤが一致したことを示す入力パケット判定信号が、比較部４０３からパケット生成部４０４へ入力される。
【００５４】
Ｓ８１１では、通信部１０２のＣＰＵは該パケットのカウント５０３がカウンタ４０２の値と一致しているか否かを調べる。一致した場合は、特別問い合わせパケットによって問い合わせたデータをまだ出力していないということなので、このパケットを利用して特別データ転送パケット生成する。生成するには、問い合わせに使用したパケットのカウント５０３を０とし、次の処理モジュールで処理すべき次回処理データをデータフレーム５０５に入れれば良い。そして、セレクタ２０３を制御し、出力端子２５９より生成した特別データ転送パケットをリング状バス上に流す。その後は次のクロックサイクルでＳ８０７を実行する。Ｓ８１１で、該パケットのカウント５０３がカウンタ４０２の値と一致しなかった場合は、該パケットによって問い合わせたデータを問い合わせ期間中に別のパケットを使用して出力してしまったということを意味する。従って、比較部４０３はＳ８１３にてパケット生成部４０４を介してセレクタ２０３を制御し、接続ＩＤ５０４を０にすることでパケットを無効化する。この無効化された特別パケットは、リング状バスに戻され、また任意の処理モジュールで受信される。
【００５５】
Ｓ８０９で、該パケットの接続ＩＤ５０４が０の場合、該パケットは無効な特別空きパケットである。したがって、以降ではこのパケットを使用して次処理を行う処理モジュールに対して受信可か否かの問い合わせパケットの送信処理を行う。そのためにはまず、通信部１０２のＣＰＵは、Ｓ８１４においてＳ８０５と同様にデータの出力が可能か否かを調べる。その結果、データ出力が可能であれば、Ｓ８１５においてＶＡＬＩＤフラグ５０１を無効、ストールフラグ５０２を保留、カウント５０３をカウンタ４０２のカウント値、接続ＩＤ５０４をレジスタ４０１に設定された接続ＩＤを付加した特別問い合わせパケットを生成する。そして、セレクタ２０３を制御して、出力端子２５９より生成した問い合わせパケットをリング状バスに流す。ただし、この場合実際に処理データを送るわけではないのでカウンタ４０２の値は変化させない。一方、Ｓ８１４でデータ出力が無い場合は、特別問い合わせパケットは生成せず、処理を終了する。
【００５６】
図９はデータ処理部が５個で構成されるリング状バスを有するデータ処理システムのブロック図である。図に示すように各データ処理部１０３−２〜１０３−６では、各々処理部Ａ〜処理部Ｅで示される処理が入力データに対し施されるものとする。データ処理部１０３−２〜１０３−６の順番は任意に設定されるが、最終の処理の結果は入出力部１０１の出力端子１５２へ現れる。最終出力は常にデータを待つ状態にあり、言い換えれば受け取り可能なため、最後のデータ処理部の通信部と入出力部１０１の通信部１０２−１間のデータ転送は常に成立することが保証される。いま、図９における処理の順を処理部Ａ、処理部Ｃ、処理部Ｅ、処理部Ｄ、処理部Ｂとすると処理部Ｂの通信部１０２−３からの処理出力は入出力部１０１の通信部１０２−１が必ず受信できる。したがって、特別パケット（特別空きパケット）が少なくとも１つ存在すれば、この通信部１０２−３と１０２−１間のデータ転送は他の通常パケットの状況にかかわらず保証される。よって、リング状バスに流された処理部Ｂのすべての処理結果は必ず出力部１０１を通ってリング状バスの外へ出される。その結果、処理部Ｂは必ず処理部Ｄからの次のデータを受信可能な状態となり、このときも特別パケットが少なくとも１つ存在するので、他の通常パケットの状況にかかわらず通信部１０２−５と１０２−３間のデータ転送保証される。すなわち、特別問い合わせパケットと特別データ転送パケットにより確実なデータ転送が行われる。つまり、特別パケットが必ず少なくとも１つ存在するリング状バスでは、入力データが届かないために処理が止まっているデータ処理部を見つけ、そこへ順次データを送り届けることができるので、滞りつつある通信部間のデータ転送であっても確実にデータ処理が進められ、デッドロック状態を回避できる。
【００５７】
＜実施形態２＞
（構成）
実施形態２では、実施形態１で述べたリング状バスを利用したデータ処理装置が、いかにして全体システムに組み込まれ適用されるか、その例を示す。図１０は、データ処理装置を含むシステム全体の構成例を示す。
【００５８】
システム制御部１１００は、いわゆるコンピュータであり、演算制御用のＣＰＵ１１０１、固定データやプログラムを格納するＲＯＭ１１０２、データの一時保存やプログラムのロードに使用されるＲＡＭ１１０３および、外部データを保持する外部記憶装置１１０４等により構成される。
【００５９】
ＣＰＵ１１０１は、処理すべきデータをシステム外部より取り込むデータ入力部である。たとえばイメージスキャナおよびＡ／Ｄ変換器などのデバイスによって構成される画像読み込み装置や、マイクおよびＡ／Ｄ変換などのデバイスによって構成される音声入力装置などであってもよい。
【００６０】
データ処理装置１１２０は、本実施形態におけるリング状バスによるデータ処理を行う。データ出力部１１３０は、本システムにおいて処理されたデータを外部に出力する。例えば、データ処理装置１１２０は、画像データを印字ドットパターンに変換して出力するプリンタデバイスを含む画像出力装置や、音声データをＤ／Ａ変換器等を通して出力する音声出力装置であってもよい。
【００６１】
データ入力部１１１０において入力されたデータは、システム制御部１１００の送られてＣＰＵ１１０１で処理されてもよいし、そのままＲＡＭ１１０３や外部記憶装置１１０４に一時記憶されてもよい。従ってデータ処理装置１１２０は、データ入力部１１１０からの入力データを直接受け取って処理を行っても、システム制御部１１００からの指示ならびにデータ供給によって処理を行ってもよい。また、データ処理装置１１２０の出力は、再度システム制御部１１００に送られても、更に、直接データ出力部１１３０に送られてもよい。
【００６２】
データ処理装置１１２０には、システム制御部１１００の制御によって、様々なデータに対する処理が設定され、そして様々な処理データが供給され、その設定に応じた処理を実行し、処理データを外部に出力する。
【００６３】
（動作フロー）
図１１に、システム制御部１１００からのデータを処理するデータ処理装置の制御手順を示す。制御処理が開始されると、Ｓ１２１０において、データ処理システムのリセットが行われる。このとき、リング状バスを構成するバッファ２０２、接続ＩＤを設定するレジスタ３０１、レジスタ４０１、データ処理順を示すカウンタ３０２、カウンタ４０２、不図示のカウンタ増分レジスタ、パケット無効化設定レジスタ等が初期化される。なお、本実施形態では、特別パケットを識別するために接続ＩＤやカウンタが０であることを利用しているので、接続ＩＤには１以上の値、各カウンタの初期値には１を使う。
【００６４】
Ｓ１２２０において、通信部１０２の接続ＩＤを格納するレジスタ３０１、レジスタ４０１が設定される。また、必要に応じて、データ処理順を示すカウンタ３０２、カウンタ４０２の初期値や増分、パケット無効化設定レジスタ等が設定される。Ｓ１２３０において、データの処理部１０３に対するパラメータ指定などが行われ、Ｓ１２４０において、データ処理システムの起動指示が行われる。
【００６５】
Ｓ１２５０では、データ処理装置の終了通知を監視する処理が行わる。このステップは、Ｓ１２６０において、処理終了が検知されたことを判断するまで繰り返される。Ｓ１２６０において、データ処理装置の終了通知が確認されると、処理を終了する。
【００６６】
以上説明したように、応用範囲の広いシステムに実施形態１のデータ処理装置を含めると、データ処理におけるデットロックを回避できることがわかる。システムのデータ処理装置には、まず装置内のリング状バスを周回する処理データと少なくとも１つの特別データパケットが用意される。この特別パケットを任意の処理モジュールが受信することで、特別問い合わせパケットが生成され、処理モジュール間で確実にデータパケットが転送できることが確認された後、特別データ転送パケットによりに処理データが確実に転送される。従って、リング状バスが通常のデータパケットによってどのような占有状況であったとしても確実に処理を継続できるため、デッドロック状態に陥らずに処理を継続することが可能となる。
【００６７】
また、前述の各実施例の処理は、複数のハードウェアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行することで実現できる。また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【図１】
2010268241.tif 000003
【図２】
2010268241.tif 000004
【図３】
2010268241.tif 000005
【図４】
2010268241.tif 000006
【図５】
2010268241.tif 000007
【図６】
2010268241.tif 000008
【図７】
2010268241.tif 000009
【図８】
2010268241.tif 000010
【図９】
2010268241.tif 000011
【図１０】
2010268241.tif 000012
【図１１】
2010268241.tif 000013