(57)【要約】【課題】  ＩＥＥＥ７５４規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、ＩＥＥＥ７５４規格の数値形式の処理フローで演算処理が行なえる演算装置を提供すること。【解決手段】  ソース型変換部０（１）およびソース型変換部１（２）は、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、ＩＥＥＥ７５４規格の浮動小数点の数値形式に変換する。指数・仮数固定長形式浮動小数点演算器３は、ソース型変換部０（１）およびソース型変換部１（２）によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう。デスティネーション型変換部４は、指数・仮数固定長形式浮動小数点演算器３による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する。したがって、ＩＥＥＥ７５４規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、ＩＥＥＥ７５４規格の数値形式の処理フローで演算処理を行なうことが可能となる。【選択図】        図４
2006318382.tif 000002
【特許請求の範囲】
【請求項１】
可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第１の変換手段と、
前記第１の変換手段によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう演算手段と、
前記演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第２の変換手段とを含む演算装置。
【請求項２】
前記第１の変換手段は、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出する検出手段と、
前記検出手段によって検出された指数部の幅に基づいて切出された可変長指数部に前記オフセット値を演算するオフセット演算手段と、
前記検出手段によって検出された仮数部の幅に基づいて仮数部を分離する分離手段とを含む、請求項１記載の演算装置。
【請求項３】
前記第２の変換手段は、前記演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、前記固定長指数部と前記オフセット値との演算結果および前記指数部の幅に基づいて、前記固定長指数部を可変長指数部に変換する指数部変換手段と、
前記指数部変換手段によって決定された仮数部の幅に基づいて、固定長仮数部を可変長仮数部に変換する仮数部変換手段とを含む、請求項１または２記載の演算装置。
【請求項４】
前記可変長指数部の幅と前記可変長仮数部の幅との和は一定であり、値が１近傍で前記可変長仮数部の幅が最大となるように前記指数部の幅および前記オフセット値が設定される、請求項２または３記載の演算装置。
【請求項５】
固定長の指数部および仮数部を含んだ浮動小数点の数値形式を、可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、
固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、前記固定長指数部と前記オフセット値との演算結果および前記指数部の幅に基づいて、可変長指数部を生成する指数生成手段と、
前記指数生成手段によって決定された仮数部の幅に基づいて、可変長仮数部を生成する仮数生成手段とを含む、型変換装置。
【請求項６】
可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、
可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部に前記オフセット値を演算して固定長指数部を生成する指数生成手段と、
前記指数生成手段によって検出された仮数部の幅に基づいて固定長仮数部を生成する仮数生成手段とを含む、型変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点の数値形式で演算を行なう技術に関し、特に、ＩＥＥＥ（the Institute of Electrical and Electronics Engineers, Inc.）７５４規格よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、ＩＥＥＥ７５４規格と同様の処理フローで演算処理を行なうことが可能な演算装置およびそれに用いられる型変換装置に関する。
【背景技術】
【０００２】
浮動小数点の数値形式に関する先行技術文献として、IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985（以下、非特許文献１と呼ぶ。）および浜田穂積、「二重指数分割に基づくデータ長独立実数値表現法ＩＩ」、情報処理学会論文誌、Vol. 24, No. 2, pp. 149-156 (1983)（以下、非特許文献２と呼ぶ。）を挙げることができる。
【０００３】
非特許文献１は、ＩＥＥＥ７５４規格の数値形式に関するものであり、たとえば単精度浮動小数点形式においては３２ビットの語長を符号１ビット、指数８ビット、仮数２３ビットの固定長でビットアサインしている。
【０００４】
符号をｓ、指数をｅ、仮数をｆとすると、表現できる数値は（−１）ｓ×２ｅ−１２７×（１＋ｆ）となる。指数部はオフセット付表現であり、仮数部も正数であるため、演算を行ないやすいというメリットがある。
【０００５】
また、非特許文献２は、ＵＲＲ（Universal Representation of Real numbers）の浮動小数点数値形式に関するものであり、指数部と仮数部とのビット幅が可変であり、同じ語長でＩＥＥＥ７５４規格よりもはるかに大きな値や小さな値を表現することができる。
【０００６】
指数部は特殊なコードと数値との組合わせで構成され、コードを分析して可変部分の指数部および仮数部のビット幅を検出する。仮数部は２の補数表現を値の正負条件で正規化して、最上位の１を表記しないケチ表現となっている。数値の正負反転が符号ビットの反転だけで表現できず、ビット列全体の２の補数をとらなければならない。
【０００７】
これらに関連する特許文献として、特開平０４−０１０１２７号公報（以下、特許文献１と呼ぶ。）および特開昭５９−０１１４４４号公報（以下、特許文献２と呼ぶ。）に開示された発明がある。
【０００８】
特許文献１に開示されたマイクロプロセッサは、数値の表現形式を符号部および指数部の長さの情報を表わす部分と、仮数部の長さの情報を表わす部分と、指数部および仮数部とで構成し、内部数値データの指数部のビット長と仮数部のビット長とをそれぞれ任意に設定できるようにしたものである。
【０００９】
また、特許文献２に開示された浮動小数点数演算装置は、指数部前半部の“０”の列または“１”の列の長さを検出または決定する手段と、この手段の出力により指数部、仮数部を分離または結合する手段とを備え、指数部の長さが前半部の“０”の列または“１”の列の長さにより定まる指数部可変長浮動小数点表現による値と、指数部固定長浮動小数点表現による値とで、相互に変換を行なうことを特徴とするものである。
【特許文献１】特開平０４−０１０１２７号公報
【特許文献２】特開昭５９−０１１４４４号公報
【非特許文献１】IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985
【非特許文献２】浜田穂積、「二重指数分割に基づくデータ長独立実数値表現法ＩＩ」、情報処理学会論文誌、Vol. 24, No. 2, pp. 149-156 (1983)
【発明の開示】
【発明が解決しようとする課題】
【００１０】
現在、浮動小数点の数値形式として、非特許文献１に記載されたＩＥＥＥ７５４規格が一般に用いられているが、語長およびフォーマット（ビットアサイン）が決められており、応用によっては語長が冗長である場合がある。たとえば、応用で必要とする以上の仮数精度を扱っている場合には、ＩＥＥＥ７５４規格そのままの形式でハードウェア設計を行なうとハードウェア規模が大きくなってしまい、無駄が大きくなる場合があるといった問題点があった。
【００１１】
また、このハードウェア規模の増大を防止するために、ハードウェアの入出力フォーマットをＩＥＥＥ７５４規格としておき、ハードウェア内部において狭いビット幅の指数部または仮数部を用いる場合がある。しかしながら、指数部を短くするとＩＥＥＥ７５４規格で表現可能なデータ範囲を表わせなくなるといった問題点があった。また、演算精度が必要な指数レンジが限定されている場合には、そのレンジでの仮数幅でデータ語長が固定されるので、精度が不要なレンジにおいては無駄に語長を有していることになる。また、仮数部を短くすると演算精度が悪くなるといった問題点があった。
【００１２】
また、上述した特許文献１〜２および非特許文献２は、指数部および仮数部のビット幅が可変であるため、語長を短くすることができるが、指数部および仮数部の構成が複雑となるため、ＩＥＥＥ７５４規格対応の演算器を構築する場合に比べて、指数部や仮数部の分離や結合を行なうための回路が複雑となってしまい、ハードウェア規模が増大するだけでなく、クリティカルパスも長くなってしまい動作速度が低下するといった問題点があった。
【００１３】
本発明は、上記問題点を解決するためになされたものであり、第１の目的は、固定長の数値形式よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、固定長の数値形式の処理フローで演算処理が行なえる演算装置を提供することである。
【００１４】
第２の目的は、固定長の数値形式から可変長の数値形式への変換または可変長の数値形式から固定長の数値形式への変換が容易に行なえる型変換装置を提供することである。
【課題を解決するための手段】
【００１５】
本発明のある局面に従えば、演算装置は、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第１の変換手段と、第１の変換手段によって変換された固定長の指数部および仮数部を用いて浮動小数点演算を行なう演算手段と、演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する第２の変換手段とを含む。
【００１６】
好ましくは、第１の変換手段は、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出する検出手段と、検出手段によって検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算するオフセット演算手段と、検出手段によって検出された仮数部の幅に基づいて仮数部を分離する分離手段とを含む。
【００１７】
好ましくは、第２の変換手段は、演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、固定長指数部を可変長指数部に変換する指数部変換手段と、指数部変換手段によって決定された仮数部の幅に基づいて、固定長仮数部を可変長仮数部に変換する仮数部変換手段とを含む。
【００１８】
さらに好ましくは、可変長指数部の幅と可変長仮数部の幅との和は一定であり、値が１近傍で可変長仮数部の幅が最大となるように指数部の幅およびオフセット値が設定される。
【００１９】
本発明の別の局面に従えば、固定長の指数部および仮数部を含んだ浮動小数点の数値形式を、可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、可変長指数部を生成する指数生成手段と、指数生成手段によって決定された仮数部の幅に基づいて、可変長仮数部を生成する仮数生成手段とを含む。
【００２０】
本発明のさらに別の局面に従えば、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換する型変換装置であって、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算して固定長指数部を生成する指数生成手段と、指数生成手段によって検出された仮数部の幅に基づいて固定長仮数部を生成する仮数生成手段とを含む。
【発明の効果】
【００２１】
本発明のある局面によれば、第１の変換部が、可変長の指数部および仮数部を含んだ浮動小数点の数値形式を、固定長の指数部および仮数部を含んだ浮動小数点の数値形式に変換し、第２の変換手段が、演算手段による演算結果を可変長の指数部および仮数部を含んだ浮動小数点の数値形式に変換するので、固定長の数値形式よりも短い語長で同じ指数範囲を表現した数値形式を用いつつ、固定長の数値形式の処理フローで演算処理を行なうことが可能となる。
【００２２】
また、オフセット演算手段が、検出手段によって検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算するので、可変長指数部から固定長指数部への変換が容易に行なえるようになる。
【００２３】
また、指数部変換手段が、演算手段による演算結果の固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、固定長指数部を可変長指数部に変換するので、固定長指数部から可変長指数部への変換が容易に行なえるようになる。
【００２４】
また、可変長指数部の幅と可変長仮数部の幅との和は一定であり、値が１近傍で可変長仮数部の幅が最大となるように指数部の幅およびオフセット値が設定されるので、１近傍で仮数精度が必要とされるアプリケーションに適用することが可能となる。
【００２５】
本発明の別の局面によれば、指数生成部が、固定長指数部が分割された指数領域のいずれに属するか判定して、指数部の幅、仮数部の幅およびオフセット値を決定し、固定長指数部とオフセット値との演算結果および指数部の幅に基づいて、可変長指数部を生成するので、簡単なハードウェア構成で型変換を行なうことが可能となる。
【００２６】
本発明のさらに別の局面によれば、指数生成部が、可変長指数部の一部を用いて指数部の幅、仮数部の幅およびオフセット値を検出し、検出された指数部の幅に基づいて切出された可変長指数部にオフセット値を演算して固定長指数部を生成するので、簡単なハードウェア構成で型変換を行なうことが可能となる。
【発明を実施するための最良の形態】
【００２７】
（第１の実施の形態）
図１は、本発明の浮動小数点数値形式のフォーマットを示す図である。以下の説明においては、ＩＥＥＥ７５４規格の浮動小数点数値が単精度（３２ビット）であり、本発明における語長が２４ビットの場合について説明する。なお、ＩＥＥＥ７５４規格の浮動小数点数値が倍精度（６４ビット）の場合および本発明における語長が異なる場合についても、扱う語長が異なるだけであり、基本的な処理方法は同様である。
【００２８】
本発明における浮動小数点の数値形式は、１ビットの符号部ｓと、指数部ｅと、仮数部ｆとからなる。指数部はオフセット付き数値であり、その上位ビットｅｃは表現数値領域を識別できるプレフィックスコードを兼ねており、数値領域によって指数部および仮数部の幅が異なる。指数部ｅから上位ビットｅｃによって特定されるオフセット値を減算することによりＩＥＥＥ７５４規格の数値形式における指数部が求められる。
【００２９】
図２は、本発明の浮動小数点数値形式における例外的な数値を示す図である。ＩＥＥＥ７５４規格の浮動小数点表現においては、０、Denormalized、無限大、ＮａＮ（Not A Number）などの例外的な数値を定義している。本発明においては、図２に示す形式でＩＥＥＥ７５４規格における例外的な数値を定義しており、０、Denormalizedおよび無限大の符号は、ＩＥＥＥ７５４規格と同様に符号ビットｓで判断する。
【００３０】
指数部ｅとして９ビット、仮数部ｆとして２２ビットを検出することにより、０、Denormalized、無限大およびＮａＮを判定する。たとえば、指数部ｅが０の場合において、仮数部を構成するビットが全て０の場合には０を表わし、仮数部を構成するビットの１つ以上のビットが１の場合にはDenormalizedを表わす。また、指数部を構成するビットが全て１の場合において、仮数部を構成するビットが全て０の場合には無限大を表わし、仮数部を構成するビットの１つ以上のビットが１の場合にはＮａＮを表わす。
【００３１】
図３は、本発明における例外的な数値以外の正の数の数値表現を示す図である。図３においては、同じｅｃで上下２段の数値形式の数値を表わしているが、上段がそのｅｃで表現可能な最小数値、下段が表現可能な最大数値を表わしている。指数の上位ビットｅｃで表現する値の範囲、フォーマットおよび指数オフセット値を判定することができる。
【００３２】
ｅ（ｅｃ）の上位２ビットが００であれば、指数部の幅が９ビット、仮数部の幅が１４ビット、指数部のオフセット値が０ｘａｆ（１７５）であると定義する。この条件での表現可能な値は符号ビットを含めると、０ｘ８０４０００（−２−１７４）〜０ｘ９ｆｆｆｆｆ（−２−４７（１−２−１５））および０ｘ００４０００（２−１７４）〜０ｘ１ｆｆｆｆｆ（２−４７（１−２−１５））となる。
【００３３】
絶対値での最小値である０ｘ００４０００（２−１７４）は、指数部が９ビット幅でそのＬＳＢのみが１となる場合であるが、これは例外的な数値として定義した０と同じフォーマットであり、指数部に１が加算されたのみというＩＥＥＥ７５４規格と同じ連続性を有している。また、表現可能な最小指数領域は２−１７４であるので、ＩＥＥＥ７５４規格で表現できる指数の最小指数領域の２−１２６をカバーしている。
【００３４】
また、ｅ（ｅｃ）の上位３ビットが０１０であれば、指数部の幅が８ビット、仮数部の幅が１５ビット、指数部のオフセット値が０ｘ６ｆ（１１１）であると定義する。この条件での表現可能な値は符号ビットを含めると、０ｘａ０００００（−２−４７）〜０ｘａｆｆｆｆｆ（−２−１５（１−２−１６））および０ｘ２０００００（２−４７）〜０ｘ２ｆｆｆｆｆ（２−１５（１−２−１６））となる。
【００３５】
また、ｅ（ｅｃ）の上位３ビットが０１１または１００であれば、指数部の幅が７ビット、仮数部の幅が１６ビット、指数部のオフセット値が０ｘ３ｆ（６３）であると定義する。この条件での表現可能な値は符号ビットを含めると、０ｘｂ０００００（−２−１５）〜０ｘｃｆｆｆｆｆ（−２１７（１−２−１７））および０ｘ３０００００（２−１５）〜０ｘ４ｆｆｆｆｆ（２１７（１−２−１７））となる。
【００３６】
また、ｅ（ｅｃ）の上位３ビットが１０１であれば、指数部の幅が８ビット、仮数部の幅が１５ビット、指数部のオフセット値が０ｘ８ｆ（１４３）であると定義する。この条件での表現可能な値は符号ビットを含めると、０ｘｄ０００００（−２１７）〜０ｘｄｆｆｆｆｆ（−２４９（１−２−１６））および０ｘ５０００００（２１７）〜０ｘ５ｆｆｆｆｆ（２４９（１−２−１６））となる。
【００３７】
また、ｅ（ｅｃ）の上位２ビットが１１であれば、指数部の幅が９ビット、仮数部の幅が１４ビット、指数部のオフセット値が０ｘ１４ｆ（３３５）であると定義する。この条件での表現可能な値は符号ビットを含めると、０ｘｅ０００００（−２４９）〜０ｘｆｆｂｆｆｆ（−２１７６（１−２−１５））および０ｘ６０００００（２４９）〜０ｘ７ｆｂｆｆｆ（２１７６（１−２−１５））となる。
【００３８】
絶対値での最大値である０ｘ７ｆｂｆｆｆ（２１７６（１−２−１５））は、指数部が９ビット幅でそのＬＳＢのみが０で他が１となる場合であるが、これは例外的な数値として定義した無限大と同じフォーマットであり、指数部から１が減算されたのみというＩＥＥＥ７５４規格と同じ連続性を有している。また、表現可能な最大指数領域は２１７６であるので、ＩＥＥＥ７５４規格で表現できる指数の最大指数領域の２１２７をカバーしている。
【００３９】
図４は、本発明の第１の実施の形態における演算装置の概略構成を示すブロック図である。この演算装置は、指数部幅ｋｘビット、仮数部幅ｍｘビットの入力ｘと、指数部幅ｋｙビット、仮数部幅ｍｙビットの入力ｙとの演算を行ない、指数部幅ｋｚビット、仮数部幅ｍｚビットの出力ｚを得るものであり、ソース型変換部０（１）と、ソース型変換部１（２）と、指数・仮数固定長形式浮動小数点演算器（以下、単に浮動小数点演算器と呼ぶ。）３と、デスティネーション型変換部４とを含む。
【００４０】
ソース型変換部０（１）は、指数コード検出部１１と、指数・仮数分離部１２と、指数オフセット減算部１３とを含む。なお、ソース型変換部１（２）は、ソース型変換部０（１）と同様の構成を有しているので、その詳細な説明は繰返さない。
【００４１】
ソース型変換部０（１）は、入力ｘのうち符号ビットｓｘを表わす最上位ビットをそのまま浮動小数点演算器３に出力する。指数コード検出部１１は、入力ｘのうち符号ｓｘを除いた上位９ビットｘ［ｋｘ＋ｍｘ−１：ｋｘ＋ｍｘ−９］を受け、図２および図３を用いて説明した方法によって、指数部の領域や０、無限大などの例外数値を判定する。
【００４２】
すなわち、指数コード検出部１１は、与えられた９ビットの全てが０であるか、全てが１である場合には、いずれの例外数値に該当するかを検出し、その検出結果をｘ例外数値検出信号として浮動小数点演算器３に出力する。例外数値でない場合には、指数コード検出部１１は、与えられた９ビットの上位から最大３ビットを検査し、図３に示す領域のいずれに含まれるかを検出し、指数部と仮数部とを分離するための位置情報を指数・仮数分離部１２に出力し、その領域に対応する指数オフセット値を指数オフセット減算部１３に出力する。
【００４３】
指数・仮数分離部１２は、入力ｘのうち符号ビットｓｘを除いた２３ビットｘ［ｋｘ＋ｍｘ−１：０］を受け、指数コード検出部１１からの位置情報に応じて指数部と仮数部とを分離する。図３に示すように、指数部の幅は３種類の場合があるので、指数コード検出部１１からの位置情報に応じて３種類の幅の指数ｅを選択する３入力１出力のセレクタによって指数部を分離するための回路を構成することができる。分離された指数は、指数オフセット減算部１３に出力される。
【００４４】
同様に、仮数部の幅は３種類の場合があるので、指数コード検出部１１からの位置情報に応じて３種類の幅の仮数部ｆを選択する３入力１出力のセレクタによって仮数部を分離するための回路を構成することができる。分離された仮数部は、ソース０の仮数ｆｘとして浮動小数点演算器３に出力される。
【００４５】
指数オフセット減算部１３は、指数・仮数分離部１３によって分離された指数部ｅに対して、指数コード検出部１１から受けた指数オフセット値の減算を行ない、オフセットのないソース０の指数部ｅｘとして浮動小数点演算器３に出力される。
【００４６】
入力ｙに対しても入力ｘと同様の型変換が行なわれ、符号ｓｙ、指数ｅｙ、仮数ｆｙおよびｙ例外数値検出信号が生成され、浮動小数点演算器３に出力される。
【００４７】
図５は、浮動小数点演算器３の概略構成を示すブロック図である。この浮動小数点演算器３は、ＩＥＥＥ７５４規格対応の演算器と同様の構成を有しており、指数部および仮数部の幅が固定の演算器であり、演算結果も入力と同じ数値形式で出力される。
【００４８】
浮動小数点演算器３は、命令コードに応じて、ＩＥＥＥ７５４規格の数値形式に変換された入力ｘとｙとを演算する演算器３１と、演算器３１による演算結果の正規化を行なう正規化部３２と、正規化された後の仮数部を丸める丸め計算部３３と、浮動小数点演算結果である符号ｓｚ、指数ｅｚおよび仮数ｆｚを作成して出力する浮動小数点数作成部３４と、丸めが行なわれた場合に発生する不正確例外などの例外を生成する例外生成部３５と、丸めが行なわれた後に非正規化数が発生しているか否かを検出する非正規化数検出部３６と、指数を生成する指数生成部３７と、仮数を生成する仮数生成部３８とを含む。
【００４９】
演算部３１は、図示しない命令フェッチ部によってフェッチされた命令コードに応じて、ＩＥＥＥ７５４規格の数値形式に変換された入力ｘとｙとの演算を行なう。そして、演算器３１は、演算結果である符号ｓａ、指数ｅａおよび仮数ｆａを正規化部３２に出力する。なお、演算器３１にはｘ例外数値検出信号およびｙ例外数値検出信号が入力されるため、演算器３１にこれらを検出するための回路が不要となる。
【００５０】
正規化部３２は、演算器３１から出力された符号ｓａ、指数ｅａおよび仮数ｆａを用いて正規化を行ない、正規化の後の符号ｓｂおよび指数ｅｂを浮動小数点数作成部３４に出力し、正規化の後の仮数ｆｂを丸め計算部３３に出力する。
【００５１】
丸め計算部３３は、丸めモードに応じて、正規化部３３から受けた仮数ｆｂに対して最近値丸め、０方向への丸め、正の無限大方向への丸め、負の無限大方向への丸めなどの丸め処理を行ない、その結果である仮数ｆｄを浮動小数点数作成部３４、非正規化数検出部３６および仮数生成部３８に出力する。
【００５２】
例外生成部３５は、正規化部３２から出力された仮数ｆｂを受け、丸めが行なわれた場合に発生する不正確例外などの検出を行ない、例外を発生される。
【００５３】
非正規化数検出部３６は、丸め計算部３３から出力される仮数ｆｄを受け、丸め後に非正規化数が発生しているか否かを検出し、非正規化数が発生している場合には非正規化数発生信号を出力する。
【００５４】
指数生成部３７は、非正規化数検出部３６から出力される非正規化数発生信号と、正規化部３２から出力される指数ｅｂとを受け、指数ｅｃを生成して正規化部３２に再入力する。また、仮数生成部３８は、非正規化数検出部３６から出力される非正規化数発生信号と、丸め計算部３３から出力される仮数ｆｄとを受け、仮数ｆｃを生成して正規化部３２に再入力する。
【００５５】
浮動小数点数作成部３４は、正規化部３２から出力される符号ｓｂおよび指数ｅｂと、丸め計算部３３から出力される仮数ｆｄとを受け、正規化部３２による正規化が完了した時点で演算結果となる符号ｓｚ、指数ｅｚおよび仮数ｆｚを出力する。
【００５６】
デスティネーション型変換部４は、指数部変換部４１と、仮数部変換部４２とを含む。デスティネーション型変換部４は、浮動小数点演算器３から出力された符号ビットｓｚをそのまま符号ビットｚ［ｋｚ＋ｍｚ］として出力する。
【００５７】
また、指数部変換部４１は、浮動小数点演算器３から出力される指数ｅｚを受け、図２および図３を用いて説明した方法によって、指数部の幅ｋｚ、仮数部の幅ｍｚおよび指数オフセット値を決定し、指数ｅｚに指数オフセット値を加算して幅ｋｚの指数ｅｚ’（ｚ［ｋｚ＋ｍｚ−１：ｍｚ］）を生成する。そして、仮数部の幅ｍｚを仮数部変換部４２に出力する。
【００５８】
仮数部変換部４２は、浮動小数点演算器３から出力される仮数部ｆｚを受け、指数部変換部４１から受けた仮数部の幅ｍｚにしたがって仮数部ｆｚの上位ｍｚビットを抽出し、可変長の仮数ｆｚ’（ｚ［ｍｚ−１：０］）を生成する。
【００５９】
ソース型変換部０（１）における指数コード検出部１１の例外数値を検出するための回路および指数オフセット減算部１３と、デスティネーション変換部４における指数部変換部４１のオフセット加算のための回路は、従来の固定長形式浮動小数点演算器においても必要である。したがって、これらの回路によるハードウェア規模の増大はない。
【００６０】
従来の固定長形式浮動小数点演算器と比較して、本発明においては、ソース型変換部０（１）における指数コード検出部１１の指数領域判定デコーダおよび指数・仮数分離のためのセレクタと、デスティネーション型変換部４における仮数部変換用のセレクタが追加される程度である。したがって、従来の固定長形式浮動小数点演算器と比べて回路規模の増大は僅かであり、ＵＲＲに比べるとはるかに少ない規模でハードウェアを構成することができる。
【００６１】
ＩＥＥＥ７５４規格に対応して単純な仮数部切出しを行なう場合、ＩＥＥＥ７５４規格の全指数領域をカバーしようとすると指数部は８ビット必要であり、残りが仮数部となる。たとえば、語長を２４ビットとした場合、仮数部が１５ビットとなる。本発明においては、指数部と仮数部とが可変であるので、ＩＥＥＥ７５４規格の全指数領域をカバーした上で、１近傍における仮数を１６ビットで表現できるようになり、１近傍での精度を高くすることが可能となる。また、逆に１近傍での必要な精度が決まれば、ＩＥＥＥ７５４規格に対応する単純な仮数部切出しよりも短い語長でハードウェアを構築することが可能となる。
【００６２】
たとえば、本発明は３次元グラフィックスハードウェアに適用することができる。ＯｐｅｎＧＬなどの３次元グラフィックスのＡＰＩ（Application Program Interface）は、一般的なＣＰＵ（Central Processing Unit）での処理を基準として、座標値としてＩＥＥＥ７５４規格を用いることを前提としている。したがって、ハードウェアを構築する場合、ＩＥＥＥ７５４規格相当の数値範囲をカバーしなければ、アプリケーションソフトによっては正しく描画できないということも起こり得る。３次元グラフィックスの処理過程において、値を正規化して処理する場合が多く、一般に用いられる値が１近傍であり、１近傍における仮数精度が必要とされるため、本発明に適した応用の１つである。
【００６３】
以上説明したように、本実施の形態における演算装置によれば、指数部および仮数部を可変長とし、指数部から指数オフセット値を減算することによりＩＥＥＥ７５４規格の数値形式に変換できるようにしたので、ＩＥＥＥ７５４規格対応の固定長形式浮動小数点演算器に僅かなハードウェアを追加するのみで、ＩＥＥＥ７５４規格よりも短い語長で同じ指数範囲を表現した数値形式の数値の演算を行なうことが可能となった。
【００６４】
（第２の実施の形態）
本発明の第２の実施の形態は、ＩＥＥＥ７５４規格形式の数値Ｉを受け、内部で用いられる可変長形式の数値ｘに型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
【００６５】
図６は、本発明の第２の実施の形態におけるＩＥＥＥ７５４／可変長型変換部５の概略構成を示すブロック図である。このＩＥＥＥ７５４／可変長型変換部５は、可変長指数生成部５１と、可変長仮数生成部５２とを含む。
【００６６】
ＩＥＥＥ７５４／可変長型変換部５は、外部からＩＥＥＥ７５４規格形式の数値Ｉを受け、符号ビットである最上位ビットＩ［３１］をそのまま可変長形式の符号ｓｘ（ｘ［ｋ＋ｍ］）として出力する。
【００６７】
可変長指数生成部５１は、数値Ｉの８ビット指数部Ｉ［３０：２３］を受け、この指数部からＩＥＥＥ７５４単精度規格の指数オフセット値０ｘ７ｆ（１２７）を減算し、図３を用いて説明した方法によって指数領域を判定して、指数部および仮数部の幅と、指数オフセット値とを決定する。決定された仮数部の幅情報は、可変長仮数生成部５２に出力される。
【００６８】
そして、可変長指数生成部５１は、決定した指数部の幅に応じて指数部を切出し、指数オフセット値を加算することによって、幅ｋの可変長指数ｅｘ［ｋ−１：０］を生成して出力する。可変長指数生成部５１は、指数領域判定のための８ビットデコーダ、オフセット加算用の９ビットの加算器および可変長指数部を変換後の形式に整えるためのセレクタで構成される。
【００６９】
可変長仮数生成部５２は、可変長指数生成部５１から受けた仮数部の幅情報に基づいて、幅ｍの可変長仮数ｆｘ［ｍ−１：０］を切出して出力する。可変長仮数生成部５２は、可変長仮数部を切出すためのセレクタで構成される。
【００７０】
以上説明したように、本実施の形態におけるＩＥＥＥ７５４／可変長型変換部５によれば、可変長指数生成部５１を指数領域判定のための８ビットデコーダ、オフセット加算用の９ビットの加算器および可変長指数部を変換後の形式に整えるためのセレクタで構成でき、可変長仮数生成部５２を可変長仮数部を切出すためのセレクタで構成できるため、従来のＵＲＲに比べてはるかに簡単なハードウェア構成でＩＥＥＥ７５４規格の数値形式から可変長の数値形式に型変換することが可能となった。
【００７１】
（第３の実施の形態）
本発明の第３の実施の形態は、幅（ｋｚ＋ｍｚ＋１）ビットの可変長形式の数値ｚ［ｋｚ＋ｍｚ：０］を受け、ＩＥＥＥ７５４規格の単精度の数値ｗ［３１：０］に型変換するものである。以下、単精度の場合について説明するが、倍精度でも語長が異なるだけで、基本的な処理は同様である。
【００７２】
図７は、本発明の第３の実施の形態における可変長／ＩＥＥＥ７５４型変換部６の概略構成を示すブロック図である。この可変長／ＩＥＥＥ７５４型変換部６は、８ビット指数生成部６１と、２３ビット仮数生成部６２とを含む。
【００７３】
可変長／ＩＥＥＥ７５４型変換部６は、可変長形式の数値ｚ［ｋｚ＋ｍｚ：０］を受け、符号ビットであるｚ［ｋｚ＋ｍｚ］をそのままＩＥＥＥ７５４規格形式の符号ビットｓｗ（ｗ［３１］）として出力する。
【００７４】
８ビット指数生成部６１は、入力ｚ［ｋｚ＋ｍｚ：０］のうち符号ｚ［ｋｚ＋ｍｚ］を除いた上位９ビットｚ［ｋｚ＋ｍｚ−１：ｋｚ＋ｍｚ−９］を受け、図３を用いて説明した方法によって指数部の領域を判定し、指数部の幅ｋｚ、仮数部の幅ｍｚおよび指数オフセット値を決定する。
【００７５】
８ビット指数生成部６１は、決定した指数部の幅ｋｚによって指数部を抽出し、指数オフセット値を減算した後、ＩＥＥＥ７５４単精度規格の指数オフセット値０ｘ７ｆ（１２７）を加算して、ＩＥＥＥ７５４規格の８ビット指数ｅｗ［７：０］を生成する。８ビット指数生成部６１は、指数領域判定のためのデコーダおよびオフセット演算用の９ビットの加減算器で構成される。
【００７６】
２３ビット仮数生成部６２は、入力ｚ［ｋｚ＋ｍｚ：０］の最上位から９ビット目以降の２４ビットｚ［ｋｚ＋ｍｚ−８：０］を受け、８ビット指数生成部６１からの仮数部の幅ｍｚに応じて、ｚ［ｋｚ＋ｍｚ−８：０］の上位からｍｚビットを抽出し、ＩＥＥＥ７５４単精度規格の仮数部ｆｗ［２２：０］を生成する。２３ビット仮数生成部６２は、可変長仮数部を切出すためのセレクタで構成される。
【００７７】
以上説明したように、本実施の形態における可変長／ＩＥＥＥ７５４型変換部６によれば、８ビット指数生成部６１を指数領域判定のためのデコーダおよびオフセット演算用の９ビットの加減算器で構成でき、２３ビット仮数生成部６２を可変長仮数部を切出すためのセレクタで構成できるため、従来のＵＲＲに比べてはるかに簡単なハードウェア構成で可変長の数値形式からＩＥＥＥ７５４規格の数値形式に型変換することが可能となった。
【００７８】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００７９】
【図１】本発明の浮動小数点数値形式のフォーマットを示す図である。
【図２】本発明の浮動小数点数値形式における例外的な数値を示す図である。
【図３】本発明における例外的な数値以外の正の数の数値表現を示す図である。
【図４】本発明の第１の実施の形態における演算装置の概略構成を示すブロック図である。
【図５】浮動小数点演算器３の概略構成を示すブロック図である。
【図６】本発明の第２の実施の形態におけるＩＥＥＥ７５４／可変長型変換部５の概略構成を示すブロック図である。
【図７】本発明の第３の実施の形態における可変長／ＩＥＥＥ７５４型変換部６の概略構成を示すブロック図である。
【符号の説明】
【００８０】
１  ソース型変換部０、２  ソース型変換部１、３  指数・仮数固定長形式浮動小数点演算器、４  デスティネーション型変換部、５  ＩＥＥＥ７５４／可変長型変換部、６  可変長／ＩＥＥＥ７５４型変換部、１１  指数コード検出部、１２  指数・仮数分離部、１３  指数オフセット減算部、３１  演算器、３２  正規化部、３３  丸め計算部、３４  浮動小数点数作成部、３５  例外生成部、３６  非正規化数検出部、３７  指数生成部、３８  仮数生成部、４１  指数部変換部、４２  仮数部変換部、５１  可変長指数生成部、５２  可変長仮数生成部、６１  ８ビット指数生成部、６２  ２３ビット仮数生成部。
【図１】
2006318382.tif 000003
【図２】
2006318382.tif 000004
【図３】
2006318382.tif 000005
【図４】
2006318382.tif 000006
【図５】
2006318382.tif 000007
【図６】
2006318382.tif 000008
【図７】
2006318382.tif 000009