説明

データ処理装置及びデータ処理方法

【課題】 データ処理の領域を分割して複数のプロセッサに並列処理させる際に、分割の最小単位を小さくする。
【解決手段】 データ処理装置が、第一のデータ処理を複数のプロセッサに並列処理させ、並列処理されたデータを記憶部に格納する際に、複数のプロセッサのデータキャッシュのサイズに基づいて記憶部のアドレスを変換して格納する。そして、記憶部に格納されたデータを読み出し、読み出したデータに対して第二のデータ処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びデータ処理方法に関するものである。
【背景技術】
【0002】
画像形成装置等において、画像データを処理する際に、一部の処理を専用ハードウェアではなく組み込みプロセッサ上のソフトウェアに実行させる場合がある。ソフトウェアで実行させることにより、複数の機能をユースケース毎に使い分け、また機能の追加実装等、システム全体として柔軟な対応が可能となる。プロセッサは一般に複数搭載され、また近年ではその数も増加傾向にある。複数のプロセッサを用いることにより、複数の処理をパイプライン処理する、1つの処理を並列処理する、といったことが可能となる。
【0003】
ところで、組み込みプロセッサによるソフトウェア処理は、専用ハードウェアによる処理と比べて処理時間が長く、画像形成装置等においてはシステム全体の処理時間のボトルネックとなりやすい。そのため、複数のプロセッサを搭載した際に、1つの画像データを領域分割して分割した画像データを複数のプロセッサの其々で並列処理する方法がある。例えば特許文献1では、複数のプロセッサを用いてJPEG圧縮、伸長を並列に実行する手法が提案されている。
【0004】
現在の一般的なプロセッサは、キャッシュメモリを備えており、複数のプロセッサが1つの共有メモリ型の主記憶装置に対して領域分割してデータを出力する際に、キャッシュコヒーレンシを保つ必要がある。複数のプロセッサは、独立にデータキャッシュを備えており、キャッシュラインのサイズ毎にデータの一貫性保持トランザクションが行われる。同一のキャッシュラインを複数のプロセッサで独立して読み書きする場合は、一方の書き込みにより他方のデータを誤って上書きする恐れがある。この対策としては、例えば特許文献2のように専用ハードウェアを実装することにより、キャッシュコヒーレンシを保つ方法がある。また、専用ハードウェアを実装しない場合、各プロセッサが分担する領域の割り当てをキャッシュラインサイズに合わせることで、複数のプロセッサが同一のキャッシュラインを共有しないことをシステム的に保障する。これにより、キャッシュコヒーレンシを保つという方法がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−73210号公報
【特許文献2】特開平08−185359号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1では出力データは離散的であり、そもそもキャッシュコヒーレンシを保つ構成がない。
【0007】
複数のプロセッサのキャッシュ間でキャッシュコヒーレンシを保つために、特許文献2のように構成するとキャッシュコヒーレンシを保つためのトランザクションが頻発し、システム全体の性能が低下するおそれがある。
【0008】
また、各プロセッサが分担する領域の割り当てをキャッシュラインのサイズに合わせることでキャッシュコヒーレンシを保とうとすると、処理対象のデータをキャッシュラインサイズより小さく分割できない。複数のプロセッサが実装されているシステムにおいて、並列処理を分担させることができないプロセッサが発生しプロセッサの数に見合った処理速度上昇の効果が得られないおそれがある。
【0009】
本発明は、領域を分割して複数のプロセッサに並列処理させる際に効率的な並列処理を可能にするシステム及び方法を提供する。
【課題を解決するための手段】
【0010】
本発明は、第一のデータ処理を複数のプロセッサが並列処理して記憶手段に格納し、前記記憶手段に格納されたデータに対して第二のデータ処理を行うデータ処理装置であって、
第一のデータ処理を複数のプロセッサに並列処理させる第一のデータ処理手段と、
前記第一のデータ処理手段で並列処理されたデータを記憶手段に格納する際に、前記複数のプロセッサのデータキャッシュのサイズに基づいて前記記憶手段に対するアドレスを変換するアドレス変換手段と、
前記記憶手段に格納されたデータを読み出し、読み出したデータに対して第二のデータ処理を行う第二のデータ処理手段と、
を有することを特徴とする。
【発明の効果】
【0011】
本発明によれば、領域を分割して複数のプロセッサに並列処理させる際に、効率的に並列処理を実行させることができる。
【図面の簡単な説明】
【0012】
【図1】第一の実施形態におけるデータ処理システムの構成例を示す図である。
【図2】図1に示すデータ処理システムの詳細な構成例を示す図である。
【図3】第一の実施形態におけるデータ処理の流れを示す図である。
【図4】第一のデータ処理でプロセッサ毎に処理する領域を分割した様子を示す図である。
【図5】第一のデータ処理が行われたアドレス変換前データの配列を示す図である。
【図6】アドレス変換処理による中間データの書き込み順を示す図である。
【図7】具体的なパラメータにおける第二のデータ処理部の読み出し順を示す図である。
【図8】アドレス変換前データの一般的なパラメータの様子を説明するための図である。
【図9】中間データが一般的なパラメータで生成される様子を示す図である。
【図10】第二のデータ処理部が中間データを読み取る様子を説明するための図である。
【図11】第二の実施形態における第二のデータ処理部の読み出し順を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
【0014】
[第一の実施形態]
図1は、第一の実施形態におけるデータ処理システムの構成例を示す図である。第一のデータ処理部102は、複数のプロセッサによって構成され、各プロセッサ上のソフトウェアによってデータ処理が実行される。第一のデータ処理領域分割部101は、第一のデータ処理部102とは別のプロセッサ等によって構成され、第一のデータ処理部102のマルチプロセッサに並列処理させるための領域分割に関する設定を行う。第一のデータ処理部102で実行される第一のデータ処理301(図3参照)は画像データの2値化処理とするが、本発明はこれに限定されるものではなく、二次元のデータを取り扱う処理(フィルタ処理、変倍処理、変換処理等)であっても構わない。
【0015】
第二のデータ処理部103は、プロセッサや専用のハードウェアによって構成される。第二のデータ処理部103で実行される第二のデータ処理304(図3)は第一のデータ処理301で画像処理された結果を用いて更に別の画像処理を行うものである。ここではJBIG圧縮処理とするが、本発明はこれに限定されるものではなく、例えばラスタ順にデータ処理を行う別の画像処理(2値化処理、フィルタ処理等)であっても構わない。
【0016】
主記憶部104は、第一のデータ処理部102と第二のデータ処理部103とから読み書き可能な共有メモリ型のDRAMであり、各種データが格納される。この例では、入力データ1041は第一のデータ処理301を実行する前のデータ、中間データ1042は第一のデータ処理301を実行し、アドレス変換処理303(図3)を経て第二のデータ処理を実行する前のデータである。出力データ1043は第二のデータ処理304を実行した後のデータである。
【0017】
図2は、図1に示すデータ処理システムの詳細な構成例を示す図である。第一のデータ処理部102は、N個のプロセッサ10211、10212、…、1021Nからなる。N個のプロセッサは、独立にデータキャッシュ10221、10222、…、1022Nを備え、プロセッサ間でデータのコヒーレンシを保つハードウェア等は備えていないものとする。ここで、データキャッシュ10221、10222、…、1022Nは、ライトバック方式のデータキャッシュであり、キャッシュラインサイズでデータの一貫性を保持する。また、各プロセッサは、アドレス変換方法10231、10232、…、1023Nを備え、共有の主記憶部104に演算結果を書き込む際にアドレス変換を行う。
【0018】
第二のデータ処理部103は、第二のデータ処理プロセッサ1031と入出力転送用DMAC1032、1033からなる。DMAC1032は、データ再配置機能を備え、アドレス変換と整合が取れるように、第二のデータ処理プロセッサ1031に、主記憶部104から中間データ1042を転送する。DMAC1033は、第二のデータ処理プロセッサ1031(JBIG圧縮部)によって生成された出力データ1043を主記憶部104に転送する。
【0019】
第一のデータ処理領域分割部101は、データ処理システム全体の制御用のプロセッサを有し、第一のデータ処理部102と第二のデータ処理部103とに対して動作に必要となる設定パラメータをセットし、それらの動作を制御する。この設定パラメータについては更に後述する。
【0020】
図3は、第一の実施形態におけるデータ処理の流れを示す図である。第一のデータ処理301が入力データ1041をアドレス変換前データ302に変換する(または、入力データ1041に基づいてアドレス変換前データを生成する)。次に、各プロセッサのアドレス変換処理303によってアドレス変換前データ302を中間データ1042に変換する。ここで、本実施形態では第一のデータ処理301とアドレス変換処理303は、第一のデータ処理部102によって連続的に実行されるので、アドレス変換前データ302は主記憶部104に書き込まれない。最後に、第二のデータ処理304が中間データ1042を出力データ1043に変換する(または、中間データ1042に基づいて出力データ1043を生成する)。
【0021】
図4は、第一のデータ処理301においてプロセッサ毎に処理する領域を分割した様子を示す図である。図4では、4つのプロセッサ(プロセッサ10211、10212、10213、10214)を用いて並列処理を行うものとして説明する。並列処理させるデータは二次元のビットマップデータであり、メモリのアドレスが連続しているx方向とx方向のページ幅に基づいてアドレスのオフセットが加わるy方向とがあるとする。また、二次元のビットマップデータをx方向に短冊状に分割し、各プロセッサが第一のデータ処理301を行う。第一のデータ処理301において各プロセッサはx方向に並ぶ画素を順番に処理し、x方向の最後の画素まで処理をするとy方向に処理を進める。
【0022】
図5は、第一のデータ処理301が行われたアドレス変換前データ302の配列を示す図であり、図4を拡大表示したものである。プロセッサ10211は、まず先頭アドレスから、プロセッサ10211が担当するx方向の幅だけデータ処理を行う、その処理結果(画像データ511)をアドレス変換前データ302とする。次に、画像データ511の開始アドレスから画像のx方向のページ幅だけオフセットを加えたアドレスから、プロセッサ10211が担当するx方向の幅だけデータ処理を行う。以下同様にプロセッサ10211は、画像データ513、514と、順にデータ処理を行う。
【0023】
プロセッサ10212は、先頭アドレスからプロセッサ10211が担当するx方向の幅だけオフセットを加えたアドレスから、プロセッサ10212が担当するx方向の幅だけデータ処理を行う。データ処理の結果(画像データ521)をアドレス変換前データ302とする。次に、画像データ521の開始アドレスから画像のx方向のページ幅だけオフセットを加えたアドレスから、プロセッサ10212が担当するx方向の幅だけデータ処理を行う。以下同様にプロセッサ10212、画像データ523、524と、順にデータ処理を行う。
【0024】
尚、プロセッサ10213、10214もプロセッサ10211、10212と同様の処理を実施してアドレス変換前データ302に変換(生成)する。
【0025】
図6は、アドレス変換処理303による中間データ1042の書き込み順を示す図である。第一のデータ処理部102を構成するプロセッサ10211、10212、10213、10214が、処理した画像データを中間データ1042に書き込む際にアドレス変換処理303を行う。ここでは、各プロセッサの担当するx方向の幅がキャッシュラインサイズの1/2(第一のサイズ)の場合を示している。
【0026】
プロセッサ10211は処理した画像データ511を、キャッシュの先頭アドレスから書き込む。次の画像データ512は画像データ511の書き込み開始アドレスから画像のx方向のページ幅だけオフセットを加えたアドレスに書き込まれるのではなく、画像データ511の続きから書き込まれる。第一の実施形態では、画像データ511、512の2つで1キャッシュラインサイズに対応している。また、プロセッサ10212が処理した画像データ521は、キャッシュの先頭アドレスに1キャッシュラインサイズ分のオフセットを加えたアドレスから書き込まれる。次の画像データ522は画像データ521の続きに書き込まれる。この画像データ521、522も2つで1キャッシュラインサイズに対応する。以下、プロセッサ10213が処理した画像データ531、532、プロセッサ10214が処理した画像データ541、542も同様である。
【0027】
次に、プロセッサ10211が処理した画像データ513は、先頭アドレスに、キャッシュラインサイズ×プロセッサ数、のオフセットを加えたアドレスに書き込まれる。画像データ514以降の、プロセッサ10212が処理した画像データ523、524、プロセッサ10213が処理した画像データ533、534、プロセッサ10214が処理した画像データ543、544も同様に書き込まれる。
【0028】
図7は、具体的なパラメータにおける第二のデータ処理部103の読み出し順を示す図である。上述のアドレス変換処理303により主記憶部104上の中間データ1042は二次元のラスタデータ(またはビットマップデータ)とは配列が異なっている。本実施形態では、第二のデータ処理304はJBIG圧縮処理であり、第二のデータ処理プロセッサ1031は二次元のラスタ順にデータを必要としているものとする。
【0029】
そのため、データ再配置機能を備えているダイレクトメモリアクセス制御部1032(以下、DMAC1032と称す)が、アドレス変換処理303と整合したデータの読み取りを行う必要があり、矩形転送のできるDMACを用いることで実現する。矩形転送とは、二次元の画像データをある長方形サイズ(第二のサイズ)を単位に転送することである。具体的には、まず画像データ511、521、531、541を、この順に転送する。すなわち、矩形のサイズは、(プロセッサが担当したx方向の幅)×(プロセッサ数)である。
【0030】
次に、画像データ512、522、532、542を、矩形サイズとしてこの順に転送する。その後も、画像データ513、523、…と同様に転送を行う。以上のように、DMAC1032の矩形転送処理により、第二のデータ処理プロセッサ1031には、二次元のラスタデータの配列順にデータが転送される。
【0031】
以上、ページ幅がキャッシュラインサイズの2倍で、4個のプロセッサを用いて分割処理する場合を説明した。しかし、本願発明は上述の設定以外であっても適用できる。次に、プロセッサ数、ページ幅、キャッシュラインサイズ等をパラメータ化し一般化した例を説明する。
【0032】
図8は、アドレス変換前データ302の一般的なパラメータの様子を説明するための図である。注目しているプロセッサ番号を一般的にnとし、これはN個のプロセッサのうちのどれか1つを示す変数である。また、二次元ビットマップにおいて注目しているライン番号を一般的にyとし、これはy方向のどれか1ラインを示す変数である。プロセッサ数がN、ページの横幅がX、キャッシュラインサイズがLであるとする。
【0033】
尚、ページの横幅Xは、本発明を実施するためにキャッシュラインサイズの倍数となるように、予め任意のデータを埋めておくものとする。また、中間データが、例えばRGBの画像データであり、1ピクセルが3バイトで構成され、xバイト単位で扱う必要があるデータである場合には、キャッシュラインサイズLとxの最小公倍数を新しいキャッシュラインサイズとして設定を行う。ここで、キャッシュラインサイズLの約数をMとする。N>X/Lである場合は、プロセッサ全てに処理を割り当てることができないため、Mを用いて、N≦M×X/Lを満たす最小のMを探すことで、全てのプロセッサに処理を割り当てる。
【0034】
但し、Mの決め方は一例であり、この例のように、上記の条件で最小の値と制限される必要はなく、Lの約数であれば任意の値で構わない。また、N<X/Lの場合であっても、Mを設定して本発明を適用しても構わない。プロセッサが処理する処理の最小幅をZと定義する。Z=L/Mである。
【0035】
ここで、プロセッサ数NがN=M×X/Lを満たす場合には、処理の最小幅Zを全てのプロセッサに割り当てることで処理を行う。しかし、N<M×X/Lの場合には、いくつかのプロセッサは処理の最小幅Zの数倍の幅を処理することとなる。この場合のアドレス変換処理303のルールは、仮にプロセッサがM×X/L個あった場合のアドレス変換処理と同じになるようにする。そのため、ここでは、N=M×X/Lである場合を例に説明する。
【0036】
図9は、中間データ1042が一般的なパラメータで生成される様子を示す図である。図8に示すプロセッサnでのyライン目の処理結果は、中間データ1042を書き始めるベースアドレスから、以下の3つのオフセットを加えたアドレスに書き込まれる。ここで、QUONTIENT(A、B)はAをBで割った時の商、MOD(A、B)はAをBで割った時の余りである。
・オフセット901:L×N×QUONTIENT((y−1)、M)
・オフセット902:L×(n−1)
・オフセット903:Z×MOD((y−1)、M)
このように、オフセットは3つからなる。オフセット901はキャッシュラインサイズL×プロセッサ数Nが何個あるかを示している。キャッシュラインサイズにはM個の最小幅Zからなるため、ライン番号yをMで除算することによりキャッシュラインサイズL×プロセッサ数Nが何個あるかを求めることができる。オフセット902はプロセッサ数によるオフセットを示している。キャッシュラインサイズLと注目しているプロセッサnとの乗算により求めることができる。そして、オフセット903はライン数yの端数によるオフセットを示している。処理の最小幅Zとライン数yのMでの除算の余りとを乗算することで求めることができる。
【0037】
図10は、第一の実施形態での一般的なパラメータにおける第二のデータ処理部103が中間データを読み取る様子を説明するための図である。図7で説明した理由に準じて、第二のデータ処理304でDMAC1032がアドレス変換処理303と整合したデータの読み取りを行う必要があり、矩形転送のできるDMACを用いることで実現している。この際に用いるパラメータは、ページ横幅をキャッシュラインサイズLとし、矩形読み取り単位を(処理の最小幅Z×プロセッサN)とする。ページサイズと矩形読み取り単位を設定することにより、矩形単位で読み取りを行うことができる。尚、矩形単位で読み取る方法は公知であり、その説明は省略する。
【0038】
第一の実施形態によれば、第一のデータ処理301の領域を分割して複数のプロセッサに並列処理させる際に、処理対象のデータを分割する単位をキャッシュラインのサイズより小さくすることができる。また、第二のデータ処理304でラスタデータの配列順にデータが必要とされる場合であっても、整合性が取れるようにすることができる。
【0039】
[第二の実施形態]
次に、図面を参照しながら本発明に係る第二の実施形態を詳細に説明する。尚、第二の実施形態におけるデータ処理システムの構成は図1に示す第一の実施形態と同様であり、その説明は省略する。
【0040】
第二の実施形態では、第二のデータ処理部103で実行される第二のデータ処理304(図3)がJPEG圧縮処理とする。図2に示す第二のデータ処理プロセッサ1031としてJPEG圧縮機能を備える。しかし、本発明はこれに限定されるものではなく、第二のデータ処理304は矩形単位でデータ処理を行う別の画像処理であっても構わない。例えば、矩形単位で印刷画像をスプールするスプール処理であってもよい。
【0041】
図3に示す中間データ1042を主記憶部104に出力するまでは、第一の実施形態と同様である。第二の実施形態においては、第二のデータ処理304を行う上で中間データ1042からDMAC1032がデータを読み出す手順が第一の実施形態と異なる。
【0042】
図11は、第二の実施形態における第二のデータ処理部103の読み出し順を示す図である。アドレス変換処理303によって主記憶部104上の中間データ1042は二次元のラスタデータと配列が異なっている点は第一の実施形態と同様である。ここで、第二のデータ処理304はJPEG圧縮処理であり、第二のデータ処理ハードウェア1031は矩形単位でデータを必要としているものとする。
【0043】
そのため、アドレス変換処理303と整合したデータの読み取りを行う必要があるが、これらの要件は中間データ1042をDMAC1032がラスタ順に転送するだけで達成される。即ち、DMAC1032がデータを、図11に示すように、画像データ1101、1102、…、1108、1109、1110、…、1116、1117、…の順に、ラスタ読み取りする。
【0044】
尚、上述のように、ラスタ転送DMAC1032によって自動的にデータ再配置が行われるためには、プロセッサが処理する処理の最小幅ZをJPEG圧縮のMCU(Minimum Coded Unit)に合わせる必要がある。第一の実施形態で説明した通り、処理の最小幅Zを決める要因である、キャッシュラインサイズLの約数Mは任意に設定可能である。このMを適切に設定することによって処理の最小幅ZをJPGE圧縮のMCUに合わせる。
【0045】
第二の実施形態によれば、第二のデータ処理304が、矩形単位でデータを必要とする場合にも、アドレス変換処理303と整合したデータ読み取りを行うことができる。
【0046】
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
第一のデータ処理を複数のプロセッサが並列処理して記憶手段に格納し、前記記憶手段に格納されたデータに対して第二のデータ処理を行うデータ処理装置であって、
第一のデータ処理を複数のプロセッサに並列処理させる第一のデータ処理手段と、
前記第一のデータ処理手段で並列処理されたデータを記憶手段に格納する際に、前記複数のプロセッサのデータキャッシュのサイズに基づいて前記記憶手段に対するアドレスを変換するアドレス変換手段と、
前記記憶手段に格納されたデータを読み出し、読み出したデータに対して第二のデータ処理を行う第二のデータ処理手段と、
を有することを特徴とするデータ処理装置。
【請求項2】
前記複数のプロセッサの数と前記データキャッシュのサイズとから各プロセッサに並列処理させるデータの領域の幅を設定する設定手段を更に有し、
前記アドレス変換手段は、前記設定手段で設定された領域の幅に基づいて前記記憶手段に対するアドレスを変換することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記第二のデータ処理手段は、前記記憶手段に格納されたデータをラスタ順に読み出すことを特徴とする請求項1又は2に記載のデータ処理装置。
【請求項4】
前記第二のデータ処理手段は、二次元のデータを矩形単位で前記記憶手段から読み出すことを特徴とする請求項1又は2に記載のデータ処理装置。
【請求項5】
二次元の配列の入力データについて、第一のサイズごとに並列処理する複数の処理手段と、
前記複数の処理手段のそれぞれの処理によって得られる結果を、前記処理手段のキャッシュラインのサイズごとに、前記複数の処理手段について順番に記憶する記憶手段と、
前記記憶手段に記憶されている結果を第二のサイズごとに読み出して転送する転送手段と、
を有することを特徴とするデータ処理装置。
【請求項6】
第一のデータ処理を複数のプロセッサが並列処理して記憶手段に格納し、前記記憶手段に格納されたデータに対して第二のデータ処理を行うデータ処理装置で実行されるデータ処理方法であって、
第一のデータ処理手段が、第一のデータ処理を複数のプロセッサに並列処理させる第一のデータ処理工程と、
アドレス変換手段が、前記第一のデータ処理工程において並列処理されたデータを記憶手段に格納する際に、前記複数のプロセッサのデータキャッシュのサイズに基づいて前記記憶手段に対するアドレスを変換するアドレス変換工程と、
第二のデータ処理手段が、前記記憶手段に格納されたデータを読み出し、読み出したデータに対して第二のデータ処理を行う第二のデータ処理工程と、
を有することを特徴とするデータ処理方法。
【請求項7】
複数の処理手段と当該複数の処理手段で共有する記憶手段とを有するデータ処理装置によるデータ処理方法であって、
二次元の配列の入力データについて、前記複数の処理手段によって第一のサイズごとに並列処理する処理工程と、
前記処理工程によって得られる結果を、前記処理手段のキャッシュラインのサイズごとに、前記複数の処理手段について順番に前記記憶手段に記憶させる記憶工程と、
前記記憶手段に記憶されている結果を第二のサイズごとに読み出して転送する転送工程と、
を有することを特徴とするデータ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−242855(P2012−242855A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−108733(P2011−108733)
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】