JP2002207706A - プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ - Google Patents

プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ

Info

Publication number
JP2002207706A
JP2002207706A JP2001001424A JP2001001424A JP2002207706A JP 2002207706 A JP2002207706 A JP 2002207706A JP 2001001424 A JP2001001424 A JP 2001001424A JP 2001001424 A JP2001001424 A JP 2001001424A JP 2002207706 A JP2002207706 A JP 2002207706A
Authority
JP
Japan
Prior art keywords
register
data bus
value
data
processor
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
Application number
JP2001001424A
Other languages
English (en)
Inventor
Kazuhiko Iwanaga
和彦 岩永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2001001424A priority Critical patent/JP2002207706A/ja
Publication of JP2002207706A publication Critical patent/JP2002207706A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】 少ない回路規模を保ったまま各プロセッサエ
レメント間での総和値演算及びピーク検出を行えるSI
MD型マイクロプロセッサを提供する。 【解決手段】 全てのプロセッサエレメントを接続する
が、少なくとも2個以上のプロセッサエレメントを含む
セグメントにより分割されうる、第1のデータバスを備
え、上記第1のデータバスのセグメントの分割は、接続
部分が制御されることによって変更され、上記第1のデ
ータバスと各プロセッサエレメントに備わる演算レジス
タとの間に、データ入出力のための経路が備えられ、そ
のデータ入出力は、各プロセッサエレメントに備わる条
件レジスタの値により制御される、SIMD型マイクロ
プロセッサを提供する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、SIMD(Sin
gle Instructin−streamMult
iple Data−stream;単一命令多データ
処理)型マイクロプロセッサに関する。
【0002】
【従来の技術】SIMD型マイクロプロセッサでは、複
数のデータに対して1つの命令で同時に同一の演算処理
が実行可能である。この構造により、演算は同一である
がデータ量が非常に多い処理(例えば、画像処理)に係
る用途において、頻用される。
【0003】SIMD型マイクロプロセッサにおける通
常の演算処理では、複数の演算ユニット(Proces
sor Element〔PE〕;プロセッサエレメン
ト)を並べ同一の演算を同時に複数のデータに対して実
行する。
【0004】SIMD型マイクロプロセッサは、全ての
PEが同時に動作することにおいてはその性能を発揮で
きるが、PE毎に処理を変える必要があるような処
理、若しくは演算結果によって後続の処理を変えるよ
うな処理(逐次処理という。)においては、十分な性能
を発揮できない。
【0005】PE毎に処理を変えるような処理を実現
する構成としては、各PEにフラグビットを備えさせ、
そのフラグの値によって処理を実行するかどうかを決定
する、というものが挙げられる。例えば、特開平5−1
89585号、特開平6−176176号、特開平9−
198231号、及び特開平11−53189号に開示
されているように、各PEでの演算結果に従い又は全体
制御回路により、各PEのフラグビットを変更して、P
E毎に演算の実行、非実行を設定することが可能であ
る。但し、上記の開示された発明を用いても、PEで
の演算結果によって全体の制御を変更することは不可能
である。
【0006】画像処理においては、全ての画素データの
総和値、ピーク値を特徴量として画像処理の計算式を変
更するといった処理が必要となることがある。デジタル
AE(自動濃度調整機能)などでは、スキャナからの入
力データに対して、ゲイン(増幅率)をプロセッサで制
御することが必要であるが、この制御において総和値が
用いられる。また、固定小数点演算では演算時に演算前
のデータの最大値を求めておき、オーバフローを生じな
い最大のビット幅で乗算などの演算を行い、演算精度を
高めるということを行うことが多い。
【0007】特開平10−289305号には、上記の
ような特徴量を求めるため、各PEの持つフラグビット
の「OR演算」の結果値をグローバルプロセッサに転送
して全体の制御を変更する、という技術が開示されてい
る。ここで、グローバルプロセッサは、後でも説明する
が、プログラムを解読しSIMD型マイクロプロセッサ
全体に係る制御を行なう部位である。
【0008】上記の特開平10−289305号に開示
されるSIMD型マイクロプロセッサにおいては、各P
Eが持つフラグビットに比較演算結果を格納し、さらに
全てのPEのフラグビットの「OR演算」の結果をグロ
ーバルプロセッサに転送し、よってバイナリサーチを行
うことを可能としている。かかるSIMD型マイクロプ
ロセッサによれば、以下に示す手順により、複数のPE
のレジスタに格納されるデータ間の最大値を検出するこ
とが可能となる。以下の手順においてデータは符号なし
8ビット値である。
【0009】(1−1)グローバルプロセッサの汎用レ
ジスタの値を「128」に設定する。 (1−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (1−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0010】(2−1)上記の「OR演算」の結果が真
(即ち、“1”)ならば汎用レジスタの値に「64」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「64」を減算する。 (2−2)各PEの持つ演算レジスタの値と上記汎用レ
ジスタの値を比較し、演算レジスタの値が汎用レジスタ
の値以上であるPEではフラグビットを“1”、それ以
外のPEではフラグビットを“0”に設定する。 (2−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0011】(3−1)上記の「OR演算」の結果が真
(即ち、“1”)ならば汎用レジスタの値に「32」を
加算、偽(即ち、“0”)ならば汎用レジスタの値から
「32」を減算する。(同様の処理が続くため途中省略
する。)
【0012】(6−1)「OR演算」の結果が真(即
ち、“1”)ならば汎用レジスタの値に「4」を加算、
偽(即ち、“0”)ならば汎用レジスタの値から「4」
を減算する。 (6−2)各PEの持つ演算レジスタの値と汎用レジス
タの値を比較し、演算レジスタの値が汎用レジスタの値
以上であるPEではフラグビットを“1”、それ以外の
PEではフラグビットを“0”に設定する。 (6−3)全てのPEのフラグビットの値の「OR演
算」の結果を、グローバルプロセッサ内のフラグレジス
タに転送する。
【0013】(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」を
減算する。この段階での汎用レジスタの値が、最大値で
ある。
【0014】このように最大値を検出することが可能と
なる。ただし、上記の処理では各PEでの比較演算の結
果をグローバルプロセッサに戻す(転送する)という作
業が必要となるため、データのビット長に応じて処理ス
テップ数が増加する。8ビットのデータでは、処理ステ
ップ数が上述の例では25サイクルとなるが、16ビッ
トのデータでは、49サイクルが必要となる。更に、こ
のSIMD型マイクロプロセッサでは、全ての画素デー
タの特徴量のうち、総和値を求めることができない。
【0015】各PE(のレジスタ)に格納される値の総
和値を求め得るSIMD型マイクロプロセッサに関し
て、以下の様に幾つかのものが開示されている。
【0016】特公平8−14816号(特開平2−81
258号)では、PE間にツリー状に演算器を設け、各
ツリー毎にパイプラインを切ることによって演算器の負
荷を少なく保持したまま、ピーク検出や総和などの演算
を高速に行うことができる回路構成について開示してい
る。この発明は、演算対象のデータのビット幅が広くP
E数が少ない場合には、バイナリサーチよりも高速に処
理を行うことができるという利点をもつ。ただし、PE
数が増加すると演算器の数が増加し、回路規模の増大に
繋がるという欠点をもつ。
【0017】特開平8−30577号、特開平8−23
5149号においては、演算アレイの外部に別途、全P
Eの演算レジスタのデータを対象にした演算を実行でき
る演算器を装備するプロセッサが開示されている。この
プロセッサでは、ピーク検出だけでなく、総和演算も行
うことができる。全PE数のサイクルの演算時間(例え
ば256PEでは256サイクル)が必要となり、PE
数が多いSIMD方式プロセッサにおいてはサイクル数
が多くなるという面で懸念があるが、追加ハードウェア
を少なくできる利点をもつ。
【0018】特開平11−296498号では、共通バ
スを持ち、各PEでこの共通バスにマルチプレクサを挿
み、各PEが内蔵している条件レジスタの値によってマ
ルチプレクサの出力に共通バスの値をバイパスして出力
するか、ALUでの演算結果を出力するかを選択できる
ように構成することによって、2進木状にバイパス制御
を行うことが可能なプロセッサについて開示されてい
る。このプロセッサにおいては、総和値を高速にて求め
ることが可能であるが、共通バスにマルチプレクサがP
E数だけ挿まれるために動作速度上の懸念がある。
【0019】
【発明が解決しようとする課題】本発明は、少ない回路
規模を保ったまま、各PE間での総和値演算及びピーク
検出を行えるSIMD型マイクロプロセッサを提供する
ことを目的とする。詳細に言うと、先ず、2のべき乗個
毎にセグメントに分割された全PE共通のデータバスを
設け、同時に複数個のデータのデータ転送を行なうこと
によって、総和値演算及びピーク検出を少ないサイクル
数で行うことを目的としている。また、プリチャージド
バスを用いることによって、上記のデータバスのデータ
転送速度を高速化することを目的としている。更に、無
効な値を持つPEを予め除外しておくことによって、正
確な特徴量検出を行うことを目的としている。
【0020】
【課題を解決するための手段】本発明は、上記の目的を
達成するためになされたものである。本発明に係る請求
項1に記載のSIMD型マイクロプロセッサは、複数の
データを同時に処理するための複数のプロセッサエレメ
ントを有するSIMD型マイクロプロセッサである。そ
のSIMD型マイクロプロセッサにおいて、全てのプロ
セッサエレメントを接続するが、少なくとも2個以上の
プロセッサエレメントを含むセグメントにより分割され
うる、第1のデータバスを備え、上記第1のデータバス
のセグメントの分割は、接続部分が制御されることによ
って変更され、上記第1のデータバスと各プロセッサエ
レメントに備わる演算レジスタとの間に、データ入出力
のための経路が備えられ、そのデータ入出力は、各プロ
セッサエレメントに備わる条件レジスタの値により制御
される。
【0021】本発明に係る請求項2に記載のSIMD型
マイクロプロセッサは、上記第1のデータバスを分割し
て形成される各セグメントの接続部分を挟む、接続部分
両側のプロセッサエレメントにおいて、一方のプロセッ
サエレメントの演算レジスタの値を、他方のプロセッサ
エレメントの算術論理演算器に入力する経路が設定され
ている、請求項1に記載のSIMD型マイクロプロセッ
サである。
【0022】本発明に係る請求項3に記載のSIMD型
マイクロプロセッサは、複数のデータを同時に処理する
ための複数のプロセッサエレメントを有するSIMD型
マイクロプロセッサである。そのSIMD型マイクロプ
ロセッサにおいて、全てのプロセッサエレメントを接続
するが、少なくとも2個以上のプロセッサエレメントを
含むセグメントにより分割されうる、第1のデータバス
を備え、上記第1のデータバスのセグメントの分割は、
接続部分が制御されることによって変更され、各プロセ
ッサエレメントに備わる演算レジスタからデータを上記
第1のデータバスに出力する経路が備えられ、上記第1
のデータバスからデータが各プロセッサエレメントの算
術論理演算器に入力する経路が備えられ、各プロセッサ
エレメントに備わる演算レジスタから上記第1のデータ
バスへのデータの出力は、各プロセッサエレメントに備
わる条件レジスタの値により制御され、各プロセッサエ
レメントはマルチプレクサを有し、上記第1のデータバ
スからのデータが各プロセッサエレメントの算術論理演
算器に入力されるか否かが、該マルチプレクサによって
選択される。
【0023】本発明に係る請求項4に記載のSIMD型
マイクロプロセッサは、上記第1のデータバスが、プリ
チャージドバスであり、各セグメントを分割する媒介と
して、トランスミッションゲート若しくはパストランジ
スタが用いられている、請求項1乃至請求項3に記載の
SIMD型マイクロプロセッサである。
【0024】本発明に係る請求項5に記載のSIMD型
マイクロプロセッサは、各プロセッサエレメントに、識
別のための整数番号が順に付されており、SIMD型マ
イクロプロセッサに対する命令において上記識別番号の
範囲が指定されると、その範囲の識別番号が付されてい
るプロセッサエレメントにて備わる条件レジスタの格納
する値が、設定される、請求項1乃至請求項4に記載の
SIMD型マイクロプロセッサである。
【0025】
【発明の実施の形態】以下、図面を参照して、本発明に
係る好適な実施形態を説明する。
【0026】図1は、本発明に係るSIMD型マイクロ
プロセッサ2の概略の構成を示すブロック図である。該
SIMD型マイクロプロセッサ2は、概略、グローバル
プロセッサ4、レジスタファイル6、及び演算アレイ8
から構成される。
【0027】(1)グローバルプロセッサ4 このグローバルプロセッサ4そのものは、いわゆるSI
SD型のプロセッサであり、プログラムRAM10とデ
ータRAM12を内蔵し(図2参照)、プログラムを解
読し各種制御信号を生成する。この制御信号は内蔵する
各種ブロック以外に、レジスタファイル6、演算アレイ
8にも供給される。また、GP(グローバルプロセッ
サ)命令実行時は内蔵する汎用レジスタ、ALU(算術
論理演算器)等を使用して各種演算処理、プログラム制
御処理をおこなう。
【0028】(2)レジスタファイル6 PE(プロセッサエレメント)命令で処理されるデータ
を保持している。PE(プロセッサエレメント)3は、
公知のように、SIMD(Single Instru
ction−Stream,Multiple Dat
a−Stream)型プロセッサにおいて個別の演算を
実行する構成単位である。図2のレジスタファイル6及
び演算アレイ8が示すように、図2のSIMD型マイク
ロプロセッサ2では256個のPE3を含んでいる。上
記のPE命令はSIMD型の命令であり、レジスタファ
イル6に保持されている複数のデータに対し、同時に同
じ処理を行なう。このレジスタファイル6からのデータ
の読み出し/書き込みの制御はグローバルプロセッサ4
からの制御によって行なわれる。読み出されたデータは
演算アレイ8に送られ、演算アレイ8での演算処理後に
レジスタファイル6に書き込まれる。
【0029】また、レジスタファイル6はプロセッサ2
外部からのアクセスが可能であり、グローバルプロセッ
サ4の制御とは別に、外部から特定のレジスタに対し読
み出し/書き込みが行なわれる。
【0030】(3)演算アレイ PE命令の演算処理が行なわれる。処理の制御はすべて
グローバルプロセッサ4から行なわれる。
【0031】図2は、本発明に係るSIMD型マイクロ
プロセッサ2の、更に詳細な構成を示すブロック図であ
る。
【0032】グローバルプロセッサ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が内蔵され
ている。
【0033】これらのレジスタと、(図示していない)
命令デコーダ、ALU、SCU(シーケンシャルユニッ
ト)、メモリ制御回路、割り込み制御回路、外部I/O
制御回路及びGP演算制御回路とを使用して、GP命令
の実行が行なわれる。
【0034】また、PE命令実行時には、命令デコーダ
(図示せず。)、レジスタファイル制御回路(図示せ
ず。)、PE演算制御回路(図示せず。)を使用して、
レジスタファイル6の制御と演算アレイ8の制御を行な
う。さらに、データRAM12から複数のPEレジスタ
ファイル6にデータを転送できるように、設定されてい
る。
【0035】レジスタファイル6においては、1つのP
E単位に8ビットのレジスタ34が32本内蔵されてお
り、256個のPE分の(32本の)組が、アレイ構成
になっている。レジスタ34はPE毎に、R0、R1、
R2、...R31と呼ばれる。それぞれのレジスタ3
4は、演算アレイ8に対して1つの読み出しポートと1
つの書き込みポートを備えており、8ビットのリード/
ライト兼用のバスで演算アレイ8からアクセスされる。
32本のレジスタの内、24本(R0〜R23)はプロ
セッサ外部からアクセス可能であり、外部からはクロッ
ク(CLK)とアドレス(Address)、リード/
ライト制御(RWB)を入力することで、任意のレジス
タ34に対し、読み書きできる。残りの8本(R24〜
R31)のレジスタ34は、PE演算の一時的な演算デ
ータ保存用として使用される。
【0036】演算アレイ8は、16ビットALU36と
16ビットAレジスタ38、Fレジスタ40を内蔵して
いる。PE命令による演算は、レジスタファイル6から
読み出されたデータ若しくはグローバルプロセッサ4か
ら与えられたデータをALU36の片側の入力とし、A
レジスタ38の内容をもう片側の入力として、行なわれ
るものである。その演算結果は、Aレジスタ38に格納
される。したがって、R0〜R31レジスタ34若しく
はグローバルプロセッサ4から与えられたデータと、A
レジスタ38に格納されるデータとの、演算が行なわれ
ることになる。
【0037】レジスタファイル6と演算アレイ8との接
続に、7to1(7対1)のマルチプレクサ42が置か
れている。図2に示すように、あるマルチプレクサ42
から見て、左方向の3つのPE3に含まれるR0〜R3
1レジスタ34のデータと、右方向の3つのPE3に含
まれるR0〜R31レジスタ34のデータと、自らが属
するPE3に含まれるR0〜R31レジスタ34のデー
タを、演算対象として選択し得るように設定されてい
る。また、レジスタファイル6の8ビットのデータは、
シフト・拡張回路44により任意のビット分だけ、左シ
フトしてALU36に入力する。
【0038】さらに、(図3等に示す)8ビットの条件
レジスタ46により、PE3別に演算実行の無効/有効
の制御をしており、特定のPE3だけを演算対象として
選択できるようになっている。
【0039】≪第1の実施形態≫図3は、本発明に係る
第1の実施形態のSIMD型マイクロプロセッサ2の詳
細な構成を示すブロック図である。図2のSIMD型マ
イクロプロセッサ2に対し、第1の実施形態を実現する
ために必要な構成要素を加えたものである。
【0040】第1の実施形態のSIMD型マイクロプロ
セッサ2は、共通データバス50を備える。該共通デー
タバス50には、各PE3のAレジスタ38から例えば
3ステートバッファ52を介して、データが出力され
る。図3から明白なように、該3ステートバッファ52
では、条件レジスタ46の値が「イネーブル信号」とし
て用いられる。更に、各PE3においては、共通データ
バス50から第2のマルチプレクサ54を介してAレジ
スタ38にデータを入力し得るように構成されている。
この第2のマルチプレクサ54は、各PE3の演算アレ
イ8において、16ビットALU36、共通データバス
50、及びAレジスタ38の間に配置される。16ビッ
トALU36からの出力若しくは共通データバス50か
らの出力が、該第2のマルチプレクサ54に入力されて
選択され、Aレジスタ38にどちらかが出力される。
【0041】第1の実施形態では、共通データバス50
は、16個のPE3毎に接続器(JT1、JT2)56
を介して接続されている。接続器(JT1、JT2)5
6は、そのポイントにおいて左右の共通データバス50
を接続するか分断するかを選択し得るように構成されて
いる。また、グローバルプロセッサ4も共通データバス
50からのデータを入力することが可能である。
【0042】更に、第1の実施形態のSIMD型マイク
ロプロセッサ2は、即値データバス58を備える。該即
値データバス58には、グローバルプロセッサ4からデ
ータが出力される。更に、各PE3の演算アレイ8にお
いて、シフト・拡張回路44、即値データバス58、及
び16ビットALU36の間に、第3のマルチプレクサ
60が配置される。シフト・拡張回路44からの出力及
び即値データバス58からの出力が、該第3のマルチプ
レクサ60に入力されて選択され、16ビットALU3
6にどちらかが出力される。
【0043】各PE3は、PE番号と呼ばれる通し番号
が付されている。本実施形態(及び後述の第2乃至第5
の実施形態)では、PEの個数が256個であるので、
8ビットのビット列(即ち、00000000b〜11
111111bの256通り。本明細書において、上記
のような末尾の“b”は2進法表記であることを表
す。)が、各PE3にPE番号データとして与えられ
る。このPE番号を利用して、特定のPE3を選択しそ
のPE3の演算アレイ8に含まれる条件レジスタ46
に、所定の値を設定することが可能である。そのように
特定のPE3を選択できるように、各PE3の演算アレ
イ8には比較器48が備えられている。
【0044】比較器48には、後で詳しく説明するが、
ビット指定データとビットマスクデータとからなるPE
指定データと、PE番号データとが入力される。これら
PE指定データとPE番号データとは何れも8ビット長
である。ビットマスクデータにおいてマスク指定がされ
ていないビットにおいてのみ、ビット指定データとPE
番号データとが比較され、比較の結果が条件レジスタ4
6に書き込まれるように構成されている。
【0045】なお、上記のPE番号データは、各PE3
にて8ビットの入力端子を備えさせその端子をVCC若
しくはGNDに結ぶ組み合わせを変えることにより、作
成している。
【0046】<第1の実施の形態における、総和値の計
算>以上の本発明に係る第1の実施形態のSIMD型マ
イクロプロセッサ2の構成を利用すると、以下のように
して総和値を求めることが可能である。
【0047】総和値計算の対象データのビット幅は8ビ
ットであり、各PE3のR0レジスタに格納されている
とする。なお、総和計算対象データが16ビットの場合
は、以下の処理過程を2回繰り返すことにより総和値が
求められるので、ここでは記述を省略する。
【0048】まず、最初の処理として、PE3の16個
毎での総和値を、最もPE番号の小さいPE(PE
[0]、PE[16]、PE[32]、・・・、PE
[240])に格納する。(なお、例えば、PE番号が
“16”であるPEは、上記のように、PE[16]と
表すものとする。)詳細は次の通りになる。
【0049】(1−1) ・R0レジスタの値をAレジ
スタにロード。 (1−2) ・Aレジスタと、1つ後方(PE番号が大
きいことを“後方”と表現する。)のPEのR0レジス
タとの加算。 (1−3) ・演算結果の下位8ビットをテンポラリレ
ジスタR30に格納。 (1−4) ・演算結果の上位8ビットを右に8ビット
シフトしてテンポラリレジスタR31に格納。 (1−5) ・Aレジスタと、2つ後方のPEのR30
レジスタとの加算。 (1−6) ・Aレジスタに、2つ後方のPEのR31
レジスタの値を左に8ビットシフトして、加算。 (1−7) ・演算結果の下位8ビットを、3つ前方
(PE番号が小さいことを前方と表現する。)のPEの
R30に格納。 (1−8) ・演算結果の上位8ビットを、右に8ビッ
トシフトして、3つ前方のPEのR31に格納。 (1−9) ・Aレジスタと、1つ後方のPEのR30
レジスタとの加算。 (1−10) ・Aレジスタに、1つ後方のPEのR3
1レジスタの値を左に8ビットシフトして、加算。 (1−11) ・演算結果の下位8ビットを、3つ前方
のPEのR30に格納。 (1−12) ・演算結果の上位8ビットを、右8ビッ
トシフトして、3つ前方のPEのR31に格納。 (1−13) ・3つ後方のPEのR30レジスタの値
を、Fレジスタにロードし、R30レジスタにライトバ
ック。 (1−14) ・3つ後方のPEのR31レジスタの値
を、Fレジスタにロードし、R31レジスタにライトバ
ック。 (1−15) ・Aレジスタと、2つ後方のPEのR3
0レジスタとの加算(演算結果の下位8ビットをR30
レジスタにライトバック)。 (1−16) ・Aレジスタに、2つ後方のPEのR3
1レジスタの値を左に8ビットシフトして、加算。
【0050】図6は、以上の処理の過程において、各P
Eのレジスタに格納される値の変遷を図示している。図
6において、 ・SUM(PE0〜PE3) は、処理の開始時において各PEに格納されていたデー
タを、PE[0]からPE[3]まで全て加算して生成
された値を略記したものである。
【0051】以上の処理の過程においては、加算対象の
レジスタ(R30、R31のレジスタ)は処理過程が進
むにつれて、離れたPEに備わるレジスタになる。その
ため、例えば、上記の(1−13)及び(1−14)の
2サイクルは、データを離れたPE間で移動させるため
に必要とされている処理である。これ以降の処理の過程
において、上記のようにPE間を最大3つまで移動でき
る構成を用いて処理を進めていくとすると、移動量が2
のべき乗にて増加していき、よって(処理)サイクル数
が膨大なものになってしまう。
【0052】そこで、本発明に係る第1の実施の形態で
は、以下のように処理を行うことで(処理)サイクル数
即ち演算時間を短縮している。
【0053】(まず、「1−15 演算結果の下位8ビ
ットをR30レジスタにライトバック」は上記処理で実
行済みである。) (2−1) ・演算結果の上位8ビットを、右に8ビッ
トシフトしてR31に格納。 (2−2) ・共通データバス50の接続状態を、最小
セグメントに分割した状態(16個のPE毎に分断した
状態)にする。 (2−3) ・PE番号が16×N(N=0、1、2、
・・・、15)であるPEの、条件レジスタ46を
“1”に設定する。(即ち、PE指定データにおいて、
ビット指定データを00000000bとし、ビットマ
スクデータを上位4ビットとする。) (2−4) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (2−5) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (2−6) ・1つ前方のPEのR30レジスタと、A
レジスタ38とを加算(演算結果の下位8ビットをR3
0レジスタにライトバック)。 (2−7) ・1つ前方のPEのR31レジスタの値
を、左に8ビットシフトしてAレジスタ38と加算。
【0054】(3−1) ・演算結果の上位8ビット
を、右に8ビットシフトしてR31レジスタに格納。 (3−2) ・共通データバス50の接続状態を、32
個のPE毎に分断した状態にする。 (3−3) ・PE番号が32×N+16(N=0、
1、2、・・・、7)であるPEの、条件レジスタ46
を“1”に設定する。(即ち、PE指定データにおい
て、ビット指定データを00010000bとし、ビッ
トマスクデータを上位3ビットとする。) (3−4) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (3−5) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (3−6) ・1つ前方のPEのR30レジスタと、A
レジスタ38とを加算(演算結果の下位8ビットをR3
0レジスタにライトバック)。 (3−7) ・1つ前方のPEのR31レジスタの値
を、左に8ビットシフトしてAレジスタ38と加算。
【0055】(4−1) ・演算結果の上位8ビット
を、右に8ビットシフトしてR31に格納。 (4−2) ・共通データバス50の接続状態を、64
個のPE毎に分断した状態にする。 (4−3) ・PE番号が64×N+32(N=0、
1、2、3)であるPEの、条件レジスタ46を“1”
に設定する。(即ち、PE指定データにおいて、ビット
指定データを00100000bとし、ビットマスクデ
ータを上位2ビットとする。) (4−4) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (4−5) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (4−6) ・1つ前方のPEのR30レジスタと、A
レジスタ38とを加算(演算結果の下位8ビットをR3
0レジスタにライトバック)。 (4−7) ・1つ前方のPEのR31レジスタの値
を、左に8ビットシフトしてAレジスタ38と加算。
【0056】(5−1) ・演算結果の上位8ビット
を、右に8ビットシフトしてR31に格納。 (5−2) ・共通データバス50の接続状態を、12
8個のPE毎に分断した状態にする。 (5−3) ・PE番号が128×N+64(N=0、
1)であるPEの、条件レジスタ46を“1”に設定す
る。(即ち、PE指定データにおいて、ビット指定デー
タを01000000bとし、ビットマスクデータを上
位1ビットとする。) (5−4) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタの値を共通データバス50に出
力。 (5−5) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (5−6) ・1つ前方のPEのR30レジスタと、A
レジスタ38とを加算。 (5−7) ・1つ前方のPEのR31レジスタの値
を、左に8ビットシフトしてAレジスタ38と加算。
【0057】図7は、以上の処理の過程において、各P
E3のレジスタに格納される値の変遷を図示している。
表記内容の意味は、図6と同じである。
【0058】以上の処理によって、PE[128]のA
レジスタ38に総和値を得ることができる。実際には、
処理全体を制御するグローバルプロセッサ4にデータを
転送しなければ、総和値の値によって全体処理を変更す
るということが実現できない。そこで、この第1の実施
の形態では、PE[128]のAレジスタ38の値を以
下のようにしてグローバルプロセッサ4に転送すればよ
い。
【0059】(6−1) ・共通データバス50の接続
状態を、全て接続した状態にする。 (6−2) ・PE番号が128であるPEの条件レジ
スタ46を“1”に設定する。(即ち、PE指定データ
において、ビット指定データを10000000bと
し、ビットマスクデータを無しとする。) (6−3) ・条件レジスタ46が真(即ち、“1”)
のPEすなわちPE[128]は、Aレジスタ38の値
を共通データバス50に出力。 (6−4) ・グローバルプロセッサ4の所望のレジス
タに、共通データバス50の値を転送。
【0060】上記の処理の過程において、 ・(2−2)と(2−3) ・(3−2)と(3−3) ・(4−2)と(4−3) ・(5−2)と(5−3) ・(6−1)と(6−2) の夫々の組は、1サイクルにて処理実行可能である。そ
うすると、前処理の16サイクルと合わせて43サイク
ルで総和値を得ることが可能である。また、 ・(2−4)と(2−5) ・(3−4)と(3−5) ・(4−4)と(4−5) ・(5−4)と(5−5) ・(6−3)と(6−4) の各々の組は、共通データバス50の構造が動作速度的
に十分には速くない場合を想定して、2サイクルとして
いるが、共通データバス50の動作速度を速くできれば
1サイクルで実行可能である。この場合、38サイクル
で総和値を得られることになる。
【0061】≪第2の実施形態≫図4は、本発明に係る
第2の実施形態のSIMD型マイクロプロセッサ2の詳
細な構成を示すブロック図である。上記の第1の実施形
態のSIMD型マイクロプロセッサ2の構成に対して、
共通データバス50の接続器56を挟んだ2個のPE3
間で、データのやり取りをなし得る構成が付加されてい
る。図4では、PE[15]のAレジスタ38のデータ
がPE[16]の第3のマルチプレクサ60に入力され
る。よって、例えば、総和値演算を行う場合には、上記
のデータは16ビットALU36に入力されることにな
る。
【0062】<第2の実施の形態における、総和値の計
算>図4に示された本発明に係る第2の実施形態のSI
MD型マイクロプロセッサ2の構成を利用することによ
り、第1の実施形態の説明で示した総和値の計算のサイ
クル数を削減することができる。以下において、第2の
実施形態のSIMD型マイクロプロセッサ2の構成を利
用した総和値の計算を説明する。但し、第1の実施形態
の総和値計算の処理過程において、 ・(1−1)から(1−16)、及び ・(6−1)から(6−4) の処理については変更がないため、説明を省略する。
【0063】(2−1) ・共通データバス50の接続
状態を、最小セグメントに分割した状態(16個のPE
毎に分断した状態)にする。 (2−2) ・PE番号が16×N(N=0、1、2、
・・・、15)であるPEの、条件レジスタ46を
“1”に設定する。(即ち、PE指定データにおいて、
ビット指定データを00000000bとし、ビットマ
スクデータを上位4ビットとする。) (2−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (2−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (2−5) ・1つ前方のPEのAレジスタ38の値
と、Aレジスタ38の値とを加算。
【0064】(3−1) ・共通データバス50の接続
状態を、32個のPE毎に分断した状態にする。 (3−2) ・PE番号が32×N+16(N=0、
1、2、・・・、7)であるPEの、条件レジスタ46
を“1”に設定する。(即ち、PE指定データにおい
て、ビット指定データを00010000bとし、ビッ
トマスクデータを上位3ビットとする。) (3−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (3−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (3−5) ・1つ前方のPEのAレジスタ38の値
と、Aレジスタ38の値とを加算。
【0065】(4−1) ・共通データバス50の接続
状態を、64個のPE毎に分断した状態にする。 (4−2) ・PE番号が64×N+32(N=0、
1、2、3)であるPEの、条件レジスタ46を“1”
に設定する。(即ち、PE指定データにおいて、ビット
指定データを00100000bとし、ビットマスクデ
ータを上位2ビットとする。) (4−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (4−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (4−5) ・1つ前方のPEのAレジスタ38の値
と、Aレジスタ38の値とを加算。
【0066】(5−1) ・共通データバス50の接続
状態を、128個のPE毎に分断した状態にする。 (5−2) ・PE番号が128×N+64(N=0、
1)であるPEの、条件レジスタ46を“1”に設定す
る。(即ち、PE指定データにおいて、ビット指定デー
タを01000000bとし、ビットマスクデータを上
位1ビットとする。) (5−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (5−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50からAレジスタ38に
値を設定。 (5−5) ・1つ前方のPEのAレジスタ38の値
と、Aレジスタ38の値とを加算。
【0067】図8は、以上の処理の過程において、各P
Eのレジスタに格納される値の変遷を図示している。表
記内容の意味は、図6と同じである。
【0068】以上の処理によって、PE[128]のA
レジスタ38に総和値を得ることができる。
【0069】上記の処理の過程において、 ・(2−1)と(2−2) ・(3−1)と(3−2) ・(4−1)と(4−2) ・(5−1)と(5−2) ・(6−1)と(6−2) の夫々の組は、1サイクルにて処理実行可能である。そ
うすると、前処理の16サイクルと合わせて35サイク
ルで総和値を得ることが可能である。また、 ・(2−3)と(2−4) ・(3−3)と(3−4) ・(4−3)と(4−4) ・(5−3)と(5−4) ・(6−3)と(6−4) の各々の組は、共通データバス50の構造が動作速度的
に十分に速くない場合を想定して、2サイクルとしてい
るが、共通データバス50の動作速度を速くできれば1
サイクルで実行可能である。この場合、30サイクルで
総和値を得ることが可能である。
【0070】≪第3の実施形態≫図5は、本発明に係る
第3の実施形態のSIMD型マイクロプロセッサ2の詳
細な構成を示すブロック図である。上述の第1の実施形
態のSIMD型マイクロプロセッサ2(図3参照)の構
成と比較すると、各PE3の演算アレイ8内の第2のマ
ルチプレクサ54が除かれた構成になっている。従っ
て、16ビットALU36とAレジスタ38とが直接繋
がる。
【0071】一方、上述の第1の実施形態のSIMD型
マイクロプロセッサ2(図3参照)の構成に対して、共
通データバス50から各PE3の16ビットALU36
に入力する経路62が、更に付加されている。即ち、共
通データバス50から出力されたデータは、まず第3の
マルチプレクサ60に入力される。第3のマルチプレク
サ60は、通常のインストラクションを実行する際には
即値データバス58あるいはレジスタ34から出力され
たデータを、16ビットALU36に入力するが、総和
値の計算を行う際には、共通データバス50から出力さ
れたデータをも、16ビットALU36に入力するよう
に構成されている。
【0072】<第3の実施の形態における、総和値の計
算>図5に示された本発明に係る第3の実施形態のSI
MD型マイクロプロセッサ2の構成を利用することによ
り、第1の実施形態の説明で示した総和値の計算のサイ
クル数と、第2の実施形態の説明で示した総和値の計算
のサイクル数との、何れよりも少ないサイクル数で総和
値計算を行うことができる。以下において、第3の実施
形態のSIMD型マイクロプロセッサ2の構成を利用し
た総和値の計算を説明する。
【0073】まず、最初の処理として、PE3の8個毎
での総和値を、最もPE番号の小さいPE(PE
[0],PE[8],PE[16]、・・・、PE[2
40]、PE[248])に格納する。その詳細は次の
通りになる。
【0074】(1−1) ・R0レジスタの値をAレジ
スタにロード。 (1−2) ・Aレジスタと、1つ後方(PE番号が多
いことを“後方”と表現する。)のPEのR0レジスタ
との加算。 (1−3) ・演算結果の下位8ビットをテンポラリレ
ジスタR30に格納。 (1−4) ・演算結果の上位8ビットを右に8ビット
シフトしてテンポラリレジスタR31に格納。 (1−5) ・Aレジスタと、2つ後方のPEのR30
レジスタとの加算。 (1−6) ・Aレジスタに、2つ後方のPEのR31
レジスタの値を左に8ビットシフトして、加算。 (1−7) ・演算結果の下位8ビットを、3つ前方
(PE番号が少ないことを“前方”と表現する。)のP
EのR30に格納。 (1−8) ・演算結果の上位8ビットを、右に8ビッ
トシフトして、3つ前方のPEのR31に格納。 (1−9) ・Aレジスタと、1つ後方のPEのR30
レジスタとの加算。 (1−10) ・Aレジスタに、1つ後方のPEのR3
1レジスタの値を左に8ビットシフトして、加算。
【0075】上記の詳細な処理はPEの8個毎での総和
値の計算に関するものであるから、PEの16個毎での
総和値の計算に関するものである第1の実施形態及び第
2の実施形態での最初の処理よりも、6サイクル少な
い。
【0076】上記以降は、以下のようにして総和値を求
めることができる。
【0077】(2−1) ・共通データバス50の接続
状態を、最小セグメントに分割した状態(16個のPE
毎に分断した状態)にする。 (2−2) ・PE番号が16×N+8(N=0、1、
2、・・・、15)であるPEの、条件レジスタ46を
“1”に設定する。(即ち、PE指定データにおいて、
ビット指定データを00001000bとし、ビットマ
スクデータを上位4ビットとする。) (2−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (2−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50の値と、Aレジスタ3
8の値とを、加算。
【0078】(3−1) ・共通データバス50の接続
状態を、32個のPE毎に分断した状態にする。 (3−2) ・PE番号が32×N+16(N=0、
1、2、・・・、7)であるPEの、条件レジスタ46
を“1”に設定する。(即ち、PE指定データにおい
て、ビット指定データを00010000bとし、ビッ
トマスクデータを上位3ビットとする。) (3−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (3−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50の値と、Aレジスタ3
8の値とを、加算。
【0079】(4−1) ・共通データバス50の接続
状態を、64個のPE毎に分断した状態にする。 (4−2) ・PE番号が64×N+32(N=0、
1、2、3)であるPEの、条件レジスタ46を“1”
に設定する。(即ち、PE指定データにおいて、ビット
指定データを00100000bとし、ビットマスクデ
ータを上位2ビットとする。) (4−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (4−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50の値と、Aレジスタ3
8の値とを、加算。
【0080】(5−1) ・共通データバス50の接続
状態を、128個のPE毎に分断した状態にする。 (5−2) ・PE番号が128×N+64(N=0、
1)であるPEの、条件レジスタ46を“1”に設定す
る。(即ち、PE指定データにおいて、ビット指定デー
タを01000000bとし、ビットマスクデータを上
位1ビットとする。) (5−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (5−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50の値と、Aレジスタ3
8の値とを、加算。
【0081】(6−1) ・共通データバス50の接続
状態を、256個のPE毎に分断した状態にする(本実
施形態では、分断が無い。)。 (6−2) ・PE番号が128であるPEの、条件レ
ジスタ46を“1”に設定する。(即ち、PE指定デー
タにおいて、ビット指定データを10000000bと
し、ビットマスクデータを無しとする。) (6−3) ・条件レジスタ46が真(即ち、“1”)
のPEでは、Aレジスタ38の値を共通データバス50
に出力。 (6−4) ・条件レジスタ46が偽(即ち、“0”)
のPEでは、共通データバス50の値と、Aレジスタ3
8の値とを、加算。
【0082】(7−1) ・PE番号が0であるPE
の、条件レジスタ46を“1”に設定する。 (7−2) ・条件レジスタが真(即ち、“1”)のP
Eでは、Aレジスタ38の値を共通データバス50に出
力。 (7−3) ・共通データバス50の値を、グローバル
レジスタ4の所望のレジスタに転送。
【0083】図9は、以上の処理の過程において、各P
Eのレジスタに格納される値の変遷を図示している。表
記内容の意味は、図6と同じである。以上の処理によっ
て、PE[0]のAレジスタ38に総和値を得ることが
できる。
【0084】上記の処理の過程において、 ・(2−1)と(2−2) ・(3−1)と(3−2) ・(4−1)と(4−2) ・(5−1)と(5−2) ・(6−1)と(6−2) の夫々の組は、1サイクルで処理実行可能である。そう
すると、前処理の10サイクルと合わせて28サイクル
で総和値を得ることが可能である。
【0085】以上の第1の実施形態、第2の実施形態及
び第3の実施形態においては、総和値計算についてのみ
示してきたが、ピーク検出も同様にして行うことが可能
である。即ち、総和値計算の時に加算命令を使ったのと
同様に、飽和演算命令(ifA>B then A=B
あるいは if A<B then A=B という
ような命令)を用いればピーク検出ができる。
【0086】≪第4の実施の形態≫図3の第1の実施形
態のSIMD型マイクロプロセッサ2、図4の第2の実
施形態のSIMD型マイクロプロセッサ2、及び図5の
第3の実施形態のSIMD型マイクロプロセッサ2にお
いては、各PE3のAレジスタ38から3ステートバッ
ファ52を介して、該共通データバス50にデータが出
力される。
【0087】ここで、共通データバス50の遷移時間を
短くするために、3ステートバッファ52を利用するの
ではなく、以下に示すようにプリチャージドバスを利用
して本発明に係るSIMD型マイクロプロセッサ2を構
成することができる。図10は、プリチャージドバスを
利用した、本発明に係る第4の実施形態のSIMD型マ
イクロプロセッサ2の構成、特に、共通データバス50
に係る部位の構成を示す部分ブロック図である。図10
の構成を備えるSIMD型マイクロプロセッサ2は、上
述の第1の実施形態及び第2の実施形態のSIMD型マ
イクロプロセッサ2と、同一の機能を備えるものであ
る。
【0088】図10の第4の実施形態のSIMD型マイ
クロプロセッサ2において、共通データバス50は16
個のPE3毎に、接続器(トランスミッションゲート)
56によって接続されている。接続器(トランスミッシ
ョンゲート)56のオン・オフは制御信号によって、グ
ローバルプロセッサ4により制御される。
【0089】共通データバス50には、16個のPE3
毎に、プリチャージ用のPMOSトランジスタ64が接
続されている。プリチャージ期間にて、PCK1信号
を、“Low”電位とすることで、共通データバス50
の電位を、“High”電位にプリチャージする。
【0090】ディスチャージ期間には、PCK1信号は
“High”電位とされる。すると、該PMOSトラン
ジスタ64は“オフ”の状態となるが、PMOSトラン
ジスタ66及びインバータ68の作用により、インバー
タ68の出力が“Low”電位に且つ共通データバス5
0の電位が“High”電位に保たれようとする。この
PMOSトランジスタ66は、上記のように共通データ
バスの電位が“High”電位に保たれるための、最小
限のサイズのものが望ましい。
【0091】さて、ディスチャージ期間には、PCK
1’信号は、“High”信号とされる。 (1)このとき、各PE3において、条件レジスタ46
の値が“High”電位であり(即ち、真であり)Aレ
ジスタ38の値が“Low”電位であるならば、AND
ゲート70の出力は“High”電位となる。結局、N
MOSトランジスタ72、74の両方が“オン”状態と
なるため共通データバス50の電位が“Low”電位に
引き落とされる(ディスチャージされる)。 (2)各PE3において、条件レジスタ46の値が“H
igh”電位であり(即ち、真であり)Aレジスタ38
の値が“High”電位であるならば、ANDゲート7
0の出力は“Low”電位となる。結局、NMOSトラ
ンジスタ72が“オフ”状態を継続するため、共通デー
タバス50の電位がディスチャージされることはない。 (3)一方、各PE3において、条件レジスタ46の値
が“Low”電位である(即ち、偽である)場合を想定
する。このとき、ANDゲート70の出力は“Low”
電位となり、NMOSトランジスタ72が“オフ”状態
を継続する。これら、(1)(2)及び(3)の事象か
ら、例えば、 ・2個の接続器(トランスミッションゲート)56が閉
じられ ・両者(2個の接続器56)の間の共通データバス50
が接続状態であり、 ・両者(2個の接続器56)の間のPE3において、あ
る1つのPE3の条件レジスタ46だけが真であり、他
のPE3においては全て条件レジスタ46は偽であるな
らば、条件レジスタ46が真であるPEの、Aレジスタ
38の値が、共通データバス50に出力されることにな
る。
【0092】≪第5の実施の形態≫上記の第4の実施形
態のSIMD型マイクロプロセッサ2では、共通データ
バス50の遷移時間を短くするために、プリチャージド
バスを利用して本発明に係るSIMD型マイクロプロセ
ッサ2を構成している。しかし、上記のような構成にお
いては、共通データバス50に備わる全ての接続器56
が開けられている場合、その一体となった共通データバ
ス50に全ての(256個の)PE3のNMOSトラン
ジスタ72が“ぶら下がる”ことになる。そうすると、
それら256個のNMOSトランジスタ72の「ドレイ
ン容量」起因による速度低下が無視し得ず顕在化し、問
題となることが予測される。
【0093】また、接続器(トランスミッションゲー
ト)56が、多重にスタックすることになるが、このこ
とも動作速度を低下させる要因となり得る。この問題点
は、プリチャージドバスの仕組みを利用せずに3ステー
トバッファ52を利用するSIMD型マイクロプロセッ
サ2においても、生じ得る問題点である。
【0094】図11は、本発明に係る第5の実施形態の
SIMD型マイクロプロセッサ2の部分ブロック図であ
る。図10と同様に、特に、共通データバス50に係る
部位の構成を示す。この第5の実施形態のSIMD型マ
イクロプロセッサ2は、プリチャージドバスの仕組みを
利用しながらも、上記の2つの問題点を解消するもので
ある。図11の構成を備えるSIMD型マイクロプロセ
ッサ2も、上述の第1の実施形態及び第2の実施形態の
SIMD型マイクロプロセッサ2と、同一の機能を備え
るものである。
【0095】図11の第5の実施形態のSIMD型マイ
クロプロセッサ2においては、第2の共通データバス7
6を備える。第2の共通データバス76は、64個のP
E3毎に、第2の接続器(トランスミッションゲート)
78により接続されている。即ち、64個のPE3を最
小セグメントとし、4つの該セグメントを接続器(トラ
ンスミッションゲート)78で接続している。
【0096】また、16個のPE毎に、バス接続制御部
80が備わる。このバス接続制御部80は、共通データ
バス50と、第2の共通データバス76との、データ転
送を制御している。なお、共通データバス50の接続
(即ち、セグメント分割)に関しては、図10に示され
る第4の実施形態の場合と同様であるが、64個のPE
毎に完全に切断されており(即ち、完全にセグメントが
分割されており)、共通データバス50においては64
個以上のPE3のセグメントを形成できないように構成
されている。
【0097】バス接続制御部80は、 ・(前に説明した)共通データバス50のプリチャージ
及びチャージ保持を行うPMOSトランジスタ64、6
6、及びインバータ68と、 ・第2の共通データバス76のディスチャージを制御す
るNMOSトランジスタ82、84と、 ・第2の共通データバス76が“Low”電位の場合に
て、必要時に共通データバス50をディスチャージする
ためのNMOSトランジスタ86、88、及びインバー
タ90とから構成されている。
【0098】NMOSトランジスタ82は、インバータ
68の出力をゲート入力に持ち、NMOSトランジスタ
84は、制御信号PCK2をゲート入力に持つ。また、
NMOSトランジスタ86は、インバータ90の出力を
ゲート入力に持ち、NMOSトランジスタ88は、制御
信号PCK2’をゲート入力に持つ。
【0099】また、第5の実施形態のSIMD型マイク
ロプロセッサ2は、64個のPE3毎に、PMOSトラ
ンジスタ92、94、及びインバータ96を備えてい
る。それらは、第2の共通データバス76のプリチャー
ジやチャージの保持にて用いられる。PMOSトランジ
スタ92は、プリチャージ期間には制御信号PCK3が
“Low”電位に設定されるので、第2の共通データバ
ス76をプリチャージすることになる。ディスチャージ
期間には、PCK3信号が“High”電位とされる。
すると、該PMOSトランジスタ92は“オフ”の状態
になるが、PMOSトランジスタ94及びインバータ9
6の作用により、インバータ96の出力が“Low”電
位に且つ第2の共通データバス76の電位が“Hig
h”電位に保たれようとする。
【0100】制御信号PCK2、及び制御信号PCK
2’は、64個未満のPE3(2のべき乗では32PE
以内)のセグメントの区分で演算を行なう場合には、
“Low”電位に固定されるよう制御される。このこと
により、共通データバス50と第2の共通データバス7
6との間ではデータ転送が行われず、結局、図10の第
4の実施形態の構成の場合と同様に、共通データバス5
0のみを利用するデータ転送が行われることになる。
【0101】64個以上のPE3のセグメントの区分で
演算処理を行なう場合には、制御信号PCK2、制御信
号PCK2’は、プリチャージ期間には“Low”電位
となり、ディスチャージ期間には“High”電位とな
るように制御される。
【0102】ディスチャージ期間において、共通データ
バス50が、条件レジスタ46の値が真であるPE3
の、NMOSトランジスタ72(及びNMOSトランジ
スタ74)によってディスチャージされると、インバー
タ68の出力が“High”電位となる。すると、NM
OSトランジスタ82が“オン”の状態になり、結局、
第2の共通データバス76がディスチャージされること
になる。条件レジスタ46の値が偽であるPE3のみを
含む、16個のPEブロック(即ち、接続器56と接続
器56の間の16個のPE3群)では、どのNMOSト
ランジスタ72も“オン”の状態にならないため(それ
らNMOSトランジスタ72によっては)共通データバ
ス50がディスチャージされない。しかし、第2の共通
データバス76が上記のようにディスチャージされる
と、インバータ90の出力が“High”電位となり、
NMOSトランジスタ86が“オン”の状態になって、
上記の16個のPEブロックにおいても結局、共通デー
タバス50がディスチャージされることになる。
【0103】上記の場合に、接続器(トランスミッショ
ンゲート)56を“オン”の状態にしていても、論理的
には問題は生じない。しかし、ドレイン容量が増加し共
通データバス50をディスチャージする速度が低下する
ため、64個以上のPE3のセグメントの区分で演算処
理を行なう場合には、全ての接続器(トランスミッショ
ンゲート)56を“オフ”の状態にしておく方が、全体
の処理の高速化に繋がる。
【0104】本発明に係る第5の実施形態に示される構
成を利用すると、相当に長いセグメントの区分による演
算処理が必要な場合でも、共通データバス50には16
個のドレイン、16個のマルチプレクス54、バス接続
制御部80内の数個のドレイン、ゲートによる容量しか
「ぶら下がらない」ため、高速の動作が可能になる。第
2のデータバス76には、最大でも16個のドレイン容
量、16個のインバータ90のゲート容量、及び、4セ
ットのプリチャージ保持部しか「ぶら下がらない」こと
になり、こちらも高速の動作が可能になる。
【0105】更に、接続器(トランスミッションゲー
ト)56、78のスタックについても、データバス50
及び第2のデータバス76の両方とも、夫々最大で4段
までしかスタックしないこととなるため、高速の動作が
可能になる。
【0106】≪第6の実施形態≫図12は、本発明に係
る第6の実施形態の、SIMD型マイクロプロセッサ2
にて備えられる条件レジスタ46設定のための比較器4
8の構成を、図示している。図12では、グローバルプ
ロセッサ4内に関する構成の一部分と、プロセッサエレ
メント3内に関する構成の一部分とを、示す。
【0107】上述の第1の実施形態乃至第3の実施形態
のSIMD型マイクロプロセッサ2では、グローバルプ
ロセッサ4からプロセッサエレメント3へ、ビット指定
データ及びビットマスクデータがPE指定データとして
伝送される。この第6の実施形態のSIMD型マイクロ
プロセッサ2では、グローバルプロセッサ4からプロセ
ッサエレメント3へ、「PEの有効範囲の下限」及び
「PEの有効範囲の上限」がPE指定データとして伝送
される。即ち、PE番号データが「PEの有効範囲の下
限」及び「PEの有効範囲の上限」の範囲にあるか否か
によって、条件レジスタ46への設定値を決定する。
【0108】比較器48において、上記のような範囲指
定に係る命令が実行される際には、コンパレータ98が
利用される。コンパレータ98に対して、PE番号デー
タ、「PEの有効範囲の下限データ(PELデータ)」
及び「PEの有効範囲の上限(PEHデータ)」が入力
され、PE番号が有効範囲に在るか否かが判断される。
その結果、PE番号が有効範囲に在る場合、条件レジス
タ46の値が真(即ち、“1”)に設定され、PE番号
が有効範囲に無い場合、偽(即ち、“0”)に設定され
る。
【0109】本実施形態のSIMD型マイクロプロセッ
サ2を用いると、PE番号が特定の範囲にあるPE3の
みに対し、所定の処理を行うことができる。例えば、P
E番号が特定の範囲外であるPE3の(レジスタ)デー
タを、0に設定できる。下記にその処理の例を示す。こ
の処理を無効なデータが混入しているPEの(レジス
タ)データに対して、例えば総和値計算の前に行なって
おくと、それらPE3の(レジスタ)データを0に設定
することが可能となるため、無効なデータが総和値計算
に影響を与えることがなくなる。
【0110】(0−1) ・全てのPE3のAレジスタ
38に0を設定する (0−2) ・PE番号が特定の範囲にあるPE3の条
件レジスタ46を真(即ち、“1”)に設定する。 (0−3) ・条件レジスタ46が真であるPE3のみ
R0レジスタの値をAレジスタ38にロードする。
【0111】
【発明の効果】本発明に係る第1の実施形態のSIMD
型マイクロプロセッサ2においては、PEに関して2の
べき乗個毎のセグメントに分割し、そのセグメントを貫
通するデータバスを利用する。このことにより、同時に
多数個間のPEでのデータ転送が可能となり、総和値、
ピーク値といったSIMDプロセッサが本来苦手として
いる演算を少ないサイクル数で行うことができる。
【0112】本発明に係る第2の実施形態のSIMD型
マイクロプロセッサ2においては、セグメント同士の接
続部の前後のPE間にて、データ転送を行うデータ転送
経路を設けている。このことにより、PEレジスタを使
わずにPE間のデータ転送を行うことができ、第1の実
施形態のSIMD型マイクロプロセッサ2よりも少ない
サイクル数で演算を行うことができる。
【0113】本発明に係る第3の実施形態のSIMD型
マイクロプロセッサ2においては、PEに関して2のべ
き乗個毎のセグメントに分割し、そのセグメントを貫通
するデータバスを利用するのであるが、そのデータバス
から直接に信号(値)を各PEのALUに入力して演算
を行うことができる。このことにより、第1の実施形態
及び第2の実施形態のSIMD型マイクロプロセッサ2
よりも少ないサイクル数で演算を行うことができる。
【0114】本発明に係る第4の実施形態のSIMD型
マイクロプロセッサ2においては、PEに関して2のべ
き乗個毎のセグメントに分割し、そのセグメントを貫通
するデータバスを用いたデータ転送速度を、より高速化
することができる。
【0115】本発明に係る第5の実施形態のSIMD型
マイクロプロセッサ2においては、上記の第4の実施形
態のSIMD型マイクロプロセッサ2におけるデータバ
スのデータ転送速度を更に高速化できる。
【0116】本発明に係る第6の実施形態のSIMD型
マイクロプロセッサ2においては、レジスタに無効なデ
ータが格納されているPEに関して、予め演算対象から
除外することが可能となる。よって、マイクロプロセッ
サに対する適切なプログラムを作成し使用することによ
って最適な特性値を求めることができる。
【図面の簡単な説明】
【図1】 本発明に係るSIMD型マイクロプロセッサ
の概略の構成を示すブロック図である。
【図2】 本発明に係るSIMD型マイクロプロセッサ
の更に詳細な構成を示すブロック図である。
【図3】 本発明に係る第1の実施形態のSIMD型マ
イクロプロセッサの詳細な構成を示すブロック図であ
る。
【図4】 本発明に係る第2の実施形態のSIMD型マ
イクロプロセッサの詳細な構成を示すブロック図であ
る。
【図5】 本発明に係る第3の実施形態のSIMD型マ
イクロプロセッサの詳細な構成を示すブロック図であ
る。
【図6】 第1の実施形態のSIMD型マイクロプロセ
ッサにおける総和値計算の処理(の前半部)において、
各PEのレジスタに格納される値の変遷を図示してい
る。
【図7】 第1の実施形態のSIMD型マイクロプロセ
ッサにおける総和値計算の処理(の後半部)において、
各PEのレジスタに格納される値の変遷を図示してい
る。
【図8】 第2の実施形態のSIMD型マイクロプロセ
ッサにおける総和値計算の処理(の後半部)において、
各PEのレジスタに格納される値の変遷を図示してい
る。
【図9】 第3の実施形態のSIMD型マイクロプロセ
ッサにおける総和値計算の処理において、各PEのレジ
スタに格納される値の変遷を図示している。
【図10】 本発明に係る第4の実施形態のSIMD型
マイクロプロセッサの共通データバスに係る部位の構成
を示す部分ブロック図である。
【図11】 本発明に係る第5の実施形態のSIMD型
マイクロプロセッサの共通データバスに係る部位の構成
を示す部分ブロック図である。
【図12】 本発明に係る第6の実施形態のSIMD型
マイクロプロセッサにて備えられる、条件レジスタ設定
のための比較器の構成を図示する部分ブロック図であ
る。
【符号の説明】
2・・・SIMD型マイクロプロセッサ、3・・・プロ
セッサエレメント、4グローバルプロセッサ、6・・・
レジスタファイル、8・・・演算アレイ、36・・・1
6ビットALU、38・・・Aレジスタ、46・・・条
件レジスタ、48・・・比較器、50・・・共通データ
バス、56・・・接続器、76・・・第2の共通データ
バス、78・・・第2の接続器、80・・・バス接続制
御部、98・・・コンパレータ。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数のデータを同時に処理するための複
    数のプロセッサエレメントを有するSIMD型マイクロ
    プロセッサにおいて、 全てのプロセッサエレメントを接続するが、少なくとも
    2個以上のプロセッサエレメントを含むセグメントによ
    り分割されうる、第1のデータバスを備え、 上記第1のデータバスのセグメントの分割は、接続部分
    が制御されることによって変更され、 上記第1のデータバスと各プロセッサエレメントに備わ
    る演算レジスタとの間に、データ入出力のための経路が
    備えられ、 そのデータ入出力は、各プロセッサエレメントに備わる
    条件レジスタの値により制御される、 SIMD型マイクロプロセッサ。
  2. 【請求項2】 上記第1のデータバスを分割して形成さ
    れる各セグメントの接続部分を挟む、接続部分両側のプ
    ロセッサエレメントにおいて、 一方のプロセッサエレメントの演算レジスタの値を、他
    方のプロセッサエレメントの算術論理演算器に入力する
    経路が設定されている、 請求項1に記載のSIMD型マイクロプロセッサ。
  3. 【請求項3】 複数のデータを同時に処理するための複
    数のプロセッサエレメントを有するSIMD型マイクロ
    プロセッサにおいて、 全てのプロセッサエレメントを接続するが、少なくとも
    2個以上のプロセッサエレメントを含むセグメントによ
    り分割されうる、第1のデータバスを備え、 上記第1のデータバスのセグメントの分割は、接続部分
    が制御されることによって変更され、 各プロセッサエレメントに備わる演算レジスタからデー
    タを上記第1のデータバスに出力する経路が備えられ、 上記第1のデータバスからデータが各プロセッサエレメ
    ントの算術論理演算器に入力する経路が備えられ、 各プロセッサエレメントに備わる演算レジスタから上記
    第1のデータバスへのデータの出力は、各プロセッサエ
    レメントに備わる条件レジスタの値により制御され、 各プロセッサエレメントはマルチプレクサを有し、上記
    第1のデータバスからのデータが各プロセッサエレメン
    トの算術論理演算器に入力されるか否かが、該マルチプ
    レクサによって選択される、 SIMD型マイクロプロセッサ。
  4. 【請求項4】 上記第1のデータバスが、プリチャージ
    ドバスであり、 各セグメントを分割する媒介として、トランスミッショ
    ンゲート若しくはパストランジスタが用いられている、 請求項1乃至請求項3に記載のSIMD型マイクロプロ
    セッサ。
  5. 【請求項5】 各プロセッサエレメントに、識別のため
    の整数番号が順に付されており、 SIMD型マイクロプロセッサに対する命令において上
    記識別番号の範囲が指定されると、 その範囲の識別番号が付されているプロセッサエレメン
    トにて備わる条件レジスタの格納する値が、設定され
    る、 請求項1乃至請求項4に記載のSIMD型マイクロプロ
    セッサ。
JP2001001424A 2001-01-09 2001-01-09 プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ Pending JP2002207706A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001001424A JP2002207706A (ja) 2001-01-09 2001-01-09 プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001001424A JP2002207706A (ja) 2001-01-09 2001-01-09 プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ

Publications (1)

Publication Number Publication Date
JP2002207706A true JP2002207706A (ja) 2002-07-26

Family

ID=18870064

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001001424A Pending JP2002207706A (ja) 2001-01-09 2001-01-09 プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP2002207706A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267615A (ja) * 2004-02-16 2005-09-29 Matsushita Electric Ind Co Ltd 並列演算プロセッサ
JP2007200090A (ja) * 2006-01-27 2007-08-09 Renesas Technology Corp 半導体演算処理装置
US8219783B2 (en) 2007-07-04 2012-07-10 Ricoh Company, Ltd. SIMD type microprocessor having processing elements that have plural determining units
JP2012190389A (ja) * 2011-03-14 2012-10-04 Ricoh Co Ltd プロセッサ装置及びその演算方法
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
US20230229450A1 (en) * 2018-02-23 2023-07-20 Untether Ai Corporation Computational memory

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267615A (ja) * 2004-02-16 2005-09-29 Matsushita Electric Ind Co Ltd 並列演算プロセッサ
JP4698242B2 (ja) * 2004-02-16 2011-06-08 パナソニック株式会社 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置
JP2007200090A (ja) * 2006-01-27 2007-08-09 Renesas Technology Corp 半導体演算処理装置
US8219783B2 (en) 2007-07-04 2012-07-10 Ricoh Company, Ltd. SIMD type microprocessor having processing elements that have plural determining units
JP2012190389A (ja) * 2011-03-14 2012-10-04 Ricoh Co Ltd プロセッサ装置及びその演算方法
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
US20230229450A1 (en) * 2018-02-23 2023-07-20 Untether Ai Corporation Computational memory
US11941405B2 (en) 2018-02-23 2024-03-26 Untether Ai Corporation Computational memory

Similar Documents

Publication Publication Date Title
US5473554A (en) CMOS multiplexor
US4943916A (en) Information processing apparatus for a data flow computer
JP4913685B2 (ja) Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
JP2006012182A (ja) データ処理システムとその方法
JPH07287567A (ja) 複数の独立区分と各区分からの結果を記憶するレジスタとを有する算術論理装置
JPH087084A (ja) 第1、第2及び第3の入力の第1のブール組合せプラス第1、第2及び第3の入力の第2のブール組合せの和を形成する3入力算術論理装置
JPH087083A (ja) 算術及び論理混合組合せを形成する3入力算術論理装置
JPH07271969A (ja) レジスタ対から条件付きでメモリへ記憶させる装置
US5119324A (en) Apparatus and method for performing arithmetic functions in a computer system
US5053986A (en) Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US20020174325A1 (en) SIMD type microprocessor and a method of sort processing
JP2002207706A (ja) プロセッサエレメント間での総和値計算及びピーク検出を行なうsimd型マイクロプロセッサ
US20240004663A1 (en) Processing device with vector transformation execution
US5621910A (en) System for controlling instruction distribution for use in superscalar parallel processor
EP0152939B1 (en) Arithmetic operation unit and arithmetic operation circuit
US5784634A (en) Pipelined CPU with instruction fetch, execution and write back stages
JP4989899B2 (ja) 半導体演算処理装置
US6334136B1 (en) Dynamic 3-level partial result merge adder
JP2875864B2 (ja) パイプライン処理方式
JP2007108913A (ja) ピーク値検出を行うsimd型マイクロプロセッサ
JP3886314B2 (ja) データ転送回路及びその回路を用いた半導体集積回路装置
JP2002229962A (ja) 総和値とピーク値を検出するsimd型マイクロプロセッサ
US5926407A (en) Combined add/shift structure
US6057720A (en) High speed sticky signal generator
JP2008071037A (ja) Simd型マイクロプロセッサ