CN103959192B - 用于估算超越函数的数学电路 - Google Patents

用于估算超越函数的数学电路 Download PDF

Info

Publication number
CN103959192B
CN103959192B CN201180075241.7A CN201180075241A CN103959192B CN 103959192 B CN103959192 B CN 103959192B CN 201180075241 A CN201180075241 A CN 201180075241A CN 103959192 B CN103959192 B CN 103959192B
Authority
CN
China
Prior art keywords
circuit
multinomial
look
evaluation
instruction
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
Application number
CN201180075241.7A
Other languages
English (en)
Other versions
CN103959192A (zh
Inventor
J-A·派伊洛
S·卢巴诺维奇
B·艾坦
A·格雷德斯廷
T·D·弗莱切
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103959192A publication Critical patent/CN103959192A/zh
Application granted granted Critical
Publication of CN103959192B publication Critical patent/CN103959192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/035Reduction of table size
    • G06F1/0356Reduction of table size by using two or more smaller tables, e.g. addressed by parts of the argument
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/552Powers or roots, e.g. Pythagorean sums
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/08Powers or roots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/10Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/12Reciprocal functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5521Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

描述了用于计算超越函数的估算的数学电路。查找表存储电路在其中存储若干组二进制值,其中每组值表示将函数估算至高精度的第一多项式的相应系数。第一计算电路使用来自每组值的二进制值求值第一多项式。第二计算电路使用也从多组值之一提取的二进制值的部分,求值将函数估算至低精度的第二多项式。也描述和要求保护了其它实施例。

Description

用于估算超越函数的数学电路
本公开涉及微处理器和其它处理设备,尤其涉及它们对非算术或超越函数的计算。还描述了其它实施例。
背景技术
处理设备一般具有内建硬件逻辑电路,该内建硬件逻辑电路不仅能计算基本算术函数(比如加、减和乘),又能计算非算术函数,例如倒数、平方根和幂。后者也被称为超越函数。由于它们固有的性质,超越函数无法以高精度直接计算出,而是必须被估算至要求的精度,这通常是通过计算足够高阶的多项式来实现的。计算超越函数所要求的电路复杂性与所需的精度(位数)成比例,并在大量生产的微处理器的总成本中可扮演重要角色,例如在消费者电子设备(例如个人计算机、视频游戏机、智能电话)以及工程和科学工作站和服务器机器中找到的那些微处理器。结果,旨在不同应用的微处理器设计(以及它们关联的指令集)对于同一超越函数可支持不同的精度。
包含针对第一微处理器族定义的第一超越函数指令的应用软件可能无法在另一、第二微处理器族上正确地运行。甚至就足够数量的位而言,当最低精度可在同一超越函数(其针对第二族定义)的指令中获得时,也是如此。这可能是由于软件不仅需要指令结果中的最低精度,而且要求结果的足够数量位也相同。使软件兼容的一种可能解决方案是将硬件电路增加到第二微处理器族中,该硬件电路是计算第一超越函数指令所需的。
附图简述
本发明的实施方式在各附图中是作为实施例而非作为限制而示出的,在附图中类似的附图标记指代类似的元素。应当注意,本公开中对本发明的“一”或“一个”实施例的引用不一定指同一实施例,并且它们表示至少一个。
图1是能够使用查找表来计算超越函数的低精度估算的数学电路的框图,它也可用于函数的高精度估算。
图2示出产生低精度估算的多项式计算电路。
图3是能够使用同一查找表计算低精度估算和高精度估算的数学电路的框图。
图4是计算倒数函数和平方根倒数函数的低精度估算的数学电路的详细框图。
图5示出其中可实现数学电路的处理器设备的部分。
图6是其中可实现数学电路的示例性计算机系统的框图。
具体实施方式
现在参照附图描述本发明的若干实施例。尽管阐述了许多细节,但要理解,本发明的一些实施例没有这些细节也可投入实践。在其它实例中,未详细示出众所周知的电路、结构以及技术,以免混淆对本描述的理解。
如同在前面的背景技术章节描述的,存在如下情形,其中较新的微处理器族期望对被定义为较旧微处理器族的指令集架构一部分的处理器指令提供硬件级兼容性。呈现给定的数学指令兼容的强力技术是向新处理器族中增加硬件电路,该硬件电路是计算“旧有指令”所必需的。然而,通过这种技术,由于由增加的旧有功能消耗明显更多的芯片资源,可望实现特定数学函数的多种精度的新处理器族被迫承担增加的制造成本。这可能是一种担忧,尤其对于非算术或超越函数的基于硬件的计算。
对超越函数求近似涉及下列三种操作:自变量缩减至预定输入区间;对缩减自变量的函数近似;以及对最终结果的重构、归一化和舍入。典型地,在诸如微处理器、中央处理单元、图形处理单元和数字信号处理器之类的处理设备中的函数近似操作的基于硬件的方法使用所谓的基于非迭代表查找或表驱动的技术。存在不同类型的基于表的方法。在谱的一端,存在与高阶多项式近似相结合使用相对小的查找表以估算特定超越函数的方法。高阶多项式近似需要大量加法和乘法以产生估算。相反,在谱的另一端,直接表查找技术使用与非常少的计算(例如最多就几次整数加法)组合的非常大的初始查找表。作为这些极端之间的平衡,如今使用基于线性近似(一阶多项式)和二次近似(二阶多项式)的表辅助方法。这些方法可用于近似超越函数,例如倒数、倒数平方根、对数、幂和三角函数。
这里描述的数学电路可通过“再使用”查找表的一部分执行函数近似操作以获得低精度估算(这是旧有指令所需要的),查找表用于求值高精度估算(它是较新的指令所需要的)。生成查找表中的值以产生较高阶多项式的系数,这是计算高精度估算所需的。这种查找表的共享或再使用(以产生低精度估算和高精度估算)可对芯片资源进行更有效使用。另外,可使所产生的低精度估算(在每个位的基础上)基本等于由较旧处理器上执行的旧有指令产生的结果。为了获得这种相等,描述了一种调整电路,该调整电路调整从共享查找表取的值,该值表示较高阶多项式的系数。随后使用经调整的值来求值较低阶多项式。可获得这些益处而不一定要复制旧有处理器的低精度超越函数硬件的全部。
图1是使用查找表计算低精度估算的数学电路的框图,该查找表被设计成提供超越函数的高精度估算。这里,可假设超越函数的输入自变量已被缩减至适当的区间,这依赖于要被估算的函数。f(u)代表超越函数,而自变量范围缩减将提供g(x),其中x现在被约束在预定和有限的区间,例如(1,2)。可使用任何适当的自变量缩减技术,并可在预执行软件编译期间或者在硬件或处理器设备中(尤其是指令执行单元中)的运行时期间执行该技术。图1的框图由此假设输入操作数x[N:1]是具有N个整数位(例如二进制位)的缩减自变量。另外,执行对超越函数f(u)的最终结果的重构、归一化和舍入的电路或技术在这里未给出。
图1的框图示出表查找存储电路3用于检索表征较高阶多项式的系数x的值;随后可通过计算电路2针对输入自变量x的给定实例求值多项式。如下面例子中解释的那样,较高阶多项式可以是需要系数C0、C1和C2的二次或二阶多项式。对于该多项式的计算产生对超越函数的高精度估算,如通过自变量缩减的函数g(x)表示的那样,该函数在多数情形下与超越函数f(u)是相同的形式。查找表存储电路3(也称查找表3)可通过任何适当技术来实现,例如现场可编程只读存储器。该例中的查找表3已在其中存储了三组值,每组值对应于较高阶多项式的每个系数C0、C1和C2。每个组代表已被预定并存储在查找表存储电路中的相应系数的数个实例,以根据由表3接收的输入值通过表来输出。对于至少一个超越函数,表3的内容可使用已知技术来确定。对于输入操作数x的给定实例,输入操作数的若干最高有效位,在这里表示为x(g:h),被用来咨询查找表3,查找表3随后在该例中返回表示系数C0、C1和C2的三个值。这些值然后由多项式计算电路2使用以求值较高阶多项式的实例,这将超越函数估算至高精度。这里,术语“高阶”(或“较高阶”)表示至少二阶。
现在,图1中的安排也可使用多项式计算电路5计算g(x)的低精度估算,以评估x的第二多项式,该第二多项式是较低阶多项式并将超越函数估算至较低精度。术语“较低阶”在这里表示低于通过多项式计算电路2求值的较高阶多项式(当要执行高精度指令时)。两个计算电路2、5在某种意义上“再使用”或共享查找表3;因而,不再需要包含较低阶多项式(在这种情形下,该例子是需要系数C0和C1的线性或一阶多项式)所需的一个或多个系数的全集的另一查找表。这种共享在这里可通过调整从查找表存储3提取的部分值来达成,该值实际上表示较高阶多项式的系数。例如,如果值是具有M个二进制位的C0[M:1],则要被调整的部分可以是K=m-n+1位,即C0[m:n],其中当然K<M(K和M是正整数)。换句话说,要被调整的部分可以是存储在查找表中的二进制值的删节版本。这种调整能力隐含在图1所示的多项式计算电路2中,并可如图2所示地实现。
图2示出产生低精度估算的多项式计算电路5的例子。调整电路6响应于低精度指令,该低精度指令在这种情形下通过调整其输入值而被解码成微操作(uop)。后者是可由查找表3输出的值C0[M:1]的一部分。调整电路6由此产生经调整的值C0’,它是低阶多项式的系数的实例。在一个例子中,调整简单地将偏移值加至输入值,其中偏移值可根据输入操作数x改变。经调整的值随后被送至乘加电路7,该乘加电路7被设计成求值较低阶多项式,在该例中是C1x+C0’形式的线性多项式。注意在这种情形下,较低阶多项式的其它系数C1可直接从查找表3获得,作为表示C1[L:1]的值的一部分(例如其删节和舍入版本)。然而,作为替代,另一系数也可以是C1[L:1]的一部分的经调整版本。记住,C1[L:1]已被预先确定以求值较高多项式(见图1)。
应当理解,尽管图1将多项式计算电路2、5描绘成单独模块,然而它们实际上也可以实现(在处理器设备的同一执行单元中)为共享某些部分。第一和第二计算电路能共享乘加电路,以求值不同的多项式。例如,相同的乘加模块可用来求值较低和较高多项式两者的线性部分。在那种情形下,计算电路2、5也可包括必需的选择逻辑以向共用乘加器提供正确的输入以及例如进位和保存(save)配置,这依赖于接收到的是低精度指令还是高精度指令。这是数学电路可被视为具有高精度操作模式和低精度操作模式的情形,其中超越函数的估算分别是在高精度和低精度下计算的。
此外,尽管图1示出有两个计算电路2、5的数学电路,当处理器设备仅需要支持较低精度超越函数指令时,前一电路(较高阶多项式)可(从执行单元)省去——例如参见下面的图4,它并未示出产生高精度估算的算术电路。
另外,尽管查找表3被标记为在其输出提供系数C0或C1或C2,然而这不应当被认为要求查找表3对于该系数的每单个位都具有存储条目。相反,可以如下:对于一些超越函数,其多项式近似的特定系数的一个或多个位可以是隐含的,例如该位对于二进制输入操作数x[g:h]的所有预期组合可以是恒定的,或者它可预测地变化(根据输入自变量x),由此相比对查找表3中的那些位分配存储条目,组合式布尔逻辑电路足以更有效地提供所需的位。
图3是能够使用针对高精度求值设计的相同一组系数查找表10,对于一个以上的超越函数计算低精度估算和高精度估算的数学电路的框图。根据超越函数的类型,表10由输入操作数X的不同部分咨询。函数标识符(FID)指示要被估算的函数的类型,并可以是通过解码处理器指令产生的微操作。例如,FID可在倒数和平方根的倒数之间作出指示或区别(对于这种数学电路的详细框图,请参见图4)。多项式的求值可通过算术单元11、12达成,该算术单元11、12可通过传统乘加逻辑电路来实现。算术单元11、12通过FID被配置以进行操作并且当然接收输入操作数x的一部分作为输入,如传统方法指示的那样。对于通过算术单元11执行的低精度求值,作为存储在系数查找表10中的值C0的一部分的值C0[a:b]被加至偏移值,即调整[o:p](adjustment[o:p]),该偏移值是从偏移查找表9获得的。在这种情形下,同一输入值——在这种情形下是x[e:f]或者x[g:h],其每一个是输入操作数x的一部分——被用来同时咨询系数表10以及偏移表9。偏移值可以是预先确定的并被存储在查找表9中。
确定用于调整系数(例如C0)的偏移值adjustment[o:p]的方法如下。对于输入操作数x的给定实例,通过在旧有处理器上运行的旧有指令来估算超越函数。问题如今变成如何确定C0’和C1以使在输入操作数x的相同实例下求值的较低阶多项式(使用高精度估算的共享系数表10求值的低精度估算——见图3)基本等于(在每位的基础上)旧有结果。系数表的检查可揭露,通过将C1[c:d](用于较低阶多项式)约束为在系数表10(用于较高阶多项式)中可供使用的C1删节版本,有可能获得旧有结果和新结果之间的小差异(在输入操作数x的所需范围内)。如在下面讨论的例子中看到的,这种差异被证实相对于系数表10中的值尺寸(位数)较小,并可容易地对绝大多数相应索引实例(对系数表的输入,它是输入操作数x的一部分)进行计算。这些计算出的差异中的每一个则可作为偏移值被存储在偏移查找表9中,并关联于索引的每个相应实例。
图4是计算倒数函数和平方根倒数函数的低精度估算(结果中的14位二进制尾数)的数学电路的详细框图。在该例中,系数表具有128个条目并且它们的索引是输入操作数x的高7位。在这种情形下,系数表被设计成使用二次多项式计算倒数函数的高精度估算(23位二进制尾数)。基于用来确定偏移表的前面给出的准则,发现遵循一些分析,即需要系数表中C0值的16个位连同C1值的9个位(当然没有C2值中的任何位),用于求值线性多项式以得出相对于旧有结果的小差异。在这种情形下,小差异意味着仅需要4个二进制位的64个条目来表示倒数函数的偏移值。关于对偏移表和系数表的索引,在本例中输入操作数x的相同一组位被用来索引系数表和偏移表,尤其是6个位,即x[22:17]或x[23:18](依赖于函数是倒数还是平方根的倒数)。然而,可以如下:分析揭示(输入操作数x的)不同组位应当被用来索引两个表。至于数学电路的算术单元部分,可使用如图所示的乘加器配置,该乘加器配置可以是典型的融合累加器树,随后是进位传送加法器,它产生所求值的多项式(在这种情形下在18位加法器的输出处)。也可如图所示地使用Booth(布思)编码以加快乘法方面。
图5示出其中可实现如前所述的数学电路的处理器设备的部分。处理器设备具有可以是寄存器、主存储器、高速缓存或其任意组合的存储19,其中可存储通过处理器设备执行的指令以及那些指令的执行结果。存储19可以与具有指令提取单元14、指令解码器16和执行单元18共同位于芯片上。在一些情形下,存储19可以在芯片外。指令提取单元14——也被称为指令单元——负责组织程序指令,这些程序指令从存储19提取或发布并随后以适当的顺序执行。被提取或发布的指令(例如低精度超越函数指令或高精度超越函数指令)被提交给指令解码器16,指令解码器16解释指令以产生较低级的控制信号,一般在这里被称为微操作或uop,该较低级的控制信号将配置和/或触发执行单元18的适当逻辑电路模块以处理指令的输入自变量(也被称为操作数)。在这种情形下,执行单元18(从指令中的操作码)检测超越函数要被计算。执行单元18包含数学电路,该数学电路将随后被信号通知以执行至少函数近似操作(例如这里描述的),该函数近似操作估算所检测或标识的超越函数。执行指令的最终或最后结果可随后被写入存储19(例如作为典型回写操作的一部分)。
处理器设备可以能够通过提取低精度指令执行机器实现方法以计算超越函数的估算,该低精度指令用来以低精度求值超越函数。它解码指令并作为响应访问查找表(例如图3的系数表10或图1的查找表存储电路3)以输出表示较高阶多项式的系数的值,该较高阶多项式将超越函数估算至高精度。例如,查找表可包含求值较高阶多项式所需的全部系数,以产生高精度结果。由查找表输出的值的一部分随后被调整(例如通过单独的偏移表和算术逻辑的组合)并随后(使用该调整值)求值将超越函数估算至低精度的较低阶多项式。例如,调整通过查找表输出值的部分可涉及响应于低精度指令的解码访问另一查找表以获得偏移值。随后使用偏移值以及表示较高阶多项式的系数的值(由查找表输出),求值较低阶多项式。
处理器设备可以是指令集架构(ISA)A设备,相反低精度指令可以对ISA B设备定义,而在ISA A和ISA B设备上的低精度指令执行将较为有利地产生相同的结果(当再使用已被设计成产生高精度结果的查找表时)。ISA A也可包含高精度指令,该高精度指令在呈现高精度结果时基本使用同一查找表。在那种情形下,处理器设备也可执行下列动作:提取高精度指令(用以估算超越函数至高精度);解码高精度指令并作为响应访问同一查找表以获得表示较高阶多项式的系数的若干值;并随后使用由查找表输出的若干值来求值较高阶多项式。
现在参见图6,其示出计算机系统20的框图,在该计算机系统20中可实现数学电路或超越函数执行进程。计算机系统20包括处理器21以及具有I/O控制器中枢(ICH)28的芯片集12。计算机系统20也包括:与芯片集12耦合的第一组件互连23、与ICH耦合的第二组件互连25、与ICH耦合的串行扩展端口27、与ICH耦合的网络控制器22以及与ICH耦合的数据存储24。
处理器21是多核处理器并包括处理器核26-1至26-M,其中M可以是大于或等于2的整数(例如2、4、7或更多)。每个核可包括至少一个执行单元,该执行单元包含数学电路或可执行用于执行如本文披露的超越函数的进程。如图所示,核1包括高速缓存33(例如L1高速缓存)。其它核中的每一个可类似地包括专用高速缓存。处理器核可实现在单个集成电路(IC)芯片上。
处理器21也包括至少一个共享高速缓存30。共享高速缓存可存储数据(例如指令),该数据由处理器的一个或多个组件(例如核)使用。例如,共享高速缓存可本地高速缓冲存储在存储器32中的数据以供处理器组件快速访问。在一个或多个实施例中,共享的高速缓存可包括一个或多个中级高速缓存,例如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存、末级高速缓存(LLC)和/或它们的组合。
处理器核26和共享高速缓存30各自与总线或其它互连34耦合。总线或其它互连可耦合核和共享高速缓存并允许在它们和存储器32之间通信
处理器21也包括存储器控制器中枢(MCH)36。如该示例性实施例中所示,MCH与处理器21集成。例如,MCH可与处理器核一起在管芯上。处理器通过MCH与存储器32耦合。在一个或多个实施例中,存储器32可包括DRAM,尽管这不是必需的。
芯片集包括输入/输出(I/O)中枢37。该I/O中枢通过总线(例如快速通道互连(QPI))或其它互连40与处理器耦合。第一组件互连23与I/O中枢38耦合。
这只是适合的系统的一个特例。用于膝上计算机、台式机、手持PC、个人数字助理、工程设计工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和多种其它电子设备的业内已知的其它系统设计和配置也可适用。一般来说,能够纳入本文披露的处理器和/或执行单元的大量系统或电子设备通常是适用的。
在上面的描述中,出于说明目的阐述了众多具体细节以便提供对实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施一个或多个其它实施例。所描述的特定实施例不是为了限制本发明而是为了解说本发明的实施例而提供的。本发明的范围并非由上面提供的特定示例确定,而是仅由下面的权利要求书确定。在其它实例中,为了避免混淆说明书的理解,公知的电路、结构、设备和操作已在框图中示出并且不涉及细节。在认为适当的地方,附图标记或附图标记的结尾部分在各附图中被重复以只是相应或相似的要素,这些要素可选择地具有相似的特征。
然而,某些操作可通过硬件组件来执行,作为替代,这些操作可体现在计算机可执行指令中,所述计算机可执行指令可用来造成或至少导致以指令变成以执行操作的电路或硬件。电路可包括通用或专用处理器或逻辑电路(例如二进制逻辑、多级或非二进制逻辑),这里仅示出一些例子。或者,这些操作可通过硬件和软件的组合来选择地执行。执行单元和/或处理器可包括对机器指令作出响应的专门或特定的电路或其它逻辑、或者从机器指令衍生出的一个或多个控制信号,以计算和存储指令特定的结果操作数。
应当理解,在前面的描述中,在单个实施例、附图或其描述中,各特征有时被编组到一起,这是为了使本公开变得流畅并有助于理解各种创新性方面。然而,这种公开方法不应被解释为反映本发明相比各个权利要求中明确陈述的特征而言需要更多特征的意图。相反,如下面的权利要求书反映出来的那样,各创新性方面可少于以上公开的单个实施例的所有特征。因此,详细说明之后的权利要求书在此明确地被包括到本说明书中,其中各个权利要求独立作为本发明的单个实施例。
尽管附图中已描述和示出了某些实施例,然而要理解,这些实施例仅是解说性的而非对本发明的范围构成限制,并且本发明不仅限于所示和所描述的具体结构和配置,因为本领域内技术人员可以想到多种其它修改形式。例如,尽管上述例子中用到的较高阶多项式是二次多项式,而较低阶多项式是线性多项式,然而本发明的理念也适用于高精度函数近似和低精度函数近似的其它组合。另外,尽管图4中的例子示出产生倒数和平方根倒数的函数近似的数学电路的细节,然而前述理念也可适用于设计产生其它超越函数(例如幂、对数和三角函数)的函数近似的数学电路。说明书因此应当被视为解说性的而非限定性的。

Claims (19)

1.一种用于计算超越函数的估算的数学电路,包括:
查找表存储电路,在其中存储多组值,每组值表示将超越函数估算至第一精度的第一多项式的相应系数;以及
第一计算电路,耦合至所述查找表存储电路以使用从所述多组值中的一组取得的值的部分,求值将超越函数估算至第二精度的第二多项式,其中所述第二精度低于所述第一精度,其中所述第一计算电路包括:
调整电路,将从所述查找表存储电路取得的值的部分调整为所述第二多项式的系数实例;以及
乘加电路,使用所述第二多项式的系数实例来求值所述第二多项式。
2.如权利要求1所述的数学电路,其特征在于,还包括第二计算电路,所述第二计算电路耦合至所述查找表存储电路以使用从所述多组值中的每组取得的值来求值所述第一多项式。
3.如权利要求1所述的数学电路,其特征在于,所述调整电路包括其中存储有多个偏移值的另一查找表存储电路,并且当求值所述第二多项式时,所述乘加电路将所述多个偏移值中的一个加至从所述查找表存储电路取得的值的部分。
4.如权利要求3所述的数学电路,其特征在于,均响应于所述函数的输入操作数的实例,所述查找表存储电路从每个组输出值并且所述另一查找表电路输出偏移值,
其中所述输入操作数的第一组位被用作所述查找表存储电路的输入,而所述输入操作数的第二组位被用作所述另一查找表存储电路的输入。
5.如权利要求4所述的数学电路,其特征在于,所述第一组位和第二组位是相同的。
6.如权利要求1所述的数学电路,其特征在于,所述第二多项式具有比所述第一多项式低的阶次。
7.如权利要求6所述的数学电路,其特征在于,所述第二多项式是线性的并且所述第一多项式是二次的。
8.一种处理器设备,包括:
指令解码器,用于接收对超越函数进行求值的第一指令;以及
执行单元,所述执行单元具有包含表示第一多项式的系数的多个值的第一查找表电路,所述第一多项式将所述超越函数估算至第一精度,所述执行单元具有调整电路,所述调整电路响应于所述第一指令的解码调整值的部分,所述值表示所述第一多项式的系数并由所述第一查找表电路输出,并且所述执行单元使用所述值的经调整部分来求值第二多项式,所述第二多项式将所述超越函数估算至第二精度,其中所述第二精度低于所述第一精度,
其中所述执行单元使用所述第一查找表电路求值所述第一多项式和所述第二多项式两者。
9.如权利要求8所述的处理器设备,其特征在于,所述指令解码器接收第二指令,所述第二指令以比所述第一指令高的精度求值所述超越函数,并且所述第一查找表电路响应于对所述第二指令的解码,输出表示所述第一多项式的系数的多个值,并且所述执行单元使用由所述第一查找表电路输出的多个值来求值所述第一多项式。
10.如权利要求9所述的处理器设备,其特征在于,所述执行单元包括:第一乘加逻辑单元,用于使用来自以下的输入:(a)表示所述第一多项式的系数的多个值以及(b)所述第二指令的输入操作数的实例,求值所述第一多项式;以及
第二乘加逻辑单元,用于使用来自以下的输入:(a)表示所述第一多项式的系数的值的经调整部分以及(b)所述第一指令的输入操作数的实例,求值所述第二多项式。
11.如权利要求8所述的处理器设备,其特征在于,所述调整电路包括其中存储有多个偏移值的第二查找表电路,并且所述执行单元包括乘加逻辑单元,所述乘加逻辑单元用于通过将所述多个偏移值中的一个加至从所述第一查找表电路取得的值的部分,求值所述第二多项式。
12.如权利要求11所述的处理器设备,其特征在于,所述第一指令的输入操作数的第一组位被用作所述第一查找表电路的输入,而所述输入操作数的第二组位被用作所述第二查找表电路的输入。
13.如权利要求12所述的处理器设备,其特征在于,所述第一组位和第二组位是相同的。
14.一种在处理器设备中计算超越函数的估算的机器实现方法,包括:
提取指令,所述指令用于估算超越函数;
对所述指令进行解码并作为响应访问查找表以获得值,其中由所述查找表输出的所述值表示第一多项式的系数,所述第一多项式将所述超越函数估算至第一精度;
调整由所述查找表输出的所述值的部分;以及
使用经调整的值求值第二多项式,所述第二多项式将所述超越函数估算至第二精度,其中所述第二精度低于所述第一精度,
其中所述处理器设备使用所述查找表求值所述第一多项式和所述第二多项式两者。
15.如权利要求14所述的方法,其特征在于,调整由所述查找表输出的值的部分包括:
响应于所述低精度指令的解码,访问另一查找表以获得偏移值,并且所述较低阶多项式是使用所述偏移值求值的。
16.如权利要求15所述的方法,其特征在于,访问另一查找表包括使用指令的输入操作数的一组位咨询所述另一查找表,所述一组位与用于访问查找表以获得所述值所使用的相同。
17.一种计算机系统,包括:
包含软件的存储器;以及
耦合至所述存储器的处理器设备,所述处理器设备具有包括指令的指令集架构,所述指令用于求值超越函数,所述处理器设备具有多个核,其中所述处理器设备的每个核具有用于计算所述超越函数的估算的数学电路,所述数学电路包括:(a)其中存储有多组值的查找表存储电路,每组值表示第一多项式的相应系数,所述第一多项式将所述超越函数估算至第一精度,以及(b)耦合至所述查找表存储电路的计算电路,用于使用来自所述多组值中的一组的值来求值第二多项式,所述第二多项式将所述超越函数估算至第二精度,其中所述第二精度低于所述第一精度,所述计算电路包括:
调整电路,将从所述查找表存储电路取得的值的部分调整为所述第二多项式的系数的实例;以及
乘加电路,使用所述第二多项式的系数实例求值所述第二多项式。
18.如权利要求17所述的计算机系统,其特征在于,对于所述指令,所述数学电路产生所述超越函数的求值结果,所述结果在每位基础上基本等于由执行相同指令的旧有处理器设备产生的结果。
19.如权利要求17所述的计算机系统,其特征在于,所述调整电路包括其中存储有多个偏移值的另一查找表存储电路,并且当求值所述第二多项式时,所述乘加电路将所述多个偏移值中的一个加至从所述查找表取得的值的部分。
CN201180075241.7A 2011-12-21 2011-12-21 用于估算超越函数的数学电路 Active CN103959192B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066628 WO2013095463A1 (en) 2011-12-21 2011-12-21 Math circuit for estimating a transcendental function

Publications (2)

Publication Number Publication Date
CN103959192A CN103959192A (zh) 2014-07-30
CN103959192B true CN103959192B (zh) 2017-11-21

Family

ID=48669109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075241.7A Active CN103959192B (zh) 2011-12-21 2011-12-21 用于估算超越函数的数学电路

Country Status (3)

Country Link
US (1) US9465580B2 (zh)
CN (1) CN103959192B (zh)
WO (1) WO2013095463A1 (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8676871B2 (en) * 2010-09-24 2014-03-18 Intel Corporation Functional unit capable of executing approximations of functions
US20150019604A1 (en) * 2013-07-10 2015-01-15 Texas Instruments Deutschland Gmbh Function accelerator
US9606796B2 (en) * 2013-10-30 2017-03-28 Texas Instruments Incorporated Computer and methods for solving math functions
US9207880B2 (en) * 2013-12-27 2015-12-08 Intel Corporation Processor with architecturally-visible programmable on-die storage to store data that is accessible by instruction
US10235232B2 (en) * 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9588845B2 (en) * 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US9772975B2 (en) * 2015-07-02 2017-09-26 Oracle International Corporation Hybrid table-lookup algorithm for functions
KR102359265B1 (ko) * 2015-09-18 2022-02-07 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법
US20170169132A1 (en) * 2015-12-15 2017-06-15 Analog Devices, Inc. Accelerated lookup table based function evaluation
US11966715B2 (en) 2016-02-13 2024-04-23 HangZhou HaiCun Information Technology Co., Ltd. Three-dimensional processor for parallel computing
US10848158B2 (en) 2016-02-13 2020-11-24 HangZhou HaiCun Information Technology Co., Ltd. Configurable processor
US10141939B2 (en) * 2016-03-05 2018-11-27 Chengdu Haicun Ip Technology Llc Configurable computing array using two-sided integration
US11080229B2 (en) 2016-02-13 2021-08-03 HangZhou HaiCun Information Technology Co., Ltd. Processor for calculating mathematical functions in parallel
US10763861B2 (en) 2016-02-13 2020-09-01 HangZhou HaiCun Information Technology Co., Ltd. Processor comprising three-dimensional memory (3D-M) array
US20170322770A1 (en) * 2016-05-04 2017-11-09 Chengdu Haicun Ip Technology Llc Processor with Backside Look-Up Table
US11527523B2 (en) 2018-12-10 2022-12-13 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US10303439B2 (en) * 2016-04-26 2019-05-28 International Business Machines Corporation Logarithm and power (exponentiation) computations using modern computer architectures
CN107346230A (zh) * 2016-05-04 2017-11-14 杭州海存信息技术有限公司 基于封装内查找表的处理器
CN107346148A (zh) * 2016-05-04 2017-11-14 杭州海存信息技术有限公司 基于背面查找表的仿真处理器
US10445067B2 (en) 2016-05-06 2019-10-15 HangZhou HaiCun Information Technology Co., Ltd. Configurable processor with in-package look-up table
US10372359B2 (en) 2016-05-10 2019-08-06 Chengdu Haicun Ip Technology Llc Processor for realizing at least two categories of functions
US20180081634A1 (en) * 2016-09-22 2018-03-22 Qualcomm Incorporated Piecewise polynomial evaluation instruction
US20180217814A1 (en) * 2017-02-02 2018-08-02 Vivante Corporation Systems And Methods For Computing Mathematical Functions
US10331162B2 (en) 2017-05-15 2019-06-25 International Business Machines Corporation Power series truncation using constant tables for function interpolation in transcendental functions
US10915494B1 (en) * 2017-11-12 2021-02-09 Habana Labs Ltd. Approximation of mathematical functions in a vector processor
US10725742B2 (en) 2018-06-05 2020-07-28 Texas Instruments Incorporated Transcendental function evaluation
US11734550B2 (en) 2018-12-10 2023-08-22 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US11296068B2 (en) 2018-12-10 2022-04-05 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
CN109271134B (zh) * 2018-12-13 2020-08-25 上海燧原科技有限公司 超越函数运算方法及装置、存储介质及电子设备
US10970045B2 (en) * 2018-12-17 2021-04-06 Samsung Electronics Co., Ltd. Apparatus and method for high-precision compute of log1p( )
US11327754B2 (en) * 2019-03-27 2022-05-10 Intel Corporation Method and apparatus for approximation using polynomials
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11327717B2 (en) 2019-11-19 2022-05-10 SambaNova Systems, Inc. Look-up table with input offsetting
US11328038B2 (en) 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
CN117631751B (zh) * 2024-01-25 2024-05-03 北京壁仞科技开发有限公司 人工智能芯片、特殊函数计算方法和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1918542A (zh) * 2004-03-11 2007-02-21 英特尔公司 使用单指令多数据(simd)运算来计算超越函数
US7472149B2 (en) * 2004-01-21 2008-12-30 Kabushiki Kaisha Toshiba Arithmetic unit for approximating function
CN201449601U (zh) * 2009-08-14 2010-05-05 西北工业大学 超越函数装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03204720A (ja) * 1990-01-08 1991-09-06 Nec Corp 初等関数演算装置
US5224064A (en) * 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
US20040015882A1 (en) 2001-06-05 2004-01-22 Ping Tak Peter Tang Branch-free software methodology for transcendental functions
JP2008085923A (ja) * 2006-09-28 2008-04-10 Yamaha Corp デジタルフィルタ
US8984043B2 (en) 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472149B2 (en) * 2004-01-21 2008-12-30 Kabushiki Kaisha Toshiba Arithmetic unit for approximating function
CN1918542A (zh) * 2004-03-11 2007-02-21 英特尔公司 使用单指令多数据(simd)运算来计算超越函数
CN201449601U (zh) * 2009-08-14 2010-05-05 西北工业大学 超越函数装置

Also Published As

Publication number Publication date
CN103959192A (zh) 2014-07-30
WO2013095463A1 (en) 2013-06-27
US20140222883A1 (en) 2014-08-07
US9465580B2 (en) 2016-10-11

Similar Documents

Publication Publication Date Title
CN103959192B (zh) 用于估算超越函数的数学电路
Jensen et al. A fast fractional difference algorithm
US11853718B2 (en) Small multiplier after initial approximation for operations with increasing precision
Park et al. A multi-granularity power modeling methodology for embedded processors
US20120185809A1 (en) Architecture optimizer
Qiqieh et al. Significance-driven logic compression for energy-efficient multiplier design
CN104598659B (zh) 对数字电路进行仿真的方法和设备
Sekanina et al. Automated search-based functional approximation for digital circuits
CN110168493A (zh) 在128位宽的操作数上的融合乘加浮点运算
Kudithi An efficient hardware implementation of the elliptic curve cryptographic processor over prime field
US9983850B2 (en) Shared hardware integer/floating point divider and square root logic unit and associated methods
CN108733347B (zh) 一种数据处理方法及装置
CN109863476A (zh) 动态变量精度计算
Pan et al. Efficient digit‐serial modular multiplication algorithm on FPGA
Barik et al. Efficient ASIC and FPGA implementation of cube architecture
CN116974868A (zh) 芯片功耗估计装置、方法、电子设备及存储介质
US7493470B1 (en) Processor apparatus and methods optimized for control applications
Haritha et al. Design of an enhanced array based approximate arithmetic computing model for multipliers and squarers
Cheng et al. Efficient estimation of an additive quantile regression model
Neves et al. Reconfigurable stream-based tensor unit with variable-precision posit arithmetic
Hosangadi et al. Energy efficient hardware synthesis of polynomial expressions
CN103942162B (zh) 在存储器中进行多访问的方法、装置和存储系统
CN104408023A (zh) 一种指标计算的方法及指标计算器
Wu et al. An exact method for estimating maximum errors of multi-mode floating-point iterative booth multiplier
JP4219706B2 (ja) システムlsi設計支援装置及び設計支援方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant