当前位置:网站首页>专利 >正文

浮点存储方法及浮点运算装置的制作方法

专利名称:浮点存储方法及浮点运算装置的制作方法
技术领域
作为以往的浮点数值(浮点格式的数值)的存储格式的代表例子,有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位进行耦合的耦合器。
根据这种运算装置,在浮点数值的乘法运算中,可以按原样对输入数据的全部位字段进行尾数部分的乘法运算和指数部分的加法运算,并且只是使上述乘法器输出的上位侧的位和上述加法器输出的下位侧的位进行位耦合,就可以将乘法运算的结果格式化为浮点格式,因而可以进行非常快速的浮点数值的乘法运算。
本发明的浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,用定点数值输出对2个实数进行乘法运算所得到的值,其特征为具备第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;对上述第1寄存器的值和上述第2寄存器的值进行加法运算的加法器;根据上述加法器输出的下位侧L位的值来使上述乘法器输出的上位侧位的值产生位移的移位器。
根据这种运算装置,在浮点数值的乘法运算中,能够按原样对输入数据的全部位字段进行尾数部分的乘法运算和指数部分的加法运算,并且只是以加法器输出的下位侧的值为依据使乘法器的输出产生位移,就可以将乘法运算的结果格式化为定点格式。
本发明的浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,将实数变换为整数,其特征为具备寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段、下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;根据上述寄存器的下位侧L位所表示的值来使上述寄存器中所存储的值产生位移的移位器。
根据这种运算装置,可以只用减法器和移位器使任意的浮点数值变换为整数,并且可以使用极小的电路规模来实现将实数变换为整数的变换器。
在此,上述减法器在将预先确定好的数目设为X时进一步实行(N-S-x-X)的计算,并且上述移位器也能够只以上述减法器的输出值所表示的位数使上述寄存器中所存储的值产生位移。
根据这种运算装置,可以只用减法器和移位器对任意浮点数值得到使其小数点以下的X位进行有效化后的数值,并且可以使用极小的电路规模来实现将实数变换为使其小数点以下的位进行有效化后的数值的变换器。
再者,本发明不只是浮点格式的数值之间的乘法运算,而既可以作为使定点格式的数值和浮点格式的数值进行乘法运算的运算装置来实现,又可以作为一种运算方法来实现,这种运算方法以那些运算装置所具备的手段作为步骤。还有,本发明不只是可以作为微处理机和DSP(Digital Signal Processor)等硬件来实现,也可以作为使那种运算方法在计算机中实行的程序来实现。而且,当然可以通过CD-ROM等记录媒体和因特网等传输媒体使那种程序得以流通。
如上所述,通过本发明只是对以往的浮点格式进行变更,不需要设置特殊的电路等就可以只采用定点用运算器来进行浮点数值的乘法运算,同时能够谋求乘法运算的高速化,并且可以进一步通过简单的电路实现浮点数值的整数化,特别是作为使较多使用乘法运算处理的声音处理和图象处理等的多媒体数据处理实现高速化的技术,其实用价值非常高。


