(57)【要約】【課題】  複数の処理要求が共有したリソースに対して競合した際に処理性能、リアルタイム性を改善する。【解決手段】  アプリケーションから要求された処理を実行するデータ処理装置であって、処理の指示があったとき、当該指示で示されるコマンドリストに従って処理を実行する処理部と、アプリケーションから処理の要求を受信したとき、当該要求に応じたコマンドリストを生成し、処理部に対して処理の指示を行う制御部とを有する。ここで、処理部は、制御部からの第１の指示に対するコマンドリストを実行中に第２の指示を受けた場合であって、第１の指示に対するコマンドリストにおける予め設定された制御点となるコマンドの実行のタイミングにて、第２の指示に対するコマンドリストの実行に切り替える切り替え部を含む。【選択図】  図２
2020101921.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションから要求された処理を実行するデータ処理装置であって、
処理の指示があったとき、当該指示で示されるコマンドリストに従って処理を実行する処理手段と、
アプリケーションから処理の要求を受信したとき、当該要求に応じたコマンドリストを生成し、前記処理手段に対して処理の指示を行う制御手段とを有し、
前記処理手段は、
前記制御手段からの第１の指示に対するコマンドリストを実行中に第２の指示を受けた場合であって、前記第１の指示に対するコマンドリストにおける予め設定された制御点となるコマンドの実行のタイミングにて、前記第２の指示に対するコマンドリストの実行に切り替える切り替え手段を含む
ことを特徴とするデータ処理装置。
【請求項２】
前記制御点となるコマンドは、外部デバイスと同期するための同期コマンドであることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記制御点となるコマンドは、実行するコマンド位置を分岐するための分岐コマンドであることを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記処理手段は、画像を複数に分割した部分画像を単位として処理し、
前記制御手段は、実行すべきコマンドリストを切り替える際に、処理すべき単位の部分画像のサイズを制御する
ことを特徴とする請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記部分画像は処理の対象の画像を、水平、又は垂直の方向に分割したバンド領域であり、前記制御手段は、バンド領域の高さを制御して処理するデータの量を調整することを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記制御手段は、コマンドリストの優先順位により、前記部分画像の大きさを制御することを特徴とする請求項４に記載のデータ処理装置。
【請求項７】
前記制御手段は、前記外部デバイスとの同期の長さにより、前記部分画像の大きさを制御することを特徴とする請求項４に記載のデータ処理装置。
【請求項８】
前記制御手段は、切り替え先のコマンドリストの生成のときパラメータを変更することにより、前記部分画像の大きさを制御することを特徴とする請求項４に記載のデータ処理装置。
【請求項９】
前記処理手段は、切り替え先のコマンドリストのパラメータの値を演算して前記部分画像の大きさを制御する手段を含むことを特徴とする請求項４に記載のデータ処理装置。
【請求項１０】
前記コマンドリストのパラメータは、バンド高さと、バンド処理の繰り返し数を含むことを特徴とする請求項８乃至９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記処理手段は、複数の同期部を備え、処理要求に応じて取得した複数のコマンドリストの情報を退避することを特徴とする請求項１に記載のデータ処理装置。
【請求項１２】
前記複数の同期部の各々にセンサが接続されることを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記処理手段は、複数のデータ処理手段を有し、
前記切り替え手段により、複数の処理要求に対するコマンドリストの何れかを複数のデータ処理手段の何れかに割り振ることを特徴とする請求項１記載のデータ処理装置。
【請求項１４】
前記複数のデータ処理手段の各々は、互いに異なる回路を用いたヘテロジニアスな構成であることを特徴とする請求項１３記載のデータ処理装置。
【請求項１５】
アプリケーションから要求された処理を実行するデータ処理装置の制御方法であって、
処理の指示があったとき、当該指示で示されるコマンドリストに従って処理を実行する処理工程と、
アプリケーションから処理の要求を受信したとき、当該要求に応じたコマンドリストを生成し、前記処理工程に対して処理の指示を行う制御工程とを有し、
前記処理工程は、
前記制御工程からの第１の指示に対するコマンドリストを実行中に第２の指示を受けた場合であって、前記第１の指示に対するコマンドリストにおける予め設定された制御点となるコマンドの実行のタイミングにて、前記第２の指示に対するコマンドリストの実行に切り替える切り替え工程を含む
ことを特徴とするデータ処理装置の制御方法。
【請求項１６】
コンピュータが読み込み実行することで、前記コンピュータに、請求項１５に記載の制御方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置及びその制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、さまざまな機器において処理性能の向上と、より一層のコスト削減の両立が求められている。これらの機器には、ある種のコンピュータ・システムが搭載されており、コンピュータ・システムの製造コストあたりの処理性能は、機器の良否を決定する要因の一つと言える。
【０００３】
例えば、ビジネス向け複写機では、ネットワーク上の複数ユーザから処理要求があり、ユーザへの快適な応答が求められている。一方、機器の低コスト化のため、多種多様な画像処理のハードウェア・リソースを共有化して回路規模を削減する必要があり、両立が課題となっている。例えば複写機の画像処理では、スキャナ画像処理と、汎用画像処理がハードウェア・リソース共有されており、２つの処理が同じハードウェア・リソース上で実行される場合がある。
【０００４】
例えば、あるユーザAがスキャナ/コピー処理を行っているとき、スキャナ画像処理のハードウェアは、スキャナ・ユニット(外部デバイス)と同期して動作する。スキャナ画像処理のハードウェアの処理性能がスキャナ・ユニットより高いとき、スキャナ画像処理のハードウェアは、スキャナ・ユニットからの外部同期が入力されるまで停止して待機する。一方、ユーザBが汎用画像処理の処理要求をしてスキャナ画像処理のハードウェアを使用するとき、ユーザAの処理要求と、ユーザBの処理要求のハードウェア・リソースが競合する。その結果、ユーザBはユーザAのスキャナ/コピー処理が完了するまで待たされることなる。このときユーザBは、処理要求した画像処理の内容とは関係がないユーザAのスキャナ/コピー、とりわけスキャナ・ユニットとの外部同期により待たされてしまう。
【０００５】
また近年、IoTデバイス機器として、多種多様な異種混合の多数のセンサ等の入力に対して、リアルタイム性を維持してデータ処理をしなければならない用途が広がりつつある。一方で、身の回りに多数のIoTデバイス機器を低コスト・低消費電力で配置するためには、積極的にハードウェア・リソース共有して製造コストを抑えていく必要がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２８２４２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１は、コマンドリスト(ディスプレイリスト)を用いた画像処理／データ処理により、CPU制御負荷を軽減した処理方法を開示している。しかしながら、前述の処理の一例のように共有されたハードウェア・リソースに対して、同時に複数の要求先から処理を要求されることに対する対応については開示するものではない。またこの特許文献１は、ハードウェア・リソースが複数の処理要求において競合した際のリアルタイム性の改善についても開示していない。
【０００８】
本発明は、上記問題に鑑み成されたものであり、複数の処理要求が共有したリソースに対して競合した際に処理性能、リアルタイム性を改善する技術を提供しようとするものである。
【課題を解決するための手段】
【０００９】
この課題を解決するため、例えば本発明のデータ処理装置は以下の構成を備える。すなわち、
アプリケーションから要求された処理を実行するデータ処理装置であって、
処理の指示があったとき、当該指示で示されるコマンドリストに従って処理を実行する処理手段と、
アプリケーションから処理の要求を受信したとき、当該要求に応じたコマンドリストを生成し、前記処理手段に対して処理の指示を行う制御手段とを有し、
前記処理手段は、
前記制御手段からの第１の指示に対するコマンドリストを実行中に第２の指示を受けた場合であって、前記第１の指示に対するコマンドリストにおける予め設定された制御点となるコマンドの実行のタイミングにて、前記第２の指示に対するコマンドリストの実行に切り替える切り替え手段を含むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、多種多様な画像処理のリソースを共有することにより、機器の製造コストを低減できる。またハードウェア・リソースの共有化により、外部同期の待ち時間に別のデータ処理を実行して機器全体のスループットを向上できる。また、様々なユーザからの処理要求や多種多様なセンサ等に対してリアルタイム性を向上したデータ処理装置、データ処理方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】(a)は画像処理装置の全体構成例を示すブロック図、（ｂ）はセンサ構成のユースケースを示す図。
【図２】画像処理部の構成の一例を示すブロック図。
【図３】バンド処理の動作の一例を説明する図。
【図４】コマンドリスト（ディスプレイリスト）のＲＡＭへの格納例を説明する図。
【図５】データ処理装置のコマンドデコード動作の一例を説明する図。
【図６】タスク切り替えの動作の一例を説明する図。
【図７】タスク切り替え機構の処理フロー一例を説明する図。
【図８】(a)はコマンドリスト（ディスプレイリスト）の生成フロー、(b)はハードウェアによる処理負荷の制御のためのパラメータ変更の一例を説明する図。
【図９】多数の外部同期のある画像処理部の構成の一例を示すブロック図。
【図１０】タスク切り替えなしの基本動作の一例を説明する図。
【発明を実施するための形態】
【００１２】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。なお、以下に示す実施形態における構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１３】
［第１実施形態］
●装置構成
図１(a)は、本実施形態に係る画像処理装置(コンピュータ)の全体構成例を示すブロック図である。同図に示すように本実施形態の画像処理装置は、CPU回路部100、画像読み取り部120、映像入力部130、画像処理部150、映像表示部160、画像印刷部170、等を備える。以下、これら構成による動作の概要について説明する。
【００１４】
画像読み取り部120は、レンズ124、CCDセンサ126、及びアナログデジタル変換器127等を有する。すなわち、レンズ124を介してCCDセンサ126に原稿110の画像情報が結像され、CCDセンサ126によりその画像情報がR(Red)、G(Green)、B(Blue)のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部127に入力され、R、G、Bの色毎に補正等が行われた後にアナログ／デジタル変換(A/D変換)されることで、デジタル化されたフルカラーのデジタル画像信号(画素値)が生成される。生成されたデジタル画像信号は映像入力部130へ入力され、その後、DMAC(Direct Memory Access Controller)192へ入力される。
【００１５】
DMAC192は、CPU102によって予め動作が設定されており、入力されたデジタル画像信号を、共有バス190を介してCPU回路部100のRAM106や外部記憶装置108に記憶させる。なお、複数の画素についてのデジタル画像信号を1枚の画像を形成するように集合させたデータを、以下では画像データと呼ぶ。本実施形態では、デジタル画像信号は画像データの形式でRAM106等に記憶されるものとする。画像処理を行う場合、CPU102もしくは後述の画像入出力部202は、DMAC194を起動してRAM106等に記憶された画像データを読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部150に入力させる。
【００１６】
画像処理部150は、例えば、入力されたデジタル画像信号に対して、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正や、入力ガンマ補正などの色補正等を行って画像データを作成する画像データ処理装置である。そしてDMAC196が、これらの画像処理が施された画像データをRAM106や外部記憶装置108に格納する。なお、DMAC196は以下のように制御される。例えばCPU102もしくは後述の画像入出力部202が予めDMAC196の動作を設定し、また、CPU102がDMAC196を起動する。なおDMAC196の動作としては、例えば処理後の画像データをRAM106へ書き込むように設定しておく。このように画像処理部150は、入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理等、画像を印刷するための画像処理を施す。そして、印刷可能な画像データを作成した後、その画像データをDMAC196によりRAM106等に格納させる。
【００１７】
DMAC198は、RAM106に格納された画像処理済みの画像データを読み出して、画像印刷部170へ出力する。画像印刷部170は例えばプリンタである。DMAC198の設定は例えばCPU102が行う。画像印刷部170は、インクジェットヘッド、サーマルヘッド等を使用した印刷出力部(不図示)を備え、入力された画像データのデジタル画像信号に基づいて記録紙上に画像を記録する。
【００１８】
なお、ここでは画像読み取り部120で読み取った原稿110の画像データを、画像印刷部170にて印刷出力する例を示したが、本実施形態はこの例に限らない。例えば、映像入力部130や映像表示部160等を用いることにより、入力された映像に対し所望の画像(映像)処理を施し、処理後の映像をディスプレイなどの映像表示装置(不図示)に表示してもよい。
【００１９】
CPU回路部100は、演算制御用のCPU102、固定データやプログラムを格納するROM104、データの一時保存やプログラムのロードに使用されるRAM106、及び外部記憶装置108等を備える。CPU回路部100は、画像読み取り部120、画像処理部150、及び画像印刷部170等を制御し、本実施形態の画像処理装置のシーケンスを統括的に制御する。外部記憶装置108は、本実施形態の画像処理装置が使用するパラメータやプログラム、補正データを記憶するディスク等の不揮発性の記憶媒体である。またRAM106のデータやプログラム等は、外部記憶装置108からロードされる構成としてもよい。また本実施形態では、DMAC194,196を介して画像処理部150とのデータ転送を行うが、この転送データの格納先はRAM106に限らず外部記憶装置108であってもよい。そしてRAM106や外部記憶装置108に確保した転送データの格納先などを、以下ではグローバルバッファ(外部記憶バッファ)と総称する。以下の説明では、RAM106の一例であるDRAM上にグローバルバッファを確保し、グローバルバッファに画像データを記憶している。
【００２０】
●画像処理部
次に、画像データに画像処理を施す画像処理部150の詳細構成およびその動作について、図２を参照して説明する。なお図２では理解を容易とするために、グローバルバッファからの画像データの読み出しを行うDMAC194と、同じく書き込みを行うDMAC196が、画像処理部150の画像入力部221、画像出力部223のそれぞれに含まれるように示している。
【００２１】
まずCPU102もしくは画像入力部221がDMAC194を起動し、DMAC194はグローバルバッファから画像データを読み出す。そして、DMAC194は、読み出された画像データを、入力ポート201を介して、画像処理部150の画像入出力部202へ供給する。画像入出力部202において画像入力部221は、入力された画像データを取得すると、中間バッファ制御部222に含まれる一時記憶部（中間バッファ232）に、該取得した画像データを記憶する。そして画像入力部221は、中間バッファに一時的に記憶された画像データを読み出しながら画素値を生成し、入力画素値205として画像処理実行部203へ供給する。なお、中間バッファ制御部222に含まれる一時記憶部（中間バッファ232）は、前述のグローバルバッファに対比してローカルバッファと総称することができる。
【００２２】
画像処理実行部203は、入力画素値205に対して所定の画像処理を実行し、その結果として得られた出力画素値206を画像入出力部202に出力する。なお、画像処理実行部203における処理の詳細については後述する。入力画素値205および出力画素値206は１つ以上の画素値であって、複数の画素値が入力画素値205として入力され、それに対して１つの画素値が出力画素値206として出力されてもよい。
【００２３】
画像入出力部202における画像出力部223は、処理後の出力画素値206から出力画像データを生成して、中間バッファ制御部222内の記憶部（中間バッファ232）に記憶する。画像出力部223は、中間バッファ232に一時的に記憶された処理後の画像データを読み出し、出力画像データとしてDMAC196を介して出力ポート204から送出する。DMAC196は上述したようにCPU102によって既に起動されており、受け取った出力画像データをRAM106へ書き込むことになる。
【００２４】
このように画像処理部150は、画像入出力部202がDMAC194を介して画像データを取得し、画像処理実行部203で該画像データに対するデータ処理を実行する。そして、データ処理後の画像データを、画像入出力部202がDMAC196を介して出力する。すなわち画像処理部150は、画像処理装置内に含まれる画像データにデータ処理を施し、処理後の画像データを画像処理装置へ戻す役割を担う。また画像入出力部202は、データの入出力の調節を行うデータ入出力制御装置としての役割を有する。また画像入出力部202は、画像処理実行部203との間でデータを送受信してデータ処理の実行を制御する制御装置としての役割を有する。
【００２５】
次に、画像処理部150の画像処理実行部203について、詳細に説明する。画像処理実行部203は、画像処理回路（１）1531〜画像処理回路（Ｐ）1537のＰ個の画像処理回路と、インターコネクト1530とで構成される。Ｐ個の画像処理回路とインターコネクト1530とは、入力ポート1532，1535，…，1538、および出力ポート1533，1536，…，1539等のポートを介して互いに接続される。各画像処理回路は、それぞれが１つの画像処理を行う。画像処理の種類は問わないが、例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換、クロマ・アップサンプリング等である。各画像処理回路は、パイプライン回路等のハードウェアで実現されてもよいし、プロセッサとプログラム（ソフトウェア）等で実現されてもよい。
【００２６】
インターコネクト1530は、入力ポートから入力画素値205を受け取り、処理を施した後に、対応する出力ポートから処理後の出力画素値206として出力する。このインターコネクト1530は、クロスバーやリングバス等の接続手段で実現されており、入力ポートと出力ポートの接続先を任意に切り替えることができる。したがって、CPU102がこれらポートの接続先の指定を設定することで、インターコネクト1530は、例えばＰ個の画像処理回路の実行順序を変更し、または一部の処理をバイパスすることができる。このように画像処理実行部203は、アプリケーションに応じて、各種の処理を取捨選択して組み合せ、所望の画像処理を実現する。
【００２７】
●バンド処理
以下、本実施形態における画像データの領域分割手法として、画像データを１次元分割したバンド領域ごとに処理を行うバンド処理について説明する。
【００２８】
以下、本実施形態におけるバンド処理について、図３を参照して説明する。バンド処理では、図３（ａ）〜（ｄ）に示されるように、１枚の画像データ300を帯状のバンド領域301〜304に分割し、この領域毎に逐次、画像処理を行う。なおバンド領域は、画像データを主走査方向または副走査方向のいずれかに分割したものであるから、バンド領域と画像データとは、主走査（又は水平）方向または副走査（または垂直）方向のいずれかにおいて長さが一致する。図３（ａ）の例では、画像データは副走査方向に対して分割される。よって、オリジナルの画像データとバンド領域とでは、主走査方向で同一の長さを有し、副走査方向では異なる長さを有する。以下、この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリ、画像データを分割する行為をバンド分割と呼ぶ。バンドメモリは、システム上の適切な記憶領域に確保されれば良いが、ここでは説明を簡潔にするために、バンドメモリをRAM106内の記憶領域（グローバルバッファ）として確保するとする。
【００２９】
また以下では、図３（ｅ）に示すように、画像データの座標系（主走査方向−副走査方向）を、長さ方向と高さ方向という座標系（バンド領域座標系）によって定義し、バンド領域を長さ×高さで表現する。バンド領域の長さ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。図３（ａ）の例では、長さ方向は主走査方向であり、高さ方向は副走査方向である。これに対し、図３（ｉ）乃至（ｋ）に示すように画像データを主走査方向において分割した場合、図３（ｌ）に示すように、長さ方向が副走査方向となり、高さ方向が主走査方向となる。図３（ｉ）のようなバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【００３０】
図３（ａ）乃至（ｄ）に示すバンドにおいて、まず第１のバンド領域３０１を、ＲＡＭ１０６上のバンドメモリに展開して画像処理を行う。次に第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。さらにその後、第３のバンド領域３０３を、第２のバンド領域３０２が展開されたＲＡＭ１０６上のバンドメモリに上書き展開し、画像処理を行なう。そして最後に第４のバンド領域３０４を、第３のバンド領域３０３が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して画像処理を行なう。図３（ａ）乃至（ｄ）からも分かるように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくても良い。したがって、バンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図３（ａ）乃至（ｄ）ではバンド領３０４を除く、バンド領域３０１〜３０３）に応じて決定される。
【００３１】
なお、各バンド領域間で隙間なく空間フィルタ処理等の局所（近傍）画像処理を行なう場合には、図３（ｆ）〜（ｈ）に示すように、各バンド領域が、隣接する領域との境界で一部分が互いに重なり合うように設定される。
【００３２】
以上のように本実施形態では、画像データを領域分割して、部分画像を単位として画像処理/データ処理を実行する。
【００３３】
●画像データ構造
以下、本実施形態における画像データの構造について詳細に説明する。本実施形態では上述したように、画像データはＲＡＭ１０６内の記憶領域（グローバルバッファ）に一時的に格納される。一般的にメインメモリであるＲＡＭ１０６は安価なＤＲＡＭで構成されることが多い。したがって、本実施形態のようにＤＭＡＣを介して画像データを読み書きする場合、ＤＲＡＭが性能を落とさずに読み書きできる単位で画像データを取り扱うことが望ましい。
【００３４】
●コマンドリスト、コマンドのデータ構造
以下、図４を参照し、本実施形態におけるコマンドリスト、コマンドのデータ構成例について詳細に説明する。本実施形態では上述したように、コマンドリスト（ディスプレイリスト）、コマンドはメインメモリであるＲＡＭ１０６内の記憶領域（グローバルバッファ）に一時的に格納される。
【００３５】
本実施形態では、コマンドリストを構成するコマンドには、レジスタ設定コマンド410、レジスタ読み出しコマンド430、画像処理コマンド420、終了コマンド460の同期コマンド440、分岐コマンド450の6種が少なくとも存在する。これらのコマンドは図２の画像処理部150で機能する。以下、画像処理部150の構成例である図２を参照して各コマンドの動作について説明する。
【００３６】
まずコマンドリスト（ディスプレイリスト）を構成する各コマンドは、画像処理部150の各種画像処理回路（画像入力部221、画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537、画像出力部223）で機能する。各コマンドは、インターコネクト1530に対して設定された接続順に沿って各画像処理回路を順番に通過する。例えば、画像入力部221、画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537、画像出力部223の順に各コマンドが通過する。各コマンドは各画像処理回路により、内部情報を書き換えられることはあるが、コマンド自体が途中で削除されることはない。
【００３７】
レジスタ設定コマンド410は、画像処理部150の各種画像処理回路のレジスタに対して値を書き込むためのコマンドである。またレジスタ読み出しコマンド430は各種画像処理回路のレジスタ値を読み出すためのコマンドである。レジスタ読み出しコマンド430で読み出したレジスタ値はCPU102がアクセス可能なメモリ領域に出力（記憶）される。
【００３８】
画像処理コマンド420は、画像入力部221と画像出力部223の動作を制御するコマンドである。画像入力部221は、画像処理コマンド420を受け取り、前述のレジスタ設定コマンド410にて予め設定されたレジスタ値に従い、DMAC194を起動してメインメモリからデジタル画像データや補正データを取得する。ここで、DMACに予め設定されたレジスタ値とは、例えば、レジスタ設定コマンドにより設定された読出し開始アドレスと読出し回数である。次に、画像入力部221は、この画像処理コマンド420を画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537、画像出力部223へインターコネクト1530を介して送る。このように、画像処理コマンド420を下流へ送ることにより、例えば、レジスタ設定と後述のデータ処理を時分割で動作を切り換えるときに、切り替え制御を容易に実現することが可能となる。そして、画像入力部221は、DMAC194を用いて取得したデジタル画像データや補正データをデータ処理コマンド(不図示)の形式に変換する。そして、画像入力部221は、データ処理コマンドを画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537、画像出力部223へ送る。
【００３９】
また画像出力部223は、画像処理コマンド420を受け取り、その後に続くデータ処理コマンドのＲＧＢ領域から情報を抜き出し、所定のパッキングを行い、32Byte単位のデータに変換する。そして、画像出力部223は、レジスタ設定コマンドにて予め設定されたレジスタ値にしたがってDMAC196を起動して32Byte単位の処理後のデジタル画像データをRAM106へ書き出す。
【００４０】
データ処理コマンドは、画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537を用いて画像処理を実行するためのコマンドである。画像処理を実行する前に予め画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537には、前述のレジスタ設定コマンドにより所定のレジスタ値が設定されている。データ処理コマンドが通過する、各画像処理回路（１）1531、画像処理回路（２）1534〜画像処理回路（Ｐ）1537が一連の画像処理を行うことで、パイプライン的に並列処理を行う。終了コマンド460は、コマンドリストの終了を示すコマンドであり、画像出力部223は、このコマンドを受け取った後、CPU102に対して終了割り込みを出力する。
【００４１】
また本実施形態の画像処理装置では、画像処理のデータフローに適切な位置で制御点（同期点）を設定できるように、分岐コマンド450をさらに備える。例えば、前述の図４のコマンドリスト（ディスプレイリスト）例では、分岐コマンド450が挿入されている。本実施形態の画像処理装置では、分岐機能を用いて分岐コマンド450の挿入位置から、所定の分岐先アドレス“０ｘ２０００”（レジスタ設定コマンド414）に、次に実行する処理先を変更できる（S452）。画像入出力部202内の同期部260の同期レジスタ262には、分岐先となるコマンドリストの読み出しアドレス(DPLアドレス)と繰り返し数を指定できる。例えば、画像処理のデータフローから予めCPU102がレジスタI/F159を介して直接設定しておいてもよい。またコマンドリスト内のレジスタ設定コマンドを用いて、分岐コマンド450の前に同期レジスタ262の値を書き換えてもよい。図４の一例では、DPLアドレスに０ｘ２０００、分岐回数１回が設定されている。そのため画像入出力部202は1回だけ処理先を変更（452）し、次に分岐コマンド450に処理が到達したら分岐せず、終了コマンド460に処理を進める。
【００４２】
●同期コマンド
また本実施形態のデータ処理装置では、画像処理のデータフローに適切な位置で制御点（同期点）を設定できるように、同期コマンド440をさらに備える。これらのコマンドは、前述のコマンドリストの中で、制御（同期）したいと考える任意の位置に挿入してよい。例えば、図４のコマンドリスト（ディスプレイリスト）例の同期コマンド440は、他のコマンドと同様に画像入力部221でデコードされた後、画像入力部221から画像処理実行部203に送信される。画像入力部221は同期コマンド440をデコードし、同期コマンド440であることを判別すると、コマンドリストの読み出しと送信を一時停止する。画像入力部221は一時停止（ストール）状態になり、図２の同期部260に同期コマンド440のデコードを通知する。画像入力部221は一時停止（ストール）状態のまま待機しており、コマンドリストの同期コマンド440の次に位置するコマンドの中間バッファ232からの読み出しと画像処理実行部203への送信は停止している。
【００４３】
同期コマンド440は、画像処理実行部203の画像処理回路を通過する過程で画像処理のパイプラインを初期化する。なお、画像処理回路を通過する過程で、初期化以外の特定の処理、例えば、特定のレジスタへの特殊値の設定やステータス値の読み出しなどを実行してもよい。その後、同期コマンド440は、画像処理実行部203から画像出力部223に受信される。以上のような動作により、画像処理実行部203のパイプラインで処理中のコマンドは、画像出力部223に到達しており、一連の画像処理は完了している。そして画像処理実行部203にはコマンドが存在せず、画像処理が実行されていない状態になっている。この動作を本発明の実施形態の画像処理実行部203の内部同期機能もしくはバリア同期機能と呼称する。画像処理実行部203は初期化状態のため、これ以後、画像処理部150の画像処理タスクが切り替わり、データフロー制御や動作が変更されても問題なく動作可能な状態である。そして画像出力部223は、同期コマンド440を受信してデコードし、同期コマンド440であることを判別すると、同期部260に同期コマンドが画像出力部223に到達したことを通知する。  上記の画像入力部221と同様に画像出力部223も一時停止（ストール）状態のまま待機する。
【００４４】
本実施形態の画像処理部の画像入出力部では、入力部と出力部が一体化した構成になっているので、バリア同期機能を高速に実現するのは容易である。
【００４５】
●外部同期機能
同期部260は、同期先である、ＣＰＵ、映像入力部（カメラ）、画像読み出し部（スキャナ）、映像表示装置（ディスプレイ）や印刷装置（プリンタ）からの外部同期を受け付ける。例えば、同期先がCPU102の場合には、図２のレジスタI/F159を介して、画像処理部150の同期レジスタ262に所定の値を書き込むといった手法で、外部同期を通知する。また、その他の同期先では、外部同期信号1301や同期信号1201を用いて、画像処理部150の同期レジスタ262所定の値を書き込むことで外部同期を通知する。
【００４６】
同期部260は、同期レジスタ262が所定の値になり、外部同期が通知されたかを判別する。外部同期の通知がないときは、外部同期受付を継続する。
【００４７】
●デコード処理(コマンド処理)
以下、図５を参照し、読み出したコマンドリストをデコードするコマンド処理(S500)について詳細説明する。画像処理部150の画像入出力部202は、コマンドリスト(DPL)を読み出し(S550)、コマンドのデコード(S501)を実行する。まずレジスタ設定コマンドかどうかを判定(S502)し、レジスタ設定コマンドであれば所定のレジスタに設定値を書き込む(S510)。またレジスタ読み出しコマンドかどうかを判定(S503)し、レジスタ読み出しコマンドであれば所定のレジスタの値を読み出す(S512)。また画像処理コマンドかどうかを判定(S504)し、画像処理コマンドであれば、図３のバンド処理を実行する。同期コマンドかどうかを判定(S505)し、同期コマンドであれば、外部同期待ち(S516)を行い、必要ならタスク切り替え処理を行う(S540)。また分岐コマンドかどうかを判定(S506)し、分岐コマンドであればDPLアドレスの再設定を行い(S518)、必要ならタスク切り替え処理を行う(S542)。また終了コマンドかどうかを判定(S507)し、終了コマンドであればデータ処理を終了する(S522)。なお、それ以外のコマンドの場合、NOP(No Operation)コマンドとして何もしない(S520)。
【００４８】
●複数JOB動作
本実施形態の画像処理装置は、装置のユーザインターフェース(不図示)のボタン操作や、パソコンなどの他の外部機器からのネットワーク経由の操作など、様々な処理要求を同時に受信して、要求に応じたデータ処理を実行する必要がある。
【００４９】
まずは図１０を用いて複数の処理要求を受けたときの複数JOBの基本動作について説明する。なお、同図において、デバイス650、655は、特にその種類は問わないが、画像読み取り部120、映像入力部130、画像印刷部170、映像表示160等の、画像処理部１５０にとって外部に存在するデバイスであり、画像処理を行うにあたって同期しなければならないデバイスである。
【００５０】
図１０のようにアプリCPU上で動作するアプリケーション・ソフトウェア600は、処理要求Aを受信して制御CPU上で動作するJOB制御ソフトウェア605にJOB[A]を発行する(S601)。JOB制御ソフトウェア605はJOB[A]を受信して(S606)、JOB[A]に対するコマンドリスト(DPL)621を生成する(S607)。そしてDRAMなどの外部記憶装置の所定のアドレスに生成したコマンドリスト(DPL)621を格納する。JOB制御ソフトウェア605は、データ処理を行う画像処理部150のレジスタI/F159を介して、アドレス情報を含むJOB[A]に対するデータ処理を指示する(S608)。
【００５１】
一方、アプリケーション・ソフトウェア600は、別の外部機器からの処理要求Bを受信して、JOB制御ソフトウェア605にJOB[B]を発行する(S602)。JOB制御ソフトウェア605はJOB[B]を受信して(S609)、JOB[B]に対するコマンドリスト(DPL)622を生成する(S610)。そしてDRAMなどの外部記憶装置の所定のアドレスに生成したコマンドリスト(DPL)622を格納する。図１０の複数JOB動作の一例では、先ほど指示したJOB[A]のデータ処理の完了を示す応答を受信していないため、JOB制御ソフトウェア605は、画像処理部150にJOB[B]に対するデータ処理はすぐには指示しない。
【００５２】
画像処理部150は、データ処理の指示(S608)を受けて、前述のようにコマンドリスト(DPL)621を読み出してコマンド処理を行いながら、データ処理を実行する(S631、S633)。図１０の複数JOB動作の一例では、前述のように繰り返し数を１と設定されたコマンドリストのため、データ処理JOB[A]＜0＞(S631)、データ処理JOB[A]＜1＞(S633)のように２回のバンド処理を実行する。前述の図４のように分岐コマンド450の前には同期コマンド440があり、同期コマンド440を用いて他のデバイスの外部同期を受信して、他のデバイスと同期する。この動作の一例では、1回目のデータ処理JOB[A]＜0＞(S631)に対して、画像処理部150は完了を通知する(S652)。そして画像処理部150は、デバイス650の外部同期＜0＞ポートからのJOB[A]＜0＞応答を受信する(S651)まで同期待ち(S632)を行い、デバイス650と同期する。また２回目のデータ処理JOB[A]＜1＞(S633)に対して、画像処理部150は完了を通知する(S654)。そして画像処理部150は、デバイス655の外部同期＜1＞ポートからのJOB[A]＜１＞応答を受信する(S656)まで同期待ち(S638)を行い、デバイス655と同期する。
【００５３】
画像処理部150は、コマンドリスト(DPL)621の図４の終了コマンド460を処理することで、すべてのデータ処理を終え、JOB制御ソフトウェア605にJOB[A]の処理完了を通知する(S634)。JOB制御ソフトウェア605は、JOB[A]の処理完了を受信(S634)して、アプリケーション・ソフトウェア600にJOB[A]の完了を通知する(S611)。そして、アプリケーション・ソフトウェア600は処理要求した外部機器にJOB[A]の完了を応答する(S603)。
【００５４】
次に、JOB制御ソフトウェア605は、画像処理部150にJOB[B]に対するデータ処理を指示する(S612)。画像処理部150は、データ処理の指示(S612)を受けて、前述のようにコマンドリスト(DPL)622を読み出してコマンド処理を行いながら、データ処理を実行する(S640)。そして画像処理部150は、データ処理を完了すると、JOB制御ソフトウェア605にJOB[B]の処理完了を通知する(S641)。JOB制御ソフトウェア605は、JOB[B]の処理完了を受信(S641)して、アプリケーション・ソフトウェア600にJOB[B]の完了を通知する(S613)。そして、アプリケーション・ソフトウェア600は処理要求した外部機器にJOB[B]の完了を応答する(S604)。
【００５５】
以上のようにJOB制御ソフトウェア605が複数の処理要求に対して複数のコマンドリスト(DPL)を生成する。そしてハードウェア・リソースの競合状態に応じて、JOB制御ソフトウェア605が順番にデータ処理を指示することにより、複数の処理要求に対して１つのハードウェア・リソースを共有して製造コストを低減できる。
【００５６】
●複数JOBに対するタスク切り替え動作
上記の複数JOBの基本動作では、バンド処理の間に外部デバイスとの同期のため同期待ちを行う。このとき、同期待ち632のように外部デバイス650から短い時間で応答651がある場合には大きな問題はない。しかしながら、同期待ち638のように無視できない期間、外部デバイス655からの応答656がない場合には、その間のOB[A]の処理完了634も遅くなる。つまり、JOB制御ソフトウェア605は、画像処理部150にJOB[B]に対するデータ処理をなかなか指示できない。結果、処理要求Bは、無関係の処理要求Aの処理の遅れにより処理が待たされ、速度が低下することになってしまう。
【００５７】
そこで、かかる課題に対処するため、実施形態における画像処理部150は、或るジョブAを実行中に、制御CPUのJOB制御ソフトウェアからの他のジョブBの処理の指示を受信した場合には、そのジョブBを待ち行列に加えるため、その要求があったことを示す情報（コマンドリストのアドレスを含む）をJOBキュー272に格納する。そして、実行しているジョブAにおける予め設定されたコマンドを実行するタイミングになったとき、画像処理部150は実行中のジョブA以外のジョブBの指示を既に受け付けているか否かを判定し、ジョブBの存在の確認に応じてジョブBへの切り替えを行う。
【００５８】
以下、具体例を、図６を参照し、JOB[A]とJOB[B]のタスクを切り替え、JOB[A]の同期待ちの時間を隠蔽する手法について説明する。なお、前述の複数JOBの基本動作と同様の動作については説明を割愛する。
【００５９】
２回目のデータ処理JOB[A]＜1＞(S633)のあと、画像処理部150は、デバイス655の外部同期＜1＞ポートからのJOB[A]＜1＞応答を受信する(S656)まで同期待ち(S638)を行う。画像処理部150は、同期レジスタ262に複数のJOBのデータ処理の指示の有無を記憶することができ、図６のようにJOB[B]のデータ指示612を、同期待ち(S638)のより前に受信していることを判定できる。画像処理部150は、後述するJOB[B]タスク切り替え(S660)を行い、JOB[A]のデータ処理から、JOB[B]のデータ処理に実行対象を切り替える。そして画像処理部150は、データ処理JOB[B]＜0＞(S640)を実行する。そして画像処理部150は、JOB[A]＜1＞応答が未受信のため、データ処理JOB[B]＜1＞(S641)、データ処理JOB[B]＜2＞(S642)を順次、実行していく。そしてデータ処理JOB[B]＜2＞(S642)の途中で画像処理部150はJOB[A]＜1＞応答を受信したため、後述するJOB[A]のデータ処理へのタスク切り替え(S661)を行う。そして画像処理部150はJOB[A]＜1＞応答の受信のあと、すべての処理を終え、JOB制御ソフトウェア605にJOB[A]の処理完了を通知する(S634)。JOB制御ソフトウェア605は、JOB[A]の処理完了を受信(S634)して、アプリケーション・ソフトウェア600にJOB[A]の完了を通知する(S611)。そして、アプリケーション・ソフトウェア600は処理要求した外部機器にJOB[A]の完了を応答する(S603)。
【００６０】
一方、画像処理部150は、その間もJOB[B]のデータ処理を再開する。画像処理部150は、JOB[B]のデータ処理にタスクを切り替え(S662)、残りのデータ処理JOB[B]＜3＞を実行する(S643)。そして画像処理部150は、データ処理を完了すると、JOB制御ソフトウェア605にJOB[B]の処理完了を通知する(S641)。JOB制御ソフトウェア605は、JOB[B]の処理完了を受信(S641)して、アプリケーション・ソフトウェア600にJOB[B]の完了を通知する(S613)。そして、アプリケーション・ソフトウェア600は処理要求した外部機器にJOB[B]の完了を応答する(S604)。
【００６１】
●変形例
上述の説明では、同期コマンドによる外部デバイスとの同期待ちのときに別のJOBのタスク切り替え動作を行っていた。例えば、分岐コマンドでは、コマンドリスト(DPL)の読み先であるDPLアドレスを再設定するため、RAM106からコマンドリスト(DPL)を読み直す。そして、このコマンドリスト(DPL)の読み直しの際に、RAM106から再設定したDPLアドレスのコマンドリスト(DPL)が画像処理部150に届くまで画像処理実行部203は停止してしまう。そのため、分岐コマンドの位置は、処理の区切り(制御点)とすることができる。本実施形態の変形例として、図５のように、分岐コマンドのデコードでDPLアドレスを再設定してタスクを切り替え(S542)してもよい。そして、タスク切り替えして別JOBのタスクのデータ処理を実行しつつ、並行して切り替え前の再設定したDPLアドレスの指すコマンドリスト(DPL)を画像処理部150の中間バッファに読み直しておく。そしてデータ処理を再開したときに、コマンドリスト(DPL)の読み直しの停止時間をなくし、データ処理を高速化できる。以上のように同期コマンドと分岐コマンドは一連のデータ処理の同期点となるため、本発明では同期制御コマンドと呼称する。また本実施形態の更なる変更例として、同期と分岐の両方の動作を１コマンドで実行するコマンドを備え、コマンドリスト(DPL)のコマンド数の削減と、データ処理の高速化をしてもよい。
【００６２】
●本実施形態の効果
以上のように、複数JOBに対するタスク切り替え動作を行うことにより、外部同期の遅延により、外部同期に無関係の別のデータ処理への影響を低減できる。その結果、データ処理装置は、安定的に複数JOBに対するデータ処理を実行することができる。また外部との同期待ちの時間を隠蔽するように、別のJOBのデータ処理を実行できるため、複数JOBの処理要求が競合した際に、装置全体の処理時間を短縮できる。
【００６３】
［第２実施形態］
●タスク切り替えのためのソフトウェアによるデータ処理の分割動作
前述のようにタスクを切り替えることにより、複数JOBのデータ処理の処理時間を短くできる。しかしながら、仮にJOB[A]がJOB[B]より優先順位が高く、JOB[B]のデータ処理の時間がJOB[A]の同期待ち時間より長い場合、JOB[A]はJOB[B]のデータ処理により待たされてしまう。外部のデバイスと同期しているJOB[A]のリアルタイム性を維持するため、本実施形態の処理装置は、データ処理の分割機能を有する。
【００６４】
図８(a)を参照して、JOB制御ソフトウェア605のデータ処理の分割機能について説明する。S800にて、JOB制御ソフトウェア605は、アプリケーション・ソフトウェア600からJOBを受信すると処理をS805に進める。このS805にて、JOB制御ソフトウェア605は、既に実行中のJOBがあるか否かを判定する。
【００６５】
既に実行中のジョブが無いと場合（S805がNo）、JOB制御ソフトウェア605は、データ処理の分割は行わず、処理をS830に進める。そして、S830にて、JOB制御ソフトウェア605は、S800で受信したジョブのコマンドリスト(DPL)を生成する。
【００６６】
一方、既に実行中のJOBが存在する場合（S805がYes)、JOB制御ソフトウェア605はさらに判定を続ける。具体的には、JOB制御ソフトウェア605は実行JOBが外部同期有りか否かを判定する。外部同期無しの場合（S810がNo)、JOB制御ソフトウェア605は、受信JOBを実行JOBに挿入できないと判定し、データ処理の分割は行わず、S830にて、コマンドリスト(DPL)を生成する。一方、実行JOBに外部同期がある場合(S810のYES)、受信JOBを挿入できる。それ故、JOB制御ソフトウェア605は、S815にてさらなる判定を行う。
【００６７】
このS815にて、JOB制御ソフトウェア605は、これから実行する受信JOBが低優先順位であるか否かを判定する。受信JOBが低優先順位でない場合(S815のNO)、なるべく速く処理を完了する必要があり、データ処理の分割は行わず、コマンドリスト(DPL)を生成する(S830)。また、高優先順位の実行JOBのデータ処理を優先して実行JOBの同期待ちの間だけ、低優先順位の受信JOBのデータ処理をすることが望ましい。そのため、これから実行する受信JOBが低優先順位の場合(S815のYES)、JOB制御ソフトウェア605は、受信JOBのデータ処理を細かく分割する必要がある。本実施形態のデータ処理では、図４のコマンドリスト(DPL)例で処理内容を制御している。例えば、図４の画像処理コマンド420は、図３の１回のバンド処理の実行であり、分岐コマンド450の繰り返し数で、このバンド処理の実行回数を制御することができる。また１回のバンド処理のデータ処理量は、レジスタ設定コマンド412のバンド高さの設定で制御することができる。そのため、受信JOBのデータ処理を細かく分割するためには、JOB制御ソフトウェア605は１回のバンド処理のバンド高さを小さな値に変更して(S822)、その分だけバンド処理の実行回数を増やせばよい(S824)。例えば、A4サイズ(副走査方向6608画素)の紙面をバンド高さ16画素ずつ繰り返してデータ処理する場合、画像処理部150は413回のバンド処理を行っている。そこでJOB制御ソフトウェア605は、バンド高さの値を、16画素から4画素に減らして、バンド高さを削減し(S822)、その分だけバンド処理の繰り返し数を413回から1652回に増加する(S824)。JOB制御ソフトウェア605は、レジスタ設定コマンド412のバンド高さを４ラインの値とし、分岐コマンド450の繰り返し数を1650回の値としてコマンドリスト(DPL)を生成する(S830)。
【００６８】
最後にJOB制御ソフトウェア605は、連続JOBテーブルに受信JOBを登録(S835)して、実行JOBの完了応答を受信する前に、画像処理部150に受信JOBのデータ処理を指示する(S612)。
【００６９】
例えば、本実施形態の用途の一例では、スキャナ・ユニットとの外部同期待ちによる、汎用画像処理の遅延を課題にしていた。複写機に取り付けられるスキャナ・ユニットの性能は、製品仕様や工場出荷時の測定の統計量により、予め算出できており、スキャナ・ユニットとの外部同期の待ち時間は判明している。そのため、同期待ち時間に合わせたバンド領域の分割後のバンド高さの値も当然、算出できている。JOB制御ソフトウェア605が製品ごとに決められたパラメータにより、データ処理の分割動作によるデータ処理長の調整をすることができる。
【００７０】
また上記の一例ではスキャナ・ユニットとの外部同期待ちの課題で説明したが、インクジェット・プリンタのヘッド駆動の待ち時間についても同様である。また上記の一例は、バンド間の待ち時間について説明したが、繰り返し数を大きな値にすれば、ADF複数ページ連続スキャンや複数ページ連続プリントにも応用できる。例えば、電子露光デバイスを用いた複写機の場合、露光デバイスの安定化やキャリブレーションのために、連続ページ印刷の間に長時間の同期待ちが起こる。本発明の手法を用いれば、このようなページ間の長時間の同期待ちについても、ハードウェア・リソースを別の画像処理に割り当てることができる。
【００７１】
●本実施形態の効果
以上のように、タスク切り替えのためのソフトウェアによるデータ処理の分割動作を行うことにより、実行中の高優先JOBのデータ処理を優先できる。そしてデータ処理の分割動作により、高優先JOBの同期待ちの間だけ、低優先JOBのデータ処理を行い、タスク切り替えによる高優先JOBの速度低下を抑制することができる。このように高優先JOBのために、低優先JOBのデータ処理量を調整できるのである。
【００７２】
［第３実施形態］
●タスク切り替えのためのハードウェアによるデータ処理の分割動作
上記の第２実施形態では、JOB制御ソフトウェア605が、コマンドリスト(DPL)生成時にパラメータ変更を行い、データ処理の分割動作を実現していた。しかしながら、処理要求に応じた同一のデータ処理内容を実行時の状態により動的に異なるコマンドリスト(DPL)で表現するのは、ソフトウェアのテスト工数を増加させてしまう。またJOB制御ソフトウェア605は、処理要求ごとのJOBの指示と完了だけの管理ではなく、複数JOBの同時実行の状態まで監視し続けなければならない。そのため、ソフトウェアの処理負荷は増加してしまう。
【００７３】
本第３の実施形態では、JOB制御ソフトウェア605が生成するコマンドリスト(DPL)は、複数JOBの基本動作のときと同一のままとし、ハードウェア(画像処理部150)でDPLパラメータの変更を実現する。以降、図２と図８(b)を参照して詳細に説明する。
【００７４】
画像処理部150はあるJOBのデータ処理の指示(S612)を受け、そのJOBのコマンドリスト(DPL)の読み出しアドレス(DPLアドレス)以外に、優先度、外部同期の有無も受信する。
【００７５】
画像処理部150のタスク切り替え部270は複数JOBを管理するJOBキュー272と、タスク切り替えからの復帰時に必要となるコンテキスト・パラメータの退避レジスタ274を備える。タスク切り替え部270は、JOBキュー272にデータ処理の指示から、DPLアドレス、優先度、外部同期の有無を登録する。JOBキュー272には複数JOBの情報を登録できる。またタスク切り替え部270は、データ処理自動分割部276を備え、自動分割係数レジスタ(不図示)を備える。例えば、JOB制御ソフトウェア605は予め自動分割係数レジスタに、細分化の値を設定しておく(S850)。前述の第２実施形態と同じデータ処理の分割を行う場合には、この自動分割係数レジスタに“４”を設定しておく。実行中のデータ処理の同期待ちを受けて、実行中のデータ処理のコマンドリスト(DPL)の同期コマンド440のアドレスもしくは内部バッファのポインタ位置を退避レジスタ274に記憶する。そして、JOBキュー272の次に実行するJOB情報を取り出し、このJOBのコマンドリスト(DPL)を読み出してデータ処理を開始する。コマンドリスト(DPL)のデコード処理で、バンド高さの設定を行うレジスタ設定コマンド412を処理する際に、バンド高さの値を自動分割係数レジスタの値で除算してバンド高さとする(S852)。また繰り返し回数を示す分岐コマンド450を処理する際に、繰り返し回数を自動分割係数レジスタの値で乗算して繰り返し回数とする(S854)。
【００７６】
以上のように、データ処理の処理粒度に影響を与えるパラメータを変更して、タスク切り替え部270は実行中のデータ処理を細分化し、画像処理部150は細切れでデータ処理を実行する。やがて、切り替え前のタスクに対する外部同期の受信により、切り替え前のタスクの同期待ちが完了する。実行中のデータ処理のコマンドリスト(DPL)の同期コマンド440のデコードのときに、DPLアドレスもしくは内部バッファのポインタ位置を退避レジスタ274に記憶する。そして、退避レジスタ274から切り替え前のタスクのDPLアドレスもしくは内部バッファのポインタ位置を読み出し、切り替え前のタスクのデータ処理を再開する。
【００７７】
さらに、タスク切り替え部270は、JOB情報である優先度、外部同期を用いてデータ処理の処理粒度を制御してもよい。例えば、優先度の示す優先順位の高さに応じて細分化の値を小さくし、優先順位の高いデータ処理は、自動分割係数レジスタの値を“４”ではなく“２”とし、優先順位の低いデータ処理は自動分割係数レジスタの値を“４”ではなく“８”とすればよい。また実行中のタスクの外部同期の有無により、タスク切り替え機能の実施、非実施を切り替えればよい。
【００７８】
●本実施形態の効果
以上のように、タスク切り替えのためのハードウェアによるデータ処理の分割動作を行うことにより、ソフトウェアの制御負荷を増加することなく、タスク切り替えによる高優先JOBの速度低下を抑制することができる。
【００７９】
［第４実施形態］
●IoTセンサアレイを用いた構成例
図１(b)は、複数のセンサを設けたデータ処理装置の構成を示す。IoTデバイス機器として、多種多様な異種混合の多数のセンサアレイからの入力がある。そして、それらの多数のセンサからの入力をデータ処理部150でデータ処理する。センサアレイ180の、センサの各々は入力ポート182を介して取得したデータをDRAM106の所定の記憶領域にリアルタイムに記憶していく。センサアレイ180とデータ処理部150は、外部同期ポート184で互いに結合され、互いの処理完了を通知し合うことで互いに同期を取ることができる。本実施形態の構成では、複数センサの複数の外部同期ポート184が１つのデータ処理部150と接続されており、複数センサから１つのデータ処理部150(ハードウェア・リソース)を共有した構成となっている。そのため、本実施形態の構成は、複数センサに対して個別のデータ処理部を備えるわけではなく、低コスト・低消費電力で多数のセンサに対応できる構成と言える。しかしながら、複数センサの各々と同期してセンサの入力データをリアルタイムにデータ処理しなければならない。
【００８０】
前述までのタスク切り替えの一例では、複数JOBの一方は外部デバイスとの同期待ちがない動作を説明していた。本第４実施形態では、図７と図９を用いて、複数JOBが複数の外部デバイスとの同期待ちの動作とタスク切り替えの動作について説明する。
【００８１】
●画像処理部の拡充例
本第４実施形態では、多数の外部デバイスとの同期と、多数のJOBのタスク切り替えに柔軟に対応するため、図９のように画像処理部150を拡充する。具体的には、センサアレイの数に応じて同期部260の数を増やし、同期レジスタ262を必要な外部同期の数に合わせる。また前述の構成ではタスク切り替え部270の備えていたコンテキスト退避レジスタ274を、本実施形態では同期部260に備え、タスク切り替えできる数を増やすとともに同期先に合わせて管理できるように構成を変える。またデータ処理を実行する画像処理実行部203の数を増やして並列化し、複数のJOBのデータ処理を並行処理できる構成とする。
【００８２】
例えば、画像処理実行部921は、第１実施形態で説明した図２の画像処理実行部203の回路である。また画像処理実行部の他の実現形態(922、923)として、画像入出力部202と共有メモリ1540を介したコプロセッサI/F1545で接続されてもよい。画像入出力部は共有メモリ1540に複数の入力画素値を書き出し、入力データを有効化する。画像処理実行部203は入力データを受信に応じて、制御シーケンサ1541が起動し、演算器アレイ1542を制御してデータ処理をして、共有メモリ1540に出力データを書き戻す。そして制御シーケンサ1541は出力データを有効化して画像入出力部202にデータ処理の完了を通知する。このとき制御シーケンサ1541と演算器アレイ1542は、プロセッサ1543そのものでもよい。また共有メモリ1540を介したコプロセッサI/F1545が入力FIFOと出力FIFOであっても同様のことを実現することができる。なお、画像処理実行部203は、画像処理装置内に含まれる画像データ対してデータ処理を施す役割を担うため、データ処理実行部と呼称しても何ら問題はない。
【００８３】
以上のように画像処理実行部203は複数JOBの多種多様なデータ処理にコスト最適なヘテロジニアス(非対称)の構成でよく、画像処理実行部(1)921、実行部(2)922から実行部(Z)923まで同期部260の数とは別に多数を備えてもよい。
【００８４】
また本実施形態では、あるJOBのデータ処理がタスク切り替えにより、同期待ちの間、別のJOBのデータ処理に切り替わる。そして次にあるJOBのデータ処理がタスク切り替えにより再開するとき、タスク切り替え前にデータ処理した画像処理実行部に割り当たるとは限らない。そのため、コンテキスト退避レジスタ274をJOBに紐づけて管理することが望ましい。本実施形態の一例では、図９のようにセンサごとにJOBがある想定のため、同期部260に備える構成としている。例えば画像処理部150は、JOB数の増減に合わせてコンテキスト退避レジスタ274の数を柔軟に変更できることが望ましい。そのために、画像入出力部202内にコンテキスト退避用のバッファ(SRAM)等を別途設け、JOB数に合わせてコンテキストをスタックする構成の方がより効果的と言える。
【００８５】
また第１実施形態では、図２のように中間バッファ制御部222は、画像入力部221と画像出力部223との間で共有されていた。しかしながら、本実施形態では、あるJOBのデータ処理が割り当たる画像処理実行部が動的に切り替わる。そのため、複数の画像処理実行部203と、それに紐づく複数の画像入力部221、画像出力部223に対して、本実施形態では、DMAC194、DMAC196や中間バッファ制御部222を共有した方が効率的である。そのため、本実施形態では、画像処理部150内に転送部900として、共有DMAC部910と共有メモリ部905を備え、複数の画像入力部221、複数の画像出力部223、複数の画像処理実行部203から共有される構成とする。
【００８６】
そして、各部は、内部に複数の回路を備えている。例えば、図９の例では、共有DMAC部910には、前述のDMAC(Read)194やDMAC(Write)196が各々2基ずつ搭載されている。また共有メモリ部905は、メモリ(1)〜メモリ(N)のような複数個の記憶手段で構成されている。そして、各々のメモリは、一般的には１つもしくは複数のSRAMなどで実現されており、ローカルバッファと総称する。
【００８７】
また同様に画像入出力部202には、複数の画像入出力部(1)〜(Z)を備え、画像処理実行部203には同様に複数の画像処理実行部(1)〜(Z)を備える。
【００８８】
また共有DMAC部910と共有メモリ部905は連結されており、一対の共有DMAC部910と共有メモリ部905を画像処理の転送部900と総称する。
【００８９】
また画像入出力部932と画像処理実行部921のように、画像入出力部の１つと画像処理実行部の１つが一対で連結されており、画像処理の処理部930と総称する。また画像処理実行部は、画像データを扱う画像処理以外の用途でも構わないため、単にデータ処理実行部という呼称でも構わない。
【００９０】
上記のように画像処理部150には、画像処理の処理部(一対の画像入出力部と画像処理実行部)が(1)〜(Z)として記載した通り複数備えられている。そして、複数の処理部に対して画像処理の転送部（一対の共有DMAC部と共有メモリ部）が１個搭載されており、処理部(1)〜(Z)から転送部は共有されている。そして処理部(1)〜(Z)と転送部は、処理部の読み込み部、書き出し部、送信部、受信部を介して接続されている。
【００９１】
●外部同期のある、複数のタスク切り替え動作
本実施形態の、多数の外部デバイスとの同期と、多数のJOBのタスク切り替えの動作について、図７を用いて説明する。なお、前述の実施形態と同様の場合は、ここでの説明を割愛する。また説明の簡略化のため、図７では２つの外部同期と２のJOBのデータ処理の切り替えについて説明している。図７では、２つの処理要求(センサAとB)に対応する２つのDPL[A]621とDPL[B]622をタスク切り替えにより、１つの処理部930でデータ処理する一例である。データ処理の指示608,612を受け、２つの同期部260の外部同期の受付710、715が起動する。
【００９２】
まず、画像処理部150は、データ処理の指示が早かったDPL[A]621のデータ処理を行い、コマンド処理(S500)の中で同期制御コマンドの判定(S505/S506)が実行される。同期制御コマンドの場合(S505/S506のYES)、同期待ちと、タスク切り替えを判定する(S720)。例えば、センサAはセンサBより優先順位が高い。そして、センサAからの応答(S750_1)がすぐに戻り、同期待ち(S752_1)が短いとき、タスク切り替えは行わず(S720のNO)、DPL[A]621のデータ処理の待機を解除(S771)して、DPL[A]621のデータ処理を継続する。
【００９３】
一方、センサAがセンサBより優先順位が低いときは、センサAからの応答(S750_1)がすぐに戻り、同期待ち(S752_1)が短くても、タスク切り替えを行う(S720のYES)。またセンサAからの応答(S750_2)がすぐに戻らず、同期待ち(S752_2)が長い場合、当然ながら、タスク切り替えを行う(S720のYES)。
【００９４】
タスク切り替え部270は、DPL[A]の情報(DPLのプログラム・カウンタやDPLアドレスなど)を、前述の同期部のコンテキスト退避レジスタ274に一時記憶する(S722)。本実施形態では、このDPL情報の退避をリストアと呼称する。そして、タスク切り替え部270は、DPL[B]のデータ処理を開始する。もしデータ処理の再開なら、タスク切り替え部270は、同期部のコンテキスト退避レジスタ274に一時記憶していたDPL[B]の情報を読み出し、DPL[B]のデータ処理を再開する。本実施形態では、このDPL情報の再装填をリロードと呼称する。
【００９５】
そして、画像処理部150はDPL[B]のコマンド処理の中で同期制御コマンドの判定を行い、同期制御コマンドのとき、同期待ちを行い(S762)、センサBからの応答(S760)を待つ。
【００９６】
タスク切り替え部270は、既にセンサAからの応答があれば(S750_2)、DPL[A]のデータ処理へのタスク切り替えを行う(S730のYES)。もしセンサAからの応答(S750_3)より、先にセンサBの応答(S760)があれば、タスク切り替え部270は、DPL[A]のデータ処理へのタスク切り替えを行わない(S730のNO)。そして、タスク切り替え部270は、DPL[B]のデータ処理の待機を解除(S776)して処理を継続する。
【００９７】
DPL[A]のデータ処理へのタスク切り替え(S730のYES)のとき、タスク切り替え部270は、DPL[B]の情報をリストア(S732)する。そして、タスク切り替え部270は、DPL[A]のリロードを行い、DPL[A]のデータ処理の待機を解除(S772)して、データ処理を再開する。
【００９８】
●変形例
上述の説明では、同期待ちの長さや、JOBの優先順位により、タスク切り替えの判定を行った。もしセンサアレイを構成する各々のセンサに対して予め必要な処理時間がわかっているなら、上述のような動的なタスク切り替えの判定を行わず、単位時間ごとに細かくタイムスロットを切り、時間でセンサごとのデータ処理を割り振ってもよい。
【００９９】
●本実施形態の効果
以上のように本実施形態では、多種多様なデータ処理にコスト最適なヘテロジニアス(非対称)の回路構成と、複数のJOBに対するタスク切り替えを実現できた。その結果、多数の外部デバイスとの同期と、多数のJOBのタスク切り替えに柔軟に対応でき、ハードウェア・リソースを最適に活用することができた。
【０１００】
＜本発明の着眼点＞
以上のように第１から第４実施形態まで共通する特徴として、１つの処理要求に１つのコマンドリスト(ディスプレイリスト)を作成することがあげられる。その作用として、アプリケーション・ソフトウェア、制御ソフトウェアは、処理要求に応じてコマンドリストを作成して、データ処理を指示し、処理の完了を待てばよい。そのため、アプリケーション・ソフトウェア、制御ソフトウェアは、必要な処理の状態管理が非常に容易となる。そして、１つのコマンドリストで複数回の画像処理/データ処理を実行する機能を有するため、多種多様な画像処理を１つのコマンドリストで実現できる。そして、本発明の機能では、複数回の画像処理/データ処理の間の任意のコマンド位置に制御点としての同期制御コマンドを設定して画像処理/データ処理を区切ることができる。そして、本発明の機能では、複数の処理要求に応じたコマンドリストを複数取得し、この制御点を同期点として、あるコマンドリストから別のコマンドリストにハードウェア・リソースの割り当てを変更できる。その結果、本発明の機能では、複数の処理要求のデータ処理の一部分(タスク)を自在に切り替えることができる。つまり、本発明の同期制御コマンドとは、ある処理の一連のデータ処理の動作の制御点であるだけでなく、別の処理要求のデータ処理に切り替わるための同期点(分岐点)の意味を併せ持つのである。
【０１０１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０２】
100…CPU回路部、120…画像読み取り部、130…映像入力部、150…画像処理部、160…映像表示部、170…画像印刷部、159…レジスタ、202…画像入出力部、203…画像処理実行部
260…同期部、270…タスク切り替え部、
【図１】
2020101921.tif 000003
【図２】
2020101921.tif 000004
【図３】
2020101921.tif 000005
【図４】
2020101921.tif 000006
【図５】
2020101921.tif 000007
【図６】
2020101921.tif 000008
【図７】
2020101921.tif 000009
【図８】
2020101921.tif 000010
【図９】
2020101921.tif 000011
【図１０】
2020101921.tif 000012