具有有效的函数估计指令的处理器的制作方法

文档序号:6554623阅读:162来源:国知局
专利名称:具有有效的函数估计指令的处理器的制作方法
技术领域
本发明一般涉及诸如微处理器、微控制器或数字信号处理器的处理器体系结构和指令集。更具体地说,本发明针对具有用于估计某些浮点函数值的有效指令的处理器。
背景技术
诸如PowerPC体系结构的许多处理器体系结构都支持作为融合的乘加浮点单元(FPU)之扩展的倒数和平方根倒数的估计指令。对于此类估计指令,其主要设计目标是双重的该估计应该有相对高的精度,使得利用诸如牛顿—拉弗森(Newton-Raphson)的数值逼近算法的一次迭代步骤,就能获得最大的单精度准确度,或至少接近最大精度。应该可以在不产生硬件开销并且不产生对处理器的周期和管道结构的影响的情况下实现估计指令。特别地,该设计不应增加用于任何非估计指令的FPU的管道深度。
可以采用许多不同方式来实现上述估计指令。一种方式是简单地查找一个表中的估计值。然而,此种技术的有效性是有限的,这是因为可获得的精度水平受表的大小的限制。为了获得所希望的精度水平,将需要一个非常大的表(在存储该表所需的硬件方面是非常昂贵的)。
因此,此类估计指令的常规实现包括两个步骤首先,表查找提供底数值和斜率。接着,使用该底数值和斜率值来线性内插具有所需精度的估计值。由于表查找后面有内插步骤,所以表查找的结果可以有较低精度,因此,所需的表远远小于不带内插操作的直接表查找所需的表。
在这个两步的处理中,既可以通过使用处理器的通用FPU硬件,也可以通过添加用于计算内插的专用硬件,来执行内插操作。当使用通用FPU数据通路时,估计指令的等待时间比基本的融合的乘加指令的等待时间要长。这会增加处理器的控制逻辑的复杂度,因为它意味着FPU的等待时间会依据指令类型而变化。通过假定单一FPU等待时间并且在执行估计指令时停止附加周期的执行,某些现有实现可以以性能为代价避免上述复杂性。此外,较长的等待时间可能在指令发布和依赖性检查的硬件方面引起显著的硬件开销。
如上所述,内插步骤并不需要整个的通用FPU。代替地,可以利用缩减规模的乘法器、加法器和某些附加逻辑来执行内插。利用该专用硬件,内插步骤比利用通用FPU进行的内插步骤更快,亦即,估计指令的等待时间接近正常乘加指令的等待时间。此种解决方案的明显缺点是需要附加硬件来加快内插步骤的速度。
因此,需要能够在不显著牺牲性能和不显著增加硬件复杂性的情况下实现浮点函数估计指令的处理器设计。本发明提供上述问题和其它问题的解决方案,并且提供超越先前解决方案的其它优点。

发明内容
本发明的优选实施方式提供用于支持高精度浮点函数估计的方法、计算机程序产品和处理器设计,其中将浮点函数估计分成两条指令低精度表查找指令和线性内插指令。通过使用此方案可以实现不同函数的估计为每个不同的函数提供独立的表查找指令,而只需单个内插指令,这是因为单个内插指令可以执行任意需要估计的函数的内插步骤。
在浮点结果的小数部分中一起存储表查找指令提供的底数和斜率,从而表查找的结果自身可以充当低精度估计结果。因此,本发明允许程序员根据当前的应用灵活选择高精度或高速度。
利用很少的硬件开销就可以实现估计指令。用于表查找的表是小的,因为它们仅仅提供低精度底数和斜率。除了需要对位进行某些简单的打包和拆包处理之外,可以在实际上没有附加硬件开销的情况下在融合的乘加FPU内核中执行内插指令。因此,本发明的优选实施方式引起的开销远远少于专用硬件引起的开销,同时仍保持统一的FPU等待时间,这允许了简单得多的控制逻辑。此外,通过将估计操作分成两条指令使得可以利用软件管道来增加总的指令吞吐量。
上述说明是一个概括,因此必然包括简化、归纳、以及细节的省略;所以本领域的熟练技术人员可以理解,上述概括只是说明性的,并不意在进行任何限制。在下文阐述的非限制性的详细说明中,正如仅由权利要求书所限定的,本发明的其它方面、其发明特征及其优点将变得明显。


通过参照附图,本领域的熟练技术人员将更加理解本发明,并且其众多目的、特征及其优点将更加明显,其中图1是说明IEEE-754标准浮点数表示的示图;图2是根据本发明之优选实施方式的估计浮点函数的处理的流程图表示;图3是说明根据本发明之优选实施方式的表查找操作的操作的示图;图4是说明根据本发明之优选实施方式的内插操作的操作的示图;以及图5是其中可以实现本发明之优选实施方式的信息处理系统的框图。
具体实施例方式
下面将提供本发明的例子的详细描述,且不应把这些例子看成是对发明本身的限制。相反,任何变形均落入说明后面的权利要求书定义的发明范围内。
本发明的优选实施方式针对于处理器体系结构和包含用于估计特定浮点函数的值的有效指令的指令集。具体而言,本发明的优选实施方式针对于用于倒数函数(1/x)和平方根倒数函数(1/sqrt(x))的函数估计指令。图1是说明浮点数100的简图。浮点数100是用IEEE-754浮点格式表示的,此格式为电气和电子工程师协会(IEEE)公布的标准。
具体而言,浮点数100为单精度浮点数,其依据上述标准,包括32位。这32位是按以下方式排列的最高有效位(MSB)是符号位102,它表示浮点数100的符号,使得如果符号位102等于1,则浮点数100是负数,如果符号位102等于0,则浮点数100是正数。紧接着符号位102的位字段104表示8位指数值,而占据浮点数100的剩余23位的位字段106表示24位尾数的除最高有效位以外的位。通常,IEEE-754格式的浮点数是用标准形式表示的,其中隐含地其最高有效位是1,并且是二进制小数点左侧的唯一一位,尽管这不是严格必需的。本发明的优选实施方式利用规格化数字,但是也可使用非规格化数字而并不背离本发明的范围和实质。因此,如果位字段106包含位串01010101...,则位字段106表示的24位尾数是1.01010101...。通过加上127使指数字段104偏移(以使指数字段104成为无符号数),从而浮点数100的绝对值等于尾数106乘以2的一个幂值,该幂值等于指数字段104与127的差。这样,浮点数100能够表示具有负指数的数(即,小数),以及具有正指数的数(即,大于1的实数)。
本领域的一般技术人员可以理解,通过使用和这里所示的IEEE-754标准不同的数字格式,也可以执行本发明的实施方式,尽管本发明的优选实施方式利用了IEEE-754格式的32位单精度浮点数。例如,IEEE-754标准也支持64位(双精度)和扩展浮点表示(如80位格式),并且存在其它的非IEEE-754浮点表示。此外,本领域的一般技术人员可以理解,本发明的教导并不严格限于浮点数范围,而是可以全部或部分地应用于其它数字类型和格式,包括(但不限于)整数和其它定点数。
特定地包括超越函数在内的许多数学函数都是通过使用诸如牛顿—拉弗森方法之类的数字逼近技术用浮点计算机数学的方式计算的。诸如上面提及的牛顿—拉弗森方法的许多这些逼近技术都是迭代的,这意味着必须完成逼近方法的若干次连续迭代才能获得正在讨论的应用的足够精度的逼近。由于迭代地计算这些函数非常耗时的特性,支持浮点运算的某些处理器体系结构包括用于获取正在讨论的函数的快速估计的指令,通过逼近技术的少数几次迭代,如牛顿—拉弗森的一次迭代,可以使快速估计更精确。通常,这是通过将表查找操作与线性、多项式或其它内插步骤进行组合来实现的。然而,由于该运算的复杂特性,此类指令可能需要大的等待时间延迟,从而会影响其性能并且会增加下层硬件的复杂性。
本发明的优选实施方式试图通过将该估计处理分成两条指令而非单一指令来降低其复杂性。图2是表示根据本发明之优选实施方式的计算函数估计的处理的流程图。
正如方块200表示的那样,该估计处理以单一指令开始,其中通过使用该指令的输入操作数借助表查找来获取用于随后的线性内插的底数值和斜率参数。在本发明的优选实施方式中,该指令返回32位字形式的参数,32位字构成内插参数的组合位表示。正如图3所示和在附随文字中描述的那样,上述组合的格式是按以下方式排列的,当将其解释为一个IEEE-754浮点数时,内插参数的32位表示也是将要估计的函数的低精度估计。因此,作为图2描述的处理的可选的估计处理仅仅包括方块200,其特征是速度较快,但精度较低。
接着,正如方块202表示的那样,该处理器在先前获得的底数值和斜率上执行第二条指令,其中该处理器使用该底数值和斜率来执行线性内插,以获取在原始操作数的值上评估的所需函数的估计。请注意,虽然本发明的优选实施方式利用线性内插来完成估计处理,但是本领域的一般技术人员应该理解,可以使用包括其它多项式内插方案在内的其它形式的逼近来代替线性内插,而并不背离本发明的范围和实质。
上述两个指令方案的优点在于,处理器的数据通路上只需级联很少硬件就能执行估计。事实上,可以在支持指令级并行处理的处理器中的独立功能单元中执行查找操作和内插操作。
图3和图4是提供图2描述的两条指令的更详细的说明的示图。图3是表示执行图2中的方块200表示的初始表查找操作的处理的示图。在本例中,我们把该指令称作“fes1”(表示“第一函数估计指令”)。在图3中执行的指令是“fes1 X,r1”,其含义是查找操作数X的底数和斜率值并将该底数和斜率值存储在寄存器r1中。浮点数300表示操作数X,以IEEE-754标准格式表示。在计算倒数估计的优选实施方式中,使用浮点数300的尾数的5个最高有效位作为索引来查找表304,表304包含任意尾数的5个最高有效位的32个不同组合的每个组合中底数和斜率值。可以使用尾数和指数位的其它组合作为索引而并不背离本发明的范围和实质。例如,用于平方根倒数估计函数的索引将需要包括至少一个指数位(最低有效指数位),这是因为平方根倒数函数的尾数值取决于该函数的自变量的指数是偶数还是奇数。从查找表304中检索的内容由处理器放入到目的寄存器(此处为“r1”)中,作为底数值和斜率值的位组合的表示306,用于执行内插以获得在操作数X上评估的特定函数的估计。
和浮点数300一样,底数/斜率表示306是一个32位数,从而有助于在32位处理器上执行指令fes1。底数/斜率表示306包括符号位308、8位指数值310、13位底数尾数值312以及10位斜率值314。不需要用于斜率的指数值,这是因为所需精度是由底数指数值310达到的(至少对于倒数和平方根倒数函数)。
该处理器通过表查找检索尾数值312和斜率值314,同时该处理器根据管理将要估计的特定函数的规则来对符号位308和指数值310进行计算。在倒数的情况中,该处理器从浮点操作数300的符号位309中复制符号位308。在平方根倒数的情况中,由于平方根倒数只是为正数X定义的,所以符号位308仅为正。通过在浮点操作数300的指数值311上执行简单运算,例如加上或减去偏移和移位,来计算指数值310。该处理器从表中检索该偏移值以及尾数值312和斜率值314。
在这一点上,应注意底数/斜率表示306中的位字段的排列非常接近图1描述的IEEE-754浮点数格式。由于底数尾数值312本身是正在估计的函数的低精度估计,并且由于底数尾数值312所处的位置是IEEE-754表示(如图1)中的尾数字段106的最高有效位,所以底数/斜率表示306本身完全是正在讨论的函数的低精度估计。因此,当程序员希望牺牲精度获取计算速度时,可以按原样使用底数/斜率表示306作为正在讨论的函数的低精度估计。否则,可以将底数/斜率表示306显示为如图4所描述的随后的内插指令的输入。
正如图4所示,内插指令(此处为“fes2”)将原始操作数(浮点数300)和底数/斜率表示306作为输入。在本例中,可以将该指令记作“fes2 X,r1,r2”,其含义是通过使用X作为操作数并且通过使用寄存器r1的内容作为底数/斜率表示,来计算内插值,然后将其结果存储到寄存器r2中。从底数尾数值312中(在规格化数字的情况中,认为二进制小数点的左侧是隐含的1),减去两个数的乘积。该处理器获得该乘积中的第一个因数,其方法是,把斜率位314放到二进制小数点右侧的第四个位置(例如,如果斜率位串是1101110101,则第一个因数是0.0001101110101)。该乘积中的第二个因数是由X(浮点数300)的尾数的18位最低有效位400组成的。接着,把减法运算的结果乘以该底数/斜率表示的符号和指数。然后由处理器对得到的乘积进行规格化,并放入到内插结果406的23位尾数412、符号位408以及8位指数部分410中。
图5说明信息处理系统501,该系统是能够执行与本发明之优选实施方式有关的在此描述的主计算机的计算操作的计算机系统的简化示例。计算机系统501包括与主机总线502相连的处理器500。第二层(L2)高速缓冲存储器504也和主机总线502相连。主机到PCI桥506和主存储器508相连,包括高速缓冲存储器和主存储器控制功能,并且提供总线控制以处理PCI总线510、处理器500、L2高速缓冲存储器504、主存储器508和主机总线502之间的传送。主存储器508和主机到PCI桥506以及主机总线502相连。诸如局域网(LAN)卡530的完全由主处理器500使用的设备和PCI总线510相连。服务处理器接口和ISA访问通路512提供PCI总线510和PCI总线514之间的接口。由此,将PCI总线514和PCI总线510隔离。诸如闪存存储器518的设备和PCI总线514相连。在一种实现方式中,闪存存储器518包括BIOS代码,后者包括对于多种低层系统功能和系统引导功能必要的处理器可执行代码。
PCI总线514提供主处理器500和包括例如闪存存储器518在内的服务处理器516共享的多种设备的接口。PCI到ISA桥535提供总线控制以处理PCI总线514和ISA总线540、通用串行总线(USB)功能性545、电源管理功能性555之间的传送,并且可以包括未示出的其它功能元件,如实时时钟(RTC),DMA控制,中断支持和系统管理总线支持。非易失RAM 520和ISA总线540相连。服务处理器516包括JTAG和I2C总线522,用于在初始化步骤期间与处理器500通信。同时,JTAG/I2C总线522和L2高速缓冲存储器504、主机到PCI桥506以及主存储器508相连,以便提供在处理器、服务处理器、L2高速缓冲存储器、主机到PCI桥和主存储器之间的通信通道。服务处理器516也可以访问系统电源资源,以便关闭信息处理设备501。
外围设备和输入/输出(I/O)设备可以和各种接口(例如,和ISA总线540相连的并行接口562、串行接口564、键盘接口568和鼠标接口570)相连。可选择地,可以把许多I/O设备容纳于和ISA总线540相连的超级I/O控制器(未示出)内。
为了把计算机系统501连接到另一个计算机系统上以通过网络复制文件,把局域网卡530连接到PCI总线510上。类似地,为了把计算机系统501连接到ISP上以使用电话线连接来连接到因特网,把调制解调器575连接到串行端口564和PCI到ISA桥535上。
尽管图5中描述的计算机系统能够支持本文描述的指令集体系结构,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计能够执行本文描述的处理。
该发明的特定方面和可能实施方式属于软件领域。特别地,为了利用本发明的优选实施方式的特征,必须执行包含根据本发明的教导的估计指令的软件。本发明的一种实施方式也可以包括或采取微代码的形式,微代码是处理器内部的软件,微码规定执行指令所需的某些详细控制步骤。
作为本文使用的术语,软件是例如驻留在计算机(处理器的内部或其外部)的存储器(随机存取存储器或只读存储器)中的代码模块中的指令集(程序代码)或其它功能性描述材料。在计算机需要以前,可以把指令集存储在另一个计算机存储器中,例如,存储在硬盘或诸如光盘(以便最终在CD-ROM中使用)或软盘(以便最终在软盘驱动器中使用)的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。因此,本发明可实现为计算机中使用的计算机程序产品。另外,尽管可以很方便地在由软件选择激活或重新配置的通用计算机中常规地实现本文描述的各种方法,但是本领域的一般技术人员还将理解,可以用硬件、固件或构造用来执行所需方法步骤的专用设备执行此类方法。功能性描述材料是赋予机器功能性的信息。功能性描述材料包括但不限于,计算机程序、指令、规则、事实、可计算的函数的定义、对象和数据结构。
尽管已经展示并描述了本发明的特定实施方式,但是对于本领域的熟练技术人员是明显的根据本文的教导,可以作出各种变更和修改而并不背离本发明及其更广泛的方面。因此,所附权利要求书的范围将包含属于本发明之实质和范围内的所有此类变更和修改。此外,应该懂得,该发明完全是由所附权利要求书限定的。本领域的熟练技术人员懂得,如果所引入的权利要求要素的具体数目是有意的,则将在该权利要求中明确陈述此类意图,而在缺少此类陈述的情况下,此限制将不存在。作为有助于理解的非限制性的例子,后面所附权利要求书包含用来引入权利要求要素的引入短语“至少一个”以及“一个或多个”的用法。然而,不应把此类短语的使用解释为暗示由不定冠词“一个”引入的权利要求要素把包含此类所引入的权利要求要素的任何特定权利要求限制为仅仅包含一个此类要素的发明,即使同一权利要求包括引入短语“一个或多个”或“至少一个”以及诸如“一个”的不定冠词;对权利要求中定冠词的使用也应如此理解。
权利要求
1.一种计算机实现的方法,包括在至少一个操作数上执行第一指令以获得第一指令结果,其中该第一指令对应于要估计的函数,并且其中该第一指令结果包括内插函数的参数集。
2.如权利要求1的方法,其中该第一指令是原子指令。
3.如权利要求1的方法,其中该第一指令是处理器的本机机器语言中的单个指令。
4.如权利要求1的方法,进一步包括在至少该第一指令结果上执行第二指令以获得第二指令结果,其中执行该第二指令包括就像在该至少一个操作数上进行的评估那样,在所述参数集上评估该内插函数以获得作为该第二指令结果的该要估计的函数的逼近值。
5.如权利要求4的方法,其中该第二指令是在该第一指令结果和该至少一个操作数上执行的。
6.如权利要求4的方法,其中该函数是倒数函数。
7.如权利要求4的方法,其中该函数是平方根倒数函数。
8.如权利要求4的方法,其中该第二指令是作为融合的加乘运算执行的。
9.如权利要求1的方法,其中该参数集包括底数值和斜率值。
10.如权利要求1的方法,其中该第一指令结果形成单一数值字。
11.如权利要求10的方法,其中当把该单一数值字解释为单一数值时,该单一数值字表示该要估计的函数的估计。
12.如权利要求1的方法,进一步包括在另外的至少一个操作数上执行第三指令以获得第三指令结果;在该第三指令结果上执行该第二指令以获得要估计的第二函数的第二估计。
13.如权利要求1的方法,其中该至少一个操作数包括浮点操作数。
14.一种计算机可读介质中的计算机程序产品,该计算机程序产品包括功能性描述材料,其中当由计算机执行时,使得该计算机执行权利要求1-13之任一权利要求所述的操作。
15.一个处理器,包括用于在至少一个操作数上执行第一指令以获得第一指令结果的装置,其中该第一指令相当于要估计的函数,并且其中该第一指令结果包括内插函数的参数集。
16.如权利要求15的处理器,进一步包括用于在至少该第一指令结果上执行第二指令以获得第二指令结果的装置,其中执行该第二指令包括就像在该至少一个操作数上进行的评估那样,在所述参数集上评估该内插函数以获得作为该第二指令结果的该要估计的函数的逼近值。
17.如权利要求16的处理器,其中该函数是倒数函数。
18.如权利要求17的处理器,其中该函数是平方根倒数函数。
全文摘要
本发明的优选实施方式提供用于支持高精度浮点函数估计的方法、计算机程序产品和处理器设计,其中将浮点函数估计分成两条指令低精度表查找指令和线性内插指令。通过使用此方案可以实现不同函数的估计为每个不同的函数提供独立的表查找指令,而只需单个内插指令,这是因为单个内插指令可以执行任意一个要估计的函数的内插步骤。因此,本发明的优选实施方式引起的系统开销远远少于专用硬件引起的系统开销,同时还能保持统一的FPU等待时间,从而可以提供简单得多的控制逻辑。
文档编号G06F9/30GK1862483SQ200610008370
公开日2006年11月15日 申请日期2006年2月21日 优先权日2005年5月12日
发明者桑·胡·德宏, 戈登·克莱德·福萨姆, 哈姆·彼得·霍夫施蒂, 布拉德·威廉·迈克尔, 西尔维亚·梅利塔, 瓦·乔恩·奥 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1