(57)【要約】【課題】  全体としてのデータ処理速度の低下を抑えつつ、複数のハードウェア処理部のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域を低く抑える。【解決手段】  コントローラー３１は、ロード転送部２３およびストア転送部２４に対してプロセス識別子を指定して１サブラインずつデータ転送を実行させる。ＳＩＭＤプロセッサー２は、マルチスレッドで、内部メモリー２１における複数のバッファー領域からデータを読み出して処理を実行する。コントローラー３１は、ＳＩＭＤプロセッサー２の使用中のバッファー領域をロックし、あるプロセス識別子についてロックされていないバッファー領域がないときに、別のプロセス識別子についてロックされていないバッファー領域があれば、その別のプロセス識別子について内部メモリー２１へのデータ転送を実行させる。【選択図】  図１
2016051228.tif 000002
【特許請求の範囲】
【請求項１】
データに対してハードウェア処理とソフトウェア処理とを順番に実行する電子機器において、
前記ハードウェア処理を行うハードウェア処理部と、
前記ソフトウェア処理を行うソフトウェア処理部と、
前記ソフトウェア処理部用の内部メモリーと、
ラインを主走査方向において所定数に分割して得られる１サブライン分のデータを外部メモリーから読み出すリードダイレクトメモリーアクセスコントローラーと、
前記ハードウェア処理部および前記リードダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する送信元から１サブライン分のデータを前記内部メモリーへ転送するロード転送部と、
１サブライン分のデータを前記外部メモリーへ書き込むライトダイレクトメモリーアクセスコントローラーと、
前記内部メモリーに格納されている１サブライン分のデータを、前記ハードウェア処理部および前記ライトダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する宛先へ転送するストア転送部と、
前記ロード転送部および前記ストア転送部に対して前記プロセス識別子を指定して、１サブライン分のデータの転送を実行させるコントローラーとを備え、
前記内部メモリーは、複数のバッファー領域を有し、
前記ロード転送部は、前記バッファー領域へデータを書き込み、
前記ソフトウェア処理部は、マルチスレッドで、前記複数のバッファー領域から１サブライン分のデータを読み出して処理を実行し、
前記コントローラーは、前記複数のバッファー領域の排他制御を行い、前記ソフトウェア処理部による前記バッファー領域内のデータの使用が完了するまで、前記バッファー領域をロックし、あるプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域がないときには、前記ロード転送部に対して、前記プロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させず、別のプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域があれば、前記ロード転送部に対して、前記別のプロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させること、
を特徴とする電子機器。
【請求項２】
前記コントローラーは、前記送信元が前記リードダイレクトメモリーアクセスコントローラーである場合、前記ロード転送部によるデータ転送とともに前記リードダイレクトメモリーアクセスコントローラーによるデータ読み出しを連動させ、前記宛先が前記ライトダイレクトメモリーアクセスコントローラーである場合、前記ストア転送部によるデータ転送とともに前記ライトダイレクトメモリーアクセスコントローラーによるデータ書き込みを連動させることを特徴とする請求項１記載の電子機器。
【請求項３】
前記リードダイレクトメモリーアクセスコントローラーは、内蔵メモリーを備え、前記プロセス識別子ごとにコンテクスト情報を前記内蔵メモリーに保存し、前記コントローラーにより指定された前記プロセス識別子に対応するコンテクスト情報を前記内蔵メモリーから読み出してコンテクスト切り替えを行った後、前記切り換え後のコンテクスト情報に基づいて、指定された前記プロセス識別子に対応する前記データの読み出しを実行すること、
を特徴とする請求項１記載の電子機器。
【請求項４】
前記データは、画像データであり、
前記ハードウェア処理および前記ソフトウェア処理は、前記画像データに対する画像処理を含むこと、
を特徴とする請求項１から請求項３のうちのいずれか１項記載の電子機器。
【請求項５】
前記ソフトウェア処理部は、ＳＩＭＤプロセッサーであることを特徴とする請求項１記載の電子機器。
【請求項６】
前記１サブライン分のデータは、画像データであり、
前記ＳＩＭＤプロセッサーは、少なくともサブラインの画素数と同数のプロセシングエレメントを備え、前記プロセシングエレメントで１サブライン分のデータを並列に処理すること、
を特徴とする請求項１から請求項５のうちのいずれか１項記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器に関するものである。
【背景技術】
【０００２】
ある情報処理装置は、ＡＳＩＣ（Application Specific Integrated Circuit）などの専用ハードウェアで特定のプロセスを実行するとともに、ＳＩＭＤ（Single Instruction Multiple Data stream）プロセッサーによるソフトウェア処理で特定のプロセスを実行している（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１９１９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図４は、電子機器内のデータフローの一例を示すブロック図である。逐次的に処理すべき一連の処理をプロセスブロックとすると、図４に示すように、例えば、電子機器において４つのＡＳＩＣと１つのＳＩＭＤプロセッサーによる３つのプロセスで、複数のプロセスブロックが実行される。例えばプロセスブロック＃０では、まず、画像データにおけるバンドデータ（一定の幅分のラインデータの集合）に対して、ＡＳＩＣ＃０による処理が実行された後、ＳＩＭＤプロセッサーによるプロセス＃０なる処理が実行され、その後に、別のＡＳＩＣ＃１による処理が実行される。なお、複数のプロセスブロックは、並列に実行される場合もシーケンシャルに実行される場合もある。
【０００５】
具体的には、例えば、複合機などの画像形成装置において、あるプロセスブロックとして、まず、ＡＳＩＣによって画像読取による画像データの取得が実行され、ＳＩＭＤプロセスでその画像データに対する空間フィルターが適用され、次に、別のプロセスブロックとして、画像データに対して色変換などの画像処理が実行された後、ＡＳＩＣによってハーフトーニングが実行される。
【０００６】
図５は、図４に示すプロセスブロック（ＰＢ）＃０〜＃２によるＡＳＩＣに要求されるデータ処理の帯域を説明する図である。一般的に、プロセスブロックを中断し別のプロセスブロックを実行すると、コンテクストスイッチが発生しオーバーヘッドが発生するため、図５に示すように、プロセスブロック＃０〜＃２は、逐次的に実行される。そのため、ＡＳＩＣによるデータ処理速度に比べＳＩＭＤプロセスのデータ処理速度が高い場合、処理の種類によっては、図５におけるＡＳＩＣ＃２のように、特定のＡＳＩＣに広い帯域（つまり、高いスループット）が要求されることになり、その帯域を実現するために装置のコストが高くなったり、要求される帯域を達成せずに処理速度を低く抑えることになったりする。
【０００７】
本発明は、上記の問題に鑑みてなされたものであり、全体としてのデータ処理速度の低下を抑えつつ、ＡＳＩＣなどの複数のハードウェア処理部のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域を低く抑える電子機器を得ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る電子機器は、データに対してハードウェア処理とソフトウェア処理とを順番に実行する電子機器であって、前記ハードウェア処理を行うハードウェア処理部と、前記ソフトウェア処理を行うソフトウェア処理部と、前記ソフトウェア処理部用の内部メモリーと、ラインを主走査方向において所定数に分割して得られる１サブライン分のデータを外部メモリーから読み出すリードダイレクトメモリーアクセスコントローラーと、前記ハードウェア処理部および前記リードダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する送信元から１サブライン分のデータを前記内部メモリーへ転送するロード転送部と、１サブライン分のデータを前記外部メモリーへ書き込むライトダイレクトメモリーアクセスコントローラーと、前記内部メモリーに格納されている１サブライン分のデータを、前記ハードウェア処理部および前記ライトダイレクトメモリーアクセスコントローラーのうち、プロセス識別子に対応する宛先へ転送するストア転送部と、前記ロード転送部および前記ストア転送部に対して前記プロセス識別子を指定して、１サブライン分のデータの転送を実行させるコントローラーとを備える。そして、前記内部メモリーは、複数のバッファー領域を有し、前記ロード転送部は、前記バッファー領域へデータを書き込み、前記ソフトウェア処理部は、マルチスレッドで、前記複数のバッファー領域から１サブライン分のデータを読み出して処理を実行する。前記コントローラーは、前記複数のバッファー領域の排他制御を行い、前記ソフトウェア処理部による前記バッファー領域内のデータの使用が完了するまで、前記バッファー領域をロックし、あるプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域がないときには、前記ロード転送部に対して、前記プロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させず、別のプロセス識別子により指定される前記バッファー領域のうち、ロックされていない前記バッファー領域があれば、前記ロード転送部に対して、前記別のプロセス識別子により指定される前記データの、前記内部メモリーへの転送を実行させる。
【発明の効果】
【０００９】
本発明によれば、コンテクスト切り替えのオーバーヘッドを抑えつつ、データおよび処理の粒度を小さくしているので、全体としてのデータ処理速度の低下を抑えつつ、ＡＳＩＣなどの複数のハードウェア処理部のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域が低く抑えられる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態に係る電子機器の構成を示すブロック図である。
【図２】図２は、図１に示す電子機器の動作について説明する図である。
【図３】図３は、図１に示す電子機器において使用されるプロセス識別子のフォーマットの一例を示す図である。
【図４】図４は、電子機器内のデータフローの一例を示すブロック図である。
【図５】図５は、図４に示すプロセスブロック＃０〜＃２によるＡＳＩＣに要求されるデータ処理の帯域を説明する図である。
【発明を実施するための形態】
【００１１】
以下、図に基づいて本発明の実施の形態を説明する。
【００１２】
図１は、本発明の実施の形態に係る電子機器の構成を示すブロック図である。図１に示す電子機器は、データに対してハードウェア処理とソフトウェア処理とをシーケンシャルに実行する。例えば、この電子機器は、複合機などの画像形成装置であって、画像データに対する画像処理をハードウェア処理およびソフトウェア処理で行う。
【００１３】
図１に示す電子機器は、ハードウェア処理部としての複数のＡＳＩＣ１を備え、また、ソフトウェア処理部としてのＳＩＭＤプロセッサー２を備える。ＳＩＭＤプロセッサー２は、各ＡＳＩＣ１に比べ高いデータ処理速度を有する。
【００１４】
複数のＡＳＩＣ１は、それぞれ、所定のハードウェア処理（つまり、専用ハードウェアによる特定のデータ処理）を行い、ＳＩＭＤプロセッサー２は、マルチスレッドで動作し、複数のプロセスブロックに対応するそれぞれのスレッドで、ソフトウェア処理（つまり、ソフトウェアによるプログラミングされたデータ処理）を行う。
【００１５】
この実施の形態では、ＳＩＭＤプロセッサー２は、画像処理を実行し、少なくともサブラインの画素数と同数のプロセシングエレメントを備える。つまり、１サブライン内のすべての画素に対する処理がその複数のプロセシングエレメントで並列に行われる。
【００１６】
リードＤＭＡＣ（Direct Memory Access Controller）３は、外部メモリー１０２から１サブライン分のデータを読み出す。１サブラインは、データの１ラインを主走査方向において所定数に分割して得られるデータ量である。
【００１７】
リードＤＭＡＣ３は、内蔵メモリー（例えば、ＳＲＡＭ（Static RAM）、ＤＲＡＭなど）を備え、プロセス識別子ごとにコンテクスト情報をその内蔵メモリーに保存し、コントローラー３１により指定されたプロセス識別子に対応するコンテクスト情報を内蔵メモリーから読み出してコンテクスト切り替えを行った後、切り換え後のコンテクスト情報に基づいて、指定されたプロセス識別子に対応するデータの読み出しを実行する。このようにすることで、外部メモリー１０２にコンテクスト情報を保存する場合に比べ、コンテクスト情報の読み出しに起因する遅延が少なくて済む。
【００１８】
ライトＤＭＡＣ４は、１サブライン分のデータを外部メモリー１０２へ書き込む。ライトＤＭＡＣ４も、内蔵メモリーを備え、プロセス識別子ごとにコンテクスト情報をその内蔵メモリーに保存し、コントローラー３１により指定されたプロセス識別子に対応するコンテクスト情報を内蔵メモリーから読み出してコンテクスト切り替えを行った後、切り換え後のコンテクスト情報に基づいて、指定されたプロセス識別子に対応するデータの書き込みを実行する。
【００１９】
図１において、ルーティング部１１は、ＡＳＩＣ１間およびＡＳＩＣ１とバッファー１２との間の静的なルーティングを行う。バッファー１２は、ＡＳＩＣ１に対応して設けられており、ＦＩＦＯ（First-In First-Out）で、ＡＳＩＣ１へ転送されるデータおよびＡＳＩＣ１から転送されるデータを受け付けて一時的に格納する。ただし、バッファー１２は、ＡＳＩＣ１と同数でもよいが、ＡＳＩＣ１より少なくてもよい。
【００２０】
また、図１において、内部メモリー２１は、ＳＩＭＤプロセッサー２用の内部メモリー（つまり、ＳＩＭＤプロセッサー２内のプロセシングエレメントの共有メモリー）であって、ＲＡＭ（Random Access Memory）であり、メモリーインターフェイス２２は、内部メモリー２１に対するリード／ライトを実行する。
【００２１】
内部メモリー２１は、複数のバッファー領域を有し、ＳＩＭＤプロセッサー２は、マルチスレッドで動作し、複数のバッファー領域から１サブライン分のデータを読み出して処理を実行する。例えば、内部メモリー２１は、プロセスブロックごと（つまり、ＳＩＭＤプロセッサー２のスレッドごと）に、リングバッファー領域を有し、ＳＩＭＤプロセッサー２は、各スレッドにおいて、リングバッファー領域から順番にデータを読み出して処理を実行する。
【００２２】
ロード転送部２３は、ＡＳＩＣ１およびリードＤＭＡＣ３のうち、プロセス識別子に対応する送信元から、１サブライン分のデータを、メモリーインターフェイス２２を使用して内部メモリー２１へ転送する。具体的には、ロード転送部２３は、上述のバッファー領域へデータを書き込む。
【００２３】
ストア転送部２４は、内部メモリー２１に格納されている１サブライン分のデータを、ＡＳＩＣ１およびライトＤＭＡＣ４のうち、プロセス識別子に対応する宛先へ転送する。
【００２４】
ルーティング部２５は、１サブライン分のデータの、リードＤＭＡＣ３から、ＡＳＩＣ１（具体的には、対応するバッファー１２）およびロード転送部２３のいずれかへのルーティング、並びに１サブライン分のデータの、ストア転送部２４から、ＡＳＩＣ１（具体的には、対応するバッファー１２）およびライトＤＭＡＣ４のいずれかへのルーティングを行う。具体的には、プロセス識別子に対応して宛先へのチャネルが決定され、データがそのチャネルで宛先へ転送される。このとき、１サブライン分のデータが宛先へバースト転送される。
【００２５】
コントローラー３１は、Ｉ／Ｏ（Input/Output）バス３２を使用して、ＳＩＭＤプロセッサー２との間でプロセッサー間通信を行うとともに、リードＤＭＡＣ３、ライトＤＭＡＣ４、ロード転送部２３、ストア転送部２４などにコマンドを出力する。
【００２６】
コントローラー３１は、ロード転送部２３およびストア転送部２４に対してプロセス識別子を指定して、１サブライン分のデータの転送を実行させる。
【００２７】
また、コントローラー３１は、プロセス識別子を指定して、１サブライン分のデータを、リードＤＭＡＣ３に読み出させる。さらに、コントローラー３１は、プロセス識別子を指定して、１サブライン分のデータを、ライトＤＭＡＣ４に書き込ませる。
【００２８】
また、コントローラー３１は、内部メモリー２１の複数のバッファー領域の排他制御を行い、ＳＩＭＤプロセッサー２によるバッファー領域内のデータの使用が完了するまで、そのバッファー領域をロックする。そして、コントローラー３１は、あるプロセス識別子により指定されるバッファー領域のうち、ロックされていないバッファー領域がないときには、ロード転送部２３に対して、そのプロセス識別子により指定されるデータの、内部メモリー２１への転送を実行させず、別のプロセス識別子により指定されるバッファー領域のうち、ロックされていないバッファー領域があれば、ロード転送部２３に対して、その別のプロセス識別子により指定されるデータの、内部メモリー２１への転送を実行させる。
【００２９】
ホストインターフェイス３３は、メインＣＰＵ（Central Processing Unit）１０１とコントローラー３１との間の通信を行う。メインＣＰＵ１０１は、例えば、画像データからバンドデータを生成し、さらに、主走査方向においてバンドデータを分割して得られるサブバンドデータを生成し、外部メモリー１０２に格納する。なお、メインＣＰＵ１０１は、上述のプロセスブロックの実行中には、コントローラー３１には介入しない。外部メモリー１０２は、メインＣＰＵ１０１のメインメモリーであるＤＲＡＭなどである。メインＣＰＵ１０１および外部メモリー１０２は、システムクロックドメインに属し、ＳＩＭＤプロセッサー２は、システムクロックドメインとは異なるクロックドメインに属する。
【００３０】
次に、上記電子機器の動作について説明する。
【００３１】
図２は、図１に示す電子機器の動作について説明する図である。図３は、図１に示す電子機器において使用されるプロセス識別子のフォーマットの一例を示す図である。
【００３２】
まず、メインＣＰＵ１０１によって、外部メモリー１０２にサブバンドデータが準備される。
【００３３】
そして、以下のように、外部メモリー１０２から１サブラインずつ、データが読み出され、複数のプログラムブロックが、１サブラインの粒度で並行に実行される。
【００３４】
コントローラー３１は、内部メモリー２１のバッファー領域を排他制御しており、所定の調停方式で、空きバッファー領域のあるプロセスブロック（スレッド）の１つ選択し、選択したプロセスブロック（スレッド）に対応するプロセス識別子を指定して、リードＤＭＡＣ３およびロード転送部２３へコマンドを出力する。
【００３５】
プロセス識別子は、図３に示すように、プロセスブロック固有のプロセスブロックＩＤ、およびプロセス種別を示すローカルプロセスＩＤを有する。所定の複数セットの一連の処理に対してそれぞれローカルプロセスＩＤの値が割り当てられており、プロセス識別子に含まれるローカルプロセスＩＤに基づいて、プロセスブロックＩＤで指定されたプロセスブロックで実行すべき処理およびその順序が特定される。
【００３６】
リードＤＭＡＣ３は、そのコマンドを受け付けると、そのコマンドにより指定されたプロセス識別子に対応するコンテクスト情報（１サブライン分のデータの読み出しアドレスなど）をセットした後、外部メモリー１０２から１サブライン分のデータを読み出し、コンテクスト情報を更新する。また、ロード転送部２３は、その１サブライン分のデータを内部メモリー２１のそのプロセス識別子に対応するバッファー領域へ転送する。その際、プロセス識別子におけるプロセスブロックＩＤがコンテクストＩＤとして使用され、プロセスブロックＩＤごとにコンテクスト情報が保存される。
【００３７】
ロード転送部２３は、転送が完了すると、転送完了をコントローラー３１に通知する。転送完了の通知を受け付けると、転送したデータに対してＳＩＭＤプロセッサー２による処理を実行する場合には、コントローラー３１は、ただちに、ＳＩＭＤプロセッサー２にコマンドを送信し、そのデータに対する処理を実行させる。処理後のデータは、そのプロセス識別子に対応するバッファー領域に格納される。そして、ＳＩＭＤプロセッサー２は、１サブバンド分のデータ処理が完了すると、処理完了をコントローラー３１に通知する。
【００３８】
コントローラー３１は、ＳＩＭＤプロセッサー２による処理が完了し内部メモリー２１から転送すべきデータを所定の調停方式で選択し、その選択したデータのプロセス識別子を指定して、ストア転送部２４にコマンドを出力する。ストア転送部２４は、そのコマンドを受け付けると、指定されたそのプロセス識別子に対応する内部メモリー２１のバッファー領域からそのデータを読み出し、そのプロセス識別子を指定して、読み出したデータをルーティング部２５へ送出する。そのデータは、ルーティング部２５を介して、そのプロセス識別子に対応する宛先（ＡＳＩＣ１のバッファー１２またはライトＤＭＡＣ４）に受信される。
【００３９】
なお、データを外部メモリー１０２に格納する場合には、宛先は、ライトＤＭＡＣ４とされる。その場合、コントローラー３１は、プロセス識別子を指定してコマンドをライトＤＭＡＣ４に出力する。ライトＤＭＡＣ４は、そのコマンドを受け付けると、そのコマンドにより指定されたプロセス識別子に対応するコンテクスト情報（１サブライン分のデータの書き込みアドレスなど）をセットした後、ルーティング部２５を介してそのデータを受信し、受信したデータを外部メモリー１０２に書き込む。
【００４０】
ＡＳＩＣ１は、バッファー１２にデータが入力されると、そのデータに対して処理を実行し、処理後のデータをバッファー１２に書き込む。また、ＡＳＩＣ１は、そのデータの処理が完了すると、その処理完了をコントローラー３１に通知する。コントローラー３１は、その通知を受け付けると、そのデータに対応するプロセス識別子に対応する空きのバッファー領域があれば、ロード転送部２３に対してそのプロセス識別子を指定してコマンドを出力し、ロード転送部２３は、そのコマンドに従って、バッファー１２からデータを読み出し、内部メモリー２１のバッファー領域に転送する。
【００４１】
なお、ＡＳＩＣ１による処理後のデータを、ＳＩＭＤプロセッサー２による処理を経ずに外部メモリー１０２に格納したい場合には、上述のように、まず、ＡＳＩＣ１による処理後のデータは、ロード転送部２３によって内部メモリー２１に転送され、その後、ＳＩＭＤプロセッサー２による処理を経ずに、ストア転送部２４によって、内部メモリー２１からライトＤＲＡＭ４に転送され、外部メモリー１０２に書き込まれる。このとき、ストア転送部２４によるデータ転送が終了した時点で、データ転送の終了がコントローラー３１に通知され、コントローラー３１は、このデータにより使用された内部メモリー２１内のバッファー領域のロックを解除する。
【００４２】
また、外部メモリー１０２に格納されているデータを、ＳＩＭＤプロセッサー２による処理を経ずにＡＳＩＣ１に転送したい場合には、上述のように、まず、リードＤＭＡＣ３およびロード転送部２３によって、データが内部メモリー２１に転送され、その後、ＳＩＭＤプロセッサー２による処理を経ずに、ストア転送部２４によって、内部メモリー２１から（ルーティング部２５およびバッファー１２を介して）ＡＳＩＣ１に転送される。このとき、ストア転送部２４によるデータ転送が終了した時点で、データ転送の終了がコントローラー３１に通知され、コントローラー３１は、このデータにより使用された内部メモリー２１内のバッファー領域のロックを解除する。
【００４３】
このようにして、内部メモリー２１に空きのバッファー領域があるプログラムブロックが、ＳＩＭＤプロセッサー２によるソフトウェア処理が１サブラインの粒度で実行されていき、その前または後に、ＡＳＩＣ１によるハードウェア処理が実行される。その際、データに対して実行すべき一連の処理は、そのデータに付加されているプロセス識別子で特定されるため、コントローラー３１が、各データに対して逐一実行すべき処理を指定する必要がない。
【００４４】
したがって、複数のプログラムブロックにおけるＳＩＭＤプロセッサー２による処理がマルチスレッドで並行に行われるため、複数のプログラムブロックにおけるＳＩＭＤプロセッサー２による処理が時間軸に沿って分散されて実行され、そのＳＩＭＤプロセッサー２のプロセスの前または後で実行されるＡＳＩＣ１の処理も時間軸に沿って分散されて実行される。
【００４５】
そして、すべてのサブブロックデータに対する一連の処理が完了し、処理後のサブブロックデータが外部メモリー１０２に格納されると、メインＣＰＵ１０１は、処理後のサブブロックデータを結合して１つのバンドデータとする。
【００４６】
以上のように、上記実施の形態によれば、以下に述べるように、コンテクスト切り替えに起因する全体としてのデータ処理速度の低下を抑えつつ、処理の粒度を１サブラインとしてＡＳＩＣ１のそれぞれの要求帯域を時間軸方向で平準化することで、最大要求帯域が低く抑えられる。
【００４７】
一般的に、短命令ステップ数のソフトウェア処理にハードウェア処理がカスケード接続される場合、ソフトウェア処理の処理粒度（コンテクスト切り替え粒度）に対してソフトウェア処理とハードウェア処理との間のデータバッファのサイズが十分でないとき、後続のハードウェア処理の速度がソフトウェア処理に対して十分でないとソフトウェア処理を待たせることになる。この点について、上記実施の形態では、処理粒度が１サブラインとしており十分小さいため、ソフトウェア処理とハードウェア処理との間のデータバッファが十分確保されている。
【００４８】
また、一般的に、処理の粒度を小さくすると、コンテクスト切り替えに起因するオーバーヘッドが大きくなる。この点については、上記実施の形態では、リードＤＭＡＣ３およびライトＤＭＡＣ４にローカルな内蔵メモリーを設け、そのメモリーを使用してコンテクスト切り替えが実行されるとともに、ＳＩＭＤプロセッサー２ではマルチスレッドで処理を切り替えるため、コンテクスト切り替えのオーバーヘッドを軽減している。
【００４９】
さらに、ソフトウェア処理をマルチスレッド化した場合、複数のスレッド（ここでは、複数のプロセスブロックに対応する）で１つのハードウェア処理部が使用される場合、一般的に、ハードウェア処理部を共有するために複雑な制御が必要となる。この点については、上記実施の形態では、上述のプロセス識別子に基づいて、１サブラインの粒度で各データの処理順序が判別されるため、比較的簡単な制御で、１つのＡＳＩＣ１を複数のプロセスブロックで共有することができる。
【００５０】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【００５１】
例えば、上記実施の形態において、上述の調停では、デッドロック回避のために、後方プロセスが優先されるようにしてもよい。
【産業上の利用可能性】
【００５２】
本発明は、例えば、画像形成装置に適用可能である。
【符号の説明】
【００５３】
１  ＡＳＩＣ（ハードウェア処理部の一例）
２  ＳＩＭＤプロセッサー（ソフトウェア処理部の一例）
３  リードＤＭＡＣ
４  ライトＤＭＡＣ
２１  内部メモリー
２３  ロード転送部
２４  ストア転送部
３１  コントローラー
【図１】
2016051228.tif 000003
【図２】
2016051228.tif 000004
【図３】
2016051228.tif 000005
【図４】
2016051228.tif 000006
【図５】
2016051228.tif 000007