(57)【特許請求の範囲】
【請求項１】
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、上記各プロセッサエレメントの上記複数のレジスタのうちの少なくとも一部は、上記複数のプロセッサエレメントのうちの任意個数のプロセッサエレメントにわたって連続してデータを格納し、
上記メモリコントローラは、
上記外部メモリにおける複数のアドレスを格納するアドレスメモリと、
上記アドレスメモリに格納された各アドレスからデータが連続して格納される長さをそれぞれ表す、上記複数のアドレスにそれぞれ対応する複数のバースト長を格納するバースト長メモリと、
上記複数のプロセッサエレメントのうちの第１のグループのプロセッサエレメントと、上記アドレスメモリ及び上記バースト長メモリに格納された第１のアドレス及び上記第１のアドレスに対応する第１のバースト長によって特定される上記外部メモリの領域との間で、第１のデータを転送し、上記第１のデータの転送後、上記複数のプロセッサエレメントのうちの第２のグループのプロセッサエレメントと、上記アドレスメモリ及び上記バースト長メモリに格納された第２のアドレス及び上記第２のアドレスに対応する第２のバースト長によって特定される上記外部メモリの領域との間で、第２のデータを転送するように制御する制御回路とを備えたことを特徴とするメモリコントローラ。
【請求項２】
上記メモリコントローラはさらに、上記アドレスメモリ及び上記バースト長メモリに格納された上記アドレス及び上記アドレスに対応するバースト長の組み合わせの個数を格納するバースト数レジスタを備えたことを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
上記ＳＩＭＤプロセッサは、上記外部メモリから上記ＳＩＭＤプロセッサに転送されたデータの上記外部メモリにおけるアドレス及び上記アドレスに対応するバースト長を格納する内蔵メモリをさらに備え、
上記メモリコントローラは、上記ＳＩＭＤプロセッサから上記外部メモリにデータを転送する際に、上記内蔵メモリに格納された上記アドレス及び上記アドレスに対応するバースト長を使用することを特徴とする請求項１又は２記載のメモリコントローラ。
【請求項４】
上記メモリコントローラは、
上記ＳＩＭＤプロセッサと上記外部メモリとの間で転送されたデータの合計バースト長を計数し、
上記合計バースト長によって表されるデータ長がすべてのプロセッサエレメントのレジスタによって格納可能なデータのデータ長に達したとき、データの転送を終了することを特徴とする請求項１〜３のうちのいずれか１つに記載のメモリコントローラ。
【請求項５】
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、
上記メモリコントローラは、
上記各プロセッサエレメントの上記複数のレジスタのうちの第１のグループのレジスタにデータを格納させ、同じプロセッサエレメントの上記複数のレジスタのうちの第２のグループのレジスタに、上記データの上記外部メモリにおけるアドレスを格納させ、
上記各プロセッサエレメントの上記第１のグループのレジスタと、同じプロセッサエレメントの上記第２のグループのレジスタに格納されたアドレスによって特定される上記外部メモリの領域との間で、データを転送するように制御する制御回路を備えたことを特徴とするメモリコントローラ。
【請求項６】
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、上記各プロセッサエレメントの上記複数のレジスタのうちの少なくとも一部は、データを格納するか、又は上記データの上記外部メモリにおけるアドレスを格納し、
上記メモリコントローラは、
上記複数のプロセッサエレメントのうちの第１のグループのプロセッサエレメントのレジスタに上記データを格納させ、上記複数のプロセッサエレメントのうちの第２のグループのプロセッサエレメントのレジスタに上記データの上記外部メモリにおけるアドレスを格納させ、
上記第１のグループのプロセッサエレメントのレジスタと、上記第１のグループのじプロセッサエレメントのレジスタに格納されたアドレスによって特定される上記外部メモリの領域との間で、データを転送するように制御する制御回路を備えたことを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラに関する。
【背景技術】
【０００２】
近年、デジタル複写機、プリンタやカメラなどの画像処理では、画素数の増加、画像処理の多様化などにより画質の向上が図られている。こういった画像処理には複数のデータに対して同じ処理をすることが多い。従って、画像処理の速度を向上させるために、１つの命令で１つのデータを処理するＳＩＳＤ（Single Instruction-stream Single Data-stream）方式のプロセッサより、１つの命令で複数のデータを同時処理するＳＩＭＤ（Single Instruction-stream Multiple Data-stream）方式のプロセッサが用いられることが多い。ＳＩＭＤプロセッサとして、例えば特許文献１〜３に記載の発明が存在する。
【０００３】
ＳＩＭＤプロセッサは、算術論理演算器（ＡＬＵ）と複数の汎用レジスタとをそれぞれ備えたプロセッサエレメント（ＰＥ）と呼ばれるブロックを複数有し、複数のプロセッサエレメントを備えたことにより複数のデータを一度に処理することができる。各プロセッサエレメントの各レジスタには、周辺ブロックとの間でデータの入出力を行うためのデータバスが接続されている。
【０００４】
デジタル画像処理では、画素データ量の増大に伴い、ＤＤＲ１、ＤＤＲ２、ＤＤＲ３などの大規模メモリを用いるケースが増えている。ＳＩＭＤプロセッサの場合、外部メモリとの間で１回で同時転送できるデータ量は、プロセッサエレメントの個数と、外部メモリのメモリコントローラに接続された各プロセッサエレメントのレジスタの個数とで決定される。
【０００５】
図１０は、従来技術のＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。ＳＩＭＤプロセッサ１０は、ｎ個のプロセッサエレメントＰＥ０〜ＰＥｎ−１と、ＳＩＭＤプロセッサ１０全体の動作を制御し、メモリコントローラ２０の動作を制御するグローバルプロセッサ１１とを備える。各プロセッサエレメントは、ｍ個の汎用レジスタＲ０〜Ｒｍ−１と、算術論理演算器（ＡＬＵ）１２と、演算結果を格納するアキュムレータ１３とを備え、レジスタＲ０〜Ｒｍ−１のうち、例えば４つのレジスタＲｊ〜Ｒｊ＋３が、メモリコントローラ２０を介して外部のＤＤＲメモリ３０に接続されている。各プロセッサエレメントのレジスタＲｊは第１のデータバスに接続され、同様に、各プロセッサエレメントのレジスタＲｊ＋１は第２のデータバスに接続され、各プロセッサエレメントのレジスタＲｊ＋２は第３のデータバスに接続され、各プロセッサエレメントのレジスタＲｊ＋３は第４のデータバスに接続され、これらのデータバスはさらに、メモリコントローラ２０に接続される。メモリコントローラ２０とＤＤＲメモリとの間もまた、これらのデータバスに対応する４つのデータバスで接続される。メモリコントローラ２０は通常、ＳＩＭＤプロセッサ１０からＤＤＲメモリ３０への書き込み用バッファメモリと、ＤＤＲメモリ３０からＳＩＭＤプロセッサ１０への読み出し用バッファメモリとを有する。データをＳＩＭＤプロセッサ１０からＤＤＲメモリ３０に書き込むとき、データはまず、各プロセッサエレメントのレジスタＲｊ〜Ｒｊ＋３からメモリコントローラ２０内の４つの書き込み用バッファメモリＷＢＵＦ０〜ＷＢＵＦ３にそれぞれ転送され、次いでＤＤＲメモリ３０に転送される（書き込み転送）。また、データをＤＤＲメモリ３０からＳＩＭＤプロセッサ１０に読み出すとき、データはまず、ＤＤＲメモリ３０からメモリコントローラ２０内の４つの読み出し用バッファメモリＲＢＵＦ０〜ＲＢＵＦ３に転送され、次いで各プロセッサエレメントのレジスタＲｊ〜Ｒｊ＋３にそれぞれ転送される（読み出し転送）。
【０００６】
ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間のビット幅は、各レジスタＲｊ〜Ｒｊ＋３のビット幅の和になる。従って、レジスタＲｊ〜Ｒｊ＋３の各データサイズが８ビットであれば、ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間でデータは３２ビット幅で転送される。プロセッサエレメント毎に４つのレジスタＲｊ〜Ｒｊ＋３がＤＤＲメモリ３０に接続されているので、最大で３２ビット×ｎのデータをＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間で一度に転送することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＳＩＭＤプロセッサがその性能を十分に発揮できるためには、複数のプロセッサエレメントにわたるデータの並列度が問題となる。図１１は、図１０のＳＩＭＤプロセッサ１０によって効率よく処理することができる、ＲＧＢＫの画像データの例を示す図であり、図１２は、図１０のＳＩＭＤプロセッサ１０によって効率よく処理することができない、ＲＧＢＫの画像データの例を示す図である。図１１及び図１２の例では、Ｒ（Red）、Ｇ（Green）、Ｂ（Blue）及びＫ（Key color，black）を含む４色の画像データを扱うために、ＲｊレジスタにＲデータを格納し、Ｒｊ＋１レジスタにＧデータを格納し、Ｒｊ＋２レジスタにＢデータを格納し、Ｒｊ＋３レジスタにＫデータを格納する。図１０のＳＩＭＤプロセッサ１０は、図１１のように、処理対象の画像データが、各プロセッサエレメントのレジスタのサイズ×プロセッサエレメントの総数ｎにわたって連続的に存在するとき、プロセッサエレメントＰＥ０〜ＰＥｎ−１のすべてを画像データの処理に寄与させることができる。従って、１回のＳＩＭＤ演算において画像データの処理に関与するプロセッサエレメントの個数が増えるほど、一度に処理できるデータ量も増え、ＳＩＭＤ演算を効率よく実施しているといえる。一方、図１２のように、処理対象の画像データが十分なデータ長にわたって連続して存在しない場合がある。この場合、途中の空白の画像データに対する処理を削除すること等により処理時間の短縮を図るが、実際に処理される画像データの画素数が少ない場合、ＳＩＭＤの特性を活かせない可能性がある。
【０００８】
図１２のような画像データは、例えば、プリンタ画像の処理で使用されるＰＤＬ（Page Description Language：ページ記述言語）処理において生じることがある。ＰＤＬ処理は、ＰｏｓｔＳｃｒｉｐｔ（登録商標）やＲＰＤＬ、ＰＣＬなどのページ記述言語で書かれたプリンタ出力データから印刷物に対応したラスタデータに変換する処理である。図１３は、スキャンライン描画によるフォントデータからラスタデータへの変換を説明するための図である。ここでは、ページ記述言語で書かれたフォントデータ「Ａ」を印刷物に載せる（クリップする）とき、フォントデータ「Ａ」に対してスキャンライン描画を行い、文字を横方向の線分（スキャンライン）の集合体として描くことによって、フォントデータ「Ａ」をラスタデータに変換する。このような処理を行う場合、ＳＩＭＤプロセッサが多数のプロセッサエレメントを備えていても、画像データによっては、１画素のデータのみに対して１回のＳＩＭＤ演算を実行しなければならず、ＳＩＭＤ演算の効率が悪くなる。
【０００９】
図１４は、画素単位で描画された文字データの例を示す図であり、図１５は、図１０のＳＩＭＤプロセッサ１０による図１４の文字データの処理を示す図である。図１４及び図１５では説明のために分解能を下げているが、実際には、より高い分解能で滑らかに描画してもよい。図１４のように画素単位で分解した場合、スキャンラインによっては、画素が長く連続した部分と、短い部分とが存在する。図１４の文字データを図１０のＳＩＭＤプロセッサ１０により処理する場合、図１５に示すように、スキャンライン毎にＳＩＭＤ演算を実行する。従って、ＳＩＭＤプロセッサ１０が多数のプロセッサエレメントを備えていても、ＳＩＭＤ演算に関与するプロセッサエレメントの個数は少なくなり、データの並列度が低いといえる。
【００１０】
特許文献１は、効率的なＳＩＭＤ演算を行うことができるとともに、多次元メモリと１次元メモリとの間でデータを転送するのに好適な多次元メモリのデータ転送装置を開示している。特許文献１のデータ転送装置は、読み込むデータがメモリ上で連続して記憶されていない場合や、演算結果をメモリ上の複数の位置に分散して書き込む場合に並列度を向上させるものである。特許文献１のデータ転送装置は、データを転送する毎にアドレスを計算しているので、転送の際にこのアドレス計算のための時間がかかることになる。
【００１１】
特許文献２は、連続したラスターデータとして配列変換を高速で行うことができる画像処理装置を開示している。特許文献２の画像処理装置は、プロセッサエレメントが不定長のデータを生成した場合に配列変換を行うことを特徴とし、データの並列度が有効に作用すると高速化を図ることができる。特許文献２の画像処理装置では、データはメモリの相対的に同じアドレスにのみ格納され、ランダムなアドレスへの読み書きを行うものではない。
【００１２】
特許文献３は、逐次処理を行なうための補助的な演算処理部を利用することなくＳＩＭＤ型演算処理部を用いて、例えば誤差拡散処理等の画像処理を行なうことが可能な画像処理装置を開示している。特許文献３の画像処理装置は、特許文献２の画像処理装置と類似した構成を有し、１回のＳＩＭＤ演算で複数ラインのデータを処理するように、メモリコントローラではなくＳＩＭＤプロセッサ自体によって制御することを特徴とする。
【００１３】
本発明の目的は、上記の問題点を解決し、ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラであって、外部メモリ上のデータの並列度が低い場合であってもＳＩＭＤプロセッサによるＳＩＭＤ演算の効率を向上させ、高速なデータ処理を実現するためのメモリコントローラを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の態様に係るメモリコントローラは、
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、上記各プロセッサエレメントの上記複数のレジスタのうちの少なくとも一部は、上記複数のプロセッサエレメントのうちの任意個数のプロセッサエレメントにわたって連続してデータを格納し、
上記メモリコントローラは、
上記外部メモリにおける複数のアドレスを格納するアドレスメモリと、
上記アドレスメモリに格納された各アドレスからデータが連続して格納される長さをそれぞれ表す、上記複数のアドレスにそれぞれ対応する複数のバースト長を格納するバースト長メモリと、
上記複数のプロセッサエレメントのうちの第１のグループのプロセッサエレメントと、上記アドレスメモリ及び上記バースト長メモリに格納された第１のアドレス及び上記第１のアドレスに対応する第１のバースト長によって特定される上記外部メモリの領域との間で、第１のデータを転送し、上記第１のデータの転送後、上記複数のプロセッサエレメントのうちの第２のグループのプロセッサエレメントと、上記アドレスメモリ及び上記バースト長メモリに格納された第２のアドレス及び上記第２のアドレスに対応する第２のバースト長によって特定される上記外部メモリの領域との間で、第２のデータを転送するように制御する制御回路とを備えたことを特徴とする。
【００１５】
上記メモリコントローラはさらに、上記アドレスメモリ及び上記バースト長メモリに格納された上記アドレス及び上記アドレスに対応するバースト長の組み合わせの個数を格納するバースト数レジスタを備えたことを特徴とする。
【００１６】
上記メモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、上記外部メモリから上記ＳＩＭＤプロセッサに転送されたデータの上記外部メモリにおけるアドレス及び上記アドレスに対応するバースト長を格納する内蔵メモリをさらに備え、
上記メモリコントローラは、上記ＳＩＭＤプロセッサから上記外部メモリにデータを転送する際に、上記内蔵メモリに格納された上記アドレス及び上記アドレスに対応するバースト長を使用することを特徴とする。
【００１７】
上記メモリコントローラは、
上記ＳＩＭＤプロセッサと上記外部メモリとの間で転送されたデータの合計バースト長を計数し、
上記合計バースト長によって表されるデータ長がすべてのプロセッサエレメントのレジスタによって格納可能なデータのデータ長に達したとき、データの転送を終了することを特徴とする。
【００１８】
本発明の第２の態様に係るメモリコントローラは、
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、
上記メモリコントローラは、
上記各プロセッサエレメントの上記複数のレジスタのうちの第１のグループのレジスタにデータを格納させ、同じプロセッサエレメントの上記複数のレジスタのうちの第２のグループのレジスタに、上記データの上記外部メモリにおけるアドレスを格納させ、
上記各プロセッサエレメントの上記第１のグループのレジスタと、同じプロセッサエレメントの上記第２のグループのレジスタに格納されたアドレスによって特定される上記外部メモリの領域との間で、データを転送するように制御する制御回路を備えたことを特徴とする。
【００１９】
本発明の第３の態様に係るメモリコントローラは、
ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラにおいて、
上記ＳＩＭＤプロセッサは、複数のレジスタをそれぞれ備えた複数のプロセッサエレメントと、グローバルプロセッサとを備え、上記各プロセッサエレメントの上記複数のレジスタのうちの少なくとも一部は、データを格納するか、又は上記データの上記外部メモリにおけるアドレスを格納し、
上記メモリコントローラは、
上記複数のプロセッサエレメントのうちの第１のグループのプロセッサエレメントのレジスタに上記データを格納させ、上記複数のプロセッサエレメントのうちの第２のグループのプロセッサエレメントのレジスタに上記データの上記外部メモリにおけるアドレスを格納させ、
上記第１のグループのプロセッサエレメントのレジスタと、上記第１のグループのじプロセッサエレメントのレジスタに格納されたアドレスによって特定される上記外部メモリの領域との間で、データを転送するように制御する制御回路を備えたことを特徴とする。
【発明の効果】
【００２０】
本発明に係るメモリコントローラによれば、ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラであって、外部メモリ上のデータの並列度が低い場合であってもＳＩＭＤプロセッサによるＳＩＭＤ演算の効率を向上させ、高速なデータ処理を実現することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図２】図１のアドレスメモリ２２及びバースト長メモリ２３内に格納されるデータの例を示す図である。
【図３】図２のアドレス及びバースト長に従って図１のＤＤＲメモリ３０に書き込まれたデータの配置を示す図である。
【図４】本発明の第１の実施形態の第１の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図５】本発明の第１の実施形態の第２の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図６】本発明の第１の実施形態の第３の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図７】本発明の第２の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図８】本発明の第３の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図９】図８の各プロセッサエレメントの各レジスタＲｊ〜Ｒｊ＋３に格納されるアドレス及びデータの配置を示す図である。
【図１０】従来技術のＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。
【図１１】図１０のＳＩＭＤプロセッサ１０によって効率よく処理することができる、ＲＧＢＫの画像データの例を示す図である。
【図１２】図１０のＳＩＭＤプロセッサ１０によって効率よく処理することができない、ＲＧＢＫの画像データの例を示す図である。
【図１３】スキャンライン描画によるフォントデータからラスタデータへの変換を説明するための図である。
【図１４】画素単位で描画された文字データの例を示す図である。
【図１５】図１０のＳＩＭＤプロセッサ１０による図１４の文字データの処理を示す図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して、本発明の実施形態について説明する。各図にわたって、同様の構成要素は同じ参照符号で示す。
【００２３】
第１の実施形態．
図１は、本発明の第１の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。ＳＩＭＤプロセッサ１０は、図１０の場合と同様に、ｎ個のプロセッサエレメントＰＥ０〜ＰＥｎ−１と、ＳＩＭＤプロセッサ１０全体の動作を制御し（全体のプログラムの管理、プロセッサエレメント等の周辺ブロックの制御などを含む）、メモリコントローラ２０の動作を制御するグローバルプロセッサ１１とを備える。各プロセッサエレメントは、図１０の場合と同様に、ｍ個の汎用レジスタＲ０〜Ｒｍ−１と、算術論理演算器（ＡＬＵ）１２と、演算結果を格納するアキュムレータ１３とを備え、レジスタＲ０〜Ｒｍ−１のうち、例えば４つのレジスタＲｊ〜Ｒｊ＋３が、メモリコントローラ２０を介して外部のＤＤＲメモリ３０に接続されている。本願出願人による実装例では、プロセッサエレメントの総数ｎ＝３５２であり、各プロセッサエレメントにおけるレジスタの個数ｍ＝３２であり、各レジスタのサイズは８ビットであるが、これらの値に限定されるものではない。説明の簡単化のために、各プロセッサエレメントにおいて、４つのレジスタＲｊ〜Ｒｊ＋３以外の構成要素は図示を省略する。ＤＤＲメモリ３０は、ＤＤＲ１、ＤＤＲ２、ＤＤＲ３のような、例えば３２ビットのデータバス幅を有する大規模メモリであり、ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間に設けられたメモリコントローラ２０により、ＳＩＭＤプロセッサ１０からＤＤＲメモリ３０へのアクセス（すなわち、書き込み及び読み出し）を制御する。各プロセッサエレメントのレジスタＲｊは第１のデータバスに接続され、同様に、各プロセッサエレメントのレジスタＲｊ＋１は第２のデータバスに接続され、各プロセッサエレメントのレジスタＲｊ＋２は第３のデータバスに接続され、各プロセッサエレメントのレジスタＲｊ＋３は第４のデータバスに接続され、これらのデータバスはさらに、メモリコントローラ２０に接続される。メモリコントローラ２０とＤＤＲメモリとの間もまた、各プロセッサエレメントの各レジスタＲｊ〜Ｒｊ＋３がそれぞれ接続されたデータバスに対応する４つのデータバスで接続される。各データバスは、例えば８ビットのデータバス幅を有する。メモリコントローラ２０は、ＳＩＭＤプロセッサ１０からＤＤＲメモリ３０への書き込み用バッファメモリＷＢＵＦ０〜ＷＢＵＦ３と、ＤＤＲメモリ３０からＳＩＭＤプロセッサ１０への読み出し用バッファメモリＲＢＵＦ０〜ＲＢＵＦ３とを有する。これらのバッファメモリはそれぞれ、例えば１２８ビットのサイズを有するが、このサイズに限定されるものではない。データをＳＩＭＤプロセッサ１０からＤＤＲメモリ３０に書き込むとき、データはまず、各プロセッサエレメントのレジスタＲｊ〜Ｒｊ＋３からメモリコントローラ２０内の４つの書き込み用バッファメモリＷＢＵＦ０〜ＷＢＵＦ３にそれぞれ転送され、次いでＤＤＲメモリ３０に転送される（書き込み転送）。また、データをＤＤＲメモリ３０からＳＩＭＤプロセッサ１０に読み出すとき、データはまず、ＤＤＲメモリ３０からメモリコントローラ２０内の４つの読み出し用バッファメモリＲＢＵＦ０〜ＲＢＵＦ３に転送され、次いで各プロセッサエレメントのレジスタＲｊ〜Ｒｊ＋３にそれぞれ転送される（読み出し転送）。
【００２４】
グローバルプロセッサ１１は、ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間でデータを転送する際に、ＤＤＲメモリ３０におけるデータのアドレスと、そのアドレスからデータが連続して格納される長さ（すなわち、連続して転送される長さ）を示すバースト長とを予め指定する。バースト長は、例えば、データのランレングスなどであってもよい。メモリコントローラ２０は、グローバルプロセッサ１１から転送開始の指令を受けたとき、指定されたアドレスからデータの転送を開始し、アドレスをインクリメントしながら転送し続け、指定のバースト長にわたるデータを転送した時点で終了する。これをバースト転送と呼ぶ。
【００２５】
本実施形態では、メモリコントローラ２０はさらに、ＤＤＲメモリ３０におけるデータのアドレス（ａｄｄｒｅｓｓ０，ａｄｄｒｅｓｓ１，…，ａｄｄｒｅｓｓＮ−１）を格納するアドレスメモリ２２と、各アドレスに対応するバースト長（ｄｎｕｍ０，ｄｎｕｍ１，…，ｄｎｕｍＮ−１）を格納するバースト長メモリ２３と、データを転送する際にバースト長をカウントするためのバースト長カウンタ２４と、メモリコントローラ２０全体の動作を制御し、ＤＤＲメモリ３０へのアクセスを制御する制御装置２１とを備える。アドレスメモリ２２、バースト長メモリ２３、及びバースト長カウンタ２４のうちの少なくともいずれかは、制御装置２１と一体化されていてもよい。本実施形態において、バースト長は、ＤＤＲメモリ３０に同時に書き込まれる（又はＤＤＲメモリ３０から同時に読み出される）データのサイズを１単位とし、すなわち、１単位のバースト長は、ＤＤＲメモリ３０のデータバス幅（３２ビット）に対応する。本実施形態では、１単位のバースト長は、１つのプロセッサエレメントにおける４つのレジスタＲｊ〜Ｒｊ＋３に格納されるデータのサイズに一致する。
【００２６】
データをＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間で転送するとき、グローバルプロセッサ１１は、データのアドレス及び対応するバースト長を、アドレスメモリ２２及びバースト長メモリ２３にそれぞれ格納する。メモリコントローラ２０の制御装置２１は、アドレスメモリ２２及びバースト長メモリ２３の内容に基づいて、グローバルプロセッサ１１と協働して、ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間のデータの転送を制御する。このため、制御装置２１は、バースト長メモリ２３内のバースト長ｄｎｕｍ０，ｄｎｕｍ１，…，ｄｎｕｍＮ−１をバースト長カウンタ２４に順に書き込む。例えば、バースト長ｄｎｕｍ０がバースト長カウンタ２４に書き込まれているとき、書き込み用バッファメモリＷＢＵＦ０〜ＷＢＵＦ３内のデータがＤＤＲメモリ３０に転送される毎に、又は、ＤＤＲメモリ３０から読み出し用バッファメモリＲＢＵＦ０〜ＲＢＵＦ３にデータが転送される毎に、バースト長カウンタ２４のカウンタ値が１ずつデクリメントされ、カウンタ値が０になったとき、バースト長メモリ２３内の次のバースト長ｄｎｕｍ１がバースト長カウンタ２４に書き込まれ、以後、次のデータを同様に転送する。
【００２７】
次に、図２及び図３を参照して、本実施形態に係るＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間のデータの転送について説明する。図２は、図１のアドレスメモリ２２及びバースト長メモリ２３内に格納されるデータの例を示す図である。図２のように、例えば、アドレスメモリ２２は、ａｄｄｒｅｓｓ０＝５０００＿００００ｈ、ａｄｄｒｅｓｓ１＝５０００＿０１１０ｈ、ａｄｄｒｅｓｓ２＝５０００＿０１８０ｈ、ａｄｄｒｅｓｓ３＝５０００＿０３２０ｈというように、規則性のない不連続なアドレスを格納し、これらのアドレスに対応して、バースト長メモリ２３は、ｄｎｕｍ０＝２、ｄｎｕｍ１＝５、ｄｎｕｍ２＝３、ｄｎｕｍ３＝１というように、そのアドレスから連続するデータのバースト長を格納する。図２に示す例では、合計でバースト長「１１」にわたるデータが転送される。図３は、図２のアドレス及びバースト長に従って図１のＤＤＲメモリ３０に書き込まれたデータの配置を示す図である。逆に、図３のようにＤＤＲメモリ３０に格納されたデータを図２のアドレス及びバースト長に従って読み出すことも、同様に実行可能である。
【００２８】
アドレスとバースト長との組み合わせの最大数は、プロセッサエレメントの総数ｎによって決まる。プロセッサエレメントの総数ｎ＝３５２であれば、アドレスメモリ２２及びバースト長メモリ２３はそれぞれ、少なくとも３５２個のアドレス及びバースト長を格納するように構成されることが好ましい。アドレスのビット幅は、ＤＤＲメモリ３０の容量によって決まる。例えば、ＤＤＲメモリ３０の容量が２５６ＭＢ（１６進表記では１０００＿００００ｈ）であれば、アドレスは少なくとも２８ビットで表すことができる。バースト長のビット幅は、プロセッサエレメントの総数ｎによって決まる。プロセッサエレメントの総数ｎ＝３５２であれば、バースト長は少なくとも９ビットで表すことができる。以上の説明では、便宜上、書き込み用バッファメモリＷＢＵＦ０〜ＷＢＵＦ３及び読み出し用バッファメモリＲＢＵＦ０〜ＲＢＵＦ３の個数をそれぞれ４つとしているが、バッファメモリの個数を、データバスに接続された各プロセッサエレメントのレジスタの個数や、各レジスタのビット数や、プロセッサエレメントの総数に応じて変更可能であることは明らかであろう。
【００２９】
本実施形態のメモリコントローラ２０は、アドレスメモリ２２及びバースト長メモリ２３を備えたことにより、ＤＤＲメモリ３０上でランダムなアドレスに配置されたデータであっても連続的にアクセスし、各プロセッサエレメントＰＥ０〜ＰＥｎ−１のレジスタにデータを連続的に配置することで、データの並列度を向上させることができる。従来であれば、例えばＳＩＭＤプロセッサが３５２個のプロセッサエレメントを有していても、データのバースト長が小さい場合に、１つのＳＩＭＤ演算において１つのプロセッサエレメントしか使用できない可能性があった。このような場合には、従来、３５２個のデータを処理するために３５２回のＳＩＭＤ演算を繰り返す必要があった。一方、本実施形態によれば、１回のＳＩＭＤ演算のために、最大でプロセッサエレメントの総数ｎに等しい不連続な別個のアドレスのデータを読み出すこと及び書き戻すことができる。従って、データの転送回数を大幅に削減することができ、ＳＩＭＤプロセッサ１０の処理時間も大幅に短縮することができる。
【００３０】
図４は、本発明の第１の実施形態の第１の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。本変形例のメモリコントローラ２０は、図１の構成に加えて、アドレスとバースト長との組み合わせの個数（すなわち、ＤＤＲメモリ３０における転送されるデータのかたまりの個数）を格納するバースト数レジスタ２５をさらに備えたことを特徴とする。例えば、図２及び図３の場合、アドレス及び対応するバースト長の組は４つであり、従って、バースト数レジスタ２５には「４」が格納される。バースト数レジスタ２５は、回路規模の削減などの目的でアドレスメモリ２２及びバースト長メモリ２３がプロセッサエレメントの総数ｎよりも少ないアドレス及びバースト長を格納するように構成された場合において、アドレスメモリ２２及びバースト長メモリ２３の空き領域を適切に管理することに有用である。バースト数レジスタ２５は、アドレスメモリ２２及びバースト長メモリ２３のうちで、所定個数までのアドレス及びバースト長のみを格納するように一部の領域のみを使用して、残りの領域を未使用にするように設定されてもよく、このとき、格納可能なアドレス及びバースト長の個数は、ユーザによって設定されてもよく、ＳＩＭＤプロセッサ１０によって実行されるプログラムによって動的に設定されてもよい。
【００３１】
図５は、本発明の第１の実施形態の第２の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。本変形例のＳＩＭＤプロセッサ１０は、図１の構成に加えて、アドレスメモリ２２及びバースト長メモリ２３の内容を格納する内蔵メモリ１４をさらに備えたことを特徴とする。割り込みなどによってデータの転送が中断した場合、中断した時点における転送済みのデータのアドレス及びバースト長を保存する必要がある。制御装置２１は、バースト長カウンタ２４におけるカウンタ値に基づいて、中断された時点におけるバースト長（すなわち、転送途中のデータにおける転送済みのデータのバースト長）をバースト長メモリ２３に上書きし、次いで、グローバルプロセッサ１１は、アドレスメモリ２２の内容及び上書きされたバースト長メモリ２３の内容を内蔵メモリ１４に格納する。例えば、データの読み出し時に中断が生じた場合には、その後のデータの書き込み時に、内蔵メモリ１４に格納されたアドレス及びバースト長を用いて（すなわち、内蔵メモリ１４に格納されたアドレス及びバースト長をアドレスメモリ２２及びバースト長メモリ２３に書き戻して）、その後は図１を参照して説明した場合と同様に、ＳＩＭＤプロセッサ１０からＤＤＲメモリ３０にデータを転送することができる。
【００３２】
図１を参照して説明した場合では、グローバルプロセッサ１１は、転送するデータのバースト長を転送の終了条件として予め指定したが、本変形例によれば、転送するデータのバースト長を予め指定しなくても、割り込みなどを転送の中断条件として使用することにより同様に動作可能である。
【００３３】
本変形例のメモリコントローラ２０は、データの転送が中断した時点における転送済みのデータのアドレス及びバースト長を内蔵メモリ１４に保存させることにより、例えば、ＳＩＭＤプロセッサ１０がＤＤＲメモリ３０の所定のアドレスから読み出したデータに所定のＳＩＭＤ演算を実行した後で、ＤＤＲメモリ３０の同じアドレスに書き戻すとき、内蔵メモリ１４に保持されたアドレス及びバースト長を用いることができる。従って、データの転送回数を大幅に削減することができ、ＳＩＭＤプロセッサ１０の処理時間も大幅に短縮することができる。
【００３４】
図６は、本発明の第１の実施形態の第３の変形例に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。本変形例のメモリコントローラ２０は、図１の構成に加えて、ＳＩＭＤプロセッサ１０とＤＤＲメモリ３０との間で転送されたデータの合計のバースト長を格納する合計バースト長カウンタ２６をさらに備えたことを特徴とする。合計バースト長カウンタ２６は、データを転送する毎に（従って、バースト長メモリ２３のバースト長によりバースト長カウンタ２４のカウンタ値が更新される毎に）、バースト長メモリ２３内のバースト長を累算したカウンタ値を格納する。合計バースト長カウンタ２６のカウンタ値がプロセッサエレメントの総数ｎを超えたとき、データの転送を終了する。本変形例によれば、合計バースト長カウンタ２６を備えたことにより、プロセッサエレメントＰＥ０〜ＰＥｎ−１の使用状態又は未使用状態を適切に管理することに有用である。
【００３５】
本変形例のメモリコントローラ２０は、合計バースト長カウンタ２６を用いることにより、ＳＩＭＤプロセッサ１０で実行されるプログラムによりバースト数を計算することに代えて、メモリコントローラ２０内で自動的にバースト数を計算することができ、プログラムを短縮することができる。
【００３６】
さらに、以上説明した第１の実施形態及びその変形例の構成（図１、図４〜図６）を組み合わせてもよい。
【００３７】
第２の実施形態．
図７は、本発明の第２の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図である。本実施形態では、転送するデータのアドレスを格納するために、第１の実施形態のようにメモリコントローラ２０にアドレスメモリ２２を設けることに代えて、各プロセッサエレメントＰＥ０〜ＰＥｎ−１のレジスタの一部を用いることを特徴とする。本実施形態ではバースト長メモリ２３は使用されず、すべての転送は１単位のバースト長毎に行われ、転送される１単位のバースト長のデータ毎にアドレスが設定される。各プロセッサエレメントＰＥ０〜ＰＥｎ−１において、レジスタＲｊ〜Ｒｊ＋３は、第１の実施形態と同様に、ＤＤＲメモリ３０のデータを格納するためのレジスタとして使用され、レジスタＲｋ〜Ｒｋ＋３は、データのアドレスを格納するためのレジスタとして使用される。レジスタＲｊ〜Ｒｊ＋３に格納されるデータのアドレスは、レジスタＲｋ〜Ｒｋ＋３にわたって分割して格納され、転送時には、メモリコントローラ２０内のアドレスメモリ２２に送られて合成される。例えばアドレス値が５０００＿０３２０ｈである場合、プロセッサエレメントＰＥ０において、レジスタＲｋは２０ｈを格納し、レジスタＲｋ＋１は０３ｈを格納し、レジスタＲｋ＋２は００ｈを格納し、レジスタＲｋ＋３は５０ｈを格納し、レジスタＲｊ〜Ｒｊ＋３は、書き込みであれば転送されるデータを格納し、読み出しであれば初期状態のままにされる。本変形例によれば、転送されるデータのアドレスを格納するために各プロセッサエレメントＰＥ０〜ＰＥｎ−１のレジスタを用いたことにより、第１の実施形態に比べてようにメモリコントローラ２０の内部構成を簡単化することができる。なお、アドレスを格納するレジスタの個数は、図７のように４つに限定されるものではなく、ＤＤＲメモリ３０の容量に応じて決まる。
【００３８】
第３の実施形態．
図８は、本発明の第３の実施形態に係るＳＩＭＤプロセッサ１０、メモリコントローラ２０、及びＤＤＲメモリ３０の構成を示すブロック図であり、図９は、図８の各プロセッサエレメントの各レジスタＲｊ〜Ｒｊ＋３に格納されるアドレス及びデータの配置を示す図である。本実施形態では、転送するデータのアドレスを格納するために、第１の実施形態のようにメモリコントローラ２０にアドレスメモリ２２を設けることに代えて、１つおきのプロセッサエレメントＰＥ０、ＰＥ２、ＰＥ４、…、のレジスタを使用し、転送するデータを格納するために、残りの１つおきのプロセッサエレメントＰＥ１、ＰＥ３、ＰＥ５、…、のレジスタを使用することを特徴とする。本実施形態においてもバースト長メモリ２３は使用されず、すべての転送は１単位のバースト長毎に行われ、転送される１単位のバースト長のデータ毎にアドレスが設定される。アドレスを格納するプロセッサエレメントＰＥ０、ＰＥ２、ＰＥ４、…、において、アドレスは、第２の実施形態と同様に、レジスタＲｊ〜Ｒｊ＋３にわたって分割して格納され、転送時には、データバスを介してメモリコントローラ２０に転送され、メモリコントローラ２０内の分配器ｄ０〜ｄ３を介してアドレスメモリ２２に送られて合成される。本変形例によれば、転送されるデータのアドレスを格納するために各プロセッサエレメントＰＥ０、ＰＥ２、ＰＥ４、…、のレジスタを用いたことにより、第１の実施形態に比べてようにメモリコントローラ２０の内部構成を簡単化することができる。なお、アドレスを格納するレジスタの個数は、図８のように４つに限定されるものではなく、ＤＤＲメモリ３０の容量に応じて決まる。
【産業上の利用可能性】
【００３９】
本発明のメモリコントローラによれば、ＳＩＭＤプロセッサから外部メモリにアクセスするためのメモリコントローラであって、外部メモリ上のデータの並列度が低い場合であってもＳＩＭＤプロセッサによるＳＩＭＤ演算の効率を向上させ、高速なデータ処理を実現することができる。
【符号の説明】
【００４０】
１０…ＳＩＭＤプロセッサ、
１１…グローバルプロセッサ、
１２…算術論理演算器（ＡＬＵ）、
１３…アキュムレータ、
１４…内蔵メモリ、
２０…メモリコントローラ、
２１…制御装置、
２２…アドレスメモリ、
２３…バースト長メモリ、
２４…バースト長カウンタ、
２５…バースト数レジスタ、
２６…合計バースト長カウンタ、
３０…ＤＤＲメモリ、
ＰＥ０〜ＰＥｎ−１…プロセッサエレメント、
Ｒ０〜Ｒｍ−１…レジスタ、
ＷＢＵＦ０〜ＷＢＵＦ３…書き込み用バッファメモリ、
ＲＢＵＦ０〜ＲＢＵＦ３…読み出し用バッファメモリ、
ｄ０〜ｄ３…分配器。
【先行技術文献】
【特許文献】
【００４１】
【特許文献１】特開２００３−２８０９８２号公報。
【特許文献２】特開２００４−０７０７２５号公報。
【特許文献３】特許第４１４３３０２号公報。
【図１】
0005471969.tif 000002
【図２】
0005471969.tif 000003
【図３】
0005471969.tif 000004
【図４】
0005471969.tif 000005
【図５】
0005471969.tif 000006
【図６】
0005471969.tif 000007
【図７】
0005471969.tif 000008
【図８】
0005471969.tif 000009
【図９】
0005471969.tif 000010
【図１０】
0005471969.tif 000011
【図１１】
0005471969.tif 000012
【図１２】
0005471969.tif 000013
【図１３】
0005471969.tif 000014
【図１４】
0005471969.tif 000015
【図１５】
0005471969.tif 000016