(57)【要約】【課題】全ての画素データの最大値・最小値を求めるＳＩＭＤ型マイクロプロセッサにおいて、動作時のステップの時間を短縮し、動作周波数を向上させる。【解決手段】ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第１のデータバスとを備え、更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、前記バス接続制御部は、第１のデータバスの内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第１のデータバスへ出力する手段とを備える。【選択図】図３
2007108913.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
前記バス接続制御部は、第１のデータバスの内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第１のデータバスへ出力する手段とを備えることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、第１のデータバスの内容を記憶する記憶手段と、該記憶手段の内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第１のデータバスへ出力する手段とを備えることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項３】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
各ＰＥは、ｎ個（ｎは２以上の自然数）のデータを同時に取り扱う構成を有し、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続するｎ本の第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、ｎ本の第１のデータバスの内容の論理和を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をｎ本の第１のデータバスへ出力する手段とを備えることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項４】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
各ＰＥは、ｎ個（ｎは２以上の自然数）のデータを同時に取り扱う構成を有し、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部に接続するｎ本の第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、ｎ本の第１のデータバスの内容の論理和を記憶する記憶手段と、該記憶手段の内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をｎ本の第１のデータバスへ出力する手段とを備えることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ；単一命令多データ処理）型マイクロプロセッサに関する。
【背景技術】
【０００２】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理（例えば、画像処理）に係る用途において、頻用される。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ〔ＰＥ〕；プロセッサエレメント）を並べ同一の演算を同時に複数のデータに対して実行する。
【０００４】
ところで画像処理では、全ての画素データの最大値あるいは最小値を求め、それを特徴量として画像処理の計算式を設定するという処理を行うことがある。同時に多データを演算できるという特徴が画像処理に向いているとされるＳＩＭＤ型プロセッサにおいて、各ＰＥに格納される画素データを最大値あるいは最小値検出の対象とする方法・構成が、幾つか構築され提案されている。
【０００５】
特許文献１や特許文献２などで提案されている方法は、基本的に逐次処理である。この逐次処理は、全てのＰＥから対象画素データを読み出し、逐次大小比較を行った結果大きい方を残す、あるいは小さい方を残すことで、全対象画素データの最大値あるいは最小値を求めるというものである。このような処理では、検出までに要する時間が、対象画素の数が大きくなるに従い大きくなるという特徴がある。従って、ＰＥ数が大きい場合にはこのような方法は適切なものではない。
【０００６】
特許文献３では、多数のＰＥを備えるＳＩＭＤ型マイクロプロセッサにおける最大値若しくは最小値の検出方式が、提案されている。ここで提案される検出方式は、原理的には特許文献４で開示されている方式と同じである。
【０００７】
上記方式では、各ＰＥに条件フラグを設け、全画素データを対象に最上位桁からビット毎に比較を行い、他ＰＥのデータが自ＰＥのデータより大きい（小さい）場合に条件フラグをオフとし、条件フラグがオフになったＰＥを以降の比較には参加させないようにして、順次下位ビットへ比較を進める仕組みが構築されている。
【０００８】
特許文献４の方式では、最下位ビットの比較が完了した段階で最後まで条件フラグがオン状態であったＰＥの画素データが最大値（最小値）ということになる。対象画素データのビット幅分に応じた処理時間を要することになるが、原理的に対象データ数には制限がなく、従ってＰＥ数の大きいＳＩＭＤ型マイクロプロセッサに適しているといえる。
【０００９】
しかしながら、原理的に対象データ数の制限はないのであるが、ＰＥ数が大きくなり対象データ数が増えると１回の比較ステップの処理時間が長くなる。このことを改善するため、特許文献３に示すＳＩＭＤ型マイクロプロセッサでは、ＰＥを小グループ（以下、セグメントと言う）に分け、セグメント内での比較をする比較装置と全セグメントを対象にする比較装置を設けるという２段構成を採用している。
【００１０】
図３は、従来技術である特許文献３に開示される最大値（最小値）検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。図３では全体で２５６個のＰＥを備えるプロセッサを想定しており、１６個のＰＥ（ＰＥ０、ＰＥ１、・・・）で１つのセグメントを形成している。
【００１１】
各セグメントは１６個のＰＥ（ＰＥ０、ＰＥ１、・・・ＰＥ１５）と１個のバス接続制御部８０を持ち、１６個のＰＥと１個のバス接続制御部８０は、共通データバスＡ５１に対し入出力可能とされている。各ＰＥは、画素データを格納するＡレジスタ３８と、条件フラグＴ４６を備えている。ＰＥは、条件フラグＴ４６がオンの間（“１”の間）出力ドライバ７２により共通データバスＡ５１に出力可能であるが、条件フラグＴ４６がオフ（“０”）のときには出力できない。共通データバスＡ５１は、いわゆるプリチャージバスであり、ＰＣＫ１信号がｌｏｗの期間にはプリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ１信号がｈｉｇｈの期間には各ＰＥの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【００１２】
最大値算出のための比較は最上位ビットから下位ビットへビット単位で行われる。最初、全てのＰＥの条件フラグＴ４６は１（オン）にセットされた上で、最上位ビットから比較が行われる。以下に示すように、比較対象のビットが１である画素データを持つＰＥは、共通データバスＡ５１に０を出力する。
【００１３】
各ＰＥは判定回路５０を備えている。判定回路５０は、自身の条件フラグＴ４６の内容、自身の（比較対象のビットの）データ内容、及び共通データバスＡ５１の内容に基づいて、下の表１のように自身の条件フラグＴ４６の次の内容を決定する。この判定回路５０への入力組み合わせは８通りある。
【００１４】
【表１】
2007108913.tif 000003
【００１５】
条件フラグＴ４６が１（オン）、比較対象ビットデータが１のときには、そのＰＥ自身が共通データバスＡ５１へ０を出力するため、共通データバスＡ５１が１になることはないので、上記表１の（８）は出現しない。また、ＰＥ自身が０を共通データバスＡ５１へ出力していなくとも他のＰＥの出力により共通データバスＡ５１が０になると、次の条件フラグは０（オフ）となる（上記（５）参照）。一度オフになると、この判定回路からはオンには戻らない（上記（１）〜（４）参照）。
【００１６】
また、図３のＳＩＭＤ型マイクロプロセッサでは、１６個のＰＥ単位でセグメントを構成し、全体では２５６個のＰＥが備わるという想定であるから１６個のセグメントが存在する。更に、夫々のセグメントのバス接続制御部８０は、共通データバスＢ５２と接続する。バス接続制御部８０は、共通データバスＡ５１の内容を共通データバスＢ５２に出力する出力ドライバ８２と、共通データバスＢ５２の内容を共通データバスＡ５１へ出力する出力ドライバ８６を備える。このようにすることにより、共通データバスＡ５１と共通データバスＢ５２の内容は同じ状態となる。
【００１７】
共通データバスＢ５２もプリチャージバスであり、ＰＣＫ３信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ３信号がｈｉｇｈの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【００１８】
図３に示すＳＩＭＤ型マイクロプロセッサの動作を説明する。最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのＰＥの条件フラグは１（オン）にセットされた上で、最上位ビットの比較が行われる。最上位ビットが１である画素データを持つＰＥは、共通データバスＡ５１に０を出力する。このとき、このＰＥと同じセグメントに存在するＰＥで画素データの最上位が０であるＰＥは、判定回路５０が上記表１の（５）の動作を行うため、自身の条件フラグＴ４６を０（オフ）にする。
【００１９】
このセグメントの共通データバスＡ５１が０になったことを受けて、このセグメントのバス接続制御部８０が共通データバスＢ５２に０を出力する。共通データバスＢ５２が０になったため、他のセグメントにおいても、共通データバスＢ５２の内容０がそれぞれの共通データバスＡ５１へ反映される。バス接続制御部８０のドライバ８６によって０となった共通データバスＡ５１を持つセグメントにおいては、ＰＥの持つ画素データの最上位ビットが０であるＰＥは、判定回路５０が上記表１の（５）の動作を行うため、自身の条件フラグＴ４６を０（オフ）にする。
【００２０】
このように２５６個のＰＥのうち、最上位ビットが１であるＰＥが一つでも存在する場合、最上位ビットが０である画素データをもつＰＥの条件フラグＴ４６は０（オフ）となる。逆に、２５６個のＰＥすべての最上位ビットが０である場合、共通データバスＡ５１に０を出力するＰＥは存在せず、全てのＰＥの判定回路５０が上記（６）の動作を行うため、全てのＰＥにおける条件フラグＴ４６は１（オン）を維持する。
【００２１】
最上位ビットの比較が完了すると、次は上位から２番目のビットによる比較を行う。このときすでに条件フラグＴ４６が０（オフ）になったＰＥは、共通データバスＡ５１への出力ができないため、比較対象からはずれた扱いとなる。条件フラグＴ４６が１（オン）であるＰＥの画素データだけが比較対象になる。
【００２２】
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの比較が完了した時点で条件フラグＴ４６が１（オン）となっているＰＥに最大値が含まれていることになる。
【００２３】
しかしながら、上記の従来技術では、各ステップの実行時間の短縮化を狙おうとしても、次の条件の下での動作の遅滞が障害となりうる。
【００２４】
画素データの比較対象ビットに１を含んでいるＰＥが全ＰＥ中でただひとつであり、残りのＰＥがすべて０である場合を取り上げてみる。このとき、まず１を含むＰＥの出力ドライバ７２がそのＰＥを含むセグメントの共通データバスＡ５１に０を出力する。ここでまず、複数のＰＥ（の出力ドライバ７２）が出力するよりも一つのＰＥ（の出力ドライバ７２）が出力する方が、時間がかかる。共通データバスＡ５１が０になると、次はそのセグメントのバス接続制御部８０の出力ドライバ８２が共通データバスＢ５２に０を出力する。このとき、複数のセグメント（の出力ドライバ８２）が出力するよりも一つのセグメント（の出力ドライバ８２）が出力する方が、時間がかかる。共通データバスＢ５２が０になったことを受けて、出力したセグメントを除く１５個のセグメントでは、夫々の共通データバスＡ５１に０が出力されるが、このときもセグメント内のＰＥからの接続（出力）がないため、もっとも時間がかかってしまう。そして、共通データバスＡ５１へ反映された内容を基にして各ＰＥでの判定回路５０が作動する。
【００２５】
上記のように動作の遅いバスを３回ドライブするケースが最長時間経路となる。このような動作を反映できる時間を確保する必要があるから、各ステップの動作時間短縮に限界が生じる。
【００２６】
なお、特許文献５も、全ＰＥに格納されるデータから最大値を取り出すＳＩＭＤ型プロセッサを開示している。
【特許文献１】特開２００１−２６５５９２公報
【特許文献２】特開平０８−０３０５７７号公報
【特許文献３】特開２００２−２０７７０６公報
【特許文献４】特開平０５−１００８２４号公報
【特許文献５】特許第３０９６３８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２７】
本発明は、全ての画素データの最大値あるいは最小値を求め、それを特徴量として画像処理の計算式を設定するという処理を行おうとするＳＩＭＤ型マイクロプロセッサにおいて、動作時のステップの時間を短縮し、動作周波数を向上することを目的とする。
【課題を解決するための手段】
【００２８】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項１に記載のＳＩＭＤ型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
前記バス接続制御部は、第１のデータバスの内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第１のデータバスへ出力する手段とを備えることを特徴とする。
【００２９】
本発明に係る請求項２に記載のＳＩＭＤ型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、第１のデータバスの内容を記憶する記憶手段と、該記憶手段の内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第１のデータバスへ出力する手段とを備えることを特徴とする。
【００３０】
本発明に係る請求項３に記載のＳＩＭＤ型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
各ＰＥは、ｎ個（ｎは２以上の自然数）のデータを同時に取り扱う構成を有し、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続するｎ本の第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、ｎ本の第１のデータバスの内容の論理和を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をｎ本の第１のデータバスへ出力する手段とを備えることを特徴とする。
【００３１】
本発明に係る請求項４に記載のＳＩＭＤ型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型マイクロプロセッサであって、
各ＰＥは、ｎ個（ｎは２以上の自然数）のデータを同時に取り扱う構成を有し、
前記ＳＩＭＤ型マイクロプロセッサは、少なくとも２個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、１個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部に接続するｎ本の第１のデータバスとを備え、
更に前記ＳＩＭＤ型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第２のデータバスを備え、
バス接続制御部は、ｎ本の第１のデータバスの内容の論理和を記憶する記憶手段と、該記憶手段の内容を第２のデータバスへ出力する手段と、第１のデータバスと第２のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をｎ本の第１のデータバスへ出力する手段とを備えることを特徴とする。
【発明の効果】
【００３２】
本発明を利用することにより、最大値（若しくは最小値）検出回路を伴うＳＩＭＤ型マイクロプロセッサにおいて、比較のための個々のステップの時間を短くでき、このことにより動作ステップを短縮して全体の動作周波数を向上することが可能となり得る。
【発明を実施するための最良の形態】
【００３３】
図１は、本発明に係るＳＩＭＤ型マイクロプロセッサの概略の構成を示すブロック図である。
【００３４】
（１）グローバルプロセッサ４
このブロックは、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｓｉｎｇｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプのプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は、内蔵する各種ブロックだけでなくレジスタファイル６や演算アレイ８にも供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理を行う。
【００３５】
（２）レジスタファイル６
ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ命令はＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ，  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  Ｓｔｒｅａｍ）タイプの命令であり、レジスタファイル６に保持されている複数のデータに対して同時に同じ処理を行う。このレジスタファイル６からのデータの読み出し／書き込みの制御はグローバルプロセッサ４からの制御によって行われる。読み出されたデータは演算アレイ８に送られ、演算アレイ８での演算処理後にレジスタファイル６に書き込まれる。
【００３６】
また、レジスタファイル６はプロセッサ外部からのアクセスが可能であり、グローバルプロセッサ４とは別に外部から読み出し／書き込みが行われ得る。
【００３７】
（３）演算アレイ８
演算アレイ８は、ＰＥ命令の演算処理を行う。処理の制御はすべてグローバルプロセッサ４から為される。
【００３８】
図２は、ＳＩＭＤ型マイクロプロセッサの詳細な構成を示すブロック図である。
【００３９】
グローバルプロセッサ４には、本ＳＩＭＤ型マイクロプロセッサのプログラム格納用のプログラムＲＡＭ１０と演算データ格納用のデータＲＡＭ１２が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）１４、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ（１６、１８、２０、２２）、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）２４、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）２６、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ（２８、３０）、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）３２が内蔵されている。
【００４０】
これらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してＧＰ命令の実行が行われる。また、ＰＥ命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、ＰＥ演算制御回路を使用して、レジスタファイル６の制御と演算アレイ８の制御を行う。
【００４１】
レジスタファイル６には、１つのＰＥ単位に８ビットのレジスタが３２本内蔵されており、２５６ＰＥ分の組がアレイ構成になっている。ＰＥ毎の３２本のレジスタには、Ｒ０、Ｒ１、Ｒ２、・・・Ｒ３１と符号が付されている。但し図２には、１つのＰＥ当たり４本のレジスタのみ示している。それぞれのレジスタは演算アレイに対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバスで演算アレイからアクセスされる。なお、図２において符号３を付す点線の枠で囲まれている部分が、一つのＰＥを示す。
【００４２】
３２本のレジスタの内、２４本（Ｒ０〜Ｒ２３）はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。残りの８本（Ｒ２４〜Ｒ３１）のレジスタはＰＥ演算の一時的な演算データ保存用として使用される。
【００４３】
演算アレイは、１６ビットＡＬＵ３６と１６ビットＡレジスタ３８、Ｆレジスタ４０を内蔵している。ＰＥ命令による演算は、レジスタファイルから読み出されたデータもしくはグローバルプロセッサ４から与えられたデータをＡＬＵ３６の片側の入力とし、Ａレジスタ３８の内容のデータをもう片側の入力として、結果をＡレジスタ３８に格納する。従って、Ａレジスタ３８の内容のデータと、Ｒ０〜Ｒ３１レジスタもしくはグローバルプロセッサから与えられたデータとの演算が、行われることになる。
【００４４】
レジスタファイル６とＡＬＵ３６との接続部分に、７ｔｏ１のマルチプレクサ４２が置かれており、ＰＥの並ぶ方向で左に１、２、３つ離れたデータ、右に１、２、３つ離れたデータ、及び中央の（即ち、自身ＰＥの）データを演算対象として選択している。また、レジスタファイルの８ビットのデータは、シフト＆拡張回路４４により任意ビット左シフトされてＡＬＵ３６に入力され得る。
【００４５】
更に、図示していない８ビットの条件フラグ（Ｔ）により、ＰＥごとに演算実行の無効／有効が制御されており、これにより特定のＰＥだけが演算対象として選択されることもある。
【００４６】
以下、更に図面を参照しつつ本発明に係る好適な実施形態を説明する。
【００４７】
《第１の実施形態》
図４は、本発明の第１の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。この図は、最大値検出を説明するために、ＰＥ群の一部を模式的に示したものである。図では全体で２５６個のＰＥを備えるプロセッサを想定しており、１６個のＰＥで１つのセグメントを形成している。
【００４８】
各セグメントは１６個のＰＥ（ＰＥ０、ＰＥ１、・・・ＰＥ１５）と１個のバス接続制御部８０を有し、１６個のＰＥと１個のバス接続制御部８０は、共通データバスＡ５１に対し入出力可能とされている。各ＰＥは、画素データを格納するＡレジスタ３８と、条件フラグＴ４６を備えている。ＰＥは、条件フラグＴ４６がオンの間（“１”の間）出力ドライバ７２により共通データバスＡ５１に出力可能であるが、条件フラグＴ４６がオフ（“０”）のときには出力できない。共通データバスＡ５１は、いわゆるプリチャージバスであり、ＰＣＫ１信号がｌｏｗの期間にはプリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ１信号がｈｉｇｈの期間には各ＰＥの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【００４９】
最大値算出のための比較は最上位ビットから下位ビットへビット単位で行われる。最初、全てのＰＥの条件フラグＴ４６は１（オン）にセットされた上で、最上位ビットから比較が行われる。以下に示すように、比較対象のビットが１である画素データを持つＰＥは、共通データバスＡ５１に０を出力する。
【００５０】
各ＰＥは判定回路５０を備えている。判定回路５０は、自身の条件フラグＴ４６の内容、自身の（比較対象のビットの）データ内容、及び共通データバスＡ５１の内容に基づいて、下の表２のように自身の条件フラグＴ４６の次の内容を決定する。この判定回路５０への入力組み合わせは８通りある。
【００５１】
【表２】
2007108913.tif 000004
【００５２】
条件フラグＴ４６が１（オン）、比較対象ビットデータが１のときには、そのＰＥ自身が共通データバスＡ５１へ０を出力するため、共通データバスＡ５１が１になることはないので、上記表２の（８）は出現しない。また、ＰＥ自身が０を共通データバスＡ５１へ出力していなくとも他のＰＥの出力により共通データバスＡ５１が０になると、次の条件フラグは０（オフ）となる（上記（５）参照）。一度オフになると、この判定回路５０からはオンには戻らない（上記（１）〜（４）参照）。なお、図示していないが条件フラグＴ４６は、初期状態にて１に設定されることが可能となっている。
【００５３】
また、図４のＳＩＭＤ型マイクロプロセッサでは、１６個のＰＥ単位でセグメントを構成し、全体では２５６個のＰＥが備わるという想定であるから１６個のセグメントが存在する。更に、夫々のセグメントのバス接続制御部８０は、共通データバスＢ５２と接続する。バス接続制御部８０は、共通データバスＢ５２に出力する出力ドライバ８２と、セグメント条件フラグＢＴ７８と、判定回路７６と、セグメント条件フラグＢＴ７８の内容を共通データバスＡ５１へ出力するドライバ８６とを備える。
【００５４】
共通データバスＢ５２に出力する出力ドライバ８２は、共通データバスＡ５１が０であり、かつセグメント条件フラグＢＴ７８の内容が１である場合にのみ動作し、動作するときには共通データバスＢ５２に対し０を出力する。判定回路７６は、セグメント条件フラグＢＴ７８の内容、共通データバスＡ５１の内容、及び共通データバスＢ５２の内容に基づいて、下の表３のように自身のセグメント条件フラグＢＴ７８の次の内容を決定する。この判定回路７６の入力組み合わせは８通りある。
【００５５】
【表３】
2007108913.tif 000005
【００５６】
セグメント条件フラグＢＴ７８が１（オン）、共通データバスＡ５１が０のときにはそのセグメントの出力ドライバ８２が共通データバスＢ５２へ０を出力するため、共通データバスＢ５２が１になることはないので、上記表３の（６）は出現しない。また、セグメント自身が０を共通データバスＢ５２へ出力していなくとも他のセグメントからの出力により共通データバスＢ５２が０になると、次のセグメント条件フラグＢＴ７８は０（オフ）となる（上記（７）参照）。一度オフになると、この判定回路７６からはオンには戻らない（上記（１）〜（４）参照）。なお、図示していないがセグメント条件フラグＢＴ７８は、初期状態にて１に設定されることが可能となっている。
【００５７】
共通データバスＡ５１へのドライバ８６は、セグメント条件フラグＢＴ７８が０であり且つＦＩＮＡＬ信号が１（オン）となったときに、共通データバスＡ５１へ０を出力する。
【００５８】
共通データバスＢ５２もプリチャージバスであり、ＰＣＫ３信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ３信号がｈｉｇｈの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【００５９】
続いて、第１の実施形態に係るＳＩＭＤ型マイクロプロセッサの動作を説明する。
【００６０】
最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのＰＥの条件フラグＴ４６と、全てのセグメントのセグメント条件フラグＢＴ７８は１（オン）にセットされる（初期状態）。
【００６１】
最初に最上位ビットの比較を行う。最上位ビットが１である画素データを持つＰＥは、共通データバスＡ５１に０を出力する。このとき、このＰＥと同じセグメントに存在するＰＥで画素データの最上位が０であるＰＥは、判定回路５０が上記表２の（５）の動作を行うため、自身の条件フラグＴ４６を０（オフ）にする。一方、セグメント内の全てのＰＥで画素データの最上位が０である場合、このセグメントの共通データバスＡ５１は１が保持される。
【００６２】
バス接続制御部８０は、セグメント条件フラグＢＴ７８が初期値１であるため、このセグメントの共通データバスＡ５１を受けて、共通データバスＢ５２に対する動作を行う。即ち、このセグメントの共通データバスＡ５１が０であるならば０を出力し、このセグメントの共通データバスＡ５１が１であるならば動作しない（出力しない）。
【００６３】
共通データバスＢ５２はプリチャージバスであり、ひとつでも共通データバスＢ５２に０を出力するセグメントが存在すれば共通データバスＢ５２は０となり、ひとつも共通データバスＢ５２に０を出力するセグメントが存在しなければ共通データバスＢ５２は１を保持する。
【００６４】
ここで各セグメントにおいて、共通データバスＢ５２の内容、自身の共通データバスＡ５１の内容、及び自身のセグメント条件フラグＢＴ７８の内容に基づいて、夫々の判定回路７６が夫々のセグメント条件フラグＢＴ７８の次の状態を決定する。最上位ビットの比較段階では、セグメント条件フラグＢＴ７８の内容は初期値の１であるため、共通データバスＢ５２の内容と自身の共通データバスＡ５１の内容で、セグメント条件レジスタＢＴ７８の次の状態が決定される。即ち、
・共通データバスＢ５２の内容が１のときは、次のセグメント条件フラグＢＴ７８の内容は１、
・共通データバスＡ５１の内容が０のときは、次のセグメント条件フラグＢＴ７８の内容は１、
・共通データバスＢ５２の内容が０で共通データバスＡ５１の内容が１のとき、次のセグメント条件フラグＢＴ７８の内容は０
となる。
【００６５】
この段階で、条件フラグＴ４６の内容が０（オフ）であるＰＥにある画素データは、最大値ではないと判断されていることになる。更に、この段階で、セグメント条件フラグＢＴ７８の内容が０（オフ）であるセグメント内のＰＥにある画素データは、最大値ではないと判断されていることになる。
【００６６】
最上位ビットの比較が完了すると、次は上位から２番目のビットによる比較を行う。このときすでに条件フラグＴ４６が０（オフ）になっているＰＥは共通データバスＡ５１への出力ができないため、比較対象から外れた扱いとなり、条件フラグＴ４６が１（オン）であるＰＥの画素データだけが比較対象となる。
【００６７】
同様に、このときすでにセグメント条件フラグＢＴ７８が０（オフ）になっているセグメントは、共通データバスＢ５２への出力ができないため、比較対象から外れた扱いとなり、セグメント条件フラグＢＴ７８が１（オン）であるセグメントだけが比較対象となる。セグメント条件フラグＢＴ７８が０（オフ）になっているセグメントにおいては、条件フラグＴ４６が１（オン）を保持するＰＥが存在する可能性があり、セグメント内での比較は続けられる。後述するが、この比較結果は全２５６ＰＥにおける結果には影響を及ぼさない。
【００６８】
上位から２番目のビットの比較では、最上位ビットの比較結果を反映する。即ち、最大値である可能性が残っている画素データのみが対象とされる。
【００６９】
上位から２番目のビットが１であり条件フラグＴ４６が１（オン）であるＰＥは、共通データバスＡ５１に０を出力する。共通データバスＡ５１が０となり、かつセグメント条件フラグＢＴ７８が１（オン）であるセグメントは、共通データバスＢ５２に０を出力する。
【００７０】
共通データバスＢ５２が０になった場合、共通データバスＢ５２に０を出力しているセグメントのセグメント条件レジスタＢＴ７８には１が保持されるが、他のセグメントのセグメント条件レジスタＢＴ７８は０（オフ）となる。共通データバスＢ５２が１である場合、どのセグメントも共通データバスＢ５２に０を出力していないということなので、各セグメントのセグメント条件レジスタＢＴ７８は同じ値を保持する。
【００７１】
この段階で、条件レジスタＴ４６の内容が０（オフ）であるＰＥにある画素データは、最大値ではないと判断されていることになる。更に、この段階で、セグメント条件フラグＢＴ７８の内容が０（オフ）であるセグメント内のＰＥにある画素データは、最大値ではないと判断されていることになる。
【００７２】
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの比較が完了した時点でセグメント条件フラグＢＴ７８が１（オン）となっているセグメント内のＰＥに最大値が含まれていることになり、そのセグメント内で条件フラグＴ４６が１（オン）となっているＰＥに最大値が含まれていることになる。
【００７３】
最後に、ＦＩＮＡＬ信号がオンとされ、各セグメントのセグメント条件フラグＢＴ７８の内容が共通データバスＡ５１へ出力される。即ち、セグメント条件フラグＢＴ７８の内容が０なら０が出力され、１なら何も出力されないので共通データバスＡ５１では１が保持される。そのセグメント内の各ＰＥは、共通データバスＡ５１の内容と、自身の条件フラグＴ４６の内容との論理積を再び条件フラグＴ４６の内容とする。この動作により、セグメント条件フラグＢＴ７８の内容が０（オフ）であるセグメント内のＰＥに備わる条件フラグＴ４６の内容はすべて０（オフ）となる。一方、セグメント条件フラグＢＴ７８の内容が１（オン）であるセグメント内のＰＥに備わる条件フラグＴ４６の内容はそのままであるため、この段階で、全２５６ＰＥの中で条件フラグＴ４６の内容が１（オン）であるＰＥには最大値の画素データが含まれていることになる。
【００７４】
図７は、第１の実施形態に係るＳＩＭＤ型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。例として画素データのサイズを８ｂｉｔとしている。説明のために動作の各フェーズにＰ０乃至Ｐ８の名前を付けている。
【００７５】
１番目の波形は、クロック信号を示しており、図４でのＰＣＫ１、ＰＣＫ１’、ＰＣＫ２、ＰＣＫ２’、ＰＣＫ３信号に相当する。現実の回路ではクロックタイミングの微調整などが考えられ、これらは同一の信号とは限らないのであるが、ここでは説明のため簡略化して同じタイミングのものとして取り扱う。各フェーズの前半にｈｉｇｈ期間、後半にｌｏｗ期間となるものとする。
【００７６】
２番目の波形は、共通データバスＡである。共通データバスＡはプリチャージバスであり、ＣＬＫ１のｈｉｇｈ期間はプリチャージ期間として必ずｈｉｇｈ状態となる期間である。図では、ＰＣと記載している。ＣＬＫ１のｌｏｗ期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも０を出力するドライバが存在するときはｌｏｗ状態になり、ひとつも存在しないときはｈｉｇｈ状態を維持する。各フェーズの状態を、ＶＡ０乃至ＶＡ７、ＶＡ８で示している。図７では、波形を１種しか示していないが、共通データバスＡはセグメントの数と同数存在している。
【００７７】
３番目の波形は、共通データバスＢである。共通データバスＢはプリチャージバスであり、ＣＬＫ３のｈｉｇｈ期間はプリチャージ期間として必ずｈｉｇｈ状態となる期間である。図では、ＰＣと記載している。ＣＬＫ３のｌｏｗ期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも０を出力するドライバが存在するときはｌｏｗ状態になり、ひとつも存在しないときはｈｉｇｈ状態を維持する。各フェーズの状態を、ＶＢ０乃至ＶＢ７で示している。
【００７８】
４番目の波形は、バス接続制御部内のセグメント条件フラグＢＴの内容の変遷を示している。セグメント条件フラグＢＴは、ＰＣＫ２の立下がりのタイミングで更新する。セグメント条件フラグＢＴは、セグメント条件フラグＢＴ、共通データバスＡ、共通データバスＢを基に判定回路の出力を記憶する構成であり、例えばＶＡ０とＶＢ０の内容を反映する部分をＢＴ０と示している。以下、図示されているＢＴ７まで同様である。図７では、波形を１種しか示していないが、セグメント条件フラグＢＴはセグメントの数と同数存在している。
【００７９】
５番目の波形は、ＦＩＮＡＬ信号の動作である。
【００８０】
各フェーズにおいて画素データの各ビットの比較を行うため、画素データ８ビットに対しては、８つのフェーズで比較される。比較は最上位ビットから始まり最下位ビットで終わるという順番であるため、Ｐ０のフェーズでは最上位ビットの比較を行い、Ｐ１では２番目のビット、Ｐ２では３番目のビット、・・・・Ｐ７では８番目のビット、すなわち最下位ビットの比較を行う。
【００８１】
セグメント条件フラグＢＴは、Ｐ０では初期状態すなわち１に設定されている。Ｐ１では最上位ビットの結果を保持しており、順次比較を行うとＰ８で最終の結果を保持していることになる。Ｐ８では、最終の結果を保持しているセグメント条件フラグＢＴの内容を各ＰＥの条件フラグＴへ反映させる。このため、このタイミングだけＦＩＮＡＬ信号がオンとなる。このとき共通データバスＡが使用される。このことはＶＡ８に図示されている。
【００８２】
以上の第１の実施形態の説明では、最大値を検出するＳＩＭＤ型マイクロプロセッサを取り上げている。本発明の第１の実施形態は、それに限定されるものではない。なぜなら、最小値を検出する場合には画素データをとり扱う論理を反転するだけでよいからである。最小値を検出するＳＩＭＤ型マイクロプロセッサについては説明を割愛する。
【００８３】
《第２の実施形態》
図５は、本発明の第２の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。この図は、図４と同様に、ＰＥ群の一部を模式的に示したものである。図では全体で２５６個のＰＥを備えるプロセッサを想定しており、１６個のＰＥで１つのセグメントを形成している。
【００８４】
各セグメントは１６個のＰＥ（ＰＥ０、ＰＥ１、・・・ＰＥ１５）と１個のバス接続制御部８０を有し、１６個のＰＥと１個のバス接続制御部８０は、共通データバスＡ５１に対し入出力可能とされている。各ＰＥは、第１の実施形態におけるものと同じであるため、説明を割愛する。
【００８５】
各セグメントのバス接続制御部８０は、共通データバスＢ５２と接続する。バス接続制御部８０は、共通データバスＢ５２に出力する出力ドライバ８２と、セグメント条件フラグＢＴ７８と、判定回路７６と、セグメント条件フラグＢＴ７８の内容を共通データバスＡ５１へ出力するドライバ８６と、フリップフロップ（以下、ＦＦと記す。）１０２とを備える。ＦＦ１０２は、共通データバスＡ５１の内容の反転を記憶し、図示されるＰＣＫ２信号に従って更新される。
【００８６】
共通データバスＢ５２に出力する出力ドライバ８２は、ＦＦ１０２の内容が１であり、かつセグメント条件フラグ７８の内容が１である場合にのみ動作し、動作するときには共通データバスＢ５２に対し０を出力する。判定回路７６は、セグメント条件フラグＢＴ７８の内容、ＦＦ１０２の内容、及び共通データバスＢ５２の内容に基づいて、下の表４のように自身のセグメント条件フラグＢＴ７８の次の内容を決定する。この判定回路７６の入力組み合わせは８通りある。
【００８７】
【表４】
2007108913.tif 000006
【００８８】
セグメント条件フラグＢＴ７８が１（オン）、ＦＦ１０２が１のときにはそのセグメントの出力ドライバ８２が共通データバスＢ５２へ０を出力するため、共通データバスＢ５２が１になることはないので、上記の（８）は出現しない。また、セグメント自身が０を共通データバスＢ５２に出力していなくとも他のセグメントからの出力により共通データバスＢ５２が０になると、次のセグメント条件フラグＢＴ７８は０（オフ）となる（上記（５）参照）。一度オフになると、この判定回路７６からはオンには戻らない（上記（１）〜（４）参照）。なお、図示していないがセグメント条件フラグＢＴ７８は、初期状態にて１に設定されることが可能となっている。
【００８９】
共通データバスＡ５１へのドライバ８６は、セグメント条件フラグＢＴ７８が０であり且つＦＩＮＡＬ信号が１（オン）となったときに、共通データバスＡ５１へ０を出力する。
【００９０】
共通データバスＢ５２もプリチャージバスであり、ＰＣＫ３信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ３信号がｈｉｇｈの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【００９１】
続いて、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサの動作を説明する。
【００９２】
最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのＰＥの条件フラグＴ４６と、全てのセグメントのセグメント条件フラグＢＴ７８は１（オン）にセットされる（初期状態）。
【００９３】
最初に最上位ビットの比較を行う。最上位ビットが１である画素データを持つＰＥは、共通データバスＡ５１に０を出力する。このとき、このＰＥと同じセグメントに存在するＰＥで画素データの最上位が０であるＰＥは、判定回路５０が上記表２の（５）の動作を行うため、自身の条件フラグＴ４６を０（オフ）にする。一方、セグメント内の全てのＰＥで画素データの最上位が０である場合、このセグメントの共通データバスＡ５１は１が保持される。
【００９４】
この段階で、条件フラグＴ４６の内容が０（オフ）であるＰＥにある画素データは、最大値ではないと判断されていることになる。
【００９５】
バス接続制御部８０では、ＦＦ１０２が共通データバスＡ５１の内容の論理反転を記憶する。記憶はＰＣＫ２信号により行われる。そのため、共通データバスＡ５１の内容が共通データバスＢ５２への出力へ反映するのは、ＰＣＫ２での次のタイミングになる。ＰＣＫ２での次のタイミングでは、セグメント条件フラグＢＴ７８が初期値１であるため、このセグメントのＦＦ１０２を受けて、共通データバスＢ５２に対する動作を行う。即ち、このセグメントのＦＦ１０２が１であるならば０を出力し、このセグメントのＦＦ１０２が０であるならば動作しない（出力しない）。
【００９６】
共通データバスＢ５２はプリチャージバスであり、ひとつでも共通データバスＢ５２に０を出力するセグメントが存在すれば共通データバスＢ５２は０となり、ひとつも共通データバスＢ５２に０を出力するセグメントが存在しなければ共通データバスＢ５２は１を保持する。
【００９７】
ここで各セグメントにおいて、共通データバスＢ５２の内容、自身のＦＦ１０２の内容、及び自身のセグメント条件フラグＢＴ７８の内容に基づいて、夫々の判定回路７６が夫々のセグメント条件フラグＢＴ７８の次の状態を決定する。最上位ビットの比較段階では、セグメント条件フラグＢＴ７８の内容は初期値の１であるため、共通データバスＢ５２の内容と自身のＦＦ１０２の内容で、セグメント条件フラグＢＴ７８の次の状態が決定される。即ち、
・共通データバスＢ５２の内容が１のときは、次のセグメント条件フラグＢＴ７８の内容は１、
・ＦＦ１０２の内容が１のときは、次のセグメント条件フラグＢＴ７８の内容は１、
・共通データバスＢ５２の内容が０でＦＦ１０２の内容が０のとき、次のセグメント条件フラグＢＴ７８の内容は０
となる。
【００９８】
この段階で、セグメント条件フラグＢＴ７８の内容が０（オフ）であるセグメント内のＰＥにある画素データは、最大値ではないと判断されていることになる。
【００９９】
最上位ビットの比較が完了すると、次は上位から２番目のビットによる比較を行う。但しこのとき、共通データバスＢ５２では最上位ビットに関する比較における動作を行っており（図８参照）これと同時に、共通データバスＡ５１では上位から２番目のビットに関する比較における動作を実施する。
【０１００】
上位から２番目のビットによる比較では、このときすでに条件フラグＴ４６が０（オフ）になっているＰＥは共通データバスＡ５１への出力ができないため、比較対象から外れた扱いとなり、条件フラグＴ４６が１（オン）であるＰＥの画素データだけが比較対象になる。上位から２番目のビットが１であり条件フラグＴ４６が１（オン）であるＰＥは、共通データバスＡ５１に０を出力する。
【０１０１】
ＰＣＫ２信号における次のタイミングでは、上位から２番目のビットによる比較結果としての共通データバスＡ５１の内容の反転がＦＦ１０２に既に記憶されているので、上位から２番目のビットによる共通データバスＢ５２を介した比較が実施される。このとき同時に、上位から３番目のビットによる比較が共通データバスＡ５１を介して実施される。
【０１０２】
上位から２番目のビットによる共通データバスＢ５２を介する比較では、すでにセグメント条件フラグＢＴ７８が０（オフ）になっているセグメントは、共通データバスＢ５２への出力ができないため、比較対象から外れた扱いとなり、セグメント条件フラグＢＴ７８が１（オン）であるセグメントだけが比較対象となる。ＦＦ１０２が１、かつセグメント条件フラグＢＴ７８が１（オン）であるセグメントは、共通データバスＢ５２に０を出力する。
【０１０３】
このように、共通データバスＡ５１と共通データバスＢ５２では、異なるビットの比較を同時並行で行っている。
【０１０４】
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの共通データバスＢ５２を介した比較が完了した時点でセグメント条件フラグＢＴ７８が１（オン）となっているセグメント内のＰＥに最大値が含まれていることになる。そして、そのセグメント内で条件フラグＴ４６の内容が１（オン）となっているＰＥに最大値が含まれていることになる。
【０１０５】
最後に、ＦＩＮＡＬ信号がオンとされ、各セグメントのセグメント条件フラグＢＴ７８の内容が共通データバスＡ５１へ出力される。即ち、セグメント条件フラグＢＴ７８の内容が０なら０が出力され、１なら何も出力されないので共通データバスＡ５１では１が保持される。そのセグメント内の各ＰＥは、共通データバスＡ５１の内容と、自身の条件フラグＴ４６の内容との論理積を再び条件フラグＴ４６の内容とする。この動作により、セグメント条件フラグＢＴ７８の内容が０（オフ）であるセグメント内のＰＥに備わる条件フラグＴ４６の内容はすべて０（オフ）となる。一方、セグメント条件フラグＢＴ７８の内容が１（オン）であるセグメント内のＰＥに備わる条件フラグＴ４６の内容はそのままであるため、この段階で、全２５６ＰＥの中で条件フラグＴ４６の内容が１（オン）であるＰＥには最大値の画素データが含まれていることになる。
【０１０６】
図８は、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。例として画素データのサイズを８ｂｉｔとしている。説明のために動作の各フェーズにＰ０乃至Ｐ８の名前を付けている。
【０１０７】
１番目の波形は、クロック信号を示しており、図５でのＰＣＫ１、ＰＣＫ１’、ＰＣＫ２、ＰＣＫ２’、ＰＣＫ３信号に相当する。現実の回路ではクロックタイミングの微調整などが考えられ、これらは同一の信号とは限らないのであるが、ここでは説明のための簡略化で同じタイミングとして取り扱う。各フェーズの前半にｈｉｇｈ期間、後半にｌｏｗ期間となるものとする。
【０１０８】
２番目の波形は、共通データバスＡである。共通データバスＡはプリチャージバスであり、ＣＬＫ１のｈｉｇｈ期間はプリチャージ期間として必ずｈｉｇｈ状態となる期間である。図では、ＰＣと記載している。ＣＬＫ１のｌｏｗ期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも０を出力するドライバが存在するときはｌｏｗ状態になり、ひとつも存在しないときはｈｉｇｈ状態を維持する。各フェーズの状態を、ＶＡ０乃至ＶＡ８で示している。図８では、波形を１種しか示していないが、共通データバスＡはセグメントの数と同数存在している。
【０１０９】
３番目の波形は、バス接続制御部内のＦＦの内容の変遷を示している。ＦＦは、ＰＣＫ２の立下がりのタイミングで更新する。ＦＦは共通データバスＡの内容を記憶することから、ＦＦがＶＡ０の内容を反映する部分をＦＦ０と示しており、以下ＦＦ７までを図示している。図８では、波形を１種しか示していないが、ＦＦはセグメントの数と同数存在している。
【０１１０】
４番目の波形は、共通データバスＢである。共通データバスＢはプリチャージバスであり、ＣＬＫ３のｈｉｇｈ期間はプリチャージ期間として必ずｈｉｇｈ状態となる期間である。図では、ＰＣと記載している。ＣＬＫ３のｌｏｗ期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも０を出力するドライバが存在するときはｌｏｗ状態になり、ひとつも存在しないときはｈｉｇｈ状態を維持する。ＦＦ０乃至ＦＦ７を反映する状態を、ＶＢ０乃至ＶＢ７で示している。
【０１１１】
５番目の波形は、バス接続制御部内のセグメント条件フラグＢＴの内容の変遷を示している。セグメント条件フラグＢＴは、ＰＣＫ２の立下がりのタイミングで更新する。セグメント条件フラグＢＴは、セグメント条件フラグＢＴ、ＦＦ、共通データバスＢを基に判定回路の出力を記憶する構成であり、例えばＦＦ０とＶＢ０の内容を反映する部分をＢＴ０と示している。以下、図示されているＢＴ７まで同様である。図８では、波形を１種しか示していないが、セグメント条件フラグＢＴはセグメントの数と同数存在している。
【０１１２】
６番目の波形は、ＦＩＮＡＬ信号の動作である。
【０１１３】
各フェーズにおいて画素データの各ビットの比較を行うため、画素データ８ビットに対しては、８つのフェーズで比較される。共通データバスＡにおける比較の結果を、次のフェーズの共通データバスＢでの比較の動作に用いるという構成であるため、共通データバスＡと共通データバスＢとは、１フェーズ分のずれが生じている。
【０１１４】
比較は最上位ビットから始まり最下位ビットで終わる順番である。共通データバスＡでは、Ｐ０のフェーズが最上位ビットを比較するタイミングとされ、Ｐ１が２番目のビット、Ｐ２が３番目のビット、・・・・Ｐ７が８番目のビット、即ち最下位ビットを比較するタイミングとされる。共通データバスＢでは、それより１フェーズ分ずれており、Ｐ１のフェーズが最上位ビットを比較するタイミングとされ、Ｐ２が２番目のビット、Ｐ３が３番目のビット、・・・・Ｐ８が８番目のビット、即ち最下位ビットを比較するタイミングとされる。
【０１１５】
セグメント条件フラグＢＴは、共通データバスＢでの比較の動作が行われる前の段階Ｐ１までは初期状態すなわち１に設定されている。Ｐ２では最上位ビットの結果を保持しており、順次比較を行うとＰ９で最終の結果を保持していることになる。Ｐ９では、最終の結果を保持しているセグメント条件フラグＢＴの内容を各ＰＥの条件フラグＴへ反映させる。このため、このタイミングだけＦＩＮＡＬ信号がオンとなる。このとき共通データバスＡが使用される。このことはＶＡ９に図示されている。
【０１１６】
以上の第２の実施形態の説明でも、最大値を検出するＳＩＭＤ型マイクロプロセッサを取り上げている。本発明の第２の実施形態も、それに限定されるものではない。なぜなら、最小値を検出する場合には画素データをとり扱う論理を反転するだけでよいからである。最小値を検出するＳＩＭＤ型マイクロプロセッサについては説明を割愛する。
【０１１７】
《第３の実施形態》
図６は、本発明の第３の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。この図も、最大値検出を説明するために、ＰＥ群の一部を模式的に示している。
【０１１８】
更に、図６に示すＳＩＭＤ型マイクロプロセッサは、ひとつのＰＥで複数の画素データを同時に演算できるものを想定している。つまり、通常のプロセッサがＰＥあたり８ビットの画素データ１個を扱うのに対して、図６のプロセッサはＰＥあたりｎ個（ｎは自然数）の画素データを扱うことができるものである。従って、全体で２５６個のＰＥを備えるとした場合、通常では２５６個の画素データを一度に処理し得るところを、図６のプロセッサは（２５６×ｎ）個の画素データを一度に処理し得る。図６ではｎを２としている。図では全体で２５６個のＰＥを備えるプロセッサを想定しており、１６個のＰＥで１つのセグメントを形成している。
【０１１９】
各セグメントは１６個のＰＥ（ＰＥ０、ＰＥ１、・・・ＰＥ１５）と１個のバス接続制御部８０を有し、１６個のＰＥと１個のバス接続制御部８０は、共通データバスＡ５１に対し入出力可能とされている。各ＰＥは、画素データを格納する第１のＡレジスタ３８と、第１の条件フラグＴ４６を備えている。ＰＥは、第１の条件フラグＴ４６がオンの間（“１”の間）第１の出力ドライバ７２により第１の共通データバスＡ５１に出力可能であるが、第１の条件フラグＴ４６がオフ（“０”）のときには出力できない。第１の共通データバスＡ５１は、いわゆるプリチャージバスであり、ＰＣＫ１信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ１信号がｈｉｇｈの期間には各ＰＥの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【０１２０】
各ＰＥは第１の判定回路５０を備えている。第１の判定回路５０は、自身の第１の条件フラグＴ４６の内容、自身の（比較対象ビットの）データ内容、及び第１の共通データバスＡ５１の内容に基づいて、自身の第１の条件フラグＴ４６の次の内容を決定する。この第１の判定回路５０は、第２の実施形態での判定回路５０と同じものである。
【０１２１】
更に加えて、各ＰＥは、画素データを格納する第２のＡレジスタ３８’と、第２の条件フラグＴ４６’を備えている。ＰＥは、第２の条件フラグＴ４６’がオンの間（“１”の間）第２の出力ドライバ７２’により第２の共通データバスＡ５１’に出力可能であるが、第２の条件フラグＴ４６’がオフ（“０”）のときには出力できない。第２の共通データバスＡ５１’は、いわゆるプリチャージバスであり、ＰＣＫ１信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ１信号がｈｉｇｈの期間には各ＰＥの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【０１２２】
各ＰＥは第２の判定回路５０’を備えている。第２の判定回路５０’は、自身の第２の条件フラグＴ４６’の内容、自身の（比較対象の）データ内容、及び第２の共通データバスＡ５１’の内容に基づいて、自身の第２の条件フラグＴ４６’の次の内容を決定する。この第２の判定回路５０’も、第２の実施形態での判定回路５０と同じものである。
【０１２３】
各セグメントのバス接続制御部８０は、共通データバスＢ５２と接続する。バス接続制御部８０は、共通データバスＢ５２に出力する出力ドライバ８２と、セグメント条件フラグＢＴ７８と、判定回路７６と、セグメント条件フラグＢＴ７８の内容を第１の共通データバスＡ５１へ出力するドライバ８６と、セグメント条件フラグＢＴ７８の内容を第２の共通データバスＡ５１’へ出力するドライバ８６’と、フリップフロップ（以下、ＦＦと記す。）１０２を備える。ＦＦ１０２は、第１の共通データバスＡ５１の内容の反転と第２の共通データバスＡ５１’の内容の反転との論理和を記憶し、図示されるＰＣＫ２信号に従って更新される。
【０１２４】
共通データバスＢ５２に出力する出力ドライバ８２は、ＦＦ１０２の内容が１であり、かつセグメント条件フラグ７８の内容が１である場合にのみ動作し、動作するときには共通データバスＢ５２に対し０を出力する。判定回路７６は、セグメント条件フラグＢＴ７８の内容、ＦＦ１０２の内容、及び共通データバスＢ５２の内容に基づいて、セグメント条件フラグＢＴ７８の次の内容を決定する。この判定回路７６は、第２の実施形態における判定回路７６（表４参照）と同じものである。
【０１２５】
第１の共通データバスＡ５１へのドライバ８６は、セグメント条件フラグＢＴ７８が０でかつＦＩＮＡＬ信号が１（オン）となったときに、第１の共通データバスＡ５１へ０を出力する。同様に、第２の共通データバスＡ５１’へのドライバ８６’は、セグメント条件フラグＢＴ７８が０でかつＦＩＮＡＬ信号が１（オン）となったときに、第２の共通データバスＡ５１’へ０を出力する。
【０１２６】
共通データバスＢ５２もプリチャージバスであり、ＰＣＫ３信号がｌｏｗの期間には、プリチャージ時間となりプルアップ（ｈｉｇｈ状態）される。ＰＣＫ３信号がｈｉｇｈの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがｌｏｗ状態となり、逆にひとつも動作しないとｈｉｇｈ状態が保持される。
【０１２７】
続いて、第３の実施形態に係るＳＩＭＤ型マイクロプロセッサの動作を説明する。基本的な動作は、第２の実施形態と略同様であるので、差異となる部分のみを以下に示す。
【０１２８】
第１の共通データバスＡ５１が、各ＰＥの第１のＡレジスタ３８に格納されている画像データの比較動作を行うことが可能であるということは、第２の実施形態と同様である。第２の共通データバスＡ５１’も、同様の構成を備えているから、各ＰＥの第２のＡレジスタ３８’に格納されている画像データの比較動作を行うことが可能である。
【０１２９】
バス接続制御部８０の内部において、ＦＦ１０２は、第１の共通データバスＡ５１の内容の反転と第２の共通データバスＡ５１’の内容の反転との、論理和を格納することになっている。そのため、第１の共通データバスＡ５１と第２の共通データバスＡ５１’とのどちらか一方が０となる場合に、ＦＦ１０２には１が格納されることになる。
【０１３０】
第１の共通データバスＡ５１と第２の共通データバスＡ５１’とのどちらか一方が０となる場合とは、１６個のＰＥのうち少なくともひとつのＰＥにて、第１の出力ドライバ７２又は第２の出力ドライバ７２’が動作し０を出力したことを示す。逆に、第１の共通データバスＡ５１と第２の共通データバスＡ５１’のどちらも１である場合とは、１６個すべてのＰＥの第１の出力ドライバ７２と第２の出力ドライバ７２’が動作しなかったことを示す。このため、ＦＦ１０２には１６個のＰＥ内にある３２個の画素データの比較結果が格納されていることになる。
【０１３１】
次の段階の共通データバスＢ５２における比較の動作については、第２の実施形態と同様である。説明は割愛する。
【０１３２】
上述の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサでは、各セグメントがＦＦ１０２を備えている。このＦＦ１０２が備わらない実施形態も想定し得る。
【０１３３】
つまり、第３の実施形態と、第３の実施形態から上記ＦＦ１０２が取り除かれた形態との関係は、上記の第２の実施形態と上記の第１の実施形態との関係と、同じものである。
【図面の簡単な説明】
【０１３４】
【図１】本発明に係るＳＩＭＤ型マイクロプロセッサの概略の構成を示すブロック図である。
【図２】本発明に係るＳＩＭＤ型マイクロプロセッサの詳細な構成を示すブロック図である。
【図３】従来技術の最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。
【図４】本発明の第１の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。
【図５】本発明の第２の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。
【図６】本発明の第３の実施形態に係る最大値検出回路を伴うＳＩＭＤ型マイクロプロセッサの一部のブロック図である。
【図７】本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。
【図８】本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。
【符号の説明】
【０１３５】
３・・・ＰＥ（プロセッサエレメント）、４・・・グローバルプロセッサ、６・・・レジスタファイル、８・・・演算アレイ、３８・・・Ａレジスタ、第１のＡレジスタ、３８’・・・第２のＡレジスタ、４６・・・条件フラグＴ、第１の条件フラグＴ、４６’・・・第２の条件フラグＴ、５０・・・判定回路、第１の判定回路、５０’・・・第２の判定回路、５１・・・共通データバスＡ、第１の共通データバスＡ、５１’・・・第２の共通データバスＡ、５２・・・共通データバスＢ、８０・・・バス接続制御部。
【図１】
2007108913.tif 000007
【図２】
2007108913.tif 000008
【図３】
2007108913.tif 000009
【図４】
2007108913.tif 000010
【図５】
2007108913.tif 000011
【図６】
2007108913.tif 000012
【図７】
2007108913.tif 000013
【図８】
2007108913.tif 000014