CN1761938A - 超高基数除法 - Google Patents
超高基数除法 Download PDFInfo
- Publication number
- CN1761938A CN1761938A CNA2004800077421A CN200480007742A CN1761938A CN 1761938 A CN1761938 A CN 1761938A CN A2004800077421 A CNA2004800077421 A CN A2004800077421A CN 200480007742 A CN200480007742 A CN 200480007742A CN 1761938 A CN1761938 A CN 1761938A
- Authority
- CN
- China
- Prior art keywords
- divergent
- convergent
- denominator
- behind
- division
- 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.)
- Pending
Links
Images
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/52—Multiplying; Dividing
- G06F7/535—Dividing only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了使用窄数据路径实现超高基数除法的方法、机器和***。接收到用于超高基数除法计算的分子和分母。从一个数据结构中获得所述分母的近似倒数。将所述分子和分母根据所述倒数进行预缩放。所述分母被分解为一个等效表达式,其导致多个前导无效值。接着,通过形成第一积并且减去所述等效表达式来修改当前余数,从而迭代地组装商。
Description
技术领域
本发明的实施方案一般涉及基数除法,更具体地说,涉及在微处理器体系结构中减少用于实现基数除法的数据路径。
背景技术
浮点性能是当今微处理器体系结构的关键问题。在四种基本浮点运算,即加、减、乘、除运算中,除法对于微处理器体系结构来说是最占用资源的一种运算。近来,在产生实际可实现的超高基数(数字基,例如2(二进制)、10(十进制)、16(十六进制)等)数位递推算法方面取得了进展。提到超高基数,我们是指由算法的每次迭代所产生的商数位的数量要远远大于产生1位(基2)、2位(基4)、3位(基8)或4位(基16)的典型传统算法。对于这些超高基数除法算法来说,在算法的迭代过程中产生10位(基1024)或20位(基1048576)量级的数是很正常的。然而,这些算法的一个共同缺点就是内部数据宽度以不甚正常的方式增长。
例如,传统的数位递推除法算法具有以下核心计算步骤,即余数的更新:Rj+1=r×Rj-qj+1×Y。这里,R是余数,r是基数,qj+1是商数位,Y是除数(例如分母)。工作的很大一部分在于计算qj+1×Y的积。当qj+1的宽度随基数增长时,Y的宽度保持不变。通常,基数是2的整数幂,因此对于某个整数m,r=2m。在这种情况下,乘法器需要处理m乘L的乘法,其中L是所讨论的精度的数据宽度(例如,对于电气电子工程师协会(IEEE)标准的双精度来说,L=53)。换言之,乘法器的深度就是所述算法每次迭代所生成的附加商数据的位数,而乘法器的宽度被固定为所讨论的精度的数据宽度。
对于传统的数位递推除法算法而言,只有乘法器的宽度随算法的基数而变。随着近来提出的超高基数除法算法而发生不正常的增长,这是因为这些运算的乘法器必须反而能够处理m乘(L+m)的乘法。也就是说,乘法器的宽度也增加了。这种要求是在使得它们实际可实现的这类算法中很重要的“预缩放”步骤(例如,除数或分母倒数,这将在以下的“具体实施方式”部分中讨论)的直接结果。虽然一种广为接受的观点是只有乘法器的深度影响除法运算的速度,但是宽度的增加也会导致很多问题。比较明显的缺点就是空间的增大和功耗的增加。不那么明显但是日益重要的缺点则是对定制的乘法器和/或加法器,而不是在与所讨论的精度宽度L有关的标准单元库中很常见的那些器件的需要。
因此,需要用于基数除法的改进实现方案和技术。这些实现方案和技术应当和近来的某些基数除法算法一样快,但是能够保持乘法器的宽度,使得空间占用和功耗都最小化,并且由此与现有和传统的基数除法实现方案相比有所减少。
附图说明
图1是根据本发明的一个实施方案,用于实现超高基数除法的方法的流程图。
图2是根据本发明的一个实施方案,描绘了用于实现超高基数除法的机器实现的框图。
图3是根据本发明一个实施方案的超高基数除法***的图。
具体实施方式
描述了用于超高基数除法的新颖方法、机器和***。在以下对实施方案的详细说明中,将参考附图进行描述,这些附图形成了说明书的一部分,在附图中以示例而非限制的方式示出了本发明可以实现的具体实施方案。这些实施方案被足够详细地描述,使得本领域的普通技术人员能够理想并实现它们,并且可以理解,也可以采用其他实施方案,在不偏离本公开文本的精神和范围的情况下,可以进行结构、逻辑和电气上的改变。因此,以下详细的描述不应被理解为限制性的含义,并且这里所公开的发明的实施方案的范围将由所附的权利要求来定义。
图1图示了根据本发明的一个实施方案,用于实现超高基数除法的一种方法100的流程图。该方法100被实现在微处理器体系结构中。此外,可以用位于微处理器体系结构内或者微处理器体系结构可访问的硬件、软件、固件或硬件、软件和固件的组合来实现方法100。
正如将向本领域的普通技术人员论述的那样,在以下描述中,方法100的实施方案允许超高基数除法计算以全新的方式进行分解,形成窄的数据路径。相反,现有和传统的分解过程在需要宽数据路径的情况下执行超高基数除法。因此,实现方法100的实施方案的微处理器体系结构在执行超高基数除法时,在空间使用上将会下降,从而导致功耗下降。这是在不负面影响处理器吞吐率的情况下实现的。这相对于传统技术来说是很大的一个优点,因为随着在工业上微处理器体系结构越变越小,节约功率的能力就变得愈发引人关注。
在110,接收到分子和分母(例如除数)作为超高基数除法计算的操作数。除法计算在确定计算的商之前被预缩放(例如,预处理)为等效的数学计算。这是通过试图使除法计算的分母约等于1来实现的。通过使分母或除数为1,除法计算就变得很简单,因为任何分子除以1都等于该分子。
因此,为了改动原始的除法计算,使得分母约等于1,就需要分母的近似倒数,因为任何数N的倒数(1/N)在与该数相乘时都等于1(例如1/N×N=1)。然而,因为数N的倒数可能不会终止(例如,持续至无限),所以可以使用近似倒数的某个期望的并且可配置的精度。因此,在120,获得一个因子,该因子代表了分母的近似倒数的期望精度。在一个实施方案中,在122,通过在数据结构(例如表或其他数据结构)中执行查找来获得近似因子。这样就在原始的除法计算被重新表述为更有效率的格式以供处理时,允许快速、有效地获得所述因子。
本领域的普通技术人员可以认识到,具有分母的倒数值的数据结构不需要存储所有可能的数,因为可以使用这些数的子集,然后计算出它们正确的倒数值。例如,数据结构可以仅仅容纳数字1-9的近似倒数值(这里基数是10进制的(基10))。当然,在实际当中可以只存储2-9的倒数值,因为大家都知道1的倒数值就是1。所有其他数可能性的倒数值可以基于这个小型数据结构很容易地计算出来,因为这些剩余的可能性都只是偏移了基数(例如十进制(基10))的一个因子。例如,1的倒数是1,而10的倒数是0.1。另外,7的倒数约为0.14,而71的倒数约为0.014。当然,任何期望的精度级可以被配置为满足底层微处理器体系结构的要求或需求。因此,为了增加精度,所述数据结构可以存储2-99、11-99、10-99或其他数值子集的倒数。此外,所存储倒数值的有效数位的位数可以取舍为满足底层体系结构的要求或需求。因此,如果在所述数据结构中只存储了数字2-9,那么实际值可以包括超过2位的有效数位。例如,7的倒数可以被存储为0.142857142,具有8个有效数位。
接着,在130处,原始的除法计算被预缩放(例如预处理或分解)为新的处理格式,其中原始的分母大约等于1。这是通过将原始分子和原始分母乘以所获得的近似分母倒数因子而实现的。因此,用于除法计算的新处理格式在140处被改动为由缩放后的分子(例如,原始的分子×因子)除以缩放后的分母(例如,原始的分母×因子)来表示的数学等效形式。对分子和分母同时进行乘法运算,因此重新表述的除法计算在数学上等效于原始的除法计算。
此时,缩放后分子的第一个数位就是原始除法计算的相关结果中商的第一部分。这是因为缩放后的分母约等于1,而任何数除以1都等于该数本身。因此,在150处,商的第一部分可以被设置为缩放后分子的第一个数位。
仅以示例的方式并且为了便于理解,考虑3/7这样一个原始除法计算。使用以上描述,7的倒数大约为0.14(例如,倒数数据结构精确到大约2个有效数位)。因此,当我们改动该计算时,缩放后的分子变为0.42(3×0.14),而缩放后的分母变为0.98(7×0.14)。新表述的计算因而变为0.42/0.98;原始的3/7计算的商的第一部分是0.4。本领域的普通技术人员将认识到,以上只是出于说明的目的,因为超高基数除法很可能需要比这个实施例中更高的精度。不过,这个实施例仍然有助于更好地理解本发明的各种实施方案如何通过以便于微处理器体系结构更容易、更有效率处理的格式来重新表述原始除法计算,从而分解该除法计算。
接着,本发明的实施方案开始以新的方式分解重新表述的除法计算。由此,在160处,一个被定义为当前余数的运行变量一开始被设置为缩放后的分子。在170,方法100进入一个处理循环,该循环一直持续,直到商达到期望的精度级(在IEEE中,对于双精度这是L=53,其中L是该精度的数据位宽度),或者直到当前余数等于0,表示在除法计算中已经除尽。相应地,在170处,使用当时的当前余数的一部分来迭代地组装商。第一次进入所述处理循环时,在170处的处理不需要发生,因为这是在150处进入循环之前原先被处理过了。可替换地,可以去除在150处的处理,并且由170处的处理来处置。在这种情况下,在170处的处理就不需要进行检查来确定它是不是循环内首次处理当前余数。
在172处,第一积是基数(正在使用的数字基,例如二进制、十进制、十六进制等)乘以当前余数。然后在174处,通过减去当前余数的整数部分来更改这个第一积。在一个实施方案中,所述整数部分就是当前余数的第一个数位(digit),并且形成了一个完成的整数。这之所以能够实现是因为缩放后的分母接近或近似为1,除法计算可以用全新的方式来分解。
例如,在传统的手算除法中,通过将当时存在的当前余数乘以基数得到第一积,然后减去代表分母(例如除数)乘以某个新数N的第二积,可以为一个正在形成的商确定现有余数。因此,例如,当计算3/7时,我们会通过以下过程来求解这个计算,首先形成由3(例如当前余数)乘以10(例如基数是10(十进制))得到的第一积,然后减去由7(例如除数或分母)×N(某个整数)得到的第二积。我们凭直觉判断N等于4,以使这个第二积(例如7×4=28)接近但小于第一积(例如3×10=30)。
然而,在本发明的实施方案中,除法计算被重新表述为缩放后的分子除以缩放后的分母(大约为1),因而,N可以被自动选择为当前余数的第一数字整数部分,我们在0.42/0.98的实施例里就是这样做的(例如,3/7被重新表述为一个数学等效式)。因而,从当前余数中很容易地获得了第一数字整数值(对于本实施例来说是0.4)。
此外,被用来求解商数位的原始计算被表示为第二积减去第一积。第一积是当前余数乘以基数,第二积是某个数N乘以缩放后的分母(例如除数)。第二积以全新的方式来分解,这对于实现本发明实施方案的微处理器体系结构而言,减小了求解第二积的值所需的数据宽度。
这是通过分解除数(例如缩放后的分母)以表示为数学上等效的表达式来实现的。由于除数(例如缩放后的分母)约等于1,因此如果从1中减去缩放后的分母,则这一减法的和数将包括等于0或1的一个或多个初始数位或前导数位。当所述减法得到负数时,例如缩放后的分母因使用大于1的近似因子而大于1时,可能出现若干无效的前导1。前导的0或1都是无效数,将不会占用微处理器体系结构内的额外数据宽度。因此,如果第二积也用数学上等效的方式来重新表述,那么前导0或1将减小第二积的数据宽度。除数的等效表示可以被表述为1-Y′,其中Y′是在从1中减去后等于缩放后分母的某个数。例如,在前面的实施例中,缩放后的分母是0.98,如果我们建立方程1-Y′=0.98来求解Y′,则我们得出Y′为0.02,但是如果我们关于Y′来表达等式,则我们得到Y′=1-0.98(例如,0.98是缩放后的分母或除数)。因此,缩放后的分母等于1-(1-Y′)并且Y′=1-缩放后的分母。
第二积现在可以表示为当前余数的第一整数部分的等式(由于缩放后的分母大约等于1)乘以由1-Y′(这正是表达缩放后分母的方式)表示的子等式,其中Y′就是1-缩放后的分母。通过在子等式1-Y′上分配当前余数的第一部分,第二积可以被进一步分解为另一个在数学上等效的等式。因此,第二积现在将被表示为当前余数的第一整数部分(例如当前余数乘以子等式的第一部分1)减去当前余数的第一整数部分乘以Y′的积。与我们直接对缩放后的分母或除数乘以当前余数的第一整数部分的情况相比,所述积将包括更少的有效数位,并且占用微处理器体系结构内更少的数据宽度,这是因为Y′包括一个或多个无效的前导0或1,尽管未经处理的缩放后分母原本并不包括任何无效的前导0或1。因此,将缩放后的分母分解为用数学上等效的方式来重新表述,这是一种具有空间效率的方式。
到目前为止已经论述了将用于确定商数位的除法计算表述为第一积(基数乘以当前余数的第一整数部分)减去第二积。第二积等于当前余数的第一整数部分减去当前余数的第一整数部分乘以Y′的积,并且Y′已知为1-缩放后的分母。如果我们在第二积上分配负号(由于第二积一定要从第一积中减去),则所述等式将变为第一积加上当前余数的第一整数部分的相反值与当前余数的第一整数部分乘以Y′的正积值(负号变为正的)。
因此,用于求解商的各个数位的整个等式可以被表达为从表示为当前余数的第一整数部分乘以基数的第一积中减去当前余数的第一整数部分,然后减去将当前余数的第一整数部分乘以Y′的积,并且Y′等于1-缩放后的分母。
在已经重新表述并且分解了原始的除法计算后,我们可以返回到图1的讨论中。在迭代循环中的第一积是当前余数乘以基数(如在172处所示),接着在174处,我们从第一积中减去当前余数的第一整数部分。然后,在176处,我们加上Y′乘以当前余数的第一整数部分的积,其中Y′等于1-缩放后的分母。由此,在178处,得到的总和被更新为当前余数的新值,处理然后在170处再次继续,直到达到所期望的精度或者当前余数等于0。一旦如此,在180处提供商的所有数位,直至所期望的或者所配置的所需精度。
在执行高基数除法时,需要微处理器内的大多数空间或区域,并且相应地需要大多数功耗的处理是除数乘以某个整数N的计算。传统的体系结构可以按照缩放后的分子除以缩放后的分母的形式来改写原始的除法计算,以便获得处理效率,这样一来N就是当前余数的第一部分,但是这些传统体系结构没有按照在本发明的实施方案中所给出的全新方式(1-Y′)来分解缩放后的分母。结果,在传统体系结构中,这种计算的数据宽度超过了求解除法计算所需的宽度。这是因为没有被分解为数学等效形式(1-Y′)的缩放后分母将不包括任何无效的前导1或0。因此,利用传统技术,缩放后的分母(其具有达到所需精度的有效数位)在乘以当前余数的第一部分时将超过期望的精度级。
相反,本发明的实施方案对确定缩放后的分母乘以当前余数的第一部分的积的处理进行分解,使得在执行除法计算时所需的数据宽度减小。这是因为Y′被表示为1-缩放后的分母(近似为1),因而Y′将包括等于0或1的一个或多个无效前导数位。因此,在执行该乘法时,需要更少的数据宽度来获得最终的积。乘法的数据宽度就是期望精度的数据宽度。相应地,实现本发明实施方案的微处理器体系结构与传统技术相比,可以用更少的空间和更少的功耗来实现高基数除法。本领域的普通技术人员将认识到,功率效率直接正比于所使用的区域或空间,由于本发明的实施方案需要更少的区域或空间,所以需要更少的功耗。
此外,本发明实施方案中的全新分解和处理还更宜于修改为适于基于单元的微处理器设计。随着微处理器单元复杂度的提高,基于单元的设计已经成为减少上市等待时间所需要考虑的重要设计因素。例如,在除法迭代结束时的舍入运算需要对余数执行进位传送(carry-propagate)加法。本发明的实施方案可以使用以下加法器单元,该单元处理与微处理器体系结构下高基数除法的期望精度相关联的正常数据宽度。
相反,传统体系结构所需的加法器单元需要处理超过期望精度级的数据宽度,这是因为当前余数与缩放后分母的乘积产生了超过期望精度级的有效数位。举另一个例子,很多微处理器体系结构都需要专门的乘法器单元,用于在需要完成高基数除法时执行乘法运算。本发明的实施方案为了完成高基数除法,不需要这样的专门乘法器单元。
图2中的图200根据本发明的实施方案描绘了用于执行超高基数除法的一种机器实现。机器体系结构可以包括在执行高基数除法时用于加法器和乘法器的标准单元库相关体系结构。在图200中描绘的机器实现方案仅是示意性的而非限制性的。由此,也可以使用多种其他硬件、软件和/或固件的配置或组合,而不会偏离本发明的实施方案。
复用器(Mux)201接收到位宽度为L位的第一操作数X。同时地,并行地或者随后,Mux 202接收到数据宽度为L位的第二操作数Y。操作数X与超高基数除法的分子相关,操作数Y与超高基数除法的分母相关。L是所述机器体系结构用来以期望精度执行超高基数除法计算的有效数位的位数。机器级的基数(r)是2的二进制幂,其中所述幂被表示为m(例如,2m)。
Y被馈给近似倒数表数据结构203,以便获得Y的近似倒数因子。与此同时,X和Y被馈给Mux 204。另外,近似倒数因子也被提供给Mux 205。接下来,由Mux或加法器206(也可以是乘法器)使用从Mux 205获得的近似倒数因子产生X和Y的部分积的和。Mux 205一次将近似倒数的m位馈给Mux或加法器206以供处理。乘法器206(也可以是Mux或加法器)将近似倒数因子的m位与X和Y相乘,以将原始除法计算重新表述为缩放后的X除以缩放后的Y的形式,其中缩放后的Y现在近似或接近于值1,因为Y的近似倒数正与Y相乘。
乘法器206被设计为处理m乘L位宽数组的计算。当乘法器206是加法器206时,该加法器被设计为处理L位加L位的加法。然后在乘法器206中调整缩放后的Y从而表示为Y′=1-B乘以缩放后的Y,其中B是Y的近似倒数因子)。这被用来通过将缩放后的Y表示为Y′,产生前导无效位(前面参考图1讨论为前导的无效0或1),从而分解除法计算。因为这样一来,图200的体系结构就可以利用与被设计来分别处理具有L乘m的位数组大小或者将L位与L位相加的计算的单元乘法器和加法器相关联的标准体系结构来处理高基数除法。相反,传统的体系结构将会需要能够处理m乘(m+L)位宽数组的乘法器或者能够处理m+L数据位宽的相加运算的加法器。然后,X′在乘法器206中与r(例如表示为2m的基数)相乘。这种有效位的减少将在接下来通过图200的迭代来实现。然而,本领域的普通技术人员将认识到,这实际上根本不是乘法,所要做的不过是当某个数N的倍数与基数r相乘时,移动二进制的小数点或者简单的位对齐。
前导数位(前面参考图1时被讨论为当前余数的第一整数部分)在加法器207中被剥除,并且在寄存器208中被存储为p。结尾数位在加法器207中被剥除,并被提供给Mux209。这些结尾数位被表示为R′。接着,为了例如当R′的最初一些位大于某个阈值时调整p以实现舍入(例如,十进制的小数部分大于或等于0.5时舍入为1),在一些实施方案中可以进行调整,从而在Mux或加法器210中进行舍入,以将R′近似为一个稍高的值。例如,在十进制r的当前余数被表示为0.478时,p可以被认为是4(第一整数部分),R′可以被认为是0.78。在这个实施例中,0.78可以在Mux或加法器210中被舍入为1。调整后的R′值在寄存器211中被存储为d。这一舍入操作被用来在加法器212中将p调整为用于商数位q的潜在舍入(虽然不总是需要或要求)值,所述商数位q被存储在寄存器213中。
到目前为止的讨论用来为期望的商Q确定第一和初始数位q0。在图200中的体系结构被设计为迭代多次,从而以期望的精度产生完整的Q,或者直到当前余数为0。Q达到期望精度的迭代次数将是L/m,其中L是期望精度所需的有效数位的位数,m是图200被设计来每次迭代为高基数除法计算所处理的比特位数。
接下来产生Q的迭代可以如下进行。在每次迭代中Y′被馈给Mux 202,从Mux 204到乘法器206的流程不变。Mux或加法器206然后向加法器207提供Y′和先前所选择的数位q。加法器207也接收在图中表示为d的结尾余数R′的先前潜在舍入表示,并且加法器207接收先前的R′。
在第一或初始迭代之后发生的迭代中,由于q可能已经舍入了,所以可能需要在加法器207中对Q数位q的先前确定值进行调整。因此,加法器207将先前的R′与d进行比较,以发现q是否已进行舍入,如果q已经舍入,则q被调整回q未舍入前的状态。这样做是为了在超高基数除法中对于所有的迭代都确保精确性。接着,加法器207将当前余数组装为q+R′,并且将其与基数(r)相乘,以获得用于除法下一周期的第一积。加法器207也将q乘以Y′,以形成第二积。接着,从第一积中减去q,和数与第二积相加。此时,我们就拥有了确定下Q数位qj+1所必需的信息。
由此,加法器207剥除所得到的计算结果的最初一些位,并将其作为pj+1存储在寄存器208中,所述结果的结尾部分变为下一结尾余数R′j+1并被提供给Mux 209。接着,在210中R′被处理为用于d的一个值,并且结果作为dj+1被存储在寄存器211中。注意,如果R′j+1原来不需要舍入,则dj+1的值是0并且仍被处理。然后,加法器212将dj+1与pj+1相加,以产生下一商数位qj+1,其被存储在寄存器213中。
正如前面所讨论的,高基数除法处理继续进行,直到达到期望的精度级(例如,Q有L位或者L/m次迭代),或者直到当前余数的值为0。
图200的处理也可以用公式符号来表示,以反映图2中各种组件的处理逻辑。一种示例性的符号如下所述。在预处理迭代中,我们确定Y′应当被分解或重新表示为前导无效位可被表示为B=Y的近似倒数并且Y′=1-B×Y的格式。
初始化或第一次迭代可被表示为初始化:p0+R′0=X′,其中X′是缩放后的X(例如分子),Q0=0,j←0,r=2m=基数,其中下标0表示初始或第一次迭代,使得j的值=0,标识出第一迭代。商数位选择然后可被表示为δj=(r×Rj′)的四舍五入,qj+1=rpj+δj。商数位选择开始了图200中的主处理循环。如上所述,商数位qj+1可以被舍入,因而δj反映了在图200中正对商数位qj+1所进行的调整。另外,在主处理循环中,余数处理可以被表示为pj+1+R′j+1=r×R′j+qj+1×Y′-δj。接着,利用下一选择的商数位qj+1所进行的商更新处理可被表示为Qj+1=Qj+qj+1/rj+1。j←j+1。最后,迭代返回商数位选择,直到商已有了L位(L/m次迭代)。
已经展示了如何以全新的方式来分解超高基数除法,以允许微处理器体系结构使用窄数据路径来完成处理。此外,本发明的实施方案允许使用标准单元库来处理超高基数除法。结果,实现本发明实施方案的技术的微处理器体系结构就可以获得更高空间效率的方案,从而导致功耗下降。
此外,可以理解的是,仅是出于示意的目的给出了图200。因此,可以预见到其他单元库的配置来实现本发明实施方案的新颖分解。因此,本发明的实施方案想要包括能够实现这里给出的全新基数除法分解的任何配置。
图3图示了根据本发明一个实施方案的超高基数除法***300的图。该高基数除法***包括数据结构310和处理器320。所述处理器包括逻辑321以及用于收容与高基数除法计算相关联的分子322、分母323和商324的空间。图3仅是示意性的而非限制性的,因为很容易明白,在一些实施方案中数据结构310也可以被包括在处理器320的区域或寄存器中。实际上,数据结构310可访问逻辑321的任何实施方案都想要落入本发明的广阔范围内。此外,逻辑321可以是硬件组件、固件组件、软件组件或者硬件、固件和软件的组合。
数据结构310是整数的近似倒数表。在数据结构310中表示的有效数位的位数是可配置的。此外,如参考图1所讨论的,由于可基于正用于超高基数除法的基数而容易地获得因子,所以数据结构310不需要存储所有可能的整数。因此,对于十进制基数而言,只需要在数据结构310中表示整数2-9(不需要表示1,因为1的倒数就是1),因为所有其他的整数可能性都可以使用基数从这些整数的因子中导出。当然容易明白,为了获得更高的精度,数据结构310可以包括更大整数集合(例如2-99、10-99、11-99或十进制基数的其他组合)的整数可能性。另外,数据结构310不必在所有的实施方案中都是表的形式,因为可以访问逻辑321的任何数据结构310都可以使用。
一开始,逻辑321访问分子322和分母323。接着,逻辑321访问数据结构310以获得分母323的近似倒数因子。在一些实施方案中,例如当分母323没有直接在数据结构310中被直接表示出来时,逻辑321可能需要使用与超高基数除法相关联的基数,根据从数据结构310中获得的值导出近似倒数因子。
一旦近似因子被获得或导出,逻辑321就将分子322和分母323都乘以所述因子,从而以更有效率的方式来重新表述除法。此时,分子322被表示为缩放后的分子,分母被表示为缩放后的分母。缩放后的分母近似为1,这简化了除法。接着,缩放后的分母被分解成等效表达式,该表达式被用于处理除法。
所述等效表达式代表了这样一个事实,即除法将被迭代地处理,以求解商324数位。因此,如参考图1和图2所述,将由逻辑321来处理所述除法,以获得当前余数的新值,并且当前余数的第一整数部分将是新的或下一商数位。每个处理周期迭代处理都产生一个新的商324数位。逻辑321通过估算第一积的表达式,并且减去当前余数的第一整数部分与由当前余数的第一整数部分乘以1减缩放后分母的积相减的和数,来确定每个新的当前余数。
因此,逻辑321在一些实施方案中出于效率的目的,将缩放后的分母重新表述为1减去缩放后的分母。逻辑321然后在初始化期间将这个值存储在处理器320内或者处理器320可以访问的存储器内。由于修改后的缩放后分母近似为1,所以当逻辑321存储1减去缩放后分母的和数时,该和数的一个或多个前导数位将是无效的(例如,根据基数的因子为0或1)。因此,通过执行这一处理,相比于传统技术而言减少了计算高基数除法所需的数据宽度。这导致可以更有效地使用处理器320内的空间,并且减小功耗。此外,这允许微处理器体系结构使用标准单元库来执行超高基数除法。相反,传统的体系结构需要专门的单元库来处理超高基数除法。
接着,逻辑321进入一个处理循环,以迭代地确定超高基数除法的商324。在第一次迭代过程中,第一商数位是缩放后分子的第一整数部分,因为缩放后的分母近似等于1。在一些实施方案中,逻辑321可以基于与当前余数的结尾部分(第一次迭代的缩放后分子的结尾部分)相关联的数位值向上/向下舍入被迭代确定的商数位,从而对这些商数位进行调整。
在第一次迭代后的每次处理迭代中,逻辑321为当前余数确定一个新值。逻辑321取用先前当前余数的第一整数部分,并将它乘以基数,以获得第一积。接着,从第一积中减去先前当前余数的第一整数部分。然后,通过将所保存的并且重新表述的缩放后分母(1一缩放后的分母)乘以先前当前余数的第一整数部分,从而获得第二积。最后,第二积与第一积相加,以获得当前余数的新值。然后,这个新的当前余数将使它的第一整数部分被用作正在被迭代组装的商324的下一商数位。此外,新的当前余数在逻辑321中被反向循环用于另一个处理周期,其中新的当前余数变为先前当前余数。
逻辑321继续这一处理,直到达到期望精度,或者直到当前余数值变为0。此外,如前所述并且在一些实施方案中,在每个处理周期中,在提供商324的下一商数位之前,可以基于当前余数的结尾部分来向上/向下舍入当前余数的第一整数部分。
本领域的普通技术人员读到以上公开内容后将会理解如何使用本发明的实施方案,利用窄数据路径实现超高基数除法。窄数据路径导致比传统方法更少的空间需求和更少的功耗。此外,在本发明各种实施方案中所讨论的技术保持了传统***的正常处理吞吐率,在一些情况下还提高了处理吞吐率。另外,本发明各种实施方案的原则可以与标准微处理器体系结构一同使用,不像传统技术需要专门的单元库来执行超高基数除法。
可以理解,以上说明只是示意性的而非限制性的。本领域的技术人员在阅读了以上说明后将清楚很多其他的实施方案。因此,本发明实施方案的范围应当参考所附的权利要求书来确定,也包括这些权利要求的等同物的全部范围。
需要强调的是,说明书摘要遵守37C.F.R.§1.72(b)的规定,即允许读者快速理解技术公开内容的本质和要旨。说明书摘要只是便于理解,不用来解释或限制权利要求书的范围或含义。
在以上的具体实施方式部分中,多种特征被分组到单个实施方案中,以使公开更加流畅。这种公开方法不想被解释为反映了这样一种意向,即本发明所要求保护的实施方案比每个权利要求中所明确记载的方案需要更多的特征。相反,正如所附的权利要求所反映的那样,创造性的主题由单个公开实施方案中的一部分特征构成。因此,所附的权利要求被合并到“具体实施方式”部分中,每个权利要求独自代表一个单独的示例性实施方案。
Claims (32)
1.一种在微处理器体系结构中执行高基数除法的方法,包括:
利用一个因子预缩放分子和分母,以产生缩放后的分子和缩放后的分母;以及
迭代地组装商的一部分,所述组装是通过用当前余数乘以基数,并且减去所述当前余数的整数部分,并且加上所述当前余数的所述整数部分与1减去所述缩放后分母的和数的乘积来进行的。
2.如权利要求1所述的方法,还包括:通过求所述分母的倒数的近似值,获得所述因子。
3.如权利要求2所述的方法,其中在获得步骤中,数据结构查找操作提供所述分母的倒数。
4.如权利要求2所述的方法,其中在预缩放步骤中,所述缩放后的分子包括与所述因子相乘的所述分子,并且所述缩放后的分母包括与所述因子相乘的所述分母。
5.如权利要求1所述的方法,其中在迭代组装的步骤中,所述当前余数的整数部分包括截去与所述当前余数相关联的第一数位。
6.如权利要求1所述的方法,其中在迭代组装的步骤中,所述和数导致在用所述分子除以所述分母时数据宽度的减小。
7.如权利要求1所述的方法,还包括:一旦达到期望的精度或者一旦获得等于0的当前余数,就产生所述商。
8.一种在微处理器体系结构中执行高基数除法的方法,包括:
为原始的除法建立包括缩放后除数的等效数学等式,其中所述缩放后的除数当被用在所述等效数学等式时减少了求解所述除法所需的多个有效数位;以及
迭代地选择商数位并且在所述等效数学等式中使用所述缩放后的除数,直到求解出期望数量的商数位。
9.如权利要求8所述的方法,其中在建立步骤中,所述等效数学等式等于从第一和数中减去第二和数,并且其中所述第一和数是当前余数的整数第一部分与基数的乘积,并且其中所述第二和数等于所述当前余数的负值与以下乘积相加,所述乘积是所述当前余数的所述整数第一部分与1减去所述缩放后除数的和数相乘的结果。
10.如权利要求8所述的方法,其中在建立步骤中,所述缩放后的除数等于原始除数乘以所述原始除数的近似倒数。
11.如权利要求8所述的方法,其中在建立步骤中,所述等效数学等式包括将原始分子和原始除数重新表述为缩放后的分子除以缩放后的分母。
12.如权利要求8所述的方法,其中在迭代选择的步骤中,基于当前余数的结尾部分来舍入所述商数位。
13.一种在微处理器体系结构中执行高基数除法的方法,包括:
使用缩放后的除数,以等效表达式来重新表述除法;
从表示在所述等效表达式中的分子的第一数位中选择第一商数位;
通过将当前余数的第一部分与所述当前余数的结尾部分相分离,并且在所述等效表达式中与所述缩放后的除数一起使用所述各部分,来处理所述除法,直到达到期望数量的所述除法的商数位。
14.如权利要求13所述的方法,其中在选择和处理步骤中,当所述结尾部分大于预定的阈值时,舍入所述商数位。
15.如权利要求13所述的方法,其中在重新表述步骤中,所述缩放后的除数等于原始除数的近似倒数乘以所述原始除数。
16.如权利要求15所述的方法,其中在重新表述步骤中,所述缩放后的除数被进一步修改为等于1减去所述缩放后的除数。
17.一种在微处理器体系结构中执行高基数除法的方法,包括:
用缩放后的除数分解除法计算,其中所述分解导致所述除法计算在数学上等效的表示;
为所述除法选择商数位;
通过与所述数学上等效的表示一起使用所述缩放后的除数,计算下一余数,并且其中所述缩放后的除数等于1减去原始除数的近似倒数因子;以及
重复选择和计算的处理,直到为所述除法计算确定了期望数量的商数位。
18.如权利要求17所述的方法,其中在计算步骤中,所述近似倒数因子是使用与所述除法计算相关联的基数,从倒数数据结构中获得的。
19.如权利要求17所述的方法,其中在分解步骤中,所述数学上等效的表示等于从第一积中减去一个和数,所述第一积等于所述当前余数乘以基数,并且所述和数等于所述当前余数正的第一部分加上负的第二积,其中所述第二积等于所述缩放后的除数乘以所述当前余数的所述第一部分。
20.一种具有机器可访问介质的制品,所述介质具有相关指令,其中所述指令在被执行时产生高基数除法的商,所述机器包括至少一个执行以下操作的组件:
求分母的倒数,以获得近似因子;
将分子与所述因子相乘,以获得缩放后的分子;
将所述分母与所述因子相乘,以获得缩放后的分母;以及
将所述缩放后的分子的第一数位部分用作所述商的第一部分,并且将当前余数设置为所述缩放后的分子;
将所述缩放后的分母分解为用于所述超高基数除法的等效表达式,该表达式导致多个前导无效数位;以及
通过用所述当前余数乘以基数以获得第一积,并且从所述第一积中减去所述等效表达式,从而迭代地使用所述当前余数,其中得到的和数被用来修改所述当前余数。
21.如权利要求20所述的制品,还包括用于以下操作的指令:从表中获得达到期望精度的所述因子。
22.如权利要求20所述的制品,其中在分解操作中,所述等效表达式等于所述当前余数的第一整数部分减去第二积,所述第二积表示为所述当前余数的所述第一整数部分乘以1减去所述缩放后分母的第二和数。
23.如权利要求22所述的制品,还包括用于以下操作的指令:在迭代地使用所述当前余数之前,求解并保存所述第二和数。
24.如权利要求20所述的制品,还包括用于以下操作的指令:使用被迭代修改的当前余数来迭代地组装商,直到达到期望的精度或者直到所述当前余数获得0值。
25.如权利要求20所述的制品,其中在迭代使用的操作中,当执行所述分子除以分母的除法时,所述机器的空间利用率未被提高到期望精度以上。
26.一种高基数除法***,包括:
以期望精度具有用于倒数的近似因子的数据结构;
可访问所述数据结构的处理器;
在所述处理器上进行处理,以接收与高基数除法相关联的分子和分母的逻辑;以及
其中所述逻辑使用所述数据结构来获得分母因子,并且将所述高基数除法重新表述为与所述分母因子相乘的所述分子除以与所述分母因子相乘的所述分母的除法,并且所述逻辑通过从第一积中减去正在改变的当前余数的整数第一部分,并且加上第二积来迭代地形成商,所述第一积是通过将所述当前余数乘以基数而获得的,所述第二积是通过将所述正在改变的当前余数的整数第一部分乘以1减去与所述分母因子相乘的所述分母的和数而获得的。
27.如权利要求26所述的高基数除法***,其中所述处理器在所述逻辑迭代地形成所述商之前保留所述和数。
28.如权利要求26所述的高基数除法***,其中所述逻辑包括与所述处理器相关联的硬连线组件。
29.如权利要求26所述的高基数除法***,其中所述逻辑包括与所述处理器相关联的固件或软件。
30.如权利要求26所述的高基数除法***,其中所述逻辑使用标准单元库的加法器和乘法器来执行所述高基数除法。
31.如权利要求26所述的高基数除法***,其中所述第二积的位宽等于L,其中L是与所述商的期望精度相关联的数据位宽。
32.如权利要求26所述的高基数除法***,其中所述分母因子的期望精度对于所述数据结构来说是可配置的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/394,952 | 2003-03-21 | ||
US10/394,952 US7167891B2 (en) | 2003-03-21 | 2003-03-21 | Narrow data path for very high radix division |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1761938A true CN1761938A (zh) | 2006-04-19 |
Family
ID=32988505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800077421A Pending CN1761938A (zh) | 2003-03-21 | 2004-02-25 | 超高基数除法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7167891B2 (zh) |
CN (1) | CN1761938A (zh) |
WO (1) | WO2004095260A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156625A (zh) * | 2011-03-31 | 2011-08-17 | 北京大学 | 利用阻变器件进行除法计算的方法 |
CN102713835A (zh) * | 2009-12-25 | 2012-10-03 | 英特尔公司 | 快速无分支向量除法计算 |
CN104731551A (zh) * | 2013-12-23 | 2015-06-24 | 浙江大华技术股份有限公司 | 基于fpga进行除法操作的方法及装置 |
CN108021180A (zh) * | 2016-11-03 | 2018-05-11 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN111813372A (zh) * | 2020-07-10 | 2020-10-23 | 上海擎昆信息科技有限公司 | 一种高精度低时延实现32位整数除法的方法及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7167891B2 (en) | 2003-03-21 | 2007-01-23 | Intel Corporation | Narrow data path for very high radix division |
US7499962B2 (en) * | 2004-12-21 | 2009-03-03 | Intel Corporation | Enhanced fused multiply-add operation |
US20060294177A1 (en) * | 2005-06-27 | 2006-12-28 | Simon Rubanovich | Method, system and apparatus of performing division operations |
US7830905B2 (en) * | 2007-04-20 | 2010-11-09 | Cray Inc. | Speculative forwarding in a high-radix router |
US8725786B2 (en) * | 2009-04-29 | 2014-05-13 | University Of Massachusetts | Approximate SRT division method |
US10447983B2 (en) * | 2017-11-15 | 2019-10-15 | Nxp Usa, Inc. | Reciprocal approximation circuit |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55103642A (en) * | 1979-02-01 | 1980-08-08 | Tetsunori Nishimoto | Division unit |
US5020017A (en) * | 1989-04-10 | 1991-05-28 | Motorola, Inc. | Method and apparatus for obtaining the quotient of two numbers within one clock cycle |
DE69231051T2 (de) * | 1991-09-05 | 2001-01-18 | Cyrix Corp | Verfahren und Anordnung zur vorteilierten Division |
GB2296350B (en) | 1994-12-21 | 1999-10-06 | Advanced Risc Mach Ltd | Data processing divider |
US6240338B1 (en) * | 1995-08-22 | 2001-05-29 | Micron Technology, Inc. | Seed ROM for reciprocal computation |
US6078939A (en) * | 1997-09-30 | 2000-06-20 | Intel Corporation | Apparatus useful in floating point arithmetic |
US6141670A (en) * | 1997-09-30 | 2000-10-31 | Intel Corporation | Apparatus and method useful for evaluating periodic functions |
JP3551113B2 (ja) * | 2000-02-07 | 2004-08-04 | 日本電気株式会社 | 除算器 |
US6782405B1 (en) * | 2001-06-07 | 2004-08-24 | Southern Methodist University | Method and apparatus for performing division and square root functions using a multiplier and a multipartite table |
FI20011610A0 (fi) * | 2001-08-07 | 2001-08-07 | Nokia Corp | Menetelmä ja laite jakolaskun suorittamiseksi |
US7127483B2 (en) * | 2001-12-26 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system of a microprocessor subtraction-division floating point divider |
US7167891B2 (en) | 2003-03-21 | 2007-01-23 | Intel Corporation | Narrow data path for very high radix division |
-
2003
- 2003-03-21 US US10/394,952 patent/US7167891B2/en not_active Expired - Fee Related
-
2004
- 2004-02-25 CN CNA2004800077421A patent/CN1761938A/zh active Pending
- 2004-02-25 WO PCT/US2004/005664 patent/WO2004095260A1/en active Application Filing
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102713835A (zh) * | 2009-12-25 | 2012-10-03 | 英特尔公司 | 快速无分支向量除法计算 |
CN102156625A (zh) * | 2011-03-31 | 2011-08-17 | 北京大学 | 利用阻变器件进行除法计算的方法 |
CN102156625B (zh) * | 2011-03-31 | 2012-11-21 | 北京大学 | 利用阻变器件进行除法计算的方法 |
CN104731551A (zh) * | 2013-12-23 | 2015-06-24 | 浙江大华技术股份有限公司 | 基于fpga进行除法操作的方法及装置 |
CN104731551B (zh) * | 2013-12-23 | 2018-02-16 | 浙江大华技术股份有限公司 | 基于fpga进行除法操作的方法及装置 |
CN108021180A (zh) * | 2016-11-03 | 2018-05-11 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN108021180B (zh) * | 2016-11-03 | 2023-06-02 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN111813372A (zh) * | 2020-07-10 | 2020-10-23 | 上海擎昆信息科技有限公司 | 一种高精度低时延实现32位整数除法的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20040186873A1 (en) | 2004-09-23 |
WO2004095260A1 (en) | 2004-11-04 |
US7167891B2 (en) | 2007-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bernstein et al. | On the correct use of the negation map in the Pollard rho method | |
Bernstein | Multiplication by integer constants | |
US5841684A (en) | Method and apparatus for computer implemented constant multiplication with multipliers having repeated patterns including shifting of replicas and patterns having at least two digit positions with non-zero values | |
CN1735881A (zh) | 用于执行计算操作的方法和***以及一种设备 | |
Clinger | How to read floating point numbers accurately | |
EP1576493A1 (en) | Method and a system for performing calculation operations and a device | |
Olstad et al. | Efficient partitioning of sequences | |
KR102581403B1 (ko) | 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법 | |
CN1761938A (zh) | 超高基数除法 | |
Dimitrov et al. | Area-efficient multipliers based on multiple-radix representations | |
US20050273481A1 (en) | Pipelined real or complex ALU | |
CN1258710C (zh) | 用于高效模数归约和模数乘法的电路和方法 | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
Wendler et al. | A fast BDD minimization framework for approximate computing | |
US9632752B2 (en) | System and method for implementing a multiplication | |
CN115348002B (zh) | 一种基于多字长乘法指令的Montgomery模乘快速计算方法 | |
CN110858137A (zh) | 除以整数常数的浮点除法 | |
Pornin | Optimized binary gcd for modular inversion | |
US5734599A (en) | Performing a population count using multiplication | |
Erdem et al. | A less recursive variant of Karatsuba-Ofman algorithm for multiplying operands of size a power of two | |
Goyal et al. | Computation-distortion characteristics of block transform coding | |
Rezai et al. | Algorithm design and theoretical analysis of a novel CMM modular exponentiation algorithm for large integers | |
Pazhani et al. | High-Speed and Area-Efficient Modified Binary Divider | |
CN1731344A (zh) | 快速多周期二进制及十进制加法器单元的高度并行结构 | |
KR100853787B1 (ko) | 가변 진법 나눗셈 연산기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |