浮点数舍入的制作方法

文档序号:14649726发布日期:2018-06-08 21:32阅读:450来源:国知局
浮点数舍入的制作方法

本公开涉及数据处理系统。更具体而言,本公开涉及支持浮点数的使用和操作的数据处理系统。



背景技术:

浮点算法有很多用途,例如用于图形数据操作的生成、物理系统的建模/仿真和其他用途。

已知提供支持浮点数的使用的数据处理系统。



技术实现要素:

本公开的至少一些实施例提供了一种用于处理数据的装置,包括:

处理电路,用于在程序指令的控制下执行处理操作;和

解码器,用于对程序指令进行解码以生成控制信号来控制所述处理电路执行所述处理操作;其中,

所述解码器响应于给定程序指令和舍入位置输入操作数,来生成控制信号以控制所述处理电路处理具有有效数值的浮点输入操作数从而生成输出结果,该输出结果取决于来自使用由所述舍入位置输入操作数指定的所述浮点输入操作数的所述有效数内的可变舍入点对所述浮点输入操作数进行的舍入的值。

本公开的至少一些实施例提供了一种用于处理数据的设备,包括:

用于在程序指令的控制下执行处理操作的处理装置;和

用于对程序指令进行解码以生成控制信号来控制所述处理装置执行所述处理操作的解码装置;其中,

所述解码装置响应于给定程序指令和舍入位置输入操作数,来生成控制信号以控制所述处理装置处理具有有效数值的浮点输入操作数从而生成输出结果,该输出结果取决于来自使用由所述舍入位置输入操作数指定的所述浮点输入操作数的所述有效数内的可变舍入点对所述浮点输入操作数进行的舍入的值。

本公开的至少一些实施例提供了一种用于处理数据的方法,包括:

对给定的程序指令和舍入位置输入操作数进行解码以生成控制信号来控制处理电路处理具有有效数值的浮点输入操作数从而生成输出结果,该输出结果取决于来自使用由所述舍入位置输入操作数指定的所述浮点输入操作数的所述有效数内的可变舍入点对所述浮点输入操作数进行的舍入的值。

附图说明

现在将参照附图仅以示例的方式描述示例实施例,在附图中:

图1示意性地示出了用于执行程序指令以执行数据处理操作的数据处理系统;

图2示意性地示出了浮点数;

图3示意性地示出了锚定数(anchored number);

图4示意性地示出了浮点舍入程序指令;

图5是示意性地示出浮点舍入程序指令的操作的流程图;

图6示意性地示出了转换和相加程序指令的操作;

图7是示意性地示出转换和相加程序指令的操作的流程图;和

图8示意性地示出了用于执行转换和相加程序指令的硬件的示例。

具体实施方式

图1示意性地示出了包括处理器核心4和存储器6的数据处理系统2。存储器6存储要执行的程序指令8和数据值10。程序指令用于控制处理器核心4执行处理操作。处理器核心4包括解码器12,用于对从存储器6取出的程序指令进行解码,并且用于生成控制信号14,控制信号14用于控制处理电路16执行由那些程序指令所指定的处理操作。处理电路16被耦合到寄存器存储装置18,该寄存器存储装置18包括多个寄存器,这些寄存器存储要执行的程序指令的输入操作数并存储来自被执行的程序指令的输出结果。寄存器存储装置18内的寄存器可以具有各种不同的形式,例如整数寄存器、浮点寄存器、锚定数寄存器、向量寄存器等。

图2示意性地示出了浮点数。计算机系统中的浮点数通常由符号位s和指数值x构成,符号位s指示浮点数是正数还是负数,指数值x指示有效数应当与其相乘以提供所表示的浮点数的2的幂的指数。有效数是表示有效数的小数部分的n位数b0、b1、...。有效数由隐藏位和小数b0、b1、b2...组成。隐藏位由(偏置)指数决定,可以是零或一:零代表偏置指数,一代表任何其他指数。不同形式的浮点数表示是可能的,例如消耗不同位宽并允许表示不同指数范围和有效数精度的那些浮点数表示。本技术可以与所有这些形式的浮点数表示一起使用。

图3示意性地示出了锚定数。锚定数是一对(i,a),其中i是长二进制补码(two’s complement)整数20(锚定有效数),a是锚值(anchor value)22,该锚值给出该整数的最低有效位的权重(并且从而给出整数的所有位的权重)。锚值为二进制补码整数20提供可编程的操作数有效性(significance)。锚定数可以具有各种不同的精度级别(在二进制补码整数20中提供的位)以及具有各种有效性范围(由锚值22表示)。这些各种不同形式的锚定数可以与本技术一起使用。

图4示意性地示出了可以与锚定数相关联地使用的浮点舍入程序指令(FRANC指令)。该浮点舍入程序指令指定浮点输入操作数FPreg,其给定寄存器存储装置18内存储要被操纵的浮点数的寄存器。浮点舍入程序指令的另一输入操作数是舍入位置输入操作数,其指定应执行舍入的浮点数内的位位置。该舍入位置输入操作数相应地指定在舍入操作期间要使用的浮点输入操作数的有效数内的可变舍入点。浮点舍入程序指令可以具有其他输入操作数(例如舍入模式)。

如图4所示,所示示例中的舍入点位于二进制位置b2处,使得二进制数字b3至b[n-1]被舍入并产生一个值,该值与上面的浮点有效数的部分相加并且包括二进制数字b2(即来自舍入的值,该值在舍入点处被添加以便生成舍入浮点数作为输出结果)。因此,如图4所示,二进制数字b3至b[n-1]在输出结果中已全部舍入为零,并且浮点数输入的二进制数字b0b1 b2已与来自舍入的值相加。

应理解可以使用各种不同的舍入模式。例如,这些舍入模式可以包括其中舍入趋向零,远离零,趋向最近的有效位等的模式。浮点舍入程序指令FRANC可以用于各种这样的舍入模式,其中所采用的舍入模式由舍入模式参数指定。这种舍入模式参数可以例如被设置在处理器核心4的配置寄存器中,作为数据处理系统2的初始化的一部分。

在一些实施例中,舍入位置输入操作数可以直接指定由浮点舍入程序指令对其进行舍入的浮点数的有效数内的位位置(例如b2)。或者,在其他实施例中,舍入位置输入操作数可以指定要执行舍入的位有效性,而与要操纵的特定浮点数的指数值无关。在这种情况下,处理电路16可以将所讨论的浮点数的指数值与指定所希望的舍入位有效性的舍入位置输入操作数进行比较,以确定要应用于正在被操纵的浮点数的有效数的可变舍入点。

第二种方法在需要混合使用浮点数和锚定数的情况下可能会有用。在这样的系统中,锚定数将具有由它们的锚值22确定的有效性。可以使用浮点舍入指令FRANC来对浮点数进行舍入以例如与锚定数相加,使得它们具有与锚定数匹配的位有效性。因此,可以通过将浮点数舍入为与锚定数匹配的有效性来准备浮点数以便与锚定数一起使用,低于锚定数的最低有效部分的浮点数的有效数的部分在组合的结果中被表示为在进行组合之前在浮点数的更高有效部分上执行舍入的结果。在这些情况下,可以(直接或间接)提供浮点舍入程序指令的舍入位置输入操作数,通过希望与经舍入的浮点数(将作为浮点舍入程序指令的输出结果)相组合的锚定数的锚值22。图5是示意性示出了浮点舍入程序指令的操作的流程图。所执行的处理步骤可以使用处理电路16以各种不同的方式来实现。图5的流程图示出了作为线性操作序列执行的处理,但是本技术领域的技术人员将认识到,替代布置是可能的,例如以不同的顺序或以重叠方式执行各个步骤。

在图5的步骤24中,从寄存器存储装置18内的浮点寄存器读取浮点数。在步骤26,将浮点数的指数值x与舍入位置输入操作数进行比较,以便确定浮点数的有效数内的舍入点。步骤28使用数据处理系统2的当前舍入模式来执行将浮点数的有效数舍入到在步骤26确定的舍入点。步骤30返回作为输出结果的浮点数,其由符号、指数和小数构成。

