CN103069381A - 循环浮点数生成器和循环浮点数加法器 - Google Patents

循环浮点数生成器和循环浮点数加法器 Download PDF

Info

Publication number
CN103069381A
CN103069381A CN2010800688670A CN201080068867A CN103069381A CN 103069381 A CN103069381 A CN 103069381A CN 2010800688670 A CN2010800688670 A CN 2010800688670A CN 201080068867 A CN201080068867 A CN 201080068867A CN 103069381 A CN103069381 A CN 103069381A
Authority
CN
China
Prior art keywords
bit
circulation
mantissa
floating
index
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.)
Granted
Application number
CN2010800688670A
Other languages
English (en)
Other versions
CN103069381B (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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN103069381A publication Critical patent/CN103069381A/zh
Application granted granted Critical
Publication of CN103069381B publication Critical patent/CN103069381B/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/4833Logarithmic number system
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Abstract

本发明的一方面将提供用于从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器(400)。生成器将在定点数中的输入比特指派到多个槽,生成符号比特字段(S),基于前导有效比特的比特位置生成指数字段(E),以及通过提取第一比特群组和第二比特群组,并且通过在第二比特群组的最后比特后提供第一比特群组的开始比特,生成尾数字段(M)。

Description

循环浮点数生成器和循环浮点数加法器
技术领域
本发明涉及循环浮点数生成器和循环浮点数加法器,具体而言,涉及从输入定点数生成循环浮点数的生成器和用于将包括循环尾数的两个循环浮点数相加的计算单元。
背景技术
在计算机或算术硬件中,整数和浮点数一直广泛用于简单描述极大或极小的值。在整数格式中,容易使硬件执行计算,然而,存在整数格式能够表示小范围的缺陷。因此,必须换算算法,使得溢出不发生。在浮点格式中,能够表示范围广泛的值,并且无需换算算法以防止溢出。
IEEE-754格式是用于浮点表示的最常用格式。图1示出常规浮点格式的示例。浮点格式由1比特符号、7比特指数和8比特尾数构成。浮点格式中值的相加复杂,并且电路大小和逻辑延迟大。然而,迄今为止,由于没有能够替换浮点格式的数值格式,因此,已为此格式中的计算进行了大量研究。
图2示出常规样式的浮点加法器。首先,在交换单元201中比较两个输入X和Y的绝对值。将较大的一个选择为A,并且将较小的一个选择为B。此处,E(x)表示指数,并且M(x)表示浮点数x的尾数。如果X>Y,则E(X)和M(X)分别输入为E(A)和M(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)的整数值表述为以下公式(1)。
此处,q是用于偏移的整常数,并且h是表示隐藏尾数的整常数。
即使具有上面所示浮点加法器的类型,其实现也是复杂的,并且加法器的大小比整数加法器大几倍,这是因为桶型移位器和减法器需要较大大小的逻辑电路,这使得关键路径更长。另外,加法器的逻辑延迟也大,这导致操作时钟频率受限并且有时要求准备也要求额外硬件大小的另外管线级。
发明内容
根据本发明的第一方面,提供了一种用于从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器。生成器包括:槽指派单元,配置成将定点数中的输入比特指派到多个槽,每个槽具有预确定数量的比特;符号比特生成单元,配置成根据输入定点数的符号生成符号比特字段(S);指数生成单元,配置成基于在输入定点数中具有1值的前导有效比特的比特位置,生成指数字段(E);以及尾数生成单元,配置成通过提取具有在相同槽内前导有效比特后的比特的第一比特群组,提取具有从包括前导有效比特的槽的下一槽的开始比特开始的第一比特群组中包括的比特与预确定比特之间多个比特的差对应的比特,以及在第二比特群组的最后比特后提供第一比特群组的开始比特,生成尾数字段(M)。
根据本发明的第二方面,提供了一种用于将如上所述循环浮点数生成器生成的两个循环浮点数相加的循环浮点加法器。加法器包括:解码器,配置成从输入循环浮点加法器的循环浮点数的每个指数提取分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置;展开单元,配置成根据循环位置展开尾数;加法器,配置成根据每个循环浮点数的符号比特将展开尾数相加;以及折叠单元,配置成折叠相加结果以生成循环尾数。
根据本发明的第三方面,提供了一种从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的方法。方法包括以下步骤:指派输入定点数到多个槽,每个槽具有预确定数量的比特;根据输入定点数的符号,生成符号比特字段(S);基于在输入定点数中具有1值的前导有效比特的比特位置,生成指数字段(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具有值“1”的第一比特确定要选择的8比特。例如,假设输入24比特定点数(由比特23-0构成),并且比特23-20的值为“0”,以及具有值“1”的前导有效比特是比特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根据具有1值的前导有效比特的下一比特的比特位置,生成循环浮点数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)。
在折叠过程中,具有“1”值的前导有效比特是比特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根据尾数由“1”的“0”占据。
(循环浮点加法器)
参照图6,下面将描述通过两个循环浮点数的相加或相减。图6示出根据本发明的实施例的循环浮点加法器。循环浮点加法器可使用具有处理功能和存储器功能的逻辑电路实现,包括ASIC、DSP、FPGA或其它可编程逻辑电路或CPU和用于CPU的工作存储器。
首先,两个循环浮点数{E(X),M(X)}和{E(Y),M(Y)}输入交换单元601,并且交换单元601比较它们。接着,比较指数E(X)和E(Y),并且如果一个指数大于另一指数,则将较大的指数识别为E(A),并且将较小的指数识别为E(B)。对应尾数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)的示例。在此示例中,具有以阴影示出的“1”的比特表示MSB。因此,M(A)和M(B)的相应循环位置是5和2。
在解码器602中,从指数E(A)和E(B)提取最低有效3比特并将其输出到展开单元603。解码器602也基于提取的3比特生成要在展开中使用的掩码。图7B和7C分别示出用于M(A)和M(B)的掩码的示例。在此实施例中,掩码具有16比特,并且有效比特由“1”表示,以及其它比特由“0”表示。有效比特的开始位置根据循环位置确定,而循环位置根据从指数提取的最低有效3比特识别。例如,如图7B所示,如果最低有效3比特指示如为M(A)所示的循环位置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)时,始终具有“1”值的前导1比特已被忽略,并且在执行展开时,隐藏比特应被恢复。
对于M(B)的另一示例,前一部分具有“100101”,并且后一部分具有“10”,以及通过使用用于M(B)的掩码,后一部分被写入寄存器。在此情况下,前一部分“100101”的开始比特在后一部分“10”的最后比特后提供,并且隐藏比特(在图7C中通过阴影示出)也在M(B)的前导比特前恢复。M(B)的展开结果(M(B))在图7C中示出。
展开结果Mu (A)和Mu (B)提供到定点主要加法器604。定点主要加法器604根据使用寄存器的输入循环浮点数的符号比特,使用MU(A)和MU(B)执行相加或相减。图7D示出Mu (A)和M(B)相加的示例。
来自定点主要加法器404的计算结果提供到前导零计数器605和折叠单元606。前导零计数器统计自MSB的连续零的数量,并且将前导零计数输出到折叠单元606和修改单元607。
展开单元606展开来自定点主要加法器604的计算结果以生成使用寄存器的尾数。图7D示出作为折叠结果的尾数的示例。计算结果是按8比特单元分成两个部分的16比特二进制数据。通过阴影示出的前导有效比特被指定为隐藏比特,并且前导有效比特的下一比特用于生成尾数。在图7D的示例中,“11101”从前一8比特单元提取作为第一比特群组,并且“000”从后一8比特提取作为第二比特群组。第一比特群组具有在相加结果中在相同槽内具有1值的前导有效比特后的比特。第二比特群组具有从后一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比特从要处理的定点数提取。前导比特比定点数中前导有效比特小1比特,并且使用前导比特后的23比特。为包括前导比特的第1槽确定循环位置,并且基于与第1槽相同的循环位置,剩余比特占用随后的第2和第3槽。
(循环浮点格式的变化和加法器)
图9示出部分循环尾数展开的示例。如图9所示,尾数包括3个槽,每个槽具有8比特。对于每个槽,执行展开,并且生成16比特掩码以根据定点数中的比特位置以正常顺序提取比特。例如,第1槽包括比特m23到m16,并且掩码被生成,使得它能够如图9所示以从m23到m16的正常顺序提取比特。掩码中有效比特(“1”)的位置可根据循环位置确定,例如,图9所示第1槽的循环位置是1。类似地,从第2和第3槽中,使用相同掩码提取比特m15到m8和m7到m0,并且将所有提取的比特连接以生成定点数。
部分循环尾数在根据图6的流程图的相加或相减计算中使用时,33比特寄存器准备用于计算,具有4个槽,每个槽具有8比特,并且另外1比特用于隐藏比特,如图10所示。图10示出部分循环尾数的展开结果的一个示例。在此示例中,展开单元603确定展开M(A)和M(B)的尾数的开始槽。首先,对于M(A),展开的尾数的前导比特必须位于第1槽中。用于展开尾数M(B)的开始槽位置根据以下公式(2)确定。
Figure 2010800688670100002DEST_PATH_IMAGE004
其中,2n表示槽的大小,并且在本发明的实施例中,n=3。然而,槽大小不限于8比特,并且其它大小可以是适用的。在图10所示情况中,M(B)的展开的尾数的部分不能在寄存器中存储,并且可被舍入。主要相加或相减在展开的尾数之间进行。随后,将结果折叠成M(Z)。E(Z)的最低有效3比特根据前导零计数的结果确定,并且除特殊或零值外,E(Z)的最高有效4比特由
Figure DEST_PATH_IMAGE006
表示。
在循环浮点中,循环位置始终对应于指数的最低有效3比特,而在常规浮点格式中,指数的相对值通过指数之间的相减计算得出,并且因而前导零计数表示指数的相对值,并且被重新转换成指数的绝对值。
图11示出生成部分循环尾数的折叠过程的示例。如图11所示,被视为隐藏比特的最高有效比特是第3比特。前导零计数是“2”,并且{(前导零计数) mod 8} = 2,其用于通过从“7”减去{(前导零计数) mod 8}而确定在尾数中的循环位置。基于确定的循环位置,如图11所示将定点数折叠成尾数。
(循环浮点数的一般表述)
通常,循环位置能够表述为以下公式(3)。
Figure DEST_PATH_IMAGE008
此处,参数c表示循环大小[比特],并且p表示偏移位置,E(X)表示指数值。循环位置等于m 0的比特位置。
尾数M(X)中m i 的比特位置表述为以下公式(4)。
此处,比特m i 位于槽
Figure DEST_PATH_IMAGE012
,并且槽中的比特位置由表述。
Figure DEST_PATH_IMAGE016
公式(5)用于从整数a提取比特#b。随后,作为转换成常规浮点格式的循环尾数M(X)的去循环尾数
Figure DEST_PATH_IMAGE018
能够表述为以下公式(6)。
Figure DEST_PATH_IMAGE020
通过应用公式(6)到公式(1),循环浮点数X的值表述为以下公式(7)。
Figure DEST_PATH_IMAGE022
此处,c是表示循环大小的整数值(c>1),p是表示用于指数的偏移的整数值,q是用于循环位置的整数偏移,L表示M的比特长度,以及
Figure DEST_PATH_IMAGE024
表示M中的每个比特。
(利用循环浮点加法器的常规浮点加法器)
通过根据指数旋转尾数,能够执行在循环浮点数与常规浮点数之间的转换。循环浮点加法器能够与转换电路一起用于常规浮点格式数的相加。
循环浮点加法器中的逻辑延迟能够小于常规浮点加法器,并且转换电路能够与加法器中的关键路径隔离,以及对关键延迟的影响能够得以避免。
因此,利用循环浮点加法器的常规浮点加法器能够在比常规浮点加法器更高的时钟频率工作。
(循环浮点格式的优点)
在上述实施例中,描述了在相加或相减计算中使用循环浮点格式的情况。然而,循环浮点格式可在相乘中使用。
从图12所示表格中,将理解循环浮点格式与常规浮点格式相比的优点。图12示出常规浮点和循环浮点有关的硅大小比较。在表格中,参数L表示尾数大小[比特],并且参数c表示循环大小[比特]。
此处比较的单位是可以为乘法器、全加法器或乘法器单元的单元,并且硅区域根据功能而不同,但对于相同功能,它等效进行比较。注意,我们设置c=1时,这些格式有关的硅大小将是相同的。如图12所示,根据本发明的循环浮点格式对加法运算有益,并且能够降低加法器的大小。在使用大的尾数时,优点将变得尤其更大。
在循环浮点格式中,根据指数的最低有效比特直接确定输入或输出中的循环位置,并且只相对计算槽数,而在常规浮点格式中,通过将它转换成相对值(这通过计算指数的差实现),然后将它重新转换成绝对值来进行计算。因此,通过循环浮点格式相加的逻辑延迟能够比通过常规浮点的计算更短。
在计算常规浮点格式数时,能够使用格式转换电路而不在关键路径中增加逻辑延迟。

Claims (10)

1. 一种用于从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的循环浮点数生成器(400),包括:
槽指派单元(401),配置成将所述定点数中的输入比特指派到多个槽,每个槽具有预确定数量的比特;
符号比特生成单元(402),配置成根据所述输入定点数的符号生成所述符号比特字段(S);
指数生成单元(403),配置成基于在所述输入定点数中具有1值的前导有效比特的比特位置,生成所述指数字段(E);以及
尾数生成单元(404),配置成通过以下步骤来生成所述尾数字段(M):提取具有在相同槽内所述前导有效比特后的比特的第一比特群组,提取第二比特群组,所述第二比特群组具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第一比特群组中包括的比特与预确定比特之间的多个比特的差对应的比特,以及在所述第二比特群组的最后比特后提供所述第一比特群组的开始比特。
2. 如权利要求1所述的循环浮点数生成器(400),其中循环浮点数X的值使用所述符号比特字段(S)、所述指数字段(E)和所述循环尾数字段(M)表述为
其中,
Figure DEST_PATH_IMAGE004
c是表示所述循环大小的大于1的整数值,
p是用于循环偏移的整常数,
q是用于所述指数的整常数,
h是用于表示隐藏尾数的整常数,以及
L表示尾数字段M的比特长度。
3. 一种用于将如权利要求1或2所述循环浮点数生成器(400)生成的两个循环浮点数相加的循环浮点加法器,包括:
解码器(602),配置成从输入所述循环浮点加法器的循环浮点数的指数中的每个指数提取分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置;
展开单元(603),配置成根据所述循环位置来展开所述尾数;以及
加法器(604),配置成根据每个循环浮点数的符号比特将所述展开尾数相加;以及
折叠单元(606),配置成折叠相加结果以生成所述循环尾数。
4. 如权利要求3所述的循环浮点加法器,其中,
所述展开单元(603)还配置成基于所述循环位置将每个尾数分成两部分,以及通过在后一部分的最后比特后提供前一部分的开始比特,展开每个尾数。
5. 如权利要求4所述的循环浮点加法器,其中,
所述展开单元(603)还配置成
将所述循环浮点数的较大一个数的所述后一部分写入第一批多个槽的前导槽,以及
将所述循环浮点数的较小一个数的所述后一部分写入对应于在所述循环浮点数的指数之间差的第二批多个槽的槽,
其中所述第一和第二批多个槽的每个槽的比特长度等于所述循环大小c,并且所述c是2的整数幂。
6. 如权利要求5所述的循环浮点加法器,其中
所述加法器(604)还配置成将指派到所述第一批多个槽和所述第二批多个槽的每个尾数相加,以及将相加结果指派到第三批多个槽,以及
所述折叠单元(606)还配置成
选择具有在所述相加结果中在相同槽内具有1值的前导有效比特后的比特的第三比特群组,
选择具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第三比特群组中包括的比特与8比特之间的多个比特的差对应的比特的第四比特群组,以及
通过在所述第四比特群组的最后比特后提供所述第三比特群组的开始比特来折叠所述相加结果,以生成所述循环尾数。
7. 如权利要求3到6任一项所述的循环浮点加法器,还包括:
计数器(605),配置成从所述相加结果的开始比特统计前导零计数;以及
修改单元(607),配置成基于所述前导零计数,修改所述循环浮点数的较大一个数的指数。
8. 如权利要求3到7任一项所述的循环浮点加法器,其中,
每个尾数的比特长度是循环大小c的整数倍,以及
所述循环位置由所述指数的最小3比特指示。
9. 一种从输入定点数生成包括符号比特字段(S)、指数字段(E)和循环尾数字段(M)的循环浮点数的方法,所述方法包括以下步骤:
指派(401)所述输入定点数到多个槽,每个槽具有预确定数量的比特;
根据所述输入定点数的符号,生成(402)所述符号比特字段(S);
基于在所述输入定点数中具有1值的前导有效比特的比特位置,生成(403)所述指数字段(E);以及
通过以下步骤生成(404)所述尾数字段(M):提取具有在相同槽内所述前导有效比特后的比特的第一比特群组,提取第二比特群组,所述第二比特群组具有从包括所述前导有效比特的槽的下一槽的开始比特开始的所述第一比特群组中包括的比特与预确定比特之间的多个比特的差对应的比特,以及在所述第二比特群组的最后比特后提供所述第一比特群组的开始比特。
10. 一种用于使用循环浮点加法器将两个循环浮点数相加的方法,包括以下步骤:
从输入所述循环浮点加法器的循环浮点数的指数中的每个指数提取(602)分别指示在每个循环浮点数的尾数中最高有效比特的位置的循环位置;
根据所述循环位置来展开(603)所述尾数;
根据每个循环浮点数的符号比特将所述展开尾数相加(604);以及
折叠(606)相加结果以生成所述循环尾数。
CN201080068867.0A 2010-07-01 2010-07-01 循环浮点数生成器、循环浮点数加法器、生成循环浮点数方法及循环浮点数相加方法 Active CN103069381B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/061577 WO2012001819A1 (en) 2010-07-01 2010-07-01 A circular floating-point number generator and a circular floating-point number adder

Publications (2)

Publication Number Publication Date
CN103069381A true CN103069381A (zh) 2013-04-24
CN103069381B CN103069381B (zh) 2016-06-01

Family

ID=45401572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080068867.0A Active CN103069381B (zh) 2010-07-01 2010-07-01 循环浮点数生成器、循环浮点数加法器、生成循环浮点数方法及循环浮点数相加方法

Country Status (4)

Country Link
US (1) US9047119B2 (zh)
EP (1) EP2596422A4 (zh)
CN (1) CN103069381B (zh)
WO (1) WO2012001819A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468331A (zh) * 2014-09-26 2016-04-06 Arm有限公司 独立的浮点转换单元

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001819A1 (en) * 2010-07-01 2012-01-05 Telefonaktiebolaget L M Ericsson (Publ) A circular floating-point number generator and a circular floating-point number adder
US9100015B1 (en) * 2014-07-02 2015-08-04 Xilinx, Inc. Find-first-set bit circuit and method
CN104572018A (zh) * 2014-12-30 2015-04-29 杭州中天微系统有限公司 一种用于浮点常数生成的装置及方法
US10505860B1 (en) 2017-05-30 2019-12-10 Xilinx, Inc. System and method for round robin scheduling
CN109343823A (zh) * 2018-11-01 2019-02-15 何安平 基于异步控制的浮点数加法器和浮点数的相加方法
US11275559B2 (en) * 2020-07-02 2022-03-15 Qualcomm Incorproated Circular accumulator for floating point addition
GB2607364B (en) * 2021-11-18 2023-05-24 Imagination Tech Ltd Floating point adder

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1355623A (zh) * 2000-11-13 2002-06-26 日本电气株式会社 用于产生定点数据的电路和方法
US20080270495A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Insert/extract biased exponent of decimal floating point data
CN101432689A (zh) * 2006-05-05 2009-05-13 高通股份有限公司 精度受控的迭代算术逻辑单元
CN101510149A (zh) * 2009-03-16 2009-08-19 炬力集成电路设计有限公司 一种数据处理方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3872442A (en) * 1972-12-14 1975-03-18 Sperry Rand Corp System for conversion between coded byte and floating point format
US4617641A (en) * 1983-10-19 1986-10-14 Hitachi, Ltd. Operation unit for floating point data having a variable length exponent part
JPS6162931A (ja) 1984-09-05 1986-03-31 Hitachi Ltd デ−タ処理装置
US5161117A (en) * 1989-06-05 1992-11-03 Fairchild Weston Systems, Inc. Floating point conversion device and method
US5365465A (en) * 1991-12-26 1994-11-15 Texas Instruments Incorporated Floating point to logarithm converter
JP2006318382A (ja) 2005-05-16 2006-11-24 Renesas Technology Corp 演算装置および型変換装置
US7885992B2 (en) * 2006-06-22 2011-02-08 Honeywell International Inc. System and method for implementing irregular data formats
US8214416B2 (en) * 2008-07-28 2012-07-03 Agere Systems Inc. Floating-point addition acceleration
WO2012001819A1 (en) * 2010-07-01 2012-01-05 Telefonaktiebolaget L M Ericsson (Publ) A circular floating-point number generator and a circular floating-point number adder

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1355623A (zh) * 2000-11-13 2002-06-26 日本电气株式会社 用于产生定点数据的电路和方法
CN101432689A (zh) * 2006-05-05 2009-05-13 高通股份有限公司 精度受控的迭代算术逻辑单元
US20080270495A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Insert/extract biased exponent of decimal floating point data
CN101510149A (zh) * 2009-03-16 2009-08-19 炬力集成电路设计有限公司 一种数据处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468331A (zh) * 2014-09-26 2016-04-06 Arm有限公司 独立的浮点转换单元
CN105468331B (zh) * 2014-09-26 2020-12-11 Arm 有限公司 独立的浮点转换单元

