浮点加法器、通过浮点加法器执行的方法和信息处理系统的制作方法_2

文档序号:8339356阅读:来源:国知局
。由于计算装置受限于用于表示指数部分的比特数,因此指示小数点移位(radix point shift)的适当量所需的值能够大于计算装置可用于浮点数的指数部分的比特数。例如,如果浮点包括用于指数的8比特,则指数可以在127和-126之间的范围内。这意味着如果数字具有小于-126的指数(例如,2_134等),则规格化浮点数方案将不能在没有显著数学错误的可能性的情况下表示该数字。
[0029]诸如这样的数字被称为“非规格化数”、“非正规化数”或“次规格化数”,并且通常导致计算电路的困难。非规格化数需要比规格化数稍有不同的编码方案。首先,如根据IEEE754规范,非规格化数的有效数的前导数字是O。不是改变指数,而是将前导零保留在有效数中。其次,非规格化数的指数部分是O。也就是说,不是将0.01234表示为1.234乂10_2,而是将非规格化数表示为0.01234X10°(要理解的是,真正的非规格化数将具有比10_2小得多的指数值,例如10_38或2 _127,但是写出38个前导零对于示例而言是过分的)。在一个实施例中,32位浮点非规格化数可包括大约在2_127和2 _149之间的值,这是因为有效数可容纳22个前导零。通常,非规格化数允许表示越来越小的数,但是随着前导零的数量增加,包括在数字中的精度(即,有效数字)的量减小。这是被称为“渐进下溢”的现象,并且通常优选于只是将小的数字声明为零的可选方式。
[0030]一些计算系统在硬件中处理非规格化值。传统上,这样的计算系统将使用第一硬件单元计算规格化数加法,使用第二硬件单元计算非规格化数加法。其他计算系统将非规格化值的处理留给系统软件。在软件中处理非规格化值通常导致性能上的进一步显著降低。但是即使当非规格化值全部在硬件中计算时,在大多数现代处理器上计算的速度也显著下降;在极端情况下,涉及非规格化操作数的指令可比规格化操作数的指令运行慢多达30-100 倍。
[0031]图1是根据本公开的主题的系统或FPA(浮点加法器)100的示例实施例的框图。在示出的实施例中,系统包括浮点加法(FPA或FADD)单元或电路100。在这样的实施例中,FPA 100被构造为对两个浮点操作数或值202和204执行加法和/或减法,并产生结果248。
[0032]FPA 100与传统FPA显著不同之处在于,FPA 100被构造为即使操作数202和204中的一个或更多个或者结果248是非规格化数,也处理或计算浮点加法运算。而传统FPA只可正确地处理规格化数,FPA 100被构造为处理规格化数、非规格化数或其组合。
[0033]简单地描述传统浮点加法器的运作以便将其功能与图1的改进系统进行对比。通常,FPA被构造为仅对两个规格化浮点数执行加法(或减法)并产生规格化浮点结果。在这样的实施例中,通过产生非正常或特殊结果(与特殊结果246类似)的单独的硬件执行任何非正常运算。然后,系统经由电路或复用器(MUX) 192在规格化结果(与结果248类似)和特殊结果之间进行选择,从而产生最终结果149。
[0034]在各种实施例中,可通过以下条件中的一个或更多个产生特殊结果:(例如,在操作数、结果等中)遇到无穷大,遇到非数字(NaN)值,遇到零,或者遇到非规格化值。在这样的实施例中,FPA的正常结果被视为不正确(即,具有错误值等)并且被忽视。相反,其他硬件(图2c中所示)用于正确地计算正确的结果值。通常,与正常结果的计算相比,这些非正常值的计算耗费大量的计算时间。
[0035]有时,通过浮点乘法累加单元(FMAC或FMADD或FMA)(未明确示出)执行非规格化数的加法。这在硬件空间和组件方面以及在计算能力方面代价高,并且是不期望的权衡。FPA通常更期望于直接的加法或减法(在空间、能力等方面)。在示出的实施例中,FPA 100不能执行浮点乘法运算。
[0036]如上所述,在传统FPA情况下,非规格化数的出现将导致对特殊硬件的调用。非正常结果将随后被电路或MUX 192选为最终结果149。在这样的实施例中,传统FPA的输出(与结果248类似)将被丢弃。如上所述,用于处理非规格化值的特殊硬件的调用在计算时间方面是昂贵的,并且可能涉及对可占用另一运算或对另一运算不可用的另一电路(例如,FMAC等)的使用(即,并行计算能力降低等)。
[0037]在示出的实施例中,FPA 100被构造为当遇到非规格化数时,在不招致在传统情况下经历的性能损失的情况下对规格化数和非规格化数二者执行浮点加法。下面描述FPA100的操作。
[0038]与传统FPA —样,FPA 100包括三个基本部分:Far路径298、Close路径299和选择电路297。在各种实施例中,Far路径298可被构造为当两个操作数202和204的指数部分相差多于一个数量级(例如,1,234 - 34等)时执行所有范围的加法运算或减法运算。相反,Close路径299可被构造为当两个操作数202和204的指数部分(或绝对值)相差少于一个数量级(例如,1,234+-1,236等)时执行减法运算。选择电路297可被构造为在Far路径结果242和Close路径结果244之间进行选择以(根据实施例)产生最后(非特殊)结果248或最终结果149。针对图1大体上详细地论述FPA 100的这些部分,然后针对图2a、图2b和图2c更加详细地示出FPA 100的这些部分。
[0039]在示出的FPA 100的实施例中,在已知两个操作数202和204的指数部分的差之前,通过Far路径298和Close路径299并行地处理操作数202和204。结果,两个路径的结果242或244之一将是不准确的并且将被选择电路297丢弃(如到此时指数部分的差是已知的)。该并行计算具有提高计算速度的期望效果,但是具有增大FPA 100的尺寸和FPA100所消耗的功率的不太期望的效果。
[0040]图1的这三个部分297、298和299中的每个部分执行与传统FPA的相似部分大致类似的运算。然而,如上所述,Far路径298、Close路径299和选择电路297可被构造为处理规格化数和/或非规格化数,而传统FPA部分只能处理规格化数。
[0041]在示出的实施例中,FPA 100接收两个操作数202和204。在这样的实施例中,操作数202和204可以是浮点数,并且可包括规格化数和/或非规格化数。出于说明的目的,本文将把操作数202和204视为包括64位IEEE 754兼容的浮点数。如此,操作数202和204均包括I位符号指示符、11位指数部分和52位小数部分。要理解,以上仅是一个说明性示例,本公开的主题不限于此。
[0042]首先检查Far路径298的运作。在示出的实施例中,操作数202和204被输入到Far路径298。操作数202和204均经过非规格化数检测电路252。在一个实施例中,非规格化数检测电路252可包括一系列或门(例如,OR树等)。在一个实施例中,非规格化数检测电路252可被构造为检测各个操作数202或204的小数部分是否包括前导零。在各种实施例中,非规格化数检测电路252可产生非规格化指示信号213。
[0043]传统上,假设操作数是规格化数的FPA可将前导I连接到操作数的小数部分以产生预交换信号(与信号210类似)。在示出的实施例中,FPA 100可将非规格化指示信号213的逆连接到操作数202和204的小数部分以产生预交换信号210。在这样的实施例中,由规格化操作数产生的预交换信号210将包括前导1,而从非规格化操作数产生的预交换信号210将包括前导零。
[0044]在示出的实施例中,FPA 100的Far路径298包括前导位补偿电路250。由于操作数的小数部分经常最初不对齐(即,具有相同的指数值),因此以浮点格式表示的数的加法有问题。通常,通过下面描述的小数点对齐电路154处理这样的问题。
[0045]IEEE 754标准包括在规格化数和非规格化数之间编码数字的方式的奇异性。通过涉及如在数字行上倒计数并且检查当遇到奇异性时发生了什么的示例的方式来非常容易地解释该奇异性。在规格化数的编码方案内,当倒计数并且数字从整数进行到小数(例如,从1.0到0.9等)时,有效数上移并且指数减一(例如,从1.0X 12到9.0X 11等)。但是,当倒计数并且数字从规格化数变为非规格化数时,不发生该移位/减小操作对。例如,当一个数从1.0X2_126到0.1X2 _126时,非规格化数的有效数不上移(S卩,它保持0.1而不是变为1.0),但是指数部分仍然减小(从0x01到0x00,这是因为非规格化数被定义为具有O指数部分)。在IEEE 754标准中,32位浮点规格化数的指数部分被偏移或偏置127,使得2_126被编码为0x01。不幸地,32位浮点非规格化数的指数部分被偏移或偏置126,使得2 _126被编码为0x00。当将规格化操作数和非规格化操作数相加时,可考虑编码方案的差异。
[0046]在示出的实施例中,前导位补偿电路250被构造为移动非规格化操作数的小数点,使得有效数具有与在规格化数的情况下相同的指数部分编码。在另一实施例中,小数点对齐电路154可被改变为自身执行该补偿。在另一实施例中,前导位补偿电路250可被构造为移动规格化操作数(而不是非规格化操作数)的小数点,但是这会导致精度的下降。
[0047]在这样的实施例中,如果操作数202和204中只有一个是非规格化(另一个是规格化),则前导位补偿电路250可被构造为补偿对非规格化数和规格化数进行编码的方式的差异。前导位补偿电路250被构造为对非规格化的预交换信号210进行移位。在各种实施例中,前导位补偿电路250可由确定两个预交换信号210中的哪一个(任一个)将被移位的一对信号211控制。在各种实施例中,这些控制信号211可来自非规格化数检测电路252的输出213。
[0048]在各种实施例中,FPA 100可包括指数差(ExpDiff)计算电路152,指数差计算电路152被构造为确定两个操作数202和204中的哪一个是较大的操作数。这导致大小区分信号111。在各种实施例中,ExpDiff计算电路152可比非规格化数检测电路252和/或前导位补偿电路250花费更多的计算时间。如此,在这样的实施例中,由于包括了非规格化数检测电路252和/或前导位补偿电路250,因此Far路径298可不产生额外的计算时间(与传统的Far路径相比)。
[0049]如传统上的做法,如果需要,则两个操作数(例如,预交换信号210等)被重新排序或交换,使得较大的或固定的操作数212被置于加法器158和160的期望的输入组上,同样地,较小的操作数214亦如此。该动作由交换复用器(MUX) 150执行。在示出的实施例中,交换
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1