CN106557299B - 浮点操作数计算方法以及使用此方法的装置 - Google Patents
浮点操作数计算方法以及使用此方法的装置 Download PDFInfo
- Publication number
- CN106557299B CN106557299B CN201611090929.3A CN201611090929A CN106557299B CN 106557299 B CN106557299 B CN 106557299B CN 201611090929 A CN201611090929 A CN 201611090929A CN 106557299 B CN106557299 B CN 106557299B
- Authority
- CN
- China
- Prior art keywords
- floating
- format
- bit
- operation number
- point operation
- 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
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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
-
- 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
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
Abstract
本发明的实施例提出一种浮点操作数计算方法,实施于微处理器的执行单元中,至少包括以下步骤:从来源寄存器接收多个第一格式中的其中一个的浮点操作数;将第一格式的浮点操作数转换为第二格式的浮点操作数;计算第二格式的浮点操作数以产生第二格式的计算结果;将第二格式的计算结果转换为第一格式的计算结果;以及回写第一格式的计算结果。
Description
技术领域
本发明涉及一种微处理器技术,特别是一种浮点操作数计算方法以及使用此方法的装置。
背景技术
计算机的微处理器或者中央处理单元中,微操作(称为micro-operation或μop)为底层指令,用以实现复杂宏指令(也称为宏指令macro instruction或计算机指令)。通常,微操作执行一或多个寄存器中数据的基本操作,包括于寄存器间、或寄存器及中央处理单元的外部总线间传递数据,以及执行寄存器中数据的数学运算或逻辑操作。传统的提取-译码-执行周期中,于执行时解构宏指令中的每一级,使得中央处理单元决定及执行一连串的微操作。
x86指令集中定义的浮点指令可包括x87浮点操作数或单指令流多数据流(SIMD,Single Instruction Multiple Data)浮点操作数。操作数(operand)的x87浮点操作数可使用扩展双精度(EP,Extension Precision 80)(80比特)表示,而操作数的SIMD浮点操作数可使用4个单精度(SP,Single Precision)(32比特)表示,或使用2个双精度(DP,DoublePrecision)(64比特)表示。传统的设计中,为处理不同浮点操作数格式的数学运算,例如乘法、除法等,需要不同的浮点数处理单元(FPU,Floating-point Processing Unit)及数据路径,增加硬件成本。因此,需要一种浮点操作数计算方法以及使用此方法的装置,用以降低硬件成本。
发明内容
本发明的实施例提出一种浮点操作数计算方法,实施于微处理器的执行单元中,至少包括以下步骤:从来源寄存器接收多个第一格式中的其中一个的浮点操作数;将第一格式的浮点操作数转换为第二格式的浮点操作数;计算第二格式的浮点操作数以产生第二格式的计算结果;将第二格式的计算结果转换为第一格式的计算结果;以及回写第一格式的计算结果。
本发明的实施例提出一种浮点操作数计算装置,实施于微处理器的执行单元中,至少包括:第一格式转换器;运算单元,耦接于第一格式转换器;以及第二格式转换器,耦接于运算单元。第一格式转换器从来源寄存器接收多个第一格式中的其中一个的浮点操作数,以及将第一格式的浮点操作数转换为第二格式的浮点操作数。运算单元计算第二格式的浮点操作数以产生第二格式的计算结果。第二格式转换器将第二格式的计算结果转换为第一格式的计算结果,以及将第一格式的计算结果回写。
第二格式使用较第一格式更多的比特数表示浮点操作数。
本发明前述浮点操作数计算方法以及装置可复用支持第二格式的浮点操作数的浮点处理单元FPU处理多种第一格式的浮点操作数的输入参数,而不需要分别针对每种第一格式的浮点操作数的输入参数,分别提供不同的浮点处理单元,节约电路面积。实现较为复杂浮点运算(例如浮点乘加运算及浮点除法运算等)的浮点处理单元,其自身的电路面积较大,利用本发明的技术复用浮点处理单元可以达到更明显的节省电路面积的效果。
附图说明
图1为依据本发明实施例的流水线级精简指令集计算机的微处理器的系统架构图。
图2为依据本发明实施例的执行单元的方块图。
图3为依据本发明实施例的扩展双精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。
图4为依据本发明实施例的单精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。
图5为依据本发明实施例的双精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。
图6为依据本发明实施例的浮点操作数计算方法流程图。
具体实施方式
以下说明是为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
图1为依据本发明实施例的流水线级(pipeline-stages)精简指令集计算机的微处理器的系统架构图。微处理器100的流水线级可包括指令提取单元(IF,InstructionFetch)111、指令存取单元(IA,Instruction Access)112、译码单元(DE,Decode)113、执行单元(EX,Execution)114及回写单元(WB,Write Back)115。程序计数器(PC,未显示)以寄存器实施,负责存放目前指令的地址。指令提取单元111可从程序计数器读取地址。指令存取单元112依据此地址从指令高速缓存(instruction cache)(图未绘示)提取宏宏指令,用以进行浮点操作数计算。译码单元113转译宏指令成为一条或多条包含操作码和操作数(operand)的微操作,并分别锁存操作码和操作数至指令寄存器(图未绘示)及来源寄存器(图未绘示)。来源寄存器为128比特寄存器,其锁存的操作数包含一个或多个浮点操作数。译码单元113产生的微操作还进一步包括容量信息(size information),该容量信息跟前述浮点操作数在同一时钟周期被发送给执行单元114,用以供执行单元114辨认浮点操作数的格式。在一实施例中,容量信息可以2比特表示浮点操作数的格式,例如,二进制数”2’b00”代表扩展双精度(EP,Extension Precision 80)浮点操作数,”2’b01”代表单精度浮点(single-precision floating-point)操作数,以及”2’b10”代表双精度浮点(double-precision floating-point)操作数。执行单元114依据容量信息读取操作数中浮点操作数的符号位(sign bit)、指数(exponent)及尾数(mantissa),并且转换为82位扩展双精度(EP,Extension Precision 82)(82比特)的浮点操作数。接着,执行单元114对转换产生的82位扩展双精度浮点操作数进行数学运算,例如乘法、除法等,已产生82位扩展双精度浮点操作数计算结果。最后,执行单元114依据容量信息将82位扩展双精度浮点操作数的运算结果转换为原来格式的运算结果,例如扩展双精度、单精度、双精度浮点操作数等,并回写原来格式的运算结果,例如回写至回写单元115。回写单元115将计算结果写入寄存器文件(register file)。
图2为依据本发明实施例的执行单元的方块图。执行单元114包含格式转换器220、运算单元240及格式转换器260。运算单元240可为加法器、乘法器及除法器等,用以计算82位扩展双精度的浮点操作数。格式转换器220用以依据容量信息213使用多个转换程序中的其中一个将扩展双精度、单精度及双精度中的其中一个的浮点操作数211转换为82位扩展双精度的浮点操作数230,并且输出82位扩展双精度浮点操作数230至运算单元240。例如,当接收到容量信息为”2’b00”时,格式转换器220将扩展双精度浮点操作数转换成82位扩展双精度浮点操作数。当接收到容量信息为”2’b01”时,格式转换器220将单精度浮点操作数转换成82位扩展双精度浮点操作数。当接收到容量信息为”2’b10”时,格式转换器220将双精度浮点操作数转换成82位扩展双精度浮点操作数。运算单元240计算82位扩展双精度格式的浮点操作数并产生82位扩展双精度格式的计算结果250,并且输出82位扩展双精度格式的计算结果250至格式转换器260。在一实施例中,运算单元240进一步包括指数运算模块(未绘示)及尾数运算模块(未绘示)等,分别对82位扩展双精度格式的浮点操作数的指数和尾数进行运算,实现诸如加法、乘法及除法等运算。格式转换器260用以依据容量信息213使用多个反向转换程序中的其中一个将82位扩展双精度格式的计算结果250转换为扩展双精度、单精度及双精度中的指定一个的计算结果270,并且回写计算结果270,例如回写至回写单元115。例如,当接收到容量信息为”2’b00”时,格式转换器260将82位扩展双精度浮点操作数格式的计算结果转换成扩展双精度浮点操作数格式的计算结果。当接收到容量信息为”2’b01”时,格式转换器260将82位扩展双精度浮点操作数格式的计算结果转换成单精度浮点操作数格式的计算结果。当接收到容量信息为”2’b10”时,格式转换器260将82位扩展双精度浮点操作数格式的计算结果转换成双精度浮点操作数格式的计算结果。
图6为依据本发明实施例的浮点操作数计算方法流程图。本方法实施于微处理器100的执行单元114中,包括以下步骤:从来源寄存器接收多个第一格式中的其中一个的浮点操作数,其中,第一格式例如可包含扩展双精度、单精度及双精度等(步骤S610);将第一格式的浮点操作数转换为第二格式的浮点操作数,其中第二格式使用较第一格式更多的比特数表示浮点数,第二格式可包含82位扩展双精度等(步骤S620);计算第二格式的浮点操作数以产生第二格式的计算结果(步骤S630),例如对第二格式的浮点操作数进行诸如加法、乘法及除法等运算;将第二格式的计算结果转换为第一格式的计算结果(步骤S640);以及回写第一格式的计算结果(步骤S650)。在一实施例中,步骤S620还包括:依据容量信息使用多个转换程序中的其中一个将第一格式的浮点操作数转换为第二格式的浮点操作数,其中,容量信息指出来源寄存器锁存的浮点操作数属于多个第一格式中的哪个。在一实施例中,步骤S640还包括:依据容量信息使用多个反向转换程序中的其中一个将第二格式的计算结果转换为所述第一格式的计算结果。具体而言,步骤S620的转换程序包括对指数的处理及对尾数的处理。首先,符号位(sign bit),例如扩展双精度格式的比特[79]、单精度格式比特[31]的及双精度格式的比特[63],其保持不变;其次,对指数(exponent)部分,转换程序将第一格式的浮点操作数的指数中最高位的值置于第二格式的浮点操作数的指数的最高位,将第一格式的浮点操作数的指数中最高位的反值置于第二格式的浮点操作数的指数的最高位之后的n个比特的每一个,n为第二格式的浮点操作数的指数的比特数减去第一格式的浮点操作数的指数的比特数(即两种格式的指数的比特数差值),将第一格式的浮点操作数的指数中的其余比特的值置于第二格式的浮点操作数的指数的其余比特;对尾数(mantissa)部分,转换程序对第一格式为扩展双精度格式的浮点操作数的尾数部分不作任何处理,这里仅讨论单精度和双精度的第一格式的的浮点操作数:转换程序对第二格式的的浮点操作数的尾数的最高位插入隐含位(imply bit),例如为”2’b1”,将第一格式的浮点操作数的尾数的值置于第二格式的浮点操作数的尾数的最高位之后的m个高位(m为第一格式的浮点操作数的尾数的比特数),以及将第二格式的浮点操作数的尾数的其余比特中的每一个填”2’b0”。转换程序更具体实施方式详述如下:
图3为依据本发明实施例的扩展双精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。一个128比特的来源寄存器锁存一个扩展双精度浮点操作数310,包含1比特的符号位311(比特[79])、15比特的指数313(比特[78:64])及64比特的尾数315(比特[63:0])。于扩展双精度浮点操作数310转换为82位扩展双精度浮点操作数330的转换程序(conversion procedure)中,格式转换器220将15比特的指数313扩充为17比特的指数333,以及维持64比特的尾数不变。详细来说,格式转换器220将扩展双精度浮点操作数310的符号位311(比特[79])搬动至82位扩展双精度浮点操作数330的符号位331(比特[81])。格式转换器220将扩展双精度浮点操作数310的指数313中比特[78]置于82位扩展双精度浮点操作数330的指数333中比特[80],将扩展双精度浮点操作数310的指数313中比特[78]的反值(inverse)填入82位扩展双精度浮点操作数330的指数333中比特[79:78]中的每一个(以斜线表示),以及将扩展双精度浮点操作数310的指数313中比特[77:64]置于82位扩展双精度浮点操作数330的指数333中比特[77:64]。例如,当扩展双精度浮点操作数310的指数313中比特[78]的值为”2’b0”时,填入82位扩展双精度浮点操作数330的指数313中比特[79:78]的值为”2’b11”。格式转换器220直接将扩展双精度浮点操作数310的尾数315(比特[63:0])置于82位扩展双精度浮点操作数330的尾数335(比特[63:0])。
图4为依据本发明实施例的单精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。一个128比特的来源寄存器可锁存四个单精度浮点操作数410a至410d。以下以单精度浮点操作数410a为例,说明详细的转换过程,本领域技术人员可据此推导出单精度浮点操作数410b至410d的转换过程,不再赘述以求简洁。单精度浮点操作数410a包含1比特的符号位411(比特[31])、8比特的指数413(比特[30:23])及23比特的尾数415(比特[22:0])。于单精度浮点操作数410a转换为82位扩展双精度浮点操作数430的转换程序中,格式转换器220将8比特的指数413扩充为17比特的指数433,以及将23比特的尾数415扩充为63比特的尾数435,以及于指数433及尾数435间插入隐含位(imply bit)434,设为”2’b1”。详细来说,格式转换器220将单精度浮点操作数410a的符号位411(比特[31])置于82位扩展双精度浮点操作数430的符号位431(比特[81])。格式转换器220将单精度浮点操作数410a的指数413中比特[30]置于82位扩展双精度浮点操作数430的指数433中比特[80],将单精度浮点操作数410a的指数413中比特[30]的反值(inverse)填入82位扩展双精度浮点操作数430的指数433中比特[79:71]中的每一个(以斜线表示),以及直接将单精度浮点操作数410a的指数413中比特[29:23]置于82位扩展双精度浮点操作数430的指数433中比特[70:64]。例如,当单精度操作数410a的指数413中比特[30]的值为”2’b1”时,填入82位扩展双精度浮点操作数430的指数433中比特[79:71]的值为”2’b000000000”。格式转换器220填入”2’b1”(”2’b1”为规格默认值,表征第二格式为82位扩展双精度格式,在第二格式为其它格式的实施例中也可为其它默认值)至82位扩展双精度浮点操作数430的隐含位434(比特[63]),将单精度浮点操作数410a的尾数415(比特[22:0])置于82位扩展双精度浮点操作数430的尾数435的高位(比特[62:40]),以及将82位扩展双精度浮点操作数430的尾数435的其余低位(比特[39:0])中的每一个填为”2’b0”。
图5为依据本发明实施例的双精度浮点操作数转换成82位扩展双精度浮点操作数的示意图。一个128比特的来源寄存器可锁存二个双精度浮点操作数510a至510b。以下以双精度浮点操作数510a为例,说明详细的转换过程,本领域技术人员可据此推导出双精度浮点操作数510b的转换过程,不再赘述以求简洁。双精度浮点操作数510a包含1比特的符号位511(比特[63])、11比特的指数513(比特[62:52])及52比特的尾数515(比特[51:0])。于双精度浮点操作数510a转换为82位扩展双精度浮点操作数530的转换程序中,格式转换器220将52比特的尾数515扩充为63比特的尾数535,将11比特的指数513扩充为17比特的指数533,以及于指数533及尾数535间插入隐含位534,设为”2’b1”。详细来说,格式转换器220将双精度浮点操作数510a的符号位511(比特[63])置于82位扩展双精度浮点操作数530的符号位531(比特[81])。格式转换器220将双精度浮点操作数510a的指数513中比特[62]置于82位扩展双精度浮点操作数530的指数533中比特[80],将双精度浮点操作数510a的指数513中比特[62]的反值填入82位扩展双精度浮点操作数530的指数533中比特[79:74]中的每一个(以斜线表示),以及将双精度浮点操作数510a的指数513中比特[61:52]置于82位扩展双精度浮点操作数530的指数533中比特[73:64]。例如,当双精度操作数510a的指数513中比特[62]的值为”2’b1”时,填入82位扩展双精度浮点操作数530的指数533中比特[79:74]的值为”2’b000000”。格式转换器220填入”2’b1”至82位扩展双精度浮点操作数530的隐含位534(比特[63])(”2’b1”为规格默认值,表征第二格式为82位扩展双精度格式,在第二格式为其它格式的实施例中也可为其它默认值),将双精度浮点操作数510a的尾数515(比特[51:0])置于82位扩展双精度浮点操作数530的尾数535的高位(比特[62:11]),以及将82位扩展双精度浮点操作数530的尾数535的其余低位(比特[10:0])中的每一个填为”2’b0”。
格式转换器260可使用如图3描述的转换的逆向程序(inverse conversionprocedure,又可称为反向转换程序)将82位扩展双精度浮点操作数计算结果250转换为扩展双精度浮点操作数计算结果270。格式转换器260可使用如图4描述的转换的逆向程序将82位扩展双精度浮点操作数计算结果250转换为单精度浮点操作数计算结果270。格式转换器260可使用如图5描述的转换的逆向程序将82位扩展双精度浮点操作数计算结果250转换为双精度浮点操作数计算结果270。
格式转换器220及260中实施的方法可复用支持82位扩展双精度浮点操作数的运算单元240处理扩展双精度、单精度及双精度浮点操作数的输入参数,而不需要分别针对扩展双精度、单精度及双精度浮点操作数的输入参数,分别提供不同的运算单元,节约电路面积。实现较为复杂浮点运算(例如浮点乘加运算及浮点除法运算等)的运算单元240,其自身的电路面积较大,利用本发明的技术复用运算单元240可以达到更明显的节省电路面积的效果。值得注意的是,本发明的第一格式为扩展双精度、单精度及双精度,第二格式为82位扩展双精度仅为举例,本发明不限于此,转换前后的浮点操作数也可使用其它格式。
虽然图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
Claims (20)
1.一种浮点操作数计算方法,实施于微处理器的执行单元中,其特征在于,包括:
从来源寄存器接收多个第一格式中的其中一个的浮点操作数;
将所述第一格式的浮点操作数转换为第二格式的浮点操作数,其中所述第二格式使用较所述第一格式更多的比特数表示所述浮点操作数;
计算所述第二格式的浮点操作数以产生所述第二格式的计算结果;
将所述第二格式的计算结果转换为所述第一格式的计算结果;以及
回写所述第一格式的计算结果。
2.根据权利要求1所述的浮点操作数计算方法,其特征在于,于将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:依据容量信息使用多个转换程序中的其中一个将所述第一格式的浮点操作数转换为所述第二格式的浮点操作数,于将所述第二格式的计算结果转换为所述第一格式的计算结果的步骤还包括:依据所述容量信息使用多个反向转换程序中的其中一个将所述第二格式的计算结果转换为所述第一格式的计算结果,其中,所述容量信息指出所述来源寄存器锁存的所述浮点操作数属于多个所述第一格式中的哪个。
3.根据权利要求2所述的浮点操作数计算方法,其特征在于,所述容量信息与所述浮点操作数在同一时钟周期被发送至所述执行单元。
4.根据权利要求1所述的浮点操作数计算方法,其特征在于,所述第一格式为扩展双精度、单精度及双精度中的其中一个,以及所述第二格式为82位扩展双精度。
5.根据权利要求3所述的浮点操作数计算方法,其特征在于,扩展双精度浮点操作数的符号位为比特[79],扩展双精度浮点操作数的指数包含比特[78:64]的值,扩展双精度浮点操作数的尾数包含比特[63:0]的值,单精度浮点操作数的符号位为比特[31],单精度浮点操作数的指数包含比特[30:23]的值,单精度浮点操作数的尾数包含比特[22:0]的值,双精度浮点操作数的符号位为比特[63],双精度浮点操作数的指数包含比特[62:52]的值,双精度浮点操作数的尾数包含比特[51:0]的值,82位扩展双精度浮点操作数的符号位为比特[81],82位扩展双精度浮点操作数的指数包含比特[80:64]的值,以及82位扩展双精度浮点操作数的尾数包含比特[63:0]的值。
6.根据权利要求1所述的浮点操作数计算方法,其特征在于,于将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:
将所述第一格式的浮点操作数的指数中最高位的值置于所述第二格式的浮点操作数的指数的最高位;
将所述第一格式的浮点操作数的指数中最高位的反值置于所述第二格式的浮点操作数的指数的次高位之后的n个比特的每一个,n为所述第二格式的浮点操作数的指数的比特数减去所述第一格式的浮点操作数的指数的比特数;以及
将所述第一格式的浮点操作数的指数中的其余比特的值置于所述第二格式的浮点操作数的指数的其余比特。
7.根据权利要求1所述的浮点操作数计算方法,其特征在于,于将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:
除了所述第二格式的浮点操作数的尾数的最高位,将所述第一格式的浮点操作数的尾数的值置于所述第二格式的浮点操作数的尾数的最高位之后的m个高位,m为所述第一格式的浮点操作数的尾数的比特数;以及
将所述第二格式的浮点操作数的尾数的其余比特中的每一个填”2’b0”。
8.根据权利要求1所述的浮点操作数计算方法,其特征在于,所述第一格式为扩展双精度,所述第二格式为82位扩展双精度,以及所述将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:
将所述第一格式的浮点操作数的符号位比特[79]的值置于所述第二格式的浮点操作数的符号位比特[81];
将所述第一格式的浮点操作数的比特[78]的值置于所述第二格式的浮点操作数的比特[80];
将所述第一格式的浮点操作数的比特[78]的反值置于所述第二格式的浮点操作数的比特[79:78]的每一个;以及
将所述第一格式的浮点操作数的比特[77:0]的值置于所述第二格式的浮点操作数的指数的比特[77:0]。
9.根据权利要求1所述的浮点操作数计算方法,其特征在于,所述第一格式为单精度,所述第二格式为82位扩展双精度,以及所述将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:
将所述第一格式的浮点操作数的符号位比特[31]的值置于所述第二格式的浮点操作数的符号位比特[81];
将所述第一格式的浮点操作数的比特[30]的值置于所述第二格式的浮点操作数的比特[80];
将所述第一格式的浮点操作数的比特[30]的反值置于所述第二格式的浮点操作数的比特[79:71]的每一个;
将所述第一格式的浮点操作数的比特[29:23]的值置于所述第二格式的浮点操作数的指数的比特[70:64];
填入默认值至所述第二格式的浮点操作数的比特[63];
将所述第一格式的浮点操作数的比特[22:0]的值置于所述第二格式的浮点操作数的比特[62:40];以及
将所述第二格式的浮点操作数的比特[39:0]中的每一个填”2’b0”。
10.根据权利要求1所述的浮点操作数计算方法,其特征在于,所述第一格式为双精度,所述第二格式为82位扩展双精度,以及所述将所述第一格式的浮点操作数转换为第二格式的浮点操作数的步骤还包括:
将所述第一格式的浮点操作数的符号位比特[63]的值置于所述第二格式的浮点操作数的符号位比特[81];
将所述第一格式的浮点操作数的比特[62]的值置于所述第二格式的浮点操作数的比特[80];
将所述第一格式的浮点操作数的比特[62]的反值置于所述第二格式的浮点操作数的比特[79:74]的每一个;
将所述第一格式的浮点操作数的比特[61:52]的值置于所述第二格式的浮点操作数的指数的比特[73:64];
填入默认值至所述第二格式的浮点操作数的比特[63];
将所述第一格式的浮点操作数的比特[51:0]的值置于所述第二格式的浮点操作数的比特[62:11];以及
将所述第二格式的浮点操作数的比特[10:0]中的每一个填”2’b0”。
11.一种浮点操作数计算装置,实施于微处理器的执行单元中,其特征在于,其包括:
第一格式转换器,用以从来源寄存器接收多个第一格式中的其中一个的浮点操作数,以及将所述第一格式的浮点操作数转换为第二格式的浮点操作数,其中所述第二格式使用较所述第一格式更多的比特数表示所述浮点操作数;
运算单元,耦接于所述第一格式转换器,用以计算所述第二格式的浮点操作数以产生所述第二格式的计算结果;以及
第二格式转换器,耦接于所述运算单元,用以将所述第二格式的计算结果转换为所述第一格式的计算结果,以及将所述第一格式的计算结果回写。
12.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式转换器依据容量信息使用多个转换程序中的其中一个将所述第一格式的浮点操作数转换为第二格式的浮点操作数,所述第二格式转换器依据所述容量信息使用多个反向转换程序中的其中一个将所述第二格式的计算结果转换为所述第一格式的计算结果,其中,所述容量信息指出所述来源寄存器锁存的所述浮点操作数属于多个所述第一格式中的哪个。
13.根据权利要求12所述的浮点操作数计算装置,其特征在于,所述容量信息与所述浮点操作数包含于微操作中而被发送至所述执行单元。
14.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式为扩展双精度、单精度及双精度中的其中一个,以及所述第二格式为82位扩展双精度。
15.根据权利要求14所述的浮点操作数计算装置,其特征在于,扩展双精度浮点操作数的符号位为比特[79],扩展双精度浮点操作数的指数包含比特[78:64]的值,扩展双精度浮点操作数的尾数包含比特[63:0]的值,单精度浮点操作数的符号位为比特[31],单精度浮点操作数的指数包含比特[30:23]的值,单精度浮点操作数的尾数包含比特[22:0]的值,双精度浮点操作数的符号位为比特[63],双精度浮点操作数的指数包含比特[62:52]的值,双精度浮点操作数的尾数包含比特[51:0]的值,82位扩展双精度浮点操作数的符号位为比特[81],82位扩展双精度浮点操作数的指数包含比特[80:64]的值,以及82位扩展双精度浮点操作数的尾数包含比特[63:0]的值。
16.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式转换器将所述第一格式的浮点操作数的指数中最高位的值置于所述第二格式的浮点操作数的指数的最高位;将所述第一格式的浮点操作数的指数中最高位的反值置于所述第二格式的浮点操作数的指数的最高位之后的n个比特的每一个,n为所述第二格式的浮点操作数的指数的比特数减去所述第一格式的浮点操作数的指数的比特数;以及将所述第一格式的浮点操作数的指数中的其余比特的值置于所述第二格式的浮点操作数的指数的其余比特。
17.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式转换器除了所述第二格式的浮点操作数的尾数的最高位,将所述第一格式的浮点操作数的尾数的值置于所述第二格式的浮点操作数的尾数的最高位之后的m个高位,m为所述第一格式的浮点操作数的尾数的比特数;以及将所述第二格式的浮点操作数的尾数的其余比特中的每一个填”2’b0”。
18.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式为扩展双精度,所述第二格式为82位扩展双精度,所述第一格式转换器将所述第一格式的浮点操作数的符号位比特[79]的值置于所述第二格式的浮点操作数的符号位比特[81],将所述第一格式的浮点操作数的比特[78]的值置于所述第二格式的浮点操作数的比特[80],将所述第一格式的浮点操作数的比特[78]的反值置于所述第二格式的浮点操作数的比特[79:78]的每一个,以及将所述第一格式的浮点操作数的比特[77:0]的值置于所述第二格式的浮点操作数的指数的比特[77:0]。
19.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式为单精度,所述第二格式为82位扩展双精度,所述第一格式转换器将所述第一格式的浮点操作数的符号位比特[31]的值置于所述第二格式的浮点操作数的符号位比特[81];将所述第一格式的浮点操作数的比特[30]的值置于所述第二格式的浮点操作数的比特[80];将所述第一格式的浮点操作数的比特[30]的反值置于所述第二格式的浮点操作数的比特[79:71]的每一个;将所述第一格式的浮点操作数的比特[29:23]的值置于所述第二格式的浮点操作数的指数的比特[70:64];填入默认值至所述第二格式的浮点操作数的比特[63];将所述第一格式的浮点操作数的比特[22:0]的值置于所述第二格式的浮点操作数的比特[62:40];以及将所述第二格式的浮点操作数的比特[39:0]中的每一个填”2’b0”。
20.根据权利要求11所述的浮点操作数计算装置,其特征在于,所述第一格式为双精度,所述第二格式为82位扩展双精度,所述第一格式转换器将所述第一格式的浮点操作数的符号位比特[63]的值置于所述第二格式的浮点操作数的符号位比特[81];将所述第一格式的浮点操作数的比特[62]的值置于所述第二格式的浮点操作数的比特[80];将所述第一格式的浮点操作数的比特[62]的反值置于所述第二格式的浮点操作数的比特[79:74]的每一个;将所述第一格式的浮点操作数的比特[61:52]的值置于所述第二格式的浮点操作数的指数的比特[73:64];填入默认值至所述第二格式的浮点操作数的比特[63];将所述第一格式的浮点操作数的比特[51:0]的值置于所述第二格式的浮点操作数的比特[62:11];以及将所述第二格式的浮点操作数的比特[10:0]中的每一个填”2’b0”。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611090929.3A CN106557299B (zh) | 2016-11-30 | 2016-11-30 | 浮点操作数计算方法以及使用此方法的装置 |
US15/426,391 US10564932B2 (en) | 2016-11-30 | 2017-02-07 | Methods for calculating floating-point operands and apparatuses using the same |
TW106108485A TWI635437B (zh) | 2016-11-30 | 2017-03-15 | 浮點操作數計算方法以及使用此方法的裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611090929.3A CN106557299B (zh) | 2016-11-30 | 2016-11-30 | 浮点操作数计算方法以及使用此方法的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557299A CN106557299A (zh) | 2017-04-05 |
CN106557299B true CN106557299B (zh) | 2019-08-30 |
Family
ID=58445773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611090929.3A Active CN106557299B (zh) | 2016-11-30 | 2016-11-30 | 浮点操作数计算方法以及使用此方法的装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10564932B2 (zh) |
CN (1) | CN106557299B (zh) |
TW (1) | TWI635437B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080017B2 (en) * | 2019-02-21 | 2021-08-03 | Micron Technology, Inc. | Host-based bit string conversion |
US11137982B2 (en) * | 2019-02-27 | 2021-10-05 | Micron Technology, Inc. | Acceleration circuitry |
CN110069240B (zh) * | 2019-04-30 | 2021-09-03 | 北京探境科技有限公司 | 定点与浮点数据计算方法及装置 |
US11263010B2 (en) * | 2019-07-09 | 2022-03-01 | Micron Technology, Inc. | Bit string lookup data structure |
CN111078190B (zh) * | 2019-11-13 | 2021-06-18 | 珠海格力电器股份有限公司 | 一种小型plc的单精度浮点数算术运算控制系统及方法 |
CN112860218B (zh) * | 2021-02-07 | 2023-07-11 | 厦门壹普智慧科技有限公司 | 用于fp16浮点数据和int8整型数据运算的混合精度运算器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740963A (zh) * | 2002-12-26 | 2006-03-01 | 英特尔公司 | 扩展精度的整数除的方法 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
CN101438232A (zh) * | 2006-05-16 | 2009-05-20 | 英特尔公司 | 不同浮点格式的浮点加法 |
CN101859243A (zh) * | 2009-07-03 | 2010-10-13 | 威盛电子股份有限公司 | 动态浮点运算暂存器精密度控制的装置及方法 |
CN103955447A (zh) * | 2014-04-28 | 2014-07-30 | 中国人民解放军国防科学技术大学 | 基于dsp芯片的fft加速器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949291A (en) * | 1988-12-22 | 1990-08-14 | Intel Corporation | Apparatus and method for converting floating point data formats in a microprocessor |
US5523961A (en) * | 1994-10-28 | 1996-06-04 | Cyrix Corporation | Converting biased exponents from single/double precision to extended precision without requiring an adder |
US7225323B2 (en) * | 2004-11-10 | 2007-05-29 | Nvidia Corporation | Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines |
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 |
CN102103479B (zh) | 2011-03-02 | 2015-06-10 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
-
2016
- 2016-11-30 CN CN201611090929.3A patent/CN106557299B/zh active Active
-
2017
- 2017-02-07 US US15/426,391 patent/US10564932B2/en active Active
- 2017-03-15 TW TW106108485A patent/TWI635437B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740963A (zh) * | 2002-12-26 | 2006-03-01 | 英特尔公司 | 扩展精度的整数除的方法 |
CN101042638A (zh) * | 2006-03-23 | 2007-09-26 | 富士通株式会社 | 浮点数求和的处理方法及计算机系统 |
CN101438232A (zh) * | 2006-05-16 | 2009-05-20 | 英特尔公司 | 不同浮点格式的浮点加法 |
CN101859243A (zh) * | 2009-07-03 | 2010-10-13 | 威盛电子股份有限公司 | 动态浮点运算暂存器精密度控制的装置及方法 |
CN103955447A (zh) * | 2014-04-28 | 2014-07-30 | 中国人民解放军国防科学技术大学 | 基于dsp芯片的fft加速器 |
Non-Patent Citations (2)
Title |
---|
《单、双、扩展精度自适应浮点乘、除和开方运算单元实现》;王重阳;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110815(第8期);第I137-14页 |
《龙芯GS464E处理器核架构设计》;吴瑞阳,等;《中国科学:信息科学》;20151231;第45卷(第4期);第480-500页 |
Also Published As
Publication number | Publication date |
---|---|
US20180150282A1 (en) | 2018-05-31 |
CN106557299A (zh) | 2017-04-05 |
US10564932B2 (en) | 2020-02-18 |
TW201821978A (zh) | 2018-06-16 |
TWI635437B (zh) | 2018-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557299B (zh) | 浮点操作数计算方法以及使用此方法的装置 | |
CN110036368B (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
JP5684393B2 (ja) | Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット | |
CN104111816A (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
WO1993020502A1 (en) | Exponential/logarithmic computational apparatus and method | |
CN101685383A (zh) | 计算器、基于直接对阶的自由精度浮点数的运算电路 | |
TWI588740B (zh) | 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 | |
CN103180820A (zh) | 用于执行浮点除法的方法和装置 | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
CN103984522A (zh) | Gpdsp中定点和浮点混合除法的实现方法 | |
CN105045560A (zh) | 一种定点乘加运算方法和装置 | |
CN100543670C (zh) | 产生扩展精度的整数除的商和余数的方法和装置 | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
Ritpurkar et al. | Design and simulation of 32-Bit RISC architecture based on MIPS using VHDL | |
GB2423385A (en) | Determining an initial estimate of a result value of a reciprocal operation | |
US20060184602A1 (en) | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value | |
CN105302519B (zh) | 用于执行浮点平方根运算的装置和方法 | |
US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
Popoff et al. | High-efficiency logarithmic number unit design based on an improved cotransformation scheme | |
Toronto et al. | Practically accurate floating-point math | |
Said et al. | Arbitrary reduced precision for fine-grained accuracy and energy trade-offs | |
US8924447B2 (en) | Double precision approximation of a single precision operation | |
Sung | An automatic scaling method for the programming of fixed-point digital signal processors | |
Bruintjes | Design of a fused multiply-add floating-point and integer datapath | |
Dieter et al. | Low-cost microarchitectural support for improved floating-point accuracy |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |