循环浮点数生成器和循环浮点数加法器的制作方法

文档序号:6352403阅读:190来源:国知局
专利名称:循环浮点数生成器和循环浮点数加法器的制作方法
技术领域
本发明涉及循环浮点数生成器和循环浮点数加法器,具体而言,涉及从输入定点数生成循环浮点数的生成器和用于将包括循环尾数的两个循环浮点数相加的计算单元。
背景技术
在计算机或算术硬件中,整数和浮点数一直广泛用于简单描述极大或极小的值。在整数格式中,容易使硬件执行计算,然而,存在整数格式能够表示小范围的缺陷。因此,必须换算算法,使得溢出不发生。在浮点格式中,能够表示范围广泛的值,并且无需换算算法以防止溢出。IEEE-754格式是用于浮点表示的最常用格式。图1示出常规浮点格式的示例。浮点格式由I比特符号、7比特指数和8比特尾数构成。浮点格式中值的相加复杂,并且电路大小和逻辑延迟大。然而,迄今为止,由于没有能够替换浮点格式的数值格式,因此,已为此格式中的计算进行了大量研究。
·
图2示出常规样式的浮点加法器。首先,在交换单元201中比较两个输入X和Y的绝对值。将较大的一个选择为A,并且将较小的一个选择为B。此处,EU)表示指数,并且M(X)表示浮点数X的尾数。如果X>Y,则E(X)和M(X)分别输入为E(A)和Μ(Α)。在桶型移位器A 203中,基于由减法器202计算的E(A)与E(B)之间的差,将B的尾数(M(B))向右移位。这称为“对齐”。随后,在定点主要加法器204中,根据X和Y的符号比特,将A的尾数(M(A))与移位的M(B)相加或相减。来自定点主要加法器204的计算结果提供到前导零计数器205,该计数器统计自最高有效比特(MSB)的连续零的数量,并且将前导零计数输出到桶型移位器B 206。前导零计数也用于调整指数。在进行相减,并且结果变得更小时,桶型移位器B 206根据前导零计数将定点加法器204的计算结果向左移位,这称为归一化。桶型移位器B 206将移位结果输出到舍入单元208。减法器207从指数E(A)减去前导零计数,并且将相减结果输出到舍入单元208。舍入单元208执行舍入,并且输出E(Z)和M(Z)作为最终计算结果。在图2中,虚线示出在浮点加法器中的关键路径。常规浮点格式中浮点数X的值使用指数E(X)、尾数M(X)和符号S(X)的整数值表述为以下公式(I)。
Z = (-1)_(M ⑷+/!)2_切."(O此处,q是用于偏移的整常数,并且h是表示隐藏尾数的整常数。即使具有上面所示浮点加法器的类型,其实现也是复杂的,并且加法器的大小比整数加法器大几倍,这是因为桶型移位器和减法器需要较大大小的逻辑电路,这使得关键路径更长。另外,加法器的逻辑延迟也大,这导致操作时钟频率受限并且有时要求准备也要求额外硬件大小的另外管线级。

