买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】前导零预测_ARM 有限公司_201711193652.1 

申请/专利权人:ARM 有限公司

申请日:2017-11-24

公开(公告)日:2023-05-23

公开(公告)号:CN108153513B

主分类号:G06F7/523

分类号:G06F7/523

优先权:["20161206 US 15/370,212"]

专利状态码:有效-授权

法律状态:2023.05.23#授权;2019.12.27#实质审查的生效;2018.06.12#公开

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

主权项:1.一种数据处理装置,包括:差分电路,该差分电路确定第一浮点数和第二浮点数的绝对值的差值;中间值生成电路,该中间值生成电路从所述第一浮点数和所述第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目的预测值的多个前导0,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;计数电路,该计数电路对所述中间值中的前导0的数目进行计数;以及掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导0的数目进行计数的同时或之前产生所述一个或多个掩码,所述中间值包括多个前导零,所述多个前导零后面是最高有效位1,所述最高有效位1后面是零个或更多个0和1;以及所述最高有效位1的位置是:与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或者与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。

全文数据:前导零预测技术领域[0001]本公开涉及数据处理。例如,它可以涉及浮点数。背景技术[0002]浮点数可以表示为有效数乘以基数的指数次幂的组合。例如,值0.0012可以表示为1.2ΧΠΓ3,其中有效数为1.2,基数为10,指数为-3。在二进制表示中,基数通常是2。标准化的浮点数的有效数至少为1且小于2。当从一个浮点数中减去另一浮点数时,其结果可能是非常小的数,即,可能有大量的前导零。以前已经提出了通过对前导零的数目(实际数目或预测数目)进行计数来标准化该数目以便生成一个或多个掩码。如果在计算差值之前没有这样做如执行融合的乘加运算时常常是这种情况),那么可能会在计算前导零的数目以便可以对差值进行标准化时导致停转stall。发明内容[0003]从第一示例配置来看,提供了一种数据处理装置,包括:中间值生成电路,该中间值生成电路从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导〇的数目的预测值的多个前导〇,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导0的数目与所述预测值至多相差一;计数电路,该计数电路对所述中间值中的前导〇的数目进行计数;以及掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中,所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导〇的数目进行计数的同时或之前产生所述一个或多个掩码。[0004]从第二示例配置来看,提供了一种数据处理设备,包括:中间值生成装置,用于从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导〇的数目的预测值的多个前导〇,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导〇的数目与所述预测值至多相差一;计数装置,用于对所述中间值中的前导〇的数目进行计数;以及掩码生成装置,用于使用所述中间值产生一个或多个掩码,其中,所述掩码生成装置在所述计数装置对所述中间值中的前导〇的数目进行计数的同时或之前产生所述一个或多个掩码。[0005]从第三示例配置来看,提供了一种数据处理方法,包括:从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导〇的数目的预测值的多个前导〇,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导〇的数目与所述预测值至多相差一;对所述中间值中的前导〇的数目进行计数;以及使用所述中间值产生一个或多个掩码,其中,所述生成一个或多个掩码的步骤在所述对所述中间值中的前导0的数目进行计数的步骤的同时或之前发生。附图说明[0006]仅通过举例的方式,参考附图中所示的实施例来进一步描述本发明,其中:[0007]图1示出了根据一个实施例的示例性数据处理装置;[0008]图2示出了根据一个实施例的示例性掩码生成器;[0009]图3示出了根据一个实施例的示例性初始掩码生成电路;[0010]图4示意性地示出了根据一个实施例的1掩码生成电路的示例;[0011]图5示意性地示出了根据一个实施例的s掩码生成电路的示例;[0012]图6示意性地示出了使用掩码来检测有效数溢出并获取差值的特定位的电路;[0013]图7包含示出根据一个实施例的示例性数据处理方法的流程图;和[00M]图8包含示出根据一个实施例的使用所生成的掩码的示例的流程图。具体实施方式[0015]在参考附图讨论实施例之前,提供实施例的以下描述。[0016]根据一个示例配置,提供了一种数据处理装置,包括:中间值生成电路,该中间值生成电路从第一浮点数和第二浮点数生成中间值,其中,所述中间值包括指示所述第一浮点数和所述第二浮点数的绝对值之间的差值中的前导〇的数目的预测值的多个前导〇,所述第一浮点数和所述第二浮点数的所述绝对值之间的所述差值中的前导〇的数目与所述预测值至多相差一;计数电路,该计数电路对所述中间值中的前导〇的数目进行计数;以及掩码生成电路,该掩码生成电路使用所述中间值产生一个或多个掩码,其中,所述掩码生成电路被配置为在所述计数电路对所述中间值中的前导〇的数目进行计数的同时或之前产生所述一个或多个掩码。[0017]给定第一浮点数和第二浮点数,中间值生成电路生成中间值。中间值可以被用于预测第一浮点数a和第二浮点数b之间的绝对差值中的前导零的数目。应该理解,在二进制算法中,可以通过执行加法运算来计算差值,因此术语“差值”未必需要执行减法,而是指两项的绝对值之间的差值,即II|a|-|b||。中间值可以被用于确定前导零的数目的预测值,因为预测值可能差1。具体地,预测值可能没有考虑在绝对差值计算期间的任何阶段出现“进位”的可能性。在已经生成中间值的任何情况下,掩码生成电路被用于使用该中间值来产生一个或多个掩码。此外,掩码是在计数电路对中间值中的前导零的数目进行计数的同时或之前生成的。因此,掩码的生成速度比如下方法更快:对中间值中的前导零的数目进行计数,然后使用该信息生成掩码。因此,可以更快地得到掩码,并且可以在计算浮点数的绝对值之间的差值的同时得到该掩码。中间值可以是计算两个浮点数之间的绝对差值的中间值,例如,它可以是在计算中途使用的值。例如,掩码可以直接从中间值生成。[0018]在一些实施例中,数据处理装置包括差分电路,该差分电路确定所述第一浮点数和所述第二浮点数的所述绝对值的差值。这种差分电路可以用来确定两个浮点数的绝对值之间的实际差值。然而,该差值可能没有被标准化,尽管可以基于中间值来执行标准化。[0019]在一些实施例中,所述中间值包括多个前导零,该多个前导零后面是最高有效位1,该最高有效位1后面是零个或更多个〇和1;并且所述最高有效位1的位置是:与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的最高有效位1的位置相同,或与所述第一浮点数和所述第二浮点数的所述绝对值的所述差值中的所述最高有效位1的所述位置相邻。在这些实施例中,中间值通过具有与差值相同数目(或者多余一个)的前导零来指示两个浮点数的绝对值之间的差值中的前导零的数目。例如,差值000001001可能具有中间值000001101或000000101,它们分别具有相同数目和多一个的前导零。[0020]在一些实施例中,所述一个或多个掩码包括指示所述中间值中的所述最高有效位1的所述位置的1掩码(Imask;并且所述掩码生成电路通过采用所述中间值并用同等数目的0替换所述零个或更多个0和1来产生所述1掩码。掩码生成电路从中间值产生的掩码之一是1掩码。1掩码由连续数个前导零和跟在其后的连续数个前导一组成。连续前导零的数目与浮点数的绝对值之间的差值中的前导零的数目相同或相差一个。例如,给定差值00110,当前导零的数目分别是相同或者多一个时,可能的1掩码的值是:00111和00011。[0021]在一些实施例中,数据处理装置包括有效数溢出检测电路,该有效数溢出检测电路基于所述1掩码和所述差值来检测所述差值的有效数是否溢出。有很多方法可以用于确定有效数是否溢出。然而,在一些实施例中,所述有效数溢出检测电路被配置为通过在所述1掩码和所述差值的除低阶位之外的位之间执行逻辑与AND运算来检测所述差值的所述有效数是否溢出。例如,通过在相应的成对的位之间执行逻辑与运算,然后执行减少或reduction0R运算(S卩,通过在与运算得到的所有位之间执行或运算),可以确定有效数是否溢出的总体结果。这具有如下效果:如果相应的成对位之间的逻辑与运算之一是正的即,如果1掩码中的相应位和差值中的相应位都是‘1’),则发生了有效数溢出。当然,应该理解,可以执行其他的逻辑运算,以便不同地指示有效数溢出的存在。例如,通过反转减少或运算的结果,“0”指示发生了有效数溢出。[0022]在一些实施例中,所述有效数溢出检测电路被配置为通过在被左移一次的所述1掩码和所述差值的除低阶位之外的位之间执行逻辑按对与运算,来检测所述差值的所述有效数是否溢出。在这样的实施例中,不是“连线wiring”要比较的相关位,而是执行逻辑左移运算,将位在物理上左移一位。如前所述,可以对经过移位的1掩码和差值之间的相应位执行按位与运算。在一些实施例中,可以执行进一步的减少或运算,以得到指示是否发生了有效数溢出的指示符。应该理解的是,还存在其他确定溢出的方法。例如,在对相应位执行按位逻辑与运算之前,可以对差值执行向右的逻辑移位。[0023]在一些实施例中,数据处理装置包括位获取电路,该位获取电路基于所述1掩码返回所述差值的给定位的值。这种位获取电路可以返回多个不同的位。例如,在一些实施例中,所述给定位是溢出最低有效位、最低有效位、溢出保护位、和保护位之一。最低有效位指的是有效数的最低有效位。保护位指的是下一个最低有效位例如,不是有效数的一部分的最高有效位)。这些位中的每一位在舍入过程中被使用。溢出最低有效位和溢出保护位指的是有效数溢出时的最低有效位和保护位。有效数的溢出使得这些位的有效性增加一位。[0024]位获取电路可以通过多种方式获取给定位。然而,在一些实施例中,所述位获取电路通过对所述差值和被右移多次的所述1掩码执行逻辑与运算,来返回所述差值的所述给定位的所述值;并且所述多次的次数取决于所述给定位。在一些其他实施例中,差值可能根据给定位被左移多次。[0025]在一些实施例中,所述一个或多个掩码包括指示所述差值中除前导0之外的位的位置的s掩码;并且所述掩码生成电路通过采用所述中间值并用同等数目的1来替换所述零个或更多个O和1来产生所述S掩码。S掩码是可以由掩码生成电路产生的第二掩码。1掩码是通过将最高有效位1之后的位设置为零来产生的,而S掩码将最高有效位1之后的所有位设置为1掩码中的位数等于中间值中的位数。[0026]在一些实施例中,数据处理装置包括位获取电路,该位获取电路基于所述s掩码返回所述差值的零个或更多个尾部位trailingbits。因此,s掩码可以用来从差值中返回多个连续的最低有效位。[0027]有很多方法可以用s掩码来获取差值的尾部位。然而,在一些实施例中,所述位获取电路通过对所述差值的位的子集和所述s掩码的位的子集执行逻辑与运算,来返回所述差值的所述零个或更多个尾部位。在一些实施例中,所述子集包括s掩码的所有位和差值的所有位。在一些其他实施例中,所述子集是严格子集并且仅包括s掩码和差值的一些位。[0028]在一些实施例中,所述尾部位包括溢出粘滞位;所述差值的所述位的子集是所述差值的尾部X位,并且所述s掩码的所述位的子集是所述s掩码的尾部X位;并且X等于所述差值中的粘滞位的数目加1。例如,差值的尾部X位和s掩码的尾部X位可以指例如,差值和s掩码的X个最低有效位。溢出粘滞位是指在有效数溢出的情况下将变成粘滞位的位例如,由于在有效数的最高有效位的差分计算期间发生进位而左移一次)。[0029]在一些实施例中,所述尾部位包括粘滞位;所述差值的所述位的子集是所述差值的尾部y位,并且所述s掩码的所述位的子集是所述s掩码的尾部y位;并且y等于所述差值中的粘滞位的数目。[0030]在一些实施例中,所述第一浮点数和所述第二浮点数被标准化。例如,第一浮点数和第二浮点数在计数电路对前导零的数目进行计数之前并且在掩码生成电路产生一个或多个掩码之前被标准化。标准化的浮点数的有效数大于或等于1且小于2。[0031]现在将参照附图描述具体实施例。[0032]浮点FP是使用少量位来近似实数的有用方法。IEEE754-2008FP标准提出了多种不同格式的FP数,包括二进制64也称为双精度或DP、二进制32也称为单精度或SP、和二进制16也称为半精度或HP。数字64、32、和16是指每种格式所需要的位数。[0033]FP数与科学课程中教导的“科学记数法”非常相似,在FP数中,用-2.OXIO6来代替-200万。这个数字有如下部分:符号(在这种情况下是负的)、有效数2.0、指数的基数10、和指数6。所有这些部分在FP数中都是类似的,虽然有不同之处,但其中最重要的是组成部分以二进制数存储,指数的基数始终为2。[0034]更确切地说,FP数包括符号位、多个偏置指数位、和多个小数位。具体而言,我们感兴趣的格式包括以下几个部分:[0035][0036]负数的符号是1,正数的符号是0。通常,每个数字包括零都有符号。[0037]指数被偏置,这表示真指数不同于存储在数字中的指数。例如,偏置的SP指数是8位长,范围从0到255。指数0和255是特殊情况,但所有其他指数都偏移127,这意味着真指数比偏置的指数小127。最小的偏置指数为I,其对应于真指数-126。最大偏置指数为254,其对应于真指数127。即和DP指数的工作方式相同,偏移如上表所示。[0038]SP指数255或DP指数2047或HP指数31被保留用于无穷数和被称为NaN不是数字)的特殊符号。无穷数可以是正数或负数具有零小数。具有指数255和非零小数的任何数字都是NaN。无穷数提供了饱和值,所以它实际上表示类似于“该计算生成的数字大于我们可以以这种格式表示的数字”的内容。针对在实数上没有数学定义的运算,例如,除以零或对负数取平方根,返回NaN。[0039]在任何格式中,指数零都被保留用于次正规数和零。正规数表示以下值:[0040][0041]其中,e是从偏置指数计算得出的真指数。“1.小数”被称为有效数,1不作为FP数的一部分被存储,而是从指数推断得出。除了零和最大指数以外的指数表示形式为“1.小数”的有效数。指数零指示形式为“〇.小数”的有效数,针对给定格式的真指数等于1-偏移。这样的数被称为次正规数历史上,这些数被称为非正规数,但现代用法喜欢称为次正规数)。[0042]具有指数和等于零的小数的数是零。[0043]下表中有一些HP格式的示例数字。这些条目是二进制的,添加了“字符以提高可读性。请注意,次正规条目(表中第4行,指数为零产生与前一行中的正规条目不同的有效数。[0044][0045]FP实现方式的复杂性的很大一部分是由于次正规数,因此它们通常由微代码或软件来处理。可以用硬件处理次正规数,与软件或微代码相比,这些运算被加速10到100倍。[0046]处理符号的FP方式被称为符号-幅值,其与计算机中存储整数的常用方式二进制补码不同。在符号-幅值表示中,相同数字的正数和负数版本仅在符号位上不同。由符号位和3个有效数位组成的4位符号-幅值整数将正1和负1表示为:[0047]+1=0001-1=1001[0048]在二进制补码表示中,η位整数i由二进制n+1位值2n+i的低阶η位表示,因此4位二进制补码整数将正1和负1表示为:[0049]+1=0001-1=1111[0050]二进制补码格式对于有符号的整数而言实际上是通用的,因为它简化了计算机算法。[0051]定点数看起来完全像整数,但实际上其代表具有多个小数位的值。在广泛采用FP之前,传感器数据通常采用定点格式,并且存在大量被编写的定点软件。使用定点数工作非常繁琐,因为程序员必须跟踪“二进制点”,即数字的整数和小数部分之间的分隔符,并且还必须不断对数字进行移位以保持位在正确的位置。FP数没有这个困难,因此,期望能够在定点数和FP数之间进行转换。能够实现转换也意味着我们仍然可以使用定点软件和数据,但是我们在编写新软件时不限于定点。[0052]IEEE-754标准要求大多数FP运算在计算时如同以无限的范围和精度来完成的运算,然后进行舍入以适合FP数。如果计算结果与FP数完全匹配,则始终返回该值,但计算通常会产生在两个连续的浮点数之间的值。舍入是选择应该返回两个连续数字中的哪一个的过程。[0053]存在几种舍入方式称为舍入模式),它们的六个示例是:[0054][0055]这个定义并没有以实际方式告诉我们如何进行舍入。一种常用的实现方式是执行运算,查看截断值即,适合FP格式的值)以及所有剩余的位,然后在某些条件成立的情况下调整截断值。这些计算都基于:[0056]L-最低截断值的最低有效位[0057]G-保护下一个最高有效位S卩,不包括在截断中的第一位)[0058]S-粘滞不是截断的一部分的所有剩余位的逻辑或[0059]给定这三个值和截断值,我们总是可以根据下表计算正确的舍入值:[0060][0061]例如,考虑两个4位有效数相乘,然后舍入到一个4位有效数。[0062]有效数1=1011十进制11[0063]有效数2=0111十进制7[0064]相乘得到:[0065]有效数IX有效数2=1001_101十进制77[0066]四个最低有效位1101按其顺序与位LGss对应。[0067]截断的4位结果的最低有效位被标记为L,下一位是G,并且S是被标记为8的剩余位的逻辑或(即,S=OI1=1。为了进行舍入,我们根据上表中的舍入模式和计算来调整我们的4位结果(1001。从而例如在RNA舍入中,G被设置,所以我们返回1001+1=1010。对于RX舍入,GIS为真,所以我们将L设置为1其已经是1,所以在这种情况下没有任何变化并返回IOOlo[0068]图1示出了根据一个实施例的数据处理装置100。在这个示例中,数据处理装置接收两个有效操作数siga和sigb,它们分别有106位。在这个示例中,分配给“siga”的值是siga和sigb中较大的一个。然而,在替代实施例中,可以重复数据处理装置100以便计算siga-sigb和sigb-siga。每个操作数都是106位,因为这是融合有效数的大小,在融合乘加FMA运算的计算期间使用。应该理解的是,也可以使用其他的有效数大小。这两个值被传递到加法器电路110。虽然意图是确定值siga和值sigb之间的差值,但是这可以通过将sigb转换成二进制补码格式并且使siga、sigb和1相加来实现。这是通过使用加法器电路110并且将加法器电路110的进位标志设置为“Γ以实现加“Γ来实现的。值siga和sigb还被传递到中间值生成电路130,中间值生成电路130形成前导零预测器120的一部分,前导零预测器120估计值siga和值sigb之间的差值中的前导零的数目。中间值生成电路130产生中间值w。中间值w是这样的值,即它的前导零的数目与由加法器电路110计算的差值中的前导零的数目相等或者相差一。因此,中间值生成电路能够预测差值中的前导零的数目。对中间值w中的前导零的数目进行计数的计数电路140对中间值w进行分析。结果(1移位Ishift是7位数字,其向移位电路160提供关于应当执行多少次左移的估计,从而使得由加法器电路110计算的差值将被标准化。[0069]由中间值生成电路130产生的中间值w被单独提供给掩码生成电路150,以便生成一个或多个位掩码。掩码生成电路150的操作将在后面更详细地示出。然而,这些掩码中的一个或多个被传送到溢出和舍入电路170,该溢出和舍入电路使用由掩码生成电路150产生的一个或多个掩码来确定是否发生了有效数溢出。当由于在加法器电路110执行计算的过程中发生进位而导致有效数的大小增加时,发生有效数溢出。如果出现这种情况,则使用右移位器180将有效数右移一位以进行补偿。这个操作的结果右移0或1位是siga和sigb之间的标准化的差值。在图1的电路中,掩码生成电路150从中间值w产生掩码,并因此在计数电路140完成计数操作的同时或之前产生掩码。通过这种方式,溢出和舍入电路170有可能更快地确定是否存在有效数溢出。[0070]图2示出了根据一个实施例的掩码生成电路150的示例。掩码生成电路150包括初始掩码电路190,其从中间值生成电路130接收中间值w,并对中间值执行一组初始计算。然后,将这些初始计算传递给计算1掩码的1掩码生成电路200以及计算s掩码的s掩码生成电路210。1掩码包含与中间值w相同数目的前导零,这些前导零后面是1。其余的位全都是零。s掩码也包含与中间值w相同数目的前导零,这些前导零后面是1。其余的位全都是一。因此,举例来说,给定中间值W为000110100100,1掩码将是000100000000,S掩码将是000111111111。这些掩码可以用来根据需要确定是否发生了有效数溢出或者从差值计算中提取特定的位。[0071]图3示出了适用于16位数字的初始掩码电路190的示例。本领域技术人员将理解,该结构可以被泛化以产生一组初始计算。这些初始计算表示w的连续位的不同子集的逻辑或。如本领域技术人员将会理解的,如果这些位中的任何一位是“1”,则这些位的子集的逻辑或将是“1”。每对相邻的位例如,WO和wl,w2和w3,w3和w4等作为输入被插入到或OR门。来自一级OR门的输出作为输入被提供给下一级OR门。通过这种方式,每一级的OR门的数目减半,直到最高级,存在指示输入中是否有任何位为“Γ的一个OR门。此外,每个OR门滁了第一级中的那些OR门)的第一输入作为初始计算被提供给1掩码生成电路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,。[0072]图4示出了由多个与AND门构成的1掩码生成电路200,其中每个与门对两个输入中的一个取反。1掩码生成电路使用由初始掩码电路190产生的初始计算来产生表示1掩码的位的一系列输出位m0...ml5。在第一级,每组包括成对的位例如,w0和wl,w2和w3,w3和w4等),伴随着较高有效位(S卩,第一级处的较高有效位本身)的OR的反转形式,较高有效位继续通过,而较低有效位作为AND门的输入被接收。换句话说,在每组内,如果较高有效位的一半不是T,那么较低有效位的一半只能是T。例如,在第一级的情况下,如果wl5不是“1”,则wl4只能是“1”。这产生了针对每组的一对输出,第一输出指示该组的上半部分是否是“1”,第二输出指示该组的下半部分是否是“1”。在随后的每级,组合相邻的组。因此,在第二级,第一组涉及前4位w〇-w3。再次,伴随着较高有效位的OR的反转形式,上半部分的位自动继续通过,而较低有效位的一半作为AND门的输入被接收。换句话说,在每组中,如果较高有效位的一半不是“1”,那么较低有效位的一半只能是“1”。因此,在第二级的情况下,w3和w2继续通过。相反,wO和wl分别与或3:2进行与运算。这产生了四个输出。[0073]各级中的输出数目是相同的。类似地,在每级,与门的数目等于b2,其中b是w的位数。[0074]图5示出了s掩码电路210。除了部分取反的AND门由OR门取代之外,s掩码电路与图4所示的1掩码电路相对应。[0075]图6示意性地示出了溢出和舍入电路170,其使用1掩码和s掩码来检测有效数溢出并获取由加法器电路110计算的差值的特定位。溢出和舍入电路170接收由掩码生成电路150产生的一个或多个掩码。[0076]1掩码被有效数溢出检测电路220用于检测有效数溢出。这可以通过将1掩码左移一位,在移位后的1掩码和差值之间执行按位与运算,然后对结果执行减少或运算来实现。然而,在实际中,不必实际执行移位操作,而是可以直接连接适当的位,从而可以在期望的位上操作。具体而言,可以通过表达式I1掩码[105:0]差值[106:1]来计算有效数溢出信号。[0077]溢出和舍入电路170还包括位获取电路230,该位获取电路从由加法器电路110计算的差值中获取特定位。例如,所请求的位可以是溢出最低有效位、最低有效位、溢出保护位、和保护位。如果有效数已经溢出(因此,溢出保护位的位置与最低有效位相同),则最低有效位和保护位的溢出变体与最低有效位和保护位对应。因此,可以通过将1掩码右移52位来检测溢出最低有效位,可以通过将1掩码右移53位来检测溢出保护位或最低有效位),并且可以通过将1掩码右移54位来检测保护位。在每种情况下,移位后的1掩码然后被与差值进行逐位与运算,并执行减少或运算。移位的次数取决于siga和sigb的性质。在这个示例中,假设两个值都是双精度的,因此有效数的长度是53位。再次,在实践中,不必实际对1掩码进行移位。相反,可以直接连接相应的位,以便操作相关的位。因此,在这个示例中,溢出最低有效位可以通过表达式I1掩码[106:51]差值[55:0]来确定,最低有效位或溢出保护位可以通过表达式I1掩码[106:52]差值[54:0]来确定,同时,保护位可以通过表达式1掩码[106:53]求和[53:0]来确定。因此,在1掩码的上面t位和差值的下面t位之间执行按位与运算。[0078]位获取电路230也可以使用s掩码来获取溢出粘滞位和正常粘滞位。粘滞位是由于对保护位之后的所有位执行或运算而产生的。因此,必须使用s掩码来从差值获取尾部位。在上面的双精度浮点数的示例中,粘滞位只能在差值的较低的54位中。因此,计算溢出粘滞位是通过表达式Is掩码[53:0]差值[53:0]来实现的,而粘滞位是通过表达式Is掩码[52:0]差值[52:0]来实现的。[0079]图7示出了示出根据一个实施例的示例性数据处理方法的流程图240。该过程从步骤250开始,在步骤250中生成中间值w。这个过程然后分成两部分。在步骤260中,计算中间值w中的前导零的数目。这可以通过计数电路140来实现。在步骤260完成时结束的时间窗期间,在步骤270例如,通过掩码生成电路150产生一个或多个掩码。[0080]图8包含示出根据一个实施例使用所生成的掩码的示例的流程图280。在步骤290,将两个浮点有效数之间的和值或差值与所生成的掩码进行比较。这可以通过有效数溢出检测电路220来实现。大致同时地,将和值或差值左移计数电路140所指示的次数。这可以通过左移位器160来实现。在任一种情况下,在步骤310,从有效数溢出检测电路220确定是否发生了有效数溢出。如果是,那么在步骤320,对和值差值执行1位右移例如,通过右移位器180。在任一情况下,在步骤330中,输出标准化的和值差值。[0081]以类似的方式,位获取电路230可以用于确定特定位的值,而不管是否发生了有效数溢出。可以输出这些值,以便根据这些值和正在执行的舍入操作对标准化的和值执行舍入运算。[0082]因此,上面的实施例能够通过使用与和值差值中的前导零的数目近似的中间值w来产生用于确定有效数溢出并且用于更快地获取和值差值运算的特定位的掩码。通过这种方式,可以比使用中间值w的前导零计数所产生的掩码或不使用掩码更快地对输出进行标准化(以及对输出进行舍入)。这在“接近路径”操作中特别有用,其中输入的指数相同或相差一,因此可以得到具有许多前导零的数字。[0083]考虑第一个处理的不例,siga=1001_1010和sigb=1000_1100。运算siga-sigb与执行(这是二进制补码减法相同。该运算的结果是OOOOjllO忽略任何整数溢出)。因此,差值有四个前导零。中间值将有与差值相同(或多一个的前导零。究竟如何计算W超出了本文的范围,并且已经在其他地方进行了详细讨论,在这种情况下,中间值是0000jOOl。换句话说,预测了四个前导零。1掩码将是0000jOOO,而S掩码将是0000_1111。I1掩码[7:0]差值[8:1]的结果是0。因此,没有发生溢出。这可以通过注意到在加法运算期间对高处四位求和产生OOOO而在低处的四位期间没有发生进位来确认。[0084]考虑第二个处理的示例,其中siga=10011010和Sigb=Oliojlll。运算的结果是οοοο_ιοιο。这种情况下的中间值是oooo_oioi。因此,1掩码是oooo_oioo,s掩码是〇〇〇〇_0111。因此,预测了五个前导零。然而,I1掩码[7:0]差值[8:1]的结果是1。因此,发生了有效数溢出。这可以通过注意到如果我们在加法运算期间对前五位求和则结果是〇〇〇〇〇来确认。同时,在低处的三位中存在进位。因此,通过W的预测相差1,所以前导零的正确数目是4。在图1的电路中,这将使得左移位器160基于W执行5位左移。然后,对有效数溢出的检测将使得右移位器180进一步执行1位右移,以执行对错误预测的校正。[0085]在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在这种上下文中,“配置”是指硬件或软件的互连布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以提供所定义的操作。[0086]虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域的相关技术人员在不背离由所附权利要求限定的本发明的范围和精神的情况下,对其进行各种改变、添加和修改。例如,在不背离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。

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

百度查询: ARM 有限公司 前导零预测

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。