图1是表示IEEE754的32位浮点格式的位字段的附图。
图2(a)是表示定点数值的格式的附图,图2(b)是表示定点数值其他示例的格式的附图。
图3是表示本发明的实施方式1中浮点数值数据的存储格式的一个示例的附图。
图4是表示浮点数值数据的存储格式的其他示例的附图。
图5是表示将图3所示的浮点数值数据存储到存储器中时位字段配置的附图。
图6是表示本发明的实施方式2中浮点运算装置结构的框图。
图7是表示同一浮点运算装置中位耦合器动作的附图。
图8是表示浮点运算装置其他示例的结构的框图。
图9是表示对定点数值和浮点数值进行乘法运算的浮点运算装置结构的框图。
图10是表示同一浮点运算装置中位耦合器动作的附图。
图11是表示对定点数值和浮点数值进行乘法运算的浮点运算装置其他示例的结构的框图。
图12是表示本发明的实施方式3中浮点运算装置结构的框图。
图13是说明给图12所示的减法器输入的C值的附图。
具体实施例方式
(实施方式1)下面,对于本发明的实施方式1的浮点存储方法,参照附图的同时予以说明。
图3表示的是在本实施方式1的浮点存储方法中存储实数x时的位字段(bit field)。该位字段的构成包括指数部分存储字段11及尾数部分存储字段12。
指数部分存储字段11用8位的整数存储以a*2^n表示出实数x时的n值。该值例如可以用2的补数来表示。尾数部分存储字段12用24位存储以a*2^n表示出实数x时的a值。该值可以用小数点位置已固定的定点数值来表示。在本实施方式中,a的值已规格化为-1~+1范围。因此,24位的位结构是,该24位的最高有效位为符号信息,并且为在紧靠其下的位置上为使小数点固定的有2的补数的定点数值。也就是说,是这样的数值表示法,这就是最高有效位(符号位)的下1位是表示0.5(2^(-1))的位,以下是表示0.25(2^(-2))、0.125(2^(-3))的位。
下面,对于这种具有位字段的浮点存储方法的具体示例予以说明。
首先,例如对于通过本实施示例的浮点存储方法来存储实数x=29.25的情形,予以说明。
将实数x表示为a*2^n时,由于是29.25=0.9140625*2^5,所以a=0.9140625、n=5。因而,在图3的指数部分存储字段11中存储5(=b′00000101)。在尾数部分存储字段12中存储通过2的补数的定点数值来表示出0.9140625的值(b′011101010000000000000000)。
因此,表示实数29.25的整体位结构为b′011101010000000000000000 00000101。
其次,对于通过本实施示例的浮点存储方法来存储实数x=0.009033203125的情形,予以说明。
将实数x表示为a*2^n时,由于是0.009033203125=0.578125*2^(-6),所以a=0.578125、n=-6。因而,在图3的指数部分存储字段11中存储-6(=b′11111010)。
在尾数部分存储字段12中存储通过有2的补数的定点数值来表示出0.578125的值(b′010010100000000000000000)。
因此,表示实数0.009033203125的整体位结构为b′010010100000000000000000 11111010。
再次,对于通过本实施示例的浮点存储方法来存储实数x=-4.0010986328125的情形,予以说明。
将实数x表示为a*2^n时,由于是-4.0010986328125=-0.5001373291015625*2^3,所以a=-0.5001373291015625、n=3。因而,在图3的指数部分存储字段11中存储3(=b′00000011)。在尾数部分存储字段12中存储通过2的补数的定点数值来表示出-0.5001373291015625的值。
在此,对负的定点数值的2的补数予以说明。
如果通过2的补数来表示上述-0.5001373291015625的绝对值,就是b′010000000000010010000000。通过2的补数表示负值的场合下,通过使全部位反转并在最低位上加1这样的处理来求出。因而,-0.5001373291015625的2的补数表示法为b′101111111111101100000000。因此,表示实数-0.5001373291015625的整体位结构为b′101111111111101100000000 00000011。
再者,在上面的具体示例中,将指数部分存储字段11设为8位,将尾数部分存储字段12设为24位,但本发明并不限于这种位分配,也可以根据值所能够取的范围进行变更。例如,将指数部分存储字段设为6位并将尾数部分存储字段设为26位的场合下,值的准确度(尾数部分的表示位置数)会提高2位左右,但值所能够取的范围却减小2位左右。
而且,本实施方式中,在尾数部分存储字段12中存储的值,存储的是规格化为-1~+1的范围的值,但是例如也可以规格化为-2~+2的范围。
图4表示,将指数部分存储字段31设为6位,将尾数部分存储字段32设为26位,以及将尾数部分的值规格化为-2~+2的范围时的位字段。如本图所示,小数点的位置从最高有效位来看固定在第2位和第3位之间。例如,在上面的例子中,
表示实数29.25的整体位结构,表示为b′011101010000000000000000 00000101也就是说,表示为29.25=0.9140625*2^5,但是在图4所示的位字段的场合下,就会表示为29.25=1.828125*2^4,并且指数部分是6位,因此整体位结构就为b′01110101000000000000000000 000100。
如上所述,根据本实施方式,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,将该a、n存储到N位(N≥(U+L))的位字段中,此时通过用定点数值将尾数部分存储到上述位字段上位侧的U位,并用整数将指数部分存储到上述位字段下位侧的L位,使尾数部分集中于上位侧的位字段,并使指数部分集中于下位侧的位字段,因此打算取出尾数部分时只要分出全部位字段上位侧的字段就可以很容易地将其取出,打算取出指数部分时只要分出全部位字段下位侧的字段就可以很容易地将其取出。
另外,采用本实施方式中的浮点存储方法,由于在整体位字段的上位侧存储尾数部分,并且在与其尾数部分相接的下位侧存储指数部分,因此在取出尾数部分时即使省去分开下位侧(指数部分)的字段的处理,也就是即使在不进行分开处理的情况下一并取出全部位并按原样将其值视为尾数部分的值,由此而产生的数值数据的误差至多不超过2^(-24),所以实质上其误差几乎可以忽视,并且在取出尾数部分的值时实质上不需要位字段的分出处理。本实施方式的浮点存储方法的最大优点正在于此。
例如,采用上面所述的例子中将表示实数29.25的整体位结构表示为b′011101010000000000000000 00000101也就是说,表示为29.25=0.9140625*2^5。在此准确地说,使符号位有所加大的尾数部分是上位侧的24位,即便将所有的32位都视为尾数部分,尾数部分的值也会成为0.91406250232……,并且作为误差是很小的。因此,在准备求出该浮点数值的值的场合下,将通过对所有位字段按原样进行存取而得到的值作为尾数部分,并将通过只对下位侧的位进行存取而得到的值作为指数部分,由此基本上可以得到正确的浮点数值,因而极少采用位分出处理就会得以解决。
另外,特别是通过将指数部分存储字段11作为全部位字段的最低位的8位,能够进一步得到下述的特殊效果。
图5表示的是将图3所示的格式的数值数据存储到存储器中时存储器上的位字段配置。在以字单位进行存取的场合下,如本图的采用字单位的存取范围20所示,通过用浮点所表示的实数值单位进行读写。另一方面,在以字节单位进行存取的场合下,如本图的采用字节单位的存取范围21所示,通过指数部分存储字段11的单位进行读写。还有,在图1所示的以往格式中,由于指数部分存储字段71还没有存储到全部字段的进行过字节调整的位置上,因而如本实施方式一样不能通过1次字节存取进行读写。
这样,在指数部分存储字段配置于全部位字段下位侧的8位的场合下,通过以字节单位对存储有全部位字段的下位8位的区域进行存取,而采用1次存取就可以取出指数部分,可以非常快速地进行指数部分的取出。
(实施方式2)下面,对于本发明实施方式2的浮点运算装置,参照附图的同时予以说明。
图6是表示本实施方式2中浮点运算装置100的结构的框图。还有,在本实施方式中有关对浮点数值x、y进行乘法运算的运算装置100进行说明,但浮点数值的存储格式却是以上面在实施方式1中所述的格式为依据的。另外,乘法运算的方法在设为x=a*2^n、y=(b*2^m)时,以公式
x * y=a*b*2 ^(n+m)为依据来进行,因而尾数部分之间的乘法运算和指数部分之间的加法运算为主要的运算。
该浮点运算装置100是对32位长的2个实数进行乘法运算并以浮点格式输出其结果的运算电路,并且是由第1寄存器101、第2寄存器102、乘法器103、加法器104及位耦合器105来构成的。
在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,第1寄存器101是存储实数值的32位寄存器,该实数值中上位侧的24位是尾数部分存储字段并且下位侧的8位是指数部分存储字段,第2寄存器102同样也是存储实数值的32位寄存器,该实数值中上位侧的24位是尾数部分存储字段并且下位侧的8位是指数部分存储字段,乘法器103是对该第1寄存器101的值和该第2寄存器102的值进行乘法运算的乘法器,加法器104是对该第1寄存器101的值和该第2寄存器102的值进行加法运算的加法器,位耦合器105是使上述乘法器103输出的上位侧24位和加法器104输出的下位侧8位进行耦合的位耦合器。
在此,存储于上述第1寄存器101及上述第2寄存器102中的浮点数值的存储格式是图3所示的格式,并且与上面在实施方式1中所述的格式相同,因此,例如表示实数29.25的整体位结构,就成为b′011101010000000000000000 00000101。表示实数0.009033203125的整体位结构,就成为b′010010100000000000000000 11111010。
下面,说明有关对这种具有位字段的数值进行处理的浮点运算装置100。目前,在第1寄存器101中作为值存储有29.25。也就是说,位结构为b′011101010000000000000000 00000101。
乘法器103对该第1寄存器101的值和该第2寄存器102的值进行乘法运算。该乘法运算实行的是尾数部分之间的乘法运算,因而准确地说,是在从32位的全部位字段分开下位8位的指数部分的状态下取出尾数部分,对该尾数部分之间进行乘法运算的过程,但在本实施方式中取出32位的所有位字段并按原样对该值进行乘法运算。由此会从原来的值产生误差,但其误差至多不超过2^(-24),因而实质上可以忽视。
具体地说,在上述的例子中第1寄存器中存储的尾数部分的值,准确的是b′011101010000000000000000,因而如果用十进制表示,就为0.9140625。
另一方面,将全部位字段看作尾数部分的场合下,由于是b′01110101000000000000000000000101,所以如果用十进制表示,就为0.91406250232831………。另外,第2寄存器中存储的尾数部分的值,准确的是b′010010100000000000000000,因而如果用十进制表示,就为0.578125。
另一方面,将全部位字段看作尾数部分的场合下,由于是b′01001010000000000000000011111010,所以如果用十进制表示,就为0.57812511641532………。
可是,所准确分出的尾数部分之间的乘法运算结果,是0.9140625*0.5781250=0.5284423828125,因此如果用二进制表示,就为b′0 1000011101001000000000000000000,另一方面,视作全部位的尾数部分时的尾数部分之间的乘法运算结果,是0.91406250232831*0.57812511641532=0.52844249056943,因此如果用二进制表示,就为b′0 1000011101001000000000011100111。在此,应引起注意的是,所准确分出的尾数部分之间的乘法运算结果和视作全部位的尾数部分时的尾数部分之间的乘法运算结果至上述24位为止是一致的。也就是,该乘法器103不用实行分出2个实数值的尾数部分这样的处理,其结果,只分出尾数部分进行乘法运算并计算出与该情形大致相等的值,因此减少了相当于省去分出处理的量的处理时间和电路。
其次,在加法器104中对该第1寄存器101的值和该第2寄存器102的值进行运算。该加法运算实行的是指数部分之间的加法运算,因而是从32位的全部位字段只分出下位8位,对该指数部分之间进行加法运算的过程,但在本实施方式中取出32位的所有位字段并按原样对该值进行加法运算。原因是,由于存储指数部分的位字段是最低位方面的字段,所以加法运算结果的下位侧的值不会受到输入的上位侧的值的影响,因而不需要特别地将输入的上位侧拆开进行加法运算。具体地说,在上述的例子中第1寄存器101的值是b′01110101000000000000000000000101,第2寄存器102的值是b′01001010000000000000000011111010因而上述加法器104的输出为b′10111111000000000000000011111111。当然,上述加法运算结果的下位8位与分出输入的下位8位进行加法运算的结果相一致。
下面,位耦合器105对上述乘法器103输出的上位侧24位和上述加法器104输出的下位侧8位进行耦合。
图7表示的是用位耦合器105所实行的位耦合的状态。在本图的左侧所示的64位数据110是来自乘法器103的输出位串,其中所分选出的部分(上位的24位)是分出的位,也就是说作为运算结果是有效的范围,并且会输入到位耦合器105的上位位置。另一方面,在本图的右侧所示的32位数据111是来自加法器104的输出位串,其中所分选出的部分(下位的8位)是分出的位,也就是说作为运算结果是有效的范围,并且会输入到位耦合器105的下位位置。在本图的下部所示的32位数据112是使分别从64位数据110及32位数据111所分出的位进行耦合后的位串。该32位数据112是只分出乘法器103的输出和加法器104的输出的各自的有效位并使之进行过耦合的数据。
具体地说,上述乘法器103的输出是b′01000011101001000000000011100111,上述加法器104的输出是b′10111111000000000000000011111111,因而上述位耦合器105的输出为b′01000011101001000000000011111111。
那么,如果根据本实施方式的浮点数值存储格式试着将这样所得到的位串112换算成十进制,就为0.5284423828125*2^(-1)=0.26422119140625,并且可知与最初的输入值29.25和0.009033203125之间的乘法运算结果相一致。
如上所述,根据本实施方式,由于在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,具备第1及第2寄存器、对该第1寄存器的值和该第2寄存器的值进行乘法运算的乘法器、对该第1寄存器的值和该第2寄存器的值进行加法运算的加法器以及使上述乘法器输出的上位侧U位和上述加法器输出的下位侧L位进行耦合的耦合器,上述第1及第2寄存器中上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段,所以在浮点数值的乘法运算中可以按原样对输入数据的全部位字段进行尾数部分的乘法运算和指数部分的加法运算,并且只是使乘法器输出的上位侧的位和加法器输出的下位侧的位进行位耦合,就可以将乘法运算结果格式化为浮点格式,因此使非常快速的浮点数值的乘法运算成为可能。
再者,在本实施方式中,将浮点数值的乘法运算结果格式化为浮点数值并予以存储,但将乘法运算结果格式化为定点数值也是较为容易的。
图8是表示那种浮点运算装置200的结构的框图。浮点运算装置200是对32位长的2个实数进行乘法运算并以定点格式输出其结果的运算电路,并由第1寄存器101、第2寄存器102、乘法器103、加法器104及移位器201构成。还有,对于与上述浮点运算装置100相同的构成要件,附上相同的符号。与图6所示的浮点运算装置100不同之处是代替位耦合器105,而装载有移位器201。该移位器201是根据加法器104输出的下位8位的值使乘法器103的输出产生位移的32位移位器。如果采用与上面例子相同的数值作为示例,乘法器103的输出就是0.5284423828125,加法器104输出的下位8位的值是-1,因而上述移位器201通过使乘法器的值下移1位,结果与图6所示的浮点运算装置100所产生的结果相同,而生成0.26422119140625。再者,这种场合下,由于指数部分的信息没有意义,所以没有必要使指数部分的值与下位8位进行耦合。
至此,对于本发明所涉及的浮点存储方法及浮点运算装置,以实施方式为基础已经做出说明,但本发明并不限定于这些实施方式。
例如,本发明所涉及的浮点存储方法不只是对2个浮点数据进行乘法运算的情形,对于对定点数值和浮点数值进行乘法运算的情形也是对实现高速化有效的格式。因此,本发明所涉及的浮点存储方法可以使用于对如下的定点数值进行处理的运算装置。
图9是表示对定点数值和浮点数值进行乘法运算并以浮点数值输出其结果的浮点运算装置300的结构的框图。该浮点运算装置300所具备的结构相当于在图6所示的浮点运算装置100中去除加法器104后的结构。再者,第1寄存器101存储有32位的定点数值。
乘法器103按原样对第1寄存器101中所存储的32位数据和第2寄存器102中所存储的32位数据(都作为定点数值)进行乘法运算,输出64位的乘法运算结果。位耦合器105如图10所示,以通过乘法器103所得到的64位之中的有效位(上位24位)作为上位的位,另一方面以第2寄存器102中存储的指数部分(下位8位)作为下位的位并使之进行耦合。即使是这样的浮点运算装置300,乘法器103也可以在不从第2寄存器102中所存储的32位数据只分出尾数部分的情况下,以原样对32位数据进行乘法运算,因而能够实现运算的高速化。
图11是表示对定点数值和浮点数值进行乘法运算并以定点数值输出其结果的浮点运算装置400的结构的框图。该浮点运算装置400所具备的结构相当于在图8所示的浮点运算装置200中去除加法器104后的结构。再者,第1寄存器101存储有32位的定点数值。
乘法器103按原样对第1寄存器101中所存储的32位数据和第2寄存器102中所存储的32位数据(都作为定点数值)进行乘法运算,输出64位的乘法运算结果。移位器201取出通过乘法器103所得到的64位之中的有效位(上位24位),之后只以对应于第2寄存器102中存储的指数部分(下位8位)的值的位数使该值产生位移。即使是这样的浮点运算装置400,乘法器103可以不从第2寄存器102中所存储的32位数据只分出尾数部分,而按原样对32位数据进行乘法运算,因而能够谋求运算的高速化。
(实施方式3)下面,对于本发明的实施方式3的浮点运算装置,参照附图的同时予以说明。
图12是表示本发明的实施方式3的浮点运算装置结构的框图。浮点运算装置500是将浮点数值变换为整数的运算装置,并由第1寄存器101、减法器501及移位器502构成。
第1寄存器101是与实施方式1相同的寄存器,并且该寄存器在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下存储实数x,该实数x中上位侧的24位是尾数部分存储字段并且下位侧的8位是指数部分存储字段。
减法器501在将第1寄存器101的下位侧8位的值设为x时,从所确定的值C对x进行减法运算,移位器502只以与减法器501的输出值相应的位数使第1寄存器101中所存储的值向右产生位移。
此处,输入到减法器501中的C值如图13所示,在将第1寄存器101的位数设为N并将上述尾数部分存储字段中比小数点位置位高的位数设为S的场合下,是C=N-S。例如,S值在第1寄存器101中存储的值的位字段是图3所示的格式的场合下,为1,另外在是图4所示的格式的场合下,为2。也就是,该S表示出在第1寄存器101中所存储的浮点数值的尾数部分存储字段中比小数点位高的位数。
还有在下面,第1寄存器101中存储的浮点数值的格式是图3所示的格式,并且与上面在实施方式1中所述的格式相同。例如,表示实数29.25的整体位结构为b′011101010000000000000000 00000101。
下面,对如上所述而构成的浮点运算装置500的具体动作进行说明。
目前,在第1寄存器101中作为实数存储有29.25。也就是说,作为位结构存储有b′011101010000000000000000 00000101。
减法器501从上述C值减去第1寄存器101的下位8位的值。在此,由于第1寄存器101的位数N为32,尾数部分存储字段中比小数点位置位高的位数S为1,所以C值就为C=N-S=32-1=31。
另一方面,由于第1寄存器101下位8位的值为5,所以减法器501的输出值为31-5=26。
然后,移位器502只以来自减法器501的输出值(26)所表示的位数使第1寄存器101的值向右产生位移。其结果是,第1寄存器101中所存储的实数值b′011101010000000000000000 00000101只以26位向右产生位移,并且作为结果为
b′00000000000000000000000000011101=29。该值「29」相当于对第1寄存器101中原先存储的浮点数值29.25进行整数化后的值。
如上所述,根据本实施方式,由于在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,通过具备第1寄存器101以及移位器502,其中,上述第1寄存器101中上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段,上述移位器502根据第1寄存器101的下位侧的L位所表示的值使该第1寄存器101中所存储的值产生位移,所以只通过减法处理和位移处理就能够实行将浮点数值变换为整数的处理,因而可以非常快速地进行处理。
再者,在本实施方式中,作为减法器中的正数方面的输入值C例举出(第1寄存器101的位数N)-(第1寄存器101中所存储的浮点数值的尾数部分存储字段中比小数点位置位高的位数S),但作为替代也可以作为对所确定的值X进一步进行减法运算后的值。例如,X=4的场合下,在上述的例子中需要产生位移的量为32-1-5-4=22,并且作为结果,b′011101010000000000000000 00000101只以22位向右产生位移,可以得出b′00000000000000000000000111010100。
该值是对浮点数值「29.25」作为具备有小数点之下4位的有效数字的数来表示的。这样,通过适当设定上述X值,可以简单地实现使浮点数值的小数点之下的X位进行有效化后的值的表示。
权利要求
1.一种浮点存储方法,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,将上述a、n存储到N位的位字段中,其特征为在U及L是满足N≥(U+L)的整数的场合下,用定点数值将尾数部分存储到上述位字段上位侧的U位,用整数将指数部分存储到上述位字段下位侧的L位。
2.根据权利要求1中记载的浮点存储方法,其特征为上述N及L是8的倍数。
3.一种记录媒体,该记录媒体是记录有通过要求1中记载的浮点存储方法来存储尾数部分和指数部分的实数x的计算机可以读取的记录媒体。
4.一种浮点运算装置,对至少有1个是浮点数值的2个数值进行乘法运算,其特征为具备分别对上述2个数值进行存储的N位的第1及第2寄存器、分别以上述第1及第2寄存器中所存储的N位数据作为定点数值进行乘法运算的乘法器。
5.根据权利要求4中记载的浮点运算装置,其特征为上述2个数值是浮点数值,上述浮点运算装置进一步具备加法器,分别以上述第1及第2寄存器中所存储的N位数据作为整数进行加法运算。
6.根据权利要求5中记载的浮点运算装置,其特征为上述浮点运算装置进一步具备位耦合器,使通过上述乘法器所得到的乘法运算结果的上位位和通过上述加法器所得到的加法运算结果的下位位进行耦合。
7.根据权利要求6中记载的浮点运算装置,其特征为上述浮点数值由U位的尾数部分和L位的指数部分组成,上述位耦合器使通过上述乘法器所得到的乘法运算结果的上位U位和通过上述加法器所得到的加法运算结果的下位L位进行耦合。
8.根据权利要求5中记载的浮点运算装置,其特征为上述浮点运算装置进一步具备移位器,该移位器取出通过上述乘法器所得到的乘法运算结果的上位位,并根据通过上述加法器所得到的加法运算结果的下位位来使所取出的位产生位移。
9.根据权利要求8中记载的浮点运算装置,其特征为上述浮点数值由U位的尾数部分和L位的指数部分组成,上述移位器取出通过上述乘法器所得到的乘法运算结果的上位U位,并根据通过上述加法器所得到的加法运算结果的下位L位来使所取出的位产生位移。
10.根据权利要求4中记载的浮点运算装置,其特征为上述2个数值分别是定点数值和浮点数值,并且在上述第1寄存器中存储定点数值,在上述第2寄存器中存储浮点数值,上述浮点运算装置进一步具备位耦合器,该位耦合器使通过上述乘法器所得到的乘法运算结果的上位位和上述第2寄存器中所存储的浮点数值的指数部分进行耦合。
11.根据权利要求10中记载的浮点运算装置,其特征为上述浮点数值由U位的尾数部分和L位的指数部分组成,上述位耦合器使通过上述乘法器所得到的乘法运算结果的上位U位和上述第2寄存器的下位L位进行耦合。
12.根据权利要求4中记载的浮点运算装置,其特征为上述2个数值分别是定点数值和浮点数值,并且在上述第1寄存器中存储定点数值,在上述第2寄存器中存储浮点数值,上述浮点运算装置进一步具备移位器,该移位器取出通过上述乘法器所得到的乘法运算结果的上位位,并根据上述第2寄存器中所存储的数据的下位位来使所取出的位产生位移。
13.根据权利要求12中记载的浮点运算装置,其特征为上述浮点数值由U位的尾数部分和L位的指数部分组成,上述移位器取出通过上述乘法器所得到的乘法运算结果的上位U位,并根据上述第2寄存器中所存储的数据的下位L位来使所取出的位产生位移。
14.根据权利要求4~13的任一个中记载的浮点运算装置,其特征为上述N及L是8的倍数。
15.一种浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,用浮点数值输出对2个实数进行乘法运算所得到的值,其特征为具备第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段,并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;对上述第1寄存器的值和上述第2寄存器的值进行加法运算的加法器;使上述乘法器输出的上位侧U位和上述加法器输出的下位侧L位进行耦合的耦合器。
16.一种浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,用定点数值输出对2个实数进行乘法运算所得到的值,其特征为具备第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;对上述第1寄存器的值和上述第2寄存器的值进行加法运算的加法器;根据上述加法器输出的下位侧L位的值来使上述乘法器输出的上位侧位的值产生位移的移位器。
17.一种浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,用浮点数值输出使定点数值对实数进行乘法运算所得到的值,其特征为具备存储定点数值的第1寄存器、第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;使上述乘法器输出的上位侧U位和上述第2寄存器中所存储的数据的下位侧L位进行耦合的耦合器。
18.一种浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,以定点数值输出使定点数值对实数进行乘法运算所得到的值,其特征为具备存储定点数值的第1寄存器、第1及第2寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段并且下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;对上述第1寄存器的值和上述第2寄存器的值进行乘法运算的乘法器;根据上述第2寄存器中所存储的数据的下位侧L位的值来使上述乘法器输出的上位侧U位的值产生位移的移位器。
19.一种浮点运算装置,在将实数x表示为a*(2^n)时的a作为尾数部分并以n作为指数部分的场合下,将实数变换为整数,其特征为具备寄存器,存储上位侧的U位是用定点数值存储尾数部分的尾数部分存储字段、下位侧的L位是用整数存储指数部分的指数部分存储字段这样的浮点数值;根据上述寄存器的下位侧L位所表示的值来使上述寄存器中所存储的值产生位移的移位器。
20.根据权利要求19中记载的浮点数值运算,其特征为上述浮点运算装置进一步具备减法器,该减法器在将上述寄存器的位数设为N,将上述尾数部分存储字段中比小数点位高的位数设为S,将上述寄存器下位侧的L位所表示的值设为x的场合下,进行(N-S-x)的计算,上述移位器只以上述减法器的输出值所表示的位数使上述寄存器中所存储的值产生位移。
21.根据权利要求20中记载的浮点数值运算,其特征为上述减法器进一步进行将预先确定好的数设为X时的(N-S-x-X)的计算,上述移位器只以上述减法器的输出值所表示的位数使上述寄存器中所存储的值产生位移。
全文摘要
本发明提供采用定点处理机可简单地处理浮点数值的浮点数值的存储方法等,在将实数x表示为a*(2n)时的a作为尾数部分并以n作为指数部分时,用定点数值将尾数部分存储到N位(N≥(U+L))的位字段上位侧的U位,用整数将指数部分存储到下位侧的L位。在对这种格式的2个实数进行乘法运算的场合下,以两个实数作为定点数值进行乘法运算,并只以所得到的结果的上位有效位作为尾数部分,另一方面,以两个实数作为整数进行加法运算,并只以所得到的结果的下位有效位作为指数部分,这样就能够用浮点格式得到乘法运算结果。
文档编号G10L15/00GK1471077SQ03148619
公开日2004年1月28日 申请日期2003年6月20日 优先权日2002年6月20日
发明者宫阪修二, 石川智一, 一 申请人:松下电器产业株式会社

