CN101201644B - 指数处理方法与系统 - Google Patents
指数处理方法与系统 Download PDFInfo
- Publication number
- CN101201644B CN101201644B CN2007101883469A CN200710188346A CN101201644B CN 101201644 B CN101201644 B CN 101201644B CN 2007101883469 A CN2007101883469 A CN 2007101883469A CN 200710188346 A CN200710188346 A CN 200710188346A CN 101201644 B CN101201644 B CN 101201644B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- value
- working storage
- integer
- index
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
- G06F1/0307—Logarithmic or exponential functions
-
- 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/544—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 for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Complex Calculations (AREA)
- Image Generation (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种指数处理方法与系统,特别涉及一种指数处理方法,用以计算一指数函数包括一整数成分和一分数成分。分数成分包括一第一、第二、和第三部分。该指数处理方法包括执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分。设定一整数指数以提供一整数基底值对应至上述整数成分。执行使用一第二和第三地址的一第二查值表以提供一第二和第三值分别对应至上述第二和第三部分。展开并标准化上述第二和第三值。结合上述第二和第三值以产生一第一乘积。以及结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。本发明所述的指数处理方法与系统,可提供较好的使用频率及较佳化的指令数目。
Description
技术领域
本发明关于一种处理系统,特别有关于一种指数处理的方法与系统。
背景技术
指数运算时常出现于图形与科学的应用。一般指数函数可定义成ax=aI×af,其中x=I+f,I为整数部分而f为分数部分。除此之外,ax可为一标准化的浮点数,例如ax=1.a0a1 a2...an×2E。以2为基底的指数x=I+z(z取代f)可以表示为2x=2I×2z。像是中央处理器或是数字处理器的处理系统,可通过多项式运算实现指数运算。一种多项式运算的方法是使用单一浮点运算的近似多项式(例如0.9999998927+(0.6931547484+(0.2401397582+0.5586608429e-1+(0.8943041620e-2+0.1896367540e-2*x)*x)*x)*x)*x)。此计算方法的最大误差为1.073000000e-7。此方法的一个优点在于它仅需使用一般浮点单元所用的硬件即可实现。然而,此方法的缺点在于指令数(instructions)需求量以及所需的延迟时间。
另一实现指数运算的方法为泰勒级数(Taylor series)近似,其可表示为下列公式:
上述指数函数2z可以被表示成一基底函数f(z0),一一次微分函数f’(z0)以及一二次微分函数f”(z0),再加上误差项以得到f(z1)的近似(例如具有于z0的已知值的差异的脉冲函数δ(z1))。此方法的优点在于可在每一指令用管线的方式产生一结果。然而,相较于多项式方法,此方法需要额外的硬件元件。
此外,泰勒级数近似通常需要专用硬件,而不是单纯使用一中央处理器,因为这些运算并非通用的,而且许多特定的查值表需加至处理器中。若是指数函数的计算不常出现的话,使用专用处理单元可能造成投资成本的效益低落。因此,本领域需要一种可实现指数运算的架构,以提供比传统系统更好的使用频率,并且拥有最佳化的指令数目。
发明内容
本发明揭露多种指数处理系统与方法。一种指数处理方法,适用于图形处理单元的计算核心,用以计算一指数函数包括一整数成分和一分数成分。上述分数成分包括一第一部分、一第二部分以及一第三部分。该指数处理方法包括:存储器执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;设定逻辑电路设定一整数指数以提供一整数基底值对应至上述整数成分;上述存储器执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至上述第二部分和上述第三部分;格式设定逻辑电路展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;结合逻辑电路结合展开且标准化的上述第二值和上述第三值以产生一第一乘积;最后上述结合逻辑电路结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。
本发明还提供一种指数处理方法,适用于图形处理单元的计算核心,使用一双分表格法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y1×2y2,2y1、2y2分别对应至上述分数成分的一第一部分和一第二部分,该指数处理方法包括:二部表法存储器执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部 分;设定逻辑电路设定一整数指数以提供一整数基底值对应至上述整数成分;上述二部表法存储器执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分;格式设定逻辑电路展开并标准化上述第二值以提供展开且标准化的上述第二值;以及结合逻辑电路结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。
本发明还提供一种指数处理方法,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,该指数处理方法包括:存储器执行使用一第一地址的一第一查值表以提供一数值对应至上述分数成分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得;设定逻辑电路根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分;以及上述设定逻辑电路指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。
本发明又提供一种指数处理系统,适用于图形处理单元的计算核心,用以计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y0×2y1×2y2,2y0、2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,该指数处理系统包括:暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一第一值对应上述第一部分,一第二值对应上述第二部分,以及一第三值对应上述第三部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;以及一结合逻辑电路,用以结合展开且标准化的上述第二值和上述第三值以产生一第一乘积,并且结合上述第一值、上述整数基底值、以及上述第一乘积以计算 上述指数函数。
本发明还提供一种指数处理系统,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y1×2y2,2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分,该指数处理系统包括:暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一个二部表法存储器,用以根据上述分数部分提供一第一值对应上述第一部分,以及一第二值对应上述第二部分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;一格式设定逻辑电路,用以展开并标准化上述第二值以提供展开且标准化的上述第二值;以及一结合逻辑电路,用以结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。
本发明另提供一种指数处理系统,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,该指数处理系统包括:暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;一存储器,用以根据上述分数部分提供一数值对应上述分数成分;一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分,并且指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。
此实施例可使用标准硬件可支持的基本指令且具有最佳化的指令数目。此实施例额外的技术特征包括对一源暂存器存放的一尾数值(mantissa)执行移位(shift)运算以取得一分数部分和一整数部分,当执行第一查值表时使用取得的整数部分以设定指数,实现1的补数(1s-complement)计算以简化负值计算,以及/或者通过降低派送率(issue rate),例如使用大型的单指令多数 据(single-instruction multiple-data,SIMD)平行机器。这些实施例可使用标准的可编程硬件,像是可编程着色处理单元等。
在另一些实施例中,指数计算的减少可通过更大的查值表以及更大的地址空间的使用以删除结合运算而实现。这些查值表可利用已知的二部表法(bipartite table method,BPTM)而降低其大小。对于低精准度的实作而言,单一查值表可能已足够并且可减少计算量。
其它本发明的系统、方法、技术特征以及优点可以通过下列说明文字以及所附图示而使本领域技术人员了解。其余所有本发明额外的系统、方法以及优点,当视所附权利要求书为准。
本发明所述的指数处理方法与系统,可提供较好的使用频率及较佳化的指令数目。
附图说明
图1为一图形处理单元的计算核心;
图2为一指数处理系统的实施例方块图;
图3为图2的一部分,用以执行EXPTL1指令;
图4为图2的一部分,用以执行EXPTL2指令;
图5为图2的一部分,用以执行CFMUL和FMUL指令;
图6为另一指数处理系统的实施例方块图;
图7为使用两个乘法单元的指数处理方法流程图;
图8为使用一个乘法单元的指数处理方法流程图;
图9为未使用乘法单元的一指数处理方法流程图。
具体实施方式
本说明书包括许多指数处理系统与方法的实施例。这些指数处理系统用以降低用于计算指数函数(例如2x)的专用逻辑电 路使用量,并且使用现存具有标准浮点积和熔加(fusedmultiply-add,FMAD)硬件的可编程处理单元。为了达成此目的,可使用标准积和熔加硬件支持的一个或多个包含基元(primitive)运算的指令组。此外,亦可使用最小的指令组可符合现存处理管线(pipeline)的时间要求。积和熔加硬件用来标准化输入值并将其设定成标准格式的浮点数,例如IEEE-754浮点格式。虽然此处使用标准化、单精准(single-precision)的IEEE-754格式来描述本发明的实施例,本领域技术人员仍可知双精准(double-precision)或更高精准的格式可用于这些实施例中,像是延伸查值表及/或栏位的大小。
一种可实现指数处理系统的处理环境揭露如下,并伴随实现指数函数的系统与方法实施例的叙述,以及这些实施例不同部分的分析。虽然此处仅提供图形处理环境的计算核心,这些实施例仍可整合至任何计算指数函数的处理环境。举例而言,这些实施例可用于或连结至中央处理器(central processingunit,CPU),数字信号处理器(digital signal processor,DSP),或是其它应用的运算单元。
某些指数处理系统的实施例包括使用查值表以储存一指数的分数成分的许多部分,或仅储存单纯的指数函数。举例而言,这些实施例可计算以2为基底的指数函数2x,其中2x=2I×2y,2I 对应至一整数成分(integer component),2y对应至一分数成分(fractional component)。上述分数成分可依指数函数的特性而被分解成许多部分,像是2y=2y0×2y1×2y2,其中2y0、2y1、2y2分别对应至上述分数成分的第一部分、第二部分以及第三部分。通过为每个部分提供查值表,以及执行不同的结合运算(例如乘法),上述分数成分可与上述整数成分结合以计算上述指数函数。由于分数成分可分解成多个部分,因此可以比传统系统提 供更小的查值表。对应第二部分(2y1)以及第三部分(2y2)的数值可用压缩格式储存,并且许多逻辑电路,例如或线电路(wire-ORcircuitry),可用来标准化且展开这些压缩值以提供至计算指数函数的标准积和熔加硬件。相较于传统系统,这些实施例操作于较少的指令集并且减小专用硬件的使用。
举例而言,在一实施例中,从一源暂存器取得一尾数值,并且对此尾数值进行移位运算以提供一整数部分和一分数部分。上述分数部分用来填入储存部分值的查值表。至少两数值(第二值和第三值)对应2y1和2y2并以压缩形式储存,而对应2y0 的数值(第一值)则以标准化的形式储存。通过储存这些压缩形式的数值,关联这些压缩值的查值表运算可以平行方式执行,因而减少运算数(以及指令数)。此外,如此的压缩值可以让查值表的数值存放在单一暂存器里。这些压缩值可以加入一些数值格式以适合使用于标准的积和熔加单元,以利计算指数函数的结合操作(例如乘法运算)。将压缩值格式化成展开并标准化的格式,例如IEEE-754,可以避免或至少减轻专用硬件的需求,其中专用硬件时常用于传统的系统与方法中。
在稍后的说明中,一个结合运算的结果(例如2y1×2y2)可与另一个结合运算的结果(例如2I×2y0)结合在一起以计算一指数函数(例如2x)。利用上述的移位功能对取得的尾数进行移位以提供整数和分数的部分,整数部分用以设定对应第一部分(2y0)查值表的整数指数。在一实施例中,1的补数运算可提供指数的负值运算,而传统机制计算是先算出绝对值后再取其倒数。此外,出现于整数部分的溢位(overflow)或欠位(underflow)可由例外处理器选择符合这些条件的既定值,或是在一计算值与一数值(对应一演算法的一查值表)之间作决定。因此,这样运算的结果便是从2y0查值表中取一数值并与指数函数的整数部分(2I) 作结合。最后,结合2I×2y0的乘积与2y1×2y2的乘积来计算指数函数。标准积和熔加单元可应用于此结合运算。
在一第二方法实施例中,较大的查值表可用以移除上述结合运算其中之一。这些查值表可使用已知的二部表法(bipartitetable methods,BPTM)对查值表的大小作最佳化处理。虽然此实施例的整数部分处理相似于前述实施例,但分数部分是不相同的,因为此处使用单一的二部表法查值表。计算方式是利用对应2k0的第一查值表的数值以及对应来自第二二部表法查值表的2k1,而以一标准积和熔加单元作单一结合运算。
此外,第三个方法实施例可包括第二方法实施例的整数处理部分以提供一低精准值(例如12位尾数),以利于简便计算。
在这些实施例中,基本指令组的最佳化数目可应用在维持管线时序限制下使用标准硬件。上述分数部分所处理的压缩值可减少查值表的数目或是增进查值运算的效率,并且这些压缩值的格式化可以使用允许标准硬件。
图1为一图形处理单元(graphics processing unit,GPU)的计算核心105。虽然图1未显示图形处理单元的所有元件,但显示于图1的元件已足够让本领域技术人员了解此图形处理器和指数处理系统实施例的一般功能与架构。如图1所示,计算核心105包括一存储器存取单元107耦合至第二阶(level 2,L2)快取110。举例而言,存储器存取单元107从一存储器接口单元(图未显示)接收第二阶预读(prefetch)和溢出(spill)。第二阶快取110从一输入暂存器(图未显示)接收预先转换的顶点(pre-transformvertices,输入数据J)并且提供后置转换的顶点(post-transformvcrtices,输出数据H)至三角属性单元(triangular attribute units,图未显示)。
计算核心105也包括一执行单元(execution unit,EU)库130, 其包含多个执行单元140和执行单元控制与区域存储器145。在一实施例中,每个执行单元140包含一指数处理系统200,并且每个执行单元140可在单一时脉周期中处理多重指令。在另一些实施例中,指数处理系统200可包含显示于图1中的额外元件,或未显示于图1的其他元件。此外,虽然图1仅显示八个执行单元(EU0至EU7),然而执行单元的数目并不限制于此,其它实施例可多于或少于此数目。
计算核心105更包括执行单元输入装置135和执行单元输出装置120,可各自提供输入至执行单元库130以及接收执行单元库130的输出。执行单元输入装置135和执行单元输出装置120可为交叉开关矩阵(crossbar)、总线(bus)或是其它已知的输入输出装置。
执行单元输入装置135从一输入暂存器接收预先转换的顶点(输入数据B),并提供此数据至执行单元库130供执行单元140处理。此外,执行单元输入装置135接收像素包(pixel packets,输入数据C)和纹理包(texel packets,输入数据D),并传送这些包至执行单元库130供执行单元140处理。再者,执行单元输入装置135更用以接收来自第二阶快取110的数据并提供至执行单元库130。这些数据可由第二阶快取110、执行单元输入装置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,其中2x=2I×2y。2y=2y0×2y1×2y2,y=y0+y1+y2。指数处理系统200可执行2x的计算。图2至图6出现的区块或元件所代表的功能可能包括一个或多个硬件元件,像是算术逻辑单元(arithmetic logic unit,ALU)或是其它电路、暂存器、连结元件(例如绕线、总线等)等。在图2中,指数处理系统200a包括暂存器212(R0,源暂存器)、214(临时暂存器)、218(移位暂存器)、220(整数暂存器)、222(分数暂存器)、228(分数暂存器)、236(Rd2,或称临时暂存器)、238(第一暂存器)、240(第二暂存器,或单纯称为暂存器)、244(Rd3)、250(整数暂存器)、以及256(Rd1)、减法器(减法逻辑电路)216、反向器224和248、多工器(MUX)226、246和254、用以分别储存2y0、2y1、2y2的查值表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:
(1)FRC Rfrac:=R0-floor(R0)
(2)EXPTL1 Rtb1:=TableLookup1[Rfrac]
(3)EXPTL2 Rtb2:=TableLookup2[Rfrac]
(4)EXPTL3 Rtb3:=TableLookup3[Rfrac]
(5)FMUL Rtmp:=Rtb1*Rtb2
(6)FMUL Rtmp:=Rtb3*Rtmp
(7)EXPEXT Rq: =floor(R0),Rr=2^Rq
(8)FMUL Rdest:=Rr*Rtmp
暂存器212(源暂存器R0)储存欲处理的数值。暂存器212可存放单精准(32位)IEEE浮点格式的一指数函数数据,该指数函数数据包括符号位(1位)、指数位(8位)以及分数或尾数位(23位)。在指令(1)中,取出存在暂存器212的尾数的分数部分(或简称为尾数),并且以一非标准化的格式将该尾数、一个引数1(leading one)以及八个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,则移出所有位,并且输入值为0,输出结果将为1.0。若N为正数,M:=R[31:0]<<N。
暂存器218存放的数值M较低的二十四个位传送至暂存器222(FRAC),其存放分数部分。数值M较高的八个位传送至暂 存器220(INT),其存放整数部分。若是右移大于七个位则不需执行移位动作,因为这表示输入不是太大就是太小。若移位大于2+127,则结果为正无限大,若移位小于2-127,则结果为0。若(R0[31]==1)(亦即输入值为负值),则暂存器222(FRAC)所存放的值需要经过反向器224作负数化。
在指令(2)-(4)中,暂存器228被分成多个8位区段并分别作为查值表230、232和234的地址,并分别回传数值2y0、2y1、2y2。查值表232和234提供数值至暂存器236(Rd2)。储存于暂存器236的数值(Table1和Table2)接着分别储存至暂存器238和240。
在指令(5)中,储存于暂存器240和238的数值在乘法器242中相乘,并将乘积储存于暂存器244(Rd3)。
在指令(6)中,来自暂存器256(Rd1)的数值与来自暂存器244(Rd3)的数值相乘以计算2x。在多工器246中,R0的符号位用以选择存放于暂存器220的正值输出,或是执行1的补数运算的反向器248的负值输出。若暂存器218执行的左移运算已经饱和(或称溢位),则设定一最大值(例如255)。在暂存器250中,暂存器250储存的数值可加入一偏差值127,用以偏移该指数,因此Exp=nINT+127。数值e=1的话,可以设定尾数为例外处理器252所计算的一特别值,否则便设定尾数为查值表230的输出。指令(7)和(8)提供整数成分2I并且与2y作结合,完成指数函数2x的计算。
从上述的演算法1指令集中可以观察到几点。对照演算法1和图2,分数部分的结合处理可以伴随着查值表的应用。查值表回传介于[1,2)的标准化数值(亦即此数值大于或等于1.0且小于2.0,也就是1.xxxxxx...的二位小数),而一般IEEE-754格式的数值亦在此范围中(亦即1.xxx..*2E), 因此无需执行指令(8)的乘法。于是,该整数部分可设定为该指数并利用第一查值表作查 值(演算法1的指令(2))。这两个最佳化方法可以移除演算法1的指令(1)、(7)和(8)的必要性。
此外,因为指令(2)的第一查值表回传一标准化24位的数值介于[1,2),因此不需要储存符号位、指数位以及引数1。因此在一实施例中,只有23位尾数需要储存。相同地,指令(3)和(4)(第二查值表和第三查值表的查值)回传标准化24位的数值介于[1,2),因此也不需要储存符号位、指数位、以及引数1。
再者,第二查值表的数值格式为1.00000000x14x13...x0,且第三查值表的数值格式为1.0000000000000000x6x5...x0,因此引数0(leading zeros)不用储存于查值表中。在一实施例中,因为查值表232和查值表234分别只有15和7位宽,因此可以用平行方式查值并将结果储存至单一暂存器中。
根据上述观察,我们可以减少演算法1的指令,并产生另一指令集实施例(演算法2)如下:
演算法2
(1)EXPTL1 Rd1,R0
(2)EXPTL2 Rd2,R0
(3)CFMUL Rd3,Rd2
(4)FMULRd,Rd3,Rd1
指数处理系统200a可用上述四个指令计算指数函数2x=2I×2y。此指数函数可定义指数为正数或负数。一般而言,过去在处理指数部分正负值时会先以指数部分的绝对值计算,若指数部分为负,则对输出的指数函数执行倒数运算。
指数处理系统200a避免上述的倒数运算是因为当2x=2I×2y 的x为负值时,x可以表示成x=(I-1)+(1-y),其中分数部分y永远为正值。举例而言,若x=-4.75,则x=-4.75=-5+0.25=-101.000+0.01(二进位)。因此,(1-y)的计算简 化可由检查x是否为负值而进行1的补数运算。换言之,这样可以加速2y的计算,因为完整的计算方法只需要计算2I以及执行一最终乘法即可。
对于EXPTL1和EXPTL2指令而言(亦即指令(1)和指令(2)),取出储存于暂存器212的尾数的分数部分以对查值表230、232、和234定址。因此在一实施例中,EXPTL1和EXPTL2可以依序执行,而暂存器(FRAC)222和228可以于上述两个运算中共用。
图3至图5包括图2中指数处理系统200a的不同部分(200a-1、200a-2、和200a-3),用以解释上述四个指令的每一个指令。在图3中,指数处理系统200a-1可实现EXPTL1指令(指令(1))的运算。EXPTL1指令用作2I×2y0的部分计算。也就是使用暂存器218的分数位(FRAC[23:16])执行查值表230的查值运算。平行于此运算的是计算整数指数(I)和对应整数成分(2I)的整数基底值。举例而言,从暂存器218中取出整数部分,并设定成指数,而多工器246产生的数值为标号过(2的补数)的8位数值,此8位数值再加上偏差值127后产生一整数指数值并存放至暂存器250。存于暂存器250的整数指数接着输入至例外处理器252。例外处理器252实现下述方法(以虚拟码表示):
(i)e=0;
(ii)if nINT+127>255,then e=1,exp=255,sp=0;
(iii)if nINT+127<0,then e=1,exp=0,sp=0;
(iv)if((R0[30..23]==0xFF)&&(R0[22:0]!=0)),thene=1,exp=255,sp=0x400000
根据位e是否设定,可选择一数值介于一特别值与查值表的输出(查值表230的数值)之间。换言之,上述虚拟码用以处理特别情况。在虚拟码(ii)中,若是INT>127,则输出值设为无限大。在虚拟码(iii)中,若是INT<-127,则输出值设为0。在虚拟码(iv) 中,若是输入为非数值(not a number,NaN),则输出值亦设为非数值。在上述三种特殊情况中,位e可设定为1,否则便设定为0。输出特殊尾数值或是正常查值表输出(2y0)是由位e控制多工器254而选择。因此,例外处理器252可执行上述演算法而计算正确的整数指数。
指数处理系统200a用以处理EXPTL2指令(指令(2))的部分表示于图4,并且标号为指数处理系统200a-2。EXPTL2指令用以计算部分的2y1×2y2。暂存器228的位[15:8]和[7:0]分别用以定位查值表232和查值表234。暂存器228的位[15:0]可表示有效的0.00000000y1,因此查值表232的回传值为1.00000000X1,以及当输入是0.0000000000000000y2(亦即暂存器228的位[7:0]可表示的有效数值)时,查值表234的输出为1.0000000000000000X2。然而,引数1.0*8和1.0*16并未保留在这些查值表中。因此,查值表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储存至暂存器236的值)以计算2y1×2y2。如上所述,暂存器236的值为一压缩格式。在暂存器238 和240中,其存放的数值为标准化且展开过的(或称解压缩过的)。因此,执行展开和标准化的硬件或逻辑电路包括线或(wire-OR)运算并插入偏差数值127和引数0(亦即加入引数0至尾数,并设定指数为127)。加入暂存器238的引数0数目有八个,而加入暂存器240的引数0有十六个。因为暂存器238和240的值为展开过的IEEE格式,因此这些数值可馈入积和熔加单元242,并将产生结果送至暂存器244。对应至积和熔加单元的积和熔加运算(指令(4))将两个标准化的浮点数相乘,其中一个浮点数来自暂存器244(2y1×2y2),另一个浮点数来自暂存器256(2I×2y0)。积和熔加单元242和258可能包括单一的积和熔加单元,亦可能使用分离的积和熔加单元。
由上述可知,一实施例的指数处理方法使用四个运算:两个查值表运算(三个查值表,其中有一个查值表运算是平行进行)和两个乘法运算,但是仍有可有额外的最佳化之处。若使用更大查值表的话,例如用2y=2k0×2k1替代2y=2y0×2y1×2y2,演算法2中的乘法指令(FMUL)是可以移除的。因此,k0和k1各自为较大的12位和11位。然而,一种已知的二部表法可用以减少查值表的大小。图6提供另一种指数处理系统200b,其中有许多元件与图2相同,于此不再赘叙。此处,除了查值表630(第一二部表法表)额外使用二部表法之外,保留指令EXPTL1如先前所述。指令EXPTL2使用单一查值表634(第二二部表法表),且查值表634亦使用二部表法,而引数1和十二个引数0亦不需要储存。于是,演算法3可以表示成如下所述:
演算法3:
(1)EXPTL1 Rd1,R0
(2)EXPTL2 Rd2,R0
(3)CFMUL Rd,Rd2,Rd1
演算法3使用两个查值表和一个CFMUL指令。演算法2和演算法3的最大不同处在于CFMUL指令。在演算法3中,CFMUL使用两个源运算子。第一源运算子Rd1,为来自第一查值表(查值表630)的标准化浮点值。第二源运算子Rd2,为对应查值表634的一压缩格式数值,并且可利用加入十二个引数0至尾数和设定偏差指数127至暂存器240以格式化此值。因此,此两源运算子可馈入一标准的浮点乘法单元242。
值得注意的是,图6的方法(12位低精准尾数)可只单独使用EXPTL1指令。举例而言,若EXPTL1指令使用12位的查值表,则一低精准的结果便不需要演算法3的步骤(2)和(3),这对于许多图形应用在计算乘方函数(power function)时是种优点。故上述的设定逻辑电路以及暂存器256可用以提供一低精准数值。
在一些实施例中,因为以2为基底的指数运用对于积和熔加型式的运算是相对较低的,因此查值表的数目可以通过限制派送率(issue rate)而减少。举例而言,演算法2需要四个指令。但若EXPTL1/2的派送率限制为每N个周期一个指令,则单一个EXPTL1/2单元可共享于N个单指数多数据单元中。
图7为一指数处理方法的实施例200c,可用以计算以2为基底的一指数函数2x。其中2x=2I×2y,2I为整数成分,2y为分数成分。2y=2y0×2y1×2y2,其中2y0、2y1、2y2分别逼近2y的第一部分、第二部分以及第三部分。步骤702执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分(2y0)。步骤704设定一整数指数以提供一整数基底值对应至上述整数成分。步骤706执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至第二部分和第三部分。步骤708展开并标准化上述第二值和第三值以提供展开且标准化的上述第二值和第三值。步骤710结合展开且标准化的上述第二值和第三值 以产生第一乘积。步骤712结合第一值、整数基底值以及第一乘积以计算上述指数函数。
图8为一指数处理方法的实施例200d,可使用一双分表格法计算以2为基底的一指数函数2x。其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分。2y=2y1×2y2,其中2y1、2y2分别对应至上述分数成分的一第一部分和一第二部分。步骤802执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分。步骤804设定一整数指数以提供一整数基底值对应至上述整数成分。步骤806执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分。步骤808展开并标准化上述第二值以提供展开且标准化的上述第二值。步骤810结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。
图9为一指数处理方法的实施例200e,可使用一二部表法计算以2为基底的一指数函数2x。其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分。2y=2y0,2y0对应至上述分数成分的一第一部分。步骤902执行使用一第一地址的一第一查值表以提供一数值对应至上述第一部分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得。步骤904根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分。步骤906指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。
任何对应图7、图8、图9的流程图的程序叙述或区块可以表示成模块、区段或是一部分的程序码包括一个或多个可执行的指令以实现程序中特定的逻辑功能或步骤。改变本发明的上述较佳实施例,例如根据上述的功能而变动执行顺序,同时执行或是倒序执行,都是本领域技术人员可理解的。
指数处理系统200(200a-200e)可实现于硬件、软件以及轫体或是上述三者的任一组合。在上述的较佳实施例中,指数处理系统200使用硬件实现,并可实现于任一下述的已知技术或是其组合中:具有逻辑门以依据输入数据实现逻辑功能的离散逻辑电路(discrete logic circuits),具有合适组合逻辑闸的专用集成电路(application specific integrated chip,ASIC),可编程逻辑门阵列(programmable gate array,PGA),现场可编程逻辑门阵列(field programmable gate array,FPGA)等。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
附图中符号的简单说明如下:
105:计算核心 107:存储器存取单元
110:第二阶快取 120:执行单元输出装置
125:任务分配仲裁器 130:执行单元库
135:执行单元输入装置 140:执行单元
145:执行单元控制与区域存储器
200:指数处理系统 216:减法器
212、214、218、220、222、228、236、238、240、244、250、256:暂存器
224、248:反向器 226、246、254:多工器
230、232、234、630、634:查值表
242、258:乘法器 252:例外处理器。
Claims (43)
1.一种指数处理方法,适用于图形处理单元的计算核心,用以计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y0×2y1×2y2,2y0、2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,其特征在于,该指数处理方法包括:
存储器执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;
设定逻辑电路设定一整数指数以提供一整数基底值对应至上述整数成分;
上述存储器执行使用一第二地址和一第三地址的一第二查值表以提供一第二值和一第三值分别对应至上述第二部分和上述第三部分;
格式设定逻辑电路展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;
结合逻辑电路结合展开且标准化的上述第二值和上述第三值以产生一第一乘积;以及
上述结合逻辑电路结合上述第一值、上述整数基底值以及上述第一乘积以计算上述指数函数。
2.根据权利要求1所述的指数处理方法,其特征在于,更包括从存有一尾数值的一移位暂存器中取得一分数部分和一整数部分,其中上述尾数值是从一源暂存器获得,取得上述分数部分和上述整数部分的方法更包括对存于上述移位暂存器的上述尾数值执行一移位运算。
3.根据权利要求2所述的指数处理方法,其特征在于,执行上述移位运算更包括执行对存于上述移位暂存器的上述尾数值执行一1的补数运算;
其中执行上述1的补数运算更包括使用从上述源暂存器取得的一偏移指数位。
4.根据权利要求2所述的指数处理方法,其特征在于,更包括当上述源暂存器包含一符号位指出一负数时,负数化上述分数部分并储存至一分数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,不进行负数化,且储存上述分数部分至上述分数暂存器;
其中执行上述第一查值表和上述第二查值表更包括分别使用上述分数暂存器的一第一区段、一第二区段以及一第三区段作为上述第一地址、上述第二地址以及上述第三地址。
5.根据权利要求2所述的指数处理方法,其特征在于,设定上述整数指数更包括:
当上述源暂存器包含一符号位指出一负数时,负数化上述整数部分并偏移上述负数化后的整数部分,再储存负数化且偏移过的上述整数部分至一整数暂存器;或是
当上述源暂存器包含上述符号位指出一正数时,偏移未负数化的上述整数部分,并储存未负数化且偏移过的上述整数部分至上述整数暂存器;
其中设定上述整数指数更包括指派上述整数指数成上述整数暂存器中储存的一数值。
6.根据权利要求5所述的指数处理方法,其特征在于,设定上述整数指数更包括处理溢位与欠位的多个例外事件,其中处理上述例外事件包括判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件;
其中设定上述整数指数更包括重设上述整数指数成一计算值,其中上述计算值对应至上述溢位条件或上述欠位条件。
7.根据权利要求1所述的指数处理方法,其特征在于,展开并标准化的方法更包括格式化成IEEE-754浮点格式。
8.根据权利要求1所述的指数处理方法,其特征在于,更包括分别储存展开并标准化的上述第二值和上述第三值至一第一暂存器和一第二暂存器;
其中展开并标准化的方法更包括在上述第一暂存器和上述第二暂存器分别加入多个引数0以及一偏移指数部分。
9.根据权利要求1所述的指数处理方法,其特征在于,结合展开且标准化的上述第二值和上述第三值更包括在一积和熔加单元将展开且标准化的上述第二值和上述第三值相乘,并储存相乘后的上述第一乘积至一临时暂存器。
10.根据权利要求1所述的指数处理方法,其特征在于,执行上述第一查值表和上述第二查值表更包括通过限制一派送率为每N个时脉周期一个指令,在对应N个单指令多数据单元的一单一查值表中执行上述第一查值表和上述第二查值表。
11.根据权利要求1所述的指数处理方法,其特征在于,执行上述第二查值表更包括平行执行两个查值表。
12.根据权利要求1所述的指数处理方法,其特征在于,更包括储存上述第二值和上述第三值至一单一暂存器。
13.一种指数处理方法,适用于图形处理单元的计算核心,使用一双分表格法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y1×2y2,2y1、2y2分别对应至上述分数成分的一第一部分和一第二部分,其特征在于,该指数处理方法包括:
二部表法存储器执行使用一第一地址的一第一查值表以提供一第一值对应至上述第一部分;
设定逻辑电路设定一整数指数以提供一整数基底值对应至上述整数成分;
上述二部表法存储器执行使用一第二地址的一第二查值表以提供一第二值对应至上述第二部分;
格式设定逻辑电路展开并标准化上述第二值以提供展开且标准化的上述第二值;以及
结合逻辑电路结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。
14.根据权利要求13所述的指数处理方法,其特征在于,更包括从存有一尾数值的一移位暂存器中取得一分数部分和一整数部分,其中上述尾数值是从一源暂存器获得;
其中取得上述分数部分和上述整数部分的方法更包括对存于上述移位暂存器的上述尾数值执行一移位运算。
15.根据权利要求14所述的指数处理方法,其特征在于,执行上述移位运算更包括执行对存于上述移位暂存器的上述尾数值执行一1的补数运算;
其中执行上述1的补数运算更包括使用从上述源暂存器取得的一偏移指数位。
16.根据权利要求14所述的指数处理方法,其特征在于,更包括当上述源暂存器包含一符号位指出一负数时,负数化上述分数部分并储存至一分数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,不进行负数化,且储存上述分数部分至上述分数暂存器;
其中执行上述第一查值表和上述第二查值表更包括分别使用上述分数暂存器的一第一区段和一第二区段作为上述第一地址和上述第二地址。
17.根据权利要求14所述的指数处理方法,其特征在于,设定上述整数指数更包括:
当上述源暂存器包含一符号位指出一负数时,负数化上述整数部分并偏移上述负数化后的整数部分,再储存负数化且偏移过的上述整数部分至一整数暂存器;或是
当上述源暂存器包含上述符号位指出一正数时,偏移未负数化的上述整数部分,并储存未负数化且偏移过的上述整数部分至上述整数暂存器;
其中设定上述整数指数更包括指派上述整数指数成上述整数暂存器中储存的一数值。
18.根据权利要求17所述的指数处理方法,其特征在于,设定上述整数指数更包括处理溢位与欠位的多个例外事件,其中处理上述例外事件包括判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件;
其中设定上述整数指数更包括重设上述整数指数成一计算值,其中上述计算值对应至上述溢位条件或上述欠位条件。
19.根据权利要求13所述的指数处理方法,其特征在于,展开并标准化的方法更包括格式化成IEEE-754浮点格式。
20.根据权利要求13所述的指数处理方法,其特征在于,更包括储存展开并标准化的上述第二值至一暂存器;
其中展开并标准化的方法更包括在上述暂存器加入多个引数0以及一偏移指数部分。
21.根据权利要求13所述的指数处理方法,其特征在于,上述结合方法更包括在一积和熔加单元里将上述第一值、上述整数基底值以及展开且标准化的上述第二值相乘。
22.根据权利要求13所述的指数处理方法,其特征在于,执行上述第一查值表和上述第二查值表更包括通过限制一派送率为每N个时脉周期一指令,在对应N个单指令多数据单元的一单一查值表中执行上述第一查值表和上述第二查值表。
23.一种指数处理方法,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,其特征在于,该指数处理方法包括:
存储器执行使用一第一地址的一第一查值表以提供一数值对应至上述分数成分,其中上述第一地址是从一源暂存器中获得的一尾数的一第一部分中取得;
设定逻辑电路根据上述尾数的另一部分,设定一整数指数以提供一整数基底值对应至上述整数成分;以及
上述设定逻辑电路指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。
24.一种指数处理系统,适用于图形处理单元的计算核心,用以计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y0×2y1×2y2,2y0、2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分以及一第三部分,其特征在于,该指数处理系统包括:
暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;
一存储器,用以根据上述分数部分提供一第一值对应上述第一部分,一第二值对应上述第二部分,以及一第三值对应上述第三部分;
一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;
一格式设定逻辑电路,用以展开并标准化上述第二值和上述第三值以提供展开且标准化的上述第二值和上述第三值;以及
一结合逻辑电路,用以结合展开且标准化的上述第二值和上述第三值以产生一第一乘积,并且结合上述第一值、上述整数基底值、以及上述第一乘积以计算上述指数函数。
25.根据权利要求24所述的指数处理系统,其特征在于,更包括一源暂存器用以储存上述尾数和一指数位;以及
一减法逻辑电路用以偏移上述指数位,其中上述暂存逻辑电路用以接收偏移后的上述指数位并对上述尾数执行一移位运算和一1的补数运算。
26.根据权利要求25所述的指数处理系统,其特征在于,上述暂存逻辑电路更用以当上述源暂存器包含一符号位指出一负数时,负数化并储存上述分数部分,或是当上述源暂存器包含上述符号位指出一正数时,不进行负数化,并储存上述分数部分。
27.根据权利要求24所述的指数处理系统,其特征在于,上述存储器包括一第一查值表、一第二查值表以及一第三查值表。
28.根据权利要求25所述的指数处理系统,其特征在于,上述设定逻辑电路包括一整数暂存器,上述设定逻辑电路用以当上述源暂存器包含一符号位指出一负数时,负数化并偏移上述整数部分,再储存负数化且偏移过的上述整数部分至上述整数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,偏移并储存上述整数部分至上述整数暂存器。
29.根据权利要求28所述的指数处理系统,其特征在于,上述设定逻辑电路用以设定上述整数指数以指派上述整数指数成上述整数暂存器中储存的一数值;
其中上述设定逻辑电路更包括一例外处理逻辑电路,上述例外处理逻辑电路用以通过判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件而处理溢位与欠位的多个例外事件,并且重设上述整数指数成为对应至上述溢位条件或上述欠位条件的一计算值。
30.根据权利要求24所述的指数处理系统,其特征在于,上述格式设定逻辑电路包括一线或逻辑电路用以展开并标准化成IEEE-754浮点格式;
其中上述格式设定逻辑电路更包括一第二暂存器和一第三暂存器,用以分别加入多个引数0和偏移一指数部分以储存展开并标准化的上述第二值和上述第三值。
31.根据权利要求24所述的指数处理系统,其特征在于,上述结合逻辑电路更包括一积和熔加单元和一临时暂存器,上述积和熔加单元用以将展开并标准化的上述第二值和上述第三值相乘,上述临时暂存器用以储存上述积和熔加单元产生的上述第一乘积。
32.根据权利要求24所述的指数处理系统,其特征在于,上述存储器包含一单一查值表用作N个单指令多数据运算。
33.根据权利要求24所述的指数处理系统,其特征在于,更包含一单一暂存器用以储存上述第二值和上述第三值。
34.一种指数处理系统,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,2y=2y1×2y2,2y1、2y2分别对应至上述分数成分的一第一部分、一第二部分,其特征在于,该指数处理系统包括:
暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;
一个二部表法存储器,用以根据上述分数部分提供一第一值对应上述第一部分,以及一第二值对应上述第二部分;
一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分;
一格式设定逻辑电路,用以展开并标准化上述第二值以提供展开且标准化的上述第二值;以及
一结合逻辑电路,用以结合上述第一值、上述整数基底值以及展开且标准化的上述第二值以计算上述指数函数。
35.根据权利要求34所述的指数处理系统,其特征在于,更包括一源暂存器用以储存上述尾数和一指数位;以及
一减法逻辑电路用以偏移上述指数位,其中上述暂存逻辑电路用以接收偏移后的上述指数位并对上述尾数执行一移位运算和一1的补数运算。
36.根据权利要求35所述的指数处理系统,其特征在于,上述暂存逻辑电路更用以当上述源暂存器包含一符号位指出一负数时,负数化并储存上述分数部分,或是当上述源暂存器包含上述符号位指出一正数时,不进行负数化,并储存上述分数部分。
37.根据权利要求34所述的指数处理系统,其特征在于,上述二部表法存储器包括一第一二部表法表和一第二二部表法表。
38.根据权利要求35所述的指数处理系统,其特征在于,上述设定逻辑电路包括一整数暂存器,上述设定逻辑电路用以当上述源暂存器包含一符号位指出一负数时,负数化并偏移上述整数部分,再储存负数化且偏移过的上述整数部分至上述整数暂存器,或是当上述源暂存器包含上述符号位指出一正数时,偏移并储存上述整数部分至上述整数暂存器;
其中上述设定逻辑电路用以设定上述整数指数以指派上述整数指数成上述整数暂存器储存的一数值。
39.根据权利要求38所述的指数处理系统,其特征在于,上述设定逻辑电路更包括一例外处理逻辑电路,上述例外处理逻辑电路用以通过判断储存于上述整数暂存器的上述整数指数是否对应至一溢位条件或一欠位条件而处理溢位与欠位的多个例外事件,并且重设上述整数指数成为对应至上述溢位条件或上述欠位条件的一计算值。
40.根据权利要求34所述的指数处理系统,其特征在于,上述格式设定逻辑电路包括一线或逻辑电路用以展开并标准化成IEEE-754浮点格式;
其中上述格式设定逻辑电路更包括一暂存器用以加入多个引数0和偏移一指数部分以储存展开并标准化的上述第二值。
41.根据权利要求34所述的指数处理系统,其特征在于,上述结合逻辑电路更包括一积和熔加单元。
42.根据权利要求34所述的指数处理系统,其特征在于,上述二部表法存储器包含一单一查值表用作N个单指令多数据运算。
43.一种指数处理系统,适用于图形处理单元的计算核心,使用一个二部表法计算以2为基底的一指数函数2x,其中2x=2I×2y,2I对应至一整数成分,2y对应至一分数成分,其特征在于,该指数处理系统包括:
暂存逻辑电路,用以从一尾数取得一整数部分和一分数部分;
一存储器,用以根据上述分数部分提供一数值对应上述分数成分;
一设定逻辑电路,用以根据上述整数部分设定一整数指数以提供一整数基底值对应至上述整数成分,并且指派上述整数基底值以及上述整数指数作为上述指数函数的一解答。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/832,689 | 2007-08-02 | ||
US11/832,689 US7912883B2 (en) | 2007-08-02 | 2007-08-02 | Exponent processing systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101201644A CN101201644A (zh) | 2008-06-18 |
CN101201644B true CN101201644B (zh) | 2011-11-23 |
Family
ID=39516833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101883469A Active CN101201644B (zh) | 2007-08-02 | 2007-11-19 | 指数处理方法与系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7912883B2 (zh) |
CN (1) | CN101201644B (zh) |
TW (1) | TWI351640B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644116B2 (en) * | 2006-05-31 | 2010-01-05 | Via Telecom Co., Ltd. | Digital implementation of fractional exponentiation |
US8275821B2 (en) * | 2007-09-07 | 2012-09-25 | International Business Machines Corporation | Area efficient transcendental estimate algorithm |
US7848142B2 (en) * | 2007-10-31 | 2010-12-07 | Micron Technology, Inc. | Fractional bits in memory cells |
US8244789B1 (en) | 2008-03-14 | 2012-08-14 | Altera Corporation | Normalization of floating point operations in a programmable integrated circuit device |
US8352708B2 (en) * | 2009-01-16 | 2013-01-08 | Teleputers, Llc | Parallel read functional unit for microprocessors |
US9207910B2 (en) * | 2009-01-30 | 2015-12-08 | Intel Corporation | Digital signal processor having instruction set with an xK function using reduced look-up table |
US9128790B2 (en) * | 2009-01-30 | 2015-09-08 | Intel Corporation | Digital signal processor having instruction set with an exponential function using reduced look-up table |
US8706789B2 (en) | 2010-12-22 | 2014-04-22 | Intel Corporation | Performing reciprocal instructions with high accuracy |
US9141131B2 (en) * | 2011-08-26 | 2015-09-22 | Cognitive Electronics, Inc. | Methods and systems for performing exponentiation in a parallel processing environment |
US8831133B2 (en) | 2011-10-27 | 2014-09-09 | Lsi Corporation | Recursive digital pre-distortion (DPD) |
US9792087B2 (en) | 2012-04-20 | 2017-10-17 | Futurewei Technologies, Inc. | System and method for a floating-point format for digital signal processors |
US9146743B2 (en) | 2012-07-11 | 2015-09-29 | International Business Machines Corporation | Generalized bit manipulation instructions for a computer processor |
US9552189B1 (en) * | 2014-09-25 | 2017-01-24 | Altera Corporation | Embedded floating-point operator circuitry |
CN105224284B (zh) * | 2015-09-29 | 2017-12-08 | 北京奇艺世纪科技有限公司 | 一种浮点数处理方法及装置 |
CN105224283B (zh) * | 2015-09-29 | 2017-12-08 | 北京奇艺世纪科技有限公司 | 一种浮点数处理方法及装置 |
US20170169132A1 (en) * | 2015-12-15 | 2017-06-15 | Analog Devices, Inc. | Accelerated lookup table based function evaluation |
US10713013B1 (en) * | 2016-02-24 | 2020-07-14 | Xilinx, Inc. | Apparatus and method for an exponential operator for a half-precision floating-point format |
CN106787789B (zh) * | 2016-11-10 | 2019-04-02 | 易事特集团股份有限公司 | 太阳能电池阵列模拟器输出电网外环控制中的输出电压外环计算方法和装置 |
US11777729B2 (en) | 2017-01-20 | 2023-10-03 | Enveil, Inc. | Secure analytics using term generation and homomorphic encryption |
US20180212753A1 (en) | 2017-01-20 | 2018-07-26 | Enveil, Inc. | End-To-End Secure Operations Using a Query Vector |
US10693627B2 (en) * | 2017-01-20 | 2020-06-23 | Enveil, Inc. | Systems and methods for efficient fixed-base multi-precision exponentiation |
US11196541B2 (en) | 2017-01-20 | 2021-12-07 | Enveil, Inc. | Secure machine learning analytics using homomorphic encryption |
US10903976B2 (en) | 2017-01-20 | 2021-01-26 | Enveil, Inc. | End-to-end secure operations using a query matrix |
US11507683B2 (en) | 2017-01-20 | 2022-11-22 | Enveil, Inc. | Query processing with adaptive risk decisioning |
EP3379407B1 (en) * | 2017-03-20 | 2020-05-27 | Nxp B.V. | Embedded system, communication unit and method for implementing an exponential computation |
CN108123907B (zh) * | 2017-11-24 | 2020-08-25 | 浙江天则通信技术有限公司 | 一种用于单载波频域均衡信道的低复杂度均衡方法 |
US10732929B2 (en) * | 2018-01-09 | 2020-08-04 | Samsung Electronics Co., Ltd. | Computing accelerator using a lookup table |
US11995448B1 (en) | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US10929778B1 (en) | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Address interleaving for machine learning |
US10997510B1 (en) * | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
US10929779B1 (en) | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Architecture to support synchronization between core and inference engine for machine learning |
US10902133B2 (en) | 2018-10-25 | 2021-01-26 | Enveil, Inc. | Computational operations in enclave computing environments |
US10817262B2 (en) | 2018-11-08 | 2020-10-27 | Enveil, Inc. | Reduced and pipelined hardware architecture for Montgomery Modular Multiplication |
GB2582145B (en) * | 2019-03-11 | 2021-03-10 | Graphcore Ltd | Execution Unit for Determining a Result of an Exponential Function in a Processor |
US11163533B2 (en) * | 2019-07-18 | 2021-11-02 | International Business Machines Corporation | Floating point unit for exponential function implementation |
US11275584B2 (en) * | 2019-08-14 | 2022-03-15 | Jerry D. Harthcock | Universal floating-point instruction set architecture for computing directly with decimal character sequences and binary formats in any combination |
US11601258B2 (en) | 2020-10-08 | 2023-03-07 | Enveil, Inc. | Selector derived encryption systems and methods |
CN117422807B (zh) * | 2023-12-15 | 2024-03-08 | 摩尔线程智能科技(北京)有限责任公司 | 颜色值的确定方法及装置、电子设备、计算机存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604691A (en) * | 1995-01-31 | 1997-02-18 | Motorola, Inc. | Logarithm/inverse-logarithm converter utilizing a truncated Taylor series and method of use thereof |
US6178435B1 (en) * | 1998-06-30 | 2001-01-23 | International Business Machines Corporation | Method and system for performing a power of two estimation within a data processing system |
US6910059B2 (en) * | 2002-07-09 | 2005-06-21 | Silicon Integrated Systems Corp. | Apparatus and method for calculating an exponential calculating result of a floating-point number |
-
2007
- 2007-08-02 US US11/832,689 patent/US7912883B2/en active Active
- 2007-10-15 TW TW096138468A patent/TWI351640B/zh active
- 2007-11-19 CN CN2007101883469A patent/CN101201644B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW200907793A (en) | 2009-02-16 |
CN101201644A (zh) | 2008-06-18 |
US7912883B2 (en) | 2011-03-22 |
TWI351640B (en) | 2011-11-01 |
US20090037504A1 (en) | 2009-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101201644B (zh) | 指数处理方法与系统 | |
CN106325810B (zh) | 微处理器 | |
US9753695B2 (en) | Datapath circuit for digital signal processors | |
US5081573A (en) | Parallel processing system | |
US3828175A (en) | Method and apparatus for division employing table-lookup and functional iteration | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN100435090C (zh) | 可扩展高基蒙哥马利模乘算法及其电路结构 | |
CN1175730A (zh) | 使用浮点运算硬件进行微处理器整数除法操作的方法和装置 | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
JPH04227535A (ja) | 除算を行なう装置 | |
JP2003296096A (ja) | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 | |
CN106528044A (zh) | 处理器、指令执行方法和计算系统 | |
CN101504599A (zh) | 适于数字信号处理应用的专用指令集微处理系统 | |
JP2008250471A (ja) | 再構成可能なsimd型プロセッサ | |
TW384447B (en) | Processor with reconfigurable arithmetic data path | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
CN106775579A (zh) | 基于可配置技术的浮点运算加速单元 | |
CN107688469A (zh) | 兼顾通用指令和专用指令的可重构计算装置 | |
EP0239634A1 (en) | Multizone processor | |
CN104169866A (zh) | 运算处理装置以及运算处理装置的控制方法 | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
CN102109973A (zh) | 包含超越函数计算的处理器实现装置 | |
CN1972168B (zh) | 可编程变长比特流处理器 | |
CN101300544A (zh) | 大数乘法方法和装置 | |
CN103677735B (zh) | 一种数据处理装置及数字信号处理器 |
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 |