JP6463633B2 - ベクトルアクセス命令に応答してデータにアクセスするためのベクトルデータアクセスユニット及びデータ処理装置 - Google Patents
ベクトルアクセス命令に応答してデータにアクセスするためのベクトルデータアクセスユニット及びデータ処理装置 Download PDFInfo
- Publication number
- JP6463633B2 JP6463633B2 JP2014532473A JP2014532473A JP6463633B2 JP 6463633 B2 JP6463633 B2 JP 6463633B2 JP 2014532473 A JP2014532473 A JP 2014532473A JP 2014532473 A JP2014532473 A JP 2014532473A JP 6463633 B2 JP6463633 B2 JP 6463633B2
- Authority
- JP
- Japan
- Prior art keywords
- data access
- instruction
- vector
- vector data
- access request
- 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.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims description 427
- 238000012545 processing Methods 0.000 title claims description 46
- 230000004044 response Effects 0.000 title claims description 22
- 230000015654 memory Effects 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 20
- 238000013500 data storage Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000004888 barrier function Effects 0.000 description 24
- 238000004581 coalescence Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
- G06F8/452—Loops
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- 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, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
前記ベクトルデータアクセス命令において前記次のアクセスを示す前記要素に後続する要素により示される少なくとも1つのデータアクセスと、
前記次のアクセスを示す前記要素を含まない前記ベクトルデータアクセス命令の1つからの前記次のアクセスのうちの少なくとも1つと、
のうちの少なくとも1つであり、
前記少なくとも1つのさらなるデータアクセスは、前記次のデータが選択されるのと同一の制約に応じて選択される。
前記それぞれのベクトルデータアクセス命令の前記次のデータアクセスを示す前記要素の前記位置の表示を格納するための前記ベクトルでたあるモジュールのそれぞれにおけるカウンタと、
前記カウンタの値を比較するための比較回路と、
前記次のデータアクセス要求を発行するための前記ベクトルデータアクセスモジュールのそれぞれに関連付けられた発行回路と、
を備える。
なお、前記データアクセス回路は、前記次のデータアクセス要求が発行されると前記制約が満足されないことを示す前記比較回路に応答して、前記モジュールによる前記次のデータアクセス要求の発行を妨げる信号を、前記ベクトルデータアクセスモジュールのうちの一方の前記発行回路に送信するよう構成される。
同一のクロックサイクルにおいて実行される前記ベクトルデータアクセスモジュールからのデータアクセス要求が同一のキャッシュラインに対するものであり、それらが同一のデータアクセスとして実行されるようそれらが前記データアクセスを組み合わせることを判定することに応答するものであるかどうかを判定するための検出回路を備える。
それぞれが複数のベクトルオペランドを含む、複数のベクトルを格納するためのベクトルレジスタ格納器であって、前記ベクトルのうちの少なくとも2つは、前記少なくとも2つのベクトルデータアクセス命令のそれぞれの1つにより示される前記複数のデータアクセスのデータ格納器位置を示す複数のアドレスを含む、ベクトルレジスタ格納器をさらに備える。
前記コンピュータプログラムを分析し、前記コンピュータプログラム内のループを特定し、前記ループ内のスカラー命令をベクトル命令に変換することであって、前記ベクトル命令はベクトルデータアクセス命令を含み、前記ベクトルデータアクセス命令のそれぞれは複数の要素を特定し、前記要素のそれぞれは実行されるデータアクセスを示すことと、
第1ベクトルデータアクセス命令および第2ベクトルデータアクセス命令からのデータアクセスの限定的インターリービングがデータエラーを生じさせない場合に、前記プログラム内における前記第1ベクトルデータアクセス命令および前記第2データベクトル命令を特定することと、
前記第1ベクトルデータアクセス命令の前に、前記第1ベクトルデータアクセス命令および前記第2ベクトルデータアクセス命令からのデータアクセスが限定的な程度までインターリービングされることができるという指示をベクトルデータアクセスユニットに提供する限定的インターリービングスタート命令を前記コンピュータプログラムに挿入することであって、
前記限定的な程度は、前記第2ベクトルデータアクセス命令の前記複数の要素内の前記要素の数値位置から前記第1データアクセス命令の次のデータアクセスを示す前記要素の数値位置から減算した値が所定値より小さい場合には、前記第2ベクトルデータアクセス命令からの要素により示される次のデータアクセスが発行され、係る減算した値が前記所定値よりも小さくない場合には、前記第1第1ベクトルデータアクセス命令からのデータアクセスが発行されることであることと、
前記コンピュータプログラムを、データ処理システム上での実行に好適なコードに変換することと、
を含む方法を提供する。
1ブロックのコードの始点および終点を示す、1対の新規命令と、
「チェック済みアドレスモード」で実行中であるかどうかを示すフラグを有し、
スタート命令に遭遇するとフラグを設定し、終了命令に遭遇するとフラグをクリアし、
それぞれが、
どの要素が次にアクセスされるかを示す要素インデックスjまたはkと、
VMUが、読み出し、書き込み、またはアイドルを実行中であるかどうかを示すフラグと、
アドレスと、アクセスが書き込みである場合には各保留中の要素アクセスの値と、からなる2つまでの保留中の要素アクセスのバッファと、
保留中の要素アクセスの個数のカウントと、
各保留中の要素アクセスに対するバンク識別ロジックと、
を備える、2つのベクトルメモリユニット(VMU)を有し、
2つのVMUにおける要素インデックスを比較する比較器を有し、
それぞれが、
VMUのいずれかからの保留中の要素アクセスのいずれかを選択するマルチプレクサと、
j<kの場合には:
ajがこのバンクに対するものであるならば、ajを選択し、
それ以外の場合には、このバンクに対するアクセスは実行せず、
j>=kの場合には:
ajおよびbkの両方がこのバンクに対するものであるならば、bkを選択し、
ajがこのバンクに対するものでありbkが異なるバンクに対するものであるならば、ajを選択し、
bkがこのバンクに対するものでありajが異なるバンクに対するものであるならば、bjを選択し、
ajおよびbkが異なるバンクに対するものであるならば:
a(j+1)がこのバンクに対するものであるときにはa(j+1)を選択し、
それ以外の場合には、このバンクに対するアクセスは実行しないよう、
保留中の要素アクセス[aj,a(j+1)]および[bk,b(k+1)]を選択する制御ロジックと、
を備える、4つのバンクを有し、
各VMUから選択されたアクセスの個数にしたがってjおよびkの値を更新するロジックを有する、
ロード格納ユニットと、
からなる。
A[i][j].x=p;
A[i][j].y=q;
を含むループのベクトル化は、2つのベクトル格納命令を含むループを生成するであろう。当該のループの所与の反復において、第1ベクトル格納命令はアドレス:[1000,2000,3000,4000,...]に書き込み、その一方で、第2ベクトル格納命令はアドレス[1004, 2004, 3004, 4004,...]に書き込む。この場合、各ベクトルアクセス内に局所性は存在しないが、かなりの局所性がベクトルアドレスの間に存在し、理想的には、アクセスは[1000,1004,2000,2004,3000,3004,4000,4004,...]の順序で行われるであろう。
for(i=0; i<N; ++i) {
a[i]++;
b[i] = a[i];
}
for(i=0; i<N; i+=8) {
start;
v1=vload(&a[i]);
v2=vadd(v1,1);
vstore(&a[i],v2);//このベクトル格納と、このベクトルロードが、
v3=vload(&a[i]); //対象となるものである
vstore(&b[i],v3);
stop;
}
for(i=0; i<N; ++i) {
a[i]++;
b[i]=a[i+2]; // a[i]をa[i+2]に変更
}
または、より一般的に:
for(i=0;i<N;++i) {
a[i]++;
b[i]=a[i+d]; // a[i]をa[i+d]に変更した
}
− スタート命令およびストップ命令は他の命令と組み合わされてもよい。例えば、バックワード分岐がストップ命令として扱われることができる。
- 1つのループ反復の始点は以前のループ反復の終点でもあるので、ループにおいてスタート命令およびストップ命令を単一の命令に組み合わせることは有用である。このことは、異なるループ反復からの要素アクセスが、依存性チェックを実行する事なく安全に順序変更できないことを示す、ループ反復間のバリアのように挙動する。
− スタート命令は正当な順序変更の異なるパターンを示し得る。例えば、上述の「j<k」を要求する代わりに、それは、「j<k」であるならば要素アクセスは順序変更され得ることを、さらに一般的には、何らかの定数「d」に対して、要素アクセスは「j<k+d」であるならば順序変更され得ることを、示し得る。(このパターンはループが「...=A[i+d];A[i]=...」などのコードを含む場合に起こる。)
- スタート命令およびストップ命令を用いる代わりに、われわれは「部分的バリア」を用いることができる。従来のバリアは要素アクセスの順序変更を妨げる一方で、「部分的バリア」は「j<k」の場合に要素の順序変更を妨げる。
− スタート命令およびストップ命令を用いる代わりに、われわれは現行の「バリアモード」を設定する命令を有し得る。バリアモードは、「フル」、「部分的」、または「無」のうちの1つであり得る。現行バリアモードは、メモリアクセスの前に暗黙的なバリア、部分的バリア、または無バリアのいずれかを挿入することにより、全部の後続メモリアクセスに影響を及ぼす。現行バリアモードを「部分的」に設定することはスタート命令のように挙動し、現行バリアモードを「無」に設定することはストップ命令のように挙動する。
− ループをベクトル化するコンパイラ、
を要求し、
− このコンパイラは、スタート命令をループ本体の始点において挿入し、終了命令をループ本体の終点において挿入する。(ループをベクトル化するタスクは、分析を実行し、それにより、どのメモリ依存が存在するかを判定することを伴う。したがって、コンパイラが正常にループをベクトル化すると、コンパイラは、ベクトル化されたループ内のメモリアクセスが競合しないことをすでに知る。
この基本的方式は様々な方法で向上されることができる。
− いくつかの状況において、コンパイラは、代替的に、スタート命令をループの前に、終了命令をループの後に挿入できる。例えば、コンパイラは、ループにより実行される全部のアクセスが別個のアドレスに対するものであることをコンパイラが判定した場合、このことを行う。
− いくつかの状況において、コンパイラは、異なるパターンの正当な順序変更を示す変更されたスタート命令を挿入し得る。例えば、1ブロックのコードの内部で実行される全部のアクセスが別個のアドレスに対するものであることをコンパイラが判定した場合、コンパイラは、「j<=k」が正確であることを、または任意の順序変更が正確であることを示すスタート命令を発することができる。
アクセスを同一のキャッシュラインに合体することは、性能の改善およびエネルギー削減の両方のために有用である。ベクトルアクセスにおいて、合体は通常はベクトル内の局所性を利用するために単一のベクトルアクセス内で行われるが、2つのベクトルアクセスにおける対応する要素位置の間に顕著な局所性が存在することは一般的である。例えば、これら2つの命令文、すなわち
A[i][j].x=p;
A[i][j].y=q;
を含むループのベクトル化は、2つのベクトル格納命令を含むループを生成するであろう。当該のループの所与の反復において、第1ベクトル格納命令はアドレス:[1000,2000,3000,4000,...]に書き込み、その一方で、第2ベクトル格納命令はアドレス[1004,2004,3004,4004,...]に書き込む。この場合、各ベクトルアクセス内に局所性は存在しないが、かなりの局所性がベクトルアドレスの間に存在し、理想的には、アクセスは[1000,1004,2000,2004,3000,3004,4000,4004,...]の順序で行われるであろう。
− 1ブロックのコードの始点および終点を示す、1対の新規命令
・ 「チェック済みアドレスモード」で実行中であるかどうかを示すフラグを有し、
・ スタート命令に遭遇するとフラグを設定し、終了命令に遭遇するとフラグをクリアし、
・ それぞれが、
どの要素が次に格納されるか示す要素インデックスjまたはkと、
VMUが、読み出し、書き込み、またはアイドルを実行中であるかどうかを示すフラグと、
(VMUがアイドル状態でない場合に)VMUにおいて保留中のアクセスが存在するかどうかを示すフラグと、
(保留中のアクセスが存在する場合に)次の保留中のアクセスのアドレスと、
(次の保留中のアクセスが書き込みである場合に)次の保留中のアクセスの値と、
を備える、2つのベクトルメモリユニット(VMU)を有し、
・ 2つのVMUにおける要素インデックスを比較する比較器を有し、
・ VMUの次の保留中のアクセスのアドレスが同一のキャッシュラインに対するものであるかどうかを比較するための比較器を有し、
・ チェック済みアドレスモードフラグがクリアであるとき、第1VMUがアイドルであるか、または両方のアクセスが読み出しである場合、アクセスは第1VMUから取られ、
チェック済みアドレスモードフラグが設定されているとき、j<=kであり且つ次の保留中のアクセスが同一のキャッシュラインに対するものである場合、第1VMUおよび第2VMUは単一のキャッシュアクセスに組み合わされ、
チェック済みアドレスモードフラグが設定され、次の保留中のアクセスが異なるキャッシュラインに対するものであり、j<kであるとき、第2VMUからのアクセスが選択され、
それ以外の場合は、第2VMUからのアクセスが選択されるよう、
一方のVMUからまたは他方のVMUからの次の要素を選択するためのマルチプレクサを有する、
− ロード格納ユニット
− 複数のアクセスのアドレス(および、書き込みに対してはデータ)をバッファリングするよう、および
各VMU内で近接する要素アクセスのアドレスを比較し、それにより、合体の候補となる各VMU内の連続的な要素アクセスのシーケンスが特定されるよう、
両方のVMUを拡張することにより、この挙動をサポートするよう強化されることができる。これは、要素アクセスが連続的にVMUに加えられる場合、VMU毎に1つの追加的な比較を必要とする。
− 次の要素アクセスのアドレスが同一のキャッシュラインに対するものであり、第1VMUがそのキャッシュラインに対するm個の連続したアクセスを有し、第2VMUがそのキャッシュラインに対するn個の連続したアクセスを有する場合、第1VMUからのm個の要素と第2VMUからの「min(j+m,k+n)−k」個の要素が単一のキャッシュアクセスに合体されることができる。
ギャザースキャッタベクトルメモリアクセス命令を有するプログラムは高いアドレス帯域幅を有する(すなわちより多くのアドレスが単位サイクルあたりでメモリシステムに提供される)ことができ、したがって、サイクル毎に多重アクセスを実行できるメモリシステムからの利点を有することができる。これは、メモリシステムをいくつかの独立的にアクセス可能なバンクに分割し、ベクトルメモリアクセスが一般に複数のバンクをアクセスし、それによりアクセスが互いに対して並行的に実行されることが可能となるようアドレスマップを配列することにより、しばしば実装される。このバンク化は、メモリシステムのいくつかの異なる部分(すなわち、TLB、L1キャッシュ、L2キャッシュ、DRAMコントローラ、その他)に適用され得る。例えば、キャッシュは4つの独立的にアクセス可能なバンクB0、B1、B2、およびB3と、4つのバンクのうちのどのバンクがそのアドレスを格納するために用いられる要素のアドレスのビット6および7と、に分割され得る。要素アクセスa0〜a7からなるベクトルアクセスは、各要素アクセスのアドレスのビット6および7を調査し、各要素アクセスを4つのバンクのうちの1つに誘導することにより、実行されることができる。図12はアクセスパターンを示す。なお、サイクル毎に最大で2要素アクセスの要素アクセスを順番に発行するベクトルメモリユニットを仮定して、このアクセスパターンは、アドレス[60,76,92,108,124,140,156,172](バンク[B0,B1,B1,B1,B1,B2,B2,B2,B2,B3]にマッピングする)に対するベクトルアクセスの結果として生成されるものである。完全なベクトル演算は、たとえどのバンクも4つ以上の要素アクセスを実行しないとしても、6サイクルを必要とする。
Claims (25)
- 命令された順序を有するデコードされたベクトルデータアクセス命令に応答して、データ格納器内に格納されたデータにアクセスするためのベクトルデータアクセスユニットであって、
前記ベクトルデータアクセス命令のそれぞれは複数の要素を特定し、前記要素のそれぞれは実行されるデータアクセス要求を示し、前記複数の要素のそれぞれは、対応する前記データアクセス要求が前記ベクトルデータアクセスユニットにおいて実行されるよう命令される前記ベクトルデータアクセス命令内での1つの順序のうちの1つの数値位置を有し、
前記ベクトルデータアクセスユニットは、前記要素により示されたデータアクセス要求を前記データ格納器に対して発行するためのデータアクセス順序付け回路を備え、
前記データアクセス順序付け回路は、少なくとも2つのデコードされたベクトルデータアクセス命令の受け取り及び前記少なくとも2つのデコードされたベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができるとの示唆に応答するように構成されており、前記命令された順序が前の方の前記ベクトルデータアクセス命令は前記命令された順序が後の方の前記ベクトルデータアクセス命令よりも前に受け取られたものであり、また、前記少なくとも2つのデコードされたベクトルデータアクセス命令のうちの少なくとも1つは書き込み命令である、ものであり、前記インターリービングは、前記命令された順序が前の方の前記ベクトルデータアクセス命令からのデータアクセス要求を実行する前に、前記命令された順序が後の方の前記ベクトルデータアクセス命令からのデータアクセス要求を実行することを含む、ものであり、
前記データアクセス順序付け回路は、
前記少なくとも2つのベクトルデータアクセス命令のそれぞれに対して、前記複数の要素内の前記要素の数値位置から、前記複数の要素により示される前記複数のデータアクセス要求のうちのいずれが前記ベクトルデータアクセス命令に関して実行される次のデータアクセス要求であるかを判定することと、
前記命令された順序が後の前記ベクトルデータアクセス命令に関して実行される前記次のデータアクセス要求を示す前記要素の数値位置と、前記命令された順序が前の方の前記ベクトルデータアクセス命令に関して実行される前記次のデータアクセス要求を示す前記要素の数値位置と、の間の差異が所定値よりも小さいという制約の下で、前記少なくとも2つのベクトルデータアクセス命令の前記命令された順序と、前記少なくとも2つのベクトルデータアクセス命令のそれぞれに関して実行される前記次のデータアクセス要求を示す前記要素の数値位置と、に応じて、前記データ格納器に対して発行されるべき次のデータアクセス要求として、前記少なくとも2つのベクトルデータアクセス命令のそれぞれに関して実行される前記次のデータアクセス要求のうちの1つを選択することと、
を行う前記ベクトルデータアクセスユニット。 - 前記制約は、前記命令された順序が前の方のベクトルデータアクセス命令からの要素により示されるデータアクセス要求が、前記命令された順序が後の方のベクトルデータアクセス命令における前記複数の要素のうち同じ数値位置に配置された要素により示されるデータアクセス要求の後に発行されないこと、をさらに含む、請求項1に記載のベクトルデータアクセスユニット。
- 前記データアクセス順序付け回路は、前記制約が満足される場合、前記命令された順序が前の方のベクトルデータアクセス命令からの前記次のデータアクセス要求に優先して、前記命令された順序が後の方のベクトルデータアクセス命令からの前記次のデータアクセス要求を、前記発行される次のデータアクセス要求として選択するよう構成される、請求項1および請求項2のいずれか1つに記載のベクトルデータアクセスユニット。
- 前記データアクセス順序付け回路は、同一のクロックサイクルにおいて互いに並列して少なくとも2つのデータアクセス要求を発行するよう構成され、
前記データアクセス順序付け回路は、前記発行される次のデータアクセス要求と、並列して発行するための少なくとも1つのさらなるデータアクセス要求と、を選択するよう構成され、前記少なくとも1つのさらなるデータアクセス要求は、
前記ベクトルデータアクセス命令において前記次のデータアクセス要求を示す前記要素に後続する要素により示される少なくとも1つのデータアクセス要求と、
前記次のデータアクセス要求を示す前記要素を含まない前記ベクトルデータアクセス命令のうちの1つにおける前記次のデータアクセス要求のうちの少なくとも1つと、
のうちの少なくとも1つであり、
前記少なくとも1つのさらなるデータアクセス要求は、前記発行される次のデータアクセス要求が選択されるのと同一の制約に応じて選択される、
請求項1から請求項3のいずれか1つに記載のベクトルデータアクセスユニット。 - アクセスされる前記データ格納器は複数のバンクメモリのうちの1つのバンクを含む、請求項1から請求項4のいずれか1つに記載のベクトルデータアクセスユニット。
- 前記データ格納器は複数バンクのメモリを含み、各バンクは他のバンクから独立的であり、前記データアクセス順序付け回路は、前記少なくとも1つのさらなるデータアクセス要求を選択するとき、同一のクロックサイクルにおいて選択される異なるバンクに対するデータアクセス要求間におけるデータアクセス要求に前記制約を課さないよう構成される、請求項4に記載のベクトルデータアクセスユニット。
- それぞれが前記少なくとも2つのベクトルデータアクセス命令のうちのそれぞれ1つを受け取るよう構成された、互いに対して並列に配列された少なくとも2つのベクトルデータアクセスモジュールを備える、請求項1から請求項6のいずれか1つに記載のベクトルデータアクセスユニットであって、
前記データアクセス順序付け回路は、
それぞれの前記ベクトルデータアクセス命令における前記次のデータアクセス要求を示す前記要素の前記数値位置の指示を格納するための前記ベクトルデータアクセスモジュールのそれぞれにおけるカウンタと、
前記カウンタの値を比較するための比較回路と、
前記次のデータアクセス要求を発行するための前記ベクトルデータアクセスモジュールのそれぞれに関連付けられた発行回路と、
備え、
前記データアクセス順序付け回路は、前記次のデータアクセス要求が発行されたならば前記制約が満足されなくなることを示す前記比較回路に応答して、前記ベクトルデータアクセスモジュールによる前記次のデータアクセス要求の発行を妨げる信号を、前記ベクトルデータアクセスモジュールのうちの少なくとも1つの前記発行回路に送信するよう構成される、ベクトルデータアクセスユニット。 - それぞれが前記少なくとも2つのベクトルデータアクセス命令のうちのそれぞれ1つを受け取るよう構成された、互いに対して並列に配列された少なくとも2つのベクトルデータアクセスモジュールを備え、前記データ格納器は複数のキャッシュラインを備えるキャッシュを備え、前記キャッシュラインのそれぞれは複数のデータ項目を格納し、前記データアクセス順序付け回路は、
同一のクロックサイクルにおいて実行される前記ベクトルデータアクセスモジュールからのデータアクセス要求が同一のキャッシュラインに対するものであるかどうかを判定し、そうであるとの判定に応じて、同一のデータアクセス要求として実行されるよう当該データアクセス要求を組み合わせる検出回路、
を備える、請求項1から請求項6のいずれか1つに記載のベクトルデータアクセスユニット。 - 前記少なくとも2つのベクトルデータアクセス命令は、ベクトルロード命令およびベクトル格納命令を含み、前記ベクトルデータアクセスユニットは、
それぞれが複数のベクトルオペランドを含む複数のベクトルを格納するためのベクトルレジスタ格納器であって、前記ベクトルのうちの少なくとも2つは、前記少なくとも2つのベクトルデータアクセス命令のそれぞれ1つにより示される前記複数のデータアクセス要求のデータ格納器位置を示す複数のアドレスを含む、ベクトルレジスタ格納器、
をさらに備える、請求項1から請求項8のいずれか1つに記載のベクトルデータアクセスユニット。 - データを処理するためのデータ処理装置であって、
処理される命令をフェッチするためのフェッチ回路と、
前記命令をデコードするためのデコード回路と、
前記デコードされた命令に応答して演算を実行するよう構成された処理回路と、
ベクトルデータアクセス命令に応答して処理される前記データにアクセスするための、請求項1から請求項9のいずれか1つに記載の前記ベクトルデータアクセスユニットと、
を備える、データ処理装置。 - 請求項10に記載のデータ処理装置であって、
限定的な程度までインターリービングが許可されることを示す命令に応答して、前記命令された順序が前の方のベクトルデータアクセス命令からのおよび命令された順序が後の方のベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができるという示唆を前記ベクトルデータアクセスユニットに提供するように、前記デコード回路は構成される、
データ処理装置。 - 限定的インターリービングが許可されることを示す前記命令は、ベクトルロード命令、ベクトル格納命令、限定的インターリービングスタート命令、限定的インターリービングフラグを設定するための命令、およびベクトル制御レジスタを設定するための命令のうちの少なくとも1つを含む、請求項10または請求項11に記載のデータ処理装置。
- 限定的インターリービングが許可されることを示す前記命令は、前記限定的インターリービングスタート命令を含み、前記限定的インターリービングスタート命令はインターリービングの程度を示す前記所定値を含む、請求項12に記載のデータ処理装置。
- 限定的インターリービングがもはや許可されないことを示す命令に応答してベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができないという示唆を前記ベクトルデータアクセスユニットに提供するように、前記デコード回路は構成される、請求項11に記載のデータ処理装置。
- 限定的インターリービングがもはや許可されないことを示す前記命令は、限定的インターリービングストップ命令およびバックワード分岐命令のうちの少なくとも1つを含む、請求項14に記載のデータ処理装置。
- 前記命令された順序が前の方のベクトルデータアクセス命令からのおよび前記命令された順序が後の方のベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができることを示すフラグ値を格納するためのフラグデータ格納器をさらに備え、前記ベクトルデータアクセスユニットは前記フラグ値を検出するための検出器を備える、請求項10から請求項15のいずれか1つに記載のデータ処理装置。
- 前記データ処理装置は、例外の捕捉に応答して前記フラグ値をクリアするように構成される、請求項16に記載のデータ処理装置。
- コンピュータプログラムをコンパイルする方法であって、
コンパイラが、前記コンピュータプログラムを分析し、前記コンピュータプログラム内のループを特定し、前記ループ内のスカラー命令をベクトル命令に変換するステップであって、前記ベクトル命令はベクトルデータアクセス命令を含み、前記ベクトルデータアクセス命令は命令される順序を有し、前記ベクトルデータアクセス命令のそれぞれは複数の要素を特定し、前記要素のそれぞれは実行されるデータアクセス要求を示すものであるステップと、
前記コンパイラが、前記命令される順序が前の方の第1ベクトルデータアクセス命令および前記命令される順序が後の方の第2ベクトルデータアクセス命令からのデータアクセス要求の限定的インターリービングがデータエラーを生じさせない場合に、前記コンピュータプログラム内における前記第1ベクトルデータアクセス命令および前記第2ベクトルデータアクセス命令を特定するステップと、
前記コンパイラが、前記第1ベクトルデータアクセス命令の前に、前記第1ベクトルデータアクセス命令および前記第2ベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができるという示唆をベクトルデータアクセスユニットに提供する限定的インターリービングスタート命令を前記コンピュータプログラムに挿入するステップであって、
前記限定的な程度までインターリービングされることは、前記第1ベクトルデータアクセス命令において次のデータアクセス要求を示す前記要素の数値位置から前記第2ベクトルデータアクセス命令において次のデータアクセス要求を示す前記要素の数値位置を減算した値が所定値より小さい場合には、前記第1ベクトルデータアクセス命令からの要素により示される次のデータアクセス要求が前記第2ベクトルデータアクセス命令からのデータアクセス要求より先に発行され、係る減算した値が前記所定値よりも小さくない場合には、前記第2ベクトルデータアクセス命令からのデータアクセス要求が前記第1ベクトルデータアクセス命令からのデータアクセス要求より先に発行されることであるステップと、
前記コンパイラが、前記コンピュータプログラムを、データ処理システム上での実行に用いられるコードに変換するステップと、
を含む方法。 - 請求項18に記載のコンピュータプログラムをコンパイルする方法であって、前記コンパイラが、前記コンピュータプログラム内のループを特定することと、前記コンパイラが、前記ループ内のスカラー命令をベクトル命令に変換することと、の最初の分析ステップを含む、方法。
- 前記限定的インターリービングスタート命令は前記所定値を含む、請求項18または請求項19に記載のコンピュータプログラムをコンパイルする方法。
- 前記特定されたベクトルデータアクセス命令の後に限定的インターリービングストップ命令を挿入するステップをさらに含む、請求項18から請求項20のいずれか1つに記載のコンピュータプログラムをコンパイルする方法。
- 前記命令を分析し、前記コンピュータプログラム内のバックワード分岐を特定し、前記バックワード分岐が前記インターリービングの領域の終点において配置される場合には、前記限定的インターリービングスタート命令のみを挿入し、前記限定的インターリービングストップ命令は挿入しないステップをさらに含む、請求項21に記載のコンピュータプログラムをコンパイルする方法。
- コンピュータプログラムをコンパイルするためのコンパイラであって、前記コンピュータプログラムを分析し、前記コンピュータプログラム内のループを特定し、前記ループ内のスカラー命令をベクトル命令に変換するための分析回路であって、前記ベクトル命令はベクトルデータアクセス命令を含み、前記ベクトルデータアクセス命令は命令される順序を有し、前記ベクトルデータアクセス命令のそれぞれは複数の要素を特定し、前記要素のそれぞれは実行されるデータアクセス要求を示し、前記命令される順序が前の方の第1ベクトルデータアクセス命令からのおよび前記命令される順序が後の方の第2ベクトルデータアクセス命令からの前記データアクセス要求の限定的インターリービングがデータエラーを生じさせない場合には、前記第1ベクトルデータアクセス命令および前記第2ベクトルデータアクセス命令を前記コンピュータプログラム内で特定するための分析回路と、
前記第1ベクトルデータアクセス命令および前記第2ベクトルデータアクセス命令からのデータアクセス要求が限定的な程度までインターリービングされることができるという示唆をベクトルデータアクセスユニットに提供する限定的インターリービングスタート命令を生成し、前記第1ベクトルデータアクセス命令の前に前記限定的インターリービングスタート命令を前記コンピュータプログラムに挿入するための命令生成回路であって、
前記限定的な程度までインターリービングされることは、前記第1ベクトルデータアクセス命令において次のデータアクセス要求を示す前記要素の数値位置から前記第2ベクトルデータアクセス命令において次のデータアクセス要求を示す前記要素の数値位置を減算した値が所定値より小さい場合には、前記第1ベクトルデータアクセス命令からの要素により示される次のデータアクセス要求が前記第2ベクトルデータアクセス命令からのデータアクセス要求より先に発行され、係る減算した値が前記所定値よりも小さくない場合には、前記第2ベクトルデータアクセス命令からのデータアクセス要求が前記第1ベクトルデータアクセス命令からの要素により示される次のデータアクセス要求より先に発行されることである、命令生成回路と、
前記コンピュータプログラムを、データ処理システム上での実行に用いられるコードに変換するための変換回路と、
を含む、コンパイラ。 - 命令された順序を有する少なくとも2つのベクトルデータアクセス命令と、前記ベクトルデータアクセス命令により特定されるデータアクセス要求が何らかの程度までインターリービングされることができるという指示と、に応答して、データ格納器にデータアクセス要求を発行する方法であって、前記ベクトルデータアクセス命令のそれぞれは、実行される複数の順次的なデータアクセス要求をリストするものであり、
前記少なくとも2つのベクトルデータアクセス命令のそれぞれについて、前記複数の順次的なデータアクセス要求のうちのいずれが実行される次のデータアクセス要求であるかを判定するステップと、
前記実行される次のデータアクセス要求のそれぞれについて、前記ベクトルデータアクセス命令における前記複数の順次的なデータアクセス要求の前記リストにおける前記次のデータアクセス要求の数値位置を判定するステップと、
前記命令された順序が前の方のベクトルデータアクセス命令からの前記データアクセス要求が、前記命令された順序が後の方のベクトルデータアクセス命令の順次的なデータアクセス要求の前記リストにおける同じ数値位置におけるデータアクセス要求の後で発行されないよう、前記数値位置に応じて前記少なくとも2つのベクトルデータアクセス命令のいずれかから前記次のデータアクセス要求のうちの1つを前記データ格納器に対して発行される次のデータアクセス要求として選択するステップと、
を含む、方法。 - 限定的インターリービングスタート命令と後続の命令される順序を有する第1ベクトルデータアクセス命令および第2ベクトルデータアクセス命令とを含むコンピュータプログラムであって、前記ベクトルデータアクセス命令のそれぞれは複数の要素を特定し、前記要素のそれぞれは実行されるデータアクセス要求を示し、前記限定的インターリービングスタート命令は、データプロセッサにより実行されると、前記命令される順序が前の方である前記第1ベクトルデータアクセス命令および前記命令される順序が後の方である第2ベクトルデータアクセス命令により特定されるデータアクセス要求の限定的インターリービング命令をスタートするよう前記データプロセッサを制御し、その結果、前記第1および第2ベクトルデータアクセス命令に応答して実行される前記データアクセス要求は限定的な程度までインターリービングされることができ、
前記限定的な程度までインターリービングされることは、前記第1ベクトルデータアクセス命令の複数の要素内の前記要素の数値位置から前記第2ベクトルデータアクセス命令の次のデータアクセス要求を示す前記要素の数値位置を減算した値が所定値より小さい場合には、前記第1ベクトルデータアクセス命令からの要素により示される次のデータアクセス要求が前記第2ベクトルデータアクセス命令からのデータアクセス要求より先に発行され、前記減算した値が前記所定値よりも小さくない場合には、前記第2ベクトルデータアクセス命令からのデータアクセス要求が前記第1ベクトルデータアクセス命令からの要素により示される次のデータアクセス要求より先に発行されることである、
コンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/200,656 | 2011-09-28 | ||
US13/200,656 US9021233B2 (en) | 2011-09-28 | 2011-09-28 | Interleaving data accesses issued in response to vector access instructions |
PCT/GB2012/052383 WO2013045919A1 (en) | 2011-09-28 | 2012-09-26 | Interleaving data accesses issued in response to vector access instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014532221A JP2014532221A (ja) | 2014-12-04 |
JP6463633B2 true JP6463633B2 (ja) | 2019-02-06 |
Family
ID=47023028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014532473A Active JP6463633B2 (ja) | 2011-09-28 | 2012-09-26 | ベクトルアクセス命令に応答してデータにアクセスするためのベクトルデータアクセスユニット及びデータ処理装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9021233B2 (ja) |
JP (1) | JP6463633B2 (ja) |
KR (1) | KR102048213B1 (ja) |
CN (1) | CN103930883B (ja) |
GB (1) | GB2508751B (ja) |
WO (1) | WO2013045919A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436469B2 (en) * | 2011-12-15 | 2016-09-06 | Intel Corporation | Methods to optimize a program loop via vector instructions using a shuffle table and a mask store table |
US8983979B2 (en) * | 2012-01-13 | 2015-03-17 | Hewlett-Packard Development Company, L.P. | Controlling access to stored information |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10275247B2 (en) * | 2015-03-28 | 2019-04-30 | Intel Corporation | Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices |
US10198264B2 (en) * | 2015-12-15 | 2019-02-05 | Intel Corporation | Sorting data and merging sorted data in an instruction set architecture |
US10248419B2 (en) * | 2016-03-09 | 2019-04-02 | International Business Machines Corporation | In-memory/register vector radix sort |
GB2549737B (en) * | 2016-04-26 | 2019-05-08 | Advanced Risc Mach Ltd | An apparatus and method for managing address collisions when performing vector operations |
GB2554096B (en) * | 2016-09-20 | 2019-03-20 | Advanced Risc Mach Ltd | Handling of inter-element address hazards for vector instructions |
DE102017207876A1 (de) * | 2017-05-10 | 2018-11-15 | Robert Bosch Gmbh | Parallelisierte Verarbeitung |
GB2564853B (en) * | 2017-07-20 | 2021-09-08 | Advanced Risc Mach Ltd | Vector interleaving in a data processing apparatus |
GB2573119A (en) * | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
GB2587426B (en) * | 2019-09-30 | 2022-04-06 | Advanced Risc Mach Ltd | Atomic range compare and modify operations |
US20240086162A1 (en) * | 2022-09-09 | 2024-03-14 | Microsoft Technology Licensing, Llc | Interleaved machine instruction placement in memory |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6052471B2 (ja) * | 1980-05-14 | 1985-11-19 | 富士通株式会社 | ベクトル演算処理システム |
JPS58134365A (ja) * | 1982-02-03 | 1983-08-10 | Hitachi Ltd | ベクトル処理装置 |
US4789925A (en) | 1985-07-31 | 1988-12-06 | Unisys Corporation | Vector data logical usage conflict detection |
JPS62115571A (ja) * | 1985-11-15 | 1987-05-27 | Fujitsu Ltd | ベクトルアクセス制御方式 |
JPH06103495B2 (ja) * | 1987-02-12 | 1994-12-14 | 日本電気株式会社 | 情報処理装置 |
JPS6462764A (en) * | 1987-09-03 | 1989-03-09 | Agency Ind Science Techn | Vector computer |
US5043867A (en) * | 1988-03-18 | 1991-08-27 | Digital Equipment Corporation | Exception reporting mechanism for a vector processor |
DE68928113T2 (de) | 1988-04-01 | 1997-10-09 | Nec Corp | Reihenfolgesteuersystem zur Behandlung von Befehlen |
JP2870254B2 (ja) * | 1991-10-02 | 1999-03-17 | 日本電気株式会社 | 仮想計算機の入出力割り込み処理方式 |
JPH06230964A (ja) * | 1993-02-01 | 1994-08-19 | Hitachi Ltd | キャッシュメモリを備えた計算機 |
JPH06274525A (ja) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | ベクトルデータプリフェッチ制御装置 |
JPH07141327A (ja) | 1993-04-13 | 1995-06-02 | Nec Corp | ベクトル処理装置 |
JPH0728786A (ja) * | 1993-07-15 | 1995-01-31 | Hitachi Ltd | ベクトルプロセッサ |
US6208207B1 (en) | 1999-05-05 | 2001-03-27 | Simon Fraser University | Adaptive linearizer for RF power amplifiers |
JP3733842B2 (ja) | 2000-07-12 | 2006-01-11 | 日本電気株式会社 | ベクトルスキャタ命令制御回路及びベクトル型情報処理装置 |
JP3789320B2 (ja) * | 2001-06-12 | 2006-06-21 | エヌイーシーコンピュータテクノ株式会社 | ベクトル処理装置及び該装置を用いた追い越し制御方法 |
US7734676B2 (en) * | 2001-06-27 | 2010-06-08 | International Business Machines Corporation | Method for controlling the number of servers in a hierarchical resource environment |
CN1672128A (zh) * | 2002-07-26 | 2005-09-21 | 皇家飞利浦电子股份有限公司 | 用于并行访问多个矢量元素的方法和设备 |
JP3988144B2 (ja) | 2004-02-23 | 2007-10-10 | 日本電気株式会社 | ベクトル処理装置、及び、追い越し制御回路 |
GB2447427B (en) * | 2007-03-12 | 2011-05-11 | Advanced Risc Mach Ltd | Address calculation within data processing systems |
US8060728B2 (en) | 2007-05-14 | 2011-11-15 | Apple Inc. | Generating stop indicators during vector processing |
US8078847B2 (en) * | 2007-05-14 | 2011-12-13 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
US8131979B2 (en) * | 2008-08-15 | 2012-03-06 | Apple Inc. | Check-hazard instructions for processing vectors |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
-
2011
- 2011-09-28 US US13/200,656 patent/US9021233B2/en active Active
-
2012
- 2012-09-26 GB GB1403770.9A patent/GB2508751B/en active Active
- 2012-09-26 JP JP2014532473A patent/JP6463633B2/ja active Active
- 2012-09-26 CN CN201280047433.1A patent/CN103930883B/zh active Active
- 2012-09-26 KR KR1020147009601A patent/KR102048213B1/ko active IP Right Grant
- 2012-09-26 WO PCT/GB2012/052383 patent/WO2013045919A1/en active Application Filing
-
2015
- 2015-03-23 US US14/665,142 patent/US9483243B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20150261512A1 (en) | 2015-09-17 |
GB2508751A (en) | 2014-06-11 |
CN103930883B (zh) | 2017-02-15 |
KR20140071425A (ko) | 2014-06-11 |
US20130080737A1 (en) | 2013-03-28 |
JP2014532221A (ja) | 2014-12-04 |
GB2508751B (en) | 2020-09-02 |
US9021233B2 (en) | 2015-04-28 |
US9483243B2 (en) | 2016-11-01 |
GB201403770D0 (en) | 2014-04-16 |
CN103930883A (zh) | 2014-07-16 |
WO2013045919A1 (en) | 2013-04-04 |
KR102048213B1 (ko) | 2019-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6463633B2 (ja) | ベクトルアクセス命令に応答してデータにアクセスするためのベクトルデータアクセスユニット及びデータ処理装置 | |
US8402255B2 (en) | Memory-hazard detection and avoidance instructions for vector processing | |
Ainsworth et al. | Software prefetching for indirect memory accesses | |
JP6236443B2 (ja) | ベクトル処理中のデータ要素処理のための順序制御 | |
US9292291B2 (en) | Instruction merging optimization | |
US9811340B2 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
US9483438B2 (en) | Apparatus and method for controlling the number of vector elements written to a data store while performing speculative vector write operations | |
JP2011514598A (ja) | 効率的な同期および並列リダクション演算を可能にするベクトル命令 | |
US9280349B2 (en) | Decode time instruction optimization for load reserve and store conditional sequences | |
TWI733798B (zh) | 在執行向量操作時管理位址衝突的設備及方法 | |
KR100316710B1 (ko) | 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치 | |
US6704861B1 (en) | Mechanism for executing computer instructions in parallel | |
JP5630281B2 (ja) | ベクトル命令制御回路及びリストベクトルの追い越し制御方法 | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
US20090031118A1 (en) | Apparatus and method for controlling order of instruction | |
US20160085557A1 (en) | Processor and processing method of vector instruction | |
US20170109160A1 (en) | Instruction for performing an overload check | |
KR20130108878A (ko) | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 | |
JPH02206836A (ja) | データ処理装置 | |
MXPA98002291A (en) | Apparatus for detection based on region of interference between reordered memory operations in a process | |
JP2006202265A (ja) | マイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150903 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20161101 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20170201 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20170403 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170501 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20171101 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180301 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20180309 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20180525 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190104 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6463633 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |