指数处理方法与系统的制作方法

文档序号:6614482阅读:228来源:国知局

专利名称::指数处理方法与系统的制作方法
技术领域
:本发明关于一种处理系统,特别有关于一种指数处理的方法与系统。
背景技术
:指数运算时常出现于图形与科学的应用。一般指数函数可定义成a^a、af,其中x=I+f,I为整数部分而f为分数部分。除此之外,ax可为一标准化的浮点数,例如a^l.a。a,a2…anx212。以2为基底的指数x^+z(z取代f)可以表示为2x=2'x2z。像是中央处理器或是数字处理器的处理系统,可通过多项式运算实现指数运算。一种多项式运算的方法是使用单一浮点运算的近似多项式(例^口0.9999998927+(0.6931547484+(0.2401397582+0.5586608429e-l+(0.8943041620e-2+0.1896367540e-2*x"x"x)*x)*x)。此计算方法的最大i吴差为1.073000000e-7。此方法的一个优点在于它仅需使用一般浮点单元所用的硬件即可实现。然而,此方法的缺点在于指令数(instructions)需求量以及所需的延迟时间。另一实现指数运算的方法为泰勒级数(Taylorseries)近似,其可表示为下列公式<formula>formulaseeoriginaldocumentpage12</formula>(Eq.1)上述指数函数22可以被表示成一基底函数f(z。),——次微分函数f,(zQ)以及一二次微分函数f,,(Zo),再加上误差项以得到f(z,)的近似(例如具有于zo的已知值的差异的脉冲函数5(z,))。此方法的优点在于可在每一指令用管线的方式产生一结果。然而,相4交于多项式方法,此方法需要额外的石更件元件。此外,泰勒级数近似通常需要专用硬件,而不是单纯使用一中央处理器,因为这些运算并非通用的,而且许多特定的查值表需加至处理器中。若是指数函数的计算不常出现的话,使用专用处理单元可能造成投资成本的效益低落。因此,本领域需要一种可实现指数运算的架构,以提供比传统系统更好的使用频率,并且拥有最佳化的指令数目。
发明内容本发明揭露多种指数处理系统与方法。一种指数处理方法用以计算一指数函数包括一整数成分和一分数成分。上述分数成分包括一第一部分、一第二部分以及一第三部分。该指数处理方法包括执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分。设定一整数指数以提供一整数基底值对应至上述整数成分。执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至上述第二部分和上述第三部分。展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值。结合展开且标准化的上述第二值和上述第三值以产生一第一乘积。最后结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。本发明还提供一种指数处理方法,使用一双分表格法计算以2为基底的一指数函数2x,其中2x二22y,2!对应至一整数成分,2y对应至一分数成分,2y二2y^2y2,2y、2y2分别对应至上述分数成分的一第一部分和一第二部分,该指数处理方法包括执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;设定一整数指数以提供一整数基底值对应至上述整数成分;执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分;展开并标准化上述第二值以提供展开且标准化的上述第二值;以及结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。本发明还提供一种指数处理方法,使用一二部表法计算以2为基底的一指数函数2x,其中2x二2"2y,2i对应至一整数成分,2y对应至一分凄t成分,2y二2y",2^对应至上述分凄t成分的一第一部分,该指数处理方法包括执行使用一第一地址的一第一查值表以提供一数值对应至上述第一部分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得;根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分;以及指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。本发明又提供一种指数处理系统,用以计算以2为基底的一指数函数2x,其中2t2"2y,2!对应至一整数成分,2y对应至一分数成分,2y二2yox2y"2y2,2y。、2y1、22分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一第一值对应上述第一部分,一第二值对应上述第二部分,以及一第三值对应上述第三部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;以及一结合逻辑电路,用以结合展开且标准化的上述第二值和上述第三值以产生一第一乘积,并且结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。本发明还提供一种指数处理系统,使用一二部表法计算以2为基底的一指数函数2x,其中2x二2"2y,2W寸应至一整数成分,2y对应至一分l丈成分,2y二2y"2y2,2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一二部表法存储器,用以根据上述分数部分提供一第一值对应上述第一部分,以及一第二值对应上述第二部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值以提供展开且标准化的上述第二值;以及一结合逻辑电路,用以结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。本发明另提供一种指数处理系统,使用一二部表法计算以2为基底的一指数函数2x,其中2x二2"2y,2!对应至一整数成分,2y对应至一分数成分,2y=2y°,2y。对应至上述分数成分的一第一部分,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一数值对应上述第一部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分,并且指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。此实施例可使用标准硬件可支持的基本指令且具有最佳化的指令数目。此实施例额外的技术特征包括对一源暂存器存放的一尾数值(mantissa)执行移位(shift)运算以取得一分数部分和一整数部分,当执行第一查值表时使用取得的整数部分以设定指数,实现l的补数(ls-complement)计算以简化负值计算,以及/或者通过降低派送率(issuerate),例如使用大型的单指令多数据(single-instructionmultiple-data,SIMD)平4亍才几器。这些实施例可使用标准的可编程硬件,像是可编程着色处理单元等。在另一些实施例中,指数计算的减少可通过更大的查值表以及更大的地址空间的使用以删除结合运算而实现。这些查值表可利用已知的二部表法(bipartitetablemethod,BPTM)而降低其大小。对于低精准度的实作而言,单一查值表可能已足够并且可减少计算量。其它本发明的系统、方法、技术特征以及优点可以通过下列说明文字以及所附图示而使本领域技术人员了解。其余所有本发明额外的系统、方法以及优点,当^L所附^L利要求书为准。本发明所述的指数处理方法与系统,可提供较好的使用频率及较佳化的指令数目。图l为一图形处理单元的计算核心;图2为一指数处理系统的实施例方块图;图3为图2的一部分,用以执行EXPTL1指令;图4为图2的一部分,用以执行EXPTL2指令;图5为图2的一部分,用以执行CFMUL和FMUL指令;图6为另一指数处理系统的实施例方块图;图7为使用两个乘法单元的指数处理方法流程图;图8为使用一个乘法单元的指数处理方法流程图;图9为未使用乘法单元的一指数处理方法流程图。具体实施例方式本说明书包括许多指数处理系统与方法的实施例。这些指数处理系统用以降低用于计算指数函数(例如2"的专用逻辑电路使用量,并且使用现存具有标准浮点积和熔加(fusedmultiply-add,FMAD)硬件的可编程处理单元。为了达成此目的,可使用标准积和熔加硬件支持的一个或多个包含基元(primitive)运算的指令组。此外,亦可使用最小的指令组可符合现存处理管线(pipeline)的时间要求。积和熔加硬件用来标准化输入值并将其设定成标准格式的浮点数,例如IEEE-754浮点格式。虽然此处4吏用标准化、单精准(single-precision)的IEEE-754格式来描述本发明的实施例,本领域技术人员仍可知双精准(double-precision)或更高精准的才各式可用于这些实施例中,像是延伸查值表及/或栏位的大小。一种可实现指数处理系统的处理环境揭露如下,并伴随实现指数函数的系统与方法实施例的《又述,以及这些实施例不同部分的分析。虽然此处仅提供图形处理环境的计算核心,这些实施例仍可整合至任何计算指数函数的处理环境。举例而言,这些实施例可用于或连结至中央处理器(centralprocessingunit,CPU),数字信号处理器(digitalsignalprocessor,DSP),或是其它应用的运算单元。某些指数处理系统的实施例包括使用查值表以储存一指数的分数成分的许多部分,或仅储存单纯的指数函数。举例而言,这些实施例可计算以2为基底的指数函数2X,其中2'^2'x2y,21对应至一整数成分(integercomponent),2y对应至一分数成分(fractionalcomponent)。上述分数成分可依指凄t函数的特性而被分解成许多部分,像是2^2^x2y、2y2,其中2^、2yl、2》'2分别对应至上述分数成分的第一部分、第二部分以及第三部分。通过为每个部分提供查值表,以及执行不同的结合运算(例如乘法),上述分数成分可与上述整数成分结合以计算上述指数函数。由于分数成分可分解成多个部分,因此可以比传统系统提供更小的查值表。对应第二部分(2y1)以及第三部分(2>2)的数值可用压缩格式储存,并且许多逻辑电路,例如或线电路(wire-()Rcircuitry),可用来标准化且展开这些压缩值以提供至计算指数函数的标准积和熔加硬件。相较于传统系统,这些实施例操作于较少的指令集并且减小专用硬件的使用。举例而言,在一实施例中,从一源暂存器取得一尾数值,并且对此尾数值进行移位运算以提供一整数部分和一分数部分。上述分数部分用来填入储存部分值的查值表。至少两数值(第二值和第三值)对应2y1和2y2并以压缩形式储存,而对应2yQ的数值(第一值)则以标准化的形式储存。通过储存这些压缩形式的数值,关联这些压缩值的查值表运算可以平行方式执行,因而减少运算数(以及指令数)。此外,如此的压缩值可以让查值表的数值存放在单一暂存器里。这些压縮值可以加入一些数值格式以适合使用于标准的积和熔加单元,以利计算指数函数的结合操作(例如乘法运算)。将压缩值格式化成展开并标准化的格式,例如IEEE-754,可以避免或至少减轻专用硬件的需求,其中专用硬件时常用于传统的系统与方法中。在稍后的说明中,一个结合运算的结果(例如2y'x2^)可与另一个结合运算的结果(例如2、2^)结合在一起以计算一指数函数(例如2X)。利用上述的移位功能对取得的尾数进行移位以提供整数和分数的部分,整数部分用以设定对应第一部分(2,查值表的整数指数。在一实施例中,l的补数运算可提供指数的负值运算,而传统机制计算是先算出绝对值后再取其倒数。此外,出现于整凄t部分的溢位(overflow)或欠位(underflow)可由例外处理器选择符合这些条件的既定值,或是在一计算值与一数值(对应一演算法的一查值表)之间作决定。因此,这样运算的结果便是从2y°查值表中取一数值并与指数函数的整数部分(21)作结合。最后,结合<formula>formulaseeoriginaldocumentpage19</formula>的乘积与<formula>formulaseeoriginaldocumentpage19</formula>的乘积来计算指数函数。标准积和熔加单元可应用于此结合运算。在一第二方法实施例中,较大的查值表可用以移除上述结合运算其中之一。这些查值表可使用已知的二部表法(bipartitetablemethods,BPTM)对查值表的大小作最佳化处理。虽然此实施例的整婆t部分处理相似于前述实施例,4旦分数部分是不相同的,因为此处使用单一的二部表法查值表。计算方式是利用对应2"的第一查值表的数值以及对应来自第二二部表法查值表的2",而以一标准积和熔加单元作单一结合运算。此外,第三个方法实施例可包括第二方法实施例的整数处理部分以提供一低精准值(例如12位尾数),以利于简便计算。在这些实施例中,基本指令组的最佳化数目可应用在维持管线时序限制下使用标准硬件。上述分数部分所处理的压缩值可减少查值表的数目或是增进查值运算的效率,并且这些压缩值的格式化可以使用允许标准硬件。图1为——图开j处5里单元(graphicsprocessingunit,GPU)的计算核心105。虽然图l未显示图形处理单元的所有元件,但显示于图l的元件已足够让本领域技术人员了解此图形处理器和指数处理系统实施例的一般功能与架构。如图1所示,计算核心105包括一存储器存取单元107耦合至第二阶(level2,L2)快取110。举例而言,存储器存取单元107从一存储器接口单元(图未显示)接收第二阶预读(prefetch)和溢出(spill)。第二阶快取110从一输入暂存器(图未显示)接收预先转换的顶点(pre-transformvertices,输入数据J)并且提供后置转换的顶点(post-transformvertices,!叙出凄丈据H)至三角属性单元(triangularattributeunits,图未显示)。计算核心105也包括一执行单元(executionunit,EU)库130,其包含多个执行单元140和执行单元控制与区域存储器145。在一实施例中,每个执行单元140包含一指数处理系统200,并且每个执行单元140可在单一时脉周期中处理多重指令。在另一些实施例中,指数处理系统200可包含显示于图l中的额外元件,或未显示于图l的其他元件。此外,虽然图l仅显示八个执行单元(EU0至EU7),然而执行单元的数目并不限制于此,其它实施例可多于或少于此数目。计算核心105更包括执行单元输入装置135和执行单元输出装置120,可各自提供输入至执行单元库130以及接收执行单元库130的输出。执行单元输入装置135和执行单元输出装置120可为交叉开关矩阵(crossbar)、总线(bus)或是其它已知的输入输出装置。执行单元输入装置135从一输入暂存器接收预先转换的顶点(输入数据B),并提供此数据至执行单元库130供执行单元140处理。此外,执行单元输入装置135接收像素包(pixelpackets,输入数据C)和紋理包(texelpackets,输入^:据D),并传送这些包至执行单元库130供执行单元140处理。再者,执行单元输入装置135更用以接收来自第二阶快取110的数据并提供至执行单元库130。这些数据可由第二阶快取IIO、执行单元输入装置135和/或来自前一运算产生的数据提供。指数计算后的数值可储存至每个执行单元140内的暂存器中。执行单元输出装置120接收执行单元库130的输出值,像是UVRQ以及RGBA。这些输出可回存至第二阶快取110或是从计算核心105输出(输出数据E)至一写回单元(图未显示),或是输出(输出数据F)至不同的紋理单元(图未显示)。计算核心105也包括任务分配仲裁器125,用以从包装配器(图未显示)接收标签或同步信号(tag/synchro)。任务分配仲裁器125使用这些输入控制执行单元输入装置135和执行单元输出装置120。换句话说,任务分配仲裁器125分别控制流过执行单元输入装置135和^丸行单元输出装置120的输入内容和输出内容。位于每个指数处理系统200(对应于每个EU0-EU7)内的硬件皆可执行指令运算。图2至图6表示指数处理系统200的不同实施例,可改进一函数f(x)的指数计算处理。假设给定一指数函数2X,其中2^2、2y。2y=2yox2yix2y2,y=y0+yl+y2。指数处理系统200可执行2X的计算。图2至图6出现的区块或元件所代表的功能可能包括一个或多个硬件元件,像是算术逻辑单元(arithmeticlogicunit,ALU)或是其它电路、暂存器、连结元件(例如绕线、总线等)等。在图2中,指数处理系统200a包括暂存器212(R0,源暂存器)、214(临时暂存器)、218(移位暂存器)、220(整数暂存器)、222(分数暂存器)、228(分数暂存器)、236(Rd2,或称临时暂存器)、238(第一暂存器)、240(第二暂存器,或单纯称为暂存器)、244(Rd3)、250(整数暂存器)、以及256(Rdl)、减法器(减法逻辑电路)216、反向器224和248、多工器(MUX)226、246和254、用以分别储存2^、2yl、2"的查值表230-234(例如查值表230(第一查值表)、查值表232(第二查值表)和查值表234(第三查值表)),乘法器242和258(可单独使用或者配合临时暂存器如244和/或256,亦称为结合逻辑电路),以及例外处理器252。例外处理器252和多工器254可分别或合并称作例外处理逻辑电路。分数暂存器222和228、多工器226以及反向器224可分别或合并称为暂存逻辑电路。此外,整数暂存器220和250、多工器246和254、反相器248以及例外处理器252可分别或合并称为设定逻辑电路。暂存器238和240可分别或合并称为格式设定逻辑电路。在一实施例中,查值表230、232、和234可为只读存储器(read-only-memory,ROM)。指数处理系统200a的操作可以下面的指令集作例子,称为演算法1。演算法1:l)FRCRfrac:=R0-floor(R0):2)EXPTL1Rtbl:=TableLookupl[Rfrac]:3)EXPTL2Rtb2:=TableLookup2[Rfrac]〔4)EXPTX3Rtb3:=TableLookup3[Rfrac]:5)FMULRtmp:=Rtbl*Rtb2:6)FMULRtmp:=Rtb3*Rtmp:7)EXPEXTRq:=floor(R0),Rr=2ARq:8)FMULRdest:=Rr*Rtmp暂存器212(源暂存器R0)储存欲处理的数值。暂存器2U可存放单精准(32位)IEEE浮点格式的一指数函数数据,该指数函数数据包括符号位(l位)、指数位(8位)以及分数或尾数位(23位)。在指令(l)中,取出存在暂存器212的尾数的分数部分(或简称为尾数),并且以一非标准化的格式将该尾数、一个引数1(leadingone)以及八个0储存至暂存器214(R:={00000000,1,R0[22,0]},其中R为一临时暂存器,如暂存器214)。暂存器212储存的指数部分用于减法器216,减法器216可将该指数部分减去127(亦即N,R0[30:23]-127)并且储存至暂存器218。暂存器214的数值(R)传送至暂存器218,并执行一左/右移位运算。若N为负数,则M:=R[31:0]〉〉N。若N大于23,则移出所有位,并且输入值为O,输出结果将为1.0。若N为正数,M:=R[31:0]《N。暂存器218存放的数值M较低的二十四个位传送至暂存器222(FRAC),其存》t分数部分。数值M较高的八个位传送至暂存器220(INT),其存放整数部分。若是右移大于七个位则不需执行移位动作,因为这表示输入不是太大就是太小。若移位大于2+127,则结果为正无限大,若移位小于2—127,则结果为0。若(1《0|31]==1)(亦即输入值为负值),则暂存器222(FRAC)所存放的值需要经过反向器224作负数化。在指令(2)-(4)中,暂存器228被分成多个8位区段并分别作为查值表230、232和234的地址,并分别回传数值2y。、2y'、2y2。查值表232和234提供数值至暂存器236(Rd2)。储存于暂存器236的数值(Tablel和Table2)接着分别储存至暂存器238和240。在指令(5)中,储存于暂存器240和238的数值在乘法器242中相乘,并将乘积储存于暂存器244(Rd3)。在指令(6)中,来自暂存器256(Rdl)的数值与来自暂存器244(Rd3)的数值相乘以计算2x。在多工器246中,RO的符号位用以选择存放于暂存器220的正值输出,或是执行l的补数运算的反向器248的负值输出。若暂存器218执行的左移运算已经饱和(或称溢位),则设定一最大值(例如255)。在暂存器250中,暂存器250储存的数值可加入一偏差值127,用以偏移该指数,因此Exp=nINT+127。数值e^的话,可以设定尾数为例外处理器252所计算的一特别值,否则便设定尾数为查值表230的输出。指令(7)和(8)提供整数成分21并且与2M乍结合,完成指数函数2X的计从上述的演算法1指令集中可以观察到几点。对照演算法1和图2,分数部分的结合处理可以伴随着查值表的应用。查值表回传介于[1,2)的标准化数值(亦即此数值大于或等于l.O且小于2.0,也就是l.xxxxxx...的二位小数),而一般IEEE-754格式的数值亦在此范围中(亦即l.xxx..*2£),因此无需执行指令(8)的乘法。于是,该整数部分可设定为该指数并利用第一查值表作查值(演算法1的指令(2))。这两个最佳化方法可以移除演算法l的指令(l)、(7)和(8)的必要性。此外,因为指令(2)的第一查值表回传一标准化24位的数值介于[1,2),因此不需要储存符号位、指数位以及引数l。因此在一实施例中,只有23位尾数需要储存。相同地,指令(3)和(4)(第二查值表和第三查值表的查值)回传标准化24位的数值介于[1,2),因此也不需要储存符号位、指数位、以及引数l。再者,第二查值表的数值格式为1.00000000x14x13...Xo,且第三查^f直表的凄t^i才各式为1.0000000000000000x6x5...x0,因jt匕引数0(leadingzeros)不用储存于查值表中。在一实施例中,因为查值表232和查值表234分别只有15和7位宽,因此可以用平行方式查值并将结果储存至单一暂存器中。根据上述观察,我们可以减少演算法l的指令,并产生另一指令集实施例(演算法2)如下演算法2(1)EXPTL1Rdl,R0(2)EXPTL2Rd2,R0(3)CFMULRd3,Rd2(4)FMULRd,Rd3,Rdl指数处理系统200a可用上述四个指令计算指数函数2x=2ix2y。此指数函数可定义指数为正数或负数。一般而言,过去在处理指数部分正负值时会先以指数部分的绝对值计算,若指数部分为负,则对输出的指数函数执行倒数运算。指数处理系统200a避免上述的倒数运算是因为当2^2、2y的x为负值时,x可以表示成x二(I-l)+(l-y),其中分数部分y永远为正。举例而言,若x=-4.75,则x=_4.75=-5+0.25=画101.000+0.Ol(二进位)。因此,(l-y)的计算简化可由检查X是否为负值而进行l的补数运算。换言之,这样可以加速2y的计算,因为完整的计算方法只需要计算2、乂及执行一最终乘法即可。对于EXPTL1和EXPTL2指令而言(亦即指令(1)和指令(2)),取出储存于暂存器212的尾数的分数部分以对查值表230、232、和234定址。因此在一实施例中,EXPTL1和EXPTL2可以依序执行,而暂存器(FRAC)222和228可以于上述两个运算中共用。图3至图5包括图2中指数处理系统200a的不同部分(200a-l、200a-2、和200a-3),用以解释上述四个指令的每一个指令。在图3中,指数处理系统200a-l可实现EXPTLl指令(指令(l))的运算。EXPTL1指令用作2、2^的部分计算。也就是使用暂存器218的分数位(FRAC[23:16])执行查值表230的查值运算。平行于此运算的是计算整数指数(I)和对应整数成分(2')的整数基底值。举例而言,从暂存器218中取出整数部分,并设定成指数,而多工器246产生的数值为标号过(2的补数)的8位数值,此8位数值再加上偏差值127后产生一整数指数值并存放至暂存器250。存于暂存器250的整数指数接着输入至例外处理器252。例外处理器252实现下述方法(以虛拟码表示)(i)e=0;(ii)ifnINT+127>255,thene=l,exp=255,sp=0;(iii)ifnINT+127<0,thene=l,exp=0,sp=0;(iv)if((R0[30..23]==OxFF)&&(R0[22:0]!,),thene=l,exp=255,sp=0x400000根据位e是否设定,可选择一数值介于一特别值与查值表的输出(查值表230的数值)之间。换言之,上述虚拟码用以处理特别情况。在虛拟码(ii)中,若是INTM27,则输出值设为无限大。在虚拟码(iii)中,若是INT《127,则输出值设为0。在虚拟码(iv)中,若是输入为非数值(notanumber,NaN),则输出值亦设为非数值。在上述三种特殊情况中,位e可设定为l,否则便设定为0。输出特殊尾数值或是正常查值表输出(2,是由位e控制多工器254而选择。因此,例外处理器252可执行上述演算法而计算正确的整数指数。指数处理系统200a用以处理EXPTL2指令(指令(2))的部分表示于图4,并且标号为指数处理系统200a-2。EXPTL2指令用以计算部分的2ylx2y2。暂存器228的位[15:8]和[7:0]分别用以定位查值表232和查值表234。暂存器228的位[15:0]可表示有效的O.OOOOOOOOyl,因jt匕查寸直表232的回4专{直为1.00000000X1,以及当專俞入是0.0000000000000000y2(亦即暂存器228的^立[7:0]可表示的有,文凄丈il)时,查^直表234的车俞出为1.0000000000000000X2。然而,引数1.0"和1.0"6并未保留在这些查值表中。因此,查值表232和234储存的是压缩格式。举例而言,查值表232和234各可储存256个数值,查值表232可储存15位的数值,而查值表234可储存7位的数值。指数和符号位并未储存于查值表232和234,因为其对应值各为127和0,而且是引数0(例如1.00000000xxxxxxxxxxxxxxx和1.0000000000000000xxxxxxx)。于是在一实施例中,指令EXPTL2的输出值为查值表232和234的22位输出,并且传送至单一输出暂存器236(32位暂存器,亦称为暂存器Rd2或是临时暂存器),并仍以压缩格式存在,其中两个输出值所共有的未储存部分为指数位(数值等于127)和符号位(数值等于0)。图5表示指令CFMUL(指令(3))和指令FMUL(指令(4))所对应的指数处理系统200a-3。指令CFMUL将查值表232和234输出的数值相乘(指令EXPTL2储存至暂存器"6的值)以计算2ylx2y2。如上所述,暂存器236的值为一压缩格式。在暂存器238和240中,其存放的数值为标准化且展开过的(或称解压縮过的)。因此,执行展开和标准化的硬件或逻辑电路包括线或(wire-OR)运算并插入偏差数值127和引数0(亦即加入引数0至尾数,并设定指数为127)。加入暂存器238的引数0数目有八个,而加入暂存器240的引数0有十六个。因为暂存器238和240的值为展开过的IEEE格式,因此这些数值可馈入积和熔加单元242,并将产生结果送至暂存器244。对应至积和熔加单元的积和熔加运算(指令(4))将两个标准化的浮点数相乘,其中一个浮点数来自暂存器244(2"x2y2),另一个浮点数来自暂存器256(2、2y0)。积和熔加单元242和258可能包括单一的积和熔加单元,亦可能使用分离的积和熔加单元。由上述可知,一实施例的指数处理方法4吏用四个运算两个查值表运算(三个查值表,其中有一个查值表运算是平行进行)和两个乘法运算,但是仍有可有额外的最佳化之处。若使用更大查值表的话,例如用2y二2kQx2W替代2^2"x2"x2y2,演算法2中的乘法指令(FMUL)是可以移除的。因此,kO和kl各自为较大的12位和11位。然而,一种已知的二部表法可用以减少查值表的大小。图6提供另一种指数处理系统200b,其中有许多元件与图2相同,于此不再赘叙。此处,除了查值表630(第一二部表法表)额外使用二部表法之外,保留指令EXPTL1如先前所述。指令EXPTL2使用单一查值表634(第二二部表法表),且查值表634亦使用二部表法,而引数l和十二个引数O亦不需要储存。于是,演算法3可以表示成如下所述演算法3:(1)EXPTL1Rdl,RO(2)EXPTL2Rd2,RO(3)CFMULRd,Rd2,Rdl演算法3使用两个查值表和一个CFMUL指令。演算法2和演算法3的最大不同处在于CFMUL指令。在演算法3中,CFMUL使用两个源运算子。第一源运算子Rdl,为来自第一查值表(查值表630)的标准化浮点值。第二源运算子Rd2,为对应查值表634的一压缩格式数值,并且可利用加入十二个引数O至尾数和设定偏差指数127至暂存器240以格式化此值。因此,此两源运算子可馈入一标准的浮点乘法单元242。值得注意的是,图6的方法(12位低精准尾数)可只单独使用EXPTL1指令。举例而言,若EXPTL1指令使用12位的查值表,则一低精准的结果便不需要演算法3的步骤(2)和(3),这对于许多图形应用在计算乘方函数(powerfunction)时是种优点。故上述的设定逻辑电路以及暂存器256可用以提供一低精准数值。在一些实施例中,因为以2为基底的指数运用对于积和熔加型式的运算是相对较低的,因此查值表的数目可以通过限制派送率(issuerate)而减少。举例而言,演算法2需要四个指令。但若EXPTL1/2的派送率限制为每N个周期一个指令,则单一个EXPTL1/2单元可共享于N个单指数多数据单元中。图7为一指数处理方法的实施例200c,可用以计算以2为基底的一指数函数2X。其中2^2'x2y,2t为整数成分,2y为分数成分。2y=2y°x2ylx2y2,其中2〉'°、2yl、2y2分别逼近2y的第一部分、第二部分以及第三部分。步骤702执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分(2-)。步骤704设定一整数指数以提供一整数基底值对应至上述整数成分。步骤706执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至第二部分和第三部分。步骤708展开并标准化上述第二值和第三值以提供展开且标准化的上述第二值和第三值。步骤710结合展开且标准化的上述第二值和第三值以产生第一乘积。步骤712结合第一值、整数基底值以及第一乘积以计算上述指数函数。图8为一指数处理方法的实施例200d,可使用一双分表格法计算以2为基底的一指数函数2X。其中2^2、2y,2'对应至一整数成分,2y对应至一分数成分。2y=2ylx2y2,其中2"、2"分别对应至上述分数成分的一第一部分和一第二部分。步骤802执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分。步骤804设定一整数指数以提供一整数基底值对应至上述整数成分。步骤806执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分。步骤808展开并标准化上述第二值以提供展开且标准化的上述第二值。步骤810结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。图9为一指数处理方法的实施例200e,可使用一二部表法计算以2为基底的一指数函数2X。其中2^2、2y,2t对应至一整数成分,2y对应至一分数成分。2y=2y(),2^对应至上述分数成分的一第一部分。步骤902执行使用一第一地址的一第一查值表以提供一数值对应至上述第一部分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得。步骤904根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分。步骤906指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。任何对应图7、图8、图9的流程图的程序叙述或区块可以表示成模块、区段或是一部分的程序码包括一个或多个可执行的指令以实现程序中特定的逻辑功能或步骤。改变本发明的上述较佳实施例,例如根据上述的功能而变动执行顺序,同时执行或是倒序执行,都是本领域技术人员可理解的。指数处理系统200(200a-200e)可实现于硬件、软件以及軔体或是上述三者的任一组合。在上述的较佳实施例中,指数处理系统200使用硬件实现,并可实现于任一下述的已知技术或是其组合中具有逻辑门以依据输入数据实现逻辑功能的离散逻辑电路(discretelogiccircuits),具有合适组合逻辑闸的专用集成电路(applicationspecificintegratedchip,ASIC),可编程逻辑门阵列(programmablegatearray,PGA),现场可编程逻辑门阵列(fieldprogrammablegatearray,FPGA)等。以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。附图中符号的简单说明如下105:计算核心107:存储器存取单元110:第二阶快取120:执行单元输出装置125:任务分配仲裁器130:执行单元库135:执行单元输入装置140:执行单元执行单元控制与区域存储器216:减法器222、228、236、238、240、244、145:200:指数处理系统212、214、218、220250、256:暂存器224、248:反向器230、232、234、630242、258:乘法器226、246、254:634:查值表252:例外处理器多工器权利要求1.一种指数处理方法,用以计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y0×2y1×2y2,2y0、2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,其特征在于,该指数处理方法包括执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;设定一整数指数以提供一整数基底值对应至上述整数成分;执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至上述第二部分和上述第三部分;展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;结合展开且标准化的上述第二值和上述第三值以产生一第一乘积;以及结合上述第一值、上述整数基底值以及上述第一乘积以计算上述指数函数。2.根据权利要求l所述的指数处理方法,其特征在于,更包括从存有一尾数值的一移位暂存器中取得一分数部分和一整数部分,其中上述尾数值是从一源暂存器获得,取得上述分数部分和上述整数部分的方法更包括对存于上述移位暂存器的上述尾数值执行一移位运算。3.根据权利要求2所述的指数处理方法,其特征在于,执行上述移位运算更包括执行对存于上述移位暂存器的上述尾数值执行一l的补数运算;其中执行上述1的补数运算更包括使用从上述源暂存器取得的一偏移指数位。4.根据权利要求2所述的指数处理方法,其特征在于,更包括当上述源暂存器包含一符号位指出一负数时,负数化上述分数部分并储存至一分数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,不负数化且储存上述分数部分至上述分数暂存器;其中执行上述第一查值表和上述第二查值表更包括分别使用上述分数暂存器的一第一区段、一第二区段以及一第三区段作为上述第一地址、上述第二地址以及上述第三地址。5.根据权利要求2所述的指数处理方法,其特征在于,设定上述整数指数更包括当上述源暂存器包含一符号位指出一负数时,负数化上述整数部分并偏移上述负数化后的整数部分,再储存负数化且偏移过的上述整数部分至一整数暂存器;或是当上述源暂存器包含上述符号位指出一正数时,偏移未负数化的上述整数部分,并储存未负数化且偏移过的上述整数部分至上迷整数暂存器;其中设定上述整数指数更包括指派上述整数指数成上述整数暂存器中储存的一数值。6.根据权利要求5所述的指数处理方法,其特征在于,设定上述整数指数更包括处理溢位与欠位的多个例外事件,其中处理上述例外事件包括判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件;其中设定上述整数指数更包括重设上述整数指数成一计算值,其中上述计算值对应至上述溢位条件或上述欠位条件。7.根据权利要求l所述的指数处理方法,其特征在于,展开并标准化的方法更包括格式化成IEEE-754浮点格式。8.根据权利要求l所述的指数处理方法,其特征在于,更包括分别储存展开并标准化的上述第二值和上述第三值至一第一暂存器和一第二暂存器;其中展开并标准化的方法更包括在上述第一暂存器和上述第二暂存器分别加入多个引数o以及一偏移指数部分。9.根据权利要求l所述的指数处理方法,其特征在于,结合展开且标准化的上述第二值和上述第三值更包括在一积和熔加单元将展开且标准化的上述第二值和上述第三值相乘,并储存相乘后的上述第一乘积至一临时暂存器。10.根据权利要求l所述的指数处理方法,其特征在于,执行上述第一查值表和上述第二查值表更包括通过限制一派送率为每N个时脉周期一个指令,在对应N个单指令多数据单元的一单一查值表中执行上述第一查值表和上述第二查值表。11.根据权利要求l所述的指数处理方法,其特征在于,执行上述第二查值表更包括平行执行两个查值表。12.根据权利要求l所述的指数处理方法,其特征在于,更包括储存上述第二值和上述第三值至一单一暂存器。13.—种指数处理方法,使用一双分表格法计算以2为基底的一指数函数2X,其中2x=2I*2y、2I对应至一整数成分,2y对应至一分数成分,2y=2ylx2y2,2yl、2y2分别对应至上述分数成分的一第一部分和一第二部分,其特征在于,该指数处理方法包括:执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;设定一整数指数以提供一整数基底值对应至上述整数成分;执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分;展开并标准化上述第二值以提供展开且标准化的上述第二值;以及结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。14.根据权利要求13所述的指数处理方法,其特征在于,更包括从存有一尾数值的一移位暂存器中取得一分数部分和一整数部分,其中上述尾数值是从一源暂存器获得;其中取得上述分数部分和上述整数部分的方法更包括对存于上述移位暂存器的上述尾数值执行一移位运算。15.根据权利要求14所述的指数处理方法,其特征在于,执行上述移位运算更包括执行对存于上述移位暂存器的上述尾数值执行一l的补数运算;其中执行上述1的补数运算更包括使用从上述源暂存器取得的一偏移指数位。16.根据权利要求14所述的指数处理方法,其特征在于,更包括当上述源暂存器包含一符号位指出一负数时,负数化上述分数部分并储存至一分数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,不负数化且储存上述分数部分至上述分数暂存器;其中执行上述第一查值表和上述第二查值表更包括分别使用上述分数暂存器的一第一区段和一第二区段作为上述第一地址和上述第二地址。17.根据权利要求14所述的指数处理方法,其特征在于,设定上述整数指数更包括当上述源暂存器包含一符号位指出一负数时,负数化上述整数部分并偏移上述负数化后的整数部分,再储存负数化且偏移过的上述整数部分至一整数暂存器;或是当上述源暂存器包含上述符号位指出一正数时,偏移未负数化的上述整数部分,并储存未负数化且偏移过的上述整数部分至上述整数暂存器;其中设定上述整数指数更包括指派上述整数指数成上述整数暂存器中储存的一数值。18.根据权利要求17所述的指数处理方法,其特征在于,设定上述整数指数更包括处理溢位与欠位的多个例外事件,其中处理上述例外事件包括判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件;其中设定上述整数指数更包括重设上述整数指数成一计算值,其中上述计算值对应至上述溢位条件或上述欠位条件。19.根据权利要求13所述的指数处理方法,其特征在于,展开并标准化的方法更包括格式化成IEEE-754浮点格式。20.根据权利要求13所述的指数处理方法,其特征在于,更包括储存展开并标准化的上述第二值至一暂存器;其中展开并标准化的方法更包括在上述暂存器加入多个引数0以及一偏移指数部分。21.根据权利要求13所述的指数处理方法,其特征在于,上述结合方法更包括在一积和熔加单元里将上述第一值、上述整数基底值以及展开且标准化的上述第二值相乘。22.根据权利要求13所述的指数处理方法,其特征在于,执行上述第一查值表和上述第二查值表更包括通过限制一派送率为每N个时脉周期一指令,在对应N个单指令多数据单元的一单一查值表中执行上述第一查值表和上述第二查值表。23.—种指数处理方法,使用一二部表法计算以2为基底的一指数函数2X,其中2x=2×2y,21对应至一整数成分,2y对应至一分数成分,2y=2y0,2y0对应至上述分数成分的一第一部分,其特征在于,该指数处理方法包括执行使用一第一地址的一第一查值表以提供一数值对应至上述第一部分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得;根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分;以及指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。24.—种指数处理系统,用以计算以2为基底的一指数函数2x,其中2x=2、2y,2t对应至一整数成分,2y对应至一分数成分,2y=2yox2yix2y2,2y°、2yl、2y2分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,其特征在于,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一第一值对应上述第一部分,一第二值对应上述第二部分,以及一第三值对应上述第三部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;以及一结合逻辑电路,用以结合展开且标准化的上述第二值和上述第三值以产生一第一乘积,并且结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。25.根据权利要求24所述的指数处理系统,其特征在于,更包括一源暂存器用以储存上述尾数和一指数位;以及一减法逻辑电路用以偏移上述指数位,其中上述暂存逻辑电路用以接收偏移后的上述指数位并对上述尾数执行一移位运算和一l的补数运算。26.根据权利要求24所述的指数处理系统,其特征在于,上述暂存逻辑电路更用以当上述源暂存器包含一符号位指出一负数时,负数化并储存上述分数部分,或是当上述源暂存器包含上述符号位指出一正数时,不负数化并储存上述分数部分。27.根据权利要求24所述的指数处理系统,其特征在于,上述存储器包括一第一查值表、一第二查值表以及一第三查值表。28.根据权利要求24所述的指数处理系统,其特征在于,上述设定逻辑电路包括一整数暂存器,上述设定逻辑电路用以当上述源暂存器包含一符号位指出一负数时,负数化并偏移上述整数部分,再储存负数化且偏移过的上述整数部分至上述整数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,偏移并储存上述整数部分至上述整数暂存器。29.根据权利要求28所述的指数处理系统,其特征在于,上述设定逻辑电路用以设定上述整数指数以指派上述整数指数成上述整数暂存器中储存的一数值;其中上述设定逻辑电路更包括一例外处理逻辑电路,上述例外处理逻辑电路用以通过判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件而处理溢位与欠位的多个例外事件,并且重设上述整数指数成为对应至上述溢位条件或上述欠位条件的一计算值。30.根据权利要求24所述的指数处理系统,其特征在于,上述格式设定逻辑电路包括一线或逻辑电路用以展开并标准化成IEEE-754浮点格式;其中上述格式设定逻辑电路更包括一第二暂存器和一第三暂存器,用以分别加入多个引数0和偏移一指数部分以储存展开并标准化的上述第二值和上述第三值。31.根据权利要求24所述的指数处理系统,其特征在于,上述结合逻辑电路更包括一积和熔加单元和一临时暂存器,上述积和熔加单元用以将展开并标准化的上述第二值和上述第三值相乘,上述临时暂存器用以储存上述积和熔加单元产生的上述第一乘积。32.根据权利要求24所述的指数处理系统,其特征在于,上述存储器包含一单一查值表用作N个单指令多数据运算。33.根据权利要求24所述的指数处理系统,其特征在于,更包含一单一暂存器用以储存上述第二值和上述第三值。34.—种指数处理系统,使用一二部表法计算以2为基底的一指数函数2X,其中2^2、2y,2^于应至一整数成分,2"于应至一分数成分,2y=2ylx2y2,2yl、2"分别对应至上述分数成分的一第一部分、一第二部分,其特征在于,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一二部表法存储器,用以根据上述分数部分提供一第一值对应上述第一部分,以及一第二值对应上述第二部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值以提供展开且标准化的上述第二值;以及一结合逻辑电路,用以结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。35.根据权利要求34所述的指数处理系统,其特征在于,更包括一源暂存器用以储存上述尾数和一指数位;以及一减法逻辑电路用以偏移上述指数位,其中上述暂存逻辑电路用以接收偏移后的上述指数位并对上述尾数执行一移位运算和一l的补数运算。36.根据权利要求34所述的指数处理系统,其特征在于,上述暂存逻辑电路更用以当上述源暂存器包含一符号位指出一负数时,负数化并储存上述分数部分,或是当上述源暂存器包含上述符号位指出一正数时,不负数化并储存上述分数部分。37.根据权利要求34所述的指数处理系统,其特征在于,上述二部表法存储器包括一第一二部表法表和一第二二部表法表。38.根据权利要求34所述的指数处理系统,其特征在于,上述设定逻辑电路包括一整数暂存器,上述设定逻辑电路用以当上述源暂存器包含一符号位指出一负数时,负数化并偏移上述整数部分,再储存负数化且偏移过的上述整数部分至上述整数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,偏移并储存上述整数部分至上述整数暂存器;其中上述设定逻辑电路用以设定上述整数指数以指派上述整数指数成上述整数暂存器储存的一数值。39.根据权利要求38所述的指数处理系统,其特征在于,上述设定逻辑电路更包括一例外处理逻辑电路,上述例外处理逻辑电路用以通过判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件而处理溢位与欠位的多个例外事件,并且重设上述整数指数成为对应至上述溢位条件或上述欠位条件的一计算值。40.根据权利要求34所述的指数处理系统,其特征在于,上述格式设定逻辑电路包括一线或逻辑电路用以展开并标准化成IEEE-754浮点格式;其中上述格式设定逻辑电路更包括一暂存器用以加入多个引数O和偏移一指数部分以储存展开并标准化的上述第二值。41.根据权利要求34所述的指数处理系统,其特征在于,上述结合逻辑电路更包括一积和熔加单元。42.根据权利要求34所述的指数处理系统,其特征在于,上述二部表法存储器包含一单一查值表用作N个单指令多数据运算。43.—种指数处理系统,使用一二部表法计算以2为基底的一指数函数2X,其中2^2、2y,2!对应至一整数成分,2》对应至一分数成分,2y=2yQ,2"对应至上述分数成分的一第一部分,其特征在于,该指数处理系统包括暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一数值对应上述第一部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分,并且指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。全文摘要本发明提供一种指数处理方法与系统,特别涉及一种指数处理方法,用以计算一指数函数包括一整数成分和一分数成分。分数成分包括一第一、第二、和第三部分。该指数处理方法包括执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分。设定一整数指数以提供一整数基底值对应至上述整数成分。执行使用一第二和第三地址的一第二查值表以提供一第二和第三值分别对应至上述第二和第三部分。展开并标准化上述第二和第三值。结合上述第二和第三值以产生一第一乘积。以及结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。本发明所述的指数处理方法与系统,可提供较好的使用频率及较佳化的指令数目。文档编号G06F1/02GK101201644SQ20071018834公开日2008年6月18日申请日期2007年11月19日优先权日2007年8月2日发明者扎伊尔德·荷圣申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1