JP6694880B2 - 有効度整合 - Google Patents
有効度整合 Download PDFInfo
- Publication number
- JP6694880B2 JP6694880B2 JP2017522512A JP2017522512A JP6694880B2 JP 6694880 B2 JP6694880 B2 JP 6694880B2 JP 2017522512 A JP2017522512 A JP 2017522512A JP 2017522512 A JP2017522512 A JP 2017522512A JP 6694880 B2 JP6694880 B2 JP 6694880B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- value
- hpa
- validity
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000007667 floating Methods 0.000 claims description 116
- 238000012545 processing Methods 0.000 claims description 114
- 238000003860 storage Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 43
- 239000013598 vector Substances 0.000 description 203
- 238000007792 addition Methods 0.000 description 77
- 238000006243 chemical reaction Methods 0.000 description 65
- 230000000295 complement effect Effects 0.000 description 37
- 238000013500 data storage Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 18
- 230000035508 accumulation Effects 0.000 description 17
- 238000009825 accumulation Methods 0.000 description 17
- 230000009466 transformation Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 101150008147 nanB gene Proteins 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004873 anchoring Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- 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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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
-
- 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
-
- 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
-
- 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/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49921—Saturation, i.e. clipping the result to a minimum or maximum value
-
- 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
-
- 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
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
- G06F7/507—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values
-
- 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/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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; 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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/02—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
- H03M7/12—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word having two radices, e.g. binary-coded-decimal code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/483—Indexing scheme relating to group G06F7/483
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Description
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度(significance)パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供するための整合(alignment)回路と、
該1つ以上の整合された入力オペランドを受信し、該1つ以上の整合された入力オペランドに対して演算動作を実行して結果値を生成し、該結果値を該出力記憶素子に記憶するように、該整合回路に連結された演算回路と、を備え、
該プログラム可能な有効度パラメータが、該整合された結果値とは独立している(無関係である)、装置を提供する。
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供するための整合手段と、
該1つ以上の整合された入力オペランドを受信し、該1つ以上の整合された入力オペランドに対して演算動作を実行して結果値を生成し、該結果値を該出力記憶素子に記憶するための、該整合手段に連結された演算手段と、を備え、
該プログラム可能な有効度パラメータが、該整合された結果値とは独立している、装置を提供する。
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供することと、
該1つ以上の整合された入力オペランドを受信することと、
該1つ以上の整合された入力オペランドに対して演算動作を実行して結果値を生成することと、
該結果値を該出力記憶素子に記憶することと、を含み、
該プログラム可能な有効度パラメータが、該整合された結果値とは独立している、方法を提供する。
●プログラマは、3つの数を加算するときでさえ非常に異なる結果を心配する必要がある。
●プログラマは、非常に異なる結果を回避することを望んで、必要以上に幅広い形式を使用する。
●全く同じ順序で計算されない限り和が再現可能でないため、プログラマは、コードを容易に並列化することができない。
220+(−244+244)=220
しかし
(220+−244)+244=0
である。実行される動作の順序に応じて、結果は100万またはゼロである。指数が24分異なるためこれは極例であるが、指数が1だけ異なる場合、または指数のすべてが同じであり、3つより多くの事物を加算している場合でも、異なる答えが得られる場合がある。Cプログラミング言語は、和が左から右へ順番に評価されることを要することによって再現性問題に対処するが、これは正確性に対しては何の効果もなく、並列化を不可能にする。
浮動小数点(FP)は、少数のビットを使用して実数を近似する有用な方法である。IEEE 754−2008 FP規格は、複数の異なるFP数形式を提案し、その一部は、バイナリ64(別称、倍精度すなわちDP)、バイナリ32(別称、単精度すなわちSP)、およびバイナリ16(別称、半精度すなわちHP)である。64、32、および16という数は、各形式(フォーマット)に必要なビット数を指す。
FP数は、負の200万の代わりに−2.0×106と記述する、科学の授業で教えられる「科学的記数法」と非常に似ている。この数の部分は、符号部(この場合は負)、仮数部(2.0)、指数の基数部(10)、および指数部(6)である。これらの部分はすべてFP数における類似物を有するが、それらには相違点があり、そのうち最も重要なのは、構成要素の部分は二進数として記憶され、指数の基数は常に2であるということである。
符号は、負数では1であり、正数では0である。ゼロを含むすべての数が符号を有する。
−1sign×1.fraction×2e
式中、eは、バイアス付き指数から計算される真の指数である。1.fractionという用語は仮数部と呼ばれ、1はFP数の一部としては記憶されないが、その代わりに指数から推測される。ゼロおよび最大指数を除いたすべての指数が、1.fraction形態の仮数部を示す。指数ゼロは、0.fraction形態の仮数部、および所与の形式の1−バイアスに等しい真の指数を示す。そのような数は、非正規(subnormal)と呼ばれる(歴史的にこれらの数は「denormal」と称されたが、現代の用法では「subnormal」という用語が好まれる)。
符号を処理するFP方式は、符号マグニチュード(sign−magnitude)と呼ばれ、これは、整数がコンピュータに記憶される通常の方式(2の補数)とは異なる。符号マグニチュード表現では、同じ数の正数と負数とは、符号ビットのみ異なる。1個の符号ビットと3個の仮数ビットとから成る4ビットの符号マグニチュード整数は、プラス1およびマイナス1を次のように表すことになる。
+1=0001
−1=1001
2の補数表現では、nビットの整数iは、二進法n+1−ビット値2n+iの下位nビットによって表され、そのため、4ビットの2の補数整数は、プラス1およびマイナス1を次のように表すことになる。
+1=0001
−1=1111
2の補数形式は、コンピュータ演算を簡略化するため、符号付き整数については事実上万能である。
ほとんどのFP動作は、動作が無制限の範囲および精度で行われたかのように計算され、FP数に収まるように丸められることがIEEE−754規格では必要とされる。計算がFP数と正確に一致する場合、常にその値が返されるが、計算は通常、2つの連続した浮動小数点数間に位置する値をもたらす。丸めは、この2つの連続した数のうちのどちらが返されるべきかを選ぶプロセスである。
この定義は、実際にどの方法で丸めるかについては述べていない。一般的な実装形態の1つは、動作を行い、切り捨て値(すなわち、FP形式に収まる値)ならびに残りのビットのすべてに注目して、ある特定の条件が適用される場合は切り捨て値を調整することである。これらの計算はすべて、以下に基づく。
L−(最小(least))切り捨て値の最小有効ビット(least significant bit)
G−(ガード(guard))次の最大有効ビット(most significant bit)(すなわち、切り捨てに含まれない第1のビット)
S−(スティッキー(sticky))切り捨ての一部でない残りのビットすべての論理OR
これらの3つの値および切り捨て値を考慮すると、以下の表に従って正しく丸められた値を常に計算することができる。
例えば、2つの4ビット仮数部を乗算し、その後4ビット仮数部に丸めることを考察する。
sig1=1011(十進法の11)
sig2=0111(十進法の7)
乗算結果
sig1×sig2=1001_101(十進法の77)
L Gss
切り捨てられた4ビットの結果の最小有効ビットはL、次のビットはGと表示され、Sは、sと表示される残りのビットの論理ORである(すなわち、S=0|1=1)。丸めるには、この4ビットの結果(1001)を、上記の表中の丸めモードおよび計算に従って調整する。つまり、例えばRNA丸めにおいて、Gは設定されているため1001+1=1010を返す。RX丸めではG|Sが真であるため、Lを1に設定し(これは既に1であるため、この場合は何も変化しない)、1001を返す。
FP数を整数または固定小数点に変換する場合も丸めを行う。その概念は、FP丸めと基本的に同じである。たまたま整数であるFP数は、常にその整数に丸められる。他のFP数はすべて、2つの連続した整数間に位置し、丸めが、どの整数が返されるかを左右する。残念ながら、整数の丸め論理は、2の補数と符号マグニチュード形態との間の相違のために難度が幾分か高い。符号マグニチュード数のインクリメントは常にマグニチュードを増加させるため、インクリメントした数は、ゼロからさらに遠く離れる。同じことが正の2の補数の数にも起こるが、負の2の補数の数は、インクリメントするとゼロにより近くなる。これは、整数が正であるか負であるかに基づいて丸め論理が変更されなければならないことを意味する。これはまた、基底値(インクリメントされるまたはされない値)を選ぶ際に注意しなければならないことも意味する。正の整数では、その値は、単に切り捨てられたFP仮数部であり、そのため、1.37は、1の基底値および1または2のいずれかの結果を有することになる。負の整数では、この場合もやはり仮数部を切り捨て、その結果の1の補数(1の補数は、元々の数のすべてのビットを反転したものである)を取り、−1.37を切り捨てて1にし、その後反転させ、−2の基底値が与えられる。すると、ここで望まれるのはこの結果を−2または(インクリメントされる場合は)−1のいずれかとすることであるため、すべてが解決する。
固定小数点数は、整数と全く同じ方法で丸められる。符号なしの(整数または固定小数点への)変換に関する規則は、正の変換に関する規則と同じである。
丸めをより素早く行う方法は、ほぼすべてのFP動作の一部である仮数部加算の一部として丸め定数を挿入することである。これがどのように機能するかを確かめるために、ドルおよびセント単位の数を加算し、その後ドルに丸めることを考察する。次の加算をすると
$1.27
+$2.35
$3.62
となる。和$3.62は、$3よりも$4に近いことが分かり、したがって、最近接丸めモードのいずれも$4を返すはずである。これらの数を二進法で表した場合、直前の節のL、G、S方法を使用して同じ結果が得られ得る。しかし、50セントだけ加算し、結果を切り捨てると想定するとどうだろう。
1.27
+2.35
+0.50(丸め挿入)
4.12
この和($4.12)からドル額($4)がちょうど返されたら、RNA丸めモードを使用して正しく丸められたことになる。$0.50の代わりに$0.99を加算した場合、RP丸めを使用して正しく丸めることになる。RNEはこれよりわずかに複雑である。$0.50を加算し、切り捨て、その後残りのセントに注目する。残りのセントが非ゼロである場合、切り捨て結果は正しい。ゼロセントが残っていれば、挿入前は2ドル額のちょうど中間であり、そのため偶数のドル額が選ばれる。二進法FPでは、これは、ドル額の最小有効ビットをゼロに設定することを意味する。
FPにおいて、丸め挿入は、3つの異なる値のうちの1つであり、これらの値は、丸めモードおよび(時として)結果の符号に依存する。
FP数は実数と同様であるものと考えたくなるが、それらは、最も基本的な特性についてでさえ本質的に異なる。
1.それらは結合的ではない。例えばSPでは、3つの数を加算し、100万またはゼロを返す場合があり、恐らく人々が丸め誤差と考えるものではない。
(245+ −245)+220=220
245+(−245+220)=0
2.それらは分配法則に従わない。かさねて、SPでは、
3,000,001*(4.00001+5.00001)=0x4bcdfe83
(3,000,001*4.00001)+(3,000,001*5.00001)=0x4bcdfe82
となり、オーバーフローの存在下において、事態はより悪化する。
250*(278−277)=2127
(250*278)−(250*277)=infinity
3.一部の実装形態では、それらは、デフォルトNaNモード(すべてのNaNを単一のNaNに変換するモード)にある場合を除いて可換ですらなく、これは概して、nanA+nanB!=nanB+nanAであるからである。数値の加算および乗算は可換である。
4.IEEE NaN規則のために、乗法または加法の単位元が存在しない。1およびゼロが、数値の単位元として機能する。
高精度アンカー固定(HPA:high-precision anchored)数は、2の補数の長整数i(一般に128ビット以上)と、iのビットの重みを(典型的には、iの最小ビットの指数値を指定することによって)表すより小さなアンカー整数aとから成るペア(i,a)である。アンカー整数aは、プログラム可能な有効度パラメータ/値をもたらすものと見なされ得る。アンカー整数aは、例外情報:無限、符号、NaNなどの加算情報を含み得るHPA数に関するメタデータの一部を形成し得る。このペアは、FP数の仮数部および指数値と幾分か類似しているが、長整数iが正規化されず、かつ通常はFP仮数部よりも大幅に大きく、また、アンカー値aが和に対する入力のすべてに対して固定されていてもよいという点で異なる。FP数の加算は指数の変化を引き起こすが、HPA数の加算は、アンカーを変化させない。
これらの数のうちの2つ、例えば0.5および1.5を加算するとき、アンカーは変化せず、和は、単にi部分を加算することによって簡便に与えられる。HPAの和は単に2の補数の加算であることから、HPAの和は結合的である。
1.HPA累算器が巨大である必要がないように必要とされる数の範囲を限定する方法。
2.大きな2の補数の数を迅速に加算する方法。
3.FPからHPAに変換するための高速ユニット、および
4.HPAからFPに変換するためのユニット。
FP数は、広い範囲を有する。倍精度(DP)数は、2−1000より小さく、21000より大きいものとすることができるが、ほとんどの累算はこの範囲全体に及ばない。実際に、その範囲のすべてにわたる値を有意義に累算するであろう種類の問題を想像するのは難しい。原子寸法より小さい問題は非常に小さな値を累算し得、天文学的計算は非常に大きな値を累算し得るが、陽子の幅を銀河系間の距離に加算することは一般的に有用ではない。高性能計算であっても、ほとんどの累算は限定された範囲にわたって起こる。
我々は、64ビット整数のベクトルをより長い1つの整数と見なすことを提案する。例えば、256ビット整数は、4つの64ビット整数から成ることになる。
として計算する通常の方法で行われることになる。
1.LONGADD Vd,Vm,Vn
Vd=Vm+Vnであり、各SIMDベクトルを単一の長整数として扱う。この命令はキャリーアウトCも作り出し、和の上位レーンからのキャリーアウトが存在する場合はC=1であり、さもなければC=0である。
2.LONGADDC Vd,Vm,Vn
Vd=Vm+Vn+Cであり、各SIMDベクトルを単一の長整数として扱う。以前に生成されたキャリーアウトCが和に加算され、新たなキャリーアウトが生成される。
3.LONGSUB Vd,Vm,Vn
Vd=Vm−Vn=Vm+〜Vn+1であり、各SIMDベクトルを単一の長整数として扱う。この命令はキャリーアウトCも作り出し、和の上位レーンからのキャリーアウトが存在する場合はC=1であり、さもなければC=0である。
4.LONGSUBC Vd,Vm,Vn
Vd=Vm−Vn+C=Vm+〜Vn+1+Cであり、各SIMDベクトルを単一の長整数として扱う。以前に生成されたキャリーアウトCが和に加算され、新たなキャリーアウトが生成される。
long long x[15:0],y[15:0];
ロード/ストアセマンティクスで行き詰まらないように、これらのベクトルが既にレジスタファイル内にあると仮定しよう。すると1024ビットの加算および減算は以下のように見える。
// V0はx[3:0]を含み、V1はx[7:4]を含み、
// V2はx[11:8]を含み、V3はx[15:12]を含む
// V4はy[3:0]を含み、V5はy[7:4]を含み、
// V6はy[11:8]を含み、V7はy[15:12]を含む
// x[15:0]+y[15:0]を出力する多桁加算
// (V13,V12,V11,V10)において
LONGADD V10,V0,V4;
LONGADDC V11,V1,V5;
LONGADDC V12,V3,V6;
LONGADDC V13,V4,V7;
// x[15:0]−y[15:0]を出力する多桁減算
// (V23,V22,V21,V20)において
LONGSUB V20,V0,V4;
LONGSUBC V21,V1,V5;
LONGSUBC V22,V3,V6;
LONGSUBC V23,V4,V7;
256ビットの実装形態を考慮すると、1024ビットの加算および減算には、それぞれ4サイクルかかり得る。このような能力は、暗号アプリケーションを含むFP累算以外のことに有用となるであろう。
HPA数はペア(i,a)であり、iは、2の補数の長整数であり、aは、その整数の最小有効ビットの重み(ひいては、その整数のビットのすべての重み)を与えるアンカー値である。ここでの長整数はSIMDユニットで処理されることになるため、iおよびaについてもう少し具体的に説明しよう。256ビットのSIMDユニットがあると想定する。すると、iの下位256ビットは4つの64ビット部分、Vi[3:0]に分けられる。アンカーを4つの部分、Va[3:0]内に有することも簡便であり、ここで、Va[0]=aであり、i>0についてはVa[i]=Va[i−1]+64である。ここでは特に何も変更していないが、HPA数(i,a)の下位256ビットが(Vi,Va)と表される、より簡便なSIMD表現を採用しているだけである。
1.ADDO_HPA_DP Vi,Va,F
オーバーフローを伴う加算:Vaのアンカー値を使用してFをHPAに変換し、その後Viに加算する。Fのビットが、Viにおける最大重みビットより大きい場合、または和が(整数)オーバーフローを引き起こす場合、オーバーフローフラグを設定する。この実施例では、Viの上位レーンのみがオーバーフローフラグを設定することができるため、実装形態は、そのレーンを下位レーンから区別することに留意されたい。
2.SUBO_HPA_DP Vi,Va,F
オーバーフローを伴う減算:Vaのアンカー値を使用してFをHPAに変換し、その後Viから減算する。Fのビットが、Viにおける最大重みビットより大きい場合、または差が(整数)オーバーフローを引き起こす場合、オーバーフローフラグを設定する。かさねて、この実施例では、Viの上位レーンのみがオーバーフローフラグを設定することができるため、実装形態は、そのレーンを下位レーンから区別することに留意されたい。
3.CVTO_HPA_DP Vi,Va,F
オーバーフローを伴う変換:Vaのアンカー値を使用してFをHPAに変換する。Fのビットが、Viにおける最大重みビットより大きい場合、オーバーフローフラグを設定する。かさねて、この実施例では、Viの上位レーンのみがオーバーフローフラグを設定することができるため、実装形態は、そのレーンを下位レーンから区別することに留意されたい。
1.ADDCO_HPA_DP Vi,Va,F
キャリーおよびオーバーフローを伴う加算:Vaのアンカー値を使用してFをHPAに変換し、その後Viに加算する。キャリーフラグが高である場合、HPA数の整数部に1を加算する。Fのビットが、Viにおける最大重みビットより大きい場合、または和が(整数)オーバーフローを引き起こす場合、オーバーフローフラグを設定する。
2.SUBCO_HPA_DP Vi,Va,F
キャリーおよびオーバーフローを伴う減算:Vaのアンカー値を使用してFをHPAに変換し、その後Viから減算する。キャリーフラグが高である場合、HPA数の整数部に1を加算する。Fのビットが、Viにおける最大重みビットより大きい場合、または差が(整数)オーバーフローを引き起こす場合、オーバーフローフラグを設定する。
3.CVTCO_HPA_DP Vi,Va,F
キャリーおよびオーバーフローを伴う変換:Vaのアンカー値を使用してFをHPAに変換する。キャリーフラグが高である場合、HPA数の整数部に1を加算する。Fのビットが、Viにおける最大重みビットより大きい場合、オーバーフローフラグを設定する。
2.SUB_HPA_DP Vi,Va,F
3.CVT_HPA_DP Vi,Va,F
4.ADDC_HPA_DP Vi,Va,F
5.SUBC_HPA_DP Vi,Va,F
6.CVTC_HPA_DP Vi,Va,F
SP数について、類似した命令が存在する。
ADDO_HPA_DP V0,V10,D0
より上位の項が存在しないため、キャリーは必要とされないが、オーバーフロー検出は重要である。
ADD_HPA_DP V0,V10,D0
ADDCO_HPA_DP V1,V11,D0
両方の命令が、同じDP数D0を受け取ることに留意されたい。このことが必要なのは、D0の仮数部のビットがどこに存在するのか、(V0,V10)内なのか、(V1,V11)内なのか、または両方のベクトルにわたって広がっているのかが、我々には分からないからである。下位ビットから出るオーバーフローは問題にならないため、下位部分はオーバーフロー検出なしで加算される。上位部分は、下位部分からのキャリーを処理しなければならず、上位ビットから出るオーバーフローは常に問題となることからオーバーフローも検出する。
ADDC_HPA_DP V1,V11,D0
ADDCO_HPA_DP V2,V12,D0
実施例に概説されたものと同じ理由で、3つすべての命令が同じDP数D0を受け取ることに留意されたい。下位部分および中間部分から出るオーバーフローは問題にならないため、これらの部分両方がオーバーフロー検出なしで加算される。中間部分は、下位部分のキャリーアウトに対処する必要がある。上位部分は、中間部分からのキャリーを処理しなければならず、上位ビットから出るオーバーフローは常に問題となることからオーバーフローも検出する。
SUBO_HPA_DP V0,V10,D0
より上位の項が存在しないため、キャリーは必要とされないが、オーバーフロー検出は重要である。減算は、D0が変換された128ビット項を反転し、その後1を加算する、通常の方法で行われる。
SUBC_HPA_DP V1,V11,D0
SUBCO_HPA_DP V2,V12,D0
実施例に概説されたものと同じ理由で、3つすべての命令が同じDP数D0を受け取ることに留意されたい。この実施例では、すべての場合において、減算される数は反転され(1の補数)、しかし2の補数動作を完了するためのキャリーインは、この実施例では、下位命令であるSUB_HPA_DPのためにしか生成されない。2の補数動作を完了するためのキャリーインは、この実施例では、非キャリーバージョンの減算動作、SUB_HPA_DPおよびSUBO_HPA_DPのためにしか設定されない。この時点で、命令は、まさに実施例3の加算のように進行する。
上記のように、HPA数(i,a)はベクトル表現(Vi,Va)も有するものと見なし、ここで、Viは64ビット整数のベクトルであり、Vaは、重みVa[0]=aおよびi>0についてはVa[i]=Va[i−1]+64のベクトルである。FPに変換するためには、Viの符号を記録し、Viにおける第1の非符号ビットを見出し、それと形式により指定される数の後続ビット(DPでは52、SPでは23)とから仮数部を構築し、仮数部を丸め、第1のビットの場所および対応する重みから適切な指数を構築する必要がある。
1.符号ビットは、iの上位ビットである。それが設定されている場合、HPA数は負であり、それが正数になるように符号反転される。これを行う方法の1つは、HPA数の整数部をゼロから減算することである。元々の符号はFP数の構築に必要とされるために記憶されるが、この変換の残りでは、変換されている値は非負であると仮定される。
2.上位レーンから開始して、各レーンは、先行ゼロカウント(count leading zero)動作(CLZ)を行って、レーン内の最初の1の前のゼロの数を判定する。この数、すなわち先行ゼロ数(LZC)は、1が存在する場合は0〜63の範囲である。1が見出されれば、レーンは、そのビット位置から開始してk=min(64−LZC,53)ビットの仮数部を返し、64−LZC>53である場合、仮数部の右側の次のビット(G)を返し、64−LZC>54である場合、Gの右側のすべてのビット(S)の論理ORを返す。レーンjからのこの情報のすべてが、レーンj−1の上位ビットから取るべき仮数部のビット数である計数53−kと共に、次のレーンj−1に渡される。図5は、様々なLZCの2つの隣接するレーンから仮数部がどのように構築されるかを示す。最初の1がレーンjで見出された場合、そのレーンのアンカーを使用して、(バイアスなしの)指数:e=Va[j]+63-LZCを計算する。
3.符号、指数、仮数部、G、およびSは、下位レーンに達するまで右側に動かされる。各中間レーン(下位レーンを含む)は、そのビットのすべての論理ORを用いてSを更新する。下位レーンは、DP数を構築し、何であれ指定された丸めモードに従ってそれを丸める。
上述の構築物は、積和を処理するように拡張することができる。丸められた積を加算したい場合は何の変更も必要なく、任意の他のFP数と同様にただ乗算し、その後その積を加算するだけである。丸められていない完全長の積を累算するには、新たな命令が必要になる。
1.MADD_HPA_DP Vi,Va,Dn,Dk。乗算−累算:丸めなしでDn*Dkを計算し(すなわち、完全な106ビットの仮数部積を保持し)、その後、Vaのアンカー値を使用してその積をHPAに変換し、その後、変換された積をViに加算する。
2.MADDO_HPA_DP Vi,Va,Dn,Dk。MADD_HPA_DPと同じだが、変換または加算がオーバーフロー(この実施例では上位レーンのみ)を引き起こした場合、オーバーフローフラグを設定する。
3.MADDC_HPA_DP Vi,Va,Dn,Dk。MADD_HPA_DPと同じだが、キャリーに応答もする。
4.MADDCO_HPA_DP Vi,Va,Dn,Dk。MADD_HPA_DPと同じだが、キャリーに応答もし、変換または加算がオーバーフロー(この実施例では上位レーンのみ)を引き起こした場合、オーバーフローフラグを設定する。
多項式近似、またはテイラー級数、または初等関数のための範囲縮小など、高い内部正確度を必要とするある特定のアプリケーションでは、FP入力で表現することができるHPA数により高い正確度を含めることが有用であり得る。例えば、定数1/piを128ビット以上の正確度で表現することが望まれる場合がある。これは、所望の値を計算し、それを(64ビットのベクトル部分における)長整数として、正しいアンカーと一緒に記憶することによって、容易に達成される。結果として得られるHPA数は、いずれの他のものとも同様に使用することができる。
MUL_VEC_SCALAR_low Vd,Vi,s
は、Viの64ビットコンポーネントのそれぞれにスカラー64ビットsを乗算し、各レーンが、Vdの対応する部分内にある積の下位64ビットを返す。
MUL_VEC_SCALAR_high Vd,Vi,s
は、Viの64ビットコンポーネントのそれぞれにスカラー64ビットsを乗算し、各レーンが、Vdの対応する部分内にある積の上位64ビットを返す。
この節では、サンプルアプリケーションを使用して、いくつかの実施形態例におけるHPAの性能およびエネルギー利益の一部を示す。
HPAの範囲縮小のため、範囲外の数が生じる可能性が大幅に高い。プログラマが正しい境界を確立することができるようなツールおよび手段を提供する必要があるが、特に、境界が侵害されたときに情報を提供する必要がある。我々は、アンダーフロー(underflow)、不正確(inexact)、およびオーバーフロー例外(overflow exception)(FPにより使用される例外と同じ例外、さもなければ新たなHPA特有の例外のいずれか)を使用して境界問題を示すことを提案する。
(a)整数より小さい数は、例外フラグを設定することなくゼロに変換される。
(b)整数が保持できるより大きい数は、最大の正整数または最大の負整数に変換され、ofcではなくiocが返される。
(c)整数が保持できるより大きい数、符号なし形式に変換された負数、入力無限大、または入力NaNは、すべて無効である。返される整数は、ゼロ、または最大正数もしくは最大負数である。
(d)これらは、最大の正整数または最大の負整数に変換され、IOCを返す。
(e)これらは、ゼロに変換され、IOCを返す。
(f)十分大きな宛先(destination)ベクトルを考慮すると、この例外は起こらないが、プログラマはより小さな宛先を指定することができる(プログラマが、すべての入力が2^−100〜2^+100の範囲内にあることを知っているとして)。このフラグは、プログラマが間違っていたことを示す。
(g)(f)のように、このフラグは、プログラマのエラー、すなわち入力値が所与のアンカー固定点範囲内で表現され得るものよりも小さいことを示し得る。プログラマが行おうとしていることに応じて、これは深刻である場合もそうでない場合もある(例えば、プログラマは、とても小さな数を破棄したいかもしれない)。一部の実装形態では、IXCとUFCとの組み合わせは付加的情報をもたらす。UFCは、ビットのうちのいずれも変換されなかったことしか意味しないが、UFCおよびIXCは、部分的変換を意味する。部分的変換を丸めるための試みは行われない。
(h)このフラグは、深刻な問題、すなわち入力値が所与のHPAベクトルにおいて表現され得るものよりも大きいことを示す。(g)と同様に、変換の部分的な成功を示すためにIXCフラグを使用することになるが、いかなる場合でもこのフラグは、より大きなHPAベクトルを用いた再試行が必要であることを示す。
(i)このフラグは、深刻な問題を示す。我々は、それを入力無限大またはNaNに設定し、(符号なしHPA形式を作る場合は)負の非ゼロを符号なしHPA形式に変換することを提案する。入力無限大またはNaNは、メタデータフラグを調整する必要もある。
(j)以下のメタデータの説明を参照されたい。無限大およびNaNの記号が関与するFP計算と同じ結果をもたらすためには、所与の数が無限大またはNaNであるという何らかの指示、ならびに無限大の符号が必要である。これらは、HPA数の作成中に生成された例外の何らかの記録と一緒に、理想的には第2のメタデータベクトルの一部として、HPA数と共に記憶されるのが最良である。
ケース(a)では、新たな述語ビット(PCiと表記される)のうちのいずれも設定されておらず、そのためこの加算は、8個の64ビット値のそれぞれの別々の加算と解釈される。
ケース(b)では、述語ビットが、奇数の64ビットレジスタから偶数の64ビットレジスタへのキャリーを可能にし、これは、加算が今度は128ビット値を扱っていることを意味する。
(c)および(d)では、これらのキャリーが、漸進的に大きな数に許可される。
ケース(e)は、所与のベクトルに関して混合解釈すら可能であることを示す。
●処理動作の結果が、指定された有効度およびサイズの結果値を使用して表現可能なものよりも大きい場合のオーバーフロー条件、
●結果が、指定された有効度およびサイズを有する結果値により表現可能なものよりも小さい場合のアンダーフロー条件、または
●結果が、目標有効度およびサイズを有する値を使用して表現可能なものよりも精確である場合の不正確条件。
●符号(値が正であるか負であるか)
●例外ビット、例えばIEEE 754−2008定義ビット−IXC(不正確例外(inexact exception))、IOC(無効動作例外(invalid operation exception))、UFC(アンダーフロー例外(underflow exception))、OFC(オーバーフロー例外(overflow exception));または実装定義ビット−IDC(入力非正規例外(input denormal exception))。DZC(ゼロによる除算(division by zero))例外ビットは、HPA数の除算が必要とされない場合は、必要とされない場合がある。
●特徴的なビット(例えば、値が無限大、NaN(非数)、ゼロであるかどうかを示すもの)
これらのビットはデータタイプの一部であり、すべてのレーンについて必ずしも複製されるわけではない。
CVT_SP_to_HPA Vi,Va,Si
があると想定すると、Viは、279ビットの固定小数点結果を含むことになる。Vaは、Viにおける5つの64ビットの宛先のそれぞれに関する境界情報を含むことになるため、上記の例では、Va=<256,192,128,64,0>である。各64ビットレーンは、SP数Siのコピーを得ることになり、Viの適切な部分にどのビットを設定するかを計算するために、境界情報およびSP数の指数を使用する。Vi=<D4,D3,D2,D1,D0>とする。Siが指数70を有する場合、Viのビット[70:64](すなわち、D1のビット[6:0])は、Siの仮数部の上位7ビットに設定され、Viのビット[63:47](すなわち、D0のビット[63:47])は、Siの仮数部の下位17ビットに設定される。残りのビットのすべては、ゼロに設定されることになる(簡略化のために、ここでは正数を仮定しよう)。各レーンは、Vaの対応するエントリから完全な仮数部、指数、および境界情報を受信する。
MUL_SP_to_HPA Vi,Va,Sn,Sm
Viは、固定小数点結果を含み、この場合もやはり、Vaは、各レーンに対する境界情報を含むことになる。2つのSP数SnおよびSmは、丸めなしで乗算され、仮数部の完全な48ビットの積を保持し、積指数の9ビットバイアス付き(255過剰)表現である新たな指数を計算する。2つのSP数の積は1つのSP数より大幅に大きくも大幅に小さくもなり得るため、余剰の指数ビットが提供される。変換は、CVT_SP_to_fixed命令と全く同じように起こり、積の2の補数を取り、その後各レーンに、固定小数点数が何らかの仮数ビットを有するかどうかをVaに基づいて計算させ、仮数部の左側に符号ビット、そして右側にゼロで、残りのビットを満たす。
「first bit」列は、いくつの可能性のある場所が仮数部の第1のビットを保持し得るかを示し、「frac bits」は、いくつの小数部ビットがその仮数部に続くかを示す(これらの数は積に関してより高い)。「length」のフィールドは、単にfirst_bit+frac_bits+1の和であり、これは、指定された入力に関する固定小数点形態のすべての数を保持するのに必要とされる最小の長さである。「64−bit words」の列は、指定された入力に関する固定小数点形態のすべての数を保持するのに必要とされる64ビットワードの最小の数である。
●Z>0およびZ<Lsize+Fsizeである場合、Lshift=Z=E−B−Va[x]+1であり、式中、
○Eは、FP値のバイアス付き指数であり、
○Bは、FP値に対するバイアス量(例えば、DPでは1023、SPでは127)であり、
○Vm[x]は、アンカー点値Vaから決定される、処理されているデータ要素の最小有効ビットの目標有効度であり、
○Lsizeは、データ要素内のビット数(ベクトルレーンサイズ)であり、
○Fsizeは、FP値の仮数部内のビット数である(暗黙ビットを含まない)。
●Z≦0またはZ>Lsize+Fsizeである場合、Lshift=0である。
CVT_HPA_to_SP Sd,Vd,Va
であり、ここで、Sdは、宛先SP数であり、Vdは、高精度固定小数点データを含むデータベクトルであり、Vaは、Vdの各64ビットレーンに関する境界情報を含むアンカーベクトルである。Vdは、2の補数の数であり、Vdのすべてのビットは、Vaの境界情報に基づく重みを有し、そのため、Vaの下位64ビットワードが100を含む場合、Vdにおける下位ワードの下位ビットは重み100を有し、次のビットは重み101を有するなどである。通常の場合では、Vaは、全面的にその下位64ビットにおける基底値によって決定され、次に続く各64ビットは64異なる。したがってこの場合では、
Va=<…,296,228,164,100>
である。これらすべての値を有するようにベクトルVaを提供する理由は、各64ビットレーンがそのベクトルVdの部分を大域的な知識一切なしで解釈するからである。レーンがより大きなベクトル内のそれら自体の場所を「知って」いたら、基底値(この場合は100)は、変換を完了するのに十分な情報を与えるであろう。
E=Va[j]+Lsize−LZC+B
式中、Va[j]は、最大有効非符号ビットが見出されたデータ要素Vi[j]の最小有効ビットの有効度(例えば、図22に示される例において要素Vi[2]のアンカー点値によって指示される有効度)であり、Lsizeは、1つのデータ要素内のビット数であり、LZCは、先行ゼロカウントであり、Bは、使用されている浮動小数点表現のバイアス値である。
1.D0を保持するレーンが、SP数を、これら64ビットのみが利用可能であるかのように、左から右への変換と同じアルゴリズムを使用し、しかし丸めまたは符号ベースの操作を一切行わずに計算する。返される値は、35ビットベクトル<sign,exponent[7:0],significand[23:0],guard,sticky>である。D1を保持するレーンは同じことを行うが、D0レーンによって生成されるデータにも注目する。D1レーンがすべて符号ビットである場合、D0結果が上位に渡される。さもなければ、新たなSP数が、第1の非符号ビットの新たな場所に基づいて計算される。この新たな数の小数部ビットの一部はD0に由来し得るが、我々はそのレーンから返された35ビットベクトルからのそれらのビットに関する情報を有する。新たな指数、符号、ガードおよびスティッキービットも計算される。このプロセスは、D2、それからD3について繰り返され、最後にD4レーンから返されたベクトルを丸めることによって終了する。DP変換は全く同じ方法で機能するが、より大きな指数および仮数部を有する。
2.第2の方法では、各Dxブロックがその他とは独立して35ビットベクトルを計算する。4つのDxブロックがハードウェア内に実装されているシステムでは、各35ビットベクトルが、4つのDxブロックのセットに対して単一の35ビットベクトルを計算する第2のブロックに出力される。この値が保持され、同様の様式で、次のデータビットセットの出力からの35ビットベクトルと組み合わせられる。上記の例において、256ビットのShojiエンジンを用いると、64ビットチャンクD3〜D0は、第1の反復で処理され、各Dxブロックが35ビットベクトルをもたらし、最終的なベクトルがD3〜D0セットについて生成されることになる。第2のパスが、D4ブロック内のビットに対して別の35ビットベクトルを生成し、第2のブロックが、このベクトルを、より下位のD3−D0ブロックからのベクトルと組み合わせて、最終的なベクトルを生成する。この最終的なベクトルは、指定またはデフォルトの丸めモードに従って丸められて、最終的な単精度結果をもたらすことになる。方法1と同じく、DP変換は同様に機能するが、その大きな指数および仮数部のために異なる実装形態を要するであろう。
Claims (11)
- データを処理するための装置であって、
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供するための整合回路であって、前記プログラム可能な有効度パラメータは、前記出力記憶素子に記憶される結果値の各ビットにより2の何乗と表すのかを示す、前記整合回路と、
前記1つ以上の整合された入力オペランドを受信し、前記1つ以上の整合された入力オペランドに対して演算動作を実行して前記結果値を生成し、前記結果値を前記出力記憶素子に記憶するように、前記整合回路に連結された演算回路と、を備え、
前記プログラム可能な有効度パラメータが、前記結果値とは独立している、装置。 - 前記演算回路が、整数加算器である、請求項1に記載の装置。
- 前記演算回路が、整数乗算器である、請求項1に記載の装置。
- 前記1つ以上の入力オペランドのうち少なくとも1つが、指数値および仮数部値を有する浮動小数点入力オペランドであり、前記整合回路が、前記プログラム可能な有効度パラメータおよび前記指数値に応答して、ビット有効度に関して前記仮数部値を前記結果値と整合させる、請求項1〜3のいずれか一項に記載の装置。
- 前記1つ以上の入力オペランドのうち少なくとも1つが、プログラム可能な入力オペランド有効度を有するアンカー固定オペランドであり、前記整合回路が、前記プログラム可能な有効度パラメータおよび前記プログラム可能な入力オペランド有効度に応答して、ビット有効度に関して、前記アンカー固定オペランドを前記結果値と整合させる、請求項1〜4のいずれか一項に記載の装置。
- 前記プログラム可能な入力オペランド有効度が、有効度下方境界と有効度上方境界との間の範囲を指定する、請求項5に記載の装置。
- 前記プログラム可能な有効度パラメータが、前記1つ以上の入力オペランドとは独立して、前記出力記憶素子に対して設定される、請求項1〜6のいずれか一項に記載の装置。
- 前記プログラム可能な有効度パラメータが、前記1つ以上の入力オペランドのうちのいずれかの最も高い有効度と一致するように、前記出力記憶素子に対して設定される、請求項1〜7のいずれか一項に記載の装置。
- 前記出力記憶素子が出力レジスタであり、前記プログラム可能な有効度パラメータが前記結果値のビット有効度を指示し、
前記整合回路が、前記結果値のビット長を指示するプログラム可能な長さパラメータにより指定されたサイズを有する前記結果値を生成するよう構成された、請求項1〜8のいずれか一項に記載の装置。 - データを処理するための装置であって、
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供するための整合手段であって、前記プログラム可能な有効度パラメータは、前記出力記憶素子に記憶される結果値の各ビットにより2の何乗と表すのかを示す、前記整合手段と、
前記1つ以上の整合された入力オペランドを受信し、前記1つ以上の整合された入力オペランドに対して演算動作を実行して前記結果値を生成し、前記結果値を前記出力記憶素子に記憶するための、前記整合手段に連結された演算手段と、を備え、
前記プログラム可能な有効度パラメータが、前記結果値とは独立している、装置。 - データを処理する方法であって、
ビット有効度に関して、1つ以上の入力オペランドのうちのいずれかを、出力記憶素子について指定されたプログラム可能な有効度パラメータに対して整合させて、1つ以上の整合された入力オペランドを提供することであって、前記プログラム可能な有効度パラメータは、前記出力記憶素子に記憶される結果値の各ビットにより2の何乗と表すのかを示す、前記提供することと、
前記1つ以上の整合された入力オペランドを受信することと、
前記1つ以上の整合された入力オペランドに対して演算動作を実行して前記結果値を生成することと、
前記結果値を前記出力記憶素子に記憶することと、を含み、
前記プログラム可能な有効度パラメータが、前記結果値とは独立している、方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462074149P | 2014-11-03 | 2014-11-03 | |
US62/074,149 | 2014-11-03 | ||
US14/582,974 | 2014-12-24 | ||
US14/582,974 US9690543B2 (en) | 2014-11-03 | 2014-12-24 | Significance alignment |
PCT/GB2015/052730 WO2016071665A1 (en) | 2014-11-03 | 2015-09-22 | Arithmetic processing with alignment to programmable decimal point position |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017538197A JP2017538197A (ja) | 2017-12-21 |
JP6694880B2 true JP6694880B2 (ja) | 2020-05-20 |
Family
ID=55852722
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017522513A Active JP6853777B2 (ja) | 2014-11-03 | 2015-09-18 | プログラム可能な有効度データを使用するデータ処理装置および方法 |
JP2017522512A Active JP6694880B2 (ja) | 2014-11-03 | 2015-09-22 | 有効度整合 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017522513A Active JP6853777B2 (ja) | 2014-11-03 | 2015-09-18 | プログラム可能な有効度データを使用するデータ処理装置および方法 |
Country Status (5)
Country | Link |
---|---|
US (8) | US9916130B2 (ja) |
JP (2) | JP6853777B2 (ja) |
CN (5) | CN107077416B (ja) |
GB (3) | GB2545607B (ja) |
WO (8) | WO2016071661A1 (ja) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
US10838719B2 (en) | 2014-11-14 | 2020-11-17 | Marvell Asia Pte, LTD | Carry chain for SIMD operations |
US20160179530A1 (en) * | 2014-12-23 | 2016-06-23 | Elmoustapha Ould-Ahmed-Vall | Instruction and logic to perform a vector saturated doubleword/quadword add |
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 |
US11204764B2 (en) * | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
RU2633095C1 (ru) * | 2016-07-05 | 2017-10-11 | Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВПО "КубГТУ") | Цифровое устройство для логарифмирования двоичных чисел |
US10019231B2 (en) * | 2016-08-22 | 2018-07-10 | Arm Limited | Apparatus and method for fixed point to floating point conversion and negative power of two detector |
US20180088946A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatuses, methods, and systems for mixing vector operations |
US9785435B1 (en) | 2016-10-27 | 2017-10-10 | International Business Machines Corporation | Floating point instruction with selectable comparison attributes |
US10216479B2 (en) * | 2016-12-06 | 2019-02-26 | Arm Limited | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
US10067744B2 (en) * | 2016-12-08 | 2018-09-04 | International Business Machines Corporation | Overflow detection for sign-magnitude adders |
US10579338B2 (en) * | 2017-01-30 | 2020-03-03 | Arm Limited | Apparatus and method for processing input operand values |
JP6992271B2 (ja) * | 2017-04-06 | 2022-01-13 | 株式会社デンソー | 無線通信端末 |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US11321049B2 (en) | 2017-05-04 | 2022-05-03 | The Research Foundation For The State University Of New York | Fast binary counters based on symmetric stacking and methods for same |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
JP6540770B2 (ja) * | 2017-10-17 | 2019-07-10 | 富士通株式会社 | 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法 |
EP3499362B1 (en) * | 2017-12-13 | 2022-11-30 | ARM Limited | Vector add-with-carry instruction |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11663002B2 (en) | 2018-02-13 | 2023-05-30 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
KR102252137B1 (ko) * | 2018-02-13 | 2021-05-13 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 계산 장치 및 방법 |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
US11119730B1 (en) * | 2018-03-26 | 2021-09-14 | Cloud & Stream Gears Llc | Elimination of rounding error accumulation |
CN108647779B (zh) * | 2018-04-11 | 2021-06-04 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
WO2019218896A1 (zh) | 2018-05-18 | 2019-11-21 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
CN108762720B (zh) * | 2018-06-14 | 2021-06-29 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
WO2020001438A1 (zh) | 2018-06-27 | 2020-01-02 | 上海寒武纪信息科技有限公司 | 片上代码断点调试方法、片上处理器及芯片断点调试系统 |
JP6867518B2 (ja) | 2018-08-28 | 2021-04-28 | カンブリコン テクノロジーズ コーポレイション リミティド | データ前処理方法、装置、コンピュータ機器及び記憶媒体 |
EP3859488A4 (en) | 2018-09-28 | 2022-06-29 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device, signal processing method and related product |
US10824692B2 (en) | 2018-10-12 | 2020-11-03 | Google Llc | Low-power adder circuit |
JP2020098469A (ja) * | 2018-12-18 | 2020-06-25 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
CN111385462A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN109934255B (zh) * | 2019-01-22 | 2023-05-30 | 小黄狗环保科技有限公司 | 一种适用于饮料瓶回收机投递物分类识别的模型融合方法 |
US10963245B2 (en) * | 2019-02-06 | 2021-03-30 | Arm Limited | Anchored data element conversion |
US10459688B1 (en) | 2019-02-06 | 2019-10-29 | Arm Limited | Encoding special value in anchored-data element |
US10936285B2 (en) * | 2019-02-06 | 2021-03-02 | Arm Limited | Overflow or underflow handling for anchored-data value |
FR3093571B1 (fr) * | 2019-03-08 | 2021-03-19 | Commissariat Energie Atomique | Procédé et dispositif de représentation en virgule flottante avec précision variable |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
CN111832739B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US11216281B2 (en) | 2019-05-14 | 2022-01-04 | International Business Machines Corporation | Facilitating data processing using SIMD reduction operations across SIMD lanes |
US11676029B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
EP3772022A1 (en) | 2019-06-12 | 2021-02-03 | Shanghai Cambricon Information Technology Co., Ltd | Method for determining quantization parameters in neural network and related products |
US11640649B2 (en) | 2019-06-19 | 2023-05-02 | Samsung Electronics Co., Ltd. | Methods and apparatus for efficient range calculation |
CN112148371B (zh) * | 2019-06-27 | 2023-10-24 | 北京地平线机器人技术研发有限公司 | 基于单指令多数据流的数据运算方法、装置、介质和设备 |
US11256476B2 (en) | 2019-08-08 | 2022-02-22 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
US10778245B1 (en) * | 2019-08-20 | 2020-09-15 | Micron Technology, Inc. | Bit string conversion |
EP4020321A4 (en) | 2019-08-23 | 2024-01-17 | Anhui Cambricon Information Technology Co., Ltd. | DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM |
US11334317B2 (en) | 2019-11-27 | 2022-05-17 | Core Concept Technologies Inc. | Information processing apparatus, program, and information processing method configured to handle a high-precision computer number |
WO2021106253A1 (ja) * | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
CN111290790B (zh) * | 2020-01-22 | 2023-03-24 | 安徽大学 | 一种定点转浮点的转换装置 |
CN111708986A (zh) * | 2020-05-29 | 2020-09-25 | 四川旷谷信息工程有限公司 | 管廊状态参数测量方法 |
US11704092B2 (en) * | 2020-10-27 | 2023-07-18 | Arm Limited | High-precision anchored-implicit processing |
CN112732223B (zh) * | 2020-12-31 | 2024-04-30 | 上海安路信息科技股份有限公司 | 半精度浮点数除法器数据处理方法及系统 |
US11442696B1 (en) * | 2021-03-23 | 2022-09-13 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with exception processing |
US11366638B1 (en) | 2021-03-23 | 2022-06-21 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with combined alignment circuits |
US11429349B1 (en) | 2021-03-23 | 2022-08-30 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with carry-save accumulator |
WO2022215173A1 (ja) * | 2021-04-06 | 2022-10-13 | 三菱電機株式会社 | 固定小数点演算ビット幅の検証システム及び決定システム |
CN113805844B (zh) * | 2021-09-14 | 2024-04-09 | 北京升哲科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
US20230289139A1 (en) * | 2022-03-08 | 2023-09-14 | International Business Machines Corporation | Hardware device to execute instruction to convert input value from one data format to another data format |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4240144A (en) | 1979-01-02 | 1980-12-16 | Honeywell Information Systems Inc. | Long operand alignment and merge operation |
DE3138897A1 (de) * | 1981-09-30 | 1983-04-14 | Siemens AG, 1000 Berlin und 8000 München | Schaltungsanordnung zur verarbeitung von speicheroperanden fuer dezimale und logische befehle |
DE3144015A1 (de) | 1981-11-05 | 1983-05-26 | Ulrich Prof. Dr. 7500 Karlsruhe Kulisch | "schaltungsanordnung und verfahren zur bildung von skalarprodukten und summen von gleitkommazahlen mit maximaler genauigkeit" |
US4815021A (en) | 1986-01-30 | 1989-03-21 | Star Technologies, Inc. | Multifunction arithmetic logic unit circuit |
US4866653A (en) | 1986-08-04 | 1989-09-12 | Ulrich Kulisch | Circuitry for generating sums, especially scalar products |
US5257215A (en) * | 1992-03-31 | 1993-10-26 | Intel Corporation | Floating point and integer number conversions in a floating point adder |
US5619198A (en) | 1994-12-29 | 1997-04-08 | Tektronix, Inc. | Number format conversion apparatus for signal processing |
US5602769A (en) | 1995-07-05 | 1997-02-11 | Sun Microsystems, Inc. | Method and apparatus for partially supporting subnormal operands in floating point multiplication |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US5968165A (en) | 1996-05-08 | 1999-10-19 | Microunity Systems Engineering, Inc. | System and method for minimizing the size of operands |
US6108772A (en) | 1996-06-28 | 2000-08-22 | Intel Corporation | Method and apparatus for supporting multiple floating point processing models |
CA2418916C (en) | 1997-01-20 | 2008-08-19 | Hitachi Ltd. | Graphics processing unit and graphics processing system |
JP3675111B2 (ja) * | 1997-06-12 | 2005-07-27 | ソニー株式会社 | 3入力比較器 |
EP1061436B1 (en) * | 1997-10-23 | 2007-12-19 | Advanced Micro Devices, Inc. | Multifunction floating point addition/subtraction pipeline |
DE69801678T2 (de) * | 1997-10-23 | 2003-01-16 | Advanced Micro Devices Inc | Multifunktionnelle zweiteilige nachschlagetabelle |
US6247116B1 (en) | 1998-04-30 | 2001-06-12 | Intel Corporation | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
TW514822B (en) | 1999-05-06 | 2002-12-21 | Ind Tech Res Inst | Low power consumption mathematic apparatus and method |
US6460177B1 (en) | 1999-09-22 | 2002-10-01 | Lucent Technologies Inc. | Method for target-specific development of fixed-point algorithms employing C++ class definitions |
KR100325430B1 (ko) * | 1999-10-11 | 2002-02-25 | 윤종용 | 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법 |
US6633895B1 (en) | 2000-02-22 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for sharing overflow/underflow compare hardware in a floating-point multiply-accumulate (FMAC) or floating-point adder (FADD) unit |
US6671796B1 (en) | 2000-02-25 | 2003-12-30 | Sun Microsystems, Inc. | Converting an arbitrary fixed point value to a floating point value |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US7170997B2 (en) | 2000-12-07 | 2007-01-30 | Cryptico A/S | Method of generating pseudo-random numbers in an electronic device, and a method of encrypting and decrypting electronic data |
US20130212353A1 (en) * | 2002-02-04 | 2013-08-15 | Tibet MIMAR | System for implementing vector look-up table operations in a SIMD processor |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
JP2004071045A (ja) | 2002-08-06 | 2004-03-04 | Sony Corp | デフェクト検出装置、デフェクト検出方法 |
US7236995B2 (en) | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
CN100356314C (zh) * | 2003-01-06 | 2007-12-19 | 上海奇码数字信息有限公司 | 可控制锁存累加器的系统与方法 |
EP1623307B1 (en) * | 2003-05-09 | 2015-07-01 | QUALCOMM Incorporated | Processor reduction unit for accumulation of multiple operands with or without saturation |
US7428567B2 (en) * | 2003-07-23 | 2008-09-23 | Sandbridge Technologies, Inc. | Arithmetic unit for addition or subtraction with preliminary saturation detection |
US7899855B2 (en) | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
US7472155B2 (en) * | 2003-12-29 | 2008-12-30 | Xilinx, Inc. | Programmable logic device with cascading DSP slices |
GB2410097B (en) | 2004-01-13 | 2006-11-01 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing data processing operations on floating point data elements |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7797363B2 (en) * | 2004-04-07 | 2010-09-14 | Sandbridge Technologies, Inc. | Processor having parallel vector multiply and reduce operations with sequential semantics |
US7447725B2 (en) * | 2004-11-05 | 2008-11-04 | International Business Machines Corporation | Apparatus for controlling rounding modes in single instruction multiple data (SIMD) floating-point units |
US7725519B2 (en) * | 2005-10-05 | 2010-05-25 | Qualcom Incorporated | Floating-point processor with selectable subprecision |
US8024394B2 (en) | 2006-02-06 | 2011-09-20 | Via Technologies, Inc. | Dual mode floating point multiply accumulate unit |
US8595279B2 (en) * | 2006-02-27 | 2013-11-26 | Qualcomm Incorporated | Floating-point processor with reduced power requirements for selectable subprecision |
US8627050B2 (en) * | 2007-10-08 | 2014-01-07 | International Business Machines Corporation | Executing perform floating point operation instructions |
JP4935619B2 (ja) * | 2007-10-23 | 2012-05-23 | ヤマハ株式会社 | デジタル信号処理装置 |
GB2454201A (en) | 2007-10-30 | 2009-05-06 | Advanced Risc Mach Ltd | Combined Magnitude Detection and Arithmetic Operation |
JP2009110353A (ja) | 2007-10-31 | 2009-05-21 | Hitachi Ltd | マイクロコントローラ及び制御システム |
CN100535851C (zh) * | 2007-11-16 | 2009-09-02 | 中国科学院计算技术研究所 | 一种浮点数据转换装置和方法 |
US8327120B2 (en) * | 2007-12-29 | 2012-12-04 | Intel Corporation | Instructions with floating point control override |
US20100115233A1 (en) | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8402464B2 (en) | 2008-12-01 | 2013-03-19 | Oracle America, Inc. | System and method for managing contention in transactional memory using global execution data |
US9582281B2 (en) | 2009-03-31 | 2017-02-28 | Nxp Usa, Inc. | Data processing with variable operand size |
US20110004644A1 (en) | 2009-07-03 | 2011-01-06 | Via Technologies, Inc. | Dynamic floating point register precision control |
US8468191B2 (en) | 2009-09-02 | 2013-06-18 | Advanced Micro Devices, Inc. | Method and system for multi-precision computation |
US8615541B2 (en) | 2009-09-23 | 2013-12-24 | Nvidia Corporation | Extended-precision integer arithmetic and logical instructions |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
US8977669B2 (en) | 2010-01-08 | 2015-03-10 | International Business Machines Corporation | Multi-input and binary reproducible, high bandwidth floating point adder in a collective network |
CN101751244B (zh) * | 2010-01-04 | 2013-05-08 | 清华大学 | 微处理器 |
US8694572B2 (en) | 2010-07-06 | 2014-04-08 | Silminds, Llc, Egypt | Decimal floating-point fused multiply-add unit |
US8880573B2 (en) | 2010-10-12 | 2014-11-04 | Dolby Laboratories Licensing Corporation | System and method of dynamic precision operations |
CN102025375B (zh) * | 2010-12-07 | 2013-12-04 | 西安电子科技大学 | 模数转换器及其数字校准电路 |
EP2711835A4 (en) | 2011-05-16 | 2014-10-29 | Nec Corp | ARITHMETIC TREATMENT DEVICE AND METHOD |
TWI427597B (zh) | 2011-08-11 | 2014-02-21 | Innolux Corp | 顯示器及其驅動方法 |
US9104479B2 (en) * | 2011-12-07 | 2015-08-11 | Arm Limited | Apparatus and method for rounding a floating-point value to an integral floating-point value |
CN102495719B (zh) * | 2011-12-15 | 2014-09-24 | 中国科学院自动化研究所 | 一种向量浮点运算装置及方法 |
CN104011647B (zh) * | 2011-12-22 | 2018-06-15 | 英特尔公司 | 浮点舍入处理器、方法、系统和指令 |
WO2013095658A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal add or subtract in response to a single instruction |
US8984042B2 (en) | 2012-02-09 | 2015-03-17 | International Business Machines Corporation | Mixed precision estimate instruction computing narrow precision result for wide precision inputs |
US9059726B2 (en) * | 2012-05-11 | 2015-06-16 | Arm Limited | Apparatus and method for performing a convert-to-integer operation |
US9081608B2 (en) | 2012-05-19 | 2015-07-14 | Digital System Research Inc. | Residue number arithmetic logic unit |
US9128759B2 (en) | 2012-11-27 | 2015-09-08 | International Business Machines Corporation | Decimal multi-precision overflow and tininess detection |
CN103092571B (zh) * | 2013-01-10 | 2016-06-22 | 浙江大学 | 支持多种数据类型的单指令多数据算术单元 |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
-
2014
- 2014-12-09 US US14/564,708 patent/US9916130B2/en active Active
- 2014-12-24 US US14/582,968 patent/US9766858B2/en active Active
- 2014-12-24 US US14/582,978 patent/US9703529B2/en active Active
- 2014-12-24 US US14/582,836 patent/US9766857B2/en active Active
- 2014-12-24 US US14/582,875 patent/US9778906B2/en active Active
- 2014-12-24 US US14/582,974 patent/US9690543B2/en active Active
- 2014-12-24 US US14/582,812 patent/US9665347B2/en active Active
-
2015
- 2015-01-27 US US14/606,510 patent/US9886239B2/en active Active
- 2015-09-08 CN CN201580058330.9A patent/CN107077416B/zh active Active
- 2015-09-08 GB GB1705562.5A patent/GB2545607B/en active Active
- 2015-09-08 WO PCT/GB2015/052591 patent/WO2016071661A1/en active Application Filing
- 2015-09-18 CN CN201580058275.3A patent/CN107077415B/zh active Active
- 2015-09-18 WO PCT/GB2015/052699 patent/WO2016071662A1/en active Application Filing
- 2015-09-18 WO PCT/GB2015/052700 patent/WO2016071663A1/en active Application Filing
- 2015-09-18 GB GB1705563.3A patent/GB2546906B/en active Active
- 2015-09-18 CN CN201580058291.2A patent/CN107077322B/zh active Active
- 2015-09-18 WO PCT/GB2015/052701 patent/WO2016071664A1/en active Application Filing
- 2015-09-18 CN CN201580058293.1A patent/CN107077323B/zh active Active
- 2015-09-18 JP JP2017522513A patent/JP6853777B2/ja active Active
- 2015-09-22 GB GB1705565.8A patent/GB2546907B/en active Active
- 2015-09-22 WO PCT/GB2015/052732 patent/WO2016071667A1/en active Application Filing
- 2015-09-22 CN CN201580058383.0A patent/CN107077417B/zh active Active
- 2015-09-22 JP JP2017522512A patent/JP6694880B2/ja active Active
- 2015-09-22 WO PCT/GB2015/052731 patent/WO2016071666A1/en active Application Filing
- 2015-09-22 WO PCT/GB2015/052730 patent/WO2016071665A1/en active Application Filing
- 2015-09-22 WO PCT/GB2015/052733 patent/WO2016071668A1/en active Application Filing
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6694880B2 (ja) | 有効度整合 | |
EP3374853B1 (en) | Multiplication of first and second operands using redundant representation | |
US9733899B2 (en) | Lane position information for processing of vector | |
US9720646B2 (en) | Redundant representation of numeric value using overlap bits | |
JP6877812B2 (ja) | 重複伝搬演算 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190702 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191002 |
|
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: 20200326 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200420 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6694880 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 |