首页> 中国专利> 用于扩展函数的增强型浮点单元

用于扩展函数的增强型浮点单元

摘要

本发明的实施例是一种用于执行浮点运算的技术。浮点(FP)平方器对第一自变量进行平方以产生中间自变量。该第一和中间自变量具有第一和中间尾数与指数。FP乘加(MAD)单元对中间自变量、第二自变量和第三自变量执行乘加操作,以产生具有结果尾数和结果指数的结果。该第二和第三自变量分别具有第二和第三尾数与指数。

著录项

  • 公开/公告号CN1983161A

    专利类型发明专利

  • 公开/公告日2007-06-20

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200610063928.X

  • 发明设计人 D·多诺夫里奥;X·李;

    申请日2006-09-28

  • 分类号G06F7/544(20060101);G06F7/57(20060101);G06F9/38(20060101);G06T1/20(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人程天正;王勇

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 18:46:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-17

    未缴年费专利权终止 IPC(主分类):G06F7/544 授权公告日:20151125 终止日期:20180928 申请日:20060928

    专利权的终止

  • 2015-11-25

    授权

    授权

  • 2007-08-15

    实质审查的生效

    实质审查的生效

  • 2007-06-20

    公开

    公开

说明书

技术领域

本发明的实施例涉及微处理器领域,更具体地涉及浮点单元。

背景技术

在很多计算领域如三维(3-D)计算机图形、图像处理、数字信号处理、天气预报、空间探测、地震处理和数值分析中,浮点(FP)运算的使用变得越来越普遍。已经开发出特别设计的浮点单元以增强在计算机系统中的FP计算能力。很多FP应用涉及扩展函数的计算。扩展函数的实例有:三角函数、指数和对数函数、平方根、倒数平方根、求反(inverse)、除和幂函数等等。

用于计算FP扩展函数的现有技术存在很多缺陷。这些技术的范围从对表格中获得的值的内插法到诸如坐标旋转数字计算机(CORDIC)技术的迭代算法。这些技术可能需要具备专用电路的专用硬件。它们通常很昂贵并且不能灵活地适应于大范围的扩展函数。

附图说明

通过参考以下描述和附图可以最好地理解本发明的实施例,其中该附图用于描述本发明的实施例。在附图中:

图1A是描述能够实施本发明的一个实施例的处理系统的图。

图1B是描述能够实施本发明的一个实施例的图形系统的图。

图2是描述根据本发明的一个实施例的FP单元(FPU)的图。

图3是描述根据本发明的一个实施例的平方乘加(MAD)单元的图。

图4是描述根据本发明的一个实施例的FP平方器(squarer)的图。

图5是描述根据本发明的一个实施例的FP MAD单元的图。

图6是描述根据本发明的一个实施例的执行FP计算的过程的流程图。

图7是描述根据本发明的一个实施例的平方过程的流程图。

图8是描述根据本发明的一个实施例的执行乘加操作的过程的流程图。

图9是描述根据本发明的一个实施例的调整尾数乘积的过程的流程图。

具体实施方式

本发明的一个实施例是执行浮点运算的技术。浮点(FP)平方器将第一自变量(argument)平方以产生中间自变量。该第一和中间自变量具有第一和中间尾数和指数。FP乘加(MAD)单元对该中间自变量、第二自变量和第三自变量执行乘和加运算,以产生具有结果尾数和结果指数的结果。该第二和第三自变量分别具有第二尾数和指数和第三尾数和指数。

在以下的描述中将阐明很多具体细节。然而,应该理解可以脱离这些具体细节实施本发明的实施例。在其他情况下没有示出公知的电路、结构和技术,以避免混淆对该说明的理解。

可以将本发明的一个实施例作为一个过程描述,该过程通常被描述为程序框图、流程图、结构图或框图。虽然流程图可以将上述运算描述为按照时间顺序的过程,但是很多运算可以并行或同时执行。此外,可以重新安排上述运算的顺序。当过程的运算完成时终止该过程。过程可以对应于方法、程序、工序、制造或装配方法等等。

本发明的一个实施例是一种有效地计算FP扩展函数的技术。该FP扩展函数至少包括三角函数和代数函数,其中该代数函数例如是互换(reciprocation)、平方根和平方根的互换。扩展函数的计算基于利用了上述基本乘加(MAD)指令的多项式近似,其中该基本乘加指令对Y=A×B+C形式的表达式进行计算。可以利用牛顿-拉夫逊(Newton-Raphson)迭代法计算该代数函数。

可以将典型的多项式近似划分为三个阶段:范围的缩小阶段、近似阶段和重建(reconstruction)阶段。范围的缩小阶段将一个自变量转换为限定在缩小范围内的一个值。近似阶段对该范围被缩小的自变量的函数进行多项式近似。重建阶段用预定的一个或者多个常数组成最终的结果以恢复原始的范围。通常,范围的缩小阶段与重建阶段是简单明了的并且能够被有效地实现。它们可以包括简单的屏蔽(masking)、比较或低阶多项式求值。近似阶段是最花费时间的阶段,因为多项式的阶可能非常高(例如大于20)。

在该近似阶段中,采用霍纳(Homer)规则以对乘和加表达式提取公因子,减少乘法的数量。举例来说,一个四阶多项式y=ax4+bx3+cx2+dx+e可以按照如下求值:

y=(((ax+b)x+c)x+d)x+e            (1)

以上表达式基本上仅需要4条MAD指令来求值:

A=ax+b                           (2a)

B=Ax+c                           (2b)

C=Bx+d                           (2c)

D=Cx+e=y                        (2d)

通常,对于n阶多项式

f(x)=a0xn+a1xn-1+...+akxn-k+ak+1  (3)

通过执行n个MAD运算,每个运算包含新系数ai,其中i=0,...k,可以有效地实现上述多项式的计算。

当该多项式表达式是使得幂项可以被安排为以2递增时,利用基本运算A2×B+C替换A×B+C来有效地计算该多项式。该运算称为平方乘加运算或SMAD。如果将SMAD作为基础运算单元实现,那么利用SMAD对该多项式的求值可以比利用MAD的更有效。举例来说,多项式:

f(x)=ax8+bx6+cx4+dx2+e           (4)

仍然需要8次MAD操作。上述表达式可以被改写为:

f(x)=(((ax2+b)x2+c)x2+d)x2+e     (5)

上述表达式仅需要4条SMAD指令来估算:

A=ax2+b                          (6a)

B=Ax2+c                          (6b)

C=Bx2+d                          (6c)

D=Cx2+e=f(x)                    (6e)

通常,上述增强的MAD或SMAD指令与上述MAD指令相比提供了两倍的计算效率。可以通过具有幂以2递增的项的多项式来近似很多扩展函数。这种类型的扩展函数之一就是三角函数。举例来说,正弦(sine)函数可以按如下近似:

sine(x)=x-a0x3+a1x5-a2x7...       (7)

余弦(cosine)函数可以按如下近似:

cosine(x)=1-b0x2+b1x4-b2x6...     (8)

SMAD在利用牛顿-拉夫逊方法计算诸如倒数(1/x)、平方根和倒数平方根的代数函数时同样具有计算效率。该牛顿-拉夫逊方法是一种迭代近似,其采用初始的、低精度的推测值。在每次迭代后精度翻倍,并且从当前迭代中获得的结果被用作下一次迭代中的初始推测值。为了实际的空间节省措施,人们希望使上述初始推测值的表保持为很小,并且希望用空间节省来换取通过牛顿-拉夫逊技术的额外的迭代。用于近似倒数的通用等式是:

xi=xi-1(2-axi-1)              (9)

利用上述MAD单元,上述等式的每次迭代采用两条指令:

第一条MAD指令:z=2-a*xi-1     (10a)

第二条MAD指令:xi=z*xi-1+0    (10b)

然而,利用上述增强的MAD或SMAD运算,就可以只利用一条指令来计算每次牛顿-拉夫逊迭代的值。这可以通过如下重新安排等式(9)来执行:

xi=2xi-1-ax2i-1               (7)

在以上等式中,可以通过对x的指数的简单迭代来获得2乘x的乘法。牛顿-拉夫逊过程的每次迭代使初始推测值的精度翻倍。通过将与MAD单元相比用于计算每次迭代所需的指令数量减少一半,可以保有相同的推测表并且使总吞吐量翻倍,或者保持相同的吞吐量而使初始推测表的尺寸减半。

图1是描述处理系统10的图,其中能够实施本发明的一个实施例。系统10包括:处理器单元15、浮点单元(FPU)20、存储器控制器集线器(MCH)25、主存储器30、输入/输出控制器集线器(IOH)40、互连45、海量存储设备50以及输入/输出(I/O)设备471至47k

处理器单元15代表任意类型体系结构的中央处理器单元,例如利用超线程、安全、网络、数字媒体技术的处理器、单核心处理器、多核心处理器、嵌入式处理器、移动处理器、微控制器、数字信号处理器、超标量计算机、矢量处理器、单指令多数据(SIMD)计算机、复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)或混合体系结构的处理器。

FPU20是为矢量处理执行浮点运算的协处理器。它可以具有与处理器单元15的直接接口,并且可以与处理器单元15共享诸如存储空间的系统资源。处理器单元15与FPU20可以交换包括矢量数据和FP指令的指令和数据。FPU20还可以被看作是占有处理器单元15的地址空间的输入/输出(I/O)处理器。FPU20还可以连接到MCH25而不是直接连接到处理器单元15。FPU20利用了一种具有FP流水线的高度可扩缩的体系结构,用以使用增强的MAD单元来计算扩展函数。特别地,FPU20可用于有效地计算三角函数或代数函数(例如:倒数、平方根、倒数平方根)或者可以通过包含幂以2递增的项的多项式或牛顿-拉夫逊方法来求近似的任何函数。

MCH25提供了对诸如主存储器30和ICH40的存储器和输入/输出设备的控制和配置。MCH25可以集成至一个芯片组中,所述芯片组集成了诸如图形、媒体、单独执行模式、主机至外围总线接口、存储器控制、电源管理等多种功能。MCH25或者MCH25中的存储器控制器功能可以被集成在处理器单元15中。在一些实施例中,上述存储器控制器不管是处于处理器单元15的内部还是处于其外部都可以为处理器单元15中的所有核心和处理器工作。在其他的实施例中,该存储器控制器包括可独立地为处理器单元15中的不同核心或处理器工作的不同部分。

主存储器30存储系统代码和数据。主存储器30典型地实现为动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或包括不需要刷新的存储器任何其他类型的存储器。主存储器30可以由处理器单元15访问或者由处理器单元15和FPU20访问。

ICH40具有很多被设计成支持I/O功能的功能。上述ICH40还可以与MCH25一起集成到芯片组中,或者独立于MCH25地执行I/O功能。ICH40可以包括多个接口和I/O功能,例如:外设部件互连(PCI)总线接口、处理器接口、中断控制器、直接存储器存取(DMA)控制器、电源管理逻辑、计时器、系统管理总线(SMBus)、通用串行总线(USB)接口、海量存储器接口、低管脚数(LPC)接口等等。

互连45提供到外围设备的接口。上述互连45可以是点对点的或者连接到多个设备。为清楚起见,没有示出所有的互连。可以预期互连45可以包括例如外设部件互联(PCI)、PCI快速、通用串行总线(USB)和直接媒体接口(DMI)等任何互连或总线。

海量存储设备50存储档案信息,例如代码、程序、文件、数据和应用程序。海量存储设备50包括光盘(CD)只读存储器(ROM)52、数字视频/多用盘(DVD)53、软盘驱动器54、硬盘驱动器56以及任何其他磁或光学存储设备。海量存储设备50提供一种读取机器可访问介质的机制。I/O设备471至47k可以包括执行I/O功能的任意I/O设备。I/O设备471至47k的示例包括对输入设备(例如键盘、鼠标、跟踪球、指向设备)、介质卡(如音频、视频、图形)、网卡的控制器和任何其他外部设备的控制器。

图1B是描述可以实施本发明实施例的图形图形系统60的图。图形图形系统60包括图形控制器65、浮点单元(FPU)70、存储器控制器75、存储器80、像素处理器85、显示处理器90、数模转换器(DAC)95以及显示监视器。

图形控制器65是具有用于执行图形操作的图形能力的任意处理器,该图形操作例如是快速线条绘制、二维(2-D)与三维(3-D)图形着色功能、加阴影(shading)、反锯齿、多边形着色、透明效果、色彩空间变换、阿尔法混合、色度调节等等。FPU70基本上类似于在图1A中所示的FPU20。它对图形数据执行浮点运算。特别地,FPU70有效地计算如上所述的三角或代数函数。FPU70可以从图形控制器65接收FP指令和FP矢量或标量输入,并且向图形控制器65返回FP结果。存储器控制器75执行类似于图1A中MCH25的存储器控制功能。存储器80包括SRAM或DRAM存储设备以存储由图形控制器65和FPU70处理的指令和图形数据。

像素处理器85是一种专用的图形引擎,其可以执行特定和复杂的图形功能,例如几何计算、仿射变换、模型视图投影、三维修剪等等。像素处理器85还连接至存储器控制器75,以访问存储器80和/或图形控制器65。显示处理器90处理对图形数据的显示并且执行与显示相关的功能,例如调色板表格查找、同步、逆光控制器、视频处理等等。DAC95将数字显示数字数据转换为模拟视频信号给显示监视器97。显示监视器97是在屏幕上显示图形信息供观看的任意显示监视器。显示监视器可以是阴极射线管(CRT)监视器、电视(TV)机、液晶显示器(LCD)、平板显示器或数字CRT。

图2是根据本发明一个实施例的描述在图1A和1B中所示的FPU20/70的图。FPU20/70包括控制器210、FP流水线220以及输出电路230。

控制器210控制发布对输入向量运算的指令。可以由诸如处理器单元15(图1A)或图形控制器65(图1B)的处理器或者外部单元提供输入向量。控制器210可以包括输入队列以存储多个输入向量和指令。该输入队列的深度可以是任何适合于吞吐量和处理要求的深度。可以通过先进先出(FIFO)或任何其他存储体系结构来实现该输入队列。每一个输入向量可以包括N个标量分量。每个标量分量可以是一个FP数。控制器电路210分派从输入队列获取的输入向量并且根据FP流水线220的状态发布与该输入向量相关的指令。

FP流水线220计算扩展的FP函数。FP流水线220向控制器210产生一个状态以及向输出电路230产生FP结果。扩展的FP函数可以是任何一种超越函数,例如可由多项式近似来近似的三角函数(比如正切、正弦、余弦、反正切、反正弦、反余弦),或者是可以由牛顿-拉夫逊技术来近似的代数函数。FP流水线包括N个SMAD单元2401至240N,其中N是包括1的任意正整数;系数存储器250;以及状态流水线260。N个SMAD单元2401至240N串联连接。最后一个SMAD单元的输出提供FP结果,并经过反馈路径245与第一个SMAD单元的输入连接。这样的安排允许N个SMAD单元2401至240N能够计算一系列平方乘加运算。系数存储器250存储用于近似的任何系数,包括用于牛顿-拉夫逊技术的初始推测值。状态流水线260提供对四舍五入模式、异常处理以及FP流水线状态的控制。该状态表示指令是否正在通过反馈路径245重复循环。控制器210和输出电路230利用该状态来控制指令的发布。状态流水线260具有对应于反馈路径245的反馈路径265。其等待时间与N个SMAD单元2401至240N的等待时间相匹配。

输出电路230将FP结果写入或汇集至输出向量。输出电路230获得可能对应于输入向量的标量分量的计算结果的FP结果,并且写入到输出缓冲器的适当标量位置处。当所有标量结果都写入输出缓冲器之后,由诸如处理器单元15或图形控制器65的处理器或者外部单元读出完整的输出向量。

图3是根据本发明的一个实施例描述在图2中所示的平方乘加(SMAD)单元240的图。SMAD单元240包括FP平方器310和FP MAD单元320。要注意FP MAD单元320的特定体系结构取决于应用程序和系统的需求。以下说明仅仅是为了描述的目的。

FP加法和乘法与定点加法和乘法不同,因为FP数是用尾数和指数表示的。实际上,对FP数执行的运算通常包括分别对尾数和指数部分的运算。FP加法典型地由指数的减法、将尾数按等于指数差的量移位、尾数的加法或减法、结果的移位(在减法时)以让该结果处于规格化形式以及结果的四舍五入组成。FP乘法典型地由尾数的乘法、指数的加法以及规格化和四舍五入组成。如果需要,可包括上溢和下溢的检测。

FP平方器310接收第一自变量、FP数A,并执行平方运算以产生中间自变量或A2。第一自变量A和中间自变量A2是FP数。第一自变量A具有第一尾数Am和第一指数Ae。类似地,中间自变量A2具有中间尾数A2m和中间指数A2e

FP乘加(MAD)单元320接收中间自变量A2、第二自变量B以及第三自变量C。它对中间自变量A2、第二自变量B以及第三自变量C执行乘加运算以产生FP结果。该FP结果具有结果尾数和结果指数。第二自变量具有第二尾数Bm和第二指数Be。类似地,第三自变量C具有第三尾数Cm和第三指数Ce。因而,FP结果Y被计算成:Y=A2×B+C。

图4是描述根据本发明一个实施例的FP平方器310的图。FP平方器310包括乘法器410、选择器420、加法器430和选择器440。

乘法器410将第一尾数乘以从第一尾数和第一常数中选择出来的尾数被乘数以产生中间尾数A2m。选择器420从第一尾数Am和第一常数中提供该尾数被乘数。在一个实施例中,这个第一常数是一(1)。

加法器将第一指数与从第一指数Ae和第二常数中选择出的指数被加数相加以产生中间指数A2e。选择器440从第一指数Ae和第二常数中提供该指数被加数。在一个实施例中,第二常数是零(0)。

第一和第二常数分别代表FP数1.0和0。当选择器420和440被设置成选择这两个常数时,FP平方器310基本上执行A和1的FP乘法运算,结果就是尾数和指数都没有变化的第一自变量A。提供这个是为了可以将SMAD编程或配置为作为没有平方运算的MAD。

图5是根据本发明一个实施例举例说明图3中所示的FP MAD单元320的图。FP MAD单元320包括乘法器510、加法器520、调整器530、加法器570、四舍五入和规格化电路580以及结果指数调整器590。

乘法器510将中间尾数A2m与第二尾数Bm相乘以产生尾数乘积。这个尾数乘积被送到调整器530以在送到加法器570之前进行调整。加法器520将中间指数A2e与第二指数Be相加以产生指数和。

调整器530利用该指数和来调整尾数乘积和第三尾数。它包括调整器电路540、两个移位器550和560以及两个选择器565和545。调整器电路540基本上比较指数、确定差并产生一用于移位尾数的移位量。调整器电路540利用该指数和与由选择器545选择的第三指数Ce、增量的第三指数Ce+1以及第三常数中的一个而产生尾数移位代码和经过调整的指数和。利用加法器或递增器从第三指数Ce中产生增量的第三指数Ce+1。移位器550利用尾数移位代码对尾数乘积进行移位以产生经过调整的尾数乘积来送到加法器570。移位器560利用尾数移位代码对由选择器565选择的第三尾数C和第四常数中的一个进行移位以产生经过调整的第三尾数。经过调整的第三尾数送到加法器570。在一个实施例中,第三和第四常数是零。

加法器570将经过调整的尾数乘积与经过调整的第三尾数相加以产生尾数和。四舍五入和规格化电路580对该尾数和进行四舍五入及规格化以产生结果尾数Ym。它还提供四舍五入和规格化代码以调整结果指数。结果指数调整器590利用经过调整的指数和以及该四舍五入和规格化代码生成结果指数Ye

图6是描述根据本发明一个实施例的执行FP计算的过程600的流程图。

开始之后,过程600获取第一自变量(块610)。然后,过程600产生多项式的系数作为第二和第三自变量(块620)。

接着,过程600对第一自变量进行平方以产生中间自变量(块630)。第一和中间自变量分别具有第一尾数和指数及中间尾数和指数。之后,过程600对中间自变量、第二自变量和第三自变量执行乘加运算以产生结果(块640)。该结果具有结果尾数和结果指数。第二和第三自变量分别具有第二尾数和指数及第三尾数和指数。过程600确定是否需要迭代。如果是,过程600返回到块620以继续生成系数,否则过程600结束。

图7是描述根据本发明一个实施例的用于平方的过程630的流程图。

开始之后,过程630将第一尾数与从第一尾数和第一常数中选择出的尾数被乘数相乘以产生中间尾数(块710)。接下来,过程630将第一指数与从第一指数和第二常数中选择出的指数被加数相加以生成中间指数(块720),然后结束。

图8是描述根据本发明一个实施例的用于执行乘加运算的过程640的流程图。

开始之后,过程640将中间尾数与第二尾数相乘以产生尾数乘积(块810)。接着,过程640调整该尾数乘积和第三尾数(块820)。然后,过程640将中间指数与第二指数相加以生成指数和(块830)。之后,过程640将经过调整的尾数乘积与第三尾数相加以产生尾数和(块840)。

接着,过程640对该尾数和进行四舍五入和规格化以生成结果尾数,并且提供四舍五入和规格化代码(块850)。接下来,过程640利用经过调整的指数和以及四舍五入和规格化代码产生结果指数(块860),然后结束。

图9是描述根据本发明一个实施例的用于调整尾数乘积的过程820的流程图。

开始之后,过程820利用指数和以及第三指数、递增的第三指数和第三常数之一来生成尾数移位代码和经过调整的指数和(块910)。之后,过程820利用尾数移位代码对尾数乘积进行移位以产生经过调整的尾数乘积(块920)。接着,过程820利用尾数移位代码对第三尾数和第四常数之一进行移位以产生经过调整的第三尾数,然后终止。

虽然已经根据一些实施例描述了本发明,但是本领域技术人员会认识到本发明并不限于所描述的实施例,而是可以在所附权利要求的精神和范围内作出修改和替换并予以实施。因此该描述被看作是说明性的而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号