JP2007108913A - ピーク値検出を行うsimd型マイクロプロセッサ - Google Patents
ピーク値検出を行うsimd型マイクロプロセッサ Download PDFInfo
- Publication number
- JP2007108913A JP2007108913A JP2005297386A JP2005297386A JP2007108913A JP 2007108913 A JP2007108913 A JP 2007108913A JP 2005297386 A JP2005297386 A JP 2005297386A JP 2005297386 A JP2005297386 A JP 2005297386A JP 2007108913 A JP2007108913 A JP 2007108913A
- Authority
- JP
- Japan
- Prior art keywords
- data bus
- segment
- bus
- common data
- condition flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】全ての画素データの最大値・最小値を求めるSIMD型マイクロプロセッサにおいて、動作時のステップの時間を短縮し、動作周波数を向上させる。
【解決手段】SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、前記バス接続制御部は、第1のデータバスの内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備える。
【選択図】図3
【解決手段】SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、前記バス接続制御部は、第1のデータバスの内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備える。
【選択図】図3
Description
本発明は、SIMD(Single Instructin−stream Multiple Data−stream;単一命令多データ処理)型マイクロプロセッサに関する。
SIMD型マイクロプロセッサでは、複数のデータに対して1つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理(例えば、画像処理)に係る用途において、頻用される。
SIMD型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット(Processor Element〔PE〕;プロセッサエレメント)を並べ同一の演算を同時に複数のデータに対して実行する。
ところで画像処理では、全ての画素データの最大値あるいは最小値を求め、それを特徴量として画像処理の計算式を設定するという処理を行うことがある。同時に多データを演算できるという特徴が画像処理に向いているとされるSIMD型プロセッサにおいて、各PEに格納される画素データを最大値あるいは最小値検出の対象とする方法・構成が、幾つか構築され提案されている。
特許文献1や特許文献2などで提案されている方法は、基本的に逐次処理である。この逐次処理は、全てのPEから対象画素データを読み出し、逐次大小比較を行った結果大きい方を残す、あるいは小さい方を残すことで、全対象画素データの最大値あるいは最小値を求めるというものである。このような処理では、検出までに要する時間が、対象画素の数が大きくなるに従い大きくなるという特徴がある。従って、PE数が大きい場合にはこのような方法は適切なものではない。
特許文献3では、多数のPEを備えるSIMD型マイクロプロセッサにおける最大値若しくは最小値の検出方式が、提案されている。ここで提案される検出方式は、原理的には特許文献4で開示されている方式と同じである。
上記方式では、各PEに条件フラグを設け、全画素データを対象に最上位桁からビット毎に比較を行い、他PEのデータが自PEのデータより大きい(小さい)場合に条件フラグをオフとし、条件フラグがオフになったPEを以降の比較には参加させないようにして、順次下位ビットへ比較を進める仕組みが構築されている。
特許文献4の方式では、最下位ビットの比較が完了した段階で最後まで条件フラグがオン状態であったPEの画素データが最大値(最小値)ということになる。対象画素データのビット幅分に応じた処理時間を要することになるが、原理的に対象データ数には制限がなく、従ってPE数の大きいSIMD型マイクロプロセッサに適しているといえる。
しかしながら、原理的に対象データ数の制限はないのであるが、PE数が大きくなり対象データ数が増えると1回の比較ステップの処理時間が長くなる。このことを改善するため、特許文献3に示すSIMD型マイクロプロセッサでは、PEを小グループ(以下、セグメントと言う)に分け、セグメント内での比較をする比較装置と全セグメントを対象にする比較装置を設けるという2段構成を採用している。
図3は、従来技術である特許文献3に開示される最大値(最小値)検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。図3では全体で256個のPEを備えるプロセッサを想定しており、16個のPE(PE0、PE1、・・・)で1つのセグメントを形成している。
各セグメントは16個のPE(PE0、PE1、・・・PE15)と1個のバス接続制御部80を持ち、16個のPEと1個のバス接続制御部80は、共通データバスA51に対し入出力可能とされている。各PEは、画素データを格納するAレジスタ38と、条件フラグT46を備えている。PEは、条件フラグT46がオンの間(“1”の間)出力ドライバ72により共通データバスA51に出力可能であるが、条件フラグT46がオフ(“0”)のときには出力できない。共通データバスA51は、いわゆるプリチャージバスであり、PCK1信号がlowの期間にはプリチャージ時間となりプルアップ(high状態)される。PCK1信号がhighの期間には各PEの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
最大値算出のための比較は最上位ビットから下位ビットへビット単位で行われる。最初、全てのPEの条件フラグT46は1(オン)にセットされた上で、最上位ビットから比較が行われる。以下に示すように、比較対象のビットが1である画素データを持つPEは、共通データバスA51に0を出力する。
各PEは判定回路50を備えている。判定回路50は、自身の条件フラグT46の内容、自身の(比較対象のビットの)データ内容、及び共通データバスA51の内容に基づいて、下の表1のように自身の条件フラグT46の次の内容を決定する。この判定回路50への入力組み合わせは8通りある。
条件フラグT46が1(オン)、比較対象ビットデータが1のときには、そのPE自身が共通データバスA51へ0を出力するため、共通データバスA51が1になることはないので、上記表1の(8)は出現しない。また、PE自身が0を共通データバスA51へ出力していなくとも他のPEの出力により共通データバスA51が0になると、次の条件フラグは0(オフ)となる(上記(5)参照)。一度オフになると、この判定回路からはオンには戻らない(上記(1)〜(4)参照)。
また、図3のSIMD型マイクロプロセッサでは、16個のPE単位でセグメントを構成し、全体では256個のPEが備わるという想定であるから16個のセグメントが存在する。更に、夫々のセグメントのバス接続制御部80は、共通データバスB52と接続する。バス接続制御部80は、共通データバスA51の内容を共通データバスB52に出力する出力ドライバ82と、共通データバスB52の内容を共通データバスA51へ出力する出力ドライバ86を備える。このようにすることにより、共通データバスA51と共通データバスB52の内容は同じ状態となる。
共通データバスB52もプリチャージバスであり、PCK3信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK3信号がhighの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
図3に示すSIMD型マイクロプロセッサの動作を説明する。最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのPEの条件フラグは1(オン)にセットされた上で、最上位ビットの比較が行われる。最上位ビットが1である画素データを持つPEは、共通データバスA51に0を出力する。このとき、このPEと同じセグメントに存在するPEで画素データの最上位が0であるPEは、判定回路50が上記表1の(5)の動作を行うため、自身の条件フラグT46を0(オフ)にする。
このセグメントの共通データバスA51が0になったことを受けて、このセグメントのバス接続制御部80が共通データバスB52に0を出力する。共通データバスB52が0になったため、他のセグメントにおいても、共通データバスB52の内容0がそれぞれの共通データバスA51へ反映される。バス接続制御部80のドライバ86によって0となった共通データバスA51を持つセグメントにおいては、PEの持つ画素データの最上位ビットが0であるPEは、判定回路50が上記表1の(5)の動作を行うため、自身の条件フラグT46を0(オフ)にする。
このように256個のPEのうち、最上位ビットが1であるPEが一つでも存在する場合、最上位ビットが0である画素データをもつPEの条件フラグT46は0(オフ)となる。逆に、256個のPEすべての最上位ビットが0である場合、共通データバスA51に0を出力するPEは存在せず、全てのPEの判定回路50が上記(6)の動作を行うため、全てのPEにおける条件フラグT46は1(オン)を維持する。
最上位ビットの比較が完了すると、次は上位から2番目のビットによる比較を行う。このときすでに条件フラグT46が0(オフ)になったPEは、共通データバスA51への出力ができないため、比較対象からはずれた扱いとなる。条件フラグT46が1(オン)であるPEの画素データだけが比較対象になる。
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの比較が完了した時点で条件フラグT46が1(オン)となっているPEに最大値が含まれていることになる。
しかしながら、上記の従来技術では、各ステップの実行時間の短縮化を狙おうとしても、次の条件の下での動作の遅滞が障害となりうる。
画素データの比較対象ビットに1を含んでいるPEが全PE中でただひとつであり、残りのPEがすべて0である場合を取り上げてみる。このとき、まず1を含むPEの出力ドライバ72がそのPEを含むセグメントの共通データバスA51に0を出力する。ここでまず、複数のPE(の出力ドライバ72)が出力するよりも一つのPE(の出力ドライバ72)が出力する方が、時間がかかる。共通データバスA51が0になると、次はそのセグメントのバス接続制御部80の出力ドライバ82が共通データバスB52に0を出力する。このとき、複数のセグメント(の出力ドライバ82)が出力するよりも一つのセグメント(の出力ドライバ82)が出力する方が、時間がかかる。共通データバスB52が0になったことを受けて、出力したセグメントを除く15個のセグメントでは、夫々の共通データバスA51に0が出力されるが、このときもセグメント内のPEからの接続(出力)がないため、もっとも時間がかかってしまう。そして、共通データバスA51へ反映された内容を基にして各PEでの判定回路50が作動する。
上記のように動作の遅いバスを3回ドライブするケースが最長時間経路となる。このような動作を反映できる時間を確保する必要があるから、各ステップの動作時間短縮に限界が生じる。
なお、特許文献5も、全PEに格納されるデータから最大値を取り出すSIMD型プロセッサを開示している。
特開2001−265592公報
特開平08−030577号公報
特開2002−207706公報
特開平05−100824号公報
特許第3096387号公報
本発明は、全ての画素データの最大値あるいは最小値を求め、それを特徴量として画像処理の計算式を設定するという処理を行おうとするSIMD型マイクロプロセッサにおいて、動作時のステップの時間を短縮し、動作周波数を向上することを目的とする。
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
前記バス接続制御部は、第1のデータバスの内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とする。
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
前記バス接続制御部は、第1のデータバスの内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とする。
本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、第1のデータバスの内容を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とする。
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、第1のデータバスの内容を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とする。
本発明に係る請求項3に記載のSIMD型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とする。
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とする。
本発明に係る請求項4に記載のSIMD型マイクロプロセッサは、
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部に接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とする。
複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部に接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とする。
本発明を利用することにより、最大値(若しくは最小値)検出回路を伴うSIMD型マイクロプロセッサにおいて、比較のための個々のステップの時間を短くでき、このことにより動作ステップを短縮して全体の動作周波数を向上することが可能となり得る。
図1は、本発明に係るSIMD型マイクロプロセッサの概略の構成を示すブロック図である。
(1)グローバルプロセッサ4
このブロックは、いわゆるSISD(Single Instruction Stream, Single Data Stream)タイプのプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は、内蔵する各種ブロックだけでなくレジスタファイル6や演算アレイ8にも供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理を行う。
このブロックは、いわゆるSISD(Single Instruction Stream, Single Data Stream)タイプのプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は、内蔵する各種ブロックだけでなくレジスタファイル6や演算アレイ8にも供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理を行う。
(2)レジスタファイル6
PE(プロセッサエレメント)命令で処理されるデータを保持している。PE命令はSIMD(Single Instruction Stream, Multiple Data Stream)タイプの命令であり、レジスタファイル6に保持されている複数のデータに対して同時に同じ処理を行う。このレジスタファイル6からのデータの読み出し/書き込みの制御はグローバルプロセッサ4からの制御によって行われる。読み出されたデータは演算アレイ8に送られ、演算アレイ8での演算処理後にレジスタファイル6に書き込まれる。
PE(プロセッサエレメント)命令で処理されるデータを保持している。PE命令はSIMD(Single Instruction Stream, Multiple Data Stream)タイプの命令であり、レジスタファイル6に保持されている複数のデータに対して同時に同じ処理を行う。このレジスタファイル6からのデータの読み出し/書き込みの制御はグローバルプロセッサ4からの制御によって行われる。読み出されたデータは演算アレイ8に送られ、演算アレイ8での演算処理後にレジスタファイル6に書き込まれる。
また、レジスタファイル6はプロセッサ外部からのアクセスが可能であり、グローバルプロセッサ4とは別に外部から読み出し/書き込みが行われ得る。
(3)演算アレイ8
演算アレイ8は、PE命令の演算処理を行う。処理の制御はすべてグローバルプロセッサ4から為される。
演算アレイ8は、PE命令の演算処理を行う。処理の制御はすべてグローバルプロセッサ4から為される。
図2は、SIMD型マイクロプロセッサの詳細な構成を示すブロック図である。
グローバルプロセッサ4には、本SIMD型マイクロプロセッサのプログラム格納用のプログラムRAM10と演算データ格納用のデータRAM12が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)14、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ(16、18、20、22)、レジスタ退避、復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)24、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)26、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ(28、30)、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)32が内蔵されている。
これらのレジスタと図示していない命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部I/O制御回路、GP演算制御回路を使用してGP命令の実行が行われる。また、PE命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、PE演算制御回路を使用して、レジスタファイル6の制御と演算アレイ8の制御を行う。
レジスタファイル6には、1つのPE単位に8ビットのレジスタが32本内蔵されており、256PE分の組がアレイ構成になっている。PE毎の32本のレジスタには、R0、R1、R2、・・・R31と符号が付されている。但し図2には、1つのPE当たり4本のレジスタのみ示している。それぞれのレジスタは演算アレイに対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイからアクセスされる。なお、図2において符号3を付す点線の枠で囲まれている部分が、一つのPEを示す。
32本のレジスタの内、24本(R0〜R23)はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。残りの8本(R24〜R31)のレジスタはPE演算の一時的な演算データ保存用として使用される。
演算アレイは、16ビットALU36と16ビットAレジスタ38、Fレジスタ40を内蔵している。PE命令による演算は、レジスタファイルから読み出されたデータもしくはグローバルプロセッサ4から与えられたデータをALU36の片側の入力とし、Aレジスタ38の内容のデータをもう片側の入力として、結果をAレジスタ38に格納する。従って、Aレジスタ38の内容のデータと、R0〜R31レジスタもしくはグローバルプロセッサから与えられたデータとの演算が、行われることになる。
レジスタファイル6とALU36との接続部分に、7to1のマルチプレクサ42が置かれており、PEの並ぶ方向で左に1、2、3つ離れたデータ、右に1、2、3つ離れたデータ、及び中央の(即ち、自身PEの)データを演算対象として選択している。また、レジスタファイルの8ビットのデータは、シフト&拡張回路44により任意ビット左シフトされてALU36に入力され得る。
更に、図示していない8ビットの条件フラグ(T)により、PEごとに演算実行の無効/有効が制御されており、これにより特定のPEだけが演算対象として選択されることもある。
以下、更に図面を参照しつつ本発明に係る好適な実施形態を説明する。
《第1の実施形態》
図4は、本発明の第1の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図は、最大値検出を説明するために、PE群の一部を模式的に示したものである。図では全体で256個のPEを備えるプロセッサを想定しており、16個のPEで1つのセグメントを形成している。
図4は、本発明の第1の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図は、最大値検出を説明するために、PE群の一部を模式的に示したものである。図では全体で256個のPEを備えるプロセッサを想定しており、16個のPEで1つのセグメントを形成している。
各セグメントは16個のPE(PE0、PE1、・・・PE15)と1個のバス接続制御部80を有し、16個のPEと1個のバス接続制御部80は、共通データバスA51に対し入出力可能とされている。各PEは、画素データを格納するAレジスタ38と、条件フラグT46を備えている。PEは、条件フラグT46がオンの間(“1”の間)出力ドライバ72により共通データバスA51に出力可能であるが、条件フラグT46がオフ(“0”)のときには出力できない。共通データバスA51は、いわゆるプリチャージバスであり、PCK1信号がlowの期間にはプリチャージ時間となりプルアップ(high状態)される。PCK1信号がhighの期間には各PEの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
最大値算出のための比較は最上位ビットから下位ビットへビット単位で行われる。最初、全てのPEの条件フラグT46は1(オン)にセットされた上で、最上位ビットから比較が行われる。以下に示すように、比較対象のビットが1である画素データを持つPEは、共通データバスA51に0を出力する。
各PEは判定回路50を備えている。判定回路50は、自身の条件フラグT46の内容、自身の(比較対象のビットの)データ内容、及び共通データバスA51の内容に基づいて、下の表2のように自身の条件フラグT46の次の内容を決定する。この判定回路50への入力組み合わせは8通りある。
条件フラグT46が1(オン)、比較対象ビットデータが1のときには、そのPE自身が共通データバスA51へ0を出力するため、共通データバスA51が1になることはないので、上記表2の(8)は出現しない。また、PE自身が0を共通データバスA51へ出力していなくとも他のPEの出力により共通データバスA51が0になると、次の条件フラグは0(オフ)となる(上記(5)参照)。一度オフになると、この判定回路50からはオンには戻らない(上記(1)〜(4)参照)。なお、図示していないが条件フラグT46は、初期状態にて1に設定されることが可能となっている。
また、図4のSIMD型マイクロプロセッサでは、16個のPE単位でセグメントを構成し、全体では256個のPEが備わるという想定であるから16個のセグメントが存在する。更に、夫々のセグメントのバス接続制御部80は、共通データバスB52と接続する。バス接続制御部80は、共通データバスB52に出力する出力ドライバ82と、セグメント条件フラグBT78と、判定回路76と、セグメント条件フラグBT78の内容を共通データバスA51へ出力するドライバ86とを備える。
共通データバスB52に出力する出力ドライバ82は、共通データバスA51が0であり、かつセグメント条件フラグBT78の内容が1である場合にのみ動作し、動作するときには共通データバスB52に対し0を出力する。判定回路76は、セグメント条件フラグBT78の内容、共通データバスA51の内容、及び共通データバスB52の内容に基づいて、下の表3のように自身のセグメント条件フラグBT78の次の内容を決定する。この判定回路76の入力組み合わせは8通りある。
セグメント条件フラグBT78が1(オン)、共通データバスA51が0のときにはそのセグメントの出力ドライバ82が共通データバスB52へ0を出力するため、共通データバスB52が1になることはないので、上記表3の(6)は出現しない。また、セグメント自身が0を共通データバスB52へ出力していなくとも他のセグメントからの出力により共通データバスB52が0になると、次のセグメント条件フラグBT78は0(オフ)となる(上記(7)参照)。一度オフになると、この判定回路76からはオンには戻らない(上記(1)〜(4)参照)。なお、図示していないがセグメント条件フラグBT78は、初期状態にて1に設定されることが可能となっている。
共通データバスA51へのドライバ86は、セグメント条件フラグBT78が0であり且つFINAL信号が1(オン)となったときに、共通データバスA51へ0を出力する。
共通データバスB52もプリチャージバスであり、PCK3信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK3信号がhighの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
続いて、第1の実施形態に係るSIMD型マイクロプロセッサの動作を説明する。
最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのPEの条件フラグT46と、全てのセグメントのセグメント条件フラグBT78は1(オン)にセットされる(初期状態)。
最初に最上位ビットの比較を行う。最上位ビットが1である画素データを持つPEは、共通データバスA51に0を出力する。このとき、このPEと同じセグメントに存在するPEで画素データの最上位が0であるPEは、判定回路50が上記表2の(5)の動作を行うため、自身の条件フラグT46を0(オフ)にする。一方、セグメント内の全てのPEで画素データの最上位が0である場合、このセグメントの共通データバスA51は1が保持される。
バス接続制御部80は、セグメント条件フラグBT78が初期値1であるため、このセグメントの共通データバスA51を受けて、共通データバスB52に対する動作を行う。即ち、このセグメントの共通データバスA51が0であるならば0を出力し、このセグメントの共通データバスA51が1であるならば動作しない(出力しない)。
共通データバスB52はプリチャージバスであり、ひとつでも共通データバスB52に0を出力するセグメントが存在すれば共通データバスB52は0となり、ひとつも共通データバスB52に0を出力するセグメントが存在しなければ共通データバスB52は1を保持する。
ここで各セグメントにおいて、共通データバスB52の内容、自身の共通データバスA51の内容、及び自身のセグメント条件フラグBT78の内容に基づいて、夫々の判定回路76が夫々のセグメント条件フラグBT78の次の状態を決定する。最上位ビットの比較段階では、セグメント条件フラグBT78の内容は初期値の1であるため、共通データバスB52の内容と自身の共通データバスA51の内容で、セグメント条件レジスタBT78の次の状態が決定される。即ち、
・共通データバスB52の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスA51の内容が0のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスB52の内容が0で共通データバスA51の内容が1のとき、次のセグメント条件フラグBT78の内容は0
となる。
・共通データバスB52の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスA51の内容が0のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスB52の内容が0で共通データバスA51の内容が1のとき、次のセグメント条件フラグBT78の内容は0
となる。
この段階で、条件フラグT46の内容が0(オフ)であるPEにある画素データは、最大値ではないと判断されていることになる。更に、この段階で、セグメント条件フラグBT78の内容が0(オフ)であるセグメント内のPEにある画素データは、最大値ではないと判断されていることになる。
最上位ビットの比較が完了すると、次は上位から2番目のビットによる比較を行う。このときすでに条件フラグT46が0(オフ)になっているPEは共通データバスA51への出力ができないため、比較対象から外れた扱いとなり、条件フラグT46が1(オン)であるPEの画素データだけが比較対象となる。
同様に、このときすでにセグメント条件フラグBT78が0(オフ)になっているセグメントは、共通データバスB52への出力ができないため、比較対象から外れた扱いとなり、セグメント条件フラグBT78が1(オン)であるセグメントだけが比較対象となる。セグメント条件フラグBT78が0(オフ)になっているセグメントにおいては、条件フラグT46が1(オン)を保持するPEが存在する可能性があり、セグメント内での比較は続けられる。後述するが、この比較結果は全256PEにおける結果には影響を及ぼさない。
上位から2番目のビットの比較では、最上位ビットの比較結果を反映する。即ち、最大値である可能性が残っている画素データのみが対象とされる。
上位から2番目のビットが1であり条件フラグT46が1(オン)であるPEは、共通データバスA51に0を出力する。共通データバスA51が0となり、かつセグメント条件フラグBT78が1(オン)であるセグメントは、共通データバスB52に0を出力する。
共通データバスB52が0になった場合、共通データバスB52に0を出力しているセグメントのセグメント条件レジスタBT78には1が保持されるが、他のセグメントのセグメント条件レジスタBT78は0(オフ)となる。共通データバスB52が1である場合、どのセグメントも共通データバスB52に0を出力していないということなので、各セグメントのセグメント条件レジスタBT78は同じ値を保持する。
この段階で、条件レジスタT46の内容が0(オフ)であるPEにある画素データは、最大値ではないと判断されていることになる。更に、この段階で、セグメント条件フラグBT78の内容が0(オフ)であるセグメント内のPEにある画素データは、最大値ではないと判断されていることになる。
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの比較が完了した時点でセグメント条件フラグBT78が1(オン)となっているセグメント内のPEに最大値が含まれていることになり、そのセグメント内で条件フラグT46が1(オン)となっているPEに最大値が含まれていることになる。
最後に、FINAL信号がオンとされ、各セグメントのセグメント条件フラグBT78の内容が共通データバスA51へ出力される。即ち、セグメント条件フラグBT78の内容が0なら0が出力され、1なら何も出力されないので共通データバスA51では1が保持される。そのセグメント内の各PEは、共通データバスA51の内容と、自身の条件フラグT46の内容との論理積を再び条件フラグT46の内容とする。この動作により、セグメント条件フラグBT78の内容が0(オフ)であるセグメント内のPEに備わる条件フラグT46の内容はすべて0(オフ)となる。一方、セグメント条件フラグBT78の内容が1(オン)であるセグメント内のPEに備わる条件フラグT46の内容はそのままであるため、この段階で、全256PEの中で条件フラグT46の内容が1(オン)であるPEには最大値の画素データが含まれていることになる。
図7は、第1の実施形態に係るSIMD型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。例として画素データのサイズを8bitとしている。説明のために動作の各フェーズにP0乃至P8の名前を付けている。
1番目の波形は、クロック信号を示しており、図4でのPCK1、PCK1’、PCK2、PCK2’、PCK3信号に相当する。現実の回路ではクロックタイミングの微調整などが考えられ、これらは同一の信号とは限らないのであるが、ここでは説明のため簡略化して同じタイミングのものとして取り扱う。各フェーズの前半にhigh期間、後半にlow期間となるものとする。
2番目の波形は、共通データバスAである。共通データバスAはプリチャージバスであり、CLK1のhigh期間はプリチャージ期間として必ずhigh状態となる期間である。図では、PCと記載している。CLK1のlow期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも0を出力するドライバが存在するときはlow状態になり、ひとつも存在しないときはhigh状態を維持する。各フェーズの状態を、VA0乃至VA7、VA8で示している。図7では、波形を1種しか示していないが、共通データバスAはセグメントの数と同数存在している。
3番目の波形は、共通データバスBである。共通データバスBはプリチャージバスであり、CLK3のhigh期間はプリチャージ期間として必ずhigh状態となる期間である。図では、PCと記載している。CLK3のlow期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも0を出力するドライバが存在するときはlow状態になり、ひとつも存在しないときはhigh状態を維持する。各フェーズの状態を、VB0乃至VB7で示している。
4番目の波形は、バス接続制御部内のセグメント条件フラグBTの内容の変遷を示している。セグメント条件フラグBTは、PCK2の立下がりのタイミングで更新する。セグメント条件フラグBTは、セグメント条件フラグBT、共通データバスA、共通データバスBを基に判定回路の出力を記憶する構成であり、例えばVA0とVB0の内容を反映する部分をBT0と示している。以下、図示されているBT7まで同様である。図7では、波形を1種しか示していないが、セグメント条件フラグBTはセグメントの数と同数存在している。
5番目の波形は、FINAL信号の動作である。
各フェーズにおいて画素データの各ビットの比較を行うため、画素データ8ビットに対しては、8つのフェーズで比較される。比較は最上位ビットから始まり最下位ビットで終わるという順番であるため、P0のフェーズでは最上位ビットの比較を行い、P1では2番目のビット、P2では3番目のビット、・・・・P7では8番目のビット、すなわち最下位ビットの比較を行う。
セグメント条件フラグBTは、P0では初期状態すなわち1に設定されている。P1では最上位ビットの結果を保持しており、順次比較を行うとP8で最終の結果を保持していることになる。P8では、最終の結果を保持しているセグメント条件フラグBTの内容を各PEの条件フラグTへ反映させる。このため、このタイミングだけFINAL信号がオンとなる。このとき共通データバスAが使用される。このことはVA8に図示されている。
以上の第1の実施形態の説明では、最大値を検出するSIMD型マイクロプロセッサを取り上げている。本発明の第1の実施形態は、それに限定されるものではない。なぜなら、最小値を検出する場合には画素データをとり扱う論理を反転するだけでよいからである。最小値を検出するSIMD型マイクロプロセッサについては説明を割愛する。
《第2の実施形態》
図5は、本発明の第2の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図は、図4と同様に、PE群の一部を模式的に示したものである。図では全体で256個のPEを備えるプロセッサを想定しており、16個のPEで1つのセグメントを形成している。
図5は、本発明の第2の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図は、図4と同様に、PE群の一部を模式的に示したものである。図では全体で256個のPEを備えるプロセッサを想定しており、16個のPEで1つのセグメントを形成している。
各セグメントは16個のPE(PE0、PE1、・・・PE15)と1個のバス接続制御部80を有し、16個のPEと1個のバス接続制御部80は、共通データバスA51に対し入出力可能とされている。各PEは、第1の実施形態におけるものと同じであるため、説明を割愛する。
各セグメントのバス接続制御部80は、共通データバスB52と接続する。バス接続制御部80は、共通データバスB52に出力する出力ドライバ82と、セグメント条件フラグBT78と、判定回路76と、セグメント条件フラグBT78の内容を共通データバスA51へ出力するドライバ86と、フリップフロップ(以下、FFと記す。)102とを備える。FF102は、共通データバスA51の内容の反転を記憶し、図示されるPCK2信号に従って更新される。
共通データバスB52に出力する出力ドライバ82は、FF102の内容が1であり、かつセグメント条件フラグ78の内容が1である場合にのみ動作し、動作するときには共通データバスB52に対し0を出力する。判定回路76は、セグメント条件フラグBT78の内容、FF102の内容、及び共通データバスB52の内容に基づいて、下の表4のように自身のセグメント条件フラグBT78の次の内容を決定する。この判定回路76の入力組み合わせは8通りある。
セグメント条件フラグBT78が1(オン)、FF102が1のときにはそのセグメントの出力ドライバ82が共通データバスB52へ0を出力するため、共通データバスB52が1になることはないので、上記の(8)は出現しない。また、セグメント自身が0を共通データバスB52に出力していなくとも他のセグメントからの出力により共通データバスB52が0になると、次のセグメント条件フラグBT78は0(オフ)となる(上記(5)参照)。一度オフになると、この判定回路76からはオンには戻らない(上記(1)〜(4)参照)。なお、図示していないがセグメント条件フラグBT78は、初期状態にて1に設定されることが可能となっている。
共通データバスA51へのドライバ86は、セグメント条件フラグBT78が0であり且つFINAL信号が1(オン)となったときに、共通データバスA51へ0を出力する。
共通データバスB52もプリチャージバスであり、PCK3信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK3信号がhighの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
続いて、第2の実施形態に係るSIMD型マイクロプロセッサの動作を説明する。
最大値算出のための比較は最上位ビットからビット単位で行われる。最初、全てのPEの条件フラグT46と、全てのセグメントのセグメント条件フラグBT78は1(オン)にセットされる(初期状態)。
最初に最上位ビットの比較を行う。最上位ビットが1である画素データを持つPEは、共通データバスA51に0を出力する。このとき、このPEと同じセグメントに存在するPEで画素データの最上位が0であるPEは、判定回路50が上記表2の(5)の動作を行うため、自身の条件フラグT46を0(オフ)にする。一方、セグメント内の全てのPEで画素データの最上位が0である場合、このセグメントの共通データバスA51は1が保持される。
この段階で、条件フラグT46の内容が0(オフ)であるPEにある画素データは、最大値ではないと判断されていることになる。
バス接続制御部80では、FF102が共通データバスA51の内容の論理反転を記憶する。記憶はPCK2信号により行われる。そのため、共通データバスA51の内容が共通データバスB52への出力へ反映するのは、PCK2での次のタイミングになる。PCK2での次のタイミングでは、セグメント条件フラグBT78が初期値1であるため、このセグメントのFF102を受けて、共通データバスB52に対する動作を行う。即ち、このセグメントのFF102が1であるならば0を出力し、このセグメントのFF102が0であるならば動作しない(出力しない)。
共通データバスB52はプリチャージバスであり、ひとつでも共通データバスB52に0を出力するセグメントが存在すれば共通データバスB52は0となり、ひとつも共通データバスB52に0を出力するセグメントが存在しなければ共通データバスB52は1を保持する。
ここで各セグメントにおいて、共通データバスB52の内容、自身のFF102の内容、及び自身のセグメント条件フラグBT78の内容に基づいて、夫々の判定回路76が夫々のセグメント条件フラグBT78の次の状態を決定する。最上位ビットの比較段階では、セグメント条件フラグBT78の内容は初期値の1であるため、共通データバスB52の内容と自身のFF102の内容で、セグメント条件フラグBT78の次の状態が決定される。即ち、
・共通データバスB52の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・FF102の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスB52の内容が0でFF102の内容が0のとき、次のセグメント条件フラグBT78の内容は0
となる。
・共通データバスB52の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・FF102の内容が1のときは、次のセグメント条件フラグBT78の内容は1、
・共通データバスB52の内容が0でFF102の内容が0のとき、次のセグメント条件フラグBT78の内容は0
となる。
この段階で、セグメント条件フラグBT78の内容が0(オフ)であるセグメント内のPEにある画素データは、最大値ではないと判断されていることになる。
最上位ビットの比較が完了すると、次は上位から2番目のビットによる比較を行う。但しこのとき、共通データバスB52では最上位ビットに関する比較における動作を行っており(図8参照)これと同時に、共通データバスA51では上位から2番目のビットに関する比較における動作を実施する。
上位から2番目のビットによる比較では、このときすでに条件フラグT46が0(オフ)になっているPEは共通データバスA51への出力ができないため、比較対象から外れた扱いとなり、条件フラグT46が1(オン)であるPEの画素データだけが比較対象になる。上位から2番目のビットが1であり条件フラグT46が1(オン)であるPEは、共通データバスA51に0を出力する。
PCK2信号における次のタイミングでは、上位から2番目のビットによる比較結果としての共通データバスA51の内容の反転がFF102に既に記憶されているので、上位から2番目のビットによる共通データバスB52を介した比較が実施される。このとき同時に、上位から3番目のビットによる比較が共通データバスA51を介して実施される。
上位から2番目のビットによる共通データバスB52を介する比較では、すでにセグメント条件フラグBT78が0(オフ)になっているセグメントは、共通データバスB52への出力ができないため、比較対象から外れた扱いとなり、セグメント条件フラグBT78が1(オン)であるセグメントだけが比較対象となる。FF102が1、かつセグメント条件フラグBT78が1(オン)であるセグメントは、共通データバスB52に0を出力する。
このように、共通データバスA51と共通データバスB52では、異なるビットの比較を同時並行で行っている。
このように、順次画素データの比較対象が下位ビットへシフトされていき、最下位ビットの共通データバスB52を介した比較が完了した時点でセグメント条件フラグBT78が1(オン)となっているセグメント内のPEに最大値が含まれていることになる。そして、そのセグメント内で条件フラグT46の内容が1(オン)となっているPEに最大値が含まれていることになる。
最後に、FINAL信号がオンとされ、各セグメントのセグメント条件フラグBT78の内容が共通データバスA51へ出力される。即ち、セグメント条件フラグBT78の内容が0なら0が出力され、1なら何も出力されないので共通データバスA51では1が保持される。そのセグメント内の各PEは、共通データバスA51の内容と、自身の条件フラグT46の内容との論理積を再び条件フラグT46の内容とする。この動作により、セグメント条件フラグBT78の内容が0(オフ)であるセグメント内のPEに備わる条件フラグT46の内容はすべて0(オフ)となる。一方、セグメント条件フラグBT78の内容が1(オン)であるセグメント内のPEに備わる条件フラグT46の内容はそのままであるため、この段階で、全256PEの中で条件フラグT46の内容が1(オン)であるPEには最大値の画素データが含まれていることになる。
図8は、第2の実施形態に係るSIMD型マイクロプロセッサにおける信号及びレジスタの動作をチャート方式で図示したものである。例として画素データのサイズを8bitとしている。説明のために動作の各フェーズにP0乃至P8の名前を付けている。
1番目の波形は、クロック信号を示しており、図5でのPCK1、PCK1’、PCK2、PCK2’、PCK3信号に相当する。現実の回路ではクロックタイミングの微調整などが考えられ、これらは同一の信号とは限らないのであるが、ここでは説明のための簡略化で同じタイミングとして取り扱う。各フェーズの前半にhigh期間、後半にlow期間となるものとする。
2番目の波形は、共通データバスAである。共通データバスAはプリチャージバスであり、CLK1のhigh期間はプリチャージ期間として必ずhigh状態となる期間である。図では、PCと記載している。CLK1のlow期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも0を出力するドライバが存在するときはlow状態になり、ひとつも存在しないときはhigh状態を維持する。各フェーズの状態を、VA0乃至VA8で示している。図8では、波形を1種しか示していないが、共通データバスAはセグメントの数と同数存在している。
3番目の波形は、バス接続制御部内のFFの内容の変遷を示している。FFは、PCK2の立下がりのタイミングで更新する。FFは共通データバスAの内容を記憶することから、FFがVA0の内容を反映する部分をFF0と示しており、以下FF7までを図示している。図8では、波形を1種しか示していないが、FFはセグメントの数と同数存在している。
4番目の波形は、共通データバスBである。共通データバスBはプリチャージバスであり、CLK3のhigh期間はプリチャージ期間として必ずhigh状態となる期間である。図では、PCと記載している。CLK3のlow期間は評価期間となり、このバスへの出力の有無によって値が異なる。即ち、ひとつでも0を出力するドライバが存在するときはlow状態になり、ひとつも存在しないときはhigh状態を維持する。FF0乃至FF7を反映する状態を、VB0乃至VB7で示している。
5番目の波形は、バス接続制御部内のセグメント条件フラグBTの内容の変遷を示している。セグメント条件フラグBTは、PCK2の立下がりのタイミングで更新する。セグメント条件フラグBTは、セグメント条件フラグBT、FF、共通データバスBを基に判定回路の出力を記憶する構成であり、例えばFF0とVB0の内容を反映する部分をBT0と示している。以下、図示されているBT7まで同様である。図8では、波形を1種しか示していないが、セグメント条件フラグBTはセグメントの数と同数存在している。
6番目の波形は、FINAL信号の動作である。
各フェーズにおいて画素データの各ビットの比較を行うため、画素データ8ビットに対しては、8つのフェーズで比較される。共通データバスAにおける比較の結果を、次のフェーズの共通データバスBでの比較の動作に用いるという構成であるため、共通データバスAと共通データバスBとは、1フェーズ分のずれが生じている。
比較は最上位ビットから始まり最下位ビットで終わる順番である。共通データバスAでは、P0のフェーズが最上位ビットを比較するタイミングとされ、P1が2番目のビット、P2が3番目のビット、・・・・P7が8番目のビット、即ち最下位ビットを比較するタイミングとされる。共通データバスBでは、それより1フェーズ分ずれており、P1のフェーズが最上位ビットを比較するタイミングとされ、P2が2番目のビット、P3が3番目のビット、・・・・P8が8番目のビット、即ち最下位ビットを比較するタイミングとされる。
セグメント条件フラグBTは、共通データバスBでの比較の動作が行われる前の段階P1までは初期状態すなわち1に設定されている。P2では最上位ビットの結果を保持しており、順次比較を行うとP9で最終の結果を保持していることになる。P9では、最終の結果を保持しているセグメント条件フラグBTの内容を各PEの条件フラグTへ反映させる。このため、このタイミングだけFINAL信号がオンとなる。このとき共通データバスAが使用される。このことはVA9に図示されている。
以上の第2の実施形態の説明でも、最大値を検出するSIMD型マイクロプロセッサを取り上げている。本発明の第2の実施形態も、それに限定されるものではない。なぜなら、最小値を検出する場合には画素データをとり扱う論理を反転するだけでよいからである。最小値を検出するSIMD型マイクロプロセッサについては説明を割愛する。
《第3の実施形態》
図6は、本発明の第3の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図も、最大値検出を説明するために、PE群の一部を模式的に示している。
図6は、本発明の第3の実施形態に係る最大値検出回路を伴うSIMD型マイクロプロセッサの一部のブロック図である。この図も、最大値検出を説明するために、PE群の一部を模式的に示している。
更に、図6に示すSIMD型マイクロプロセッサは、ひとつのPEで複数の画素データを同時に演算できるものを想定している。つまり、通常のプロセッサがPEあたり8ビットの画素データ1個を扱うのに対して、図6のプロセッサはPEあたりn個(nは自然数)の画素データを扱うことができるものである。従って、全体で256個のPEを備えるとした場合、通常では256個の画素データを一度に処理し得るところを、図6のプロセッサは(256×n)個の画素データを一度に処理し得る。図6ではnを2としている。図では全体で256個のPEを備えるプロセッサを想定しており、16個のPEで1つのセグメントを形成している。
各セグメントは16個のPE(PE0、PE1、・・・PE15)と1個のバス接続制御部80を有し、16個のPEと1個のバス接続制御部80は、共通データバスA51に対し入出力可能とされている。各PEは、画素データを格納する第1のAレジスタ38と、第1の条件フラグT46を備えている。PEは、第1の条件フラグT46がオンの間(“1”の間)第1の出力ドライバ72により第1の共通データバスA51に出力可能であるが、第1の条件フラグT46がオフ(“0”)のときには出力できない。第1の共通データバスA51は、いわゆるプリチャージバスであり、PCK1信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK1信号がhighの期間には各PEの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
各PEは第1の判定回路50を備えている。第1の判定回路50は、自身の第1の条件フラグT46の内容、自身の(比較対象ビットの)データ内容、及び第1の共通データバスA51の内容に基づいて、自身の第1の条件フラグT46の次の内容を決定する。この第1の判定回路50は、第2の実施形態での判定回路50と同じものである。
更に加えて、各PEは、画素データを格納する第2のAレジスタ38’と、第2の条件フラグT46’を備えている。PEは、第2の条件フラグT46’がオンの間(“1”の間)第2の出力ドライバ72’により第2の共通データバスA51’に出力可能であるが、第2の条件フラグT46’がオフ(“0”)のときには出力できない。第2の共通データバスA51’は、いわゆるプリチャージバスであり、PCK1信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK1信号がhighの期間には各PEの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
各PEは第2の判定回路50’を備えている。第2の判定回路50’は、自身の第2の条件フラグT46’の内容、自身の(比較対象の)データ内容、及び第2の共通データバスA51’の内容に基づいて、自身の第2の条件フラグT46’の次の内容を決定する。この第2の判定回路50’も、第2の実施形態での判定回路50と同じものである。
各セグメントのバス接続制御部80は、共通データバスB52と接続する。バス接続制御部80は、共通データバスB52に出力する出力ドライバ82と、セグメント条件フラグBT78と、判定回路76と、セグメント条件フラグBT78の内容を第1の共通データバスA51へ出力するドライバ86と、セグメント条件フラグBT78の内容を第2の共通データバスA51’へ出力するドライバ86’と、フリップフロップ(以下、FFと記す。)102を備える。FF102は、第1の共通データバスA51の内容の反転と第2の共通データバスA51’の内容の反転との論理和を記憶し、図示されるPCK2信号に従って更新される。
共通データバスB52に出力する出力ドライバ82は、FF102の内容が1であり、かつセグメント条件フラグ78の内容が1である場合にのみ動作し、動作するときには共通データバスB52に対し0を出力する。判定回路76は、セグメント条件フラグBT78の内容、FF102の内容、及び共通データバスB52の内容に基づいて、セグメント条件フラグBT78の次の内容を決定する。この判定回路76は、第2の実施形態における判定回路76(表4参照)と同じものである。
第1の共通データバスA51へのドライバ86は、セグメント条件フラグBT78が0でかつFINAL信号が1(オン)となったときに、第1の共通データバスA51へ0を出力する。同様に、第2の共通データバスA51’へのドライバ86’は、セグメント条件フラグBT78が0でかつFINAL信号が1(オン)となったときに、第2の共通データバスA51’へ0を出力する。
共通データバスB52もプリチャージバスであり、PCK3信号がlowの期間には、プリチャージ時間となりプルアップ(high状態)される。PCK3信号がhighの期間には各セグメントの出力ドライバのうちひとつでも動作するとバスがlow状態となり、逆にひとつも動作しないとhigh状態が保持される。
続いて、第3の実施形態に係るSIMD型マイクロプロセッサの動作を説明する。基本的な動作は、第2の実施形態と略同様であるので、差異となる部分のみを以下に示す。
第1の共通データバスA51が、各PEの第1のAレジスタ38に格納されている画像データの比較動作を行うことが可能であるということは、第2の実施形態と同様である。第2の共通データバスA51’も、同様の構成を備えているから、各PEの第2のAレジスタ38’に格納されている画像データの比較動作を行うことが可能である。
バス接続制御部80の内部において、FF102は、第1の共通データバスA51の内容の反転と第2の共通データバスA51’の内容の反転との、論理和を格納することになっている。そのため、第1の共通データバスA51と第2の共通データバスA51’とのどちらか一方が0となる場合に、FF102には1が格納されることになる。
第1の共通データバスA51と第2の共通データバスA51’とのどちらか一方が0となる場合とは、16個のPEのうち少なくともひとつのPEにて、第1の出力ドライバ72又は第2の出力ドライバ72’が動作し0を出力したことを示す。逆に、第1の共通データバスA51と第2の共通データバスA51’のどちらも1である場合とは、16個すべてのPEの第1の出力ドライバ72と第2の出力ドライバ72’が動作しなかったことを示す。このため、FF102には16個のPE内にある32個の画素データの比較結果が格納されていることになる。
次の段階の共通データバスB52における比較の動作については、第2の実施形態と同様である。説明は割愛する。
上述の第3の実施形態に係るSIMD型マイクロプロセッサでは、各セグメントがFF102を備えている。このFF102が備わらない実施形態も想定し得る。
つまり、第3の実施形態と、第3の実施形態から上記FF102が取り除かれた形態との関係は、上記の第2の実施形態と上記の第1の実施形態との関係と、同じものである。
3・・・PE(プロセッサエレメント)、4・・・グローバルプロセッサ、6・・・レジスタファイル、8・・・演算アレイ、38・・・Aレジスタ、第1のAレジスタ、38’・・・第2のAレジスタ、46・・・条件フラグT、第1の条件フラグT、46’・・・第2の条件フラグT、50・・・判定回路、第1の判定回路、50’・・・第2の判定回路、51・・・共通データバスA、第1の共通データバスA、51’・・・第2の共通データバスA、52・・・共通データバスB、80・・・バス接続制御部。
Claims (4)
- 複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
前記バス接続制御部は、第1のデータバスの内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とするSIMD型マイクロプロセッサ。 - 複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続する第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、第1のデータバスの内容を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容を第1のデータバスへ出力する手段とを備えることを特徴とするSIMD型マイクロプロセッサ。 - 複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部とに接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とするSIMD型マイクロプロセッサ。 - 複数のデータを処理するための複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各PEは、n個(nは2以上の自然数)のデータを同時に取り扱う構成を有し、
前記SIMD型マイクロプロセッサは、少なくとも2個以上のプロセッサエレメントを含むセグメントを複数有し、
各セグメントは、1個のバス接続制御部と、自身が含む全プロセッサエレメントと前記バス接続制御部に接続するn本の第1のデータバスとを備え、
更に前記SIMD型マイクロプロセッサは、全セグメントのバス接続制御部と接続する第2のデータバスを備え、
バス接続制御部は、n本の第1のデータバスの内容の論理和を記憶する記憶手段と、該記憶手段の内容を第2のデータバスへ出力する手段と、第1のデータバスと第2のデータバスの状況により内容を決定するセグメントテストレジスタと、セグメントテストレジスタの内容をn本の第1のデータバスへ出力する手段とを備えることを特徴とするSIMD型マイクロプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005297386A JP2007108913A (ja) | 2005-10-12 | 2005-10-12 | ピーク値検出を行うsimd型マイクロプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005297386A JP2007108913A (ja) | 2005-10-12 | 2005-10-12 | ピーク値検出を行うsimd型マイクロプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007108913A true JP2007108913A (ja) | 2007-04-26 |
Family
ID=38034744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005297386A Pending JP2007108913A (ja) | 2005-10-12 | 2005-10-12 | ピーク値検出を行うsimd型マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007108913A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11514294B2 (en) * | 2017-02-24 | 2022-11-29 | Untether Ai Corporation | System and method for energy-efficient implementation of neural networks |
US11614947B2 (en) | 2018-02-23 | 2023-03-28 | Untether Ai Corporation | Computational memory |
US11941405B2 (en) | 2018-02-23 | 2024-03-26 | Untether Ai Corporation | Computational memory |
-
2005
- 2005-10-12 JP JP2005297386A patent/JP2007108913A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11514294B2 (en) * | 2017-02-24 | 2022-11-29 | Untether Ai Corporation | System and method for energy-efficient implementation of neural networks |
US11614947B2 (en) | 2018-02-23 | 2023-03-28 | Untether Ai Corporation | Computational memory |
US11941405B2 (en) | 2018-02-23 | 2024-03-26 | Untether Ai Corporation | Computational memory |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008071130A (ja) | Simd型マイクロプロセッサ | |
JP2620511B2 (ja) | データ・プロセッサ | |
JP3955741B2 (ja) | ソート機能を有するsimd型マイクロプロセッサ | |
US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
JP2007108913A (ja) | ピーク値検出を行うsimd型マイクロプロセッサ | |
US20130212362A1 (en) | Image processing device and data processor | |
JP2007073010A (ja) | Simd方式プロセッサ、当該simd方式プロセッサを利用する画像処理方法、及び画像処理装置 | |
JP4482356B2 (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 | |
JPH1153189A (ja) | 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体 | |
JP2005189966A (ja) | 画像処理装置 | |
JP2001005640A (ja) | 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置 | |
JP2004192405A (ja) | Simd型プロセッサ | |
JP2008071037A (ja) | Simd型マイクロプロセッサ | |
JP2007272730A (ja) | データ処理装置及びその方法 | |
JP2007102799A (ja) | ソート機能を有するsimd型マイクロプロセッサ | |
JP6294142B2 (ja) | 被演算データ読み出しのための外部メモリアクセスが発生しないプログラマブルコントローラ | |
JPH01231126A (ja) | 情報処理装置 | |
JPH0228828A (ja) | 最大値最小値検出回路 | |
JP2004206387A (ja) | 画像処理方法およびプロセッサおよび画像処理装置 | |
JPH0236423A (ja) | 退避/復帰レジスタアドレス生成回路 | |
JP3886314B2 (ja) | データ転送回路及びその回路を用いた半導体集積回路装置 | |
US7490226B2 (en) | Method using vector component comprising first and second bits to regulate movement of dependent instructions in a microprocessor | |
JP2013161325A (ja) | Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法 | |
JP2006331281A (ja) | マルチプロセッサシステム | |
JPH11282676A (ja) | 演算処理方法およびマイクロプロセッサ装置 |