並列処理プロセッサシステム
【課題】 複数のプロセッサを備え、処理するデータを所定の単位に分割し、各データに対して、各プロセッサで並列に処理を行う構成において、命令キャッシュ容量を低減しながら所望のパフォーマンスを得る構成を提供する。
【解決手段】 並列処理プロセッサシステム203は、それぞれDSP301、命令キャッシュ302、画像用ローカルメモリ303を含む複数のプロセッサエレメント(PE1〜PE3)と、共有メモリ304とを備える。共有メモリには、DSPが実行するファームウェアが格納される。並列処理プロセッサシステムは、画像用ローカルメモリに処理対象の画像データを転送し、DSPにより画像処理を施す。キャッシュミスが発生した場合の命令キャッシュの更新は例えば、DSPがアクセスしたアドレスに対応する共有メモリの内容を命令キャッシュにコピーすることによって実現される。
【解決手段】 並列処理プロセッサシステム203は、それぞれDSP301、命令キャッシュ302、画像用ローカルメモリ303を含む複数のプロセッサエレメント(PE1〜PE3)と、共有メモリ304とを備える。共有メモリには、DSPが実行するファームウェアが格納される。並列処理プロセッサシステムは、画像用ローカルメモリに処理対象の画像データを転送し、DSPにより画像処理を施す。キャッシュミスが発生した場合の命令キャッシュの更新は例えば、DSPがアクセスしたアドレスに対応する共有メモリの内容を命令キャッシュにコピーすることによって実現される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサを備え、処理対象のデータを各プロセッサで並列処理する並列処理プロセッサシステムに関する。より具体的には、本発明は、各プロセッサの命令キャッシュ容量を低減しながらパフォーマンスを維持できる並列処理プロセッサシステムに関する。
【背景技術】
【0002】
MFP (Multi Functional Peripheral) のコントローラにおいては、画像の読み取り・記録・プリント・通信・FAXなどの処理のハードウェアロジックを個別に用意し、MFPで要求される機能を実現している。しかし、機能毎に回路を用意していては、機能を維持しながらコントローラをコストダウンすることが難しい。
【0003】
機能を維持しながらのコストダウンは、同時に動作しない画像処理を、プログラマブルなハードウェアで実装することで可能である。プログラマブルなハードウェアとして、DSP (Digital Signal Processor) やリコンフィギュラブルプロセッサ、コンフィギュラブルプロセッサが挙げられる。ここでは、一例として複数のDSPを用いてファームウェアを切り替えることによりコストダウンを実現することを考える。
【0004】
それぞれ異なる画像処理を割り当てられた複数のDSPを接続して、同一画像領域に対して一連の複数種別の画像処理を順番に施す構成をパイプライン構成と呼ぶ。パイプライン構成をとると、DSP間の処理時間の差によりボトルネックとなるDSPが存在してしまい、十分なスループットが得られない。
【0005】
この問題を回避するためには、各DSPの処理時間を等しくするようにDSPをカスタマイズすればよい。
【0006】
しかし、ある処理に対してカスタマイズを行うと、ファームウェアを切り替えて実行する際に他のファームウェアでも同じようなカスタマイズを行うことが難しくなってしまう。
【0007】
また、別の手段としてDSP間の負荷の調整を行う技術も存在するが(例えば特許文献1参照。)、調整にオーバーヘッドがかかり、スループットの向上が難しく、制御が複雑になるため、好ましい解ではない。さらにパイプライン構成は、DSPの数を減らしてコストダウンしたり、数を増やして性能を向上させるといったスケーラビリティのある構成の変更が難しいという問題もある。
【0008】
これらのことから、処理対象の画像データを分割し、分割された各画像データを異なるDSPに割り当てて、パイプライン構成では異なるDSPで実行していた複数の処理を各DSPで実行するデータ並列処理構成が、パイプライン構成よりも好適である。本明細書では、複数のDSPを用いて、処理対象の画像データを分割し、分割された各画像データに対して各DSPで一連の処理を並列に行う構成をデータ並列処理構成と呼ぶ。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−133839号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
処理すべき画像データを分割して複数のDSPでデータ並列処理を行う構成をとると、各DSPが実行するプログラムの容量が大きくなるため、パイプライン構成に比べて、同一容量の命令キャッシュでは、キャッシュミスの確率が大きくなってしまう。キャッシュミスが発生すると、DSPからメインメモリへのアクセスが発生する。メインメモリは、DSPが搭載されているチップ外のDRAM (Dynamic Random Access Memory) などである。
【0011】
チップ外のDRAMでは、1ワードのリード/ライトに20〜30クロックが必要となるため、キャッシュミス時のレイテンシが非常に大きくなりDSPの処理性能に大きく影響する。一方、各DSPが割り当てられた処理を全て格納する容量を持つ命令キャッシュを実装すると、命令キャッシュの容量が大きくなり、回路面積が増加する。
【0012】
キャッシュミス時のレイテンシを小さくするために、2次キャッシュを用いる方法がある。2次キャッシュとは、1次キャッシュよりもレイテンシが大きくDRAMよりもレイテンシが小さいプロセッサ専用の記憶装置である。2次キャッシュを用いることで、上述の課題を解決することができるが、以下の問題がある。
【0013】
・キャッシュにはデータを格納する回路の他にタグと呼ばれる回路が必要になるため回路規模が大きい。
・キャッシュの入れ換えはキャッシュラインと呼ばれる単位で行われるため効率がよくない。
【0014】
本発明では、2次キャッシュを用いることを要さずDSP間で共有するSRAM (Static Random Access Memory) などの共有メモリを用いることにより、上述の課題を解決する。共有メモリでは、タグが必要なく、キャッシュライン単位ではない書き換えが可能である。
【0015】
本発明では、複数のプロセッサでデータ並列処理を行う構成において、命令キャッシュ容量を低減しながら所望のパフォーマンスを得る構成を提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の一側面によれば、複数のプロセッサを備え、メインメモリから読み出したデータを前記複数のプロセッサによって並列処理する並列処理プロセッサシステムであって、それぞれがプロセッサと、該プロセッサによって実行されるプログラムの少なくとも一部の命令を保持する命令キャッシュとを含む、複数のプロセッサエレメントと、各プロセッサとの間のレイテンシが前記メインメモリと各プロセッサとの間のレイテンシよりも小さいメモリであって、前記メインメモリから転送された前記プログラムを記憶し、前記複数のプロセッサエレメントによって共有される共有メモリと、前記命令キャッシュにおいてキャッシュミスが発生した場合、前記共有メモリに記憶されているプログラムを用いて当該命令キャッシュを更新する更新手段とを有することを特徴とする並列処理プロセッサシステムが提供される。
【発明の効果】
【0017】
本発明によれば、処理するデータを複数のプロセッサで並列処理する構成において、パフォーマンスを維持したまま命令キャッシュ容量を低減できる。
【0018】
また、本発明によれば、共有メモリにプログラムの全てが格納できない場合でも同期制御部を設けることによりパフォーマンスを維持したまま命令キャッシュ容量を低減できる。
【図面の簡単な説明】
【0019】
【図1】実施形態における画像処理装置のハードウェア構成を示すブロック図。
【図2】第1の実施形態における画像処理装置におけるコントローラ部の概略ブロック図。
【図3】第1の実施形態における画像処理装置の動作を示すフローチャート。
【図4】第1の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図5】第1の実施形態におけるタイルデータ・ファームウェアのデータフローの概念図。
【図6】第1の実施形態における共有メモリ・命令キャッシュの内容の推移の概念図。
【図7】第2の実施形態における画像処理装置におけるコントローラ部の概略ブロック図。
【図8】第2の実施形態における画像処理装置の動作を示すフローチャート。
【図9】第2の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図10】第2の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図11】第2の実施形態における共有メモリ・命令キャッシュの内容の推移の概念図。
【発明を実施するための形態】
【0020】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、かかる実施形態は本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
【0021】
<第1の実施形態>
図1は、本発明の並列処理プロセッサシステムを含む画像処理装置のハードウェア構成を示したブロック図である。本実施形態における画像処理装置はコピー機能、プリンタ機能、FAX機能、スキャナ機能を具備したMFPを想定しており、コントローラ部101、UI部102、プリンタ部103、スキャナ部104、メモリ部105、通信IF部106を含む構成である。
【0022】
以下、各部の概略について説明する。
【0023】
コントローラ部101は、画像処理装置全体の制御をつかさどる部分である。コントローラ部101はプリンタ部103やスキャナ部104をはじめとする各ブロックと電気的に接続されており、高度な機能を実現するための制御を行っている。詳細については後述する。
【0024】
UI部102は、ユーザが画像処理装置を操作するためのユーザインタフェース(UI)を提供する。UI部102は例えば液晶タッチパネルで構成され、ユーザから画像処理装置に対しての動作指示を受け付けたり、印刷する画像のプレビューを表示したりする。
【0025】
プリンタ部103は、電気的な画像信号を記録紙上に可視像としてプリントするブロックであり、例えばレーザビームプリンタやインクジェットプリンタにより構成される。
【0026】
スキャナ部104は、原稿画像を光学的に読み取って電気的な画像信号に変換するブロックである。
【0027】
メモリ部105は、例えばDDR−SDRAMやHDDなどのメモリデバイスで構成される。このメモリ部105はメインメモリとして機能するもので、画像データを一時的に格納するだけでなく、画像処理装置の機能を実現するためにコントローラ部101が使用する制御プログラムやデータなどを格納する。
【0028】
通信IF部106は外部機器とのデータの送受を行うブロックであり、インターネットやLANに接続したり、公衆電話回線に接続してFAX通信を行ったり、USBインタフェースによりPC(Personal Computer)と接続したりする。
【0029】
図2にコントローラ部101の概略ブロック図を示す。コントローラ部101は、CPU (Central Processing Unit) 201、I/O制御部202、並列処理プロセッサシステム203、データバス204を包含している。I/O制御部202は、メモリ部105や通信IF部106とコントローラ部101とのデータ転送を制御し、DMA (Direct Memory Access) 機能を有している。本実施形態では、コントローラ部101に並列処理プロセッサシステム203を1つ含む構成としているが、複数含む構成でも可能である。CPU201、I/O制御部202、並列処理プロセッサシステム203は、データバス204を介して接続されている。
【0030】
並列処理プロセッサシステム203は、DSP301、命令キャッシュ302、画像用ローカルメモリ303、共有メモリ304、データバス305を包含する。DSP301・命令キャッシュ302・画像用ローカルメモリ303を、プロセッサエレメント(PE)と呼ぶ。本実施形態では、並列処理プロセッサシステム203にPE1、PE2、PE3の3つのプロセッサエレメントが含まれる構成としているが、プロセッサエレメントの個数は3に限らない。また、本実施形態の各DSP301は同じ処理性能を持つものとする。
【0031】
並列処理プロセッサシステム203では、所定の単位に分割された各画像データを1つのPEの画像用ローカルメモリ303に格納し、その画像に対して同一PEの命令キャッシュ内の命令に従って同一PEのDSP301で処理を行う。共有メモリ304には、複数のPEのDSP301が実行するプログラム命令であるファームウェアを格納する。共有メモリ304にデータではなく命令を格納する利点として、DSP301からの書込みアクセスが発生しないため、アクセスが集中しにくい点が挙げられる。共有メモリ304にアクセスが集中すると、それがボトルネックとなり、処理性能が低下してしまう。共有メモリ304はDSP301からのレイテンシがメモリ部105よりも小さく、動作周波数が高いため、DSP301はファームウェアの高速な読出しが可能である。
【0032】
ファームウェアを切り替える際には、転送制御手段としてのI/O制御部202がメモリ部105に格納されたファームウェアを共有メモリ304にDMA転送する。DSP301、共有メモリ304はデータバス305を介して接続されている。
【0033】
本実施形態の画像処理装置では、並列処理プロセッサシステム203は読み取り画像処理・記録画像処理・通信画像処理などを行う。
【0034】
読み取り画像処理はスキャナ部104から受信した画像データにシェーディング補正等を施し、MTF補正、色変換処理、フィルタ処理、ガンマ処理等の各種画像処理を行う。
【0035】
記録画像処理は読み取り画像処理された画像データに対して2値化処理、中間調処理、そしてRGBtoCMYK等色変換処理を行い中間調画像に変換する。さらに、記録解像度にあわせて解像度変換し、画像の変倍、スムージング、濃度補正等の各種画像処理を施して高精細な画像データに変換しレーザビームプリンタ等に出力する。
【0036】
通信画像処理は読み取った画像を通信性能に合わせて解像度変換、色変換をしたり、通信により受け取った画像を記録性能に合わせて解像度変換等をしたりする。本実施形態では、例えば、読み取り画像処理・記録画像処理のファームウェア容量を16KB未満、共有メモリ304の容量を16KBとする。また、命令キャッシュ302の容量を4KBとする。命令キャッシュ302はDSP301によって実行されるプログラムの少なくとも一部の命令を保持できればよく、命令キャッシュ302の容量はプログラム全体のサイズよりも大幅に小さくてよい。
【0037】
図3は、本実施形態における画像処理装置の動作を示すフローチャートである。本実施形態では、画像データがスキャナ部104から取り込まれてプリンタ部103に出力されるまでの処理における並列処理プロセッサシステム203の動作に関して詳しく述べる。
【0038】
まず、スキャナ部104で画像データの取り込みを行い(S101)、メモリ部105に画像データを転送する(S102)。
【0039】
次に、コントローラ部101の並列処理プロセッサシステム203に読み取り画像処理ファームウェアを転送し(S103)、並列処理プロセッサシステム203で読み取り画像処理を行う(S104)。
【0040】
さらに、並列処理プロセッサシステム203に記録画像処理ファームウェアを転送し(S105)、並列処理プロセッサシステム203で記録画像処理を実行する(S106)。
【0041】
最後に、プリンタ部103へデータバス204を介して画像データを転送する(S107)。S104、S106については詳しくは後述する。S103、S105では、例えばI/O制御部202により共有メモリ304へ画像処理ファームウェアが転送される。
【0042】
S104、S106における並列処理プロセッサシステム203の動作を、図4のフローチャートを用いて説明する。図4では、単一のDSP301の動作について記述しているが並列処理プロセッサシステム203に含まれる全てのDSP301が同様の動作を並列に実行する。
【0043】
処理が開始されると、DSP301がメモリ部105から処理する所定のサイズの画像データ(以下「タイルデータ」という。)を読み出し、画像用ローカルメモリ303に格納する(S201)。
【0044】
次に、DSP301がファームウェアを実行し(S202)、命令キャッシュ302でキャッシュミスが発生したか否かの判定が行われる(S203)。キャッシュミスが発生した場合、共有メモリ304に記憶されているプログラムを用いて当該命令キャッシュ302の更新を行う(S204)。具体的には例えば、DSP301がアクセスしたアドレスに対応する共有メモリ304の内容を命令キャッシュ302にコピーすることにより上記更新が行われる。
【0045】
前述したように、従来の構成においては、キャッシュミスが発生すると、DSP301からチップ外のメインメモリであるメモリ部105へのアクセスが発生していた。これに対し、本実施形態では、DSPとの間のレイテンシがメモリ部105より小さい共有メモリ304にアクセスして命令キャッシュの更新を行う。このため、処理速度の点で従来法に比べて有利である。
【0046】
キャッシュミスが発生していなければ、タイルデータに対する全ての画像処理が実行されたか否かの判定が行われる(S205)。
【0047】
S205において、全ての画像処理が完了していなければ、S202へ戻ってDSP301によるファームウェアの実行が引き続き行われる。一方、全ての画像処理が完了していれば処理済みのタイルデータを画像用ローカルメモリ303からメモリ部105に書き戻す(S206)。
【0048】
次に、全ての画像データに対する処理が完了しているか否かの判定が行われる(S207)。完了していなければ、S201へ戻ってメモリ部105から次のタイルデータを読み出して画像用ローカルメモリ303に格納し、完了していれば処理完了となる。
【0049】
図4のフローチャートにおける、タイルデータ・ファームウェアのデータフローの概念図を図5に示す。
【0050】
メモリ部105に、画像データ401、ファームウェア402が格納されている。画像データ401をタイル1/2/3に分割し、DSP1/2/3が処理する。図5において、各矢印に付されているステップ番号は図3、図4のフローチャートのステップ番号に一致する。
【0051】
本実施形態における処理経過に伴う、共有メモリ・命令キャッシュの内容の推移について読み取り画像処理を行うフローを例に説明する。図6はその概念図である。
【0052】
並列処理プロセッサシステム203では、タイルデータを画像用ローカルメモリ303に格納した後、画素単位の複数種別の画像処理をタイルデータ内の全ての画素に対して行う。以上を全ての画像データに対して行う。
【0053】
まず、読み取り画像処理ファームウェアが、共有メモリ304に転送(S103)される(501)。
【0054】
DSP301がファームウェアの実行を開始(S202)すると、命令キャッシュ302には読み取り画像処理ファームウェアが格納されていないためキャッシュミスが発生(S203)する。このとき、共有メモリ304に格納されているファームウェアの一部(MTF補正処理部)が命令キャッシュ302にコピー(S204)される(502)。
【0055】
MTF補正処理がタイルデータ内の全ての画素に対して行われている間はキャッシュミスは発生しない。MTF補正処理がタイルデータ内の全ての画素に対して終了すると、キャッシュミスが発生し、共有メモリ304に格納されているファームウェアの別の一部である色変換処理部が命令キャッシュ302にコピーされる(503)。これらをガンマ補正処理完了まで繰り返し、ガンマ補正処理が完了すると処理済みのタイルデータをメモリ部105に書き戻す。
【0056】
全ての画像データに対して処理が行われていなければ、次のタイルデータを読み出して画像用ローカルメモリ303に格納し、処理を継続する。
【0057】
共有メモリ304のレイテンシについて述べる。
【0058】
メインメモリとしてメモリ部105にDDR−SDRAMを搭載した場合、データバス204やDDR−SDRAMのレイテンシに依存するが、1ワードのリード/ライトに20〜30クロックが必要となる。共有メモリ304をDSP301から数クロックのレイテンシとなるように配置すればキャッシュミス時のレイテンシは5分の1程度に削減される。
【0059】
以上の処理により、処理する画像データを複数のDSPで並列処理する構成において、命令キャッシュ容量を低減しつつ所望のパフォーマンスを得ることができる。
【0060】
<第2の実施形態>
以下、添付図面を参照して、第2の実施形態について詳細に説明する。
【0061】
本実施形態における画像処理装置のハードウェア構成は図1と同一である。また、コントローラ部101の構成も図2と基本的に同じである。
【0062】
図7に本実施形態における並列処理プロセッサシステム203の概略ブロック図を示す。図7では、図2と同じ構成要素には同じ符号を付している。図示のように、本実施形態の並列処理プロセッサシステムはDSP間の同期を制御する同期制御部306を更に備える構成としている。本実施形態では、同期信号としてDSPからの割り込み信号を用いることとする。
【0063】
同期制御部306は、DSP301から同期信号を受信すると共有メモリ304内のファームウェア書き換えを、例えば転送制御手段としてのI/O制御部202に指示する。本実施形態では、読み取り画像処理・記録画像処理のファームウェア容量が8KB以上16KB未満、共有メモリ304の容量を8KBとする。また、命令キャッシュ302の容量を4KBとする。
【0064】
図8は、本実施形態における画像処理装置の動作を示すフローチャートである。ここでは、画像データがスキャナ部104から取り込まれて読み取り画像処理が行われるまでの処理における並列処理プロセッサシステムの動作に関して詳しく述べる。
【0065】
まず、スキャナ部104で画像データの取り込みを行い(S301)、メモリ部105に画像データを転送する(S302)。
【0066】
次に、読み取り画像処理ファームウェアの内、MTF補正処理部と色変換処理部を並列処理プロセッサシステム203に転送し(S303)、並列処理プロセッサシステム203で読み取り画像処理を行う(S304)。
【0067】
S304については詳しくは後述する。S303では、I/O制御部202により共有メモリ304へ画像処理ファームウェアが転送される。
【0068】
図9、10は、本実施形態における並列処理プロセッサシステム203の動作を示すフローチャートである。図9は、DSP301を主体としたフローチャートであり、図10は、同期制御部306を主体としたフローチャートである。
【0069】
まず図9に関して説明する。各DSP301による読み取り画像処理では、各タイルデータに対してMTF補正処理、色変換処理、フィルタ処理、ガンマ補正処理が順に行われるものとする。画像処理ファームウェア全体は、共有メモリ304の容量を超えるので同時に格納することができない。このため、ある時点では、MTF補正処理部と色変換処理部とを共有メモリ304に格納し、DSP301はMTF補正処理、色変換処理を実行する。別の時点では、フィルタ処理部とガンマ補正処理部とを共有メモリ304に格納し、DSP301はフィルタ処理、ガンマ補正処理を実行する。
【0070】
処理が開始されると、メモリ部105からタイルデータを読み出し、画像用ローカルメモリ303に格納する(S401)。
【0071】
次に、DSP301がファームウェアを実行し(S402)、キャッシュミスが発生したか否かの判定が行われる(S403)。キャッシュミスが発生した場合、命令キャッシュ302の更新(S404)が行われる。この際、命令キャッシュの更新はDSP301がアクセスしたアドレスに該当する領域の共有メモリ304の内容を命令キャッシュにコピーすることで実現する。キャッシュミスが発生していなければ、ガンマ補正処理が終了したか否かの判定が行われる(S405)。ガンマ補正処理が終了していなければ色変換処置が終了したか否かの判定が行われる(S406)。
【0072】
S405において、ガンマ補正処理が終了していれば、現在のタイルデータに対する一連の読み取り画像処理が完了しているので、処理済みのタイルデータを画像用ローカルメモリ303からメモリ部105に書き戻す(S407)。S406において、色変換処理が終了していなければ、S402へ戻って引き続きDSP301が現在のファームウェアを実行し、色変換処理が終了していれば割り込みを既に出力しているかの判定がなされる(S408)。
【0073】
S408において割り込みを出力していれば、S402へ戻って引き続きDSP301がファームウェアを実行し、出力していなければ同期制御部306へ割り込みを出力する(S409)。その後、制御を同期制御部306に移行し(A)、スタンバイ状態となる。
【0074】
S407において、タイルデータを画像用ローカルメモリ303からメモリ部105に書き戻した後、全ての画像データに対する処理が終了したかの判定がなされる(S410)。S410において、全ての画像データに対する処理が終了していれば処理完了となり、終了していなければ同期制御部306へ割り込みを出力し(S411)、制御を同期制御部306に移行し(B)、スタンバイ状態となる。
【0075】
次に図10について説明する。
【0076】
同期制御部306は、処理が開始されると割り込み待ち状態となる(S412)。上記したAもしくはBにより割り込みを通知された同期制御部306は、DSP301の割り込みを解除する(S413)。
【0077】
次に、全てのDSPからの割り込みを受信したかの判定がなされ(S414)、受信していなければ割り込み待ちとなり、受信していれば割り込み要因がAかBの判定がなされる(S415)。全てのDSPからの割り込みを受信すれば、共有メモリ304に現在格納されているファームウェアによる処理が全てのDSPで終了し、処理の同期が取れたことになる。そこで次の処理を行うために、共有メモリ304に新たなファームウェアを転送して内容を書き換える。
【0078】
S415において割り込み要因がAであれば、1つのタイルデータに対する一連の処理のうち色変換処理まで完了した状態であるので、続いて同一のタイルデータに対してフィルタ処理・ガンマ補正処理を行う必要がある。そこで、同期制御部306はこれに応答して、I/O制御部202に対し共有メモリ304へフィルタ処理・ガンマ補正処理のファームウェアの転送を要求する。I/O制御部202はこの要求に応答して、共有メモリ304にフィルタ処理・ガンマ補正処理のファームウェアを転送し(S416)、DSP301を起動し(S417)、DSP301に制御を移行する(C)。
【0079】
一方、S415において割り込み要因がBであれば、1つのタイルデータに対する一連の処理が全て完了した状態であるので、続いて新たなタイルデ-タに対してMTF補正処理・色変換処理を行う必要がある。そこで、共有メモリ304にMTF補正処理・色変換処理のファームウェアを転送し(S418)、DSP301を起動し(S419)、DSP301に制御を移行する(D)。
【0080】
Cにより起動したDSP301は、同一のタイルデータを対象として、新たに転送されたフィルタ処理・ガンマ補正処理のファームウェアの実行(S402)から処理を再開する。一方、Dにより起動したDSP301は、メモリ部105から新たなタイルデータを読み出して画像用ローカルメモリ303へ格納する処理(S401)から処理を開始する。そして、新たなタイルデータを対象として、新たに転送されたMTF補正処理・色変換処理のファームウェアを実行する(S402)。
【0081】
本実施形態における処理経過に伴う、共有メモリ・命令キャッシュの内容の推移について説明する。図11はその概念図である。
【0082】
並列処理プロセッサシステム203では、タイルデータを画像用ローカルメモリ303に読み出した後、画素単位の複数種別の画像処理をタイルデータ内の全ての画素に対して行う。以上を全ての画像データに対して行う。
【0083】
まず、読み取り画像処理ファームウェアの内、MTF補正処理部と色変換処理部が、共有メモリ304に転送(S303)される(601)。
【0084】
DSP301がファームウェアの実行を開始(S402)すると、命令キャッシュ302にはMTF補正処理部と色変換処理部のファームウェアが格納されていないためキャッシュミスが発生(S403)する。このとき、共有メモリ304に格納されているファームウェアの一部(MTF補正処理部)が命令キャッシュ302にコピー(S404)される(602)。
【0085】
MTF補正処理がタイルデータ内の全ての画素に対して行われている間はキャッシュミスは発生しない。MTF補正処理がタイルデータ内の全ての画素に対して終了すると、キャッシュミスが発生し、色変換処理部が共有メモリ304から命令キャッシュ302にコピーされる(603)。
【0086】
色変換処理が終了すると、同期制御部306によってフィルタ処理・ガンマ補正処理のファームウェアが共有メモリ304に転送され(S416)、共有メモリ・キャッシュは604のようになる。
【0087】
DSP301がファームウェアの実行を再開(S402)すると、キャッシュにはフィルタ処理・ガンマ補正処理のファームウェアは格納されていないためキャッシュミスが発生(S403)する。このとき、共有メモリ304に格納されているファームウェアの一部(フィルタ処理部)が命令キャッシュ302にコピー(S404)される(605)。
【0088】
これらをガンマ補正処理完了まで繰り返し、ガンマ補正処理が完了すると、処理済みのタイルデータをメモリ部105に書き戻す。
【0089】
全ての画像データに対して処理が行われていなければ、次のタイルデータを読み出して画像用ローカルメモリ303に格納し、処理を継続する。
【0090】
以上の処理により、処理対象の画像データを所定単位に分割し複数のDSPで並列処理を実施する構成において、共有メモリにファームウェアの全てが格納できない場合でも同期制御部を設けることにより命令キャッシュ容量を低減しつつ所望のパフォーマンスを達成できる。
【0091】
本発明は上述の実施形態には限定されない。例えば、処理対象は画像データに限らず、音声データなどでも適用可能である。
【0092】
その他の実施形態として、DSPの処理性能に差があるときは、処理速度が速いDSPに優先的にタイルデータを割り当てて処理の高速化を図ることも可能である。
【0093】
その他の実施形態として、DSP間で同期制御を行い、かつDSPの処理性能に差がある場合に、DSPの処理速度に応じてタイルデータの大きさを変化させ処理時間を均一にすることも可能である。
【0094】
その他の実施形態として、画像用ローカルメモリを持たずメモリ部に格納された画像に対してDSPが処理を行う構成も可能である。
【技術分野】
【0001】
本発明は、複数のプロセッサを備え、処理対象のデータを各プロセッサで並列処理する並列処理プロセッサシステムに関する。より具体的には、本発明は、各プロセッサの命令キャッシュ容量を低減しながらパフォーマンスを維持できる並列処理プロセッサシステムに関する。
【背景技術】
【0002】
MFP (Multi Functional Peripheral) のコントローラにおいては、画像の読み取り・記録・プリント・通信・FAXなどの処理のハードウェアロジックを個別に用意し、MFPで要求される機能を実現している。しかし、機能毎に回路を用意していては、機能を維持しながらコントローラをコストダウンすることが難しい。
【0003】
機能を維持しながらのコストダウンは、同時に動作しない画像処理を、プログラマブルなハードウェアで実装することで可能である。プログラマブルなハードウェアとして、DSP (Digital Signal Processor) やリコンフィギュラブルプロセッサ、コンフィギュラブルプロセッサが挙げられる。ここでは、一例として複数のDSPを用いてファームウェアを切り替えることによりコストダウンを実現することを考える。
【0004】
それぞれ異なる画像処理を割り当てられた複数のDSPを接続して、同一画像領域に対して一連の複数種別の画像処理を順番に施す構成をパイプライン構成と呼ぶ。パイプライン構成をとると、DSP間の処理時間の差によりボトルネックとなるDSPが存在してしまい、十分なスループットが得られない。
【0005】
この問題を回避するためには、各DSPの処理時間を等しくするようにDSPをカスタマイズすればよい。
【0006】
しかし、ある処理に対してカスタマイズを行うと、ファームウェアを切り替えて実行する際に他のファームウェアでも同じようなカスタマイズを行うことが難しくなってしまう。
【0007】
また、別の手段としてDSP間の負荷の調整を行う技術も存在するが(例えば特許文献1参照。)、調整にオーバーヘッドがかかり、スループットの向上が難しく、制御が複雑になるため、好ましい解ではない。さらにパイプライン構成は、DSPの数を減らしてコストダウンしたり、数を増やして性能を向上させるといったスケーラビリティのある構成の変更が難しいという問題もある。
【0008】
これらのことから、処理対象の画像データを分割し、分割された各画像データを異なるDSPに割り当てて、パイプライン構成では異なるDSPで実行していた複数の処理を各DSPで実行するデータ並列処理構成が、パイプライン構成よりも好適である。本明細書では、複数のDSPを用いて、処理対象の画像データを分割し、分割された各画像データに対して各DSPで一連の処理を並列に行う構成をデータ並列処理構成と呼ぶ。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006−133839号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
処理すべき画像データを分割して複数のDSPでデータ並列処理を行う構成をとると、各DSPが実行するプログラムの容量が大きくなるため、パイプライン構成に比べて、同一容量の命令キャッシュでは、キャッシュミスの確率が大きくなってしまう。キャッシュミスが発生すると、DSPからメインメモリへのアクセスが発生する。メインメモリは、DSPが搭載されているチップ外のDRAM (Dynamic Random Access Memory) などである。
【0011】
チップ外のDRAMでは、1ワードのリード/ライトに20〜30クロックが必要となるため、キャッシュミス時のレイテンシが非常に大きくなりDSPの処理性能に大きく影響する。一方、各DSPが割り当てられた処理を全て格納する容量を持つ命令キャッシュを実装すると、命令キャッシュの容量が大きくなり、回路面積が増加する。
【0012】
キャッシュミス時のレイテンシを小さくするために、2次キャッシュを用いる方法がある。2次キャッシュとは、1次キャッシュよりもレイテンシが大きくDRAMよりもレイテンシが小さいプロセッサ専用の記憶装置である。2次キャッシュを用いることで、上述の課題を解決することができるが、以下の問題がある。
【0013】
・キャッシュにはデータを格納する回路の他にタグと呼ばれる回路が必要になるため回路規模が大きい。
・キャッシュの入れ換えはキャッシュラインと呼ばれる単位で行われるため効率がよくない。
【0014】
本発明では、2次キャッシュを用いることを要さずDSP間で共有するSRAM (Static Random Access Memory) などの共有メモリを用いることにより、上述の課題を解決する。共有メモリでは、タグが必要なく、キャッシュライン単位ではない書き換えが可能である。
【0015】
本発明では、複数のプロセッサでデータ並列処理を行う構成において、命令キャッシュ容量を低減しながら所望のパフォーマンスを得る構成を提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の一側面によれば、複数のプロセッサを備え、メインメモリから読み出したデータを前記複数のプロセッサによって並列処理する並列処理プロセッサシステムであって、それぞれがプロセッサと、該プロセッサによって実行されるプログラムの少なくとも一部の命令を保持する命令キャッシュとを含む、複数のプロセッサエレメントと、各プロセッサとの間のレイテンシが前記メインメモリと各プロセッサとの間のレイテンシよりも小さいメモリであって、前記メインメモリから転送された前記プログラムを記憶し、前記複数のプロセッサエレメントによって共有される共有メモリと、前記命令キャッシュにおいてキャッシュミスが発生した場合、前記共有メモリに記憶されているプログラムを用いて当該命令キャッシュを更新する更新手段とを有することを特徴とする並列処理プロセッサシステムが提供される。
【発明の効果】
【0017】
本発明によれば、処理するデータを複数のプロセッサで並列処理する構成において、パフォーマンスを維持したまま命令キャッシュ容量を低減できる。
【0018】
また、本発明によれば、共有メモリにプログラムの全てが格納できない場合でも同期制御部を設けることによりパフォーマンスを維持したまま命令キャッシュ容量を低減できる。
【図面の簡単な説明】
【0019】
【図1】実施形態における画像処理装置のハードウェア構成を示すブロック図。
【図2】第1の実施形態における画像処理装置におけるコントローラ部の概略ブロック図。
【図3】第1の実施形態における画像処理装置の動作を示すフローチャート。
【図4】第1の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図5】第1の実施形態におけるタイルデータ・ファームウェアのデータフローの概念図。
【図6】第1の実施形態における共有メモリ・命令キャッシュの内容の推移の概念図。
【図7】第2の実施形態における画像処理装置におけるコントローラ部の概略ブロック図。
【図8】第2の実施形態における画像処理装置の動作を示すフローチャート。
【図9】第2の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図10】第2の実施形態における並列処理プロセッサシステムの動作を示すフローチャート。
【図11】第2の実施形態における共有メモリ・命令キャッシュの内容の推移の概念図。
【発明を実施するための形態】
【0020】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、かかる実施形態は本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
【0021】
<第1の実施形態>
図1は、本発明の並列処理プロセッサシステムを含む画像処理装置のハードウェア構成を示したブロック図である。本実施形態における画像処理装置はコピー機能、プリンタ機能、FAX機能、スキャナ機能を具備したMFPを想定しており、コントローラ部101、UI部102、プリンタ部103、スキャナ部104、メモリ部105、通信IF部106を含む構成である。
【0022】
以下、各部の概略について説明する。
【0023】
コントローラ部101は、画像処理装置全体の制御をつかさどる部分である。コントローラ部101はプリンタ部103やスキャナ部104をはじめとする各ブロックと電気的に接続されており、高度な機能を実現するための制御を行っている。詳細については後述する。
【0024】
UI部102は、ユーザが画像処理装置を操作するためのユーザインタフェース(UI)を提供する。UI部102は例えば液晶タッチパネルで構成され、ユーザから画像処理装置に対しての動作指示を受け付けたり、印刷する画像のプレビューを表示したりする。
【0025】
プリンタ部103は、電気的な画像信号を記録紙上に可視像としてプリントするブロックであり、例えばレーザビームプリンタやインクジェットプリンタにより構成される。
【0026】
スキャナ部104は、原稿画像を光学的に読み取って電気的な画像信号に変換するブロックである。
【0027】
メモリ部105は、例えばDDR−SDRAMやHDDなどのメモリデバイスで構成される。このメモリ部105はメインメモリとして機能するもので、画像データを一時的に格納するだけでなく、画像処理装置の機能を実現するためにコントローラ部101が使用する制御プログラムやデータなどを格納する。
【0028】
通信IF部106は外部機器とのデータの送受を行うブロックであり、インターネットやLANに接続したり、公衆電話回線に接続してFAX通信を行ったり、USBインタフェースによりPC(Personal Computer)と接続したりする。
【0029】
図2にコントローラ部101の概略ブロック図を示す。コントローラ部101は、CPU (Central Processing Unit) 201、I/O制御部202、並列処理プロセッサシステム203、データバス204を包含している。I/O制御部202は、メモリ部105や通信IF部106とコントローラ部101とのデータ転送を制御し、DMA (Direct Memory Access) 機能を有している。本実施形態では、コントローラ部101に並列処理プロセッサシステム203を1つ含む構成としているが、複数含む構成でも可能である。CPU201、I/O制御部202、並列処理プロセッサシステム203は、データバス204を介して接続されている。
【0030】
並列処理プロセッサシステム203は、DSP301、命令キャッシュ302、画像用ローカルメモリ303、共有メモリ304、データバス305を包含する。DSP301・命令キャッシュ302・画像用ローカルメモリ303を、プロセッサエレメント(PE)と呼ぶ。本実施形態では、並列処理プロセッサシステム203にPE1、PE2、PE3の3つのプロセッサエレメントが含まれる構成としているが、プロセッサエレメントの個数は3に限らない。また、本実施形態の各DSP301は同じ処理性能を持つものとする。
【0031】
並列処理プロセッサシステム203では、所定の単位に分割された各画像データを1つのPEの画像用ローカルメモリ303に格納し、その画像に対して同一PEの命令キャッシュ内の命令に従って同一PEのDSP301で処理を行う。共有メモリ304には、複数のPEのDSP301が実行するプログラム命令であるファームウェアを格納する。共有メモリ304にデータではなく命令を格納する利点として、DSP301からの書込みアクセスが発生しないため、アクセスが集中しにくい点が挙げられる。共有メモリ304にアクセスが集中すると、それがボトルネックとなり、処理性能が低下してしまう。共有メモリ304はDSP301からのレイテンシがメモリ部105よりも小さく、動作周波数が高いため、DSP301はファームウェアの高速な読出しが可能である。
【0032】
ファームウェアを切り替える際には、転送制御手段としてのI/O制御部202がメモリ部105に格納されたファームウェアを共有メモリ304にDMA転送する。DSP301、共有メモリ304はデータバス305を介して接続されている。
【0033】
本実施形態の画像処理装置では、並列処理プロセッサシステム203は読み取り画像処理・記録画像処理・通信画像処理などを行う。
【0034】
読み取り画像処理はスキャナ部104から受信した画像データにシェーディング補正等を施し、MTF補正、色変換処理、フィルタ処理、ガンマ処理等の各種画像処理を行う。
【0035】
記録画像処理は読み取り画像処理された画像データに対して2値化処理、中間調処理、そしてRGBtoCMYK等色変換処理を行い中間調画像に変換する。さらに、記録解像度にあわせて解像度変換し、画像の変倍、スムージング、濃度補正等の各種画像処理を施して高精細な画像データに変換しレーザビームプリンタ等に出力する。
【0036】
通信画像処理は読み取った画像を通信性能に合わせて解像度変換、色変換をしたり、通信により受け取った画像を記録性能に合わせて解像度変換等をしたりする。本実施形態では、例えば、読み取り画像処理・記録画像処理のファームウェア容量を16KB未満、共有メモリ304の容量を16KBとする。また、命令キャッシュ302の容量を4KBとする。命令キャッシュ302はDSP301によって実行されるプログラムの少なくとも一部の命令を保持できればよく、命令キャッシュ302の容量はプログラム全体のサイズよりも大幅に小さくてよい。
【0037】
図3は、本実施形態における画像処理装置の動作を示すフローチャートである。本実施形態では、画像データがスキャナ部104から取り込まれてプリンタ部103に出力されるまでの処理における並列処理プロセッサシステム203の動作に関して詳しく述べる。
【0038】
まず、スキャナ部104で画像データの取り込みを行い(S101)、メモリ部105に画像データを転送する(S102)。
【0039】
次に、コントローラ部101の並列処理プロセッサシステム203に読み取り画像処理ファームウェアを転送し(S103)、並列処理プロセッサシステム203で読み取り画像処理を行う(S104)。
【0040】
さらに、並列処理プロセッサシステム203に記録画像処理ファームウェアを転送し(S105)、並列処理プロセッサシステム203で記録画像処理を実行する(S106)。
【0041】
最後に、プリンタ部103へデータバス204を介して画像データを転送する(S107)。S104、S106については詳しくは後述する。S103、S105では、例えばI/O制御部202により共有メモリ304へ画像処理ファームウェアが転送される。
【0042】
S104、S106における並列処理プロセッサシステム203の動作を、図4のフローチャートを用いて説明する。図4では、単一のDSP301の動作について記述しているが並列処理プロセッサシステム203に含まれる全てのDSP301が同様の動作を並列に実行する。
【0043】
処理が開始されると、DSP301がメモリ部105から処理する所定のサイズの画像データ(以下「タイルデータ」という。)を読み出し、画像用ローカルメモリ303に格納する(S201)。
【0044】
次に、DSP301がファームウェアを実行し(S202)、命令キャッシュ302でキャッシュミスが発生したか否かの判定が行われる(S203)。キャッシュミスが発生した場合、共有メモリ304に記憶されているプログラムを用いて当該命令キャッシュ302の更新を行う(S204)。具体的には例えば、DSP301がアクセスしたアドレスに対応する共有メモリ304の内容を命令キャッシュ302にコピーすることにより上記更新が行われる。
【0045】
前述したように、従来の構成においては、キャッシュミスが発生すると、DSP301からチップ外のメインメモリであるメモリ部105へのアクセスが発生していた。これに対し、本実施形態では、DSPとの間のレイテンシがメモリ部105より小さい共有メモリ304にアクセスして命令キャッシュの更新を行う。このため、処理速度の点で従来法に比べて有利である。
【0046】
キャッシュミスが発生していなければ、タイルデータに対する全ての画像処理が実行されたか否かの判定が行われる(S205)。
【0047】
S205において、全ての画像処理が完了していなければ、S202へ戻ってDSP301によるファームウェアの実行が引き続き行われる。一方、全ての画像処理が完了していれば処理済みのタイルデータを画像用ローカルメモリ303からメモリ部105に書き戻す(S206)。
【0048】
次に、全ての画像データに対する処理が完了しているか否かの判定が行われる(S207)。完了していなければ、S201へ戻ってメモリ部105から次のタイルデータを読み出して画像用ローカルメモリ303に格納し、完了していれば処理完了となる。
【0049】
図4のフローチャートにおける、タイルデータ・ファームウェアのデータフローの概念図を図5に示す。
【0050】
メモリ部105に、画像データ401、ファームウェア402が格納されている。画像データ401をタイル1/2/3に分割し、DSP1/2/3が処理する。図5において、各矢印に付されているステップ番号は図3、図4のフローチャートのステップ番号に一致する。
【0051】
本実施形態における処理経過に伴う、共有メモリ・命令キャッシュの内容の推移について読み取り画像処理を行うフローを例に説明する。図6はその概念図である。
【0052】
並列処理プロセッサシステム203では、タイルデータを画像用ローカルメモリ303に格納した後、画素単位の複数種別の画像処理をタイルデータ内の全ての画素に対して行う。以上を全ての画像データに対して行う。
【0053】
まず、読み取り画像処理ファームウェアが、共有メモリ304に転送(S103)される(501)。
【0054】
DSP301がファームウェアの実行を開始(S202)すると、命令キャッシュ302には読み取り画像処理ファームウェアが格納されていないためキャッシュミスが発生(S203)する。このとき、共有メモリ304に格納されているファームウェアの一部(MTF補正処理部)が命令キャッシュ302にコピー(S204)される(502)。
【0055】
MTF補正処理がタイルデータ内の全ての画素に対して行われている間はキャッシュミスは発生しない。MTF補正処理がタイルデータ内の全ての画素に対して終了すると、キャッシュミスが発生し、共有メモリ304に格納されているファームウェアの別の一部である色変換処理部が命令キャッシュ302にコピーされる(503)。これらをガンマ補正処理完了まで繰り返し、ガンマ補正処理が完了すると処理済みのタイルデータをメモリ部105に書き戻す。
【0056】
全ての画像データに対して処理が行われていなければ、次のタイルデータを読み出して画像用ローカルメモリ303に格納し、処理を継続する。
【0057】
共有メモリ304のレイテンシについて述べる。
【0058】
メインメモリとしてメモリ部105にDDR−SDRAMを搭載した場合、データバス204やDDR−SDRAMのレイテンシに依存するが、1ワードのリード/ライトに20〜30クロックが必要となる。共有メモリ304をDSP301から数クロックのレイテンシとなるように配置すればキャッシュミス時のレイテンシは5分の1程度に削減される。
【0059】
以上の処理により、処理する画像データを複数のDSPで並列処理する構成において、命令キャッシュ容量を低減しつつ所望のパフォーマンスを得ることができる。
【0060】
<第2の実施形態>
以下、添付図面を参照して、第2の実施形態について詳細に説明する。
【0061】
本実施形態における画像処理装置のハードウェア構成は図1と同一である。また、コントローラ部101の構成も図2と基本的に同じである。
【0062】
図7に本実施形態における並列処理プロセッサシステム203の概略ブロック図を示す。図7では、図2と同じ構成要素には同じ符号を付している。図示のように、本実施形態の並列処理プロセッサシステムはDSP間の同期を制御する同期制御部306を更に備える構成としている。本実施形態では、同期信号としてDSPからの割り込み信号を用いることとする。
【0063】
同期制御部306は、DSP301から同期信号を受信すると共有メモリ304内のファームウェア書き換えを、例えば転送制御手段としてのI/O制御部202に指示する。本実施形態では、読み取り画像処理・記録画像処理のファームウェア容量が8KB以上16KB未満、共有メモリ304の容量を8KBとする。また、命令キャッシュ302の容量を4KBとする。
【0064】
図8は、本実施形態における画像処理装置の動作を示すフローチャートである。ここでは、画像データがスキャナ部104から取り込まれて読み取り画像処理が行われるまでの処理における並列処理プロセッサシステムの動作に関して詳しく述べる。
【0065】
まず、スキャナ部104で画像データの取り込みを行い(S301)、メモリ部105に画像データを転送する(S302)。
【0066】
次に、読み取り画像処理ファームウェアの内、MTF補正処理部と色変換処理部を並列処理プロセッサシステム203に転送し(S303)、並列処理プロセッサシステム203で読み取り画像処理を行う(S304)。
【0067】
S304については詳しくは後述する。S303では、I/O制御部202により共有メモリ304へ画像処理ファームウェアが転送される。
【0068】
図9、10は、本実施形態における並列処理プロセッサシステム203の動作を示すフローチャートである。図9は、DSP301を主体としたフローチャートであり、図10は、同期制御部306を主体としたフローチャートである。
【0069】
まず図9に関して説明する。各DSP301による読み取り画像処理では、各タイルデータに対してMTF補正処理、色変換処理、フィルタ処理、ガンマ補正処理が順に行われるものとする。画像処理ファームウェア全体は、共有メモリ304の容量を超えるので同時に格納することができない。このため、ある時点では、MTF補正処理部と色変換処理部とを共有メモリ304に格納し、DSP301はMTF補正処理、色変換処理を実行する。別の時点では、フィルタ処理部とガンマ補正処理部とを共有メモリ304に格納し、DSP301はフィルタ処理、ガンマ補正処理を実行する。
【0070】
処理が開始されると、メモリ部105からタイルデータを読み出し、画像用ローカルメモリ303に格納する(S401)。
【0071】
次に、DSP301がファームウェアを実行し(S402)、キャッシュミスが発生したか否かの判定が行われる(S403)。キャッシュミスが発生した場合、命令キャッシュ302の更新(S404)が行われる。この際、命令キャッシュの更新はDSP301がアクセスしたアドレスに該当する領域の共有メモリ304の内容を命令キャッシュにコピーすることで実現する。キャッシュミスが発生していなければ、ガンマ補正処理が終了したか否かの判定が行われる(S405)。ガンマ補正処理が終了していなければ色変換処置が終了したか否かの判定が行われる(S406)。
【0072】
S405において、ガンマ補正処理が終了していれば、現在のタイルデータに対する一連の読み取り画像処理が完了しているので、処理済みのタイルデータを画像用ローカルメモリ303からメモリ部105に書き戻す(S407)。S406において、色変換処理が終了していなければ、S402へ戻って引き続きDSP301が現在のファームウェアを実行し、色変換処理が終了していれば割り込みを既に出力しているかの判定がなされる(S408)。
【0073】
S408において割り込みを出力していれば、S402へ戻って引き続きDSP301がファームウェアを実行し、出力していなければ同期制御部306へ割り込みを出力する(S409)。その後、制御を同期制御部306に移行し(A)、スタンバイ状態となる。
【0074】
S407において、タイルデータを画像用ローカルメモリ303からメモリ部105に書き戻した後、全ての画像データに対する処理が終了したかの判定がなされる(S410)。S410において、全ての画像データに対する処理が終了していれば処理完了となり、終了していなければ同期制御部306へ割り込みを出力し(S411)、制御を同期制御部306に移行し(B)、スタンバイ状態となる。
【0075】
次に図10について説明する。
【0076】
同期制御部306は、処理が開始されると割り込み待ち状態となる(S412)。上記したAもしくはBにより割り込みを通知された同期制御部306は、DSP301の割り込みを解除する(S413)。
【0077】
次に、全てのDSPからの割り込みを受信したかの判定がなされ(S414)、受信していなければ割り込み待ちとなり、受信していれば割り込み要因がAかBの判定がなされる(S415)。全てのDSPからの割り込みを受信すれば、共有メモリ304に現在格納されているファームウェアによる処理が全てのDSPで終了し、処理の同期が取れたことになる。そこで次の処理を行うために、共有メモリ304に新たなファームウェアを転送して内容を書き換える。
【0078】
S415において割り込み要因がAであれば、1つのタイルデータに対する一連の処理のうち色変換処理まで完了した状態であるので、続いて同一のタイルデータに対してフィルタ処理・ガンマ補正処理を行う必要がある。そこで、同期制御部306はこれに応答して、I/O制御部202に対し共有メモリ304へフィルタ処理・ガンマ補正処理のファームウェアの転送を要求する。I/O制御部202はこの要求に応答して、共有メモリ304にフィルタ処理・ガンマ補正処理のファームウェアを転送し(S416)、DSP301を起動し(S417)、DSP301に制御を移行する(C)。
【0079】
一方、S415において割り込み要因がBであれば、1つのタイルデータに対する一連の処理が全て完了した状態であるので、続いて新たなタイルデ-タに対してMTF補正処理・色変換処理を行う必要がある。そこで、共有メモリ304にMTF補正処理・色変換処理のファームウェアを転送し(S418)、DSP301を起動し(S419)、DSP301に制御を移行する(D)。
【0080】
Cにより起動したDSP301は、同一のタイルデータを対象として、新たに転送されたフィルタ処理・ガンマ補正処理のファームウェアの実行(S402)から処理を再開する。一方、Dにより起動したDSP301は、メモリ部105から新たなタイルデータを読み出して画像用ローカルメモリ303へ格納する処理(S401)から処理を開始する。そして、新たなタイルデータを対象として、新たに転送されたMTF補正処理・色変換処理のファームウェアを実行する(S402)。
【0081】
本実施形態における処理経過に伴う、共有メモリ・命令キャッシュの内容の推移について説明する。図11はその概念図である。
【0082】
並列処理プロセッサシステム203では、タイルデータを画像用ローカルメモリ303に読み出した後、画素単位の複数種別の画像処理をタイルデータ内の全ての画素に対して行う。以上を全ての画像データに対して行う。
【0083】
まず、読み取り画像処理ファームウェアの内、MTF補正処理部と色変換処理部が、共有メモリ304に転送(S303)される(601)。
【0084】
DSP301がファームウェアの実行を開始(S402)すると、命令キャッシュ302にはMTF補正処理部と色変換処理部のファームウェアが格納されていないためキャッシュミスが発生(S403)する。このとき、共有メモリ304に格納されているファームウェアの一部(MTF補正処理部)が命令キャッシュ302にコピー(S404)される(602)。
【0085】
MTF補正処理がタイルデータ内の全ての画素に対して行われている間はキャッシュミスは発生しない。MTF補正処理がタイルデータ内の全ての画素に対して終了すると、キャッシュミスが発生し、色変換処理部が共有メモリ304から命令キャッシュ302にコピーされる(603)。
【0086】
色変換処理が終了すると、同期制御部306によってフィルタ処理・ガンマ補正処理のファームウェアが共有メモリ304に転送され(S416)、共有メモリ・キャッシュは604のようになる。
【0087】
DSP301がファームウェアの実行を再開(S402)すると、キャッシュにはフィルタ処理・ガンマ補正処理のファームウェアは格納されていないためキャッシュミスが発生(S403)する。このとき、共有メモリ304に格納されているファームウェアの一部(フィルタ処理部)が命令キャッシュ302にコピー(S404)される(605)。
【0088】
これらをガンマ補正処理完了まで繰り返し、ガンマ補正処理が完了すると、処理済みのタイルデータをメモリ部105に書き戻す。
【0089】
全ての画像データに対して処理が行われていなければ、次のタイルデータを読み出して画像用ローカルメモリ303に格納し、処理を継続する。
【0090】
以上の処理により、処理対象の画像データを所定単位に分割し複数のDSPで並列処理を実施する構成において、共有メモリにファームウェアの全てが格納できない場合でも同期制御部を設けることにより命令キャッシュ容量を低減しつつ所望のパフォーマンスを達成できる。
【0091】
本発明は上述の実施形態には限定されない。例えば、処理対象は画像データに限らず、音声データなどでも適用可能である。
【0092】
その他の実施形態として、DSPの処理性能に差があるときは、処理速度が速いDSPに優先的にタイルデータを割り当てて処理の高速化を図ることも可能である。
【0093】
その他の実施形態として、DSP間で同期制御を行い、かつDSPの処理性能に差がある場合に、DSPの処理速度に応じてタイルデータの大きさを変化させ処理時間を均一にすることも可能である。
【0094】
その他の実施形態として、画像用ローカルメモリを持たずメモリ部に格納された画像に対してDSPが処理を行う構成も可能である。
【特許請求の範囲】
【請求項1】
複数のプロセッサを備え、メインメモリから読み出したデータを前記複数のプロセッサによって並列処理する並列処理プロセッサシステムであって、
それぞれがプロセッサと、該プロセッサによって実行されるプログラムの少なくとも一部の命令を保持する命令キャッシュとを含む、複数のプロセッサエレメントと、
各プロセッサとの間のレイテンシが前記メインメモリと各プロセッサとの間のレイテンシよりも小さいメモリであって、前記メインメモリから転送された前記プログラムを記憶し、前記複数のプロセッサエレメントによって共有される共有メモリと、
前記命令キャッシュにおいてキャッシュミスが発生した場合、前記共有メモリに記憶されているプログラムを用いて当該命令キャッシュを更新する更新手段と、
を有することを特徴とする並列処理プロセッサシステム。
【請求項2】
前記命令キャッシュの容量は前記共有メモリの容量よりも小さいことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項3】
前記更新手段は、前記命令キャッシュにおいてキャッシュミスが発生した場合に、前記プロセッサがアクセスしたアドレスに対応する前記共有メモリの内容を当該命令キャッシュにコピーすることにより、前記更新を行うことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項4】
前記メインメモリと前記共有メモリとの間の転送を制御する転送制御手段と、
前記共有メモリに前記プログラムの全てを格納できない場合に、前記プロセッサが出力した同期信号に応答して、前記転送制御手段に対して前記共有メモリのプログラムの書き換えを要求する同期制御手段と、
を更に有することを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項5】
前記複数のプロセッサの各々が、前記共有メモリに現在格納されているプログラムの実行が完了すると前記同期信号を出力し、前記同期制御手段が、前記複数のプロセッサの全てから前記同期信号が出力されたことに応答して、前記共有メモリのプログラムの書き換えを要求することを特徴とする請求項4に記載の並列処理プロセッサシステム。
【請求項6】
前記複数のプロセッサエレメントのそれぞれは、前記メインメモリから読み出された処理対象のデータを格納するローカルメモリを更に含むことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項1】
複数のプロセッサを備え、メインメモリから読み出したデータを前記複数のプロセッサによって並列処理する並列処理プロセッサシステムであって、
それぞれがプロセッサと、該プロセッサによって実行されるプログラムの少なくとも一部の命令を保持する命令キャッシュとを含む、複数のプロセッサエレメントと、
各プロセッサとの間のレイテンシが前記メインメモリと各プロセッサとの間のレイテンシよりも小さいメモリであって、前記メインメモリから転送された前記プログラムを記憶し、前記複数のプロセッサエレメントによって共有される共有メモリと、
前記命令キャッシュにおいてキャッシュミスが発生した場合、前記共有メモリに記憶されているプログラムを用いて当該命令キャッシュを更新する更新手段と、
を有することを特徴とする並列処理プロセッサシステム。
【請求項2】
前記命令キャッシュの容量は前記共有メモリの容量よりも小さいことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項3】
前記更新手段は、前記命令キャッシュにおいてキャッシュミスが発生した場合に、前記プロセッサがアクセスしたアドレスに対応する前記共有メモリの内容を当該命令キャッシュにコピーすることにより、前記更新を行うことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項4】
前記メインメモリと前記共有メモリとの間の転送を制御する転送制御手段と、
前記共有メモリに前記プログラムの全てを格納できない場合に、前記プロセッサが出力した同期信号に応答して、前記転送制御手段に対して前記共有メモリのプログラムの書き換えを要求する同期制御手段と、
を更に有することを特徴とする請求項1に記載の並列処理プロセッサシステム。
【請求項5】
前記複数のプロセッサの各々が、前記共有メモリに現在格納されているプログラムの実行が完了すると前記同期信号を出力し、前記同期制御手段が、前記複数のプロセッサの全てから前記同期信号が出力されたことに応答して、前記共有メモリのプログラムの書き換えを要求することを特徴とする請求項4に記載の並列処理プロセッサシステム。
【請求項6】
前記複数のプロセッサエレメントのそれぞれは、前記メインメモリから読み出された処理対象のデータを格納するローカルメモリを更に含むことを特徴とする請求項1に記載の並列処理プロセッサシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−205083(P2010−205083A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−51287(P2009−51287)
【出願日】平成21年3月4日(2009.3.4)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願日】平成21年3月4日(2009.3.4)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]