CN107077416B - 用于以选择性舍入模式进行向量处理的装置和方法 - Google Patents
用于以选择性舍入模式进行向量处理的装置和方法 Download PDFInfo
- Publication number
- CN107077416B CN107077416B CN201580058330.9A CN201580058330A CN107077416B CN 107077416 B CN107077416 B CN 107077416B CN 201580058330 A CN201580058330 A CN 201580058330A CN 107077416 B CN107077416 B CN 107077416B
- Authority
- CN
- China
- Prior art keywords
- processing
- lane
- rounding
- vector
- rounding mode
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 221
- 239000013598 vector Substances 0.000 title claims abstract description 173
- 238000000034 method Methods 0.000 title claims description 15
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000007792 addition Methods 0.000 description 8
- 230000000295 complement effect Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000002347 injection Methods 0.000 description 6
- 239000007924 injection Substances 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009738 saturating Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 101150008147 nanB gene Proteins 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- 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
- 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/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
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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
-
- 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)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (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)
Abstract
一种装置包括响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素的处理电路。该处理电路可以支持以不同舍入模式执行这些线路中的至少两个线路,以生成结果向量的相应的结果数据元素的舍入值。这允许响应于单一指令而执行具有不同舍入模式的两个或多个计算,以提升性能。
Description
本技术涉及数据处理的领域。更具体地,本技术涉及向量处理。
一些数据处理装置可以支持如下向量处理,其中包括多个数据元素的至少一个操作数向量响应于向量指令而被处理以生成包括多个数据元素的结果向量。例如,这可以通过允许多个数据值响应于单一指令而被处理来帮助提升性能。
从一方面来看,提供了一种装置,该装置包括:响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素的处理电路;其中该处理电路支持以不同舍入模式执行所述多个处理线路中的至少两个处理线路,以生成结果向量的相应的结果数据元素的舍入值。
从另一方面来看,提供了一种设备,该设备包括:用于响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素的处理装置;其中该处理装置支持以不同舍入模式执行所述多个处理线路中的至少两个处理线路,以生成结果向量的相应的结果数据元素的舍入值。
从另一方面来看,提供了一种数据处理方法,该方法包括:响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素;其中所述多个处理线路中的至少两个处理线路以不同舍入模式被执行,以生成结果向量的相应的结果数据元素的舍入值。
从另一方面来看,提供了一种装置,该装置包括:响应于算术指令而执行多个处理线路的处理电路,每个处理线路用于通过对至少一个操作数向量的相应的数据元素执行算术运算来生成结果向量的结果数据元素;以及存储控制信息的存储位置,该控制信息分别针对响应于所述算术指令而被执行的所述处理线路中的至少两个处理线路中的每个处理线路指定将被执行以生成该线路的结果数据元素的算术运算的类型。
从另一方面来看,提供了一种设备,该设备包括:用于响应于算术指令而执行多个处理线路的处理装置,每个处理线路用于通过对至少一个操作数向量的相应的数据元素执行算术运算来生成结果向量的结果数据元素;以及用于存储控制信息的存储装置,该控制信息分别针对响应于所述算术指令而被执行的所述处理线路中的至少两个处理线路中的每个处理线路指定将被执行以生成该线路的结果数据元素的算术运算的类型。
从另一方面来看,提供了一种数据处理方法,该方法包括:响应于算术指令而读取控制信息,该控制信息分别针对响应于该算术指令而被执行的多个处理线路中的至少两个处理线路中的每个处理线路指定将针对每个线路被执行的算术运算的类型;以及利用所述线路中的所述至少两个线路来执行所述多个处理线路,以通过执行由控制信息针对该线路指定的算术运算的类型来根据至少一个操作数向量的相应的数据元素生成结果向量的结果数据元素。
从以下对示例的描述中可以看出本技术的其他方面、特征和优点,将结合附图来阅读对示例的描述。
图1概要地示出了支持向量处理的数据处理装置的示例;
图2示出了向量处理的示例,其中不同处理线路(lane)使用不同舍入模式来生成相应的结果数据元素的舍入值;
图3示出了指令序列的比较示例;
图4示出了用于使用图2中的技术来生成与图3中相同的结果的指令序列的示例;以及
图5示出了获得处理线路的结果数据元素的方法。
一种装置可以包括处理电路,该处理电路响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素。该处理电路可以支持以不同的舍入模式针对结果向量的相应的结果数据元素的所生成的舍入值执行至少两个处理线路。
可以根据若干不同的舍入模式来生成舍入结果值。通常,已经使用向量处理(也称作单指令多数据或SIMD处理)来使用不同数据执行若干相等的处理运算,所以可能期望为作为整体的向量处理指定单一舍入模式将是足够的。针对响应于向量指令而执行的不同线路的处理使用多个舍入模式将会是有用的或令人满意的,这可能看起来是违反常理的。然而,发明人认识到存在以下情况,在这样的情况下,需要具有不同舍入模式的多个处理运算,其中每舍入模式相对少的处理运算。例如,软件库可能需要使用若干不同的舍入模式来以给定输入值的集合执行相同计算(例如,来研究处理结果的真实值,如果该真实值比以该结果格式所表示的更为精确的话)。通过提供能够以两个或更多个不同的舍入模式来针对不同线路的向量处理执行向量指令的处理电路,可以利用单一向量指令来执行这样的计算。并且,使用单一舍入模式所需要的计算的数量有时可以相遇向量的数据元素的总数。如果仅有单一舍入模式能够被用于全部线路,则这可能导致一些处理线路是空闲的。通过允许不同舍入模式响应于同一向量指令而被用于不同的处理线路,未被用于以一个舍入模式进行计算的线路能够被用于以不同的舍入模式来执行计算,这反而将需要单独的指令。因此,该技术允许以较少的指令来执行所要求的处理运算的集合,以提升性能、减小代码大小并降低功耗。
不必针对全部指令支持以每线路不同舍入模式(下面称为“每线路舍入(per-lanerounding)”)的向量处理。在一些情形下,可以仅针对指令的子集支持每线路舍入。例如,处理电路可以支持针对浮点向量质量执行每线路舍入,而不必针对整数或定点向量指令支持每线路舍入。浮点向量指令可被看作是如下的任意指令,对该指令而言,(一个或多个)操作数向量或结果向量具有表示浮点值的数据元素,这样的指令包括在浮点格式和另一数字格式之间进行转换的指令。对于浮点向量指令而言针对不同处理线路执行不同舍入模式是特别有用的,因为针对浮点数的IEEE-754标准可能需要针对大部分浮点运算执行舍入。虽然如此,每线路舍入也可被用于其他类型的向量指令,比如,定点或证书指令。例如,当从一种定点格式转换到另一定点格式时,以第一格式表示的数字可能无法使用第二格式来精确地表示,在此情形下,即使第二格式是定点或整数格式可能也需要进行舍入。
在一个示例中,处理电路可以对指定将用于每个线路的舍入模式的控制信息作出响应,从而根据控制信息所指定的舍入模式来生成每个线路的响应的结果数据元素的舍入值。控制信息可以是可编程的,以使得程序员可以指定将用于每个线路的舍入模式。
处理电路可以具有舍入电路,该舍入电路基于每个线路正在处理的数据值以及控制信息为该线路指定的舍入模式来生成针对该线路的舍入增量。舍入电路能够在用于处理每个线路的每个处理单元内被单独地提供,或者能够作为在线路间共享的通用控制块被提供,该通用控制块输出针对每个线路的舍入增量。
可以以多种不同的方式来表示控制信息。例如,在一些情形下,控制信息可以作为立即值被编码在指令内。然而,为节省指令集架构内的编码空间,控制信息可被存储在控制存储位置中。例如,控制存储位置可以是寄存器。用于存储控制信息的寄存器可以是默认用于每个指令(针对这样的指令支持每线路舍入)的预定寄存器,或者是能够使用向量指令的编码内的寄存器指定符来指定的寄存器,从而针对不同的指令可以选择不同的控制寄存器。
因此,当执行对其而言支持每线路舍入的向量指令时,处理电路可以查阅控制存储位置以读取指定针对每个线路的舍入模式的控制信息,每个处理线路然后可以对控制信息的相应部分作出响应以标识针对该线缆的舍入模式。在控制信息内可以有多种方式来表示将由每个线路使用的舍入模式。例如,如果预期针对每个线路的选定舍入模式的某些样式将被频繁使用,则这样的样式能够由预定标识符来标识。
然而,更一般的途径可能是提供具有多个控制字段的控制存储位置,其中每个控制字段存储用于控制相应的处理线路的控制信息。针对至少一种类型的向量指令,用于处理向量处理的给定线路的处理电路可以查阅相应的控制字段以确定如何处理操作数向量的相应的数据元素来生成结果数据元素,针对给定处理线路的相应的数据元素可以包括制定将针对该线路使用的舍入模式的舍入模式值。以此方式,每个处理线路可以通过调整对应于该线路的控制字段内的舍入模式值来使得其舍入模式独立于其他线路地被设置。
在一些示例中,处理电路所支持的每个舍入模式可以对应于针对给定处理线路的控制字段中的舍入模式值的具体编码。在其他示例中,并非硬件中所支持的全部舍入模式都可通过舍入模式值来表示(即,并非全部可用舍入模式都可在逐线路的基础上供选择)。处在控制存储位置内的逐线路表示外,还可以有其他指定舍入模式的方式。
例如,舍入模式值的可能的编码之一可以被指定为默认值,以使得当路由模式值具有默认值时处理电路可以使用默认舍入模式来执行相应的处理线路。另外的控制存储位置可以存储指示默认舍入模式的信息。以此方式,即使舍入模式值字段中没有足够的空间来表示全部可用舍入模式,仍可通过以下方式来选择不具有舍入模式值的相应编码的其他舍入模式:通过将另外的控制存储位置设置为将这些舍入模式之一指示为默认舍入模式并且将一些处理线路的舍入模式值设置为指示默认舍入模式。在控制计算器空间有限的情况下,这能够有助于减小舍入模式值的大小。并且,该途径对于与旧有编码的兼容性是有益的,它可以使用另外的控制存储位置来设置用于全部向量的舍入模式。
舍入模式值不必针对全部指令以相同的方式进行解释。如上面所提到的,并非全部指令可以支持逐线路舍入。因此,控制字段中用来指示舍入模式的舍入字段可以针对不同类型的指令指示不同的信息。针对至少一种类型的指令(例如,浮点向量指令),舍入字段可以指示将被用于相应线路的舍入模式,但是针对至少一种其他类型的指令(例如,整数或定点向量指令),舍入字段可以指定其他信息。例如,其他信息可以指示相应的处理线路将以非饱和算法还是饱和算法来生成结果数据,或者可以指示由该处理线路生成的结构的哪部分将由相应的结果数据元素来表示,或者可以指示针对该线路应当执行那种类型的算术或逻辑运算。以此方式,可以在逐线路的基础上制定信息来以不同方式控制不同处理线路,而无需在指令编码本身中指定该信息。并且,通过针对不需要每线路舍入的指令将舍入字段重用于其他目的,而不必为该目的提供控制存储位置的第二字段,来例如节省寄存器空间。
在一个示例中,除舍入模式值外,控制存储位置还可以包括用于标识至少一个操作数向量的一个或多个选定元素的元素选择信息,以使得处理电路生成针对至少与元素选择信息所指示的选定元素相对应的处理线路的响应结果数据元素。例如,不可能总有足够的数据来填充完整的向量,因此在一些情况下可能仅需要处理输入向量的元素中的一些元素。通过使用元素选择信息标识选定元素,与未选定元件相对应的不活动处理线路不需要被执行,或者与不活动线路相对应的处理单元可以是功率选通的、被置于固定状态、或者被通过零输入,以减少处理单元的内部组件的状态的反复(toggling)来降低功耗。在一个示例中,元素选择信息能够包括指示向量的有效部分的长度的向量长度指示,向量长度所指示的若干元件作为选定数据元素被处理(例如,向量的若干最低有效元素)。替代地,为允许选择离散的元素,元素选择信息可以包括针对每个元素标识该元素是有效元素还是无效元素的屏蔽信息。
例如,控制存储位置可以包括如上所讨论的多个控制字段,每个控制字段可以包括如下信息,该信息标识相应的处理线路是将基于至少一个操作数向量的相应的数据元素生成相应的结果数据元素的活动线路还是对其而言相应的结果数据元素与至少一个操作数向量的相应的数据元素无关的不活动线路。针对那些不活动线路,可以利用默认值(比如,零)、或假设输入元素值为零而计算得出的值来生成结果数据元素,或者将用结果值写入的目的地寄存器的相应部分可以保持不变。
用于存储活动/不活动线路信息的控制存储位置可被重用来还指示针对每个线路的舍入模式值。因为在一些实现方式中在该控制存储位置中可能存在尚未使用的比特空间,所以这能够是有用的。例如,活动/不活动线路信息可以仅需要每数据元素一比特,但是如果某种固定大小的寄存器被用作控制存储位置,则可能没有足够的屏蔽位来填充整个寄存器。
向量指令可以是控制处理电路对至少一个操作数向量的各个数据元素执行多个处理线路的任意指令。可以以不同方式来处理向量指令。一些系统可以使用处理电路来处理向量指令,该处理电路依次执行每个处理线路以使得一个线路在另一线路之后被执行。然而,其他实现方式可以提供用于至少并行地执行多个向量处理的线路中的至少一些线路的多个处理单元,以提升性能。有时,向量的全部元素可被并行地处理。然而,也有可能支持具有比硬件所能够并行处理的数据元素多的数目的数据元素的向量。例如,处理电路可以具有M个处理单元(M>1),并且如果向量指令需要多于M个处理电路,则可以几次通过处理单元来执行这些处理线路。因此,向量大小可以与处理电路中所提供的硬件无关,从而可能处理大于所提供的硬件的向量。
在另一示例中,装置可以具有响应于算术指令而执行多个处理线路的处理电路,其中每个处理线路通过对至少一个操作数向量的相应的数据元素执行算术运算来生成结果向量的结果数据元素。该装置还可以具有存储控制信息的存储位置,该控制信息响应于所述算术指令而分别针对至少两个线路中的每个线路指定将被执行以生成针对该线路的结果数据元素的算术运算的类型。
在向量(SIMD)处理中,将被执行的运算的类型经常由指令编码来指定,并且针对每个线路将是相同的。通过替代地使用存储位置来存储分别针对至少两个线路指定将被执行以生成针对该线路的结果数据元素的算术运算的类型的控制信息,这允许多个不同类型的算术运算在更少的指令中被执行而不会浪费指令编码空间来在指令本身中编码每个线路的算术运算的类型(在许多指令集架构中指令编码空间通常是稀缺的)。因此,响应于单一算术指令,可以通过在每个线路中使用不同类型的算术运算来并行地执行至少一个操作数向量的数据元素的多个不同的操作。存储位置中的控制信息不必针对全部算术指令表示相同的事情。例如,针对第一算术指令,控制信息可以指定算术运算的一个性质,而针对第二算术指令,控制信息可以指定不同性质。以此方式,控制信息的含义可以逐指令而变化。
一般而言,控制信息所指示的算术运算的不同“类型”可以以任何方式有所不同,这使得将对至少一个操作数向量的(一个或多个)数据元素执行不同操作以生成针对至少两个线路的结果数据元素。可以由控制信息针对给定线路指定的算术运算的性质的示例可以包括:哪个特定算术运算将被执行以生成针对该线路的结果数据元素(例如,加或减);将用来在该算术运算中生成针对该线路的结果数据元素的舍入值的舍入模式;以及该算术运算使用饱和算法还是非饱和算法来生成针对该线路的结果数据元素。
在一些示例中,控制信息可以分别针对多个线路中的仅一些线路指定算术运算的类型。例如,线路可以被划分为若干线路的子集或组(bank),每个线路的子集或组具有指定针对该子集或排内的线路将执行的算术运算的类型的控制信息的相应参数。因此,对于每个线路而言具有关于算术运算的单独的指示并非是必要的。
然而,在其他示例中控制信息可以分别针对多个线路中的每个线路指定算术运算的类型。这可以提供更大的自由来选择将被应用于每个元素的不同运算,这有助于降低实现一系列运算所需的处理的量。这不仅允许更大数目的不同类型的运算响应于单一指令而被执行,而且即使当需要相对较少的运算的类型时分别针对每个线路指定算术运算的类型的能力也能够有助于较少所需的处理的量。这是因为分别针对每个线路指定运算意味着将使用特定类型的算术运算处理的数据元素可以位于(一个或多个)操作数向量内的任意位置,从而不必执行额外的元素重新排列运算,以确保将使用同一算术运算进行处理的数据元素被放置在与线路的同一子集相对应的位置处。
浮点型
浮点型(FP)是使用少量比特来逼近实数的有用的方式。IEEE 754-2008FP标准处理针对FP数的多种不同格式,但是其中三个为二进制64(也称作双精度,或DP)、二进制32(也称作单精度,或SP)、以及二进制16(也称作半精度,或HP)。数字64、32和16指的是每种格式所需的比特数。
表示
FP数十分类似于科学课上所教导的“科学记数法”,其中不写负二百万而是写作-2.0×106。该数的各部分为:符号(在此情形下为负号)、有效数字(2.0)、指数的基数(10)、以及指数(6)。全部这些部分在FP数中有类似物,但是存在差异,最主要的差异是这些组成部分被存储为二进制数,并且指数的基数总是2。
更确切地说,FP数包括符号位、一些有偏倚的指数位、以及一些小数位。具体地,DP、SP和HP格式包含以下位:
表1:
格式 | 符号 | 指数 | 小数 | 指数偏倚 |
DP[63:0] | 63 | 62:52(11位) | 51:0(52位) | 1023 |
SP[31:0] | 31 | 30:23(8位) | 22:0(23位) | 127 |
HP[15:0] | 15 | 14:10(5位) | 9:0(10位) | 15 |
对于负数符号是1,对于正数符号是0。每个数包括零在内都有符号。
指数是偏倚的,这表示真正的指数不同于该数字中所存储的指数。例如,偏倚的SP指数位8比特长且范围为从0到255。指数0和255是特殊情形,但是全部其他指数具有偏倚127,这表示真正的指数比偏倚的指数小127。最小的偏倚的指数是1,其对应于真正的指数-126。最大的偏倚的指数是254,其对应于真正的指数127。HP和DP指数利用上表中所指示的偏倚以相同的方式起作用。
SP指数255(或DP指数2047或HP指数31)被预留用于无穷大一级称作NaN的特殊符号(不是数字)。无穷大(可以是正的或负的)具有零小数。具有指数255和非零小数的任意数字是NaN。无穷大提供了饱和值,所以它实际上表示类似于“该计算生成了大于以此格式能够表示的最大数字的数字”的事情。
对于并非用数学方法在实数上定义的运算(例如,除以零或取负数的平方根)返回NaN。
在任意格式中,指数零被预留用于次正规数和零。正规数表示如下值:
-1符号×1.小数×2e
其中e是从偏移的指数计算得出的真实指数。项1.小数被称作有效数字,并且1不被存储为FP数的一部分,而是从指数推导出的。除零和最大指数之外的全部指数指示1.小数形式的有效数字。指数零指示0形式的有效数字,并且真正的指数等于1-给定格式的偏倚。这样的数字被称为次正规数(历史上这些数字被称为非正规数,但是现代用法偏好术语次正规数)。具有等于零的指数部分和小数部分的数字是零。
表2具有HP格式的一些示例数字。这些条目是二进制的,其中添加了字符“_”以增加可读性。注意,次正规条目(该表的低第4行,具有零指数)与上一行中的正规条目相比产生了不同的有效数字。
表2:
符号 | 5位指数 | 10位小数 | 11位有效数字 | 值 |
0 | 01111 | 00_0000_0000 | 100_0000_0000 | 1.0×2<sup>0</sup> |
1 | 01110 | 10_0000_0000 | 110_0000_0000 | -1.1×2<sup>-1</sup> |
0 | 00001 | 10_0000_0000 | 110_0000_0000 | 1.1×2<sup>-14</sup> |
0 | 00000 | 10_0000_0000 | 010_0000_0000 | 0.1×2<sup>-14</sup> |
1 | 11111 | 00_0000_0000 | -无穷大 | |
0 | 11111 | 00_1111_0011 | NaN |
FP实现方式的大部分复杂度是由次正规数带来的,因此经常通过微代码或软件来处理次正规数。一些实现方式在硬件中处理次正规数,与软件或微代码实现方式相比使这些运算加速了10到100倍。
整数、定点型、浮点型
处理符号的FP方式被称为符号数值,并且它不同于整数被存储在计算机中的常规方式(二进制补码)。在符号数值表示中,同一数字的正版本和负版本的不同之处仅在于符号位。由符号位和3个有效数字位构成的4位符号数值整数将如下来表示正一或负一:
+1=0001
-1=1001
在二进制补码表示中,n位整数i由二进制n+1-位值2n+i的低阶n位来表示,所以4位二进制补码整数将如下来表示正一或负一:
+1=0001
-1=1111
二进制补码格式在实践中通用于有符号整数,因为它简化了计算机算法。
定点数看起来与整数一模一样,但事实上表示具有某些小数位的值。传感器数据经常是定点格式的,并且在广泛采用FP之前编写有大量定点软件。以定点数进行工作是十分冗长乏味的,因为程序员不得不跟踪“二进制点”(即,数字的整数部分和小数部分的分隔符),并且还不得不不断地对数字进行移位以保持这些位在正确的地方。FP数不具有这种困难,因此能够在定点数和FP数之间转换是可取的。能够进行这种转换还意味着我们能够继续使用定点软件和数据,但是在编写新软件时不再限于定点型。
舍入FP数
IEEE-754标准要求大部分FP运算就像该运算是以未舍入的范围和精度实现的那样被计算,然后进行舍入以适应于FP数。如果计算严格匹配FP数,则该值总是被返回,但是计算结果经常是介于两个连续浮点数之间的值。舍入是选取两个连续数字中哪个数字应当被返回的过程。
存在多种舍入方式,称为舍入模式;表3中示出了其中的六个。
表3:
该定义并没有告诉我们如何以任何切实可行的方式进行舍入。一种常用的实现方式是进行运算,关注截断值(即,满足FP格式的值)以及全部剩余位,并且如果某些条件成立则调整截断值。这些计算全部都基于:L—(最低)截断值的最低有效位
G—(防护)下一个最高有效位(即,第一位未被包括在截断中)
S—(粘滞)对并非截断的一部分的全部剩余位的逻辑或
在给定这三个值以及截断值时,我们总能根据表4计算出正确舍入的值。
表4:
模式 | 改变到截断值 |
RNE | 如果(L&G)|(G&S)则增大 |
RNA | 如果G则增大 |
RZ | 无 |
RP | 如果正的&(G|S)则增大 |
RM | 如果负的&(G|S)则增大 |
RX | 如果G|S则设置L |
例如,考虑使两个4为有效数字相乘,然后舍入到4位有效数字。
sig1=1011(十进制11)
sig2=0111(十进制7)
相乘产生
sig1×sig2=1001_101(十进制77)
L_Gss
截断的4位结果的最低有效位被标注为L,下一位是G,并且S是被标注为s的剩余位的逻辑或(即,S=0|1=1)。为进行舍入,我们根据舍入模式以及上表的计算来调整4位结果(1001)。所以。例如,在RNA舍入中,G被设置为使得我们得到1001+1=1010。对于RX舍入,G|S为真,所以我们将L设置为1(因为它已经是1了,所以在此情形下没有改变)并返回1001。
舍入整数和定点数
如果我们将FP数转换为整数或定点型,我们也不得不进行舍入。该概念与FP舍入基本相同。恰好为整数的FP数总是舍入到该整数。全部其他FP数位于两个连续整数之间,并且舍入决定返回哪个整数。不幸地是,用于整数的输入逻辑有点难,这是因为二进制补码和符号数值形式之间的差异。增大符号数值形式的数总是增大数值,所以增大的数离零更远。对于正的二进制补码形式的数会发生相同的事情,但是负的二进制补码形式的数在增大时变得更接近零。这意味着舍入逻辑不得不基于整数是正的还是负的而改变。这还意味着我们不得不仔细选取基值(将增大或不增大的值)。对于正整数,该值仅是截断的FP有效数字,所以1.37将具有基值1以及1或2的结果。对于负整数,我们同样截断有效数字并且取该结果的二进制反码(二进制反码是全部位被反相的原始数字),-1.37被截断到1并然后反相,给出基值-2。那么一切都解决了,因为我们希望我们的结果为-2或(当增大时)为-1。
为使事情更复杂,我们的转换方法需要一些计算来找到针对负整数的L、G和S。正确的舍入将需要我们完成二进制补码处理(反相并加1)并且然后计算L、G和S,但是与仅进行反相相比加1是慢的。理想地,我们想要从原始移位的输入来计算实际的L、G和S(即,从我们关于符号做任何事情之前的输入。所以浮点数1.37或-1.37都将右移到整数1)。
设L0、G0和S0为反相前的最低有效位(lsb)、防护以及粘滞,并且设Li、Gi和Si为反相后的lsb、防护以及粘滞,最后设L、G和S为反相且加1后的lsb防护以及粘滞。
如果S0是零,则对Si有影响的位全是一,因此(通过向那些Si位加1获得的)S也是零。如果S0非零,则Si不全是一,因此S非零。所以在所有情形下S0=S。
如果G0是零,则Gi是1,且除了存在来自S位的进位的情形(仅当S0是零时才会发生这种情形)外G也是一。如果G0是一,则Gi是零,且除了存在来自S位的进位的情形(仅当S0是零时才会发生这种情形)外G也是一。所以G=G0^S0。
通过非常类似的逻辑,L=L0^(G0|S0)。
现在有了针对正整数和负整数的L、G和S,我们能够给出表5中所示的舍入规则。
表5:
定点数舍入的方式与整数一模一样。针对(到整数或定点型)无符号转换的规则与针对正转换的规则相同。
注入舍入
进行舍入的更快速的方式是注入舍入常数作为有效数字加法的一部分,有效数字加法几乎是每个FP运算的一部分。为看看这是如果起作用的,考虑将以美元和美分计的数字相加,然后舍入到美元。如果我们加
我们看到和$3.62更接近$4而不是$3,所以无论哪个舍入到最近模式都应返回$4。如果我们用二进制来表示该数,则我们能够使用上一节的L、G、S方法获得相同的结果。但是,假设我们仅加五十美分,然后截断结果?
如果我们仅返回来自我们的和($4.12)的美元量($4),则我们已经使用RNA舍入模式正确地进行舍入。如果我们添加$0.99而不是$0.50,则我们将使用RP舍入来正确的进行舍入。RNE略微复杂些:我们添加$0.50,截断,然后查看剩余的美分。如果美分余数非零,则截断的结果是正确的。如果剩余的为零美分,则我们在注入之前恰好在两个美元量之间,所以我们选取偶数美元量。对于二进制FP,这相当于将美元量的最低有效位设置为零。
使三个数相加仅比使两个数相加略微慢点,因此与我们使两个有效数字相加、检查L、G和S、然后根据舍入模式来增大我们的结果相比,我们通过使用注入舍入更快地获得了舍入结果。
实现注入舍入
对于FP,舍入注入是三个不同值之一,这些值取决于舍入模式和(有时)结果的符号。
·RNA和RNE都要求我们在G位置注入1(这就像在美元和美分的示例中加$0.50)。
·RP和RM舍入取决于符号以及模式。RP向上舍入正结果(朝正无穷增大有效数字的大小)但截断负结果(选取更接近正无穷的有效数字)。类似地,RM向上舍入负结果(朝负无穷增大有效数字的大小)但截断正结果(选取更接近负无穷的有效数字)。因此,我们将RM和RP拆分为两种情形:当符号匹配舍入方向时向上舍入(RU),并且当符号与舍入方向不同时截断(RZ)。对于RU情形,我们在G位位置处以及逻辑上对s有影响的每个位置处注入1(这就像在美元和美分的示例中加$0.99)。
·对于RZ和RX模式,以及对于精简为RZ模式的RP和RM模式,我们注入零。
对于大多数舍入模式,添加舍入注入并然后截断给出了正确舍入的结果。两个例外是RNE和RX,它们要求在添加之后检查G和S。对于RNE,如果G和S都为零,则我们将L设置为0。对于RX,如果G或S非零,则我们将L设置为1。
FP数不是实数
很容易认为FP数就像实数一样,但是它们是根本不同的,即使是对于最基本的属性:
1.它们是不结合的。例如,在SP中,我们使3和数相加并返回1百万
或零,可能不会有什么人看作是舍入误差:
(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)=无穷大
3.在一些实现方式中,它们甚至不可交换,除非是默认NaN模式(将全部NaN转换为单一NaN的模式),因为一般而言,nanA+nanB!=
nanB+nanA。数值加和乘是可交换的。
4.因为IEEE NaN规则,不存在乘法单位元和加法单位元。一和零作为针对数值值的单位元。
考虑FP数的一种有用的方式是将它们看作非常长的定点数,其中至多有若干(对于DP是53个)连续位能够是非零的。例如,非无穷DP数可以使得有效数字的第一位在2046个位置中的任意位置,并且第一位后面跟着52个其他有效数字位,并且由符号位,所以有限的DP数可以被表示为2046+52+1=2099-位定点数。以此方式来看,这变得非常明显,使两个FP数相加一般不会得出另一FP数,不得不对加法的结果进行舍入以使得它成为FP数。
图1概要地示出了数据处理装置2的示例,数据处理装置2包括处理器核4和存储器6。在一些情形下,存储器6可以包括缓存或层级结构中若干级缓存。核4包括用于使用寄存器10中所存储的数据值执行数据处理运算的处理电路8。处理电路8可以包括用于使用寄存器14中所存储的数据值执行标量处理运算的标量处理电路12,以及用于使用寄存器18中所存储的向量数据值执行向量处理运算的向量处理电路(也被称作单指令多数据(SIMD)电路)16。寄存器10还可以包括用于存储用于控制处理电路8的处理运算的各种控制参数的寄存器20。标量寄存器中所存储的每个值包括单一数值值,其可以是例如浮点值、定点值或整数值,相反地,向量寄存器18存储向量值,向量值可以支持在同一操作数内的多个元素,其中每个数据元素被单独处理以生成结果向量的单独的结果数据元素。向量处理电路16可以支持具有不同大小的数据元素的向量。例如,64位向量中的值可以例如被看作是一个64位元素、两个32位元素、四个16位元素或八个8位元素的向量。下面将参考图2来讨论向量处理的示例。将认识到,在一些情形下,一些电路能够在标量处理电路12和向量处理电路16之间共享。类似地,在一些情形下,向量寄存器18可以与标量寄存器14的一部分重叠。标量处理电路12和向量处理电路16可以包括诸如加法器、乘法器、移位器以及其他处理元件之类的元件,这些元件用于对寄存器中所存储的数据值执行算术运算、逻辑运算以及其他操纵以生成将被写回到寄存器10的结果值。
核4还具有指令提取单元30、指令管线32、指令解码器34以及加载存储单元36。在操作中,程序指令可由指令提取单元30从存储器6中提取并提供给指令管线32。管线32可以具有各种管线级,包括例如解码级、寄存器重命名级、以及发布级。管线32可以支持乱序执行,其中程序指令可由处理电路8以不同于指令被存储在存储器中的程序顺序的顺序来执行。在管线的恰当的级处,指令被指令解码器34解码以生成用于控制寄存器10、处理电路8和加载存储单元36的操作的控制信号。例如,响应于加载/存储指令,加载/存储单元36可以从存储器6加载数据并将数据放在存储器10中,或者将数据从寄存器10存储到存储器6。响应于数据处理指令,处理电路8可以被控制以对从寄存器10读取的一个或多个值执行数据处理运算以生成结果值,该结果值然后将被写回到目的地计算器。将认识到,装置2可以包括许多另外的元件,图1的表示为简洁起见而进行了简化。
图2示出了执行向量处理的示例。向量处理电路16包括多个处理单元40,它们用于提供的对向量的各个部分进行运算以生成结果值的相应部分的并行处理线路。在操作中,解码器34解码向量指令,该向量指令指定存储一个或多个操作数向量V1、V2的寄存器和将向其中写入结果向量VR的目的地寄存器。一些指令可以仅指定一个操作数向量而不是两个。针对一些指令,操作数向量之一可以是先前存储于目的地寄存器中的值。响应于向量指令,每个处理线路的处理单元40处理操作数向量V1、V2的相应的数据元素以生成结果向量VR的相应的结果元素。例如,每个处理线路可以对操作数向量的数据元素进行加、减、乘,或者执行任意其他操纵以生成结果(包括在不同数字格式之间的可能转化)。
如图2中所示,针对给定向量运算并不需要全部处理线路都是活动的。控制信息可以在用于控制每个线路的操作的谓词寄存器VP中被提供。在一些情形下,谓词寄存器可以由向量指令来指定,或者替代地,谓词寄存器可以是用于全部向量指令的默认寄存器或者以某种其他方式来指定。如图2中所示,谓词寄存器可以包括各自对应于处理线路之一的控制字段45。每个控制字段包括屏蔽位M,其指示相应的处理线路是活动线路还是不活动线路。对于活动线路,根据操作数向量V1、V2的相应的数据元素生成相应的结果数据元素。对于不活动线路。该线路的向量VR的结果数据元素与操作数V1、V2的相应的元素无关。例如,在图2中所示的示例中,线路1的屏蔽位被设置为0,以指示线路1是不活动线路,而线路0、2和3是活动线路,它们的屏蔽位被设置为1。可以以不同的方式来生成不活动线路的结构数据元素。例如,不活动线路的结构数据元素可被设置为预定值(例如,零),或者能够保持目的地寄存器的相应的数据元素在向量指令被执行之前所具有的值。对于将多个不同向量指令的结果装进单一值内以使得特定向量指令可以仅填充目的地寄存器的一些元素并且可以使其他元素保持不变,指定活动/不活动线路可能是有用的。谓词设置指令可被用于在执行相应的向量指令前设置谓词寄存器VP的屏蔽位M[0]-M[3]。
将认识到,对屏蔽位的使用仅是示例,并且存在表示那些线路是活动线路以及哪些线路不活动的其他方式。例如,谓词寄存器可以存储指示有效元素的数目的向量长度参数,其中处理电路将最低有限线路向上到所指示的长度内的数据元素作为活动线路进行处理。例如,向量长度2可以指示2个最低有效元素应当被处理。
如上面所解释的,对于一些处理运算,需要将结果舍入到可以结果格式表示的值。在浮点运算的情形下尤其如此,但是对于一些整数或定点运算也会发生,尤其是当存在从一种格式到另一格式的转换时,当可以第一格式表示的值无法以第二格式精确地表示时。因此,针对一些指令,每个向量处理的线路中可能都需要舍入。
可以有不同的方式来指示将被使用的舍入模式。一些指令可以在指令编码中指定具体的舍入模式。然而,这占用编码空间来指示舍入模式,这可能减少可被包括在指令集中的其他类型的指令的数目。并且,控制寄存器20之一可以是用于存储控制浮点处理的信息的浮点控制寄存器(FPCR)42,其包括设置将由每个向量处理的线路使用的默认舍入模式的舍入模式值44。然而,设置浮点控制寄存器可能是相对较慢的,尤其是需要以不同舍入模式计算多个值时。例如,一些库可能希望以若干不同的舍入模式来计算同一算术运算以研究该算术运算的结果的真值。如图3中所示,为了使用四种不同的舍入模式来计算使标量操作数R1、R2相加的结果,这将需要四个控制设置指令(SET)来将浮点控制寄存器42中的舍入模式参数44设置为针对每个舍入模式(FADD)的恰当值,并且需要四个加指令以在每个控制设置指令后使用所指定的舍入模式来执行加法。
通过提供向量处理电路16可以避免这些问题,向量处理电路16支持以针对两个或更多个处理线路40中的各个线路的不同舍入模式来执行这些线路以使得每个线路可以使用不同的舍入模式来生成相应的结果数据元素的舍入值。谓词寄存器VP的每个控制字段可以包括舍入模式字段46,舍入模式字段46可以指定标识将被用于线路的舍入模式的线路舍入模式值LRM。每个线路中的处理单元40可以具有舍入电路48,舍入电路48响应于线路舍入模式值LRM而根据指定的舍入模式来生成舍入增量。例如,线路舍入模式值LRM可以控制在浮点运算中计算出的L、G和S位被映射到舍入增量的方式,如上面在表4和表5中所示。舍入增量可以被添加到线路的结果或者被用于注入舍入,以使用针对该线路指定的舍入模式来生成结果值。因此,如在图2中所示,针对每个活动线路,根据相应的舍入模式值LRM来执行舍入,从而每个线路中的舍入模式可以被独立地控制。线路舍入模式值LRM的位到相应舍入模式的映射是任意的,并且能够基于给定电路实现方式的特定需求进行选择。并不需要支持上面在图3中讨论的所有舍入模式,并且可以指示某些其他舍入模式。
指定默认舍入模式值44的浮点控制寄存器可以是可选的,并且在一些情形下将由每个线路使用的舍入模式可以完全由谓词寄存器VP中相应的线路舍入模式值LRM指定。其他实施例仍可以在浮点控制寄存器42中提供默认舍入模式值44。当针对特定向量线路的线路舍入模式值LRM具有默认值(例如为零)时,浮点控制寄存器42中指示的舍入模式可被用于该线路。如果线路舍入模式具有不同于默认值的值,则可以为该线路选择可以不同于其他线路的特定舍入模式。针对与旧有程序的兼容性该途径可能是有用的,这些旧有程序可以是已经在假设浮点控制寄存器42将指定每个线路的舍入模式的情况下编写而成的。这样的程序仍可被正常执行,然而考虑到特定于线路的舍入而编写的程序能够开发在谓词寄存器中分别针对每个线路指示舍入模式的新功能。如果谓词寄存器中可用于编码线路舍入模式值LRM的位空间具有比表示硬件中所支持的全部可能舍入模式将需要的位少的位,则在浮点控制寄存器中提供默认舍入模式项也可能是有用的。在此情形下,线路舍入模式编码可被分配给预期在逐线路的基础上最频繁使用的舍入模式的子集,而其他舍入模式仅可用于使用浮点控制寄存器42中的舍入模式指定值44将向量作为整体进行选择。
如图4中所示,通过支持针对每个线路的不同舍入模式,则可以使用更少的指令来执行图3中所示的操作。第一指令(SET)可以设置谓词寄存器VP,以使得字段46中的线路舍入模式值指示针对每个线路的不同舍入模式。向量加指令(VFADD)然后可以使两个向量相加,其中每个线路使用谓词寄存器的相应字段所指示的舍入模式。在此示例中,两个指令足以计算与图3中的八个指令相同的结果。因此,可以实现大的性能提升、功率节省以及代码存储量的减少,而不需要额外的编码空间来明确地在指令中指示每个舍入模式。这能够通过相对少量的硬件增加来提供,因为每个线路可能已经具有用于基于上面所解释的使用不同舍入模式的L、G、S生成舍入增量的电路,但是可以提供一些额外的控制电路来独立于其他线路地配置每个线路内的舍入电路以根据针对该线路指定的舍入模式来生成舍入增量。因此,可以利用少量额外的电路来实现性能和功耗的显著改进。
虽然图2示出了在同一谓词寄存器中示出线路舍入模式控制信息和屏蔽信息的示例,但是其他示例可以以不同方式来表示舍入控制信息,例如,与屏蔽信息在不同控制器中。然而,一些向量处理系统可能已经具有指定这样的屏蔽信息的谓词寄存器,该谓词寄存器在一些情形下可以具有尚未使用的闲置位。例如,这可能是因为屏蔽信息被存储在寄存器中或者具有固定大小,但是向量中具有比寄存器中的位少的数据元素。在此情形下,谓词寄存器中的闲置位可被重用于指示线路舍入模式信息,从而不需要任何额外的寄存器空间。在这种类型的系统中,可以预期谓词寄存器的尚未使用的位应当是0,从而线路舍入模式的0值可被选择作为默认值,该默认值使得线路根据浮点控制寄存器42中所指定的默认舍入模式进行操作。这使得系统以与现有系统相同的功能来处理旧有代码,同时新代码可以开发为每个线路提供不同舍入模式的额外功能。
并非全部指令都可能需要每线路舍入。对于一些指令,可能完全没有任何对于任何舍入的需求,或者使用相同的输入模式来执行对每个数据元素的输入可能就足够了。对于这些指令,线路舍入模式字段46可被重用于指示其他类型的信息。例如,虽然针对浮点向量指令字段46可以指示线路舍入模式值LRM,但是针对整数指令这些字段46可以提供在每线路的基础上有所区分的其他信息。
例如,针对一些算术指令,控制字段46可以指示每个线路应当根据饱和算法还是非饱和算法来生成结果。针对被指示为使用饱和算法的线路,如果处理结果具有大于结果数据元素所表示的最大值的值或者小于结果数据元素所表示的最小值的值,则结果数据元素分别可被设置为该最大值或最小值。针对非饱和算法,如果结果超过结果数据元素的最大值则它可以绕回并被设置为该结果数据元素所表示的有效性的较低端的值,并且上溢标志被设置。类似地,针对使用非饱和算法的下溢,可以生成实际上表示较大值的值,但是会设置下溢标志。通过提供在每线路的基础上选择这些不同类型的运算的能力,这可以允许以与图3和图4的示例类似的方式使用单一向量指令比先前的系统更快地执行给定运算集。
控制字段46还可被用于指示哪部分处理结果应当由相应的结果数据元素来表示的一些指令。例如,乘法指令可以生成大于能够满足给定线路的结果数据元素的值的乘积。虽然一些指令可能会将该乘积舍入到可在结果数据元素中表示的值,但是其他指令可以仅在结果数据元素中指示该结果的一部分。控制字段46能够被用于指示应当由结果数据元素来表示哪部分。例如,乘积通常将是输入元素的两倍宽,所以控制字段46中的位可以选择该线路生成该乘积的上半部分还是下半部分。如果相邻线路被提供相同的一对输入和指定乘积的相对的半部分的控制信息,则这能够使得相邻线路生成两个数据元素,它们一起表示整个乘积(上面的元素表示乘积的上半部分并且下面的元素表示乘积的下半部分)。这对于数据元素大小转换可能是有用的,从而结果向量可以实际上具有是输入向量的两倍大小的数据元素。
而且,控制字段可被用于指示针对给定算术指令向每个线路应用哪种具体的算术运算。例如,控制字段能够包括指示输入向量V1、V2的相应元素是将被加还是被减的标志,从而响应于单一指令一些线路可以执行加法而其他线路可以执行减法。对于执行减法的那些线路,输入向量之一(例如,V2)的数据元素可以被反相,然后被与另一向量(例如,V1)的数据元素相加,同时对进位输入进行断言,以给出与减法相同的结果,而对于执行加法的线缆,相应数据元素可以仅被相加而无需反相也无需断言进位输入。
虽然图2示出了每个处理线路具有指定针对该线路将被执行的算术预算的类型的独立的控制字段,但是将认识到这并不是必须的,并且其他示例可以仅针对一些线路执行独立的算术运算的类型。例如,图2中所示的四个线路能够被划分为两个子集,从而线路0和1执行谓词寄存器VP的第一控制字段所指示的一种类型的运算,并且线路2和3执行谓词寄存器VP的第二控制字段所指示的另一类型的运算。
虽然图2示出了向量各自包括四个数据元素并且有四个处理单元40从而每个元素可被并行处理的示例,但这不是必要的。一些系统可以支持大于硬件中所提供的线路的数目的向量。例如,如果输入向量具有多于四个元素,它们可通过若干次经过处理单元40而被处理,每个经过处理这些数据元素中的四个数据元素。然后可以从每次经过中所生成的结果数据元素来装配最终结果向量。在一些情形下,当向量大小比硬件中所提供的线路的数目长时,可以跨寄存器组10的多个寄存器存储这些向量。
一些系统还可以支持具有不同大小的数据元素的向量。例如,64位向量可被划分为单一64位数据元素、两个32位数据元素,四个16位数据元素、或八个8位护具元素。在此情形下,谓词寄存器VP还可以指示当前运算的数据元素大小。处理单元可以具有多个固定大小的处理单元,其中图2中所指示的每个向量线路40根据当前所选择的数据元素大小而包括这些处理单元中的一个或多个处理单元。
对于处理电路而言具有用于并行地处理多个处理线路的并行处理单元也不是必要的。在一些系统中,向量处理电路16可以包括单一处理单元,该处理单元一次执行一个线路,每个线路具有不同的舍入模式。
图5示出了生成针对特定处理线路的结果元素的方法的示例。将认识到,可以针对每个线路执行这些步骤,无论顺序地还是并行地,一次处理若干个线路。在步骤100,确定当前线路(以索引x来指代)是否具有有效数据。如果该线路的屏蔽位M[x]是1,则该线路具有有效数据,而如果M[x]是0,则该线路不具有有效数据。如果线路x的数据是无效的,则在步骤102,与相应的数据元素V1[x]、V2[x]无关地生成该线路的结果数据元素VR[x]。例如,VR[x]可以被设置为默认值,或者可以简单地保持已经被存储在目的寄存器的相应部分中的相同值。
对于活动线路,在步骤104,确定当前向量指令是否是支持每线路舍入的指令类型。如果不是,则在步骤106,根据输入向量V1[x]、V2[x]的相应元素生成该线路的结果数据元素VR[x]。如果当前操作需要某种舍入,则这可以根据浮点控制寄存器42中所指示的舍入模式来执行。线路舍入模式字段46可以提供以某种方式来影响该线路的处理的其他信息,比如,指示是否使用饱和算法的信息、指示将被生成的结果的有效性的信息、或者指示将被执行的算术运算的类型的信息。
如果当前指令不支持每线路舍入,则在步骤108,确定针对该线路的线路舍入模式值LRM[x]是否具有默认值。如果是,则在步骤110,使用浮点控制寄存器42所指定的舍入模式基于相应的数据元素V1[x]、V2[x]来生成结果数据元素VR[x]。然而,与步骤106不同,在步骤110中,该舍入模式有可能可以与其他线路所使用的舍入模式不同。另一方面,如果线路舍入模式值LRM[x]不具有默认值,则在步骤112,使用线路舍入模式值LRM[x]所指定的舍入模式基于相应的数据元素V1[x]、V2[x]来生成该线路的结果数据元素VR[x]。
在本申请中,使用词语“被配置为……”来表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的布局或互连方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可被编程以执行该功能。“被配置为”不暗示为了提供所定义的操作该装置元件需要以任何方式进行改变。
虽然这里已经参考附图描述了本发明的说明性实施例,但是应理解本发明不限于那些精确的实施例,并且可以由本领域技术人员在不背离由所附权利要求限定的本发明的范围和精神的情况下引起各种变化和修改。
Claims (10)
1.一种用于数据处理的装置,包括:
处理电路,所述处理电路响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路,以生成结果向量的相应的结果数据元素,其中所述处理电路支持以不同舍入模式执行所述多个处理线路中的至少两个处理线路,以生成所述结果向量的相应的结果数据元素的舍入值;
第一控制存储位置,所述第一控制存储位置用于存储指示默认舍入模式的变量舍入模式参数;以及
第二控制存储位置,所述第二控制存储位置包括多个控制字段,每个控制字段用于存储用于控制相应的处理线路的控制信息,
其中针对至少一种类型的向量指令,所述控制信息包括指定将被用于相应的处理线路的舍入模式的舍入模式值;并且
响应于所述至少一种类型的向量指令:
当存储在所述第二控制存储位置中的与给定处理线路相对应的所述舍入模式值具有默认值时,所述处理电路将使用由存储在所述第一控制存储位置中的所述变量舍入模式参数指示的所述默认舍入模式来执行所述给定处理线路;并且
当存储在所述第二控制存储位置中的与所述给定处理线路相对应的所述舍入模式值具有除所述默认值之外的值时,所述处理电路将使用由存储在所述第二控制存储位置中的与所述给定处理线路相对应的所述舍入模式值指示的所述舍入模式来执行所述给定处理线路。
2.如权利要求1所述的装置,其中,所述处理电路支持至少当在处理浮点向量指令时以不同的舍入模式来执行所述多个处理线路中的至少两个处理线路。
3.如权利要求1所述的装置,其中,所述处理电路包括舍入电路,所述舍入电路根据所述控制信息针对每个线路所指定的输入模式来生成针对该线路的舍入增量。
4.如权利要求1所述的装置,其中,所述控制字段中的每一个包括舍入字段,针对至少一种其他类型的向量指令,所述舍入字段指定除所述舍入模式值之外的信息。
5.如权利要求4所述的装置,其中,除所述舍入模式值之外的所述信息指示以下各项中的至少一项:
针对相应的处理线路将被执行的算术运算或逻辑运算的类型;
相应的处理线路将使用饱和算法还是非饱和算法来生成所述结果数据元素;以及
将由相应的结果数据元素来表示相应的处理线路的结果的哪部分。
6.如权利要求1所述的装置,其中,每个控制字段包括指定相应的处理线路是活动线路还是不活动线路的信息,针对所述活动线路,相应的结果数据元素将根据所述至少一个操作数向量的相应的数据元素被生成,而针对所述不活动线路,结果向量的相应的结果数据元素与所述至少一个操作数向量的所述相应的数据元素无关。
7.如任意前述权利要求所述的装置,其中,所述处理电路包括多个处理单元,所述多个处理单元至少执行所述多个处理线路中一些处理线路。
8.如权利要求7所述的装置,其中,所述处理电路包括M个处理单元,其中M > 1,并且如果所述向量指令需要多于M个处理线路,则所述处理电路被配置为通过多个经过所述处理单元来执行所述多个处理线路。
9.一种用于数据处理的设备,包括:
处理装置,所述处理装置用于响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素,其中所述处理装置支持以不同舍入模式执行所述多个处理线路中的至少两个处理线路,以生成所述结果向量的相应的结果数据元素的舍入值;
第一存储装置,所述第一存储装置用于存储指示默认舍入模式的变量舍入模式参数;以及
第二存储装置,所述第二存储装置用于存储多个控制字段,所述多个控制字段包括用于控制相应的处理线路的控制信息,
其中针对至少一种类型的向量指令,所述控制信息包括指定将被用于相应的处理线路的舍入模式的舍入模式值;并且
响应于所述至少一种类型的向量指令:
当存储在所述第二存储装置中的与给定处理线路相对应的所述舍入模式值具有默认值时,所述处理装置将使用由存储在所述第一存储装置中的所述变量舍入模式参数指示的所述默认舍入模式来执行所述给定处理线路;并且
当存储在所述第二存储装置中的与所述给定处理线路相对应的所述舍入模式值具有除所述默认值之外的值时,所述处理装置将使用由存储在所述第二存储装置中的与所述给定处理线路相对应的所述舍入模式值指示的所述舍入模式来执行所述给定处理线路。
10.一种数据处理方法,包括:
通过处理电路,响应于向量指令而对至少一个操作数向量的各个数据元素执行多个处理线路以生成结果向量的相应的结果数据元素;
其中所述多个处理线路中的至少两个处理线路以不同舍入模式被执行,以生成所述结果向量的相应的结果数据元素的舍入值
其中,第一控制存储位置存储指示默认舍入模式的变量舍入模式参数;以及
第二控制存储位置包括多个控制字段,每个控制字段用于存储用于控制相应的处理线路的控制信息,
其中针对至少一种类型的向量指令,所述控制信息包括指定将被用于相应的处理线路的舍入模式的舍入模式值;并且
响应于所述至少一种类型的向量指令:
当存储在所述第二控制存储位置中的与给定处理线路相对应的所述舍入模式值具有默认值时,所述处理电路将使用由存储在所述第一控制存储位置中的所述变量舍入模式参数指示的所述默认舍入模式来执行所述给定处理线路;并且
当存储在所述第二控制存储位置中的与所述给定处理线路相对应的所述舍入模式值具有除所述默认值之外的值时,所述处理电路将使用由存储在所述第二控制存储位置中的与所述给定处理线路相对应的所述舍入模式值指示的所述舍入模式来执行所述给定处理线路。
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/564,708 | 2014-12-09 | ||
US14/564,708 US9916130B2 (en) | 2014-11-03 | 2014-12-09 | Apparatus and method for vector processing |
PCT/GB2015/052591 WO2016071661A1 (en) | 2014-11-03 | 2015-09-08 | Apparatus and method for vector processing with selective rounding mode |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077416A CN107077416A (zh) | 2017-08-18 |
CN107077416B true CN107077416B (zh) | 2020-11-27 |
Family
ID=55852722
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058330.9A Active CN107077416B (zh) | 2014-11-03 | 2015-09-08 | 用于以选择性舍入模式进行向量处理的装置和方法 |
CN201580058275.3A Active CN107077415B (zh) | 2014-11-03 | 2015-09-18 | 用于执行转换运算的装置和方法 |
CN201580058293.1A Active CN107077323B (zh) | 2014-11-03 | 2015-09-18 | 使用可编程有效性数据的数据处理的装置和方法 |
CN201580058291.2A Active CN107077322B (zh) | 2014-11-03 | 2015-09-18 | 用于执行转换运算的装置和方法 |
CN201580058383.0A Active CN107077417B (zh) | 2014-11-03 | 2015-09-22 | 有效性配准 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058275.3A Active CN107077415B (zh) | 2014-11-03 | 2015-09-18 | 用于执行转换运算的装置和方法 |
CN201580058293.1A Active CN107077323B (zh) | 2014-11-03 | 2015-09-18 | 使用可编程有效性数据的数据处理的装置和方法 |
CN201580058291.2A Active CN107077322B (zh) | 2014-11-03 | 2015-09-18 | 用于执行转换运算的装置和方法 |
CN201580058383.0A Active CN107077417B (zh) | 2014-11-03 | 2015-09-22 | 有效性配准 |
Country Status (5)
Country | Link |
---|---|
US (8) | US9916130B2 (zh) |
JP (2) | JP6853777B2 (zh) |
CN (5) | CN107077416B (zh) |
GB (3) | GB2545607B (zh) |
WO (8) | WO2016071661A1 (zh) |
Families Citing this family (62)
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 |
US9733899B2 (en) * | 2015-11-12 | 2017-08-15 | Arm Limited | Lane position information for processing of vector |
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 |
WO2018204898A1 (en) * | 2017-05-04 | 2018-11-08 | 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 |
EP3617959B1 (en) | 2018-02-13 | 2021-08-04 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
US11709672B2 (en) | 2018-02-13 | 2023-07-25 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991225A (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 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
EP3825841A1 (en) | 2018-06-27 | 2021-05-26 | Shanghai Cambricon Information Technology Co., Ltd | Method and device for parallel computation of a network model |
KR102519467B1 (ko) | 2018-08-28 | 2023-04-06 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체 |
US11703939B2 (en) | 2018-09-28 | 2023-07-18 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device and related products |
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 | 小黄狗环保科技有限公司 | 一种适用于饮料瓶回收机投递物分类识别的模型融合方法 |
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 |
US10963245B2 (en) | 2019-02-06 | 2021-03-30 | Arm Limited | Anchored data element conversion |
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 |
US11934940B2 (en) | 2019-04-18 | 2024-03-19 | Cambricon Technologies Corporation Limited | AI processor simulation |
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 |
CN112394903A (zh) * | 2019-08-13 | 2021-02-23 | 上海寒武纪信息科技有限公司 | 短整形转半精度浮点指令处理装置、方法及相关产品 |
US10790830B1 (en) | 2019-05-20 | 2020-09-29 | Achronix Semiconductor Corporation | Fused memory and arithmetic circuit |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
US11675676B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method 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 |
WO2021036904A1 (zh) | 2019-08-23 | 2021-03-04 | 安徽寒武纪信息科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
WO2021106253A1 (ja) * | 2019-11-27 | 2021-06-03 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
JP6810437B1 (ja) * | 2019-11-27 | 2021-01-06 | 株式会社コアコンセプト・テクノロジー | 情報処理装置、プログラム、及び情報処理方法 |
CN111290790B (zh) * | 2020-01-22 | 2023-03-24 | 安徽大学 | 一种定点转浮点的转换装置 |
CN111708986B (zh) * | 2020-05-29 | 2024-07-19 | 四川旷谷信息工程有限公司 | 管廊状态参数测量方法 |
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 |
US11429349B1 (en) | 2021-03-23 | 2022-08-30 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with carry-save accumulator |
US11366638B1 (en) | 2021-03-23 | 2022-06-21 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with combined alignment circuits |
JP7235171B2 (ja) * | 2021-04-06 | 2023-03-08 | 三菱電機株式会社 | 固定小数点演算ビット幅の検証システム及び決定システム |
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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773483A (zh) * | 2004-11-05 | 2006-05-17 | 国际商业机器公司 | 控制单指令多数据浮点单元中的舍入模式的装置与方法 |
CN1820246A (zh) * | 2003-05-09 | 2006-08-16 | 杉桥技术公司 | 执行饱和或不执行饱和地累加多操作数的处理器还原单元 |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
Family Cites Families (68)
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 |
DE3138897C2 (de) * | 1981-09-30 | 1987-01-08 | Siemens AG, 1000 Berlin und 8000 München | Schaltungsanordnung zum Ausrichten von Speicheroperanden für 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 | 上海奇码数字信息有限公司 | 可控制锁存累加器的系统与方法 |
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 |
US7797363B2 (en) * | 2004-04-07 | 2010-09-14 | Sandbridge Technologies, Inc. | Processor having parallel vector multiply and reduce operations with sequential semantics |
US7725519B2 (en) * | 2005-10-05 | 2010-05-25 | Qualcom Incorporated | Floating-point processor with selectable subprecision |
US20070186082A1 (en) | 2006-02-06 | 2007-08-09 | Boris Prokopenko | Stream Processor with Variable Single Instruction Multiple Data (SIMD) Factor and Common Special Function |
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,875 patent/US9778906B2/en active Active
- 2014-12-24 US US14/582,812 patent/US9665347B2/en active Active
- 2014-12-24 US US14/582,836 patent/US9766857B2/en active Active
- 2014-12-24 US US14/582,974 patent/US9690543B2/en active Active
- 2014-12-24 US US14/582,978 patent/US9703529B2/en active Active
-
2015
- 2015-01-27 US US14/606,510 patent/US9886239B2/en active Active
- 2015-09-08 WO PCT/GB2015/052591 patent/WO2016071661A1/en active Application Filing
- 2015-09-08 CN CN201580058330.9A patent/CN107077416B/zh active Active
- 2015-09-08 GB GB1705562.5A patent/GB2545607B/en active Active
- 2015-09-18 GB GB1705563.3A patent/GB2546906B/en active Active
- 2015-09-18 JP JP2017522513A patent/JP6853777B2/ja active Active
- 2015-09-18 WO PCT/GB2015/052700 patent/WO2016071663A1/en active Application Filing
- 2015-09-18 CN CN201580058275.3A patent/CN107077415B/zh active Active
- 2015-09-18 CN CN201580058293.1A patent/CN107077323B/zh 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 WO PCT/GB2015/052699 patent/WO2016071662A1/en active Application Filing
- 2015-09-22 GB GB1705565.8A patent/GB2546907B/en active Active
- 2015-09-22 WO PCT/GB2015/052730 patent/WO2016071665A1/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/052733 patent/WO2016071668A1/en active Application Filing
- 2015-09-22 WO PCT/GB2015/052732 patent/WO2016071667A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1820246A (zh) * | 2003-05-09 | 2006-08-16 | 杉桥技术公司 | 执行饱和或不执行饱和地累加多操作数的处理器还原单元 |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
CN1773483A (zh) * | 2004-11-05 | 2006-05-17 | 国际商业机器公司 | 控制单指令多数据浮点单元中的舍入模式的装置与方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
TWI784980B (zh) | 用於執行算術運算以累加浮點數的裝置及方法 | |
CN108351761B (zh) | 将使用冗余表示的第一和第二操作数相乘的方法和装置 | |
US9608662B2 (en) | Apparatus and method for converting floating-point operand into a value having a different format | |
CN108351776B (zh) | 数据处理方法和装置 | |
US10579338B2 (en) | Apparatus and method for processing input operand values | |
US9720646B2 (en) | Redundant representation of numeric value using overlap bits | |
US9928031B2 (en) | Overlap propagation operation | |
JP7541524B2 (ja) | アンカーデータ要素における特殊値の符号化 | |
GB2549153A (en) | Apparatus and method for supporting a conversion instruction | |
US10963245B2 (en) | Anchored data element conversion | |
US11704092B2 (en) | High-precision anchored-implicit processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |