JP2016535360A - 非アトミック分割経路融合積和 - Google Patents
非アトミック分割経路融合積和 Download PDFInfo
- Publication number
- JP2016535360A JP2016535360A JP2016538834A JP2016538834A JP2016535360A JP 2016535360 A JP2016535360 A JP 2016535360A JP 2016538834 A JP2016538834 A JP 2016538834A JP 2016538834 A JP2016538834 A JP 2016538834A JP 2016535360 A JP2016535360 A JP 2016535360A
- Authority
- JP
- Japan
- Prior art keywords
- product
- result
- sum
- accumulation
- microprocessor
- 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
- 230000004927 fusion Effects 0.000 title claims abstract description 47
- 238000004364 calculation method Methods 0.000 claims abstract description 228
- 239000013598 vector Substances 0.000 claims abstract description 200
- 238000009825 accumulation Methods 0.000 claims description 238
- 238000000034 method Methods 0.000 claims description 163
- 238000003860 storage Methods 0.000 claims description 92
- 230000015654 memory Effects 0.000 claims description 60
- 125000004122 cyclic group Chemical group 0.000 claims description 29
- 238000012546 transfer Methods 0.000 claims description 29
- 238000007667 floating Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 24
- 239000002131 composite material Substances 0.000 claims description 18
- 150000001875 compounds Chemical class 0.000 claims description 15
- 238000012937 correction Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 4
- 239000000543 intermediate Substances 0.000 description 192
- 239000000047 product Substances 0.000 description 173
- 238000010606 normalization Methods 0.000 description 33
- 238000013461 design Methods 0.000 description 30
- 238000007792 addition Methods 0.000 description 26
- 238000002347 injection Methods 0.000 description 19
- 239000007924 injection Substances 0.000 description 19
- 230000000295 complement effect Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 238000013459 approach Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 239000003607 modifier Substances 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012432 intermediate storage Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003071 parasitic effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013215 result calculation Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- 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/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/3017—Runtime instruction translation, e.g. macros
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Hardware Redundancy (AREA)
Abstract
Description
本出願は、2014年7月2日に申請され「Non−Atomic Split−Path Fused Multiply−Accumulate with Rounding cache」と題された米国仮特許出願第62/020,246号及び2015年6月10日に申請され「Non−Atomic Temporally−Split Fused Multiply−Accumulate Apparatus and Operation Using a Calculation Control Indicator Cache and Providing a Split−Path Heuristic for Performing a Fused FMA Operation and Generating a Standard Format Intermediate Result」と題された米国仮特許出願第62/173,808号の利益を主張するものであり、上記出願の双方が本明細書において参照により援用される。
と、加算/減算累算演算子インジケータOSとをさらに受け取る。別の実装では、アキュムレータ・アライメント及び注入ロジック220は、加算/減算累算演算子インジケータOSが修正された乗算器45によって受け取られたマイクロ命令が乗算減算マイクロ命令であることを指示する場合に、CMを選択的に加法的に反転する。
Hokenek, Montoye, Cook,“Second−Generation RISC Floating Point with Multiply− Add Fused”,IEEE Journal Of Solid−State Circuits, Vol 25, No 5, Oct 1990.
Lang, Bruguera,“Floating−Point Multiply−Add−Fused with Reduced Latency”,IEEE Trans On Computers, Vol 53, No 8, Aug 2004.
Bruguera, Lang,“Floating−Point Fused Multiply−Add: Reduced Latency for Floating−Point Addition”,Pub TBD − Exact Title Important.
Vangal, Hoskote, Borkar, Alvanpour,“A 6.2−GFlops Floating−Point Multiply−Accumulator With Conditional Normalization”,IEEE Jour. Of Solid−State Circuits, Vol 41, No 10, Oct 2006.
Galal, Horowitz,“Energy−Efficient Floating−Point Unit Design”,IEEE Trans On Computers Vol 60, No 7, July 2011.
Srinivasan, Bhudiya, Ramanarayanan, Babu, Jacob, Mathew, Krishnamurthy, Erraguntla,“Split−path Fused Floating Point Multiply Accumulate (FPMAC)”,2013 Symp on Computer Arithmetic (paper).
Srinivasan, Bhudiya, Ramanarayanan, Babu, Jacob, Mathew, Krishnamurthy, Erraguntla,“Split−path Fused Floating Point Multiply Accumulate (FPMAC)”,2014 Symp on Computer Arithmetic, Austin TX, (slides from www.arithsymposium.org).
Srinivasan, Bhudiya, Ramanarayanan, Babu, Jacob, Mathew, Krishnamurthy, Erraguntla, United States Patent 8,577,948 (B2), Nov 5, 2013.
Quach, Flynn,“Suggestions For Implementing A Fast IEEE Multiply−Add−Fused Instruction”,(Stanford) Technical Report CSL−TR−91−483 July, 1991.
Seidel,“Multiple Path IEEE Floating−Point Fused Multiply−Add”,IEEE 2004.
Huang, Shen, Dai, Wang,“A New Architecture For Multiple−Precision Floating− Point Multiply−Add Fused Unit Design”,Pub TBD, Nat’l University of Defense Tech, China (after) 2006.
Paidimarri, Cevrero, Brisk, Ienne,“FPGA Implementation of a Single−Precision Floating−Point Multiply−Accumulator with Single−Cycle Accumulation”,Pub TBD.
Henry, Elliott, Parks,“X87 Fused Multiply−Add Instruction”,United States Patent 7,917,568 (B2), Mar 29, 2011.
Walaa Abd El Aziz Ibrahim,“Binary Floating Point Fused Multiply Add Unit”,Thesis Submitted to Cairo University, Giza, Egypt, 2012 (retr from Google).
Quinell,“Floating−Point Fused Multiply−Add Architectures”,Dissertation Presented to Univ Texas at Austin, May 2007, (retr from Google).
Author Unknown,“AMD Athlon Processor Floating Point Capability”,AMD White Paper Aug 28, 2000.
Cornea, Harrison, Tang,“Intel Itanium Floating−Point Architecture”,Pub TBD.
Gerwig, Wetter, Schwarz, Haess, Krygowski, Fleischer, Kroener,“The IBM eServer z990 floating−point unit”,IBM Jour Res & Dev Vol 48 No 3/4 May, July 2004.
Wait,“IBM PowerPC 440 FPU with complex−arithmetic extensions”,IBM Jour Res & Dev Vol 49 No 2/3 March, May 2005.
Chatterjee, Bachega, et al,“Design and exploitation of a high−performance SIMD floating−point unit for Blue Gene/L”,IBM Jour Res & Dev, Vol 49 No 2/3 March, May 2005.
Claims (117)
- マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行するための方法であって、A、B、及びCは入力オペランドであり、CがAとBとの積に累算される前に丸めは生じず、当該方法は、
前記融合積和演算を1つ以上の命令実行ユニットによって実行されるべき第1及び第2の積和サブ演算に分割するステップと、
前記第1の積和サブ演算において、AとBとの部分積をCと累算するか、又は代わってAとBとの部分積のみを累算するかと、そこから丸められていない非冗長和を生成するかとを選択するステップと、
前記第2の積和サブ演算において、前記第1の積和サブ演算がCを累算することなく前記丸められていない非冗長和を作り出した場合にCを前記丸められていない非冗長和と累算するステップと、
前記第2の積和サブ演算において、前記融合積和演算の最終的な丸められた結果を生成するステップと、
を含む方法。 - 前記融合積和演算は、少なくとも2つの命令実行ユニットによって実行され、当該方法は、
前記第1の積和サブ演算と第2の積和サブ演算との間に、前記丸められていない非冗長和をメモリに記憶し、及び/又は前記丸められていない非冗長和を第1の命令実行ユニットから第2の命令実行ユニットに転送するステップ
をさらに含む請求項1に記載の方法。 - 複数の計算制御インジケータをメモリに記憶するステップ、及び/又は複数の計算制御インジケータを第1の命令実行ユニットから第2の命令実行ユニットに転送するステップをさらに含み、前記計算制御インジケータは、前記第2の積和サブ演算におけるその後の計算がどのように進行すべきかを指示する、請求項1又は2に記載の方法。
- 前記メモリは、前記1つ以上の命令実行ユニットの外部にあり、前記丸められていない非冗長和を記憶する結果ストアと、前記第2の積和サブ演算におけるその後の計算がどのように進行すべきかを指示する複数の計算制御インジケータを記憶する、前記結果ストアと区別できる計算制御インジケータ・ストアとを備える、請求項2又は3に記載の方法。
- 前記計算制御インジケータは、Cとの累算が前記第1の積和サブ演算において生じたかの指示を含む、請求項3又は4に記載の方法。
- 前記計算制御インジケータは、前記丸められていない非冗長和から算術的に正しい丸められた結果を生成するためのインジケータを含む、請求項3乃至5のうちいずれか一項に記載の方法。
- 形式±A*B±Cの融合積和演算を実行するように動作可能なマイクロプロセッサであって、A、B、及びCは入力オペランドであり、CがAとBとの積に累算される前に丸めは生じず、当該マイクロプロセッサは、
融合積和演算の第1及び第2の積和サブ演算を実行するように構成された1つ以上の命令実行ユニット
を備え、
前記第1の積和サブ演算において、AとBとの部分積のCとの累算又はAとBとの部分積のみの累算の間で選択が行われ、その選択に従って、丸められていない非冗長和が生成され、
前記第2の積和サブ演算において、Cは、条件付きで、前記第1の積和サブ演算がCを累算することなく前記丸められていない非冗長和を作り出した場合に、前記丸められていない非冗長和と累算され、
前記第2の積和サブ演算において、前記融合積和演算の最終的な丸められた結果が、Cと条件付きで累算された前記丸められていない非冗長和から生成される、
マイクロプロセッサ。 - 前記第1の積和サブ演算によって生成された前記丸められていない非冗長和を記憶するための、前記1つ以上の命令実行ユニットの外部のメモリ、をさらに備え、前記メモリは、前記第2の積和サブ演算が実行中になるまで無期限に前記丸められていない非冗長和を記憶するように構成され、これにより、前記1つ以上の命令実行ユニットが前記第1の積和サブ演算と前記第2の積和サブ演算との間に前記融合積和演算に無関係の他の演算を実行することを可能にする、請求項7に記載のマイクロプロセッサ。
- 前記メモリは、前記丸められていない非冗長和を記憶する結果ストアと、前記第2の積和サブ演算におけるその後の計算がどのように進行すべきかを指示する複数の計算制御インジケータを記憶する、前記結果ストアと区別できる計算制御インジケータ・ストアとを備える、請求項8に記載のマイクロプロセッサ。
- 前記1つ以上の命令実行ユニットは、前記第1の積和サブ演算を実行するように構成された乗算器と、前記第2の積和サブ演算を実行するように構成された加算器とを備える、請求項8又は9に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行するための方法であって、A、B、及びCは入力オペランドであり、当該方法は、
少なくともAとBとの積を計算し、丸められていない非冗長中間結果ベクトルを生成するように前記マイクロプロセッサの第1の実行ユニットを選択するステップと、
前記丸められていない非冗長中間結果ベクトルを受け取り、±A*B±Cの最終的な丸められた結果を生成するように前記マイクロプロセッサの第2の実行ユニットを選択するステップと、
±A*B±Cの前記最終的な丸められた結果を保存するステップと、
を含む方法。 - 前記丸められていない非冗長中間結果ベクトルを前記第1の実行ユニットから前記第2の実行ユニットに転送するステップ、及び/又は前記計算の丸められていない結果を複数の実行ユニットの間で共有される共有メモリに保存するステップ、をさらに含む請求項11に記載の方法。
- 前記第1の実行ユニットが前記第2の実行ユニットにおけるその後の計算がどのように進行すべきかを指示する1つ以上の計算制御インジケータを生成するステップであって、前記第1の実行ユニットは、少なくともAとBとの積の前記計算及び前記丸められていない非冗長中間結果ベクトルの前記生成に付随的に前記1つ以上の計算制御インジケータを生成する、ステップと、
前記第2の実行ユニットが前記1つ以上の計算制御インジケータを受け取り、前記丸められていない結果及び前記計算制御インジケータを使用して前記最終的な丸められた結果を生成するステップと、
をさらに含む請求項11又は12に記載の方法。 - マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行するための方法であって、A、B、及びCは入力オペランドであり、当該方法は、
少なくともAとBとの積を計算し、中間結果ベクトルを生成するように第1の実行ユニットを選択するステップと、
前記融合積和演算のその後の計算がどのように進行すべきかを指示するように計算制御インジケータを生成するステップと、
前記中間結果ベクトル及び計算制御インジケータを受け取るように第2の実行ユニットを選択し、前記計算制御インジケータに従って±A*B±Cの最終的な丸められた結果を生成するステップと、
を含む方法。 - 前記計算制御インジケータは、前記第1の実行ユニットがCをAとBとの積に累算したかの指示を含む、請求項14に記載の方法。
- 中間結果ベクトルを生成し、前記中間結果ベクトルから最終結果を生成するためのその後の計算がどのように進行すべきかを指示する複数の計算制御インジケータを付随的に生成するように動作可能な命令実行ユニットと、
前記中間結果ベクトル及び前記複数の計算制御インジケータを記憶するように構成された、前記命令実行ユニットの外部の記憶装置と、
を備えるマイクロプロセッサ。 - 前記記憶装置は、汎用記憶装置と計算制御インジケータ記憶装置とを備え、当該マイクロプロセッサは、
前記命令実行ユニットから結果を前記汎用記憶装置に伝達するための結果バスと、
計算制御インジケータを前記計算制御インジケータ記憶装置に記憶し、及び前記計算制御インジケータ記憶装置からロードするためのデータ経路と、
をさらに備え、
前記結果バスは、前記データ経路とは別個であり、前記汎用記憶装置は、命令結果を記憶するために当該マイクロプロセッサの命令セットの多くの命令によってアクセス可能であり、前記計算制御インジケータ記憶装置は、計算制御インジケータを記憶し又はロードするように動作可能な命令のみにアクセス可能である、
請求項16に記載のマイクロプロセッサ。 - 前記命令実行ユニットは、3つ以上のオペランド入力を有して構成された算術処理ユニットであり、前記中間結果ベクトルは、複合算術演算の第1の算術演算の、前記オペランド入力のうちの少なくとも2つへの適用から生成される、請求項16又は17に記載のマイクロプロセッサ。
- 前記複数の計算制御インジケータは、複合算術演算の第2の算術演算子を使用して、前記複合算術演算の第2の算術演算がどのように進行すべきかを指示する、請求項18に記載のマイクロプロセッサ。
- 前記複合算術演算は、順次算術演算である、請求項18に記載のマイクロプロセッサ。
- 前記複合算術演算は、積和演算であり、前記第1の算術演算は、少なくとも、被乗数オペランドと乗数オペランドとの乗算である、請求項18に記載のマイクロプロセッサ。
- 前記計算制御インジケータは、前記複合算術演算のどれくらいが前記中間結果ベクトルを生成する際に完了しているかに関する情報を提供する、請求項18乃至21のうちいずれか一項に記載のマイクロプロセッサ。
- 前記計算制御インジケータは、前記第1の算術演算がアンダーフロー状態又はオーバーフロー状態をもたらしたかに関する情報を提供する、請求項18乃至22のうちいずれか一項に記載のマイクロプロセッサ。
- 前記中間結果ベクトルは、丸められていない値であり、前記計算制御インジケータは、前記中間結果ベクトルから算術的に正しい丸められた結果を生成するための情報を提供する、請求項16乃至23のうちいずれか一項に記載のマイクロプロセッサ。
- 前記計算制御インジケータは、前記最終結果が0値である場合に、どの符号を0結果に割り当てるかの指示を提供する、請求項16に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて算術演算を実行する方法であって、
命令実行ユニットを使用して、中間結果ベクトルと、該中間結果ベクトルから最終結果を生成するためのその後の計算がどのように進行すべきかを指示する複数の計算制御インジケータとを生成するステップと、
前記中間結果ベクトル及び前記複数の計算制御インジケータを前記命令実行ユニットの外部のメモリに記憶するステップと、
を含む方法。 - 前記中間結果ベクトル及び前記複数の計算制御インジケータをメモリからロードするステップと、
最終結果を生成するために前記計算制御インジケータに従って前記中間結果ベクトル上で計算を実行するステップと、
をさらに含む請求項26に記載の方法。 - 前記算術演算は、オペランドが被乗数と乗数とアキュムレータとを含む融合浮動小数点積和演算であり、前記中間結果ベクトルは、前記被乗数と前記乗数との少なくとも部分積の和である、請求項26に記載の方法。
- 前記算術演算は、2つ以上の算術演算子を伴う複合算術演算である、請求項26に記載の方法。
- 複合算術演算を、第1の算術オペランドを使用する第1の算術演算と、第2の算術オペランドを使用する第2の算術演算とに分割するステップと、
前記中間結果ベクトルを、前記計算制御インジケータを使用しない限り、有効桁においてターゲット・データ・サイズに後に低減される前記複合算術演算の無限精度計算によって生成されるであろう結果から区別不能な前記複合算術演算の結果aの表現を矛盾なく生成するために必要であるよりも少ないビットを提供する記憶形式で、記憶するステップと、
をさらに含む請求項26に記載の方法。 - 命令パイプラインと、
共有メモリと、
前記命令パイプラインの中の第1及び第2の算術処理ユニットであって、各々がオペランドを前記共有メモリから読み出し、結果を前記共有メモリに書き込む、第1及び第2の算術処理ユニットと、
を備え、
前記第1の算術処理ユニットは、数学演算の第1の部分を実行して、前記数学演算の完全な最終結果ではない中間結果ベクトルを作り出し、
前記第1の算術処理ユニットは、前記中間結果ベクトルから最終結果を生成するためのその後の計算がどのように進行すべきかを指示する複数の非アーキテクチャ計算制御インジケータを生成し、
前記第2の算術処理ユニットは、前記計算制御インジケータに従って前記数学演算の第2の部分を実行して、前記数学演算の完全な最終結果を作り出す、
マイクロプロセッサ。 - 前記中間結果ベクトルは、丸められていない値であり、前記完全な最終結果は、丸められた値である、請求項31に記載のマイクロプロセッサ。
- 前記数学演算は、形式±A*B±Cの融合浮動小数点積和(FMA)演算であり、A、B、及びCは浮動小数点入力オペランドであり、CがAとBとの積に累算される前に丸めは生じない、請求項31に記載のマイクロプロセッサ。
- 前記数学演算は、積和演算であり、当該マイクロプロセッサは、アトミックな統合積和命令を少なくとも第1及び第2のマイクロ命令に変換するトランスレータ又はROMをさらに備え、前記第1のマイクロ命令の実行は、前記中間結果ベクトルを生成し、前記第2のマイクロ命令の実行は、前記中間結果ベクトルを使用して前記完全な最終結果を生成する、請求項31に記載のマイクロプロセッサ。
- 前記計算制御インジケータは、前記第2の算術処理ユニットが前記中間結果ベクトルに前記数学演算の前記第2の部分を実行した後に正しく丸められた完全な最終結果を作り出すことを可能にするのに十分な情報を提供する丸めインジケータを含む、請求項31に記載のマイクロプロセッサ。
- 前記第1の算術処理ユニットは、前記中間結果ベクトルをレジスタに、前記計算制御インジケータを計算制御インジケータ・キャッシュに記憶し、前記第2の算術処理ユニットは、前記レジスタから前記中間結果ベクトルを、前記計算制御インジケータ・キャッシュから前記計算制御インジケータをロードする、請求項31に記載のマイクロプロセッサ。
- 当該マイクロプロセッサは、前記中間結果ベクトルを前記第2の算術処理ユニットに転送する、請求項31に記載のマイクロプロセッサ。
- 前記数学演算の前記第1の部分は、2つの入力オペランドの少なくとも乗算を含む、請求項31に記載のマイクロプロセッサ。
- 前記数学演算の前記第1の部分又は第2の部分のいずれかが、第3のオペランドとの累算を、前記の第1の2つの入力オペランドと前記第3のオペランドとの値が1つ以上の条件のセットの少なくとも1つを満足するかに依存してさらに含む、請求項38に記載のマイクロプロセッサ。
- 前記数学演算の前記第2の部分は、少なくとも丸めサブ演算を含む、請求項31に記載のマイクロプロセッサ。
- 前記数学演算の前記第1又は第2の部分のいずれかが、累算サブ演算をさらに含む、請求項31に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行する方法であって、A、B、及びCは入力オペランドであり、当該方法は、
オペランドA及びBの部分積を計算するステップと、
(a)オペランドA及びBの部分積か、又は(b)オペランドA及びBの部分積とオペランドCかの、いずれかの第1の累算から初期結果を生成するステップと、
丸められていない中間結果ベクトルに組み込むように前記初期結果の複数の最上位ビットを選択するステップと、
複数の最下位ビットを1つ以上の丸めインジケータに低減するステップと、
前記第1の累算がオペランドCを含まなかった場合、オペランドCと前記丸められていない中間結果ベクトルとの第2の累算を実行するステップと、
前記融合積和演算の最終的な丸められた結果を前記丸めインジケータを使用して生成するステップと、
を含む方法。 - 前記1つ以上の丸めインジケータを丸めキャッシュに記憶するステップ、をさらに含む請求項42に記載の方法。
- 前記1つ以上の丸めインジケータは、ガード(G)、ラウンド(R)、及び/又はスティッキー(S)ビットを含む、請求項43に記載の方法。
- 前記丸められていない中間結果ベクトルを、複数の命令実行ユニットによってアクセス可能な共有記憶装置に記憶するステップ、をさらに含む請求項42に記載の方法。
- 前記第1の累算がオペランドCを含み、前記丸められていない中間結果ベクトルが正であった場合に、循環桁上げ補正が保留中であることを指示する循環桁上げ値(E)を生成するステップ、をさらに含む請求項42に記載の方法。
- 前記丸められていない中間結果ベクトルは、中間仮数結果と中間結果指数値(IRExp)とを含み、IRExpは、Cの指数とオペランドA及びBの指数値の和の関数とのうち大きい方の正規化された表現である、請求項42に記載の方法。
- 前記丸められていない中間結果ベクトルは、前記第1の累算がオペランドCを含んでいたかと前記融合積和演算が実効減算であるかと保留中である循環桁上げがないかとに応じて生成される中間符号インジケータをさらに含む、請求項47に記載の方法。
- IRExpが表現可能な又は望ましい指数値の範囲を上回るか又は下回るかを指示するように、中間アンダーフロー(U)指示及び中間オーバーフロー(O)指示を生成するステップ、をさらに含む請求項47に記載の方法。
- 中間符号インジケータを、前記第1の累算がオペランドCを含んでいたかと前記融合積和演算が実効減算であるかと保留中である循環桁上げがないかとに応じて生成するステップ、をさらに含む請求項42に記載の方法。
- オペランドCとの第1の累算を、たとえあったとしても実行する前に、乗算器ユニット部分積総和ツリー内のオペランドCの選択的に補数をとられた仮数をアライメントするステップ、をさらに含む請求項42に記載の方法。
- 前記丸められていない中間結果ベクトルは、前記融合積和演算のターゲット結果の仮数のビット数に等しいビット数を有する仮数を含む、浮動小数点数についての標準IEEEデータ形式で表される、請求項42に記載の方法。
- 前記最終的な丸められた結果を生成することにおける使用のために、いかなる第2の累算も実行する前に、1つ以上の追加の丸めインジケータを生成するステップ、をさらに含む請求項42に記載の方法。
- 前記1つ以上の追加の丸めインジケータのうちの1つが循環桁上げ値(E)であって、循環桁上げ補正が保留中であることと前記循環桁上げ値(E)を使用していることとを指示する、請求項53に記載の方法。
- 前記1つ以上の追加の丸めインジケータのうちの1つ(Z)は、Cとの累算が前記第1の累算において実行されたかを指示する、請求項53に記載の方法。
- 前記1つ以上の追加の丸めインジケータのうちの2つは、オーバーフロー(O)及びアンダーフロー(U)インジケータである、請求項53に記載の方法。
- マイクロプロセッサにおいて、複数の算術処理ユニットを使用して複数のオペランドに複合算術演算を実行する方法であって、
前記複合算術演算の少なくとも第1の算術演算を実行することから丸められていない結果を生成する第1の算術ユニットを使用するステップと、
前記第1の算術ユニットを使用して、前記丸められていない結果から記憶形式中間結果を出力するステップであって、
前記記憶形式中間結果は、前記丸められていない結果の複数の最上位ビット(MSB)を含み、前記丸められていない結果の複数の最下位ビット(LSB)を除外し、
前記記憶形式中間結果は、第2の算術ユニットが前記記憶形式中間結果から最終的な丸められた結果を生成することを可能にするように複数の丸めインジケータをさらに含み、
前記第2の算術ユニットを使用して、前記複合算術演算を完了し、前記記憶形式中間結果から前記最終的な丸められた結果を生成するステップと、
を含む方法。 - マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行するための方法であって、A、B、及びCは入力オペランドであり、当該方法は、
A、B、及び/又はCの値が、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たすかを検出するステップと、
満たす場合、AとBとの部分積とCとの連帯累算を実行し、前記連帯累算の結果を丸めるステップと、
満たさない場合、AとBとの部分積の一次累算を実行し、前記一次累算の丸められていない非冗長結果を生成し、前記丸められていない非冗長結果の1つ以上の最下位ビットを除外して非冗長中間結果ベクトルを生成し、前記丸められていない非冗長中間結果ベクトルへのCの二次累算を実行し、前記二次累算の結果を丸めるステップと、
を含む方法。 - A、B、及び/又はCが、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たす場合に、前記の除外された1つ以上の最下位ビットを、前記二次累算の結果の丸めにおいて使用される1つ以上の丸めインジケータのセットに低減するステップ、を含む請求項58に記載の方法。
- A、B、及び/又はCが、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たす場合に、A及びBの仮数の部分積とCの仮数とをアライメントするためにExpDeltaを使用するステップ、をさらに含む請求項58に記載の方法。
- 前記丸められていない非冗長中間結果ベクトルは、前記融合積和演算についてのターゲット・データ形式の仮数幅に等しい仮数幅を有する、請求項58に記載の方法。
- 形式±A*B±Cの融合積和演算を実行するように動作可能な1つ以上の命令実行ユニットであって、A、B、及びCは入力オペランドである、命令実行ユニットと、
A、B、及び/又はCの値が、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たすかを指示するように構成されたオペランド分析ロジックと、
十分条件が満たされた場合、前記1つ以上の命令実行ユニットに、AとBとの部分積とCとの連帯累算を実行させ、前記連帯累算の結果を丸めさせる制御ロジックと、
を備え、
十分条件が満たされない場合、前記制御ロジックは、1つ以上の命令実行ユニットに、オペランドAとBとの部分積の一次累算を実行させ、前記一次累算の丸められていない結果を生成させ、前記丸められていない結果の1つ以上の最下位ビットを除外して丸められていない中間結果ベクトルを生成させ、前記丸められていない中間結果ベクトルへのCの二次累算を実行させ、前記二次累算の結果を丸めさせる、
マイクロプロセッサ。 - 前記制御ロジックは、前記1つ以上の命令実行ユニットに、前記の除外された1つ以上の最下位ビットを、前記二次累算の結果の丸めにおいて使用される1つ以上の丸めインジケータのセットに低減させる、請求項62に記載のマイクロプロセッサ。
- 前記制御ロジックは、1つ以上の丸めインジケータを、前記二次累算の結果の丸めにおける使用のために、前記の除外された1つ以上の最下位ビットから生成させる、請求項62に記載のマイクロプロセッサ。
- 前記丸められていない中間結果ベクトルを記憶するための第1の共有命令実行ユニット記憶装置と、複数の丸めインジケータを記憶するための第2の共有命令実行ユニット記憶装置と、をさらに備える請求項64に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて形式±A*B±Cの融合積和演算を実行するための方法であって、A、B、及びCは入力オペランドであり、当該方法は、
A、B、及び/又はCの値が、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たすかを検出するステップと、
満たす場合、AとBとの部分積とCの連帯累算を実行し、前記連帯累算の結果を丸めるステップと、
満たさない場合、AとBとの部分積の一次累算を実行して、丸められていない中間結果ベクトルと前記一次累算についての1つ以上の丸めインジケータとを生成し、前記丸められていない中間結果ベクトルへのCの二次累算を実行し、前記1つ以上の丸めインジケータを使用して前記二次累算の結果を丸めるステップと、
を含む方法。 - AとBとの部分積とCとの連帯累算を実行するための十分条件は、AとBとの積の絶対値がCの絶対値より実質的に大きいことである、請求項66に記載の方法。
- AとBとの積の絶対値がCの絶対値より実質的に大きいかを、A及びBの指数値の和からCの指数値を引く関数として指数差ExpDeltaを計算することによって評価するステップ、をさらに含む請求項67に記載の方法。
- 前記指数差ExpDeltaの計算は、A及びBの指数値の和からCの指数値を引いた値から、指数バイアス値をさらに減算する、請求項68に記載の方法。
- AとBとの部分積とCとの連帯累算を実行するための十分条件は、ExpDelta≧−58の場合に存在する、請求項66に記載の方法。
- 形式±A*B±Cの融合積和演算を実行するように動作可能な1つ以上の命令実行ユニットであって、A、B、及びCは入力オペランドである、命令実行ユニットと、
A、B、及び/又はCの値が、AとBとの部分積とCとの連帯累算を実行するための十分条件を満たすかを指示するように構成されたオペランド分析ロジックと、
十分条件が満たされた場合、前記1つ以上の命令実行ユニットに、AとBとの部分積とCとの連帯累算を実行させ、前記連帯累算の結果を丸めさせる制御ロジックと、
を備え、
前記制御ロジックは、十分条件が満たされない場合、1つ以上の命令実行ユニットに、AとBとの部分積の一次累算を実行して、丸められていない中間結果ベクトルと1つ以上の丸めインジケータとを生成させ、その後、前記丸められていない中間結果ベクトルへのCの二次累算を実行させ、前記1つ以上の丸めインジケータを使用して前記二次累算の結果を丸めさせる、
マイクロプロセッサ。 - 前記丸められていない中間結果ベクトルは、前記融合積和演算についてのターゲット・データ形式の仮数幅と同じ仮数幅を有するように生成される、請求項71に記載のマイクロプロセッサ。
- AとBとの部分積とCとの連帯累算を実行するための十分条件は、前記融合積和演算を実行することにおけるマス・キャンセルの潜在性である、請求項71に記載のマイクロプロセッサ。
- マス・キャンセルは、アキュムレータCと総和されるときの、AとBとの積の最上位ビットの1つ以上の否定として定義される、請求項73に記載のマイクロプロセッサ。
- AとBとの部分積とCとの連帯累算を実行するための十分条件が、
前記融合積和演算が実効減算を作り出し、実効減算は、AとBとの積へのCの加算又は減算が(a)AとBとの積の絶対値の大きさ又は(b)Cの絶対値の大きさのうち大きい方よりも小さい絶対値の大きさを有する結果Rをもたらすときに指示されること、及び
A及びBの指数値の和から、任意の指数バイアス値を引き、Cの指数値を引いた値が、X乃至Yの範囲内に入ること、
である、請求項71に記載のマイクロプロセッサ。 - Xは、負の2であり、Yは、正の1である、請求項71に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて形式±A*B±Cの融合積和演算の実行の準備をするための方法であって、A、B、及びCは入力オペランドであり、CがAとBとの積に累算される前に丸めは生じず、当該方法は、
前記融合積和演算を完了するように第1及び第2の積和マイクロ命令を1つ以上の命令実行ユニットに発行するステップ、
を含み、
前記第1の積和マイクロ命令は、丸められていない非冗長結果ベクトルを、(a)AとBとの部分積か、又は(b)AとBとの部分積とCかのうち選択された1つの第1の累算から生成させ、
前記第2の積和マイクロ命令は、前記第1の累算がCを含まなかった場合に、前記丸められていない非冗長結果ベクトルとCとの第2の累算の実行を引き起こし、
前記第2の積和マイクロ命令は、最終的な丸められた結果を前記丸められていない非冗長結果ベクトルから生成させ、前記最終的な丸められた結果は、前記融合積和演算の完全な結果である、
方法。 - Cとの前記第1の累算を実行するか、又はCなしの前記第1の累算を実行するかを、A、B、及びCの値の間の1つ以上の関係に基づいて選択するステップ、をさらに含む請求項77に記載の方法。
- Cとの前記第1の累算を実行するか、又はCなしの前記第1の累算を実行するかを、A、B、及びCの指数値の間の1つ以上の関係に基づいて選択するステップ、をさらに含む請求項77に記載の方法。
- Cとの前記第1の累算を実行するか、又はCなしの前記第1の累算を実行するかを、AとBとの積とCとの累算が実効減算を構成するかに基づいて選択するステップ、をさらに含む請求項77に記載の方法。
- A及びBの指数の和とCの指数との間の差を決定するステップと、
A及びBの指数の和からCの指数を引き、任意の指数バイアスでさらに調整された値が、負の1より大きいか又は等しい場合、前記融合積和演算の累算部分を乗算ユニットにおいて実行するステップと、
A及びBの指数の和からCの指数を引いた値が、負の3より小さいか又は等しい場合、前記融合積和演算の累算部分を加算器ユニットにおいて実行するステップと、
をさらに含む請求項77に記載の方法。 - 前記融合積和演算の結果の絶対値が|A*B|と|C|とのうち大きい方よりも小さくなるかを事前に決定するステップと、
小さくなる場合、及び、A及びBの指数の和からCの指数を引いた値が、任意の指数バイアスを調整した後、負の2より大きいか又は等しい場合に、前記融合積和演算の累算部分を乗算ユニットにおいて実行するステップと、
をさらに含む請求項77に記載の方法。 - Cの指数がA及びBの指数の和よりも少なくとも8倍大きいかを決定するステップと、
大きい場合、前記融合積和演算の累算部分を加算器ユニットにおいて実行するステップと、
をさらに含む請求項77に記載の方法。 - マイクロプロセッサにおいて形式±A*B±Cの融合積和命令を実行するための方法であって、A、B、及びCは入力オペランドであり、当該方法は、
前記融合積和命令を第1のマイクロ命令及び第2のマイクロ命令に変換するステップと、
前記第1のマイクロ命令が、命令実行ユニットに、積和演算の第1の部分の丸められていない中間ベクトル結果を生成するように命令するステップと、
前記第2のマイクロ命令が、命令実行ユニットに、前記丸められていない中間ベクトル結果を受け取り、それを使用して±A*B±Cの最終的な丸められた結果を生成するように命令するステップと、
前記第1のマイクロ命令を第1の命令実行ユニットにディスパッチして前記丸められていない中間ベクトル結果を生成するステップと、
前記第2のマイクロ命令を第2の命令実行ユニットにディスパッチして前記丸められていない中間ベクトル結果を受け取り、前記最終的な丸められた結果を生成するステップと、
±A*B±Cの前記最終的な丸められた結果を共有メモリに記憶するステップと、
を含む方法。 - 前記丸められていない中間ベクトル結果を、転送バスを介して前記第1の命令実行ユニットから前記第2の命令実行ユニットの入力オペランド・ポートに転送するステップ、をさらに含む請求項84に記載の方法。
- 前記丸められていない中間ベクトル結果を汎用メモリに記憶するステップ、をさらに含む請求項84に記載の方法。
- 前記丸められていない中間ベクトル結果を結果バスに出力するステップと、前記丸められていない中間ベクトル結果を前記結果バスに沿って汎用メモリに転送するステップと、をさらに含む請求項84に記載の方法。
- 前記融合積和命令は、融合浮動小数点積和命令であり、A、B、及びCは、各々が符号インジケータと仮数と指数とを有するオペランドである、請求項84に記載の方法。
- 前記融合積和命令は、プリセットされた仮数幅を有するターゲット・データ形式を指定し、前記第1のマイクロ命令は、前記ターゲット・データ形式の前記プリセットされた仮数幅に等しい仮数幅を有する丸められていない中間ベクトル結果を生成する、請求項84に記載の方法。
- マイクロプロセッサにおいて融合複合算術演算を実行するための方法であって、
前記融合複合算術演算を実行するために、複数の命令実行ユニットによって実行されるべき、複数の個別のマイクロ命令を発行するステップと、
前記命令実行ユニットのうちの第1の命令実行ユニットが、前記複数のマイクロ命令のうちの第1のマイクロ命令を実行して、前記融合複合算術演算の少なくとも第1の演算子を使用して丸められていない非冗長結果ベクトルを生成するステップと、
前記命令実行ユニットのうちの少なくとも第2の命令実行ユニットが、少なくとも前記複数のマイクロ命令のうちの第2のマイクロ命令を実行して、前記融合複合算術演算の残りの演算子を使用して前記丸められていない非冗長結果ベクトルから最終的な丸められた結果を生成するステップであって、前記最終的な丸められた結果は、前記融合複合算術演算の完全な結果である、ステップと、
を含む方法。 - 前記第1の命令実行ユニットが前記第1のマイクロ命令を実行している間に前記少なくとも第2の命令実行ユニットが1つ以上の無関係のマイクロ命令を実行するステップであって、前記無関係のマイクロ命令は前記融合複合算術演算の実行に無関係である、ステップ、をさらに含む請求項90に記載の方法。
- 前記丸められていない非冗長結果ベクトルを前記複数の命令ユニットによって共有される第1のメモリに記憶するステップ、をさらに含む請求項90に記載の方法。
- 前記第2の命令実行ユニットが、前記丸められていない非冗長結果ベクトルが前記第1のメモリに記憶された後、前記第2の命令実行ユニットが前記第2のマイクロ命令を実行する前に、少なくとも1つの無関係のマイクロ命令を実行するステップ、をさらに含む請求項92に記載の方法。
- 前記第1の命令実行ユニットが、前記第2の命令実行ユニットが前記最終的な丸められた結果を生成することを可能にする複数の丸めインジケータを生成するステップ、をさらに含む請求項90に記載の方法。
- 前記丸めインジケータを前記複数の命令ユニットによって共有される第2のメモリに記憶するステップ、をさらに含む請求項90に記載の方法。
- 前記第1の命令実行ユニットが、前記丸められていない非冗長結果ベクトル及び前記丸めインジケータを前記第2の命令実行ユニットに転送するステップ、をさらに含む請求項90に記載の方法。
- 形式±A*B±Cの融合積和演算を実行するように動作可能なマイクロプロセッサであって、A、B、及びCは入力オペランドであり、当該マイクロプロセッサは、
A、B、及び/又はCの値がAとBとの部分積とCとの連帯累算を実行するための十分条件を満たすかを決定する入力オペランド・アナライザー回路と、
AとBとを乗算し、A、B、及び/又はCの値がAとBとの部分積とCとの連帯累算を実行するための十分条件を満たすときにAとBとの部分積にCを連帯的に累算する第1の命令実行ユニットと、
A、B、及び/又はCの値がAとBとの部分積とCとの連帯累算を実行するための十分条件を満たさないとき、AとBとの積にCを別個に累算する第2の命令実行ユニットと、
を備えるマイクロプロセッサ。 - 前記第1の命令実行ユニットは、乗算命令を実行し、前記融合積和演算の少なくとも第1の部分を実行するように動作可能な乗算器である、請求項97に記載のマイクロプロセッサ。
- 前記第2の命令実行ユニットは、加算及び減算命令を実行し、前記融合積和演算の少なくとも第2の部分を実行するように動作可能な加算器である、請求項97に記載のマイクロプロセッサ。
- A、B、及びCは、仮数を用いて表され、前記第1の命令実行ユニットは、99mビット未満の総和データ経路を、追加のmビット・スティッキー・コレクタとともに備え、mはA及びBの仮数を表すために使用されるビットの数を表す、請求項97に記載のマイクロプロセッサ。
- 前記連帯累算のための十分条件は、Cが、AとBとの積の大きさに対して、Cの最上位ビットをAとBとの部分積総和のための総和ツリー内に提供された最上位ビットの左にシフトすることなく前記総和ツリーの中でCがアライメントされることを可能にする大きさを有することである、請求項100に記載のマイクロプロセッサ。
- Cとの連帯累算のための十分条件は、Cの絶対値の大きさがマス・キャンセルの潜在性を作り出すほどAとBとの積の絶対値の大きさに十分近いことであり、マス・キャンセルは、Cと総和されるときの、AとBとの積の最上位ビットの1つ以上のキャンセルを指す、請求項97に記載のマイクロプロセッサ。
- A、B、及びCは、指数を用いて表され、Cとの連帯累算のための十分条件は、A及びBの指数の和からCの指数を引き、指数バイアス値でさらに調整された値が、負の1よりも大きいか又は等しいことである、請求項97に記載のマイクロプロセッサ。
- A、B、及びCは、浮動小数点オペランドであり、各々が符号インジケータ、仮数、及び指数を含み、
第1の十分条件は、A及びBの指数の和からCの指数を引いた値が、負の1よりも大きいか又は等しいことであり、
第2の十分条件は、Cの絶対値の大きさがマス・キャンセルの潜在性を作り出すほどAとBとの積の絶対値の大きさに十分近いことであり、マス・キャンセルは、Cと総和されるときの、AとBとの積の最上位ビットの1つ以上のキャンセルを指す、
請求項97に記載のマイクロプロセッサ。 - A、B、及びCは、浮動小数点オペランドであり、各々が符号インジケータ、仮数、及び指数を含み、
Cとの連帯累算のための第1の部分条件は、A及びBの指数の和からCの指数を引いた値が、負の2よりも大きいか又は等しいことであり、
Cとの連帯累算のための第2の部分条件は、AとBとの積へのCの累算が実効減算をもたらすことであり、
前記第1の及び第2の部分条件は、Cとの連帯累算のための十分条件を一緒に構成する、
請求項97に記載のマイクロプロセッサ。 - 実効減算は、|R|が|A*B|又は|C|のうち大きい方よりも小さい場合に結果として生じる、請求項105に記載のマイクロプロセッサ。
- マイクロプロセッサにおいて形式±A*B±Cの積和演算を実行する方法であって、A、B、及びCは入力値であり、当該方法は、
A、B、及び/又はCの値が、AとBとの部分積とCとの連帯累算のための十分条件を満足するかを決定するステップと、
第1の命令実行ユニット内で、AとBとを乗算し、A、B、及び/又はCの値が連帯累算のための十分条件を満足する場合にAとBとの部分積にCを選択的に累算するステップと、
第2の命令実行ユニット内で、A、B、及び/又はCの値が連帯累算のための十分条件を満足しない場合、AとBとの積にCを選択的に累算するステップと、
を含む方法。 - 前記第1の命令実行ユニットは、乗算命令を実行し、前記積和演算の少なくとも第1の部分を実行するように動作可能な乗算器である、請求項107に記載の方法。
- 前記第2の命令実行ユニットは、加算及び減算命令を実行し、前記積和演算の少なくとも第2の部分を実行するように動作可能な加算器である、請求項107に記載の方法。
- 形式±A*B±Cの積和演算を実行するように動作可能なマイクロプロセッサであって、A、B、及びCは入力オペランドであり、当該マイクロプロセッサは、
AとBとの積を算出する乗算演算を実行するように構成され、AとBとの積にCを累算する累算演算を選択的に実行するようにさらに構成された第1の命令実行ユニットと、
AとBとの積にCを累算するように構成された第2の命令実行ユニットと、
A、B、及びCの値を分析して、前記第1の命令実行ユニットに乗算演算と累算演算とを連帯的に実行させるか、又は前記第1及び第2の命令実行ユニットに前記乗算演算と前記累算演算とを別個に実行させるかを決定する入力オペランド・アナライザー回路と、
前記第1の命令実行ユニットが前記第1の命令実行ユニットの中で前記乗算演算と前記累算演算とを連帯的に実行することを、前記入力オペランド・アナライザー回路がそのように決定したときに行わせ、前記第1及び第2の命令実行ユニットが前記乗算演算と前記累算演算とを別個に実行することを、前記入力オペランド・アナライザー回路がそのように決定したときに行わせるように構成された制御ロジックと、
を備えるマイクロプロセッサ。 - 前記第1の命令実行ユニットは、乗算ユニットであり、前記第2の命令実行ユニットは、加算器ユニットである、請求項110に記載のマイクロプロセッサ。
- 前記第1の命令実行ユニットによって生成された積和演算の結果を記憶し、前記結果を前記第2の命令実行ユニットに提供するための共有メモリ、をさらに備える請求項110に記載のマイクロプロセッサ。
- 前記第1の命令実行ユニットによって生成された前記積和演算の結果を前記第2の命令実行ユニットに転送するための転送バス、をさらに備える請求項110に記載のマイクロプロセッサ。
- 形式±A*B±Cの積和演算を実行するように動作可能なマイクロプロセッサであって、A、B、及びCは入力オペランドであり、当該マイクロプロセッサは、
AとBとの積を算出する乗算演算を実行するように構成され、AとBとの積にCを累算する累算演算を選択的に実行するようにさらに構成された第1の命令実行ユニットと、
AとBとの積にCを累算するように構成された第2の命令実行ユニットと、
A、B、及びCの値を分析して、前記第1の命令実行ユニットに前記乗算演算と前記累算演算とを連帯的に実行させるか、又は前記第1及び第2の命令実行ユニットに前記乗算演算と前記累算演算とを別個に実行させるかを決定するように構成された入力オペランド・アナライザー回路と、
前記入力オペランド・アナライザー回路に応答して、(a)前記第1の命令実行ユニットが前記第1の命令実行ユニットの中で前記乗算演算と前記累算演算とを連帯的に実行すること、又は(b)前記第1及び第2の命令実行ユニットが前記乗算演算と前記累算演算とを別個に実行すること、のいずれかを行わせるように構成された制御ロジックと、
を備えるマイクロプロセッサ。 - 前記第1の命令実行ユニットは、積和演算の少なくとも一部分を実行するときに丸められていない結果を生成し、通常の乗算演算を実行するときに丸められた結果を生成するように構成される、請求項114に記載のマイクロプロセッサ。
- 前記第2の命令実行ユニットは、入力オペランドとして丸められていない結果を受け取り、積和演算の少なくとも一部分を実行するときに算術的に正しい丸められた結果を生成するために複数の丸めインジケータをさらに受け取り、通常の累算演算を実行するときに複数の丸めインジケータを受け取らないように構成される、請求項114に記載のマイクロプロセッサ。
- 前記第1及び第2の命令実行ユニットによって共有され、前記第1の命令実行ユニットの乗算演算及び選択的累算演算の結果を記憶するように構成されたメモリ、をさらに備え、前記の共有されたメモリは、前記乗算演算と前記選択的累算演算との結果が記憶された後、AとBとの積にCを累算する前に、前記第2の命令実行ユニットが複数の無関係の演算を実行することを可能にする、請求項114に記載のマイクロプロセッサ。
Applications Claiming Priority (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462020246P | 2014-07-02 | 2014-07-02 | |
US62/020,246 | 2014-07-02 | ||
US201562173808P | 2015-06-10 | 2015-06-10 | |
US62/173,808 | 2015-06-10 | ||
US14/748,817 | 2015-06-24 | ||
US14/749,050 | 2015-06-24 | ||
US14/749,088 | 2015-06-24 | ||
US14/748,870 | 2015-06-24 | ||
US14/749,050 US9891886B2 (en) | 2014-07-02 | 2015-06-24 | Split-path heuristic for performing a fused FMA operation |
US14/748,956 | 2015-06-24 | ||
PCT/US2015/037508 WO2016003740A1 (en) | 2014-07-02 | 2015-06-24 | Split-path fused multiply-accumulate operation using first and second sub-operations |
US14/748,870 US9778908B2 (en) | 2014-07-02 | 2015-06-24 | Temporally split fused multiply-accumulate operation |
US14/748,924 | 2015-06-24 | ||
US14/748,956 US10019230B2 (en) | 2014-07-02 | 2015-06-24 | Calculation control indicator cache |
US14/749,002 US9798519B2 (en) | 2014-07-02 | 2015-06-24 | Standard format intermediate result |
US14/749,002 | 2015-06-24 | ||
US14/748,817 US9778907B2 (en) | 2014-07-02 | 2015-06-24 | Non-atomic split-path fused multiply-accumulate |
US14/748,924 US10019229B2 (en) | 2014-07-02 | 2015-06-24 | Calculation control indicator cache |
US14/749,088 US9891887B2 (en) | 2014-07-02 | 2015-06-24 | Subdivision of a fused compound arithmetic operation |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016535360A true JP2016535360A (ja) | 2016-11-10 |
JP6684713B2 JP6684713B2 (ja) | 2020-04-22 |
Family
ID=53502534
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016538834A Active JP6684713B2 (ja) | 2014-07-02 | 2015-06-24 | 融合積和演算を実行するための方法及びマイクロプロセッサ |
JP2015227713A Active JP6207574B2 (ja) | 2014-07-02 | 2015-11-20 | 計算制御インジケータキャッシュ |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015227713A Active JP6207574B2 (ja) | 2014-07-02 | 2015-11-20 | 計算制御インジケータキャッシュ |
Country Status (6)
Country | Link |
---|---|
US (7) | US9778908B2 (ja) |
EP (2) | EP2963538B1 (ja) |
JP (2) | JP6684713B2 (ja) |
CN (7) | CN106339202B (ja) |
TW (7) | TWI608410B (ja) |
WO (1) | WO2016003740A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020508513A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置における拡大算術計算 |
JP2020514862A (ja) * | 2017-01-16 | 2020-05-21 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9513906B2 (en) * | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US11461096B2 (en) * | 2019-05-24 | 2022-10-04 | Texas Instruments Incorporated | Method and apparatus for vector sorting using vector permutation logic |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US11432990B2 (en) | 2013-08-30 | 2022-09-06 | ISOS Solutions, LLC | Textured apparatus with therapeutic material incorporated therein and methods of manufacturing same |
US20150065928A1 (en) * | 2013-08-30 | 2015-03-05 | ISOS Solutions, LLC | Apparatus for Reducing the Appearance and Effects of Scars |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US10489152B2 (en) | 2016-01-28 | 2019-11-26 | International Business Machines Corporation | Stochastic rounding floating-point add instruction using entropy from a register |
US10671347B2 (en) * | 2016-01-28 | 2020-06-02 | International Business Machines Corporation | Stochastic rounding floating-point multiply instruction using entropy from a register |
US10282169B2 (en) | 2016-04-06 | 2019-05-07 | Apple Inc. | Floating-point multiply-add with down-conversion |
US10275243B2 (en) | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
GB2553783B (en) * | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
US10241757B2 (en) | 2016-09-30 | 2019-03-26 | International Business Machines Corporation | Decimal shift and divide instruction |
US10127015B2 (en) | 2016-09-30 | 2018-11-13 | International Business Machines Corporation | Decimal multiply and shift instruction |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US20180121168A1 (en) | 2016-10-27 | 2018-05-03 | Altera Corporation | Denormalization in multi-precision floating-point arithmetic circuitry |
CN109710558A (zh) * | 2016-11-03 | 2019-05-03 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
US10140092B2 (en) | 2016-11-04 | 2018-11-27 | Samsung Electronics Co., Ltd. | Closepath fast incremented sum in a three-path fused multiply-add design |
US10216479B2 (en) * | 2016-12-06 | 2019-02-26 | Arm Limited | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
US10515302B2 (en) * | 2016-12-08 | 2019-12-24 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with mixed data and weight size computation capability |
KR102649318B1 (ko) * | 2016-12-29 | 2024-03-20 | 삼성전자주식회사 | 상태 회로를 포함하는 메모리 장치와 그것의 동작 방법 |
US10452288B2 (en) * | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US11263008B2 (en) | 2017-03-20 | 2022-03-01 | Intel Corporation | Systems, methods, and apparatuses for tile broadcast |
US10489877B2 (en) | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
US10055383B1 (en) * | 2017-04-28 | 2018-08-21 | Hewlett Packard Enterprise Development Lp | Matrix circuits |
US10338919B2 (en) | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
DE102018110607A1 (de) | 2017-05-08 | 2018-11-08 | Nvidia Corporation | Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen |
CN107291420B (zh) | 2017-06-27 | 2020-06-05 | 上海兆芯集成电路有限公司 | 整合算术及逻辑处理的装置 |
CN107315710B (zh) | 2017-06-27 | 2020-09-11 | 上海兆芯集成电路有限公司 | 全精度及部分精度数值的计算方法及装置 |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US10235135B2 (en) | 2017-07-17 | 2019-03-19 | International Business Machines Corporation | Normalization of a product on a datapath |
US10387147B2 (en) | 2017-08-02 | 2019-08-20 | International Business Machines Corporation | Managing an issue queue for fused instructions and paired instructions in a microprocessor |
CN107895191B (zh) * | 2017-10-30 | 2022-02-22 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN109783055B (zh) * | 2017-11-10 | 2021-02-12 | 瑞昱半导体股份有限公司 | 浮点数运算电路及方法 |
US10481869B1 (en) * | 2017-11-10 | 2019-11-19 | Apple Inc. | Multi-path fused multiply-add with power control |
US11816483B2 (en) | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11669326B2 (en) | 2017-12-29 | 2023-06-06 | Intel Corporation | Systems, methods, and apparatuses for dot product operations |
US11093247B2 (en) | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
US11023235B2 (en) | 2017-12-29 | 2021-06-01 | Intel Corporation | Systems and methods to zero a tile register pair |
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 |
JP6863907B2 (ja) * | 2018-01-05 | 2021-04-21 | 日本電信電話株式会社 | 演算回路 |
CN108364065B (zh) * | 2018-01-19 | 2020-09-11 | 上海兆芯集成电路有限公司 | 采布斯乘法的微处理器 |
CN108416431B (zh) * | 2018-01-19 | 2021-06-01 | 上海兆芯集成电路有限公司 | 神经网络微处理器与宏指令处理方法 |
CN108363559B (zh) * | 2018-02-13 | 2022-09-27 | 北京旷视科技有限公司 | 神经网络的乘法处理方法、设备和计算机可读介质 |
CN111626413A (zh) * | 2018-03-14 | 2020-09-04 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US10664287B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
DE102018209901A1 (de) * | 2018-06-19 | 2019-12-19 | Robert Bosch Gmbh | Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden |
TWI831804B (zh) * | 2018-07-17 | 2024-02-11 | 日商索尼股份有限公司 | 運算裝置、積和運算裝置、積和運算系統及積和運算方法 |
US11093579B2 (en) | 2018-09-05 | 2021-08-17 | Intel Corporation | FP16-S7E8 mixed precision for deep learning and other algorithms |
US11996105B2 (en) | 2018-09-13 | 2024-05-28 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
US11579883B2 (en) | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10866786B2 (en) | 2018-09-27 | 2020-12-15 | Intel Corporation | Systems and methods for performing instructions to transpose rectangular tiles |
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 |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
CN111221496B (zh) * | 2018-11-26 | 2023-06-13 | 北京华航无线电测量研究所 | 一种使用fpga实现浮点数据累加的方法 |
CN111260069B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
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 |
US11269630B2 (en) | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US11016731B2 (en) | 2019-03-29 | 2021-05-25 | Intel Corporation | Using Fuzzy-Jbit location of floating-point multiply-accumulate results |
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 |
CN111814093A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种乘累加指令的处理方法和处理装置 |
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 |
US10825512B1 (en) | 2019-08-27 | 2020-11-03 | Nxp Usa, Inc. | Memory reads of weight values |
US11693657B2 (en) | 2019-09-05 | 2023-07-04 | Micron Technology, Inc. | Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems |
US11829729B2 (en) | 2019-09-05 | 2023-11-28 | Micron Technology, Inc. | Spatiotemporal fused-multiply-add, and related systems, methods and devices |
US11934824B2 (en) | 2019-09-05 | 2024-03-19 | Micron Technology, Inc. | Methods for performing processing-in-memory operations, and related memory devices and systems |
US11288220B2 (en) * | 2019-10-18 | 2022-03-29 | Achronix Semiconductor Corporation | Cascade communications between FPGA tiles |
US11119772B2 (en) | 2019-12-06 | 2021-09-14 | International Business Machines Corporation | Check pointing of accumulator register results in a microprocessor |
US11714875B2 (en) | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
CN113126954B (zh) | 2019-12-31 | 2024-04-09 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
US11182159B2 (en) | 2020-02-26 | 2021-11-23 | Google Llc | Vector reductions using shared scratchpad memory |
CN113391788B (zh) * | 2020-03-11 | 2024-01-26 | 芯立嘉集成电路(杭州)有限公司 | 存储器内算术处理器及存储器内算术处理方法 |
CN113721886A (zh) * | 2020-05-25 | 2021-11-30 | 瑞昱半导体股份有限公司 | 对数计算方法及对数计算电路 |
WO2021250689A1 (en) * | 2020-06-12 | 2021-12-16 | Gulzar Singh | Novel hardware accelerator circuit for bit-level operations in a microcontroller |
US11537861B2 (en) | 2020-06-23 | 2022-12-27 | Micron Technology, Inc. | Methods of performing processing-in-memory operations, and related devices and systems |
US11972230B2 (en) | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
TWI746126B (zh) * | 2020-08-25 | 2021-11-11 | 創鑫智慧股份有限公司 | 矩陣乘法裝置及其操作方法 |
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 |
US11029920B1 (en) * | 2020-10-21 | 2021-06-08 | Chariot Technologies Lab, Inc. | Execution of a conditional statement by an arithmetic and/or bitwise unit |
EP4275113A1 (en) * | 2021-01-07 | 2023-11-15 | Groq, Inc. | Numerical precision in digital multiplier circuitry |
US11663004B2 (en) | 2021-02-26 | 2023-05-30 | International Business Machines Corporation | Vector convert hexadecimal floating point to scaled decimal instruction |
US11360769B1 (en) | 2021-02-26 | 2022-06-14 | International Business Machines Corporation | Decimal scale and convert and split to hexadecimal floating point instruction |
US11625244B2 (en) * | 2021-06-22 | 2023-04-11 | Intel Corporation | Native support for execution of get exponent, get mantissa, and scale instructions within a graphics processing unit via reuse of fused multiply-add execution unit hardware logic |
US20230129750A1 (en) | 2021-10-27 | 2023-04-27 | International Business Machines Corporation | Performing a floating-point multiply-add operation in a computer implemented environment |
CN117149099B (zh) * | 2023-10-31 | 2024-03-12 | 江苏华鲲振宇智能科技有限责任公司 | 一种计算存储分体式服务器系统及控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01119861A (ja) * | 1987-11-02 | 1989-05-11 | Sharp Corp | ディジタル信号処理用lsi |
JPH04177527A (ja) * | 1990-11-09 | 1992-06-24 | Hitachi Ltd | 演算処理回路 |
JPH08305568A (ja) * | 1995-04-28 | 1996-11-22 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
JPH10207693A (ja) * | 1997-01-13 | 1998-08-07 | Internatl Business Mach Corp <Ibm> | 浮動小数点演算ユニット |
US6078941A (en) * | 1996-11-18 | 2000-06-20 | Samsung Electronics Co., Ltd. | Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel |
JP2007094047A (ja) * | 2005-09-29 | 2007-04-12 | Sony Corp | 反射型スクリーン |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1527289A (en) | 1976-08-17 | 1978-10-04 | Int Computers Ltd | Data processing systems |
US4974198A (en) * | 1986-07-16 | 1990-11-27 | Nec Corporation | Vector processing system utilizing firm ware control to prevent delays during processing operations |
US5375078A (en) * | 1992-12-15 | 1994-12-20 | International Business Machines Corporation | Arithmetic unit for performing XY+B operation |
US5347481A (en) | 1993-02-01 | 1994-09-13 | Hal Computer Systems, Inc. | Method and apparatus for multiplying denormalized binary floating point numbers without additional delay |
DE69519449T2 (de) | 1994-05-05 | 2001-06-21 | Conexant Systems Inc | Raumzeigersdatenpfad |
GB9513115D0 (en) | 1995-06-28 | 1995-08-30 | Biochemie Sa | Organic compounds |
US5867413A (en) * | 1995-10-17 | 1999-02-02 | Hitachi Micro Systems, Inc. | Fast method of floating-point multiplication and accumulation |
US5880983A (en) | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
JPH09325953A (ja) * | 1996-06-06 | 1997-12-16 | Hitachi Ltd | プロセッサおよびデータ処理装置 |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6233672B1 (en) | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US6094668A (en) * | 1997-10-23 | 2000-07-25 | Advanced Micro Devices, Inc. | Floating point arithmetic unit including an efficient close data path |
US6611856B1 (en) * | 1999-12-23 | 2003-08-26 | Intel Corporation | Processing multiply-accumulate operations in a single cycle |
US20040098439A1 (en) | 2000-02-22 | 2004-05-20 | Bass Stephen L. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US7117372B1 (en) | 2000-11-28 | 2006-10-03 | Xilinx, Inc. | Programmable logic device with decryption and structure for preventing design relocation |
US6779013B2 (en) | 2001-06-04 | 2004-08-17 | Intel Corporation | Floating point overflow and sign detection |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
US6947962B2 (en) | 2002-01-24 | 2005-09-20 | Intel Corporation | Overflow prediction algorithm and logic for high speed arithmetic units |
TWI289789B (en) * | 2002-05-24 | 2007-11-11 | Nxp Bv | A scalar/vector processor and processing system |
US7689641B2 (en) | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
GB2411975B (en) | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
US7433911B2 (en) * | 2004-12-21 | 2008-10-07 | Arm Limited | Data processing apparatus and method for performing floating point addition |
US7401107B2 (en) | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
US7730117B2 (en) * | 2005-02-09 | 2010-06-01 | International Business Machines Corporation | System and method for a floating point unit with feedback prior to normalization and rounding |
US7461117B2 (en) | 2005-02-11 | 2008-12-02 | International Business Machines Corporation | Floating point unit with fused multiply add and method for calculating a result with a floating point unit |
US20070038693A1 (en) | 2005-08-10 | 2007-02-15 | Christian Jacobi | Method and Processor for Performing a Floating-Point Instruction Within a Processor |
US7912887B2 (en) * | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US8429384B2 (en) | 2006-07-11 | 2013-04-23 | Harman International Industries, Incorporated | Interleaved hardware multithreading processor architecture |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US8443029B2 (en) | 2007-03-01 | 2013-05-14 | International Business Machines Corporation | Round for reround mode in a decimal floating point instruction |
US8078660B2 (en) * | 2007-04-10 | 2011-12-13 | The Board Of Regents, University Of Texas System | Bridge fused multiply-adder circuit |
US7917568B2 (en) | 2007-04-10 | 2011-03-29 | Via Technologies, Inc. | X87 fused multiply-add instruction |
US8046399B1 (en) | 2008-01-25 | 2011-10-25 | Oracle America, Inc. | Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module |
US20090248769A1 (en) | 2008-03-26 | 2009-10-01 | Teck-Kuen Chua | Multiply and accumulate digital filter operations |
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 |
US9507656B2 (en) | 2009-04-16 | 2016-11-29 | Oracle America, Inc. | Mechanism for handling unfused multiply-accumulate accrued exception bits in a processor |
JP5491071B2 (ja) * | 2009-05-20 | 2014-05-14 | エヌイーシーコンピュータテクノ株式会社 | 命令融合演算装置および命令融合演算方法 |
US8386755B2 (en) * | 2009-07-28 | 2013-02-26 | Via Technologies, Inc. | Non-atomic scheduling of micro-operations to perform round instruction |
CN101930354B (zh) * | 2009-07-28 | 2014-03-12 | 威盛电子股份有限公司 | 微处理器及其执行指令的方法 |
US8990282B2 (en) | 2009-09-21 | 2015-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
CN101825998B (zh) * | 2010-01-22 | 2012-09-05 | 龙芯中科技术有限公司 | 向量复数乘法运算的处理方法及相应的装置 |
US8577948B2 (en) * | 2010-09-20 | 2013-11-05 | Intel Corporation | Split path multiply accumulate unit |
US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
CN101986264B (zh) * | 2010-11-25 | 2013-07-31 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
US8965945B2 (en) * | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
US8671129B2 (en) | 2011-03-08 | 2014-03-11 | Oracle International Corporation | System and method of bypassing unrounded results in a multiply-add pipeline unit |
US9213523B2 (en) * | 2012-06-29 | 2015-12-15 | Intel Corporation | Double rounded combined floating-point multiply and add |
US8892619B2 (en) | 2012-07-24 | 2014-11-18 | The Board Of Trustees Of The Leland Stanford Junior University | Floating-point multiply-add unit using cascade design |
US9152382B2 (en) | 2012-10-31 | 2015-10-06 | Intel Corporation | Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
-
2015
- 2015-06-24 US US14/748,870 patent/US9778908B2/en active Active
- 2015-06-24 CN CN201610726151.4A patent/CN106339202B/zh active Active
- 2015-06-24 US US14/748,817 patent/US9778907B2/en active Active
- 2015-06-24 CN CN201580003388.3A patent/CN105849690B/zh active Active
- 2015-06-24 CN CN201610726133.6A patent/CN106325811B/zh active Active
- 2015-06-24 CN CN201610722859.2A patent/CN106293610B/zh active Active
- 2015-06-24 US US14/748,924 patent/US10019229B2/en active Active
- 2015-06-24 CN CN201610726893.7A patent/CN106126189B/zh active Active
- 2015-06-24 JP JP2016538834A patent/JP6684713B2/ja active Active
- 2015-06-24 CN CN201610722858.8A patent/CN106325810B/zh active Active
- 2015-06-24 US US14/749,050 patent/US9891886B2/en active Active
- 2015-06-24 US US14/749,002 patent/US9798519B2/en active Active
- 2015-06-24 US US14/749,088 patent/US9891887B2/en active Active
- 2015-06-24 WO PCT/US2015/037508 patent/WO2016003740A1/en active Application Filing
- 2015-06-24 CN CN201610722812.6A patent/CN106406810B/zh active Active
- 2015-06-24 US US14/748,956 patent/US10019230B2/en active Active
- 2015-07-01 EP EP15174801.9A patent/EP2963538B1/en active Active
- 2015-07-01 EP EP15174805.0A patent/EP2963539B1/en active Active
- 2015-07-02 TW TW104121550A patent/TWI608410B/zh active
- 2015-07-02 TW TW104121552A patent/TWI601019B/zh active
- 2015-07-02 TW TW104121547A patent/TWI634437B/zh active
- 2015-07-02 TW TW104121546A patent/TWI638312B/zh active
- 2015-07-02 TW TW104121545A patent/TWI605384B/zh active
- 2015-07-02 TW TW104121548A patent/TWI650652B/zh active
- 2015-07-02 TW TW104121551A patent/TWI625671B/zh active
- 2015-11-20 JP JP2015227713A patent/JP6207574B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01119861A (ja) * | 1987-11-02 | 1989-05-11 | Sharp Corp | ディジタル信号処理用lsi |
JPH04177527A (ja) * | 1990-11-09 | 1992-06-24 | Hitachi Ltd | 演算処理回路 |
JPH08305568A (ja) * | 1995-04-28 | 1996-11-22 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US6078941A (en) * | 1996-11-18 | 2000-06-20 | Samsung Electronics Co., Ltd. | Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel |
JPH10207693A (ja) * | 1997-01-13 | 1998-08-07 | Internatl Business Mach Corp <Ibm> | 浮動小数点演算ユニット |
JP2007094047A (ja) * | 2005-09-29 | 2007-04-12 | Sony Corp | 反射型スクリーン |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020514862A (ja) * | 2017-01-16 | 2020-05-21 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム |
JP7042276B2 (ja) | 2017-01-16 | 2022-03-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム |
JP2020508513A (ja) * | 2017-02-23 | 2020-03-19 | エイアールエム リミテッド | データ処理装置における拡大算術計算 |
US11567763B2 (en) | 2017-02-23 | 2023-01-31 | Arm Limited | Widening arithmetic in a data processing apparatus |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6207574B2 (ja) | 計算制御インジケータキャッシュ | |
CN107077415B (zh) | 用于执行转换运算的装置和方法 | |
Boersma et al. | The POWER7 binary floating-point unit | |
US20090265529A1 (en) | Processor apparatus and method of processing multiple data by single instructions | |
Lasith et al. | Efficient implementation of single precision floating point processor in FPGA | |
Bruintjes | Design of a fused multiply-add floating-point and integer datapath | |
Ben Abdallah et al. | Soft-Core Processor for Low-Power Embedded Multicore SoCs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160224 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160224 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170314 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20170608 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170713 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180413 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20181009 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190206 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20190214 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20190329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200330 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6684713 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 |