JP6913693B2 - ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 - Google Patents
ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 Download PDFInfo
- Publication number
- JP6913693B2 JP6913693B2 JP2018554767A JP2018554767A JP6913693B2 JP 6913693 B2 JP6913693 B2 JP 6913693B2 JP 2018554767 A JP2018554767 A JP 2018554767A JP 2018554767 A JP2018554767 A JP 2018554767A JP 6913693 B2 JP6913693 B2 JP 6913693B2
- Authority
- JP
- Japan
- Prior art keywords
- execution
- vector
- instruction
- address
- instructions
- 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 313
- 238000000034 method Methods 0.000 title claims description 79
- 230000008569 process Effects 0.000 claims description 54
- 230000004044 response Effects 0.000 claims description 39
- 230000009471 action Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 238000012986 modification Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 241001481828 Glyptocephalus cynoglossus Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000001179 sorption measurement Methods 0.000 description 1
- 230000003068 static effect 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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
-
- 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/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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
for(x=0;x<SIZE;x++){
A[C[x]]++;
}
・オフセットxの配列CからベクトルレジスタzCへの連続読み取りを実行する
・zCのポインタを使用して配列Aから収集し、結果をベクトルレジスタzAに書き込む
・zAの全ての要素に#1を加える
・zCのポインタを使用してベクトルzAを分散する
・ベクトル長だけxをインクリメントする
・xが配列のサイズより小さいかどうかをチェックし、それが当てはまる場合には反復処理を続ける
for(x=0;x<SIZE;x++){
A[x]=B[x];
}
変形1:CHECK Pg,Zn.<T> //flag−setting only
mov x1,#0
dup z2.s,#1
pfirst p1.b,p0,p1.b
whilelt p0.s,x1,SIZE
.LloopA:
ld1w z0.s,p0/z,[xC,x1,lsl #2] //Contiguous load into z0
check p0,z0.s
b.ne .Lfallback //Fallback sequence used when
//check fails
ld1w z1.s,p0/z,[x0,z0.s,uxtw] //Gather using z0
add z1.s,p0/z,z1.s,z2.s //Predicated addition
st1w z1.s,p0,[x0,z0.s,uxtw] //Scatter using z0
.Llabel1:
incw x1,ALL //Advance by number of vector
//elements processed
whilelt p0.s,x1,SIZE //Check array limits and trim
//predicate
b.first .LloopA
……
……
.Lfallback:
pfirst p1.b,p0,p1.b
.LfallbackLoop:
lastb x2,p1,z0.s
ldr x3,[x2]
add x3,x3,#1
str x3,[x2]
pnext p1.s,p0,p1.s
b.any .LfallbackLoop
b .Llabel1
変形2:CHECK Pd.<T>,Pg/Z,Zn.<T>//flag−setting with predicate
//generation
mov x1,#0
dup z2.s,#1
pfirst p1.b,p0,p1.b
whilelt p0.s,x1,SIZE
.LloopA:
ld1w z0.s,p0/z,[xC,x1,lsl #2] //Contiguous load into z0
check p1.s,p0/z,z0.s
ld1w z1.s,p0/z,[x0,z0.s,uxtw] //Gather using z0
b.ne .Lfallback //Fallback sequence used when
//check fails
add z1.s,p0/z,z1.s,z2.s //Predicated addition
st1w z1.s,p0,[x0,z0.s,uxtw] //Scatter using z0
.Llabel1:
incw x1,ALL //Advance by the number of vector
//elements processed
whilelt p0.s,x1,SIZE //Check array limits and trim
//predicate
b.first .LloopA
……
……
.Lfallback:
mov p2,p0
.LfallbackLoop:
add z1.s,p1/z,z1.s,z2.s //Predicated addition
st1w z1.s,p1,[x0,z0.s,uxtw] //Scatter using z0
bics p2.b,p0/z,p2.b,p1.b //Disable group of lanes which
//have already been processed and set flags
b.none .Llabel1
check p1.s,p2/z,z0.s
ld1w z1.s,p1/z,[x0,z0.s,uxtw] //Gather using z0
b .LfallbackLoop
変形3:LDCHECK Zd.<T>、Pg/Z、[<Xn | SP>、<Zm>.<T>]
変形4:CHECK<T>Pg,Xn,Xm //flag−setting only
変形5:CHECK<T>Pd.<T>,Pg/Z,Xn,Xm //flag−setting with predicate
//generation.
Claims (22)
- それぞれが複数の要素を含むベクトルオペランドを記憶するためのレジスタストアと、
命令によって定められる動作を行うために命令を実行する実行回路であって、前記レジスタストアとメモリとの間で前記ベクトルオペランドを移動させるためにメモリアクセス動作を行うアクセス回路と、前記ベクトルオペランドを使用してデータ処理動作を行う処理回路とを備える、実行回路と、
を備え、
前記実行回路がベクトルループを反復的に実行するようになっており、各反復中に、前記実行回路は、命令のシーケンスを実行してベクトルループを実施するようになっており、前記シーケンスは、複数のメモリアドレスを特定するチェック命令を含み、前記実行回路は、前記チェック命令の実行に応答して、前記複数のメモリアドレス中にアドレスハザード状態が存在するかどうかを決定し、
前記ベクトルループのそれぞれの反復ごとに、前記実行回路は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際にデフォルトレベルのベクトル化を使用するとともに、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際に低レベルのベクトル化を使用し、
前記実行回路は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第1の複数の命令を実行することによって前記デフォルトレベルのベクトル化を使用し、
前記実行回路は、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第2の複数の命令を反復的に実行することによって前記低レベルのベクトル化を使用し、
前記実行回路は、前記チェック命令の実行に応答して、前記シーケンス内のその後の命令による参照のために、前記アドレスハザード状態が存在するかどうかを示す結果データを生成し、
前記結果データが1つ以上のフラグを含み、前記その後の命令が分岐命令であり、該分岐命令は、前記実行回路によって実行されると、前記第1の複数の命令を実行すべきかどうか又は前記第2の複数の命令を反復的に実行すべきかどうかを決定するために前記1つ以上のフラグを参照する装置。 - 前記第2の複数の命令がスカラー命令を含み、これらのスカラー命令によって前記実行回路が個々の要素に対して作用し、前記ベクトルループを実施するために必要な前記第2の複数の命令の反復実行の数は、ベクトル化の前記デフォルトレベルと関連するベクトルオペランドのアクティブ要素の数に依存する請求項1に記載の装置。
- 前記実行回路は、前記チェック命令の実行に応答して、初期述語値を有するガード述語を生成し、
前記第2の複数の命令がベクトル命令を含み、該ベクトル命令によって前記前記実行回路が1つ以上のベクトルオペランドの要素のサブセットに同時に作用し、前記サブセットが前記ガード述語によって特定され、
前記第2の複数の命令の各反復時に、前記ガード述語の述語値は、任意の先行する反復によって作用される1つ以上のベクトルオペランドの任意の要素を除外するように更新される請求項1に記載の装置。 - 前記ガード述語は、マスター述語によって特定されるアクティブ要素である要素のサブセットを特定するように制約される請求項3に記載の装置。
- 前記デフォルトレベルのベクトル化が第1の数のアクティブ要素を特定し、前記実行回路は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答して、前記ベクトルループを実施するべく命令のシーケンスを実行する際に前記第1の数の要素を同時に処理するようになっており、
前記実行回路は、前記チェック命令の実行に応答して、チェック命令の実行が前記アドレスハザード状態の存在を決定する際にアクティブ要素の数を前記第1の数よりも少ないアクティブ要素の第2の数まで減らす制御出力を生成し、それにより、前記実行回路は、前記ベクトルループを実施するべく命令のシーケンスを実行する際に前記第2の数の要素を並列に処理することによって前記低レベルのベクトル化を使用する請求項1に記載の装置。 - 前記ベクトルループの各反復の開始時に、前記実行回路は、デフォルトレベルのベクトル化の使用に戻るようになっている請求項5に記載の装置。
- 前記制御出力は、前記第2の数のアクティブ要素を形成するアクティブ要素を特定するガード述語を含む請求項5又は6に記載の装置。
- 前記チェック命令は、複数のアクティブアドレス要素を含む少なくとも1つのベクトルオペランドを定め、前記実行回路は、前記チェック命令の実行時に、それぞれのアクティブアドレス要素とそれぞれの他のアクティブアドレス要素とを比較して、前記アドレスハザード状態が存在するかどうかを決定するようになっている請求項1から7のいずれか一項に記載の装置。
- 前記チェック命令は、連続するアドレスの第1のシーケンスと関連する第1のアドレスと、連続するアドレスの第2のシーケンスと関連する第2のアドレスとを定め、前記実行回路は、チェック命令の実行時に、前記第1のアドレスと前記第2のアドレスとの間の差に応じて前記アドレスハザード状態の存在を決定するようになっている請求項1から7のいずれか一項に記載の装置。
- 前記チェック命令がチェック・メモリアクセス命令であり、前記実行回路は、前記チェック・メモリアクセス命令の実行に応答してチェック動作を実行し、前記複数のメモリアドレス中に前記アドレスハザード状態が存在するかどうかを決定する一方で、前記複数のメモリアドレスに関してメモリアクセス動作も行う請求項1から9のいずれか一項に記載の装置。
- 前記実行回路は、前記アドレスハザード状態の存在を決定する際に、メモリアクセス動作の任意の残りの部分を終了するようになっている請求項10に記載の装置。
- 前記処理回路は、前記チェック命令の実行時にチェック動作を行うための専用のチェック回路を備える請求項1から11のいずれか一項に記載の装置。
- 前記処理回路は、データ処理動作を行うための処理ユニットを備え、前記処理ユニットは、前記チェック命令の実行時にチェック動作を行うために再使用される請求項1から11のいずれか一項に記載の装置。
- 前記チェック動作の実行中に必要とされる1つ以上のアドレス比較をマージするために処理ユニット内の回転子回路及び比較器回路が使用される請求項13に記載の装置。
- ハザードチェック状態レジスタを更に備え、前記実行回路は、前記チェック命令の実行によって生成される結果データを前記ハザードチェック状態レジスタに記憶するようになっている、請求項1から14のいずれか一項に記載の装置。
- 前記各ベクトルオペランドがN個のアクティブ要素を含み、N個の前記アクティブ要素は、前記実行回路が前記アドレスハザード状態の不在を決定するチェック命令の実行に応答して前記ベクトルループを実施するべく命令のシーケンスを実行する際にN個の要素を並列に処理するようにベクトル化の前記デフォルトレベルに関連付けられる請求項1から15のいずれか一項に記載の装置。
- 前記各ベクトルオペランドがN個の要素を含み、マスター述語がN以下の数の要素をアクティブ要素として特定し、ベクトル化の前記デフォルトレベルは、前記マスター述語によって特定されるアクティブ要素に対応し、それにより、前記実行回路は、前記アドレスハザード状態の不在を決定するチェック命令の実行に応答して、前記ベクトルループを実施するべく命令のシーケンスを実行する際に前記マスター述語によって特定されるアクティブ要素を並列に処理する請求項1から15のいずれか一項に記載の装置。
- 先に実行された命令シーケンスにおける前記アドレスハザード状態の発生に関連する履歴データを維持するためのカウンタ回路を更に備え、
前記実行回路は、複数の異なるタイプのチェック命令を含む命令セットの制御下で動作するようになっており、
これにより、前記履歴データをコンパイラが利用できるようにすることで、前記コンパイラは、前記履歴データを考慮してどのタイプのチェック命令をベクトルループ内で使用すべきかを決定することができる請求項1から17のいずれか一項に記載の装置。 - 選択された期間にわたり、前記履歴データは、検出されるアドレス衝突の総数及び前記ベクトルオペランドのベクトル長内で検出されるアドレス衝突の数のうちの少なくとも一方を特定する請求項18に記載の装置。
- それぞれが複数の要素を含むベクトルオペランドを記憶するためのレジスタストアと、命令によって定められる動作を行うために命令を実行する実行回路であって、前記レジスタストアとメモリとの間で前記ベクトルオペランドを移動させるためにメモリアクセス動作を行うとともに、前記ベクトルオペランドを使用してデータ理動作を行う、実行回路とを有する装置でベクトル演算を実行する際にアドレス衝突を管理する方法であって、前記方法は、
ベクトルループを反復的に実行し、
各反復中に、命令のシーケンスを前記実行回路内で実行してベクトルループを実施し、前記シーケンスは、複数のメモリアドレスを特定するチェック命令を含み、前記実行回路は、前記チェック命令の実行に応答して、前記複数のメモリアドレス中にアドレスハザード状態が存在するかどうかを決定し、
前記ベクトルループのそれぞれの反復ごとに、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際にデフォルトレベルのベクトル化を使用するとともに、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際に低レベルのベクトル化を使用し、
前記実行回路は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第1の複数の命令を実行することによって前記デフォルトレベルのベクトル化を使用し、
前記実行回路は、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第2の複数の命令を反復的に実行することによって前記低レベルのベクトル化を使用し、
前記実行回路は、前記チェック命令の実行に応答して、前記シーケンス内のその後の命令による参照のために、前記アドレスハザード状態が存在するかどうかを示す結果データを生成し、
前記結果データが1つ以上のフラグを含み、前記その後の命令が分岐命令であり、該分岐命令は、前記実行回路によって実行されると、前記第1の複数の命令を実行すべきかどうか又は前記第2の複数の命令を反復的に実行すべきかどうかを決定するために前記1つ以上のフラグを参照する装置。 - 請求項1から19のいずれか一項に記載の装置に対応するプログラム命令のための仮想マシン実行環境を与えるようにコンピュータを制御するコンピュータプログラムを持続的形態で記憶するコンピュータプログラムプロダクト。
- それぞれが複数の要素を含むベクトルオペランドを記憶するためのレジスタストア手段と、
命令によって定められる動作を行うために命令を実行するための実行手段であって、前記レジスタストア手段とメモリとの間で前記ベクトルオペランドを移動させるためにメモリアクセス動作を行うためのアクセス手段と、前記ベクトルオペランドを使用してデータ処理動作を行うための処理手段とを備える、実行手段と、
を備え、
前記実行手段がベクトルループを反復的に実行するようになっており、各反復中に、前記実行手段は、命令のシーケンスを実行してベクトルループを実施するようになっており、前記シーケンスは、複数のメモリアドレスを特定するチェック命令を含み、前記実行手段は、前記チェック命令の実行に応答して、前記複数のメモリアドレス中にアドレスハザード状態が存在するかどうかを決定し、
前記ベクトルループのそれぞれの反復ごとに、前記実行手段は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際にデフォルトレベルのベクトル化を使用するとともに、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答して、ベクトルループを実施するべく命令のシーケンスを実行する際に低レベルのベクトル化を使用する、
前記実行手段は、前記アドレスハザード状態の不存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第1の複数の命令を実行することによって前記デフォルトレベルのベクトル化を使用し、
前記実行手段は、前記アドレスハザード状態の存在を決定する前記チェック命令の実行に応答し、前記ベクトルループを実施するべく前記命令のシーケンス内の第2の複数の命令を反復的に実行することによって前記低レベルのベクトル化を使用し、
前記実行手段は、前記チェック命令の実行に応答して、前記シーケンス内のその後の命令による参照のために、前記アドレスハザード状態が存在するかどうかを示す結果データを生成し、
前記結果データが1つ以上のフラグを含み、前記その後の命令が分岐命令であり、該分岐命令は、前記実行手段によって実行されると、前記第1の複数の命令を実行すべきかどうか又は前記第2の複数の命令を反復的に実行すべきかどうかを決定するために前記1つ以上のフラグを参照する装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1607261.3A GB2549737B (en) | 2016-04-26 | 2016-04-26 | An apparatus and method for managing address collisions when performing vector operations |
GB1607261.3 | 2016-04-26 | ||
PCT/GB2017/050960 WO2017187130A1 (en) | 2016-04-26 | 2017-04-06 | An apparatus and method for managing address collisions when performing vector operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019517060A JP2019517060A (ja) | 2019-06-20 |
JP6913693B2 true JP6913693B2 (ja) | 2021-08-04 |
Family
ID=58548749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018554767A Active JP6913693B2 (ja) | 2016-04-26 | 2017-04-06 | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11132196B2 (ja) |
EP (1) | EP3449356B1 (ja) |
JP (1) | JP6913693B2 (ja) |
KR (1) | KR102379894B1 (ja) |
CN (1) | CN109074256B (ja) |
GB (1) | GB2549737B (ja) |
IL (1) | IL262198B (ja) |
TW (1) | TWI733798B (ja) |
WO (1) | WO2017187130A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713746B2 (en) | 2018-01-29 | 2020-07-14 | Microsoft Technology Licensing, Llc | FIFO queue, memory resource, and task management for graphics processing |
US10719268B2 (en) * | 2018-06-29 | 2020-07-21 | Microsoft Technology Licensing, Llc | Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor |
JP7124608B2 (ja) * | 2018-09-28 | 2022-08-24 | 日本電気株式会社 | 計算機および計算方法 |
US10963252B2 (en) * | 2019-05-24 | 2021-03-30 | Texas Instruments Incorporated | Vector maximum and minimum with indexing |
GB2585202B (en) * | 2019-07-01 | 2021-11-24 | Advanced Risc Mach Ltd | An apparatus and method for speculatively vectorising program code |
CN111158755A (zh) * | 2019-11-29 | 2020-05-15 | 华东师范大学 | 用于消除simd向量化程序中缓存缺失的多向量交错执行方法 |
JP2023133850A (ja) | 2022-03-14 | 2023-09-27 | 富士通株式会社 | 演算処理装置および演算処理方法 |
CN117093268B (zh) * | 2023-10-19 | 2024-01-30 | 超睿科技(长沙)有限公司 | 一种向量处理方法、系统、设备及存储介质 |
CN117891509B (zh) * | 2024-03-18 | 2024-06-14 | 芯来智融半导体科技(上海)有限公司 | 数据访存方法、装置、计算机设备和存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IN169636B (ja) * | 1987-07-01 | 1991-11-23 | Digital Equipment Corp | |
US5063497A (en) * | 1987-07-01 | 1991-11-05 | Digital Equipment Corporation | Apparatus and method for recovering from missing page faults in vector data processing operations |
JPH0812661B2 (ja) | 1988-04-01 | 1996-02-07 | 日本電気株式会社 | 命令処理順序制御システム |
ATE158424T1 (de) * | 1989-06-30 | 1997-10-15 | Digital Equipment Corp | Verfahren und anordnung zur steuerung von schattenspeichern |
US5471628A (en) * | 1992-06-30 | 1995-11-28 | International Business Machines Corporation | Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode |
US6219780B1 (en) * | 1998-10-27 | 2001-04-17 | International Business Machines Corporation | Circuit arrangement and method of dispatching instructions to multiple execution units |
US8078847B2 (en) | 2007-05-14 | 2011-12-13 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
US8019976B2 (en) * | 2007-05-14 | 2011-09-13 | Apple, Inc. | Memory-hazard detection and avoidance instructions for vector processing |
US7941584B2 (en) * | 2009-03-26 | 2011-05-10 | Arm Limited | Data processing apparatus and method for performing hazard detection |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
CN104081336B (zh) * | 2011-12-23 | 2018-10-23 | 英特尔公司 | 用于检测向量寄存器内的相同元素的装置和方法 |
US9116686B2 (en) * | 2012-04-02 | 2015-08-25 | Apple Inc. | Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9400650B2 (en) * | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
US10241793B2 (en) * | 2013-03-15 | 2019-03-26 | Analog Devices Global | Paralleizing loops in the presence of possible memory aliases |
CN104969179B (zh) | 2013-03-15 | 2019-07-16 | 英特尔公司 | 用于将具有循环承载的依赖的标量计算机程序循环向量化的方法和系统 |
CN103279327B (zh) * | 2013-04-28 | 2015-11-25 | 中国人民解放军信息工程大学 | 面向异构simd扩展部件的自动向量化方法 |
US9600280B2 (en) * | 2013-09-24 | 2017-03-21 | Apple Inc. | Hazard check instructions for enhanced predicate vector operations |
GB2519107B (en) * | 2013-10-09 | 2020-05-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing speculative vector access operations |
GB2523823B (en) * | 2014-03-07 | 2021-06-16 | Advanced Risc Mach Ltd | Data processing apparatus and method for processing vector operands |
US9891913B2 (en) * | 2014-12-23 | 2018-02-13 | Intel Corporation | Method and apparatus for performing conflict detection using vector comparison operations |
-
2016
- 2016-04-26 GB GB1607261.3A patent/GB2549737B/en active Active
-
2017
- 2017-04-06 JP JP2018554767A patent/JP6913693B2/ja active Active
- 2017-04-06 WO PCT/GB2017/050960 patent/WO2017187130A1/en active Application Filing
- 2017-04-06 EP EP17717832.4A patent/EP3449356B1/en active Active
- 2017-04-06 CN CN201780024882.7A patent/CN109074256B/zh active Active
- 2017-04-06 US US16/090,357 patent/US11132196B2/en active Active
- 2017-04-06 KR KR1020187033191A patent/KR102379894B1/ko active IP Right Grant
- 2017-04-25 TW TW106113721A patent/TWI733798B/zh active
-
2018
- 2018-10-08 IL IL262198A patent/IL262198B/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
WO2017187130A1 (en) | 2017-11-02 |
KR20180137521A (ko) | 2018-12-27 |
EP3449356A1 (en) | 2019-03-06 |
GB2549737B (en) | 2019-05-08 |
TW201738737A (zh) | 2017-11-01 |
IL262198A (en) | 2018-11-29 |
JP2019517060A (ja) | 2019-06-20 |
KR102379894B1 (ko) | 2022-03-30 |
TWI733798B (zh) | 2021-07-21 |
EP3449356B1 (en) | 2020-01-22 |
CN109074256A (zh) | 2018-12-21 |
IL262198B (en) | 2020-09-30 |
GB2549737A (en) | 2017-11-01 |
US11132196B2 (en) | 2021-09-28 |
US20190114172A1 (en) | 2019-04-18 |
CN109074256B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6913693B2 (ja) | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 | |
CN108139907B (zh) | 向量数据传送指令 | |
US9557995B2 (en) | Data processing apparatus and method for performing segmented operations | |
US6487715B1 (en) | Dynamic code motion optimization and path tracing | |
JP5455936B2 (ja) | 効率的な同期および並列リダクション演算を可能にするベクトル命令 | |
US20070169061A1 (en) | Run-Time Parallelization of Loops in Computer Programs Using Bit Vectors | |
US8745360B2 (en) | Generating predicate values based on conditional data dependency in vector processors | |
JP6908601B2 (ja) | ベクトルロード命令 | |
US10514919B2 (en) | Data processing apparatus and method for processing vector operands | |
JP2011530768A (ja) | ソフトウェア・アプリケーションの性能向上 | |
Shen | Using term rewriting systems to design and verify processors | |
KR100316710B1 (ko) | 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치 | |
US7712091B2 (en) | Method for predicate promotion in a software loop | |
US20070074186A1 (en) | Method and system for performing reassociation in software loops | |
Venkataramani et al. | Factors influencing the performance of a cpu-rfu hybrid architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210325 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210401 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210607 |
|
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: 20210618 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210712 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6913693 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |