JP2002149400A - 複数レジスタ指定が可能なsimd演算方式 - Google Patents
複数レジスタ指定が可能なsimd演算方式Info
- Publication number
- JP2002149400A JP2002149400A JP2000340239A JP2000340239A JP2002149400A JP 2002149400 A JP2002149400 A JP 2002149400A JP 2000340239 A JP2000340239 A JP 2000340239A JP 2000340239 A JP2000340239 A JP 2000340239A JP 2002149400 A JP2002149400 A JP 2002149400A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- registers
- instruction
- 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.)
- Granted
Links
- 230000010485 coping Effects 0.000 claims description 3
- 230000009467 reduction Effects 0.000 claims description 2
- 230000008707 rearrangement Effects 0.000 abstract description 23
- 230000000694 effects Effects 0.000 abstract description 8
- 230000001133 acceleration Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 33
- 238000000034 method Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 4
- 239000004606 Fillers/Extenders Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002542 deteriorative effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
ジスタ内データ整列など、SIMD演算の効果を妨げる
要因を軽減する必要がある。 【解決手段】 レジスタファイルを4個のバンクに分け
て、1個のオペランドで複数個のレジスタを指定できる
ようにして、4個のレジスタを同時にアクセスできるよ
うにすることによって、データ整列演算パイプ211に
多数のデータを供給でき、高速にデータ整列演算を行う
ことができる。また、新規のデータパック命令・データ
アンパック命令・データ並べ替え命令を定義することに
よって、その多量に供給されるデータを効率よく整列さ
せることができる。さらに、上記の特徴により、SIM
Dの並列性を最大限に生かした積和演算命令の定義が可
能である。
Description
Instruction Multiple Data)プロセッサにおけるレジ
スタ指定方式および、レジスタ内データ整列処理に関す
るものであり、SIMDの並列処理性能を低下させる惧
れの有るレジスタ内データ整列を高速に行う手段に関す
るものである。
g)命令として標準的な積和演算に関して、SIMDの
並列性を維持したまま、精度を落とすことなく演算させ
ることが可能な手段に関するものである。
クトル演算処理を行う際に、1つのレジスタ指定フィー
ルドで連続した複数個のレジスタを指定できるようにし
て、ベクトル演算を行わせるような方法が、特開平10
−124484の特許で既に公開されている。
は、モトローラ社が開発したマルチメディア向け命令セ
ットAltivecの、「AltiVec Progr
amming Interface Manual」に
4オペランドまで指定可能な各種データ整列命令が記述
されている。
列性を4並列から2並列に半減させた形で実現するよう
な精度落ちのない積和演算命令が、日立製作所とSTマ
イクロエレクトロニクスの共同開発のSH5アーキテク
チャで定義されている。
124484に示されたベクトル演算処理においては、
複数のレジスタ指定において、4の倍数の番号のみしか
指定できない構成と成っているため自由度が乏しく、ま
たAltivecのデータ整列命令においては、演算装
置が大型で高価である上にソースレジスタとして3個し
か指定できず、データパックやアンパックといったSI
MD特有の演算を効率良く行うことができない。従っ
て、SIMDの並列性を十分に達成できていない。
果を最大限にあげるための、データ整列に関する手段を
提供するものである。
て標準的な積和演算命令をSIMDの並列性を落とすこ
となく、しかも精度を保ったままで実現する1手段を提
供するものである。
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
のレジスタ指定フィールドからなる演算命令を有し、少
なくとも1つのレジスタ指定フィールドは連続番号の複
数個のレジスタが指定可能であることを特徴とする。
ィールドの内、1フィールドで複数のリードレジスタを
指定するデコーダと、デコーダからの出力に従って連続
番号の複数個のレジスタ内データを出力するレジスタフ
ァイルとを具備することを特徴とする。
ィールドの内、1フィールドで複数のライトレジスタを
指定するデコーダと、デコーダからの出力に従って連続
番号の複数個のレジスタに値を書き込めるレジスタファ
イルとを具備することを特徴とする。
し、複数のバンクからリードまたはライトを行うことに
より、各バンクのリードまたはライトポート数をレジス
タ指定フィールド数以下に制限して、フィールド数より
多くのリードまたはライトを行うことによる回路規模の
増大を抑制したものである。
n乗個(nは自然数)と限定して、レジスタ選択回路の
削減を可能としたものである。
り多くの数のレジスタからデータをリードするため、ラ
イトレジスタへの書き込みデータ数より多くのリードレ
ジスタからの読み出しデータ数に対応可能なデータパッ
ク演算を、ライトレジスタに無効な部分を生成すること
なく実現可能であることを特徴とする。
より多い数のレジスタにライトできることから、リード
レジスタの読み出しデータ数より多くのライトレジスタ
への書き込みデータ数に対応可能なデータアンパック演
算を、ライトを複数回に分けることなく並列的に実現可
能であることを特徴とする。
り多くのレジスタにライトできることから、入力データ
幅より広いデータ幅の出力を行う演算を、入力データに
無効部分を作ることなく、さらにデータ幅の広い特別な
レジスタを実装することもなく、実現可能であることを
特徴とする。
スタ指定フィールドの数以上のデータを必要とするパイ
プに、それぞれデータを供給するために、レジスタと演
算パイプ間には、汎用のバスの他に、複数本のデータ用
バスを設けていることを特徴とする。
令、行列演算命令、積和演算命令など、複数個の結果を
出力するパイプのために、レジスタと演算パイプ間に、
レジスタ書き込み用として複数本のデータ用バスを設け
ていることを特徴とする。
施例を詳細に説明する。尚、実施例を説明するための全
図において、同一機能を有するものは同一符号を付け、
その繰り返しの説明は省略する。
プロセッサのCPUブロック図の概略を示す。ただし、
このCPUブロック部は、図2に示されるマイクロコン
ピュータのレイアウトにおけるCPU200の部分を指
すものとする。尚、図2においてFPUは浮動小数点演
算ユニット、CCNはキャッシュ・コントローラ、BS
Cはバスステートコントローラ、TLBはトランスレー
ション・ルックアサイド・バッファーを示し、これらの
レイアウトは周知の構成である。
64bitRISC(Reduced Instruction Set Comput
er)アーキテクチャを例として採用して、オペランドを
3個有し、32bit固定長命令を実行するものとす
る。
ータ整列(ALN)・乗算(MUL)・整数演算(IN
T)・ロード/ストア(LD/ST)・分岐(BRA)
の5つをもつようなSIMDプロセッサを想定してい
る。
Uブロック図のうち、命令デコード部からレジスタファ
イル213へのアクセス部について詳細に示してある。
ドの1つであるmには、R0〜R63までのいずれかの
レジスタ番号が指定され、そのコードはデコーダ202
によりデコードされて、各レジスタに直接アクセスでき
る。
表を満たす論理回路で構成される。図4からもわかるよ
うに、出力64本のうち、4本がhighとなり、4つ
の連続したレジスタを1度に指定することができる。各
バンクから読み出されたデータは、セレクタ204とセ
レクタ205へ出力される。セレクタ205には、制御
信号として、オペランドコードmの下位2bitを入力
し、入力用の汎用バス206へ出力するデータを決定す
る。
データが入力され、汎用バスへ出力されるデータを除い
た残りのデータを出力する制御信号としては、セレクタ
205と同じオペランドコードmの下位2bitを使
う。
子を示す真理値表を示す。表中のaとbは、前述のオペラ
ンドコードmの下位2bitを意味し、セレクタ205
の出力が「To 206」と対応し、セレクタ204の
出力が「To 307」と対応する。又、この真理値表
の「To 206」欄及び「To 307」欄の出力値
として表現されているX0〜X3の「X」はBNK(す
なわち、バンク)を表している。
各バンク毎にお互い排他的であり、この図5に示される
真理値表を満たすような論理回路でセレクタ204と2
05は構成される。
03に相当する)の詳細図が図6に示されているが、バ
ンク3(203)に存在する各レジスタは、この例にお
いては1bitあたり2read・1writeの標準
的なもので構成される。
・…・R4nの16個のレジスタが格納され、バンク1
には、R1・R5・…・R4n+1の16個、バンク2
には、R2・R6・…・R4n+2の16個、バンク3
には、R3・R7・…・R4n+3の16個が格納され
ている。
た演算結果は、出力用の汎用バス207に出力される。
またこの例では、データ整列演算パイプや乗算パイプか
ら出力が4本あるので、そのうち1本を汎用の207の
バスへ、残りの3本を210のバスへ出力するようにす
る。210のバス上のデータは、セレクタ208に入力
される。
で、図7に示される真理値表を満たす論理回路で構成さ
れる。
putのX,Y,Zは入力値、outputは、左から
バンク0、1、2、3への出力を示す。
ディスティネーションレジスタ指定フィールド(オペラ
ンドコードd)で示されるコードの下位2bitを使用
する。また、汎用バス207へ出力されたデータは、セ
レクタ209へ入力され、格納するレジスタが存在する
バンクへ選択・出力される。
クタ208同様ディスティネーションレジスタ指定フィ
ールドで示されるコード(オペランドコードd)の下位
2bitを使い、図8に示す真理値表を満たす論理回路
で構成される。
レジスタ指定フィールド(オペランドコードd)の下位
2bitの値で、Xは入力値、Outputは、左から
バンク0、1、2、3への出力を示す。
らの出力は、各バンクごとにお互いに排他的であり、片
方のセレクタの出力がデータならば、もう片方のセレク
タからの出力は0になる。従って、これら、セレクタ2
08と209からの出力は、各バンクごとに論理和をと
って、バンク内のレジスタへ書き込まれることになる。
IMDプロセッサの説明である。
かして定義されるSIMD演算命令について説明する。
内のデータが即演算できる順番に整列されているとき
に、その並列性を最大限に発揮することができるが、多
くの場合データを並び替えて後に主要な演算を行う必要
がある。従って、その並び替えサイクルをできる限り減
らすことが、SIMDプロセッサの性能向上につなが
る。
ようなデータパック命令を定義する。
合。図10は即値として、命令コード内にシフト量が存
在する場合である。
n)をレジスタから読み込み、Rmで示されるレジスタ
群内のデータに対してシフト処理を施した後、パック演
算を遂行するオペレーションコードを示しており、図1
0では図9と比較してシフト量(s)が即値の場合のオ
ペレーションコードを示している。
ように、4つのレジスタ内データを1つのデータにパッ
クして格納するためのものである。
11に示されるものである。
スタ指定フィールド1(オペランドコードm)で示され
る4個のレジスタ内データが転送される。またレジスタ
指定フィールド2(オペランドコードn)で示されるシ
フト量は、汎用バス301から取り込まれる。これらデ
ータとシフト量は、任意bitのシフトが可能なバレル
シフタ302にそれぞれ入力される。このバレルシフタ
302により固定小数点の除算を行うことができる。
のみを各々取り出し、汎用バス207へ出力して、64
bit幅データとして1つのレジスタにパックすること
ができる。
13に示されるようなデータアンパック命令を定義す
る。このデータアンパック命令は、1つのレジスタ内S
IMDデータを複数のレジスタに分割して格納する命令
である。図12は16bitデータを扱う場合、図13
は8bitデータを扱う場合を考慮して定義した。
t毎に分割、分割されたデータを64bitに符号拡張
し、ライトレジスタに書き込むオペレーションコードを
示している。図13では図12と比較し、8bitデー
タを扱う為、書き込むライトレジスタ数が倍に成ってい
る。
4を用いて詳細に説明する。
ードm)で示されるレジスタ内のSIMDデータが汎用
バス206を通して伝送される。
する場合を示してあるが、汎用バス206を通して送ら
れたデータは、16bitごとに分割されて、それぞれ
別の符号拡張器400に入力されて、64bitデータ
に符号拡張されてバス207と210に出力される。以
上の操作でデータアンパック機能を実現することができ
る。
ような並べ替え命令を定義する。図15では、4つの指
定されたレジスタ内SIMDデータを読み出して、要素
毎に指定された並べ替えを行って指定されたレジスタに
並べ替えたSIMDデータを格納する為のオペレーショ
ンコードを示している。
や回転、FFTのバタフライ演算等に有効であり、具体
的な動作は図16に示す。
t×4個のSIMDデータ2個に対して並べ替え操作を
行うと、結果格納用に64bit幅レジスタ2個を必要
とするが、ディスティネーションレジスタとして1個し
か指定できないため、並べ替え結果の上位bit部分用
と下位bit部分用にそれぞれ別命令を用意していた。
スタ指定フィールドで複数レジスタを指定できる特徴か
ら、図16のように4個のソースデータに対して、一度
に上位bit部と下位bit部の並べ替え操作を行うこ
とができ、2組分を同時に演算することができる。
バス206と307のバスを通して伝送されるソースデ
ータ対2組は、それぞれ16bit幅に分割されて、並
び替え操作が行われ、その結果を207と210のバス
へ出力して、レジスタに書き込まれる。
したデータには実数と虚数が交互に存在することが多
く、演算には実数データのみ、虚数データのみのデータ
列を必要とすることが多々ある。
ッサならば、本実施例においては、最大で8個のSIM
Dデータを同時に読み込むことができるため、16bi
tデータならば32個のデータ間で並べ替え操作を行っ
て、1度に16データ分の結果を求めることができる。
うためには、図18、図19で示されるような命令を定
義すれば良い。
SIMDデータを読み出して、各要素を右端から数えて
1・2・3・4としたとき、1と3のデータ要素のみを
抽出して、指定されたレジスタに格納する処理を示すオ
ペレーションコードを示しており、図19ではSIMD
データを読み出した後、2と4のデータ要素のみを抽出
して、指定されたレジスタに格納する処理を示すオペレ
ーションコードを示している。
て、この場合は各レジスタ内データの63bit目〜4
8bit目のデータと、31bit目〜16bit目の
データの抽出である。
ると、汎用バス206と301、307と501のバス
を通って伝送されるSIMDデータ8組32個は、それ
ぞれ必要な16bitデータのみ抽出されて、結果を汎
用バス207と210のバスへ出力することによって実
現する。
で示されるような積和演算命令を定義する。
SIMDソースデータを読み出し、4個の累積和の基に
なるレジスタ内データをさらに読み出し、累積和の計算
をした後、指定された4個のレジスタにSIMDデータ
を格納する処理を示すオペレーションコードを示してい
る。
のbit幅に対して、得られる結果は倍のbit幅をも
つため、16bit幅のデータを4個も保持しているS
IMD型64bitデータでは、演算結果を格納するた
めに128bit幅のレジスタが必要になる。現実解と
しては、SIMDの並列性を犠牲にして、64bit幅
レジスタの下位32bitにのみ有効なデータを格納し
て、結果を64bitに収める方法が多くとられてい
る。しかし累積和を取る場合、さらに結果のbit幅が
増加する可能性があり、上記方法でも演算精度が落ちて
しまう。
tの積和演算にて、格納用に40bitレジスタを用意
するなどして演算の精度を保つ工夫がなされている。
の並列性を損なうことなく、精度の落ちない積和演算を
実行することができる。
説明図を図23に、回路構成図を図24に示す。
タは、汎用バス206とバス307を通して伝送され
る。それらのSIMDデータは、16bitデータごと
に分割されて、各々乗算器700〜703に入力され、
704〜707の加算器へ出力される。累積和のデータ
は、汎用バス301とバス501を通して伝送され、7
04〜707の加算器へ入力される。これらの累積和演
算の結果は、格納用の汎用バス207とバス210へ出
力される。このような手段を用いて、精度を落とすこと
なく、かつ並列性を保ったまま、SIMDデータの積和
演算を実現することができる。
形態に基づいて具体的に説明したが、本発明はそれに限
定されるものではなく、その要旨を逸脱しない範囲にお
いて種々変更可能であることは言うまでもない。
入力に対して3出力のセレクタであるが、これをトライ
ステートバッファーにしても何ら問題はない。
入力1出力であるが、入力は何本でもよく、また出力本
数も制限されるものではない。
スタ内のSIMDデータの型によって、分割する数が決
定するので、図14のように4個に限定されるものでも
ない。
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
サは、SIMD演算の効果を妨げるレジスタ内データ整
列演算の高速化を実現することができ、さらにDSP的
な積和演算を実現することが可能である。
ク命令を導入することにより、ばらばらに格納されてい
るデータを纏め、SIMD命令で効率的にデータ処理を
行うことができる。
パック)を図25に示す。図中のAは現状の場合のプロ
グラム例であり、Bが新規のデータパック命令を採用し
た場合のものである。
令のニーモニックとする。このAとBのプログラム例の
ように、データパック命令を採用することによって、命
令ステップを1/4に削減することができる。
パック命令を導入することにより、速やかなレジスタの
初期化や、データの分割が行え、SIMD処理が効果的
でない部分においても、演算効率が落ちないようにする
ことができる。
る16bitデータ4個を4個のレジスタにアンパッ
ク)を図26に示す。
ータパックする場合のプログラム例であり、Bが新規デ
ータアンパック命令を採用した場合のものである。図2
6からもわかるように、新規命令の追加によって、命令
ステップ数を1/6にまで削減することができる。
替え命令を導入することにより、レジスタ内SIMDデ
ータの並び替えを高速に行うことができ、積和演算等の
SIMD処理に遅滞なくデータを供給することができ
る。
が従来の並べ替え命令を用いた場合のプログラム例であ
り、図中のBが新規の並べ替え命令を採用した場合のプ
ログラム例である。この図27から明らかなように、命
令ステップ数を1/8にまで削減することが可能とな
る。
PUブロック図である。
体ブロック図である。
近辺の詳細図である。
す図である。
を構成する論理回路の真理値表を示す図である。
る。
タに格納するのか、その場所をセレクトするためのセレ
クタを構成する論理回路の真理値表を示す図である。
スタに格納するのか、その場所をセレクトするためのセ
レクタを構成する論理回路の真理値表を示す図である。
である。
図である。
る。
義を示す図である。
図である。
ある。
る。
ム例を示す図である。
グラム例を示す図である。
を示す図である。
…レジスタ指定デコーダ、203…レジスタファイルを
分割したバンクの1つ、204…4入力3出力セレク
タ、205…4入力1出力セレクタ、206、301…
ソースデータ用汎用バス、207…演算結果用汎用バ
ス、208…3入力4出力セレクタ、209…1入力4
出力セレクタ、210…演算結果用バス、211…デー
タ整列演算パイプ、212…乗算パイプ、213…レジ
スタファイル、302…右算術シフト用バレルシフタ、
307、501…ソースデータ用バス、400…64b
it符号拡張器、700、701,702,703…1
6bit乗算器、704、705,706,707…6
4bit加算器、708、709,710,711…1
bit右シフト器。
Claims (8)
- 【請求項1】命令コードと、少なくとも1つのレジスタ
指定フィールドからなる演算命令を有し、上記少なくと
も1つのレジスタ指定フィールドは連続番号の複数個の
レジスタが指定可能であることを特徴とするプロセッ
サ。 - 【請求項2】任意数のレジスタ指定フィールドの内、1
フィールドで複数のリードレジスタを指定するデコーダ
と、該デコーダからの出力に従って連続番号の複数個の
レジスタ内データを出力するレジスタファイルとを具備
することを特徴とするプロセッサ。 - 【請求項3】任意数のレジスタ指定フィールドの内、1
フィールドで複数のライトレジスタを指定するデコーダ
と、該デコーダからの出力に従って連続番号の複数個の
レジスタに値を書き込めるレジスタファイルとを具備す
ることを特徴とするプロセッサ。 - 【請求項4】請求項2もしくは3記載のプロセッサにお
いて、上記レジスタファイルは複数のバンクを有し、前
記複数のバンクからリードまたはライトを行うことによ
り、各バンクのリードまたはライトポート数をレジスタ
指定フィールド数以下に制限して、フィールド数より多
くのリードまたはライトを行うことによる回路規模の増
大を抑制したプロセッサ。 - 【請求項5】請求項1、2又は3のいずれかに記載のプ
ロセッサにおいて、該連続番号の複数個のレジスタ数は
2のn乗個(nは自然数)と限定して、レジスタ選択回
路の削減を可能としたプロセッサ。 - 【請求項6】請求項1から5のいずれかに記載のプロセ
ッサにおいて、さらにリードレジスタ指定フィールド数
より多くの数のレジスタからデータをリードするため、
ライトレジスタへの書き込みデータ数より多くのリード
レジスタからの読み出しデータ数に対応可能なデータパ
ック演算を、ライトレジスタに無効な部分を生成するこ
となく実現可能であることを特徴とするプロセッサ。 - 【請求項7】請求項1から5のいずれかに記載のプロセ
ッサにおいて、さらにライトレジスタ指定フィールド数
より多い数のレジスタにライトできることから、リード
レジスタの読み出しデータ数より多くのライトレジスタ
への書き込みデータ数に対応可能なデータアンパック演
算を、ライトを複数回に分けることなく並列的に実現可
能であることを特徴とするプロセッサ。 - 【請求項8】請求項1から5のいずれかに記載のプロセ
ッサにおいて、さらにライトレジスタ指定フィールド数
より多くのレジスタにライトできることから、入力デー
タ幅より広いデータ幅の出力を行う演算を、入力データ
に無効部分を作ることなく、さらにデータ幅の広い特別
なレジスタを実装することもなく、実現可能であること
を特徴とするプロセッサ。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000340239A JP3779540B2 (ja) | 2000-11-08 | 2000-11-08 | 複数レジスタ指定が可能なsimd演算方式 |
TW090120025A TWI229287B (en) | 2000-11-08 | 2001-08-15 | Single instruction multiple data (SIMD) processor capable of designating plural registers |
KR1020010050643A KR100859044B1 (ko) | 2000-11-08 | 2001-08-22 | 복수 레지스터 지정이 가능한 simd 연산방식 |
US09/944,409 US7043627B2 (en) | 2000-11-08 | 2001-09-04 | SIMD operation system capable of designating plural registers via one register designating field |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000340239A JP3779540B2 (ja) | 2000-11-08 | 2000-11-08 | 複数レジスタ指定が可能なsimd演算方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002149400A true JP2002149400A (ja) | 2002-05-24 |
JP3779540B2 JP3779540B2 (ja) | 2006-05-31 |
Family
ID=18815189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000340239A Expired - Fee Related JP3779540B2 (ja) | 2000-11-08 | 2000-11-08 | 複数レジスタ指定が可能なsimd演算方式 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7043627B2 (ja) |
JP (1) | JP3779540B2 (ja) |
KR (1) | KR100859044B1 (ja) |
TW (1) | TWI229287B (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007004542A (ja) * | 2005-06-24 | 2007-01-11 | Renesas Technology Corp | 半導体信号処理装置 |
US7185176B2 (en) | 2002-06-03 | 2007-02-27 | Matsushita Electric Industrial Co., Ltd, | Processor executing SIMD instructions |
US7313645B2 (en) | 2004-04-16 | 2007-12-25 | Sony Corporation | Processor to reduce data rearrangement instructions for matrices in multiple memory banks |
KR100800552B1 (ko) * | 2005-06-13 | 2008-02-04 | 재단법인서울대학교산학협력재단 | 벡터 메모리, 이를 구비한 프로세서 및 그 데이터 처리방법 |
JP2009048637A (ja) * | 2007-08-15 | 2009-03-05 | Nvidia Corp | グラフィックスプロセッサユニットパイプラインにおける読み出し及び書き込み可能な共有のグローバル値 |
JP2014530408A (ja) * | 2011-09-14 | 2014-11-17 | サムスン エレクトロニクスカンパニー リミテッド | プロセッシング装置及びスウィズルパターン生成器 |
JP2017138993A (ja) * | 2006-08-02 | 2017-08-10 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム |
JP2018516400A (ja) * | 2015-06-02 | 2018-06-21 | インテル・コーポレーション | パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム |
WO2020084694A1 (ja) * | 2018-10-23 | 2020-04-30 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257695B2 (en) * | 2004-12-28 | 2007-08-14 | Intel Corporation | Register file regions for a processing system |
JP4478050B2 (ja) * | 2005-03-18 | 2010-06-09 | 株式会社リコー | Simd型マイクロプロセッサ及びデータ処理方法 |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7962718B2 (en) * | 2007-10-12 | 2011-06-14 | Freescale Semiconductor, Inc. | Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US7877582B2 (en) * | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
US7849294B2 (en) * | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Sharing data in internal and memory representations with dynamic data-driven conversion |
KR20120077164A (ko) | 2010-12-30 | 2012-07-10 | 삼성전자주식회사 | Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법 |
US9727336B2 (en) | 2011-09-16 | 2017-08-08 | International Business Machines Corporation | Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9268571B2 (en) | 2012-10-18 | 2016-02-23 | Qualcomm Incorporated | Selective coupling of an address line to an element bank of a vector register file |
US9292298B2 (en) * | 2013-07-08 | 2016-03-22 | Arm Limited | Data processing apparatus having SIMD processing circuitry |
CN107688466B (zh) * | 2016-08-05 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种运算装置及其操作方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03260727A (ja) | 1990-03-09 | 1991-11-20 | Mitsubishi Electric Corp | レジスタ指定装置 |
JP2616182B2 (ja) * | 1990-08-29 | 1997-06-04 | 三菱電機株式会社 | データ処理装置 |
EP0640912B1 (en) | 1993-08-31 | 2000-05-10 | Sun Microsystems, Inc. | Memory addressing scheme for increasing the number of memory locations available in a computer for storing higher precision numbers |
JPH07200542A (ja) | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | ベクトル処理装置 |
CN101211255B (zh) | 1994-12-02 | 2012-07-04 | 英特尔公司 | 对复合操作数进行压缩操作的处理器、设备和计算*** |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6463525B1 (en) * | 1999-08-16 | 2002-10-08 | Sun Microsystems, Inc. | Merging single precision floating point operands |
US7668897B2 (en) * | 2003-06-16 | 2010-02-23 | Arm Limited | Result partitioning within SIMD data processing systems |
-
2000
- 2000-11-08 JP JP2000340239A patent/JP3779540B2/ja not_active Expired - Fee Related
-
2001
- 2001-08-15 TW TW090120025A patent/TWI229287B/zh not_active IP Right Cessation
- 2001-08-22 KR KR1020010050643A patent/KR100859044B1/ko not_active IP Right Cessation
- 2001-09-04 US US09/944,409 patent/US7043627B2/en not_active Expired - Lifetime
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7185176B2 (en) | 2002-06-03 | 2007-02-27 | Matsushita Electric Industrial Co., Ltd, | Processor executing SIMD instructions |
KR100940957B1 (ko) | 2002-06-03 | 2010-02-05 | 파나소닉 주식회사 | 프로세서 |
US7313645B2 (en) | 2004-04-16 | 2007-12-25 | Sony Corporation | Processor to reduce data rearrangement instructions for matrices in multiple memory banks |
KR100800552B1 (ko) * | 2005-06-13 | 2008-02-04 | 재단법인서울대학교산학협력재단 | 벡터 메모리, 이를 구비한 프로세서 및 그 데이터 처리방법 |
JP2007004542A (ja) * | 2005-06-24 | 2007-01-11 | Renesas Technology Corp | 半導体信号処理装置 |
JP2017138993A (ja) * | 2006-08-02 | 2017-08-10 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム |
JP2009048637A (ja) * | 2007-08-15 | 2009-03-05 | Nvidia Corp | グラフィックスプロセッサユニットパイプラインにおける読み出し及び書き込み可能な共有のグローバル値 |
JP2014530408A (ja) * | 2011-09-14 | 2014-11-17 | サムスン エレクトロニクスカンパニー リミテッド | プロセッシング装置及びスウィズルパターン生成器 |
KR101918464B1 (ko) * | 2011-09-14 | 2018-11-15 | 삼성전자 주식회사 | 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치 |
US11003449B2 (en) | 2011-09-14 | 2021-05-11 | Samsung Electronics Co., Ltd. | Processing device and a swizzle pattern generator |
JP2018516400A (ja) * | 2015-06-02 | 2018-06-21 | インテル・コーポレーション | パックドデータアライメントプラス演算命令、プロセッサ、方法、及びシステム |
US10936312B2 (en) | 2015-06-02 | 2021-03-02 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
WO2020084694A1 (ja) * | 2018-10-23 | 2020-04-30 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI229287B (en) | 2005-03-11 |
KR20020035739A (ko) | 2002-05-15 |
US7043627B2 (en) | 2006-05-09 |
KR100859044B1 (ko) | 2008-09-17 |
US20020026570A1 (en) | 2002-02-28 |
JP3779540B2 (ja) | 2006-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002149400A (ja) | 複数レジスタ指定が可能なsimd演算方式 | |
EP1692611B1 (en) | Method and apparatus for performing packed data operations with element size control | |
US6922716B2 (en) | Method and apparatus for vector processing | |
US9557994B2 (en) | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number | |
EP1692612B1 (en) | A data processing apparatus and method for moving data between registers and memory | |
EP1692613B1 (en) | A data processing apparatus and method for moving data between registers and memory | |
US7689811B2 (en) | Method and apparatus for constant generation in SIMD processing | |
US5001662A (en) | Method and apparatus for multi-gauge computation | |
US7145480B2 (en) | Data processing apparatus and method for performing in parallel a data processing operation on data elements | |
US7761693B2 (en) | Data processing apparatus and method for performing arithmetic operations in SIMD data processing | |
US20050198473A1 (en) | Multiplexing operations in SIMD processing | |
US6958718B2 (en) | Table lookup operation within a data processing system | |
US20050125647A1 (en) | Endianess compensation within a SIMD data processing system | |
US20050125635A1 (en) | Moving data between registers of different register data stores | |
US20050125631A1 (en) | Data element size control within parallel lanes of processing | |
US20050125638A1 (en) | Data shift operations | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
EP2267596B1 (en) | Processor core for processing instructions of different formats | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
US6859872B1 (en) | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation | |
US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
JP3186095B2 (ja) | 演算処理装置 | |
US20030163500A1 (en) | 64-bit scaled sum-of-product operations in a 32-bit environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040212 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050915 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050920 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051118 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20051118 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060126 |
|
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: 20060221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060302 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090310 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140310 Year of fee payment: 8 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |