JP2003216590A - Simd型プロセッサ及びその最大値算出方法 - Google Patents

Simd型プロセッサ及びその最大値算出方法

Info

Publication number
JP2003216590A
JP2003216590A JP2002012284A JP2002012284A JP2003216590A JP 2003216590 A JP2003216590 A JP 2003216590A JP 2002012284 A JP2002012284 A JP 2002012284A JP 2002012284 A JP2002012284 A JP 2002012284A JP 2003216590 A JP2003216590 A JP 2003216590A
Authority
JP
Japan
Prior art keywords
bit
result
data
processor
holding unit
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
JP2002012284A
Other languages
English (en)
Inventor
Takao Katayama
貴雄 片山
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 JP2002012284A priority Critical patent/JP2003216590A/ja
Publication of JP2003216590A publication Critical patent/JP2003216590A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【課題】複数SIMD分の処理でのピーク値の検出を最
小のハードウェアの追加で少ないステップ数で処理でき
るSIMD型プロセッサを提供する。 【解決手段】 グローバルプロセッサ2と、複数のプロ
セッサエレメント3aと、を備えたSIMD型プロセッ
サにおいて、前記プロセッサエレメントの演算結果を格
納するTレジスタ36と、前記プロセッサエレメントの
3aTレジスタ36に対応したビットを有する結果値保
持部22と、次回の演算の実行条件に使用する演算制御
結果を格納する前回値保持部21と、を備え、前記プロ
セッサエレメント3aのTレジスタの該当するビットの
論理和を採りその結果と前回保持部21の対応するデー
タとの論理和を採り、その値を前記結果保持部22に転
送して、前記結果保持部22のデータに基づいて最大値
または最小値を求める。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は画像データを高速処理
するために同一の命令で複数データに対して同じ処理を
行うSIMD(Single Instruction
−stream Multiple Data−str
eam)方式のプロセッサに関する。
【0002】近年、デジタル複写機やファクシミリ装置
等の画像処理では、画素数の増加、画像処理の多様化な
どにより画質の向上が図られている。こういった画像処
理には複数のデータに対して同じ処理をすることが多
く、高速性を高めるため、1命令で1つのデータを処理
するSISD(Single Instruction
−stream Single Data−strea
m)方式のプロセッサより、1命令で複数のデータを同
時処理するSIMD(Single Instruct
ion−stream Multiple Data−
stream)方式のプロセッサが用いられることが多
い。
【0003】図1に、SIMD型プロセッサの全体構成
を示す。図1に示すように、SIMD型プロセッサは、
グローバルプロセッサ2、例えば256個のPEからな
るプロセッサエレメントブロック3、外部メモリなどに
接続される外部入出力インタフェース4などから構成さ
れる。外部入出力インタフェース4を介して演算データ
がプロセッサエレメント内部の入出力レジスタに入出力
される。
【0004】プロセッサエレメントブロック3は、AL
U(算術論理演算器)を備えた演算アレイ40とレジス
タファイル31を備えたプロセッサエレメント(Pro
cessor Element)(以下、PEとい
う。)複数個装備し、複数のデータを一度に処理する。
PEには算術論理演算に利用する汎用レジスタが装備さ
れており、汎用レジスタのデータとレジスタファイルの
演算、汎用レジスタのデータと命令コード中に記述され
た数値データとの演算等を行う。
【0005】グローバルプロセッサ2(以下、GPとい
う。)は、いわゆるSISD(Single Inst
ruction−Stream,Single Dat
a−Stream)タイプのプロセッサであり、命令コ
ードを格納するプログラムメモリ、プログラムメモリ中
の命令コードを読み出し、解読し、出力された制御信号
によってプロセッサを制御するシーケンシャルユニット
(以下、SCUという)と、データを格納するメモリで
あるデータメモリ、各種レジスタ、算術演算処理装置を
備える。そしてグローバルプロセッサ2は、プログラム
を解読し、各種制御信号を生成する。この制御信号は内
蔵する各種ブロックの制御以外にもプロセッサエレメン
トブロック3を構成するレジスタファイル31、演算ア
レイ40に供給される。また、GP(グローバルプロセ
ッサ)命令実行時は内蔵する汎用レジスタ、ALU(算
術論理演算器)等を使用して各種演算処理、プログラム
制御処理を行う。
【0006】上記したレジスタファイル31は、PE
(プロセッサエレメント)命令で処理されるデータを保
持している。PE命令はSIMD(Single In
struction−Stream,Multiple
Data−Stream)タイプの命令であり、レジ
スタファイル31に保持されている複数のデータを同時
に同じ処理を行う。このレジスタファイル31からのデ
ータの読み出し/書き込みの制御はグローバルプロセッ
サ2からの制御によって行われる。読み出されたデータ
は演算アレイ40に送られ、演算アレイ40での演算処
理後にレジスタファイル31に書き込まれる。
【0007】演算アレイ40は、PE命令の演算処理を
行う。処理の制御はすべてグローバルプロセッサ2から
行われる。
【0008】SIMD型プロセッサは通常1クロックサ
イクルで1命令を処理するが、1命令でPEの個数分の
データを一度に処理することができる。SIMDプロセ
ッサの性能を表すには、SIMDプロセッサの動作周波
数やPEの個数つまり1命令で処理できるデータの数な
どが重要であるが、命令サイクル数も重要となる。つま
り同じ画像処理を行うのに1命令サイクルでも少ないほ
うが性能がよいとされる。1命令で複雑な処理を行おう
とすれば、複雑な処理を行うための回路が必要となり、
コストが増大する。
【0009】また、SIMD型プロセッサは画像処理に
用いられることが多いが、多種の画像処理の中で、全て
の画素データの中で最大あるいは最小となる値を画像処
理の計算式で用いることがある。最大値あるいは最小値
を求める処理をピーク検出ともいう。ピーク値を求める
方法が色々と提案されている。
【0010】特許第2969115号には、SIMD方
式のプロセッサにおいて、最大値プロセッサと最小値プ
ロセッサのアドレスを検出する手法が示されている。算
出はプロセッサ間の比較方式でステップ数がPE数だけ
必要となる。この発明では全PEでのビット毎の論理和
で算出するためデータの最大ビット数がステップ数とな
る。
【0011】また、特開平8−14816号公報には、
全プロセッサエレメントの出力に木構造の演算器を設
け、トーナメント式に最大値・最小値を算出する手法が
示されている。この方法では、命令ステップでは最小と
なるが、莫大なハードウェアが必要となるという難点が
ある。
【0012】特開平8−30577号公報には、プロセ
ッサエレメントの数だけのバスが用意され、プロセッサ
エレメントからの出力が任意のプロセッサエレメントの
入力として使用し、プロセッサエレメント内の演算器を
使用して比較により最大値を求める手法が示されてい
る。この方法では、ハードウェアの追加が少なくて済
み、アルゴリズムも簡単だが、バス配線が多くなるとい
う難点がある。
【0013】
【発明が解決しようとする課題】ところで、最大値ある
いは最小値を求める処理においては、バイナリサーチが
高速にピーク値を求める処理として知られている。
【0014】バイナリサーチは、例えばデータのサイズ
が8ビットであった場合、符号なしの最大値は255と
なるが、その半分の128と全PEのデータと同時に比
較し、1個以上128よりも大きい値があれば、該当す
るPEのみ次回の比較を128+64=192と行い、
128よりも大きい値が無ければ次回の比較を128−
64=64と行う。次に、192もしくは64と全PE
のデータと同時に比較し、例えば192と比較した場
合、1個以上192より大きい値があれば該当するPE
のみさらに次回の比較を192+32=224と行い、
128より大きい値が無ければされに次回の比較を19
2−32=160と行う。これを比較値の加算もしくは
減算値が1になるまで行うものである。
【0015】上記した以外にも特開平5−100824
号公報に開示されているピーク検出がある。この検出方
法では、2進データの最上位ビットから“1”が1個以
上あれば比較結果判定フラグに“1”を格納し、0個で
あれば“0”を格納し、次回の演算に比較結果判定フラ
グの結果の状態で、比較を行うかどうかを指定し、つま
りビットが進むにつれ比較対照となるPEが減少し、全
ビット分繰り返した結果比較判定フラグに“1”が残っ
たものがピーク値となる。
【0016】上記したいずれの方法においても複数SI
MD分の処理(例えば、PEの数が256個あった場
合、1SIMDで256個のデータが一度に処理でき
る。2SIMDでは合計512個のデータを処理でき
る。)のデータがあった場合、前SIMDのピーク値を
グローバルプロセッサの汎用レジスタに保持し、現SI
MDでの最大値検出が終わった後、保持された前回のピ
ーク値と現在のピーク値との比較を行う処理を必要とす
るために処理のステップ数が多くなるなどの難点があ
る。
【0017】この発明は、上記した従来の問題点に鑑み
なされたものにして、複数SIMD分の処理でのピーク
値の検出を最小のハードウェアの追加で少ないステップ
数で処理できるSIMD型プロセッサを提供することを
課題としている。
【0018】
【課題を解決するための手段】この発明のSIMD型プ
ロセッサは、プログラムを解読しプロセッサ全体を制御
するグローバルプロセッサと、複数データを処理するた
めのレジスタファイルと演算部とを有する複数のプロセ
ッサエレメントと、を備えたSIMD型プロセッサにお
いて、前記プロセッサエレメントの演算結果を格納する
演算制御レジスタと、前記プロセッサエレメントの演算
制御レジスタに対応したビットを有する結果値保持部
と、次回の演算の実行条件に使用する演算制御結果を前
記結果保持部の各ビット位置に対応して格納する前回値
保持部と、を備え、前記プロセッサエレメントの演算制
御レジスタの該当するビットの論理和を採りその結果と
前回保持部の対応するデータとの論理和を採り、その値
を前記結果保持部に転送して、前記結果保持部のデータ
に基づいて最大値または最小値を求めることを特徴とす
る。
【0019】前記演算制御レジスタの最上位ビットから
順次最下位ビットまで動作を繰り返し、前記結果保持部
のデータを書き換えて最大値を求めることができる。
【0020】前記の構成によれば、全プロセッサエレメ
ント(PE)の演算制御レジスタ(Tレジスタ)と最大
値算出するための前回値保持手段を持ち、全PEのTレ
ジスタと前回値保持手段と接続された、結果値保持手段
に、全PEのTレジスタと最大値算出装置の前回値保持
手段との論理和を格納できる構成をもつため、全PEの
データからTレジスタの状態によって、結果値保持手段
にデータを作成することができる。この結果、最大値ま
たは最小値を少なく簡単なハードウェアの追加で求める
ことができる。
【0021】また、この発明の最大値算出方法は、上記
に記載のSIMD型プロセッサを用い、前記結果値保持
部を初期化する第1ステップ、前記結果値保持部から前
記前回値保持部にデータ転送する第2ステップ、最大値
算出対象データをプロセッサエレメントブロックのレジ
スタファイルに読込む第3ステップ、全プロセッサエレ
メントの演算制御レジスタに“80h”を設定する第4
ステップ、前記演算制御レジスタの7ビット目の状態を
参照し、“1”であれば入力データと“80h”の論理
積を採り、ゼロ検出を行い前記演算制御レジスタの7ビ
ット目T7に格納し、“0”であれば前記演算制御レジ
スタの7ビット目に対してデータ更新を行わないように
動作させる第5ステップ、全プロセッサエレメントの前
記演算制御レジスタの7ビット目と前回値保持部の7ビ
ット目の論理和を採り、結果を結果保持部の7ビット目
に格納する第6ステップ、結果保持部の7ビット目の状
態を判定し、“0”であれば全プロセッサエレメントの
前記演算制御レジスタの7ビット目を“1”に設定し、
“1”であれば前記演算制御レジスタの7ビット目に対
してのデータ更新は行わないように動作させる第7ステ
ップ、前記演算制御レジスタのiビット目の状態を参照
し、“1”であればレジスタファイルと対象ビットのみ
“1”でありの残りのビットが“0”の8ビットデータ
との論理積を採り、ゼロ検出を行い前記演算制御レジス
タのiビットに格納し、“0”であれば前記演算制御レ
ジスタのiビットに対してデータ更新をしないように動
作させる第8ステップ、全プロセッサエレメントの前記
演算制御レジスタのiビット目と前回値保持部のiビッ
ト目の論理和を採り、結果を結果保持部のiビット目に
格納するように動作させる第9ステップ、結果保持部の
iビットの状態を判定し、“0”であれば全プロセッサ
エレメントの前記演算制御レジスタのi+1ビット目を
“1”に設定し、“1”であれば前記演算制御レジスタ
のi+1ビット目に対してのデータ更新は行わないよう
に動作する第10ステップと、前記第8ないし第10ス
テップを前記演算制御レジスタの全てのビット数が終了
するまで繰り返した後、SIMDデータの全てのデータ
がなくなるまで前記第2ステップ以降の動作を繰り返
し、前記結果保持部に格納されたデータを読み出すこと
を特徴とする。
【0022】従来の方法であれば最大値を求めるために
莫大なハードウェアを追加して最大値を求めたり(特許
第2969115号、特開平8−14816号公報参
照)、すべてのPE間を接続したり(特開平8−305
77号公報参照)していたが、これらはコストが増大す
る。また、最大値を持つPEの位置の算出のみで実際の
最大値を算出するために全PEから最大値を取り出す処
理、もしくはハードウェアの追加を必要とするなどの難
点があったが、上記の方法を用いれば、複数SIMDデ
ータの符号付き最大値・最小値、符号付きデータの最大
値・最小値が少なく簡単なハードウェアの追加で求める
ことができる。
【発明の実施の形態】以下、この発明の実施形態につき
図2ないし図4を参照して説明する。この発明のSIM
Dプロセッサの全体構成は図1に示すものと同様であ
る。主にプロセッサ全体を制御するグローバルプロセッ
サ2と、主に外部入出力インタフェース4からデータを
入力し、データ処理を行い外部入出力装置に出力するプ
ロセッサエレメント3aから構成される。プロセッサエ
レメント3aは複数データを処理するために複数用意さ
れている。この実施形態では、例として1つのグローバ
ルプロセッサ2と256個のプロセッサエレメント3a
で構成されたプロセッサエレメントブロックとでSIM
Dプロセッサを構成している。
【0023】図2は、この発明の実施形態を示すブロッ
ク図である。尚、図2のプロセッサエレメントはこの発
明の説明に必要な最小限の構成としている。
【0024】このグロバールプロセッサ2には、このプ
ロセッサのプログラム格納用のプログラムRAMと演算
データ格納用のデータRAMが内蔵されている。さら
に、プログラムのアドレスを保持するプログラムカウン
タ(PC)、演算処理のデータ格納のための汎用レジス
タであるG0〜G3レジスタ、レジスタ退避、復帰時に
退避先データRAMのアドレスを保持しているスタック
ポインタ(SP)、サブルーチンコール時にコール元の
アドレスを保持するリンクレジスタ(LS)、同じくI
RQ時とNMI時の分岐元アドレスを保持するLI、L
Nレジスタ、プロセッサの状態を保持しているプロセッ
サステータスレジスタ(P)が内蔵されている。
【0025】これらのレジスタと図示していない命令デ
コーダ、算術論理回路(ALU)、メモリ制御回路、割
り込み制御回路、外部I/O制御回路、GP演算制御回
路を使用してGP命令の実行が行われる。
【0026】また、PE命令実行時は命令デコーダ、図
示していないレジスタファイル制御回路、PE演算制御
回路を使用して、レジスタファイルの制御と演算アレイ
の制御を行う。
【0027】図2に示すように、プロセッサエレメント
(PE)3aの構成は、外部からの入出力データを一時
的に保持するレジスタファイル31とPE3a内でAL
Uと呼ばれる算術論理演算、ビット演算等のデータ処理
を行うための演算ユニット30からなる。演算ユニット
が複数集まったものが図1の演算アレイとなる。レジス
タファイル31は例として、R0〜R31までの8ビッ
トのレジスタを32個図示している。これらのうちの指
定の1つのレジスタのデータを演算ユニット30に転送
したり、演算ユニット30から転送したデータを所定の
1つのレジスタに格納したりする。レジスタファイル3
1の1つのレジスタは例として8ビットで表記してい
る。つまり同時に外部入出力から入力された複数の8ビ
ットのデータを同時にレジスタファイル31に格納し、
同時に演算ユニット30で演算した結果を同時にレジス
タファイル31に格納し、同時に外部入出力インタフェ
ース4に出力するのがSIMDの主な使用方法となる。
【0028】演算ユニット30についてさらに説明す
る。演算ユニット30には2入力のALU34が備わ
り、2入力のうちの1つがAレジスタ35から第1保持
回路37に転送されたのデータ、もう1つはレジスタフ
ァイル31から第2保持回路38に転送されたデータと
なる。また、図示していないが、命令オペランド中に記
述された値で即値がグローバルプロセッサに含まれる命
令デコーダから即値部分を抜き出し、第1保持回路37
あるいは第2保持回路38に転送することができ、つま
りAレジスタ35の値と即値の演算、もしくは即値とレ
ジスタファイル31の指定の1レジスタの値との演算も
可能である。
【0029】ALU34で行われた演算の結果で比較の
結果をTレジスタと呼ばれる演算制御レジスタ36の1
ビットに転送することができる。比較の条件は例えば2
つのデータの、大小、等、不等などである。真であれば
“1”が、偽であれば“0”が格納される。
【0030】Tレジスタ36は例えば8ビット用意した
場合、8個の演算条件設定ができる。各ビットは図2で
はT0〜T7となる。Tレジスタの指定の1ビットの値
を参照し、ALU34での演算結果をAレジスタ35に
書き込むか、書き込まないかの制御をする。例えば
“1”あればAレジスタ35への書き込みを行い、
“0”であれば行わないといった制御を行う。これによ
って一部のプロセッサエレメント3aのALU34での
実行結果を変えることができる。
【0031】全てのPE3a…のTレジスタ36の各ビ
ットは、グローバルプロセッサ2の指定のフラグに接続
されている。指定のTn(n=0,1,…,7)を全P
E3a…で論理和を採り、グローバルプロセッサ2の指
定のフラグに結果を格納する。また、全PE3a…のT
レジスタ36の各ビットは、最大値算出装置20の結果
値保持部21にも接続されており、同じく指定のTn
(n=0,1,…,7)を全PE3a…で論理和を採
り、結果値保持部22のLnに結果を格納する。結果値
保持部22(L)のデータは前回値保持部21(K)に
各ビット位置を対応させて転送するように接続されてい
る。また、TnとKnは全PE3a…で論理和をとる際
に共に論理和をとるように接続されている。例えば6番
目のTフラグであるT6とK6との論理和を行った場
合、は以下のようになる。
【0032】(PE0のT6)OR(PE1のT6)O
R … OR(PE255のT6)ORK6→L6
【0033】この発明の構成を採用したときの1つのS
IMDプロセッサでの処理手順を図3に示す。この図3
に従い1つのSIMDプロセッサでの処理について説明
する。
【0034】(前準備(図4のST1,ST2,ST3
に相当))最大値算出装置20の結果値保持部22のL
レジスタに“0”を転送し、最大値算出装置20の前回
値算出部21のKレジスタに結果値保持部22のLレジ
スタの“0”を転送する(初期化する)。結果値保持部
22にはGP2での命令のデコードの際生じる、即値を
直接転送するPATHを設ける必要がある。結果値保持
部22から前回値保持部21にデータを転送するPAT
H以外にも、直接命令の即値を転送するPATHを設け
ても良い。
【0035】前準備が終わると、ステップ(ST5−
1)において、全PE3a…のTレジスタ36に“80
h”をセットする。Tレジスタ36は1ビットずつが実
行条件判定となっている。命令で指定した1ビットを参
照し、その状態を参照して“1”であればALU34の
演算結果をAレジスタ35に格納し、演算結果のゼロ検
出をTレジスタ36に格納する。“0”であれば演算結
果とゼロ検出結果をそれぞれAレジスタ35とTレジス
タ36に格納しない(前回の値のままとなる)。“80
h”にセットしたのは最初に参照するTレジスタ36の
1ビットがT7であり、“1”であるので、初回は全て
のPE3a…で演算を行い、Aレジスタ35とTフラグ
36に結果が格納されることになる。
【0036】続いて、ステップ(ST5−2)におい
て、外部入出力インタフェース4からレジスタファイル
31に転送されたデータと0ビットから7ビットまでの
8ビットデータのうち、7ビット目が“1”のデータ、
16進数で表記すると“80h”とデータの入力されて
いるRj(j=0〜31)レジスタのデータの論理積
(AND)を採り、ALU34でゼロ検出を行う。ゼロ
であるPE3aでは、“1”をT7に格納する。ゼロで
ないPE3aでは“0”をT7に格納する。
【0037】次に、ステップ(ST5−3)において、
全PE3a…のT7(PE毎の指定されたRjの値によ
って結果が変わる。Rjの最上位ビットの7ビット目が
“1”のPE3aでは、T7は“1”、“0”のPE3
aでは、T7は“0”となっている)と前回値保持部2
1のK7(初期設定で“0”となっている)の論理和
(OR)演算を行い、結果を結果保持部22のL7に格
納する。1個以上の“1”があればL7は“1”となる
が、なければ“0”となる。
【0038】そして、ステップ(ST5−4)におい
て、結果値保持部22のL7の状態を判定し、L7が
“0”であった場合、ステップ(ST−5)へ進み、全
PE3a…のT7に“1”をセットする。また、ステッ
プ(ST5−4)において、結果値保持部22のL7の
状態を判定し、L7が“1”であった場合には、ステッ
プ(ST5−6)へ進む。
【0039】以上のステップ(ST5−1)〜ステップ
(ST5−5)で7ビット目の結果が、結果値保持部2
2L7にセットされる。
【0040】続いて、ステップ(ST5−6)〜ステッ
プ(ST5−11)まではステップ(ST5−2)〜ス
テップ(ST5−5)と同じことをビット6〜0につい
て行っている。違いはステップ(ST5−5)とステッ
プ(ST5−10)であり、6〜0ビットまでに関して
のステップ(ST5−10)においては前回結果をTi
に転送している。即ち、ステップ(ST5−6)とステ
ップ(ST5−11)において、ビット6〜0を処理す
るためのループが設定される。そして、ステップ(ST
5−7)において、外部入出力インタフェース4からレ
ジスタファイル31に転送されたデータとiビットの
み”1”で他のビットが”0”とデータの入力されてい
るRj(j=0〜31)レジスタのデータの論理積(A
ND)を採り、ALU34でゼロ検出を行う。ゼロであ
るPE3aでは、“1”をTiに格納する。ゼロでない
PE3aでは“0”をTiに格納する。
【0041】次に、ステップ(ST5−8)において、
全PE3a…のTiと前回値保持部21のKiの論理和
(OR)演算を行い、結果を結果保持部22のL7に格
納する。1個以上の“1”があればLiは“1”となる
が、なければ“0”となる。
【0042】そして、ステップ(ST5−9)におい
て、結果値保持部22のLiの状態を判定し、Liが
“0”であった場合、ステップ(ST−10)へ進み、
全PE3a…のTi+1に前回結果をTiをセットす
る。また、ステップ(ST5−9)において、結果値保
持部22のLiの状態を判定し、Liが“1”であった
場合には、ステップ(ST5−11)へ進み、ビット6
〜0について処理が繰り返される。
【0043】図4は複数SIMDのデータの最大値を求
める場合のフローである。図3の1つのSIMDの場合
をSIMD分だけ繰り返すことになる。
【0044】ステップ(ST1)において、前述した図
3に示す1つのSIMDの場合のフローの前準備に当た
る処理を行う。即ち、最大値算出装置20の結果値保持
部22のLレジスタに“0”を転送し初期化する。これ
は全体の処理が始まる最初だけ行われる。
【0045】続いて、ステップ(ST2,ST6)にて
ループを設定し、ステップ(ST3)〜ステップ(ST
5)までの処理を繰り返す。1つのSIMDでは256
個のデータを同時処理できるため、例えば10SIMD
では2560個のデータを処理できる。ステップ(ST
3)では、最大値算出装置20の結果値保持部22のデ
ータを前回値保持部21のレジスタに転送する。
【0046】そして、ステップ(ST4)において、外
部入出力インタフェース4から最大値を求めるためのデ
ータをRレジスタ31に転送する。フローチャートでは
4番目に記述しているが、1つのSIMDの最大値算出
が始まるまでに設定されていれば良い。
【0047】続いて、ステップ(ST5)において、前
述した図3の通りの1つのSIMDの時の処理を行う。
データがなくなるまでループを繰り返し、ループが終了
するとステップ(ST7)に進む。
【0048】ステップ(ST7)において、最大値を求
める。上記のステップ(ST1)〜ステップ(ST6)
までの処理が終了したときの結果保持部22のLレジス
タの値がすべてのデータの最大値となる。
【0049】この発明の構成で最小値を求める場合は、
図2の演算ユニット30の第2の保持回路38もしくは
出力に排他的論理和(XOR)を挿入し、片側の入力が
Rレジスタのデータ、もう片側がグローバルプロセッサ
2からのコントロール信号とすれば良い。コントロール
信号が“0”の場合は通常演算とし、“1”の場合反転
入力とするように構成すれば良い。XORを挿入しない
場合はALU34にてRレジスタのデータと“FFh”
とのXOR命令を実行し、結果を別のRレジスタに格納
し最大値算出に使用すれば良い。これであれば回路を追
加する必要がないが、1ステップ命令を実行しなければ
いけない。反転データは、以下の通りとなる。
【0050】 元データ 反転データ FFh → 00h FEh → 01h … … … 01h → FEh 00h → FFh
【0051】上記のことから、最小値を求めるには最大
値の反転の最大値を求めれば良いことは明らかである。
【0052】そして、最終のデータは最大値算出装置2
0のLレジスタに保持されていて、その反転が全データ
の最小値となる。
【0053】また、この発明の構成で符号付きデータの
最大値の算出も可能である。この場合は、図2の演算ユ
ニット30の第2の保持回路38の入力もしくは出力の
最上位ビット(MSB)の7ビット目にXORを挿入
し、片側の入力がRレジスタの7ビット目のデータ、も
う片側がグローバルプロセッサからのコントロール信号
とすれば良い。コントロール信号が“0”の場合は通常
演算とし、“1”の場合反転入力とするように構成すれ
ば良い。XORを挿入しない場合はALU34にてRレ
ジスタのデータと“80h”とのXOR命令を実行し、
結果を別のRレジスタに格納し最大値算出に使用すれば
よい。これであれば回路を追加する必要がないが、1ス
テップ命令を実行しなければいけない。反転データは、
以下の通りとなる。
【0054】 元データ MSB反転データ 7Fh → FFh 7Eh → FEh … … … FFh(−1) →7Fh FEh(−2) →7Eh … … … 81h(−7fh)→01h 80h(−80h)→00h
【0055】上記のように、MSB反転データの最大値
を求め、最終のデータは最大値算出装置のLレジスタに
保持されていて、そのMSB反転が全データの符号付き
の最大値となる。
【0056】因みに符号付きの最小値は、前述までの組
み合わせで容易に算出でき、前述の最小値を求める際の
構成で、MSBのXORのコントロール信号を“0”、
その他の7ビットのコントロール信号を“1”にすれば
良い。XORを挿入しない場合はALUにてRレジスタ
のデータと“7Fh”とのXOR命令を実行し、結果を
別のRレジスタに格納してもよい。求めた最大値のLレ
ジスタの値に対して“7Fh”をXOR演算すると結果
の符号付きの最小値となる。
【0057】尚、図2に示した実施形態においては、グ
ローバルプロセッサ2内に最大値算出装置20を設けた
構成にしているが、グローバルプロセッサ2内部に最大
値算出装置20を必ずしも設ける必要はなく、最大値算
出装置20をグローバルプロセッサ2の外部に設け、グ
ローバルプロセッサ2とプロセッサエレメント3aと最
大値算出装置20とをバスで接続してデータの送受を行
うように構成してもよい。
【0058】
【発明の効果】以上説明したように、この発明のSIM
D型プロセッサは、全PEの演算結果レジスタ(Tレジ
スタ)と最大値算出のための前回値保持手段を持ち、全
PEのTレジスタと前回値保持手段と接続された、結果
値保持手段に、全PEのTレジスタと最大値算出装置の
前回値保持手段との論理和を格納できる構成をもつた
め、全PEのデータからTレジスタの状態によって、結
果値保持手段にデータを作成することができ、複数SI
MDデータの符号付き最大値・最小値、符号付きデータ
の最大値・最小値が少なく簡単なハードウェアの追加で
求めることができる。
【図面の簡単な説明】
【図1】SIMD型プロセッサの全体構成を示すブロッ
ク図である。
【図2】この発明の実施形態を示すブロック図である。
【図3】1つのSIMDのデータの最大値を求める場合
の動作を示すフロー図である。
【図4】複数SIMDのデータの最大値を求める場合の
動作を示すフロー図である。
【符号の説明】
2 グローバルプロセッサ 3 プロセッサエレメントブロック 3a プロセッサエレメント 4 外部入出力インタフェース 20 最大値算出装置 21 前回値保持部 22 結果値保持部 30 演算ユニット 31 レジスタファイル 34 ALU 35 Aレジスタ 36 Tレジスタ 40 演算アレイ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 プログラムを解読しプロセッサ全体を制
    御するグローバルプロセッサと、複数データを処理する
    ためのレジスタファイルと演算部とを有する複数のプロ
    セッサエレメントと、を備えたSIMD型プロセッサに
    おいて、前記プロセッサエレメントの演算結果を格納す
    る演算制御レジスタと、前記プロセッサエレメントの演
    算制御レジスタに対応したビットを有する結果値保持部
    と、次回の演算の実行条件に使用する演算制御結果を前
    記結果保持部の各ビット位置に対応して格納する前回値
    保持部と、を備え、前記プロセッサエレメントの演算制
    御レジスタの該当するビットの論理和を採りその結果と
    前回保持部の対応するデータとの論理和を採り、その値
    を前記結果保持部に転送して、前記結果保持部のデータ
    に基づいて最大値または最小値を求めることを特徴とす
    るSIMD型プロセッサ。
  2. 【請求項2】 前記演算制御レジスタの最上位ビットか
    ら順次最下位ビットまで動作を繰り返し、前記結果保持
    部のデータを書き換えることを特徴とする請求項1に記
    載のSIMD型プロセッサ。
  3. 【請求項3】 前記請求項1または2に記載のSIMD
    型プロセッサを用い、 前記結果値保持部を初期化する
    第1ステップ、 前記結果値保持部から前記前回値保持部にデータ転送す
    る第2ステップ、 最大値算出対象データをプロセッサエレメントブロック
    のレジスタファイルに読込む第3ステップ、全プロセッ
    サエレメントの演算制御レジスタに“80h”を設定す
    る第4ステップ、 前記演算制御レジスタの7ビット目の状態を参照し、
    “1”であれば入力データと“80h”の論理積を採
    り、ゼロ検出を行い前記演算制御レジスタの7ビット目
    T7に格納し、“0”であれば前記演算制御レジスタの
    7ビット目に対してデータ更新を行わないように動作さ
    せる第5ステップ、 全プロセッサエレメントの前記演算制御レジスタの7ビ
    ット目と前回値保持部の7ビット目の論理和を採り、結
    果を結果保持部の7ビット目に格納する第6ステップ、 結果保持部の7ビット目の状態を判定し、“0”であれ
    ば全プロセッサエレメントの前記演算制御レジスタの7
    ビット目を“1”に設定し、“1”であれば前記演算制
    御レジスタの7ビット目に対してのデータ更新は行わな
    いように動作させる第7ステップ、 前記演算制御レジスタのiビット目の状態を参照し、
    “1”であればレジスタファイルと対象ビットのみ
    “1”でありの残りのビットが“0”の8ビットデータ
    との論理積を採り、ゼロ検出を行い前記演算制御レジス
    タのiビットに格納し、“0”であれば前記演算制御レ
    ジスタのiビットに対してデータ更新をしないように動
    作させる第8ステップ、 全プロセッサエレメントの前記演算制御レジスタのiビ
    ット目と前回値保持部のiビット目の論理和を採り、結
    果を結果保持部のiビット目に格納するように動作させ
    る第9ステップ、 結果保持部のiビットの状態を判定し、“0”であれば
    全プロセッサエレメントの前記演算制御レジスタのi+
    1ビット目を“1”に設定し、“1”であれば前記演算
    制御レジスタのi+1ビット目に対してのデータ更新は
    行わないように動作する第10ステップと、 前記第8ないし第10ステップを前記演算制御レジスタ
    の全てのビット数が終了するまで繰り返した後、SIM
    Dデータの全てのデータがなくなるまで前記第2ステッ
    プ以降の動作を繰り返し、前記結果保持部に格納された
    データを読み出して複数SIMD型プロセッサの最大値
    算出を行うことを特徴とするSIMD型プロセッサの最
    大値算出方法。