图6示意性地示出了根据本公开的不同示例实施例的转换和相加程序指令的操作。这样的转换和相加程序指令可以用于将浮点数与锚定数相加,结合浮点数的舍入以具有与锚定数相匹配的有效性。如图6所示,锚定数包括二进制补码整数32,其具有指示其位有效性的关联锚值34。锚定数作为转换和相加指令的一个输入操作数。转换和相加指令的另一个输入操作数是浮点数36。该浮点数36的指数可用于确定输入浮点数的有效数的哪一部分是重叠部分38以及哪一部分是非重叠部分40,重叠部分38与二进制补码整数32的最低有效位端重叠,非重叠部分40的位有效性低于由锚值34指示的锚定数内最低有效位的位有效性。非重叠部分40用于根据处理器核心4当前使用的舍入模式生成舍入值R。然后,转换和相加指令执行对二进制补码整数32、浮点数的重叠部分38(以及浮点数的隐藏位)和舍入值R的整数相加,舍入值R用作所执行的整数相加的进位值。该整数相加的结果是转换和相加程序指令的输出结果。

图6的转换和相加指令的舍入位置输入操作数可以被认为是浮点数36的指数。然而,在其中锚值34和浮点数的指数值是都是可变的其它实施例中,舍入位置输入操作数可以被认为是由这两个值形成,或者由至少这些值之间的差值形成。

图7是示意性地示出转换和相加程序指令的操作的流程图。如前所述,这样的流程图仅是在执行转换和相加程序指令时所执行的处理的示意性表示,并且其他操作序列也可以用在本公开的不同实施例中。

在步骤42,读取锚定数和浮点数。在步骤44,将锚定数的锚值与浮点数的指数值进行比较,以确定锚定数与浮点数之间的重叠。在步骤46,根据当前舍入模式对部分重叠的浮点数的非重叠部分执行舍入,以便得到来自舍入的值R。在步骤48,锚定数的二进制补码整数32与浮点数的重叠部分38相加,其中在步骤46确定的来自舍入的值R被用作该相加的进位输入。步骤50将在步骤48执行的整数相加的结果返回,作为输出转换和相加程序指令的输出结果。

来自舍入的值R可以被称为舍入位。该舍入位的值将根据浮点数的符号以及浮点数的重叠部分是否需要舍入增量(如由浮点数的非重叠部分48所指示)而变化。更具体而言,舍入位的值可以根据以下方式来确定:

当重叠部分为正值且不需要舍入增量时,舍入位为+0;

当重叠部分为正值且需要舍入增量时,舍入位为+1;

当重叠部分为负值且不需要舍入增量时,舍入位为+1;以及

当重叠部分为负值且需要舍入增量时,舍入位为+0。

图8示意性地图示了可用于执行转换和相加程序指令的转换和相加硬件52。该转换和相加硬件52可以与数据处理系统2内的SIMD硬件共享,并且因此可以按其中锚定数被分成多个通道的方式而形成,每个通道具有它们自己各自的二进制补码整数值和锚值。与这些通道中的每一个相关联的通道转换电路54、56、58、60用于识别与它们各自的相关联的锚定数重叠的输入浮点数的一部分并且将其传递到整数寄存器62。因此,在整数寄存器62中形成对应于输入浮点数的重叠部分38的二进制补码整数值。每个通道转换器54、56、58、60用于通过将其本地锚值与输入浮点数的指数进行比较来识别其自己的重叠部分。

与在浮点数的最低有效位端处的通道转换器62相关联的是舍入值确定电路64。该舍入值确定电路64使用与最低有效通道转换器60相关联的锚值anchor0以及输入浮点数的指数一起来识别输入浮点有效数的非重叠部分40。舍入值确定电路64然后使用该非重叠部分40和当前有效的舍入模式来形成舍入位R(来自舍入的值)。

整数加法器66执行对整数寄存器62内所组合的浮点数的重叠部分38、锚定数有效数(二进制补码整数)和由舍入位R形成的进位值的整数相加。加法器64的加法运算的结果是转换和相加硬件52的输出结果。这个输出结果可以由表示锚定数的各个通道形成,并且每个通道都有自己的二进制补码整数值和相关联的锚值。

虽然已经参照附图详细描述了说明性实施例,但是应当理解,权利要求不限于那些精确的实施例,并且本领域技术人员可以在其中进行各种改变、添加和修改而不偏离所附权利要求的范围和精神。例如,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1