浮点存储方法及浮点运算装置制造方法及图纸

技术编号:2874105 阅读:236 留言:0更新日期:2012-04-11 18:40
一种浮点存储方法,在将实数x表示为a*(*)时的a作为尾数部分并以n作为指数部分的场合下,将上述a、n存储到N位的位字段中,其特征为: 在U及L是满足N≥(U+L)的整数的场合下, 用定点数值将尾数部分存储到上述位字段上位侧的U位,用整数将指数部分存储到上述位字段下位侧的L位。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
作为以往的浮点数值(浮点格式的数值)的存储格式的代表例子,有IEEE754标准的32位浮点格式。C语言中用float型所说明的变量就是以该格式为依据的。图1表示的是IEEE754标准的32位浮点格式的位字段。本图中,最高有效位的1位是符号位存储字段,并且0表示正数,1表示负数。接在符号位后的8位是被称为指数部分存储字段(field)71的区域。接在指数部分后的23位是被称为尾数(仮数)部分存储字段72的区域。在此,将指数部分作为8位整数时的值设为e,将尾数部分23位作为在该23位的最高位上有小数点的定点数值(定点格式的数值)时的值设为k,则用该浮点格式所表示的实数值x就成为x=(2^(e-127))*(1·k)式中,(1·k)表示式表示在23位数据k的最高有效位上有小数点,并且小数点之上的1位通常是1。例如,23位数据k是k=10000000000000000000000时,表示(1·k)=B′1.10000000000000000000000=1+0.5=1.5。如果再表示一个例子,就是k=11100000000000000000000时,表示(1·k)=B′1.11100000000000000000000=1+0.5+0.25+0.125=1.875。也就是,尾数部分是表示大于1而小于2的值的字段。由于以上的原因,在IEEE754标准的32位浮点的位结构例如是0 10000000 11100000000000000000000 时,该位结构所表示的实数值x为x=(2^(128-127))*1.875=3.75。另外,是0 0111110 10000000000000000000000时,该位结构所表示的实数值x为x=(2^(126-127))*1.5=0.75。这样一来,在IEEE754标准的32位浮点格式中,为表示实数x而将作为x=a*2^n时的尾数部分a及指数部分n进行如上的变换并予以存储。由此,使在-2^129~2^129的较宽范围内的实数表示成为可能。另一方面,作为不需要进行那种复杂变换的数值格式,有定点数值。该定点数值如图2所示,是不具有如上的指数部分存储字段的数值格式,并且通常情况下最高有效位是符号信息,是小数点固定于下面所指定的位位置上的数值。例如,如图2(a)所示,在小数点的位置处于紧靠符号位之后的位置上时,数值所能够取的范围被限定为-1~+1。例如,在0 1000000000000000000000000000000的场合下,最高有效位为0,因而是正数,并且小数点下面的第1位是1,因而表示0.5。另外,例如在0 1100000000000000000000000000000的场合下,最高有效位为0,因而是正数,并且小数点下面的第1位及第2位都是1,因而表示0.5+0.25,也就是说表示0.75。通常情况下,正负数值多数会用2个补数来表示,那种场合下,例如1 0000000000000000000000000000000表示-1。1 1100000000000000000000000000000表示-0.25另外,在-1~+1的限制中处理难以处理的数字的场合下,如图2(b)所示,例如有时也会将小数点的位置固定于最高有效位的2位之后的位置上。那种场合下,数值所能够取的范围会变为-2~+2。例如,在01 010000000000000000000000000000的场合下,最高有效位为0,因而是正数,并且在小数点的上位上有1,小数点下面的第2位为1,因而表示1.25。如上所述,在以往对于浮点数值正如由IEEE754所表示的那样,采用这种格式来表示,该格式从上位位置按照符号位、指数部分、尾数部分的顺序存储位,另一方面,对于定点数值采用这种格式来表示,该格式从上位位置按照符号位、数值的顺序存储位。但是,采用如上的浮点数值的存储格式,例如在只打算取出指数部分的值的情况下,有必要实行从原来的32位数据将最高有效位的1位和下位侧的23位拆开这样的处理,并且会产生需要很大的处理量之类的问题。另一方面,在只打算取出尾数部分的值的情况下,在从原来的32位数据之中只取出下位侧的23位之后,有必要实施上面所示的(1·k)处理,并且这种场合下仍然会产生需要很大的处理量之类的问题。另外,采用如上的浮点格式对所存储的实数x和y实行乘法运算的场合下,假设x=a*2^n、y=b*2^m,由于x * y=(a*2^n)* (b*2^m)=a*b*2^(n+m),所以有必要实行x、y各自的位字段的尾数部分之间的乘法运算及指数部分之间的加法运算,但在每次进行乘法运算时有必要从各自的位字段分别分出尾数部分和指数部分,并且会产生需要很大的处理量之类的问题。另一方面,采用如上的定点数值的存储格式,因为进行运算时不需要将指数部分和尾数部分拆开的这种处理,所以同浮点格式相比处理量较少,但会产生限制可表示的值的范围这样的问题。
技术实现思路
因此,本专利技术是鉴于以往这种问题而作出的,其目的是提供浮点存储方法及浮点运算装置,该方法及装置可以同时实现使因采用浮点格式而产生的可表示的数值范围的加宽及因采用定点格式而产生的运算速度的高速化。为达到上述目的,本专利技术的浮点存储方法,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,将上述a、n存储到N位的位字段中,其特征为在U及L是满足N≥(U+L)的整数的场合下,用定点数值将尾数部分存储到上述位字段上位侧的U位,用整数将指数部分存储到上述位字段下位侧的L位。根据这种存储方法,由于尾数部分集中于上位侧的位字段,指数部分集中于下位侧的位字段,因而打算取出尾数部分时只要分出全部位字段上位侧的字段就可以很容易地将其取出,打算取出指数部分时只要分出全部位字段下位侧的字段就可以很容易地将其取出。另外,取出尾数部分时即使省略拆开下位侧字段的处理,也就是即使在不进行分开处理的情况下一并取出全部位并就这样将其值视为尾数部分的值,也会因为由此而产生的数值数据的误差至多不超过2^(-24),所以实质上其误差几乎可以忽视,并且在取出尾数部分的值时实质上不需要位字段的分出处理。在此,在上述浮点存储方法中上述N、L也可以设为8的倍数。通过设定为这样的大小,例如指数部分存储字段是全部位字段下位侧的8位的场合下,在将那样的数值数据存储到存储器中时,通过以字节单位对存储有全部位字段的下位8位的区域进行存取,就可以自动取出指数部分并且能够非常快速地取出指数部分。本专利技术的浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,用浮点数值输出对2个实数进行乘法运算所得到的值,其特征为具备第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段,并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值; 对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;对上述第1寄存器的值和上述第2寄存器的值进行加法运算的加法器;使上述乘法器输出的上位侧U位和上述加法器输出的下位侧L位进行耦合的耦合器。根据这种运算装置,在浮点数值的乘法运算中,可以按原样对输入数据的全部位字段进行尾数部分的乘法运算和指数部分的加法运算,并且只是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:宫阪修二石川智一
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利