JP2002012284A 2002-01-22 2002-01-22 Simd型プロセッサ及びその最大値算出方法 Pending JP2003216590A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002012284A JP2003216590A (ja) 2002-01-22 2002-01-22 Simd型プロセッサ及びその最大値算出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002012284A JP2003216590A (ja) 2002-01-22 2002-01-22 Simd型プロセッサ及びその最大値算出方法

Publications (1)

Publication Number Publication Date
JP2003216590A true JP2003216590A (ja) 2003-07-31

Family

ID=27649523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002012284A Pending JP2003216590A (ja) 2002-01-22 2002-01-22 Simd型プロセッサ及びその最大値算出方法

Country Status (1)

Country Link
JP (1) JP2003216590A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152450A (ja) * 2008-12-24 2010-07-08 Ricoh Co Ltd Simd型マイクロプロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152450A (ja) * 2008-12-24 2010-07-08 Ricoh Co Ltd Simd型マイクロプロセッサ

Similar Documents

Publication Publication Date Title
KR100348950B1 (ko) 데이타처리장치
KR100315407B1 (ko) 제2입력과제3입력의제1부울조합과제2입력과제3입력의제2부울조합의논리곱인제1입력의합을형성하는3입력산술논리유닛
KR100319353B1 (ko) 다수의독립섹션과모든섹션으로부터의레지스터저장결과표시비트를가지는산술논리유닛
KR100348951B1 (ko) 조건부레지스터쌍으로부터의메모리저장
KR100319352B1 (ko) 3입력산술논리유닛및데이타처리시스템
US5673407A (en) Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US7725736B2 (en) Message digest instruction
US5542060A (en) Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes
JP2000057111A (ja) 並列処理プロセッサ、および、並列処理方法
US7356710B2 (en) Security message authentication control instruction
US7054895B2 (en) System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
JP2635057B2 (ja) マイクロプロセッサ
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
KR100315408B1 (ko) 이동기를구비한3입력산술논리유닛
JP2005209108A (ja) メモリ外付けマイコン
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
JP2003216590A (ja) Simd型プロセッサ及びその最大値算出方法
US5121474A (en) Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory
US5349681A (en) Bit searching circuit and data processor including the same
US4977497A (en) Data processor
US20040193847A1 (en) Intra-register subword-add instructions
US20190286418A1 (en) Architecture and instruction set to support integer division
US11080054B2 (en) Data processing apparatus and method for generating a status flag using predicate indicators
JP3895267B2 (ja) Simdプロセッサ
JP3971557B2 (ja) Simdプロセッサにおけるデータ設定装置