(57)【特許請求の範囲】
【請求項１】
データ格納手段、演算手段、演算結果格納手段、演算結果フラグが設けられたプロセッサエレメントを複数個備えて構成されるプロセッサエレメント部と、プログラムを解読しプロセッサエレメント部に制御信号を供給するグローバルプロセッサと、を備えたＳＩＭＤ型マイクロプロセッサにおいて、
前記プロセッサエレメントが、
条件付き命令を実行する際に、条件として隣接する前記プロセッサエレメントの前記演算結果フラグを参照する参照手段と、
前記参照手段において参照した結果、自身の前記演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの前記演算結果格納手段に格納されている演算データと、を選択して自身の前記演算結果格納手段に格納する選択手段と、
前記演算結果フラグとして、現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、
が設けられ、
前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグと、
前記一つ前の命令による演算結果フラグと、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、のうち、少なくとも３つ以上の演算結果フラグを参照して、前記選択手段に演算データを選択させる、
ことを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグまたは前記一つ前の命令による演算結果フラグのうちいずれか一方と、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、を参照していることを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は１つの演算命令により複数のデータ等を並列処理するＳＩＭＤ（Single Instruction-stream, Multiple Data-stream）型マイクロプロセッサに関する。
【背景技術】
【０００２】
近年、デジタル複写機やファクシミリ装置などの画像処理装置において、画素数を増加したり、或いはカラー対応にするなどといった画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機等の画像処理装置におけるデータ処理は、全ての画素に対して同じ演算処理を施すことが多い。そこで、１つの命令で複数のデータに対して同時に同じ演算処理を行うＳＩＭＤ方式のマイクロプロセッサが用いられるようになっている。
【０００３】
図１５に従来の一般的なＳＩＭＤ型マイクロプロセッサを示す。図１５に示したＳＩＭＤ型マイクロプロセッサ１０１は、プロセッサエレメント部１０２と、グローバルプロセッサ１０３と、外部入出力１０４と、画像メモリ１０５と、を備えている。
【０００４】
プロセッサエレメント（以下、ＰＥと呼ぶ）部１０２は、複数のＰＥから構成され、各ＰＥはレジスタファイル１０６と、演算部１０７と、を備えている。レジスタファイル１０６では、ＰＥ命令で処理されるデータを保持している。ＰＥ部１０２に対する処理命令であるＰＥ命令はＳＩＭＤタイプの命令であり、レジスタファイル１０６に保持されている複数のデータに同時に同じ処理を行う。このレジスタファイル１０６からのデータの読み出し／書き込みの制御はグローバルプロセッサ１０３からの制御によって行われる。読み出されたデータは演算部１０７に送られ、演算部１０７での演算処理後にレジスタファイル１０６に書き込まれる。また、レジスタファイル１０６はプロセッサ外部からのアクセスが可能であり、グローバルプロセッサ１０３の制御とは別に外部から特定のレジスタの読み出し／書き込みが行われる。演算部１０７では、ＰＥ命令の演算処理が行われる。処理の制御はすべてグローバルプロセッサ１０３から行われる。
【０００５】
グローバルプロセッサ（以下、ＧＰと呼ぶ）１０３は、いわゆるＳＩＳＤ（Single Instruction-stream, Single Data-stream）方式のプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外にもレジスタファイル１０６、演算部１０７へも供給される。また、ＧＰ１０３内の演算器等に対する命令であるＧＰ命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）などを使用して各種演算処理、プログラム制御処理を行う。
【０００６】
外部入出力１０４は、画像メモリ１０５から処理する元の画像データを読み出しＰＥ部１０２のレジスタファイル１０６に書き込む、あるいはレジスタファイル１０６から処理後の画像データを読み出し画像メモリ１０５に書き込む装置である。
【０００７】
画像メモリ１０５は、処理する元の画像データを記憶、処理後の画像データを記憶する記憶装置である。
【０００８】
上述した構成のＳＩＭＤ型マイクロプロセッサ１０１における画像処理において、２値化された画像データがある場合に、０と１の境界を判定して、その結果を記憶させておき、後の処理で使用する場合がある。例えば、ラベリング処理の中の一部がこれに該当する。２値化された画像データが並んでいる場合に、０と１の境界を判定してその結果を格納するまでをＳＩＭＤ型マイクロプロセッサ１０１で行う場合の従来手法について以下に説明する。
【０００９】
図１６はＳＩＭＤ型マイクロプロセッサ１０１のＰＥ部１０２内の構成の一部を抜粋して示している。レジスタファイル１０６は、１６ビットのレジスタＲ０〜Ｒ１５の１６本を備えており、算術演算器（ＡＬＵ）１１０への経路を持つ。レジスタファイル１０６からのデータは、ＰＥシフト１０８により自身のレジスタファイル１０６からのデータおよび隣接するＰＥのレジスタファイル１０６からのデータおよび２つ隣のＰＥのレジスタファイル１０６からのデータのうちいずれかから選択される。ＰＥシフト１０８後のデータは、パイプラインレジスタ１０９に格納される。次に一旦パイプラインレジスタ１０９に格納されたデータがＡＬＵ１１０で演算され、アキュムレータである結果格納レジスタ（Ａレジスタ）１１１に格納される。さらに、Ｚ１レジスタ１１２とＺ２レジスタ１１３は、ＡＬＵ１１０での演算結果がゼロとなった場合に１を格納するゼロフラグレジスタである。Ｔレジスタ１１５は、Ｚ１レジスタ１１２とＺ２レジスタ１１３との論理演算結果を格納する条件レジスタである。図では省略しているが、Ａレジスタ１１１から、自身のレジスタファイル１０６および隣接ＰＥのレジスタファイル１０６および２つ隣のＰＥのレジスタファイル１０６のいずれかに書き込むことが可能となっている。
【００１０】
次に、図１６に示したような構成になっているＳＩＭＤ型マイクロプロセッサ１０１で、例えば図１７上段に示す０と１で２値化された画像データがあり、このときの０と１の境界を判定してその結果を格納するまでの動作を説明する。画像データは、各ＰＥのレジスタＲ０に格納されており、判定結果は条件レジスタであるＴレジスタ１１５に格納するものとする。このような動作は、図１８に示す複数のＰＥ命令によって実施される。
【００１１】
まず命令（１）で、各ＰＥが自身のレジスタＲ０の値を即値０と比較し、そのときＡＬＵ１１０での減算結果がゼロとなる場合にＺ１レジスタ１１２に１が格納される。次に命令（２）で、各ＰＥが右隣のＰＥのレジスタＲ０の値を即値０と比較し、そのときＡＬＵ１１０での減算結果がゼロとなる場合にＺ２レジスタ１１３に１が格納される。最後に命令（３）によって、命令（１）及び命令（２）で求めたＺ１レジスタ１１２とＺ２レジスタ１１３との排他的論理和演算を論理回路１１４にて行い、その結果をＴレジスタ１１５に格納する。これにより、０と１の境界の判定結果を得ることができた（図１７下段）。
【００１２】
図１８に示した命令により、３マシンサイクルで、２値化画像データの境界を求めることができる。なお、上述したＳＩＭＤ型マイクロプロセッサ１０１では、１マシンサイクルで、比較演算などを実施して、その結果のフラグまでを決定できるものである。その後に、さらなる論理演算を実施して、条件レジスタやフラグレジスタ等を更新するのは別の命令で実行する必要がある。
【００１３】
また、画像処理では、隣接する数画素（３〜５画素）と比較して、その中の最大値を求めて、その値を特徴量とすることがある。次に、隣接する画素と含めて３画素の中の最大値を求める処理をＳＩＭＤ型マイクロプロセッサ１０１で行う場合を例に挙げ説明する。
【００１４】
図１９は、図１６と同様に、ＳＩＭＤ型マイクロプロセッサ１０１のＰＥ部１０２内の構成の一部を抜粋して示している。図１９では、Ｚ１レジスタ１１２、Ｚ２レジスタ１１３、論理回路１１４、Ｔレジスタ１１５に代えて、ＡＬＵ１１０の大小比較演算の結果を示す大小比較演算フラグを格納するＣレジスタ１１６が追加されている。
【００１５】
次に、図１９に示したような構成になっているＳＩＭＤ型マイクロプロセッサ１０１で、例えば図２０上段に示す画像データがあり、このうちＰＥ４を対象画像データとして、その両隣の画像データとの３画素中での最大値を求める場合を例に挙げる。画像データは、符号なしの値と考え、各ＰＥのレジスタＲ０に格納されているとする。そのとき、最大値は図２１に示す命令を実施することで求められる。まず命令（１）で、各ＰＥのＡレジスタ１１１にレジスタＲ０の画像データを格納する。次に命令（２）によって、各ＰＥのＡレジスタ１１１のデータとその左隣（ＰＥ番号の小さい方）のレジスタＲ０のデータと比較する。このとき、「Ａレジスタ１１１のデータ＜その左隣のＰＥのレジスタＲ０のデータ」が成立するならば、Ｃレジスタ１１６に１が格納される。これはＡＬＵ演算時のボローフラグがＣレジスタ１１６に入力されることと同じである。「Ａレジスタ１１１のデータ＜その左隣のＰＥのレジスタＲ０のデータ」が成立しないならば、Ｃレジスタ１１６に０が格納される。次に命令（３）によって、対象ＰＥのＡレジスタ１１１を、Ｃレジスタ１１６が１ならば左隣のＰＥのレジスタＲ０のデータで更新し、Ｃレジスタ１１６が０ならばＡレジスタ１１１のデータをそのままとする。
【００１６】
次に命令（４）によって、左隣の場合と同様に、各ＰＥのＡレジスタ１１１のデータとその右隣（ＰＥ番号の大きい方）のレジスタＲ０のデータと比較する。このとき、「Ａレジスタ１１１のデータ＜その右隣のレジスタＲ０のデータ」が成立するならば、Ｃレジスタ１１６に１が格納される。「Ａレジスタ１１１のデータ＜その右隣のレジスタＲ０のデータ」が成立しないならば、Ｃレジスタ１１６に０が格納される。次に命令（５）によって、左隣の場合と同様に、対象ＰＥのＡレジスタ１１１を、Ｃレジスタ１１６が１ならば右隣のＰＥのレジスタＲ０のデータで更新し、Ｃレジスタが０ならばＡレジスタ１１１のデータをそのままとする。図２１に示した命令により、Ａレジスタ１１１に画像データを設定してから、命令（２）から（５）までの合わせて４マシンサイクルで、３つのデータの最大値を求めている。
【００１７】
また、上述した方法以外に、例えば、特許文献１に記載のＳＩＭＤ型マイクロプロセッサに提案された構成でも隣接する数画素の最大値を求めることができる。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
ＳＩＭＤ型マイクロプロセッサにおける画像処理において、隣接する画素データとの演算を必要とする処理は、上述した処理も含め数多く存在する。そのために、できるだけ高速に大量の画像データを処理する場合には、このような処理をできる限り少ない命令数、即ちできるだけ少ないマシンサイクルで実施できることが求められている。
【００１９】
特許文献１に記載されたＳＩＭＤ型マイクロプロセッサは、マシンサイクル数を削減することはできるが、選択ビットや補助ビットをプロセッサエレメントに設け、これらを予め設定する必要があり、これらのビットパターンが複数ある場合はその分を設定するサイクル数や格納領域も必要となる。さらに、命令によって選択ビットや補助ビットの値を変更するためには、変更を指示するための制御信号等も設ける必要がある。
【００２０】
本発明はかかる問題を解決することを目的としている。
【００２１】
すなわち、本発明は、隣接する画素データとの演算を必要とする処理を行う際に、簡単な構成で従来よりも少ないマシンサイクルで実行することができるＳＩＭＤ型マイクロプロセッサを提供することを目的としている。
【課題を解決するための手段】
【００２２】
請求項１に記載された発明は、データ格納手段、演算手段、演算結果格納手段、演算結果フラグが設けられたプロセッサエレメントを複数個備えて構成されるプロセッサエレメント部と、プログラムを解読しプロセッサエレメント部に制御信号を供給するグローバルプロセッサと、を備えたＳＩＭＤ型マイクロプロセッサにおいて、前記プロセッサエレメントが、条件付き命令を実行する際に、条件として隣接する前記プロセッサエレメントの前記演算結果フラグを参照する参照手段と、前記参照手段において参照した結果、自身の前記演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの前記演算結果格納手段に格納されている演算データと、を選択して自身の前記演算結果格納手段に格納する選択手段と、前記演算結果フラグとして、現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、が設けられ、前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、のうち、少なくとも３つ以上の演算結果フラグを参照して、前記選択手段に演算データを選択させる、ことを特徴とするＳＩＭＤ型マイクロプロセッサである。
【００２５】
請求項２に記載された発明は、請求項１に記載された発明において、前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグまたは前記一つ前の命令による演算結果フラグのうちいずれか一方と、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、を参照していることを特徴とする。
【発明の効果】
【００２６】
請求項１に記載の発明によれば、ＰＥ部で条件付き命令を実行する際に、条件として隣接するＰＥの演算結果フラグを参照するための参照手段が設けられているので、隣接する左右の演算結果フラグを参照することが可能となり、隣接するＰＥの演算結果フラグを何等かの条件として使用するような処理がある場合において、全体の処理のマシンサイクル数を削減することができる。
【００２７】
また、参照手段の参照の結果、自身の演算結果格納手段に格納されている演算データと、隣接するＰＥの演算結果格納手段に格納されている演算データと、を選択して自身の演算結果格納手段に格納する選択手段が設けられているので、条件付き命令の条件として使用できる、隣接する左右の演算結果フラグを参照して、自ＰＥの演算結果格納手段もしくは、隣接するＰＥの演算結果格納手段の値を選択して、自ＰＥの演算結果格納手段に格納することができる。
【００２８】
また、参照手段が、自プロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、のうち、少なくとも３つ以上の演算結果フラグを参照して、選択手段を制御しているので、自ＰＥの演算結果格納手段と、隣接または近傍のＰＥの演算結果格納手段とのうちの最大値を求めるといった複数のＰＥの演算結果を用いた動作を従来よりも少ないマシンサイクルで行うことができる。
【００２９】
請求項２に記載の発明によれば、参照手段が、自プロセッサエレメントの現在の命令による演算結果フラグまたは一つ前の命令による演算結果フラグのうちいずれか一方と、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照しているので、自ＰＥの演算結果格納手段と、隣接または近傍のＰＥの演算結果格納手段とのうちの最大値を求める動作を従来よりも少ないマシンサイクルで行うことができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図２】図１に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。
【図３】画像データ０と１の境界を検出する動作の説明図である。
【図４】図１に示したＳＩＭＤ型マイクロプロセッサで画像データの０と１の境界を判定するプログラムである。
【図５】本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。
【図６】最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。
【図７】図５に示したＳＩＭＤ型マイクロプロセッサで自身とその両隣の画像データとの３画素中での最大値を求めるプログラムである。
【図８】フラグレジスタの組み合わせによる選択されるＡレジスタを示した真理値表である。
【図９】図５に示しされたプロセッサエレメント部の論理回路の回路図及び真理値表である。
【図１０】本発明の第３の実施形態にかかるＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。
【図１１】最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。
【図１２】図１０に示したＳＩＭＤ型マイクロプロセッサで自身とその両隣の画像データとの３画素中での最大値を求めるプログラムである。
【図１３】フラグレジスタの組み合わせによる選択されるＡレジスタを示した真理値表である。
【図１４】図１０に示しされたプロセッサエレメント部の論理回路の回路図及び真理値表である。
【図１５】従来のＳＩＭＤ型マイクロプロセッサのブロック図である。
【図１６】図１５に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。
【図１７】画像データ０と１の境界を検出する動作の説明図である。
【図１８】図１５に示したＳＩＭＤ型マイクロプロセッサで画像データの０と１の境界を判定するプログラムである。
【図１９】図１５に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。
【図２０】自身と隣接するＰＥとから最大値を求める動作の説明図である。
【図２１】図１９に示したＳＩＭＤ型マイクロプロセッサで自身とその両隣の画像データとの３画素中での最大値を求めるプログラムである。
【発明を実施するための形態】
【００３１】
［第１実施形態］
以下、本発明の第１の実施形態を、図１ないし図４を参照して説明する。図１は、本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。図２は、図１に示したＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図３は、画像データ０と１の境界を検出する動作の説明図である。図４は、図１に示したＳＩＭＤ型マイクロプロセッサで画像データの０と１の境界を判定するプログラムである。
【００３２】
図１に本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサ１を示す。図１に示したＳＩＭＤ型マイクロプロセッサ１は、プロセッサエレメント（ＰＥ）部２と、グローバルプロセッサ（ＧＰ）３と、外部入出力４と、画像メモリ５と、を備えている。
【００３３】
ＰＥ部２は、複数のＰＥから構成され、各ＰＥはデータ格納手段としてのレジスタファイル６と、演算部７と、を備えている。レジスタファイル６は、ＰＥ命令で処理されるデータを保持している。ＰＥ部２に対する処理命令であるＰＥ命令はＳＩＭＤタイプの命令であり、レジスタファイル６に保持されている複数のデータに同時に同じ処理を行う。このレジスタファイル６からのデータの読み出し／書き込みの制御はＧＰ３からの制御によって行われる。読み出されたデータは演算部７に送られ、演算部７での演算処理後にレジスタファイル６に書き込まれる。また、レジスタファイル６はプロセッサ外部からのアクセスが可能であり、ＧＰ３の制御とは別に外部から特定のレジスタの読み出し／書き込みが行われる。演算部７は、ＰＥ命令の演算処理が行われる。処理の制御はすべてＧＰ３から行われる。また、演算部７は、各ＰＥの演算部７がアレイ状に構成されている。
【００３４】
ＧＰ３は、いわゆるＳＩＳＤ（Single Instruction-stream, Single Data-stream）方式のプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号を内蔵する各種ブロックの制御以外にもレジスタファイル６、演算部７へも供給される。また、ＧＰ３内の演算器等に対する命令であるＧＰ命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）などを使用して各種演算処理、プログラム制御処理を行う。
【００３５】
外部入出力４は、画像メモリ５から処理する元の画像データを読み出しＰＥ部２のレジスタファイル６に書き込む、あるいはレジスタファイル６から処理後の画像データを読み出し画像メモリ５に書き込む装置である。
【００３６】
画像メモリ５は、処理する元の画像データを記憶、処理後の画像データを記憶する記憶装置である。
【００３７】
図２はＳＩＭＤ型マイクロプロセッサ１のＰＥ部２内の構成の一部を抜粋して示している。図２では、ＰＥ３、ＰＥ４、ＰＥ５の３つのＰＥを抜粋している。また、ＰＥ３、ＰＥ４、ＰＥ５と表示した数字部分はＰＥ番号を示し、本実施形態では、ＰＥ４から見て、ＰＥ３は左隣に配置、ＰＥ５は右隣に配置されているものとする。
【００３８】
レジスタファイル６は、１６ビットのレジスタＲ０〜Ｒ１５の１６本を備えており、後述する演算部７の算術演算器（ＡＬＵ）１０への経路を持つ。
【００３９】
演算部７は、ＰＥシフト８と、パイプラインレジスタ９、演算手段としてのＡＬＵ１０と、演算結果格納手段としての結果格納レジスタ１１と、演算結果フラグとしてのＺ１レジスタ１２と、参照手段としての論理回路１３と、Ｔレジスタ１４と、を備えている。
【００４０】
レジスタファイル６からのデータは、ＰＥシフト８により自身のレジスタファイル６からのデータおよび隣接するＰＥのレジスタファイル６および２つ隣のＰＥのレジスタファイル６からのデータのうちいずれかから選択される。ＰＥシフト８後のデータは、パイプラインレジスタ９に格納される。次に一旦パイプラインレジスタ９に格納されたデータがＡＬＵ１０で演算され、アキュムレータである結果格納レジスタ（Ａレジスタ）１１に格納される。Ｚ１レジスタ１２は、ＡＬＵ１０での演算結果がゼロとなった場合に１を格納するゼロフラグレジスタである。論理回路１３は自ＰＥのＺ１レジスタ１２の値と隣接するＰＥ（本実施形態では右隣のＰＥ）のＺ１レジスタ１２の値との論理演算を行う。Ｔレジスタ１４は、論理回路１３の結果を格納する条件レジスタである。図では省略しているが、Ａレジスタ１１から、自身のレジスタファイル６および隣接ＰＥのレジスタファイル６および２つ隣のＰＥのレジスタファイル６に書き込むことが可能となっている。
【００４１】
次に、従来技術において例に挙げた画像処理を、図１や図２に示した構成で実施した場合を説明する。図３上段に示す画像データは図１７と同じデータである。この画像データの０と１の境界を判定してその結果を格納するまでを説明する。画像データは、各ＰＥのレジスタＲ０に格納されており、判定結果は条件レジスタであるＴレジスタ１４に格納するものとする。
【００４２】
このような動作は、図４に示す複数のＰＥ命令によって実施される。まず命令（１）で、各ＰＥが自身のレジスタＲ０の値を即値０と比較し、そのときＡＬＵ１０での減算結果がゼロとなる場合にＺ１レジスタ１２に１が格納される。そして、命令（２）で、自ＰＥのＺ１レジスタ１２と右隣のＰＥのＺ１レジスタの排他的論理和を論理回路１３で演算し、その結果を自ＰＥのＴレジスタ１４に格納する。これにより、０と１の境界の判定結果を得ることができた（図３下段）。つまり、本実施形態では命令（２）が条件付き命令に該当し、命令実行時に隣接するＰＥの演算結果フラグを直接参照している。そして、本実施形態では、２マシンサイクルで画像データの０と１の境界を判定し結果を格納することができる。
【００４３】
なお、本実施形態では図２に示したように右隣のＰＥのＺ１レジスタを参照していたが、左隣を参照してもよい。或いは参照する方向を左右切り替えられるようにしてもよい。
【００４４】
本実施例によれば、ＰＥ部２で条件付き命令を実行する際に、条件として隣接するＰＥのＺ１レジスタ１２を参照するための論理回路１３が設けられているので、隣接する左右のＺ１レジスタ１２を参照することが可能となり、隣接するＰＥのＺ１レジスタ１２を用いて０と１の境界を検出する処理において、従来の３マシンサイクルから２マシンサイクルへ１マシンサイクル削減することができる。
【００４５】
［第２実施形態］
次に、本発明の第２の実施形態を図５ないし図９を参照して説明する。なお、前述した第１の実施形態と同一部分には、同一符号を付して説明を省略する。図５は、本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図６は、最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。図７は、図５に示したＳＩＭＤ型マイクロプロセッサで自身とその両隣の画像データとの３画素中での最大値を求めるプログラムである。図８は、フラグレジスタの組み合わせによる選択されるＡレジスタを示した真理値表である。図９は、図５に示されたプロセッサエレメント部の論理回路の回路図及び真理値表である。
【００４６】
本実施形態では、第１の実施形態に対して、Ｚ１レジスタ１２と、論理回路１３と、Ｔレジスタ１４を削除して、選択手段としてのセレクタ１５と、現在の命令による演算結果フラグとしてのＣ１レジスタ１６と、一つ前の命令による演算結果フラグとしてのＣ２レジスタ１７と、参照手段としての論理回路１８と、が追加されている。なお、Ｚ１レジスタ１２と、論理回路１３と、Ｔレジスタ１４は削除せずに残しても良い。
【００４７】
本実施形態では、Ａレジスタ１１の手前にセレクタ１５があり、この入力として、自身のＡＬＵ１０の演算結果（自身のＡレジスタ１１の値）の他に、左右両隣のＰＥのＡレジスタ１１の値を選択することが可能となっている。即ち、自プロセッサエレメントの演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの演算結果格納手段に格納されている演算データと、を選択して自プロセッサエレメントの演算結果格納手段に格納している。
【００４８】
Ｃ１レジスタ１６は、ＡＬＵ１０での大小比較演算結果を示す大小比較演算結果フラグレジスタである。Ｃ２レジスタ１７は、一つ前の命令による大小比較演算結果を示す大小比較演算結果フラグレジスタである。論理回路１８は、自ＰＥのＣ２レジスタ１７の値と、隣接するＰＥの（本実施形態では右隣のＰＥ）のＣ１レジスタ１６およびＣ２レジスタ１７の値との論理演算を行う。即ち、自プロセッサエレメントの一つ前の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照している。
【００４９】
次に、図５に示したような構成になっているＳＩＭＤ型マイクロプロセッサ１で、例えば図６上段に示す画像データがあり、このうちＰＥ４を対象画像データとして、その両隣の画像データとの３画素中での最大値を求める場合の動作を説明する。画像データは、符号なしの値と考え、各ＰＥのレジスタＲ０に格納されているとする。そのとき、最大値は図７に示す命令を実施することで求められる。まず命令（１）で、各ＰＥのＡレジスタ１１にレジスタＲ０の画像データを格納する。次に命令（２）で比較演算を実施し、フラグを更新している。この命令によって、各ＰＥのＡレジスタ１１のデータとその左隣（ＰＥ番号の小さい方）のレジスタＲ０のデータと比較する。このとき、「Ａレジスタ１１のデータ＜その左隣のレジスタＲ０のデータ」が成立するならば、その結果Ｃ１レジスタ１６に１が格納される。これはＡＬＵ演算時のボローフラグがＣ１レジスタ１６に入ることと同じである。「Ａレジスタ１１のデータ＜その左隣のレジスタＲ０のデータ」が成立しないならば、Ｃ１レジスタ１６に０が格納される。
【００５０】
次に、命令（３）でも比較演算を実施し、フラグを更新している。この命令によって、各ＰＥのＡレジスタ１１のデータとその２つ左隣（ＰＥ番号の小さい方）のレジスタＲ０のデータと比較する。このときも命令（２）と同様に、「Ａレジスタ１１のデータ＜その２つ左隣のレジスタＲ０のデータ」が成立するならば、その結果Ｃ１レジスタ１６に１が格納される。「Ａレジスタ１１のデータ＜その２つ左隣のレジスタＲ０のデータ」が成立しないならばＣ１レジスタ１６に０が格納される。同時にＣ１レジスタ１６からＣ２レジスタ１７へ前回命令（演算）のＣ１レジスタ１６の結果をＣ２レジスタ１７に退避する。命令（２）と（３）により、Ｃ１レジスタ１６とＣ２レジスタ１７には、それぞれ、２つ左隣のレジスタＲ０のデータとの比較結果フラグと、左隣のレジスタＲ０のデータとの比較結果フラグが格納された。最後に命令（４）では、対象ＰＥのＡレジスタ１１を、自ＰＥもしくは、左右のＰＥの３つの中の最大値であるＡレジスタ１１のデータで更新する。このとき、最大値は、隣接ＰＥのＣ１レジスタ１６とＣ２レジスタ１７の結果を論理回路１８が参照して決定する。この論理の真理値表を図８に、論理回路１８の回路図を図９に示す。つまり、本実施形態では命令（４）が条件付き命令に該当し、命令実行時に演算結果フラグを参照している。
【００５１】
図８は上述したようにＰＥ４を対象画像データ（自ＰＥ）とした場合の真理値表である。Ａ選択とはＡレジスタのうちどれが選択されるかを示している。状態無しとは、その状態がとり得ないことを示している。例えば、Ｃ２（ＰＥ４）が０、Ｃ２（ＰＥ５）が０、Ｃ１（ＰＥ５）が１の組み合わせは、ＰＥ３＜ＰＥ４＜ＰＥ５かつＰＥ３＞ＰＥ５であることを示しており、このような状態はとり得ない状態であることが分かる。また、図９の回路において、出力ＴＸは勿論セレクタ１５の選択制御信号である。
【００５２】
本実施形態で図６の画像データを図７のプログラムで処理した場合、左隣のＰＥ３のデータが最大値と求まる。そして、Ａレジスタ１１に画像データを設定してから、命令（２）、命令（３）、命令（４）の合わせて３マシンサイクルで、３つのデータの最大値を求めることが可能となる。
【００５３】
なお、Ｃ１レジスタ１６とＣ２レジスタ１７は、このようにパイプライン構成に限られることは無く、Ｃ２レジスタに一つ前の演算結果によるフラグを格納できれば自由に構成してよい。
【００５４】
本実施形態によれば、右隣のＰＥのＣ１レジスタ１６の値と、Ｃ２レジスタ１７の値と、自ＰＥのＣ２レジスタ１７の値と、を参照して、セレクタ１５を制御しているので、自ＰＥのＡレジスタ１１と、隣接ＰＥのＡレジスタ１１とのうちの最大値を求める動作を従来の４マシンサイクルから３マシンサイクルへ１マシンサイクル削減することができる。
【００５５】
また、上述した実施形態では右隣のＰＥのＣ１レジスタおよびＣ２レジスタ（演算結果フラグ）のみを参照していたが、左隣のＰＥのＣ１レジスタおよびＣ２レジスタを参照してもよい。また、左右のＰＥのＣ１レジスタまたはＣ２レジスタを参照しても実現可能である。例えば、上述した実施形態で命令（２）を左隣のＰＥのレジスタＲ０と比較するのではなく右隣のＰＥのレジスタＲ０と比較するように変更する。すると、最大値を求める際に必要な演算結果フラグが左隣のＰＥのＣ２レジスタと自ＰＥのＣ２レジスタと右隣のＰＥのＣ１レジスタとなる。このようにしても上述した実施形態と同様に最大値を求めることができる。
【００５６】
［第３実施形態］
次に、本発明の第３の実施形態を図１０ないし図１４を参照して説明する。なお、前述した第１、第２の実施形態と同一部分には、同一符号を付して説明を省略する。図１０は、本発明の第３の実施形態にかかるＳＩＭＤ型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図１１は、最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。図１２は、図１０に示したＳＩＭＤ型マイクロプロセッサで自身とその両隣の画像データとの３画素中での最大値を求めるプログラムである。図１３は、フラグレジスタの組み合わせによる選択されるＡレジスタを示した真理値表である。図１４は、図１０に示されたプロセッサエレメント部の論理回路の回路図及び真理値表である。
【００５７】
本実施形態では、第２の実施形態に対して、参照手段としての論理回路１８´に入力される自ＰＥ側のレジスタがＣ２レジスタ１７からＣ１レジスタ１６に変更されている点が異なる。即ち、自プロセッサエレメントの現在の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照している。
【００５８】
次に、図１０に示したような構成になっているＳＩＭＤ型マイクロプロセッサ１で、例えば図１１上段に示す画像データがあり、このうちＰＥ４を対象画像データとして、その両隣の画像データとの３画素中での最大値を求める場合の動作を説明する。画像データは、符号なしの値と考え、各ＰＥのレジスタＲ０に格納されているとする。そのとき、最大値は図１２に示す命令を実施することで求められる。図１２の命令列における図７との違いは、命令（２）と命令（３）の命令順が入れ替わったことのみである。まず命令（１）で、各ＰＥのＡレジスタ１１にレジスタＲ０の画像データを格納する。次に命令（２）で比較演算を実施し、フラグを更新している。この命令によって、各ＰＥのＡレジスタ１１のデータとその２つ左隣（ＰＥ番号の小さい方）のレジスタＲ０のデータと比較する。このとき、「Ａレジスタ１１のデータ＜その２つ左隣のレジスタＲ０のデータ」が成立するならば、その結果Ｃ１レジスタ１６に１が格納される。これはＡＬＵ演算時のボローフラグがＣ１レジスタ１６に入ることと同じである。「Ａレジスタ１１のデータ＜その２つ左隣のレジスタＲ０のデータ」が成立しないならば、Ｃ１レジスタ１６に０が格納される。
【００５９】
次に、命令（３）でも比較演算を実施し、フラグを更新している。この命令によって、各ＰＥのＡレジスタ１１のデータとその左隣（ＰＥ番号の小さい方）のレジスタＲ０のデータと比較する。このときも命令（２）と同様に、「Ａレジスタ１１のデータ＜その左隣のレジスタＲ０のデータ」が成立するならば、その結果Ｃ１レジスタ１６に１が格納される。「Ａレジスタ１１のデータ＜その左隣のレジスタＲ０のデータ」が成立しないならばＣ１レジスタ１６に０が格納される。同時にＣ１レジスタ１６からＣ２レジスタ１７へ前回命令（演算）のＣ１レジスタ１６の結果をＣ２レジスタ１７に退避する。命令（２）と（３）により、Ｃ１レジスタとＣ２レジスタには、それぞれ、左隣のレジスタＲ０のデータとの比較結果フラグと、２つ左隣のレジスタＲ０のデータとの比較結果フラグが格納された。最後に命令（４）では、対象ＰＥのＡレジスタ１１を、自ＰＥもしくは、左右のＰＥの３つの中の最大値であるＡレジスタ１１のデータで更新する。このとき、最大値は、隣接ＰＥのＣ１レジスタとＣ２レジスタの結果を論理回路１８´が参照して決定する。この論理の真理値表を図１３に、論理回路１８の回路図を図１４に示す。
【００６０】
本実施形態で図１１の画像データを図１２のプログラムで処理した場合、左隣のＰＥ３のデータが最大値と求まる。そして、Ａレジスタ１１に画像データを設定してから、命令（２）、命令（３）、命令（４）の合わせて３マシンサイクルで、３つのデータの最大値を求めることが可能となる。
【００６１】
本実施形態によれば、右隣のＰＥのＣ１レジスタ１６の値と、Ｃ２レジスタ１７の値と、自ＰＥのＣ１レジスタ１６の値と、を参照して、セレクタ１５を制御しているので、自ＰＥのＡレジスタ１１と、隣接ＰＥのＡレジスタ１１とのうちの最大値を求める動作を従来の４マシンサイクルから３マシンサイクルへ１マシンサイクル削減することができる。
【００６２】
また、上述した第２、第３の実施形態では、自ＰＥと近傍のＰＥ（自ＰＥを中心として左右２ＰＥ）との５つのデータの中の最大値に関しても、上述した動作を２度繰り返し実行すればよく、６マシンサイクルで可能である。また、最小値を求めたい場合も同様に実施できる。
【００６３】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００６４】
１          ＳＩＭＤ型マイクロプロセッサ
２          プロセッサエレメント部
３          グローバルプロセッサ
６          レジスタファイル（データ格納手段）
７          演算部
１０        ＡＬＵ（演算手段）
１１        結果格納レジスタ（演算結果格納手段）
１２        Ｚ１レジスタ（演算結果フラグ）
１３        論理回路（参照手段）
１４        Ｔレジスタ
１５        セレクタ（選択手段）
１６        Ｃ１レジスタ（演算結果フラグ）
１７        Ｃ２レジスタ（一つ前の命令による演算結果フラグ）
１８        論理回路（参照手段）
１８´      論理回路（参照手段）
【先行技術文献】
【特許文献】
【００６５】
【特許文献１】特開２００２−２２９９６２号公報
【図１】
0005463799.tif 000002
【図２】
0005463799.tif 000003
【図３】
0005463799.tif 000004
【図４】
0005463799.tif 000005
【図５】
0005463799.tif 000006
【図６】
0005463799.tif 000007
【図７】
0005463799.tif 000008
【図８】
0005463799.tif 000009
【図９】
0005463799.tif 000010
【図１０】
0005463799.tif 000011
【図１１】
0005463799.tif 000012
【図１２】
0005463799.tif 000013
【図１３】
0005463799.tif 000014
【図１４】
0005463799.tif 000015
【図１５】
0005463799.tif 000016
【図１６】
0005463799.tif 000017
【図１７】
0005463799.tif 000018
【図１８】
0005463799.tif 000019
【図１９】
0005463799.tif 000020
【図２０】
0005463799.tif 000021
【図２１】
0005463799.tif 000022