Also Published As

Publication number Publication date
EP2596422A1 (en) 2013-05-29
US20130103732A1 (en) 2013-04-25
EP2596422A4 (en) 2016-04-27
CN103069381B (zh) 2016-06-01
US9047119B2 (en) 2015-06-02
WO2012001819A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
CN103069381A (zh) 循环浮点数生成器和循环浮点数加法器
CN105955706B (zh) 一种除法器及除法运算方法
KR100756137B1 (ko) 제산 및 제곱근 연산 유닛
US8639737B2 (en) Method to compute an approximation to the reciprocal of the square root of a floating point number in IEEE format
CN101630243B (zh) 超越函数装置以及用该装置实现超越函数的方法
KR940008615B1 (ko) 고기수제산기
CN106951211A (zh) 一种可重构定浮点通用乘法器
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
CN107305484A (zh) 一种非线性函数运算装置及方法
US11645042B2 (en) Float division by constant integer
CN101295237B (zh) 求商和余数的高速除法器
CN101650643B (zh) 一种用于不可除尽浮点除法开方的舍入方法
CN107533452A (zh) 除法和根计算以及快速结果格式化
US6847986B2 (en) Divider
CN107992284A (zh) 一种可编程器件的除法功能实现方法
JP2502836B2 (ja) 除算回路の前処理装置
CN108334304A (zh) 数字递归除法
CN1280707C (zh) 一种除法器
CN109960532A (zh) 用于前台运行的方法及装置
CN114296682A (zh) 浮点数处理装置、方法、电子设备、存储介质及芯片
Roy Implementation of Goldschmidt's Algorithm with hardware reduction
CN109582279A (zh) 数据运算装置及相关产品
JP3028165B2 (ja) 高基数除算制御方法および高基数除算器
JP2537876B2 (ja) 丸め処理回路

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