JP2002229962A - 総和値とピーク値を検出するsimd型マイクロプロセッサ - Google Patents
総和値とピーク値を検出するsimd型マイクロプロセッサInfo
- Publication number
- JP2002229962A JP2002229962A JP2001029484A JP2001029484A JP2002229962A JP 2002229962 A JP2002229962 A JP 2002229962A JP 2001029484 A JP2001029484 A JP 2001029484A JP 2001029484 A JP2001029484 A JP 2001029484A JP 2002229962 A JP2002229962 A JP 2002229962A
- Authority
- JP
- Japan
- Prior art keywords
- register
- bit
- value
- instruction
- processor element
- 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
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】 回路規模を小さくし演算サイクル数を少なく
して、各PE間での総和値演算及びピーク検出を行える
SIMD型マイクロプロセッサを提供する。 【解決手段】 各PE(プロセッサエレメント)は、該
PEが備える算術論理演算器へ接続する第1のMPX
(マルチプレクサ)に対し、その両側に隣接する夫々の
PEから直接入力する経路を二つ付加される。更に、該
第1のMPXの選択を制御する第1の制御ビットを備え
る。隣接するPEの第1のMPXへ出力する第1の出力
信号として、各PE内の所定のレジスタに格納されるデ
ータと、出力先PEとは反対隣に接するPEからの第1
の出力信号との、どちらかが選択される。更に、この選
択を制御する第2の制御ビットを備える。所定の命令が
発行されたときに、第1の制御ビット及び第2の制御ビ
ットに設定されるべき値が、予め各PE内の所定の記録
部に記録されている。
して、各PE間での総和値演算及びピーク検出を行える
SIMD型マイクロプロセッサを提供する。 【解決手段】 各PE(プロセッサエレメント)は、該
PEが備える算術論理演算器へ接続する第1のMPX
(マルチプレクサ)に対し、その両側に隣接する夫々の
PEから直接入力する経路を二つ付加される。更に、該
第1のMPXの選択を制御する第1の制御ビットを備え
る。隣接するPEの第1のMPXへ出力する第1の出力
信号として、各PE内の所定のレジスタに格納されるデ
ータと、出力先PEとは反対隣に接するPEからの第1
の出力信号との、どちらかが選択される。更に、この選
択を制御する第2の制御ビットを備える。所定の命令が
発行されたときに、第1の制御ビット及び第2の制御ビ
ットに設定されるべき値が、予め各PE内の所定の記録
部に記録されている。
Description
【0001】
【発明の属する技術分野】本発明は、SIMD(Sin
gle Instruction−streamMul
tiple Data−stream;単一命令多デー
タ処理)型マイクロプロセッサに関する。
gle Instruction−streamMul
tiple Data−stream;単一命令多デー
タ処理)型マイクロプロセッサに関する。
【0002】
【従来の技術】SIMD型マイクロプロセッサでは、複
数のデータに対して1つの命令で同時に同一の演算処理
が実行可能である。この構造により、演算内容が同一で
あり且つデータ量が非常に多い処理(例えば、画像処
理)に係る用途において、頻用される。
数のデータに対して1つの命令で同時に同一の演算処理
が実行可能である。この構造により、演算内容が同一で
あり且つデータ量が非常に多い処理(例えば、画像処
理)に係る用途において、頻用される。
【0003】SIMD型マイクロプロセッサにおける通
常の演算処理では、複数の演算ユニット(Proces
sor Element〔PE〕;プロセッサエレメン
ト)を並べ同一の演算を同時に複数のデータに対して実
行する。
常の演算処理では、複数の演算ユニット(Proces
sor Element〔PE〕;プロセッサエレメン
ト)を並べ同一の演算を同時に複数のデータに対して実
行する。
【0004】SIMD型マイクロプロセッサは、全ての
PEが同時に動作することにおいてはその性能を発揮で
きるが、PE毎に処理を変える必要があるような処
理、若しくは演算結果によって後続の処理を変えるよ
うな処理(逐次処理という。)においては、十分な性能
を発揮できない。
PEが同時に動作することにおいてはその性能を発揮で
きるが、PE毎に処理を変える必要があるような処
理、若しくは演算結果によって後続の処理を変えるよ
うな処理(逐次処理という。)においては、十分な性能
を発揮できない。
【0005】例えば、画像処理においては、全ての画素
データの総和値、又は全ての画素データのピーク値(最
大値、最小値)を特徴量として画像処理の計算式を変更
する、といった処理が必要となることがある。また、例
えば、固定小数点演算では演算時に演算前のデータの最
大値を求めておき、それに基づいてオーバフローを生じ
ない最大のビット幅で乗算などの演算を行い、演算精度
を高めるということを行うことが多い。
データの総和値、又は全ての画素データのピーク値(最
大値、最小値)を特徴量として画像処理の計算式を変更
する、といった処理が必要となることがある。また、例
えば、固定小数点演算では演算時に演算前のデータの最
大値を求めておき、それに基づいてオーバフローを生じ
ない最大のビット幅で乗算などの演算を行い、演算精度
を高めるということを行うことが多い。
【0006】特開平10−289305号には、上記の
ような特徴量を求めるため、各PEが持つフラグビット
に比較演算結果を格納し、さらに全てのPEのフラグビ
ットの「OR演算」の結果をグローバルプロセッサに転
送し、よってバイナリサーチを行う、という技術が開示
されている。ここで、グローバルプロセッサは、後でも
説明するが、プログラムを解読しSIMD型マイクロプ
ロセッサ全体に係る制御を行なう部位である。
ような特徴量を求めるため、各PEが持つフラグビット
に比較演算結果を格納し、さらに全てのPEのフラグビ
ットの「OR演算」の結果をグローバルプロセッサに転
送し、よってバイナリサーチを行う、という技術が開示
されている。ここで、グローバルプロセッサは、後でも
説明するが、プログラムを解読しSIMD型マイクロプ
ロセッサ全体に係る制御を行なう部位である。
【0007】上記の特開平10−289305号に開示
されるSIMD型マイクロプロセッサによれば、以下に
示す手順により、複数のPEのレジスタに格納されるデ
ータ間の最大値を検出することが可能となる。以下の手
順においてデータは符号なし8ビット値である。
されるSIMD型マイクロプロセッサによれば、以下に
示す手順により、複数のPEのレジスタに格納されるデ
ータ間の最大値を検出することが可能となる。以下の手
順においてデータは符号なし8ビット値である。
【0008】(1−1)グローバルプロセッサの汎用レ
ジスタの値を「128」に設定する。 (1−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (1−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
ジスタの値を「128」に設定する。 (1−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (1−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0009】(2−1)上記の「OR演算」の結果が真
(即ち、“1”)ならば汎用レジスタの値に「64」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「64」を減算する。 (2−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (2−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
(即ち、“1”)ならば汎用レジスタの値に「64」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「64」を減算する。 (2−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (2−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0010】(3−1)上記の「OR演算」の結果が真
(即ち、“1”)ならば汎用レジスタの値に「32」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「32」を減算する。(同様の処理が続くため途中省略
する。)
(即ち、“1”)ならば汎用レジスタの値に「32」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「32」を減算する。(同様の処理が続くため途中省略
する。)
【0011】(6−1)「OR演算」の結果が真(即
ち、“1”)ならば汎用レジスタの値に「4」を加算、
偽(即ち、“0”)ならば汎用レジスタの値から「4」
を減算する。 (6−2)各PEの持つ演算レジスタの値と汎用レジス
タの値を比較し、演算レジスタの値が汎用レジスタの値
以上であるPEではフラグビットを“1”、それ以外の
PEではフラグビットを“0”に設定する。 (6−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
ち、“1”)ならば汎用レジスタの値に「4」を加算、
偽(即ち、“0”)ならば汎用レジスタの値から「4」
を減算する。 (6−2)各PEの持つ演算レジスタの値と汎用レジス
タの値を比較し、演算レジスタの値が汎用レジスタの値
以上であるPEではフラグビットを“1”、それ以外の
PEではフラグビットを“0”に設定する。 (6−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0012】(7−1)上記の「OR演算」の結果が真
(即ち、“1”)ならば汎用レジスタの値に「2」を加
算、偽(即ち、“0”)ならば汎用レジスタの値から
「2」を減算する。 (7−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (7−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。 (7−4)上記の「OR演算」の結果が真(即ち、
“1”)ならば汎用レジスタの値に「1」を加算、偽
(即ち、“0”)ならば汎用レジスタの値から「1」を
減算する。この段階での汎用レジスタの値が、最大値で
ある。
(即ち、“1”)ならば汎用レジスタの値に「2」を加
算、偽(即ち、“0”)ならば汎用レジスタの値から
「2」を減算する。 (7−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (7−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。 (7−4)上記の「OR演算」の結果が真(即ち、
“1”)ならば汎用レジスタの値に「1」を加算、偽
(即ち、“0”)ならば汎用レジスタの値から「1」を
減算する。この段階での汎用レジスタの値が、最大値で
ある。
【0013】以上のようにして、最大値を検出すること
ができる。ただし、上記の処理では各PEでの比較演算
の結果をグローバルプロセッサに戻す(転送する)とい
う動作が必要であるため、データのビット長に応じて処
理ステップ数が増加する。8ビットのデータでは、処理
ステップ数が上述の例では25サイクルとなるが、16
ビットのデータでは、49サイクルが必要となる。更
に、このSIMD型マイクロプロセッサでは、画素デー
タの特徴量のうち、総和値を求めることができない。
ができる。ただし、上記の処理では各PEでの比較演算
の結果をグローバルプロセッサに戻す(転送する)とい
う動作が必要であるため、データのビット長に応じて処
理ステップ数が増加する。8ビットのデータでは、処理
ステップ数が上述の例では25サイクルとなるが、16
ビットのデータでは、49サイクルが必要となる。更
に、このSIMD型マイクロプロセッサでは、画素デー
タの特徴量のうち、総和値を求めることができない。
【0014】第2969115号では、各PEの持つデ
ータを順次、全PEに供給し、各PEの持つデータとの
比較結果をPE外部に設けた検出回路によって判別する
ことでピーク検出を行う構成について開示されている。
この構成では、データのビット幅に係わらず、ピーク検
出が行えるという利点を持つが、処理時間に懸念すべき
点がある。
ータを順次、全PEに供給し、各PEの持つデータとの
比較結果をPE外部に設けた検出回路によって判別する
ことでピーク検出を行う構成について開示されている。
この構成では、データのビット幅に係わらず、ピーク検
出が行えるという利点を持つが、処理時間に懸念すべき
点がある。
【0015】特公平8−14816号では、PE間にツ
リー状に演算器を設け、各ツリー毎にパイプラインステ
ージを設定することによって演算器の負荷を少なく保持
したまま、ピーク検出や総和などの演算を高速に行うこ
とができる回路構成について開示している。この発明
は、演算対象のデータのビット幅が広くPE数が少ない
場合には、バイナリサーチよりも高速に処理を行うこと
ができるという利点をもつ。ただし、PE数が増加する
と演算器の数が増加し、回路規模の増大に繋がるという
欠点をもつ。また、ピーク値検出や総和などの演算の最
終段階では、全体PEの半分を跨ぐ演算が必要であるた
め、動作速度において懸念すべき点がある。
リー状に演算器を設け、各ツリー毎にパイプラインステ
ージを設定することによって演算器の負荷を少なく保持
したまま、ピーク検出や総和などの演算を高速に行うこ
とができる回路構成について開示している。この発明
は、演算対象のデータのビット幅が広くPE数が少ない
場合には、バイナリサーチよりも高速に処理を行うこと
ができるという利点をもつ。ただし、PE数が増加する
と演算器の数が増加し、回路規模の増大に繋がるという
欠点をもつ。また、ピーク値検出や総和などの演算の最
終段階では、全体PEの半分を跨ぐ演算が必要であるた
め、動作速度において懸念すべき点がある。
【0016】特開平8−30577号においては、演算
アレイの外部に別途、全PEの演算レジスタのデータを
対象にした演算を実行できる演算器を装備するプロセッ
サが開示されている。このプロセッサでは、ピーク検出
だけでなく、総和演算も行うことができる。全PE数の
サイクルの演算時間(例えば256PEでは256サイ
クル)が必要となり、PE数が多いSIMD型プロセッ
サにおいてはサイクル数が多くなるという面で懸念があ
るが、追加ハードウェアを少なくできる利点をもつ。
アレイの外部に別途、全PEの演算レジスタのデータを
対象にした演算を実行できる演算器を装備するプロセッ
サが開示されている。このプロセッサでは、ピーク検出
だけでなく、総和演算も行うことができる。全PE数の
サイクルの演算時間(例えば256PEでは256サイ
クル)が必要となり、PE数が多いSIMD型プロセッ
サにおいてはサイクル数が多くなるという面で懸念があ
るが、追加ハードウェアを少なくできる利点をもつ。
【0017】また、特開平11−296498号におい
ては、離れているPE間の演算レジスタを演算対象とす
る経路を設けることにより、トーナメント形式にてピー
ク検出ができるプロセッサにつき、開示されている。
ては、離れているPE間の演算レジスタを演算対象とす
る経路を設けることにより、トーナメント形式にてピー
ク検出ができるプロセッサにつき、開示されている。
【0018】
【発明が解決しようとする課題】本発明は、回路規模を
少なく保ち且つ演算サイクル数を少なくして、各PE間
での総和値演算及びピーク検出を行えるSIMD型マイ
クロプロセッサを提供することを目的とする。
少なく保ち且つ演算サイクル数を少なくして、各PE間
での総和値演算及びピーク検出を行えるSIMD型マイ
クロプロセッサを提供することを目的とする。
【0019】
【課題を解決するための手段】本発明は、上記の目的を
達成するためになされたものである。本発明に係る請求
項1に記載のSIMD型マイクロプロセッサは、複数の
データを同時に処理するための複数のプロセッサエレメ
ントを有するSIMD型マイクロプロセッサである。そ
のSIMD型マイクロプロセッサにおいて、各プロセッ
サエレメントは、該プロセッサエレメントが備える算術
論理演算器へ接続する第1のマルチプレクサに対し、そ
の両側に隣接する夫々のプロセッサエレメントから直接
入力する経路を二つ付加され、更に、該第1のマルチプ
レクサの選択を制御する第1の制御ビットを備え、隣接
するプロセッサエレメントの第1のマルチプレクサへ出
力する第1の出力信号として、各プロセッサエレメント
内の所定のレジスタに格納されるデータと、出力先プロ
セッサエレメントとは反対隣に接するプロセッサエレメ
ントからの第1の出力信号との、どちらかが選択され、
更に、この選択を制御する第2の制御ビットを備え、所
定の命令が発行されたときに、第1の制御ビット及び第
2の制御ビットに設定されるべき値が、予め各プロセッ
サエレメント内の所定の記録部に記録されている。
達成するためになされたものである。本発明に係る請求
項1に記載のSIMD型マイクロプロセッサは、複数の
データを同時に処理するための複数のプロセッサエレメ
ントを有するSIMD型マイクロプロセッサである。そ
のSIMD型マイクロプロセッサにおいて、各プロセッ
サエレメントは、該プロセッサエレメントが備える算術
論理演算器へ接続する第1のマルチプレクサに対し、そ
の両側に隣接する夫々のプロセッサエレメントから直接
入力する経路を二つ付加され、更に、該第1のマルチプ
レクサの選択を制御する第1の制御ビットを備え、隣接
するプロセッサエレメントの第1のマルチプレクサへ出
力する第1の出力信号として、各プロセッサエレメント
内の所定のレジスタに格納されるデータと、出力先プロ
セッサエレメントとは反対隣に接するプロセッサエレメ
ントからの第1の出力信号との、どちらかが選択され、
更に、この選択を制御する第2の制御ビットを備え、所
定の命令が発行されたときに、第1の制御ビット及び第
2の制御ビットに設定されるべき値が、予め各プロセッ
サエレメント内の所定の記録部に記録されている。
【0020】本発明に係る請求項2に記載のSIMD型
マイクロプロセッサは、各プロセッサエレメントに補助
レジスタが備わり、所定の命令が発行されたとき、該補
助レジスタの設定される内容に応じて、個々のプロセッ
サエレメントにおいて夫々異なる命令が実行され、該補
助レジスタの設定される内容は、予め各プロセッサエレ
メント内の上記所定の記録部に記録されている、請求項
1に記載のSIMD型マイクロプロセッサである。
マイクロプロセッサは、各プロセッサエレメントに補助
レジスタが備わり、所定の命令が発行されたとき、該補
助レジスタの設定される内容に応じて、個々のプロセッ
サエレメントにおいて夫々異なる命令が実行され、該補
助レジスタの設定される内容は、予め各プロセッサエレ
メント内の上記所定の記録部に記録されている、請求項
1に記載のSIMD型マイクロプロセッサである。
【0021】本発明に係る請求項3に記載のSIMD型
マイクロプロセッサは、上記補助レジスタに設定され
る、個々のプロセッサエレメントに関する命令の中に、
プロセッサエレメントを待機状態にする命令が含まれて
いる、請求項2に記載のSIMD型マイクロプロセッサ
である。
マイクロプロセッサは、上記補助レジスタに設定され
る、個々のプロセッサエレメントに関する命令の中に、
プロセッサエレメントを待機状態にする命令が含まれて
いる、請求項2に記載のSIMD型マイクロプロセッサ
である。
【0022】
【発明の実施の形態】以下、図面を参照して、本発明に
係る好適な実施形態を説明する。
係る好適な実施形態を説明する。
【0023】図11は、本発明に係るSIMD型マイク
ロプロセッサ2の概略の構成を示すブロック図である。
該SIMD型マイクロプロセッサ2は、概略、グローバ
ルプロセッサ4、レジスタファイル6、及び演算アレイ
8から構成される。
ロプロセッサ2の概略の構成を示すブロック図である。
該SIMD型マイクロプロセッサ2は、概略、グローバ
ルプロセッサ4、レジスタファイル6、及び演算アレイ
8から構成される。
【0024】(1)グローバルプロセッサ4 このグローバルプロセッサ4そのものは、いわゆるSI
SD型のプロセッサであり、プログラムRAM10とデ
ータRAM12を内蔵し(図12参照)、プログラムを
解読し各種制御信号を生成する。この制御信号は内蔵す
る各種ブロックの以外に、レジスタファイル6、演算ア
レイ8にも供給される。また、GP(グローバルプロセ
ッサ)命令実行時は内蔵する汎用レジスタ、ALU(算
術論理演算器)等を使用して各種演算処理、プログラム
制御処理をおこなう。
SD型のプロセッサであり、プログラムRAM10とデ
ータRAM12を内蔵し(図12参照)、プログラムを
解読し各種制御信号を生成する。この制御信号は内蔵す
る各種ブロックの以外に、レジスタファイル6、演算ア
レイ8にも供給される。また、GP(グローバルプロセ
ッサ)命令実行時は内蔵する汎用レジスタ、ALU(算
術論理演算器)等を使用して各種演算処理、プログラム
制御処理をおこなう。
【0025】(2)レジスタファイル6 PE(プロセッサエレメント)命令で処理されるデータ
を保持している。PE(プロセッサエレメント)3は、
公知のように、SIMD型マイクロプロセッサにおいて
個別の演算を実行する構成単位である。図12のレジス
タファイル6及び演算アレイ8が示すように、図12の
SIMD型マイクロプロセッサ2では256個のPE3
を含んでいる。上記のPE命令はSIMD型の命令であ
り、レジスタファイル6に保持されている複数のデータ
に対し、同時に同じ処理を行なう。このレジスタファイ
ル6からのデータの読み出し/書き込みの制御はグロー
バルプロセッサ4からの制御によって行なわれる。読み
出されたデータは演算アレイ8に送られ、演算アレイ8
での演算処理後にレジスタファイル6に書き込まれる。
を保持している。PE(プロセッサエレメント)3は、
公知のように、SIMD型マイクロプロセッサにおいて
個別の演算を実行する構成単位である。図12のレジス
タファイル6及び演算アレイ8が示すように、図12の
SIMD型マイクロプロセッサ2では256個のPE3
を含んでいる。上記のPE命令はSIMD型の命令であ
り、レジスタファイル6に保持されている複数のデータ
に対し、同時に同じ処理を行なう。このレジスタファイ
ル6からのデータの読み出し/書き込みの制御はグロー
バルプロセッサ4からの制御によって行なわれる。読み
出されたデータは演算アレイ8に送られ、演算アレイ8
での演算処理後にレジスタファイル6に書き込まれる。
【0026】また、レジスタファイル6はプロセッサ2
外部からのアクセスが可能であり、グローバルプロセッ
サ4の制御とは別に、外部から特定のレジスタに対し読
み出し/書き込みが行なわれる。
外部からのアクセスが可能であり、グローバルプロセッ
サ4の制御とは別に、外部から特定のレジスタに対し読
み出し/書き込みが行なわれる。
【0027】(3)演算アレイ PE命令の演算処理が行なわれる。処理の制御はすべて
グローバルプロセッサ4から行なわれる。
グローバルプロセッサ4から行なわれる。
【0028】図12は、本発明に係るSIMD型マイク
ロプロセッサ2の構成を示すブロック図である。後で説
明する、本発明の第1の実施形態に係るSIMD型マイ
クロプロセッサ2(図1)、及び本発明の第2の実施形
態に係るSIMD型マイクロプロセッサ2(図7)の共
通の基礎となる構成を示すものである。
ロプロセッサ2の構成を示すブロック図である。後で説
明する、本発明の第1の実施形態に係るSIMD型マイ
クロプロセッサ2(図1)、及び本発明の第2の実施形
態に係るSIMD型マイクロプロセッサ2(図7)の共
通の基礎となる構成を示すものである。
【0029】グロバールプロセッサ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が内蔵され
ている。
サ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が内蔵され
ている。
【0030】これらのレジスタと、(図示していない)
命令デコーダ、ALU、メモリ制御回路、割り込み制御
回路、外部I/O制御回路及びGP演算制御回路とを使
用して、GP命令の実行が行なわれる。
命令デコーダ、ALU、メモリ制御回路、割り込み制御
回路、外部I/O制御回路及びGP演算制御回路とを使
用して、GP命令の実行が行なわれる。
【0031】また、PE命令実行時には、命令デコーダ
(図示せず。)、レジスタファイル制御回路(図示せ
ず。)、PE演算制御回路(図示せず。)を使用して、
レジスタファイル6の制御と演算アレイ8の制御が行な
われる。さらに、データRAM12から複数のPEレジ
スタファイル6にデータを転送できるように、設定され
ている。
(図示せず。)、レジスタファイル制御回路(図示せ
ず。)、PE演算制御回路(図示せず。)を使用して、
レジスタファイル6の制御と演算アレイ8の制御が行な
われる。さらに、データRAM12から複数のPEレジ
スタファイル6にデータを転送できるように、設定され
ている。
【0032】レジスタファイル6においては、1つのP
E単位に8ビットのレジスタ34が32本内蔵されてお
り、256個のPE分の(32本の)組が、アレイ構成
になっている。レジスタ34は各PEにおいて、R0、
R1、R2、...R31と称されている。それぞれの
レジスタ34は、演算アレイ8に対して1つの読み出し
ポートと1つの書き込みポートを備えており、8ビット
のリード/ライト兼用のバスで演算アレイ8からアクセ
スされる。32本のレジスタの内、24本(R0〜R2
3)はプロセッサ外部からアクセス可能であり、外部か
らはクロック(CLK)とアドレス(Addres
s)、リード/ライト制御(RWB)を入力すること
で、任意のレジスタ34に対し、読み書きできる。残り
の8本(R24〜R31)のレジスタ34は、PE演算
の一時的な演算データ保存用として使用される。
E単位に8ビットのレジスタ34が32本内蔵されてお
り、256個のPE分の(32本の)組が、アレイ構成
になっている。レジスタ34は各PEにおいて、R0、
R1、R2、...R31と称されている。それぞれの
レジスタ34は、演算アレイ8に対して1つの読み出し
ポートと1つの書き込みポートを備えており、8ビット
のリード/ライト兼用のバスで演算アレイ8からアクセ
スされる。32本のレジスタの内、24本(R0〜R2
3)はプロセッサ外部からアクセス可能であり、外部か
らはクロック(CLK)とアドレス(Addres
s)、リード/ライト制御(RWB)を入力すること
で、任意のレジスタ34に対し、読み書きできる。残り
の8本(R24〜R31)のレジスタ34は、PE演算
の一時的な演算データ保存用として使用される。
【0033】上記の残りの8本(R24〜R31)のレ
ジスタ34には、グローバルプロセッサ4のデータRA
M12からのデータが書き込まれることもある。グロー
バルプロセッサ4からのライト制御信号と、演算アレイ
8内の条件レジスタ(Tレジスタ)(図示せず。)に格
納されるデータ(フラグ)内容とを条件にして、レジス
タファイル6に内蔵される8本のレジスタ34(R24
〜R31)に対し、グローバルプロセッサ4のデータR
AM12のデータが(条件を満たす)複数のPE3に同
時に書き込まれる。また、データRAM12は64ビッ
トの出力ポートを備え、1つのPE3に対しても8本の
レジスタ34に同時に64ビットの書き込みが可能であ
る。
ジスタ34には、グローバルプロセッサ4のデータRA
M12からのデータが書き込まれることもある。グロー
バルプロセッサ4からのライト制御信号と、演算アレイ
8内の条件レジスタ(Tレジスタ)(図示せず。)に格
納されるデータ(フラグ)内容とを条件にして、レジス
タファイル6に内蔵される8本のレジスタ34(R24
〜R31)に対し、グローバルプロセッサ4のデータR
AM12のデータが(条件を満たす)複数のPE3に同
時に書き込まれる。また、データRAM12は64ビッ
トの出力ポートを備え、1つのPE3に対しても8本の
レジスタ34に同時に64ビットの書き込みが可能であ
る。
【0034】演算アレイ8は、16ビットALU36と
16ビットAレジスタ38、Fレジスタ40を内蔵して
いる。PE命令による演算は、(後で説明する)第3の
マルチプレクサ54の出力データをALU36の片側の
入力とし、Aレジスタ38の内容をもう片側の入力とし
て、行なわれるものである。その演算結果は、Aレジス
タ38に格納される。後で説明するように、第3のマル
チプレクサ54は、R0〜R31レジスタ34から読み
出されたデータ、グローバルプロセッサ4から与えられ
たデータ、及び隣接する2つのPE3からの入力ポート
のデータが、入力される。
16ビットAレジスタ38、Fレジスタ40を内蔵して
いる。PE命令による演算は、(後で説明する)第3の
マルチプレクサ54の出力データをALU36の片側の
入力とし、Aレジスタ38の内容をもう片側の入力とし
て、行なわれるものである。その演算結果は、Aレジス
タ38に格納される。後で説明するように、第3のマル
チプレクサ54は、R0〜R31レジスタ34から読み
出されたデータ、グローバルプロセッサ4から与えられ
たデータ、及び隣接する2つのPE3からの入力ポート
のデータが、入力される。
【0035】レジスタファイル6と演算アレイ8との接
続に、7to1(7対1)のマルチプレクサ42が置か
れている。図12に示すように、あるマルチプレクサ4
2から見て、左方向の3つのPE3に含まれるR0〜R
31レジスタ34のデータと、右方向の3つのPE3に
含まれるR0〜R31レジスタ34のデータと、自らが
属するPE3に含まれるR0〜R31レジスタ34のデ
ータを、演算対象として選択し得るように設定されてい
る。また、レジスタファイル6の8ビットのデータは、
シフト・拡張回路44により任意のビット分だけ、左シ
フトしてALU36に入力する。
続に、7to1(7対1)のマルチプレクサ42が置か
れている。図12に示すように、あるマルチプレクサ4
2から見て、左方向の3つのPE3に含まれるR0〜R
31レジスタ34のデータと、右方向の3つのPE3に
含まれるR0〜R31レジスタ34のデータと、自らが
属するPE3に含まれるR0〜R31レジスタ34のデ
ータを、演算対象として選択し得るように設定されてい
る。また、レジスタファイル6の8ビットのデータは、
シフト・拡張回路44により任意のビット分だけ、左シ
フトしてALU36に入力する。
【0036】また、図示していないが、夫々のPE3に
は、0から255までの整数が固有のID(IDent
ification)番号としてハードウエアの構成に
より付加されている。この0から255までの整数は、
図3、図5、及び図9に示すように、並列するPE3に
順に付されているものとする。本明細書では、例えば、
整数「k」が付されているPEを、「PE[k]」と表
すこととする。
は、0から255までの整数が固有のID(IDent
ification)番号としてハードウエアの構成に
より付加されている。この0から255までの整数は、
図3、図5、及び図9に示すように、並列するPE3に
順に付されているものとする。本明細書では、例えば、
整数「k」が付されているPEを、「PE[k]」と表
すこととする。
【0037】≪第1の実施の形態≫図1は、本発明の第
1の実施の形態に係るSIMD型マイクロプロセッサ2
の部分ブロック図である。この部分ブロック図では、特
に、隣接する2個のPE3において、それらのALU3
6周辺を詳細に示す。
1の実施の形態に係るSIMD型マイクロプロセッサ2
の部分ブロック図である。この部分ブロック図では、特
に、隣接する2個のPE3において、それらのALU3
6周辺を詳細に示す。
【0038】各PE3において、隣のPE3からのバイ
パス出力を受け取る入力ポートが、2つ設けられる。P
E[k](1≦k≦254)からみると、PE[k+
1]からの入力ポートと、PE[k−1]からの入力ポ
ートである。PE[k+1]からの入力ポートから入力
された信号と、Aレジスタ38の信号とは、第1のバイ
パスマルチプレクス50に入力される。更に、この第1
のバイパスマルチプレクス50からの出力信号を、PE
[k−1]へのバイパス出力とする出力ポートが設けら
れている。
パス出力を受け取る入力ポートが、2つ設けられる。P
E[k](1≦k≦254)からみると、PE[k+
1]からの入力ポートと、PE[k−1]からの入力ポ
ートである。PE[k+1]からの入力ポートから入力
された信号と、Aレジスタ38の信号とは、第1のバイ
パスマルチプレクス50に入力される。更に、この第1
のバイパスマルチプレクス50からの出力信号を、PE
[k−1]へのバイパス出力とする出力ポートが設けら
れている。
【0039】更に、同様に、PE[k−1]からの入力
ポートから入力された信号と、Aレジスタ38の信号と
は、第2のバイパスマルチプレクス52に入力される。
この第2のバイパスマルチプレクス52からの出力信号
を、PE[k+1]へのバイパス出力とする出力ポート
も設けられている。これらポートのビット幅は、Aレジ
スタ38のビット幅に等しい。
ポートから入力された信号と、Aレジスタ38の信号と
は、第2のバイパスマルチプレクス52に入力される。
この第2のバイパスマルチプレクス52からの出力信号
を、PE[k+1]へのバイパス出力とする出力ポート
も設けられている。これらポートのビット幅は、Aレジ
スタ38のビット幅に等しい。
【0040】ALU36の片側の入力にはAレジスタ3
8のデータが入力されるが、もう片側の入力(の直前)
には、第3のマルチプレクス54が設置されている。こ
の第3のマルチプレクス54には、レジスタファイル6
(R0〜R31レジスタ34)から読み出されたデー
タ、グローバルプロセッサ4から与えられたデータ、及
び隣接する2つのPE3からの入力ポートのデータが入
力される。
8のデータが入力されるが、もう片側の入力(の直前)
には、第3のマルチプレクス54が設置されている。こ
の第3のマルチプレクス54には、レジスタファイル6
(R0〜R31レジスタ34)から読み出されたデー
タ、グローバルプロセッサ4から与えられたデータ、及
び隣接する2つのPE3からの入力ポートのデータが入
力される。
【0041】上記の2つのバイパスマルチプレクス(第
1のバイパスマルチプレクス50、第2のバイパスマル
チプレクス52)を制御するために、各々1ビットの選
択ビットが2つ、即ち、 ・選択ビット0、 ・選択ビット1、 が用意されている。選択ビット0は、第1のバイパスマ
ルチプレクス50を制御する。図2に示すように、選択
ビット0の値が「0」であるならば、第1のバイパスマ
ルチプレクス50はAレジスタ38の信号データを選択
し、それをPE[k−1]へのバイパス出力へ出力す
る。選択ビット0の値が「1」であるならば、第1のバ
イパスマルチプレクス50はPE[k+1]からの入力
ポートの信号データを選択し、それをPE[k−1]へ
のバイパス出力へ出力する。
1のバイパスマルチプレクス50、第2のバイパスマル
チプレクス52)を制御するために、各々1ビットの選
択ビットが2つ、即ち、 ・選択ビット0、 ・選択ビット1、 が用意されている。選択ビット0は、第1のバイパスマ
ルチプレクス50を制御する。図2に示すように、選択
ビット0の値が「0」であるならば、第1のバイパスマ
ルチプレクス50はAレジスタ38の信号データを選択
し、それをPE[k−1]へのバイパス出力へ出力す
る。選択ビット0の値が「1」であるならば、第1のバ
イパスマルチプレクス50はPE[k+1]からの入力
ポートの信号データを選択し、それをPE[k−1]へ
のバイパス出力へ出力する。
【0042】同様に、選択ビット1は、第2のバイパス
マルチプレクス52を制御する。図2に示すように、選
択ビット1の値が「0」であるならば、第2のバイパス
マルチプレクス52はAレジスタ38の信号データを選
択し、それをPE[k+1]へのバイパス出力へ出力す
る。選択ビット1の値が「1」であるならば、第2のバ
イパスマルチプレクス52はPE[k−1]からの入力
ポートの信号データを選択し、それをPE[k+1]へ
のバイパス出力へ出力する。
マルチプレクス52を制御する。図2に示すように、選
択ビット1の値が「0」であるならば、第2のバイパス
マルチプレクス52はAレジスタ38の信号データを選
択し、それをPE[k+1]へのバイパス出力へ出力す
る。選択ビット1の値が「1」であるならば、第2のバ
イパスマルチプレクス52はPE[k−1]からの入力
ポートの信号データを選択し、それをPE[k+1]へ
のバイパス出力へ出力する。
【0043】また、ALU36への入力信号を選択する
第3のマルチプレクサ54の制御のために、1ビットの
命令補助ビットが設けられている。図2に示すように、
この命令補助ビットの値が「0」であるならば、PE
[k+1]からの入力ポートの信号データをALU36
の入力データとする。命令補助ビットの値が「1」であ
るならば、PE[k−1]からの入力ポートの信号デー
タをALU36の入力データとする。
第3のマルチプレクサ54の制御のために、1ビットの
命令補助ビットが設けられている。図2に示すように、
この命令補助ビットの値が「0」であるならば、PE
[k+1]からの入力ポートの信号データをALU36
の入力データとする。命令補助ビットの値が「1」であ
るならば、PE[k−1]からの入力ポートの信号デー
タをALU36の入力データとする。
【0044】以上の第1のバイパスマルチプレクサ5
0、第2のバイパスマルチプレクサ52、第3のマルチ
プレクサ54、及びそれらに係る選択ビット0、選択ビ
ット1、命令補助ビットの設定により、隣接するPE3
のみならず離れているPE3のAレジスタのデータを対
象とする演算が、各PE3にて可能となる。
0、第2のバイパスマルチプレクサ52、第3のマルチ
プレクサ54、及びそれらに係る選択ビット0、選択ビ
ット1、命令補助ビットの設定により、隣接するPE3
のみならず離れているPE3のAレジスタのデータを対
象とする演算が、各PE3にて可能となる。
【0045】つまり、後述するように、各PE3におい
ては、これらの選択ビット0、選択ビット1、命令補助
ビットの設定値が、予め固定値レジスタ(図示せず。)
やROM(図示せず。)などのハードウエア(メモリ)
に保存されている。そして、SIMD型マイクロプロセ
ッサ2において、総和値又は最大値若しくは最小値を求
める命令実行時に、そのメモリから所定の設定値が読み
出されて利用される。
ては、これらの選択ビット0、選択ビット1、命令補助
ビットの設定値が、予め固定値レジスタ(図示せず。)
やROM(図示せず。)などのハードウエア(メモリ)
に保存されている。そして、SIMD型マイクロプロセ
ッサ2において、総和値又は最大値若しくは最小値を求
める命令実行時に、そのメモリから所定の設定値が読み
出されて利用される。
【0046】本発明の第1の実施の形態に係るSIMD
型マイクロプロセッサ2を利用して、各PE3のR0レ
ジスタの値の総和値を求める手順を、図3及び図4によ
り説明する。図3では、PE数が8個の場合について、
各PE3のR0レジスタ値の総和がどのように求められ
るかを例示する。
型マイクロプロセッサ2を利用して、各PE3のR0レ
ジスタの値の総和値を求める手順を、図3及び図4によ
り説明する。図3では、PE数が8個の場合について、
各PE3のR0レジスタ値の総和がどのように求められ
るかを例示する。
【0047】なお、図3において、 ・「ADD Ai,Aj」という記述は、当該PEにお
いて、PE[i]のAレジスタ38の値と、PE[j]
のAレジスタ38の値とを加算して、Aレジスタ38に
格納する動作を行うことを示す。このことは、図5でも
同様である。また、 ・「ADD」という記述は、当該PEにおいて、加算命
令が実行されるが、その結果が意味を持たないものであ
ることを示す。
いて、PE[i]のAレジスタ38の値と、PE[j]
のAレジスタ38の値とを加算して、Aレジスタ38に
格納する動作を行うことを示す。このことは、図5でも
同様である。また、 ・「ADD」という記述は、当該PEにおいて、加算命
令が実行されるが、その結果が意味を持たないものであ
ることを示す。
【0048】工程(1):(図3には示されていない
が、)各PE3において、R0レジスタに格納される値
を夫々のAレジスタ38へ転送する。
が、)各PE3において、R0レジスタに格納される値
を夫々のAレジスタ38へ転送する。
【0049】工程(2):総和値を求めるための命令が
発行される。8個のPE3において、トーナメント式
(勝ち抜き式)に演算を行うため、3サイクル連続した
加算命令(ADD)となる。各PE3における、選択ビ
ット0、選択ビット1、及び命令補助ビットに格納すべ
き値として、図4に示す「3ビット×3ワード(サイク
ル)」の値が各PE3の固定値レジスタ(図示せず。)
に保存されている。サイクル1の直前にて、その最初の
ワードの内容(即ち、サイクル1の内容)で選択ビット
0、選択ビット1、及び命令補助ビットが設定され、図
3のサイクル1が実行される。
発行される。8個のPE3において、トーナメント式
(勝ち抜き式)に演算を行うため、3サイクル連続した
加算命令(ADD)となる。各PE3における、選択ビ
ット0、選択ビット1、及び命令補助ビットに格納すべ
き値として、図4に示す「3ビット×3ワード(サイク
ル)」の値が各PE3の固定値レジスタ(図示せず。)
に保存されている。サイクル1の直前にて、その最初の
ワードの内容(即ち、サイクル1の内容)で選択ビット
0、選択ビット1、及び命令補助ビットが設定され、図
3のサイクル1が実行される。
【0050】サイクル1の実行により、隣接する2つの
PE3において、夫々のAレジスタ38の格納値が足し
合わされて、PE番号の小さい方のPE3のAレジスタ
38に格納される。例えば、PE[0]とPE[1]におい
ては、夫々のAレジスタ38に格納される値が足し合わ
されてPE[0]のAレジスタ38に格納される。
PE3において、夫々のAレジスタ38の格納値が足し
合わされて、PE番号の小さい方のPE3のAレジスタ
38に格納される。例えば、PE[0]とPE[1]におい
ては、夫々のAレジスタ38に格納される値が足し合わ
されてPE[0]のAレジスタ38に格納される。
【0051】工程(3):次いで、図4のサイクル2の
値に従って、選択ビット0、選択ビット1、及び命令補
助ビットの設定が更新され、図4のサイクル2が実行さ
れる。
値に従って、選択ビット0、選択ビット1、及び命令補
助ビットの設定が更新され、図4のサイクル2が実行さ
れる。
【0052】サイクル2の実行により、例えば、離れて
いるPE[0]とPE[2]との夫々のAレジスタ38に格
納される値が足し合わされ、PE[0]のAレジスタ38
に格納される。結果として、最初PE[0]、PE[1]、
PE[2]、及びPE[3]の夫々のAレジスタ38に格納
されていた値が足し合わされてPE[0]のAレジスタ3
8に格納されたことになる。同様に、最初PE[4]、P
E[5]、PE[6]、及びPE[7]の夫々のAレジスタ3
8に格納されていた値が足し合わされてPE[4]のAレ
ジスタ38に格納されたこととなっている。
いるPE[0]とPE[2]との夫々のAレジスタ38に格
納される値が足し合わされ、PE[0]のAレジスタ38
に格納される。結果として、最初PE[0]、PE[1]、
PE[2]、及びPE[3]の夫々のAレジスタ38に格納
されていた値が足し合わされてPE[0]のAレジスタ3
8に格納されたことになる。同様に、最初PE[4]、P
E[5]、PE[6]、及びPE[7]の夫々のAレジスタ3
8に格納されていた値が足し合わされてPE[4]のAレ
ジスタ38に格納されたこととなっている。
【0053】工程(4):更に、図4のサイクル3の値
に従って、選択ビット0、選択ビット1、及び命令補助
ビットの設定が更新され、図3のサイクル3が実行され
る。選択ビット0、選択ビット1、及び命令補助ビット
の設定により経路が設定変更され、加算命令(ADD)
が実行されれば、離れているPE[0]とPE[4]との夫
々のAレジスタ38に格納される値が足し合わされ、P
E[0]のAレジスタ38に格納される。結果として、P
E[0]のAレジスタ38に総和値が求められる。
に従って、選択ビット0、選択ビット1、及び命令補助
ビットの設定が更新され、図3のサイクル3が実行され
る。選択ビット0、選択ビット1、及び命令補助ビット
の設定により経路が設定変更され、加算命令(ADD)
が実行されれば、離れているPE[0]とPE[4]との夫
々のAレジスタ38に格納される値が足し合わされ、P
E[0]のAレジスタ38に格納される。結果として、P
E[0]のAレジスタ38に総和値が求められる。
【0054】第1の実施の形態において、総和値を求め
る命令は、図4に示すビット設定を使用する3サイクル
連続した加算命令である。最大値または最小値を求める
場合は、同様に、図4に示すビット設定を使用する3サ
イクル連続した比較命令となる。ここで、最大値を求め
る場合は、各PE3において、より大きい値をAレジス
タ38に保存する比較命令(CMP/GT)を実行し、
最小値を求める場合は、各PE3において、より小さい
値をAレジスタ38に保存する比較命令(CMP/L
T)を実行すればよい。
る命令は、図4に示すビット設定を使用する3サイクル
連続した加算命令である。最大値または最小値を求める
場合は、同様に、図4に示すビット設定を使用する3サ
イクル連続した比較命令となる。ここで、最大値を求め
る場合は、各PE3において、より大きい値をAレジス
タ38に保存する比較命令(CMP/GT)を実行し、
最小値を求める場合は、各PE3において、より小さい
値をAレジスタ38に保存する比較命令(CMP/L
T)を実行すればよい。
【0055】ビット設定は図4のものに限定されない。
例えば、図6に示されるビット設定により、本発明の第
1の実施の形態に係るSIMD型マイクロプロセッサ2
を利用して、図5のような手順で各PE3のR0レジス
タの値の総和値(又は最大値若しくは最小値)を求める
ことができる。図3及び図4の場合にはバイパス経路α
を利用するが、この図5及び図6の場合はバイパス経路
βを利用する。更に、総和値又は最大値若しくは最小値
は、PE[7]のAレジスタ38にて得られる。
例えば、図6に示されるビット設定により、本発明の第
1の実施の形態に係るSIMD型マイクロプロセッサ2
を利用して、図5のような手順で各PE3のR0レジス
タの値の総和値(又は最大値若しくは最小値)を求める
ことができる。図3及び図4の場合にはバイパス経路α
を利用するが、この図5及び図6の場合はバイパス経路
βを利用する。更に、総和値又は最大値若しくは最小値
は、PE[7]のAレジスタ38にて得られる。
【0056】≪第2の実施の形態≫図7は、本発明の第
2の実施の形態に係るSIMD型マイクロプロセッサ2
のブロック図である。このブロック図でも、特に、隣接
する2個のPE3において、それらのALU36周辺を
詳細に示す。
2の実施の形態に係るSIMD型マイクロプロセッサ2
のブロック図である。このブロック図でも、特に、隣接
する2個のPE3において、それらのALU36周辺を
詳細に示す。
【0057】第2の実施の形態では、第1の実施の形態
に加えて、命令補助ビットとして更に2ビット設けられ
ている。第1の実施の形態でも設置されている命令補助
ビットを「命令補助ビット0」と称し、第2の実施の形
態にて新たに設置される命令補助ビットを「命令補助ビ
ット2/1」と称することとする。
に加えて、命令補助ビットとして更に2ビット設けられ
ている。第1の実施の形態でも設置されている命令補助
ビットを「命令補助ビット0」と称し、第2の実施の形
態にて新たに設置される命令補助ビットを「命令補助ビ
ット2/1」と称することとする。
【0058】命令補助ビット2/1により、各PE3に
て実行する独立した命令を指定することができる。指定
され得る命令は、図8が示すように、4種類までであ
る。ここでは、それら4種類の命令は、待機(NO
P)、加算命令(ADD)、比較命令(CMP/G
T)、及び比較命令(CMP/LT)であるとする。
て実行する独立した命令を指定することができる。指定
され得る命令は、図8が示すように、4種類までであ
る。ここでは、それら4種類の命令は、待機(NO
P)、加算命令(ADD)、比較命令(CMP/G
T)、及び比較命令(CMP/LT)であるとする。
【0059】命令補助ビット2/1が上記のように新た
に設定されるため、第2の実施の形態では、各PE3の
R0レジスタの値に関して、 ・最大値と最小値を同時に求めること、 ・総和値と最小値を同時に求めること、及び ・総和値と最大値を同時に求めること が可能になる。2つの特徴値を同時に求め得るのは、バ
イパス経路αとバイパス経路βとが、独立して利用され
るからである。
に設定されるため、第2の実施の形態では、各PE3の
R0レジスタの値に関して、 ・最大値と最小値を同時に求めること、 ・総和値と最小値を同時に求めること、及び ・総和値と最大値を同時に求めること が可能になる。2つの特徴値を同時に求め得るのは、バ
イパス経路αとバイパス経路βとが、独立して利用され
るからである。
【0060】本発明の第2の実施の形態に係るSIMD
型マイクロプロセッサ2を利用して、各PE3のR0レ
ジスタの値の最大値と最小値とを求める手順を、図9及
び図10により説明する。図9では、図3と同様に、P
E数が8個の場合について、各PE3のR0レジスタ値
の最大値と最小値がどのように同時に求められるかを例
示する。
型マイクロプロセッサ2を利用して、各PE3のR0レ
ジスタの値の最大値と最小値とを求める手順を、図9及
び図10により説明する。図9では、図3と同様に、P
E数が8個の場合について、各PE3のR0レジスタ値
の最大値と最小値がどのように同時に求められるかを例
示する。
【0061】なお、図9において、 ・「CMP/GT Ai,Aj」という記述は、当該P
Eにおいて、PE[i]のAレジスタ38の値と、PE
[j]のAレジスタ38の値とを比較して、大きい方を
Aレジスタ38に格納する動作を行うことを示し、 ・「CMP/LT Ai,Aj」という記述は、当該P
Eにおいて、PE[i]のAレジスタ38の値と、PE
[j]のAレジスタ38の値とを比較して、小さい方を
Aレジスタ38に格納する動作を行うことを示す。更
に、 ・「NOP」という記述は、PE3が待機状態であって
動作していないことを示す。
Eにおいて、PE[i]のAレジスタ38の値と、PE
[j]のAレジスタ38の値とを比較して、大きい方を
Aレジスタ38に格納する動作を行うことを示し、 ・「CMP/LT Ai,Aj」という記述は、当該P
Eにおいて、PE[i]のAレジスタ38の値と、PE
[j]のAレジスタ38の値とを比較して、小さい方を
Aレジスタ38に格納する動作を行うことを示す。更
に、 ・「NOP」という記述は、PE3が待機状態であって
動作していないことを示す。
【0062】工程(1):(図9には示されていない
が、)各PE3において、R0レジスタに格納される値
を各々のAレジスタ38へ転送する。
が、)各PE3において、R0レジスタに格納される値
を各々のAレジスタ38へ転送する。
【0063】工程(2):最大値と最小値を同時に求め
る命令が発行される。8個のPE3において、トーナメ
ント式(勝ち抜き式)に演算を行うため、3サイクル連
続した命令となる。
る命令が発行される。8個のPE3において、トーナメ
ント式(勝ち抜き式)に演算を行うため、3サイクル連
続した命令となる。
【0064】各PE3における、選択ビット0、選択ビ
ット1、命令補助ビット0、及び命令補助ビット2/1
に格納すべき値として、図10に示す「5ビット×3ワ
ード(サイクル)×3パターン」の値が、各PE3の固
定値レジスタ(図示せず。)に保存されている。図10
での3パターンは、 ・最大値と最小値を同時に求める場合の設定、 ・総和値と最小値を同時に求める場合の設定、 ・総和値と最大値を同時に求める場合の設定、 に対応する。サイクル1の直前にて、『最大値と最小値
を同時に求める場合の「5ビット×3ワード」』から、
その最初のワードの内容(即ち、サイクル1の内容)で
選択ビット0、選択ビット1、命令補助ビット0、及び
命令補助ビット2/1が設定され、図9のサイクル1が
実行される。
ット1、命令補助ビット0、及び命令補助ビット2/1
に格納すべき値として、図10に示す「5ビット×3ワ
ード(サイクル)×3パターン」の値が、各PE3の固
定値レジスタ(図示せず。)に保存されている。図10
での3パターンは、 ・最大値と最小値を同時に求める場合の設定、 ・総和値と最小値を同時に求める場合の設定、 ・総和値と最大値を同時に求める場合の設定、 に対応する。サイクル1の直前にて、『最大値と最小値
を同時に求める場合の「5ビット×3ワード」』から、
その最初のワードの内容(即ち、サイクル1の内容)で
選択ビット0、選択ビット1、命令補助ビット0、及び
命令補助ビット2/1が設定され、図9のサイクル1が
実行される。
【0065】サイクル1の実行により、例えば、PE
[0]においては、PE[0]とPE[1]との夫々のAレジ
スタ38に格納される値が比較演算されて大きい方がP
E[0]のAレジスタ38に格納される。同時に、PE
[1]においては、PE[0]とPE[1]との夫々のAレジ
スタ38に格納される値が比較演算されて小さい方がP
E[1]のAレジスタ38に格納される。PE[2]とPE
[3]、PE[4]とPE[5]、及びPE[6]とPE[7]に
関しても、同様である。
[0]においては、PE[0]とPE[1]との夫々のAレジ
スタ38に格納される値が比較演算されて大きい方がP
E[0]のAレジスタ38に格納される。同時に、PE
[1]においては、PE[0]とPE[1]との夫々のAレジ
スタ38に格納される値が比較演算されて小さい方がP
E[1]のAレジスタ38に格納される。PE[2]とPE
[3]、PE[4]とPE[5]、及びPE[6]とPE[7]に
関しても、同様である。
【0066】工程(3):次いで、図10の『最大値と
最小値を同時に求める場合の「5ビット×3ワード」』
の内のサイクル2の値により、選択ビット0、選択ビッ
ト1、命令補助ビット0、及び命令補助ビット2/1の
設定が更新され、図9のサイクル2が実行される。
最小値を同時に求める場合の「5ビット×3ワード」』
の内のサイクル2の値により、選択ビット0、選択ビッ
ト1、命令補助ビット0、及び命令補助ビット2/1の
設定が更新され、図9のサイクル2が実行される。
【0067】サイクル2の実行により、例えば、PE
[0]においては、離れているPE[0]とPE[2]との夫
々のAレジスタ38に格納される値が比較演算されて大
きい方がPE[0]のAレジスタ38に格納される。同時
に、PE[3]においては、離れているPE[1]とPE
[3]との夫々のAレジスタ38に格納される値が比較演
算されて小さい方がPE[3]のAレジスタ38に格納さ
れる。結果として、最初PE[0]、PE[1]、PE
[2]、及びPE[3]の夫々のAレジスタ38に格納され
ていた値の、最大値がPE[0]のAレジスタ38に格納
され、最小値がPE[3]のAレジスタ38に格納された
ことになる。同様に、最初PE[4]、PE[5]、PE
[6]、及びPE[7]の夫々のAレジスタ38に格納され
ていた値の、最大値がPE[4]のAレジスタ38に格納
され、最小値がPE[7]のAレジスタ38に格納された
こととなっている。
[0]においては、離れているPE[0]とPE[2]との夫
々のAレジスタ38に格納される値が比較演算されて大
きい方がPE[0]のAレジスタ38に格納される。同時
に、PE[3]においては、離れているPE[1]とPE
[3]との夫々のAレジスタ38に格納される値が比較演
算されて小さい方がPE[3]のAレジスタ38に格納さ
れる。結果として、最初PE[0]、PE[1]、PE
[2]、及びPE[3]の夫々のAレジスタ38に格納され
ていた値の、最大値がPE[0]のAレジスタ38に格納
され、最小値がPE[3]のAレジスタ38に格納された
ことになる。同様に、最初PE[4]、PE[5]、PE
[6]、及びPE[7]の夫々のAレジスタ38に格納され
ていた値の、最大値がPE[4]のAレジスタ38に格納
され、最小値がPE[7]のAレジスタ38に格納された
こととなっている。
【0068】工程(4):更に、図10のサイクル3の
値に従って、選択ビット0、選択ビット1、命令補助ビ
ット0、及び命令補助ビット2/1の設定が更新され、
図10のサイクル3が実行される。選択ビット0、選択
ビット1、命令補助ビット0、及び命令補助ビット2/
1の設定により経路が設定変更され、3サイクル目の命
令が実行されれば、PE[0]においては、離れているP
E[0]とPE[4]との夫々のAレジスタ38に格納され
る値が比較演算されて大きい方がPE[0]のAレジスタ
38に格納され、PE[7]においては、離れているPE
[3]とPE[7]との夫々のAレジスタ38に格納される
値が比較演算されて小さい方がPE[7]のAレジスタ3
8に格納される。結果として、PE[0]のAレジスタ
38に最大値が求められ、PE[7]のAレジスタ38
には最小値が求められる。
値に従って、選択ビット0、選択ビット1、命令補助ビ
ット0、及び命令補助ビット2/1の設定が更新され、
図10のサイクル3が実行される。選択ビット0、選択
ビット1、命令補助ビット0、及び命令補助ビット2/
1の設定により経路が設定変更され、3サイクル目の命
令が実行されれば、PE[0]においては、離れているP
E[0]とPE[4]との夫々のAレジスタ38に格納され
る値が比較演算されて大きい方がPE[0]のAレジスタ
38に格納され、PE[7]においては、離れているPE
[3]とPE[7]との夫々のAレジスタ38に格納される
値が比較演算されて小さい方がPE[7]のAレジスタ3
8に格納される。結果として、PE[0]のAレジスタ
38に最大値が求められ、PE[7]のAレジスタ38
には最小値が求められる。
【0069】上記で説明したように、選択ビット0、選
択ビット1、命令補助ビット0、及び命令補助ビット2
/1の設定において、「総和値と最小値を同時に求める
場合の設定」を利用すれば、PE[0]のAレジスタ3
8に総和値が求められ、PE[7]のAレジスタ38に
は最小値が求められる。「総和値と最大値を同時に求め
る場合の設定」を利用すれば、PE[0]のAレジスタ
38に総和値が求められ、PE[7]のAレジスタ38
には最大値が求められる。
択ビット1、命令補助ビット0、及び命令補助ビット2
/1の設定において、「総和値と最小値を同時に求める
場合の設定」を利用すれば、PE[0]のAレジスタ3
8に総和値が求められ、PE[7]のAレジスタ38に
は最小値が求められる。「総和値と最大値を同時に求め
る場合の設定」を利用すれば、PE[0]のAレジスタ
38に総和値が求められ、PE[7]のAレジスタ38
には最大値が求められる。
【0070】第2の実施の形態においても、第1の実施
の形態と同様に、ビット設定が図12のものに限定され
るわけではない。別のパターンのものも利用され得る。
その場合、最終値(総和値、最大値、最小値)が格納さ
れるAレジスタ38のPEの位置が変動することがあ
る。
の形態と同様に、ビット設定が図12のものに限定され
るわけではない。別のパターンのものも利用され得る。
その場合、最終値(総和値、最大値、最小値)が格納さ
れるAレジスタ38のPEの位置が変動することがあ
る。
【0071】
【発明の効果】本発明に係るSIMD型マイクロプロセ
ッサは、回路規模を少なく保ち且つ演算サイクル数を少
なくして、各PE間での総和値演算及びピーク検出を行
うことができる。
ッサは、回路規模を少なく保ち且つ演算サイクル数を少
なくして、各PE間での総和値演算及びピーク検出を行
うことができる。
【0072】本発明に係る請求項1に記載のSIMD型
マイクロプロセッサにおいては、トーナメント式(勝ち
抜き式)のPE間の演算が可能になり、よって、PE数
が「n個」の場合には「log2n+1回」(小数点以
下切り上げ)のサイクル数にて、PEのレジスタに格納
されている値の総和値、又は最大値若しくは最小値を求
めることができる。
マイクロプロセッサにおいては、トーナメント式(勝ち
抜き式)のPE間の演算が可能になり、よって、PE数
が「n個」の場合には「log2n+1回」(小数点以
下切り上げ)のサイクル数にて、PEのレジスタに格納
されている値の総和値、又は最大値若しくは最小値を求
めることができる。
【0073】本発明に係る請求項2に記載のSIMD型
マイクロプロセッサにおいては、各PEが、独立した命
令を4種まで実行することができる。よって、請求項1
に記載のSIMD型マイクロプロセッサにおいて求めら
れる総和値または最大値若しくは最小値を、同時に二つ
求めることが可能となる。その際に必要な演算サイクル
数は同じく「log2n+1回」(小数点以下切り上
げ)のサイクル数である。更に、演算動作させるの必要
の無いPEについては、「NOP命令」(即ち、待機状
態を強制する命令)が発行されているので、消費電力も
低減し得る。
マイクロプロセッサにおいては、各PEが、独立した命
令を4種まで実行することができる。よって、請求項1
に記載のSIMD型マイクロプロセッサにおいて求めら
れる総和値または最大値若しくは最小値を、同時に二つ
求めることが可能となる。その際に必要な演算サイクル
数は同じく「log2n+1回」(小数点以下切り上
げ)のサイクル数である。更に、演算動作させるの必要
の無いPEについては、「NOP命令」(即ち、待機状
態を強制する命令)が発行されているので、消費電力も
低減し得る。
【図1】 本発明の第1の実施の形態に係るSIMD型
マイクロプロセッサの部分ブロック図である。
マイクロプロセッサの部分ブロック図である。
【図2】 選択ビット0、選択ビット1、及び命令補助
ビットの制御内容を示す模式図である。
ビットの制御内容を示す模式図である。
【図3】 第1の実施の形態に係るSIMD型マイクロ
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(1)での、PEの動作を示すブロック図
である。
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(1)での、PEの動作を示すブロック図
である。
【図4】 第1の実施の形態に係るSIMD型マイクロ
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(1)での、選択ビット0、選択ビット
1、及び命令補助ビットの設定内容を示す、一覧表であ
る。
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(1)での、選択ビット0、選択ビット
1、及び命令補助ビットの設定内容を示す、一覧表であ
る。
【図5】 第1の実施の形態に係るSIMD型マイクロ
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(2)での、PEの動作を示すブロック図
である。
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(2)での、PEの動作を示すブロック図
である。
【図6】 第1の実施の形態に係るSIMD型マイクロ
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(2)での、選択ビット0、選択ビット
1、及び命令補助ビットの設定内容を示す、一覧表であ
る。
プロセッサを利用して各PEのR0レジスタの値の総和
値を求める例(2)での、選択ビット0、選択ビット
1、及び命令補助ビットの設定内容を示す、一覧表であ
る。
【図7】 本発明の第2の実施の形態に係るSIMD型
マイクロプロセッサの部分ブロック図である。
マイクロプロセッサの部分ブロック図である。
【図8】 選択ビット0、選択ビット1、命令補助ビッ
ト0、及び命令補助ビット2/1の制御内容を示す模式
図である。
ト0、及び命令補助ビット2/1の制御内容を示す模式
図である。
【図9】 第2の実施の形態に係るSIMD型マイクロ
プロセッサを利用して各PEのR0レジスタの値の最大
値及び最小値を求める例での、PEの動作を示すブロッ
ク図である。
プロセッサを利用して各PEのR0レジスタの値の最大
値及び最小値を求める例での、PEの動作を示すブロッ
ク図である。
【図10】 第2の実施の形態に係るSIMD型マイク
ロプロセッサを利用して各PEのR0レジスタの値の最
大値及び最小値を求める例での、選択ビット0、選択ビ
ット1、命令補助ビット0、及び命令補助ビット2/1
の設定内容を示す、一覧表である。
ロプロセッサを利用して各PEのR0レジスタの値の最
大値及び最小値を求める例での、選択ビット0、選択ビ
ット1、命令補助ビット0、及び命令補助ビット2/1
の設定内容を示す、一覧表である。
【図11】 本発明に係るSIMD型マイクロプロセッ
サの概略の構成を示すブロック図である。
サの概略の構成を示すブロック図である。
【図12】 本発明に係るSIMD型マイクロプロセッ
サの構成を示すブロック図である。
サの構成を示すブロック図である。
2・・・SIMD型マイクロプロセッサ、3・・・プロ
セッサエレメント、4グローバルプロセッサ、6・・・
レジスタファイル、8・・・演算アレイ、36・・・1
6ビットALU、38・・・Aレジスタ、50・・・第
1のバイパスマルチプレクサ、52・・・第2のバイパ
スマルチプレクサ、54・・・第3のマルチプレクサ。
セッサエレメント、4グローバルプロセッサ、6・・・
レジスタファイル、8・・・演算アレイ、36・・・1
6ビットALU、38・・・Aレジスタ、50・・・第
1のバイパスマルチプレクサ、52・・・第2のバイパ
スマルチプレクサ、54・・・第3のマルチプレクサ。
Claims (3)
- 【請求項1】 複数のデータを同時に処理するための複
数のプロセッサエレメントを有するSIMD型マイクロ
プロセッサにおいて、 各プロセッサエレメントは、該プロセッサエレメントが
備える算術論理演算器へ接続する第1のマルチプレクサ
に対し、その両側に隣接する夫々のプロセッサエレメン
トから直接入力する経路を二つ付加され、 更に、該第1のマルチプレクサの選択を制御する第1の
制御ビットを備え、 隣接するプロセッサエレメントの第1のマルチプレクサ
へ出力する第1の出力信号として、各プロセッサエレメ
ント内の所定のレジスタに格納されるデータと、出力先
プロセッサエレメントとは反対隣に接するプロセッサエ
レメントからの第1の出力信号との、どちらかが選択さ
れ、 更に、この選択を制御する第2の制御ビットを備え、 所定の命令が発行されたときに、第1の制御ビット及び
第2の制御ビットに設定されるべき値が、予め各プロセ
ッサエレメント内の所定の記録部に記録されている、S
IMD型マイクロプロセッサ。 - 【請求項2】 各プロセッサエレメントに補助レジスタ
が備わり、 所定の命令が発行されたとき、該補助レジスタの設定さ
れる内容に応じて、個々のプロセッサエレメントにおい
て夫々異なる命令が実行され、 該補助レジスタの設定される内容は、予め各プロセッサ
エレメント内の上記所定の記録部に記録されている、請
求項1に記載のSIMD型マイクロプロセッサ。 - 【請求項3】 上記補助レジスタに設定される、個々の
プロセッサエレメントに関する命令の中に、プロセッサ
エレメントを待機状態にする命令が含まれている、請求
項2に記載のSIMD型マイクロプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001029484A JP2002229962A (ja) | 2001-02-06 | 2001-02-06 | 総和値とピーク値を検出するsimd型マイクロプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001029484A JP2002229962A (ja) | 2001-02-06 | 2001-02-06 | 総和値とピーク値を検出するsimd型マイクロプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002229962A true JP2002229962A (ja) | 2002-08-16 |
Family
ID=18893828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001029484A Pending JP2002229962A (ja) | 2001-02-06 | 2001-02-06 | 総和値とピーク値を検出するsimd型マイクロプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002229962A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008123361A1 (ja) * | 2007-03-29 | 2008-10-16 | Nec Corporation | 再構成可能なsimd型プロセッサ及びその命令実行制御の方法 |
JP2009181509A (ja) * | 2008-01-31 | 2009-08-13 | Sanyo Electric Co Ltd | 演算処理回路 |
EP3007060A2 (en) | 2014-10-08 | 2016-04-13 | Fujitsu Limited | Arithmetic circuit and control method for arithmetic circuit |
-
2001
- 2001-02-06 JP JP2001029484A patent/JP2002229962A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008123361A1 (ja) * | 2007-03-29 | 2008-10-16 | Nec Corporation | 再構成可能なsimd型プロセッサ及びその命令実行制御の方法 |
JP2009181509A (ja) * | 2008-01-31 | 2009-08-13 | Sanyo Electric Co Ltd | 演算処理回路 |
EP3007060A2 (en) | 2014-10-08 | 2016-04-13 | Fujitsu Limited | Arithmetic circuit and control method for arithmetic circuit |
US10592247B2 (en) | 2014-10-08 | 2020-03-17 | Fujitsu Limited | Arithmetic circuit and control method with full element permutation and element concatenate shift left |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5682546A (en) | RISC microprocessor architecture implementing multiple typed register sets | |
US8074058B2 (en) | Providing extended precision in SIMD vector arithmetic operations | |
US6397240B1 (en) | Programmable accelerator for a programmable processor system | |
US20080072011A1 (en) | SIMD type microprocessor | |
JPH09311786A (ja) | データ処理装置 | |
JPH03147021A (ja) | 命令指定方法及び命令実行方式 | |
US5507000A (en) | Sharing of register stack by two execution units in a central processor | |
EP0725336B1 (en) | Information processor | |
US11768685B2 (en) | Processing device with vector transformation execution | |
JP2002229962A (ja) | 総和値とピーク値を検出するsimd型マイクロプロセッサ | |
WO2004114127A1 (en) | Result partitioning within simd data processing systems | |
JP2006350907A (ja) | Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置 | |
JP2002207706A (ja) | プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ | |
JP3693556B2 (ja) | 浮動小数点ユニットにおいてロードバイパスを実行する方法及び装置 | |
JP2824484B2 (ja) | パイプライン処理計算機 | |
JP3525985B2 (ja) | 中央演算処理装置 | |
JP2008071037A (ja) | Simd型マイクロプロセッサ | |
JPH07168713A (ja) | ディジタル信号処理プロセッサ | |
JP2002108604A (ja) | Simd型マイクロプロセッサにおけるテーブル変換 | |
JPH07182157A (ja) | ディジタル信号処理プロセッサ | |
JP2003067349A (ja) | 入力値のヒステリシスに対応したテーブル変換処理を行なうsimd型マイクロプロセッサ | |
JPH0758459B2 (ja) | マイクロプログラム制御装置 | |
JPS607534A (ja) | マイクロプログラム制御装置 | |
JPH06501805A (ja) | 複数型レジスタ・セットを採用したriscマイクロプロセッサ・アーキテクチャ | |
JPH01161532A (ja) | データ処理装置 |