CN108153513B - 前导零预测 - Google Patents

前导零预测 Download PDF

Info

Publication number
CN108153513B
CN108153513B CN201711193652.1A CN201711193652A CN108153513B CN 108153513 B CN108153513 B CN 108153513B CN 201711193652 A CN201711193652 A CN 201711193652A CN 108153513 B CN108153513 B CN 108153513B
Authority
CN
China
Prior art keywords
difference
bits
floating point
point number
mask
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
CN201711193652.1A
Other languages
English (en)
Other versions
CN108153513A (zh
Inventor
大卫·雷蒙德·鲁茨
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN108153513A publication Critical patent/CN108153513A/zh
Application granted granted Critical
Publication of CN108153513B publication Critical patent/CN108153513B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

本公开涉及前导零预测。提供了一种数据处理装置。中间值生成电路从第一浮点数和第二浮点数生成中间值。中间值包括指示第一浮点数和第二浮点数的绝对值之间的差值中的前导0的数目的预测值的多个前导0。第一浮点数和第二浮点数的绝对值之间的差值中的前导0的数目与预测值至多相差一。计数电路对中间值中的前导0的数目进行计数,并且掩码生成电路使用中间值产生一个或多个掩码。掩码生成电路在计数电路对中间值中的前导0的数目进行计数的同时或之前产生一个或多个掩码。

Description

前导零预测
技术领域
本公开涉及数据处理。例如,它可以涉及浮点数。
背景技术
浮点数可以表示为有效数乘以基数的指数次幂的组合。例如,值0.0012可以表示为1.2×10-3,其中有效数为1.2,基数为10,指数为-3。在二进制表示中,基数通常是2。标准化的浮点数的有效数至少为1且小于2。当从一个浮点数中减去另一浮点数时,其结果可能是非常小的数,即,可能有大量的前导零。以前已经提出了通过对前导零的数目(实际数目或预测数目)进行计数来标准化该数目以便生成一个或多个掩码。如果在计算差值之前没有这样做(如执行融合的乘加运算时常常是这种情况),那么可能会在计算前导零的数目以便可以对差值进行标准化时导致停转(stall)。
发明内容
从第一示例配置来看,提供了一种数据处理装置,包括:中间值生成电路,该中间值生成电路从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;计数电路,该计数电路对所述中间值中的前导0的数目进行计数;以及掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中,所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码。
从第二示例配置来看,提供了一种数据处理设备,包括:中间值生成装置,用于从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;计数装置,用于对所述中间值中的前导0的数目进行计数;以及掩码生成装置,用于使用所述中间值产生一个或多个掩码,其中,所述掩码生成装置在所述计数装置对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码。
从第三示例配置来看,提供了一种数据处理方法,包括:从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;对所述中间值中的前导0的数目进行计数;以及使用所述中间值产生一个或多个掩码,其中,所述生成一个或多个掩码的步骤在所述对所述中间值中的前导0的数目进行计数的步骤的同时或之前发生。
附图说明
仅通过举例的方式,参考附图中所示的实施例来进一步描述本发明,其中:
图1示出了根据一个实施例的示例性数据处理装置;
图2示出了根据一个实施例的示例性掩码生成器;
图3示出了根据一个实施例的示例性初始掩码生成电路;
图4示意性地示出了根据一个实施例的l掩码生成电路的示例;
图5示意性地示出了根据一个实施例的s掩码生成电路的示例;
图6示意性地示出了使用掩码来检测有效数溢出并获取差值的特定位的电路;
图7包含示出根据一个实施例的示例性数据处理方法的流程图;和
图8包含示出根据一个实施例的使用所生成的掩码的示例的流程图。
具体实施方式
在参考附图讨论实施例之前,提供实施例的以下描述。
根据一个示例配置,提供了一种数据处理装置,包括:中间值生成电路,该中间值生成电路从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;计数电路,该计数电路对所述中间值中的前导0的数目进行计数;以及掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中,所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码。
给定第一浮点数和第二浮点数,中间值生成电路生成中间值。中间值可以被用于预测第一浮点数(a)和第二浮点数(b)之间的绝对差值中的前导零的数目。应该理解,在二进制算法中,可以通过执行加法运算来计算差值,因此术语“差值”未必需要执行减法,而是指两项的绝对值之间的差值,即|||a|-|b||。中间值可以被用于确定前导零的数目的预测值,因为预测值可能差1。具体地,预测值可能没有考虑在绝对差值计算期间的任何阶段出现“进位”的可能性。在已经生成中间值的任何情况下,掩码生成电路被用于使用该中间值来产生一个或多个掩码。此外,掩码是在计数电路对中间值中的前导零的数目进行计数的同时或之前生成的。因此,掩码的生成速度比如下方法更快:对中间值中的前导零的数目进行计数,然后使用该信息生成掩码。因此,可以更快地得到掩码,并且可以在计算浮点数的绝对值之间的差值的同时得到该掩码。中间值可以是计算两个浮点数之间的绝对差值的中间值,例如,它可以是在计算中途使用的值。例如,掩码可以直接从中间值生成。
在一些实施例中,数据处理装置包括差分电路,该差分电路确定所述第一浮点数和所述第二浮点数的所述绝对值的差值。这种差分电路可以用来确定两个浮点数的绝对值之间的实际差值。然而,该差值可能没有被标准化,尽管可以基于中间值来执行标准化。
在一些实施例中,所述中间值包括多个前导零,该多个前导零后面是最高有效位1,该最高有效位1后面是零个或更多个0和1;并且所述最高有效位1的位置是:与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。在这些实施例中,中间值通过具有与差值相同数目(或者多余一个)的前导零来指示两个浮点数的绝对值之间的差值中的前导零的数目。例如,差值000001001可能具有中间值000001101或000000101,它们分别具有相同数目和多一个的前导零。
在一些实施例中,所述一个或多个掩码包括指示所述中间值中的所述最高有效位1的所述位置的l掩码(lmask);并且所述掩码生成电路通过采用所述中间值并用同等数目的0替换所述零个或更多个0和1来产生所述l掩码。掩码生成电路从中间值产生的掩码之一是l掩码。l掩码由连续数个前导零和跟在其后的连续数个前导一组成。连续前导零的数目与浮点数的绝对值之间的差值中的前导零的数目相同或相差一个。例如,给定差值00110,当前导零的数目分别是相同或者多一个时,可能的l掩码的值是:00111和00011。
在一些实施例中,数据处理装置包括有效数溢出检测电路,该有效数溢出检测电路基于所述l掩码和所述差值来检测所述差值的有效数是否溢出。有很多方法可以用于确定有效数是否溢出。然而,在一些实施例中,所述有效数溢出检测电路被配置为通过在所述l掩码和所述差值的除低阶位之外的位之间执行逻辑与(AND)运算来检测所述差值的所述有效数是否溢出。例如,通过在相应的成对的位之间执行逻辑与运算,然后执行减少或(reduction OR)运算(即,通过在与运算得到的所有位之间执行或运算),可以确定有效数是否溢出的总体结果。这具有如下效果:如果相应的成对位之间的逻辑与运算之一是正的(即,如果l掩码中的相应位和差值中的相应位都是‘1’),则发生了有效数溢出。当然,应该理解,可以执行其他的逻辑运算,以便不同地指示有效数溢出的存在。例如,通过反转减少或运算的结果,“0”指示发生了有效数溢出。
在一些实施例中,所述有效数溢出检测电路被配置为通过在被左移一次的所述l掩码和所述差值的除低阶位之外的位之间执行逻辑按对与运算,来检测所述差值的所述有效数是否溢出。在这样的实施例中,不是“连线(wiring)”要比较的相关位,而是执行逻辑左移运算,将位在物理上左移一位。如前所述,可以对经过移位的l掩码和差值之间的相应位执行按位与运算。在一些实施例中,可以执行进一步的减少或运算,以得到指示是否发生了有效数溢出的指示符。应该理解的是,还存在其他确定溢出的方法。例如,在对相应位执行按位逻辑与运算之前,可以对差值执行向右的逻辑移位。
在一些实施例中,数据处理装置包括位获取电路,该位获取电路基于所述l掩码返回所述差值的给定位的值。这种位获取电路可以返回多个不同的位。例如,在一些实施例中,所述给定位是溢出最低有效位、最低有效位、溢出保护位、和保护位之一。最低有效位指的是有效数的最低有效位。保护位指的是下一个最低有效位(例如,不是有效数的一部分的最高有效位)。这些位中的每一位在舍入过程中被使用。溢出最低有效位和溢出保护位指的是有效数溢出时的最低有效位和保护位。有效数的溢出使得这些位的有效性增加一位。
位获取电路可以通过多种方式获取给定位。然而,在一些实施例中,所述位获取电路通过对所述差值和被右移多次的所述l掩码执行逻辑与运算,来返回所述差值的所述给定位的所述值;并且所述多次的次数取决于所述给定位。在一些其他实施例中,差值可能根据给定位被左移多次。
在一些实施例中,所述一个或多个掩码包括指示所述差值中除前导0之外的位的位置的s掩码;并且所述掩码生成电路通过采用所述中间值并用同等数目的1来替换所述零个或更多个0和1来产生所述s掩码。s掩码是可以由掩码生成电路产生的第二掩码。l掩码是通过将最高有效位1之后的位设置为零来产生的,而s掩码将最高有效位1之后的所有位设置为1。s掩码中的位数等于中间值中的位数。
在一些实施例中,数据处理装置包括位获取电路,该位获取电路基于所述s掩码返回所述差值的零个或更多个尾部位(trailing bits)。因此,s掩码可以用来从差值中返回多个连续的最低有效位。
有很多方法可以用s掩码来获取差值的尾部位。然而,在一些实施例中,所述位获取电路通过对所述差值的位的子集和所述s掩码的位的子集执行逻辑与运算,来返回所述差值的所述零个或更多个尾部位。在一些实施例中,所述子集包括s掩码的所有位和差值的所有位。在一些其他实施例中,所述子集是严格子集并且仅包括s掩码和差值的一些位。
在一些实施例中,所述尾部位包括溢出粘滞位;所述差值的所述位的子集是所述差值的尾部x位,并且所述s掩码的所述位的子集是所述s掩码的尾部x位;并且x等于所述差值中的粘滞位的数目加1。例如,差值的尾部x位和s掩码的尾部x位可以指例如,差值和s掩码的x个最低有效位。溢出粘滞位是指在有效数溢出的情况下将变成粘滞位的位(例如,由于在有效数的最高有效位的差分计算期间发生进位而左移一次)。
在一些实施例中,所述尾部位包括粘滞位;所述差值的所述位的子集是所述差值的尾部y位,并且所述s掩码的所述位的子集是所述s掩码的尾部y位;并且y等于所述差值中的粘滞位的数目。
在一些实施例中,所述第一浮点数和所述第二浮点数被标准化。例如,第一浮点数和第二浮点数在计数电路对前导零的数目进行计数之前并且在掩码生成电路产生一个或多个掩码之前被标准化。标准化的浮点数的有效数大于或等于1且小于2。
现在将参照附图描述具体实施例。
浮点(FP)是使用少量位来近似实数的有用方法。IEEE 754-2008FP标准提出了多种不同格式的FP数,包括二进制64(也称为双精度或DP)、二进制32(也称为单精度或SP)、和二进制16(也称为半精度或HP)。数字64、32、和16是指每种格式所需要的位数。
FP数与科学课程中教导的“科学记数法”非常相似,在FP数中,用-2.0×106来代替-200万。这个数字有如下部分:符号(在这种情况下是负的)、有效数(2.0)、指数的基数(10)、和指数(6)。所有这些部分在FP数中都是类似的,虽然有不同之处,但其中最重要的是组成部分以二进制数存储,指数的基数始终为2。
更确切地说,FP数包括符号位、多个偏置指数位、和多个小数位。具体而言,我们感兴趣的格式包括以下几个部分:
格式 符号 指数 小数 指数偏置
DP[63:0] 63 62:52(11位) 51:0(52位) 1023
SP[31:0] 31 30:23(8位) 22:0(23位) 127
HP[15:0] 15 14:10(5位) 9:0(10位) 15
负数的符号是1,正数的符号是0。通常,每个数字(包括零)都有符号。
指数被偏置,这表示真指数不同于存储在数字中的指数。例如,偏置的SP指数是8位长,范围从0到255。指数0和255是特殊情况,但所有其他指数都偏移127,这意味着真指数比偏置的指数小127。最小的偏置指数为1,其对应于真指数-126。最大偏置指数为254,其对应于真指数127。HP和DP指数的工作方式相同,偏移如上表所示。
SP指数255(或DP指数2047或HP指数31)被保留用于无穷数和被称为NaN(不是数字)的特殊符号。无穷数(可以是正数或负数)具有零小数。具有指数255和非零小数的任何数字都是NaN。无穷数提供了饱和值,所以它实际上表示类似于“该计算生成的数字大于我们可以以这种格式表示的数字”的内容。针对在实数上没有数学定义的运算,例如,除以零或对负数取平方根,返回NaN。
在任何格式中,指数零都被保留用于次正规数和零。正规数表示以下值:
-1符号×1.小数×2e
其中,e是从偏置指数计算得出的真指数。“1.小数”被称为有效数,1不作为FP数的一部分被存储,而是从指数推断得出。除了零和最大指数以外的指数表示形式为“1.小数”的有效数。指数零指示形式为“0.小数”的有效数,针对给定格式的真指数等于1-偏移。这样的数被称为次正规数(历史上,这些数被称为非正规数,但现代用法喜欢称为次正规数)。
具有指数和等于零的小数的数是零。
下表中有一些HP格式的示例数字。这些条目是二进制的,添加了“_”字符以提高可读性。请注意,次正规条目(表中第4行,指数为零)产生与前一行中的正规条目不同的有效数。
符号 5-位指数 10-位小数 11-位有效数
0 01111 00_0000_0000 100_0000_0000 1.0×20
1 01110 10_0000_0000 110_0000_0000 -1.1×2-1
0 00001 10_0000_0000 110_0000_0000 1.1×2-14
0 00000 10_0000_0000 010_0000_0000 0.1×2-14
1 11111 00_0000_0000 -无穷
0 11111 00_1111_0011 NaN
FP实现方式的复杂性的很大一部分是由于次正规数,因此它们通常由微代码或软件来处理。可以用硬件处理次正规数,与软件或微代码相比,这些运算被加速10到100倍。
处理符号的FP方式被称为符号-幅值,其与计算机中存储整数的常用方式(二进制补码)不同。在符号-幅值表示中,相同数字的正数和负数版本仅在符号位上不同。由符号位和3个有效数位组成的4位符号-幅值整数将正1和负1表示为:
+1=0001-1=1001
在二进制补码表示中,n位整数i由二进制n+1位值2n+i的低阶n位表示,因此4位二进制补码整数将正1和负1表示为:
+1=0001-1=1111
二进制补码格式对于有符号的整数而言实际上是通用的,因为它简化了计算机算法。
定点数看起来完全像整数,但实际上其代表具有多个小数位的值。在广泛采用FP之前,传感器数据通常采用定点格式,并且存在大量被编写的定点软件。使用定点数工作非常繁琐,因为程序员必须跟踪“二进制点”,即数字的整数和小数部分之间的分隔符,并且还必须不断对数字进行移位以保持位在正确的位置。FP数没有这个困难,因此,期望能够在定点数和FP数之间进行转换。能够实现转换也意味着我们仍然可以使用定点软件和数据,但是我们在编写新软件时不限于定点。
IEEE-754标准要求大多数FP运算在计算时如同以无限的范围和精度来完成的运算,然后进行舍入以适合FP数。如果计算结果与FP数完全匹配,则始终返回该值,但计算通常会产生在两个连续的浮点数之间的值。舍入是选择应该返回两个连续数字中的哪一个的过程。
存在几种舍入方式(称为舍入模式),它们的六个示例是:
Figure BDA0001481537180000091
这个定义并没有以实际方式告诉我们如何进行舍入。一种常用的实现方式是执行运算,查看截断值(即,适合FP格式的值)以及所有剩余的位,然后在某些条件成立的情况下调整截断值。这些计算都基于:
L-(最低)截断值的最低有效位
G-(保护)下一个最高有效位(即,不包括在截断中的第一位)
S-(粘滞)不是截断的一部分的所有剩余位的逻辑或
给定这三个值和截断值,我们总是可以根据下表计算正确的舍入值:
模式 截断值的改变
RNE 如果(L&G)|(G&S),则增加
RNA 如果G,则增加
RZ
RP 如果正&(G|S),则增加
RM 如果负&(G|S),则增加
RX 如果G|S,则设置L
例如,考虑两个4位有效数相乘,然后舍入到一个4位有效数。
有效数1=1011(十进制11)
有效数2=0111(十进制7)
相乘得到:
有效数1×有效数2=1001_101(十进制77)
四个最低有效位(1101)按其顺序与位LGss对应。
截断的4位结果的最低有效位被标记为L,下一位是G,并且S是被标记为s的剩余位的逻辑或(即,S=0|1=1)。为了进行舍入,我们根据上表中的舍入模式和计算来调整我们的4位结果(1001)。从而例如在RNA舍入中,G被设置,所以我们返回1001+1=1010。对于RX舍入,G|S为真,所以我们将L设置为1(其已经是1,所以在这种情况下没有任何变化)并返回1001。
图1示出了根据一个实施例的数据处理装置100。在这个示例中,数据处理装置接收两个有效操作数(siga和sigb),它们分别有106位。在这个示例中,分配给“siga”的值是siga和sigb中较大的一个。然而,在替代实施例中,可以重复数据处理装置100以便计算siga-sigb和sigb-siga。每个操作数都是106位,因为这是融合有效数的大小,在融合乘加(FMA)运算的计算期间使用。应该理解的是,也可以使用其他的有效数大小。这两个值被传递到加法器电路110。虽然意图是确定值siga和值sigb之间的差值,但是这可以通过将sigb转换成二进制补码格式并且使siga、sigb和1相加来实现。这是通过使用加法器电路110并且将加法器电路110的进位标志设置为“1”以实现加“1”来实现的。值siga和sigb还被传递到中间值生成电路130,中间值生成电路130形成前导零预测器120的一部分,前导零预测器120估计值siga和值sigb之间的差值中的前导零的数目。中间值生成电路130产生中间值(w)。中间值w是这样的值,即它的前导零的数目与由加法器电路110计算的差值中的前导零的数目相等或者相差一。因此,中间值生成电路能够预测差值中的前导零的数目。对中间值w中的前导零的数目进行计数的计数电路140对中间值w进行分析。结果(l移位(lshift))是7位数字,其向移位电路160提供关于应当执行多少次左移的估计,从而使得由加法器电路110计算的差值将被标准化。
由中间值生成电路130产生的中间值(w)被单独提供给掩码生成电路150,以便生成一个或多个位掩码。掩码生成电路150的操作将在后面更详细地示出。然而,这些掩码中的一个或多个被传送到溢出和舍入电路170,该溢出和舍入电路使用由掩码生成电路150产生的一个或多个掩码来确定是否发生了有效数溢出。当由于在加法器电路110执行计算的过程中发生进位而导致有效数的大小增加时,发生有效数溢出。如果出现这种情况,则使用右移位器180将有效数右移一位以进行补偿。这个操作的结果(右移0或1位)是siga和sigb之间的标准化的差值。在图1的电路中,掩码生成电路150从中间值(w)产生掩码,并因此在计数电路140完成计数操作的同时或之前产生掩码。通过这种方式,溢出和舍入电路170有可能更快地确定是否存在有效数溢出。
图2示出了根据一个实施例的掩码生成电路150的示例。掩码生成电路150包括初始掩码电路190,其从中间值生成电路130接收中间值(w),并对中间值执行一组初始计算。然后,将这些初始计算传递给计算l掩码的l掩码生成电路200以及计算s掩码的s掩码生成电路210。l掩码包含与中间值(w)相同数目的前导零,这些前导零后面是1。其余的位全都是零。s掩码也包含与中间值(w)相同数目的前导零,这些前导零后面是1。其余的位全都是一。因此,举例来说,给定中间值(w)为000110100100,l掩码将是000100000000,s掩码将是000111111111。这些掩码可以用来根据需要确定是否发生了有效数溢出或者从差值计算中提取特定的位。
图3示出了适用于16位数字的初始掩码电路190的示例。本领域技术人员将理解,该结构可以被泛化以产生一组初始计算。这些初始计算表示w的连续位的不同子集的逻辑或。如本领域技术人员将会理解的,如果这些位中的任何一位是“1”,则这些位的子集的逻辑或将是“1”。每对相邻的位(例如,w0和w1,w2和w3,w3和w4等)作为输入被插入到或(OR)门。来自一级OR门的输出作为输入被提供给下一级OR门。通过这种方式,每一级的OR门的数目减半,直到最高级,存在指示输入中是否有任何位为“1”的一个OR门。此外,每个OR门(除了第一级中的那些OR门)的第一输入作为初始计算被提供给l掩码生成电路200和s掩码生成电路210。在图3的示例中,初始计算包括如下值:或(15:0),或(15:8),或(15:12),或(7:4),或(15:14),或(11:10),或(7:6),或(3:2)。使用这些信息,可以快速定位任意值‘1’的最高有效位‘1’。图4中使用这些内部值来使我们能够快速找到w(中间值)中的最高有效位‘1’。
图4示出了由多个与(AND)门构成的l掩码生成电路200,其中每个与门对两个输入中的一个取反。l掩码生成电路使用由初始掩码电路190产生的初始计算来产生表示l掩码的位的一系列输出位(m0...m15)。在第一级,每组包括成对的位(例如,w0和w1,w2和w3,w3和w4等),伴随着较高有效位(即,第一级处的较高有效位本身)的OR的反转形式,较高有效位继续通过,而较低有效位作为AND门的输入被接收。换句话说,在每组内,如果较高有效位的一半不是“1”,那么较低有效位的一半只能是“1”。例如,在第一级的情况下,如果w15不是“1”,则w14只能是“1”。这产生了针对每组的一对输出,第一输出指示该组的上半部分是否是“1”,第二输出指示该组的下半部分是否是“1”。在随后的每级,组合相邻的组。因此,在第二级,第一组涉及前4位(w0-w3)。再次,伴随着较高有效位的OR的反转形式,上半部分的位自动继续通过,而较低有效位的一半作为AND门的输入被接收。换句话说,在每组中,如果较高有效位的一半不是“1”,那么较低有效位的一半只能是“1”。因此,在第二级的情况下,w3和w2继续通过。相反,w0和w1分别与或(3:2)进行与运算。这产生了四个输出。
各级中的输出数目是相同的。类似地,在每级,与门的数目等于b/2,其中b是w的位数。
图5示出了s掩码电路210。除了部分取反的AND门由OR门取代之外,s掩码电路与图4所示的l掩码电路相对应。
图6示意性地示出了溢出和舍入电路170,其使用l掩码和s掩码来检测有效数溢出并获取由加法器电路110计算的差值的特定位。溢出和舍入电路170接收由掩码生成电路150产生的一个或多个掩码。
l掩码被有效数溢出检测电路220用于检测有效数溢出。这可以通过将l掩码左移一位,在移位后的l掩码和差值之间执行按位与运算,然后对结果执行减少或运算来实现。然而,在实际中,不必实际执行移位操作,而是可以直接连接适当的位,从而可以在期望的位上操作。具体而言,可以通过表达式|(l掩码[105:0]&差值[106:1])来计算有效数溢出信号。
溢出和舍入电路170还包括位获取电路230,该位获取电路从由加法器电路110计算的差值中获取特定位。例如,所请求的位可以是溢出最低有效位、最低有效位、溢出保护位、和保护位。如果有效数已经溢出(因此,溢出保护位的位置与最低有效位相同),则最低有效位和保护位的溢出变体与最低有效位和保护位对应。因此,可以通过将l掩码右移52位来检测溢出最低有效位,可以通过将l掩码右移53位来检测溢出保护位(或最低有效位),并且可以通过将l掩码右移54位来检测保护位。在每种情况下,移位后的l掩码然后被与差值进行逐位与运算,并执行减少或运算。移位的次数取决于siga和sigb的性质。在这个示例中,假设两个值都是双精度的,因此有效数的长度是53位。再次,在实践中,不必实际对l掩码进行移位。相反,可以直接连接相应的位,以便操作相关的位。因此,在这个示例中,溢出最低有效位可以通过表达式|(l掩码[106:51]&差值[55:0])来确定,最低有效位或溢出保护位可以通过表达式|(l掩码[106:52]&差值[54:0])来确定,同时,保护位可以通过表达式|(l掩码[106:53]&求和[53:0])来确定。因此,在l掩码的上面t位和差值的下面t位之间执行按位与运算。
位获取电路230也可以使用s掩码来获取溢出粘滞位和正常粘滞位。粘滞位是由于对保护位之后的所有位执行或运算而产生的。因此,必须使用s掩码来从差值获取尾部位。在上面的双精度浮点数的示例中,粘滞位只能在差值的较低的54位中。因此,计算溢出粘滞位是通过表达式|(s掩码[53:0]&差值[53:0])来实现的,而粘滞位是通过表达式|(s掩码[52:0]&差值[52:0])来实现的。
图7示出了示出根据一个实施例的示例性数据处理方法的流程图240。该过程从步骤250开始,在步骤250中生成中间值(w)。这个过程然后分成两部分。在步骤260中,计算中间值(w)中的前导零的数目。这可以通过计数电路140来实现。在步骤260完成时结束的时间窗期间,在步骤270例如,通过掩码生成电路150产生一个或多个掩码。
图8包含示出根据一个实施例使用所生成的掩码的示例的流程图280。在步骤290,将两个浮点有效数之间的和值(或差值)与所生成的掩码进行比较。这可以通过有效数溢出检测电路220来实现。大致同时地,将和值(或差值)左移计数电路140所指示的次数。这可以通过左移位器160来实现。在任一种情况下,在步骤310,从有效数溢出检测电路220确定是否发生了有效数溢出。如果是,那么在步骤320,对和值/差值执行1位右移(例如,通过右移位器180)。在任一情况下,在步骤330中,输出标准化的和值/差值。
以类似的方式,位获取电路230可以用于确定特定位的值,而不管是否发生了有效数溢出。可以输出这些值,以便根据这些值和正在执行的舍入操作对标准化的和值执行舍入运算。
因此,上面的实施例能够通过使用与和值/差值中的前导零的数目近似的中间值(w)来产生用于确定有效数溢出并且用于更快地获取和值/差值运算的特定位的掩码。通过这种方式,可以比使用中间值(w)的前导零计数所产生的掩码或不使用掩码更快地对输出进行标准化(以及对输出进行舍入)。这在“接近路径”操作中特别有用,其中输入的指数相同或相差一,因此可以得到具有许多前导零的数字。
考虑第一个处理的示例,siga=1001_1010和sigb=1000_1100。运算siga-sigb与执行
Figure BDA0001481537180000151
(这是二进制补码减法)相同。该运算的结果是0000_1110(忽略任何整数溢出)。因此,差值有四个前导零。中间值将有与差值相同(或多一个)的前导零。究竟如何计算w超出了本文的范围,并且已经在其他地方进行了详细讨论,在这种情况下,中间值是0000_1001。换句话说,预测了四个前导零。l掩码将是0000_1000,而s掩码将是0000_1111。|(l掩码[7:0]&差值[8:1])的结果是0。因此,没有发生溢出。这可以通过注意到在加法运算期间对高处四位求和产生0000而在低处的四位期间没有发生进位来确认。
考虑第二个处理的示例,其中siga=1001_1010和sigb=0110_1111。运算的结果是0000_1010。这种情况下的中间值是0000_0101。因此,l掩码是0000_0100,s掩码是0000_0111。因此,预测了五个前导零。然而,|(l掩码[7:0]&差值[8:1])的结果是1。因此,发生了有效数溢出。这可以通过注意到如果我们在加法运算期间对前五位求和则结果是00000来确认。同时,在低处的三位中存在进位。因此,通过w的预测相差1,所以前导零的正确数目是4。在图1的电路中,这将使得左移位器160基于w执行5位左移。然后,对有效数溢出的检测将使得右移位器180进一步执行1位右移,以执行对错误预测的校正。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在这种上下文中,“配置”是指硬件或软件的互连布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以提供所定义的操作。
虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域的相关技术人员在不背离由所附权利要求限定的本发明的范围和精神的情况下,对其进行各种改变、添加和修改。例如,在不背离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

Claims (18)

1.一种数据处理装置,包括:
差分电路,该差分电路确定第一浮点数和第二浮点数的绝对值的差值;
中间值生成电路,该中间值生成电路从所述第一浮点数和所述第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;
计数电路,该计数电路对所述中间值中的前导0的数目进行计数;以及
掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中
所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码,
所述中间值包括多个前导零,所述多个前导零后面是最高有效位1,所述最高有效位1后面是零个或更多个0和1;以及
所述最高有效位1的位置是:
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或者
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。
2.根据权利要求1所述的数据处理装置,其中
所述一个或多个掩码包括指示所述中间值中的所述最高有效位1的所述位置的l掩码;并且
所述掩码生成电路通过采用所述中间值并用同等数目的0替换所述零个或更多个0和1来产生所述l掩码。
3.根据权利要求2所述的数据处理装置,包括:
有效数溢出检测电路,该有效数溢出检测电路基于所述l掩码和所述差值来检测所述差值的有效数是否溢出。
4.根据权利要求3所述的数据处理装置,其中
所述有效数溢出检测电路被配置为通过在所述l掩码和所述差值的除低阶位之外的位之间执行逻辑与运算,来检测所述差值的所述有效数是否溢出。
5.根据权利要求3所述的数据处理装置,其中
所述有效数溢出检测电路被配置为通过在被左移一次的所述l掩码和所述差值的除低阶位之外的位之间执行逻辑按对与运算,来检测所述差值的所述有效数是否溢出。
6.根据权利要求3所述的数据处理装置,其中
响应于所述有效数溢出检测电路检测到所述差值的所述有效数溢出,对所述差值执行一位的纠正右移。
7.根据权利要求2所述的数据处理装置,包括:
位获取电路,该位获取电路基于所述l掩码返回所述差值的给定位的值。
8.根据权利要求7所述的数据处理装置,其中
所述给定位是以下位之一:溢出最低有效位、最低有效位、溢出保护位、和保护位。
9.根据权利要求7所述的数据处理装置,其中
所述位获取电路通过对所述差值的位的子集和所述l掩码的位的子集执行逻辑与运算,来返回所述差值的所述给定位的所述值;并且
所述差值的所述位的子集和所述l掩码的所述位的子集取决于所述给定位。
10.根据权利要求7所述的数据处理装置,其中
所述位获取电路通过对所述差值和被右移多次的所述l掩码执行逻辑与运算,来返回所述差值的所述给定位的所述值;并且
所述多次的次数取决于所述给定位。
11.根据权利要求1所述的数据处理装置,其中
所述一个或多个掩码包括指示所述差值中的除前导0之外的位的位置的s掩码;并且
所述掩码生成电路通过采用所述中间值并用同等数目的1来替换所述零个或更多个0和1来产生所述s掩码。
12.根据权利要求11所述的数据处理装置,包括:
位获取电路,该位获取电路基于所述s掩码返回所述差值的零个或更多个尾部位。
13.根据权利要求12所述的数据处理装置,其中
所述位获取电路通过对所述差值的位的子集和所述s掩码的位的子集执行逻辑与运算,来返回所述差值的所述零个或更多个尾部位。
14.根据权利要求13所述的数据处理装置,其中
所述尾部位包括溢出粘滞位;
所述差值的所述位的子集是所述差值的尾部x位,并且所述s掩码的所述位的子集是所述s掩码的尾部x位;并且
x等于所述差值中的粘滞位的数目加1。
15.根据权利要求13所述的数据处理装置,其中
所述尾部位包括粘滞位;
所述差值的所述位的子集是所述差值的尾部y位,并且所述s掩码的所述位的子集是所述s掩码的尾部y位;并且
y等于所述差值中的粘滞位的数目。
16.根据权利要求1所述的数据处理装置,其中
所述第一浮点数和所述第二浮点数被标准化。
17.一种数据处理设备,包括:
差分装置,该差分装置确定第一浮点数和第二浮点数的绝对值的差值;
中间值生成装置,用于从所述第一浮点数和所述第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;
计数装置,用于对所述中间值中的前导0的数目进行计数;以及
掩码生成装置,用于使用所述中间值产生一个或多个掩码,其中
所述掩码生成装置在所述计数装置对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码,
所述中间值包括多个前导零,所述多个前导零后面是最高有效位1,所述最高有效位1后面是零个或更多个0和1;以及
所述最高有效位1的位置是:
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或者
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。
18.一种数据处理方法,包括:
确定第一浮点数和第二浮点数的绝对值的差值;
从所述第一浮点数和所述第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;
对所述中间值中的前导0的数目进行计数;以及
使用所述中间值产生一个或多个掩码,其中
所述生成一个或多个掩码的步骤在所述对所述中间值中的前导0的数目进行计数的步骤的同时或之前发生,
所述中间值包括多个前导零,所述多个前导零后面是最高有效位1,所述最高有效位1后面是零个或更多个0和1;以及
所述最高有效位1的位置是:
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或者
与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。
CN201711193652.1A 2016-12-06 2017-11-24 前导零预测 Active CN108153513B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/370,212 US10606557B2 (en) 2016-12-06 2016-12-06 Leading zero anticipation
US15/370,212 2016-12-06

Publications (2)

Publication Number Publication Date
CN108153513A CN108153513A (zh) 2018-06-12
CN108153513B true CN108153513B (zh) 2023-05-23

Family

ID=60950209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711193652.1A Active CN108153513B (zh) 2016-12-06 2017-11-24 前导零预测

Country Status (5)

Country Link
US (1) US10606557B2 (zh)
JP (1) JP7044528B2 (zh)
KR (1) KR102459011B1 (zh)
CN (1) CN108153513B (zh)
GB (1) GB2559039B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6773979B2 (ja) * 2017-03-13 2020-10-21 富士通株式会社 処理回路及び処理回路の制御方法
CN109960486B (zh) * 2019-02-14 2021-06-25 安谋科技(中国)有限公司 二进制数据处理方法及其装置、介质和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928809A (zh) * 2005-09-09 2007-03-14 国际商业机器公司 用于执行浮点运算的系统、设备和方法
CN102855117A (zh) * 2011-06-29 2013-01-02 Arm有限公司 浮点加法器
CN103988170A (zh) * 2011-12-07 2014-08-13 Arm有限公司 用于将浮点值四舍五入为整数浮点值的装置和方法
CN104899004A (zh) * 2014-03-07 2015-09-09 Arm有限公司 一种用于将浮点操作数相乘的数据处理装置和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520028A (ja) * 1990-12-28 1993-01-29 Matsushita Electric Ind Co Ltd 加減算のための浮動小数点演算装置の仮数部処理回路
JP2757671B2 (ja) * 1992-04-13 1998-05-25 日本電気株式会社 プライオリティエンコーダおよび浮動小数点加減算装置
US5392228A (en) * 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US5805487A (en) * 1996-07-12 1998-09-08 International Business Machines Corporation Method and system for fast determination of sticky and guard bits
US5841683A (en) * 1996-09-20 1998-11-24 International Business Machines Corporation Least significant bit and guard bit extractor
JP4806453B2 (ja) * 2007-02-09 2011-11-02 富士通株式会社 演算処理装置、情報処理装置、および演算方法
US10846053B2 (en) 2014-06-27 2020-11-24 International Business Machines Corporation Underflow/overflow detection prior to normalization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928809A (zh) * 2005-09-09 2007-03-14 国际商业机器公司 用于执行浮点运算的系统、设备和方法
CN102855117A (zh) * 2011-06-29 2013-01-02 Arm有限公司 浮点加法器
CN103988170A (zh) * 2011-12-07 2014-08-13 Arm有限公司 用于将浮点值四舍五入为整数浮点值的装置和方法
CN104899004A (zh) * 2014-03-07 2015-09-09 Arm有限公司 一种用于将浮点操作数相乘的数据处理装置和方法

Also Published As

Publication number Publication date
US10606557B2 (en) 2020-03-31
KR20180064975A (ko) 2018-06-15
JP7044528B2 (ja) 2022-03-30
GB2559039A (en) 2018-07-25
KR102459011B1 (ko) 2022-10-27
JP2018097864A (ja) 2018-06-21
GB2559039B (en) 2019-06-05
GB201720229D0 (en) 2018-01-17
CN108153513A (zh) 2018-06-12
US20180157463A1 (en) 2018-06-07

Similar Documents

Publication Publication Date Title
CN107769791B (zh) 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN105468331B (zh) 独立的浮点转换单元
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
JP6360450B2 (ja) 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
US8499017B2 (en) Apparatus and method for performing fused multiply add floating point operation
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
CN111752526A (zh) 浮点相加
KR102412746B1 (ko) 부동 소수점 제곱근 연산 장치 및 방법
WO1999040508A1 (en) Fast adder/subtractor for signed floating point numbers
CN108153513B (zh) 前导零预测
EP2110740B1 (en) Computation processor, information processor, and computing method
TWI723681B (zh) 多輸入浮點加法器
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
JP2558669B2 (ja) 浮動小数点演算装置
US9658827B2 (en) Apparatus and method for performing reciprocal estimation operation
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
CN111124361A (zh) 算术处理装置及其控制方法
KR100974190B1 (ko) 부동 소수점을 이용한 복소수 곱셈방법
KR20150107614A (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
EP3289445B1 (en) Floating point computation apparatus and method
KR20230015844A (ko) 극소 검출
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
US20190155573A1 (en) Handling floating-point operations
JPH0498524A (ja) 浮動小数点演算装置
JPH0855015A (ja) 浮動小数点数のための算術演算装置

Legal Events

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