喜欢就赞一下

上一篇
下一篇

相关推荐

    专利名称:Led灯具及led灯具的散热装置的制作方法技术领域:本实用新型涉及散热技术,尤其涉及LED灯具及LED灯具的散热装置。背景技术:现有的一体化LED灯泡设计,都是将电子驱动装置和装有LED的金属线路板共同装配在一个封闭的壳体内。壳体

    专利发布时间:2025-05-15阅读:(76)

    专利名称:一种四弦琴的制作方法技术领域:本实用新型涉及一种民族乐器,特别是一种弓拉弦乐器。目前,民族乐器中的二胡音域较窄,拉弓套在弦内,活动受到限制。本实用新型的目的就是要提供一种音域宽、拉弓不受到约束的四弦琴。本实用新型的技术方案是这样实

    专利发布时间:2025-05-15阅读:(69)

    专利名称:电子照相感光构件、生产电子照相感光构件的方法、处理盒和电子照相设备的制作方法技术领域:本发明涉及电子照相感光构件、生产所述电子照相感光构件的方法、处理盒和电 子照相设备。背景技术:利用有机光导电性物质的电子照相感光构件(有机电子照

    专利发布时间:2025-05-15阅读:(64)

    专利名称:用于修正光学组件屈光率的曲面圆片的制作方法用于修正光学组件屈光率的曲面圆片本发明涉及粘贴于光学组件凹面,用于修正其屈光率的曲面圆片。本发明还涉及 含有这样的圆片的光学元件和眼镜。本发明非常适用于调整特定用途下的光学组件的屈光率。例

    专利发布时间:2025-05-15阅读:(121)

    专利名称:摄像装置的制作方法技术领域:本发明涉及一种摄像装置,尤其是涉及一种能够对因温度变化而产生的成像面偏差(焦点位置偏差)进行修正的技术。背景技术:在监视用照相机和摄像机等的摄像装置中广泛采用了自动聚焦控制(第一模式) 和手动控制(第二

    专利发布时间:2025-05-15阅读:(76)

    专利名称:一种用于法庭现场勘察的紫外光灯的制作方法技术领域:本实用新型涉及灯,具体地说是一种用于法庭现场勘察的紫外光灯。背景技术:法院审理过程中,很多时候需要用到紫外光源进行协助现场勘察,但目前使用的灯或光光需要加设紫外滤光镜,变的整体复杂

    专利发布时间:2025-05-15阅读:(84)