CN101145099A - X87熔合乘加指令及其应用 - Google Patents

X87熔合乘加指令及其应用 Download PDF

Info

Publication number
CN101145099A
CN101145099A CN200710166684.2A CN200710166684A CN101145099A CN 101145099 A CN101145099 A CN 101145099A CN 200710166684 A CN200710166684 A CN 200710166684A CN 101145099 A CN101145099 A CN 101145099A
Authority
CN
China
Prior art keywords
register
stack
operand
instruction
fusion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200710166684.2A
Other languages
English (en)
Other versions
CN100578443C (zh
Inventor
G·格伦·亨利
特里·帕克斯
蒂莫西·A·埃利奥特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101145099A publication Critical patent/CN101145099A/zh
Application granted granted Critical
Publication of CN100578443C publication Critical patent/CN100578443C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本发明是有关于一种X86体系结构的微处理器指令集中的X87熔合乘加指令。该熔合乘加指令将第一和第二操作数指定到X87浮点单元寄存器堆栈栈顶的两个寄存器中,并指定第三操作数到该X87浮点单元寄存器堆栈的第三寄存器中。该微处理器将该第一和第二操作数相乘以产生乘积,并将该第三操作数和该乘积相加以产生计算结果。该计算结果被存储于该第三寄存器中,且前两个操作数被弹出该寄存器堆栈。在本发明的另一个实施例中,该第三操作数被指定存储于该寄存器堆栈栈顶以下的第二个寄存器中,且该计算结果也被存储于此。该指令操作码的值在X87指令操作码的范围内。

Description

X87熔合乘加指令及其应用
技术领域
本发明涉及的是在管线微处理器中执行的浮点指令,更具体地说,是关于一种在X87指令集架构中执行的熔合乘加指令。
背景技术
某些微处理器,微控制器和数字信号处理器的指令集中包括了熔合乘加(Fused Multiply-Add,FMA)指令。一个浮点熔合乘加指令将两个浮点操作数(A和B)相乘,将其乘积与第三个浮点操作数(C)相加,即:
FMA(A,B,C)=(A*B)+C
与需要程序执行一个单独的乘法指令,再执行一个单独的加法指令的微处理器相比,指令集中包括了熔合乘加指令的微处理器可以提高许多含有乘积累加的重要运算的速度和精确度,例如矩阵乘法、点积运算或多项式展开。浮点熔合乘加指令可以提高精确度,因为熔合乘加指令可以只对结果进行一次舍入,而一个单独的乘法指令,再执行一个单独的加法指令时,必须进行两次舍入。后者的乘法指令的结果是进行舍入了的,但浮点熔合乘加指令在加上第三个操作数之前是不会做舍入的。另外,浮点熔合乘加指令可以提高速度,因为基于微体系机构的微处理器执行单独一条指令的速度比执行两条指令的速度快。
包括了浮点熔合乘加指令的微处理器有PowerPC,IntelItaniumTM以及Sun MicrosystemsSPARC系列处理器。但是,当前最主流的X86体系结构的微处理器的指令集中当前却没有包含浮点熔合乘加指令。因此需要在X86体系结构的微处理器的指令集中加入浮点熔合乘加指令。
发明内容
本发明提供了一种X87熔合乘加指令,该指令存储于计算机系统存储器中,并由具有X87浮点单元寄存器堆栈的X86体系结构的微处理器执行,该指令包括:第一操作数和第二操作数,被指定存储于寄存器堆栈的第一寄存器和第二寄存器。该第一寄存器和第二寄存器是位于该寄存器堆栈栈顶的两个寄存器。该指令还包括第三操作数,被指定存储于寄存器堆栈的第三寄存器中。该熔合乘加指令指示微处理器将该第一操作数和该第二操作数相乘以产生一个乘积,然后将该第三操作数和该乘积相加以产生一个计算结果。
本发明的另一方面,提供了一种具有X87浮点单元的X86体系结构的微处理器,其中该X87浮点单元具有X87寄存器堆栈。该微处理器包括指令译码器,其对微处理器指令集中的X87熔合乘加指令进行译码。该熔合乘加指令包括第一操作数和第二操作数,被指定存储于该寄存器堆栈的第一寄存器和第二寄存器。该第一寄存器和第二寄存器是位于该寄存器堆栈栈顶的两个寄存器。该熔合乘加指令还包括第三操作数,被指定存储于寄存器堆栈的第三寄存器中。该微处理器还包括乘法器,耦接至该寄存器堆栈,其将该第一操作数和该第二操作数相乘产生一乘积,以响应该熔合乘加指令。该微处理器还包括加法器,耦接至该乘法器,其将该第三操作数和该乘积相加以产生一个计算结果,以响应该熔合乘加指令。
本发明的另一方面,提供了一种在计算设备中使用的计算机程序产品。该计算机程序产品包括包含计算机可读程序代码的计算机可用存储媒介,以提供一种具有X87浮点单元的X86体系结构的微处理器,其中该X87浮点单元具有X87寄存器堆栈。该计算机可读程序代码包括第一程序代码,其提供指令译码器将微处理器指令集中的X87熔合乘加指令译码。该熔合乘加指令包括第一操作数和第二操作数,被指定存储于该寄存器堆栈的第一寄存器和第二寄存器。该第一寄存器和第二寄存器是位于该寄存器堆栈栈顶的两个寄存器。该熔合乘加指令还包括第三操作数,被指定存储于寄存器堆栈的第三寄存器中。该计算机可读程序代码还包括第二程序代码,其提供乘法器,耦接至该寄存器堆栈,该乘法器将该第一操作数和该第二操作数相乘产生一乘积,以响应该熔合乘加指令。该计算机可读程序代码还包括第三程序代码,其提供加法器,耦接至该乘法器,其将该第三操作数和该乘积相加以产生一个计算结果,以响应该熔合乘加指令。
附图说明
图1是根据本发明实施例所述的指令集包括X87熔合乘加指令的X86体系结构的微处理器的结构框图。
图2是图1中执行熔合乘加指令的X87浮点单元的结构示意图。
图3是图1中的微处理器执行熔合乘加指令的步骤流程图。
图4是提供执行本发明各步骤的软件,并接着将该软件作为计算机数据信号通过通讯网络传输的方法流程图。
主要元件标号说明:
202数据寄存器堆栈             204乘法器
206加法器                     208移位器
212控制逻辑电路               214规格化及舍入电路
216加法器                     218计算结果
222乘积
具体实施方式
参考图1,该结构框图示出了指令集包括X87熔合乘加(FusedMultiply-Add,FMA)指令的X86体系结构的微处理器100。微处理器100包括指令缓存器102,其缓存取自耦接于微处理器100的系统存储器的程序指令,根据本发明,该程序指令包括X87熔合乘加指令。微处理器100还包括指令取得器104,耦接至该指令缓存器102,其从指令缓存器102和系统存储器中取得程序指令。微处理器100还包括指令译码器106,耦接至该指令取得器104,其对取得的微处理器100指令集的程序代码,如本发明所描述的X87熔合乘加指令,进行译码。指令调度器108,耦接至指令译码器106,将指令调度至耦接到该指令调度器108的各个功能单元。在本发明的一个实施例中,指令译码器106是一个指令转变器,其将取得的程序指令转变为底层的微指令,这些微指令被指令调度器108调度各个功能单元。这些功能单元或执行单元包括整数执行单元124,存取单元122以及X87浮点单元(Floating-Point Unit,FPU)126。在其它实施例中,还可以包括其它功能单元,如独立的浮点加法单元、MMX(MultiMedia Extensions,多媒体扩展指令集)单元、SSE(Streaming SIMD Extensions,单指令多数据流扩展)单元、和/或SSE2单元。微处理器100还包括寄存器文件112,其为功能单元提供指令操作数并从功能单元接收指令结果。微处理器100还包括数据缓存器114,其耦接至存取单元122,存取单元122缓存来自系统存储器的数据。指令调度器108调度本发明的X87熔合乘加指令至X87浮点单元126。执行X87熔合乘加指令时的X87浮点单元126及其操作数在图2和图3中有详细的表述。
图1也示出了熔合乘加指令的形式。该熔合乘加指令包括操作码132,其作为在微处理器100的指令集中识别该熔合乘加指令的唯一标识。操作码132的值是X87的操作码范围。在本发明的一实施例中,X87熔合乘加指令有四个可能的操作码值:0xD9D4、0xD9D5、0xD9D6、0xD9D7。在本发明的一实施例中,X87熔合乘加指令还明确指定了熔合乘加指令的第三操作数,如加数(这里用“C”表示)。根据X87的标准术语,第三个操作数这里也可以表示为通用记法ST(i),其代表了X87浮点单元寄存器堆栈202(在图2示出)中的一个寄存器,即寄存器堆栈202的栈顶下的第“i”个寄存器,其中“i”可以取0到7之间的值。熔合乘加指令指定另两个操作数到X87浮点单元寄存器堆栈202中最接近栈顶的两个寄存器。
图2是图1中根据本发明执行熔合乘加指令的X87浮点单元126的结构示意图。该X87浮点单元126包括X87数据寄存器堆栈202。该X87浮点单元寄存器堆栈202包括八个以堆栈方式组织的80bit位宽的寄存器。其中每个寄存器包括64bit的尾数字段,15bit的指数字段以及1个符号位。栈顶(Top-of-Stack,TOS)指针指向X87浮点单元寄存器堆栈202的栈顶寄存器的栈顶,如图2中所示的栈顶指针TOP(Top-of-Stack Pointer)。栈顶指针包含在X87浮点单元126的一个状态寄存器中(图中未示)。如图2所示,栈顶指针指向的是索引值为6的寄存器。因此,这两个被指定的操作数,如这里被表示为位于寄存器6和寄存器5的因子“A”和“B”,分别位于X87浮点单元寄存器堆栈202的栈顶的寄存器(通用的表示法是表示为ST(0))和栈顶以下紧邻栈顶的寄存器(通用的表示法是表示为ST(1))。在图2所示的实施例中,加法操作数“C”位于寄存器4,例如可以是X87浮点单元寄存器堆栈202中紧邻操作数“B”的寄存器。但是,除了在图2所示的实施例所示,程序员也可以指定X87浮点单元寄存器堆栈202中的其它寄存器为第三操作数,而不是紧邻操作数“B”的寄存器。
X87浮点单元126包括乘法器204,其将因子“A”和“B”的尾数相乘一产生一个128位的乘积222,乘积222提供给加法器216的第一输入端。X87浮点单元126还包括一个第二加法器206,其接收因子“A”和“B”的指数,并将其相加产生一个和以提供给控制逻辑电路212。控制逻辑电路212也接收加数“C”的指数。移位器208接收操作数“C”的尾数,并在控制逻辑电路212提供的控制信号的指示下,将所接收的操作数“C”的尾数移位。移位器208的输出提供给加法器216的第二输入端。控制逻辑电路212控制移位器208根据“C”的指数及“A”与“B”的指数之和将“C”的尾数移位,加法器216将乘积222与“C”尾数的有效位相加以产生一个和。尽管图2示出乘法器204和加法器206耦接至X87浮点单元寄存器堆栈202的接收寄存器5和6,且移位器208和控制逻辑电路212耦接至接收寄存器4,X87浮点单元寄存器堆栈202还包括多工器逻辑(图中未示出),其接收X87浮点单元寄存器堆栈202的每个寄存器的内容,并基于栈顶指针(Top-of-Stack Pointer)以及熔合乘加指令的具体操作数来选择适当的寄存器内容提供给乘法器204,加法器206,移位器208以及控制逻辑电路212。
加法器216将其得到的加和提供给规格化及舍入电路214。该规格化及舍入电路214将该加和规格化并舍入为标准的X87的符号位、指数、尾数格式,根据控制逻辑电路212提供给规格化及舍入电路214的控制信号,产生该熔合乘加指令的计算计算结果218的尾数。控制逻辑电路212根据“C”的指数及“A”的指数与“B”指数的和,并根据加法器216的输出产生该控制信号。控制逻辑电路212还输出该熔合乘加指令的计算结果218的指数和符号。计算结果218被存储于该熔合乘加指令指定的存储操作数“C”的寄存器中。在本发明的其它实施例中,计算结果218还可以存储到寄存器堆栈202中除了栈顶的两个寄存器的其它任意一个寄存器中,甚至还可以存储到微处理器100中其它寄存器中。
在本发明的一实施例中,如图3所示,操作数“A”和“B”弹出该X87浮点单元寄存器堆栈202。因此,如果该熔合乘加指令指定X87浮点单元寄存器堆栈202栈顶指针(Top-of-Stack Pointer,TOP)以下的第二个寄存器(通常记为ST(2))为“C”操作数寄存器,则该熔合乘加指令的计算结果218将置于X87浮点单元寄存器堆栈202如图3所示的栈顶指针(Top-of-StackPointer,TOP)寄存器中。
现在参考图3,是图1中的微处理器100执行熔合乘加指令的步骤流程图。流程从步骤302开始。
根据本发明的一实施例,在步骤302,指令解码器106将X87熔合乘加指令解码。如上所述,该X87熔合乘加指令指定熔合乘加操作的前两个操作数(因子“A”和“B”)到图2中的X87浮点单元寄存器堆栈202顶部的两个寄存器ST(0)and ST(1),并指定第三个操作数(加数“C”)到X87浮点单元寄存器堆栈202的第三寄存器ST(i)。接下来执行步骤304。
在步骤304,图2中的乘法器204将因子的尾数相乘产生图2中的乘积222。另外,图2中的加法器206将“A”和“B”的指数部分相加产生一个和以提供给图2中的控制逻辑电路212接下来执行步骤306。
在步骤306,加法器216将乘积222与加数“C”的尾数被移位器208移位以后的结果相加以产生一个和。另外,控制逻辑电路212根据“C”的指数及“A”与“B”的指数之和,以及根据加法器216的执行结果以产生计算结果218的指数和符号位。接下来执行步骤308。
在步骤308,参考以上图2的描述,图2中的规格化及舍入电路214将加法器216输出的和规格化及舍入,将加法器216输出的和转化成符合X87标准的符号位、指数、尾数格式。规格化及舍入的操作被延迟直到步骤306的加法执行以后,如此提供的计算结果218比分别先后执行乘法,舍入和加法操作所得的结果更精确。接下来执行步骤312。
在步骤312,计算结果218被存储到X87浮点单元寄存器堆栈202中被指定存储熔合乘加指令的第三操作数的寄存器ST(i)中。在本发明的另一实施例中,X87浮点单元寄存器堆栈202的栈顶指针(Top-of-Stack Pointer,TOP)以下的第二个寄存器ST(2)被指定为该目的寄存器,即第三操作数寄存器,换句话说,寄存器ST(2)紧邻在寄存器ST(1)的下方。接着执行步骤314。
在步骤314中,该X87浮点单元126将栈顶的两个值,即操作数“A”和“B”弹出该X87浮点单元寄存器堆栈202。因此,如果程序员指定X87浮点单元寄存器堆栈202的栈顶指针(Top-of-Stack Pointer,TOP)以下的第二个寄存器ST(2)为“C”操作数寄存器和目的寄存器,则当熔合乘加指令执行完全完成以后,如图3所示,计算结果218就被置于X87浮点单元寄存器堆栈202的栈顶指针(Top-of-Stack Pointer,TOP)寄存器中。步骤214完成以后流程结束。另一方面,任何本领域技术人员,在不脱离本发明的范围内,可在此基础上做进一步的形式上和具体实施方式上的改进和变化,例如在步骤308后,执行步骤314再执行步骤312。
值得注意的是,用于执行一系列结果累积的程序可以包括一系列的三指令序列。该指令序列中的三个指令包括:两个指令将操作数“A”和“B”压入X87浮点单元寄存器堆栈202的栈顶指针(Top-of-Stack Pointer,TOP)寄存器中,接着一熔合乘加指令指定寄存器ST(2)为“C”操作数寄存器和目的寄存器。另外,程序也可以包括一个包含这三指令序列的循环程序。
这里揭露的X87熔合乘加指令解决了熔合乘加指令需要指定三个操作数的问题,这并不是X87指令的本来的特点。这里揭露的X87熔合乘加指令通过指定至少两个操作数存储到X87浮点单元寄存器堆栈的栈顶的寄存器中,解决了这个问题。
尽管本发明及其对象,特点和优点已经被详细描述,本发明还包括了其它的具体实施方式。例如,尽管本实施例描述了X87熔合乘加指令中指定X87浮点单元寄存器堆栈中的寄存器用来存放该第三操作数,在其它实施例中也描述了X87浮点单元寄存器堆栈中的寄存器ST(2)被指定为存放该第三操作数的寄存器。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的范围内,可在此基础上做进一步的形式上和具体实施方式上的改进和变化,例如,除了采用硬件(例如,中央处理器、微处理器、微控制器、数字信号处理器、处理器核、片上系统(System onChip,SOC)或其它设备)以外,还可以采用被存储在计算机可用(如可读)媒介中的软件(如计算机可读代码、程序代码和其它形式的指令,如源语言、目标语言或机器语言)实现。这样的软件可以实现这里揭露的装置和方法的功能、制造、建模、仿真描述和/或测试。例如,可以通过使用通用编程语言(如C,C++),硬件描述语言(HDL)包括Verilog HDL、VHDL等,或其它可用程序来实现。这样的软件可以被置于任何计算机可用的媒介中,如半导体、磁盘或光盘(如CD-ROM、DVD-ROM等)。该软件也可是包含在计算机可用(如可读)的传输媒介(如载波或其他任何包含数字,光或模拟介质的传输媒介)中的一个计算机数据信号。如图4所示,本发明的实施例还为这里描述的微处理器提供该软件和接下来将该软件作为一个计算机数据信号在包括互联网和内部网的通讯网络中传输的方法。这里描述的装置和方法可能会包含在半导体IP(inte11ectual property)核中,如微处理器核(如用HDL实现),并被转变为集成电路中的硬件。此外,这里描述的装置和方法可以用软件结合的方法实现。因此,本发明不应局限在上述任何一个实施例中,本发明的保护范围当以本申请的权利要求及其均等物所界定的范围为准。
任何本领域技术人员,可在运用与本发明相同目的的前提下,使用本发明所揭露的概念和特别实施例来作为设计和改进其他一些结构的基础。这些变化、替代和改进不能背离权利要求书所界定的本发明的保护范围。

Claims (11)

1.一种X87熔合乘加指令,存储于计算机系统存储器中,并由具有X87浮点单元寄存器堆栈的X86体系结构的微处理器执行,该指令包括:
第一操作数和第二操作数,被指定存储于该X87浮点单元寄存器堆栈的第一寄存器和第二寄存器,其中该第一寄存器和该第二寄存器是位于该X87浮点单元寄存器堆栈栈顶的两个寄存器;以及
第三操作数,被指定存储于该X87浮点单元寄存器堆栈的第三寄存器中;
其中,该X87熔合乘加指令指示该微处理器将该第一操作数和该第二操作数相乘以产生乘积,并将该第三操作数和该乘积相加以产生计算结果。
2.如权利要求1所述的X87熔合乘加指令,其特征在于,该指令还指示该微处理器将该计算结果存储于该X87浮点单元寄存器堆栈的该第三寄存器中。
3.如权利要求1所述的X87熔合乘加指令,其特征在于,该指令还指示该微处理器将该第一操作数和该第二操作数弹出该X87浮点单元寄存器堆栈。
4.如权利要求1所述的熔合乘加指令,其特征在于,其中该第三寄存器为该寄存器堆栈栈顶以下的第二个寄存器。
5.一种具备X87浮点单元的X86体系结构微处理器,其中该X87浮点单元具有X87寄存器堆栈。该微处理器包括:
指令译码器,其对该微处理器指令集中的X87熔合乘加指令进行译码,该熔合乘加指令包括第一操作数和第二操作数,被指定存储于该寄存器堆栈的第一寄存器和第二寄存器,该第一寄存器和该第二寄存器是位于该寄存器堆栈的栈顶的两个寄存器,该熔合乘加指令还包括第三操作数,被指定存储于该寄存器堆栈的第三寄存器中;
乘法器,耦接至该寄存器堆栈,其将该第一操作数和该第二操作数相乘产生乘积,以响应该熔合乘加指令;以及
加法器,耦接至该乘法器,其将该第三操作数和该乘积相加以产生一个计算结果,以响应该熔合乘加指令。
6.如权利要求5所述的微处理器,其特征在于,其还将该计算结果存储于该寄存器堆栈的该第三寄存器中,以响应该熔合乘加指令。
7.如权利要求5所述的微处理器,其特征在于,该微处理器还将该第一操作数和该第二操作数弹出该寄存器堆栈,以响应该熔合乘加指令。
8.如权利要求5所述的微处理器,其特征在于,其中该第三寄存器为该寄存器堆栈栈顶以下的第二个寄存器。
9.一种在计算设备中使用的计算机程序产品,其包括:
计算机可用存储媒介,其中包含计算机可读程序代码,该程序代码提供具有X87浮点单元的X86体系结构的微处理器,其中该X87浮点单元具有X87寄存器堆栈,该计算机可读程序代码包括:
第一程序代码,其提供指令译码器,将微处理器指令集中的X87熔合乘加指令译码,其中该熔合乘加指令包括第一操作数和第二操作数,被指定存储于该寄存器堆栈的第一寄存器和第二寄存器,该第一寄存器和该第二寄存器是位于该寄存器堆栈的栈顶的两个寄存器,该熔合乘加指令还包括第三操作数,被指定存储于寄存器堆栈的第三寄存器中;
第二程序代码,其提供乘法器,耦接至该寄存器堆栈,该乘法器将该第一操作数和该第二操作数相乘产生乘积,以响应该熔合乘加指令;以及
第三程序代码,其提供加法器,耦接至该乘法器,其将该第三操作数与该乘积相加以产生计算结果,以响应该熔合乘加指令。
10.如权利要求9所述的计算机程序产品,其特征在于,其中该微处理器还存储该计算结果到该寄存器堆栈的该第三寄存器中,以响应该熔合乘加指令。
11.如权利要求9所述的计算机程序产品,其特征在于,其中该计算机可读程序代码可作为计算机数据信号在网络上传输。
CN200710166684.2A 2007-04-10 2007-11-05 一种x86体系结构的微处理器 Active CN100578443C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US91098507P 2007-04-10 2007-04-10
US60/910,985 2007-04-10
US11/781,754 2007-07-23

Publications (2)

Publication Number Publication Date
CN101145099A true CN101145099A (zh) 2008-03-19
CN100578443C CN100578443C (zh) 2010-01-06

Family

ID=39207642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710166684.2A Active CN100578443C (zh) 2007-04-10 2007-11-05 一种x86体系结构的微处理器

Country Status (3)

Country Link
US (1) US7917568B2 (zh)
CN (1) CN100578443C (zh)
TW (1) TWI356342B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339217A (zh) * 2010-07-27 2012-02-01 中兴通讯股份有限公司 一种浮点数乘加器融合处理装置及方法
CN106528044A (zh) * 2010-09-24 2017-03-22 英特尔公司 处理器、指令执行方法和计算系统
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078660B2 (en) * 2007-04-10 2011-12-13 The Board Of Regents, University Of Texas System Bridge fused multiply-adder circuit
US8046399B1 (en) * 2008-01-25 2011-10-25 Oracle America, Inc. Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module
US9690591B2 (en) 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
US8166091B2 (en) * 2008-11-10 2012-04-24 Crossfield Technology LLC Floating-point fused dot-product unit
US9389871B2 (en) 2013-03-15 2016-07-12 Intel Corporation Combined floating point multiplier adder with intermediate rounding logic
CN106293610B (zh) 2014-07-02 2019-03-15 上海兆芯集成电路有限公司 微处理器及其方法
US11061672B2 (en) * 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
FR3118511B1 (fr) * 2020-12-29 2023-02-17 Kalray Processeur comprenant un operateur de double multiplication et double addition activable par une instruction a trois references d’operandes

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6542916B1 (en) * 1999-07-28 2003-04-01 Arm Limited Data processing apparatus and method for applying floating-point operations to first, second and third operands
US7499962B2 (en) * 2004-12-21 2009-03-03 Intel Corporation Enhanced fused multiply-add operation
US7461117B2 (en) * 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US8078660B2 (en) * 2007-04-10 2011-12-13 The Board Of Regents, University Of Texas System Bridge fused multiply-adder circuit
US8239440B2 (en) * 2008-03-28 2012-08-07 Oracle America, Inc. Processor which implements fused and unfused multiply-add instructions in a pipelined manner

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102339217A (zh) * 2010-07-27 2012-02-01 中兴通讯股份有限公司 一种浮点数乘加器融合处理装置及方法
CN106528044A (zh) * 2010-09-24 2017-03-22 英特尔公司 处理器、指令执行方法和计算系统
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器

Also Published As

Publication number Publication date
US20080256162A1 (en) 2008-10-16
US7917568B2 (en) 2011-03-29
TW200841235A (en) 2008-10-16
TWI356342B (en) 2012-01-11
CN100578443C (zh) 2010-01-06

Similar Documents

Publication Publication Date Title
CN100578443C (zh) 一种x86体系结构的微处理器
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US8473719B2 (en) Data packet arithmetic logic devices and methods
CN1327340C (zh) 处理器和编译器
US7237097B2 (en) Partial bitwise permutations
CN1886744B (zh) 在可扩展的处理器架构中增加高级指令所用的方法和装置
CN101692202A (zh) 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
CN101326486B (zh) 进行浮点数的除法运算或平方根运算的运算装置和运算方法
TWI514269B (zh) 用於大整數算術之向量指令的設備與方法
CN102184092A (zh) 基于流水线结构的专用指令集处理器
TW200919304A (en) Apparatus and method for performing magnitude detection for arithmetic operations
CN101377733B (zh) 最佳化微处理器执行x87浮点加法指令的装置及方法
CN109947481A (zh) 用于处理分数倒数操作的装置和方法
EP4046029A1 (en) Cascade communications between fpga tiles
US6675286B1 (en) Multimedia instruction set for wide data paths
CN100444107C (zh) 优化的处理器和指令对准
Ritpurkar et al. Design and simulation of 32-Bit RISC architecture based on MIPS using VHDL
CN101727434A (zh) 一种特定应用算法专用集成电路结构
Amin et al. High-radix multiplier-dividers: Theory, design, and hardware
WO2021116832A1 (en) Three-dimensional lane predication for matrix operations
CN103677735B (zh) 一种数据处理装置及数字信号处理器
US20060248311A1 (en) Method and apparatus of dsp resource allocation and use
US20080208940A1 (en) Reconfigurable circuit
Kularatna Digital Signal Processors
Arndt et al. Hardware Accelerated Matrix Multiplication for Embedded Systems

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