JP2005527038A - スカラー/ベクトルプロセッサ - Google Patents
スカラー/ベクトルプロセッサ Download PDFInfo
- Publication number
- JP2005527038A JP2005527038A JP2004507989A JP2004507989A JP2005527038A JP 2005527038 A JP2005527038 A JP 2005527038A JP 2004507989 A JP2004507989 A JP 2004507989A JP 2004507989 A JP2004507989 A JP 2004507989A JP 2005527038 A JP2005527038 A JP 2005527038A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- scalar
- unit
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 344
- 238000012545 processing Methods 0.000 claims description 38
- 230000001788 irregular Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 4
- 241000272173 Calidris Species 0.000 description 37
- 230000000875 corresponding effect Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 13
- 230000001419 dependent effect Effects 0.000 description 11
- 241000492493 Oxymeris Species 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 235000019800 disodium phosphate Nutrition 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 101100332287 Dictyostelium discoideum dst2 gene Proteins 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 3
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 3
- 102000001332 SRC Human genes 0.000 description 3
- 108060006706 SRC Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 101100242909 Streptococcus pneumoniae (strain ATCC BAA-255 / R6) pbpA gene Proteins 0.000 description 2
- 101100534231 Xenopus laevis src-b gene Proteins 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- ATHVAWFAEPLPPQ-VRDBWYNSSA-N 1-stearoyl-2-oleoyl-sn-glycero-3-phosphocholine Chemical compound CCCCCCCCCCCCCCCCCC(=O)OC[C@H](COP([O-])(=O)OCC[N+](C)(C)C)OC(=O)CCCCCCC\C=C/CCCCCCCC ATHVAWFAEPLPPQ-VRDBWYNSSA-N 0.000 description 1
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100226366 Arabidopsis thaliana EXT3 gene Proteins 0.000 description 1
- 101100268670 Caenorhabditis elegans acc-3 gene Proteins 0.000 description 1
- 102100029095 Exportin-1 Human genes 0.000 description 1
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 1
- 101000710137 Homo sapiens Recoverin Proteins 0.000 description 1
- 235000008708 Morus alba Nutrition 0.000 description 1
- 240000000249 Morus alba Species 0.000 description 1
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 1
- 102100034572 Recoverin Human genes 0.000 description 1
- 101100264226 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) XRN1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 101150090341 dst1 gene Proteins 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 108700002148 exportin 1 Proteins 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 208000034420 multiple type III exostoses Diseases 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Images
Classifications
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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
-
- 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
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
Description
・本発明に従うプログラム可能スカラー/ベクトルプロセッサ120であり、機能ユニットと(図1では、ベクトルメモリと呼ばれる)ローカルデータメモリを備える。
・マイクロコントローラまたはDSPサブシステム130であり、限られたオンチッププログラムとデータメモリを含む。
・インターフェースブロック140である。
・定期的スカラー演算(即ち、ベクトルプロセッサの主ループに対応するスカラー演算)
・ルーピング
・不定期のスカラー演算
これらのカテゴリーの各々に対するコードのフラクションは、実行されるアルゴリズムに大きく依存する。例えば、(P−SCHサーチに使用される)ゴレイ(Golay)相関器は、多数のアドレス関連命令を必要とするが、レーキ(Rake)のような他のアルゴリズムでは、それは適用できない。しかしながら、本発明者等が研究した全てのアルゴリズムの一つの共通の特性は、不定期のスカラー演算の部分は、非常に限られることである。この特性は、スカラー/ベクトルプロセッサ(120)とマイクロコントローラまたはDSP(130)の間でタスクの分離を可能とする。
好適な実施の形態において、CVPは、以下の7個の特殊化機能ユニットを含む。
全ての機能ユニットは、並列に動作する。それらへの命令のセグメントを受信すると、機能ユニットは、データと、ベクトルデータおよびスカラーデータ(適用出来る場合)の両方とを入力、処理および出力する。FU同士間において、通信は、スカラー部同士間およびベクトル部同士間(インターFU通信)では、厳格である。即ち、IDUを除き、全てのFUのベクトル部は、パイプラインで接続される。好適な実施の形態において、このパイプラインは、命令ベースで構成可能である。その結果、好ましくは、FUは、相互接続ネットワークによって相互接続され、原則的には、各ベクトル部が各サイクル中に他のベクトル部の何れかからのベクトルを受信出来る。とりわけ、この特徴によって、(IDUを除く)FUの任意のパイプラインの生成が可能となる。ベクトルパスへ寄与する機能ユニットの6個は、各クロックサイクル中に、ベクトルを出力出来、且つそれを他のユニットに並列に送信出来る。これらのユニットは、他のユニットからベクトルを受信出来る。ネットワークは、略完全に接続される。重要ではないリンクのみが、省略される。ベクトルパスの接続性は、以下に表にされる(!は、接続を示す)。AMUは、同時に二つのベクトルを受信出来ることに留意すべきである。
FU内には、これらのセクション同士間には強固な相互作用(イントラFU通信)がある。相互作用は、FUの演算の整数部である。例は、SLUとSRUであり、生成および/または消費されたスカラーは、FUの対応するスカラー部へ提供および/またはそれから取り出される。より詳細は、FUの詳細な説明の部分として示される。
好適な実施の形態において、スカラー/ベクトルプロセッサは、図3に示されるように、複数のデータ幅とデータタイプをサポートする。メモリアドレス指定の基本単位は、シングルワードとも呼ばれるワードである。好ましくは、データ幅は、シングルワード(W)、ダブルワード(DW)、またはクワォド(QW)ワードである。サイズは、W=8ビットである。ダブルワード(2W=16ビット)は、1対のワードであり、そのアドレスは、常に偶数値である。クワォドワード(4W=32ビット)は、1対のダブルワードであり、クワォドワードアドレスは、4の倍数である。シングルワードの対またはダブルワードは、複素数として使用出来る。ベクトルは、PQ個のクワォドワードよりなり、それは、2PQ個のダブルワードおよび4PQ個のシングルワードに対応する。全ベクトル幅を与えるPQ=8は、8ビットの好適なワードサイズに対して256ビットである。
2.複素整数タイプ、即ち、図3にint.realとして示される1対の整数(実数、虚数)。複素整数は、2つのサイズ:ダブルワードとクワォドワードに入る。
2.サイズダブルワードのPD=2PQ個の要素
3.サイズ(シングル)ワードのPS=2PD=4PQ個の要素
ベクトル要素指標付け範囲は、[0…4PQ−1]である。従って、ダブルワードは、偶数の指標を有し、クワォドワードの指標は、4の倍数である。図3は、データサイズとデータタイプとの間の関係の概観を示している。アーキテクチャは、PQにおいて十分にスケーラブルであり、任意のベクトルサイズPQ >1に対して定義される。しかしながら、多くの場合、PQに対して2のべき乗を選択することが好ましい。
スティント(stint)は、CVP−プログラム実行と同期の単位である。スティントは、有限シーケンスのCVP命令によって記述される有限で割り込みの無いタスクである。スティント(stint)は、典型的には、連続するアクティブDSPカーネルの時間スライスであり、その記述には2〜3ダースの命令を必要とし、その実行には2〜3百のサイクルを必要とする。
・ベクトルメモリ中のサクセッサスティント(実行されるべき次のスティント)のアドレス;サクセッサがない場合はnil
・信号送信記述子
ベクトルメモリ中にスティント記述子を配置する代わりに、スティント記述子は、CVPプログラムメモリに配されても良い。
2.スティントが完了すると、CVPプログラムの明確なEOS(end of stint(スティントの終了))によって指摘されるように、サクセッサが現在のSDに指定されると、CVPは、サクセッサスティントを続ける。そのようなサクセッサが存在しないならば、CVPはアイドル状態に戻る。
CVP命令は、制御命令またはVLIW命令である。制御命令は、ゼロ−オーバーラップループ初期化またはスティント終了である。ブランチ、ジャンプまたはサブルーチンはない。VLIW命令は、セグメントに区分され、各命令セグメントは、対応する機能ユニットによって実行されるべき動作(単数または複数)を指定する。セグメントは、ベクトル部および(もしあるなら)スカラー部に対して更に部分に細分割され得る。また、セグメントは、両方の部分に対して、データ(ベクトル部に対する一つまたはそれより多くのベクトルおよびスカラー部に対する一つまたはそれより多くのスカラー)を受信するために使用されるべきネットワーク部分に関する情報を含む。
CVPの状態は、その機能ユニットの組合された状態である。好適な実施の形態において、CVPは、
・ベクトルメモリ(VMUの部分)
・プログラムメモリ(IDUの部分)
・ベクトルレジスタ(全ての機能ユニット)
・プログラムカウンタを含む制御レジスタ、およびアドレスオフセットレジスタ
プログラマー可視レジスタに加えて、CVP実現は、典型的には、パイプライン化とキャシングのための追加の(ベクトル、スカラーおよび制御)レジスタを含む。これらは、CVP命令セット構成の一部ではない。
スティントのプログラムは、IDU内のプログラムメモリに格納される。IDUは、プログラムカウンタを制御し、現在の命令を読み出し、且つ6個の機能ユニットの命令の6個のセグメントを配分する。典型的には、各クロックサイクル毎に、一つの命令が発行される。そのルールに対する唯一の例外は、複数のベクトルメモリアクセスが一つのサイクルで実現出来ない時に、VMUの停止サイクルによって引き起こされる。メモリの輻輳と関連する停止サイクルは、単一のサイクルに複数のキャッシャミスがある場合に、発生し得る。
CVPの各機能ユニットは、制御、スカラーおよびベクトル部に区分され得る。これらのセクションは、5つの要素:入力、出力、状態、次の状態関数、および出力関数からなるムーア・マシンモデルに従って、モデル化される。
・そうでないとの指定が無い限り、C−スタイルシンタックスが使用される。
・複素数値xの真数部と虚数部は、夫々、Re(x)とIm(x)によって示される。
・演算子∀(「for all」)は、演算がベクトル要素の範囲に対して実行されなければならないことを示すのに用いられる。演算子は、順序を全く含まない(即ち、範囲内の全ての要素は、並列に処理され得る)。例えば、∀p:0<p<P{v[p]=0}は、ベクトルvの全ての要素は、0にセットされる。範囲(例のp)を指すために使用されるダミー変数は、関数的意味を持たない
・演算子∧(「and」)は、並列に実行され得る演算を分離するために使用される。換言すれば、C−セパレータ「;」と異なり、∧演算子は、演算がシーケンシャルに実行されなければならないということを含まない。
図4は、命令配信ユニット(IDU400)のブロック図である。IDUは、以下の機能を含む:
・IDUは、プログラムメモリ410を含む
・IDUは、操作420を他の機能ユニットに配信する
・IDUは、スティント記述子を解釈し、マイクロコントローラ130によって発行されるカーネルの実行を制御する
後者の場合、IDUは、プログラムカウンタ430を維持し、且つ三つの入れ子レベルを含むゼロ−オーバーヘッドルーピンングをサポートする。
1.ノーマルVLIW命令(NORMAL)
2.ゼロ−オーバーヘッド−ループ初期化命令(LOOP)
3.エンドオブスティント(スティントの終了)命令(EOS)
4.サブルーチン呼出命令(CALL)
5.サブルーチンリターン命令(RETURN)
命令=(NORMAL、commands)|(IDU_cmd,paddr, count)
コマンド=(VMU_cmd,CGU_cmd,AMU_cmd,SFU_cmd,SLU_cmd,SRU_cmd)
IDU_cmd=LOOP|EOS|CALL|RETURN
paddr={0,...,65535}
count={1,...,65536}
入/出力は、
3.スティント命令のIDUエンド(EOS):現在のスティント記述子で指示される場合、一つまたはそれより多くの信号は、スティントの完了を指示するために発生される。次に、次のスティントポインタは、評価される。それがnilである場合、CVPは、アイドルモードに入り、そうでない場合、次のスティントポインタがロードされ、プログラムカウンタ(PC)の初期化後に、対応するスティントの実行が開始する。
図5Aは、ベクトル−メモリユニット(VMU500)のブロック図を示す。VMUは、ベクトルメモリ510を含むと共にそれを制御し、巨大なデータバンド幅を他の機能ユニットに提供する。物理的ベクトルメモリ510は、単一ポートSRAMに基づくことが好ましい。Ps*W幅である埋め込みSRAMは、一般的に利用出来ないので、物理的メモリが、並列に配置される幅広のランダムアクセスメモリ(RAM)の一つまたはそれより多くのバンクによって形成される。好適な実施の形態では、ベクトルは、メモリにおいて、ベクトル境界で一列に並べられる必要はない。このように、PSワードよりなるベクトルは、任意のメモリアドレスを有することが出来る。メモリラインは、同じサイズを有するが、そのスタートアドレスは、定義によって、Psの倍数である。(ラインアドレスに対して、アドレスの最小自乗logPsは無視される)。ベクトルの任意のアラインメント(典型的には、最小ワード境界のアラインメント)を可能とすることによって、メモリは、空位置をより少なくしてより良く利用されることが出来る。以下でより詳細に述べられるように、スカラー/ベクトルプロセッサが個々のベクトルを読み出し/書き込みを可能とするための対策が採られると共に、ベクトルは、物理的メモリの二つの連続するラインに格納されることが出来る。好ましくは、スカラーデータは、ベクトルデータを格納するために使用されるのと同じメモリに格納される。このようなシステムにおいて、スカラーは、それらに対応するベクトルとインターミックスされる。コスト効率とメモリへの最適アクセス時間のためには、好ましくは、メモリは、全ベクトルラインの読み出しと書き込みを可能とすることに過ぎない。このように、論理的には、物理的メモリは、複数のラインからなり、各ラインは、ベクトルのサイズである。スカラーの読み出しと書き込みをサポートするために、追加のハードウエア(ライン内のスカラー部に対するラインキャッシュ530とサポート540)は、スカラー様式でベクトル幅の物理的メモリにアクセスするために使用される。Nr個のスカラー読み出しポートとNw個のスカラー書き込みポートが利用可能であると仮定するならば、1セットの少なくともNr+Nw個のベクトル幅レジスタが、キャッシュ530に存在する。各スカラー読出しポート毎に、キャッシュの対応するレジスタが、(ベクトル幅の)物理的メモリ510の読み出しポートに接続される。サポートハードウエア540は、レジスタからの関連するスカラーデータを選択するために、デマルチプレクサを含む。デマルチプレクサは、(例えば、32個の8ビットワードを有する256ビットベクトルを使用して、スカラーは、5個の最下位ビットによって指示される)アドレスの最下位ビットによって指定されるように、レジスタのスカラーの番号によって制御され得る。デマルチプレクサは、公知であり、更には記述しない。各スカラー書き込みポート毎に、キャッシュ530の対応するレジスタは、どのキャッシュラインが物理的メモリに書き戻されるかを選択するためにNw個の入力のベクトル幅マルチプレクサに接続される。一つのVMU命令が、書き戻されるべき多数のキャッシュラインを必要とする場合、これは、シーケンシャルに行われ、全ての書き込みが完了するまで、全ての他の機能ユニットを停止する。同じ命令ではなくて異なる書き込みポートへのアクセスは、物理的メモリにおける同じラインへのアクセスを許可されない。連続するスカラーアクセスにおける空間的場所(例えば、一つの処理ループに属する連続するスカラーは、物理的メモリ510に実質的に連続して格納される)を仮定すると、これらのレジスタにロード/格納するために物理的メモリ510へのアクセス頻度は、これらのレジスタへのスカラーのアクセス頻度よりもかなり少ない。ベクトルメモリ周りのキャッシングは、プログラマーから隠されることが好ましい。マルチポートベクトルメモリを単一ポートSRAMに匹敵させるためにキャッシュの使用にも拘らず、プログラマーは、コヒーレントベクトルメモリを想定出来る。各レジスタが物理的メモリ内に潜在的に同じデータのコピーを含むことが出来るので、コヒーレンシーは、プログラマーがガードコヒーレンシーを持たなければならない代わりに、自動的に維持されるべきである。この結果、チェックは、アドレスコンフリクトに対して実行され、即ち、ラインアドレスに対して発生するレジスタへの書き込みを有し、そこでは、同じラインは、また、他のレジスタの一つに格納される。このようなチェックに対して、各レジスタ毎に、レジスタに格納されるラインアドレス(アドレスの最上位部)を格納することで十分である。起こり得るコンフリクトが検出されると、訂正対策が取られる。例えば、同じラインを有するレジスタへの書き込み動作が発生すると、読出しレジスタは、無効であるとマークされる。(書込みレジスタが最初にメモリに書き戻された後)レジスタがメモリから再び読み出されなかったならば、そのレジスタは、更には使用されない。或いは、書込みレジスタの内容は、書込みレジスタへの書込みが発生した後、同じラインを有する全ての読出しレジスタにコピーされ得る。三つ目の可能性は、読出しおよび書込みポート間でレジスタを共有することである。この後者のアプローチは、追加のベクトル幅マルチプレクサを必要とし、コストを増加するが、性能面での利点を提供する。同じコヒーレンシーチェックと対策は、ベクトルが書込みポートに関連するレジスタへ(部分的に)格納されるベクトル読出しに対しても取られる。物理的メモリからのライン読出しやそれへのライン書込みは、物理的メモリ510への単一アクセスによって、単一クロックサイクルで実行される。
2.VM位置からスカラーを送出すること
3.VM位置からスカラーを受信すること
4.アドレス消費ユニットの状態/出力を変更すること
VMU_cmd=(vopc,aid_v,aine_v,sopc,aid_s,ainc_s,size,srev,aid_r,aine_r,aopc,aid_a,imm_addr)
vopc=NOP|SENDL|SENDV|RCVL_CGGU|RCVL_AMU|RCVL_SFU|RCVL_SLU|RCVL_SRU
Aid_v={0,...,7}
Ainc_v=NOP|INC
sopc=NOP|SEND
aid_s={0,...,7}
ainc_s=NOP|INC
size=WORD|DWORD|QWORD
srcv=NONE|VMU|AMU|SLU|SRU
aid_r={0,...,7}
ainc_r=NOP|INC
aopc=NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND
aid_a={0,...,7}
imm_addr={0.0,...,524288.31}|{−262144.0,...,262143.31}
VMU命令は、サブ演算の数とアドレスシーケンスの連続性により、可変数のクロックサイクルを取ることが出来る。
1.ポスト命令サブ演算
2.中間アドレス操作サブ演算
ACU_cmd=(ainc,aopc,imm_addr)
ainc=NOP|INC
aopc=NOP|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND
imm_addr={0.0,...,524288.31}|{−262144.0,...,262143.31}
ポスト増分サブ演算は、命令のAINCフィールドに符号化される。このサブ演算は、唯一つのサブ演算:ポスト増分(InC)をサポートする。このサブ演算は、過剰な明示的アドレス演算命令を回避するために使用される。
図6は、CGU(コード発生ユニット600)のブロック図である。CGUのタスクは、PDまたはPS長のベクトルにフォーマット化された複素記号のコードシーケンスを発生することである。好適な実施の形態において、このコードシーケンスは、(W−)CDMAのために必要な調整が施され、スクランブル化コードとチャネル化コードの二つのシーケンスの積として構成され得る。このようなアプリケーションのために、CGUは、スクランブル化コード発生器(SCG610)とチャネル化コード発生器(CCG620)を備える。スクランブル化コードは、構成可能発生器によって発生される。チャネル化コード発生器は、ルックアップテーブルで置き換えられても良い。このテーブルは、ベクトルメモリ内に常駐してもよい。CGUは、UMTS−FDDダウンリンクコードをサポートするのみのように、唯限られた機能性を有しても良い。このコード発生ユニット(CGU)は、次の二つのサブ演算をサポートする:
1.スクランブル化コード発生器サブ演算
2.チャネル化コード発生器サブ演算
CGU_cmd=(scram_opc,scram_reg,chan_opc,chan_reg,chan_config)
scram_opc=OFF|NOP|LOAD_CONFIF|LOAD_STATE|SAVE_STATE|LOAD_REGS_X|LOAD_REGS_Y|SAVE_REGS_X|SAVE_REGS_Y|STEP_1|STEP_P_D|STEP_1_X|STEP_P_D_X
scram_reg={cgus0,cgus1}
chan_opc=OFF|NOP|CONFIF|LOAD_STATE|SAVE_STATE|STEP_1|STEP_P_D
chan_reg={cguc0,cguc1}
chan_config=0,..,2log(SFMAX)−1
入力/出力は:
・非演算(CGUS_NOP)
・vmu(CGUS_LOAD_CONFIG)から構成ベクトルをロードする
・構成ベクトル(CGUS_CONFIG)でLFSR XとLFSR Yを構成する
・SCRAM_RGEフィールド(CGUS_LOAD_STATE)で指定された内部レジスタからLFSR XとLFSR Y状態をロードする
・SCRAM_RGEフィールド(CGUS_SAVE_STATE)で指定された内部レジスタにLFSR XとLFSR Y状態をセーブする
・VMU(CGUS_LOAD_REGS_X)から全LFSR X内部レジスタファイルをロードする
・VMU(CGUS_LOAD_REGS_Y)から全LFSR Y内部レジスタファイルをロードする
・VMU(CGUS_SAVE_REGS_X)に全LFSR X内部レジスタファイルをセーブする
・VMU(CGUS_SAVE_REGS_Y)に全LFSR Y内部レジスタファイルをセーブする
・LFSR XとLFSR Yを単一ステップ(CGUS_STEP_1)だけ進める
・LFSR XとLFSR YをPD個ステップ(CGUS_STEP_P_D)だけ進める
・LFSR Xを単一ステップ(CGUS_STEP_1_X)だけ進める
・LFSR XをPD個のステップ(CGUS_STEP_P_D_X)だけ進める。
・チャネル化コード発生器をオフにする(CGUC_OFF)
・非演算(CGUC_NOP)
・CHAN_CONFIGフィールド(CGUC_CONFIG)で指定されたコード番号でチャネル化コード発生器を構成する
・CHAN_REGフィールド(CGUC_LOAD_STATE)で指定された内部レジスタからOVSF状態をロードする
・CHAN_REGフィールド(CGUC_SAVE_STATE)で指定された内部レジスタにOVSF状態をセーブする
・OVSFカウンタを単一ステップ(CGUC_STEP_1)だけ進める
・OVSFカウンタをPD個のステップ(CGUS_STEP_P_D)だけ進める。
図7は、ALU−MACユニット(AMU)のブロック図を示す。このAMUは、AMUが実際の信号演算を含んでおり、且つその他のユニットは、それへオペランドと結果をベクトルフォーマットの形態で転送するだけであるという意味でマシンの心臓部である。また、このAMUは、比較的大きなベクトルレジスタファイル(好ましくは、16個のベクトルレジスタ)を含んでいる。アキュムレータベクトルは、二つの(正規)ベクトルレジスタ+拡張精度ビットを含む所謂拡張ベクトルを必要とする。従って、拡張レジスタファイルと共に、AMUレジスタファイルは、8個のアキュムレータベクトルレジスタをサポートすることが好ましい。好適な実施の形態において、AMUベクトル部は、5個の独立した内部処理ユニットを含む。
・(相関)イントラ加算ベクトル演算を処理する(C)I−ADDユニット730:イントラ加算(IADD)、ダブル精度結果を有するイントラ加算(IADDD)、およびイントラ加算が続くイントラ加算相関(CIA)
・イントラベクトル最大とイントラベクトル最小演算を処理するI−MAX/MINユニット740:イントラ最大(IMAX)およびイントラ最小(IMIN)および
・整数演算をフレキシブル固定点サポートに提供するために使用されるスケーリングユニット。
・ビタビ加算−比較−選択演算を処理するacsユニット(acs)
・ターボ符号化に必要なαβ∧演算(abl)を処理するablユニット。
1.タイプALU(算術および論理)、MAC(乗算−累算)、(C)I−ADD((相関)イントラ加算)、またはI−MAX/MIN(イントラ最大またはイントラ最小)のベクトル演算を実行する
2.AMUベクトルレジスタファイルへのベクトル値を受信する
3.AMUベクトルレジスタファイルへの第2のベクトル値を受信する
4.AMU同報レジスタ(BCST)へのスカラー値を受信する
AMU_cmd=(vopc,type,src1,src2,src34x,rcv1,dst1,rev2,dst2,src)
vope=NOP|SND|ADD|SUB|ABS|NEG|MAX|MIN|CONJ|MAGN|LADD|DIADD|IMAX|IMIN|CIA|AND|OR|XOR|MUL|MAX|SGNX
type=cvp_int|cvp_dint|cvp_cint|cvp_qint|cvp_cdit
srel={amu0,...,amu15}
src2={amu0,...,amu15}|{best}
src34x=src3∈{amu0,...,amu15}|acc∈{acc0,...,acc7}|1seg∈{1,2,3,...,2logPs}
rcv1=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst1={amu0,...,amu15}
rev2=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst2={amu0,...,amu15};dst2≠dst1
srcv=NONE|VMU|SLU|SRU
入力/出力は:
2.乗算および乗算累算タイプのインターベクトル演算:大きさ(MAGN)、乗算(MUL)、および乗算−累算(MAC)
3.(相関)イントラ加算ベクトル演算:イントラ加算(IADD)、ダブル精度結果を有するイントラ加算(DIADD)、およびイントラ加算が続くイントラ加算相関(CIA)
4.イントラ最大(IMAX)、およびイントラ最小(IMIN)演算。
図9は、シャッフルユニット900のブロック図を示す。ベクトルシャッフル関数の基本的アイデアは、各(ベクトル)ターゲット要素910毎に、一つの(ベクトル)ソース要素920を指定することである。ソース要素は、専用の構成レジスタ930に指定される。シャッフルは、単一ワード細分性(これはまた、全ての可能なダブルワードとクワァドワードシャッフルパターンを包含することに留意すべきである)で指定される。フルシャッフルは、CMOSクロスバー940によって実施されることが出来る。このコストは、ターゲットの数とソースの数の積に略比例する。4PQワードの実現されたバンド幅は、多くの場合必要ない。従って、好適な実施の形態において、ハーフシャッフルのみがサポートされる。
2.ベクトル受信
SFU_cmd=(vopc,cfg,rcv)
vopc=NOP|CONF|ODD|EVEN|DUPL0|DUPL1
cfg={sfuc0,...,sfuc1}
rev=NONE|VMU|CGU|AMU|SFU|SLU|SRU
入力/出力は:
2.RFCFGからのパターンに従ってレジスタSFUのベクトルをシャッフルし、その結果を(黙示の)シャッフルターゲットレジスタの影響を及ぼされる部分に格納する。奇数ターゲット要素(ODD)、偶数ターゲット要素(EVEN)をシャッフルすること、或いはソース要素を奇数および偶数ターゲット要素に複製すること(DUPL0およびDUPL1)が可能である。
図10は、左シフトユニット(SLU1000)のブロック図を示す。SLUは、スカラーステップによって、即ち、3つのスカラーサイズ(WORD、DWORDまたはQWORD)によって左にシフトされることが出来る二つのベクトルレジスタを保持する。右手側は、0またはローカルスカラー受信レジスタのスカラー値が添えられる。ベクトルは、何れかの機能ユニットから受信またはそれに送信されることが出来る。左シフトユニット(SLU)は、3個までの同時発生サブ演算をサポートする。
2.ベクトル受信演算
3.スカラー受信演算
SLU−cmd=(vopc,src,size, recv, dst, srcv)
vopc=NOP|SND|SHIFT0|SHIFTS
src={slu0,slu1}
size=WORD|DWORD|QWORD
rcv=NONE|VMU|CGU|AMU|SFU|SLU|SRU
dst={slu0,slu1}
srcv=NONE|VMU|AMU|SLU|SRU
入力/出力は:
・no−op、即ち、現在のベクトルを移動しない(NOP)、
・選択されたソースレジスタの内容を送信、同報する(SND)、
・左にシフトし、0を追加する(SHIFT0)、
・左にシフトし、スカラー受信レジスタからスカラーを追加する(SHIFTS)。
図11は、右シフトユニット(SRU1100)のブロック図である。SRUは、AMU上のイントラベクトル演算からの疎の結果を併合するために使用される特別の受信モード(IAMU)を除いて、SLUと類似する。右シフトユニット(SRU)は、3つまでの同時発生サブ演算をサポートする。
・ベクトル受信演算
・スカラー受信演算
SRU_cmd=(vopc,src,size,rev,dst,srcv)
vopc=NOP|SND|SHIFT0|SHIFTS
src={sru0,sru1}
size=WORD|DWORD|QWORD
rcv=NONE|VMU|CGU|AMU|IAMU|SFU|SLU|SRU
dst={sru0,sru1}
srcv=NONE|VMU|AMU|SLU|SRU
入力/出力は:
・no−op、即ち、現在のベクトルを移動しない(NOP)、
・選択されたソースレジスタの内容を送信、同報する(SND)、
・右にシフトし、0を追加する(SHIFT0)、
・右にシフトし、スカラー受信レジスタからスカラーを追加する(SHIFTS)。
Claims (12)
- 複数の機能ユニットを含むスカラー/ベクトルプロセッサであって、前記機能ユニットの少なくとも一つは、少なくとも一つのベクトルに対して動作するベクトル部と少なくとも一つのスカラーに対して動作するスカラー部とを含み、前記スカラー部によって共に動作する前記機能ユニットの前記ベクトル部と前記スカラー部は、前記機能ユニットのベクトル部によって要求および/または供給される少なくとも一つのスカラーを提供および/または消費するように配置されるスカラー/ベクトルプロセッサ。
- 複数の前記機能ユニットは、夫々ベクトル部を含み、前記ベクトル部は、第1のパイプラインに配置される、請求項1に記載のスカラー/ベクトルプロセッサ。
- 複数の前記機能ユニットは、夫々スカラー部を含み、前記スカラー部は、第2のパイプラインに配置される、請求項1に記載のスカラー/ベクトルプロセッサ。
- 前記第1と第2のパイプラインは、互いに独立して構成可能である、請求項2および3に記載のスカラー/ベクトルプロセッサ。
- 前記パイプラインの少なくとも一方は、プロセッサ命令毎に構成可能である、請求項2、3または4に記載のスカラー/ベクトルプロセッサ。
- 前記スカラー/ベクトルプロセッサは、各機能ユニットに対する個別の命令セグメントを含むVLIW命令によって制御される、請求項1に記載のスカラー/ベクトルプロセッサ。
- ベクトル部とスカラー部の両方を有する機能ユニットに対する命令セグメントは、そのベクトル部に対するおよびその機能ユニットのスカラー部に対する夫々の命令を含む、請求項6に記載のスカラー/ベクトルプロセッサ。
- 前記VLIW命令は、前記第1および/または第2のパイプラインの構成を含む、請求項5および6に記載のスカラー/ベクトルプロセッサ。
- 前記第1のパイプラインは、前記第1のパイプラインに取り付けられた各ベクトル部毎に、ベクトルを転送するための各関連するパイプラインパスを含む、および/または前記第2のパイプラインは、前記第2のパイプラインに取り付けられた各スカラー部毎に、スカラーを転送するための各関連するパイプラインパスを含む、請求項7および8に記載のスカラー/ベクトルプロセッサ。
- 機能ユニットのベクトル部に対する命令は、ベクトルの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定することおよび/または機能ユニットのスカラー部に対する命令は、スカラーの転送のために機能ユニットの内の異なる機能ユニットと関連するパイプラインパスを指定する、請求項8および9に記載のスカラー/ベクトルプロセッサ。
- 前記機能ユニットの内の少なくとも一つは、シフトユニットであり、前記シフトユニットのベクトル部は、ベクトルを少なくとも一つスカラーを越えるようにシフトするように動作し、且つ前記シフトユニットのスカラー部は、前記ベクトル中へまたはベクトルからシフトされている少なくとも一つのスカラーを前記ベクトル部へ供給しおよび/またはそれから受信するように動作する、請求項1に記載のスカラー/ベクトルプロセッサ。
- スカラープロセッサおよび請求項1に記載のスカラー/ベクトルプロセッサを含む処理システムであって、前記スカラー/ベクトルプロセッサは、前記スカラープロセッサに対するコプロセッサとして配置され、前記スカラープロセッサは、前記スカラー/ベクトルプロセッサを制御するように配置され、前記スカラー/ベクトルプロセッサのスカラー部は、ループ内スカラー処理を実行するように配置され、且つスカラープロセッサは、不定期のループ外スカラー処理を実行するように配置される、処理プロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02077034 | 2002-05-24 | ||
PCT/IB2003/002213 WO2003100602A2 (en) | 2002-05-24 | 2003-05-22 | A scalar/vector processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005527038A true JP2005527038A (ja) | 2005-09-08 |
JP4339245B2 JP4339245B2 (ja) | 2009-10-07 |
Family
ID=29558360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004507989A Expired - Fee Related JP4339245B2 (ja) | 2002-05-24 | 2003-05-22 | スカラー/ベクトルプロセッサ |
Country Status (7)
Country | Link |
---|---|
US (1) | US8510534B2 (ja) |
EP (1) | EP1512100A2 (ja) |
JP (1) | JP4339245B2 (ja) |
CN (1) | CN100541425C (ja) |
AU (1) | AU2003228069A1 (ja) |
TW (1) | TWI289789B (ja) |
WO (1) | WO2003100602A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005174293A (ja) * | 2003-12-09 | 2005-06-30 | Arm Ltd | データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法 |
JP2018200692A (ja) * | 2017-05-25 | 2018-12-20 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ベクトルプロセッサの配列ソート方法 |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US20080079712A1 (en) * | 2006-09-28 | 2008-04-03 | Eric Oliver Mejdrich | Dual Independent and Shared Resource Vector Execution Units With Shared Register File |
US8423979B2 (en) * | 2006-10-12 | 2013-04-16 | International Business Machines Corporation | Code generation for complex arithmetic reduction for architectures lacking cross data-path support |
US20080141013A1 (en) * | 2006-10-25 | 2008-06-12 | On Demand Microelectronics | Digital processor with control means for the execution of nested loops |
US8169439B2 (en) | 2007-10-23 | 2012-05-01 | International Business Machines Corporation | Scalar precision float implementation on the “W” lane of vector unit |
US20090150648A1 (en) * | 2007-12-06 | 2009-06-11 | Eric Oliver Mejdrich | Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions |
US8856492B2 (en) * | 2008-05-30 | 2014-10-07 | Nxp B.V. | Method for vector processing |
US8549265B2 (en) | 2008-08-15 | 2013-10-01 | Apple Inc. | Processing vectors using wrapping shift instructions in the macroscalar architecture |
US20110283092A1 (en) * | 2008-08-15 | 2011-11-17 | Apple Inc. | Getfirst and assignlast instructions for processing vectors |
US20110035568A1 (en) * | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
US9335980B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using wrapping propagate instructions in the macroscalar architecture |
US8539205B2 (en) | 2008-08-15 | 2013-09-17 | Apple Inc. | Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture |
US8555037B2 (en) | 2008-08-15 | 2013-10-08 | Apple Inc. | Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture |
US9342304B2 (en) | 2008-08-15 | 2016-05-17 | Apple Inc. | Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture |
US8583904B2 (en) | 2008-08-15 | 2013-11-12 | Apple Inc. | Processing vectors using wrapping negation instructions in the macroscalar architecture |
US9335997B2 (en) | 2008-08-15 | 2016-05-10 | Apple Inc. | Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture |
US8527742B2 (en) | 2008-08-15 | 2013-09-03 | Apple Inc. | Processing vectors using wrapping add and subtract instructions in the macroscalar architecture |
US8560815B2 (en) | 2008-08-15 | 2013-10-15 | Apple Inc. | Processing vectors using wrapping boolean instructions in the macroscalar architecture |
US20120239910A1 (en) * | 2008-08-15 | 2012-09-20 | Apple Inc. | Conditional extract instruction for processing vectors |
GB2470782B (en) * | 2009-06-05 | 2014-10-22 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling vector instructions |
US8458685B2 (en) * | 2009-06-12 | 2013-06-04 | Cray Inc. | Vector atomic memory operation vector update system and method |
US8583898B2 (en) * | 2009-06-12 | 2013-11-12 | Cray Inc. | System and method for managing processor-in-memory (PIM) operations |
US8458677B2 (en) * | 2009-08-20 | 2013-06-04 | International Business Machines Corporation | Generating code adapted for interlinking legacy scalar code and extended vector code |
US9390539B2 (en) * | 2009-11-04 | 2016-07-12 | Intel Corporation | Performing parallel shading operations |
WO2012052773A1 (en) * | 2010-10-21 | 2012-04-26 | Bluwireless Technology Limited | Data processing systems |
CN101986287B (zh) * | 2010-11-25 | 2012-10-17 | 中国人民解放军国防科学技术大学 | 用于向量数据流的重整理缓冲器 |
US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
CA2859999A1 (en) * | 2011-01-25 | 2012-08-02 | Cognivue Corporation | Apparatus and method of vector unit sharing |
US10803009B2 (en) * | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
WO2013063801A1 (zh) * | 2011-11-04 | 2013-05-10 | 中兴通讯股份有限公司 | 一种矢量和标量的混合处理方法及装置 |
US10318291B2 (en) | 2011-11-30 | 2019-06-11 | Intel Corporation | Providing vector horizontal compare functionality within a vector register |
CN103959237B (zh) | 2011-11-30 | 2016-09-28 | 英特尔公司 | 用于提供向量横向比较功能的指令和逻辑 |
CN103959240B (zh) * | 2011-12-15 | 2017-05-17 | 英特尔公司 | 使用混洗表和掩码存储表经由矢量指令优化程序循环的方法 |
SE536099C2 (sv) * | 2011-12-20 | 2013-05-07 | Mediatek Sweden Ab | Digital signalprocessor och basbandskommunikationsanordning |
US20140207838A1 (en) * | 2011-12-22 | 2014-07-24 | Klaus Danne | Method, apparatus and system for execution of a vector calculation instruction |
US9507593B2 (en) | 2011-12-23 | 2016-11-29 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
US9489196B2 (en) | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US10678541B2 (en) | 2011-12-29 | 2020-06-09 | Intel Corporation | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
DE112012007063B4 (de) | 2012-12-26 | 2022-12-15 | Intel Corp. | Zusammenfügen von benachbarten Sammel-/Streuoperationen |
US20140188961A1 (en) * | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
US9619229B2 (en) * | 2012-12-27 | 2017-04-11 | Intel Corporation | Collapsing of multiple nested loops, methods and instructions |
US10223450B1 (en) | 2013-03-14 | 2019-03-05 | Google Llc | Data delivery |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
CN103544131B (zh) * | 2013-10-12 | 2017-06-16 | 深圳市欧克蓝科技有限公司 | 一种可动态配置矢量处理装置 |
CN106406810B (zh) * | 2014-07-02 | 2019-08-06 | 上海兆芯集成电路有限公司 | 微处理器及其方法 |
CN104133736A (zh) * | 2014-07-29 | 2014-11-05 | 江苏宏云技术有限公司 | 一种矢量crc校验指令的设计方法 |
US11656874B2 (en) * | 2014-10-08 | 2023-05-23 | Nxp Usa, Inc. | Asymmetrical processor memory architecture |
US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US11243958B2 (en) | 2015-12-31 | 2022-02-08 | Teradata Us, Inc. | Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions |
US10572263B2 (en) * | 2016-03-31 | 2020-02-25 | International Business Machines Corporation | Executing a composite VLIW instruction having a scalar atom that indicates an iteration of execution |
CN107315717B (zh) * | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
US11075806B1 (en) | 2016-06-30 | 2021-07-27 | Juniper Networks, Inc. | Hierarchical naming scheme for state propagation within network devices |
US11316775B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Maintaining coherency in distributed operating systems for network devices |
US10887173B2 (en) | 2016-12-21 | 2021-01-05 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
US11316744B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Organizing execution of distributed operating systems for network devices |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US20190205131A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Systems, methods, and apparatuses for vector broadcast |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US11579883B2 (en) * | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US11397624B2 (en) * | 2019-01-22 | 2022-07-26 | Arm Limited | Execution of cross-lane operations in data processing systems |
US11095742B2 (en) | 2019-03-27 | 2021-08-17 | Juniper Networks, Inc. | Query proxy for delivery of dynamic system state |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11132198B2 (en) | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
US12061910B2 (en) | 2019-12-05 | 2024-08-13 | International Business Machines Corporation | Dispatching multiply and accumulate operations based on accumulator register index number |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
US11467845B2 (en) | 2020-10-20 | 2022-10-11 | Micron Technology, Inc. | Asynchronous pipeline merging using long vector arbitration |
US12106101B2 (en) | 2020-12-23 | 2024-10-01 | Intel Corporation | Vector processor supporting linear interpolation on multiple dimensions |
US20220342590A1 (en) * | 2021-04-27 | 2022-10-27 | Microchip Technology Inc. | Method and Apparatus for Gather/Scatter Operations in a Vector Processor |
US11561794B2 (en) * | 2021-05-26 | 2023-01-24 | International Business Machines Corporation | Evicting and restoring information using a single port of a logical register mapper and history buffer in a microprocessor comprising multiple main register file entries mapped to one accumulator register file entry |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4760518A (en) * | 1986-02-28 | 1988-07-26 | Scientific Computer Systems Corporation | Bi-directional databus system for supporting superposition of vector and scalar operations in a computer |
US4987534A (en) * | 1986-08-20 | 1991-01-22 | Nec Corporation | Processor having synchronized operation between a CPU and a vector processor |
JPS63253468A (ja) * | 1987-04-10 | 1988-10-20 | Hitachi Ltd | ベクトル処理装置 |
US5261113A (en) * | 1988-01-25 | 1993-11-09 | Digital Equipment Corporation | Apparatus and method for single operand register array for vector and scalar data processing operations |
US5053987A (en) * | 1989-11-02 | 1991-10-01 | Zoran Corporation | Arithmetic unit in a vector signal processor using pipelined computational blocks |
US5197130A (en) | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
JPH04293151A (ja) | 1991-03-20 | 1992-10-16 | Fujitsu Ltd | 並列データ処理方式 |
US5742842A (en) * | 1992-01-28 | 1998-04-21 | Fujitsu Limited | Data processing apparatus for executing a vector operation under control of a master processor |
US5426754A (en) * | 1992-05-26 | 1995-06-20 | International Business Machines Corporation | Cross-interrogate method and means for combined scaler and vector processing system |
WO1994003860A1 (en) * | 1992-08-07 | 1994-02-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
EP1102163A3 (en) | 1999-11-15 | 2005-06-29 | Texas Instruments Incorporated | Microprocessor with improved instruction set architecture |
JP3607548B2 (ja) | 1999-12-27 | 2005-01-05 | エヌイーシーコンピュータテクノ株式会社 | ベクトル演算装置 |
US6839828B2 (en) * | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
-
2003
- 2003-05-22 AU AU2003228069A patent/AU2003228069A1/en not_active Abandoned
- 2003-05-22 WO PCT/IB2003/002213 patent/WO2003100602A2/en active Application Filing
- 2003-05-22 TW TW092113878A patent/TWI289789B/zh not_active IP Right Cessation
- 2003-05-22 EP EP03725538A patent/EP1512100A2/en not_active Withdrawn
- 2003-05-22 CN CNB038117444A patent/CN100541425C/zh not_active Expired - Fee Related
- 2003-05-22 JP JP2004507989A patent/JP4339245B2/ja not_active Expired - Fee Related
- 2003-05-22 US US10/515,451 patent/US8510534B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005174293A (ja) * | 2003-12-09 | 2005-06-30 | Arm Ltd | データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法 |
JP2011048859A (ja) * | 2003-12-09 | 2011-03-10 | Arm Ltd | データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法 |
JP2018200692A (ja) * | 2017-05-25 | 2018-12-20 | 三星電子株式会社Samsung Electronics Co.,Ltd. | ベクトルプロセッサの配列ソート方法 |
JP7241470B2 (ja) | 2017-05-25 | 2023-03-17 | 三星電子株式会社 | ベクトルプロセッサの配列ソート方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2003100602A3 (en) | 2004-11-25 |
AU2003228069A8 (en) | 2003-12-12 |
CN1656495A (zh) | 2005-08-17 |
TW200405208A (en) | 2004-04-01 |
AU2003228069A1 (en) | 2003-12-12 |
US8510534B2 (en) | 2013-08-13 |
JP4339245B2 (ja) | 2009-10-07 |
CN100541425C (zh) | 2009-09-16 |
TWI289789B (en) | 2007-11-11 |
WO2003100602A2 (en) | 2003-12-04 |
US20050240644A1 (en) | 2005-10-27 |
EP1512100A2 (en) | 2005-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4339245B2 (ja) | スカラー/ベクトルプロセッサ | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
US7430631B2 (en) | Access to a wide memory | |
EP1849095B1 (en) | Low latency massive parallel data processing device | |
US5752071A (en) | Function coprocessor | |
EP1126368B1 (en) | Microprocessor with non-aligned circular addressing | |
US20130111188A9 (en) | Low latency massive parallel data processing device | |
EP1102163A2 (en) | Microprocessor with improved instruction set architecture | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
US7383419B2 (en) | Address generation unit for a processor | |
US20100306502A1 (en) | Digital signal processor having a plurality of independent dedicated processors | |
US6728741B2 (en) | Hardware assist for data block diagonal mirror image transformation | |
US6438680B1 (en) | Microprocessor | |
KR100267092B1 (ko) | 멀티미디어신호프로세서의단일명령다중데이터처리 | |
McGrath et al. | A WE-DSP32 based, low-cost, high-performance, synchronous multiprocessor for cyclo-static implementations | |
Mayer-Lindenberg | A modular processor architecture for high-performance computing applications on FPGA | |
Van Berkel et al. | Address generation unit for a processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060522 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080129 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080430 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080509 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080612 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080729 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090408 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090518 |
|
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: 20090605 |
|
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: 20090701 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4339245 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: 20120710 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130710 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |