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
Application number
JP2000340239A
Other languages
English (en)
Other versions
JP3779540B2 (ja
Inventor
Tatehisa Shimizu
健央 清水
Fumio Arakawa
文男 荒川
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000340239A priority Critical patent/JP3779540B2/ja
Priority to TW090120025A priority patent/TWI229287B/zh
Priority to KR1020010050643A priority patent/KR100859044B1/ko
Priority to US09/944,409 priority patent/US7043627B2/en
Publication of JP2002149400A publication Critical patent/JP2002149400A/ja
Application granted granted Critical
Publication of JP3779540B2 publication Critical patent/JP3779540B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent 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

(57)【要約】 【課題】 SIMDプロセッサの高速化においては、レ
ジスタ内データ整列など、SIMD演算の効果を妨げる
要因を軽減する必要がある。 【解決手段】 レジスタファイルを4個のバンクに分け
て、1個のオペランドで複数個のレジスタを指定できる
ようにして、4個のレジスタを同時にアクセスできるよ
うにすることによって、データ整列演算パイプ211に
多数のデータを供給でき、高速にデータ整列演算を行う
ことができる。また、新規のデータパック命令・データ
アンパック命令・データ並べ替え命令を定義することに
よって、その多量に供給されるデータを効率よく整列さ
せることができる。さらに、上記の特徴により、SIM
Dの並列性を最大限に生かした積和演算命令の定義が可
能である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、SIMD(Single
Instruction Multiple Data)プロセッサにおけるレジ
スタ指定方式および、レジスタ内データ整列処理に関す
るものであり、SIMDの並列処理性能を低下させる惧
れの有るレジスタ内データ整列を高速に行う手段に関す
るものである。
【0002】またDSP(Digital Signal Processin
g)命令として標準的な積和演算に関して、SIMDの
並列性を維持したまま、精度を落とすことなく演算させ
ることが可能な手段に関するものである。
【0003】
【従来の技術】3次元グラフィックス等で必要となるベ
クトル演算処理を行う際に、1つのレジスタ指定フィー
ルドで連続した複数個のレジスタを指定できるようにし
て、ベクトル演算を行わせるような方法が、特開平10
−124484の特許で既に公開されている。
【0004】また、レジスタ内データ整列命令として
は、モトローラ社が開発したマルチメディア向け命令セ
ットAltivecの、「AltiVec Progr
amming Interface Manual」に
4オペランドまで指定可能な各種データ整列命令が記述
されている。
【0005】さらに積和演算に関しては、SIMDの並
列性を4並列から2並列に半減させた形で実現するよう
な精度落ちのない積和演算命令が、日立製作所とSTマ
イクロエレクトロニクスの共同開発のSH5アーキテク
チャで定義されている。
【0006】
【発明が解決しようとする課題】しかし、特開平10−
124484に示されたベクトル演算処理においては、
複数のレジスタ指定において、4の倍数の番号のみしか
指定できない構成と成っているため自由度が乏しく、ま
たAltivecのデータ整列命令においては、演算装
置が大型で高価である上にソースレジスタとして3個し
か指定できず、データパックやアンパックといったSI
MD特有の演算を効率良く行うことができない。従っ
て、SIMDの並列性を十分に達成できていない。
【0007】本発明の主たる目的は、SIMD命令の効
果を最大限にあげるための、データ整列に関する手段を
提供するものである。
【0008】また本発明の他の目的は、DSP命令とし
て標準的な積和演算命令をSIMDの並列性を落とすこ
となく、しかも精度を保ったままで実現する1手段を提
供するものである。
【0009】
【課題を解決するための手段】本願において開示される
発明のうち代表的なものの概要を簡単に説明すれば下記
の通りである。
【0010】本発明は、命令コードと、少なくとも1つ
のレジスタ指定フィールドからなる演算命令を有し、少
なくとも1つのレジスタ指定フィールドは連続番号の複
数個のレジスタが指定可能であることを特徴とする。
【0011】さらに本発明は、任意数のレジスタ指定フ
ィールドの内、1フィールドで複数のリードレジスタを
指定するデコーダと、デコーダからの出力に従って連続
番号の複数個のレジスタ内データを出力するレジスタフ
ァイルとを具備することを特徴とする。
【0012】さらに本発明は、任意数のレジスタ指定フ
ィールドの内、1フィールドで複数のライトレジスタを
指定するデコーダと、デコーダからの出力に従って連続
番号の複数個のレジスタに値を書き込めるレジスタファ
イルとを具備することを特徴とする。
【0013】上記レジスタファイルは複数のバンクを有
し、複数のバンクからリードまたはライトを行うことに
より、各バンクのリードまたはライトポート数をレジス
タ指定フィールド数以下に制限して、フィールド数より
多くのリードまたはライトを行うことによる回路規模の
増大を抑制したものである。
【0014】上記連続番号の複数個のレジスタ数は2の
n乗個(nは自然数)と限定して、レジスタ選択回路の
削減を可能としたものである。
【0015】さらにリードレジスタ指定フィールド数よ
り多くの数のレジスタからデータをリードするため、ラ
イトレジスタへの書き込みデータ数より多くのリードレ
ジスタからの読み出しデータ数に対応可能なデータパッ
ク演算を、ライトレジスタに無効な部分を生成すること
なく実現可能であることを特徴とする。
【0016】又さらにライトレジスタ指定フィールド数
より多い数のレジスタにライトできることから、リード
レジスタの読み出しデータ数より多くのライトレジスタ
への書き込みデータ数に対応可能なデータアンパック演
算を、ライトを複数回に分けることなく並列的に実現可
能であることを特徴とする。
【0017】さらにライトレジスタ指定フィールド数よ
り多くのレジスタにライトできることから、入力データ
幅より広いデータ幅の出力を行う演算を、入力データに
無効部分を作ることなく、さらにデータ幅の広い特別な
レジスタを実装することもなく、実現可能であることを
特徴とする。
【0018】さらにデータ整列を行うパイプなど、レジ
スタ指定フィールドの数以上のデータを必要とするパイ
プに、それぞれデータを供給するために、レジスタと演
算パイプ間には、汎用のバスの他に、複数本のデータ用
バスを設けていることを特徴とする。
【0019】さらにデータアンパック命令、並べ替え命
令、行列演算命令、積和演算命令など、複数個の結果を
出力するパイプのために、レジスタと演算パイプ間に、
レジスタ書き込み用として複数本のデータ用バスを設け
ていることを特徴とする。
【0020】
【発明の実施の形態】以下、図面を参照して本発明の実
施例を詳細に説明する。尚、実施例を説明するための全
図において、同一機能を有するものは同一符号を付け、
その繰り返しの説明は省略する。
【0021】図1には、本発明の実施例であるSIMD
プロセッサのCPUブロック図の概略を示す。ただし、
このCPUブロック部は、図2に示されるマイクロコン
ピュータのレイアウトにおけるCPU200の部分を指
すものとする。尚、図2においてFPUは浮動小数点演
算ユニット、CCNはキャッシュ・コントローラ、BS
Cはバスステートコントローラ、TLBはトランスレー
ション・ルックアサイド・バッファーを示し、これらの
レイアウトは周知の構成である。
【0022】同図1に示されるSIMDプロセッサは、
64bitRISC(Reduced Instruction Set Comput
er)アーキテクチャを例として採用して、オペランドを
3個有し、32bit固定長命令を実行するものとす
る。
【0023】この図1の例では、演算パイプとして、デ
ータ整列(ALN)・乗算(MUL)・整数演算(IN
T)・ロード/ストア(LD/ST)・分岐(BRA)
の5つをもつようなSIMDプロセッサを想定してい
る。
【0024】図3には、上記SIMDプロセッサのCP
Uブロック図のうち、命令デコード部からレジスタファ
イル213へのアクセス部について詳細に示してある。
【0025】命令コード201のレジスタ指定フィール
ドの1つであるmには、R0〜R63までのいずれかの
レジスタ番号が指定され、そのコードはデコーダ202
によりデコードされて、各レジスタに直接アクセスでき
る。
【0026】このデコーダ202は、図4に示す真理値
表を満たす論理回路で構成される。図4からもわかるよ
うに、出力64本のうち、4本がhighとなり、4つ
の連続したレジスタを1度に指定することができる。各
バンクから読み出されたデータは、セレクタ204とセ
レクタ205へ出力される。セレクタ205には、制御
信号として、オペランドコードmの下位2bitを入力
し、入力用の汎用バス206へ出力するデータを決定す
る。
【0027】セレクタ204にも同様に各バンクからの
データが入力され、汎用バスへ出力されるデータを除い
た残りのデータを出力する制御信号としては、セレクタ
205と同じオペランドコードmの下位2bitを使
う。
【0028】図5にセレクタ204と205の出力の様
子を示す真理値表を示す。表中のaとbは、前述のオペラ
ンドコードmの下位2bitを意味し、セレクタ205
の出力が「To 206」と対応し、セレクタ204の
出力が「To 307」と対応する。又、この真理値表
の「To 206」欄及び「To 307」欄の出力値
として表現されているX0〜X3の「X」はBNK(す
なわち、バンク)を表している。
【0029】これらセレクタ204と205の出力は、
各バンク毎にお互い排他的であり、この図5に示される
真理値表を満たすような論理回路でセレクタ204と2
05は構成される。
【0030】各バンクについては、バンク3(図3内2
03に相当する)の詳細図が図6に示されているが、バ
ンク3(203)に存在する各レジスタは、この例にお
いては1bitあたり2read・1writeの標準
的なもので構成される。
【0031】図3において、バンク0には、R0・R4
・…・R4nの16個のレジスタが格納され、バンク1
には、R1・R5・…・R4n+1の16個、バンク2
には、R2・R6・…・R4n+2の16個、バンク3
には、R3・R7・…・R4n+3の16個が格納され
ている。
【0032】図1に示す通り、各演算パイプで実行され
た演算結果は、出力用の汎用バス207に出力される。
またこの例では、データ整列演算パイプや乗算パイプか
ら出力が4本あるので、そのうち1本を汎用の207の
バスへ、残りの3本を210のバスへ出力するようにす
る。210のバス上のデータは、セレクタ208に入力
される。
【0033】セレクタ208は3入力4出力のセレクタ
で、図7に示される真理値表を満たす論理回路で構成さ
れる。
【0034】図7中のaとbは、制御信号を示し、in
putのX,Y,Zは入力値、outputは、左から
バンク0、1、2、3への出力を示す。
【0035】セレクタ208に入力される制御信号は、
ディスティネーションレジスタ指定フィールド(オペラ
ンドコードd)で示されるコードの下位2bitを使用
する。また、汎用バス207へ出力されたデータは、セ
レクタ209へ入力され、格納するレジスタが存在する
バンクへ選択・出力される。
【0036】セレクタ209は、制御信号として、セレ
クタ208同様ディスティネーションレジスタ指定フィ
ールドで示されるコード(オペランドコードd)の下位
2bitを使い、図8に示す真理値表を満たす論理回路
で構成される。
【0037】図8中のaとbは、ディスティネーション
レジスタ指定フィールド(オペランドコードd)の下位
2bitの値で、Xは入力値、Outputは、左から
バンク0、1、2、3への出力を示す。
【0038】これらセレクタ208とセレクタ209か
らの出力は、各バンクごとにお互いに排他的であり、片
方のセレクタの出力がデータならば、もう片方のセレク
タからの出力は0になる。従って、これら、セレクタ2
08と209からの出力は、各バンクごとに論理和をと
って、バンク内のレジスタへ書き込まれることになる。
【0039】以上までが、複数レジスタが指定できるS
IMDプロセッサの説明である。
【0040】次に、このSIMDプロセッサの特徴を活
かして定義されるSIMD演算命令について説明する。
【0041】一般にSIMDプロセッサでは、レジスタ
内のデータが即演算できる順番に整列されているとき
に、その並列性を最大限に発揮することができるが、多
くの場合データを並び替えて後に主要な演算を行う必要
がある。従って、その並び替えサイクルをできる限り減
らすことが、SIMDプロセッサの性能向上につなが
る。
【0042】本発明の特徴を活かして、図9、図10の
ようなデータパック命令を定義する。
【0043】図9はシフト量がレジスタ内に存在する場
合。図10は即値として、命令コード内にシフト量が存
在する場合である。
【0044】図9ではデータパック命令のシフト量(R
n)をレジスタから読み込み、Rmで示されるレジスタ
群内のデータに対してシフト処理を施した後、パック演
算を遂行するオペレーションコードを示しており、図1
0では図9と比較してシフト量(s)が即値の場合のオ
ペレーションコードを示している。
【0045】この命令は図9中の動作説明からも分かる
ように、4つのレジスタ内データを1つのデータにパッ
クして格納するためのものである。
【0046】この命令を実現するための回路構成は、図
11に示されるものである。
【0047】汎用バス206と307のバスには、レジ
スタ指定フィールド1(オペランドコードm)で示され
る4個のレジスタ内データが転送される。またレジスタ
指定フィールド2(オペランドコードn)で示されるシ
フト量は、汎用バス301から取り込まれる。これらデ
ータとシフト量は、任意bitのシフトが可能なバレル
シフタ302にそれぞれ入力される。このバレルシフタ
302により固定小数点の除算を行うことができる。
【0048】これらシフトされた結果の下位16bit
のみを各々取り出し、汎用バス207へ出力して、64
bit幅データとして1つのレジスタにパックすること
ができる。
【0049】次に本発明の特徴を活かして、図12、図
13に示されるようなデータアンパック命令を定義す
る。このデータアンパック命令は、1つのレジスタ内S
IMDデータを複数のレジスタに分割して格納する命令
である。図12は16bitデータを扱う場合、図13
は8bitデータを扱う場合を考慮して定義した。
【0050】図12では64bitのデータを16bi
t毎に分割、分割されたデータを64bitに符号拡張
し、ライトレジスタに書き込むオペレーションコードを
示している。図13では図12と比較し、8bitデー
タを扱う為、書き込むライトレジスタ数が倍に成ってい
る。
【0051】この命令を実現するための回路構成を図1
4を用いて詳細に説明する。
【0052】レジスタ指定フィールド1(オペランドコ
ードm)で示されるレジスタ内のSIMDデータが汎用
バス206を通して伝送される。
【0053】この図14では、16bitデータに分割
する場合を示してあるが、汎用バス206を通して送ら
れたデータは、16bitごとに分割されて、それぞれ
別の符号拡張器400に入力されて、64bitデータ
に符号拡張されてバス207と210に出力される。以
上の操作でデータアンパック機能を実現することができ
る。
【0054】さらに、本発明の特徴を活かして図15の
ような並べ替え命令を定義する。図15では、4つの指
定されたレジスタ内SIMDデータを読み出して、要素
毎に指定された並べ替えを行って指定されたレジスタに
並べ替えたSIMDデータを格納する為のオペレーショ
ンコードを示している。
【0055】一般的に「並べ替え命令」は、行列の転置
や回転、FFTのバタフライ演算等に有効であり、具体
的な動作は図16に示す。
【0056】従来の並べ替え命令では、例えば16bi
t×4個のSIMDデータ2個に対して並べ替え操作を
行うと、結果格納用に64bit幅レジスタ2個を必要
とするが、ディスティネーションレジスタとして1個し
か指定できないため、並べ替え結果の上位bit部分用
と下位bit部分用にそれぞれ別命令を用意していた。
【0057】本定義による並び替え命令は、1個のレジ
スタ指定フィールドで複数レジスタを指定できる特徴か
ら、図16のように4個のソースデータに対して、一度
に上位bit部と下位bit部の並べ替え操作を行うこ
とができ、2組分を同時に演算することができる。
【0058】図17に具体的な機能構成図を示す。汎用
バス206と307のバスを通して伝送されるソースデ
ータ対2組は、それぞれ16bit幅に分割されて、並
び替え操作が行われ、その結果を207と210のバス
へ出力して、レジスタに書き込まれる。
【0059】また、複素数データのような場合、ロード
したデータには実数と虚数が交互に存在することが多
く、演算には実数データのみ、虚数データのみのデータ
列を必要とすることが多々ある。
【0060】そのような場合、本発明のSIMDプロセ
ッサならば、本実施例においては、最大で8個のSIM
Dデータを同時に読み込むことができるため、16bi
tデータならば32個のデータ間で並べ替え操作を行っ
て、1度に16データ分の結果を求めることができる。
【0061】上記のように複素数データを扱う処理を行
うためには、図18、図19で示されるような命令を定
義すれば良い。
【0062】図18では、8個の指定されたレジスタ内
SIMDデータを読み出して、各要素を右端から数えて
1・2・3・4としたとき、1と3のデータ要素のみを
抽出して、指定されたレジスタに格納する処理を示すオ
ペレーションコードを示しており、図19ではSIMD
データを読み出した後、2と4のデータ要素のみを抽出
して、指定されたレジスタに格納する処理を示すオペレ
ーションコードを示している。
【0063】具体的には図20に示すような処理であっ
て、この場合は各レジスタ内データの63bit目〜4
8bit目のデータと、31bit目〜16bit目の
データの抽出である。
【0064】動作の詳細を図21の回路構成図で説明す
ると、汎用バス206と301、307と501のバス
を通って伝送されるSIMDデータ8組32個は、それ
ぞれ必要な16bitデータのみ抽出されて、結果を汎
用バス207と210のバスへ出力することによって実
現する。
【0065】最後に、本発明の特徴を活かして、図22
で示されるような積和演算命令を定義する。
【0066】図22では、2個の指定されたレジスタ内
SIMDソースデータを読み出し、4個の累積和の基に
なるレジスタ内データをさらに読み出し、累積和の計算
をした後、指定された4個のレジスタにSIMDデータ
を格納する処理を示すオペレーションコードを示してい
る。
【0067】一般の乗算においては、乗数および被乗数
のbit幅に対して、得られる結果は倍のbit幅をも
つため、16bit幅のデータを4個も保持しているS
IMD型64bitデータでは、演算結果を格納するた
めに128bit幅のレジスタが必要になる。現実解と
しては、SIMDの並列性を犠牲にして、64bit幅
レジスタの下位32bitにのみ有効なデータを格納し
て、結果を64bitに収める方法が多くとられてい
る。しかし累積和を取る場合、さらに結果のbit幅が
増加する可能性があり、上記方法でも演算精度が落ちて
しまう。
【0068】DSPにおいては、16bit×16bi
tの積和演算にて、格納用に40bitレジスタを用意
するなどして演算の精度を保つ工夫がなされている。
【0069】しかし本発明の特徴を活かすと、SIMD
の並列性を損なうことなく、精度の落ちない積和演算を
実行することができる。
【0070】図22で定義した積和演算命令の具体的な
説明図を図23に、回路構成図を図24に示す。
【0071】16bitデータ4個を含むSIMDデー
タは、汎用バス206とバス307を通して伝送され
る。それらのSIMDデータは、16bitデータごと
に分割されて、各々乗算器700〜703に入力され、
704〜707の加算器へ出力される。累積和のデータ
は、汎用バス301とバス501を通して伝送され、7
04〜707の加算器へ入力される。これらの累積和演
算の結果は、格納用の汎用バス207とバス210へ出
力される。このような手段を用いて、精度を落とすこと
なく、かつ並列性を保ったまま、SIMDデータの積和
演算を実現することができる。
【0072】以上本発明者によってなされた発明を実施
形態に基づいて具体的に説明したが、本発明はそれに限
定されるものではなく、その要旨を逸脱しない範囲にお
いて種々変更可能であることは言うまでもない。
【0073】例えば図1におけるセレクタ204は、4
入力に対して3出力のセレクタであるが、これをトライ
ステートバッファーにしても何ら問題はない。
【0074】データパック命令の場合、図11では、4
入力1出力であるが、入力は何本でもよく、また出力本
数も制限されるものではない。
【0075】さらにデータアンパック命令の場合、レジ
スタ内のSIMDデータの型によって、分割する数が決
定するので、図14のように4個に限定されるものでも
ない。
【0076】
【発明の効果】本願において開示される発明のうち代表
的なものによって得られる効果を簡単に説明すれば下記
の通りである。
【0077】すなわち、本発明によるSIMDプロセッ
サは、SIMD演算の効果を妨げるレジスタ内データ整
列演算の高速化を実現することができ、さらにDSP的
な積和演算を実現することが可能である。
【0078】具体的な効果は以下に挙げる点である。
【0079】(1)本発明により定義されたデータパッ
ク命令を導入することにより、ばらばらに格納されてい
るデータを纏め、SIMD命令で効率的にデータ処理を
行うことができる。
【0080】本実施例の場合(16bitデータ4個の
パック)を図25に示す。図中のAは現状の場合のプロ
グラム例であり、Bが新規のデータパック命令を採用し
た場合のものである。
【0081】B中の「pack.w」をデータパック命
令のニーモニックとする。このAとBのプログラム例の
ように、データパック命令を採用することによって、命
令ステップを1/4に削減することができる。
【0082】(2)本発明により定義されたデータアン
パック命令を導入することにより、速やかなレジスタの
初期化や、データの分割が行え、SIMD処理が効果的
でない部分においても、演算効率が落ちないようにする
ことができる。
【0083】本実施例の場合(1個のレジスタに存在す
る16bitデータ4個を4個のレジスタにアンパッ
ク)を図26に示す。
【0084】図中のAが従来の並べ替え命令を用いてデ
ータパックする場合のプログラム例であり、Bが新規デ
ータアンパック命令を採用した場合のものである。図2
6からもわかるように、新規命令の追加によって、命令
ステップ数を1/6にまで削減することができる。
【0085】(3)本発明により定義されたデータ並べ
替え命令を導入することにより、レジスタ内SIMDデ
ータの並び替えを高速に行うことができ、積和演算等の
SIMD処理に遅滞なくデータを供給することができ
る。
【0086】本実施例の場合を図27に示す。図中のA
が従来の並べ替え命令を用いた場合のプログラム例であ
り、図中のBが新規の並べ替え命令を採用した場合のプ
ログラム例である。この図27から明らかなように、命
令ステップ数を1/8にまで削減することが可能とな
る。
【図面の簡単な説明】
【図1】本発明の1例に係わるSIMDプロセッサのC
PUブロック図である。
【図2】本発明の1例に係わるSIMDプロセッサの全
体ブロック図である。
【図3】前記SIMDプロセッサのレジスタファイル部
近辺の詳細図である。
【図4】デコード部を構成する論理回路の真理値表を示
す図である。
【図5】図3のバンクからのデータを選択するセレクタ
を構成する論理回路の真理値表を示す図である。
【図6】バンク203内の個々のレジスタ詳細図であ
る。
【図7】汎用バス上の演算結果を、どのバンクのレジス
タに格納するのか、その場所をセレクトするためのセレ
クタを構成する論理回路の真理値表を示す図である。
【図8】バス210上の演算結果を、どのバンクのレジ
スタに格納するのか、その場所をセレクトするためのセ
レクタを構成する論理回路の真理値表を示す図である。
【図9】データパック命令の定義を示す図である。
【図10】即値を含むデータパック命令の定義を示す図
である。
【図11】データパック命令を実現するための機能構成
図である。
【図12】データアンパック命令の定義を示す図であ
る。
【図13】8bitデータに対するアンパック命令の定
義を示す図である。
【図14】データアンパック命令を実現するための構成
図である。
【図15】並べ替え命令の定義を示す図である。
【図16】並べ替え命令の具体的な説明図である。
【図17】並べ替え命令を実現するための機能構成図で
ある。
【図18】並べ替え命令の定義を示す図である。
【図19】並べ替え命令の他の定義を示す図である。
【図20】並べ替え命令の具体的な使用例を示す図であ
る。
【図21】図20を実現するための機能構成図である。
【図22】積和演算命令の定義を示す図である。
【図23】積和演算命令の具体的な説明図である。
【図24】図23を実現するための機能構成図である。
【図25】データパック命令導入の効果を示すプログラ
ム例を示す図である。
【図26】データアンパック命令導入の効果を示すプロ
グラム例を示す図である。
【図27】並べ替え命令導入の効果を示すプログラム例
を示す図である。
【符号の説明】
200…CPUブロック、201…命令コード、202
…レジスタ指定デコーダ、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つのレジスタ
    指定フィールドからなる演算命令を有し、上記少なくと
    も1つのレジスタ指定フィールドは連続番号の複数個の
    レジスタが指定可能であることを特徴とするプロセッ
    サ。
  2. 【請求項2】任意数のレジスタ指定フィールドの内、1
    フィールドで複数のリードレジスタを指定するデコーダ
    と、該デコーダからの出力に従って連続番号の複数個の
    レジスタ内データを出力するレジスタファイルとを具備
    することを特徴とするプロセッサ。
  3. 【請求項3】任意数のレジスタ指定フィールドの内、1
    フィールドで複数のライトレジスタを指定するデコーダ
    と、該デコーダからの出力に従って連続番号の複数個の
    レジスタに値を書き込めるレジスタファイルとを具備す
    ることを特徴とするプロセッサ。
  4. 【請求項4】請求項2もしくは3記載のプロセッサにお
    いて、上記レジスタファイルは複数のバンクを有し、前
    記複数のバンクからリードまたはライトを行うことによ
    り、各バンクのリードまたはライトポート数をレジスタ
    指定フィールド数以下に制限して、フィールド数より多
    くのリードまたはライトを行うことによる回路規模の増
    大を抑制したプロセッサ。
  5. 【請求項5】請求項1、2又は3のいずれかに記載のプ
    ロセッサにおいて、該連続番号の複数個のレジスタ数は
    2のn乗個(nは自然数)と限定して、レジスタ選択回
    路の削減を可能としたプロセッサ。
  6. 【請求項6】請求項1から5のいずれかに記載のプロセ
    ッサにおいて、さらにリードレジスタ指定フィールド数
    より多くの数のレジスタからデータをリードするため、
    ライトレジスタへの書き込みデータ数より多くのリード
    レジスタからの読み出しデータ数に対応可能なデータパ
    ック演算を、ライトレジスタに無効な部分を生成するこ
    となく実現可能であることを特徴とするプロセッサ。
  7. 【請求項7】請求項1から5のいずれかに記載のプロセ
    ッサにおいて、さらにライトレジスタ指定フィールド数
    より多い数のレジスタにライトできることから、リード
    レジスタの読み出しデータ数より多くのライトレジスタ
    への書き込みデータ数に対応可能なデータアンパック演
    算を、ライトを複数回に分けることなく並列的に実現可
    能であることを特徴とするプロセッサ。
  8. 【請求項8】請求項1から5のいずれかに記載のプロセ
    ッサにおいて、さらにライトレジスタ指定フィールド数
    より多くのレジスタにライトできることから、入力デー
    タ幅より広いデータ幅の出力を行う演算を、入力データ
    に無効部分を作ることなく、さらにデータ幅の広い特別
    なレジスタを実装することもなく、実現可能であること
    を特徴とするプロセッサ。
JP2000340239A 2000-11-08 2000-11-08 複数レジスタ指定が可能なsimd演算方式 Expired - Fee Related JP3779540B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (13)

* Cited by examiner, † Cited by third party
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