(57)【要約】【課題】  処理プレーン数の変更やモジュールの更新に柔軟に対応可能なデータフローの制御装置を提供する。【解決手段】  データ入出力部111は、メモリ101から所定単位のデータを入力する。パケット送信部112は、所定単位のデータを分割して格納したパケットを含む所定数のパケットを画像処理部103に送信する。パケット受信部113は、画像処理部103から所定数のパケットを受信し、パケットから所定単位のデータを取り出す。データ入出力部111は、パケットから取り出された所定単位のデータをメモリ101に出力する。【選択図】  図1
2019071149.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置であって、
前記メモリから所定単位のデータを入力する入力手段と、
前記所定単位のデータを分割して格納したパケットを含む所定数のパケットを前記データ処理装置に送信する送信手段と、
前記データ処理装置から前記所定数のパケットを受信し、前記パケットから前記所定単位のデータを取り出す受信手段と、
前記パケットから取り出された前記所定単位のデータを前記メモリに出力する出力手段とを有する制御装置。
【請求項２】
前記パケットは、前記制御装置と前記データ処理装置の間を接続する信号線のバス幅に相当するパケット長を有する請求項1に記載された制御装置。
【請求項３】
前記所定数は、前記複数の処理部における最大の処理ビット幅に基づき設定される請求項1または請求項2に記載された制御装置。
【請求項４】
前記所定単位のデータは複数プレーンのデータを有する請求項1から請求項3の何れか1項に記載された制御装置。
【請求項５】
前記所定単位のデータは画素データであり、前記パケットには前記画素データの画素位置を示す情報が含まれる請求項1から請求項4の何れか1項に記載された制御装置。
【請求項６】
データ処理を行う複数の処理部を有するデータ処理装置であって、前記複数の処理部はそれぞれ、
所定単位のデータを分割したデータが格納されたパケットを含む所定数のパケットを入力し、前記パケットから前記所定単位の一部または全部のデータを取り出す入力手段と、
前記パケットから取り出された前記データにデータ処理を施す処理手段と、
前記データ処理されたデータを前記所定数のパケットによって出力する出力手段とを有するデータ処理装置。
【請求項７】
データ処理を行う複数の処理部を有するデータ処理装置であって、前記複数の処理部はそれぞれ、
データ処理を行う処理手段と、
所定単位のデータを分割したデータが格納されたパケットを含む所定数のパケットを入力し、前記処理手段が使用するデータを前記処理手段に供給し、前記処理手段が使用しないデータをメモリに供給する入力手段と、
前記処理手段によってデータ処理が施されたデータおよび前記メモリから出力されるデータを前記所定数のパケットによって出力する出力手段とを有するデータ処理装置。
【請求項８】
前記入力手段は、データフローを制御する制御装置または前記複数の処理部の一つである前段の処理部から前記パケットを入力し、
前記出力手段は、前記制御装置または前記複数の処理部の一つである後段の処理部に前記パケットを出力する請求項6または請求項7に記載されたデータ処理装置。
【請求項９】
リングバスに接続され、前記リングバスを転送されるパケットに含まれるデータにデータ処理を施す複数の処理手段と、
データフローを制御する制御装置との間でパケットの送受信を行う通信手段を有し、
前記通信手段は、前記制御装置から受信した所定数のパケットを異なるデータ形式の複数のパケットに変換して前記複数のパケットを前記リングバスに送出し、前記データ処理後のデータを前記所定数のパケットと同じデータ形式の前記所定数のパケットに変換して前記所定数のパケットを前記制御装置に送信するデータ処理装置。
【請求項１０】
さらに、請求項1から請求項5の何れか1項に記載された制御装置を有する請求項6から請求項9の何れか1項に記載されたデータ処理装置。
【請求項１１】
メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置の制御方法であって、
入力手段が、前記メモリから所定単位のデータを入力し、
送信手段が、前記所定単位のデータを分割して格納したパケットを含む所定数のパケットを前記データ処理装置に送信し、
受信手段が、前記データ処理装置から前記所定数のパケットを受信し、前記パケットから前記所定単位のデータを取り出し、
出力手段が、前記パケットから取り出された前記所定単位のデータを前記メモリに出力する制御方法。
【請求項１２】
コンピュータを請求項1から請求項5の何れか1項に記載された制御装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理部を有するデータ処置装置と、そのようなデータ処置装置とメモリの間のデータフローを制御する制御装置に関する。
【背景技術】
【０００２】
近年、大判プリンタやプリンタの高級機において、高画質化のために処理プレーン数が増加している。一方、プリンタの普及機においては、コストを優先するため、処理プレーン数はCMYKなどの4プレーン程度に抑えられている。従って、プリンタに搭載する画像処理装置には、機器や処理モードに応じて処理プレーン数の変更が可能な構成が要求される。
【０００３】
処理プレーン数（伝送データ量）を任意に変更する方式として、処理モジュールのバス幅に合わせて転送するデータを複数のビットグループに分割する方法（特許文献1参照）や、バス幅を拡張できるよう構成する方法（特許文献2参照）がある。
【０００４】
また、一連の画像処理を所定の機能で分割してモジュール化し、モジュール間の論理的な接続順を変更して多様な印刷モードに対応する構成も提案されている（特許文献3参照）。この方法によれば、一連の画像処理を実現するデータフローの分岐や統合、複数データフローの同時実行など、複雑なデータフローのデータ処理が可能になる。
【０００５】
しかし、処理プレーン数を変更可能にするために各処理モジュールのバス幅を変更すると、従来の処理モジュールとの接続や処理内容の更新に柔軟に対応することができなくなる。また、バス幅の動的な変更を行えるように画像処理装置を構成した場合、最大データ量（最大処理プレーン数）を転送可能なバスや送受信バッファを備える必要があり、効率的ではない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2004-164579号公報
【特許文献２】特開2001-168940号公報
【特許文献３】特開2010-206517号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、処理プレーン数の変更やモジュールの更新に柔軟に対応可能なデータフローの制御装置を提供することを目的とする。また、処理プレーン数の変更やモジュールの更新に柔軟に対応可能なデータ処理装置を提供することを他の目的とする。
【課題を解決するための手段】
【０００８】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００９】
本発明にかかる制御装置は、メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置であって、前記メモリから所定単位のデータを入力する入力手段と、前記所定単位のデータを分割して格納したパケットを含む所定数のパケットを前記データ処理装置に送信する送信手段と、前記データ処理装置から前記所定数のパケットを受信し、前記パケットから前記所定単位のデータを取り出す受信手段と、前記パケットから取り出された前記所定単位のデータを前記メモリに出力する出力手段とを有する。
【００１０】
本発明にかかるデータ処理装置は、データ処理を行う複数の処理部を有するデータ処理装置であって、前記複数の処理部はそれぞれ、所定単位のデータを分割したデータが格納されたパケットを含む所定数のパケットを入力して、前記パケットから前記所定単位のデータの一部または全部を取り出す入力手段と、前記パケットから取り出された前記データにデータ処理を施す処理手段と、前記データ処理されたデータを前記所定数のパケットによって出力する出力手段とを有する。
【発明の効果】
【００１１】
本発明によれば、処理プレーン数の変更やモジュールの更新に柔軟に対応可能なデータフローの制御装置やデータ処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例のデータ処理装置の構成例を示すブロック図。
【図２】メモリに格納されるデータ例として複数プレーンの画像データを示す図。
【図３】一画素分のデータを分割して複数のパケットに格納した例を示す図。
【図４】画像処理部の処理部の構成例を示すブロック図。
【図５】結合部が出力するデータの形式例を示す図。
【図６】画像処理部の動作例を説明する図。
【図７】処理部の別の構成例を示すブロック図。
【図８】リングバスを使用する画像処理部の構成例を示すブロック図。
【図９】リングバスを転送されるパケットのデータ形式を示す図。
【図１０】データフロー制御部の動作を説明するフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明にかかる実施例のデータ処理装置、並びに、データフローの制御装置と制御方法を図面を参照して詳細に説明する。なお、実施例は特許請求の範囲にかかる本発明を限定するものではなく、また、実施例において説明する構成の組み合わせのすべてが本発明の解決手段に必須とは限らない。
【００１４】
［データ処理装置の構成］
図1のブロック図により実施例のデータ処理装置の構成例を示す。画像メモリのようなメモリ101には、図示しないメモリカードリーダ、スキャナ、コンピュータ機器などから入力された、例えば印刷対象の画像データが格納される。画像処理部103は、メモリ101に格納された画像データに各種画像処理を施す。
【００１５】
メモリ101は、アドレスを指定するためのアドレス信号線、データの入出力を行うためのデータ信号線、および、制御信号線を備える。なお、クロック信号については説明を省略する。それら信号線に接続するデータフロー制御部102は、メモリ101と画像処理部103の間において、データの読み書きやパケットの送受信（データフロー）を制御する制御装置である。
【００１６】
つまり、データフロー制御部102が指定するアドレスのデータがメモリ101から読み出され、データ信号線を介してデータフロー制御部102に入力される。また、データフロー制御部102がデータ信号線に出力するデータは、データフロー制御部102が指定するメモリ101のアドレスに書き込まれる。メモリ101に格納された画像処理後の画像データは、例えば、プリンタエンジンなどに送られて画像の印刷に使用される。
【００１７】
［データフロー制御部］
図2にメモリ101に格納されるデータ例として複数プレーンの画像データを示す。画像データには、色信号に対応する色プレーン（シアンC、マゼンタM、イエローY、ブラックK）や、例えば文字や細線などの属性信号に対応する属性プレーンが存在する。各プレーンのデータは、画素ごとに、例えば16ビットの信号値や属性値として保持されている。例えば、メモリ101からデータを読み出す際、Cプレーンの左上画素に対応するアドレスが指定されると、当該画素の信号値がデータ信号線に出力される。
【００１８】
メモリ101に対して画像データの読み書きを行う際、データフロー制御部102は、メモリ101から読み出した所定単位のデータ（例えば画素単位の画素データ）を画像処理部103が扱うデータ形式に変換して画像処理部103に送信する。また、画像処理部103から受信した画素データをメモリ101に格納するデータ形式に変換してメモリ101に出力する。
【００１９】
データフロー制御部102のデータ入出力部111は、メモリ101から一画素分のデータを読み出す際、図2に示すC、M、Y、K、属性の各プレーンの同一画素に対応するアドレスを指定し、当該画素の全プレーンの信号値と属性値を読み出す。この例では、5プレーン分のデータが読み出され、それらのデータ量は5プレーン×16ビット=80ビットになる。もし、これらデータをひとまとめに画像処理部103へ送信しようとすると、データフロー制御部102と画像処理部103の間に80ビットのバス幅の信号線が必要になる。
【００２０】
高画質化のためにプレーン数が増えれば、より広いバス幅の信号線が必要になる。実施例においては、データフロー制御部102と画像処理部103の間に例えば64ビット幅の信号線を設け、一画素分のデータを複数回に分けて転送する。このデータ分割を行うのが、データフロー制御部102のパケット送信部112である。
【００２１】
図3により一画素分のデータを分割して複数のパケットに格納した例を示す。パケットは、信号線のバス幅に相当する例えば64ビットのパケット長を有し、各16ビットの四つの情報をパケットに格納することができる。各パケットのヘッダには、パケット番号（例えば3ビット）や画素位置を示す情報（例えば13ビット、以下、画素位置情報）が格納される。ヘッダに続くデータ領域には、各16ビットのデータを三つ格納することができる。
【００２２】
図3に示す第一のパケット301のヘッダには一番目のパケットであることを示すパケット番号と画素位置情報が格納され、データ領域にはCMYの信号値が格納される。第二のパケット302のヘッダには二番目のパケットであることを示すパケット番号と画素位置情報が格納され、データ領域にはKの信号値と属性値が格納される。余ったデータ領域には空であることを示すnullデータが格納される。
【００２３】
第三のパケット303のヘッダには三番目のパケットであることを示すパケット番号と画素位置情報が格納され、全データ領域にnullデータが格納される。第三のパケットは、画像処理部103において最大の処理ビット幅の処理部に合わせるためのパケットである。図3の例によれば、最大16×3×3=144ビット幅の処理が可能になり、画像処理部103のバス幅の仮想的な拡張が実現される。勿論、最大の処理ビット幅が16×3×2=96ビット以下であれば第三のパケットは必須ではなく、逆に、最大の処理ビット幅が144ビットを超える場合は第四以降のパケットが追加される。
【００２４】
また、さらに多くのプレーン数を扱う場合はパケット数の増加で対応することができる。つまり、扱うプレーン数に関わらずデータフロー制御部102と画像処理部103の間の信号線を例えば64ビット幅に固定することができ、プレーン数の増加に対して柔軟な対応が可能になる。
【００２５】
画像処理部103は、画素データにデータ処理を施すデータ処理装置である。つまり、データフロー制御部102から送信された画素データは、画像処理部103においてデータ処理が施され、処理後の画素データが複数のパケットとしてデータフロー制御部102に受信される。その際、送信時と同様に、一画素分のデータは分割され、パケットに格納された状態である。
【００２６】
データフロー制御部102のパケット受信部113は、複数のパケットに含まれる一画素分のデータを取り出して、それらデータをメモリ101に書き込むデータ形式の画素データに編成する。つまり、パケット受信部113は、複数のパケットから5プレーン分のデータを取り出し、それらデータを画素データに編成し、画素データと画素位置情報をデータ入出力部111に出力する。データ入出力部111は、画素位置情報に対応するアドレスを指定して、画素データをメモリ101に書き込む。
【００２７】
データフロー制御部102において、メモリ101からの画素データの読み出し、画像処理部103との間のパケットの送受信、メモリ101への処理済み画素データの書き込みは、並列に実行される。そして、メモリ101に格納された画像データの全画素データに対して上記の処理を行うことで一画像分の画像データに対する画像処理が終了する。
【００２８】
●データフロー制御部の動作
図10のフローチャートによりデータフロー制御部102の動作を説明する。図10には、例えば画素データに対する一連の動作を示すが、データフロー制御部102は、図10に示す動作を画像データの全画素データに対して繰り返し実行し、図10に示す各ステップの処理は並列的に実行される。
【００２９】
データ入出力部111は、メモリ101から所定単位のデータ（例えば画素データ）を入力する(S101)。なお、画素データの入力は、例えば、ラスタ順に行えばよい。パケット送信部112は、所定単位のデータを分割し(S102)、分割したデータを格納したパケットを含む所定数のパケットを画像処理部103に送信する(S103)。
【００３０】
パケット受信部113は、画像処理部103から所定数のパケットを受信し(S104)、パケットから所定単位のデータ（例えば処理済みの画素データ）を取り出す(S105)。データ入出力部111は、パケットから取り出された所定単位のデータをメモリ101に出力する(S106)。出力されたデータはメモリ101に格納される。なお、画素データの格納は、例えば、ラスタ順に行われる。
【００３１】
図10に示す動作を実現するプログラムを格納したROMなどの記録媒体をコンピュータ装置に供給することで、ソフトウェアによってデータフロー制御部102の機能を実現することが可能である。
【００３２】
［画像処理部］
画像処理部103は、データフロー制御部102から順次入力される画素データに色域マッピング、ガンマ変換、ハーフトーン処理、解像度変換などの画像処理を施し、処理結果をデータフロー制御部102に出力する。画像処理部103は様々な画像処理機能を有する例えば処理部121a-121dを備え、それら処理部はカスケード接続されている。
【００３３】
また、画像処理部103の各処理部の間を接続する信号線は、データフロー制御部102と画像処理部103の間の信号線と同様に例えば64ビットのバス幅を有し、データフロー制御部102から入力されるパケット数でデータ転送が行われる。言い替えれば、画像処理部103の各処理部は、データフロー制御部102から入力された数のパケットとそのデータ形式を維持し、各画像処理を順次画素データに施して、最終的な処理結果を得る。
【００３４】
図4のブロック図により画像処理部103の処理部の構成例を示す。なお、処理部121a-121dは実行する画像処理が異なる点を除き、略同一の構成を有するため、処理部121を代表として構成を説明する。
【００３５】
パケット入力部401は、データフロー制御部102または前段の処理部121から複数のパケットを受信し、それらパケットから抽出した画素データをデータ処理部402に出力する。データ処理部402は、所定の画像処理を行う。パケット出力部403は、データ処理部402から入力される画像処理後の画素データから複数のパケットを構成し、それらパケットを後段の処理部121またはデータフロー制御部102に送信する。
【００３６】
パケット入力部401は、所定数のパケットを受信した後、データ処理部402の処理に必要なデータをひとまとめにしてデータ処理部402に出力する。パケット入力部401において、受信部4011は、パケットを受信すると、当該パケットのヘッダに格納されたパケット番号によって何番目のパケットかを判定する。
【００３７】
受信したパケットが第一または第二のパケットの場合、受信部4011は、当該パケットのデータ領域に格納されたnullデータを除くデータをデータバッファ4012に格納する。また、受信したパケットが第三のパケットの場合、受信部4011は、当該パケットを結合部4013に出力する。結合部4013は、パケットが入力されると、データバッファ4012に保持されたデータとパケットを結合してデータ処理部402に出力する。
【００３８】
図5により結合部4013が出力するデータの形式例を示す。つまり、第三のパケットに所定順に属性データと色データを結合したデータが結合後のデータであり、例えば160ビットのデータである。データ処理部402は、パケット入力部401から入力されたデータの、所定のデータ領域に格納されたデータを用いて画像処理を行い、処理結果をパケット出力部403に出力する。
【００３９】
パケット出力部403は、後段の処理部121またはデータフロー制御部102にデータを送信するために、処理結果のデータを複数のパケットに分割する。パケット出力部403において、分離部4031は、データ処理部402から入力されたデータをヘッダとデータ領域に分離し、ヘッダのデータをヘッダバッファ4033に格納し、データ領域のデータをデータバッファ4032に格納する。
【００４０】
送信部4034は、パケット番号とヘッダバッファ4033に格納された画素位置情報をヘッダに格納し、第一のパケットのデータ（データバッファ4032に格納されたCMYに対応する信号値）をデータ領域に格納した第一のパケットを生成する。続いて、パケット番号とヘッダバッファ4033に格納された画素位置情報をヘッダに格納し、第二のパケットのデータ（データバッファ4032に格納されたKと属性に対応する信号値）をデータ領域に格納した第二のパケットを生成する。そして、パケット番号とヘッダバッファ4033に格納された画素位置情報をヘッダに格納し、nullデータを全データ領域に格納した第三のパケットを生成する。これらパケットは、生成順に、後段の処理部121またはデータフロー制御部102に送信される。
【００４１】
処理部121は、複数のパケットによって転送される画素データを結合してデータ処理部402が処理可能な状態にし、処理後のデータを複数のパケットに分割する。従って、各処理部121が扱うプレーン数が異なる場合も、所定のバス幅によるデータ転送が可能になる。
【００４２】
●画像処理部の動作例
図6により画像処理部103の動作例を説明する。なお、各処理部121が次の設定の場合を前提として説明を行う。
処理部121a：四次元ルックアップテーブル(4DLUT)を用いる処理（以下、4DLUT処理）を行い、処理後の色データをデータ領域の空き領域（以下、空き領域）に格納する。
処理部121b：4DLUT処理を行い、処理後の色データを元の色データに上書きする。
処理部121c：8色のハーフトーン処理を行い、各色データを量子化する。
処理部121d：8色の色データをブレンドまたは選択して4色の色データとし、処理後の色データを元の色データの格納領域に格納する。
【００４３】
なお、4DLUT処理は、入力データに基づき4DLUTを参照して、入力データに対応する出力データを得る処理であり、四面体補間などの補間処理が用いられる。また、ハーフトーン処理は、N階調の入力データをM階調（N＞M）の出力データに変換する処理であり、誤差拡散法やディザ法などによる中間調処理が含まれる。
【００４４】
データフロー制御部102は、メモリ101から画素データを読み出し、図3に示す複数のパケットを生成して、画像処理部103に出力する。図6に示す画素データ601は、処理部121aが入力する複数のパケットから構成される画素データを示す。処理部121aは、元の色データCMYKを4DLUT処理した結果の色データC'M'Y'K'を空き領域に格納した画素データ602を生成する。処理部121aが生成する画素データ602には元の色データCMYKが残っている。画素データ602は、上述したように複数のパケットに分割されて処理部121bに送信されるが、その点の説明は省略する。
【００４５】
処理部121bは、画素データ602を入力して、元の色データCMYKを4DLUT処理した結果の色データC"M"Y"K"を元の色データに上書きした画素データ603を生成する。続いて、処理部121cは、画素データ603を入力して、各色データC'M'Y'K'C"M"Y"K"をハーフトーン処理した結果の色データc'm'y'k'c"m"y"k"を色データの領域に上書した画素データ604を生成する。
【００４６】
次に、処理部121dは、画素データ604を入力して、属性データに基づき、ブレンドした色データまたは選択した色データを元の色データの格納領域に上書した画素データ605を生成する。なお、画素データ605の空き領域にはnullデータが格納される。画素データ605は、複数のパケットに分割されて、データフロー制御部102に送信される。
【００４７】
このように、画像処理部103の中で最大ビット幅の処理を行う処理部121に合わせてパケット数を設定し、空き領域も含めて画素データの転送を行うことで、画像処理部103のバス幅の仮想的な拡張が可能になる。図6に示すように、処理部121a-121cが出力する画素データ602-604や処理部121dが入力する画素データ604は実質的に9プレーン分のデータから構成される。仮想的なバス幅の拡張によって、処理部121の処理ごとに必要なプレーン数が変わる場合にも対応が可能になる。
【００４８】
また、データフロー制御部102のパケット送信部112とパケット受信部113において、パケットの空き領域を処理する。従って、メモリ101に空き領域に対応するnullデータを保持させる必要がなく、データ入出力部111におけるnullデータのバッファリングが不要になる。
【００４９】
なお、図6には、処理部121dの処理後不要になるデータ領域にnullデータを格納して出力する例を示した。しかし、有効なデータ領域がわかっているので、有効なデータ領域のデータだけをパケット受信部113がデータ入出力部111に出力する構成も可能であり、処理後不要になるデータ領域へのnullデータの格納は必須ではない。
【００５０】
このように、機器や処理モードに応じて処理プレーン数の変更が要求される場合、連続して転送する一群のパケットの数を制御することで、任意の処理プレーン数の処理が可能になる。
【００５１】
［処理部の別の構成］
次に、処理部121のバッファサイズを最適化する構成例を説明する。なお、処理部121以外の構成は、上記と同様であり、その詳細説明を省略する。図7のブロック図により処理部121の別の構成例を示す。
【００５２】
パケット入力部701は、データフロー制御部102または前段の処理部121から複数のパケットを受信し、各パケットが含むデータの結合を行う。そして、データ処理部702とファーストインファーストアウトメモリ(FIFO)704におけるデータ受信が可能になるのを待つ。データ受信が可能になると、パケット入力部701は、データ処理部702が使用するデータ領域のデータのみをデータ処理部702に出力し、データ処理部702が使用しないデータのみをFIFO704に出力する。
【００５３】
データ処理部702は、パケット入力部701から入力されたデータに画像処理を行い、処理済みのデータをパケット出力部703に出力する。データ処理部702がデータを処理している間、FIFO704は、データ処理部702が使用しないデータを保持し、データ処理部702が処理済みのデータをパケット出力部703に出力すると略同時に、保持するデータをパケット出力部703に出力する。パケット出力部703は、データ処理部702とFIFO704から入力されるデータから複数のパケッを構成し、それらパケットを後段の処理部121またはデータフロー制御部102に送信する。
【００５４】
データ処理部702がデータを処理している間、FIFO704が、データ処理部702が使用しないデータのすべてを保持していれば、データ供給を止めることなくデータ処理部702を動作させることができる。例えば、下記の条件下において、FIFO704には少なくともデータ処理部702が使用しない二つのパケット分のデータを保持するバッファが必要になる。
・処理部121の間で転送されるデータが三つのパケットに分割して転送される（転送レートは1/3サイクル）。
・データ処理部702は、16ビット×3（1パケット分）のデータしか扱わない。
・データ処理部702は、12サイクルのレイテンシでデータを処理する。
・データ処理部702のスループットは1/3。
【００５５】
上記の条件において、FIFO704が一段の場合、データ処理部702がデータを処理している間、FIFO704が次のデータを受信することができず、データ供給が滞る。データ処理部702が12サイクルかけてデータを処理する間、3サイクルごとにデータが供給される。そのため、データ処理部702に最初に入力されたデータに対する出力が得られるまで、最大4回（12サイクル/3サイクル）分のデータを保持することができればデータ処理部702へのデータ供給が止まることはない。従って、データ処理部702のレイテンシのサイクル数をL、パケット数をDとした場合、L/D分のFIFO704の段数を用意すれば、最適なバッファサイズによるデータ保持が可能になる。
【００５６】
なお、上記では隙間なくパケットが入力されることを仮定しているが、転送レートが低く、パケット間に無効なパケットがある場合、FIFO704の段数をさらに削減することができる。例えば、処理部121の間で転送されるデータの実効転送レートが1/6サイクルの場合、FIFO704の段数は2段でよい。つまり、実効転送レートをTとすると、FIFO704の段数はL×T以上あればよい。
【００５７】
このように、パケット数が変わっても、データ処理部702を変更することなく使用することができる。パケット入力部701は、データ処理部702が使用するデータと使用しないデータを分別するだけであり、パケット出力部703は、データ処理部702の出力とFIFO704の出力を同期させて出力するだけであり、変更も容易である。
【００５８】
このように、処理部121の入出力において、連続転送される一群のパケットの数を処理パイプラインの最大処理プレーン数に応じた数に変換することで、バッファサイズを最適化することができる。
【００５９】
［リングバスを用いる例］
次に、画像処理部103にリングバスを用いる例を説明する。なお、リングバスについては特許文献3などに詳述されているので、その動作の概要を説明する。なお、画像処理部103以外の構成は、上記と同様であり、その詳細説明を省略する。図8のブロック図によりリングバスを使用する画像処理部103の構成例を示す。
【００６０】
図8に示すように、画像処理部103において、データ領域に対する処理を行う処理部1002とパケット通信を行う通信部1001を有する複数のモジュールが、通信部1001同士の接続によってリング状に接続されている。
【００６１】
複数の通信部のうち、通信部1001aは、データ処理対象のデータの入力と、データ処理後のデータの出力を行うために、データフロー制御部102との接続に使用される。つまり、通信部1001aは、データフロー制御部102との間でパケットの送受信を行い、受信した複数のパケットを後述するデータ形式の複数のパケットに変換して、変換後のパケットをリングバスに送出する。また、通信部1001aは、データ処理後のデータをデータフロー制御部102に送信するデータ形式の複数のパケットに変換し、変換後のパケットをデータフロー制御部102に送信する。
【００６２】
図9によりリングバスを転送されるパケットのデータ形式を示す。パケットは、図3に示すパケットのデータ領域に相当するデータフレーム905を含む。パケットには、パケットの有効無効を示すValidフラグ901と、パケットが含むデータの処理の保留状態を示すStallフラグ902が付加される。パケットには、さらに、パケットの送信順を示すカウント値903と、データの論理的な接続を識別するためのノードID904が付加される。
【００６３】
各通信部1001の受信部には、処理対象のパケットを識別するための受信ノードIDが設定されている。通信部1001は、受信ノードIDと一致するノードID904と、通信部1001の入力カウンタの値と一致するカウント値903が付加されたパケットをリングバスから受信すると、当該パケットのデータフレーム905からデータを取り出す。そして、入力カウンタをインクリメントし、取り出したデータを対応する処理部1002に出力する。
【００６４】
また、各通信部1001の送信部には、処理済みのデータを格納するパケットのノードID904として付加するための送信ノードIDが設定されている。処理部1002から処理済のデータを入力すると、通信部1001は、当該データをデータフレーム905に格納し、送信ノードIDをノードID904として、通信部1001の出力カウンタの値をカウント値903として付加したパケットを生成する。そして、出力カウンタをインクリメントし、生成したパケットをリングバスに送出する。
【００６５】
受信ノードIDと異なるノードID904が付加されたパケットや、入力カウンタの値と異なるカウント値903が付加されたパケットを受信した場合、通信部1001は、受信したパケットをそのままリングバスへ送出する。また、対応する処理部1002がデータ受信不可能な状態にあり、ノードIDとカウント値が一致するパケットを受信した場合、通信部1001は、当該パケットのStallフラグ902に保留状態を示す‘1’を設定したパケットをリングバスに送出する。
【００６６】
通信部1001の図示しない入力カウンタと出力カウンタは、通信部1001が受信したパケット数と送信したパケット数をそれぞれカウントする。インクリメントによるカウンタの値の増分は、+1に限らず、処理部1002の処理に応じた増分が設定される。
【００６７】
●動作例1
次に、リングバスを用いる画像処理部103において、画素データを分割した複数のパケットを複数の通信部1001に分配して画像処理を行う動作について、各処理部1002が次の設定の場合を例に説明する。
処理部1002b、1002c、1002d：変換テーブルの値が異なるだけの処理部であり、三次元LUT処理（3DLUT処理）を行う。
処理部1002e：ハーフトーン処理を行う。
通信部1001aの受信ノードID：1
通信部1001b、1001c、1001dの受信ノードID：2
通信部1001eの受信ノードID：3
通信部1001aの送信ノードID：2
通信部1001b、1001c、1001dの送信ノードID：3
通信部1001eの送信ノードID：1
通信部1001aの受信/送信カウンタ：初期値「0」、増分「1」。
通信部1001bの受信/送信カウンタ：初期値「0」、増分「3」。
通信部1001cの受信/送信カウンタ：初期値「1」、増分「3」。
通信部1001dの受信/送信カウンタ：初期値「2」、増分「3」。
通信部1001eの受信/送信カウンタ：初期値「0」、増分「1」。
【００６８】
なお、3DLUT処理は、入力データに基づき3DLUTを参照して、入力データに対応する出力データを得る処理であり、四面体補間などの補間処理が用いられる。
【００６９】
以上の設定により、処理部1001bは、カウント値903として「0+3n」が付加されたパケットに3DLUT処理を施す。同様に、処理部1001cはカウント値903として「1+3n」が付加されたパケットに、処理部1001dはカウント値903として「2+3n」が付加されたパケットに、それぞれ3DLUT処理を施す。
【００７０】
言い替えれば、カウント値903として0、1、2、…が付加されたパケットが通信部1001aから送出された場合、0+3n（nは0以上の整数）のパケットは通信部1001bによって受信され処理部1002bによってデータが処理される。同様に、1+3nのパケットは通信部1001cと処理部1002cによって処理され、2+3nのパケットは通信部1001dと処理部1002dによって処理される。なお、処理部1002b、1002c、1002dは変換テーブルの値が異なるだけの同等の処理部であり、同じサイクル数で処理結果を出力する。その結果、処理部1002b、1002c、1002dが処理したデータが格納されたパケットは、順次、通信部1001eに入力され、処理部1002eによってデータにハーフトーン処理が施される。
【００７１】
このように、各通信部1001のカウンタの増分を設定することで、同一ノードから送出されたパケットを複数の処理部1002b、1002c、1002dに分配して、パケットに格納されたデータを並列的に処理することが可能になる。言い替えれば、同じ受信ノードIDを設定した複数の通信部をリングバスに配置し、それら通信部が受信するパケットのカウント値が異なるよう設定することで、画素データを分割した複数のパケットを複数の処理部に分配して並列的に処理することが可能になる。
【００７２】
また、実施例1においてはパケットのヘッダにパケット番号を含める構成としたが、実施例3においては、カウント値903がパケット番号と同等の機能を有するため、ヘッダにパケット番号を含める必要がない。
【００７３】
実施例3においては、リングバス上のパケットの挙動は、パケット数に関わらず、通常の処理と変わらない。従って、図7に示すパケット入力部701、パケット出力部703、FIFO704のような、パケット数の増加に対応するための構成は不要になる。つまり、ノードIDの設定とカウンタの増分の設定により、任意のパケット数に対応することができる。とくに、同一機能の処理部による並列処理において、リングバス上のパケットが各通信部により順次取り込まれ、順次出力されるので、リングバスの帯域を増加させることなく並列処理数を増加させることができる。
【００７４】
なお、実施例1で説明したように、最大のビット幅の処理を行う処理部に合わせてパケット数を設定し、空き領域を含めてパケットを転送する場合、通信部1001aが空き領域を内部メモリに格納できるように空き領域を追加する。また、通信部1001aは、データフロー制御部102から受信したパケットのヘッダのデータを内部メモリに格納し、当該データをデータフロー制御部102に送信するパケットのヘッダに格納する。
【００７５】
●動作例2
動作例1では処理部1002b、1002c、1002dとして同じ機能をもつ処理部が配置し、パケットに含まれるデータを各処理部が処理する例を説明した。しかし、各処理部の処理サイクル数が異なる場合、パケットの同期に時間が掛かる場合がある。
【００７６】
例えば、処理部1002b、1002c、1002dにデータが供給された後、処理部1002d、1002c、1002bの順に処理が終了したとする。なお、処理部1002d、1002c、1002bの処理結果を含むパケットをそれぞれ「パケットD」「パケットC」「パケットB」と呼ぶことにする。この場合、パケットD、パケットC、パケットBの順に通信部1001eに到達することになる。
【００７７】
通信部1001eは、カウント値903に従い、処理部1002b、1002c、1002dの順に処理結果のデータを取り込むように構成されている。そのため、通信部1001eがパケットBのデータを取り込むまでパケットCはリングバスを周回することになる。同様に、通信部1001eがパケットCのデータを取り込むまで、パケットDはリングバスを周回することになる。例えば、パケットCはリングバスを1周した後、通信部1001eによって、そのデータが取り込まれる。また、パケットDはリングバスを2周した後、通信部1001eによって、そのデータが取り込まれる。
【００７８】
このように、同じ受信ノードIDを使用して並列的に処理を行うように構成したとしても、各処理部の処理サイクル数が異なる場合、パケットの同期に時間が掛かり、効率的な処理が行えない場合がある。
【００７９】
動作例2では、上記のような状況においても、パケットの同期を容易に行う方法を説明する。なお、受信/送信ノードID、受信/送信カウンタの初期値や増分などの設定は動作例1と同様とし、処理部1002b、1002c、1002dの処理サイクル数は何れもリングバス1周分以下とする。
【００８０】
パケットを受信した際にパケットから取り込んだデータを対応する処理部に供給し、当該パケットのStallフラグ902に保留状態を示す‘1’を設定したパケットをリングバスに送出するように、通信部1001b、1001c、1001dを構成する。つまり、通信部1001b、1001c、1001dは、パケットからデータを取り込むが、当該パケットを無効にせずに保留状態にしてリングバスを周回させる。
【００８１】
保留状態にされたパケットがリングバスを周回している間に、処理部1002b、1002c、1002dはデータを処理する。通信部1001b、1001c、1001dは、自から保留状態にしたパケットを受信すると、当該パケットに、対応する処理部の処理結果、送信ノードID、送信カウンタの値を格納する。そして、当該パケットのStallフラグ902に保留状態の解除を示す‘0’を設定したパケットをリングバスに送出する。
【００８２】
処理部がデータを処理している間、当該データを取り込んだパケットをリングバスに保留状態のパケットとして周回させ、戻ってきた保留状態のパケットを処理結果を転送するためのパケットに書き換える。これにより、各処理部の処理サイクル数によって、通信部1001eにおける処理結果の到着順の変化を防ぐことができ、パケットの同期を容易に行うことができる。
【００８３】
また、並列処理を行う処理部に最長の処理時間がリングバス1周分を超える処理部が含まれる場合、通信部1001b、1001c、1001dに周回カウンタを設ける。そして、最長の処理時間以上の周回数分、保留状態のパケットを周回させた後、当該パケットを書き換えるようにすればよい。
【００８４】
また、図6に示したように、並列処理を行う処理部が同じパケットを参照する場合も、空きパケットを含めて保留状態のパケットとして周回させることで、すべての処理部において同一のパケットの参照が可能になる。
【符号の説明】
【００８５】
101 … メモリ、111 … データ入出力部、112 … パケット送信部112、113 … パケット受信部、103 … 画像処理部
【図１】
2019071149.tif 000003
【図２】
2019071149.tif 000004
【図３】
2019071149.tif 000005
【図４】
2019071149.tif 000006
【図５】
2019071149.tif 000007
【図６】
2019071149.tif 000008
【図７】
2019071149.tif 000009
【図８】
2019071149.tif 000010
【図９】
2019071149.tif 000011
【図１０】
2019071149.tif 000012
【手続補正書】
【提出日】平成31年3月18日(2019.3.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明にかかる制御装置は、メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置であって、
前記メモリから所定単位のデータを入力する入力手段と、
前記所定単位のデータを、前記制御装置と前記データ処理装置との間を接続する信号線のバス幅を超えないパケット長のパケットのデータ領域に格納されるように分割し、該分割した該所定単位のデータを該データ領域に格納したパケットを含む所定数のパケットを前記データ処理装置に送信する送信手段と、
前記データ処理装置から前記所定数のパケットを受信し、該受信した所定数のパケットから前記所定単位のデータを取り出す受信手段と、
前記受信手段により受信した所定数のパケットから取り出された前記所定単位のデータを前記メモリに出力する出力手段とを有し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理部における処理ビット幅を超えないことを特徴とする。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置であって、
前記メモリから所定単位のデータを入力する入力手段と、
前記所定単位のデータを、前記制御装置と前記データ処理装置との間を接続する信号線のバス幅を超えないパケット長のパケットのデータ領域に格納されるように分割し、該分割した該所定単位のデータを該データ領域に格納したパケットを含む所定数のパケットを前記データ処理装置に送信する送信手段と、
前記データ処理装置から前記所定数のパケットを受信し、該受信した所定数のパケットから前記所定単位のデータを取り出す受信手段と、
前記受信手段により受信した所定数のパケットから取り出された前記所定単位のデータを前記メモリに出力する出力手段とを有し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理部における処理ビット幅を超えないことを特徴とする制御装置。
【請求項２】
前記所定単位のデータは複数プレーンのデータを有する請求項1に記載された制御装置。
【請求項３】
前記所定単位のデータは画素データであり、前記パケットには前記画素データの画素位置を示す情報が含まれる請求項1または請求項２に記載された制御装置。
【請求項４】
データ処理を行う複数の処理部を有するデータ処理装置であって、前記複数の処理部はそれぞれ、
所定単位のデータを分割したデータが格納されたデータ領域を有するパケットを含む所定数のパケットを入力し、前記パケットから前記所定単位の一部または全部のデータを取り出す入力手段と、
前記パケットから取り出された前記データにデータ処理を施す処理手段と、
前記データ処理されたデータを前記所定数のパケットによって出力する出力手段とを有し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理部における処理ビット幅を超えないことを特徴とするデータ処理装置。
【請求項５】
データ処理を行う複数の処理部を有するデータ処理装置であって、前記複数の処理部はそれぞれ、
データ処理を行う処理手段と、
所定単位のデータを分割したデータが格納されたデータ領域を有するパケットを含む所定数のパケットを入力し、前記処理手段が使用するデータを前記処理手段に供給し、前記処理手段が使用しないデータをメモリに供給する入力手段と、
前記処理手段によってデータ処理が施されたデータおよび前記メモリから出力されるデータを前記所定数のパケットによって出力する出力手段とを有し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理部における処理ビット幅を超えないことを特徴とするデータ処理装置。
【請求項６】
前記入力手段は、データフローを制御する制御装置または前記複数の処理部の一つである前段の処理部から前記パケットを入力し、
前記出力手段は、前記制御装置または前記複数の処理部の一つである後段の処理部に前記パケットを出力する請求項４または請求項５に記載されたデータ処理装置。
【請求項７】
リングバスに接続され、前記リングバスを転送されるパケットのデータ領域に含まれるデータにデータ処理を施す複数の処理手段と、
データフローを制御する制御装置との間でパケットの送受信を行う通信手段を有し、
前記通信手段は、前記制御装置から受信した所定数のパケットを異なるデータ形式の複数のパケットに変換して前記複数のパケットを前記リングバスに送出し、前記データ処理後のデータを前記所定数のパケットと同じデータ形式の前記所定数のパケットに変換して前記所定数のパケットを前記制御装置に送信し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理手段における処理ビット幅を超えないことを特徴とするデータ処理装置。
【請求項８】
さらに、請求項1から請求項３の何れか1項に記載された制御装置を有する請求項４から請求項７の何れか1項に記載されたデータ処理装置。
【請求項９】
メモリと、データ処理を行う複数の処理部を有するデータ処理装置の間のデータフローを制御する制御装置の制御方法であって、
入力手段が、前記メモリから所定単位のデータを入力し、
送信手段が、前記所定単位のデータを、前記制御装置と前記データ処理装置との間を接続する信号線のバス幅を超えないパケット長のパケットのデータ領域に格納されるように分割し、該分割した該所定単位のデータを該データ領域に格納したパケットを含む所定数のパケットを前記データ処理装置に送信し、
受信手段が、前記データ処理装置から前記所定数のパケットを受信し、該受信した所定数のパケットから前記所定単位のデータを取り出し、
出力手段が、前記受信した所定数のパケットから取り出された前記所定単位のデータを前記メモリに出力し、
前記所定数のパケットのデータ領域の合計ビット幅は、前記複数の処理部における処理ビット幅を超えないことを特徴とする制御方法。
【請求項１０】
コンピュータを請求項1から請求項３の何れか1項に記載された制御装置の各手段として機能させるためのプログラム。