(57)【要約】【課題】画像処理などの所定の処理に用いられるＳＩＭＤ型プロセッサ全体の処理時間を従来技術に比較して削減できるメモリコントローラと、当該メモリコントローラを備えたＳＩＭＤ型プロセッサとを提供する。【解決手段】リードバッファカウンタ回路５１は、リードバッファＲＢ０がプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊにデータを転送する毎にアドレス値Ｃ５１をインクリメントして出力する。ループレジスタ５２は、所定の最大アドレス値を格納する。比較器５３は、リードバッファカウンタ回路５１から出力されるアドレス値Ｃ５１を最大アドレス値Ｃ５２と比較し、アドレス値Ｃ５１が最大アドレス値Ｃ５２と一致したとき、リードバッファカウンタ回路５１をリセットするためのカウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力する。【選択図】図３
2013061851.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置からのデータを順次それぞれ所定のアドレスに一時的に格納し、入力されるアドレス値のアドレスに格納されたデータを、ＳＩＭＤ（Single Instruction-stream Multiple Data-stream）型プロセッサの複数のプロセッサエレメントに転送するリードバッファと、
上記アドレス値を発生して上記リードバッファに出力するリードバッファコントローラとを備えたメモリコントローラにおいて、
上記リードバッファコントローラは、
上記リードバッファが上記各プロセッサエレメントに上記データを転送する毎に上記アドレス値をインクリメントして出力するリードバッファカウンタ回路と、
所定の最大アドレス値を格納するループレジスタと、
上記リードバッファカウンタ回路から出力されるアドレス値を上記最大アドレス値と比較し、上記アドレス値が上記最大アドレス値と一致したとき、上記リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生して上記リードバッファカウンタ回路に出力する比較器とを備えたことを特徴とするメモリコントローラ。
【請求項２】
上記メモリコントローラは、上記カウンタリセット信号に基づいて、上記記憶装置から上記メモリコントローラへのデータ転送を停止させるためのストップ信号を発生して上記記憶装置に出力することを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
上記リードバッファコントローラは、上記リードバッファから上記各プロセッサエレメントへのデータ転送の開始時に、所定のリセット値を上記リードバッファカウンタ回路に出力するリセット値設定回路をさらに備え、
上記リードバッファカウンタ回路は、上記リードバッファから上記各プロセッサエレメントへのデータ転送の開始時に、上記アドレス値を上記リセット値にリセットすることを特徴とする請求項１又は２記載のメモリコントローラ。
【請求項４】
上記リードバッファは、上記記憶装置からの所定のテーブルデータの所定の行の各列のデータを順次それぞれ所定のアドレスに格納し、
上記最大アドレス値は、上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定されたことを特徴とする請求項１乃至３のうちのいずれか１つに記載のメモリコントローラ。
【請求項５】
上記リードバッファコントローラは、
所定のオフセット値を出力するオフセット値設定回路と、
上記リードバッファカウンタ回路から出力されるアドレス値に上記オフセット値を加算し、当該加算結果のアドレス値を上記リードバッファと上記比較器とに出力する加算器とをさらに備え、
上記比較器は、上記リードバッファカウンタ回路から出力されるアドレス値に代えて、上記加算器からのアドレス値を上記最大アドレス値と比較することを特徴とする請求項１乃至３のうちのいずれか１つに記載のメモリコントローラ。
【請求項６】
上記リードバッファは、上記記憶装置からの所定のテーブルデータの所定の第１の行の各列のデータと、上記テーブルデータの所定の第２の行の各列のデータとを順次それぞれ所定のアドレスに格納し、
上記第１の行の各列のデータの上記各プロセッサエレメントへの転送時は、上記オフセット値は上記第１の行の第１の列のデータの格納アドレスに設定され、かつ上記最大アドレス値は上記第１の行の各列のデータのうち上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定され、
上記第２の行の各列のデータの上記各プロセッサエレメントへの転送時は、上記オフセット値は上記第２の行の第１の列のデータの格納アドレスに設定され、かつ上記最大アドレス値は上記第２の行の各列のデータのうち上記リードバッファに最後に格納されたデータの格納アドレスの次の上記リードバッファのアドレスに設定されたことを特徴とする請求項５記載のメモリコントローラ。
【請求項７】
上記テーブルデータは、ディザ処理のためのディザテーブルデータであることを特徴とする請求項４又は６記載のメモリコントローラ。
【請求項８】
上記複数のプロセッサエレメントと、
請求項１乃至７のうちのいずれか１つに記載のメモリコントローラとを備えたことを特徴とするＳＩＭＤ型プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction-stream Multiple Data-stream）プロセッサのためのメモリコントローラ及び当該メモリコントローラを備えたＳＩＭＤ型プロセッサに関する。
【背景技術】
【０００２】
近年、ディジタル複写機、プリンタ及びカメラなどの画像処理装置では、画素数の増加及び画像処理の多様化などにより画質の向上が図られている。このような画像処理装置では、複数の画素データに対して同一の処理を行うことが多いため、１つの演算命令により１つのデータを処理するＳＩＳＤ（Single Instruction-stream Single Data-stream）型のマイクロプロセッサより、１つの演算命令により複数のデータを並列処理するＳＩＭＤ型のマイクロプロセッサ（以下、ＳＩＭＤ型プロセッサという。）が用いられることが多い。
【０００３】
ＳＩＭＤ型プロセッサは、算術論理演算器（ＡＬＵ（Arithmetic Logic Unit））と複数の汎用レジスタとをそれぞれ備えた複数のプロセッサエレメントと、そのプロセッサエレメントを制御するグローバルプロセッサとを備えて構成されている。プロセッサエレメントの個数は画像データの大きさに応じて決定され、これらの複数のプロセッサエレメントを、単一のグローバルプロセッサが、同時に演算処理を行うように制御している。具体的には、ＳＩＭＤ型プロセッサにおいて、各プロセッサエレメントは、画像データのうちの１画素の画素データの画像処理を行う。１画素に対応するプロセッサエレメントが複数あるため、複数の画素に対応する画素データが並列に演算処理される。このように、複数の画素データを同時に処理することで、画像処理の効率を高めている。
【０００４】
ＳＩＭＤ型プロセッサによって実行される画像処理の中には、ディザ処理のようなテーブルデータを扱う処理がある。通常、ディザ処理のためのディザテーブルデータなどのテーブルデータは、ＳＩＭＤ型プロセッサの外部メモリにあらかじめ格納されている。ＳＩＭＤ型プロセッサの外部に設けられた従来技術に係るメモリコントローラは、外部メモリからテーブルデータをリードし、各プロセッサエレメントの汎用レジスタに転送する。一方、グローバルプロセッサは各プロセッサエレメントの演算用のレジスタに画素データを格納し、汎用レジスタに転送されたテーブルデータから演算用レジスタに格納された画素データを減算するように各プロセッサエレメントを制御し、これによりディザ処理を実行できる。
【０００５】
特許文献１及び２は、従来技術に係るメモリコントローラを開示している。また、特許文献３は、ディザマトリクスを格納する領域を削減できる従来技術に係る画像生成方法を開示している。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般に、従来技術に係るＳＩＭＤ型プロセッサは、メモリコントローラが外部メモリから読み出したテーブルデータを、１つの処理単位として処理される所定数（以下、ＳＩＭＤ数という。ＳＩＭＤ数はプロセッサエレメントの個数と等しい。）の画素データ単位又は１ライン分の画素データ単位に展開するように各プロセッサエレメントの汎用レジスタに格納するとき、プロセッサエレメントのシフト動作を利用したり、グローバルプロセッサから各汎用レジスタに同じデータを繰り返して転送したりしていた。この場合、各プロセッサエレメントへのテーブルデータの転送時間はＳＩＭＤ数に比例して増加し、転送中にはＳＩＭＤ型プロセッサでの演算が行えないという弊害が生じた。このため、ＳＩＭＤ型プロセッサの全体の処理時間を削減できなかった。
【０００７】
本発明の目的は以上の問題点を解決し、画像処理などの所定の処理に用いられるＳＩＭＤ型プロセッサ全体の処理時間を従来技術に比較して削減できるメモリコントローラと、当該メモリコントローラを備えたＳＩＭＤ型プロセッサとを提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係るメモリコントローラは、
記憶装置からのデータを順次それぞれ所定のアドレスに一時的に格納し、入力されるアドレス値のアドレスに格納されたデータを、ＳＩＭＤ型プロセッサの複数のプロセッサエレメントに転送するリードバッファと、
上記アドレス値を発生して上記リードバッファに出力するリードバッファコントローラとを備えたメモリコントローラにおいて、
上記リードバッファコントローラは、
上記リードバッファが上記各プロセッサエレメントに上記データを転送する毎に上記アドレス値をインクリメントして出力するリードバッファカウンタ回路と、
所定の最大アドレス値を格納するループレジスタと、
上記リードバッファカウンタ回路から出力されるアドレス値を上記最大アドレス値と比較し、上記アドレス値が上記最大アドレス値と一致したとき、上記リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生して上記リードバッファカウンタ回路に出力する比較器とを備えたことを特徴とする。
【発明の効果】
【０００９】
本発明に係るメモリコントローラによれば、リードバッファコントローラは、リードバッファが各プロセッサエレメントにデータを転送する毎にアドレス値をインクリメントして出力するリードバッファカウンタ回路と、所定の最大アドレス値を格納するループレジスタと、リードバッファカウンタ回路から出力されるアドレス値を最大アドレス値と比較し、アドレス値が最大アドレス値と一致したとき、リードバッファカウンタ回路をリセットするためのカウンタリセット信号を発生してリードバッファカウンタ回路に出力する比較器とを備える。従って、リードバッファに格納されたデータをプロセッサエレメントに繰り返して転送でき、当該転送中にプロセッサエレメントで他の演算処理を実行できるので、画像処理などの所定の処理に用いられるＳＩＭＤ型プロセッサ全体の処理時間を従来技術に比較して削減できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係るメモリコントローラ４と、ＳＩＭＤ型プロセッサ１と、ＤＤＲメモリ３とを示すブロック図である。
【図２】図１の各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３をより詳細に示すブロック図である。
【図３】図１のメモリコントローラ４のリードバッファコントローラ１０をより詳細に示すブロック図である。
【図４】図１のＤＤＲメモリ３に格納される４×４のマトリクスサイズを有するディザテーブルデータの構成を示すブロック図である。
【図５】（ａ）は、図１のＤＤＲメモリ３に格納されるディザテーブルデータの一例を示すブロック図であり、（ｂ）は、図１のＳＩＭＤ型プロセッサ１により処理される画像データの一例を示すブロック図であり、（ｃ）は、図５（ｂ）の画像データに対して図５（ａ）のディザテーブルデータを用いてディザ処理を行ったときの処理結果の２値化データを示すブロック図であり、（ｄ）は、図５（ｃ）の２値化データに対応する印刷イメージを示すブロック図である。
【図６】図１のＳＩＭＤ型プロセッサ１により図４のディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データを示すブロック図である。
【図７】本発明の第２の実施形態に係るメモリコントローラ４Ａの構成を示すブロック図である。
【図８】本発明の第３の実施形態に係るメモリコントローラ４Ｂの構成を示すブロック図である。
【図９】本発明の第４の実施形態に係るメモリコントローラ４Ｃの構成を示すブロック図である。
【図１０】図９のＤＤＲメモリ３に格納される８×８のマトリクスサイズを有するディザテーブルデータと、当該ディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データとを示すブロック図である。
【図１１】図１０のＤＤＲメモリ３に格納されているディザテーブルデータと、図９のリードバッファＲＢ０〜ＲＢ３へのしきい値データの格納状態と、オフセット値Ｃ５８が０でありかつ最大アドレス値Ｃ５２Ａが８であるとき（１回目のリード転送時）に各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データと、オフセット値Ｃ５８が８でありかつ最大アドレス値Ｃ５２Ａが１６であるとき（２回目のリード転送時）に各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データとを示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００１２】
第１の実施形態．
図１は、本発明の第１の実施形態に係るメモリコントローラ４と、ＳＩＭＤ型プロセッサ１と、ＤＤＲ（Double-Data-Rate）メモリ３とを示すブロック図である。また、図２は、図１の各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３をより詳細に示すブロック図であり、図３は、図１のメモリコントローラ４のリードバッファコントローラ１０をより詳細に示すブロック図である。図１のＳＩＭＤ型プロセッサ１は、ディジタル複写機、高性能プリンタ又はカメラなどの画像処理装置において、ディザ処理などの画像処理を行うためのマイクロプロセッサである。
【００１３】
図１において、ＳＩＭＤ型プロセッサ１は、複数（Ｎ＋１）個のプロセッサエレメントＰＥ０，ＰＥ１，…，ＰＥＮ（Ｎは正の整数である。）と、グローバルプロセッサ２とを備えて構成される。また、各プロセッサエレメントＰＥｎ（ｎ＝０，１，…，Ｎ）は、複数（Ｊ＋１）個の汎用レジスタ（以下、レジスタという。）Ｒ０，Ｒ１，…，ＲＪ（Ｊは３以上の整数である。）と、算術論理演算器９１と、算術論理演算器９１による演算結果を示すデータを格納するアキュムレータ９２とを備えて構成される。なお、各プロセッサエレメントＰＥｎ（ｎ＝０，１，…，Ｎ）には、固有のアドレスが割り当てられている。また、本実施形態において、各レジスタＲ０〜ＲＪのサイズは８ビットである。
【００１４】
図３を参照して詳細後述するように、本実施形態に係るメモリコントローラ４は、ＤＤＲメモリ３からのデータを順次それぞれ所定のアドレスに一時的に格納し、入力されるアドレス値のアドレスに格納されたデータを、ＳＩＭＤ型プロセッサ１の複数のプロセッサエレメントＰＥ０〜ＰＥＮに転送するリードバッファＲＢ０と、アドレス値Ｃ５１を発生してリードバッファＲＢ０に出力するリードバッファコントローラ１０とを備えて構成される。
【００１５】
ここで、リードバッファコントローラ１０は、図３を参照して詳細後述するように、
（ａ）リードバッファＲＢ０が各プロセッサエレメントＰＥ０〜ＰＥＮにデータを転送する毎にアドレス値Ｃ５１をインクリメントして出力するリードバッファカウンタ回路５１と、
（ｂ）所定の最大アドレス値Ｃ５２を格納するループレジスタと、
（ｃ）リードバッファカウンタ回路５１から出力されるアドレス値Ｃ５１を最大アドレス値Ｃ５２と比較し、アドレス値Ｃ５１が最大アドレス値Ｃ５２と一致したとき、リードバッファカウンタ回路５１をリセットするためのカウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力する比較器５３とを備えたことを特徴としている。
【００１６】
さらに、リードバッファＲＢ０は、ＤＤＲメモリ３からのディザテーブルデータの第１行の各列のしきい値データを順次それぞれ所定のアドレスに格納し、最大アドレス値Ｃ５２は、リードバッファＲＢ０に最後に格納されたしきい値データの格納アドレスの次のリードバッファＲＢ０のアドレスに設定されたことを特徴としている。
【００１７】
図１において、グローバルプロセッサ２は、当該グローバルプロセッサ２内のプログラムメモリに格納されたプログラムを実行することにより、各プロセッサエレメントＰＥ０〜ＰＥＮ及びＳＩＭＤ型プロセッサ１の外部に設けられたメモリコントローラ４を制御する。ここで、グローバルプロセッサ２は、制御対象のプロセッサエレメントＰＥｎ（ｎ＝０，１，…，Ｎ）のアドレスを指定して、各プロセッサエレメントＰＥｎを制御する。また、グローバルプロセッサ２は、各プロセッサエレメントＰＥｎ（ｎ＝０，１，…，Ｎ）を、レジスタＲ０〜ＲＪのうちの所定の１つのレジスタからデータをリードして算術論理演算器９１に出力し、算術論理演算器９１による演算結果をアキュムレータ９２及びレジスタＲ０〜ＲＪのうちの所定の１つのレジスタに出力するように制御する。グローバルプロセッサ２は、プロセッサエレメントＰＥ０〜ＰＥＮを同時に同一の処理を並列に行うように制御し、これにより、複数のデータを並列処理する。
【００１８】
図２に示すように、各プロセッサエレメントＰＥ０〜ＰＥＮの４個のレジスタＲｊ，Ｒｊ＋１，Ｒｊ＋２，Ｒｊ＋３（ｊは、０以上Ｊ−３以下の所定の整数である。）は、メモリコントローラ４を介して、ＤＤＲ、ＤＤＲ２又はＤＤＲ３などの大容量メモリであるＤＤＲメモリ３に接続されている。ＤＤＲメモリ３は、電源のオン時などの所定のタイミングにおいて、処理対象の画像データの種類（文字、写真、又は文字及び写真）及び画像処理の内容（ディザ処理、ぼかし処理、又はシャープネス処理など）毎に、画像処理のためのテーブルデータを格納する。
【００１９】
ここで、ディザ処理及びディザ処理のためのディザテーブルデータを説明する。ディザ処理は、Ｐ階調の画像データをＱ階調（Ｑ＜Ｐ）の画像データに変換する階調処理である。例えば、シアン、マゼンタ、イエロー及びブラックの各８ビットの画素データを含む多値の画像データ（１画素当たりのデータサイズは３２ビットである。）を、シアン、マゼンタ、イエロー及びブラックの各２ビット、４ビット又は１６ビットの画素データを含む２値、４値又は１６値の印刷用の画像データ（１画素当たりのデータサイズは４ビット、８ビット又は１６ビットである。）に変換するとき、ディザ処理が行われる。図４は、図１のＤＤＲメモリ３に格納される４×４のマトリクスサイズを有するディザテーブルデータの構成を示すブロック図である。図４の横方向は画像データの主走査方向に対応しており、縦方向は画像データの副走査方向に対応している。図４のディザテーブルデータの各セルＡ〜Ｐには各画素位置で用いられるしきい値データが格納される。
【００２０】
図５（ａ）は、図１のＤＤＲメモリ３に格納されるディザテーブルデータの一例を示すブロック図である。図５（ａ）において、ディザテーブルデータの各セルには、２５６階調の（すなわち、８ビットの）画素データを２値化するためのしきい値データが格納されている。また、図５（ｂ）は、図１のＳＩＭＤ型プロセッサ１により処理される画像データの一例を示すブロック図であり、処理対象の画像データは、所定のカラーの８ビットの画素データを含む。図５（ｂ）の画像データを図５（ａ）のディザテーブルデータを用いて２値化する場合、各画素位置において、画素データ値はしきい値データ値と比較される。そして、画素データ値がしきい値データ以上であるときは、当該画素位置における２値化結果は「１」となり、画素データ値がしきい値データ未満であるときは、当該画素位置における２値化結果は「０」となる。このため、図５（ｂ）の画像データを図５（ａ）のディザテーブルデータを用いて２値化すると、図５（ｃ）の２値化結果データが得られる。そして、２値化結果が「１」の画素位置にインクを置かず白色に設定し、２値化結果が「０」の画素位置にインクをおいて黒色に設定することにより、例えば図５（ｄ）のような、白黒の印刷イメージを得ることができる。
【００２１】
図６は、図１のＳＩＭＤ型プロセッサ１により図４のディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データを示すブロック図である。グローバルプロセッサ２は、画像データに対して図４のディザテーブルデータを用いてディザ処理を行うとき、始めに、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊにディザテーブルデータ第１行の各列のセルＡ，Ｂ，Ｃ，Ｄの各しきい値データを繰り返して格納し、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋１にディザテーブルデータの第２行の各列のセルＥ，Ｆ，Ｇ，Ｈの各しきい値データを繰り返して格納し、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋２にディザテーブルデータの第３行の各列のセルＩ，Ｊ，Ｋ，Ｌの各しきい値データを繰り返して格納し、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋３にディザテーブルデータの第４行の各列のセルＭ，Ｎ，Ｏ，Ｐの各しきい値データを繰り返して格納するように、メモリコントローラ４を制御する。なお、グローバルプロセッサ２によるメモリコントローラ４の制御方法は後述する。
【００２２】
さらに、グローバルプロセッサ２は、ディザ処理において、処理対象の１ライン目の画像データを各プロセッサエレメントＰＥ０〜ＰＥＮのアキュムレータ９２に格納する。そして、グローバルプロセッサ２は、アキュムレータ９２に格納された画素データ値から、レジスタＲｊに格納されたしきい値データ値を減算し、減算結果が正であれば１を出力し、減算結果が負であれば０を出力するように各算術論理演算器９１を制御する。これにより、最大でプロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）と同一の数の画素データに対してディザ処理を行う。以下同様に、レジスタＲｊ＋１，Ｒｊ＋２，Ｒｊ＋３に格納されたしきい値データを用いて２ライン目、３ライン目及び４ライン目の画像データに対してディザ処理を行う。また、５ライン目以降の画像データを処理するときは、Ｒｊ，Ｒｊ＋１，Ｒｊ＋２，Ｒｊ＋３に格納されたしきい値データを繰り返して使用する。
【００２３】
図２に戻り参照すると、メモリコントローラ４は、ＳＩＭＤ型プロセッサ１とＤＤＲメモリ３との間のインターフェース処理を行うための回路であって、ＤＤＲアドレスコントローラ４１と、リードバッファＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３と、ライトバッファＷＢ０，ＷＢ１，ＷＢ２，ＷＢ３と、リードバッファＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３をそれぞれ制御するリードバッファコントローラ１０，１１，１２，１３と、ライトバッファＷＢ０，ＷＢ１，ＷＢ２，ＷＢ３を制御するライトバッファコントローラ４２とを備えて構成される。
【００２４】
図２において、リードバッファＲＢ０及びライトバッファＷＢ０は、８ビットのデータバスＤＰ０を介してプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊに接続され、８ビットのデータバスＤＭ０を介してＤＤＲメモリ３に接続されている。また、リードバッファＲＢ１及びライトバッファＷＢ１は、８ビットのデータバスＤＰ１を介してプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋１に接続され、８ビットのデータバスＤＭ１を介してＤＤＲメモリ３に接続されている。さらに、リードバッファＲＢ２及びライトバッファＷＢ２は、８ビットのデータバスＤＰ２を介してプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋２に接続され、８ビットのデータバスＤＭ２を介してＤＤＲメモリ３に接続されている。またさらに、リードバッファＲＢ３及びライトバッファＷＢ３は、８ビットのデータバスＤＰ３を介してプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ＋３に接続され、８ビットのデータバスＤＭ３を介してＤＤＲメモリ３に接続されている。
【００２５】
図２において、グローバルプロセッサ２は、ＳＩＭＤ型プロセッサ１からＤＤＲメモリ３へのデータ転送（以下、ライト転送という。）時に、ＤＤＲメモリ３へのライト時のライト開始のアドレスとデータ転送数（バースト数）とを含むライト転送開始指令を、ＤＤＲアドレスコントローラ４１及びライトバッファコントローラ４２に出力する。これに応答して、ＤＤＲアドレスコントローラ４１は、ＤＤＲメモリ３のライト対象のアドレスを、ライト開始のアドレスから、当該アドレスにデータ転送数を加算したアドレスまで、１ずつインクリメントする。また、ライトバッファコントローラ４２は、ライト転送開始指令に応答して、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３からデータをリードしてライトバッファＷＢ０〜ＷＢ３に転送し、転送されたデータをバッファリング（一時的に格納）した後に、ＤＤＲメモリ３のＤＤＲアドレスコントローラ４１により指定されたアドレスに転送してライトするように、ライトバッファＷＢ０〜ＷＢ３を制御する。従って、１回のライト転送により、ＳＩＭＤ型プロセッサ１からＤＤＲメモリ３に４×（Ｎ＋１）個のデータが転送される。本実施形態では、レジスタＲｊ〜Ｒｊ＋３のサイズはそれぞれ８ビットであるので、ＳＩＭＤ型プロセッサ１とＤＤＲメモリ３との間のデータ転送幅は３２ビットである。なお、グローバルプロセッサ２は、プロセッサエレメントＰＥ０〜ＰＥＮのうちのライト転送の対象となるプロセッサエレメントを示す制御信号をプロセッサエレメントＰＥ０〜ＰＥＮに出力することにより、ライト転送の対象となるプロセッサエレメントを順次指定する。
【００２６】
次に、図３を参照してリードバッファコントローラ１０の構成及び動作を説明する。なお、リードバッファコントローラ１１〜１３はリードバッファコントローラ１０と同様に構成される。図３において、リードバッファコントローラ１０は、リードバッファカウンタ回路５１と、ループレジスタ５２と、比較器５３とを備えて構成される。ここで、ループレジスタ５２は、所定の最大アドレス値Ｃ５２をあらかじめ格納し、当該最大アドレス値Ｃ５２を比較器５３に出力する。また、リードバッファカウンタ回路５１は、グローバルプロセッサ２から、ＳＩＭＤ型プロセッサ１へのデータ転送を指示するリード転送開始指令を受信すると、アドレス値Ｃ５１を０にリセットし、リードバッファＲＢ０がＳＩＭＤ型プロセッサ１に１つのデータを転送する毎に、アドレス値Ｃ５１を１だけインクリメントしてリードバッファＲＢ０と比較器５３とに出力する。
【００２７】
さらに、図３において、比較器５３は、アドレス値Ｃ５１を最大アドレス値Ｃ５２と比較し、アドレス値Ｃ５１が最大アドレス値Ｃ５２と一致したときにカウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力する。リードバッファカウンタ回路５１は、カウンタリセット信号Ｓ５３に応答してアドレス値Ｃ５１を０にリセットする。また、リードバッファＲＢ０は、アドレス値Ｃ５１のアドレスに格納されたしきい値データを、所定の転送タイミングにおいてデータバスＤＰ０に出力する。
【００２８】
次に、ＳＩＭＤ型プロセッサ１によるディザ処理時の、ＤＤＲメモリ３からＳＩＭＤ型プロセッサ１への図６のディザテーブルデータの転送（以下、リード転送という。）方法を説明する。図２において、グローバルプロセッサ２は、ディザ処理の開始時に、ＤＤＲメモリ３に格納されたディザテーブルデータの第１行の各列のセルＡ，Ｂ，Ｃ，Ｄの各しきい値データをリードバッファＲＢ０のアドレス０，１，２，３に順次それぞれ格納し、ディザテーブルデータの第２行の各列のセルＥ，Ｆ，Ｇ，Ｈの各しきい値データをリードバッファＲＢ１のアドレス０，１，２，３に順次それぞれ格納し、ディザテーブルデータの第３行の各列のセルＩ，Ｊ，Ｋ，Ｌの各しきい値データをリードバッファＲＢ２アドレス０，１，２，３に順次それぞれ格納し、ディザテーブルデータの第３行の各列のセルＭ，Ｎ，Ｏ，Ｐの各しきい値データを順次それぞれリードバッファＲＢ３のアドレス０，１，２，３に格納するように、メモリコントローラ４を制御する。また、図３において、最大アドレス値Ｃ５２は、各リードバッファＲＢ０〜ＲＢ３に最後に格納されたしきい値データの格納アドレス（３である。）の次のアドレスである４に設定される。
【００２９】
次に、グローバルプロセッサ２は、リードバッファコントローラ１０〜１３の各リードバッファカウンタ回路５１にリード転送開始指令を出力する。図３において、リードバッファコントローラ１０のリードバッファカウンタ回路５１は、グローバルプロセッサ２からのリード転送開始指令に応答して、アドレス値Ｃ５１を０にリセットしてリードバッファＲＢ０及び比較器５３に出力する。そして、リードバッファＲＢ０は、第１の転送タイミングにおいて、アドレス０に格納されたセルＡのしきい値データをデータバスＤＰ０に出力する。グローバルプロセッサ２は、データバスＤＰ０に出力されたセルＡのしきい値データを、プロセッサエレメントＰＥ０のレジスタＲｊに格納するように制御する。さらに、リードバッファカウンタ回路５１はアドレス値Ｃ５１を１だけインクリメントする。
【００３０】
次に、リードバッファカウンタ回路５１はアドレス値Ｃ５１（１である。）をリードバッファＲＢ０及び比較器５３に出力する。そして、リードバッファＲＢ０は、第２の転送タイミングにおいて、アドレス１に格納されたセルＢのしきい値データをデータバスＤＰ０に出力する。グローバルプロセッサ２は、データバスＤＰ０に出力されたセルＢのしきい値データを、プロセッサエレメントＰＥ１のレジスタＲｊに格納するように制御する。さらに、リードバッファカウンタ回路５１はアドレス値Ｃ５１を１だけインクリメントする。
【００３１】
次に、リードバッファカウンタ回路５１はアドレス値Ｃ５１（２である。）をリードバッファＲＢ０及び比較器５３に出力する。そして、リードバッファＲＢ０は、第３の転送タイミングにおいて、アドレス２に格納されたセルＣのしきい値データをデータバスＤＰ０に出力する。グローバルプロセッサ２は、データバスＤＰ０に出力されたセルＣのしきい値データを、プロセッサエレメントＰＥ２のレジスタＲｊに格納するように制御する。さらに、リードバッファカウンタ回路５１はアドレス値Ｃ５１を１だけインクリメントする。
【００３２】
次に、リードバッファカウンタ回路５１はアドレス値Ｃ５１（３である。）をリードバッファＲＢ０及び比較器５３に出力する。そして、リードバッファＲＢ０は、第４の転送タイミングにおいて、アドレス３に格納されたセルＤのしきい値データをデータバスＤＰ０に出力する。グローバルプロセッサ２は、データバスＤＰ０に出力されたセルＤのしきい値データを、プロセッサエレメントＰＥ３のレジスタＲｊに格納するように制御する。さらに、リードバッファカウンタ回路５１はアドレス値Ｃ５１を１だけインクリメントする。この結果、アドレス値Ｃ５１は４になり最大アドレス値Ｃ５２と一致するので、比較器５３はカウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力する。これに応答して、リードバッファカウンタ回路５１はアドレス値Ｃ５１をゼロにリセットする。
【００３３】
次に、リードバッファカウンタ回路５１はアドレス値Ｃ５１（０である。）をリードバッファＲＢ０及び比較器５３に出力する。従って、リードバッファＲＢ０は、第５の転送タイミングにおいて、アドレス０に格納されたセルＡのしきい値データをデータバスＤＰ０に出力する。以下同様に、リードバッファＲＢ０のアドレス０，１，２，３にそれぞれ格納されたセルＡ，Ｂ，Ｃ，Ｄのしきい値データは、セルＡ，Ｂ，Ｃ，Ｄ，Ａ，Ｂ，Ｃ，…のように、繰り返してデータバスＤＰ０に出力され、ＳＩＭＤ型プロセッサ１のプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊに格納される（図６参照。）。
【００３４】
図２において、リードバッファコントローラ１１は、リードバッファコントローラ１０と同様に、ディザテーブルデータのセルＥ，Ｆ，Ｇ，Ｈのしきい値データをプロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ＋１に繰り返して転送する。また、リードバッファコントローラ１２は、リードバッファコントローラ１０と同様に、ディザテーブルデータのセルＩ，Ｊ，Ｋ，Ｌのしきい値データをプロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ＋２に繰り返して転送する。さらに、リードバッファコントローラ１３は、リードバッファコントローラ１０と同様に、ディザテーブルデータのセルＭ，Ｎ，Ｏ，Ｐのしきい値データをプロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ＋３に繰り返して転送する。最後に、グローバルプロセッサ２は、プロセッサエレメントＰＥＮのレジスタＲｊ〜Ｒｊ＋３にしきい値データを格納すると、ＳＩＭＤ型プロセッサ１へのリード転送を終了するようにメモリコントローラ４を制御する。
【００３５】
以上説明したように、本実施形態によれば、ＤＤＲメモリ３に格納されたディザテーブルデータの１行目のセルＡ〜Ｄの４個しきい値データをリードバッファＲＢ０に転送する。そして、リードバッファＲＢ０に格納された４個のしきい値データを繰り返してデータバスＤＰ０を介してプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊに出力する。このとき、プロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）が３５２である場合、３５２をディザマトリクスの列数４で割った剰余はゼロであるので、セルＤのしきい値データが、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１に最後に転送される。また、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１に転送されたしきい値データのセット数は８８である。このため、ディザテーブルデータの各セルＡ〜Ｐのしきい値データは、図６に示すように、各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ，Ｒｊ＋１，Ｒｊ＋２，Ｒｊ＋３に繰り返して格納される。
【００３６】
以上説明したように、本実施形態によれば、メモリコントローラ４からＳＩＭＤ型プロセッサ１への１回のリード転送により、４×４のマトリクスサイズを有するディザテーブルデータを、メモリコントローラ４からＳＩＭＤ型プロセッサ１に転送できる。
【００３７】
なお、リードバッファＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３のサイズは、ＤＤＲメモリ３に格納されたディザテーブルデータの列数と同一の個数のしきい値データを格納できるサイズ（本実施形態の場合、８ビット×４である。）以上であればよい。また、アドレス値Ｃ５１のビット数はリードバッファＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３のサイズに依存する。例えば、リードバッファＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３のサイズが８ビット×３５２の場合、アドレス値Ｃ５１のビット数は９ビット（２９＝５１２＞３５２）以上であればよい。さらに、ループレジスタ５２のビット数はリードバッファカウンタ回路５１のビット数と同一、又は最大アドレス値Ｃ５２を格納できるビット数であればよい。
【００３８】
なお、リードバッファＲＢ０〜ＲＢ３からＳＩＭＤ型プロセッサ１にしきい値データが繰り返して転送されている間は、ＤＤＲメモリ３から各リードバッファＲＢ０〜ＲＢ３のアドレス４以降に、ディザテーブルデータ以外のデータが転送される。しかしながら、各リードバッファＲＢ０〜ＲＢ３のアドレス０〜３のみからＳＩＭＤ型プロセッサ１へのデータ転送が行われるので、問題は生じない。
【００３９】
以上説明したように、本実施形態によれば、プロセッサエレメントＰＥ０〜ＰＥＮの各算術論理演算器９１がレジスタＲ０〜ＲＪのうちレジスタＲｊ〜Ｒｊ＋３以外のレジスタに格納されたデータを用いて演算を行っているときに、リードバッファＲＢ０〜ＲＢ３から各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３にしきい値データを並行して転送できる。従って、従来技術に比較してＳＩＭＤ型プロセッサ１全体の処理時間を削減できる。
【００４０】
また、一般に、従来技術に係るメモリコントローラはリードバッファカウンタ回路５１を備えているので、従来技術に係るメモリコントローラにループレジスタ５２及び比較器５３を設けるだけで、本実施形態に係るメモリコントローラ４を実現できる。
【００４１】
第２の実施形態．
図７は、本発明の第２の実施形態に係るメモリコントローラ４Ａの構成を示すブロック図である。図７において、メモリコントローラ４Ａは、図３のメモリコントローラ４に比較して、ＤＤＲコントローラ４５をさらに備え、リードバッファコントローラ１０，１１，１２，１３に代えてリードバッファコントローラ１０Ａ，１１Ａ，１２Ａ，１３Ａを備えた点が異なる。なお、リードバッファコントローラ１１Ａ，１２Ａ，１３Ａはリードバッファコントローラ１０Ａと同様に構成されるので、図示及び説明を省略する。
【００４２】
図７において、リードバッファコントローラ１０Ａは、リードバッファカウンタ回路５１と、ループレジスタ５２と、比較器５３とを備えて構成される。ここで、リードバッファカウンタ回路５１は、図３のメモリコントローラ４のリードバッファカウンタ回路５１と同様に、グローバルプロセッサ２からリード転送開始指令を受信すると、アドレス値Ｃ５１を０にリセットし、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１に１つのデータが転送される毎に、アドレス値Ｃ５１を１だけインクリメントしてリードバッファＲＢ０と比較器５３とに出力する。また、ループレジスタ５２は、図３のメモリコントローラ４のループレジスタ５２と同様に、所定の最大アドレス値Ｃ５２をあらかじめ格納し、比較器５３に出力する。さらに、比較器５３は、アドレス値Ｃ５１を最大アドレス値Ｃ５２と比較し、アドレス値Ｃ５１が最大アドレス値Ｃ５２と一致したときにカウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力すると、ＤＤＲコントローラ４５とに出力する。
【００４３】
図７において、ＤＤＲコントローラ４５は、カウンタリセット信号Ｓ５３に応答して、ＤＤＲメモリ３からリードバッファＲＢ０へのデータ転送を停止させるためのストップ信号Ｓ４５を発生し、ＤＤＲメモリ３に出力する。これに応答して、ＤＤＲメモリ３はリードバッファＲＢ０へのデータ転送を停止する。
【００４４】
一般に、ＤＤＲメモリ３は所定のデータ群を連続して転送するバースト転送を行うので、ストップ信号Ｓ４５に応答してリアルタイムでは転送を停止できない（オーバーランする）。しかしながら、本実施形態によれば、ＤＤＲメモリ３がプロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）分の最大のデータ数のデータ転送を行っている場合であっても、リードバッファＲＢ０へのデータ転送を停止できるので、第１の実施形態に比較して、ＤＤＲメモリ３からメモリコントローラ４へのディザテーブルデータ以外のデータの余分な転送を大幅に削減できる。このため、メモリコントローラ４ＡからＤＤＲメモリ３へのアクセス回数が削減され、ＳＩＭＤ型プロセッサ１を搭載した装置の消費電流を削減できる。また、メモリコントローラ４ＡからＳＩＭＤ型プロセッサ１へのリード転送を行っているときに、ＳＩＭＤ型プロセッサ１以外の回路からＤＤＲメモリ３にアクセスできるので、第１の実施形態に比較して、ＳＩＭＤ型プロセッサ１を搭載した装置の処理速度を向上できる。
【００４５】
第３の実施形態．
上述した各実施形態では、プロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）がＤＤＲメモリ３に格納されたディザテーブルデータの列数で割り切れる場合のリード転送を説明した。しかしながら、１ライン分の画像データに含まれる画素データの数がプロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）よりも多く、かつ個数（Ｎ＋１）がディザテーブルデータの列数で割り切れないときは、以下の問題が生じる。
【００４６】
例えば、１ライン分の画像データに含まれる画素データの数が７００個であり、プロセッサエレメントＰＥ０〜ＰＥＮの個数が３５０個であり、ディザテーブルデータの列数が４であるとき、１ライン分の画像データの前半の３５０個の画素データに対してディザ処理を行うときは、プロセッサエレメントＰＥ０〜ＰＥ３４９の各レジスタＲｊに、ディザテーブルデータのセルＡ，Ｂ，Ｃ，Ｄ，Ａ，Ｂ…，Ａ，Ｂのようにしきい値データが格納される。次に、１ライン分の画像データの後半の３５０個の画素データに対してディザ処理を行うときは、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲｊに、ディザテーブルデータのセルＣ，Ｄ，Ａ，Ｂ，Ｃ，Ｄ，…のしきい値データを格納する必要がある。しかしながら、上述した実施形態の場合、メモリコントローラ４及び４ＡからＳＩＭＤ型プロセッサ１へのリード転送開始時のリードバッファＲＢ０〜ＲＢ３のアドレスは０であるので、プロセッサエレメントＰＥ０のレジスタＲｊには、ディザテーブルデータのセルＡのデータし格納できない。このため、１ライン分の画像データの後半の３５０個の画素データに対してディザ処理を行えないという問題がある。本実施形態はこの問題を解決することを目的とする。
【００４７】
図８は、本発明の第３の実施形態に係るメモリコントローラ４Ｂの構成を示すブロック図である。本実施形態に係るメモリコントローラ４Ｂは、図３のメモリコントローラ４に比較して、リードバッファコントローラ１０，１１，１２，１３に代えてリードバッファコントローラ１０Ｂ，１１Ｂ，１２Ｂ，１３Ｂを備えた点が異なる。なお、リードバッファコントローラ１１Ｂ，１２Ｂ，１３Ｂはリードバッファコントローラ１０Ｂと同様に構成されるので、図示及び説明を省略する。
【００４８】
図８において、リードバッファコントローラ１０Ｂは、リードバッファコントローラ１０に比較して、リセット値レジスタ５４及びマルチプレクサ５５を備えたリセット値設定回路５６をさらに備えたことを特徴とする。図８において、リセット値レジスタ５４は、リセット値０，１，２，３をあらかじめ格納し、マルチプレクサ５５に出力する。また、グローバルプロセッサ２は、メモリコントローラ４ＢからＳＩＭＤ型プロセッサ１へのリード転送の開始時に、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１へのデータ転送を指示しかつリセット値を指定するリード転送開始指令をマルチプレクサ５５に出力する。これに応答して、マルチプレクサ５５は、リセット値レジスタ５４からのリセット値０〜３のうち、リード転送開始指令に含まれるリセット値をリセット値Ｃ５５としてリードバッファカウンタ回路５１に出力する。
【００４９】
また、図８において、リードバッファカウンタ回路５１は、メモリコントローラ４ＢからＳＩＭＤ型プロセッサ１へのリード転送の開始時に、アドレス値Ｃ５１をマルチプレクサ５５からのリセット値Ｃ５５にリセットする。従って、本実施形態によれば、グローバルプロセッサ２は、メモリコントローラ４ＢからＳＩＭＤ型プロセッサ１へのリード転送開始時に、リードバッファカウンタ回路５１のアドレス値Ｃ５１を所望の値にリセットできる。このため、リード転送開始時に、リードバッファカウンタ回路５１のアドレス値Ｃ５１が例えば２にリセットされると、リードバッファＲＢ０のアドレス２に格納されたディザテーブルデータのセルＣのしきい値データから、セルＤ，Ａ，Ｂ，Ｃ，Ｄ，Ａ…のしきい値データが順次繰り返して転送される。このため、上述した問題を解決できる。
【００５０】
一般に、ＳＩＭＤ型プロセッサ１のプロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）は、ディザテーブルデータの列数で割り切れることが多い。しかしながら、ディザテーブルデータのマトリクスサイズが大きくなるほど（例えば、６４×６４など。）、ＳＩＭＤ型プロセッサ１のプロセッサエレメントＰＥ０〜ＰＥＮの個数（Ｎ＋１）がディザテーブルデータの列数で割り切れない可能性が高くなり、このような場合、本実施形態に係るメモリコントローラ４Ｂは有効である。
【００５１】
なお、本実施形態においてリセット値設定回路５６は図８に示した構成を有したが、本発明はこれに限られず、リードバッファコントローラ５１に対して任意のリセット値Ｃ５５を出力する構成を有していればよい。例えば、グローバルプロセッサ２を、リード転送終了時のリードバッファカウンタ回路５１のアドレス値Ｃ５１をリセット値トレジスタに転送するようにリードバッファコントローラ５１を制御するように構成し、リセット値設定回路を、リード転送開始時に、リセット値トレジスタに格納されたリセット値をリセット値Ｃ５５としてリードバッファカウンタ回路５１に出力するように構成してもよい。また、ユーザがプログラムでリセット値レジスタに所望のリセット値を設定し、リセット値設定回路を、ユーザがプログラムで設定可能なリセット値を格納するオフセットレジスタを備えるように構成してもよい。
【００５２】
また、第２の実施形態に係るメモリコントローラ４Ａと同様に、カウンタリセット信号Ｓ５３に基づいてストップ信号を発生してＤＤＲメモリ３に出力してもよい。
【００５３】
第４の実施形態．
上述した各実施形態において、ＳＩＭＤ型プロセッサ１とメモリコントローラ４，４Ａ，４Ｂとは、４本のデータバスＤＰ０〜ＤＰ３を介して接続された。このため、ディザテーブルデータの行数が４であるときは、メモリコントローラ４，４Ａ，４ＢからＳＩＭＤ型プロセッサ１への１回のリード転送で、ディザテーブルデータの全てのセルＡ〜Ｐのしきい値データを、図６に示すようにプロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納できた。
【００５４】
上述した各実施形態において、例えば８×８のマトリクスサイズを有するディザテーブルデータを用いる場合、メモリコントローラ４，４Ａ又は４Ｂと、ＳＩＭＤ型プロセッサ１はとの間で以下のようなリード転送が行われる。図１０は、図９のＤＤＲメモリ３に格納される８×８のマトリクスサイズを有するディザテーブルデータと、当該ディザテーブルデータを用いてディザ処理を行うとき、各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データとを示すブロック図である。なお、図１０のディザテーブルにおいて、各セル内の数字はセル番号を示す。
【００５５】
例えば、第１の実施形態の場合、図１０において、始めに、ＤＤＲメモリ３からメモリコントローラ４（図２参照。）のリードバッファＲＢ０にディザテーブルデータのセル１〜８のしきい値データを転送し、リードバッファＲＢ１にディザテーブルデータのセル９〜１６のしきい値データを転送し、リードバッファＲＢ２にディザテーブルデータのセル１７〜２４のしきい値データを転送し、リードバッファＲＢ３にディザテーブルデータのセル２５〜３２のしきい値データを転送する。そして、リードバッファＲＢ０〜ＲＢ３に格納された各しきい値データをプロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に繰り返して転送する。そして、グローバルプロセッサ２は、１ライン目〜４ライン目の画像データに対して、プロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に格納されたしきい値データを用いてディザ処理を行う。
【００５６】
次に、図１０において、ＤＤＲメモリ３からメモリコントローラ４のリードバッファＲＢ０にディザテーブルデータのセル３３〜４０のしきい値データを転送し、リードバッファＲＢ１にディザテーブルデータのセル４１〜４８のしきい値データを転送し、リードバッファＲＢ２にディザテーブルデータのセル４９〜５６のしきい値データを転送し、リードバッファＲＢ３にディザテーブルデータのセル５７〜６４のしきい値データを転送する。そして、リードバッファＲＢ０〜ＲＢ３に格納された各しきい値データをプロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に繰り返して転送する。そして、グローバルプロセッサ２は、５ライン目〜８ライン目の画像データに対して、プロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に格納されたしきい値データを用いてディザ処理を行う。従って、ＤＤＲメモリ３からメモリコントローラ４へのリード転送を２回行う必要があった。本実施形態は、上記各実施形態に比較して、ＤＤＲメモリ３からメモリコントローラ４への転送回数を削減することを目的とする。
【００５７】
図９は、本発明の第４の実施形態に係るメモリコントローラ４Ｃの構成を示すブロック図である。図９において、メモリコントローラ４Ｃは、図３のメモリコントローラ４に比較して、リードバッファコントローラ１０，１１，１２，１３に代えてリードバッファコントローラ１０Ｃ，１１Ｃ，１２Ｃ，１３Ｃを備えて構成される。ここで、リードバッファコントローラ１０Ｃは、リードバッファカウンタ回路５１と、ループレジスタ５２Ａと、比較器５３と、オフセット値レジスタ５７及びマルチプレクサ５８を備えたオフセット値設定回路６０と、加算器Ｃ５９とを備えて構成される。また、リードバッファコントローラ１１Ｃ，１２Ｃ，１３Ｃはリードバッファコントローラ１０Ｃと同様に構成されるので、図示及び説明を省略する。
【００５８】
また、図９において、グローバルプロセッサ２は、メモリコントローラ４ＣからＳＩＭＤ型プロセッサ１へのリード転送の開始時に、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１へのデータ転送を指示しかつオフセット値及び最大アドレス値を指定するリード転送開始指令をマルチプレクサ５８と、リードバッファカウンタ回路５１と、ループレジスタ５２Ａとに出力する。オフセット値レジスタ５７は、オフセット値０及び８をあらかじめ格納し、マルチプレクサ５８に出力する。また、マルチプレクサ５８は、オフセット値レジスタ５７からのオフセット値のうち、グローバルプロセッサ２からのリード転送開始指令に含まれるオフセット値を、オフセット値Ｃ５８として加算器５９に出力する。
【００５９】
図９において、ループレジスタ５２Ａは、グローバルプロセッサ２からのリード転送開始指令に含まれる最大アドレス値を格納し、最大アドレス値Ｃ５２Ａとして比較器５３に出力する。リードバッファカウンタ回路５１は、グローバルプロセッサ２からのリード転送開始指令に応答してアドレス値Ｃ５１を０にリセットし、リードバッファＲＢ０がＳＩＭＤ型プロセッサ１に１つのデータを転送する毎に、アドレス値Ｃ５１を１だけインクリメントして加算器５９に出力する。さらに、加算器５９は、リードバッファカウンタ回路５１からのアドレス値Ｃ５１にオフセット値レジスタ５７からのオフセット値Ｃ５８を加算し、加算結果の加算値をアドレス値Ｃ５９としてリードバッファＲＢ０と比較器５３とに出力する。これに応答して、リードバッファＲＢ０は、アドレス値Ｃ５９を有するアドレスに格納されたしきい値データをデータバスＤＰ０に出力する。また、比較器５３は、アドレス値Ｃ５９を最大アドレス値Ｃ５２Ａと比較し、アドレス値Ｃ５９が最大アドレス値Ｃ５２Ａと一致したとき、カウンタリセット信号Ｓ５３を発生してリードバッファカウンタ回路５１に出力する。これに応答して、リードバッファカウンタ回路５１はアドレス値Ｃ５１を０にリセットする。
【００６０】
次に、図１１を参照して、図１０の８×８のマトリクスサイズを有するディザテーブルテータを用いてディザ処理を行うときのグローバルプロセッサ２及びメモリコントローラ４Ｃの動作を説明する。図１１は、図１０のＤＤＲメモリ３に格納されているディザテーブルデータと、図９のリードバッファＲＢ０〜ＲＢ３へのしきい値データの格納状態と、オフセット値Ｃ５８が０でありかつ最大アドレス値Ｃ５２Ａが８であるとき（１回目のリード転送時）に各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データと、オフセット値Ｃ５８が８でありかつ最大アドレス値Ｃ５２Ａが１６であるとき（２回目のリード転送時）に各プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に格納されるしきい値データとを示すブロック図である。
【００６１】
まず始めに、図１１において、グローバルプロセッサ２は、ディザ処理の開始時に、ＤＤＲメモリ３に格納された８×８のディザテーブルデータの第１行の各列のセル１〜８及び第５行の各列のセル３３〜４０の各しきい値データをリードバッファＲＢ０のアドレス１〜１６に順次それぞれ格納し、ディザテーブルデータの第２行の各列のセル９〜１６及び第２行の各列のセル４１〜４８の各しきい値データをリードバッファＲＢ１のアドレス１〜１６に順次それぞれ格納し、ディザテーブルデータの第３行の各列のセル１７〜２４及び第７行の各列のセル４９〜５６の各しきい値データをリードバッファＲＢ２のアドレス１〜１６に順次それぞれ格納し、ディザテーブルデータの第４行の各列のセル２５〜３２及び第８行の各列のセル５７〜６４の各しきい値データをリードバッファＲＢ３のアドレス１〜１６に順次それぞれ格納するように、メモリコントローラ４Ｃを制御する。これにより、ＤＤＲメモリ３からメモリコントローラ４Ｃへの１回のデータ転送により、図１１に示すように、リードバッファＲＢ０〜ＲＢ３に全てのしきい値データが格納される。
【００６２】
次に、グローバルプロセッサ２は、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１へのデータ転送を指示しかつオフセット値０及び最大アドレス値８を指定するリード転送開始指令をマルチプレクサ５８と、リードバッファカウンタ回路５１と、ループレジスタ５２Ａとに出力する。これに応答して、マルチプレクサ５８はオフセット値Ｃ５８（０である。）を加算器５９に出力し、リードバッファカウンタ回路５１はアドレス値Ｃ５１を０にリセットし、ループレジスタ５２Ａは最大アドレス値Ｃ５２Ａ（８である。）を比較器５３に出力する。
【００６３】
従って、リードバッファカウンタ回路５１からのアドレス値Ｃ５１は０，１，２，…，７，８，０，１，…のように変化する。また、アドレス値Ｃ５１が８になるとアドレス値Ｃ５１は０にリセットされるので、メモリコントローラ４ＣからＳＩＭＤ型プロセッサ１へのデータ転送タイミングにおける加算器５９からのアドレス値Ｃ５９は、０，１，２，…，７，０，１，２，…のように変化する。これにより、リードバッファＲＢ０のアドレス０，１，２，…，７に格納されたセル０〜７の各しきい値データがデータバスＤＰ０に順次繰り返して出力される。グローバルプロセッサ２は、データバスＤＰ０に出力されたしきい値データを、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊに順次それぞれ格納するように制御する。
【００６４】
また、グローバルプロセッサ２は、リードバッファコントローラ１０Ｃと同様に構成されたリードバッファコントローラ１１Ｃ，１２Ｃ，１３Ｃを、リードバッファコントローラ１０Ｃと同様に制御する。これにより、図１１に示すように、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に、ディザテーブルデータのセル１〜３２のしきい値データが格納される。そして、グローバルプロセッサ２は、１ライン目〜４ライン目の画像データに対して、プロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に格納されたしきい値データを用いてディザ処理を行う。
【００６５】
次に、グローバルプロセッサ２は、グローバルプロセッサ２は、ＤＤＲメモリ３からメモリコントローラ４Ｃへのデータ転送を行うことなく、リードバッファＲＢ０からＳＩＭＤ型プロセッサ１へのデータ転送を指示しかつオフセット値８及び最大アドレス値１６を指定するリード転送開始指令をマルチプレクサ５８と、リードバッファカウンタ回路５１と、ループレジスタ５２Ａとに出力する。これに応答して、マルチプレクサ５８はオフセット値Ｃ５８（８である。）を加算器５９に出力し、リードバッファカウンタ回路５１はアドレス値Ｃ５１を０にリセットし、ループレジスタ５２Ａは最大アドレス値Ｃ５２Ａ（１６である。）を比較器５３に出力する。
【００６６】
従って、リードバッファカウンタ回路５１からのアドレス値Ｃ５１は０，１，２，…，７，８，０，１，…のように変化する。また、アドレス値Ｃ５１が１６になるとアドレス値Ｃ５１は０にリセットされるので、メモリコントローラ４ＣからＳＩＭＤ型プロセッサ１へのデータ転送タイミングにおける加算器５９からのアドレス値Ｃ５９は、８，９，１０…，１５，８，９，１０，…のように変化する。これにより、リードバッファＲＢ０のアドレス８，９，１０…，１５に格納されたセル３３〜４０の各しきい値データがデータバスＤＰ０に順次繰り返して出力される。グローバルプロセッサ２は、データバスＤＰ０に出力されたしきい値データを、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊに順次それぞれ格納するように制御する。
【００６７】
また、グローバルプロセッサ２は、リードバッファコントローラ１０Ｃと同様に構成されたリードバッファコントローラ１１Ｃ，１２Ｃ，１３Ｃを、リードバッファコントローラ１０Ｃと同様に制御する。これにより、図１１に示すように、プロセッサエレメントＰＥ０〜ＰＥＮのレジスタＲｊ〜Ｒｊ＋３に、ディザテーブルデータのセル３３〜６４のしきい値データが格納される。そして、グローバルプロセッサ２は、５ライン目〜８ライン目の画像データに対して、プロセッサエレメントＰＥ０〜ＰＥＮの各レジスタＲｊ〜Ｒｊ＋３に格納されたしきい値データを用いてディザ処理を行う。
【００６８】
以上説明したように、本実施形態によれば、ＳＩＭＤ型プロセッサ１とＤＤＲメモリ３との間のデータ転送幅が３２ビットであるとき、ＤＤＲメモリ３からメモリコントローラ４Ｃへのデータ転送を１回だけ行い、メモリコントローラ４ＣからＳＩＭＤ型プロセッサ１へのデータ転送を２回行うことにより、８×８のディザテーブルデータをＳＩＭＤ型プロセッサ１に転送できる。
【００６９】
なお、本実施形態において、８×８のマトリクスサイズを有するディザテーブルデータをＳＩＭＤ型プロセッサ１に転送したが、本発明はこれに限られない。Ｋ×Ｌのマトリクスサイズ（Ｋ及びＬは正の整数。）を有するディザテーブルデータをＳＩＭＤ型プロセッサ１に転送する場合、例えば、リードバッファＲＢ０はディザテーブルデータの所定の第１の行の各列のデータと、ディザテーブルデータの所定の第２の行の各列のデータとを順次それぞれ所定のアドレスに格納する。さらに、上述した第１の行の各列のデータの各プロセッサエレメントＰＥ０〜ＰＥＮへの転送時は、オフセット値Ｃ５８は第１の行の第１の列のデータの格納アドレスに設定され、かつ最大アドレス値Ｃ５２Ａは第１の行の各列のデータのうちリードバッファＲＢ０に最後に格納されたデータの格納アドレスの次のリードバッファＲＢ０のアドレスに設定される。また、上述した第２の行の各列のデータの各プロセッサエレメントＰＥ０〜ＰＥＮへの転送時は、オフセット値Ｃ５８は第２の行の第１の列のデータの格納アドレスに設定され、かつ最大アドレス値Ｃ５２Ａは第２の行の各列のデータのうちリードバッファＲＢ０に最後に格納されたデータの格納アドレスの次のリードバッファＲＢ０のアドレスに設定される。
【００７０】
また、本実施形態において、各リードバッファＲＢ０〜ＲＢ３にディザテーブルデータの２行分のしきい値データを転送したが、本発明はこれに限られず、３行以上の複数の行のしきい値データを転送してもよい。例えば、リードバッファＲＢ０にディザテーブルデータの複数の行のしきい値データを順次転送した場合、オフセット値Ｃ５８を、ＳＩＭＤ型プロセッサ１に繰り返して転送する行の第１の列のしきい値データの格納アドレスに設定し、最大アドレス値Ｃ５２Ａを、ＳＩＭＤ型プロセッサ１に繰り返して転送する行の各列のしきい値データのうちリードバッファＲＢ０に最後に格納されたデータの格納アドレスの次のリードバッファＲＢ０のアドレスに設定すればよい。
【００７１】
また、本実施形態において、リードバッファコントローラ１０Ｃは、第３の実施形態のリセット値設定回路５６をさらに備えてもよい。
【００７２】
さらに、上記各実施形態において、ディザテーブルデータのマトリクスサイズは４×４又は８×８であったが、本発明はこれに限られず、１６×１６又は３２×３２等の他のマトリクスサイズであってもよい。
【００７３】
またさらに、上記各実施形態において、メモリコントローラ４，４Ａ，４Ｂ，４Ｃは、ディザ処理に用いるディザテーブルデータをＳＩＭＤ型プロセッサ１に転送したが、本発明はこれに限られず、画像処理などの所定の処理に用いる所定のデータをＤＤＲメモリ３からＳＩＭＤ型プロセッサ１に転送してもよい。
【００７４】
また、上述した各実施形態において、各プロセッサエレメントＰＥ０〜ＰＥＮの各４個レジスタＲｊ〜Ｒｊ＋３をメモリコントローラ４，４Ａ，４Ｂ，４Ｃを介してＤＤＲメモリ３に接続したが、本発明はこれに限られず、各プロセッサエレメントＰＥ０〜ＰＥＮの少なくとも１個のレジスタをメモリコントローラ４，４Ａ，４Ｂ，４Ｃを介してＤＤＲメモリ３に接続すればよい。この場合、各プロセッサエレメントＰＥ０〜ＰＥＮにおいてＤＤＲメモリ３に接続されたレジスタの個数と同数のリードバッファコントローラ１０，１０Ａ，１０Ｂ又は１０Ｃを設ければよい。
【００７５】
さらに、上述した各実施形態において、メモリコントローラ４，４Ａ，４Ｂ，４ＣはＳＩＭＤ型プロセッサ１の外部に設けられたが、本発明はこれに限られず、メモリコントローラ４，４Ａ，４Ｂ，４ＣはＳＩＭＤ型プロセッサ１の内部に設けられてもよい。これにより、プロセッサエレメントＰＥ０〜ＰＥＮと、メモリコントローラ４，４Ａ，４Ｂ又は４Ｃとを備えたＳＩＭＤ型プロセッサを提供できる。
【符号の説明】
【００７６】
１…ＳＩＭＤ型プロセッサ、
２…グローバルプロセッサ、
３…ＤＤＲメモリ、
４，４Ａ，４Ｂ，４Ｃ…メモリコントローラ、
１０，１０Ａ，１０Ｂ，１０Ｃ，１１，１２，１３…リードバッファコントローラ、
５１…リードバッファカウンタ回路、
５２，５２Ａ…ループレジスタ、
５３…比較器、
５４…リセット値レジスタ、
５５…マルチプレクサ、
５６…リセット値設定回路、
５７…オフセット値レジスタ、
５８…マルチプレクサ、
５９…加算器、
６０…オフセット値レジスタ、
ＰＥ０〜ＰＥＮ…プロセッサエレメント、
ＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３…リードバッファ。
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】特開２０１０−１５４３８号公報。
【特許文献２】特表２００６−５０９２８４号公報。
【特許文献３】特開２００２−１２７５０３号公報。
【図１】
2013061851.tif 000003
【図２】
2013061851.tif 000004
【図３】
2013061851.tif 000005
【図４】
2013061851.tif 000006
【図５】
2013061851.tif 000007
【図６】
2013061851.tif 000008
【図７】
2013061851.tif 000009
【図８】
2013061851.tif 000010
【図９】
2013061851.tif 000011
【図１０】
2013061851.tif 000012
【図１１】
2013061851.tif 000013