JP4442907B2 - Simd型プロセッサ - Google Patents

Simd型プロセッサ Download PDF

Info

Publication number
JP4442907B2
JP4442907B2 JP2006259488A JP2006259488A JP4442907B2 JP 4442907 B2 JP4442907 B2 JP 4442907B2 JP 2006259488 A JP2006259488 A JP 2006259488A JP 2006259488 A JP2006259488 A JP 2006259488A JP 4442907 B2 JP4442907 B2 JP 4442907B2
Authority
JP
Japan
Prior art keywords
processor
data
register
processor element
global
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.)
Expired - Fee Related
Application number
JP2006259488A
Other languages
English (en)
Other versions
JP2006351043A (ja
Inventor
貴雄 片山
慎一 山浦
和彦 原
和彦 岩永
浩資 高藤
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 JP2006259488A priority Critical patent/JP4442907B2/ja
Publication of JP2006351043A publication Critical patent/JP2006351043A/ja
Application granted granted Critical
Publication of JP4442907B2 publication Critical patent/JP4442907B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

この発明は同一の命令で複数データに対して同じ処理を行うSIMD(Single Instruction-stream Multiple Data-stream)方式のプロセッサに関し、特に、画像データの高速処理に適したSIMD型プロセッサに関する。
近年、デジタル複写機やファクリミリ装置等における画像処理では、画素数の増加、画像処理の多様化などにより画質の向上が図られている。この画質の向上に伴い、処理すべき画素データ数の増加やデータの処理方法が複雑化している。こういった画像処理のデータ処理は複数のデータに対して同じ処理をすることが多いため、1命令で1つのデータを処理するSISD(Single Instruction-stream Single Data-stream)方式のプロセッサより、1命令で複数のデータを処理する、SIMD(Single Instruction-stream Multiple Data-stream)方式のプロセッサが用いられていることが多い。
SIMD型プロセッサは、複数のデータを処理するために算術論理演算器とレジスタファイルを備えたプロセッサエレメント(PE)と呼ばれるブロックを持ち、複数のデータを一度に処理するためにプロセッサエレメントを複数個備えている。また、SIMD型プロセッサにはプログラムによってプロセッサ全体を制御するために、プログラム解読部、制御部、算術論理演算器、レジスタ、メモリをもったグローバルプロセッサと呼ばれるブロックを1つ備える。
グローバルプロセッサからプロセッサエレメントにデータの転送を行うときには、プロセッサエレメントにシフトレジスタを設け、すべてのプロセッサエレメントのシフトレジスタをチェーン構造に接続し、プロセッサエレメントの片端をグローバルプロセッサに接続し、シフトレジスタをシフトしていくことでデータを転送したり、或いは、グローバルプロセッサからすべてのプロセッサエレメントにバスを設け、直接データを転送するようにしている。
プロセッサエレメントをシフトする場合は、全プロセッサエレメント分のシフトを行う必要がある。また、直接データを書き換える場合は、全プロセッサエレメントを書き換えるか、特定の1つのプロセッサエレメントを制御部から選択信号によって選択し、書き換えることになる。1つのプロセッサエレメントの書き換えなら1命令サイクルですむが、複数プロセッサエレメントなどでは複数命令サイクルが必要となる。
プロセッサエレメントの演算は通常実行条件フラグによって演算の有無を決定する。実行条件フラグはプロセッサエレメントの演算アレイで行われる演算の結果によりセット/リセットしたり、また、グローバルプロセッサの制御部からの制御信号により直接セット/リセットする。
従来のSIMD型プロセッサでは演算の結果によってプロセッサエレメントを書き換えるか、全プロセッサエレメントの条件フラグにデータを転送することでセット/リセットしたりしていた。しかし、プロセッサエレメントの演算が特定部分であった場合、例えばある範囲内のプロセッサエレメントを演算対象としたり、n個(n=1、2、3・・・)おきのプロセッサエレメントを演算対象としたりする場合、実行条件フラグの設定を対象とするプロセッサエレメントに設定するのは困難であった。このため意図的に対象と非対象のプロセッサエレメントで異なるデータを設定し演算させることで条件フラグを立てたり、対象とするプロセッサエレメントの条件フラグに1つずつ設定したりした。
また、画素データ数の増加やデータ処理方法の複雑化に伴い、同時に処理すべきデータ数も増加し、プロセッサエレメントの数の増加となっている。プロセッサエレメントを増加させた場合、論理検証、IC試験などで使用するテストパターンの量も増加する。1つのプロセッサエレメントに対して行うテストを全プロセッサエレメントに対して行うためには、プロセッサエレメント数のテストパターンが必要となるか、全プロセッサエレメントに対してテスト用の回路を設けたり、テスト結果を出力するポートを設ける必要がある。
この発明は、上記した従来の難点に鑑みなされたものにして、有効な命令と命令を実現する手段を設けることで、命令実行サイクルを減らすことを目的とする。
この発明は、プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、複数のデータを処理するために、レジスタファイルと演算アレイから構成されるプロセッサエレメントを複数備えたプロセッサエレメントブロックと、を有するSIMD型プロセッサにおいて、前記グローバルプロセッサからの制御信号を全プロセッサエレメントに与える制御信号線と、前記グローバルプロセッサからのデータを前記プロセッサエレメントに転送するためのデータバスを有するデータ転送手段と、を備え、前記グローバルプロセッサは、前記制御信号線を介してプロセッサエレメントに対して制御信号を出力し、この制御信号によりプロセッサエレメントに対応するプロセッサエレメント番号を前記プロセッサエレメントの演算部を経由して当該演算部の出力先である2つのレジスタのうちの1つのレジスタに設定し、前記データ転送手段により前記グローバルプロセッサの汎用レジスタのデータを前記プロセッサエレメント番号を設定した1つのレジスタに転送し、前記データ転送手段は、前記制御信号線を介して与えられるプロセッサエレメント番号と即値による範囲指令の上限値、下限値の比較を行うコンパレータを設け、特定のプロセッサエレメントにデータを転送する。
上記した構成によれば、グローバルプロセッサからの制御信号によってプロセッサエレメント(PE)番号をプロセッサエレメントの演算部の1つのレジスタ(Aレジスタ)に入力できる。各プロセッサエレメントに格納されたPE番号は、プロセッサエレメントのテストをするときに用いることができる。例えば、PEシフトをテストする場合など有効になる。そして、前記グローバルプロセッサからのデータを前記プロセッサエレメントに転送するためのデータ転送手段を設け、前記データ手段により前記グローバルプロセッサの汎用レジスタのデータを前記レジスタに転送することで、任意のプロセッサエレメントの演算部のレジスタにグローバルプロセッサのデータを転送することができる。
さらに、従来であればある範囲だけのデータ転送はその範囲内の実行条件フラグを1つずつセットし、実行条件フラグによって転送の有無を決定していたため、転送数だけのサイクルを必要としたが、上記した構成によれば、ある範囲だけのプロセッサエレメントを指定できるMGAA命令を使用することで、1サイクルでの処理が可能である。
また、この発明は、プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、複数のデータを処理するために、レジスタファイルと演算アレイから構成されるプロセッサエレメントを複数備えたプロセッサエレメントブロックと、を有するSIMD型プロセッサにおいて、前記グローバルプロセッサからの制御信号を全プロセッサエレメントに与える制御信号線と、前記グローバルプロセッサからのデータを前記プロセッサエレメントに転送するためのデータバスを有するデータ転送手段と、を備え、前記グローバルプロセッサは、前記制御信号線を介してプロセッサエレメントに対して制御信号を出力し、この制御信号によりプロセッサエレメントに対応するプロセッサエレメント番号を前記プロセッサエレメントの演算部を経由して当該演算部の出力先である2つのレジスタのうちの1つのレジスタに設定し、前記データ転送手段により前記グローバルプロセッサの汎用レジスタのデータを、前記プロセッサエレメント番号を設定した1つのレジスタに転送し、前記データ転送手段は、前記制御信号線を介して与えられるプロセッサエレメント番号と、即値のビットパターンによる範囲指令を行うビット位置指定と、即値のビットパターンによるマスキングを行うビットマスク指定によってプロセッサエレメントを選択するパターンマッチングブロックを設け、特定のプロセッサエレメントにデータを転送する。
上記した構成によれば、1つおき、3つおき等のN個おきのプロセッサエレメントの指定を行い、データを転送することができる。
上記の構成において、前記データ転送手段は、グローバルプロセッサの汎用レジスタと接続されるデータバスを1組設け、全プロセッサエレメントの演算部の前記レジスタに接続するように構成できる。
上記した構成によれば、例えば、グローバルプロセッサのG0レジスタからバスでプロセッサエレメントのAレジスタに接続し、任意のプロセッサエレメントのAレジスタにG0の値を転送することができる。
また、前記データ転送手段は、グローバルプロセッサからの即値を、前記コンパレータもしくはパターンマッチングブロックに転送する経路を設けるように構成できる
上記した構成によれば、演算後に1加算し次の演算範囲の縮小が可能となる。
また、前記プロセッサエレメントには、条件実行を制御するためにデータの状態によって実行又は非実行を制御する複数のフラグビットを持ち、複数のフラグビットの特定のビットにAND/ORの論理演算を行うように構成することができる
前記フラグビット指定は、オペランドの即値指定によって特定のプロセッサエレメントから特定のプロセッサエレメントまでの範囲を指定することにより行われることを特徴とする。
また、前記フラグビット指定は、オペランドの即値指定によって、2進数で表わされたプロセッサエレメント番号にマッチするプロセッサエレメントを指定するビット位置指定と、そのビット位置指定の任意ビットをマスクするビットマスクによるプロセッサエレメント指定により行われることを特徴とする。
前記フラグビット指定は、グローバルプロセッサの汎用レジスタを使用し、ポインタ指定により行われることを特徴とする。
上記した構成によれば、複数のまたがった不規則なエリアの指定を行うとき有効となる。
上記したこの発明によれば、図2に示すように、グローバルプロセッサからの制御信号によってPE番号をAレジスタに入力できる。各プロセッサエレメントに格納されたPE番号は、プロセッサエレメントのテストをするときに用いる。たとえばPEシフトをテストする場合など有効になる。従来であれば同じ値をAレジスタにセットしプロセッサエレメントの全Aレジスタの値を外部に出力する手段を設けるか、全プロセッサエレメントのAレジスタに違った値をひとつずつ転送し、それら順番にグローバルプロセッサに転送し、グローバルプロセッサで比較するなどする。前者であれば配線量が莫大となりコストが増大する。後者であれば命令サイクルが値をセットするだけで256サイクル必要となる(プロセッサエレメントが256個の場合)。この請求項1の発明であればLDPNの命令で一度に全プロセッサエレメントのAレジスタに値をセットし、シフトしたのち、レジスタファイルに結果値を格納し、判定用にLDPNでセットした値をすべてシフト量にしたがって加減算し期待値を設定し、前述の結果値と期待値を比較することによってテストが可能となる。値をセットするためには1サイクルのみでよい。
また、LDPNはn個おきのプロセッサエレメントの演算指定にも使用できる。たとえば5個おき(PE0,PE5,PE9,...)の選択を行いたい場合、従来であればそれぞれのプロセッサエレメント毎に条件フラグの設定を行うために選択したいプロセッサエレメントの数だけの処理を必要とした。この発明では、LDPNで全プロセッサエレメントにPE番号を設定し(PE0,PE1,PE2,...,PE255のAレジスタの値を順に指定すると0,1,2,3,...255となる)、Aレジスタの値を5で除算し、余りを格納すると(これらの演算はALUによる減算の繰り返しで最終にAレジスタに残った値が余りとなる。除算の引き放し法、引き戻し法で可能。)、0,1,2,3,4,0,1,2,3,4,0,1,...,0となり、PE命令でCMP命令(CMP命令はAレジスタとレジスタファイルのデータを比較し結果をTレジスタの指定ビットに反映させる。)を使用し、結果をTレジスタに反映させることで次の演算のプロセッサエレメント選択ができる。従来方法であればプロセッサエレメントの指定数分のサイクルが必要であったが、この発明であればプロセッサエレメントの指定数にかかわらず、LDPNで1サイクル、除算で16サイクル、CMP命令で1サイクルで対象とするプロセッサエレメントの選択が完了する。
グローバルプロセッサの汎用レジスタから、汎用レジスタのビットサイズを持ったバスを1組設け、全プロセッサエレメントの演算アレイ内のレジスタに接続し、データを転送する手段を設けることで、図2に示すように、グローバルプロセッサのG0からバスですべてのプロセッサエレメントのAレジスタに接続し、MGAA、MGAB命令を設けることで任意のプロセッサエレメントのAレジスタにG0レジスタの値を転送することができる。
前記データ転送手段として、前記プロセッサエレメント番号入力手段からのプロセッサエレメント番号と即値による範囲指定の上限値、下限値との比較を行うコンパレータを設け、特定のプロセッサエレメントのみ制御を行うように構成すれば、MGAA命令を設け、図5に示すようなコンパレータを各プロセッサエレメントに設け、各プロセッサエレメントの保持しているPE番号と、即値オペランドで指定した値の上限値と下限値の比較をコンパレータで行い、範囲内にあればそのプロセッサエレメントの演算を実行する。演算の実行、非実行はALUの結果をAレジスタが更新しないように制御する(ラッチ信号を更新しない)。従来であれば、ある範囲だけのデータ転送はその範囲内の実行条件フラグを一つずつセットし、実行条件フラグによって転送の有無を決定していたため、転送数だけのサイクルを必要としたが、以上によりある範囲だけのプロセッサエレメントを指定できるMGAAを使用することで、1サイクルでの処理が可能である。
また、前記データ転送手段としては、前記プロセッサエレメント番号入力手段からのプロセッサエレメント番号と、即値のビットパターンによる範囲指定を行うビット位置指定と、即値のビットパターンによるマスキングを行うビットマスク指定によってプロセッサエレメントを選択する、パターンマッチングブロックを設け、特定のプロセッサエレメントにのみ制御を行うように構成すれば、図5に示すような各プロセッサエレメントに装備されたビットマスク指定を行うマスクパターン回路により1つおき、3つおき等のN個おきのPE指定を行いデータを転送することができる。
また、前記データ転送手段として、グローバルプロセッサ内の汎用レジスタからの値を、前記コンパレータもしくはパターンマッチングブロックに転送する経路を設け、ポインタ指定により行うように構成すれば、図5に示すようにグローバルプロセッサのG2レジスタとG3レジスタは全プロセッサエレメントに対してバス接続されており、SCUからの即値データとセレクトされるためG2レジスタとG3レジスタによる指定が可能となる。これによりグローバルプロセッサ命令での演算の結果をG2、G3レジスタに格納し、ダイナミックな指定が可能となる。また、グローバルプロセッサではALUによってG2の減算が可能なため、オペランドにインクリメント演算を設けることで、演算後に1加算し次の演算範囲の縮小が可能となる。
また、前記プロセッサエレメントには、演算の結果をレジスタに格納するか否かを制御し、演算の結果もしくはグローバルプロセッサからのからの制御信号によりセット/リセット可能な複数のフラグビットを持ち、セット/リセット前のフラグビットの状態と、新しくセット/リセットする値との倫理演算を行う。AND/OR論理演算器を設け、演算後の値をフラグビットにセット/リセットを行うように構成すれば、図4のようにTレジスタの入力データにAND、ORを行う論理演算器を設け、前のTレジスタの値をフィードバックさせ、新しいデータを論理演算させることでTレジスタのセット、リセットだけでなく、AND、ORを行うことができる。これによってたとえば複数のまたがった不規則なエリアの指定を行うとき有効となる。PE10〜PE15、PE26〜PE40、PE100〜PE111といったエリアを指定する場合、前述のLDT命令、SETTA命令などで全プロセッサエレメントの特定フラグとクリアしておき、SETTAのOR演算(/Oを記述)を3回行うことで可能である。従来であれば、対象のプロセッサエレメントに一つずつセットしなければならず、セットするプロセッサエレメント分の命令サイクルが必要となる。記述は以下のとおりである。
LDT #0 ;すべてのプロセッサエレメントのTレジスタのすべてのBITに”0”を転送する。
SETTA/T1/O #10,#15
SETTA/T1/O #26,#40
SETTA/T1/O #100,#111
以下、この発明の実施の形態につき図面を参照して説明する。図1は、この発明の実施の形態にかかるSIMD型プロセッサの構成を示すブロック図である。
まず、この発明にかかるSIMD型プロセッサの全体構成について、図1に従い説明する。この発明のSIMD型プロセッサ1は、図1に示すように、グローバルプロセッサ(GP)2、本実施形態では256組の後述するプロセッサエレメント(PE)3aを備えたプロセッサエレメントブロック3、インタフェース4から構成される。インタフェース4はグローバルプロセッサ2の命令に基づき、例えば外部のイメージスキャナなどから演算対象となるデータをプロセッサ内部の入出力用のレジスタフィル31に与えるとともに、演算処理されたデータをレジスタファイル31から外部のプリンタなどへ転送するものである。
プロセッサエレメントブロック3は、SIMD型プロセッサの外部に設けられたスキャナなどの入力装置から画像データを入力したり、外部のプリンタなどの出力装置に画像データを出力したり、グローバルプロセッサ2から演算アレイ36を経由してデータの入出力を行うレジスタファイル31と、レジスタファイル31からのデータやグローバルプロセッサ2からのデータを演算処理する演算アレイ36をそなえる。SIMD方式では、複数のデータを同時に処理するため、プロセッサエレメントブロック3は、複数のプロセッサエレメント3a…で構成される。
グローバルプロセッサ2は、プロセッサエレメントブロック3、インタフェース4を制御する。このグローバルプロセッサ2は、各種制御信号を送るSISD方式のプロセッサで構成されている。
グローバルプロセッサ2の構成は図2に示すように、命令を解読し、各種制御信号を発生するシーケンスユニット(以下、SCUという)22と、グローバルプロセッサ命令により算術論理演算を行う算術論理演算器(以下、ALUという。)23、このプロセッサのプログラム格納用のプログラムRAM21と演算データ格納用のデータRAM24、図には明記していないが、割り込み制御回路、外部I/O制御回路、GP演算制御回路とを、備える。
さらに、グローバルプロセッサ2は、プログラムのアドレスを保持するプログラムカウンタ(PC)、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ、レジスタ退避、復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)が内蔵されている。
前述したSCU22には、図示はしていないが、GP命令を解読し、主にグローバルプロセッサ2内の各ブロックに制御信号を発生するGPインストラクションデコーダ(以下、GDCという)と、プロセッサエレメント(PE)命令を解読し、主にプロセッサエレメントブロック3内の各ブロックに制御信号を発生するPEインストラクションデコーダ(以下、PDCという)を、備える。すなわち、このプロセッサには、主にグローバルプロセッサ2内での演算処理を受け持つGP命令と、プロセッサエレメントブロック3内もしくはプロセッサエレメント3a…間での演算処理を受け持つPE命令に分類される。
また、前述したプロセッサエレメントブロック3の演算アレイ36は、マルチプレクサ32、シフト拡張回路33、算術論理演算器34(以下、「ALU34」という)、及びAレジスタ35a、Fレジスタ35bを備える。
前述したグローバルプロセッサ2のSCU22は、インタフェース4に対してデータ転送のための動作設定用データ及びコマンド等を送る。インタフェース4は、シーケンスユニット22の動作設定用データ及びコマンドに基づき、プロセッサエレメント3aのアドレス指定のためのアドレス制御信号、プロセッサエレメント3aを構成するレジスタ31bにデータのリード/ライトを指示するためのリード/ライト制御信号、クロック信号を与えるためのクロック制御信号を生成する。
ここで、リード/ライト制御信号のうちライト制御信号とは、演算処理されるデータをデータバスより取得して、プロセッサエレメント3aのレジスタファイル31に保持させるための信号をいう。一方、リード/ライト制御信号のうちリード制御信号とは、プロセッサエレメント3aのレジスタファイル31が保持している演算処理されたデータを、データバスへ与えるようレジスタに指示するための信号をいう。
次に、この実施形態におけるプロセッサエレメントブロック3につき、図3を参照してさらに説明する。
この実施の形態におけるプロセッサエレメントブロック3は、隣り合う2つのプロセッサエレメント3aに偶数番号、奇数番号を割り付けて1組とすると共に、この1組のプロセッサエレメント3aには同一のアドレスを割り付けている。
上記したインタフェース4は、グローバルプロセッサ2からのコマンドを受けて、プロセッサエレメントブロック3を構成するプロセッサエレメント3aのアドレスを指定する信号(以下、「アドレス指定信号」という。)を作成し、インタフェース4からアドレスバス41aを介してプロセッサエレメント3aのレジスタコントローラ31a送る。また、インタフェース4は、プロセッサエレメント3aを構成するレジスタ31bに対して、データのリード/ライトを指示するための信号(以下、「リード/ライト指示信号」という。)を、リード/ライト信号線45a(45b)を介してプロセッサエレメント3aのレジスタコントローラ31aヘリード/ライト信号を与える。偶数用リード/ライト信号線45aは、偶数のプロセッサエレメント3aにリード/ライト信号を与え、奇数用リード/ライト信号線45bは、奇数のプロセッサエレメント3aにリード/ライト信号を与える。
また、インタフェース4は、クロック信号線41cを介してプロセッサエレメント3aのレジスタコントローラ31aへクロック信号を与える。
さらに、上述したように、SIMD型プロセッサ1の外部に設けられたイメージスキャナ等で読み取られた画像データは一端図示しないバッファメモリに格納され、インタフェース4は、バッファメモリからデータを、本実施形態では16ビットのパラレルデータとして取り込む。この16ビットのデータは、偶数番号が割り付けられたプロセッサエレメント3aに与えられる8ビットと、奇数番号が割り付けられたプロセッサエレメント3aに与えられる8ビットとから構成されている。それぞれ8ビットデータは偶数用データバス46a及び奇数用データバス46bに与えられる。この8ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス46a,46bは、レジスタ31bに保持されている演算処理されたデータが、SIMD型プロセッサ1の外部に設けられたプリンタなどへバッファメモリを介して送られる時にも使用される。
また、グローバルプロセッサ2の内蔵するレジスタは、プロセッサエレメントブロック3のAレジスタ35a、Fレジスタ35bに接続されており、このレジスタ35a、35bとの間でシーケンスユニット22の制御によりデータの交換が行われる。
プロセッサエレメントブロック3は、図2及び図3に示すように、レジスタファイル31、マルチプレクサ32、シフト・拡張回路33、ALU34、レジスタ35a、35b、35c、を一単位とする複数のプロセッサエレメント3aを備える。レジスタファイル31には、1つのプロセッサエレメント3a単位に8ビットのレジスタが32本内蔵されており、本実施形態では256個のプロセッサエレメント分の組がアレイ構成になっている。
レジスタの外部からのアクセスは1つの外部ポートで各プロセッサエレメント3aの1つのレジスタがアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号(0〜255)を指定する。したがって、レジスタアクセスの外部ポートは全部で24組搭載されている。また、外部からアクセスされるデータは上述したように、偶数のプロセッサエレメント3aと奇数のプロセッサエレメント3aの1組で16ビットデータとなっており、1回のアクセスで2つのレジスタを同時にアクセスしている。
本実施形態では、プロセッサエレメント3aの数を256個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント3aには、グローバルプロセッサ2のシーケンスユニット22により、インタフェース4に近い順に0から255までのアドレスが割り付けられる。
プロセッサエレメント3aのレジスタファイル31は、レジスタコントローラ31a、2種類のレジスタ31b、31cを備える。本実施形態では、図3に示すように、一単位のプロセッサエレメント3a毎に、レジスタコントローラ31aとレジスタ31bとを24組備え、さらにレジスタ31cを8個備えている。
本実施形態では、レジスタ31b、31cを8ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
レジスタファイル31の2種類のレジスタ31b、31cは、内蔵するR0、R1、R2...R31と呼ばれているレジスタを上記のように区分したものである。それぞれのレジスタファイル31は演算アレイ36に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイ36からアクセスされる。32本のレジスタの内、24本はすなわち、レジスタ31bは、プロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。
レジスタコントローラ31aは、インタフェース4と、上述したアドレスバス41a、偶数用リード/ライト信号線45a、奇数用リード/ライト信号線45b、クロック信号線41cを介して接続されている。
インタフェース4は、アドレス制御信号を受けると、アドレス指定信号をアドレスバス41aを介してプロセッサエレメントブロック3ヘ送る。これにより、一組のプロセッサエレメント3a、即ち2つのプロセッサエレメント3aが同時にアドレス指定される。レジスタコントローラ31aは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、クロック信号41cを介して送られてきたクロック信号に同期して、リード/ライト信号45a或いは45bを介して送られてきたリード/ライト指示信号を得る。具体的には、偶数番号が割り付けられているレジスタコントローラ31aは、偶数用リード/ライト信号45aを介してインタフェース4から送られてきたリード/ライト指示信号を得る。一方、奇数番号が割り付けられているレジスタコントローラ31aは、奇数用リード/ライト信号45bを介してインタフェース4から送られてきたリード/ライト指示信号を得る。このとき一組を構成するプロセッサエレメント3aのレジスタコントローラ31aへ送られるリード/ライト指示信号はそれぞれ異なるものであってもよい。即ち、偶数番号が割り付けられているレジスタコントローラ31aへ送られる指示信号がリード指示であるとき、奇数番号が割り付けられているレジスタコントローラ31aへ送られる指示信号はライト指示であってもよい。そして、このリード/ライト指示信号はレジスタ31bに与えられる。
レジスタコントローラ31aから双方のプロセッサエレメント3aに対し、ライト指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されるデータ(8ビット)を偶数用データバス46aより取得して保持する。また、奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されるデータ(8ビット)を奇数用データバス46bより取得して保持する。一方、レジスタコントローラ31aから双方のプロセッサエレメント3aに対し、リード指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されたデータ(8ビット)を偶数用データバス46aへ送る。また、奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されたデータ(8ビット)を奇数用データバス46bへ送る。
このように、一度のアドレス指定により、偶数番号が割り付けられたプロセッサエレメント3aにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できる。このため、データの転送回数を少なくすることができ、データ転送を高速にできる。
レジスタ31bは、後述するALU34でこれから演算される外部から入力されたデータを保持したり、或いはALU34で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ31cとしての機能も有する。なお、本実施形態では、レジスタ31bは8ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ31aからライト指示信号が与えられると、レジスタ31bは演算処理されるデータをデータバス46aまたはデータバス46bより取得して保持する。一方、レジスタコントローラ31aからリード指示信号が送られてくると、レジスタ31bは保持している演算処理されたデータをデータバス46aまたはデータバス46bへ与える。このデータはインタフェース4から図示しないバッファメモリから外部へ出力される。
また、レジスタ31bは、本実施形態においては8ビットデータをパラレルで転送するデータバス37を介してマルチプレクサ32に接続されている。ALU34で演算処理されるデータ、或いはALU34で演算処理されたデータは、このデータバス37を介して、レジスタ31bとの間で転送される。この転送は、グローバルプロセッサ2のSCU22からの指示によって、グローバルプロセッサ2に接続されたリード信号線26a、ライト信号線26bを介して行われる。具体的には、グローバルプロセッサ2のシーケンスユニット22から、リード信号線26aを介してリード指示信号が送られてくると、レジスタ31bは保持している演算処理されるデータをデータバスへ置く。このデータはALU34へ送られ演算処理される。一方、グローバルプロセッサ2のSCU22から、ライト信号線26bを介してライト指示信号が送られてくると、レジスタ31bはデータバス37を介して送られてきたALU34で演算処理されたデータを保持する。
レジスタ31cは、レジスタ31bより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ31bに与えられる前に、そのデータを一時的に保持するものである。このレジスタ31cは、上述したレジスタ31bと異なり、インタフェース4を介して、外部との間においてデータ転送はしない。
演算アレイ36は、マルチプレクサ32シフト/拡張回路33、16ビットALU34及び16ビットのAレジスタ35a、Fレジスタ35bを備えている。
プロセッサエレメント3aの命令による演算は、基本的にレジスタファイル31から読み出されたデータをALU34の片側の入力としてもう片側にはレジスタ35のAレジスタの内容を入力として結果をAレジスタに格納する。したがって、Aレジスタ35aとレジスタファイル31のR0〜R31レジスタとの演算が行われることとなる。レジスタファイル31と演算アレイ36との接続に(7to1)のマルチプレクサ32を置いており、プロセッサエレメント方向で左に1、2、3つ離れたデータと右に1、2、3つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル31の8ビットのデータはシフト/拡張回路33により任意ビット左シフトしてALU34に入力される。さらに、図2に示すように、8ビットの条件レジスタ(T)35cにより、プロセッサエレメント3aごとに演算実行の無効/有効の制御をしており、特定のプロセッサエレメント3aだけを演算対象として選択できるように構成している。
上記したように、マルチプレクサ32は、自己のプロセッサエレメント3aに備えられた上記データバス37に接続されるとともに、両隣3つのプロセッサエレメント3aに備えられたデータバス37にも接続されている。このマルチプレクサ32は7つのプロセッサエレメント3aから1つを選択し、その選択したプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータをALU34へ送る。或いはALU34で演算処理されたデータを、選択したプロセッサエレメント3aにおけるレジスタ31b、31cへ送る。これによって、隣のプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータを利用した演算処理が可能になり、SIMD型プロセッサ1の演算処理能力を高めることができる。
シフト/拡張回路33は、マルチプレクサ32から送られてきたデータを所定ビットシフトしてALU34へ送る。或いはALU34から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ32へ送る。
ALU34は、シフト/拡張回路33から送られてきたデータと、レジスタ35に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ALU34は16ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、レジスタ35に保持され、シフト/拡張回路33へ転送されたり、或いはグローバルプロセッサ2の汎用レジスタ25へ転送される。
グローバルプロセッサ2からインタフェース4へはI/O用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ2がインタフェース4のいくつかの動作設定レジスタ(図示せず)へ動作方法等のコマンドを設定している。
次に、この発明にかかるSIMD型プロセッサ1の構成につき、図2、図4,図5を参照して説明する。上述したように、プロセッサエレメント3aの演算は、実行条件フラグによって演算の有無が決定される。従来、実行条件フラグのセット/リセットは全プロセッサエレメントの条件フラグにデータを転送して行われており、同じ演算処理などを繰り返さなければならい。この発明は、命令の実行サイクルを減らすことが可能なように構成するものである。
図2に示すように、この発明では、全プロセッサエレメント3a…に対して、グローバルプロセッサ2からの制御信号に基づいて、プロセッサエレメント(PE)番号(i=0,1,…、n)が転送される。このPE番号を転送するために、グローバルプロセッサ2は、LDPN(Load PE Number)命令を出す。PE番号は、各プロセッサエレメント3aに予め設定された番号に基づいて、例えば、8ビットデータをGND、VCCとの組み合わせにより設定し、GNDのトランジスタをLDPN命令に基づく制御信号よりオン/オフすることにより、PE番号が各プロセッサエレメント3aに転送される。
上記したLDPN命令は、全プロセッサエレメント3a…に対してPE番号を自プロセッサエレメント3aのAレジスタ35aに設定するものである。PE0のAレジスタ35aには”0”が、PE127のAレジスタ35aには”127”が設定される。このPE番号は2進数で表したデータが与えられるが、前記した例では理解を容易にするために、十進法で表記している。
LDPNが実行されると、グローバルプロセッサ2のSCU22から制御信号が全プロセッサエレメント3aに対して出力され、各プロセッサエレメント3a…にはALU34の片側にPE番号を設定し、PE番号はALU34を通ってAレジスタ35aに格納される。
図2に示すように、グローバルプロセッサ2からの与えられる制御信号、すなわちLPDN命令によってPE番号が各プロセッサエレメント3a…のAレジスタ35aにそれぞれ入力することができる。各プロセッサエレメント3a…に格納されたPE番号は、プロセッサエレメントのテストをするときに用いられる。例えば、PEシフトをテストする場合など有効になる。
PEシフトは上記した演算アレイ36にあるマルチプレクサ32を使用し、注目するプロセッサエレメント3aをPEn(n=0、1、2、3...255)とした場合、PEnの演算アレイ36に入力するデータをPEn+3、PEn+2、PEn+1、PEn、PEn−1、PEn−2、PEn−3のいずれかの指定レジスタから選択行うもので、演算アレイ36の演算結果をAレジスタ35aもしくはFレジスタ35bからPEn+3、PEn+2、PEn+1、PEn、PEn−1、PEn−2、PEn−3のレジスタに格納することもできる。
例えば命令では以下のように記述する。
ADD R1:L3 ;ADDは加算命令で、PEnのAレジスタの値と、PEn−3のR1レジスタの値を加算してPEnのAレジスタに格納する。
STA #12h、R1:U3 ;STAはストア命令で、PEnのAレジスタの値を、PEn+3のR1レジスタに格納する。
上記のPEシフトをテストする場合、従来であれば、SIMDプロセッサでは全プロセッサエレメントに同じデータしか設定できないため、PE0、PE1、PE2...と1PEずつAレジスタにデータを転送しなければ異なる値を設定することができなかった。PEシフトを行った結果が全プロセッサエレメントで同じ値になればどのPEから転送されてきたが判明できない。この発明であれば、LDPN命令によって異なるデータが一度にAレジスタ35aに設定できる。LDPN命令で一度にすべてのプロセッサエレメント3a...のAレジスタ35aにそれぞれのPE番号の値をセットする。プロセッサエレメントの下位番号から順に、Aレジスタに0、1、2、3...が設定される。PEシフトでレジスタファイル31のいずれかのレジスタにストアする。例えば2下位にシフトし、R1にストアした場合、プロセッサエレメントの下位番号から順に、R0レジスタに2、3、4、5...がストアされる。最後にAレジスタとR0レジスタを比較すれば全てのプロセッサエレメントで(Aレジスタの値)−(R0レジスタの値)=2となる。PEシフトがうまく行われていないプロセッサエレメントでは2以外の値となる。
また、LDPN命令は、n個おきのプロセッサエレメント3a…の演算指定にも使用できる。例えば、5個おき(PE0,PE5,PE9,…)の選択を行いたい場合には、LDPN命令で全プロセッサエレメント3a…にPE番号を設定する。PE0,PE1,PE2,…PE255のAレジスタ35aの値を順に指定すると、0,1,2,3…255となる。Aレジスタ35aの値を5で除算し、余りを格納すると(これらの演算はALUによる減算の繰り返しで最終にAレジスタに残った値が余りとなる。除算の引き放し法、引き戻し法で可能。)、0,1,2,3,4,0,1,2,3,4,0,1,…0となり、PE命令でCMP命令(CMP命令はAレジスタ35aとレジスタファイル31のデータを比較し、結果をTレジスタ35cの指定ビットに反映させる。)を使用し、結果をTレジスタ35cに反映させることで、次の演算のプロセッサエレメント3a選択ができる。
このように、この発明であれば、プロセッサエレメント3aの指定数にかかわらず、LDPN命令で1サイクル、除算で16サイクル、CMP命令1サイクルで対象とするプロセッサエレメント3aの選択が完了する。
図2に示すように、グローバルプロセッサ2からプロセッサエレメント3aへのデータ転送にはGAバス211が使われる。GAバス211はグローバルプロセッサ2のG0レジスタに接続されており、G0レジスタのデータを指定されたプロセッサエレメント3aのAレジスタ35aにデータが転送される。また、プロセッサエレメント3aのAレジスタ35aはAGバス212が接続されており、Aレジスタ35aに格納されたデータがAGバス212からG0レジスタに与えられる。
グローバルプロセッサ2からAレジスタ35aへのデータ転送には、MGAA(Move G0 to A by Area Assignment)命令、MGAB(Move G0 to A by Bit Assignment)命令といった命令が使用される。
MGAA命令はPEi〜PEjまでの(i≦j、i,j=0,1,…,255)プロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。指定には即値指定とレジスタ指定があり、例えば、次のように記述する。
(MGAA #12,#23);PE12〜PE23までのプロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。
(MGAA G2,G3);PE(G2)〜PE(G3)までのプロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。G2の値が23でG3の値が45であればPE23〜PE45が対象となる。
(MGAA G2+,G3);PE(G2)〜PE(G3)までのプロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。転送した後、G2の値を1インクリメントする。
MGAB命令はn個おきといったプロセッサエレメント3aの選択をする場合に使用される。指定には、MGAA命令と同じように即値指定とレジスタ指定がある。即値はわかりやすいようにビット指定で記述している。
MGAB命令の場合は最初のオペランドにプロセッサエレメント3aのビット指定値を、2番目のオペランドにプロセッサエレメント3aのマスク値を記述する。
次の式を満たすPE番号が選択される。
(指定したいPEの番号)&  ̄(マスク値)=(ビット指定値)&  ̄(マスク値)
例えば、次のように記述する。
(MGAB #00000000b,#00000001b)
;PE0、PE2、PE4、…PE2*i(i=0,1,2,…127)のプロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。
(MGAB G2,G3);G2をビット指定値、G3をマスク値として前述の式を満たす番号のプロセッサエレメントのAレジスタ35aにG0レジスタの値を転送する。
(MGAB G2+,G3);G2をビット指定値、G3をマスク値として前述の式を満たす番号のプロセッサエレメントのAレジスタにG0を転送する。G2は転送後に1インクリメントされる。
上記したように、グローバルプロセッサ2のG0レジスタにGAバス211によりすべてのプロセッサエレメント3aのAレジスタ35aを接続することで、MGAA命令、MGAB命令により、任意のプロセッサエレメント3aのAレジスタ35aにG0レジスタの値を転送することができる。
上述のMGAA命令、MGAB命令は、図5に示すような各プロセッサエレメント3aに装備されているコンパレータ301、パターンマッチング回路302によって、そのプロセッサエレメント3aが演算対象であるか、否かを判断するためにも用いられる。
グローバルプロセッサ2のSCU22からMGAA命令、MGAB命令及び制御信号が出力され、即値は即値バス221、即値バス222に与えられる。即値バス221に与えられた即値はセレクタ
204に与えられる。セレクタ203からはPEMSKデータ、PEHデータがプロセッサエレメント3aに出力される。PEMSKデータはプロセッサエレメント3aのパターンマッチング回路302に、PEHデータはコンパレータ301に与えられる。セレクタ204からはPESLデータ、PELデータがプロセッサエレメント3aに出力される。PESLデータはプロセッサエレメント3aのパターンマッチング回路302に、PELデータはコンパレータ301に与えられる。
コンパレータ301及びパターンマッチング回路302にはPE番号データが与えられる。
各ブロックの条件に適合すれば信号が出力され、グローバルプロセッサ2からの制御信号をもとにセレクタ303でそれが範囲指定であるか、マスク指定であるか選択し、信号を出力する。
コンパレータ301、パターンマッチング回路302に入力されるPE番号データは、各プロセッサエレメント3aでVCC、GNDにつなげることでデータを生成する。例えば、PE6のプロセッサエレメントであれば、8ビットの信号線を上位ビットからGND、GND、GND、GND、GND、GND、VCC、VCC、GNDに接続する。接続は各ビットに取り付けられたスイッチで行う。スイッチの制御信号はグローバルプロセッサ2から出力されONになるとPE番号が入力できる。図2に示すように、PE番号はALU34の片側入力にも接続されている。切り離しは同じ様にグローバルプロセッサ2からの制御信号によって行われる。
上記したMGAA命令により、各プロセッサエレメント3aの保持しているPE番号と、即値オペランドで指定した値の上限値と下限値の比較をコンパレータ301で行い、範囲内にあればそのプロセッサエレメント3aの演算を実行する。演算の実行、非実行はALU34の結果をAレジスタ35aが更新しないように制御する(ラッチ信号を更新しない)。従来であれば、ある範囲だけのデータ転送はその範囲内の実行条件フラグを一つずつセットし、実行条件フラグによって転送の有無を決定していたため、転送数だけのサイクルを必要としたが、ある範囲だけのプロセッサエレメントを指定できるMGAA命令を使用することで、1サイクルでの処理が可能である。
また、グローバルプロセッサ2からのプロセッサエレメント3aへのデータ転送は、図5に示すような各プロセッサエレメント3aに装備されたビットマスク指定を行うパターンマッチング回路302により1つおき、3つおき等のN個おきのPEの指定を行いデータを転送することができる。
選択されるパターンは次式を満たすPE番号が対象となる。
(指定したいPEの番号)&  ̄(マスク値)=(ビット指定値)&  ̄(マスク値)
例えば、奇数番号のプロセッサエレメントにデータを転送するためプロセッサエレメントの選択をする場合、つまりPE1、PE3、PE5、PE7、...のプロセッサエレメントを選択する場合、ビット指定値を00000001b、マスク値を11111110bにすればPE番号の下位1ビットが1であるPE番号はすべて上式が成り立つため選択されたことになる。
また、ビット指定値を00001100b(10進で12)、マスク値を00000010bとした場合、前述の式を満たすプロセッサエレメントはPE12とPE14となり、偶数番号のプロセッサエレメント選択に範囲を指定することもできる。
図5に示すように、グローバルプロセッサ2のG2レジスタ201とG3レジスタ202は全プロセッサエレメント3aに対してバス接続されている。SCU22からの即値データとセレクタ203,204にてセレクトされるためG2レジスタ201とG3レジスタ202による指定が行える。これによりグローバルプロセッサ命令での演算の結果をG2、G3レジスタ201、202に格納して、ダイナミックな指定が行える。
また、グローバルプロセッサ2ではALU23によってG2レジスタ201の値の減算が可能なため、オペランドにインクリメント演算を設けることで、演算後に1加算し次の演算範囲の縮小が行える。
また、この実施の形態においては、図2に示すように、各プロセッサエレメント3aには実行条件指定のための条件レジスタ(Tレジスタ)35cが装備されている。図4に、この実施の形態におけるプロセッサエレメント3aに設けられたTレジスタ35cの構成を示す。
図4に示すように、プロセッサエレメント3aは8ビットのTレジスタ35cを備える、そして、このTレジスタ35cで1ビットずつで制御されるため、1プロセッサエレメント3aで8通りの制御パターンを保持できる。全てのプロセッサエレメント3a…であれば8×256通りのパターンになる。Tレジスタ35cの1ビットはプロセッサエレメント3aごとに演算実行の無効/有効の制御を行い、特定のプロセッサエレメント3aだけを演算対象として選択できる。Tレジスタ35cには、グローバルプロセッサ2からのPE命令で値を変更することが可能である。
Tレジスタ35cは、グローバルプロセッサ2からの制御信号と、Tレジスタ35cの特定ビットの値をAND/OR論理演算器351で論理演算した結果を特定ビットに格納する構成となっている。格納はグローバルプロセッサ2からの制御信号によって格納先が決定する。すなわち、図4に示すように、この実施形態においては、Tレジスタ35cの入力データ側には、AND/ORを行う論理演算器351が設けられ、さらにTレジスタ35からの出力がセレクタ352に与えられ、このセレクタ352により、Tレジスタ35cの値をフィードバック及び出力が行われている。
Tレジスタ35cの任意のプロセッサエレメント3aの特定ビットをセット・リセットする命令には、SETTA(Set T by Area Assignment)命令、SETTB(Set T by Bit Assignment)命令がある。また、Tレジスタ35cにデータを転送する命令は、LDT(Load to T register)がある。LDT命令は、オペランドに即値もしくはレジスタ値で、グローバルプロセッサ2は信号線210を介してそれらの値の下位8ビットを全プロセッサエレメント3aのTレジスタ35cに転送する。
SETTA命令はオペランドで指定された範囲に該当するプロセッサエレメント3aに対して演算対象とし、対象となるプロセッサエレメント3aのTレジスタ35cの特定ビットに対してセット・リセットを行うものである。指定の方法は前述のMGAAと同じで、指定された範囲内のTレジスタ35cの特定ビットの値を”1”にセットする。範囲外のプロセッサエレメント3aのTレジスタ35cには”0”がセットされる。さらに、SETTA命令は、前命令までのTレジスタ35cの値との演算が指定できる。例えば、以下のように記述する。
SETTA/T2/A #12,#23
上記の命令では、命令につづいて、Tレジスタ35cの特定ビットの指定(/T2で下位から2ビット目を示す。)と、続いて演算の種類(/AでAND演算を行う。/O指定であればOR演算を行う。)の指定が記述されている。演算が指定されているため、PE12〜PE23までのプロセッサエレメント3aのT2ビットの値と”1”のAND結果をT2に格納する。
SETTB命令は前述のMGAB命令と同じオペランドのビット指定とマスク指定によってプロセッサエレメント3aの選択を行う。また、前述のSETTA命令で行った/A、/OによるTレジスタの特定ビットの旧値との論理演算も同じようにできる。
上記したように、Tレジスタ35cからの出力はセレクタ352により選択され、前のTレジスタ35cの値をフィードバックさせ、新しいデータを論理演算器351にて論理演算させることで、Tレジスタ35cのセット、リセットだけでなく、AND/OR演算ができるように構成されている。これによって、例えば、複数のまたがった不規則なエリアの指定を行うとき有効となる。
例えば、PE10〜PE15、PE26〜PE40、PE100〜PE111といったエリアを指定する場合、前述のLDT命令、SETTA命令などで全プロセッサエレメントの特定フラグとクリアしておき、SETTAのOR演算(/Oを記述)を3回行うことで可能である。記述は以下のとおりである。
(LDT #0);すべてのプロセッサエレメントのTレジスタのすべてのBITに”0”を転送する。
SETTA/T1/O #10,#15
SETTA/T1/O #26,#40
SETTA/T1/O #100,#111
上記した図3に示した実施の形態においては、一度のアドレス指定により、SIMDプロセッサ1の偶数番号が割り付けられたプロセッサエレメント3aに外部メモリ6からデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できるように構成しているが、SIMD型プロセッサ1へ外部からデータを入出力する方法は、この方法に限られるものではない。たとえば、図6に示すように、SIMDプロセッサ1のプロセッサエレメント3aに、奇数、偶数の区別を付けずに、アドレス指定により順次データを転送するように構成したものにおいても、この発明は適用できる。すなわち、図6に示すように、レジスタコントローラ31aは、インタフェース4と、アドレスバス41a、リード/ライト信号45c、クロック信号41cを介して接続されている。このレジスタコントローラ31aは、インタフェース4に与えられ、アドレスバス41aを介してアドレス指定信号が送られてくると、そのアドレス指定信号をデコードする。そして、デコードしたアドレスと、自己のプロセッサエレメント3aに割り付けられたアドレスとが一致する場合には、インタフェース4に与えられ、クロック信号41cからのクロック信号に同期して、リード/ライト信号41bを介してリード/ライト指示信号を得る。このリード/ライト指示信号は、レジスタ31bへ与えられる。
SIMD型プロセッサ1の外部に設けられたイメージスキャナからの画像データを、この実施形態では8ビットのパラレルデータとして、データバス46cに置く。このデータバス46cは、レジスタ31bに保持されている演算処理されたデータが、SIMD型プロセッサ1の外部に設けられたプリンタ等に送る時にも使用される。
インタフェース4から与えられるアドレス、リード/ライト、クロック、データの信号はレジスタファイル31の各レジスタに供給される。そして、各プロセッサエレメント3a…ごとにアドレスをデコードして各プロセッサエレメント3a…を示すアドレスと一致したプロセッサエレメント3aだけがリード/ライトの動作をおこなう。
このように構成されるSIMD型プロセッサ1は、外部からのデータをプロセッサエレメント3aに送る場合、プロセッサエレメント3aに割り付けられたアドレスを指定することにより、1回のクロック信号が入力されるだけで、その指定したプロセッサエレメント3aにデータが送られる。なお、この例では、偶数、奇数のプロセッサエレメント3aに同時にデータは送られないので、第1の実施の形態に比べると、データ転送に時間はかかるが、回路構成は簡略化できる。
上述した実施形態においては、プロセッサエレメント3aをアドレス指定しているが、プロセッサエレメント3aの指定をアドレス指定する方式ではなく、ポインタ指定する方式、即ちシリアルアクセスメモリ方式においても、この発明は適用できる。この例につき図7に従い説明する。なお、ここでは上述した第1の実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第1実施形態と同じ構成部分については、同一の符号を付する。
まず、グローバルプロセッサ2からインタフェース4へはI/O用のアドレス、データ、コントロール信号がバスを介して与えられる。インタフェース4は、グローバルプロセッサ2のコマンドに基づき、このリセット信号を生成し、リセット信号47を介してプロセッサエレメントブロック3送る。これにより、ポインタコントローラ31aは、リセットされる。そして、インタフェース4に最も近いポインタコントローラ31aへクロック信号41cを介してクロック信号が送られる。このクロック信号に同期して、ポインタコントローラ31a’は、リード/ライト信号45a或いは45bを介してインタフェース4から送られてきたリード/ライト指示信号を得る。このリード/ライト指示信号は、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31b、及び奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bにそれぞれ与えられる。このとき一組を構成するプロセッサエレメント3aのレジスタコントローラ31a’へ送られるリード/ライト指示信号は、上記第1実施形態の場合と同様それぞれ異なるものであってもよい。
これにより、上述した第1実施形態の場合と同様、一度のポインタ指定により、偶数番号が割り付けられたプロセッサエレメント3aにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できる。
また、上記したポインタ指定する方式において、一度のポインタ指定により1つの番号が割り付けられたプロセッサエレメント3aにデータ転送する方式においても、この発明は適用できる。
この発明の実施の形態にかかるSIMD型プロセッサの全体構成を示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサの要部構成を示すブロック図である。 この発明の実施の形態にかかるプロセッサの内部構成を示すブロック図である。 この発明の実施の形態にかかるプロセッサエレメントにおけるTレジスタの構成を示すブロック図である。 この発明の実施の形態にかかるSIMD型プロセッサの要部構成を示すブロック図である。 この発明の他の実施の形態にかかるプロセッサの内部構成を示すブロック図である。 この発明のさらに異なる実施の形態にかかるSIMD型プロセッサの内部構成を示すブロック図である。
1 SIMD型プロセッサ
2 グローバルプロセッサ
3 プロセッサエレメントブロック
3a プロセッサエレメント
31 レジスタファイル
32 演算アレイ

Claims (9)

  1. プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、複数のデータを処理するために、レジスタファイルと演算アレイから構成されるプロセッサエレメントを複数備えたプロセッサエレメントブロックと、を有するSIMD型プロセッサにおいて、
    前記グローバルプロセッサからの制御信号を全プロセッサエレメントに与える制御信号線と、
    前記グローバルプロセッサからのデータを前記プロセッサエレメントに転送するためのデータバスを有するデータ転送手段と、を備え、
    前記グローバルプロセッサは、前記制御信号線を介してプロセッサエレメントに対して制御信号を出力し、
    この制御信号によりプロセッサエレメントに対応するプロセッサエレメント番号を前記プロセッサエレメントの演算部を経由して当該演算部の出力先である2つのレジスタのうちの1つのレジスタに設定し、
    前記データ転送手段により前記グローバルプロセッサの汎用レジスタのデータを前記プロセッサエレメント番号を設定した1つのレジスタに転送し、
    前記データ転送手段は、前記制御信号線を介して与えられるプロセッサエレメント番号と即値による範囲指令の上限値、下限値の比較を行うコンパレータを設け、特定のプロセッサエレメントにデータを転送することを特徴とするSIMD型プロセッサ。
  2. プログラムを解読しプロセッサ全体を制御するグローバルプロセッサと、複数のデータを処理するために、レジスタファイルと演算アレイから構成されるプロセッサエレメントを複数備えたプロセッサエレメントブロックと、を有するSIMD型プロセッサにおいて、
    前記グローバルプロセッサからの制御信号を全プロセッサエレメントに与える制御信号線と、
    前記グローバルプロセッサからのデータを前記プロセッサエレメントに転送するためのデータバスを有するデータ転送手段と、を備え、
    前記グローバルプロセッサは、前記制御信号線を介してプロセッサエレメントに対して制御信号を出力し、
    この制御信号によりプロセッサエレメントに対応するプロセッサエレメント番号を前記プロセッサエレメントの演算部を経由して当該演算部の出力先である2つのレジスタのうちの1つのレジスタに設定し、
    前記データ転送手段により前記グローバルプロセッサの汎用レジスタのデータを、前記プロセッサエレメント番号を設定した1つのレジスタに転送し、
    前記データ転送手段は、前記制御信号線を介して与えられるプロセッサエレメント番号と、即値のビットパターンによる範囲指令を行うビット位置指定と、即値のビットパターンによるマスキングを行うビットマスク指定によってプロセッサエレメントを選択するパターンマッチングブロックを設け、特定のプロセッサエレメントにデータを転送することを特徴とするSIMD型プロセッサ。
  3. 前記データ転送手段は、前記グローバルプロセッサの汎用レジスタのビットサイズを持ったデータバスを1組設け、全プロセッサエレメントの演算部の前記レジスタに接続されることを特徴とする請求項1又は2に記載のSIMD型プロセッサ。
  4. 前記データ転送手段は、グローバルプロセッサからの即値を、前記コンパレータに転送する経路を設けたことを特徴とする請求項1に記載のSIMD型プロセッサ。
  5. 前記データ転送手段は、グローバルプロセッサからの即値を、前記パターンマッチングブロックに転送する経路を設けたことを特徴とする請求項2に記載のSIMD型プロセッサ。
  6. 前記グローバルプロセッサは、指定後の汎用レジスタにおけるデータのインクリメントを行うことを特徴とする請求項4又は5に記載のSIMD型プロセッサ。
  7. 前記プロセッサエレメントには条件実行を制御するためにデータの状態によって実行又は非実行を制御する複数のフラグビットを持ち、複数のフラグビットの特定のビットにAND/ORの論理演算を行うことを特徴とする請求項1又は2に記載のSIMD型プロセッサ。
  8. 前記フラグビット指定は、オペランドの即値指定によって特定のプロセッサエレメントから特定のプロセッサエレメントまでの範囲を指定することにより行われることを特徴とする請求項7に記載のSIMD型プロセッサ。
  9. 前記フラグビット指定は、オペランドの即値指定によって、2進数で表わされたプロセッサエレメント番号にマッチするプロセッサエレメントを指定するビット位置指定と、そのビット位置指定の任意ビットをマスクするビットマスクによるプロセッサエレメント指定により行われることを特徴とする請求項7に記載のSIMD型プロセッサ。
JP2006259488A 2006-09-25 2006-09-25 Simd型プロセッサ Expired - Fee Related JP4442907B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006259488A JP4442907B2 (ja) 2006-09-25 2006-09-25 Simd型プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006259488A JP4442907B2 (ja) 2006-09-25 2006-09-25 Simd型プロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000009879A Division JP3971543B2 (ja) 2000-01-19 2000-01-19 Simd型プロセッサ

Publications (2)

Publication Number Publication Date
JP2006351043A JP2006351043A (ja) 2006-12-28
JP4442907B2 true JP4442907B2 (ja) 2010-03-31

Family

ID=37646736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006259488A Expired - Fee Related JP4442907B2 (ja) 2006-09-25 2006-09-25 Simd型プロセッサ

Country Status (1)

Country Link
JP (1) JP4442907B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法

Also Published As

Publication number Publication date
JP2006351043A (ja) 2006-12-28

Similar Documents

Publication Publication Date Title
US6762764B2 (en) System and method for processing image, and compiler for use in this system
US20010008563A1 (en) Parallel processor and image processing apparatus
JP4478050B2 (ja) Simd型マイクロプロセッサ及びデータ処理方法
JP3971535B2 (ja) Simd型プロセッサ
US8060726B2 (en) SIMD microprocessor, image processing apparatus including same, and image processing method used therein
JP4442907B2 (ja) Simd型プロセッサ
JP3971543B2 (ja) Simd型プロセッサ
JP4868607B2 (ja) Simd型マイクロプロセッサ
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP3821198B2 (ja) 信号処理装置
JP4408113B2 (ja) 信号処理方法
JP4398965B2 (ja) Simdプロセッサにおけるデータ設定装置
JP3837293B2 (ja) 定数選択機能を有するsimd型マイクロプロセッサ
JP3971557B2 (ja) Simdプロセッサにおけるデータ設定装置
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP2006344238A (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP4413905B2 (ja) Simd型プロセッサ
JP3969580B2 (ja) データ処理装置、画像処理装置、画像形成装置、プログラム及び記憶媒体
JP5369669B2 (ja) Simd型マイクロプロセッサ
JP2008071037A (ja) Simd型マイクロプロセッサ
JP3742745B2 (ja) 演算処理装置
JP2011134042A (ja) Simd型マイクロプロセッサおよびsimd型マイクロプロセッサのデータ整列方法
JP4403009B2 (ja) マイクロプロセッサ
JP2005135163A (ja) 信号処理装置及び信号処理方法
JP4346039B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090721

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090727

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20090909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100106

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100108

R150 Certificate of patent or registration of utility model

Ref document number: 4442907

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140122

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees