JP2015158940A - ベクトルフレンドリ命令フォーマット及びその実行 - Google Patents
ベクトルフレンドリ命令フォーマット及びその実行 Download PDFInfo
- Publication number
- JP2015158940A JP2015158940A JP2015087178A JP2015087178A JP2015158940A JP 2015158940 A JP2015158940 A JP 2015158940A JP 2015087178 A JP2015087178 A JP 2015087178A JP 2015087178 A JP2015087178 A JP 2015087178A JP 2015158940 A JP2015158940 A JP 2015158940A
- Authority
- JP
- Japan
- Prior art keywords
- field
- instruction
- memory access
- data
- data element
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 239
- 239000003607 modifier Substances 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims description 205
- 238000000034 method Methods 0.000 claims description 152
- 230000008569 process Effects 0.000 claims description 138
- 238000006073 displacement reaction Methods 0.000 claims description 88
- 230000003416 augmentation Effects 0.000 abstract 4
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 113
- 238000010586 diagram Methods 0.000 description 88
- 238000006243 chemical reaction Methods 0.000 description 64
- 238000007667 floating Methods 0.000 description 35
- 230000006870 function Effects 0.000 description 16
- 230000000873 masking effect Effects 0.000 description 16
- 235000019580 granularity Nutrition 0.000 description 14
- 230000001343 mnemonic effect Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000011282 treatment Methods 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 230000000007 visual 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/3001—Arithmetic 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30018—Bit or string 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/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; 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/30181—Instruction operation extension or modification
-
- 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/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; 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- 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
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/66—Types of semiconductor device ; Multistep manufacturing processes therefor
- H01L29/66007—Multistep manufacturing processes
- H01L29/66075—Multistep manufacturing processes of devices having semiconductor bodies comprising group 14 or group 13/15 materials
- H01L29/66227—Multistep manufacturing processes of devices having semiconductor bodies comprising group 14 or group 13/15 materials the devices being controllable only by the electric current supplied or the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched, e.g. three-terminal devices
- H01L29/66409—Unipolar field-effect transistors
- H01L29/66477—Unipolar field-effect transistors with an insulated gate, i.e. MISFET
- H01L29/66553—Unipolar field-effect transistors with an insulated gate, i.e. MISFET using inside spacers, permanent or not
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/66—Types of semiconductor device ; Multistep manufacturing processes therefor
- H01L29/68—Types of semiconductor device ; Multistep manufacturing processes therefor controllable by only the electric current supplied, or only the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched
- H01L29/76—Unipolar devices, e.g. field effect transistors
- H01L29/772—Field effect transistors
- H01L29/775—Field effect transistors with one dimensional charge carrier gas channel, e.g. quantum wire FET
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/66—Types of semiconductor device ; Multistep manufacturing processes therefor
- H01L29/68—Types of semiconductor device ; Multistep manufacturing processes therefor controllable by only the electric current supplied, or only the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched
- H01L29/76—Unipolar devices, e.g. field effect transistors
- H01L29/772—Field effect transistors
- H01L29/78—Field effect transistors with field effect produced by an insulated gate
- H01L29/7831—Field effect transistors with field effect produced by an insulated gate with multiple gate structure
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/66—Types of semiconductor device ; Multistep manufacturing processes therefor
- H01L29/68—Types of semiconductor device ; Multistep manufacturing processes therefor controllable by only the electric current supplied, or only the electric potential applied, to an electrode which does not carry the current to be rectified, amplified or switched
- H01L29/76—Unipolar devices, e.g. field effect transistors
- H01L29/772—Field effect transistors
- H01L29/78—Field effect transistors with field effect produced by an insulated gate
- H01L29/786—Thin film transistors, i.e. transistors with a channel being at least partly a thin film
- H01L29/78696—Thin film transistors, i.e. transistors with a channel being at least partly a thin film characterised by the structure of the channel, e.g. multichannel, transverse or longitudinal shape, length or width, doping structure, or the overlap or alignment between the channel and the gate, the source or the drain, or the contacting structure of the channel
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L29/00—Semiconductor devices specially adapted for rectifying, amplifying, oscillating or switching and having potential barriers; Capacitors or resistors having potential barriers, e.g. a PN-junction depletion layer or carrier concentration layer; Details of semiconductor bodies or of electrodes thereof ; Multistep manufacturing processes therefor
- H01L29/66—Types of semiconductor device ; Multistep manufacturing processes therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Computer Hardware Design (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Ceramic Engineering (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Manufacturing & Machinery (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Stored Programmes (AREA)
- Insulated Gate Type Field-Effect Transistor (AREA)
- Image Processing (AREA)
Abstract
【解決手段】本発明の一実施例によると、プロセッサは、命令セットを実行するよう構成される。命令セットは、ベクトルフレンドリ命令フォーマットを含む、ベクトルフレンドリ命令フォーマットは、ベース処理フィールド、モディファイアフィールド、拡張処理フィールド、及びデータ要素幅フィールドを含む複数のフィールドを有し、第1命令フォーマットは、ベース処理フィールド、モディファイアフィールド、拡張処理フィールド、及びデータ要素幅フィールドに異なる値を配置することによって、異なるバージョンのベース処理と異なる拡張処理とをサポートし、異なる値の1つのみが、命令ストリームにおける第1命令フォーマットの命令の各出現に対してベース処理フィールド、モディファイアフィールド、拡張処理フィールド、及びデータ要素幅フィールドの各々に配置可能である。
【選択図】図1A
Description
[分野]
本発明の実施例は、コンピュータの分野に関し、より詳細にはプロセッサによりサポートされる命令セットに関する。
ベクトルフレンドリ命令フォーマットは、ベクトル命令に適した命令である(例えば、ベクトル処理に特有のフィールドがあるなど)。ベクトル処理とスカラ処理との双方がベクトルフレンドリ命令フォーマットを介しサポートされる実施例が説明されるが、他の実施例はベクトルフレンドリ命令フォーマットによるベクトル処理のみを利用する。
[命令フォーマットの個数−図1A〜1B]
・1つの命令フォーマット−図1A
図1Aは、本発明の一実施例によるベクトルフレンドリ命令フォーマットによる命令のみを有する命令ストリームを示すブロック図である。命令ストリームは、すべてがベクトルフレンドリフォーマット100A〜100JによるJ個の命令のシーケンスを含む。本発明の一実施例では、プロセッサは、ベクトル命令フォーマットのみをサポートし、当該命令ストリームを実行可能である。
・複数の命令フォーマット−図1B
図1Bは、本発明の一実施例による複数の命令フォーマットによる命令を有する命令ストリームを示すブロック図である。命令ストリームの各命令は、ベクトルフレンドリ命令フォーマット、第2フォーマット又は第3フォーマットにより表現される。命令ストリームは、J個の命令110A〜110Jを有する。本発明の一実施例では、プロセッサは、複数の命令フォーマット(図1Bに示されるフォーマットを含む)をサポートし、図1A〜1Bの双方の命令ストリームを実行可能である。
[例示的な汎用的ベクトルフレンドリ命令フォーマット−図2A〜B]
図2A〜Bは、本発明の実施例による汎用的ベクトルフレンドリ命令フォーマット及びそれの命令テンプレートを示すブロック図である。図2Aは、本発明の実施例による汎用的ベクトルフレンドリ命令フォーマット及びそのクラスA命令テンプレートを示すブロック図であり、図2Bは、本発明の実施例による汎用的ベクトルフレンドリ命令フォーマット及びそのクラスB命令テンプレートを示すブロック図である。具体的には、クラスA及びクラスB命令テンプレートとして定義される汎用的ベクトルフレンドリ命令フォーマット200は、その双方が非メモリアクセス205の命令テンプレートとメモリアクセス220の命令テンプレートとを含む。ベクトルフレンドリ命令フォーマットに関する汎用的という用語は、何れか特定の命令セットに結び付けされていない命令フォーマットを参照する。ベクトルフレンドリ命令フォーマットの命令がレジスタ(非メモリアクセス205の命令テンプレート)又はレジスタ/メモリ(メモリアクセス220の命令テンプレート)をソースとするベクトルに対して実行される実施例が説明される一方、本発明の他の実施例はこれらの1つしかサポートしなくてもよい。また、ベクトル命令フォーマットによるロード及びストア命令がある本発明の実施例が説明される一方、他の実施例はさらに又は代わりに、レジスタに及びレジスタからベクトルを移動する異なる命令フォーマットによる命令を有する(メモリからレジスタへ、レジスタからメモリへ、レジスタ間など)。さらに、2つのクラスの命令テンプレートをサポートする本発明の実施例が説明される一方、他の実施例はこれらの1つのみ又は2より多くをサポートしてもよい。
・フォーマット
汎用的ベクトルフレンドリ命令フォーマット200は、図2A〜Bに示される順序により以下でリストされたフィールドを含む。
スケールフィールド260−それのコンテンツは、メモリアドレス生成のためのインデックスフィールドのコンテンツのスケーリングを可能にする(例えば、2scale*index+baseを利用するアドレス生成のためなど)。
・命令テンプレートクラス選択
クラスフィールド268−それのコンテンツは命令の異なるクラスを区別する。図2A〜Bを参照して、当該フィールドのコンテンツはクラスA命令とクラスB命令との間で選択する。図2A〜Bでは、丸められた四隅が、特定の値がフィールドにあることを示すのに利用される(例えば、図2A〜Bにおけるクラスフィールド268のクラスA268A及びクラスB268Bなど)。
・クラスAの非メモリアクセス命令テンプレート
クラスAの非メモリアクセス205命令テンプレートのケースでは、アルファフィールド252はRSフィールド252Aとして解釈され、それのコンテンツは、異なる拡張処理タイプの何れが実行されるべきか区別し(例えば、ラウンド252A.1及び変換252A.2がそれぞれ非メモリアクセスラウンドタイプ処理210命令テンプレートと非メモリアクセスデータ変換タイプ処理215命令テンプレートとのそれぞれについて指定される)、ベータフィールド254は、指定されたタイプの処理の何れが実行されるべきか区別する。図2において、丸められたコーナーブロックは、指定された値が存在することを示すのに利用される(例えば、モディファイアフィールド246の非メモリアクセス246A、アルファフィールド252/rsフィールド252Aのラウンド252A.1及びデータ変換252A.2など)。非メモリアクセス205命令テンプレートでは、スケールフィールド260、ディスプレースメントフィールド262A及びディスプレースメントスケールフィールド262Bは存在しない。
・非メモリアクセス命令テンプレート−フルラウンド制御タイプ処理
非メモリアクセスフルラウンド制御タイプ処理210命令テンプレートでは、ベータフィールド254はラウンド制御フィールド254Aとして解釈され、それのコンテンツはスタティックなラウンド化を提供する。本発明の説明される実施例では、ラウンド制御フィールド254Aは、SAE(Suppress All floating point Exceptions)フィールド256及びラウンド処理制御フィールド258を含むが、他の実施例は、これらのコンセプトを同一のフィールドに符号化することをサポートか、又はこれらのコンセプト/フィールドの一方又は他方のみを有することをサポートしてもよい(例えば、ラウンド処理制御フィールド258のみを有してもよい)。
・非メモリアクセス命令テンプレート−データ変換タイプ処理
非メモリアクセスデータ変換タイプ処理215命令テンプレートでは、ベータフィールド254はデータ変換フィールド254Bとして解釈され、それのコンテンツは、複数のデータ変換の何れが実行されるべきか区別する(例えば、非データ変換、スウィズル(swizzle)、ブロードキャストなど)。
・クラスAのメモリアクセス命令テンプレート
クラスAのメモリアクセス220命令テンプレートのケースでは、アルファフィールド252はイビクトヒントフィールド252Bとして解釈され、それのコンテンツは、イビクトヒントの何れが利用されるべきか区別し(図2Aでは、一時的252B.1及び非一時的252B.2がそれぞれ、メモリアクセス一時的225命令テンプレートとメモリアクセス非一時的230命令テンプレートとについて指定される)、ベータフィールド254がデータ操作フィールド254Cとして解釈され、それのコンテンツは、複数のデータ操作処理(プリミティブとして知られる)の何れが実行されるべきか区別する(例えば、非操作、ブロードキャスト、ソースのアップ変換及びデスティネーションのダウン変換など)。メモリアクセス220命令テンプレートは、スケールフィールド260と、任意的にはディスプレースメントフィールド262A又はディスプレースメントスケールフィールド262Bとを含む。
・メモリアクセス命令テンプレート−一時的
一時的データは、キャッシュ処理から利益を享受するのに十分すぐに再利用される可能性のあるデータである。すなわち、しかしながら、ヒント及び異なるプロセッサは、ヒントを完全に無視することを含む異なる方法によりそれを実現してもよい。
・メモリアクセス命令テンプレート−非一時的
非一時的データは、第1レベルキャッシュへのキャッシュ処理から利益を享受するのに十分すぐに再利用される可能性のあるデータであり、イビクションについてプライオリティが与えられるべきである。すなわち、しかしながら、ヒント及び異なるプロセッサは、ヒントを完全に無視することを含む異なる方法によりそれを実現してもよい。
・クラスBの命令テンプレート
クラスBの命令テンプレートのケースでは、アルファフィールド252はライトマスク制御(Z)フィールド252Cとして解釈され、それのコンテンツは、ライトマスクフィールド270により制御されるライトマスキングがマージング又はゼロ化であるべきであるか区別する。
・クラスBの非メモリアクセス命令テンプレート
クラスBの非メモリアクセス205命令テンプレートのケースでは、ベータフィールド254の一部はRLフィールド257Aとして解釈され、それのコンテンツは、異なる拡張処理タイプの何れが実行されるべきか区別し(例えば、ラウンド257A.1及びベクトル長(VSIZE)257A.2はそれぞれ、非メモリアクセスライトマスク制御パーシャルラウンド制御タイプ処理212命令テンプレートと、非メモリアクセスライトマスク制御VSIZEタイプ処理217命令テンプレートとについて指定される)、ベータフィールド254の残りは、指定されたタイプの処理の何れが実行されるべきか区別する。図2において、丸められたコーナーブロックは、特定の値が存在することを示すのに利用される(例えば、モディファイアフィールド246の非メモリアクセス246A、RLフィールド257Aのラウンド257A.1及びVSIZE257A.2など)。非メモリアクセス205命令テンプレートでは、スケールフィールド260、ディスプレースメントフィールド262A及びディスプレースメントスケールフィールド262Bはない。
・非メモリアクセス命令テンプレート−ライトマスク制御パーシャルラウンド制御タイプ処理
非メモリアクセスライトマスク制御パーシャルラウンド制御タイプ処理210命令テンプレートでは、ベータフィールド254の残りはラウンド処理フィールド259Aとして解釈され、例外イベント報告は不可とされる(所与の命令は何れのタイプの浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを起動しない)。
・非メモリアクセス命令テンプレート−ライトマスク制御VSIZEタイプ処理
非メモリアクセスライトマスク制御VSIZEタイプ処理217命令テンプレートでは、ベータフィールド254の残りはベクトル長フィールド259Bとして解釈され、それのコンテンツは実行対象の複数のデータベクトル長が何れであるか区別する(例えば、128、256又は512バイトなど)。
・クラスBのメモリアクセス命令テンプレート
クラスAのメモリアクセス220命令テンプレートのケースでは、ベータフィールド254の一部はブロードキャストフィールド257Bとして解釈され、それのコンテンツはブロードキャストタイプデータ操作処理が実行されるべきか区別し、ベータフィールド254の残りはベクトル長フィールド259Bとして解釈される。メモリアクセス220命令テンプレートは、スケールフィールド260と、任意的にはディスプレースメントフィールド262A又はディスプレースメントスケールフィールド262Bとを有する。
[フィールドに関する追加コメント]
汎用的ベクトルフレンドリ命令フォーマット200に関して、フォーマットフィールド240、ベース処理フィールド242及びデータ要素幅フィールド264を含むフルオペコードフィールド274が示される。フルオペコードフィールド274がこれらのフィールドのすべてを含む一実施例が示されるが、フルオペコードフィールド274は、それらのすべてを必ずしもサポートしない実施例においては、これらのフィールドのすべてより少なくしか有さない。フルオペコードフィールド274は、処理コードを提供する。
・例示的な特定のベクトルフレンドリ命令フォーマット−図3A〜D
図3Aは、本発明の実施例による例示的な特定のベクトルフレンドリ命令フォーマットを示すブロック図である。図3Aは、それがフィールドの位置、サイズ、解釈及び順序と共に、フィールドの一部の値を指定するという点で特有の特定のベクトルフレンドリ命令フォーマット300を示す。特定のベクトルフレンドリ命令フォーマット300は、x86命令セットを拡張するのに利用され、フィールドの一部は既存のx86命令セット及びその拡張(AVXなど)に利用されるものと類似又は同一である。このフォーマットは、拡張を有する既存のx86命令セットのプリフィックス符号化フィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、ディスプレースメントフィールド及び即値フィールドと整合される。図3Aからのフィールドがマップする図2からのフィールドが示される。
・フォーマット−図3
汎用的ベクトルフレンドリ命令フォーマット200は、図3Aに示される順序により後述される以下のフィールドを含む。
EVEXプリフィックス302は4バイト形式に符号化される。
・リアルオペコードフィールド330(バイト4)
これはまた、オペコードバイトとして知られる。オペコードの一部は当該フィールドにおいて指定される。
・MOD R/Mフィールド340(バイト5)
モディファイアフィールド246(MODR/M.MOD、ビット[7−6]−MODフィールド342)−上述されるように、MODフィールド342のコンテンツは、メモリアクセス処理と非メモリアクセス処理とを区別する。当該フィールドは、さらに後述される。
・スケール、インデックス、ベース(SIB)バイト(バイト6)
スケールフィールド260(SIB.SS、bit6と[7−6])−上述されるように、スケールフィールド260のコンテンツは、メモリアドレス生成に利用される。当該フィールドは、さらに後述される。
ディスプレースメントフィールド262A(バイト7−10)−MODフィールド342が10を有するとき、バイト7−10はディスプレースメントフィールド22Aであり、それは従来の32ビットディスプレースメントと同様に機能し(disp32)、バイト粒度により機能する。
即値フィールド272は上述されたように機能する。
図3Bは、本発明の一実施例によるフルオペコードフィールド274を構成する特定のベクトルフレンドリ命令フォーマット300のフィールドを示すブロック図である。具体的には、フルオペコードフィールド274は、フォーマットフィールド240、ベース処理フィールド242及びデータ要素幅(W)フィールド264を有する。ベース処理フィールド242は、プリフィックス符号化フィールド325、オペコードマップフィールド315及びリアルオペコードフィールド330を有する。
図3Cは、本発明の一実施例によるレジスタインデックスフィールド244を構成する特定のベクトルフレンドリ命令フォーマット300のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド244は、REXフィールド305、REX’フィールド310、MODR/M.regフィールド344、MODR/M.r/mフィールド346、VVVVフィールド320、xxxフィールド354及びbbbフィールド356を有する。
図3Dは、本発明の一実施例による拡張処理フィールド250を構成する特定のベクトルフレンドリ命令フォーマット300のフィールドを示すブロック図である。クラス(U)フィールド268が0を有するとき、それはEVEX.U0(クラスA268A)を示し、それは1を有するとき、それはEVEX.U1(クラスB268B)を示す。U=0及びMODフィールド342が11を有するとき(非メモリアクセス処理を示す)、アルファフィールド252(EVEXバイト3、ビット[7]―EH)はrsフィールド252Aとして解釈される。rsフィールド252Aが1を有するとき(ラウンド252A.1)、ベータフィールド254(EVEXバイト3、ビット[6:4]−SSS)はラウンド制御フィールド254Aとして解釈される。ラウンド制御フィールド254Aは、1ビットのSAEフィールド256と2ビットのラウンド処理フィールド258とを有する。rsフィールド252Aが0を有するとき(データ変換252A),ベータフィールド254(EVEXバイト3、ビット[6:4]−SSS)は、3ビットデータ変換フィールド254Bとして解釈される。U=0及びMODフィールド342が00、01又は10(メモリアクセス処理を示す)を有するとき、アルファフィールド252(EVEXバイト3、ビット[7]−EH)はイビクションヒント‘EH)フィールド252Bとして解釈され、ベータフィールド254(EVEXバイト3、ビット[6:4]−SSS)は3ビットデータ操作フィールド254Cとして解釈される。
ベクトルフォーマットは、レジスタの個数を32(REX’)に拡張する。
これは、命令シンタックスにおける最初のソースオペランドである。それはEVEX.vvvvの表記によって表現される。当該フィールドは、1の補完形式(反転形式)を用いて符号化され、すなわち、ZMM0は1111Bとして符号化され、ZMM15は0000Bとして符号化される。EVEXの追加的なビットフィールドはソースを32レジスタに拡張するのに必要とされることに留意されたい。
[ベクトルフレンドリ命令フォーマットのフィールドの一部の相互関係を示す例示的なフロー図−図4A〜4E]
図4A〜4Dは、本発明の一実施例によるベクトルフレンドリ命令フォーマットのフィールドの一部の相互関係を示すフロー図を示し、図4Eは、本発明の一実施例によるブロック415A〜Hのそれぞれの分解図である。ブロック400において、初期的なフィールド値がベクトルフレンドリ命令フォーマット(0x62など)を示しているか判断される。初期的なフィールド値がベクトルフレンドリ命令フォーマットを示していない場合、制御はブロック402に移行し、当該命令は命令セットの他のフォーマットの1つに従って処理される。初期的なフィールド値がベクトルフレンドリ命令フォーマットを示している場合、制御はブロック492に移行する。
本発明の実施例が図4を参照して説明されたが、他の実施例は異なるフローを利用してもよい。例えば、ブロック480、482及び484により示されるように、1つのみのデータ要素幅をサポートする処理はデータ要素幅の判定を有する必要はなく(ブロック442Aなど)、2つのベータフィールド判定を必要としない(ブロック444A及び446Aなど)。他の実施例は、これらすべての処理について1つのデータ要素のみをサポートし、すべてのタイプの処理に対して双方のデータ要素幅をサポートしてもよく(ロードグラフィック、ロードPackedグラフィック及びストアグラフィック処理に対するデータ要素幅及び追加的なベータフィールド判定を要求する)、又はその他の処理のいくつかに対する異なるデータ要素幅をサポートしない(例えば、ロード/op処理について異なるデータ要素幅をサポートしないなど)。同様に、他の実施例は、非メモリアクセスラウンドタイプ処理及び非メモリアクセスデータ変換タイプ処理の1以上に対して異なるデータ要素幅をサポートしなくてもよい。(前者では、ブロック414及び415Aは存在せず、後者では、ブロック415Bは存在しないが、ブロック416は存在せず、ブロック418及び420はマージされる。)他の例として、本発明の異なる実施例は、クラス(U)フィールド268を含まず、クラスA又はB命令テンプレートの一方しかサポートせず、SAEフィールド256を含むが、ラウンド処理フィールド258を含まず、ラウンド処理フィールド259Aを含まず、イビクションヒットフィールド252Bを含まず、クラスA及びB命令テンプレートの一方又は双方にラウンドタイプ処理を含まず、データ変換タイプ処理を含まず、非メモリアクセス205及びメモリアクセス220の一方又は双方にベクトル長フィールド259Bを含まず、ロード/op及びロード処理の一方又は他方のみをサポートし、マスクライトフィールド270を含まず、ライトマスク制御(Z)フィールド252Cを含まず、及び/又はベクトル長フィールド268を含まなくてもよい。
[例示的なレジスタアーキテクチャ−図5]
図5は、本発明の一実施例によるレジスタアーキテクチャ500のブロック図である。レジスタアーキテクチャのレジスタファイルファイル及びレジスタが以下に列記される。
[レジスタインデックスフィールド、スケールフィールド、ディスプレースメントフィールド、及びディスプレースメントファクタフィールドフロー−図6A〜6C]
・モディファイアフィールド=非メモリアクセス−図6A
図6Aは、本発明の実施例による非メモリアクセスタイプ処理のためのレジスタインデックスフィールド244のフロー図である。図6Aは、modフィールド342(=11)に従ってレジスタ間のアドレッシングが実行中であることを示す楕円600からスタートする。ブロック600から、制御はブロック605に移行する。
・モディファイアフィールド=メモリアクセス−図6B
図6Bは、本発明の実施例によるメモリアクセスタイプ処理のためのレジスタインデックスフィールド244、スケールフィールド260、ディスプレースメントフィールド262A及びディスプレースメントファクタフィールド262Bの利用を示すフロー図である。図6Bは、レジスタ・メモリ間のアドレッシングを示す楕円630から始まる(modフィールド342=00、01又は10)。630から、制御はブロック635に移行する。
・スケール化ディスプレースメント−図6C
図6Cは、本発明の実施例によるdisp8、disp32及びスケール化ディスプレースメントの変形の間の相違を示すテーブルである。テーブルのカラムは、1)バイトでインクリメントされるアドレスを示す“バイト”、2)−128〜127をストアするのに利用される1バイトフィールドである“disp8フィールド”、3)−231〜231−1をストアするのに利用される4バイトフィールドである“disp32フィールド”、4)−128〜127をストアするのに利用される1バイトフィールドである“disp32*Nフィールド”であり、当該カラムは“N=1”、“N=2”及び“N=64”のサブカラムを有する。
・ラウンド化フィールドテーブル−図7A〜B
図7Aは、本発明の実施例によるラウンド制御フィールド254Aにより指定されうる可能な処理のグループを示すテーブルである。図7Aは、第1カラムがベータフィールド254の可能なコンテンツを有することを示す(ラウンド制御フィールド254Aとして機能し、SAEフィールド256及びラウンド処理フィールド258に分割される)。
・データタイプ
以下のテーブルは、ここで用いられる例示的なデータタイプをリストする(その一部は、Miscrosoft(登録商標)のDirectX(登録商標)10に説明されている(Microsoft(登録商標)、DirectX(登録商標)、データ変換ルール(2010年8月17日)を参照)。
シングル値データ要素データタイプとマルチ値データ要素データタイプとをサポートする本発明の実施例が説明される。シングル値データ要素データタイプは、各データ要素にシングル値を格納し、本発明のいくつかの実施例において用いられるシングル値データ要素データタイプの具体例は、32ビット浮動小数点、64ビット浮動小数点、32ビット符号なし整数、64ビット符号なし整数、32ビット符号付き整数、及び64ビット符号付き整数である。マルチ値データ要素データタイプは、各データ要素位置に複数の値を有するパケットを格納し、本発明のいくつかの実施例において使用される複数値データ要素データタイプの具体例は、後述されるPackedグラフィックデータ要素データタイプである。
FLOAT11A11B10C:2つのFLOAT11値と1つのFLOAT10値との32ビットパケットは、より上位のビットにある最後を開始する(例えば、フロート10C[31−22]フロート11B[21−11]フロート11A[10−0]など)。
・データ変換フィールドテーブル−図8A及び8B
図8A〜8Bは、本発明の実施例によるデータ変換フィールドにより指定されうる可能なデータ変換処理のグループを示すテーブルである。双方のテーブルの第1カラムは、データ変換フィールド254Bのコンテンツの可能な値を示し、第2カラムはファンクションを示し、第3カラムは利用を示す。
・データ要素サイズフィールド=64ビット−図8A
図8Aは、本発明の実施例によるデータ要素幅が64ビットであるとき、データ変換フィールドにより指定されうる可能なデータ変換処理のグループを示すテーブルである。当該テーブルは、64ビットレジスタスウィズルアップ変換スウィズルプリミティブと呼ばれ、ブロック418の表現である。記号:dcbaはソースにおいて1つの256ビットブロックを形成する64ビット要素を示し(“a”は最下位及び“d”は最上位)、aaaaは、ソースの256ビットブロックの最下位要素がデスティネーションにおける同じ256ビットブロックの4つすべての要素に複製され、図示されたパターンは、そのときソース及びデスティネーションにおいて2つの256ビットブロックについて繰り返されることを意味する。ただし、“a”は最下位要素であり、“h”は最上位要素である。しかしながら、各256ビットブロックはレジスタスウィズルについて同じ順列を実行するため、最下位ブロックのみが示される。
・データ要素サイズフィールド=32ビット−図8B
図8Bは、本発明の実施例によるデータ要素幅が32ビットであるときデータ変換フィールドにより指定されうる可能なデータ変換処理のグループを示すテーブルである。当該テーブルは、32ビットレジスタスウィズルアップ変換スウィズルプリミティブと呼ばれ、ブロック420の表現である。記号:dcbaはソースにおいて1つの128ビットブロックを形成する32ビット要素を示し(“a”は最下位及び“d”は最上位)、aaaaは、ソースにおける128ビットブロックの最下位要素がデスティネーションにおける同じ128ビットブロックの4つすべての要素に複製され、図示されたパターンは、このときソース及びデスティネーションにおける4つすべての128ビットブロックについて繰り返される。“ponm lkji hgfe dcba”はソースレジスタを示すのに利用され、“a”は最下位要素であり、“p”は最上位要素である。しかしながら、各128ビットブロックはレジスタスウィズルについて同じ順列を実行するため、最下位ブロックのみが示される。
・例示的なスウィズル処理−図9
図9は、本発明の実施例によるクロスプロダクトスウィズル815を示すブロック図である。図9は、双方が512ビット幅であり、連続する128個のブロックに分割される(パケット位置3−0と呼ばれる)ソースオペランド900及びデスティネーションオペランド910を示し、各ブロックは4つの32ビットデータ要素に分割される。(例えば、ソースオペランド900のパケット位置0のコンテンツはD0C0B0A0であり、デスティネーションオペランド910のパケット位置0のコンテンツはD0A0C0B0である。
・例示的なブロードキャスト処理−図10A〜10C
図10Aは、本発明の実施例による4要素パケット820にわたる要素のブロードキャストを示すブロック図である。図10Aは、双方が512ビット幅であり、連続する128個のブロック(パケット位置3〜0として参照される)に分割されるソースオペランド1000及びデスティネーションオペランド1010を示し、各ブロックは4つの32ビットデータ要素に分割される。(例えば、ソースオペランド1000のパケット位置0のコンテンツはD0C0B0A0である一方、デスティネーションオペランド910のパケット位置0のコンテンツはA0A0A0A0であり、ソースオペランド1000のパケット位置1のコンテンツはD1C1B1A1であり、デスティネーションオペランド1010のパケット位置1のコンテンツはA1A1A1A1である。)
図10Aは非メモリアクセス処理の一例となるブロードキャストであるが、図10B〜10Cはメモリアクセス処理のための一例となるブロードキャストである。ソースメモリオペランドは要素の合計数より少なく含むとき、それは有効なソースオペランドの完全数の要素を形成するためブロードキャスト(繰り返し)可能である(32ビット命令について16、64ビット命令について8)。これらのタイプのブロードキャスト処理は図12A〜12Dにおいて参照される。2つのブロードキャスト粒度がある。
・ベース処理フィールドテーブル−図11A及び11B
・オペコードマップフィールド−図11A
図11Aは、本発明の実施例によるオペコードマップフィールドにより指定されうる可能なオペコードマップのグループを示すテーブルである。第1カラムは、オペコードマップフィールド315のコンテンツの可能な値を示し、第2カラムは、インプライされるリーディングオペコードバイトを示し、第3カラムは、即値があるか示す。
・プリフィックス符号化フィールド−図11B
図11Bは、本発明の実施例によるオペコードマップフィールドにより指定されうる可能なプリフィックス符号化のグループを示すテーブルである。第1カラムは、プリフィックス符号化フィールド325のコンテンツの可能な値を示し、第2カラムは、当該プリフィックスの意味を示す。
・データ操作フィールドテーブル−図12〜15
図12〜15は、本発明の実施例によるデータ操作フィールド254Cと、図12A〜Dについてブロードキャストフィールド257Bとによりそれぞれ指定されうる可能なデータ操作処理とブロードキャスト処理とのグループを示すテーブルである。テーブルの第1カラムは、データ操作フィールド254Cのコンテンツの可能な値を示し、第2カラムはファンクションを示し、第3カラムは利用を示す。
・ロード/OPのためのデータ操作フィールドテーブル−図12A〜12D
図12A〜12Dは、本発明の実施例によるロード/op命令のためのデータ操作フィールド254C及びブロードキャストフィールド257Bによりそれぞれ指定されうる可能なデータ操作処理及びブロードキャスト処理のグループを示すテーブルである。図3A〜Dにおける例示的な特定のベクトルフレンドリ命令フォーマットのケースでは、データ操作フィールド254Cは3ビットフィールドであり、ブロードキャストフィールド257Bは1ビットフィールドである。図示された実施例では、ブロードキャストフィールド257Bのコンテンツは、図12A〜Dに示されるテーブルの最初の2つのローの間で選択し、すなわち、それのコンテンツは、データ操作フィールド254Cにおける000及び001の等価なものの間で選択する。これは、テーブルの最初の2つのローしか含まないブラケットを利用して図12A〜Dに示される。
・ロード/OP整数及びデータ要素サイズフィールド=64ビット−図12A
図12Aは、本発明の実施例によるデータ要素幅が64ビットであるロード/op整数についてデータ操作フィールド254C及びブロードキャストフィールド257Bにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、64ビットIntegerLoad−opSwizzUpConvi64(クワドワード)スウィズル/変換プリミティブと呼ばれ、ブロック444A及び444Bの表現である。
・ロード/OP整数及びデータ要素サイズフィールド=32ビット−図12B
図12Bは、本発明の実施例によるデータ要素幅が32ビットであるロード/op整数のデータ操作フィールド254C及びブロードキャストフィールド257Bにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、32ビットIntegerLoad−opSwizzUpConvi32スウィズル/変換プリミティブとして参照され、ブロック446A及び446Bの表現である。
・ロード/OP浮動小数点及びデータ要素サイズフィールド=64ビット−図12C
図12Cは、本発明の実施例によるデータ要素幅が64ビットであるロード/op浮動小数点のデータ操作フィールド254C及びブロードキャストフィールド257Bにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、64ビットFloating−pointLoad−opSwizzUpConvf64スウィズル/変換プリミティブとして参照され、ブロック450A及び450Bの表現である。
・ロード/OP浮動小数点及びデータ要素サイズフィールド=32ビット−図12D
図12Dは、本発明の実施例によるデータ要素幅が32ビットであるロード/op浮動小数点のデータ操作フィールド254C及びブロードキャストフィールド257Bにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、32ビットFloating−pointLoad−opSwizzUpConvf32スウィズル/変換プリミティブとして参照され、ブロック452A及び452Bの表現である。
・ロードのためのデータ操作フィールドテーブル−図13A〜13D
図13A〜13Dは、本発明の実施例によるロード命令のためのデータ操作フィールドにより指定されうる可能なデータ操作処理のグループを示すテーブルである。
・ロード整数及びデータ要素サイズフィールド=64ビット−図13A
図13Aは、本発明の実施例によるデータ要素幅が64ビットであるロード整数のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvi64として参照され、ブロック456の表現である。
・ロード整数及びデータ要素サイズフィールド=32ビット−図13B
図13Bは、本発明の実施例によるデータ要素幅が32ビットであるロード整数のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvi32として参照され、ブロック458の表現である。
・ロード浮動小数点及びデータ要素サイズフィールド=64ビット−図13C
図13Cは、本発明の実施例によるデータ要素幅が64ビットであるロード浮動小数点のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvf64として参照され、ブロック462の表現である。
・ロード浮動小数点及びデータ要素サイズフィールド=32ビット−図13D
図13Dは、本発明の実施例によるデータ要素幅が32ビットであるロード浮動小数点のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvf32として参照され、ブロック464の表現である。
・追加的ポイント
図13A〜13D(ロード/opテーブル)のそれぞれにおいて指定される可能なデータ操作処理のグループは、対応する図12A〜12D(ロードテーブル)のもののサブセットである。具体的には、当該サブセットはブロードキャスト処理を含まない。これは、フルオペコードフィールド274の特定の値(ギャザー又はブロードキャスト処理を指定するものなど)が、データ操作フィールド254Cにおおいて指定されたブロードキャストと共に利用できず、フルオペコードフィールド274の当該値は、図12A〜12D(ロードテーブル)のロードによってのみ利用可能である。より具体的な例として、ブロードキャスト処理を指定するフルオペコードフィールド274に値がある場合、データ操作フィールド254Cはまたブロードキャスト処理を示すことができない。本発明の特定の実施例は別々のロード/opテーブルとロードテーブルとを有する別々のロード/op及びロード処理を含むが、他の実施例は、当該実施機構を有する必要はない(例えば、それらは、ロード/opのみをサポートし、ロードのみをサポートし、フルオペコードフィールド274のブロードキャストはデータ操作フィールド254Cのブロードキャストを無視させることを判断してもよい)。
・ストアのためのデータ操作フィールドテーブル−図14A〜14D
図14A〜14Dは、本発明の実施例によるストア命令のためのデータ操作フィールドにより指定されうる可能なデータ操作処理のグループを示すテーブルである。
・ストア整数及びデータ要素サイズフィールド=64ビット−図14A
図14Aは、本発明の実施例によるデータ要素幅が64ビットであるストア整数のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、DownConvi64として参照され、ブロック470の表現である。
・ストア整数及びデータ要素サイズフィールド=32ビット−図14B
図14Bは、本発明の実施例によるデータ要素幅が32ビットであるストア整数のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、DownConvi32として参照され、ブロック472の表現である。
・ストア浮動小数点及びデータ要素サイズフィールド=64ビット−図14C
図14Cは、本発明の実施例によるデータ要素幅が64ビットであるストア浮動小数点のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、DownConvf64として参照され、ブロック476の表現である。
・ストア浮動小数点及びデータ要素サイズフィールド=32ビット−図14D
図14Dは、本発明の実施例によるデータ要素幅が32ビットであるストア浮動小数点のためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、DownConvf32として参照され、ブロック478の表現である。
・グラフィックデータタイプのためのデータ操作フィールドテーブル−図15A〜15C
図15A〜15Cは、本発明の実施例によるグラフィックスデータタイプに対して実行される命令のためのデータ操作フィールドにより指定されうる可能なデータ操作処理のグループを示すテーブルである。
・ロードグラフィック−図15A
図15Aは、本発明の実施例によるデータ要素幅が32ビットであるロードグラフィックのためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvg32として参照され、ブロック480の表現である。
・ロードPackedグラフィック−図15B
図15Bは、本発明の実施例によるデータ要素幅が32ビットであるロードPackedグラフィックのためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvpg32として参照され、ブロック482の表現である。
・ストアグラフィック−図15C
図15Cは、本発明の実施例によるデータ要素幅が32ビットであるストアグラフィックのためのデータ操作フィールド254Cにより指定されうる可能なデータ操作処理のグループを示すテーブルである。当該テーブルは、UpConvg32として参照され、ブロック484の表現である。
・ライトマスクフィールド−図16A〜D
図16A〜16Bは、本発明の実施例による異なるライトマスクと、同一の第2ソース及びデスティネーションとにより実行される2つのマージング処理を示す。図16Aは、本発明の実施例によるライトマスクレジスタK1においてライトマスクを利用してマージする一例となる処理1600を示すブロック図であり、データ要素幅は32ビットであり、第2ソース及びデスティネーションが同一である。図16Aは、ソースオペランド1605、ソース/デスティネーションオペランド1610、マスクレジスタK1 1615のコンテンツ(下位16ビットは1と0との混合を含む)、及びデスティネーションオペランド1620を示す。マスクレジスタK1の下位16ビット位置のそれぞれは、データ要素位置の1つに対応する(K1[0]はデータ要素位置0に、K1[1]はデータ要素位置1などに対応する)。デスティネーションオペランド1620の各データ要素位置について、それは、マスクレジスタK1の対応するビット位置がそれぞれ0又は1であるか否かに依存して、ソース/デスティネーション1610のデータ要素位置のコンテンツ又は処理結果(加算として示される)を含む。他の実施例では、ソース/デスティネーションオペランド1610は、第2ソースオペランドに置換される。これらの実施例では、デスティネーションオペランド1620は、マスクレジスタK1の対応するビット位置が0である(存在する場合)データ要素位置に処理前からのデスティネーションオペランド1620のコンテンツを含み、マスクレジスタK1の対応するビット位置が1である(存在する場合)データ要素位置に処理結果を含む。
・例示的なテンプレート及び命令−図17〜18
以下の記号は、図17〜18への導入により提供される。
図17Aは、本発明の実施例による一例となる特定のベクトルフレンドリ命令フォーマットからのフィールドのサブセットを示す。具体的には、図17Aは、EVEXプリフィックス302、リアルオペコードフィールド330及びMOD R/Mフィールド340を示す。本実施例では、フォーマットフィールド240は、命令フォーマットがベクトルフレンドリ命令フォーマットであることを示すための0×62を含む。
図17Cは、非メモリアクセスデータ変換タイプ処理215命令テンプレートにおけるVADDPS命令の符号化を示す。図17Cの符号化は、アルファフィールド252及びベータフィールド254を除き図17Bと同一である。アルファフィールド252はRSフィールド252A(すなわち、EVEX.rs)として解釈され、データ変換タイプ処理を選択するため0に設定される(すなわち、RSフィールド252A.2)。アルファフィールド252はRSフィールド252A.2として機能するため、ベータフィールド254は、データ変換フィールド254B(すなわち、EVEX.s2−0)として解釈される。
・EVEX.U1のための例示的な命令符号化−図18A〜18F
図18Aは、本発明の実施例による一例となる特定のベクトルフレンドリ命令フォーマットからのフィールドのサブセットを示す。具体的には、図1*Aは、EVEXプリフィックス302、リアルオペコードフィールド330及びMOD R/Mフィールド340を示す。本実施例では、フォーマットフィールド240は、命令フォーマットがベクトルフレンドリ命令フォーマットであることを示すため0×62を含む。
EVEX.U1.NDS.512.0F.W0 58/r VADDPS zmm1{k1}{z},zmm2,B32(mV) ベクトル長フィールドが256ビットのベクトルを示すとき、これは、以下のニーモニックにより示されてもよい。
EVEX.U1.NDS.256.0F.W0 58/r VADDPS ymm1{k1}{z},ymm2,B32(mV) ベクトル長フィールドが128ビットのベクトルを示すとき、これは、以下のニーモニックにより示されてもよい。
EVEX.U1.NDS.128.0F.W0 58/r VADDPS xmm1{k1}{z},xmm2,B32(mV)
・例示的なディスプレースメント8*N値
本発明の一実施例では、メモリアクセスサイズNが、使用される命令テンプレートと後述されるような他のファクタとに依存してベース処理フィールド、データ要素幅フィールド及び拡張処理フィールドの2以上のコンテンツに基づき決定される。本発明の一実施例では、U=0(クラスA)に関して、以下のテーブルは、メモリにおいてアクセスされるベクトル(又は要素)のサイズと、圧縮されたディスプレースメントのディスプレースメントファクタ(disp8*N)とを示す。いくつかの命令は、メモリのレベルにおいてフルベクトル粒度の代わりに要素粒度により機能し、以下のテーブルにおいて“要素レベル”カラムを利用するべきである。ファンクションカラムのラベル(U/Si64など)は、ベース処理フィールド(例えば、U/Siはロード整数及びロード/op整数を示すなど)と、データ要素幅(例えば、64は64ビットデータ要素幅である)とにより指定されるメモリアクセスタイプを示す。当該カラムの値は、図3の実施例においてデータ操作フィールド254Cの可能な値である。図4Bを参照して、各種メモリアクセスタイプがそれらのデータ操作図12A〜15Cにフローして示され(いくつかのケースでは、データ要素幅判定を介し)、各種テーブル12A〜15CはNの値の選択を導出し、適切である場合、カラム2及び3に配置される。例えば、ロード/op整数64ビットデータ要素幅メモリアクセス処理は図12Aにフローし、データ操作フィールド254Cのコンテンツは、データ操作処理(図12Aに示されるような)とNの値(以下に示されるような)との双方を選択するのに利用される。他の例として、ロード整数64ビットデータ要素幅メモリアクセス処理(ベース処理フィールド242においてブロードキャストを示す)は図13Aにフローし、データ操作フィールド254Cのコンテンツが、データ操作処理(図13Aに示されるように、ブロードキャストデータ変換を含まない)とNの値(後述される)との双方を選択するため利用される。従って、第2カラムは、ベース処理フィールド242がブロードキャスト又は要素レベルメモリアクセスを指定しない命令のためのものであり、第3カラムの第1サブカラムは、ベース処理フィールド242がブロードキャストを指定するが、要素レベルメモリアクセスを指定しない命令のためのものであり、第3カラムの第2サブカラムは、ベース処理フィールド242がブロードキャスト又は要素レベルメモリアクセスを指定する命令のためのものである。
また、本発明のいくつかの実施例では、異なるプロセッサ又はプロセッサ内の異なるコアは、クラスAのみ、クラスBのみ又は両方のクラスをサポートしてもよい。例えば、汎用計算用のハイパフォーマンス汎用オウト・オブ・オーダコアは、クラスBのみをサポートし、主としてグラフィック及び/又は科学(スループット)計算用のコアはクラスAのみをサポートし、双方用のコアは双方をサポートしてもよい(もちろん、双方のクラスカラのテンプレート及び命令の混合を有するが、双方のクラスカラの必ずしもすべてのテンプレート及び命令を有さないコアは、本発明の範囲内である。)また、シングルプロセッサは、そのすべてが同じクラスをサポートするか、又は異なるコアは異なるクラスをサポートする複数のコアを含むものであってもよい。例えば、別個のグラフィック及び汎用コアを備えたプロセッサでは、主としてグラフィック及び/又は科学計算用のグラフィックコアの1つはクラスAしかサポートせず、汎用コアの1以上は、クラスBしかサポートしない汎用計算用のハイパフォーマンス汎用アウト・オブ・オーダコアであってもよい。別個のグラフィックコアを有しない他のプロセッサは、クラスAとクラスBとの双方をサポートする1以上の汎用イン・オーダ又はアウト・オブ・オーダコアを有してもよい。もちろん、1つのクラスカラの特徴はまた、本発明の異なる実施例における他のクラスにおいて実現されてもよい。ハイレベル言語により記述されたプログラムは、1)実行用のターゲットプロセッサによりサポートされるクラスの命令のみを有する形式、又は2)コードを現在実行中のプロセッサによりサポートされる命令に基づき実行すべきルーチンを選択する制御フローコードを有し、すべてのクラスの命令の異なる組み合わせを用いて記述された他のルーチンを有する形式を含む各種実行可能形式に置かれる(例えば、ジャストインタイムコンパイル又は静的コンパイルされるなど)。
図19〜22は、本発明による4つの例示的なプロセッサパイプラインの異なるステージにおいて図2Aの命令テンプレートの何れのフィールドが利用されるか示すブロック図である。要求される理解レベルにおいて、図示されたパイプラインステージ及びそれらのファンクションは周知であることに留意すべきである。図19〜22のそれぞれは、非メモリアクセスフルラウンド制御タイプ処理210命令テンプレート、非メモリアクセスデータ変換タイプ処理215命令テンプレート及びメモリアクセス225/230命令テンプレートをそれぞれ示すA、B及びC図を含む。図19〜22のそれぞれは異なる一例となるパイプラインを示すが、同一のパイプラインは各図番のA〜C図のそれぞれに示される。例えば、図19Aは、非メモリアクセスフルラウンド制御タイプ処理210命令テンプレートと一例となる第1命令パイプラインとを示し、図19Bは、非メモリアクセスデータ変換タイプ処理215と図19Aと同じ例示的なパイプラインとを示し、図20Aは非メモリアクセスフルラウンドタイプ制御処理210命令テンプレートと一例となる第2プロセッサパイプラインとを示す。
・例示的な汎用パイプライン−図19
プロセッサパイプライン1900は、汎用プロセッサパイプラインを表し、フェッチステージ1910、復号化ステージ1920、レジスタリード/メモリリードステージ1930、データ変換ステージ1940、実行ステージ1950及びライトバック/メモリライトステージ1960を含む。
矢印は異なるフィールドにより利用されるステージのみを必ずしも表すものでなく、当該フィールドが最大のインパクトを有する可能性がある場所を表すことに留意すべきである。A図とB図との間では、拡張処理フィールド250がラウンド処理のための実行ステージ1950により利用され、拡張処理フィールド250がデータ変換タイプ処理のためデータ変換ステージ1940により利用され、データ要素幅フィールド264から実行ステージ1950へのラインがデータ変換ステージ1940に移されるという大きな相違があることに留意されたい。図19Cは、レジスタリード/メモリリードステージ1930に移動するベース処理フィールド242、レジスタリード/メモリリードステージ1930により利用される拡張処理フィールド250のEHフィールド252B、スケールフィールド260、ディスプレースメントフィールド262A/ディスプレースメントファクタフィールド262B、ライトマスクフィールド270、及びそれがメモリリード又はメモリライト処理である否かに応じてレジスタリード/メモリリードステージ1930又はライトバック/メモリライト1960により任意的に利用されるデータ要素幅フィールド264を示す。即値フィールド272を利用するパイプラインステージは周知であるため、当該フィールドのマッピングは、本発明を不明りょうにしないように表されない。
・例示的なイン・オーダパイプライン−図20
プロセッサパイプライン2000は、イン・オーダプロセッサパイプラインを表し、プロセッサパイプライン2000と同じ名前のパイプラインステージを有するが、フェッチステージ1910と復号化ステージ1920との間にレングス復号化ステージ2012が挿入されている。
・例示的な第1アウト・オブ・オーダパイプライン−図21
プロセッサパイプライン2100は、プロセッサパイプライン2000と同じ名前のパイプラインステージを有する例示的な第1アウト・オブ・オーダパイプラインを表すが、1)割当てステージ2122、リネーミングステージ2124、及び復号化ステージ1920とレジスタリード/メモリリードステージ1930との間に挿入されるスケジュールステージ2126と、2)リオーダバッファ(rob)リードステージ2162、例外処理ステージ2164、及びライトバック/メモリライトステージ1960の後に追加されるコミットステージ2166を有する。
・例示的な第2オウト・オブ・オーダパイプライン−図22
プロセッサパイプライン2200は、データ変換及び実行ステージが実行/データ変換ステージ2245を形成するようマージされていることを除き、プロセッサパイプライン2100と同じ名前のプロセッサパイプラインステージを有する例示的な第2アウト・オブ・オーダパイプラインを表す。
・例示的なパイプライン上のクラスB命令テンプレート
以下のテーブルは、本発明の実施例による図2Bの命令テンプレートのフィールドを収容するため図19〜22を変更する方法を示す。
復号化ステージ1920において、各種の周知の復号化ユニットが利用可能である。例えば、復号化ユニットは、各マクロ命令をシングル幅マイクロ命令に復号化するものであってもよい。他の例として、復号化ユニットは、いくつかのマクロ命令をシングル幅マイクロ命令に復号化してもよく、他のものをマルチ幅マイクロ命令に復号化してもよい。アウト・オブ・オーダプロセッサパイプラインに特に適した他の例として、復号化ユニットは、各マクロ命令を1以上のマイクロopに復号化してもよく、各マイクロopが発行され、アウト・オブ・オーダに実行される。
・例示的なイン・オーダプロセッサアーキテクチャ−図23A〜23B
図23A〜Bは、一例となるイン・オーダプロセッサアーキテクチャのブロック図を示す。当該実施例は、ワイドベクトルプロセッサ(VPU)により拡張されたイン・オーダCPUコアの複数のインスタンス化に関して設計されている。コアは、正確なプリケーションに応じて高帯域幅インターコネクトネットワークを介し固定的なファンクションロジック、メモリI/Oインタフェース及び他の必要なI/Oロジックと通信する。例えば、本実施例のスタンドアローンGPUとしての実現は、典型的には、PCIeバスを含む。
・例示的なアウト・オブ・オーダアーキテクチャ−図24
図24は、本発明の実施例による例示的なアウト・オブ・オーダアーキテクチャを示すブロック図である。具体的には、図24は、ベクトルフレンドリ命令フォーマット及びその実行を含むよう変更された周知の一例となるアウト・オブ・オーダアーキテクチャを示す。図24において、矢印は2以上のユニットの間の接続を示し、矢印の方向はこれらのユニットの間のデータフローの方向を示す。図24は、実行エンジンユニット2410及びメモリユニット2415に接続されるフロントエンドユニット2405を有し、実行エンジンユニット2410はさらに、メモリユニット2415に接続される。
・例示的なシングルコア及びマルチコアプロセッサ−図29
図29は、本発明の実施例による統合されたメモリコントローラ及びグラフィックを備えたシングルコアプロセッサ及びマルチコアプロセッサ2900のブロック図である。図29における実線のボックスは、シングルコア2902A、システムエージェント2910及び1以上のバスコントローラユニット2916のセットを備えたプロセッサ2900を示し、破線のボックスの任意的な追加は、複数のコア2902A〜N、システムエージェントユニット2910における1以上の統合されたメモリコントローラユニット2914のセット及び統合されたグラフィックロジック2908を備えた他のプロセッサ2900を示す。
図25〜27は、プロセッサ2900を含むのに適した一例となるシステムであり、図28は、コア2902の1以上を含むものであってもよい一例となるSoC(System on Chip)である。ラップトップ、デスクトップ、携帯PC、PDA(Personal Digital Assistant)、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、埋め込みプロセッサ、DSP(Digital Signal Processor)、グラフィック装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤー、携帯装置及び他の各種電子装置について当該分野で知られる他のシステム設計及びコンフィギュレーションがまた適している。一般に、ここに開示されるようなプロセッサ及び/又は他の実行ロジックを搭載可能な各種システム又は電子装置が一般に適している。
ベクトルフレンドリ命令フォーマットを直接実行する実施例が説明されたが、本発明の他の実施例は、異なる命令セットを実行するプロセッサ(例えば、カリフォルニア州SunnyvaleのMIPS TechnologiesのMIPS命令セットを実行するプロセッサ、カリフォルニア州SunnyvaleのARM HoldingsのARM命令セットを実行するプロセッサなど)上で実行されるエミュレーションレイヤを介しベクトルフレンドリ命令フォーマットを実行してもよい。また、図のフロー図は本発明の特定の実施例により実行される処理の特定の順序を示しているが、当該順序は一例であることが理解されるべきである。(他の実施例は、異なる順序により処理を実行し、特定の処理を合成し、特定の処理をオーバラップするなどしてもよい)。
2510、2515 プロセッサ
Claims (12)
- 命令セットを実行するよう構成されるプロセッサを有する装置であって、
前記命令セットは、第1命令フォーマットを有し、
前記第1命令フォーマットは、ベース処理フィールド、モディファイアフィールド、データ要素幅フィールド及び拡張処理フィールドを含む複数のフィールドを有し、
前記第1命令フォーマットは、前記ベース処理フィールドの異なる値により複数の異なるベクトル処理の指定をサポートし、
前記複数のベクトル処理の各々は、異なるデータ要素位置の複数のデータ要素を有し、
前記第1命令フォーマットは、前記モディファイアフィールドの異なる値によりメモリアクセス処理及び非メモリアクセス処理の指定をサポートし、
前記モディファイアフィールドのコンテンツがスケーリングされたディスプレースメントによるメモリアクセス処理を指定するとき、前記第1命令フォーマットは、ディスプレースメントファクタフィールドを含み、
前記ベース処理フィールド、前記モディファイアフィールド、前記データ要素幅フィールド及び前記拡張処理フィールドはそれぞれ、前記第1命令フォーマットの命令の各出現に対して1つのみの値を格納可能であり、
前記プロセッサは、命令ストリームに出現する前記第1命令フォーマットの命令を実行するプロセッサパイプラインを含み、
前記パイプラインは、
スケーリングされたディスプレースメントによるメモリアクセスを指定する前記第1命令フォーマットの命令の出現と前記メモリアクセスを指定しない前記第1命令フォーマットの命令の出現とを前記異なる出現における前記モディファイアフィールドのコンテンツに基づき区別し、
前記モディファイアフィールドのコンテンツによりスケーリングされたディスプレースメントによりメモリアクセスを指定する出現について、前記ベース処理フィールド、前記データ要素幅フィールド及び前記拡張処理フィールドの2以上のコンテンツに基づき複数のメモリアクセスサイズの間で区別し、
前記モディファイアフィールドのコンテンツによりスケーリングされたディスプレースメントによりメモリアクセスを指定する出現の各々について、前記メモリアクセスのサイズと前記ディスプレースメントファクタフィールドのコンテンツとの乗算に基づきスケーリングされたディスプレースメントを決定し、前記スケーリングされたディスプレースメントはアドレスを生成するのに利用されるべきであるよう構成される装置。 - 前記第1命令フォーマットはまた、スケーリングされないディスプレースメントと非ディスプレースメントとを指定する前記モディファイアフィールドのコンテンツをサポートする、請求項1記載の装置。
- 前記第1命令フォーマットは、前記モディファイアフィールドのコンテンツがスケーリングされないディスプレースメントによりメモリアクセス処理を指定するとき、ディスプレースメントフィールドを有する、請求項1又は2記載の装置。
- 前記モディファイアフィールドのコンテンツがスケーリングされたディスプレースメントによるメモリアクセス処理を指定ッするとき、スケール、インデックス及びベースが前記第1命令フォーマットのフィールドからプルされ、
前記スケール、インデックス、ベース及びスケーリングされたディスプレースメントは、前記アドレスを生成するのに利用される、請求項1乃至3何れか一項記載の装置。 - 前記スケールは、2ビットスケールフィールドからプルされ、
前記インデックスは、1ビットXフィールドと3ビットXXXフィールドとの組み合わせからプルされ、
前記ベースは、1ビットBフィールドと3ビットBBBの組み合わせからプルされる、請求項4記載の装置。 - 前記複数のメモリアクセスサイズを区別するのに使用されるフィールドの選択は、前記拡張処理フィールド内のクラスフィールドのコンテンツに基づく、請求項1乃至5何れか一項記載の装置。
- 前記クラスフィールドのコンテンツが第1クラスを指定するとき、前記複数のメモリアクセスサイズを区別するのに使用されるフィールドは、前記ベース処理フィールド、前記拡張処理フィールド内のデータ操作フィールド及び前記データ要素幅フィールドの2以上を含む、請求項6記載の装置。
- 前記クラスフィールドのコンテンツが第2クラスを指定するとき、前記複数のメモリアクセスサイズを区別するのに使用されるフィールドは、前記ベース処理フィールド、前記拡張処理フィールド内のブロードキャストフィールド、前記拡張処理フィールド内のベクトル長フィールド及び前記データ要素幅フィールドの2以上を含む、請求項6又は7記載の装置。
- 前記ディスプレースメントファクタフィールドは、シングルバイトである、請求項1乃至8何れか一項記載の装置。
- 前記ディスプレースメントファクタフィールドのコンテンツは、−128〜127までの符号付きの値として解釈される、請求項9記載の装置。
- 前記複数のメモリアクセスサイズは、前記メモリアクセスにおけるバイト数に対応する、請求項1乃至10何れか一項記載の装置。
- 前記複数のメモリアクセスサイズは、1バイト、2バイト、4バイト、8バイト、16バイト、32バイト及び64バイトである、請求項1乃至11何れか一項記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161471043P | 2011-04-01 | 2011-04-01 | |
US61/471,043 | 2011-04-01 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502538A Division JP5739055B2 (ja) | 2011-04-01 | 2011-09-30 | ベクトルフレンドリ命令フォーマット及びその実行 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016237947A Division JP6339164B2 (ja) | 2011-04-01 | 2016-12-07 | ベクトルフレンドリ命令フォーマット及びその実行 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015158940A true JP2015158940A (ja) | 2015-09-03 |
JP6058732B2 JP6058732B2 (ja) | 2017-01-11 |
Family
ID=46931820
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502538A Active JP5739055B2 (ja) | 2011-04-01 | 2011-09-30 | ベクトルフレンドリ命令フォーマット及びその実行 |
JP2015087178A Active JP6058732B2 (ja) | 2011-04-01 | 2015-04-22 | ベクトルフレンドリ命令フォーマット及びその実行 |
JP2016237947A Active JP6339164B2 (ja) | 2011-04-01 | 2016-12-07 | ベクトルフレンドリ命令フォーマット及びその実行 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502538A Active JP5739055B2 (ja) | 2011-04-01 | 2011-09-30 | ベクトルフレンドリ命令フォーマット及びその実行 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016237947A Active JP6339164B2 (ja) | 2011-04-01 | 2016-12-07 | ベクトルフレンドリ命令フォーマット及びその実行 |
Country Status (11)
Country | Link |
---|---|
US (7) | US20130305020A1 (ja) |
EP (4) | EP3805921B1 (ja) |
JP (3) | JP5739055B2 (ja) |
KR (1) | KR101595637B1 (ja) |
CN (5) | CN107608716B (ja) |
DE (1) | DE102020102331A1 (ja) |
ES (1) | ES2943248T3 (ja) |
GB (1) | GB2502936A (ja) |
PL (1) | PL3422178T3 (ja) |
TW (2) | TWI506546B (ja) |
WO (1) | WO2012134532A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019509574A (ja) * | 2016-03-23 | 2019-04-04 | エイアールエム リミテッド | プログラム・ループ制御 |
JP2020501274A (ja) * | 2016-12-13 | 2020-01-16 | エイアールエム リミテッド | 要素レプリケート命令 |
JP2020508514A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置におけるベクトルによる要素演算 |
US11947962B2 (en) | 2016-12-13 | 2024-04-02 | Arm Limited | Replicate partition instruction |
Families Citing this family (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL3422178T3 (pl) | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
US9411583B2 (en) * | 2011-12-22 | 2016-08-09 | Intel Corporation | Vector instruction for presenting complex conjugates of respective complex numbers |
CN104067224B (zh) | 2011-12-23 | 2017-05-17 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
US9619236B2 (en) | 2011-12-23 | 2017-04-11 | Intel Corporation | Apparatus and method of improved insert instructions |
CN104126167B (zh) * | 2011-12-23 | 2018-05-11 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
US9632980B2 (en) * | 2011-12-23 | 2017-04-25 | Intel Corporation | Apparatus and method of mask permute instructions |
US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
US9189236B2 (en) * | 2012-12-21 | 2015-11-17 | Intel Corporation | Speculative non-faulting loads and gathers |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate 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 |
US9207942B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses,and methods for zeroing of bits in a data element |
US9817663B2 (en) * | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
US9405539B2 (en) * | 2013-07-31 | 2016-08-02 | Intel Corporation | Providing vector sub-byte decompression functionality |
CN104346285B (zh) | 2013-08-06 | 2018-05-11 | 华为技术有限公司 | 内存访问处理方法、装置及系统 |
US20150052330A1 (en) * | 2013-08-14 | 2015-02-19 | Qualcomm Incorporated | Vector arithmetic reduction |
US10296489B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit shuffle |
US10296334B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit gather |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
GB2540939B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | An apparatus and method for performing a splice operation |
GB2540944B (en) * | 2015-07-31 | 2018-02-21 | Advanced Risc Mach Ltd | Vector operand bitsize control |
WO2017074377A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Boosting local memory performance in processor graphics |
US10691453B2 (en) | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector load with instruction-specified byte count less than a vector size for big and little endian processing |
US10691456B2 (en) | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing |
US9990317B2 (en) * | 2015-11-24 | 2018-06-05 | Qualcomm Incorporated | Full-mask partial-bit-field (FM-PBF) technique for latency sensitive masked-write |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
US10338920B2 (en) * | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US20170185402A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Instructions and logic for bit field address and insertion |
US10019264B2 (en) * | 2016-02-24 | 2018-07-10 | Intel Corporation | System and method for contextual vectorization of instructions at runtime |
CN111651205B (zh) * | 2016-04-26 | 2023-11-17 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
US10275243B2 (en) | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10761849B2 (en) | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
US10268580B2 (en) * | 2016-09-30 | 2019-04-23 | Intel Corporation | Processors and methods for managing cache tiering with gather-scatter vector semantics |
US11023231B2 (en) * | 2016-10-01 | 2021-06-01 | Intel Corporation | Systems and methods for executing a fused multiply-add instruction for complex numbers |
US10657126B2 (en) * | 2016-12-23 | 2020-05-19 | Cadreon LLC | Meta-join and meta-group-by indexes for big data |
GB2560159B (en) * | 2017-02-23 | 2019-12-25 | Advanced Risc Mach Ltd | Widening arithmetic in a data processing apparatus |
US11360770B2 (en) | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
GB2564853B (en) * | 2017-07-20 | 2021-09-08 | Advanced Risc Mach Ltd | Vector interleaving in a data processing apparatus |
CN108958801B (zh) | 2017-10-30 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 神经网络处理器及使用处理器执行向量最大值指令的方法 |
US11360930B2 (en) | 2017-12-19 | 2022-06-14 | Samsung Electronics Co., Ltd. | Neural processing accelerator |
US11093247B2 (en) | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
US11669326B2 (en) | 2017-12-29 | 2023-06-06 | Intel Corporation | Systems, methods, and apparatuses for dot product operations |
US11816483B2 (en) | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US11809869B2 (en) | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
US11023235B2 (en) | 2017-12-29 | 2021-06-01 | Intel Corporation | Systems and methods to zero a tile register pair |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
US10664287B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
US11093579B2 (en) | 2018-09-05 | 2021-08-17 | Intel Corporation | FP16-S7E8 mixed precision for deep learning and other algorithms |
US12094456B2 (en) | 2018-09-13 | 2024-09-17 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and system |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US11579883B2 (en) | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US10866786B2 (en) | 2018-09-27 | 2020-12-15 | Intel Corporation | Systems and methods for performing instructions to transpose rectangular tiles |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US10963256B2 (en) | 2018-09-28 | 2021-03-30 | Intel Corporation | Systems and methods for performing instructions to transform matrices into row-interleaved format |
US10929143B2 (en) | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
US10929503B2 (en) | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
US11294671B2 (en) | 2018-12-26 | 2022-04-05 | Intel Corporation | Systems and methods for performing duplicate detection instructions on 2D data |
US11886875B2 (en) * | 2018-12-26 | 2024-01-30 | Intel Corporation | Systems and methods for performing nibble-sized operations on matrix elements |
US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US10942985B2 (en) | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US10922077B2 (en) | 2018-12-29 | 2021-02-16 | Intel Corporation | Apparatuses, methods, and systems for stencil configuration and computation instructions |
US11016731B2 (en) | 2019-03-29 | 2021-05-25 | Intel Corporation | Using Fuzzy-Jbit location of floating-point multiply-accumulate results |
US11269630B2 (en) | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US10990397B2 (en) | 2019-03-30 | 2021-04-27 | Intel Corporation | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator |
US11175891B2 (en) | 2019-03-30 | 2021-11-16 | Intel Corporation | Systems and methods to perform floating-point addition with selected rounding |
US11403097B2 (en) | 2019-06-26 | 2022-08-02 | Intel Corporation | Systems and methods to skip inconsequential matrix operations |
US11334647B2 (en) | 2019-06-29 | 2022-05-17 | Intel Corporation | Apparatuses, methods, and systems for enhanced matrix multiplier architecture |
US11714875B2 (en) | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
US11099848B1 (en) * | 2020-01-30 | 2021-08-24 | Arm Limited | Overlapped-immediate/register-field-specifying instruction |
US11972230B2 (en) | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
US12112167B2 (en) | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
KR20220018776A (ko) * | 2020-08-07 | 2022-02-15 | 삼성전자주식회사 | 반도체 메모리 장치 |
US11941395B2 (en) | 2020-09-26 | 2024-03-26 | Intel Corporation | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions |
US11379390B1 (en) | 2020-12-14 | 2022-07-05 | International Business Machines Corporation | In-line data packet transformations |
US20220199620A1 (en) * | 2020-12-18 | 2022-06-23 | Intel Corporation | Ribbon or wire transistor stack with selective dipole threshold voltage shifter |
US12001887B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator |
US12001385B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
US12051697B2 (en) * | 2021-04-19 | 2024-07-30 | Samsung Electronics Co., Ltd. | Integrated circuit devices including stacked gate structures with different dimensions |
US12107168B2 (en) * | 2021-08-25 | 2024-10-01 | International Business Machines Corporation | Independent gate length tunability for stacked transistors |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11154144A (ja) * | 1997-09-05 | 1999-06-08 | Motorola Inc | プロセッサをコプロセッサにインタフェースするための方法および装置 |
US6625724B1 (en) * | 2000-03-28 | 2003-09-23 | Intel Corporation | Method and apparatus to support an expanded register set |
JP2014510350A (ja) * | 2011-04-01 | 2014-04-24 | インテル コーポレイション | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
JP2014510352A (ja) * | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | レジスタをアライメントするためのシステム、装置、および方法 |
JP2014510351A (ja) * | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 |
JP2014513341A (ja) * | 2011-04-01 | 2014-05-29 | インテル コーポレイション | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 |
JP2014513340A (ja) * | 2011-04-01 | 2014-05-29 | インテル・コーポレーション | データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法 |
Family Cites Families (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3189094A (en) * | 1963-01-03 | 1965-06-15 | Halliburton Co | Firing apparatus for gun perforators |
JPS57209570A (en) | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JP2539357B2 (ja) * | 1985-03-15 | 1996-10-02 | 株式会社日立製作所 | デ−タ処理装置 |
US4873630A (en) | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
US4945479A (en) * | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
JPH0724013B2 (ja) | 1986-09-10 | 1995-03-15 | 株式会社日立製作所 | ベクトルプロセツサ |
JPH04156613A (ja) * | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
JP2956707B2 (ja) * | 1990-10-29 | 1999-10-04 | 富士通株式会社 | 情報処理装置 |
US5207132A (en) | 1991-10-16 | 1993-05-04 | Textron Inc. | Elliptical lobed drive system |
US5418973A (en) * | 1992-06-22 | 1995-05-23 | Digital Equipment Corporation | Digital computer system with cache controller coordinating both vector and scalar operations |
WO1994003860A1 (en) * | 1992-08-07 | 1994-02-17 | Thinking Machines Corporation | Massively parallel computer including auxiliary vector processor |
JP3248992B2 (ja) * | 1993-07-13 | 2002-01-21 | 富士通株式会社 | マルチプロセッサ |
US5446912A (en) | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
US6049863A (en) * | 1996-07-24 | 2000-04-11 | Advanced Micro Devices, Inc. | Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor |
US5903769A (en) | 1997-03-31 | 1999-05-11 | Sun Microsystems, Inc. | Conditional vector processing |
US6189094B1 (en) * | 1998-05-27 | 2001-02-13 | Arm Limited | Recirculating register file |
US6185670B1 (en) * | 1998-10-12 | 2001-02-06 | Intel Corporation | System for reducing number of opcodes required in a processor using an instruction format including operation class code and operation selector code fields |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
EP2275930B1 (en) * | 1999-01-28 | 2017-06-14 | Advanced Silicon Technologies, LLC | Executing programs for a first computer architecture on a computer of a second architecture |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6788303B2 (en) * | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
US6986025B2 (en) * | 2001-06-11 | 2006-01-10 | Broadcom Corporation | Conditional execution per lane |
US7529912B2 (en) * | 2002-02-12 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for instruction-level specification of floating point format |
US7941651B1 (en) * | 2002-06-27 | 2011-05-10 | Intel Corporation | Method and apparatus for combining micro-operations to process immediate data |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US7917734B2 (en) | 2003-06-30 | 2011-03-29 | Intel Corporation | Determining length of instruction with multiple byte escape code based on information from other than opcode byte |
US7734748B1 (en) * | 2003-10-03 | 2010-06-08 | Nortel Networks Limited | Method and apparatus for intelligent management of a network element |
GB2409059B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7302627B1 (en) * | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US7052968B1 (en) * | 2004-04-07 | 2006-05-30 | Advanced Micro Devices, Inc. | Method and system for aligning IC die to package substrate |
US7493474B1 (en) * | 2004-11-10 | 2009-02-17 | Altera Corporation | Methods and apparatus for transforming, loading, and executing super-set instructions |
US7430207B2 (en) | 2005-02-07 | 2008-09-30 | Reti Corporation | Preemptive weighted round robin scheduler |
WO2007049150A2 (en) | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
US7457938B2 (en) * | 2005-09-30 | 2008-11-25 | Intel Corporation | Staggered execution stack for vector processing |
US7627735B2 (en) | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
US20070157030A1 (en) * | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
US7725682B2 (en) * | 2006-01-10 | 2010-05-25 | International Business Machines Corporation | Method and apparatus for sharing storage and execution resources between architectural units in a microprocessor using a polymorphic function unit |
US9710269B2 (en) * | 2006-01-20 | 2017-07-18 | Qualcomm Incorporated | Early conditional selection of an operand |
US8010953B2 (en) * | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
US7779391B2 (en) * | 2006-09-05 | 2010-08-17 | International Business Machines Corporation | Method of employing instructions to convert UTF characters with an enhanced extended translation facility |
KR100813533B1 (ko) * | 2006-09-13 | 2008-03-17 | 주식회사 하이닉스반도체 | 반도체 메모리 장치 및 그 데이터 마스크 방법 |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US8572354B2 (en) * | 2006-09-28 | 2013-10-29 | 3Dlabs Inc., Ltd. | Programmable logic unit and method for translating and processing instructions using interpretation registers |
US20080100628A1 (en) | 2006-10-31 | 2008-05-01 | International Business Machines Corporation | Single Precision Vector Permute Immediate with "Word" Vector Write Mask |
US7996710B2 (en) * | 2007-04-25 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Defect management for a semiconductor memory system |
US7836278B2 (en) * | 2007-07-25 | 2010-11-16 | Advanced Micro Devices, Inc. | Three operand instruction extension for X86 architecture |
TWI351179B (en) | 2007-08-20 | 2011-10-21 | Lite On Technology Corp | Data processing method and computer system medium thereof |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US20100241834A1 (en) | 2007-11-05 | 2010-09-23 | Sandbridge Technologies, Inc. | Method of encoding using instruction field overloading |
US8667250B2 (en) | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
US20090172348A1 (en) | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US8281109B2 (en) | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8108614B2 (en) | 2007-12-31 | 2012-01-31 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
US8447962B2 (en) | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US8681173B2 (en) | 2007-12-31 | 2014-03-25 | Intel Corporation | Device, system, and method for improving processing efficiency by collectively applying operations |
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 |
GB2456775B (en) | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US8046400B2 (en) * | 2008-04-10 | 2011-10-25 | Via Technologies, Inc. | Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor |
US20100024183A1 (en) * | 2008-06-30 | 2010-02-04 | Cuprys Lawrence M | Removable tool for a display assembly |
JP5357475B2 (ja) * | 2008-09-09 | 2013-12-04 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US8326904B2 (en) * | 2009-01-27 | 2012-12-04 | International Business Machines Corporation | Trigonometric summation vector execution unit |
US8438367B2 (en) * | 2009-05-19 | 2013-05-07 | Via Technologies, Inc. | Instruction extraction through prefix accumulation |
US8533438B2 (en) * | 2009-08-12 | 2013-09-10 | Via Technologies, Inc. | Store-to-load forwarding based on load/store address computation source information comparisons |
US8996845B2 (en) | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US8627042B2 (en) | 2009-12-30 | 2014-01-07 | International Business Machines Corporation | Data parallel function call for determining if called routine is data parallel |
US8667042B2 (en) | 2010-09-24 | 2014-03-04 | Intel Corporation | Functional unit for vector integer multiply add instruction |
US9141386B2 (en) | 2010-09-24 | 2015-09-22 | Intel Corporation | Vector logical reduction operation implemented using swizzling on a semiconductor chip |
US9092213B2 (en) | 2010-09-24 | 2015-07-28 | Intel Corporation | Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation |
US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
US20120185670A1 (en) | 2011-01-14 | 2012-07-19 | Toll Bret L | Scalar integer instructions capable of execution with three registers |
PL3422178T3 (pl) * | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
CN104011662B (zh) | 2011-12-23 | 2017-05-10 | 英特尔公司 | 用于提供向量混合和置换功能的指令和逻辑 |
WO2013101003A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Techniques and configurations for stacking transistors of an integrated circuit device |
DE112011106049B4 (de) * | 2011-12-30 | 2018-02-15 | Intel Corporation | Halbleiterbauelement und verfahren zur herstellung desselben |
-
2011
- 2011-09-30 PL PL18177235.1T patent/PL3422178T3/pl unknown
- 2011-09-30 CN CN201710936456.2A patent/CN107608716B/zh active Active
- 2011-09-30 EP EP20199439.9A patent/EP3805921B1/en active Active
- 2011-09-30 ES ES18177235T patent/ES2943248T3/es active Active
- 2011-09-30 GB GB1317902.3A patent/GB2502936A/en not_active Withdrawn
- 2011-09-30 CN CN201180070598.6A patent/CN103502935B/zh active Active
- 2011-09-30 EP EP23191570.3A patent/EP4250101A3/en active Pending
- 2011-09-30 EP EP18177235.1A patent/EP3422178B1/en active Active
- 2011-09-30 KR KR1020137029045A patent/KR101595637B1/ko active IP Right Grant
- 2011-09-30 CN CN201610804703.9A patent/CN106406817B/zh active Active
- 2011-09-30 US US13/976,707 patent/US20130305020A1/en not_active Abandoned
- 2011-09-30 CN CN201510464707.2A patent/CN104951277B/zh active Active
- 2011-09-30 CN CN202011424482.5A patent/CN112463219A/zh active Pending
- 2011-09-30 JP JP2014502538A patent/JP5739055B2/ja active Active
- 2011-09-30 WO PCT/US2011/054303 patent/WO2012134532A1/en active Application Filing
- 2011-09-30 EP EP11862801.5A patent/EP2695054B1/en active Active
- 2011-12-07 TW TW103135824A patent/TWI506546B/zh active
- 2011-12-07 TW TW100145056A patent/TWI467477B/zh active
-
2014
- 2014-01-31 US US14/170,397 patent/US9513917B2/en active Active
-
2015
- 2015-04-22 JP JP2015087178A patent/JP6058732B2/ja active Active
-
2016
- 2016-12-07 JP JP2016237947A patent/JP6339164B2/ja active Active
-
2019
- 2019-02-28 US US16/289,506 patent/US10795680B2/en active Active
- 2019-03-01 US US16/290,544 patent/US11573798B2/en active Active
-
2020
- 2020-01-30 DE DE102020102331.6A patent/DE102020102331A1/de active Pending
- 2020-08-27 US US17/004,711 patent/US11210096B2/en active Active
-
2021
- 2021-11-11 US US17/524,624 patent/US11740904B2/en active Active
-
2023
- 2023-08-28 US US18/239,106 patent/US12086594B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11154144A (ja) * | 1997-09-05 | 1999-06-08 | Motorola Inc | プロセッサをコプロセッサにインタフェースするための方法および装置 |
US6625724B1 (en) * | 2000-03-28 | 2003-09-23 | Intel Corporation | Method and apparatus to support an expanded register set |
JP2014510350A (ja) * | 2011-04-01 | 2014-04-24 | インテル コーポレイション | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
JP2014510352A (ja) * | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | レジスタをアライメントするためのシステム、装置、および方法 |
JP2014510351A (ja) * | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 |
JP2014513341A (ja) * | 2011-04-01 | 2014-05-29 | インテル コーポレイション | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 |
JP2014513340A (ja) * | 2011-04-01 | 2014-05-29 | インテル・コーポレーション | データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法 |
JP2016029598A (ja) * | 2011-04-01 | 2016-03-03 | インテル コーポレイション | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 |
Non-Patent Citations (2)
Title |
---|
JPN6016010431; インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻 命令セット・リファレンス 初版, 1997, Pages:2-1〜2-6, インテル株式会社 * |
JPN6016010432; 吉田幸作: 'SH7045Fの命令セットとアセンブラ・プログラミング (SH7045の命令の特徴)と(SH7045の命令セット)' トランジスタ技術SPECIAL No:81, 20030101, Pages:43〜53, CQ出版株式会社 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019509574A (ja) * | 2016-03-23 | 2019-04-04 | エイアールエム リミテッド | プログラム・ループ制御 |
JP7105699B2 (ja) | 2016-03-23 | 2022-07-25 | アーム・リミテッド | プログラム・ループ制御 |
JP2020501274A (ja) * | 2016-12-13 | 2020-01-16 | エイアールエム リミテッド | 要素レプリケート命令 |
JP7053620B2 (ja) | 2016-12-13 | 2022-04-12 | アーム・リミテッド | 要素レプリケート命令 |
US11947962B2 (en) | 2016-12-13 | 2024-04-02 | Arm Limited | Replicate partition instruction |
US11977884B2 (en) | 2016-12-13 | 2024-05-07 | Arm Limited | Replicate elements instruction |
JP2020508514A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置におけるベクトルによる要素演算 |
US11327752B2 (en) | 2017-02-23 | 2022-05-10 | Arm Limited | Element by vector operations in a data processing apparatus |
JP7148526B2 (ja) | 2017-02-23 | 2022-10-05 | アーム・リミテッド | データ処理装置におけるベクトルによる要素演算 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6339164B2 (ja) | ベクトルフレンドリ命令フォーマット及びその実行 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
CN107273095B (zh) | 用于对齐寄存器的系统、装置和方法 | |
CN113076139A (zh) | 用于执行指令以转换成16位浮点格式的系统和方法 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP6635438B2 (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
CN113791820B (zh) | 位矩阵乘法 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
CN117707622A (zh) | 用于具有可变精度输入操作数的融合乘-加操作的指令 | |
KR101729424B1 (ko) | 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트 | |
JP2018500658A (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
CN108292228B (zh) | 用于基于通道的步进收集的系统、设备和方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
CN111831334B (zh) | 经改进的插入指令的装置和方法 | |
JP2017534982A (ja) | 4d座標から4dのz曲線インデックスを計算するための機械レベル命令 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
KR20170098806A (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160622 |
|
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: 20161108 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161207 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6058732 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |