CN101882064B - 响应指令执行舍入运算 - Google Patents
响应指令执行舍入运算 Download PDFInfo
- Publication number
- CN101882064B CN101882064B CN201010200409XA CN201010200409A CN101882064B CN 101882064 B CN101882064 B CN 101882064B CN 201010200409X A CN201010200409X A CN 201010200409XA CN 201010200409 A CN201010200409 A CN 201010200409A CN 101882064 B CN101882064 B CN 101882064B
- Authority
- CN
- China
- Prior art keywords
- rounding mode
- operand
- round
- pattern
- source operand
- 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 abstract description 53
- 230000002159 abnormal effect Effects 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 12
- 238000012856 packing Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 10
- 210000004027 cell Anatomy 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 206010027476 Metastases Diseases 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 229910003460 diamond Inorganic materials 0.000 description 2
- 239000010432 diamond Substances 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000005764 inhibitory process Effects 0.000 description 2
- 230000009401 metastasis Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical 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/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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明涉及响应指令执行舍入运算,在一个实施例中,提供了一种方法,用于在处理器中接收舍入指令和立即值,确定立即值的舍入模式替换指示符是否有效,并且如果是这样的话,则在处理器的浮点单元中,响应该舍入指令并且根据在立即操作数中规定的舍入模式,以源操作数执行舍入运算。对其它的实施例进行了描述并要求其权益。
Description
本申请是分案申请,其母案申请号为200710170152.6,其母案申请日为2007年9月21日,其母案发明名称为:“响应指令执行舍入运算”。
技术领域
本发明一般涉及处理器对数据执行的数学运算,特别是涉及舍入运算。
背景技术
处理器对数据执行各种各样的数学运算。数据可能属于不同的类型,包括例如具有不同内在精度的整数值和浮点(FP)值。当处理FP值时,在其它这样的操作之中,数学运算、比如乘法或加法的结果有可能产生需要将其转换为较低精度格式的结果。相应地,可以执行舍入运算以将该FP结果进行舍入。
尽管这样的舍入运算可以作为不同数学运算的一部分来执行,但是在一些处理器体系结构中,限制了或不能够作为独立运算对数据元素执行舍入运算,或者无需多个复杂的步骤。例如,处理器可以配置为根据缺省舍入模式执行FP值到整数值的舍入。然而,因为种种理由,可能需要根据不同的模式来将给定的源操作数进行舍入。为了完成这样的运算,可能出现保存处理器的当前配置状态、加载包括关于所要求的舍入模式的信息在内的新的配置状态、执行舍入运算以及恢复原始处理器状态等的复杂步骤。这些操作可能是耗费时间的,提高了复杂性并且耗费了过多的处理器周期。另外,虽然随着新的程序设计语言的发展,所希望的是支持其它的舍入模式,但是,在处理器中所执行的舍入运算通常仍然按照有限数量的舍入模式、即已在电气和电子工程师学会(IEEE)标准754-1985(1985年发表)中所阐述的舍入模式进行。
发明内容
根据本发明的第一方面,提供了一种方法,包括以下步骤:
接收包括指示舍入模式的舍入信息的指令集体系结构(ISA)的舍入指令;
根据所述舍入信息来确定所述舍入模式;以及
根据舍入模式来对操作数执行舍入运算。
根据本发明的第二方面,提供了一种装置,包括:
控制器,接收包括具有指示舍入模式的模式字段和替换指示符的舍入信息的指令集体系结构(ISA)的舍入指令,所述控制器根据所述替换指示符来确定是否替换缺省舍入模式,所述控制器根据所述舍入信息来确定所述舍入模式;以及
执行单元,根据所述舍入模式来对操作数执行舍入运算。
根据本发明的第三方面,提供了一种系统,包括:
处理器,根据舍入模式来对操作数执行舍入运算,所述舍入模式根据用户级舍入指令来确定,所述用户级舍入指令包括指示舍入模式的舍入信息;
耦合到所述处理器的存储器。
根据本发明的第四方面,提供了一种方法,包括以下步骤:
接收包括舍入信息的用户级舍入指令,所述舍入信息具有替换指示符和指示舍入模式的模式字段;
根据替换信息来确定是否替换缺省舍入模式;以及
如果替换所述缺省舍入模式,则从所述模式字段获得所述舍入模式;
根据所述舍入模式和将被舍入的操作数来把预定值加到所述操作数上;以及
根据所述舍入模式来对加法结果执行舍入运算。
根据本发明的第五方面,提供了一种装置,包括:
控制器,接收包括指示舍入模式的舍入信息的舍入指令,以便根据所述舍入信息来确定是否替换缺省舍入模式;以及如果替换所述缺省舍入模式,则从所述舍入信息获得所述舍入模式;以及
执行单元,根据所述舍入模式和将被舍入的操作数来把预定值加到所述操作数上,并根据所述舍入模式来对加法结果执行舍入运算。
附图说明
图1是根据本发明的一个实施例的方法的流程图。
图2是根据本发明的一个实施例的处理器的一部分的框图。
图3是根据本发明的一个实施例、结合指令使用的立即数据元素的框图。
图4是根据本发明的一实施例用于执行舍入运算的方法的流程图。
图5是根据本发明的一个实施例的系统的框图。
具体实施方式
在不同的实施例中,在处理器中、例如在处理器的浮点单元(FPU)中可使用指令集体系结构(ISA)的多个舍入指令来有效地执行舍入运算。除了在电气和电子工程师学会(IEEE)标准754-1985(1985年发表)(在这里IEEE标准用于二元浮点运算或者IEEE标准754)中阐明的舍入模式之外,实施例可用于根据其它舍入模式来执行舍入运算。例如,如下所述,在有些实施例中,指令可提供对部分远离零的以及远离零的舍入运算的支持。此外,这些舍入运算可以和许多数据类型一起使用。在有些实现中,舍入运算可以对单指令多数据(SIMD)数据类型执行,以便可以对扩展的数据类型、例如打包(packed)的数据元素执行指令,其中将多个数据元素打包到单个位置例如处理器的扩充寄存器中。
为了提供灵活性并且提供有效的指令执行,实施例可提供基于ISA的指令,该指令可以对源操作数执行。这些基于ISA的指令可以是用于执行到源操作数的最接近整数值的舍入的舍入运算的不同实现。这样的源操作数可能已经是有限精度格式(即,不是算术运算的结果,而是从寄存器/存储器中读出的数据)。这样的指令可用于不同的应用,包括多媒体应用、游戏应用等等。此外,实施例可在基于编译程序的原语中实现以实现舍入运算,这些舍入运算适用于不同的程序设计语言。注意,在不同的实施例中,舍入指令可采用浮点数作为源操作数,将其舍入到最接近的整数值,并且将结果也作为具有整数值的浮点值进行存储。
在各种实施例中,至少部分根据与该指令一起接收到的信息、例如与该指令一起接收到的立即数据,可处理对该执行的控制。在不同的实现中,这样的立即数据可替换(override)由处理器当前所使用的缺省舍入模式。在这样的替换情况中,该立即数据可进一步提供对该舍入模式的控制。更进一步讲,该立即数据可为精度异常(即精度抑制)的替换作准备。这样,可将立即数据用于提供特定舍入运算的非粘性控制,如此该运算可在最少周期中执行。这也许如同当与指令结合接收的立即数据包括舍入控制信息的时候,可能不需要更新出现于配置寄存器中的这种信息,其中配置寄存器例如为扩展控制和状态寄存器(CSR),例如存在于依据体系结构(例如,IA-32体系结构)的处理器中的多媒体扩展CSR(MXCSR)。然而,需要理解的是,可在不同的处理器类型中使用这些实施例,并且本发明的范围不是限于这个方面。
现在参照图1,所示的是根据本发明的一个实施例的方法的流程图。如图1所示,方法100首先接收在处理器之中的舍入指令以及相关的立即数据(步骤110)。例如,在许多实现中,可在处理器中接收用户级指令、例如,ISA的指令。除指令之外,同时也可提供立即数据。如下面要进一步进行描述,这种立即数据可包括多个字段以控制运算的各个方面。
仍参照图1,控制从步骤110转到判断步骤115。在判断步骤115,可确定该立即数据是否替换配置寄存器的舍入模式。亦即,立即数据的字段可能包括替换指示符,它指出是否替换缺省舍入模式。在各种实施例中,这种缺省舍入模式可存在于配置寄存器、比如CSR、例如,MXCSR的字段中,但本发明的范围不限于这个方面。如果该立即数据包括替换指示符,则控制转到步骤120。在步骤120,可将由指令识别的源操作数分派给例如处理器的浮点单元(FPU)。此外,可将该源操作数与信息一起分派以控制舍入运算的舍入模式。可从立即数据获得控制信息,即,如同在立即数据的舍入状态字段中所规定的。如同将要在下面进一步描述的,在有些实现中,控制单元、比如处理器的控制选择单元可接收指令以及立即数据,并且将立即数据解码以确定是否替换缺省舍入模式,以及如果是这样的话,则获得该立即数据中规定的舍入模式。
仍参照图1,如果在判断步骤115确定立即数据不包括替换指示符,则控制转移到步骤125。在步骤125,可分派源操作数用于在FPU进行执行。此外,可在例如配置寄存器中规定的缺省舍入模式的基础上执行舍入运算。
在任一种情况下,控制都会从两个步骤120和125传递到步骤130,在那里可执行舍入运算。该舍入运算按照舍入模式去除该输入(即源操作数)的分数精度。在不同的实施例中,可实现执行舍入运算的不同方式。例如,在许多实现中,FPU可包括加法器和舍入单元以执行舍入运算。为了根据IEEE标准754执行舍入模式,加法器可拥有源操作数作为第一操作数以及常量值、例如零用作第二操作数。然后可将加法器的输出馈送到舍入单元,该舍入单元根据所选择的操作模式将结果进行舍入。因此,舍入单元可将它的输入值舍入成为整数值化的浮点结果。
在其它的实施例中,除IEEE标准754舍入模式之外还可执行其它舍入模式。在这类实现中,可向FPU加法器馈送源操作数以及以源操作数的值和该舍入模式为基础的特定数据值作为第二操作数,这将在下面进行进一步描述。然后可对该结果执行舍入运算,其中,该舍入运算可为IEEE标准754运算。在其它扩展的舍入模式的实现中,可将源操作数和零值提供给FPU加法器的输入,并且然后可将所得值根据送到舍入单元的控制信息进行舍入。
在执行之后,可将舍入运算的结果存储在目的操作数中(步骤140)。在不同的实施例中,目的操作数可以是处理器的扩展存储寄存器,但是本发明的范围不限于此。此外,可确定在舍入运算期间是否发生了精度异常(判断步骤145)。亦即,可以确定该舍入运算是否形成了能够引发异常的不精确的结果。如若不是,方法100可以结束。
如果产生了精度异常,则控制可转到判断步骤150。在判断步骤150,可确定立即数据是否包括了用于抑制精度异常的字段。亦即,在有些实现中,立即数据可包括抑制字段。这个字段的值可指示出,如果产生精度异常的话,相关的舍入指令是否应该抑制精度异常。如果精度抑制指示符存在,则即使精度异常发生,也不会采取更进一步地动作,并且方法100可以结束。如果立即数据不包括用于抑制精度异常的指示符,则控制可以转到步骤160。在步骤160,可在状态寄存器中设置精度异常的标志。例如,在有些实现中,状态寄存器可对应于MXCSR,但是本发明的范围不限于这个方面。以在状态寄存器中的这个标志的状态为基础,可能发生精度异常(例如,如果该标志是无屏蔽的)。如果是这样的话,则可例如经由软件处理器来执行适当的处理以处理该异常。如果标志是被屏蔽的,即使精度异常发生了并且在状态寄存器进行了标记,则相对于设置的标志不会采取任何动作。尽管在图1的实施例中对于这个具体实现进行了描述,但是可以理解的是,本发明的范围不限于这个方面。
现在参照图2,所示的是根据本发明的一个实施例的处理器一部分的框图。如图2所示,处理器200可包括控制选择单元210,经过耦合用以从寄存器205(它可能是通用处理器寄存器)接收例如由微操作(μop)产生的输入的指令信息以及与此相关的立即数据。μop可响应用于执行给定舍入运算的单个ISA的指令而产生。在各种实施例中,控制选择单元210可以对立即数据解码,其中该控制选择单元210可由硬件、软件、固件或它们的结合来实现。在立即数据的基础上,可以确定是否替换例如在存储了当前舍入控制状态220的控制或者配置寄存器中所表示的处理器的当前舍入模式。如果是这样的话,控制选择单元210可以解码立即数据的模式字段,即舍入模式字段,来确定恰当的舍入模式。
控制选择单元210可耦合到浮点单元(FPU)240以在输入信息的基础上向其提供控制指令。如图2中进一步所示,扩展寄存器文件、比如所谓的扩展(XMM)寄存器230可出现在处理器200之内,其中该处理器200可包括在作为用于舍入运算的源和目的操作数的指令中所确定的寄存器。因此,XMM寄存器230可耦合到FPU 240以对其提供源操作数并从其中接收目的操作数。
在各种实施例中,FPU 240可包括各种电路以对数据执行操作。在图2的实施例中,FPU240包括FPU加法器242。具体地脱,如图2所示,FPU加法器242可被耦合以接收输入操作数,例如第一源操作数和第二源操作数(即,操作数S1和S2)。FPU240也可包括FPU舍入器244,它耦合到FPU加法器242的输出。在各种实施例中,FPU加法器242可产生运算的无限精确结果。然而,给定了存储器及其它约束,可能会将结果进行舍入来以所希望的格式例如单精度或者双精度浮点元素提供最终结果。相应地,FPU舍入器244可从FPU加法器242接收无限精确的结果并且执行舍入运算,例如由处理器200的当前舍入模式所指示的,或者以来自立即数据的控制为基础,其中该立即数据采用指令获得,即经由控制选择单元210。注意,尽管FPU舍入器244通常可接收在FPU加法器242中作为数学运算结果出现的无限精确的结果,但是在不同的实现中,拥有舍入指令的源操作数可能已经是有限精度格式。在这些情况下,FPU舍入器244可接收其输入值(例如对应于给定舍入指令的源操作数)并且产生例如对应于最接近的整数值的舍入结果。
因此,以给定的舍入指令为基础,FPU 240可以对例如来自XMM寄存器230之一、由来自控制选择单元210的信息所控制的给定源操作数执行舍入运算。此外,在舍入运算完成的时候,可将结果存储到例如在XMM寄存器230之中不同的寄存器上。如果精度异常在运算期间发生,则通常可在FP状态寄存器225设置标志来表明。然而,在各种实施例中,如果与舍入指令有关的立即数据指示了精度抑制,则不设置这样的标志。尽管在图2的实施例中对于这个具体实现进行了描述,但是可以理解的是,本发明的范围不限于这个方面。例如,在有些实施例中,例如由舍入控制状态220和FP状态寄存器225所表示的控制和情况状态可被存储在单个CSR例如MXCSR中。
注意,可通过不同的形式向控制选择单元210提供立即数据。例如,在有些实现中,立即数据可以采用单字节数据元素的形式,但是本发明的范围不限于此。此外,在立即数据元素之内可实现不同方式的编码控制信息。现在参照图3,所示的是根据本发明的一个实施例的立即数据元素的框图。如图3所示,立即数据元素300可为包括替换指示符310、模式控制字段320、精度替换指示符330和保留字段340的8比特字。尽管在图3的实施例显示了这个具体实现,但是本发明的范围不限于这种方式。
在图3的实施例中,替换指示符310可用来确定与立即数据元素300有关的舍入指令的替换状态。如下面表1所示,替换指示符310可设置为逻辑低电平来指示缺省舍入模式(例如由配置寄存器如MXCSR所表示)的替换。逻辑高电平值指示缺省模式的使用。
表1
舍入模式替换指示符 |
0:使用直接值的1∶3比特 |
1:使用缺省舍入模式 |
如果替换指示符310指示将要替换缺省舍入模式,那么可对舍入模式字段320进行解码以确定与舍入指令相关的舍入模式。如下面表2所示,在有些实现中,可支持六种舍入模式,包括由IEEE标准754规定的四种舍入模式,以及两种扩展的舍入模式,将在下面对其更进一步地进行讨论。
表2
舍入模式字段 |
000:最接近的偶数 |
001:朝-∞的方向 |
010:朝+∞的方向 |
011:截断(舍入到0) |
100:部分向远离0的方向舍入 |
101:向远离0的方向舍入 |
立即数据元素300还包括精度抑制指示符330,可对其进行设置来指示不精确结果的容差(allowance),使得精度异常即使在相关指令的运算期间发生时也不会导致在状态寄存器中的异常标志的设置。具体地,如下面表3所示,精度抑制指示符330可以采用以下形式:
表3
精度抑制指示符 |
1:没有对不精确(精度)字段进行更新 |
0:正常行为 |
注意,精度抑制指示符330可与不同语言、例如C99、Fortran和Java的用户级指令结合使用。最后,在一些实施例中,可以为额外的信息保留保留字段340。还要注意,在表1-3中规定的具体值、以及指示符和字段的具体位置和大小不受限制,并且各种改变、修改和扩展都在本发明的范围之内。
如同上面描述的,在许多实现中,舍入运算可响应ISA的单个指令来执行。以这种方法,提供了用户级的支持,并且可以有效地执行舍入运算。在给定的ISA中,可出现并使用若干这类舍入指令来处理具体的舍入运算,例如双精度和单精度浮点值以及打包和标量值的舍入。这些舍入指令也可用于将浮点数据元素的分数部分舍去。除ISA级指令的存在之外,立即数据或者其它的控制字段信息可以允许舍入模式(连同其它属性一道)的有效局部控制,而不必修改处理器的当前缺省状态。
如下面表4所示,在ISA之中可以出现不同风格的舍入指令以对不同类型的数据元素实现有效的舍入运算。
表4
作为这些ISA指令如何操作的例子,可使用ROUNDPD指令,通过在直接元素(即IMM 8)中规定的舍入模式来把源操作数(即可从XMM寄存器或者存储器得到的第二操作数)中的两个双精度浮点值进行舍入,并且将结果放到目的操作数(即可以是XMM寄存器的第一操作数)中。直接元素可以指定用于舍入运算的控制字段。再参考表1-3,立即数据的比特4(即图3的指示符330)可以控制精度异常的处理器的行为,而比特0(即图3的指示符310)可以选择舍入模式控制的源。最后,比特3∶1(即图3的字段320)可以指定非粘性舍入模式值。注意,在有些实施例中,如果任何源操作数是信令而不是数字(SNaN),那么它将要转换为静止的NaN(QNaN)。如果将配置寄存器对于非正常设置为零(DAZ),那么非正常可在舍入之前转换为零。如果将配置寄存器对于非正常刷新(flush denormal)设置为零(FTZ),那么非正常可在舍入之后转换为零。
作为这些ISA指令如何操作的另一个例子,ROUNDPS指令可用来在源操作数中将四个打包的单精度浮点值进行舍入并且将结果放到目的操作数中。为了说明的目的,具体的舍入指令可以采用以下形式:
ROUNDPS xmm0,xmm1,imm8(舍入到最接近的整数)。
这个指令可取第一寄存器即xmm1中的打包单精度值,如同由立即数据(即imm8)的舍入模式所规定的将每个值舍入到最接近的整数值,并且将结果存储到第二寄存器、即xmm0中。下面的表5显示了存在于源操作数(即xmm1)中、各对应于有限精度浮点值的典型值以及存储在目的操作数(即xmm0)中、对应于整数值化的浮点数、即与初始源值最接近的整数值的所得舍入值。
表5
注意,在另外的实现中,舍入运算可响应从源FP值生成的整数值(即,与整数值化FP值相反)的指令。其它的实施例可以实现到较低精度浮点表示法的舍入。这样的实施例可根据标准舍入模式或者特殊的舍入模式来提供舍入源值的有效方式,其中特殊的舍入模式由配置寄存器中缺省舍入模式或者在与该指令有关的立即数据中规定的局部舍入模式来进行控制。
在各种实施例中,立即数据可提供控制信息以执行不同于IEEE标准754舍入运算的舍入模式。这些舍入模式可以包括部分向远离零的方向舍入以及向远离零的方向舍入模式。现在参照图4,所示的是根据本发明的一个实施例执行舍入运算的方法的流程图。如图4所示,方法400可用来执行这些扩展的舍入模式。方法400可通过确定源操作数是否大于或等于零(菱形框410)来开始。如果是这样的话,控制可以转到步骤420,在那里可从源操作数减去预定的值(步骤420)。例如,FP加法器可以在所选择的具体舍入模式的基础上从源操作数减去给定的值。当然,这个减法可通过与预定值的负值相加来执行。然后,可对FP加法的结果执行所选定的舍入运算(步骤430)。在有些实现中,IEEE标准754舍入运算、例如截尾(也称为舍入到零)可对结果执行以获得扩展的舍入模式结果。如果在菱形框410确定该源操作数小于零,那么控制转移到步骤440。在步骤440,可在FP加法器中将预定的值(它可能是与以上所述相同的值)加到源操作数上。然后,在步骤450,可对结果执行选定的舍入运算以获得由此产生的舍入值。
虽然本发明的范围不限于这个方面,但是部分向远离零的方向舍入运算可以使用0.5的值作为其预定的值,而向远离零的方向舍入运算可以使用1”,它对应于小于但不等于一的最接近的可表示的FP值。对于单精度和双精度FP值,0.5可分别对应于0x3f000000和0x3fe0000000000000。对于单精度和双精度FP值,-0.5可分别对应于0xbf000000和0xbfe000000000000。对于单精度和双精度FP值,1″可分别对应于0x3f7fffff和0x3fefffffffffffff。对于单精度和双精度FP值,-1″可以分别对应于0xbf7fffff和0xbfefffffffffffff。在下面表6中显示的是用于执行这些操作的源代码例子。
表6
在这些例子中,运算ROUND_TOWARD_ZFRO是IEEE标准754的截尾操作,它对加法/减法运算的结果执行。注意,在执行这些扩展舍入模式的运算中,可提供预定的值作为给FP加法器的第二源操作数(例如,如同在图2实施例中的S2)。或者,在有些实施例中,如同其它的舍入运算一样,第二源操作数可以为零,并且可将控制信号发送到舍入单元以实现选定的扩展舍入模式运算。
这样,在各种实施例中,可实现对于执行舍入的增强。这些增强可以避免执行各种操作的需要,例如存储控制寄存器的状态、执行空FP运算以及重新设置状态,或者甚至是转换数字到整数以及回到浮点的近似简化。通过抑制不精确的精度异常,用于舍入的相符不同语言的支持可被简化,而实现也可以遵守某些舍入功能的标准舍入模式,例如在C99语言中。
实施例可以在许多不同的系统类型中实现。现在参照图5,所示的是根据本发明的一个实施例的系统的框图。如图5所示,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图5所示,处理器570和580中每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核574a和574b以及处理器核584a和584b)。注意,每一个核都可响应根据本发明的一实施例的ISA级指令来执行舍入运算。
第一处理器570还包括点对点(P-P)接口576和578。类似地,第二处理器580包括P-P接口586和588。如图5所示,存储控制器集线器(MCH)572和582将处理器耦合到各自的存储器上,即存储器532和存储器534,它们可能是本地连接到各自处理器的主存储器的部分。
第一处理器570和第二处理器580可分别经由P-P互连552和554耦合到芯片组590上。如图5所示,芯片组590包括P-P接口594和598。此外,芯片组590包括接口592以将芯片组590与高性能图形引擎538相耦合。在一个实施例中,高级图形接口(AGP)总线539可用来将图形引擎538耦合到芯片组590。AGP总线539可符合加速图形端口接口规格修订版本2.0,它于1998年5月4日由加利福尼亚Santa Clara的英特尔公司发表。或者,点对点互连539可以耦合这些元件。
随后,芯片组590可经由接口596耦合到第一总线516。在一个实施例中,第一总线516可以是外设部件互连(PCI)总线,如由PCI局部总线规范,生产版本,修订版2.1,日期是1995年6月所定义的,或者例如PCIExpressTM总线或者其它第三代输入/输出(I/O)中间联接总线的总线,但本发明的范围不限于此。
如图5所示,各种I/O设备514可耦合到第一总线516,以及总线桥518,其中该总线桥518将第一总线516耦合到第二总线520。在一个实施例中,第二总线520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线520,其中包括例如键盘/鼠标522、通讯装置526以及诸如可包括代码530的磁盘驱动器或者其它大容量存储装置之类的数据存储单元528。此外,音频I/O 524可耦合到第二总线520。注意,其它的体系结构也是可能的。例如,代替图5的点对点体系结构,系统可以实现多点总线或者其它这样的体系结构。
实施例可通过编码来实现,并且可存储在存储介质上,其中已经在该存储介质上存储了用于为系统编制程序使其执行指令的指令。该存储介质可包括但是不局限于任何类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)以及磁光盘、半导体装置例如只读存储器(ROM)、随机存取存储器(RAM)例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁或光卡、或者任何其它类型的适于存储电子指令的介质。
尽管已经针对有限数量的实施例描述了本发明,但是本领域的技术人员能够从其中知道多种修改和变化。所附的权利要求覆盖了落入本发明的真正的精神和范围之内的所有这样的修改和变化。
Claims (32)
1.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有两个打包的64位双精度浮点值的目的操作数;
第二扩展XMM寄存器,用于存储具有两个打包的64位双精度浮点值的源操作数;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器和第一和第二扩展XMM寄存器,用于按照舍入模式对源操作数执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器。
2.如权利要求1所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
3.如权利要求2所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
4.如权利要求1所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
5.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有两个打包的64位双精度浮点值的目的操作数;
其中具有两个打包的64位双精度浮点值的源操作数被存储在128位存储器中;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器、第一扩展XMM寄存器和存储器,用于按照舍入模式对源操作数执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器。
6.如权利要求5所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
7.如权利要求6所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
8.如权利要求5所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
9.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有四个打包的32位单精度浮点值的目的操作数;
第二扩展XMM寄存器,用于存储具有四个打包的32位单精度浮点值的源操作数;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器和第一和第二扩展XMM寄存器,用于按照舍入模式对源操作数执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器。
10.如权利要求9所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
11.如权利要求10所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
12.如权利要求9所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
13.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有四个打包的32位单精度浮点值的目的操作数;
其中具有四个打包的32位单精度浮点值的源操作数被存储在128位存储器中;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器、第一扩展XMM寄存器和存储器,用于按照舍入模式对源操作数执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器。
14.如权利要求13所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
15.如权利要求14所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
16.如权利要求13所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
17.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有两个标量64位双精度浮点值的目的操作数;
第二扩展XMM寄存器,用于存储具有两个标量64位双精度浮点值的源操作数;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器和第一和第二扩展XMM寄存器,用于按照舍入模式对源操作数的下64位双精度浮点值执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器的最低位置,其中将源操作数的上64位双精度浮点值写入第一扩展XMM寄存器,而不改变。
18.如权利要求17所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
19.如权利要求18所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
20.如权利要求17所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
21.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有两个标量64位双精度浮点值的目的操作数;
其中具有两个标量64位双精度浮点值的源操作数被存储在128位存储器中;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器、第一扩展XMM寄存器和存储器,用于按照舍入模式对源操作数的下64位双精度浮点值执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器的最低位置,其中将源操作数的上64位双精度浮点值写入第一扩展XMM寄存器,而不改变。
22.如权利要求21所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
23.如权利要求22所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
24.如权利要求21所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
25.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有四个标量32位单精度浮点值的目的操作数;
第二扩展XMM寄存器,用于存储具有四个标量32位单精度浮点值的源操作数;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器和第一和第二扩展XMM寄存器,用于按照舍入模式对源操作数的下32位双精度浮点值执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器的最低位置,其中将源操作数的三个上32位单精度浮点值写入第一扩展XMM寄存器,而不改变。
26.如权利要求25所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
27.如权利要求26所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
28.如权利要求25所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
29.一种处理器,包括:
控制器,对舍入指令作出响应,如果缺省舍入模式将被替换,该控制器从舍入指令的8比特立即操作数中确定舍入模式,其中舍入指令包括识别源操作数的第一字段,识别目的操作数的第二字段和识别立即操作数的立即字段,其中立即操作数包括指示舍入模式的模式字段,指示缺省舍入模式是否将被替换的替换指示符和指示处理器如何处理精度异常的精度抑制指示符;
第一扩展XMM寄存器,用于存储具有四个标量32位单精度浮点值的目的操作数;
其中具有四个32位单精度浮点值的源操作数被存储在128位存储器中;
多媒体扩展控制和状态寄存器,用于存储缺省舍入模式;和
浮点单元,耦合到控制器、第一扩展XMM寄存器和存储器,用于按照舍入模式对源操作数的下32位单精度浮点值执行舍入运算并将舍入的源操作数写入第一扩展XMM寄存器的最低位置,其中将源操作数的三个上32位单精度浮点值写入第一扩展XMM寄存器,而不改变。
30.如权利要求29所述的处理器,其特征在于,所述浮点单元还包括:
浮点加法器,用来根据所述舍入模式来把预定值加到所述源操作数上;和
浮点舍入器,用于对加法结果进行舍入运算。
31.如权利要求30所述的处理器,其特征在于,根据将被舍入的源操作数和所述舍入模式来确定所述预定值。
32.如权利要求29所述的处理器,其特征在于,所述舍入指令包括最接近的偶模式、朝-∞模式、朝+∞模式、截断模式、部分远离0的模式和向远离0的方向舍入中的至少一种模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/525,420 US9223751B2 (en) | 2006-09-22 | 2006-09-22 | Performing rounding operations responsive to an instruction |
US11/525420 | 2006-09-22 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101701526A Division CN101149674A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101882064A CN101882064A (zh) | 2010-11-10 |
CN101882064B true CN101882064B (zh) | 2013-11-06 |
Family
ID=39200854
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310524726.0A Active CN103593165B (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201510697468.5A Active CN105573715B (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201910143641.5A Pending CN109871235A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201010200409XA Active CN101882064B (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201910766458.0A Pending CN110471643A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CNA2007101701526A Pending CN101149674A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310524726.0A Active CN103593165B (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201510697468.5A Active CN105573715B (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CN201910143641.5A Pending CN109871235A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910766458.0A Pending CN110471643A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
CNA2007101701526A Pending CN101149674A (zh) | 2006-09-22 | 2007-09-21 | 响应指令执行舍入运算 |
Country Status (7)
Country | Link |
---|---|
US (11) | US9223751B2 (zh) |
JP (6) | JP4990977B2 (zh) |
KR (1) | KR100947138B1 (zh) |
CN (6) | CN103593165B (zh) |
DE (1) | DE112007001989B4 (zh) |
RU (2) | RU2447484C1 (zh) |
WO (1) | WO2008036944A1 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US8327120B2 (en) * | 2007-12-29 | 2012-12-04 | Intel Corporation | Instructions with floating point control override |
US8046400B2 (en) | 2008-04-10 | 2011-10-25 | Via Technologies, Inc. | Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor |
CN101930354B (zh) * | 2009-07-28 | 2014-03-12 | 威盛电子股份有限公司 | 微处理器及其执行指令的方法 |
US8407271B2 (en) * | 2009-08-28 | 2013-03-26 | Advanced Micro Devices, Inc. | Method for floating point round to integer operation |
US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
EP3805921B1 (en) | 2011-04-01 | 2023-09-06 | INTEL Corporation | Vector friendly instruction format and execution thereof |
US10209986B2 (en) * | 2011-12-22 | 2019-02-19 | Intel Corporation | Floating point rounding processors, methods, systems, and instructions |
WO2013101119A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and apparatus for controlling a mxcsr |
EP2798466B1 (en) * | 2011-12-30 | 2017-12-13 | Intel Corporation | Floating point round-off amount determination processors, methods, systems, and instructions |
KR101835494B1 (ko) * | 2013-11-27 | 2018-03-08 | 인텔 코포레이션 | 프로세서의 버퍼의 자율 제어 |
CN106406810B (zh) * | 2014-07-02 | 2019-08-06 | 上海兆芯集成电路有限公司 | 微处理器及其方法 |
US9817661B2 (en) * | 2015-10-07 | 2017-11-14 | Arm Limited | Floating point number rounding |
CN106485318B (zh) * | 2015-10-08 | 2019-08-30 | 上海兆芯集成电路有限公司 | 具有混合协处理器/执行单元神经网络单元的处理器 |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
US10725739B2 (en) | 2017-06-23 | 2020-07-28 | International Business Machines Corporation | Compiler controls for program language constructs |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10481908B2 (en) | 2017-06-23 | 2019-11-19 | International Business Machines Corporation | Predicted null updated |
US10740067B2 (en) | 2017-06-23 | 2020-08-11 | International Business Machines Corporation | Selective updating of floating point controls |
US10310814B2 (en) | 2017-06-23 | 2019-06-04 | International Business Machines Corporation | Read and set floating point control register instruction |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10684852B2 (en) | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
US11372643B2 (en) | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
US10908878B2 (en) * | 2018-11-26 | 2021-02-02 | Nvidia Corporation | Dynamic directional rounding |
US11099853B2 (en) * | 2019-02-15 | 2021-08-24 | International Business Machines Corporation | Digit validation check control in instruction execution |
CN110134436B (zh) * | 2019-05-05 | 2021-03-02 | 飞依诺科技(苏州)有限公司 | 超声数据打包处理方法及系统 |
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11150872B2 (en) * | 2019-12-17 | 2021-10-19 | SambaNova Systems, Inc. | Computational units for element approximation |
CN113031914B (zh) * | 2019-12-24 | 2023-05-16 | 龙芯中科技术股份有限公司 | 浮点舍入模式的控制方法、装置、设备及存储介质 |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
US20220414182A1 (en) * | 2021-06-26 | 2022-12-29 | Intel Corporation | Apparatuses, methods, and systems for instructions for matrix multiplication instructions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1503150A (zh) * | 2002-11-19 | 2004-06-09 | ��ʽ���綫֥ | 多处理器系统中的任务分配方法和多处理器系统 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS56135236A (en) * | 1980-03-24 | 1981-10-22 | Casio Comput Co Ltd | Numeric data displaying system |
JPH0469734A (ja) * | 1990-07-11 | 1992-03-04 | Toshiba Corp | 浮動小数点加減算のアンダーフロー例外発生予測回路 |
RU2018921C1 (ru) * | 1992-06-19 | 1994-08-30 | Институт точной механики и вычислительной техники им.С.А.Лебедева РАН | Устройство для нормализации и округления вещественных чисел |
US5450607A (en) | 1993-05-17 | 1995-09-12 | Mips Technologies Inc. | Unified floating point and integer datapath for a RISC processor |
US5516658A (en) * | 1993-08-20 | 1996-05-14 | Immunex Corporation | DNA encoding cytokines that bind the cell surface receptor hek |
US5404324A (en) * | 1993-11-01 | 1995-04-04 | Hewlett-Packard Company | Methods and apparatus for performing division and square root computations in a computer |
US5487022A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Normalization method for floating point numbers |
EP0685794A1 (en) * | 1994-06-01 | 1995-12-06 | Advanced Micro Devices, Inc. | System for generating floating point test vectors |
US5631859A (en) * | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
US5696709A (en) * | 1995-03-31 | 1997-12-09 | International Business Machines Corporation | Program controlled rounding modes |
US5812439A (en) * | 1995-10-10 | 1998-09-22 | Microunity Systems Engineering, Inc. | Technique of incorporating floating point information into processor instructions |
JPH09128217A (ja) * | 1995-10-31 | 1997-05-16 | Hitachi Ltd | 丸め処理回路 |
US5886915A (en) * | 1995-11-13 | 1999-03-23 | Intel Corporation | Method and apparatus for trading performance for precision when processing denormal numbers in a computer system |
US6012139A (en) * | 1996-01-31 | 2000-01-04 | Hitachi Micro Systems, Inc. | Microprocessor including floating point unit with 16-bit fixed length instruction set |
US6128726A (en) * | 1996-06-04 | 2000-10-03 | Sigma Designs, Inc. | Accurate high speed digital signal processor |
US5838984A (en) * | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US5782304A (en) | 1996-11-26 | 1998-07-21 | Garcia-Soule; Virgilio | Normally closed retainer valve with fail-safe pump through capability |
US6058410A (en) * | 1996-12-02 | 2000-05-02 | Intel Corporation | Method and apparatus for selecting a rounding mode for a numeric operation |
JPH10187416A (ja) | 1996-12-20 | 1998-07-21 | Nec Corp | 浮動小数点演算装置 |
US6233672B1 (en) * | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6055555A (en) | 1997-12-29 | 2000-04-25 | Intel Corporation | Interface for performing parallel arithmetic and round operations |
US6044454A (en) | 1998-02-19 | 2000-03-28 | International Business Machines Corporation | IEEE compliant floating point unit |
US6292815B1 (en) | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6282634B1 (en) | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
JP2000010762A (ja) * | 1998-06-19 | 2000-01-14 | Mitsubishi Electric Corp | 浮動小数点演算装置 |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
JP2001236206A (ja) | 1999-10-01 | 2001-08-31 | Hitachi Ltd | データのロード方法及びその記憶方法、データワードのロード方法及びその記憶方法、並びに、浮動小数点数の比較方法 |
US6571265B1 (en) * | 1999-10-29 | 2003-05-27 | Intel Corporation | Mechanism to detect IEEE underflow exceptions on speculative floating-point operations |
US6820106B1 (en) * | 2000-06-27 | 2004-11-16 | Intel Corporation | Method and apparatus for improving the performance of a floating point multiplier accumulator |
US6879992B2 (en) | 2000-12-27 | 2005-04-12 | Intel Corporation | System and method to efficiently round real numbers |
US6996591B2 (en) | 2000-12-27 | 2006-02-07 | Intel Corporation | System and method to efficiently approximate the term 2x |
US6889242B1 (en) * | 2001-06-29 | 2005-05-03 | Koninklijke Philips Electronics N.V. | Rounding operations in computer processor |
WO2003038092A1 (en) * | 2001-11-01 | 2003-05-08 | Sympore Gmbh | Method for identifying transport proteins |
US7120755B2 (en) * | 2002-01-02 | 2006-10-10 | Intel Corporation | Transfer of cache lines on-chip between processing cores in a multi-core system |
US7529912B2 (en) * | 2002-02-12 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for instruction-level specification of floating point format |
CN1503160A (zh) | 2002-11-20 | 2004-06-09 | 英业达股份有限公司 | 计算机可执行的电子书阅读界面的自动排版方法 |
US7523152B2 (en) * | 2002-12-26 | 2009-04-21 | Intel Corporation | Methods for supporting extended precision integer divide macroinstructions in a processor |
US7290023B2 (en) | 2003-11-20 | 2007-10-30 | International Business Machines Corporation | High performance implementation of exponent adjustment in a floating point design |
US7380240B2 (en) | 2003-12-23 | 2008-05-27 | Intel Corporation | Apparatus and methods to avoid floating point control instructions in floating point to integer conversion |
JP4477959B2 (ja) * | 2004-07-26 | 2010-06-09 | 独立行政法人理化学研究所 | ブロードキャスト型並列処理のための演算処理装置 |
US20060095714A1 (en) * | 2004-11-03 | 2006-05-04 | Stexar Corporation | Clip instruction for processor |
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 |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
-
2006
- 2006-09-22 US US11/525,420 patent/US9223751B2/en active Active
-
2007
- 2007-09-21 KR KR1020070097040A patent/KR100947138B1/ko active IP Right Grant
- 2007-09-21 CN CN201310524726.0A patent/CN103593165B/zh active Active
- 2007-09-21 CN CN201510697468.5A patent/CN105573715B/zh active Active
- 2007-09-21 RU RU2011102731/08A patent/RU2447484C1/ru not_active IP Right Cessation
- 2007-09-21 CN CN201910143641.5A patent/CN109871235A/zh active Pending
- 2007-09-21 RU RU2009115188/08A patent/RU2420790C2/ru not_active IP Right Cessation
- 2007-09-21 CN CN201010200409XA patent/CN101882064B/zh active Active
- 2007-09-21 JP JP2009528536A patent/JP4990977B2/ja active Active
- 2007-09-21 WO PCT/US2007/079233 patent/WO2008036944A1/en active Application Filing
- 2007-09-21 DE DE112007001989.1T patent/DE112007001989B4/de active Active
- 2007-09-21 CN CN201910766458.0A patent/CN110471643A/zh active Pending
- 2007-09-21 CN CNA2007101701526A patent/CN101149674A/zh active Pending
-
2011
- 2011-12-01 JP JP2011263344A patent/JP5475746B2/ja active Active
-
2013
- 2013-03-11 US US13/793,648 patent/US9286267B2/en active Active
-
2014
- 2014-02-06 JP JP2014021474A patent/JP5851536B2/ja active Active
-
2015
- 2015-12-02 JP JP2015235721A patent/JP6162203B2/ja active Active
-
2016
- 2016-01-22 US US15/003,951 patent/US10067761B2/en active Active
-
2017
- 2017-04-12 US US15/485,372 patent/US10114640B2/en active Active
- 2017-04-12 US US15/485,378 patent/US10114641B2/en active Active
- 2017-04-12 US US15/485,356 patent/US10108416B2/en active Active
- 2017-04-27 JP JP2017087793A patent/JP6333439B2/ja active Active
- 2017-07-27 US US15/661,211 patent/US20170322804A1/en not_active Abandoned
- 2017-07-27 US US15/661,190 patent/US20170322802A1/en not_active Abandoned
- 2017-07-27 US US15/661,199 patent/US20170322803A1/en not_active Abandoned
- 2017-07-27 US US15/661,219 patent/US20170322805A1/en not_active Abandoned
-
2018
- 2018-04-24 JP JP2018082706A patent/JP6487097B2/ja active Active
-
2020
- 2020-12-01 US US17/108,083 patent/US20210216314A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1503150A (zh) * | 2002-11-19 | 2004-06-09 | ��ʽ���綫֥ | 多处理器系统中的任务分配方法和多处理器系统 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101882064B (zh) | 响应指令执行舍入运算 | |
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
EP3555742B1 (en) | Floating point instruction format with embedded rounding rule | |
CN111656367A (zh) | 神经网络加速器的系统和体系结构 | |
CN102356378B (zh) | 具有隐式混合正负号操作数的数字信号处理引擎 | |
US9104479B2 (en) | Apparatus and method for rounding a floating-point value to an integral floating-point value | |
CN112394904A (zh) | 一种浮点数据处理方法、运算器及电子设备 | |
US11704092B2 (en) | High-precision anchored-implicit processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |