(57)【要約】【課題】  リングバスにおいて保留され滞留するパケットの増大を抑制すること。【解決手段】  リング状のバスで接続されている複数の通信手段と、複数の通信手段の各々に対応し、複数の通信手段から供給されるデータを処理する複数の処理手段と、を備え、複数の通信手段のうち、第１の通信手段は、自身に対応する処理手段がデータを受け付けられない状態にあると、処理手段が受け付けられなかったことを示す保留情報を、処理手段が受け付けられなかったデータに付加して、リング状のバスを周回させ、複数の通信手段のうち、第２の通信手段は、保留情報の付加されているデータに基づいて、リング状のバスへのデータの入力を抑制する。【選択図】  図３
2013175156.tif 000002
【特許請求の範囲】
【請求項１】
リング状のバスで接続されている複数の通信手段と、
前記複数の通信手段の各々に対応し、前記複数の通信手段から供給されるデータを処理する複数の処理手段と、を備え、
前記複数の通信手段のうち、第１の通信手段は、自身に対応する処理手段がデータを受け付けられない状態にあると、前記処理手段が受け付けられなかったことを示す保留情報を、前記処理手段が受け付けられなかったデータに付加して、前記リング状のバスを周回させ、
前記複数の通信手段のうち、第２の通信手段は、前記保留情報の付加されているデータに基づいて、前記リング状のバスへのデータの入力を抑制する、
ことを特徴とするデータ処理装置。
【請求項２】
複数の通信手段がリング状にバス接続され、処理手段で処理されたデータの受け渡しを行うデータ処理システムにおいて、外部からのデータ入力を受け付けてそのデータを前記バスへ入力する入力制御装置であって、
外部に出力されるべき状態にあるデータであって出力を保留されて前記バスに残ったデータの数を取得する取得手段と、
当該データの数に基づいて、データの受け付けを制御する制御手段、
を有することを特徴とする入力制御装置。
【請求項３】
前記制御手段は、前記データの数が第１の所定値以上である場合に、データの受け付けを保留する、
ことを特徴とする請求項２に記載の入力制御装置。
【請求項４】
前記制御手段は、前記データの数が、第１の所定値以上となったときから、前記第１の所定値より大きい第２の所定値を超えた後に減少して当該第２の所定値以下となるまで、データの受け付けを保留する、
ことを特徴とする請求項２に記載の入力制御装置。
【請求項５】
前記制御手段は、前記データの数が、第１の所定値以上となったときから、前記第１の所定値より小さい第２の所定値以下となるまで、データの受け付けを保留する、
ことを特徴とする請求項２に記載の入力制御装置。
【請求項６】
前記制御手段は、さらに、外部へのデータの出力が保留されている状態であるかを示す情報に基づいて、データの受け付けを制御する、
ことを特徴とする請求項２から５のいずれか１項に記載の入力制御装置。
【請求項７】
リング状のバスで接続されている複数の通信手段と、前記複数の通信手段の各々に対応し、前記複数の通信手段から供給されるデータを処理する複数の処理手段と、を備えるデータ処理装置の制御方法であって、
前記複数の通信手段のうち、第１の通信手段は、自身に対応する処理手段がデータを受け付けられない状態にあると、前記処理手段が受け付けられなかったことを示す保留情報を、前記処理手段が受け付けられなかったデータに付加して、前記リング状のバスを周回させ、
前記複数の通信手段のうち、第２の通信手段は、前記保留情報の付加されているデータに基づいて、前記リング状のバスへのデータの入力を抑制する、
ことを特徴とする制御方法。
【請求項８】
複数の通信手段がリング状にバス接続され、処理手段で処理されたデータの受け渡しを行うデータ処理システムにおいて、外部からのデータ入力を受け付けてそのデータを前記バスへ入力する入力制御装置における制御方法であって、
取得手段が、外部に出力されるべき状態にあるデータであって出力を保留されて前記バスに残ったデータの数を取得する取得工程と、
制御手段が、当該データの数に基づいて、データの受け付けを制御する制御工程、
を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リング状のバスへのデータの入力制御を行うデータ処理装置、入力制御装置、及び制御方法に関する。
【背景技術】
【０００２】
従来、複数のモジュールが通信可能に接続され、並列処理をするデータパス制御システムにおいて、効率的なパケットの転送を行う方法として、優先度に応じてパケットの転送を行う方法が提案されている。
【０００３】
特許文献１には、リングバスで各モジュールを接続し、各モジュールで処理したデータパケットを次段のモジュールに転送して一連の処理を実行させる方法が記載されている。特許文献１の構成では、あるモジュールにおいて処理が終了した後、そのモジュールを識別する識別子を含めた信号をリングバス上に送出する。次の処理を行うモジュールは、直前の処理を実行するモジュールの識別子を予め記憶しておき、信号にその識別子が含まれている場合に処理を実行する。また、特許文献１では、モジュールが処理を保留した場合に、当該モジュールは処理を保留した旨を示す情報を信号に含めて転送する。モジュールは、自らが送信した信号で、後段のモジュールが処理を保留した旨の情報が含まれる信号を受信した場合、その直後の処理を実行するモジュールにこれ以上の情報を送信しても処理できないと判定し、情報送信を一時停止する。これにより、分散制御において、少ない記憶容量で効率的なパケットの転送を実現している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２１７９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リングバスの出力においてデータ出力を保留した場合、リングバスへの入力を抑制又は停止する必要がある。しかしながら、特許文献１の方法では、あるモジュールは、自らの処理の直後に処理を実行するモジュールにおいて保留が発生したか否かを検出するのみである。このため、リングバスからのデータ出力を保留すると、各モジュールで自らが出力したデータが保留されたことを検出して出力を停止するのにリングバス１周分の時間が必要となり、入力の停止までの間に長い時間が必要となるという課題があった。このため、入力の停止までデータが入力され続け、この結果、保留パケットが増大して転送効率が著しく低下し、デッドロックが発生するおそれがあるという課題があった。
【０００６】
本発明は上記課題に鑑みなされたものであり、リングバスにおいて保留され滞留するパケットの増大を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明による入力制御装置は、複数の通信手段がリング状にバス接続され、処理手段で処理されたデータの受け渡しを行うデータ処理システムにおいて、外部からのデータ入力を受け付けてそのデータを前記バスへ入力する入力制御装置であって、外部に出力されるべきデータであって出力を保留されて前記バスに残ったデータの数に基づいて、データの受け付けを制御する制御手段、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、リングバスにおいて保留され滞留するパケットの増大を抑制する技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】データ処理システムの構成例を示す図。
【図２】パケットのデータ構造の例を示す図。
【図３】入出力部の構成例を示すブロック図。
【図４】受信部の構成例を示すブロック図。
【図５】送信部の構成例を示すブロック図。
【図６】送信間隔制御部の構成例を示すブロック図。
【図７】第２の実施形態における送信間隔制御部の構成例を示すブロック図。
【図８】情報処理装置の概略構成を示すブロック図。
【図９】画像処理部８３０とシステム制御部８１０との間のデータ転送に係る構成の概略図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１１】
＜＜実施形態１＞＞
まず、図８を用いて本発明の第１の実施形態に係る情報処理装置の概略構成について説明する。
【００１２】
画像読取部８２０は、ＣＣＤセンサ８２４、アナログ信号処理部８２６等を有する。そして、ＣＣＤセンサ８２４は、レンズ８２２を介してＣＣＤセンサ８２４に結像された原稿８００の画像を、Ｒ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）のアナログ信号に変換する。変換された画像情報は、アナログ信号処理部８２６に入力され、Ｒ、Ｇ、Ｂの色毎に補正等が行われた後にアナログ・デジタル変換（Ａ／Ｄ変換）される。デジタル化されたフルカラー信号（以下、多値デジタル画像信号という）は、画像処理部８３０に入力される。画像処理部８３０はデジタル画像信号に対し、入力補正処理、空間フィルタ処理、色空間変換、濃度補正処理、中間調処理を施し、画像出力部８４０へ処理後のデジタル画像信号を出力する。画像出力部８４０は、たとえば、インクジェットヘッドやサーマルヘッド等を使用した印刷出力部（図示せず）を有し、入力されたデジタル画像信号により紙上に画像を記録する。
【００１３】
また、システム制御部８１０は、演算制御用のＣＰＵ８１２、固定データやプログラムを格納するＲＯＭ８１４、データの一時保存やプログラムのロードに使用されるＲＡＭ８１６等を有する。そして、システム制御部８１０は、画像読取部８２０、画像処理部８３０、画像出力部８４０等を制御し、本装置のシーケンスを統括的に制御する。記憶装置８１８は、本装置が使用するパラメータやプログラムを記憶する媒体（フラッシュメモリ、着脱可能な記憶媒体）であり、ＲＡＭ８１６はデータやプログラム等を、ＲＯＭ８１４や記憶装置８１８からロードできる構成となっている。
【００１４】
なお、システム制御部８１０と画像処理部８３０との間のデータ転送は、例えばＤＭＡＣ（ダイレクトメモリアクセスコントローラ）で行う（不図示）。
【００１５】
図９は画像処理部８３０とシステム制御部８１０との間のデータ転送に関わる構成の概略構成を示す。
【００１６】
ダイレクトメモリアクセスコントローラであるＤＭＡＣ９０３は、システム制御部８１０のＲＡＭ８１６に保持されているデータを、入出力部１０１の端子３５４（詳細は後述する）から保留信号がアサートされていない場合に、ダイレクトメモリアクセスで画像処理実行部９０１へ転送する。一方、保留信号がアサートされている場合は、ＤＭＡＣ９０３はデータを保持する。
【００１７】
また、画像処理実行部９０１で処理を終えたデータは、入出力部１０１の端子３５３（詳細は後述する）から保留信号がアサートされていない場合に、ＤＭＡＣ９０４へ出力される。保留信号がアサートされている場合は、入出力部１０１はデータ出力を保留し、リングバス１０４（詳細は後述する）に保留パケットとしてデータを流す。そして、データは、ＤＭＡＣ９０４によってダイレクトメモリアクセスで、データシステム制御部８１０のＲＡＭ８１６や外部記憶装置８１８、画像出力部８４０などに転送される。
【００１８】
（データ処理システム）
図１は、図８の画像処理部８３０を詳細にしたものである。図１は、各処理モジュール間をリング状のバスでバス接続してデータの受け渡しを行い、データを順次処理するデータ処理システム（図９の画像処理実行部９０１に相当する）の概略的な構成例を示すブロック図である。このデータ処理システムは、データ入出力用の入出力部１０１、データを互いに受け渡すための複数の通信部１０２−１〜１０２−ｎ、及び通信部１０２−１〜１０２−ｎにそれぞれ対応し、データを処理する複数の処理部１０３−１〜１０３−ｎを備える。
【００１９】
本実施形態では、複数の通信部１０２−１〜１０２−ｎは、それぞれ、データをリングバス１０４から受け取る機能とリングバス１０４へ送出する第１の通信部として機能する。入出力部１０１は、リングバス１０４からデータを受け取り、リングバス１０４上を周回するデータについて、そのデータに対する処理が保留されたか否かを示す保留情報を監視し、データの入出力を管理する第２の通信部として機能する。なお、入出力部１０１（第２の通信部）は、全ての処理が完了したデータを外部へ出力する。そして、本実施形態では、複数の通信部１０２−１〜１０２−ｎ（第１の通信部）は、対応する処理部１０３−１〜１０３−ｎが処理対象のデータを受け付けられない状態にある場合、上述の保留情報をそのデータに付加し、リングバス１０４に出力する。そして、入出力部１０１（第２の通信部）は、リングバス１０４を周回している保留情報が付加されているデータに基づいて、例えば、保留状態にあるデータでリングバス１０４が埋め尽くされないように、リングバスへのデータの入力を抑制する。
【００２０】
入出力部１０１は、例えば、本データ処理システムの外部との間でデータの入出力制御を行う。なお、以下の説明では「データ処理システムの外部」とは、本データ処理システムを含む装置における他の機能部を示し、図８でいうシステム制御部８１０、画像読取部８２０、画像出力部８４０であるとする。ただし、本データ処理システムを含む装置と別個に存在する外部装置であっても、本発明を適用できる。また、入出力部１０１には入力１０５、出力１０６のそれぞれにＤＭＡＣを配置することが好ましい。その場合、ＤＭＡＣによって、ＲＡＭ８１６に保持している画像データやパラメータをパケット化して画像処理部８３０に入力し、画像処理部８３０から出力されるパケットをデパケット化してＲＡＭ８１６やＣＰＵ８１２に転送する。
【００２１】
通信部１０２−１〜１０２−ｎは、各々隣接する通信部１０２と接続され、リングバス１０４の一部として特定の方向（第１の方向）から受信するデータを他方（第２の方向）へ送信する。なお、通信部１０２−１と通信部１０２−ｎは、隣接する通信部１０２に接続されると共に、入出力部１０１にも接続される。そして、通信部１０２−１〜１０２−ｎは、それぞれ処理部１０３−１〜１０３−ｎに接続されている。つまり、通信部１０２−１〜１０２−ｎは、入出力部１０１と共にリングバス１０４を構成して、隣接する通信部１０２や入出力部１０１とデータの送受信を行うと共に、処理部１０３との間でもデータの送受信を行う。
【００２２】
入力端子１０５より入力されたデータは入出力部１０１を介して通信部１０２−１に入力される。なお、データはパケット化されてリングバス１０４上（リング上）を一方向に流れる。通信部１０２は、リングバス１０４からパケットを取り込み、予め設定された情報に応じてパケットを選別して必要なデータを抽出する。そして、通信部１０２は、通信部１０２に直接接続される処理部１０３（以下、「対応処理部」と呼ぶ）において抽出したデータを処理可能な場合、その対応処理部１０３へデータを出力する。
【００２３】
処理部１０３では、入力されたデータに、所定のデータ処理（例えば色空間変換や解像度変換等）を行い、処理後のデータを対応する通信部１０２へ出力する。通信部１０２は、リングバス１０４へのデータ出力が可能かを判定し、出力可能な場合に、対応処理部１０３から入力されたデータをパケット化してリングバス１０４へ送出する。送出されたパケットに含まれるデータに次の処理を施す処理部１０３に対応する通信部１０２は、そのパケットを選別してデータを取り出して、上述のように対応処理部１０３で処理を実行させる。データを処理する処理部１０３の順番を予め定めておくことにより、データが処理部１０３−１〜１０３−ｎにおいて次々に処理される。そして、設定されたデータ処理が終了すると、処理後のデータは、入出力部１０１を介して、出力端子１０６より出力される。
【００２４】
（データ構造）
図２は、リングバス１０４を流れるパケットのデータ構造の例を示す図である。パケットはｖａｌｉｄフラグ２０１、ｓｔａｌｌフラグ２０２、カウント値２０３、ノードＩＤ２０４、及びデータ２０５を含む。ｖａｌｉｄフラグ２０１は、パケットが有効であるか否かを示す値を格納するデータ領域である。ｓｔａｌｌフラグ２０２は、パケットに含まれるデータについて処理が保留されたことを示す保留情報を格納するデータ領域である。カウント値２０３はデータの送信順を示す値を、そして、ノードＩＤ２０４はデータの論理的な接続を識別するためのＩＤを示す値を格納するデータ領域である。データ２０５は通信部に入力または出力されるデータを格納するデータ領域である。
【００２５】
以下の説明では、パケットのｖａｌｉｄフラグ２０１が「無効」である場合のパケットを「空パケット」と呼ぶ。通信部１０２は、リングバス上の空パケットを有効なパケットに置き換えることができる。「有効」なｓｔａｌｌフラグ２０２は、ある処理部１０３がデータを処理できない状態であったため、対応する通信部１０２が処理されないままのデータを含むパケットをリングバス上へ流したことを意味する。なお、以下の説明では、ｓｔａｌｌフラグ２０２が有効であるパケットを「保留パケット」と呼ぶ。
【００２６】
カウント値２０３は、例えば、入力された順序で処理が実行されるべき場合に用いられ、通信部１０２は内部で管理する値とカウント値２０３が一致した場合に、パケットからデータを抽出して処理部１０３へ出力することができる。また、ノードＩＤ２０４は、そのパケットに含まれるデータを処理すべき処理部１０３、又はそれに対応する通信部１０２のＩＤを含む。通信部１０２は、ノードＩＤ２０４が自らのＩＤ又は対応処理部１０３のＩＤと一致する場合に、そのパケットに含まれるデータが対応処理部１０３で処理すべきものであることを判定することができる。
【００２７】
通信部１０２は、リングバス１０４からパケットを取り込むと、その内容を解析して、その内容によってその後の処理を決定する。具体的には、パケットからｖａｌｉｄフラグ２０１、カウント値２０３、及びノードＩＤ２０４を抽出し、その内容によりパケットをどのように取り扱うかを決定する。
【００２８】
例えば通信部１０２は、パケットのｖａｌｉｄフラグ２０１が有効で、カウント値２０３とノードＩＤ２０４とが通信部１０２の内部で管理する値と一致し、対応処理部１０３がデータ処理可能な場合、パケットに含まれるデータを対応処理部１０３へ出力する。この場合、通信部１０２は、上述の処理と同時に、受信したパケットのｖａｌｉｄフラグ２０１とｓｔａｌｌフラグ２０２とを無効にして空パケットをリングバス１０４上へ出力する。
【００２９】
一方、通信部１０２は、ｖａｌｉｄフラグ２０１が有効で、カウント値２０３とノードＩＤ２０４とが通信部１０２の内部で管理する値と一致し、対応処理部１０３でデータ処理が不可能な状態である場合は、保留パケットをリングバス１０４上へ出力する。すなわち、リングバス１０４から取り込んだパケットについて、ｓｔａｌｌフラグ２０２を有効として、リングバス１０４上へ送出する。さらに、ｖａｌｉｄフラグ２０１が有効で、ノードＩＤ２０４が通信部１０２の内部で管理する値と一致するが、カウント値２０３が通信部１０２の内部で管理する値と一致しない場合も、パケットを保留パケットとしてリングバス１０４上へ送出する。
【００３０】
また、通信部１０２は、ｖａｌｉｄフラグ２０１が有効で、ノードＩＤ２０４が通信部１０２の内部で管理する値と一致しない場合は、取り込んだパケットについて、内容を変更しないでそのままリングバス１０４へ送出する。
【００３１】
同様に入出力部１０１においても、リングバス１０４から取り込まれたパケットに対して通信部１０２と同様の解析を行い、出力端子１０６からデータ出力可能な場合、データを出力する。入出力部１０１と通信部１０２とが以上のように動作することにより、所望の順序でのデータの受け渡し及び処理を実現することができる。
【００３２】
（入出力部の構成）
図３は、入出力部１０１の概略的な構成例を示すブロック図である。図に示すように、入出力部１０１は受信部３０１、バッファ３０２、セレクタ３０３、送信部３０４を有する。入出力部１０１の出力端子３５９は、隣の通信部１０２−１（データ転送方向下流・第２の方向側）へ接続され、入力端子３５７はもう一方の隣の通信部１０２−ｎ（データ転送方向上流）へ接続される。
【００３３】
出力端子３５１、出力端子３５２及び入力端子３５３は図１に示す出力端子１０６をより詳細に示したものである。出力端子３５１は、出力される信号が有効であるか否かを示すｖａｌｉｄ信号を出力する端子である。出力端子３５２は、データの出力が可能な場合にそのデータを出力する端子である。入力端子３５３は、データの出力が可能であるかを示すｓｔａｌｌ信号を入力する端子である。ｓｔａｌｌ信号が有効（保留）である場合には、受信部３０１は、出力端子３５２からデータを出力することができない。
【００３４】
出力端子３５４、入力端子３５５及び入力端子３５６は図１に示す入力端子１０５をより詳細に示したものである。出力端子３５４は、送信部３０４からの出力データを、セレクタ３０３を介して出力できるか否かを示すｓｔａｌｌ信号を出力する端子である。ｓｔａｌｌ信号が有効（保留）である場合、送信部３０４へのデータの入力が停止する。入力端子３５５は、外部からのデータを入力する端子である。そして、入力端子３５６は、外部から入力されたデータが有効であるか否かを示すｖａｌｉｄ信号である。
【００３５】
入力端子３５７を介して隣の通信部１０２−ｎ（データ転送方向上流）から入力されるパケットは、受信部３０１において監視される。また同時に、そのパケットはバッファ３０２に入力され、バッファにおいて一旦保持されて、次のクロックサイクルでセレクタ３０３へ出力される。
【００３６】
受信部３０１は、ｖａｌｉｄフラグ２０１が有効で、カウント値２０３とノードＩＤ２０４とが受信部３０１の保持する値とそれぞれ一致するかを判定する。さらに、受信部３０１は、データ出力可能である場合（入力端子３５３から入力されたｓｔａｌｌ信号が保留状態でない場合）、受信部３０１は上記の条件を満たすパケットを取り込む。そして、受信部３０１は出力端子３５１のｖａｌｉｄ信号を有効にして、出力端子３５２を介してデータを外部へ出力する。また、パケットのデータを取り込んだ後、受信部３０１において管理されている、データに付随のカウント値がインクリメントされる。また、受信部３０１は、上記の動作と同時に、信号線３６０を介して、バッファ３０２に格納されたパケットのｖａｌｉｄフラグ２０１のクリア（無効化）の制御をおこなう。また、受信部３０１は、信号線３６１を介して、バッファ３０２に格納されたパケットのｓｔａｌｌフラグ２０２の値をクリアする。さらに、受信部３０１は信号線３６５を介して、後述するｓｔａｌｌカウンタ４０５の値を送信部３０４へ出力する。
【００３７】
送信部３０４は、バッファ３０２の出力パケット（信号線３５８）のｖａｌｉｄフラグ２０１を、信号線３６３を介して監視する。そして、そのパケットのｖａｌｉｄフラグ２０１が有効のときは、セレクタ３０３にバッファ３０２の出力パケットを優先して出力端子３５９へ出力させるようにする。この場合は、送信部３０４は、入力端子３５５からの入力データを含むパケットを出力できないこととなる。このため、送信部３０４は、データ入力を保留するため、出力端子３５４から出力されるｓｔａｌｌ信号を有効（保留）とする。なお、バッファ３０２の出力パケットのｖａｌｉｄフラグ２０１が無効の場合は、出力端子３５４から出力されるｓｔａｌｌ信号は、後述する信号線３６５からのｓｔａｌｌカウンタ値と、入力端子３５３からのｓｔａｌｌ信号とによって制御される。
【００３８】
外部入力データが有効な場合（入力端子３５６から入力されたｖａｌｉｄ信号が有効の場合）で、後述する送信部３０４内のタイマ６０１が「０」の時、送信部３０４は、入力データを含みｖａｌｉｄフラグ２０１が有効なパケットを生成する。また、送信部３０４は、送信部３０４内で管理しているカウント値とレジスタに設定されているノードＩＤとをそのパケットに付加し、信号線３６２を介してセレクタ３０３に出力する。セレクタ３０３は送信部３０４からのパケットのｖａｌｉｄフラグ２０１が有効で、バッファ３０２からのパケットのｖａｌｉｄフラグ２０１が無効な場合、出力端子３５９を介して、送信部３０４から出力されたパケットをリングバス１０４へ送出する。なお、パケットを生成すると表現しているが、概念的にはリングバスを流れる空パケットにデータを格納していることになる。パケット出力後、送信部３０４内で管理しているカウント値はインクリメントされる。
【００３９】
（受信部の構成と動作）
図４を用いて、受信部３０１について詳細に説明する。図４は、受信部３０１の概略的な構成例を示すブロック図である。図に示すように、受信部３０１は、レジスタ４０１（記憶部）、カウンタ４０２、比較部４０３、判定部４０４、ｓｔａｌｌカウンタ４０５を有する。
【００４０】
受信部３０１において、比較部４０３は入力端子３５７より入力されるリングバス上のパケットのｖａｌｉｄフラグ２０１、カウント値２０３、ノードＩＤ２０４を監視し、解析する。比較部４０３は、まず、入力されたパケットのｖａｌｉｄフラグ２０１が有効であるかを判定する。入力されたパケットのｖａｌｉｄフラグ２０１が無効である場合は、出力するデータがないため、以下で説明する処理は行わない。一方、ｖａｌｉｄフラグ２０１が有効である場合、そのパケットのノードＩＤ２０４とレジスタ４０１に格納されている入力ノードＩＤとを比較し、値が一致するかどうかを判定する。同時に、比較部４０３は、そのパケットのカウント値２０３とカウンタ４０２の値とを比較し、値が一致するかどうかを判定する。比較部４０３は、比較によりノードＩＤが一致した場合には入力ノードＩＤ一致信号を、カウント値がカウンタ４０２の値と一致した場合にはカウント値一致信号を、それぞれ「有効」を示す値に設定して判定部４０４へ出力する。なお、ノードＩＤ又はカウント値が不一致だった場合は、それぞれ、入力ノードＩＤ一致信号又はカウント値一致信号を「無効」を示す値に設定して判定部４０４へ出力する。
【００４１】
そして、判定部４０４は、その判定の結果を用いて（１）外部にデータ出力可能な場合のデータ２０５を外部に送信する受信動作、及び（２）データ出力不可能な場合のバッファ３０２に保留パケットを出力する保留動作、のいずれかを実行する。以下、これらの動作について、詳細に説明する。
【００４２】
（１）受信動作（出力端子３５２にデータを出力する動作）
判定部４０４は、入力ノードＩＤ一致信号とカウント値一致信号が「有効」であって、入力端子３５３を介して受信したｓｔａｌｌ信号が「無効」を示す場合、出力端子３５２からデータの出力が可能であると判定する。この場合、判定部４０４は出力端子３５１を介して有効を示すｖａｌｉｄ信号を出力し、出力端子３５２を介してパケットのデータ２０５を出力する。
【００４３】
判定部４０４は、このとき、信号線３６０を介してパケットのｖａｌｉｄフラグ２０１をクリアする制御信号をバッファ３０２へ送信し、バッファ３０２はその制御信号に従って一時保持しているパケットのｖａｌｉｄフラグ２０１を無効化（クリア）する。同時に、判定部４０４は、信号線３６１を介してｓｔａｌｌフラグ２０２をクリアする制御信号をバッファ３０２へ送信し、バッファ３０２はその制御信号に従って一時保持しているパケットのｓｔａｌｌフラグ２０２を無効化する。また、判定部４０４は、次のデータを取得するためにカウンタ４０２に「有効」を示すカウント有効信号を出力し、次のクロックサイクルでカウンタ４０２にカウント値をインクリメント（＋１）させる。また、ｓｔａｌｌカウンタ４０５の値が「０」より大きい場合、ｓｔａｌｌカウンタ４０５の値をデクリメント（−１）する。
【００４４】
（２）保留動作（出力端子３５２にデータを出力しない動作）
判定部４０４は、入力ノードＩＤ一致信号とカウント値一致信号が有効な場合に、入力端子３５３を介して有効（保留）を示すｓｔａｌｌ信号を受信すると、出力すべきデータがあるにも関わらず、出力端子３５２にデータを出力することができないと判定する。この場合、判定部４０４は、信号線３６１を介してパケットのｓｔａｌｌフラグ２０２を有効とすべき制御信号をバッファ３０２へ送信し、バッファ３０２は一時保持しているパケットのｓｔａｌｌフラグ２０２を有効（保留）とする。また、判定部４０４は、データ出力を保留する旨を示す制御信号をｓｔａｌｌカウンタ４０５へ送信し、ｓｔａｌｌカウンタ４０５の値をインクリメント（＋１）させる。また、入力ノードＩＤ一致信号が有効で、カウント値一致信号が無効の場合も、信号線３６１を介してバッファ３０２に一時保持されているパケットのｓｔａｌｌフラグ２０２を有効にしてｓｔａｌｌカウンタ４０５をカウントアップする。すなわち、ｓｔａｌｌカウンタ４０５は、外部へ出力されるべき状態にあるパケットで、出力が保留されてリングバス１０４に残っているパケットの数をカウントする。
【００４５】
なお、保留動作においては、ｓｔａｌｌフラグ２０２を有効にする以外は、バッファ３０２に一時的に保持されるパケットの内容は変更されない。
【００４６】
（送信部の構成と動作）
図５を用いて、送信部３０４について詳細に説明する。図５は、送信部３０４の概略的な構成例を示すブロック図である。図に示すように送信部３０４は、レジスタ５０１（記憶部）、カウンタ５０２、パケット生成部５０３、送信間隔制御部５０４を有する。
【００４７】
バッファ３０２の出力パケットのｖａｌｉｄフラグ２０１が、信号線３６３を介してパケット生成部５０３と送信間隔制御部５０４に入力される。また、入力端子３５５と３５６とを介して、それぞれ、データ及びデータ有効信号がパケット生成部５０３に入力される。パケット生成部５０３は、信号線３６２を介して生成したパケットをセレクタ３０３へ出力する。送信間隔制御部５０４は、受信部３０１のｓｔａｌｌカウンタの値とデータ出力の可否を示すｓｔａｌｌ信号をそれぞれ信号線３６５と入力端子３５３から取得する。そして、送信間隔制御部５０４は、出力端子３５４からｓｔａｌｌ信号を出力することにより外部からのデータの入力を制御し、リングバス１０４へのパケットの出力間隔を制御する。
【００４８】
パケット生成部５０３は、入力端子３５６を介して伝達されるｖａｌｉｄ信号を参照し、ｖａｌｉｄ信号が有効の場合、入力端子３５５を介した外部からのデータ入力が可能であると判定する。ここで、外部からのデータは、出力端子３５４を介して出力されるｓｔａｌｌ信号が無効の場合、すなわち入力保留状態でない場合に、パケット生成部５０３へ入力される。パケット生成部５０３は、データが入力されると、そのデータをデータ２０５として含み、カウンタ５０２のカウント値とレジスタ５０１に設定されている出力ノードＩＤとを、カウント値２０３とノードＩＤ２０４に設定してパケットを生成する。ここで、パケット生成部５０３は、生成するパケットのｖａｌｉｄフラグを有効に、ｓｔａｌｌフラグを無効に設定する。そして、パケット生成部５０３はセレクタ３０３にパケットを出力する。そして、パケット生成部５０３は、次のクロックサイクルでカウンタ５０２がカウント値をインクリメント（＋１）するように、制御信号をカウンタ５０２へ送信する。
【００４９】
次に図６を用いて、送信間隔制御部５０４の構成例を説明する。送信間隔制御部５０４は、タイマ６０１、比較部６０２、送信間隔信号生成部６０３、第１レジスタ６０４、タイマ用レジスタ６０５を備える。
【００５０】
タイマ６０１は送信間隔を制御する機能部であり、例えば、ロードされた値から０に向けてカウントダウンするロード機能付きのダウンカウンタで構成される。パケット生成部５０３が生成したパケットがセレクタ３０３からリングバスに出力されると、次のサイクルでタイマ用レジスタ６０５に格納されている送信間隔をロードする。タイマ用レジスタ６０５はタイマ６０１に送信間隔を設定するためのレジスタである。ここで設定する送信間隔は、入出力部１０１が外部からのデータをリングバス上にパケットにして送信する間隔である。本機能は、通信部１０２−１〜ｎも有してもよく、例えば、ｎ＝１２の場合で、送信間隔を４に設定し、自身が出力し、処理を保留されたパケットに基づいて、出力抑制制御を適用することにより、リングバス上の自身が出力したパケット数を３つに抑制できる。
【００５１】
なお、パケット生成部５０３が生成したパケットがセレクタ３０３からリングバスに出力されたという情報は、例えば図に示すように、カウンタ５０２へ送信される制御信号により取得されてもよいし、他の機構を用いてタイマ６０１へ通知されてもよい。また、タイマ６０１は「０」までダウンカウントしたら、次に値がロードされるまで「０」の値を保持する。
【００５２】
比較部６０２は信号線３６５を介して取得したｓｔａｌｌカウンタ値と第１レジスタ６０４に格納されている所定値（閾値）とを比較し、ｓｔａｌｌカウンタ値が所定値以上の場合「１」を出力する。それ以外の場合、比較部６０２は「０」を出力する。第１レジスタ６０４はｓｔａｌｌカウンタ４０５の値を評価するための所定値を格納するレジスタである。ここで、所定値は、リングバス一周分に格納できるパケットの数未満であるのが望ましい。なぜなら、ｓｔａｌｌカウンタ４０５の値がリングバス一周分以上の値になるのはデッドロックの状態であり、その値に第１レジスタの値を設定すると、デッドロックを回避できなくなるからである。
【００５３】
送信間隔信号生成部６０３は、出力端子３５４に出力される、データ入力が可能かを示すｓｔａｌｌ信号を生成する。ｓｔａｌｌ信号は、上述の説明から明らかなように、有効（保留）の場合は外部からのデータ入力は不能な状態であることを示し、無効の場合は外部からのデータ入力が可能な状態であることを示す。
【００５４】
以下、図６の送信間隔制御部５０４の動作を説明する。まず初期設定として、不図示のＣＰＵ等から、第１レジスタ６０４とタイマ用レジスタ６０５の値が設定される。その後、比較部６０２において、信号線３６５から取得したｓｔａｌｌカウント値と第１レジスタ６０４に設定された値とが比較される。同時にタイマ６０１の値が「０」でない場合は、タイマ６０１がダウンカウントされる。そして、送信間隔信号生成部６０３は、信号線３６３を介して入力されたｖａｌｉｄフラグ２０１と比較部６０２の出力の値とによって、以下の異なる３つの動作を行う。
【００５５】
（１）信号線３６３から入力されたｖａｌｉｄフラグ２０１が有効の場合
パケット生成部５０３からパケットが出力できないため、出力端子３５４を介して有効を示すｓｔａｌｌ信号を出力し、外部からのデータ入力を保留する。ｖａｌｉｄフラグ２０１が有効でない場合は、以下の（２）又は（３）の動作を行う。
【００５６】
（２）比較部６０２の出力が「０」の場合
ｓｔａｌｌカウンタ４０５の値が第１レジスタ６０４の所定値より小さいため、タイマ６０１の値に基づいてｓｔａｌｌ信号を有効又は無効に設定し、出力端子３５４を介して出力する。すなわち、タイマ６０１の値が「０」の時、ｓｔａｌｌ信号を無効として、外部からのデータ入力を受け付け、それ以外の場合はｓｔａｌｌ信号を有効として外部からの入力を保留する。
【００５７】
（３）比較部６０２の出力が「１」の場合
ｓｔａｌｌカウンタ４０５の値が第１レジスタ６０４の所定値以上である場合であり、これは、入出力部１０１の受信部３０１において出力を保留したパケットの発生頻度が高い場合であることを意味する。この時、入力端子３５３を介したｓｔａｌｌ信号が有効の場合、出力端子３５２から外部へデータ出力できないことが分かる。このため、これ以上保留パケットを増やさないため、送信間隔信号生成部６０３は、出力端子３５４を介して有効を示すｓｔａｌｌ信号を出力して外部からのデータ入力を保留する。一方、入力端子３５３を介して受信したｓｔａｌｌ信号が無効を示す場合、出力端子３５２を介した外部へデータの出力が可能であることが分かるため、出力端子３５４から出力するｓｔａｌｌ信号の制御を（１）と同様にタイマ６０１の値により行う。
【００５８】
このように、本実施形態では、出力端子３５４から出力するｓｔａｌｌ信号を制御することによって、送信部３０４からリングバス１０４へのパケットの出力間隔の制御、すなわち、外部からのデータのリングバス１０４への入力制御を実行する。なお、上述の説明では、送信間隔制御部５０４は、入力端子３５３からのｓｔａｌｌ信号に基づいて、出力端子３５４から出力するｓｔａｌｌ信号の有効と無効とを制御するとしたが、これをｓｔａｌｌカウンタ４０５の値のみに基づいて制御してもよい。すなわち、出力を保留されたパケットが一定以上になったことのみを以って、入力を保留としてもよい。これにより、より簡素に出力端子３５４から出力するｓｔａｌｌ信号の制御を行うことができる。
【００５９】
なお、上述の説明では、入力と出力とを１つの入出力部１０１が行う場合について説明したが、これに限られない。入力部と出力部とをそれぞれ別個に用意し、入力部がデータのリングバス１０４上への入力制御を、そして、出力部がリングバス１０４からのデータの出力制御を、それぞれ行うようにしてもよい。そして、この場合、出力部は、ｓｔａｌｌカウンタ４０５の値や入力端子３５３からのｓｔａｌｌ信号を、別途用意した情報通知機構などを用いて入力部に通知する。そして、入力部はその通知されて取得した情報に基づいて入力制御を行ってもよい。また、そのような情報をパケットに含めて通知してもよい。ただし、パケットにそのような情報を含める場合は、例えば、リングバス１０４上で、出力部の下流に隣接して入力部を配置するのが望ましい。逆に入力部の下流に隣接して出力部を配置すると、出力部からの情報が入力部に届くのがリングバスを１周した後になってしまい、データ入力を適時的に保留するように入力制御を行うことが困難となるからである。
【００６０】
上述のように、入出力部１０１において、ｓｔａｌｌカウンタ４０５の値と入力端子３５３からのｓｔａｌｌ信号とを送信部３０４が取得することで、データ処理システムの入力側において、出力側でデータ出力が滞っている状態を把握することが可能となる。これにより、データ出力が滞り、出力されない有効なパケットがリングバス上に多数存在する場合には、リングバスに入力されるデータ量を絞ることで、デッドロックを効果的に回避することが可能となる。すなわち、リングバス１０４が保留パケットで埋め尽くされる前に早めに入力側からのデータ入力を停止することが可能となる。また、リングバス１０４上に多数の保留パケットが存在する状態が解消されたら、すぐにデータ入力の停止を解除することが可能となり、リングバスの混み具合に応じた最適なデータ入力が可能となる。また、リングバス上のパケットの混み具合も考慮することで、データ入力の頻度を極端に落とさずに適正に保つことも可能となる。
【００６１】
＜＜第２の実施形態＞＞
続いて、図７を参照して、本発明の第２の実施形態に係る送信間隔制御部５０４について説明する。なお、パケットのデータ構造や、データ処理システム、入出力部１０１、通信部１０２や、入出力部１０１内部の受信部３０１と送信部３０４の構成及び動作は、第１の実施形態と同様であるため、説明を省略する。
【００６２】
また、図７の図中、第１の実施形態の図６と同じ機能を有する機能部については同一の記号を付して説明を省略する。第１の実施形態と異なる点は、比較部６０２が比較部７０１に置き換わり、第２レジスタ７０２が追加されている点である。また、送信間隔信号生成部６０３が送信間隔信号生成部７０３に置き換わり、入力端子３５３は本実施形態では使われないため省略している。
【００６３】
比較部７０１は信号線３６５からのｓｔａｌｌカウンタ値と、第１レジスタ６０４に格納されている第１の所定値及び第２レジスタ７０２に格納されている第２の所定値とを比較する。具体的には、ｓｔａｌｌカウンタ値が増加して第１レジスタ６０４の第１の所定値以上となった後、ｓｔａｌｌカウンタ値が減少して第２レジスタ７０２の第２の所定値以下の値となるまで、比較部７０１は値「１」を出力する。
【００６４】
なお、この場合、第２の所定値が第１の所定値より大きい場合は、第１の所定値を超えた後に、第２の所定値を超えずにｓｔａｌｌカウンタ値が減少を開始する場合もある。この場合は、第２の所定値によらず、ｓｔａｌｌカウンタ値が第１の所定値より小さくなった場合に、比較部７０１が「０」を出力するようにしてもよい。このようにすることにより、リングバス１０４上の保留パケットの増加によりｓｔａｌｌカウンタ値が大きく増加した場合でも、データの外部への出力によりその保留パケットが減少する傾向となったときにすぐにデータの入力を再開することができる。また、第１の所定値をある程度小さく設定することにより、保留パケットが増加する兆しがある場合にすぐ外部からのデータ入力の受け付けを保留することで、リングバス１０４上でデッドロックが生じる可能性を著しく低減することができる。
【００６５】
また、第１レジスタ６０４の第１の所定値は、第２レジスタ７０２の第２の所定値より大きくてもよい。この場合は、ｓｔａｌｌカウンタ値が第１の所定値以上となったときから、第２の所定値以下となるまでの間は、比較部７０１は「１」を出力する。この場合は、ｓｔａｌｌカウンタ４０５の値が第１レジスタの値を超えて入力保留となった後、保留パケットの出力により第１レジスタの値を下回るとすぐにデータの入力を再開しないこととなる。そして、一定以上の保留パケットが出力されて、ｓｔａｌｌカウンタ４０５の値が第２レジスタの値を下回ってから、入力を開始するようにする。
【００６６】
いずれの場合にしても、第１レジスタ６０４は、比較部７０１の比較結果「１」となる開始点を決めるための第１の所定値を格納するレジスタである。そして、第２レジスタ７０２は、比較部７０１の比較結果「０」となる開始点を決めるための第２の所定値を格納するレジスタである。ただし、第１の所定値が第２の所定値より小さい場合は、第１の実施形態と同様に、第１の所定値は比較部７０１の比較結果「０」となる開始点を決めるための閾値にもなる。ここで、第１レジスタ６０４と第２レジスタ７０２の所定値は、共に、リングバス一周分に格納できるパケットの数未満でなければならない。なぜなら、ｓｔａｌｌカウンタ４０５の値がリングバス一周分以上の値になるのはデッドロックの状態であるからであり、そのような値にすると、デッドロックを防ぐことができないからである。
【００６７】
なお、送信間隔信号生成部７０３は、比較部７０１からの出力、タイマ６０１からの出力、及び信号線３６３からの出力に基づいて、出力端子３５４に出力されるｓｔａｌｌ信号を生成する。
【００６８】
以下、図７の送信間隔制御部５０４の動作を説明する。まず初期設定として、不図示のＣＰＵ等から、第１レジスタ６０４、タイマ用レジスタ６０５、第２レジスタ７０２の値が設定される。その後、比較部７０１において、信号線３６５からのｓｔａｌｌカウント値と、第１の所定値及び第２の所定値とが比較される。同時にタイマ６０１の値が「０」でない場合は、タイマ６０１がダウンカウントされる。そして、送信間隔信号生成部７０３は、信号線３６３のｖａｌｉｄフラグと比較部７０１の出力の値により、以下の異なる３つの動作のいずれかを行う。
【００６９】
（１）信号線３６３のｖａｌｉｄフラグが有効の場合
この場合は、パケット生成部５０３で生成したパケットが出力できない。このため、送信間隔信号生成部７０３は、出力端子３５４からのｓｔａｌｌ信号を有効にして外部からのデータ入力を保留する。それ以外の場合は以下の（２）又は（３）の動作を行う。
【００７０】
（２）比較部７０１の出力が「０」の場合
第１の所定値と第２の所定値とのいずれか小さい方よりも、ｓｔａｌｌカウンタ４０５の値が小さい場合と、ｓｔａｌｌカウンタ４０５の値が第１の所定値と第２の所定値の大きい方以上となった後に減少して第２の所定値以下となった場合である。また、第１の所定値が第２の所定値より小さい場合、ｓｔａｌｌカウンタ４０５の値が第１の所定値以上となった後に第２の所定値以上とはならずに減少して第１の所定値より小さくなった場合も該当する。
【００７１】
この場合、送信間隔信号生成部７０３は、タイマ６０１の値に応じて出力端子３５４からのｓｔａｌｌ信号を制御する。具体的には、送信間隔信号生成部７０３は、タイマ６０１の値が０の時には無効を示すｓｔａｌｌ信号を、それ以外の場合は有効を示すｓｔａｌｌ信号を、それぞれ出力端子３５４から出力する。
【００７２】
（３）比較部７０１の出力が「１」の場合
ｓｔａｌｌカウンタ４０５の値が第１レジスタの値以上となった後であって、ｓｔａｌｌカウンタ４０５の値が増加しているか減少しても未だに第２レジスタ７０２の値以下とはなっていない場合である。また、第１の所定値が第２の所定値より小さい場合に、ｓｔａｌｌカウンタ４０５の値が第１の所定値以上となった後に第２の所定値以上とはなっていない場合であって、第１の所定値より小さくなっていない場合も該当する。この場合は入出力部１０１における保留パケットの発生頻度が高い場合である。この場合、送信間隔信号生成部７０３は、有効を示すｓｔａｌｌ信号を出力端子３５４から出力して、外部からのデータ入力を保留する。
【００７３】
本実施形態では、上述のように、２つの所定値に基づく比較部７０１の出力結果を用いて、出力端子３５４からのｓｔａｌｌ信号を制御する。例えば、第１の所定値を第２の所定値より小さくすると、リングバス１０４上の保留パケットが大きく増加した場合でも、データの外部への出力によりその保留パケットが減少する傾向となったときにすぐにデータの入力を再開することができる。さらに、第１の所定値をある程度小さく設定することにより、保留パケットが増加する兆しがある場合にすぐ外部からのデータ入力の受け付けを保留することで、リングバス１０４上でデッドロックが生じる可能性を著しく低減することができる。また、第１の所定値を第２の所定値より大きくすることにより、入力の保留とその解消とが頻繁に切り替えられることを防ぐことができる。
【００７４】
なお、上述の説明ではシングルデータパスについて説明しているが、本発明はマルチデータパスについても適用できる。マルチデータパスに適用する場合にはパケットのフォーマットに、どちらのデータパスで処理するパケットであるのかを識別するためのデータパスＩＤを設けることが好ましい。また、マルチデータパスを扱う場合には、データパス毎にｓｔａｌｌカウンタのしきい値を設けるように構成してもよい。例えば、優先的に処理をさせるデータパスについては入力停止のトリガとなるカウンタ値を、その他のデータパスの入力停止のトリガとなるカウンタ値よりも大きく設定してもよい。
【００７５】
また、上述の説明ではＤＭＡＣによりパケット・デパケットする構成について説明したが、ＤＲＡＭにＣＰＵがデータパケットとコマンドパケットを用意し、そのまま入力するようにしてもよい。
【００７６】
上述の実施形態の説明で用いたデータ処理装置の各部の概略構成図は、回路や機能手段の接続関係を説明するためのものであって、各構成の位置関係や個数を制限するものではない。例えば、本発明を実施するためには通信部は３個以上（入出力含める）有ればよい。また、処理部も２個以上有ればよい。
【００７７】
＜＜その他の実施形態＞＞
なお、上述の実施形態では、説明の簡便のため、画像データを処理の対象として説明したが、本発明は画像以外のデータ、動画データや音声データ、数値データなどを処理する処理装置にも適用できる。また、入出力部１０１は、ＤＭＡＣ９０３、ＤＭＡＣ９０４のダイレクトメモリアクセスによってＤＲＡＭなどにデータを転送しているが、ＤＭＡＣがない構成であっても本発明を適用することで同様の効果を得ることができる。
【００７８】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013175156.tif 000003
【図２】
2013175156.tif 000004
【図３】
2013175156.tif 000005
【図４】
2013175156.tif 000006
【図５】
2013175156.tif 000007
【図６】
2013175156.tif 000008
【図７】
2013175156.tif 000009
【図８】
2013175156.tif 000010
【図９】
2013175156.tif 000011