JP2014089699A - ベクトル圧縮及びローテート機能を提供する命令及び論理 - Google Patents
ベクトル圧縮及びローテート機能を提供する命令及び論理 Download PDFInfo
- Publication number
- JP2014089699A JP2014089699A JP2013199971A JP2013199971A JP2014089699A JP 2014089699 A JP2014089699 A JP 2014089699A JP 2013199971 A JP2013199971 A JP 2013199971A JP 2013199971 A JP2013199971 A JP 2013199971A JP 2014089699 A JP2014089699 A JP 2014089699A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- processor
- destination
- instruction
- register
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
【解決手段】ベクトルソースオペランドと、マスクレジスタと、ベクトルデスティネーションオペランドと、ベクトルデスティネーションオフセットとを指定する命令に呼応して、マスクを読み出し、対応するマスキングされていないベクトルエレメントを、ベクトルソースからベクトルデスティネーションの隣接する連続した位置に、ベクトルデスティネーションオフセット位置からコピーする。
【選択図】図1C
Description
一実施形態では、EVEXフォーマット398によりエンコードされた命令は、追加の「ペイロード」ビットを有してよいが、この追加の「ペイロード」は、ベクトル圧縮及びローテート機能に、たとえばユーザ設定可能なマスクレジスタ、追加のオペランド、または、128ビット、256ビット、または512ビットのベクトルレジスタまたはこれ以上のレジスタを選択肢、などの追加の新たな特徴を提供するために利用することができる。
Claims (40)
- それぞれがベクトル内のエレメント位置に対応する第1の複数のデータフィールドを有するマスクレジスタと、
ベクトルソースオペランドと、前記マスクレジスタと、ベクトルデスティネーションオペランドと、ベクトルデスティネーションオフセットとを指定する第1の命令をデコードするデコードステージと、
1以上の実行ユニットと
を備え、
デコードされた前記第1の命令に呼応して、前記1以上の実行ユニットは、
前記マスクレジスタの前記第1の複数のデータフィールドの値を読み出し、
第1の値を持つ、前記マスクレジスタの前記第1の複数のデータフィールドのそれぞれについて、前記ベクトルソースオペランドから、対応するベクトルエレメントを、前記ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーする、プロセッサ。 - 前記ベクトルソースオペランドからの前記対応するベクトルエレメントは、前記ベクトルデスティネーションのエレメント位置の総数を法とする、前記隣接する連続したエレメント位置にコピーされる、請求項1に記載のプロセッサ。
- 前記第1の命令は、ベクトル圧縮及びローテート命令である、請求項2に記載のプロセッサ。
- 前記対応するベクトルエレメントの、前記ベクトルデスティネーションオフセットの位置からの、隣接する連続したエレメント位置へのコピーは、最上位のベクトルデスティネーションエレメント位置が満たされるまでしか行われない、請求項1から3のいずれか一項に記載のプロセッサ。
- 前記第1の命令は、ベクトル圧縮、フィル及びローテート命令である、請求項4に記載のプロセッサ。
- 前記第1の値は1である、請求項1から5のいずれか一項に記載のプロセッサ。
- 前記ベクトルソースオペランドから、対応するベクトルエレメントをそれぞれ、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーする際に、前記マスクレジスタの対応するデータフィールドの値が、前記第1の値から第2の値に変更される、請求項1から6のいずれか一項に記載のプロセッサ。
- 前記第2の値はゼロである、請求項7に記載のプロセッサ。
- 前記ベクトルデスティネーションオペランドにコピーされるデータエレメントは32ビットのデータエレメントである、請求項1から8のいずれか一項に記載のプロセッサ。
- 前記ベクトルデスティネーションオペランドにコピーされるデータエレメントは、64ビットのデータエレメントである、請求項1から8のいずれか一項に記載のプロセッサ。
- 前記ベクトルデスティネーションオペランドは、128ビットのベクトルレジスタである、請求項1から10のいずれか一項に記載のプロセッサ。
- 前記ベクトルデスティネーションオペランドは、256ビットのベクトルレジスタである、請求項1から10のいずれか一項に記載のプロセッサ。
- 前記ベクトルデスティネーションオペランドは、512ビットのベクトルレジスタである、請求項1から10のいずれか一項に記載のプロセッサ。
- プロセッサにより実行されると、前記プロセッサに、
マスクレジスタの第1の複数のデータフィールドの値を読み出す手順と、
第1の値を持つ、前記マスクレジスタの前記第1の複数のデータフィールドのそれぞれについて、ベクトルソースオペランドから、対応するベクトルエレメントを、ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーする手順と
を実行させる、プログラム。 - 前記ベクトルソースオペランドからの前記対応するベクトルエレメントは、前記ベクトルデスティネーションのエレメント位置の総数を法とする、隣接する連続したエレメント位置にコピーされる、請求項14に記載のプログラム。
- 前記対応するベクトルエレメントの、前記ベクトルソースオペランドからの、前記ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションの隣接する連続したエレメント位置へのコピーは、最上位のベクトルデスティネーションエレメント位置が満たされるまでしか行われない、請求項14または15に記載のプログラム。
- 前記ベクトルソースオペランドから、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーされる対応するベクトルエレメントそれぞれについて、前記マスクレジスタの対応するデータフィールドの値を、前記第1の値から第2の値に変更する手順を前記プロセッサにさらに実行させる、請求項16に記載のプログラム。
- 前記ベクトルデスティネーションに格納されるデータエレメントは32ビットのデータエレメントである、請求項14から17のいずれか一項に記載のプログラム。
- 前記ベクトルデスティネーションに格納されるデータエレメントは、64ビットのデータエレメントである、請求項14から17のいずれか一項に記載のプログラム。
- 前記ベクトルデスティネーションは、128ビットのベクトルレジスタである、請求項14から19のいずれか一項に記載のプログラム。
- 前記ベクトルデスティネーションは、256ビットのベクトルレジスタである、請求項14から19のいずれか一項に記載のプログラム。
- 前記ベクトルデスティネーションは、512ビットのベクトルレジスタである、請求項14から19のいずれか一項に記載のプログラム。
- ベクトルソースオペランドと、マスクレジスタと、ベクトルデスティネーションオペランドと、ベクトルデスティネーションオフセットとを特定する第1の単一命令複数データ命令(第1のSIMD命令)をデコードするデコードステージと、
1以上の実行ユニットと
を備え、
デコードされた前記第1のSIMD命令に呼応して、前記1以上の実行ユニットは、
前記マスクレジスタの第1の複数のデータフィールドの値を読み出し、
第1の値を持つ、前記マスクレジスタの前記第1の複数のデータフィールドのそれぞれについて、前記ベクトルソースからの対応するベクトルエレメントを、前記ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションのエレメント位置の総数を法とする、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーする、プロセッサ。 - 前記ベクトルデスティネーションは、128ビットのベクトルレジスタである、請求項23に記載のプロセッサ。
- 前記ベクトルデスティネーションは、256ビットのベクトルレジスタである、請求項23に記載のプロセッサ。
- 前記ベクトルデスティネーションは、512ビットのベクトルレジスタである、請求項23に記載のプロセッサ。
- ベクトルソースオペランドと、マスクレジスタと、ベクトルデスティネーションオペランドと、ベクトルデスティネーションオフセットとを指定する第1の単一命令複数データ命令(第1のSIMD命令)をデコードするデコードステージと、
1以上の実行ユニットと
を備え、
デコードされた前記第1のSIMD命令に呼応して、前記1以上の実行ユニットは、
前記マスクレジスタの第1の複数のデータフィールドの値を読み出し、
マスキングされていない値を持つ、前記マスクレジスタの前記第1の複数のデータフィールドのそれぞれについて、前記ベクトルソースから、対応するベクトルエレメントを、前記ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションの隣接する連続したエレメント位置に、最上位のベクトルデスティネーションエレメント位置が満たされるまでに限りコピーする、プロセッサ。 - デコードされた前記第1のSIMD命令に呼応して、前記1以上の実行ユニットは、
前記ベクトルソースから、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーされた対応するベクトルエレメントそれぞれについて、前記マスクレジスタの対応するデータフィールドの値を、前記マスキングされていない値から、マスキングされている値に変更する、請求項27に記載のプロセッサ。 - 前記マスキングされている値はゼロである、請求項28に記載のプロセッサ。
- メモリと、
複数のプロセッサと
を備え、
前記複数のプロセッサのそれぞれは、
ベクトルソースオペランドと、マスクレジスタと、ベクトルデスティネーションオペランドと、ベクトルデスティネーションオフセットとを指定する第1の単一命令複数データ命令(第1のSIMD命令)をデコードするデコードステージと、
1以上の実行ユニットと
を備え、
デコードされた前記第1のSIMD命令に呼応して、前記1以上の実行ユニットは、
前記マスクレジスタの第1の複数のデータフィールドの値を読み出し、
マスキングされていない値を持つ、前記マスクレジスタの前記第1の複数のデータフィールドのそれぞれについて、前記ベクトルソースからの対応するベクトルエレメントを、前記ベクトルデスティネーションオフセットの位置から始まる、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーする、処理システム。 - 前記ベクトルソースからの前記対応するベクトルエレメントは、前記ベクトルデスティネーションのエレメント位置の総数を法とする、隣接する連続したエレメント位置にコピーされる、請求項30に記載の処理システム。
- 前記第1のSIMD命令に呼応して、前記1以上の実行ユニットはさらに、
前記ベクトルソースからコピーされたベクトルエレメントに対応していないベクトルデスティネーションエレメントそれぞれについて、前記ベクトルデスティネーションエレメントの値をゼロにする、請求項30または31に記載の処理システム。 - 前記ベクトルソースからの前記対応するベクトルエレメントは、前記ベクトルデスティネーションオフセットの位置から始まる隣接する連続したエレメント位置に、最上位のベクトルデスティネーションエレメント位置が満たされるまでに限りコピーされる、請求項30から32のいずれか一項に記載の処理システム。
- デコードされた前記第1のSIMD命令に呼応して、前記1以上の実行ユニットはさらに、
前記ベクトルソースから、前記ベクトルデスティネーションの隣接する連続したエレメント位置にコピーされた対応するベクトルエレメントそれぞれについて、前記マスクレジスタの対応するデータフィールドの値を、前記マスキングされていない値から、マスキングされている値に変更する、請求項33に記載の処理システム。 - 前記マスキングされている値はゼロである、請求項34に記載の処理システム。
- 前記ベクトルデスティネーションに格納されるデータエレメントは32ビットのデータエレメントである、請求項30から35のいずれか一項に記載の処理システム。
- 前記ベクトルデスティネーションに格納されるデータエレメントは64ビットのデータエレメントである、請求項30から36のいずれか一項に記載の処理システム。
- 前記ベクトルデスティネーションは128ビットのデータレジスタである、請求項30から37のいずれか一項に記載の処理システム。
- 前記ベクトルデスティネーションは256ビットのデータレジスタである、請求項30から37のいずれか一項に記載の処理システム。
- 前記ベクトルデスティネーションは512ビットのデータレジスタである、請求項30から37のいずれか一項に記載の処理システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/664,401 US9606961B2 (en) | 2012-10-30 | 2012-10-30 | Instruction and logic to provide vector compress and rotate functionality |
| US13/664,401 | 2012-10-30 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2014089699A true JP2014089699A (ja) | 2014-05-15 |
| JP5739961B2 JP5739961B2 (ja) | 2015-06-24 |
Family
ID=49680020
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2013199971A Expired - Fee Related JP5739961B2 (ja) | 2012-10-30 | 2013-09-26 | ベクトル圧縮及びローテート機能を提供する命令及び論理 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US9606961B2 (ja) |
| JP (1) | JP5739961B2 (ja) |
| KR (1) | KR101555412B1 (ja) |
| CN (2) | CN103793201B (ja) |
| DE (1) | DE102013018238A1 (ja) |
| GB (1) | GB2507655B (ja) |
| TW (1) | TWI610236B (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2017528810A (ja) * | 2014-09-19 | 2017-09-28 | インテル・コーポレーション | データ要素を選択・統合するプロセッサ、方法、システム、および命令 |
| JP2022511278A (ja) * | 2018-12-20 | 2022-01-31 | アーム・リミテッド | ベクトル述語要約の生成 |
| US11249763B2 (en) | 2018-03-26 | 2022-02-15 | Fujitsu Limited | Arithmetic processing unit and control method for arithmetic processing unit |
Families Citing this family (40)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
| US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
| US9471308B2 (en) * | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
| US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
| US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
| US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
| US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
| US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
| KR102106889B1 (ko) * | 2014-12-11 | 2020-05-07 | 한화디펜스 주식회사 | 소형통합제어장치 |
| US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
| US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
| US20170177348A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instruction and Logic for Compression and Rotation |
| US10177782B2 (en) * | 2015-12-26 | 2019-01-08 | Intel Corporation | Hardware apparatuses and methods for data decompression |
| GB2552153B (en) * | 2016-07-08 | 2019-07-24 | Advanced Risc Mach Ltd | An apparatus and method for performing a rearrangement operation |
| US10891131B2 (en) | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
| US10162752B2 (en) * | 2016-09-22 | 2018-12-25 | Qualcomm Incorporated | Data storage at contiguous memory addresses |
| EP3336691B1 (en) | 2016-12-13 | 2022-04-06 | ARM Limited | Replicate elements instruction |
| EP3336692B1 (en) * | 2016-12-13 | 2020-04-29 | Arm Ltd | Replicate partition instruction |
| WO2018150218A1 (en) * | 2017-02-17 | 2018-08-23 | Intel Corporation | Vector instruction for accumulating and compressing values based on input mask |
| CN119861972A (zh) | 2017-03-20 | 2025-04-22 | 英特尔公司 | 用于片矩阵乘法和累加的系统、方法和装置 |
| KR102343652B1 (ko) * | 2017-05-25 | 2021-12-24 | 삼성전자주식회사 | 벡터 프로세서의 서열 정렬 방법 |
| CN107748674B (zh) * | 2017-09-07 | 2021-08-31 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
| US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
| US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
| US10831497B2 (en) * | 2019-01-31 | 2020-11-10 | International Business Machines Corporation | Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data |
| US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
| EP3699770B1 (en) | 2019-02-25 | 2025-05-21 | Mellanox Technologies, Ltd. | Collective communication system and methods |
| US11604853B2 (en) * | 2019-10-18 | 2023-03-14 | Stmicroelectronics S.R.L. | System and method for performing vector rotation |
| US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
| US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
| US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
| US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
| US12106104B2 (en) * | 2020-12-23 | 2024-10-01 | Intel Corporation | Processor instructions for data compression and decompression |
| US12340302B2 (en) | 2021-01-05 | 2025-06-24 | Alibaba Group Holding Limited | Method and system for microarchitecture-aware program sampling |
| US12367147B2 (en) * | 2022-02-07 | 2025-07-22 | Texas Instruments Incorporated | Padding and suppressing rows and columns of data |
| US12309070B2 (en) | 2022-04-07 | 2025-05-20 | Nvidia Corporation | In-network message aggregation for efficient small message transport |
| US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
| US12100510B2 (en) * | 2022-10-10 | 2024-09-24 | CareMetx, LLC | System and method for enrollment into patient service programs |
| CN116578343B (zh) * | 2023-07-10 | 2023-11-21 | 南京砺算科技有限公司 | 指令编译方法及装置、图形处理装置、存储介质、终端设备 |
| US12489657B2 (en) | 2023-08-17 | 2025-12-02 | Mellanox Technologies, Ltd. | In-network compute operation spreading |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01284972A (ja) * | 1988-05-11 | 1989-11-16 | Nec Corp | ベクトル処理装置 |
| JPH02190968A (ja) * | 1989-01-19 | 1990-07-26 | Nec Corp | ベクトル処理装置 |
Family Cites Families (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
| JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
| JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
| US5832290A (en) * | 1994-06-13 | 1998-11-03 | Hewlett-Packard Co. | Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems |
| US6091768A (en) * | 1996-02-21 | 2000-07-18 | Bru; Bernard | Device for decoding signals of the MPEG2 type |
| US5935198A (en) | 1996-11-22 | 1999-08-10 | S3 Incorporated | Multiplier with selectable booth encoders for performing 3D graphics interpolations with two multiplies in a single pass through the multiplier |
| US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
| US6621428B1 (en) * | 2000-05-04 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Entropy codec for fast data compression and decompression |
| US7054330B1 (en) * | 2001-09-07 | 2006-05-30 | Chou Norman C | Mask-based round robin arbitration |
| JP2004302647A (ja) * | 2003-03-28 | 2004-10-28 | Seiko Epson Corp | ベクトルプロセッサおよびレジスタのアドレス指定方法 |
| US7600058B1 (en) * | 2003-06-26 | 2009-10-06 | Nvidia Corporation | Bypass method for efficient DMA disk I/O |
| US20050289329A1 (en) * | 2004-06-29 | 2005-12-29 | Dwyer Michael K | Conditional instruction for a single instruction, multiple data execution engine |
| US20090172348A1 (en) | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
| US7984273B2 (en) * | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
| US9940138B2 (en) * | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
| US20120216011A1 (en) * | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
| US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
| US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
| US20130151822A1 (en) * | 2011-12-09 | 2013-06-13 | International Business Machines Corporation | Efficient Enqueuing of Values in SIMD Engines with Permute Unit |
| CN104126172B (zh) * | 2011-12-22 | 2018-03-20 | 英特尔公司 | 用于掩码寄存器扩充操作的装置和方法 |
| CN104025020B (zh) | 2011-12-23 | 2017-06-13 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
| US9244687B2 (en) * | 2011-12-29 | 2016-01-26 | Intel Corporation | Packed data operation mask comparison processors, methods, systems, and instructions |
| US8972697B2 (en) * | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
| US8959275B2 (en) * | 2012-10-08 | 2015-02-17 | International Business Machines Corporation | Byte selection and steering logic for combined byte shift and byte permute vector unit |
| US9411593B2 (en) * | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
| US20150186136A1 (en) * | 2013-12-27 | 2015-07-02 | Tal Uliel | Systems, apparatuses, and methods for expand and compress |
| US10133570B2 (en) * | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
-
2012
- 2012-10-30 US US13/664,401 patent/US9606961B2/en active Active
-
2013
- 2013-09-26 JP JP2013199971A patent/JP5739961B2/ja not_active Expired - Fee Related
- 2013-09-30 TW TW102135339A patent/TWI610236B/zh not_active IP Right Cessation
- 2013-10-14 GB GB1318167.2A patent/GB2507655B/en active Active
- 2013-10-30 KR KR1020130130028A patent/KR101555412B1/ko not_active Expired - Fee Related
- 2013-10-30 DE DE102013018238.7A patent/DE102013018238A1/de active Pending
- 2013-10-30 CN CN201310524909.2A patent/CN103793201B/zh not_active Expired - Fee Related
- 2013-10-30 CN CN201710568910.3A patent/CN107729048B/zh not_active Expired - Fee Related
-
2017
- 2017-03-17 US US15/462,392 patent/US10459877B2/en not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01284972A (ja) * | 1988-05-11 | 1989-11-16 | Nec Corp | ベクトル処理装置 |
| JPH02190968A (ja) * | 1989-01-19 | 1990-07-26 | Nec Corp | ベクトル処理装置 |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2017528810A (ja) * | 2014-09-19 | 2017-09-28 | インテル・コーポレーション | データ要素を選択・統合するプロセッサ、方法、システム、および命令 |
| US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
| US11249763B2 (en) | 2018-03-26 | 2022-02-15 | Fujitsu Limited | Arithmetic processing unit and control method for arithmetic processing unit |
| JP2022511278A (ja) * | 2018-12-20 | 2022-01-31 | アーム・リミテッド | ベクトル述語要約の生成 |
| JP7335952B2 (ja) | 2018-12-20 | 2023-08-30 | アーム・リミテッド | ベクトル述語要約の生成 |
Also Published As
| Publication number | Publication date |
|---|---|
| US10459877B2 (en) | 2019-10-29 |
| GB201318167D0 (en) | 2013-11-27 |
| US20170192785A1 (en) | 2017-07-06 |
| GB2507655B (en) | 2015-06-24 |
| US20140122831A1 (en) | 2014-05-01 |
| CN103793201A (zh) | 2014-05-14 |
| GB2507655A (en) | 2014-05-07 |
| KR20140056082A (ko) | 2014-05-09 |
| CN107729048A (zh) | 2018-02-23 |
| CN107729048B (zh) | 2021-09-28 |
| JP5739961B2 (ja) | 2015-06-24 |
| DE102013018238A1 (de) | 2014-04-30 |
| CN103793201B (zh) | 2017-08-11 |
| KR101555412B1 (ko) | 2015-10-06 |
| US9606961B2 (en) | 2017-03-28 |
| TWI610236B (zh) | 2018-01-01 |
| TW201435733A (zh) | 2014-09-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5739961B2 (ja) | ベクトル圧縮及びローテート機能を提供する命令及び論理 | |
| JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
| CN103827813B (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
| CN103827814B (zh) | 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑 | |
| CN104937539B (zh) | 用于提供推入缓冲器复制和存储功能的指令和逻辑 | |
| CN103827815B (zh) | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 | |
| CN104011662B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
| JP6703707B2 (ja) | アトミックな範囲演算を提供する命令及びロジック | |
| CN103988173B (zh) | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 | |
| CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
| CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
| US20170177354A1 (en) | Instructions and Logic for Vector-Based Bit Manipulation | |
| CN108292218A (zh) | 用于向量位字段压缩和扩展的指令和逻辑 | |
| CN106293631B (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
| WO2013147896A1 (en) | Instruction and logic to efficiently monitor loop trip count | |
| CN108292216A (zh) | 用于压缩和循环的指令和逻辑 | |
| JP6222859B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141029 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141104 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150203 |
|
| 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: 20150224 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150325 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150424 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5739961 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 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |