CN103988171B - 在数据处理系统中用于执行浮点算术运算的方法和装置 - Google Patents
在数据处理系统中用于执行浮点算术运算的方法和装置 Download PDFInfo
- Publication number
- CN103988171B CN103988171B CN201280061198.3A CN201280061198A CN103988171B CN 103988171 B CN103988171 B CN 103988171B CN 201280061198 A CN201280061198 A CN 201280061198A CN 103988171 B CN103988171 B CN 103988171B
- Authority
- CN
- China
- Prior art keywords
- floating
- mantissa
- point operation
- value
- arithmetic
- 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
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供用于在数据处理系统中执行浮点算术运算的机制。接收浮点算术运算的多个浮点操作数,并且对多个浮点操作数中的至少一个浮点操作数的尾数中的位进行移位。尾数中被移位到至少一个浮点操作数的尾数的位范围以外的一个或者多个位被存储,并且基于所存储的、该尾数中被移位到至少一个浮点操作数的尾数的位范围以外的一个或者多个位生成矢量值。基于矢量值和多个浮点操作数生成用于浮点算术运算的结果值。
Description
技术领域
本申请总体涉及一种改进的数据处理装置和方法,并且更具体地涉及用于使用大和小浮点值二者来执行算术运算的机制。
背景技术
术语“浮点”是指一种用可以支持宽的值范围的方式表示实数的方法。利用浮点格式,数一般由固定数目的有效数位近似地表示并且使用基数值和对应指数来缩放。用于缩放的基数通常为2、10或者16、但也可以是适合于特定实现方式的任何基数值。可以确切地表示的典型数为以下形式:有效数位x基数指数、例如1.34x210。在计算系统内,这样的浮点格式值包括表示浮点值的有效数位的有效位部分(或者尾数部分)和表示浮点值的指数部分的指数位部分而假设基数值在计算机系统架构内一致、例如基数为2。因此,浮点格式提供用于表示宽的值范围的能力,该值范围可以范围从相对很大值到相对很小值。
发明内容
在一个示例实施例中,提供一种在数据处理系统中用于执行浮点算术运算的方法。该方法包括在数据处理系统的硬件逻辑中接收浮点算术运算的多个浮点操作数。该方法还包括由硬件逻辑对多个浮点操作数中的至少一个浮点操作数的尾数中的位进行移位。另外,该方法包括由硬件逻辑存储所述尾数中被移位到至少一个浮点操作数的尾数的位范围以外的一个或者多个位。此外,该方法包括由硬件逻辑基于所存储的、所述尾数中被移位到至少一个浮点操作数的尾数的有效的位范围以外的一个或者多个位生成矢量值。另外,该方法包括由硬件逻辑基于矢量值和多个浮点操作数生成用于浮点算术运算的结果值。
在其它示例实施例中,提供一种计算机程序产品包括计算机可用或者可读介质,计算机可用或者可读介质具有计算机可读程序。计算机可读程序在计算设备上被执行时使计算设备执行以上关于方法示例实施例概述的操作中的各种操作和操作组合。
在另一示例实施例中,提供一种系统/装置。该系统/装置可以包括一个或者多个处理器和耦合到该一个或者多个处理器的存储器。存储器可以包括指令,该指令在由一个或者多个处理器执行时使一个或者多个处理器执行以上关于方法示例实施例概述的操作中的各种操作和操作组合。
本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中被描述并且将鉴于以下具体描述而变得为本领域普通技术人员所清楚。
将通过参照在结合附图阅读时的对示例实施例的以下具体描述最佳地理解本发明及其优选实施方式以及更多目的和优点。
附图说明
[图1]图1图示浮点加法运算的示例;
[图2]图2是图示根据一个示例实施例的浮点加法运算的示例框图;
[图3]图3是概述根据一个示例实施例的用于执行浮点加法的示例浮点算术运算的流程图;并且
[图4]图4是概述其中可以实施示例实施例的方面的一个示例数据处理系统的示例框图。
具体实施方式
示例实施例提供用于使用大和小浮点值二者来执行算术运算的机制。在一个示例实施例中,示例实施例的机制应用于加法运算,其中将各自表示为有效位和指数位的两个或者更多浮点值一起相加以生成结果浮点值。示例实施例的机制提供用于用概率权值累加在尾数以下的位的能力,例如时间的1/2累加在尾数的范围以外的一个位置、时间的1/4累加在尾数的范围以外的两个位置等。尽管将关于浮点加法运算描述示例实施例,但是应当理解可以与包括减法、除法、乘法等的任何类型的浮点算术运算利用示例实施例。
计算机系统中的浮点表示基本上为实际值的近似值。例如可以使用与0.3(3x10-1)、0.33、0.333等对应的浮点值来表示值1/3,并且尽管这可以延伸至无穷数量的小数数位以获得值1/3的越来越好的近似,但是浮点值将决不恰好等于1/3、即它是近似值。以相似方式,计算机系统架构施加对可以在计算机系统架构中表示的有效数位和指数数位数目的限制。这除了由于浮点表示使用的基数值而完全不能确切地表示一些数(例如基数为2的浮点格式不能确切地表示值1/3)这样的事实外,也造成浮点表示是实数的近似。
就浮点值算术而言,为了执行算术运算,必须调整操作数,从而它们具有在算术运算的操作数之中的一致指数值。这与科学表示法算术运算相似,在科学表示法算术运算中必须类似地调整值以使指数对于值中的每个字段相同。例如在科学表示法中,在将值1.58e1和3.45e0相加时,需要将值3.45e0调整成值0.345e1、然后与值1.58e1相加。这产生值1.925e1。这对于如下计算系统中的浮点算术同样成立,在这些计算系统中,必须对有效位和指数位进行移位,从而操作数具有相同指数并且可以执行算术运算。
在浮点算术中,由于浮点值可以被用来表示很大值和很小值二者,所以情况经常可以是组合相对小的浮点值与相对大的浮点值。在这样的情况下,小浮点值在它们与大浮点值相加时经常由于取整而丢失。这是由于浮点值是近似的这一性质、以及对尾数位和指数位进行移位以使指数值对于操作数相同以有助于算术运算这一需求。
例如图1图示浮点加法运算的示例。如图1中所示,在包括指数部分112、122和位数部分114、124的浮点格式中提供操作数110和120中的每个操作数。在一些计算系统架构中,浮点值110和120还可以包括符号位(未示出)。另外,在一些计算系统架构中,取代如图1中所示让8个位用于指数和尾数中的每项,可以对于指数和尾数使用其他数量个位,位的数量对于指数和尾数中的每个可以相同或者可以不同,即用于指数的位数可以与用于尾数的位数相同或者不同。
第一浮点值110让指数部分112中的第四指数位设置成1而其余位设置成0,并且尾数部分114的第八位设置成1而其余位设置成0。这对应于值128*2^8=128*256=32,768。第二浮点值110具有值128*2^0=128。为了能够将第一浮点值110的相对大的值与第二浮点值120的相对小的值相加,需要调整第二浮点值120的指数部分122和尾数部分124以使指数部分122与用于浮点值110的指数部分112相同。这涉及到对指数部分122的指数位和尾数部分124的尾数位进行移位以如图1中所示相应地调整该值为浮点值130。也就是说,指数部分122的位被左移位,并且为了抵消指数位的左移位,位数部分124中的尾数位被右移位。
如图1中所示,在一些情况下,指数部分122和位数部分124中的位的移位可能使得尾数的位被移位为超出计算机系统架构支持的尾数位数、即浮点值的取整。换而言之,第二浮点值120的值比第一浮点值110相对小得多,使得它由于浮点值的近似性质和对计算系统架构有助于的位数的限制二者而相对地不显著。也就是说,更小浮点值120的最高有效位为比更大浮点值110的最低有效位更低的量值。因此,这样的更小浮点值实质上消失并且在这样的浮点算术运算中被忽略而结果完全是更大浮点值140。
对于使用浮点算术运算的一些应用/功能,这样的取整误差或者近似是可接受的,即精确度损失不显著。然而在其它应用中,这样的取整误差或者近似可能负面地影响应用或者计算系统功能的恰当操作,例如累加小值、比如事件计数和统计量的功能或者应用可能不能适应这样的取整误差或者近似而未负面地影响功能。
例如在许多计算机系统架构中,存储器优化功能/算法可能需要对用于每个存储器区域的存储器活动进行计数。这样的存储器优化功能/算法的示例包括存储器页面替换算法、分层存储器支持结构等。这样的存储器优化功能/算法需要宽的动态浮点值范围,而存储开销低,因为对于主存储器的每个页面需要计数器。因此,这些计数器利用在硬件、软件或者硬件和软件的组合中实施的浮点算术运算,这些浮点算术运算面临以上讨论的浮点算术运算问题。然而随之准确度损失在以这一方式累加计数器值时不可接受,因为为了执行各种存储器优化操作,具有对存储器页面活动的准确测量非常重要。
示例实施例提供用于补偿在浮点算术运算、例如由于浮点值尾数位的移位而执行的取整期间的小浮点值损失的机制。利用示例实施例的机制,提供用于累加具有概率权值的在组合的尾数的最低有效位以下的位的功能。也就是说,在尾数的最低有效位以下的每个位位置具有每x数目的算术运算使值与尾数相加的关联概率权值,其中x是基于概率权值确定的整数值。例如对于紧接在最低有效位以下的位位置,每2个运算或者对于浮点算术运算的一半在尾数中累加一次在这一位位置中的值。对于在组合的尾数的范围以外两位的位位置,每4个运算或者对于浮点算术运算的四分之一在尾数中累加一次在这一位位置中的值。这对于在组合的尾数的有效位范围以外上至在尾数以外的位位置最大数目的位位置中的每个位位置继续。
为了实施这一功能,提供生成伪随机矢量的逻辑,该伪随机矢量具有架构的支持尾数的最大宽度。从伪随机数生成器生成随机生成的矢量中的每个位,该每个位具有与在如下尾数范围以外的位位置对应的适当概率分布,值在对更小浮点操作数的尾数进行移位以调整指数值以与更大操作数的指数值匹配之后,存在于该尾数范围内。伪随机生成的矢量与操作数的实际尾数相加,该操作数受到它的尾数的移位。然后使用浮点算术运算以常规方式将所产生的位矢量求和到常规结果尾数中。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、SmalltalkTM、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
因此,可以在许多不同类型的数据处理环境中利用示例实施例。为了提供用于描述示例实施例的具体单元和功能的背景。下文提供图1和2作为其中可以实施示例实施例的方面的示例环境。应当理解图1和2仅为示例而未旨在于断定或者暗示关于其中可以实施本发明的方面或者实施例的环境的任何限制。可以进行对描绘的环境的许多修改而未脱离本发明的精神实质和范围。
图2是图示根据一个示例实施例的浮点加法运算的示例框图。图2中所示示例使用与图1中所示相同类型的操作数以便举例说明示例实施例的附加机制,然而示例实施例不限于此。如图2中所示,在对第二操作数220的尾数224中的有效位和指数222中的指数位进行移位时,有效位被移位到尾数220的范围以外,在这一情况下被移位至在尾数224的最低有效位以下的下一更低位。如图2中所示,在尾数224的范围以外的这一移位由分离寄存器230跟踪或者存储,该寄存器指示在有效220的范围以外的哪些位让它们的位值设置成1。在随机矢量生成逻辑240中存在的概率权值242与寄存器230中的位位置中的每个位位置关联。
权值242使结果伪随机生成的矢量值250具有每x数目的浮点算术运算设置的最低有效位。例如可以将权值242中的与寄存器230的位位置1对应的权值W1设置成50%,从而寄存器230中的这一位被设置的时间的50%,随机矢量生成逻辑240将生成具有设置成1的最低有效位的伪随机生成的矢量值250(矢量254),并且时间的50%,随机矢量生成逻辑240将生成具有设置成0的最低有效位的伪随机生成的矢量值250(矢量252)。
其它权值W2、W3、W4等可以与分离寄存器230的不同位关联,该寄存器跟踪在有效224的范围以外、例如比尾数224的最低有效位更低的移位的位的值。例如这些权值W1-W4对应于实数的分数部分,在尾数的最低有效位以下的位对应于该分数部分。因此,寄存器230的第一位对应于值0.5或者50%。寄存器230的第二位对应于值0.25或者25%,寄存器230的第三位对应于值0.125或者12.5%等。因此例如权值W1可以对应于50%,权值W2可以对应于25%,权值W3可以对应于12.5%,权值W4可以对应于6.25%,等等。
随机矢量生成逻辑240接收矢量230作为输入并且伪随机生成伪随机矢量值250用于与操作数寄存器220的有效位224相加。基于与在输入矢量230中设置的位对应的概率权值242执行伪随机矢量值250的伪随机生成。在描绘的示例中,设置输入矢量230的与权值W1为50%对应的第一位。因此,有随机矢量生成逻辑240将生成最低有效位被设置成1的伪随机生成的矢量值250(矢量值254)的50%概率;否则,伪随机生成的矢量值250将让最低有效位设置成0(矢量值252)。在伪随机生成的矢量值250中的每个位可以被设置(即具有有效状态)并且可以在列中相加以生成正确模式位。可以根据在寄存器230中设置成的特定位使用不同加权。
ADD逻辑270将伪随机生成的矢量值250(252或者254)与移位的操作数220的尾数224相加,其结果然后与更大值的操作数210相加以生成在结果寄存器260中存储的结果浮点值。由于在图2中所示示例中,权值为50%,所以时间的50%,ADD逻辑270将第一矢量值252与尾数224相加,并且时间的其它50%,ADD逻辑270将第二矢量值254与尾数224相加。因此,时间的50%,生成第一结果值260,并且时间的其它50%,生成第二结果值260。
利用如以上描述的示例实施例的机制,在矢量寄存器250中的伪随机生成的矢量值与浮点算术运算原本忽略的相对小的浮点值近似。通过使用其中使用相同或者相似操作数来执行多次相同浮点算术运算的示例实施例,伪随机生成的矢量值与相对小的浮点值近似,其中根据与在尾数的范围以外的位位置关联的概率分布生成伪随机生成的矢量值,位值被移位操作移位到该范围中用于对准操作数的指数。因此,在结果矢量260中生成更准确的结果值,该结果矢量考虑与相对大的浮点值相加的相对小的浮点值而不是忽略或者丢弃相对小的浮点值。
可以在硬件实施的处理器的一个或者多个功能单元、存储器控制器等或者在硬件实施的处理器上执行的软件应用中实施分离寄存器230、随机矢量生成逻辑240、伪随机生成的矢量值寄存器250和ADD逻辑270以及用来根据示例实施例实施浮点算术运算的其它硬件和/或软件逻辑。在一个示例实施例中,例如可以在数据处理系统的硬件实施的处理器的存储器控制器的硬件和/或软件逻辑中实施用于实施示例实施例的功能的各种单元。在其它示例实施例中,可以数据处理系统的硬件实施的处理器的浮点单元的硬件和/或软件逻辑中实施用于实施示例实施例的功能的各种单元。当然,可以在多于一个功能单元、功能单元和存储器控制器中、在多于一个存储器控制器中或者相似方式实施示例实施例。
在其中在存储器控制器中实施示例实施例的机制的一个示例实施例中,可以与用于对存储器操作进行计数的计数器逻辑利用示例实施例的机制,这些存储器操作用于数据处理系统中的存储器区域。例如可以有在硬件/软件中为主系统存储器的每个页面实施的浮点计数器。可以与这些浮点计数器中的每个浮点计数器实施示例实施例的机制以通过考虑将指示当前存储器操作数目的小浮点值与表示累加的总计的相对大的浮点值相加来保证存储器操作计数的恰当累加。
应当理解尽管一个示例实施例涉及累加用于以存储器区域为目标的存储器操作的统计量,但是示例实施例不限于此,并且取而代之,示例实施例的机制可以应用于任何浮点算术运算。另外,示例实施例不限于浮点加法、而是也可以应用于浮点减法运算、浮点除法运算、浮点乘法运算、这些类型的运算的任何组合和其它类型的浮点算术运算。
图3是概述根据一个示例实施例的用于执行浮点加法的示例浮点算术运算的流程图。为了易于说明,将假设有在浮点加法运算中涉及到的仅两个操作数。然而应当理解图3中概述的运算可以应用于任何数目的浮点操作数而用于考虑在尾数的范围以外的位的移位的示例实施例的机制应用于任何操作数,在该操作数中出现在操作数的尾数的范围以外的这样的移位。
如图3中所示,运算通过接收用于浮点加法运算的两个浮点操作数(步骤310)来开始。对浮点操作数中的位进行移位以对准浮点操作数的指数值(步骤320)。用对应分离跟踪寄存器跟踪在尾数的范围以外移位的任何位(步骤330)。向随机矢量生成逻辑输入对应跟踪寄存器的位(步骤340),该随机矢量生成逻辑将跟踪寄存器中的设置的位与对应概率权值进行相关(步骤350)。对于具有设置的位的输入跟踪寄存器中的每个输入跟踪寄存器,标识的概率权值与伪随机矢量生成逻辑函数用来生成伪随机矢量值(步骤360)。结果伪随机生成的矢量值与对应移位的操作数的移位的尾数相加(步骤370)。将结果相加的操作数值相加以生成结果值(步骤380),并且运算终止。
图4是可以在其中实施示例实施例的方面的一个示例数据处理系统的示例框图。图4仅为其中可以实施示例实施例的方面的一个类型的数据处理系统的示例而未旨在于声明或者暗示关于可以用来实施示例实施例的数据处理系统、配置或者架构类型的任何限制。可以进行对数据处理系统的许多修改而未脱离示例实施例的精神实质和范围。
如图所示,数据处理系统400包括处理器卡411a-411n。处理器卡411a-411n中的每个处理器卡包括处理器和高速缓存存储器。例如处理器卡411a包含处理器412a和高速缓存存储器413a,并且处理器卡411n包含处理器412n和高速缓存存储器413n。
处理器卡411a-411n连接到主总线415。主总线415支持包含处理器卡411a-411n和存储器卡423的系统平面420。系统平面也包含数据交换机421和存储器控制器/高速缓存422。存储器控制器/高速缓存422支持包括本地存储器416的存储器卡423,该本地存储器具有多个双列直插式存储模块(DIMM)。
数据交换机421连接到位于本机I/O(NIO)平面424内的总线桥接器417和总线桥接器418。如图所示,总线桥接器418经由系统总线419连接到外围部件互连(PCI)桥接器425和426。PCI桥接器425经由PCI总线428连接到多种I/O设备。如图所示,硬盘436可以经由小型计算机系统接口(SCSI)主机适配器430连接到PCI总线428。图形适配器431可以直接或者间接连接到PCI总线428。PCI桥接器426经由PCI总线427通过网络适配器434和适配器卡槽435a-435n提供用于外部数据流的连接。
工业标准架构(ISA)总线429经由ISA桥接器432连接到PCI总线428。ISA桥接器432通过具有串行连接Serial 1和Serial 2的NIO控制器433提供互连能力。NIO控制器433提供软盘驱动连接、键盘连接和鼠标连接以允许数据处理系统400接受经由对应输入设备从用户输入的数据。此外,非易失性RAM(NVRAM)440提供用于保留来自系统破坏或者系统故障、比如功率供应问题的某些类型的数据的非易失性存储器。系统固件441也连接到ISA总线429用于实施初始基本输入/输出系统(BIOS)功能。服务处理器444连接到ISA总线429以提供用于系统诊断或者系统维修的功能。
操作系统(OS)存储于硬盘436上,该硬盘也可以提供用于由数据处理系统执行的附加应用软件的存储。NVRAM 440用来存储用于现场可更换单元(FRU)隔离的系统变量和错误信息。在系统启动期间,自举程序加载操作系统并且启动执行操作系统。为了加载操作系统,自举程序首先从硬盘436确定操作系统内核类型、向存储器中加载OS并且跳转至操作系统内核提供的初始地址。通常向在数据处理系统内的随机存取存储器(RAM)中加载操作系统。一旦加载和初始化,操作系统控制程序执行并且可以提供服务、比如资源分配、调度、输入/输出控制和数据管理。
关于示例实施例的机制,可以在图4中所示单元中的各种单元中实施示例实施例的浮点算术逻辑。例如可以处理器112a-112n、存储器控制器122、系统固件141、服务处理器144或者图4的其它单元中的任何单元中的一个或者多个单元或者图4中的单元的组合中实施浮点算术逻辑。简言之,图4中的可以执行浮点算术运算的任何单元可以利用示例实施例的可以在硬件逻辑、软件逻辑或者硬件和/或软件逻辑的任何组合中实施的机制。
如以上提到的那样,可以在利用多个不同硬件配置和软件、比如自举程序和操作系统的多种数据处理系统中体现示例实施例。数据处理系统400可以例如是单独系统或者是网络、比如局域网(LAN)或者广域网(WAN)的部分。
因此,示例实施例提供用于使用大和小的浮点值来执行浮点算术运算的机制。示例实施例提供用于以通过在期间基于与跟踪寄存器的位位置关联的概率权值考虑小浮点值而未忽略或者丢弃它们这样的方式与它们近似的机制,该跟踪寄存器跟踪在尾数的位范围以外的有效位的移位。作为结果,使用示例实施例的机制来实现浮点算术运算的更准确结果。
如以上指出的那样,示例实施例可以采用全硬件实施例、全软件实施例或者包含硬件与软件单元的实施例这样的形式。在一个示例实施例中,在包括但不限于固件、常驻软件、微代码等的软件或者程序代码中实施示例实施例的机制。
适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或者间接耦合到存储器单元的至少一个处理器。存储器单元可以包括在实际执行程序代码期间运用的本地存储器、大容量存储装置和高速缓存存储器,这些高速缓存存储器提供至少一些程序代码的暂时存储以便减少必须在执行期间从大容量存储装置取回代码的次数。
输入/输出或者I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接或者通过居间I/O控制器耦合到系统。网络适配器也可以耦合到系统以使数据处理系统能够变成通过居间专用或者公共网络耦合到其它数据处理系统或者远程打印机或者存储设备。调制解调器、线缆调制解调器和以太网卡仅为当前可用网络适配器类型的少数类型。
本发明的描述已经出于示例和描述的目的而加以呈现、但是并非旨在于穷举本发明或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚。选择和描述实施例以便最佳地说明本发明的原理、实际应用并且使本领域其他普通技术人员能够针对具有如与设想的特定使用相适合的各种修改的各种实施例来理解本发明。
Claims (20)
1.一种在数据处理系统中用于执行浮点算术运算的方法,包括:
在所述数据处理系统的硬件逻辑中接收所述浮点算术运算的多个浮点操作数;
由所述硬件逻辑对所述多个浮点操作数中的至少一个浮点操作数的尾数中的位进行移位;
由所述硬件逻辑存储所述尾数中被移位到所述至少一个浮点操作数的所述尾数的位范围以外的一个或者多个位;
由所述硬件逻辑基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位,生成矢量值;并且
由所述硬件逻辑基于所述矢量值和所述多个浮点操作数生成用于所述浮点算术运算的结果值,其中
存储所述尾数中被移位到所述至少一个浮点操作数的所述尾数的位范围以外的一个或者多个位包括:在分离寄存器的与所述尾数中被移位到所述尾数的所述位范围以外的所述一个或者多个位对应的位位置中设置位,
所述分离寄存器中的每个位位置具有不同的关联概率权值,以及
基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位生成所述矢量值包括:基于与具有在所述分离寄存器中设置的对应位值的位位置关联的概率权值来生成所述矢量值。
2.根据权利要求1所述的方法,其中所述浮点算术运算是用于将两个浮点数相加的加法运算。
3.根据权利要求1所述的方法,其中所述浮点算术运算是减法运算、除法运算或者乘法运算之一。
4.根据权利要求1所述的方法,其中所述浮点算术运算更新用于对所述数据处理系统的存储器区域的存储器活动进行计数的计数器,并且其中所述计数器被用作用于优化对所述数据处理系统的所述存储器的利用的存储器优化算法的一部分。
5.根据权利要求1所述的方法,其中每个概率权值使值在所述算术运算期间每x数目个算术运算与所述移位的浮点操作数的所述移位的尾数相加,其中x是与所述概率权值对应的整数值。
6.根据权利要求5所述的方法,其中所述分离寄存器中的第一位位置具有概率权值50%,从而所述值每2个算术运算与所述移位的尾数相加一次,所述分离寄存器中的第二位位置具有概率权值25%,从而所述值每4个算术运算与所述移位的尾数相加一次,并且所述分离寄存器中的第三位位置具有概率权值12.5%,从而所述值每8个算术运算与所述移位的尾数相加一次。
7.根据权利要求1所述的方法,其中使用对应伪随机数生成器来生成所述矢量值中的每个位,所述每个位具有对应于与所述分离寄存器中的对应位位置关联的概率权值的概率分布。
8.根据权利要求1所述的方法,其中所述方法实施于所述数据处理系统的处理器、存储器控制器、固件或者服务处理器中的至少一项的硬件逻辑中。
9.一种在数据处理系统中用于执行浮点算术运算的装置,包括:
被配置用于接收浮点算术运算的多个浮点操作数的硬件逻辑;
被配置用于对所述多个浮点操作数中的至少一个浮点操作数的尾数中的位进行移位的硬件逻辑;
被配置用于存储所述尾数中被移位到所述至少一个浮点操作数的所述尾数的位范围以外的一个或者多个位的硬件逻辑;
被配置用于基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位,生成矢量值的硬件逻辑;以及
被配置用于基于所述矢量值和所述多个浮点操作数生成用于所述浮点算术运算的结果值的硬件逻辑,其中
被配置用于存储所述尾数中被移位到所述至少一个浮点操作数的所述尾数的位范围以外的一个或者多个位的硬件逻辑包括:被配置用于在分离寄存器的与所述尾数中被移位到所述尾数的所述位范围以外的所述一个或者多个位对应的位位置中设置位的硬件逻辑,
所述分离寄存器中的每个位位置具有不同的关联概率权值,以及,
被配置用于基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位生成所述矢量值的硬件逻辑包括:被配置用于基于与具有在所述分离寄存器中设置的对应位值的位位置关联的概率权值来生成所述矢量值的硬件逻辑。
10.根据权利要求9所述的装置,其中所述浮点算术运算是用于将两个浮点数相加的加法运算。
11.根据权利要求9所述的装置,其中所述浮点算术运算是减法运算、除法运算或者乘法运算之一。
12.根据权利要求9所述的装置,其中所述浮点算术运算更新用于对所述数据处理系统的存储器区域的存储器活动进行计数的计数器,并且其中所述计数器被用作用于优化对所述数据处理系统的所述存储器的利用的存储器优化算法的一部分。
13.根据权利要求9所述的装置,其中每个概率权值使值在所述算术运算期间每x数目个算术运算与所述移位的浮点操作数的所述移位的尾数相加,其中x是与所述概率权值对应的整数值。
14.根据权利要求13所述的装置,其中所述分离寄存器中的第一位位置具有概率权值50%,从而所述值每2个算术运算与所述移位的尾数相加一次,所述分离寄存器中的第二位位置具有概率权值25%,从而所述值每4个算术运算与所述移位的尾数相加一次,并且所述分离寄存器中的第三位位置具有概率权值12.5%,从而所述值每8个算术运算与所述移位的尾数相加一次。
15.根据权利要求9所述的装置,其中使用对应伪随机数生成器来生成所述矢量值中的每个位,所述每个位具有对应于与所述分离寄存器中的对应位位置关联的概率权值的概率分布。
16.根据权利要求9所述的装置,其中所述装置是所述数据处理系统的处理器、存储器控制器、固件或者服务处理器中的至少一项的一部分。
17.一种在数据处理系统中用于执行浮点算术运算的装置,包括:
至少一个处理器,所述至少一个处理器被配置为:
接收浮点算术运算的多个浮点操作数;
对所述多个浮点操作数中的至少一个浮点操作数的尾数中的位进行移位;
存储所述尾数中被移位到所述至少一个浮点操作数的在有效的位范围以外的一个或者多个位;
基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位,生成矢量值;以及
基于所述矢量值和所述多个浮点操作数生成用于所述浮点算术运算的结果值,其中
存储所述尾数中被移位到所述至少一个浮点操作数的在有效的位范围以外的一个或者多个位包括:在分离寄存器的与所述尾数中被移位到所述尾数的所述位范围以外的所述一个或者多个位对应的位位置中设置位,
所述分离寄存器中的每个位位置具有不同的关联概率权值,以及
基于所存储的、所述尾数中被移位到所述至少一个浮点操作数的所述尾数的所述位范围以外的一个或者多个位生成所述矢量值包括:基于与具有在所述分离寄存器中设置的对应位值的位位置关联的概率权值来生成所述矢量值。
18.根据权利要求17所述的装置,其中所述浮点算术运算是用于将两个浮点数相加的加法运算。
19.根据权利要求17所述的装置,其中所述浮点算术运算更新用于对所述数据处理系统的存储器区域的存储器活动进行计数的计数器,并且其中所述计数器被用作用于优化对所述数据处理系统的所述存储器的利用的存储器优化算法的一部分。
20.根据权利要求17所述的装置,其中每个概率权值使值在所述算术运算期间每x数目个算术运算与所述移位的浮点操作数的所述移位的尾数相加,其中x是与所述概率权值对应的整数值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/324,025 | 2011-12-13 | ||
US13/324,025 US8909690B2 (en) | 2011-12-13 | 2011-12-13 | Performing arithmetic operations using both large and small floating point values |
PCT/JP2012/007479 WO2013088648A1 (en) | 2011-12-13 | 2012-11-21 | Performing arithmetic operations using both large and small floating point values |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103988171A CN103988171A (zh) | 2014-08-13 |
CN103988171B true CN103988171B (zh) | 2016-10-12 |
Family
ID=48573009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280061198.3A Active CN103988171B (zh) | 2011-12-13 | 2012-11-21 | 在数据处理系统中用于执行浮点算术运算的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8909690B2 (zh) |
JP (1) | JP2015505998A (zh) |
CN (1) | CN103988171B (zh) |
DE (1) | DE112012005014B4 (zh) |
GB (1) | GB2511986B (zh) |
WO (1) | WO2013088648A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909690B2 (en) | 2011-12-13 | 2014-12-09 | International Business Machines Corporation | Performing arithmetic operations using both large and small floating point values |
US10289412B2 (en) * | 2012-02-09 | 2019-05-14 | Qualcomm Incorporated | Floating point constant generation instruction |
US20160188341A1 (en) * | 2014-12-24 | 2016-06-30 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for fused add-add instructions |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
US10146533B2 (en) * | 2016-09-29 | 2018-12-04 | Intel Corporation | Instruction and logic for detecting numeric accumulation error |
WO2018154494A1 (en) | 2017-02-23 | 2018-08-30 | Cerebras Systems Inc. | Accelerated deep learning |
WO2018189728A1 (en) * | 2017-04-14 | 2018-10-18 | Cerebras Systems Inc. | Floating-point unit stochastic rounding for accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
EP3607503B1 (en) | 2017-04-17 | 2022-03-09 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
WO2018193353A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
WO2020044152A1 (en) | 2018-08-28 | 2020-03-05 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
US11328208B2 (en) | 2018-08-29 | 2022-05-10 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
US11163533B2 (en) * | 2019-07-18 | 2021-11-02 | International Business Machines Corporation | Floating point unit for exponential function implementation |
CN114462350B (zh) * | 2021-12-21 | 2022-11-15 | 北京百度网讯科技有限公司 | 集成电路芯片验证方法、装置、电子设备及存储介质 |
CN118034642A (zh) * | 2024-03-08 | 2024-05-14 | 苏州亿铸智能科技有限公司 | 浮点运算方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
CN102243577A (zh) * | 2010-05-10 | 2011-11-16 | 上海华虹集成电路有限责任公司 | 一种快速实现浮点加法的电路 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6238937A (ja) | 1985-08-13 | 1987-02-19 | Panafacom Ltd | 浮動小数点演算における保護桁処理方式 |
JPS63298435A (ja) | 1987-05-28 | 1988-12-06 | Matsushita Electric Ind Co Ltd | 浮動小数点演算装置 |
US6144977A (en) | 1995-07-10 | 2000-11-07 | Motorola, Inc. | Circuit and method of converting a floating point number to a programmable fixed point number |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US7228324B2 (en) * | 2001-05-25 | 2007-06-05 | Sun Microsystems, Inc. | Circuit for selectively providing maximum or minimum of a pair of floating point operands |
US7366749B2 (en) * | 2001-05-25 | 2008-04-29 | Sun Microsystems, Inc. | Floating point adder with embedded status information |
US6941335B2 (en) * | 2001-11-29 | 2005-09-06 | International Business Machines Corporation | Random carry-in for floating-point operations |
US7437400B2 (en) * | 2005-03-14 | 2008-10-14 | Arm Limited | Data processing apparatus and method for performing floating point addition |
EP2109096B1 (en) | 2008-09-03 | 2009-11-18 | Svox AG | Speech synthesis with dynamic constraints |
US8909690B2 (en) | 2011-12-13 | 2014-12-09 | International Business Machines Corporation | Performing arithmetic operations using both large and small floating point values |
-
2011
- 2011-12-13 US US13/324,025 patent/US8909690B2/en active Active
-
2012
- 2012-08-30 US US13/598,847 patent/US8984041B2/en active Active
- 2012-11-21 JP JP2014526031A patent/JP2015505998A/ja active Pending
- 2012-11-21 WO PCT/JP2012/007479 patent/WO2013088648A1/en active Application Filing
- 2012-11-21 GB GB1411244.5A patent/GB2511986B/en active Active
- 2012-11-21 DE DE112012005014.2T patent/DE112012005014B4/de active Active
- 2012-11-21 CN CN201280061198.3A patent/CN103988171B/zh active Active
-
2014
- 2014-10-28 US US14/525,313 patent/US9665346B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
CN102243577A (zh) * | 2010-05-10 | 2011-11-16 | 上海华虹集成电路有限责任公司 | 一种快速实现浮点加法的电路 |
Also Published As
Publication number | Publication date |
---|---|
US8909690B2 (en) | 2014-12-09 |
CN103988171A (zh) | 2014-08-13 |
GB201411244D0 (en) | 2014-08-06 |
US20150074162A1 (en) | 2015-03-12 |
US20130151578A1 (en) | 2013-06-13 |
US20130151577A1 (en) | 2013-06-13 |
JP2015505998A (ja) | 2015-02-26 |
WO2013088648A1 (en) | 2013-06-20 |
GB2511986B (en) | 2020-03-04 |
US9665346B2 (en) | 2017-05-30 |
DE112012005014T5 (de) | 2014-08-28 |
DE112012005014B4 (de) | 2022-02-03 |
GB2511986A (en) | 2014-09-17 |
US8984041B2 (en) | 2015-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103988171B (zh) | 在数据处理系统中用于执行浮点算术运算的方法和装置 | |
CN101438232B (zh) | 不同浮点格式的浮点加法 | |
CN103793203B (zh) | 响应于输入数据值降低fma单元中的功率消耗 | |
CN101620589B (zh) | 处理器中的有效并行浮点异常处理 | |
CN101986264B (zh) | 用于simd向量微处理器的多功能浮点乘加运算装置 | |
CN106406810B (zh) | 微处理器及其方法 | |
CN109643228A (zh) | 用于浮点乘加运算的低能耗尾数乘法 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN110168493B (zh) | 在128位宽的操作数上的融合乘加浮点运算 | |
CN103348300B (zh) | 计算函数的函数值的装置和方法 | |
CN103970587B (zh) | 一种资源调度的方法、设备和系统 | |
CN106990937A (zh) | 一种浮点数处理装置 | |
CN101326486B (zh) | 进行浮点数的除法运算或平方根运算的运算装置和运算方法 | |
CN102495719A (zh) | 一种向量浮点运算装置及方法 | |
CN104679720A (zh) | 一种实现fft的运算方法 | |
CN104246745A (zh) | 用于控制mxcsr的方法及装置 | |
CN104679719A (zh) | 一种基于fpga的浮点运算方法 | |
CN104615808A (zh) | 一种待测试硬件运算部件的测试方法及参考模型装置 | |
GB2511314A (en) | Fast fused-multiply-add pipeline | |
CN113454915A (zh) | 在锚定数据元素中编码特殊值 | |
US7747669B2 (en) | Rounding of binary integers | |
US10628542B2 (en) | Core-only system management interrupt | |
JP2012113508A (ja) | 浮動小数点演算回路、浮動小数点演算回路を備えたコンピュータ及びその演算制御方法と演算制御プログラム | |
CN102073617B (zh) | 利用wpf技术完成计算的系统 | |
CN104598196A (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 |