JP2003241960A - プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 - Google Patents
プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法Info
- Publication number
- JP2003241960A JP2003241960A JP2002039106A JP2002039106A JP2003241960A JP 2003241960 A JP2003241960 A JP 2003241960A JP 2002039106 A JP2002039106 A JP 2002039106A JP 2002039106 A JP2002039106 A JP 2002039106A JP 2003241960 A JP2003241960 A JP 2003241960A
- Authority
- JP
- Japan
- Prior art keywords
- register
- processor
- data
- input
- instruction
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
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 Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
指定を追加し,SIMD演算器で並列に実行される演算
間でソフトウェアパイプライニングを可能にする。 【解決手段】 SIMD演算器の複数の出力を入れ替え
る操作を追加するセレクタをデータパスに追加し,レジ
スタファイルをSIMD演算器の出力のビットフィール
ドに対応して分割し,SIMD命令の出力オペランドと
して複数レジスタにまたがる指定を追加することによ
り,SIMD演算器で並列に実行される演算の出力結果
の一部分が,他の演算の入力となるレジスタに格納でき
るようにすることでソフトウェアパイプライニングを可
能にする。
Description
装置に用いられるプロセッサに関する。特に,複数の演
算を並列に処理するSIMD(Single Inst
ructionMultiple Data)方式を利
用したプロセッサ、該プロセッサにおける演算命令処理
方法及び演算制御方法に関する。
主に,動作周波数向上,1サイクル当たりの演算性能の
向上がある。今日のプロセッサでは,この両者を組み合
わせて演算性能の向上を実現している。
した技術の中に,SIMD(Single Instr
uction Multiple Data)方式があ
る。一般的にSIMD方式では,1個のデータ幅aビッ
トの演算器について,mをaの約数,a=bmとして,
データ幅bビットのm個の演算器としても使用できるよ
う構成されている。複数個の演算器として使用するモー
ドに対応する命令をSIMD命令と呼ぶ。
トウェア・ディベロッパーズ・マニュアル,中巻:命令
セットリファレンス”,インテル株式会社,1999に
SIMD命令が記載されている。pp.3−523に記
載のPMULHUW命令などがそれである。
の例を図1に示す。この例では64ビットの加算器を3
2ビットの加算器2個として使用している。131がS
IMD方式の加算器である。101は64ビット×64
個のレジスタファイルであり,2個のレジスタの読み出
しと,1個のレジスタの書き込みを同時に行うことがで
きる。111はレジスタファイル101の読み出し,お
よび書き込みを制御する信号である。121,122,
161は64ビット分のフリップフロップである。
101から読み出された2個の値は,クロックに同期し
てフリップフロップ121,122に取り込まれる。そ
の後に,フリップフロップ121,122の上位32ビ
ット部分がSIMD加算器131によって加算され,ク
ロックに同期してフリップフロップ161の上位32ビ
ット部分に取り込まれる。同時に,フリップフロップ1
21,122の下位32ビット部分がSIMD加算器1
31によって加算され,クロックに同期してフリップフ
ロップ161の下位32ビット部分に取り込まれる。フ
リップフロップ161に取り込まれた値は,制御信号1
11によってレジスタファイル101に書き込まれる。
す。SIMD方式の加算を行う命令の形式を図2に示
す。この命令のアセンブラでのニーモニック表記は,D
ADDRm,Rn,Rdであり,RmとRnは入力レジ
スタ,Rdは出力レジスタである。201〜206全体
で32ビットの命令コードである。201,203はそ
れぞれ6ビット,4ビットのビットフィールドで,オペ
コードである。206は4ビットのビットフィールドで
あり,予約フィールドである。202,204,205
は6ビットのビットフィールドで,202,204は入
力レジスタを指定するオペランド,205は出力レジス
タを指定するオペランドである。
レジスタの対応を図3に示す。301の列はオペランド
に記述されたビットパターンを示しており,302の列
はそれに対応するレジスタを示している。このように,
従来のSIMD方式ではオペランドを通常のレジスタの
単位で指定する。
SIMD方式ではSIMD命令のオペランド指定は通常
のレジスタ単位で行われ,同時に行われる演算について
各演算に対する入出力レジスタのビットフィールドの位
置は固定である。したがって,同時に行われる演算のど
れか1個のオペランドを決めると,その他の演算のオペ
ランドも自動的に決定する。
える。処理の内容は,メモリ上の3つの配列a[],b
[],c[]の各要素を添字毎に加算し,配列s[]に
格納するというものである。その処理の部分をC言語で
記述すると以下の式(1)の通りになる。
処理を行うことを考える。ここで,論理演算,シフト演
算と加算は並列に実行できないとする。ソフトウェアパ
イプライニングを用いた場合の処理の様子を図4に示
す。なお,メモリに対するロードストアについては省略
している。演算とロードストアが並列に実行できる場
合,命令を適切に配置することによりロードストアを考
えずに済むこともあるからである。
間を示している。511〜513は64ビットのレジス
タを示している。これらのレジスタはサイクル501で
行われる演算の入力となる。521〜523は64ビッ
トのレジスタを示している。これらのレジスタはサイク
ル501で行われた演算の出力であり,サイクル502
で行われる演算の入力である。531〜533は64ビ
ットのレジスタを示している。これらのレジスタはサイ
クル502で行われた演算の出力であり,サイクル50
3で行われる演算の入力である。541〜543は64
ビットのレジスタを示している。これらのレジスタはサ
イクル503で行われた演算の出力であり,サイクル5
04で行われる演算の入力である。551〜553は6
4ビットのレジスタを示している。これらのレジスタは
サイクル504で行われた演算の出力である。
541,551は別々に存在するのではなく,同一のレ
ジスタの内容が変化しているものである。すなわち,サ
イクル501〜504を経て,レジスタの内容が511
から521,531,541,551と変化している。
レジスタ512,522,532,542,552の組
み合わせ,レジスタ513,523,533,543,
553の組み合わせについても同様である。
れらは,SIMD方式によって1個の64ビット加算器
を分割して32ビット加算器として使用しているもので
ある。加算器514,515はサイクル501中におい
て演算を行う。544,545は加算器を示している。
加算器544,545はサイクル504中において演算
を行う。
するのではなく,同一の加算器がサイクル501,50
4にそれぞれ演算を行っているものである。加算器51
5,545の組み合わせについても同様である。524
は論理32ビットシフタであり,サイクル502中にお
いて演算を行う。また,534は64ビットの論理和演
算を行う演算器であり,サイクル503中において演算
を行う。
1番目の要素の加算処理を同時に行っており,サイクル
504ではi番目の要素とi+1番目の要素の加算処理
を同時に行っている。このように同一サイクルに異なる
要素の処理を行う技法をソフトウェアパイプライニング
と呼ぶ。サイクル502と503では,サイクル501
の加算器514の出力であるレジスタ523の上位32
ビットを,シフタ524でレジスタ533の下位32ビ
ットに移動し,レジスタ531との論理和を取ることに
より,レジスタ541の下位32ビットに格納してい
る。
ライニングを行う場合,加算器544の入力であるレジ
スタ541について,上位32ビット部分にはa[i+
1],下位32ビット部分には加算器514による演算
結果が格納されていなければならない。しかし,加算器
514による演算結果は必ずレジスタの上位32ビット
部分に格納されるため,下位32ビット部分に移動させ
るためにサイクル502,503の演算が必要となる。
この場合,1要素当たり3サイクルが必要となるため,
前述の理想状態と比較すると性能が1/3になることが
わかる。
パイプライニングを用いず,同時に2要素の処理を行う
場合を図5に示す。
間を示している。611〜613は64ビットのレジス
タを示している。これらのレジスタはサイクル601で
行われる演算の入力となる。621〜623は64ビッ
トのレジスタを示している。これらのレジスタはサイク
ル601で行われた演算の出力であり,サイクル602
で行われる演算の入力となる。631〜633は64ビ
ットのレジスタを示している。これらのレジスタはサイ
クル602で行われた演算の出力である。
別々に存在するのではなく,同一のレジスタの内容が変
化しているものである。すなわち,サイクル601,6
02を経て,レジスタの内容が611から621,63
1と変化している。レジスタ612,622,632の
組み合わせ,レジスタ613,623,633の組み合
わせについても同様である。
れらは,SIMD方式によって1個の64ビット加算器
を分割して32ビット加算器として使用しているもので
ある。加算器614,615はサイクル601中に演算
を行う。624,625は加算器を示している。加算器
624,625はサイクル602中に演算を行う。
するのではなく,同一の加算器がサイクル601,60
2にそれぞれ演算を行っているものである。加算器61
5,625の組み合わせについても同様である。
のi番目とi+1番目の処理を同時に行っている。サイ
クル602では,サイクル601の結果と配列c[]の
i番目,i+1番目の処理を同時に行っている。 この
場合,1要素当たり1サイクルの性能を達成できている
が,処理に必要となるレジスタ数が1/2個増加してお
り,好ましくない。ここで、レジスタ611,621,
631などは物理的なレジスタと見なされ、配列
a[]、b[]、c[]等は物理レジスタ内の論理レジ
スタ2個に格納されているデータに相当する。
ッサでは特定の処理を行う際に,実際の性能がピーク性
能より低くなる場合がある。特に,処理を構成する一連
の演算に依存関係があり,ソフトウェアパイプライニン
グが必要となる場合にこの現象が発生する。i番目とi
+1番目を同時に処理するようなピーク性能の低下を免
れる方法もあるが,その場合には理想ケースよりもレジ
スタ数が余計に必要となる。これは,SIMD命令での
入出力レジスタ指定の自由度の低さに起因するものであ
る。
に鑑み,SIMD命令の出力レジスタ指定に新たな指定
を追加,拡張し,その拡張された機能を実現できるよ
う,SIMD演算器のデータパスを変更する。具体的に
は,SIMD演算器の演算結果の出力先が複数レジスタ
にまたがり,また,入力ビットフィールド部分とは異な
る部分に格納するオペランド指定をSIMD命令に追加
し,また,複数レジスタの部分部分に書き込みができる
ようにする。
4の出力をレジスタ541の下位32ビット部分に格納
するオペランド指定方法を追加することに相当する。以
上が問題を解決するための手段である。
示す。
ータパスの実施例である。731は64ビットの演算器
を32ビットの演算器2個に分割したSIMD演算器で
ある。701,702は32ビット×64個のレジスタ
ファイルであり,それぞれ2個のレジスタの読み出し
と,1個のレジスタの書き込みを同時に行うことができ
る。711,712はそれぞれレジスタファイル70
1,702の読み出し,および書き込みを制御する信号
である。721,722は64ビット分のフリップフロ
ップであり,761、762は各々32ビット分のフリ
ップフロップである。741,742は32ビットのセ
レクタであり,751はセレクタ741,742の出力
を制御する信号である。
て,制御信号711,712によるレジスタ指定を同一
とすると,従来SIMD方式でのレジスタファイル10
1(図1)と同等の動作となる。すなわちレジスタファ
イル701にはレジスタファイル101の上位32ビッ
ト部分に相当するデータ,レジスタファイル702には
レジスタファイル101の下位32ビット部分に相当す
るデータが格納されている。
比較すると,レジスタファイルが上位32ビット分と下
位32ビット分に分割されていることと,演算器データ
パスにSIMD演算器の出力の上位部分と下位部分を交
換するためのセレクタ741,742,およびその制御
信号751が追加されていることが本発明の特徴であ
る。
701から読み出された2個の値は,クロックに同期し
てフリップフロップ721,722の上位32ビット部
分に取り込まれる。制御信号712によってレジスタフ
ァイル702から読み出された2個の値は,クロックに
同期してフリップフロップ721,722の下位32ビ
ット部分に取り込まれる。
2の上位32ビット部分がSIMD演算器731によっ
て演算され,結果がフリップフロップ761に格納され
る。さらに、フリップフロップ761から演算結果がセ
レクタ741,742に入力される。同時にフリップフ
ロップ721,722の下位32ビット部分がSIMD
演算器731によって演算され,結果がフリップフロッ
プ762に格納される。さらに、フリップフロップ76
2から演算結果がセレクタ741,742に入力され
る。
は,制御信号711によってレジスタファイル701に
書き込まれる。又、セレクタ742を介して演算結果
は,制御信号712によってレジスタファイル702に
書き込まれる。
本発明のSIMD方式の加算を行う命令の形式を図7に
示す。この命令のアセンブラでのニーモニック表記は,
DADD Rm,Rn,RdもしくはDADD Rm,
Rn,Rd1&Rd2である。RmとRnは入力レジス
タ,Rd,Rd1,Rd2は出力レジスタである。後者
の命令では本発明のSIMD方式の動作となる。801
〜806に示すビットフィールドが図2の201〜20
6に示すビットフィールドに対応する。
06は予約フィールド,802,804は入力レジスタ
を指定するオペランド,805は出力レジスタを指定す
るオペランドである。805について,205では6ビ
ットのビットフィールドであるのに対し,7ビットのビ
ットフィールドである。806について,206では4
ビットのビットフィールドであるのに対し,3ビットの
ビットフィールドである。802,804の値と指定さ
れるレジスタの対応は図2と同じである。
図8に示す。901の列はオペランドに記述されたビッ
トパターンを示している。902の列はSIMD演算器
731の上位32ビット部分の結果を格納するレジスタ
を示している。903の列は下位32ビット部分の格納
先である。
32ビット部分の格納先がレジスタの上位32ビット部
分であり,下位32ビット部分は同一レジスタの下位3
2ビット部分である。ここで、図6のRd1,Rd2は
同一レジスタRdを論理的に分割したレジスタと見な
す。
結果の上位32ビット部分を出力し,セレクタ742は
演算結果の下位32ビット部分を出力する。また,レジ
スタファイル701,702に対する制御信号711,
712は書き込みレジスタとして同一のレジスタを指示
する。
32ビット部分はレジスタRd1に出力される。このレ
ジスタRd1が有するデータの格納先はセレクタ742
を介したレジスタファイル702が有する1つのレジス
タの下位32ビット部分である。演算結果の下位32ビ
ット部分はレジスタRd2に出力される。このレジスタ
Rd2が有するデータの格納先はセレクタ741を介し
た他のレジスタファイル701が有する1つのレジスタ
の上位32ビット部分である。
結果の下位32ビット部分を出力し,セレクタ742は
演算結果の上位32ビット部分を出力する。また,レジ
スタファイル701,702に対する制御信号711,
712は書き込みレジスタであるRd1,Rd2にした
がって異なるレジスタを指示する。
技術的思想のもとに種々の変形が可能である。例を示す
と,図7に示した出力レジスタ指定オペランド805の
代わりに,入力レジスタ指定オペランド802,804
について805と同様の拡張を行い,SIMD演算器の
入力を異なるレジスタのそれぞれ一部分とする,などの
方法も考えられる。
各要素を加算し,配列s[]に格納する処理を,本発明
のSIMD方式を用いて処理する場合,処理ルーチンの
命令列は,例えば,DADD R0,R1,R0_L&
R2_Hの1命令をループさせればよい。このときの処
理の様子を図9に示す。なお,前述の処理例と同様,ロ
ードストアは考えなくともよいと仮定し,省略してい
る。
の期間を示している。1011〜1013はレジスタで
あり,サイクル1001で行われる演算の入力となる。
1021〜1023はレジスタであり,サイクル100
1で行われた演算の出力であり,サイクル1002で行
われる演算の入力となる。1031〜1033はレジス
タであり,サイクル1002で行われた演算の出力であ
る。また,前述の図4の場合と同様,レジスタ101
1,1021,1031は同一のレジスタの内容が変化
しているものである。レジスタ1012,1022,1
032の組み合わせ,レジスタ1013,1023,1
033の組み合わせについても同様である。
り,サイクル1001中に演算を行う。1024,10
25は加算器であり,サイクル1002中に演算を行
う。また,前述の図4の場合と同様,加算器1014,
1024は同一の加算器である。加算器1015,10
25の組み合わせについても同様である。
ジスタ1011の上位部分にa[i]が,レジスタ10
12の上位部分にb[i]がそれぞれロードされてお
り,サイクル1001に加算器1014で加算され,レ
ジスタ1021の下位部分にd[i]として格納され
る。また,レジスタ1022の下位部分にはc[i]の
値がロードされており,サイクル1002にレジスタ1
021の下位部分に格納されるd[i]と加算器102
5によって加算され,レジスタ1033の上位部分にS
[i]として格納される。
理の他に,加算器1024でi+1番目の要素の処理
を,サイクル1001には,i番目の要素の処理の他
に,加算器1015でi−1番目の要素の処理を行って
おり,本発明のSIMD方式では,図4の場合と同様に
ソフトウェアパイプライニングを行うことができ,1要
素当たり1サイクルにて処理を行うことができる。
ッサ構成例におけるレジスタファイル701,702の
詳細図を示している。さらに図10(a),(b)を用
いて、従来の図5に示す動作例と照らし合わせた本発明
の図9に示す動作例の特徴とその効果について以下に述
べる。
タの上位ビットであるa[i]とR1レジスタの上位ビ
ットであるb[i]を加算した結果は必ずd[i]とし
てR0レジスタの上位ビットに格納され、R0レジスタ
の下位ビットであるa[i+1]とR1レジスタの下位
ビットであるb[i+1]を加算した結果は必ずd[i
+1]としてR0レジスタの下位ビットに格納される必
要が有った。それ故、図10(a)のようにR0レジス
タに対する書き込み指示である1つの制御信号111に
よりR0レジスタの上位と下位ビットに加算結果が書き
込まれた。
如くR2レジスタの上位ビットに対する書き込み指示を
行う第1制御信号711とR0レジスタの下位ビットに
対する書き込み指示を行う第2制御信号712に従い、
図9に示す如くd[i]としてR0レジスタの下位ビッ
トに格納し、S[i−1]としてR2レジスタの上位ビ
ットに格納出来る。つまり、書き込み先のレジスタ及び
該レジスタの上位/下位ビットを第1制御信号711と
第2制御信号712の入力に基づき、任意に指定出来る
という特徴がある。
式の命令を有するプロセッサの特徴について述べたが、
さらに上述した実施例に示すプロセッサは、以下に示す
項目(a)〜(e)の特徴点を有するプロセッサとして
提供することも可能である。
するプロセッサから構成され,前記第1レジスタが有す
る一部分のデータと前記第2レジスタの対応する一部分
のデータを演算するとともに,前記第3レジスタが有す
る他の一部分のデータと前記第4レジスタの対応する他
の一部分のデータを演算する命令を有し,前記プロセッ
サによる前記命令の実行に従い、前記一部分のデータと
前記対応する一部分のデータとの前記演算を行い、前記
プロセッサは第1演算結果を前記第5レジスタの他の一
部分に格納し,前記他の一部分のデータと前記対応する
他の一部分のデータとの前記演算を行い、第2演算結果
を前記第6レジスタの一部分に格納することを特徴とす
るプロセッサ。
タが同一であり,前記第2レジスタと前記第4レジスタ
が同一であり、さらに前記第1レジスタと前記第5レジ
スタが同一であることを特徴とする、上記(a)に記載
のプロセッサ。
第2制御信号を有し、前記第1制御信号の入力に基づき
前記第1演算結果を前記第5レジスタの他の一部分に格
納し、前記第2制御信号の入力に基づき前記第2演算結
果を前記第6レジスタの一部分に格納することを特徴と
する、上記(b)に記載のプロセッサ。
2セレクタを備え、前記第1セレクタ及び第2セレクタ
は前記第1演算結果或いは前記第2演算結果を前記第5
レジスタの他の一部分或いは前記第6レジスタの一部分
に格納するデータパスを確立する為に設けられることを
特徴とする、上記(a)に記載のプロセッサ。
タが格納されるビットフィールドに対応して分割された
レジスタファイルを具備することを特徴とする、上記
(a)に記載のプロセッサ。
ロセッサ並びに上述した項目(a)から(e)の特徴を
有するプロセッサを提供するばかりでなく、以下に示す
項目(i)〜(iii)の特徴を備えたプロセッサを提
供することも可能である。
演算回路を備え、複数の制御信号を有するプロセッサか
ら構成され、該プロセッサはさらに第1及び第2入力レ
ジスタと複数の出力レジスタを備え、前記複数のレジス
タファイルの1つのレジスタから入力される前記第1入
力レジスタの一部分のデータ及び他の1つのレジスタか
ら入力される前記第2入力レジスタの対応する一部分の
データを前記演算回路が有する演算命令に基づき、演算
し、該演算の結果を前記制御信号の1つの入力に従い前
記出力レジスタの対応する一部分以外の部分に格納する
ことを特徴とするプロセッサ。
前記第1入力レジスタの他の一部分のデータ及び前記第
2入力レジスタの対応する他の一部分のデータを前記演
算回路が有する演算命令に基づき、演算し、該演算の結
果を前記制御信号の他の1つの入力に従い前記出力レジ
スタの前記対応する一部分に格納することを特徴とす
る、上記(i)に記載のプロセッサ。
レクタと第2セレクタを備え、前記演算の結果は第1演
算結果と第2演算結果を含み、前記第1セレクタ及び第
2セレクタは前記第1演算結果或いは前記第2演算結果
を前記出力レジスタの前記対応する一部分或いは前記対
応する一部分以外の部分に格納するデータパスを確立す
る為に設けられることを特徴とする、上記(ii)に記
載のプロセッサ。
する演算命令に基づく演算処理の方法として、以下に示
す項目(1)〜(2)の特徴を備えたプロセッサにおけ
る演算命令処理方法を提供しうる。
における演算命令処理方法において、前記複数のレジス
タの1つのレジスタから入力される第1入力レジスタの
一部分のデータ及び他の1つのレジスタから入力される
第2入力レジスタの対応する一部分のデータを演算する
ステップと、前記演算の結果を出力レジスタの対応する
一部分以外の部分に格納するステップとを含むことを特
徴とする演算命令処理方法。
の一部分のデータ及び前記第2入力レジスタの対応する
他の一部分のデータを演算し、該演算結果を前記出力レ
ジスタの前記対応する一部分に格納するステップを含む
ことを特徴とする、上記(1)に記載の演算命令処理方
法。
する演算命令に従い、演算を制御する方法として、以下
に示す項目(I)から(II)の特徴を有する演算制御
方法を提供することも可能である。
え、第1制御信号、第2制御信号及び演算命令を有する
プロセッサにおける演算制御方法において、前記第1レ
ジスタが有する一部分のデータと前記第2レジスタが有
する対応する一部分のデータを前記演算命令の実行に従
い、演算するステップと、前記演算の結果を前記第1制
御信号或いは第2制御信号の内何れかの入力により、前
記第5レジスタが有する対応する一部分以外のデータ部
に格納するステップとを含むことを特徴とする演算制御
方法。
さらに前記第3レジスタが有する他の一部分のデータと
前記第4レジスタが有する対応する他の一部分のデータ
を前記演算命令の実行に従い、演算し、前記演算の結果
を前記第1制御信号或いは第2制御信号の内何れかの入
力により、前記第6レジスタが有する前記一部分のデー
タ部に格納するステップを含むことを特徴とする、上記
(I)に記載の演算制御方法。
るプロセッサを提供することにより、以下に示す効果が
挙げられる。
指定を追加,拡張し,その拡張された機能を実現できる
よう,SIMD演算器のデータパスを変更することによ
り、複数レジスタの部分部分に書き込みができるように
なる。
イプライニングが可能となり、プロセッサ演算性能が向
上する。
す図である。
を示す図である。
レジスタ表を示す図である。
ニングを用いた場合の処理の様子を示す図である。
ニングを用いない場合の処理の様子を示す図である。
示す図である。
式を示す図である。
図である。
イニングを用いた場合の処理の様子を示す図である。
レジスタファイルに対する演算結果書き込み動作を示す
図であり、図10(b)は、本発明のSIMD方式にお
けるレジスタファイルに対する演算結果書き込み動作を
示す図である。
レジスタファイル読み出し,および書き込み制御信号,
721,722,761:フリップフロップ,731:
SIMD演算器,741,742:セレクタ,751:
セレクタ制御信号、801,803:SIMD命令のオ
ペコード,806:予約フィールド,802,804:
入力レジスタ指定オペランド,805:出力レジスタ指
定オペランド、901:オペランド805のビットパタ
ーン,902:901に対応するSIMD演算器の演算
結果の上位部分の格納先レジスタ,903:901に対
応するSIMD演算器の演算結果の下位部分の格納先レ
ジスタ、1001,1002:1クロックサイクル期
間,1011〜1013:レジスタ,1014,101
5:SIMD加算器,1021〜1023:サイクル1
001でレジスタ1011〜1013が変更された結果
の値,1024,1025:1014,1015と同一
のSIMD加算器,1031〜1033:サイクル10
02でレジスタ1011〜1013が変更された結果の
値。
Claims (12)
- 【請求項1】第1レジスタから第6レジスタを有するプ
ロセッサから構成され,前記第1レジスタが有する一部
分のデータと前記第2レジスタの対応する一部分のデー
タを演算するとともに,前記第3レジスタが有する他の
一部分のデータと前記第4レジスタの対応する他の一部
分のデータを演算する命令を有し,前記プロセッサによ
る前記命令の実行に従い、前記一部分のデータと前記対
応する一部分のデータとの前記演算を行い、前記プロセ
ッサは第1演算結果を前記第5レジスタの他の一部分に
格納し,前記他の一部分のデータと前記対応する他の一
部分のデータとの前記演算を行い、第2演算結果を前記
第6レジスタの一部分に格納することを特徴とするプロ
セッサ。 - 【請求項2】請求項1に記載のプロセッサであって,前
記第1レジスタと前記第3レジスタが同一であり,前記
第2レジスタと前記第4レジスタが同一であり、さらに
前記第1レジスタと前記第5レジスタが同一であること
を特徴とするプロセッサ。 - 【請求項3】請求項2に記載のプロセッサであって,前
記プロセッサは第1制御信号及び第2制御信号を有し、
前記第1制御信号の入力に基づき前記第1演算結果を前
記第5レジスタの他の一部分に格納し、前記第2制御信
号の入力に基づき前記第2演算結果を前記第6レジスタ
の一部分に格納することを特徴とするプロセッサ。 - 【請求項4】請求項1に記載のプロセッサであって,前
記プロセッサは第1セレクタと第2セレクタを備え、前
記第1セレクタ及び第2セレクタは前記第1演算結果或
いは前記第2演算結果を前記第5レジスタの他の一部分
或いは前記第6レジスタの一部分に格納するデータパス
を確立する為に設けられることを特徴とするプロセッ
サ。 - 【請求項5】請求項1に記載のプロセッサであって,前
記一部分と前記他の一部分のデータが格納されるビット
フィールドに対応して分割されたレジスタファイルを具
備することを特徴とするプロセッサ。 - 【請求項6】複数のレジスタを備えたプロセッサにおけ
る演算命令処理方法において、 前記複数のレジスタの1つのレジスタから入力される第
1入力レジスタの一部分のデータ及び他の1つのレジス
タから入力される第2入力レジスタの対応する一部分の
データを演算するステップと、 前記演算の結果を出力レジスタの対応する一部分以外の
部分に格納するステップとを含むことを特徴とする演算
命令処理方法。 - 【請求項7】請求項6に記載の演算命令処理方法におい
て、 さらに、前記第1入力レジスタの他の一部分のデータ及
び前記第2入力レジスタの対応する他の一部分のデータ
を演算し、該演算結果を前記出力レジスタの前記対応す
る一部分に格納するステップを含むことを特徴とする演
算命令処理方法。 - 【請求項8】第1レジスタから第6レジスタを備え、第
1制御信号、第2制御信号及び演算命令を有するプロセ
ッサにおける演算制御方法において、 前記第1レジスタが有する一部分のデータと前記第2レ
ジスタが有する対応する一部分のデータを前記演算命令
の実行に従い、演算するステップと、 前記演算の結果を前記第1制御信号或いは第2制御信号
の内何れかの入力により、前記第5レジスタが有する対
応する一部分以外のデータ部に格納するステップとを含
むことを特徴とする演算制御方法。 - 【請求項9】請求項8に記載の演算制御方法であって,
前記演算命令は加算命令であり、さらに前記第3レジス
タが有する他の一部分のデータと前記第4レジスタが有
する対応する他の一部分のデータを前記演算命令の実行
に従い、演算し、前記演算の結果を前記第1制御信号或
いは第2制御信号の内何れかの入力により、前記第6レ
ジスタが有する前記一部分のデータ部に格納するステッ
プを含むことを特徴とする演算制御方法。 - 【請求項10】複数のレジスタファイル及び複数の演算
回路を備え、複数の制御信号を有するプロセッサから構
成され、該プロセッサはさらに第1及び第2入力レジス
タと複数の出力レジスタを備え、 前記複数のレジスタファイルの1つのレジスタから入力
される前記第1入力レジスタの一部分のデータ及び他の
1つのレジスタから入力される前記第2入力レジスタの
対応する一部分のデータを前記演算回路が有する演算命
令に基づき、演算し、該演算の結果を前記制御信号の1
つの入力に従い前記出力レジスタの対応する一部分以外
の部分に格納することを特徴とするプロセッサ。 - 【請求項11】請求項10記載のプロセッサにおいて、 前記演算命令は加算命令であり、前記第1入力レジスタ
の他の一部分のデータ及び前記第2入力レジスタの対応
する他の一部分のデータを前記演算回路が有する演算命
令に基づき、演算し、該演算の結果を前記制御信号の他
の1つの入力に従い前記出力レジスタの前記対応する一
部分に格納することを特徴とするプロセッサ。特徴とす
るプロセッサ。 - 【請求項12】請求項11に記載のプロセッサであっ
て,前記プロセッサはさらに第1セレクタと第2セレク
タを備え、前記演算の結果は第1演算結果と第2演算結
果を含み、前記第1セレクタ及び第2セレクタは前記第
1演算結果或いは前記第2演算結果を前記出力レジスタ
の前記対応する一部分或いは前記対応する一部分以外の
部分に格納するデータパスを確立する為に設けられるこ
とを特徴とするプロセッサ。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002039106A JP3753991B2 (ja) | 2002-02-15 | 2002-02-15 | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
| US10/320,615 US7454594B2 (en) | 2002-02-15 | 2002-12-17 | Processor for realizing software pipelining with a SIMD arithmetic unit simultaneously processing each SIMD instruction on a plurality of discrete elements |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002039106A JP3753991B2 (ja) | 2002-02-15 | 2002-02-15 | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2003241960A true JP2003241960A (ja) | 2003-08-29 |
| JP3753991B2 JP3753991B2 (ja) | 2006-03-08 |
Family
ID=27678223
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002039106A Expired - Fee Related JP3753991B2 (ja) | 2002-02-15 | 2002-02-15 | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US7454594B2 (ja) |
| JP (1) | JP3753991B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007034473A (ja) * | 2005-07-25 | 2007-02-08 | Ricoh Co Ltd | Simd型マイクロプロセッサにおけるデータ処理方法 |
| JP2010118075A (ja) * | 2010-02-15 | 2010-05-27 | Ricoh Co Ltd | Simd型マイクロプロセッサ |
| JP2016212573A (ja) * | 2015-05-07 | 2016-12-15 | 富士通株式会社 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7293056B2 (en) * | 2002-12-18 | 2007-11-06 | Intel Corporation | Variable width, at least six-way addition/accumulation instructions |
| CN101324837B (zh) * | 2008-07-21 | 2010-06-23 | 北京大学 | 一种微处理器内部寄存器堆的设计和访问方法 |
| US20100312655A1 (en) * | 2009-06-09 | 2010-12-09 | Bernard Farkas | System and method for advertising and selling published material using social and computer networks |
| US9606797B2 (en) * | 2012-12-21 | 2017-03-28 | Intel Corporation | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor |
| CN107220024B (zh) * | 2017-05-19 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于fpga的数据处理方法、装置及系统 |
| KR102800488B1 (ko) * | 2019-12-06 | 2025-04-25 | 삼성전자주식회사 | 연산 장치, 그것의 동작 방법 및 뉴럴 네트워크 프로세서 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5327058B2 (ja) | 1973-08-21 | 1978-08-05 | ||
| GB9509989D0 (en) * | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
| WO1998045774A1 (fr) | 1997-04-08 | 1998-10-15 | Sony Computer Entertainment Inc. | Unite arithmetique et procede correspondant |
| US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
-
2002
- 2002-02-15 JP JP2002039106A patent/JP3753991B2/ja not_active Expired - Fee Related
- 2002-12-17 US US10/320,615 patent/US7454594B2/en not_active Expired - Lifetime
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2007034473A (ja) * | 2005-07-25 | 2007-02-08 | Ricoh Co Ltd | Simd型マイクロプロセッサにおけるデータ処理方法 |
| JP2010118075A (ja) * | 2010-02-15 | 2010-05-27 | Ricoh Co Ltd | Simd型マイクロプロセッサ |
| JP2016212573A (ja) * | 2015-05-07 | 2016-12-15 | 富士通株式会社 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3753991B2 (ja) | 2006-03-08 |
| US20030159022A1 (en) | 2003-08-21 |
| US7454594B2 (en) | 2008-11-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
| US6061780A (en) | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units | |
| US5859789A (en) | Arithmetic unit | |
| US5996057A (en) | Data processing system and method of permutation with replication within a vector register file | |
| US6334176B1 (en) | Method and apparatus for generating an alignment control vector | |
| US9965275B2 (en) | Element size increasing instruction | |
| JP3954171B2 (ja) | コンピュータにおけるスカラ値をベクトルに記入する方法 | |
| JP2019519864A (ja) | ベクトルレジスタのアクセス | |
| JP3753991B2 (ja) | プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法 | |
| US6915411B2 (en) | SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath | |
| US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
| US7769982B2 (en) | Data processing apparatus and method for accelerating execution of subgraphs | |
| EP1193594B1 (en) | Register renaming apparatus and processor | |
| WO2000068783A2 (en) | Digital signal processor computation core | |
| US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
| US7747667B2 (en) | Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation | |
| US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
| JP4686435B2 (ja) | 演算装置 | |
| US6859872B1 (en) | Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation | |
| US20060184602A1 (en) | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value | |
| US7237000B2 (en) | Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly | |
| CN114008603B (zh) | 数据路径块电路和使用数据路径块电路的方法 | |
| US6792442B1 (en) | Signal processor and product-sum operating device for use therein with rounding function | |
| JP3547316B2 (ja) | プロセッサ | |
| JP3532026B2 (ja) | 演算装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040326 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040329 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050901 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051107 |
|
| RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20051107 |
|
| 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: 20051206 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051214 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3753991 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081222 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091222 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 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: 20101222 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: 20101222 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131222 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 |