JP2006318382A - 演算装置および型変換装置 - Google Patents
演算装置および型変換装置 Download PDFInfo
- Publication number
- JP2006318382A JP2006318382A JP2005142793A JP2005142793A JP2006318382A JP 2006318382 A JP2006318382 A JP 2006318382A JP 2005142793 A JP2005142793 A JP 2005142793A JP 2005142793 A JP2005142793 A JP 2005142793A JP 2006318382 A JP2006318382 A JP 2006318382A
- Authority
- JP
- Japan
- Prior art keywords
- exponent
- mantissa
- length
- width
- variable
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】 IEEE754規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、IEEE754規格の数値形式の処理フローで演算処理が行なえる演算装置を提供すること。
【解決手段】 ソース型変換部0(1)およびソース型変換部1(2)は、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、IEEE754規格の浮動小数点の数値形式に変換する。指数・仮数固定長形式浮動小数点演算器3は、ソース型変換部0(1)およびソース型変換部1(2)によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう。デスティネーション型変換部4は、指数・仮数固定長形式浮動小数点演算器3による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する。したがって、IEEE754規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、IEEE754規格の数値形式の処理フローで演算処理を行なうことが可能となる。
【選択図】 図4
【解決手段】 ソース型変換部0(1)およびソース型変換部1(2)は、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、IEEE754規格の浮動小数点の数値形式に変換する。指数・仮数固定長形式浮動小数点演算器3は、ソース型変換部0(1)およびソース型変換部1(2)によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう。デスティネーション型変換部4は、指数・仮数固定長形式浮動小数点演算器3による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する。したがって、IEEE754規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、IEEE754規格の数値形式の処理フローで演算処理を行なうことが可能となる。
【選択図】 図4
Description
本発明は、浮動小数点の数値形式で演算を行なう技術に関し、特に、IEEE(the Institute of Electrical and Electronics Engineers, Inc.)754規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、IEEE754規格と同様の処理フローで演算処理を行なうことが可能な演算装置およびそれに用いられる型変換装置に関する。
浮動小数点の数値形式に関する先行技術文献として、IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985(以下、非特許文献1と呼ぶ。)および浜田穂積、「二重指数分割に基づくデータ長独立実数値表現法II」、情報処理学会論文誌、Vol. 24, No. 2, pp. 149-156 (1983)(以下、非特許文献2と呼ぶ。)を挙げることができる。
非特許文献1は、IEEE754規格の数値形式に関するものであり、たとえば単精度浮動小数点形式においては32ビットの語長を符号1ビット、指数8ビット、仮数23ビットの固定長でビットアサインしている。
符号をs、指数をe、仮数をfとすると、表現できる数値は(−1)s×2e−127×(1+f)となる。指数部はオフセット付表現であり、仮数部も正数であるため、演算を行ないやすいというメリットがある。
また、非特許文献2は、URR(Universal Representation of Real numbers)の浮動小数点数値形式に関するものであり、指数部と仮数部とのビット幅が可変であり、同じ語長でIEEE754規格よりもはるかに大きな値や小さな値を表現することができる。
指数部は特殊なコードと数値との組合わせで構成され、コードを分析して可変部分の指数部および仮数部のビット幅を検出する。仮数部は2の補数表現を値の正負条件で正規化して、最上位の1を表記しないケチ表現となっている。数値の正負反転が符号ビットの反転だけで表現できず、ビット列全体の2の補数をとらなければならない。
これらに関連する特許文献として、特開平04−010127号公報(以下、特許文献1と呼ぶ。)および特開昭59−011444号公報(以下、特許文献2と呼ぶ。)に開示された発明がある。
特許文献1に開示されたマイクロプロセッサは、数値の表現形式を符号部および指数部の長さの情報を表わす部分と、仮数部の長さの情報を表わす部分と、指数部および仮数部とで構成し、内部数値データの指数部のビット長と仮数部のビット長とをそれぞれ任意に設定できるようにしたものである。
また、特許文献2に開示された浮動小数点数演算装置は、指数部前半部の“0”の列または“1”の列の長さを検出または決定する手段と、この手段の出力により指数部、仮数部を分離または結合する手段とを備え、指数部の長さが前半部の“0”の列または“1”の列の長さにより定まる指数部可変長浮動小数点表現による値と、指数部固定長浮動小数点表現による値とで、相互に変換を行なうことを特徴とするものである。
特開平04−010127号公報
特開昭59−011444号公報
IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985
浜田穂積、「二重指数分割に基づくデータ長独立実数値表現法II」、情報処理学会論文誌、Vol. 24, No. 2, pp. 149-156 (1983)
現在、浮動小数点の数値形式として、非特許文献1に記載されたIEEE754規格が一般に用いられているが、語長およびフォーマット(ビットアサイン)が決められており、応用によっては語長が冗長である場合がある。たとえば、応用で必要とする以上の仮数精度を扱っている場合には、IEEE754規格そのままの形式でハードウェア設計を行なうとハードウェア規模が大きくなってしまい、無駄が大きくなる場合があるといった問題点があった。
また、このハードウェア規模の増大を防止するために、ハードウェアの入出力フォーマットをIEEE754規格としておき、ハードウェア内部において狭いビット幅の指数部または仮数部を用いる場合がある。しかしながら、指数部を短くするとIEEE754規格で表現可能なデータ範囲を表わせなくなるといった問題点があった。また、演算精度が必要な指数レンジが限定されている場合には、そのレンジでの仮数幅でデータ語長が固定されるので、精度が不要なレンジにおいては無駄に語長を有していることになる。また、仮数部を短くすると演算精度が悪くなるといった問題点があった。
また、上述した特許文献1〜2および非特許文献2は、指数部および仮数部のビット幅が可変であるため、語長を短くすることができるが、指数部および仮数部の構成が複雑となるため、IEEE754規格対応の演算器を構築する場合に比べて、指数部や仮数部の分離や結合を行なうための回路が複雑となってしまい、ハードウェア規模が増大するだけでなく、クリティカルパスも長くなってしまい動作速度が低下するといった問題点があった。
本発明は、上記問題点を解決するためになされたものであり、第1の目的は、固定長の数値形式よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、固定長の数値形式の処理フローで演算処理が行なえる演算装置を提供することである。
第2の目的は、固定長の数値形式から可変長の数値形式への変換または可変長の数値形式から固定長の数値形式への変換が容易に行なえる型変換装置を提供することである。
本発明のある局面に従えば、演算装置は、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第1の変換手段と、第1の変換手段によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう演算手段と、演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第2の変換手段とを含む。
好ましくは、第1の変換手段は、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出する検出手段と、検出手段によって検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算するオフセット演算手段と、検出手段によって検出された仮数部の幅に基づいて仮数部を分離する分離手段とを含む。
好ましくは、第2の変換手段は、演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、固定長指数部を可変長指数部に変換する指数部変換手段と、指数部変換手段によって決定された仮数部の幅に基づいて、固定長仮数部を可変長仮数部に変換する仮数部変換手段とを含む。
さらに好ましくは、可変長指数部の幅と可変長仮数部の幅との和は一定であり、値が1近傍で可変長仮数部の幅が最大となるように指数部の幅およびオフセット値が設定される。
本発明の別の局面に従えば、固定長の指数部および仮数部を含んだ浮動小数点の数値形式を、可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、可変長指数部を生成する指数生成手段と、指数生成手段によって決定された仮数部の幅に基づいて、可変長仮数部を生成する仮数生成手段とを含む。
本発明のさらに別の局面に従えば、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算して固定長指数部を生成する指数生成手段と、指数生成手段によって検出された仮数部の幅に基づいて固定長仮数部を生成する仮数生成手段とを含む。
本発明のある局面によれば、第1の変換部が、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換し、第2の変換手段が、演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換するので、固定長の数値形式よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、固定長の数値形式の処理フローで演算処理を行なうことが可能となる。
また、オフセット演算手段が、検出手段によって検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算するので、可変長指数部から固定長指数部への変換が容易に行なえるようになる。
また、指数部変換手段が、演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、固定長指数部を可変長指数部に変換するので、固定長指数部から可変長指数部への変換が容易に行なえるようになる。
また、可変長指数部の幅と可変長仮数部の幅との和は一定であり、値が1近傍で可変長仮数部の幅が最大となるように指数部の幅およびオフセット値が設定されるので、1近傍で仮数精度が必要とされるアプリケーションに適用することが可能となる。
本発明の別の局面によれば、指数生成部が、固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、可変長指数部を生成するので、簡単なハードウェア構成で型変換を行なうことが可能となる。
本発明のさらに別の局面によれば、指数生成部が、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算して固定長指数部を生成するので、簡単なハードウェア構成で型変換を行なうことが可能となる。
(第1の実施の形態)
図1は、本発明の浮動小数点数値形式のフォーマットを示す図である。以下の説明においては、IEEE754規格の浮動小数点数値が単精度(32ビット)であり、本発明における語長が24ビットの場合について説明する。なお、IEEE754規格の浮動小数点数値が倍精度(64ビット)の場合および本発明における語長が異なる場合についても、扱う語長が異なるだけであり、基本的な処理方法は同様である。
図1は、本発明の浮動小数点数値形式のフォーマットを示す図である。以下の説明においては、IEEE754規格の浮動小数点数値が単精度(32ビット)であり、本発明における語長が24ビットの場合について説明する。なお、IEEE754規格の浮動小数点数値が倍精度(64ビット)の場合および本発明における語長が異なる場合についても、扱う語長が異なるだけであり、基本的な処理方法は同様である。
本発明における浮動小数点の数値形式は、1ビットの符号部sと、指数部eと、仮数部fとからなる。指数部はオフセット付き数値であり、その上位ビットecは表現数値領域を識別できるプレフィックスコードを兼ねており、数値領域によって指数部および仮数部の幅が異なる。指数部eから上位ビットecによって特定されるオフセット値を減算することによりIEEE754規格の数値形式における指数部が求められる。
図2は、本発明の浮動小数点数値形式における例外的な数値を示す図である。IEEE754規格の浮動小数点表現においては、0、Denormalized、無限大、NaN(Not A Number)などの例外的な数値を定義している。本発明においては、図2に示す形式でIEEE754規格における例外的な数値を定義しており、0、Denormalizedおよび無限大の符号は、IEEE754規格と同様に符号ビットsで判断する。
指数部eとして9ビット、仮数部fとして22ビットを検出することにより、0、Denormalized、無限大およびNaNを判定する。たとえば、指数部eが0の場合において、仮数部を構成するビットが全て0の場合には0を表わし、仮数部を構成するビットの1つ以上のビットが1の場合にはDenormalizedを表わす。また、指数部を構成するビットが全て1の場合において、仮数部を構成するビットが全て0の場合には無限大を表わし、仮数部を構成するビットの1つ以上のビットが1の場合にはNaNを表わす。
図3は、本発明における例外的な数値以外の正の数の数値表現を示す図である。図3においては、同じecで上下2段の数値形式の数値を表わしているが、上段がそのecで表現可能な最小数値、下段が表現可能な最大数値を表わしている。指数の上位ビットecで表現する値の範囲、フォーマットおよび指数オフセット値を判定することができる。
e(ec)の上位2ビットが00であれば、指数部の幅が9ビット、仮数部の幅が14ビット、指数部のオフセット値が0xaf(175)であると定義する。この条件での表現可能な値は符号ビットを含めると、0x804000(−2−174)〜0x9fffff(−2−47(1−2−15))および0x004000(2−174)〜0x1fffff(2−47(1−2−15))となる。
絶対値での最小値である0x004000(2−174)は、指数部が9ビット幅でそのLSBのみが1となる場合であるが、これは例外的な数値として定義した0と同じフォーマットであり、指数部に1が加算されたのみというIEEE754規格と同じ連続性を有している。また、表現可能な最小指数領域は2−174であるので、IEEE754規格で表現できる指数の最小指数領域の2−126をカバーしている。
また、e(ec)の上位3ビットが010であれば、指数部の幅が8ビット、仮数部の幅が15ビット、指数部のオフセット値が0x6f(111)であると定義する。この条件での表現可能な値は符号ビットを含めると、0xa00000(−2−47)〜0xafffff(−2−15(1−2−16))および0x200000(2−47)〜0x2fffff(2−15(1−2−16))となる。
また、e(ec)の上位3ビットが011または100であれば、指数部の幅が7ビット、仮数部の幅が16ビット、指数部のオフセット値が0x3f(63)であると定義する。この条件での表現可能な値は符号ビットを含めると、0xb00000(−2−15)〜0xcfffff(−217(1−2−17))および0x300000(2−15)〜0x4fffff(217(1−2−17))となる。
また、e(ec)の上位3ビットが101であれば、指数部の幅が8ビット、仮数部の幅が15ビット、指数部のオフセット値が0x8f(143)であると定義する。この条件での表現可能な値は符号ビットを含めると、0xd00000(−217)〜0xdfffff(−249(1−2−16))および0x500000(217)〜0x5fffff(249(1−2−16))となる。
また、e(ec)の上位2ビットが11であれば、指数部の幅が9ビット、仮数部の幅が14ビット、指数部のオフセット値が0x14f(335)であると定義する。この条件での表現可能な値は符号ビットを含めると、0xe00000(−249)〜0xffbfff(−2176(1−2−15))および0x600000(249)〜0x7fbfff(2176(1−2−15))となる。
絶対値での最大値である0x7fbfff(2176(1−2−15))は、指数部が9ビット幅でそのLSBのみが0で他が1となる場合であるが、これは例外的な数値として定義した無限大と同じフォーマットであり、指数部から1が減算されたのみというIEEE754規格と同じ連続性を有している。また、表現可能な最大指数領域は2176であるので、IEEE754規格で表現できる指数の最大指数領域の2127をカバーしている。
図4は、本発明の第1の実施の形態における演算装置の概略構成を示すブロック図である。この演算装置は、指数部幅kxビット、仮数部幅mxビットの入力xと、指数部幅kyビット、仮数部幅myビットの入力yとの演算を行ない、指数部幅kzビット、仮数部幅mzビットの出力zを得るものであり、ソース型変換部0(1)と、ソース型変換部1(2)と、指数・仮数固定長形式浮動小数点演算器(以下、単に浮動小数点演算器と呼ぶ。)3と、デスティネーション型変換部4とを含む。
ソース型変換部0(1)は、指数コード検出部11と、指数・仮数分離部12と、指数オフセット減算部13とを含む。なお、ソース型変換部1(2)は、ソース型変換部0(1)と同様の構成を有しているので、その詳細な説明は繰返さない。
ソース型変換部0(1)は、入力xのうち符号ビットsxを表わす最上位ビットをそのまま浮動小数点演算器3に出力する。指数コード検出部11は、入力xのうち符号sxを除いた上位9ビットx[kx+mx−1:kx+mx−9]を受け、図2および図3を用いて説明した方法によって、指数部の領域や0、無限大などの例外数値を判定する。
すなわち、指数コード検出部11は、与えられた9ビットの全てが0であるか、全てが1である場合には、いずれの例外数値に該当するかを検出し、その検出結果をx例外数値検出信号として浮動小数点演算器3に出力する。例外数値でない場合には、指数コード検出部11は、与えられた9ビットの上位から最大3ビットを検査し、図3に示す領域のいずれに含まれるかを検出し、指数部と仮数部とを分離するための位置情報を指数・仮数分離部12に出力し、その領域に対応する指数オフセット値を指数オフセット減算部13に出力する。
指数・仮数分離部12は、入力xのうち符号ビットsxを除いた23ビットx[kx+mx−1:0]を受け、指数コード検出部11からの位置情報に応じて指数部と仮数部とを分離する。図3に示すように、指数部の幅は3種類の場合があるので、指数コード検出部11からの位置情報に応じて3種類の幅の指数eを選択する3入力1出力のセレクタによって指数部を分離するための回路を構成することができる。分離された指数は、指数オフセット減算部13に出力される。
同様に、仮数部の幅は3種類の場合があるので、指数コード検出部11からの位置情報に応じて3種類の幅の仮数部fを選択する3入力1出力のセレクタによって仮数部を分離するための回路を構成することができる。分離された仮数部は、ソース0の仮数fxとして浮動小数点演算器3に出力される。
指数オフセット減算部13は、指数・仮数分離部13によって分離された指数部eに対して、指数コード検出部11から受けた指数オフセット値の減算を行ない、オフセットのないソース0の指数部exとして浮動小数点演算器3に出力される。
入力yに対しても入力xと同様の型変換が行なわれ、符号sy、指数ey、仮数fyおよびy例外数値検出信号が生成され、浮動小数点演算器3に出力される。
図5は、浮動小数点演算器3の概略構成を示すブロック図である。この浮動小数点演算器3は、IEEE754規格対応の演算器と同様の構成を有しており、指数部および仮数部の幅が固定の演算器であり、演算結果も入力と同じ数値形式で出力される。
浮動小数点演算器3は、命令コードに応じて、IEEE754規格の数値形式に変換された入力xとyとを演算する演算器31と、演算器31による演算結果の正規化を行なう正規化部32と、正規化された後の仮数部を丸める丸め計算部33と、浮動小数点演算結果である符号sz、指数ezおよび仮数fzを作成して出力する浮動小数点数作成部34と、丸めが行なわれた場合に発生する不正確例外などの例外を生成する例外生成部35と、丸めが行なわれた後に非正規化数が発生しているか否かを検出する非正規化数検出部36と、指数を生成する指数生成部37と、仮数を生成する仮数生成部38とを含む。
演算部31は、図示しない命令フェッチ部によってフェッチされた命令コードに応じて、IEEE754規格の数値形式に変換された入力xとyとの演算を行なう。そして、演算器31は、演算結果である符号sa、指数eaおよび仮数faを正規化部32に出力する。なお、演算器31にはx例外数値検出信号およびy例外数値検出信号が入力されるため、演算器31にこれらを検出するための回路が不要となる。
正規化部32は、演算器31から出力された符号sa、指数eaおよび仮数faを用いて正規化を行ない、正規化の後の符号sbおよび指数ebを浮動小数点数作成部34に出力し、正規化の後の仮数fbを丸め計算部33に出力する。
丸め計算部33は、丸めモードに応じて、正規化部33から受けた仮数fbに対して最近値丸め、0方向への丸め、正の無限大方向への丸め、負の無限大方向への丸めなどの丸め処理を行ない、その結果である仮数fdを浮動小数点数作成部34、非正規化数検出部36および仮数生成部38に出力する。
例外生成部35は、正規化部32から出力された仮数fbを受け、丸めが行なわれた場合に発生する不正確例外などの検出を行ない、例外を発生される。
非正規化数検出部36は、丸め計算部33から出力される仮数fdを受け、丸め後に非正規化数が発生しているか否かを検出し、非正規化数が発生している場合には非正規化数発生信号を出力する。
指数生成部37は、非正規化数検出部36から出力される非正規化数発生信号と、正規化部32から出力される指数ebとを受け、指数ecを生成して正規化部32に再入力する。また、仮数生成部38は、非正規化数検出部36から出力される非正規化数発生信号と、丸め計算部33から出力される仮数fdとを受け、仮数fcを生成して正規化部32に再入力する。
浮動小数点数作成部34は、正規化部32から出力される符号sbおよび指数ebと、丸め計算部33から出力される仮数fdとを受け、正規化部32による正規化が完了した時点で演算結果となる符号sz、指数ezおよび仮数fzを出力する。
デスティネーション型変換部4は、指数部変換部41と、仮数部変換部42とを含む。デスティネーション型変換部4は、浮動小数点演算器3から出力された符号ビットszをそのまま符号ビットz[kz+mz]として出力する。
また、指数部変換部41は、浮動小数点演算器3から出力される指数ezを受け、図2および図3を用いて説明した方法によって、指数部の幅kz、仮数部の幅mzおよび指数オフセット値を決定し、指数ezに指数オフセット値を加算して幅kzの指数ez’(z[kz+mz−1:mz])を生成する。そして、仮数部の幅mzを仮数部変換部42に出力する。
仮数部変換部42は、浮動小数点演算器3から出力される仮数部fzを受け、指数部変換部41から受けた仮数部の幅mzにしたがって仮数部fzの上位mzビットを抽出し、可変長の仮数fz’(z[mz−1:0])を生成する。
ソース型変換部0(1)における指数コード検出部11の例外数値を検出するための回路および指数オフセット減算部13と、デスティネーション変換部4における指数部変換部41のオフセット加算のための回路は、従来の固定長形式浮動小数点演算器においても必要である。したがって、これらの回路によるハードウェア規模の増大はない。
従来の固定長形式浮動小数点演算器と比較して、本発明においては、ソース型変換部0(1)における指数コード検出部11の指数領域判定デコーダおよび指数・仮数分離のためのセレクタと、デスティネーション型変換部4における仮数部変換用のセレクタが追加される程度である。したがって、従来の固定長形式浮動小数点演算器と比べて回路規模の増大は僅かであり、URRに比べるとはるかに少ない規模でハードウェアを構成することができる。
IEEE754規格に対応して単純な仮数部切出しを行なう場合、IEEE754規格の全指数領域をカバーしようとすると指数部は8ビット必要であり、残りが仮数部となる。たとえば、語長を24ビットとした場合、仮数部が15ビットとなる。本発明においては、指数部と仮数部とが可変であるので、IEEE754規格の全指数領域をカバーした上で、1近傍における仮数を16ビットで表現できるようになり、1近傍での精度を高くすることが可能となる。また、逆に1近傍での必要な精度が決まれば、IEEE754規格に対応する単純な仮数部切出しよりも短い語長でハードウェアを構築することが可能となる。
たとえば、本発明は3次元グラフィックスハードウェアに適用することができる。OpenGLなどの3次元グラフィックスのAPI(Application Program Interface)は、一般的なCPU(Central Processing Unit)での処理を基準として、座標値としてIEEE754規格を用いることを前提としている。したがって、ハードウェアを構築する場合、IEEE754規格相当の数値範囲をカバーしなければ、アプリケーションソフトによっては正しく描画できないということも起こり得る。3次元グラフィックスの処理過程において、値を正規化して処理する場合が多く、一般に用いられる値が1近傍であり、1近傍における仮数精度が必要とされるため、本発明に適した応用の1つである。
以上説明したように、本実施の形態における演算装置によれば、指数部および仮数部を可変長とし、指数部から指数オフセット値を減算することによりIEEE754規格の数値形式に変換できるようにしたので、IEEE754規格対応の固定長形式浮動小数点演算器に僅かなハードウェアを追加するのみで、IEEE754規格よりも短い語長で同じ指数範囲を表現した数値形式の数値の演算を行なうことが可能となった。
(第2の実施の形態)
本発明の第2の実施の形態は、IEEE754規格形式の数値Iを受け、内部で用いられる可変長形式の数値xに型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
本発明の第2の実施の形態は、IEEE754規格形式の数値Iを受け、内部で用いられる可変長形式の数値xに型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
図6は、本発明の第2の実施の形態におけるIEEE754/可変長型変換部5の概略構成を示すブロック図である。このIEEE754/可変長型変換部5は、可変長指数生成部51と、可変長仮数生成部52とを含む。
IEEE754/可変長型変換部5は、外部からIEEE754規格形式の数値Iを受け、符号ビットである最上位ビットI[31]をそのまま可変長形式の符号sx(x[k+m])として出力する。
可変長指数生成部51は、数値Iの8ビット指数部I[30:23]を受け、この指数部からIEEE754単精度規格の指数オフセット値0x7f(127)を減算し、図3を用いて説明した方法によって指数領域を判定して、指数部および仮数部の幅と、指数オフセット値とを決定する。決定された仮数部の幅情報は、可変長仮数生成部52に出力される。
そして、可変長指数生成部51は、決定した指数部の幅に応じて指数部を切出し、指数オフセット値を加算することによって、幅kの可変長指数ex[k−1:0]を生成して出力する。可変長指数生成部51は、指数領域判定のための8ビットデコーダ、オフセット加算用の9ビットの加算器および可変長指数部を変換後の形式に整えるためのセレクタで構成される。
可変長仮数生成部52は、可変長指数生成部51から受けた仮数部の幅情報に基づいて、幅mの可変長仮数fx[m−1:0]を切出して出力する。可変長仮数生成部52は、可変長仮数部を切出すためのセレクタで構成される。
以上説明したように、本実施の形態におけるIEEE754/可変長型変換部5によれば、可変長指数生成部51を指数領域判定のための8ビットデコーダ、オフセット加算用の9ビットの加算器および可変長指数部を変換後の形式に整えるためのセレクタで構成でき、可変長仮数生成部52を可変長仮数部を切出すためのセレクタで構成できるため、従来のURRに比べてはるかに簡単なハードウェア構成でIEEE754規格の数値形式から可変長の数値形式に型変換することが可能となった。
(第3の実施の形態)
本発明の第3の実施の形態は、幅(kz+mz+1)ビットの可変長形式の数値z[kz+mz:0]を受け、IEEE754規格の単精度の数値w[31:0]に型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
本発明の第3の実施の形態は、幅(kz+mz+1)ビットの可変長形式の数値z[kz+mz:0]を受け、IEEE754規格の単精度の数値w[31:0]に型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
図7は、本発明の第3の実施の形態における可変長/IEEE754型変換部6の概略構成を示すブロック図である。この可変長/IEEE754型変換部6は、8ビット指数生成部61と、23ビット仮数生成部62とを含む。
可変長/IEEE754型変換部6は、可変長形式の数値z[kz+mz:0]を受け、符号ビットであるz[kz+mz]をそのままIEEE754規格形式の符号ビットsw(w[31])として出力する。
8ビット指数生成部61は、入力z[kz+mz:0]のうち符号z[kz+mz]を除いた上位9ビットz[kz+mz−1:kz+mz−9]を受け、図3を用いて説明した方法によって指数部の領域を判定し、指数部の幅kz、仮数部の幅mzおよび指数オフセット値を決定する。
8ビット指数生成部61は、決定した指数部の幅kzによって指数部を抽出し、指数オフセット値を減算した後、IEEE754単精度規格の指数オフセット値0x7f(127)を加算して、IEEE754規格の8ビット指数ew[7:0]を生成する。8ビット指数生成部61は、指数領域判定のためのデコーダおよびオフセット演算用の9ビットの加減算器で構成される。
23ビット仮数生成部62は、入力z[kz+mz:0]の最上位から9ビット目以降の24ビットz[kz+mz−8:0]を受け、8ビット指数生成部61からの仮数部の幅mzに応じて、z[kz+mz−8:0]の上位からmzビットを抽出し、IEEE754単精度規格の仮数部fw[22:0]を生成する。23ビット仮数生成部62は、可変長仮数部を切出すためのセレクタで構成される。
以上説明したように、本実施の形態における可変長/IEEE754型変換部6によれば、8ビット指数生成部61を指数領域判定のためのデコーダおよびオフセット演算用の9ビットの加減算器で構成でき、23ビット仮数生成部62を可変長仮数部を切出すためのセレクタで構成できるため、従来のURRに比べてはるかに簡単なハードウェア構成で可変長の数値形式からIEEE754規格の数値形式に型変換することが可能となった。
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 ソース型変換部0、2 ソース型変換部1、3 指数・仮数固定長形式浮動小数点演算器、4 デスティネーション型変換部、5 IEEE754/可変長型変換部、6 可変長/IEEE754型変換部、11 指数コード検出部、12 指数・仮数分離部、13 指数オフセット減算部、31 演算器、32 正規化部、33 丸め計算部、34 浮動小数点数作成部、35 例外生成部、36 非正規化数検出部、37 指数生成部、38 仮数生成部、41 指数部変換部、42 仮数部変換部、51 可変長指数生成部、52 可変長仮数生成部、61 8ビット指数生成部、62 23ビット仮数生成部。
Claims (6)
- 可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第1の変換手段と、
前記第1の変換手段によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう演算手段と、
前記演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第2の変換手段とを含む演算装置。 - 前記第1の変換手段は、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出する検出手段と、
前記検出手段によって検出された指数部の幅に基づいて切出された可変長指数部に前記オフセット値を演算するオフセット演算手段と、
前記検出手段によって検出された仮数部の幅に基づいて仮数部を分離する分離手段とを含む、請求項1記載の演算装置。 - 前記第2の変換手段は、前記演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、前記固定長指数部と前記オフセット値との演算結果および前記指数部の幅に基づいて、前記固定長指数部を可変長指数部に変換する指数部変換手段と、
前記指数部変換手段によって決定された仮数部の幅に基づいて、固定長仮数部を可変長仮数部に変換する仮数部変換手段とを含む、請求項1または2記載の演算装置。 - 前記可変長指数部の幅と前記可変長仮数部の幅との和は一定であり、値が1近傍で前記可変長仮数部の幅が最大となるように前記指数部の幅および前記オフセット値が設定される、請求項2または3記載の演算装置。
- 固定長の指数部および仮数部を含んだ浮動小数点の数値形式を、可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、
固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、前記固定長指数部と前記オフセット値との演算結果および前記指数部の幅に基づいて、可変長指数部を生成する指数生成手段と、
前記指数生成手段によって決定された仮数部の幅に基づいて、可変長仮数部を生成する仮数生成手段とを含む、型変換装置。 - 可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、
可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部に前記オフセット値を演算して固定長指数部を生成する指数生成手段と、
前記指数生成手段によって検出された仮数部の幅に基づいて固定長仮数部を生成する仮数生成手段とを含む、型変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005142793A JP2006318382A (ja) | 2005-05-16 | 2005-05-16 | 演算装置および型変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005142793A JP2006318382A (ja) | 2005-05-16 | 2005-05-16 | 演算装置および型変換装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006318382A true JP2006318382A (ja) | 2006-11-24 |
Family
ID=37538975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005142793A Withdrawn JP2006318382A (ja) | 2005-05-16 | 2005-05-16 | 演算装置および型変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006318382A (ja) |
Cited By (4)
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 |
JP2012205005A (ja) * | 2011-03-24 | 2012-10-22 | Semiconductor Components Industries Llc | 浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路 |
WO2013155745A1 (en) * | 2012-04-20 | 2013-10-24 | Huawei Technologies Co., Ltd. | System and method for a floating-point format for digital signal processors |
WO2023035053A1 (en) * | 2021-09-08 | 2023-03-16 | Huawei Technologies Co., Ltd. | Method and system for emulating a floating-point unit |
-
2005
- 2005-05-16 JP JP2005142793A patent/JP2006318382A/ja not_active Withdrawn
Cited By (7)
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 |
US9047119B2 (en) | 2010-07-01 | 2015-06-02 | Telefonaktiebolaget L M Ericsson (Publ) | Circular floating-point number generator and a circular floating-point number adder |
JP2012205005A (ja) * | 2011-03-24 | 2012-10-22 | Semiconductor Components Industries Llc | 浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路 |
WO2013155745A1 (en) * | 2012-04-20 | 2013-10-24 | Huawei Technologies Co., Ltd. | System and method for a floating-point format for digital signal processors |
US9792087B2 (en) | 2012-04-20 | 2017-10-17 | Futurewei Technologies, Inc. | System and method for a floating-point format for digital signal processors |
US10324688B2 (en) | 2012-04-20 | 2019-06-18 | Futurewei Technologies, Inc. | System and method for a floating-point format for digital signal processors |
WO2023035053A1 (en) * | 2021-09-08 | 2023-03-16 | Huawei Technologies Co., Ltd. | Method and system for emulating a floating-point unit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2846257B1 (en) | Floating-point adder circuitry | |
JP4500358B2 (ja) | 演算処理装置および演算処理方法 | |
JP6415236B2 (ja) | 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法 | |
JP4388543B2 (ja) | 3項入力の浮動小数点加減算器 | |
JPH0644225B2 (ja) | 浮動小数点丸め正規化回路 | |
JP3178746B2 (ja) | 浮動小数点数のためのフォーマット変換装置 | |
JPH0474743B2 (ja) | ||
JP3313560B2 (ja) | 浮動小数点演算処理装置 | |
CN116643718B (zh) | 一种流水线结构的浮点融合乘加装置、方法及处理器 | |
JP2006318382A (ja) | 演算装置および型変換装置 | |
US7401107B2 (en) | Data processing apparatus and method for converting a fixed point number to a floating point number | |
KR102459011B1 (ko) | 선두 제로 예측 | |
CN112394904B (zh) | 一种浮点数据处理方法、运算器及电子设备 | |
JP2010102431A (ja) | 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置 | |
JP4439060B2 (ja) | 浮動小数点加算器 | |
JP2747267B2 (ja) | 3入力浮動小数点加算装置 | |
KR20150107614A (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
JP3257278B2 (ja) | 冗長なシフト数予測とシフト誤り補正を用いた正規化装置 | |
JP3187402B2 (ja) | 浮動小数点データ加減算回路 | |
JP4163967B2 (ja) | 浮動小数点演算装置 | |
JPH03100722A (ja) | 精度変換命令の処理方式 | |
JP2752948B2 (ja) | 浮動小数点演算装置 | |
JP2513354B2 (ja) | 浮動小数点演算補助回路 | |
JPH01282633A (ja) | 非正規化数の処理方式 | |
JP2005115410A (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080805 |