发明内容
根据本发明的第一方面,提供了一种用于从输入定点数生成包括符号比特字段
(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器。生成器包括槽指派单元,配置成将定点数中的输入比特指派到多个槽,每个槽具有预确定数量的比特;符号比特生成单元,配置成根据输入定点数的符号生成符号比特字段(S);指数生成单元,配置成基于在输入定点数中具有I值的前导有效比特的比特位置,生成指数字段(E);以及尾数生成单元,配置成通过提取具有在相同槽内前导有效比特后的比特的第一比特群组,提取具有从包括前导有效比特的槽的下一槽的开始比特开始的第一比特群组中包括的比特与预确定比特之间多个比特的差对应的比特,以及在第二比特群组的最后比特后提供第一比特群组的开始比特,生成尾数字段(M)。根据本发明的第二方面,提供了一种用于将如上所述循环浮点数生成器生成的两个循环浮点数相加的循环浮点加法器。加法器包括解码器,配置成从输入循环浮点加法器的循环浮点数的每个指数提取分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置;展开单元,配置成根据循环位置展开尾数;加法器,配置成根据每个循环浮点数的符号比特将展开尾数相加;以及折叠单元,配置成折叠相加结果以生成循环尾数。根据本发明的第三方面,提供了一种从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的方法。方法包括以下步骤指派输入定点数到多个槽,每个槽具有预确定数量的比特;根据输入定点数的符号,生成符号比特字段
(S);基于在输入定点数中具有I值的前导有效比特的比特位置,生成指数字段(E);以及通过提取具有在相同槽内所述前导有效比特后的比特的第一比特群组,提取具有从包括前导有效比特的槽的下一槽的开始比特开始的第一比特群组中包括的比特与预确定比特之间多个比特的差对应的比特,以及在第二比特群组的最后比特后提供第一比特群组的开始比特,生成尾数字段(M)。根据本发明的第四方面,提供了一种用于使用循环浮点加法器将两个循环浮点数相加的方法。方法包括以下步骤从输入循环浮点加法器的循环浮点数的每个指数提取分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置;根据循环位置展开尾数;根据每个循环浮点数的符号比特将展开尾数相加;以及折叠相加结果以生成循环尾数。


图1示出常规浮点格式;
图2示出常规样式的浮点加法器;
图3示出带有无限长度的虚拟尾数的示例,并且也示出如何存储定点数;
图4A示出根据本发明的实施例的折叠和展开处理的示例;
图4B示出根据本发明的实施例的循环浮点数生成器的框 图5示出根据本发明的实施例的循环浮点格式的示例;
图6示出根据本发明的实施例的循环浮点加法器;
图7A示出根据本发明的实施例的尾数M(A)的示例; 图7B示出用于尾数M(A)的掩码和使用掩码的尾数的展开结果的示例;
图7C示出用于尾数M(B)的掩码和使用掩码的尾数的展开结果的示例;
图7D示出展开尾数相加和相加结果的折叠过程的示例;
图8示出带有7比特指数和24比特部分循环尾数的循环浮点格式的变化的一个示例; 图9示出部分循环尾数展开的示例;
图10示出部分循环尾数的展开结果的一个示例;
图11示出生成部分循环尾数的折叠过程的示例;
图12示出常规浮点和循环浮点有关的硅大小比较。
具体实施例方式现在将参照附图描述本发明的实施例。下述每个实施例将有助于理解从一般概述到更具体概念的多个概念。应注意的是,本发明的技术范围由权利要求书定义,并且不限于下述每个实施例。另外,在实施例中所述特征的所有组合并非始终对本发明是必不可少的。本发明的实施例遵循下述基本概念。如果尾数的长度足够,则尾数能够作为整数处理。整数的相加计算简单。另外,对于尾数,不要求极其准确,并且可删截或舍入最低有效比特(LSB)。基本概念源于想象尾数的无限长度,其中,尾数比特由8比特单元表示。(循环浮点格式)
图3示出带有无限长度的循环尾数的示例,并且也示出如何存储定点数。循环尾数由包括m0-m7的8比特单元构成,并且8比特单元在尾数中循环。例如,尾数比特m3可表示比特3、11、19等。然而,在本发明中,只选择这些比特之一,并且将其存储在用于尾数的寄存器中。基于自MSB具有值“I”的第一比特确定要选择的8比特。例如,假设输入24比特定点数(由比特23-0构成),并且比特23-20的值为“0”,以及具有值“I”的前导有效比特是比特19,同时,要选择的8比特从比特19-12确定而不考虑隐藏比特。在此情况下,由于比特19与比特11和3相比更重要,因此,用于m3的寄存器应用于存储比特19的值,并且比特11可被删截或舍入。在根据本发明的实施例中,定点数到尾数的转换称为“折叠”,并且尾数到定点数的逆转换称为“展开”。图4A示出相对于本发明的实施例而言折叠和展开处理的示例。图4B示出根据本发明的实施例、执行折叠处理的循环浮点数生成器的框图。生成器400包括寄存器,并且输出循环浮点数X={S (X),E(X), M(X) },寄存器包括已指派输入定点数F的多个槽。输入定点数F分别提供到符号比特生成器402、指数生成器403和尾数生成器404。符号比特生成器402根据输入定点数F的符号生成符号比特字段S (X)。指数生成器403根据具有I值的前导有效比特的下一比特的比特位置,生成循环浮点数X的指数字段E(X)。例如,在图4A中的前导有效比特是比特20,并且前导有效比特的下一比特是比特19。因此,指数E(X)表示比特19的比特位置。尾数生成器404从输入定点数F生成循环浮点数X的尾数字段M(X)。输入24比特定点数F如相对于图3所述按8比特单元分成3个单元,并且槽指派单元401具有用于存储每个8比特单元的3个槽。这里,包括比特23-26的单元称为最高有效比特(MSU),类似地,包括比特15-8和7-0的单元分别称为中间单元(IU)和最低有效比特(LSU)。在折叠过程中,具有“ I ”值的前导有效比特是比特20,并且从属于MSU和IU的比特19至比特12选择8比特。比特20被视为隐藏比特。先选择属于MSU的比特,并将其存储在为尾数生成器生成尾数准备的寄存器中。随后,选择并在寄存器的剩余区域中存储属于IU的比特。根据此折叠过程,寄存器存储在实施例中称为“循环尾数”的8比特尾数。为知道指示循环尾数中MSB (比特19)的位置的循环位置,生成了指数字段。指数字段E (X)表示循环浮点数X的指数,并且同时E (X)的最低有效3比特表示循环位置。通过组合生成的指数和循环尾数,生成在实施例中称为“循环浮点格式”的根据本发明的实施例的浮点格式。图5示出根据本发明的实施例的循环浮点格式的示例。如图5所示,有根据MSB和LSB的位置而不同的循环尾数的8种模式。指数相互不同,对应于MSB的位置(循环位置),并且每个指数的最低有效3比特能够指示循环位置。循环浮点格式的基本结构是基于IEEE 754,但尾数是8比特长,并且其总长度是16比特长。在展开过程中,基于指数的最低有效3比特识别循环位置,并且重新对齐比特。例如,如图4A所示,尾数分成两部分“0100”和“ 1011”,并且后者包括MSB和从根据指数的值识别的比特写入寄存器的“1011”,并且“0100”的剩余4比特写入寄存器中的随后区域。通过此展开处理,比特19到比特12根据尾数由“I”的“O”占据。(循环浮点加法器)
参照图6,下面将描述通过两个循环浮点数的相加或相减。图6示出根据本发明的实施例的循环浮点加法器。循环浮点加法器可使用具有处理功能和存储器功能的逻辑电路实现,包括ASIC、DSP、FPGA或其它可编程逻辑电路或CPU和用于CPU的工作存储器。首先,两个循环浮点数{E⑴,M(X)}和{E⑴,M(Y)}输入交换单元601,并且交换单元601比较它们。接着,比较指数E(X)和E (Y),并且如果一个指数大于另一指数,则将较大的指数识别为E(A),并且将较小的指数识别为E⑶。对应尾数M(X)和M(Y)分别识别为M(A)或M(B)。E(X)和E (Y)相同时,比较尾数M(A)和M(B),并且将较大的尾数识别为M(A),以及将对应指数识别为E(A)。将较小的尾数识别为M(B),以及将对应指数识别为E(B)。交换单元601将E(A)和E(B)输出到解码器602,以及将M(A)和M(B)输出到展开单元603。指数E (A)也提供到修改单元607。图7A示出具有比特“10010110”的尾数M(A)和具有比特“ 10010110”的M(B)的示例。在此示例中,具有以阴影示出的“I”的比特表示MSB。因此,M(A)和M(B)的相应循环位置是5和2。在解码器602中,从指数E (A)和E (B)提取最低有效3比特并将其输出到展开单元603。解码器602也基于提取的3比特生成要在展开中使用的掩码。图7B和7C分别示出用于M(A)和M(B)的掩码的示例。在此实施例中,掩码具有16比特,并且有效比特由“I”表示,以及其它比特由“O”表示。有效比特的开始位置根据循环位置确定,而循环位置根据从指数提取的最低有效3比特识别。例如,如图7B所示,如果最低有效3比特指示如为M㈧所示的循环位置5,则第一有效比特被指派到从开始比特起的第四比特,并且7个随后比特被确定为有效比特。对于如图7C所示的另一示例,如果最低有效3比特指示如为M(B)所示的循环位置2,则前导有效比特被指派到从开始比特起的第七比特,并且7个随后比特被确定为有效比特。
展开单元603使用来自解码器602的掩码和循环位置展开M(A)和M(B)。展开单元603基于循环位置将每个尾数分成包括前一部分和后一部分的两个部分,并且通过使用从解码器602提供的掩码,后一部分被写入指派到展开单元603的16比特寄存器。对于M(A)的示例,前一部分具有“100”,并且后一部分具有“10110”,而通过使用用于M (A)的掩码,后一部分被写入寄存器。在此情况下,前一部分“100”的开始比特在后一部分“10110”的最后比特后提供。M(A)的展开结果(Mu(A))在图7B中示出。在此情况下,隐藏比特添加在后一部分的前导比特前面,其在图7B中通过阴影示出。这是因为从定点数生成M(A)时,始终具有“I”值的前导I比特已被忽略,并且在执行展开时,隐藏比特应被恢复。对于M(B)的另一示例,前一部分具有“100101”,并且后一部分具有“10”,以及通过使用用于M(B)的掩码,后一部分被写入寄存器。在此情况下,前一部分“100101”的开始比特在后一部分“10”的最后比特后提供,并且隐藏比特(在图7C中通过阴影示出)也在M(B)的前导比特前恢复。M(B)的展开结果(Mu (B))在图7C中示出。展开结果Mu (A)和Mu (B)提供到定点主要加法器604。定点主要加法器604根据使用寄存器的输入循环浮点数的符号比特,使用Mu(A)和Mu(B)执行相加或相减。图7D示出Mu (A)和Mu⑶相加的示例。来自定点主要加法器404的计算结果提供到前导零计数器605和折叠单元606。前导零计数器统计自MSB的连续零的数量,并且将前导零计数输出到折叠单元606和修改单元607。展开单元606展开来自定点主要加法器604的计算结果以生成使用寄存器的尾数。图7D示出作为折叠结果的尾数的示例。计算结果是按8比特单元分成两个部分的16比特二进制数据。通过阴影示出的前导有效比特被指定为隐藏比特,并且前导有效比特的下一比特用于生成尾数。在图7D的示例中,“11101”从前一 8比特单元提取作为第一比特群组,并且“000”从后一 8比特提取作为第二比特群组。第一比特群组具有在相加结果中在相同槽内具有I值的前导有效比特后的比特。第二比特群组具有从后一 8比特的开始比特开始的第一比特群组中包括的比特与8比特之间多个比特的差对应的比特。折叠单元通过在第二比特群组“000 ”的最后比特后提供第一比特群组“11101”的开始比特,生成具有“00011101”的比特的尾数。在折叠过程后,尾数在舍入单元608中舍入并且作为M(Z)输出。合并单元707接收来自解码器602的指数E (A)和来自前导零计数器605的前导零计数。指数E(A)表示指定为隐藏比特的前导有效比特的下一更小比特的位置。例如,如图4所示的情况,比特19是前导有效比特20的下一更小比特。此处,定点数的大小预确定,例如,24比特。前导零计数和指数E(A)用于识别是否存在前导比特的位置更改。如果是,则根据前导零计数修改指数E(A),并且如果不是,则指数E (A)保持相同值。合并单元707经舍入单元608输出合并结果E (Z)。在下述内容中,将描述根据本发明的实施例的循环浮点格式的变化。图8示出带有7比特指数和24比特部分循环尾数的循环浮点格式的变化的一个示例。这对例如32比特定点数等更大比特定点数或者对于在循环浮点格式中使用24比特定点数中的所有比特称为部分循环浮点格式。部分尾数包括3个槽,每个槽具有8比特,并且每个槽包括循环尾数。指数表示在定点数中前导有效比特后的比特的位置,并且指数的最小3比特指示在尾数中每个槽的循环位置。要用于生成部分循环尾数的24比特从要处理的定点数提取。前导比特比定点数中前导有效比特小I比特,并且使用前导比特后的23比特。为包括前导比特的第I槽确定循环位置,并且基于与第I槽相同的循环位置,剩余比特占用随后的第2和第3槽。(循环浮点格式的变化和加法器)
图9示出部分循环尾数展开的示例。如图9所示,尾数包括3个槽,每个槽具有8比特。对于每个槽,执行展开,并且生成16比特掩码以根据定点数中的比特位置以正常顺序提取比特。例如,第I槽包括比特m23到m16,并且掩码被生成,使得它能够如图9所示以从m23到m16的正常顺序提取比特。掩码中有效比特(“I”)的位置可根据循环位置确定,例如,图9所示第I槽的循环位置是I。类似地,从第2和第3槽中,使用相同掩码提取比特m15到m8和m7到tv并且将所有提取的比特连接以生成定点数。部分循环尾数在根据图6的流程图的相加或相减计算中使用时,33比特寄存器准备用于计算,具有4个槽,每个槽具有8比特,并且另外I比特用于隐藏比特,如图10所示。图10示出部分循环尾数的展开结果的一个示例。在此示例中,展开单元603确定展开M(A)和M(B)的尾数的开始槽。首先,对于M(A),展开的尾数的前导比特必须位于第I槽中。用于展开尾数M(B)的开始槽位置根据以下公式(2)确定。
权利要求
1.一种用于从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器(400),包括 槽指派单元(401),配置成将所述定点数中的输入比特指派到多个槽,每个槽具有预确定数量的比特; 符号比特生成单元(402),配置成根据所述输入定点数的符号生成所述符号比特字段(S); 指数生成单元(403),配置成基于在所述输入定点数中具有I值的前导有效比特的比特位置,生成所述指数字段(E);以及 尾数生成单元(404),配置成通过以下步骤来生成所述尾数字段(M):提取具有在相同槽内所述前导有效比特后的比特的第一比特群组,提取第二比特群组,所述第二比特群组具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第一比特群组中包括的比特与预确定比特之间的多个比特的差对应的比特,以及在所述第二比特群组的最后比特后提供所述第一比特群组的开始比特。
2.如权利要求1所述的循环浮点数生成器(400),其中循环浮点数X的值使用所述符号比特字段(S)、所述指数字段(E)和所述循环尾数字段(M)表述为
3.一种用于将如权利要求1或2所述循环浮点数生成器(400)生成的两个循环浮点数相加的循环浮点加法器,包括 解码器(602),配置成从输入所述循环浮点加法器的循环浮点数的指数中的每个指数提取分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置; 展开单元(603),配置成根据所述循环位置来展开所述尾数;以及 加法器(604),配置成根据每个循环浮点数的符号比特将所述展开尾数相加;以及 折叠单元(606),配置成折叠相加结果以生成所述循环尾数。
4.如权利要求3所述的循环浮点加法器,其中, 所述展开单元(603)还配置成基于所述循环位置将每个尾数分成两部分,以及通过在后一部分的最后比特后提供前一部分的开始比特,展开每个尾数。
5.如权利要求4所述的循环浮点加法器,其中, 所述展开单元(603)还配置成 将所述循环浮点数的较大一个数的所述后一部分写入第一批多个槽的前导槽,以及 将所述循环浮点数的较小一个数的所述后一部分写入对应于在所述循环浮点数的指数之间差的第二批多个槽的槽, 其中所述第一和第二批多个槽的每个槽的比特长度等于所述循环大小C,并且所述C是2的整数幂。
6.如权利要求5所述的循环浮点加法器,其中 所述加法器(604)还配置成将指派到所述第一批多个槽和所述第二批多个槽的每个尾数相加,以及将相加结果指派到第三批多个槽,以及所述折叠单元(606)还配置成 选择具有在所述相加结果中在相同槽内具有I值的前导有效比特后的比特的第三比特群组, 选择具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第三比特群组中包括的比特与8比特之间的多个比特的差对应的比特的第四比特群组,以及 通过在所述第四比特群组的最后比特后提供所述第三比特群组的开始比特来折叠所述相加结果,以生成所述循环尾数。
7.如权利要求3到6任一项所述的循环浮点加法器,还包括 计数器(605),配置成从所述相加结果的开始比特统计前导零计数;以及 修改单元(607),配置成基于所述前导零计数,修改所述循环浮点数的较大一个数的指数。
8.如权利要求3到7任一项所述的循环浮点加法器,其中, 每个尾数的比特长度是循环大小c的整数倍,以及 所述循环位置由所述指数的最小3比特指示。
9.一种从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的方法,所述方法包括以下步骤 指派(401)所述输入定点数到多个槽,每个槽具有预确定数量的比特; 根据所述输入定点数的符号,生成(402)所述符号比特字段(S); 基于在所述输入定点数中具有I值的前导有效比特的比特位置,生成(403)所述指数字段(E);以及 通过以下步骤生成(404)所述尾数字段(M):提取具有在相同槽内所述前导有效比特后的比特的第一比特群组,提取第二比特群组,所述第二比特群组具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第一比特群组中包括的比特与预确定比特之间的多个比特的差对应的比特,以及在所述第二比特群组的最后比特后提供所述第一比特群组的开始比特。
10.一种用于使用循环浮点加法器将两个循环浮点数相加的方法,包括以下步骤 从输入所述循环浮点加法器的循环浮点数的指数中的每个指数提取(602)分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置; 根据所述循环位置来展开(603)所述尾数; 根据每个循环浮点数的符号比特将所述展开尾数相加(604);以及 折叠(606)相加结果以生成所述循环尾数。
全文摘要
本发明的一方面将提供用于从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器(400)。生成器将在定点数中的输入比特指派到多个槽,生成符号比特字段(S),基于前导有效比特的比特位置生成指数字段(E),以及通过提取第一比特群组和第二比特群组,并且通过在第二比特群组的最后比特后提供第一比特群组的开始比特,生成尾数字段(M)。
文档编号G06F7/483GK103069381SQ20108006886
公开日2013年4月24日 申请日期2010年7月1日 优先权日2010年7月1日
发明者浅中和典 申请人:瑞典爱立信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1