| 【発明の名称】 |
SIMD型マイクロプロセッサにおけるテーブル変換 |
| 【発明者】 |
【氏名】高藤 浩資
【氏名】山浦 慎一
【氏名】福島 正展
【氏名】原 和彦
【氏名】中村 圭治
【氏名】片山 貴雄
【氏名】岩永 和彦
|
| 【要約】 |
【課題】SIMD型マイクロプロセッサにおける各プロセッサエレメント内データの非線形処理において、ハードウエアの僅かな追加のみで、演算の繰り返し回数を減らす。
【解決手段】複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備える。第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となる。第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する。以上のようなSIMD型マイクロプロセッサを提供する。 |
【特許請求の範囲】
【請求項1】 複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサ。 【請求項2】 複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサ。 【請求項3】 請求項1又は請求項2に記載のSIMD型マイクロプロセッサを利用する、演算処理装置。 【請求項4】 請求項1又は請求項2に記載のSIMD型マイクロプロセッサを利用する、画像処理装置。 【請求項5】 複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサにおいて、(1)1つのプロセッサエレメントから演算対象データを抽出し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントに対し、上記(3)の演算後データを転送して格納させ、(5)次の1つのプロセッサエレメントを選択し上記(1)以下の処理を繰り返すが、ここで選択したプロセッサエレメントにおいて既に第2の条件フラグが“1”の状態であれば、さらに次の1つのプロセッサエレメントを選択する、テーブル変換方法。 【請求項6】 複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサにおいて、(1)1つの演算対象データを用意し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントに対し、上記(3)の演算後データを転送して格納させ、(5)第3のフラグが“1”ではないならば、次の演算対象データを用意して上記(1)以下の処理を繰り返し、第3のフラグが“1”となるときは、処理を終了する、テーブル変換方法。 【請求項7】 複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサにおいて、(1)1つのプロセッサエレメントから演算対象データを抽出し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントにおいて、条件成立信号を発生させ、(5)上記の条件成立信号が発生されているプロセッサエレメントに対して、上記(3)の演算後データを転送して格納させ、(6)次の1つのプロセッサエレメントを選択し上記(1)以下の処理を繰り返すが、ここで選択したプロセッサエレメントにおいて既に第2の条件フラグが“1”の状態であれば、さらに次の1つのプロセッサエレメントを選択する、テーブル変換方法。 【請求項8】 複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサにおいて、(1)1つの演算対象データを用意し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントにおいて、条件成立信号を発生させ、(5)上記の条件成立信号が発生されているプロセッサエレメントに対して、上記(3)の演算後データを転送して格納させ、(6)第3のフラグが“1”ではないならば、次の演算対象データを用意して上記(1)以下の処理を繰り返し、第3のフラグが“1”となるときは、処理を終了する、テーブル変換方法。 【請求項9】 請求項5乃至請求項8に記載のテーブル変換方法を利用する、演算処理方法。 【請求項10】 請求項5乃至請求項8に記載のテーブル変換方法を利用する、画像処理方法。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、マイクロプロセッサ、特に、SIMD(Single Instructin−stream Multiple Data−stream;単一命令多データ処理)型マイクロプロセッサに関する。 【0002】 【従来の技術】SIMD型マイクロプロセッサでは、複数のデータに対して1つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理(例えば、画像処理)に係る用途において、頻用される。 【0003】SIMD型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット(Processor Element〔PE〕;プロセッサエレメント)を並べ同一の演算を同時に複数のデータに対して実行する。ところが、演算処理の内容を単一の演算式で表すことができない「非線形処理」では、演算対象のデータに応じて演算式が変更されるため、同じ処理を同時に実行することができない。そうすると、データ毎の逐次処理をせざるを得ず、結局SIMDであることの効果が無くなってしまう。 【0004】通常のSISD(Single Instructin−stream Single Data−stream;単一命令単一データ処理)型のプロセッサにおいても、演算対象データに応じて演算式が変更される非線形処理では、演算処理を行うプログラムが非常に複雑になりかねない。それを防ぐため、演算前データに対して演算後の処理済みデータを予め全て準備してそれらをテーブル化し、演算前データを元にテーブル変換を行ない演算後データを得る方式が一般的である。具体的にはRAM(Random Access Memory)上に上記テーブルを格納し、演算前データにテーブルの先頭の番地を加算した値をアドレスポインタとしてRAMから得られたデータを、演算後データとしている。例えば、演算データ(演算前データ/演算後データ)が8ビットの場合には、256バイトのサイズの変換テーブルが必要となる。 【0005】この変換テーブルのサイズは、演算データのビット幅の増加とともに2のベキ乗(の単位)で増加するため、演算データのビット幅が相当に大きい場合は、演算データを任意の区間に分け、その区間での近似式をテーブルとして持つような方式も開示されている。 【0006】さて、このテーブル変換をSIMD型マイクロプロセッサで採用する場合には、個々の演算単位においてテーブルが必要となると考えられていた。例えば256SIMD(即ち、演算単位〔演算ユニット、PE〕が256個あるSIMD)のプロセッサにおいて、8ビットの演算データ(演算前データ/演算後データ)のテーブル変換を行なう場合には、256バイトの(RAM上の)テーブルが演算単位分即ち256個必要となる。よって、コスト面において大きな問題があった。そのため、SIMD型マイクロプロセッサの非線型演算のテーブル変換に対して、種々の発明が案出され開示されている。 【0007】特開平5−67203号においては、各SIMD単位のPE(Processor Element;プロセッサエレメント)内蔵の出力レジスタから演算前データを順次外部に出力し、外部で逐次にテーブル変換を行ない、変換後のデータをPE内蔵の入力レジスタに順次入力する方式が提案されている。この方式では変換テーブルが1個となるためコストの上昇は抑えられるが、結局は逐次処理であるため、演算処理時間はPEの個数相応までかかってしまい演算速度面で不利である。また、この変換処理をPEでの通常処理と並行に実行すれば演算処理時間はトータルとして削減できるが、入力・出力のレジスタがこの変換作業専用に使用され他の用途に使用できない、変換処理後のデータが必要な場合には演算処理時間だけ待つこととなり並行処理が不可能である、といった問題が依然残る。 【0008】非線形ユニットを1個搭載した特開平7−219919号も上記とほぼ同様である。PE内にシフトレジスタとして用いる専用のレジスタを設置し、非線形ユニットを挿入して環状の通信経路とすることにより非線形演算を行なっているが、この場合もPE個数分のサイクル処理を行なうことが必要である。 【0009】また、特開平9−305550号において、外部から順次変換前データと変換後のデータを入力し、各PEで入力された変換前データと演算前データを比較し、一致したPEには変換後のデータを格納しこの値を演算後データとする方式が提案されている。この場合には、演算処理時間は演算前データの取りうる値の組み合わせ数(即ち、変換テーブルのワード数)に依存するため、PEの個数よりこのワード数が少ない場合には高速化が実現される。ところが、演算前データが8ビットデータの場合、PE数によらず256回程度のサイクル数となるため、この場合においても演算処理時間が長くなるという問題がある。また、他の通常の処理と並行にこの変換処理を行うという方式も想定され得るが、その場合にも上記特開平5−67203号と同じ問題が生じる。 【0010】さらに、特許第2812292号においては、PEの個数と同数の出力ポートを持つ変換テーブル用のRAMに対して、それぞれのPEから演算前データをアドレスポインタとして与えることで演算後データを得る方法が提案されている。この方式においては変換速度は1サイクル程度で終了するが、出力ポートの増加はRAMのコストを押し上げることになり、特に数十個を超えるポートを持つことは実現不可能である。したがって、PE数が多いSIMD型マイクロプロセッサに対応できない、という問題がある。 【0011】以上の従来技術においては、テーブル変換器を1個搭載するSIMD型マイクロプロセッサにおける各PE内データの非線形処理については、以下の2つのタイプのデータ逐次処理に分類され得る。 【0012】処理方式■:PEから変換前データを取り出しそれを対応するテーブル値のアドレスポインタとして使用し、グローバルプロセッサ(Global Processor;GP)がそのアドレスに対応するデータをPEにロードすることによりテーブル変換を実現する。これを全PEについて順に繰り返す。 【0013】なお、後で説明するように、グローバルプロセッサ(GP)は、SIMD型マイクロプロセッサを構成する主要部位である。GPそのものは、SISD型プロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムコードを解読して、各種演算処理やSIMD型マイクロプロセッサ全体に係る各種制御を行なう。 【0014】処理方式■:変換前データが例えば8ビットで表現されるデータである場合、GPにて0から255までインクリメントされるある変数(レジスタ)を設定する。それらの0から255までの値の各々と、各PEにてそれぞれの演算前データと比較し一致すれば各PEの演算結果フラグを変化させる(“1”を立てる)。フラグがセットされるPEにのみ対応する変換後データをロードする。上記変数が0から255までインクリメントされると、テーブル変換が実現される。 【0015】上記処理方式■の場合、同じ演算前データを持つPEが複数存在していても、GPはそのことを把握できる手段が無く、結局、PE数分だけ上記処理を繰り返す必要がある。また、処理方式■の場合、各PEの演算前データの内容をGPが前もって把握する手段が無いため、結局、変換前データの総数、すなわち上記例の場合256回の演算を繰り返す必要がある。 【0016】 【発明が解決しようとする課題】上述のSIMD型マイクロプロセッサにおける各PE内データの非線形処理の高速化を考えた場合、テーブル変換機構を各PE毎に設けることが1つの解決策である。しかし、そうすると回路規模が増大しコスト上不利である。本発明は、ハードウエアの僅かな追加のみで、上記演算の繰り返し(ループ)回数を減らすことを目的とする。 【0017】 【課題を解決するための手段】本発明は、上記目的を達成するためになされたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサである。 【0018】本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサである。 【0019】本発明に係る請求項3に記載の演算処理装置は、請求項1又は請求項2に記載のSIMD型マイクロプロセッサを利用する、演算処理装置である。 【0020】本発明に係る請求項4に記載の画像処理装置は、請求項1又は請求項2に記載のSIMD型マイクロプロセッサを利用する、画像処理装置である。 【0021】本発明に係る請求項5に記載のデータ変換方法は、複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサにおいて、(1)1つのプロセッサエレメントから演算対象データを抽出し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントに対し、上記(3)の演算後データを転送して格納させ、(5)次の1つのプロセッサエレメントを選択し上記(1)以下の処理を繰り返すが、ここで選択したプロセッサエレメントにおいて既に第2の条件フラグが“1”の状態であれば、さらに次の1つのプロセッサエレメントを選択する、テーブル変換方法である。 【0022】本発明に係る請求項6に記載のデータ変換方法は、複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサにおいて、(1)1つの演算対象データを用意し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントに対し、上記(3)の演算後データを転送して格納させ、(5)第3のフラグが“1”ではないならば、次の演算対象データを用意して上記(1)以下の処理を繰り返し、第3のフラグが“1”となるときは、処理を終了する、テーブル変換方法である。 【0023】本発明に係る請求項7に記載のデータ変換方法は、複数のプロセッサエレメントを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持する、SIMD型マイクロプロセッサにおいて、(1)1つのプロセッサエレメントから演算対象データを抽出し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントにおいて、条件成立信号を発生させ、(5)上記の条件成立信号が発生されているプロセッサエレメントに対して、上記(3)の演算後データを転送して格納させ、(6)次の1つのプロセッサエレメントを選択し上記(1)以下の処理を繰り返すが、ここで選択したプロセッサエレメントにおいて既に第2の条件フラグが“1”の状態であれば、さらに次の1つのプロセッサエレメントを選択する、テーブル変換方法である。 【0024】本発明に係る請求項8に記載のデータ変換方法は、複数のプロセッサエレメントと、第3のフラグを有し、各プロセッサエレメントは、第1の条件フラグと第2の条件フラグを備え、第1の条件フラグは、各プロセッサエレメントの演算において所定の条件が成立すれば“1”となり、第2の条件フラグは、各プロセッサエレメントの演算前の自らのフラグ内容と各プロセッサエレメントの演算における上記所定の条件成立との論理和によりフラグ内容が形成され、このフラグ内容において一旦“1”となれば該第2のフラグに対するリセット命令が発行されるまで“1”の状態を保持し、第3の条件フラグは、全ての第2の条件フラグが“1”となるときに限り、“1”となる、SIMD型マイクロプロセッサにおいて、(1)1つの演算対象データを用意し、(2)上記(1)の演算対象データと同じ演算対象データを保持するプロセッサエレメントを確定してそれらプロセッサエレメントの第1の条件フラグ及び第2の条件フラグを“1”の状態にし、(3)上記(1)の演算対象データに対する演算後データを求め、(4)第1の条件フラグが“1”の状態であるプロセッサエレメントにおいて、条件成立信号を発生させ、(5)上記の条件成立信号が発生されているプロセッサエレメントに対して、上記(3)の演算後データを転送して格納させ、(6)第3のフラグが“1”ではないならば、次の演算対象データを用意して上記(1)以下の処理を繰り返し、第3のフラグが“1”となるときは、処理を終了する、テーブル変換方法である。 【0025】本発明に係る請求項9に記載の演算処理方法は、請求項5乃至請求項8に記載のテーブル変換方法を利用する、演算処理方法である。 【0026】本発明に係る請求項10に記載の画像処理方法は、請求項5乃至請求項8に記載のテーブル変換方法を利用する、画像処理方法である。 【0027】 【発明の実施の形態】以下、図面を参照して、本発明に係る好適な実施形態を説明する。 【0028】図5は、本発明に係るSIMD型マイクロプロセッサ2の概略の構成を示すブロック図である。該SIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ4、レジスタファイル6、及び演算アレイ8から構成される。 【0029】(1)グローバルプロセッサ4このグローバルプロセッサ4そのものは、いわゆるSISD型のプロセッサであり、プログラムRAM10とデータRAM12を内蔵し(図6参照)、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの以外に、レジスタファイル6、演算アレイ8にも供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理をおこなう。 【0030】(2)レジスタファイル6PE(プロセッサエレメント)命令で処理されるデータを保持している。PE(プロセッサエレメント)3は、公知のように、SIMD型マイクロプロセッサにおいて個別の演算を実行する構成単位である。図6のレジスタファイル6及び演算アレイ8が示すように、図6のSIMD型マイクロプロセッサ2では256個のPE3を含んでいる。上記のPE命令はSIMD型の命令であり、レジスタファイル6に保持されている複数のデータに対し、同時に同じ処理を行なう。このレジスタファイル6からのデータの読み出し/書き込みの制御はグローバルプロセッサ4からの制御によって行なわれる。読み出されたデータは演算アレイ8に送られ、演算アレイ8での演算処理後にレジスタファイル6に書き込まれる。 【0031】また、レジスタファイル6はプロセッサ2外部からのアクセスが可能であり、グローバルプロセッサ4の制御とは別に、外部から特定のレジスタに対し読み出し/書き込みが行なわれる。 【0032】(3)演算アレイPE命令の演算処理が行なわれる。処理の制御はすべてグローバルプロセッサ4から行なわれる。 【0033】図6は、本発明に係るSIMD型マイクロプロセッサ2の詳細な構成を示すブロック図である。後で説明する、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2(図1)、及び本発明の第2の実施形態に係るSIMD型マイクロプロセッサ2(図2)の共通の基礎となる構成を示すものである。 【0034】グロバールプロセッサ4には、本プロセッサ2のプログラム格納用のプログラムRAM10と、演算データ格納用のデータRAM12が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)14、演算処理のデータ格納のための汎用レジスタであるG0、G1、G2及びG3レジスタ(16、18、20、22)、レジスタ退避・復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)24、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)26、同じくIRQ(Interrupt ReQuest;割込み要求)時とNMI(Non−Maskable Interrupt ReQuest;禁止不能割込み要求)時の分岐元アドレスを保持するLIレジスタ28及びLNレジスタ30、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)32が内蔵されている。 【0035】これらのレジスタと、(図示していない)命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部I/O制御回路及びGP演算制御回路とを使用して、GP命令の実行が行なわれる。 【0036】また、PE命令実行時には、命令デコーダ、(図1及び図2に示されている)レジスタファイル制御回路56、(図示していない)PE演算制御回路を使用して、レジスタファイル6の制御と演算アレイ8の制御が行なわれる。さらに、データRAM12から複数のPEレジスタファイル6にデータを転送できるように、設定されている。 【0037】レジスタファイル6においては、1つのPE単位に8ビットのレジスタ34が32本内蔵されており、256個のPE分の(32本の)組が、アレイ構成になっている。レジスタ34はPE毎に、R0、R1、R2、...R31と呼ばれる。それぞれのレジスタ34は、演算アレイ8に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイ8からアクセスされる。32本のレジスタの内、24本(R0〜R23)はプロセッサ外部からアクセス可能であり、外部からはクロック(CLK)とアドレス(Address)、リード/ライト制御(RWB)を入力することで、任意のレジスタ34に対し、読み書きできる。残りの8本(R24〜R31)のレジスタ34は、PE演算の一時的な演算データ保存用として使用される。 【0038】上記の残りの8本(R24〜R31)のレジスタ34には、グローバルプロセッサ4のデータRAM12からのデータが書き込まれることもある。グローバルプロセッサ4からのライト制御信号と、演算アレイ8内の(後で説明する)条件レジスタ(Tレジスタ)54に格納されるデータ(フラグ)内容とを条件にして、レジスタファイル6に内蔵される8本のレジスタ34(R24〜R31)に対し、グローバルプロセッサ4のデータRAM12のデータが(条件を満たす)複数のPE3に同時に書き込まれる。また、データRAM12は64ビットの出力ポートを備え、1つのPE3に対しても8本のレジスタ34に同時に64ビットの書き込みが可能である。 【0039】演算アレイ8は、16ビットALU36と16ビットAレジスタ38、Fレジスタ40を内蔵している。PE命令による演算は、レジスタファイル6から読み出されたデータ若しくはグローバルプロセッサ4から与えられたデータをALU36の片側の入力とし、Aレジスタ38の内容をもう片側の入力として、行なわれるものである。その演算結果は、Aレジスタ38に格納される。したがって、R0〜R31レジスタ34若しくはグローバルプロセッサ4から与えられたデータと、Aレジスタ38に格納されるデータとの、演算が行なわれることになる。 【0040】レジスタファイル6と演算アレイ8との接続に、7to1(7対1)のマルチプレクサ42が置かれている。図6に示すように、あるマルチプレクサ42から見て、左方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、右方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、自らが属するPE3に含まれるR0〜R31レジスタ34のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル6の8ビットのデータは、シフト・拡張回路44により任意のビット分だけ、左シフトしてALU36に入力する。 【0041】図6では示していないが、図1及び図2で示すように演算アレイ8は、8ビットの条件レジスタ(Tレジスタ)54と、1ビットの条件フラグレジスタ(ESTフラグ)66とを備える。これらのレジスタ54、66は、共に演算アレイ8での演算結果に応じて内容が更新されるのであるが、ESTフラグ66は演算前のESTフラグ66の状態との「or条件」によって内容が更新されるため、一度フラグが「真」に設定されれば、このフラグに対するリセット命令が発行されるまでこの「真」の状態が保たれる。 【0042】Tレジスタ54は、PE3別に演算実行の無効/有効の制御をしており、特定のPE3だけを演算対象として選択できるようになっている。後で説明するように、ESTフラグ66は、分岐命令の条件として機能する。 【0043】また、図示していないが、夫々のPE3には、0から255までの整数が固有のID(IDentification)番号としてハードウエアの構成により付加されている。この構成により、任意のPE3のAレジスタに格納される値が、GP4の汎用レジスタに転送されることも可能である。 【0044】≪第1の実施の形態≫図1は、本発明の第1の実施の形態に係るSIMD型マイクロプロセッサ2の構成を示すブロック図である。図6の本発明に係るSIMD型マイクロプロセッサ2の構成を基礎とするものであるが、・レジスタファイル制御回路56、・テーブルRAM62、・ライトコントロール回路68、・即値データパス53、・条件レジスタ(Tレジスタ)54、・条件選択回路64、・ESTフラグ66なども含まれることを明示している。 【0045】図1のSIMD型マイクロプロセッサ2において、レジスタファイル6に内蔵されるレジスタ34(R24〜R31)には、レジスタファイル制御回路56を介して、テーブルRAM62のデータが入力可能である。ここでテーブルRAM62は、演算データ(変換前データ/変換後データ)の変換テーブルが格納されるRAMである。このテーブルRAM62からレジスタ34へのデータ書き込みは、レジスタファイル制御回路56のライト制御信号により行なわれる。但し、各レジスタ34には各レジスタ34への書き込み制御を行なうライトコントロール回路68が備わり、該ライトコントロール回路68に対し各PE3の演算アレイ8から(後で説明する)条件成立信号が与えられているPE3(のレジスタ34)においてのみ、書き込みがなされる。即ち、テーブルRAM62のデータの書き込みの際に、レジスタファイル制御回路56は全てのPE3における所定のレジスタ34に書き込もうとするが、各PE3において条件成立信号が与えられていればデータが書き込まれ、与えられていなければデータが書き込まれないこととなる。 【0046】レジスタ34は演算アレイ8ともデータの転送をおこなうため、上記のライトコントロール回路68とのポートとは別に、もう一方の出力ポートを持つ。そして、命令コードによりGP4で作成されたリード(R2)制御信号により、演算アレイ8と接続された該ポート(D2)からデータの出力をおこなう。図1では、5個のPE分の構成のみを示しているが、図6の256個のPE3を備えるプロセッサ2を想定するならば、ライトコントロール回路68とレジスタ34とは、(32×256)組必要となる。 【0047】データのビット幅は、ここでは8ビットとしているが、勿論それに限定されるものではない。 【0048】テーブルRAM62は、グローバルプロセッサ4の汎用レジスタ(G0〜G3)に格納されるデータをアドレスのポインタとしてアドレスが指定され、その汎用レジスタ(G0〜G3)のデータが書き込まれることにより、変換後の値が設定される。 【0049】各PE3における演算アレイ部8には、図6にて説明したブロックが内蔵されている。各PE3の演算アレイ部8において、ALU36の入力の片側は、レジスタ(R0〜R31)に格納されるデータと、即値データバス53からのデータとが、選択できるようになっている。即値データバス53には、グローバルプロセッサ4からデータが転送され、命令コードに組みこまれた値(即値)若しくは汎用レジスタ(G0〜G3)の値が命令により選択されている。 【0050】条件フラグレジスタ(ESTフラグ)66については、図示されていない演算アレイ制御部によりGP4の命令によりセット、リセットが可能である。該条件フラグレジスタ(ESTフラグ)66は、演算前のESTフラグ66の状態との「or条件」によって内容が更新されるため、一度フラグが「真」に設定されれば、GP4からの上記命令によりこのフラグに対するリセット命令が発行されるまでこの「真」の状態が保たれる。 【0051】図1に示される、本発明の第1の実施の形態に係るSIMD型マイクロプロセッサ2において、テーブル変換は図3のようなフローチャートに従い行なわれる。なお、演算対象データはR0に格納されているものとして説明する。 【0052】ステップS02:全てのPE3において、ESTフラグ66をリセットする。 【0053】ステップS04:各PE3のレジスタファイル6のレジスタR0に格納された演算対象データを、各PE3のデータパスを介してマルチプレクサ42、シフタ44、マルチプレクサ、ALU36の経路で、Aレジスタ38にロードする。 【0054】ステップS06:ID番号を、先ず、「0」とする。 【0055】ステップS08:グローバルプロセッサ(GP)4は、ID番号のPE3を選択し、そのPE3のESTフラグ66が「真」であれば、(このPE3の演算対象データは変換済みであると見做し、)ステップS24へ分岐する。ESTフラグ66が「真」でない場合は、ステップS10へ進む。 【0056】ステップS10:上記PE3のAレジスタ38に格納されている値を、GP4の汎用レジスタ(G0)へ転送する。 【0057】ステップS12:GP4は、即値データバス53を介して、汎用レジスタ(G0)に格納された上記値を全PE3のALU36に入力する。ALU36のもう一方には、ステップS04で格納されたAレジスタ38の値が入力されており、ALU36において一致演算処理をおこなう。 【0058】ステップS14、ステップS16、ステップS18:上記一致演算処理において一致となっていれば、条件成立として8ビットの条件レジスタ(Tレジスタ)54の所定の1ビットに“1”が格納され、同時に条件フラグレジスタ(ESTフラグ)66も「真」とされる(ステップS16)。上記一致演算処理において一致とならなければ、条件レジスタ(Tレジスタ)54には何もなされない(所定の1ビットは“0”のままである)(ステップS18)。 【0059】ステップ20:GP4は、汎用レジスタ(G0)のデータ即ち変換前データに対応した変換後データが格納されているアドレスを、テーブルRAM62に出力し、変換後データをテーブルデータバスを介して全PE3のレジスタファイル6のレジスタ34に書き込もうとする。 【0060】ステップS22:各PE3の演算アレイ部6では、条件レジスタ(Tレジスタ)54の上記の所定の1ビットを条件選択回路64で選択し、条件成立信号としてレジスタファイル6へ出力する。レジスタファイル6では、各ライトコントロール回路68がライト制御信号と条件成立信号を受け取るのであるが、条件成立信号が存在するPE3においてのみ、テーブルデータバスの内容(変換後データ)がレジスタ34に書き込まれる。 【0061】ステップS24:対象とするPE3のID番号をインクリメントする。 【0062】ステップS26:上記ID番号が、PE数の最大値以下であればステップS08へ戻る。ID番号が、PE数の最大値を超えた時点でテーブル変換は終了する(ステップS28)。 【0063】以上にて説明した本発明の第1の実施の形態では、各PE3内の演算対象データのテーブル変換が終了していることを、一連のテーブル変換手順を繰り返している期間示すことができる条件フラグレジスタ(ESTフラグ)66を搭載する。このことにより、従来技術で示した「処理方式■」において、同一の変換前データを持つPE3のテーブル変換により既に変換済みであるPE3を識別し、そのPE3においてはテーブル変換手順を省く言わばループ・コンティニュー機能を実現している。 【0064】≪第2の実施の形態≫図2は、本発明の第2の実施の形態に係るSIMD型マイクロプロセッサ2の構成を示すブロック図である。図6の本発明に係るSIMD型マイクロプロセッサ2の構成を基礎とするものであるが、第1の実施の形態と同様に、・レジスタファイル制御回路56、・テーブルRAM62、・ライトコントロール回路68、・即値データパス53、・条件レジスタ(Tレジスタ)54、・条件選択回路64、・ESTフラグ66なども含まれることを明示している。更に加えて、各PE3のESTフラグ66の反転情報をOR回路の入力とし、このOR回路からの出力の反転をGSTフラグ70とすることにより、全ESTフラグ66のAND条件をGSTフラグ70とする回路(制御回路)72を構成している。 【0065】本発明の第2の実施形態に係る図2のSIMD型マイクロプロセッサ2を利用するデータ変換は、(1)テーブルの変換前データの総数よりもPE数が十分大きい場合、あるいは、(2)全PE内に格納されている演算対象データの範囲が予め判明している場合に特に有効である。このデータ変換では、図3のフローチャートにおけるデータ変換のように各PEから演算対象データを取り出す、ということをせず、予め判明している演算対象データを順に各PEのALU36へ代入して、比較演算を行なう。 【0066】図2に示される、本発明の第2の実施の形態に係るSIMD型マイクロプロセッサ2において、テーブル変換は図4のようなフローチャートに従い行なわれる。なお、演算対象データはR0に格納されているものとして説明する。さらに、変換前データとしては、(1)0から順にインクリメントしてGP4の汎用レジスタ(G0)にロードされるか、(2)GP4内のデータRAM12に用意しておくかのいずれかであるが、以下の説明では「0から順にインクリメントしてGP4の汎用レジスタ(G0)にロードされる」ものとする。 【0067】ステップS52:全てのESTフラグ66及びGSTフラグ70をリセットする。 【0068】ステップS54:各PE3のレジスタファイル6のレジスタR0に格納された演算対象データを各PE3のデータパスを介してマルチプレクサ42、シフタ44、マルチプレクサ、ALU36の経路でAレジスタ38にロードする。 【0069】ステップS56:汎用レジスタG0に最初の変換前データが用意される。ここでは“0”が用意される。 【0070】ステップS58:GP4は、即値データバス53を介して、汎用レジスタG0に用意された変換前データを全PE3のALU36に入力する。ALU36のもう一方の入力には、ステップS54で格納されたAレジスタ38のデータが入力されており、ALU36において一致演算処理をおこなう。 【0071】ステップS60、ステップS62、ステップS64:上記一致演算処理において一致となっていれば、条件成立として8ビットの条件レジスタ(Tレジスタ)の所定の1ビットに“1”が格納され、同時に条件フラグレジスタ(ESTフラグ)66も「真」とされる。更に、全てのESTフラグ66が「真」とされれば、GSTフラグ70が自動的に「真」にセットされる(ステップS62)。上記一致演算処理において一致とならなければ、条件レジスタ(Tレジスタ)54には何もなされない(所定の1ビットは“0”のままである)(ステップS64)。 【0072】ステップS66:GP4は、汎用レジスタ(G0)のデータ即ち変換前データに対応した変換後データが格納されているアドレスを、テーブルRAM62に出力し、変換後データをテーブルデータバスを介して全PE3のレジスタファイル6のレジスタ34に書き込もうとする。 【0073】ステップS68:各PE3の演算アレイ部6では、条件レジスタ(Tレジスタ)54の上記の所定の1ビットを条件選択回路64で選択し、条件成立信号としてレジスタファイル6へ出力する。レジスタファイル6では、各ライトコントロール回路68がライト制御信号と条件成立信号を受け取るのであるが、条件成立信号が存在するPE3においてのみ、テーブルデータバスの内容(変換後データ)がレジスタに書き込まれる。 【0074】ステップS70:GSTフラグが“1”であるか否かが判断される。“1”であれば、全PE3においてESTフラグ66が「真」である、即ち全PE3においてデータ変換が終了したことを示すから、「終了」になる。“1”でなければ、ステップS72へ進む。 【0075】ステップS72:汎用レジスタG0に次の変換前データが用意される。ここでは汎用レジスタG0のデータがインクリメントされる。そして、ステップS58に戻る。 【0076】以上にて説明した本発明の第2の実施の形態では、従来技術で示した「処理方式■」において、一連のテーブル変換手順を繰り返している際に、全PE3についてテーブル変換が終了したことを検出するためのGSTフラグ70を搭載し、そのGSTフラグ70がセットされた時点でループを終了する言わばループ・ブレイク機能を実現している。 【0077】以上の第1の実施の形態に係るSIMD型マクロプロセッサ2、及び第2の実施の形態に係るSIMD型マイクロプロセッサ2は、様々な演算処理装置において利用することができる。特に、非線型処理が多く、且つ近接するデータや類似するデータに関する変換処理を行なうことが多い画像処理装置において、利用することが有効である。 【0078】 【発明の効果】本発明の第1の実施の形態を利用することにより、同じ変換前データを持つ各PE3内のデータを一度に変換し、更に、既に変換済みのPE3であることの指標としてESTフラグ66を利用するため、重複処理することなく必要最小限のデータ変換処理が可能となり、結果として演算の高速化を図ることができる。 【0079】本発明の第2の実施の形態を利用することにより、全PE3の変換が終了した指標としてGSTフラグ70を利用するため、GP4の全ての変換前データをPE3内の変換前データと必ずしも照らし合わせる必要が無く、無駄な演算を省くことができ、結果として演算の高速化を図ることができる。
|
| 【出願人】 |
【識別番号】000006747 【氏名又は名称】株式会社リコー
|
| 【出願日】 |
平成12年9月29日(2000.9.29) |
| 【代理人】 |
【識別番号】100062144 【弁理士】 【氏名又は名称】青山 葆 (外1名)
|
| 【公開番号】 |
特開2002−108604(P2002−108604A) |
| 【公開日】 |
平成14年4月12日(2002.4.12) |
| 【出願番号】 |
特願2000−300393(P2000−300393) |
|