(57)【要約】【課題】固定小数点表示と浮動小数点表示との間で数を変換するデータ処理装置および方法を提供する。【解決手段】データ処理装置は、インストラクションを実行するよう動作可能なデータ処理ユニットを備え、そのデータ処理ユニットは、フォーマット変換インストラクションに応答し、数にフォーマット変換演算を適用してその数の固定小数点表示と浮動小数点表示との間で変換を行う。更には、その数の固定小数点表示内の小数点位置を特定するプログラム可能な値を提供する制御フィールドが配置され、データ処理ユニットは、その制御フィールドを参照し、かつプログラム可能な値に従ってフォーマット変換演算を制御する。これによって、単一インストラクションを用いて、小数点の位置がプログラム可能である固定小数点フォーマットと浮動小数点表示との間で直接変換することが可能となる。【選択図】図５
2004213622.tif 000002
【特許請求の範囲】
【請求項１】
インストラクションを実行するよう動作可能であるデータ処理ユニットを備え、
前記データ処理ユニットは、フォーマット変換インストラクションに応答し、数にフォーマット変換演算を適用して前記数の固定小数点表示と前記数の浮動小数点表示との間で変換を行い、制御フィールドが、前記数の固定小数点表示内の小数点位置を特定するプログラム可能な値を提供するよう配置されており、また前記データ処理ユニットは、前記制御フィールドを参照し、かつ前記プログラム可能な値に従って前記フォーマット変換演算を制御するよう動作可能である
データ処理装置。
【請求項２】
前記制御フィールドを提供するよう配置される制御レジスタを更に備える請求項１に記載のデータ処理装置。
【請求項３】
前記制御フィールドが、前記フォーマット変換インストラクション内に提供される請求項１に記載のデータ処理装置。
【請求項４】
前記プログラム可能な値が、前記制御フィールド内に即値として提供される請求項３に記載のデータ処理装置。
【請求項５】
前記制御フィールドが、前記プログラム可能な値が蓄積される演算子レジスタを識別するよう配置される請求項３に記載のデータ処理装置。
【請求項６】
前記数の固定小数点表示に符号が付けられるか符号が付けられないかを特定するよう、更に制御フィールドが配置される請求項１に記載のデータ処理装置。
【請求項７】
前記データ処理ユニットがパイプライン・プロセッサであり、および前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われる請求項１に記載のデータ処理装置。
【請求項８】
前記パイプライン・プロセッサが、前記複数のパイプライン段階内に位置する指数処理論理と前記複数のパイプライン段階内に位置する仮数処理論理とを備える浮動小数点パイプライン・プロセッサであって、前記指数処理論理と仮数処理論理とは、前記フォーマット変換演算を適用するよう動作可能である請求項７に記載のデータ処理装置。
【請求項９】
前記フォーマット変換インストラクションは、固定小数点から浮動小数点への変換インストラクションであり、および前記数に適用される前記フォーマット変換演算は、前記数の固定小数点表示から前記数の浮動小数点表示への変換を行うよう動作可能である請求項１に記載のデータ処理装置。
【請求項１０】
前記フォーマット変換演算には、初期指数値から前記数の固定小数点表示において先行するゼロの数を指示する値を減算するのに等しい演算を行うことによって、前記数の浮動小数点表示のための指数値を生成するよう動作可能な指数生成演算が含まれており、かつ前記フォーマット変換演算は、前記指数生成演算に先立って、前記制御フィールド内に提供される前記プログラム可能な値に基づいて、前記初期指数値を調整するよう動作可能である請求項９に記載のデータ処理装置。
【請求項１１】
前記データ処理ユニットはパイプライン・プロセッサであり、前記フォーマット変換演算は、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、および前記初期指数値の調整は、前記指数生成演算が行われる１つ以上のパイプライン段階に先立って所定のパイプライン段階で行われる請求項１０に記載のデータ処理装置。
【請求項１２】
前記所定のパイプライン段階は、デフォルトの初期指数値から前記制御フィールド内に提供される前記プログラム可能な値を減算するのに等しい演算を行うことによって前記初期指数値を調整するよう動作可能な調整論理を備える請求項１１に記載のデータ処理装置。
【請求項１３】
前記フォーマット変換インストラクションは、浮動小数点から固定小数点への変換インストラクションであり、および前記数に適用される前記フォーマット変換演算は、前記数の浮動小数点表示から前記数の固定小数点表示への変換を行うよう動作可能である請求項１に記載のデータ処理装置。
【請求項１４】
前記数の浮動小数点表示は指数値と仮数値とを提供し、かつ前記フォーマット変換演算には、前記指数値の所定値との比較に基づいて桁送りカウント値を決定するよう動作可能な指数差決定演算と、前記桁送りカウント値に基づいて前記仮数値に桁送りを適用するよう動作可能な桁送り演算とが含まれており、前記指数差決定演算は、前記桁送りカウント値の決定において前記プログラム可能な値を用いるよう動作可能である請求項１３に記載のデータ処理装置。
【請求項１５】
前記指数差決定演算は、前記指数値および前記プログラム可能な値を前記所定の値から減算するのに等しい演算を行うことによって前記桁送りカウント値を決定するよう動作可能である請求項１４に記載のデータ処理装置。
【請求項１６】
前記数の浮動小数点表示は更に符号値を提供し、かつ前記フォーマット変換演算には更に、前記桁送り演算に先立って、前記符号値によって必要とされる前記仮数値の変更を行うよう動作可能である仮数変更演算が含まれている請求項１４に記載のデータ処理装置。
【請求項１７】
前記データ処理ユニットはパイプライン・プロセッサであり、前記フォーマット変換演算は、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、前記指数差決定演算は、前記桁送り演算が行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われる請求項１４に記載のデータ処理装置。
【請求項１８】
前記所定のパイプライン段階は、前記桁送りカウント値を決定するために前記指数値と前記プログラム可能な値とを前記所定の値から減算するのに等しい演算を行うよう動作可能な指数差決定論理を備える請求項１７に記載のデータ処理装置。
【請求項１９】
前記フォーマット変換インストラクションによって生成される前記固定小数点表示が、数の所定の範囲を表すことができ、前記装置が更に、前記指数値および前記プログラム可能な値に基づいて前記数を前記所定の範囲内で表すことのできない範囲外の例外を検出し、そして範囲外の例外が検出されるならば、前記数の固定小数点表示としてデフォルトの結果が生成されるように動作可能である例外検出論理を備える請求項１４に記載のデータ処理装置。
【請求項２０】
前記例外検出論理が更に、前記数の固定小数点表示を形成するように適用される丸め演算によって前記範囲外の例外が起こる、潜在的な範囲外の例外を検出するよう動作可能である請求項１９に記載のデータ処理装置。
【請求項２１】
前記データ処理ユニットがパイプライン・プロセッサであり、前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、前記指数差決定演算が、前記桁送り演算が行われる１つ以上のパイプライン段階に先立って所定のパイプライン段階で行われ、かつ前記例外検出論理が、前記所定のパイプライン段階内に提供される請求項１９に記載のデータ処理装置。
【請求項２２】
インストラクションを実行するよう動作可能なデータ処理ユニットを備えるデータ処理装置内で、数を、前記数の固定小数点表示と前記数の浮動小数点表示との間で変換する方法であって、
前記数の固定小数点表示内の小数点位置を特定するプログラム可能な値を制御フィールド内に提供するステップと、
フォーマット変換インストラクションに応答して、前記データ処理ユニットが、前記数にフォーマット変換演算を適用して前記数の固定小数点表示と前記数の浮動小数点表示との間の変換を行うようにするステップであって、前記データ処理ユニットに、前記制御フィールドを参照させ、かつ前記プログラム可能な値に従って前記フォーマット変換演算を制御させる操作を含むステップと
を備える方法。
【請求項２３】
前記制御フィールドが制御レジスタ内に提供される請求項２２に記載の方法。
【請求項２４】
前記制御フィールドが前記フォーマット変換インストラクション内に提供される請求項２２に記載の方法。
【請求項２５】
前記プログラム可能な値が前記制御フィールド内の即値として提供される請求項２４に記載の方法。
【請求項２６】
前記制御フィールドが、前記プログラム可能な値の蓄積される演算子レジスタを識別するよう配置される請求項２４に記載の方法。
【請求項２７】
前記数の固定小数点表示に符号が付けられるか符号が付けられないかを特定するように更なる制御フィールドが配置される請求項２２に記載の方法。
【請求項２８】
前記データ処理ユニットがパイプライン・プロセッサであり、および前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われる請求項２２に記載の方法。
【請求項２９】
前記パイプライン・プロセッサが、前記複数のパイプライン段階内に位置する指数処理論理と、前記複数のパイプライン段階内に位置する仮数処理論理とを備える浮動小数点パイプライン・プロセッサであり、かつ前記方法が、前記指数処理論理と前記仮数処理論理とを使用して前記フォーマット変換演算を適用するステップを備える請求項２８に記載の方法。
【請求項３０】
前記フォーマット変換インストラクションは、固定小数点から浮動小数点への変換インストラクションであり、また前記数に適用される前記フォーマット変換演算は、前記数の固定小数点表示から前記数の浮動小数点表示への変換を行うよう動作可能である請求項２２に記載の方法。
【請求項３１】
前記フォーマット変換演算を適用するステップに、
初期指数値から前記数の固定小数点表示において先行するゼロの数を指示する値を減算するのに等しい演算を行うことによって、前記数の浮動小数点表示のための指数値を生成する指数生成演算を行うステップと、
前記指数生成演算に先立って、前記制御フィールド内に提供されるプログラム可能な値に基づいて前記初期指数値を調整するステップと
が含まれている請求項３０に記載の方法。
【請求項３２】
前記データ処理ユニットがパイプライン・プロセッサであり、前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、かつ前記初期指数値を調整するステップが、前記指数生成演算の行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われる請求項３１に記載の方法。
【請求項３３】
前記初期指数値を調整するステップが、
デフォルトの初期指数値から前記制御フィールド内に提供される前記プログラム可能な値を減算するのに等しい演算を行うことによって、前記初期指数値を調整するよう前記所定のパイプライン段階内の調整論理を使用するステップを備える請求項３２に記載の方法。
【請求項３４】
前記フォーマット変換インストラクションが、浮動小数点から固定小数点への変換インストラクションであり、かつ前記数に適用される前記フォーマット変換演算が、前記数の浮動小数点表示から前記数の固定小数点表示への変換を行うよう動作可能である請求項２２に記載の方法。
【請求項３５】
前記数の浮動小数点表示によって指数値と仮数値とが提供され、かつ前記フォーマット変換演算を適用するステップには、
前記指数値の所定の値との比較に基づいて桁送りカウント値を決定するよう指数差決定演算を行い、前記指数差決定演算は、前記桁送りカウント値の決定において前記プログラム可能な値を用いるステップと、
前記桁送りカウント値に基づいて桁送りを前記仮数値に適用する桁送り演算を行うステップと
が含まれている請求項３４に記載の方法。
【請求項３６】
前記指数差決定演算を行うステップは、
前記指数値と前記プログラム可能な値とを前記所定の値から減算するのに等しい演算を行うことによって、前記桁送りカウント値を決定するステップを備える請求項３５に記載の方法。
【請求項３７】
前記数の浮動小数点表示によって符号値が提供され、かつ前記フォーマット変換演算には更に、
前記桁送り演算に先立って、前記符号値に必要とされる前記仮数値の変更を行う仮数変更演算を行うステップが含まれている請求項３５に記載の方法。
【請求項３８】
前記データ処理ユニットがパイプライン・プロセッサであり、前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、かつ前記指数差決定演算を行うステップが、前記桁送り演算の行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われる請求項３５に記載の方法。
【請求項３９】
前記指数差決定演算を行うステップが、
前記桁送りカウント値を決定するために前記指数値と前記プログラム可能な値とを前記所定の値から減算するのに等しい演算を行うよう、前記所定のパイプライン段階内の指数差決定論理を使用するステップを備える請求項３８に記載の方法。
【請求項４０】
前記フォーマット変換インストラクションによって生成される前記固定小数点表示が、数の所定の範囲を表すことができ、前記方法が更に、
前記指数値と前記プログラム可能な値とに基づいて、前記数を前記所定の範囲内で表すことのできない範囲外の例外を検出するステップと、
範囲外の例外が検出されるならば、デフォルトの結果が前記数の固定小数点表示として生成されるようにするステップと
を備える請求項３５に記載の方法。
【請求項４１】
前記数の固定小数点表示を形成するよう適用される丸め演算によって前記範囲外の例外が起こる、潜在的な範囲外の例外を検出するステップを更に備える請求項４０に記載の方法。
【請求項４２】
前記データ処理ユニットがパイプライン・プロセッサであり、前記フォーマット変換演算が、前記パイプライン・プロセッサの複数のパイプライン段階内で行われ、前記指数差決定演算を行うステップが、前記桁送り演算の行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われ、かつ前記検出ステップもまた、前記所定のパイプライン段階内で行われる請求項４０に記載の方法。
【請求項４３】
請求項２２に記載される方法を行うデータ処理装置を構成するよう動作可能なフォーマット変換インストラクションを収容するコンピュータ・プログラム。
【請求項４４】
請求項４３に記載のコンピュータ・プログラムを備えるキャリア媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、固定小数点表示と浮動小数点表示との間で数を変換するデータ処理装置および方法に関する。
【背景技術】
【０００２】
データの２つの基本的なフォーマット、すなわち、整数データと浮動小数点データについて計算を行うことのできる汎用プロセッサが知られている。典型的には、汎用プロセッサには、整数を処理する整数ハードウェア処理ユニットと浮動小数点数を処理する浮動小数点ハードウェア処理ユニットとが含まれている。
【０００３】
そのような汎用プロセッサと関連して、整数を浮動小数点数に変換し、および浮動小数点数を整数に変換し、整数処理論理と浮動小数点処理論理との間でデータの転送を可能とするハードウェア技術が知られている。そのような変換技術の２つの例が、ＵＳ−Ａ−３，９６１，１７０およびＵＳ−Ａ−４，６３１，６９６に記述されている。これらの特許は双方とも「固定小数点」数から浮動小数点数への変換に関連するものであるが、これらの特許において記述している固定小数点数は整数であり、すなわち、小数点の位置が最小有効ビットのすぐ右にあることに注意すべきである。
【特許文献１】ＵＳ−Ａ−３，９６１，１７０
【特許文献２】ＵＳ−Ａ−４，６３１，６９６
【０００４】
より一般的な意味において、数の固定小数点表示は、ｎビット数内の小数点の位置がプログラム可能であるものであり、そしてそれ故に、整数は、固定小数点表示の単なる一つの特定の例、すなわち、小数点が最小有効ビットのすぐ右に位置している例と見ることができる。したがって、符号のない固定小数点表示Ｕ（ａ，ｂ）は、ビットの合計数ｎがａ＋ｂに等しく、ａビットが小数点の左に、そしてｂビットが小数点の右にあるものである。同様に符号のある固定小数点表示Ｓ（ａ，ｂ）は、ビットの合計数ｎがａ＋ｂ＋１に等しく、符号ビットを表すのに１ビットを用いているものである。やはりａビットが小数点の左にあり、ｂビットが小数点の右にある。
【０００５】
Ｕ（ａ，ｂ）およびＳ（ａ，ｂ）フォーマットのいくつかの例は、以下のとおりである。
Ｓ（１５，０）‐−３２７６８から＋３２７６７の範囲にあるＰＤＰ‐１１システムでのｉｎｔとして時に知られている、符号の付いている１６ビット整数フォーマットである。
Ｓ（３１，０）‐−２，１４７，４８３，６４８から＋２，１４７，４８３，６４７の範囲にあるＡＲＭプロセッサ実行アーキテクチャのバージョン４およびそれ以降のものについて「符号の付いている語」として知られている、符号の付いている３２ビット整数フォーマットである。同様にＵ（３２，０）は、０から＋４，２９４，９６７，２９６の範囲にあるＡＲＭプロセッサについての「符号の付いていない語」として知られている。これらすべての場合において、最小有効ビットは、数量１を表している。そして、このデータのタイプは、１または２０の解像度を有すると言われる。
【０００６】
ｂ項が０でない固定小数点データのタイプの例は、以下のとおりである。
Ｕ（８，８）‐小数点の右に８ビットを有しており、最小有効ビットが、数量２−８または０．００３９０６２５を表す端数部分を構成している。範囲は単純に０から２５６であり、解像度は２−８である。
【０００７】
同様に、Ｓ（１３，２）数は、−８１９２から＋８１９１．７５の範囲を有し、解像度は２−２または０．２５である。
【０００８】
コストおよびサイズが主要な考慮事項である埋め込みプロセッサ環境において、これまでのところ、整数ハードウェア処理ユニットを備え、浮動小数点ハードウェア処理ユニットを備えていない埋め込みプロセッサを提供しさえすれば適切であると考えられている。そして、整数に有効な範囲外のもの（例えば１未満の範囲）をデータが有することを可能とする固定小数点アルゴリズムが開発されている。一方、プログラミング環境内では、固定小数点表示が理解されており、埋め込みプロセッサ内の整数ハードウェア処理論理は、常に演算子を整数として処理し、それ故に整数以外の固定小数点数をすべての演算について適切に処理するものではない。結果として、プロセッサの整数処理論理内の数の固定小数点表示を確実に正しく取り扱えるようにするのに追加の演算が必要とされる。
【０００９】
そのような追加の演算の例として、乗算演算が必要とされる。タイプＵ（ａ１，ｂ１）とＵ（ａ２、ｂ２）の２つの固定小数点値が掛け合わせられるとき、結果として得られる積は、Ｕ（ａ１＋ａ２，ｂ１＋ｂ２）の形となる。それを２つのフォーマットのいずれかに戻すには、値をスケーリングし、かつ切り捨てるか丸めるかする必要がある。必要とされるスケーリングは、２−ｘを乗算することであり、ここで、ｘは選択されていないフォーマットの端数項（ｂ１またはｂ２）であり、および最大有効ｎビットを減算することであり、ここで、ｎは、小数点の左の過剰なビットの数であり、使われていないフォーマットの整数項（ａ１またはａ２）よりも（ａ１＋ａ２）だけ小さい。全ての演算は、より一般的な整数フォーマットがそうであるように、宛先のフォーマットをオーバーフローし得ることに注意しなければならない。
【００１０】
第１の観点から見ると、本発明は、インストラクションを実行するよう動作可能なデータ処理ユニットと、フォーマット変換演算を数に適用して前記数の固定小数点表示と前記数の浮動小数点表示との間の変換を実行するフォーマット変換インストラクションに応答可能であるデータ処理ユニットと、前記数の固定小数点表示内の小数点位置を特定するプログラム可能な値を提供するよう配置されている制御フィールドと、制御フィールドを参照し、かつプログラム可能な値によってフォーマット変換動作を制御するよう動作可能なデータ処理ユニットを備えるデータ処理装置を提供する。
【００１１】
本発明の発明者らは、例えば埋め込みプロセッサでは、浮動小数点ハードウェアを以前は省略していた処理ユニット内に、そのような浮動小数点ハードウェアを備えることが、今は費用効率がよくなりつつあることを認識している。更には、本発明の発明者は、浮動小数点環境においては、整数ハードウェア内の固定小数点数を操作するときしばしば必要である付加的な演算の多くが、もはや必要とされていないことを認識した。更には、状況によっては、浮動小数点演算は、整数ハードウェア内の固定小数点数を操作するよう実行される等価の演算（例えば、ベクトル浮動小数点演算など）よりも迅速である。しかしながら、本発明の発明者はまた、データの組み合わせが固定小数点表示でメモリに最も効率良く蓄積される多くの状況があることも認識した。例えば、音声データは、１３ビットで適切に表示され、それ故、３２ビットを必要とする単精度浮動小数点表示よりも、１６ビットの固定小数点表示としてのほうが効率よく蓄積される。
【００１２】
したがって、本発明の発明者らは、浮動小数点計算の利点がそのような環境内で認識されるようであるなら、数の固定小数点表示と数の浮動小数点表示との間で変換を行うのに、迅速で効率的な技術が必要とされるであろうことを認識した
【００１３】
これは、フォーマット変換インストラクションを提供することによって、本発明により達成されるが、それによって、データ処理ユニットが、フォーマット変換演算を数に適用し、その数の固定小数点表示とその数の浮動小数点表示との間の変換を行うものとなる。制御フィールドが配置されて、数の固定小数点表示内の小数点位置を特定するプログラム可能な値を提供し、そしてデータ処理ユニットは、そのプログラム可能な値に従ってフォーマット変換演算を制御することができるように制御フィールドを参照する。それ故、従来技術の、整数表示と浮動小数点表示との間の変換と対照的に、本発明のデータ処理ユニットは、「固定小数点を意識する」もので、そこにおいては、小数点の位置について情報が提供され、そして実行される変換は、変換を実行するときのその小数点の位置を考慮するものである。したがって、固定小数点数と浮動小数点数との間で速い変換を行うために単一のインストラクションを用いることができ、その固定小数点表示内の小数点位置は、必要に応じてプログラム可能である。好ましい実施例において、プログラム可能な値は、各変換演算についてプログラム可能である。
【００１４】
制御フィールドが多くの方法で提供されることも理解される。１つの実施例において、制御フィールドを提供するために、データ処理装置内に制御レジスタが提供される。そして、プログラム可能値が必要に応じて、また必要なとき、制御レジスタ内でプログラムされ、データ処理ユニットは、小数点位置を測定し、そしてそれに従ってフォーマット変換演算を制御するために、フォーマット変換インストラクションを実行するときに前記制御レジスタを参照する。
【００１５】
代わりの実施例においては、フォーマット変換インストラクション自体の中に制御フィールドが提供され、それに応じて、制御フィールドが、特にフォーマット変換インストラクションの各々の段階に対して特定される。そのような１つの実施例においては、プログラム可能な値が、制御フィールド内の「即時の」値として提供され、それに応じてフォーマット変換インストラクションによって直接特定される。しかしながら、代わりにフォーマット変換インストラクション内の制御フィールドが、プログラム可能な値の蓄積される演算子レジスタを確認してもよい。これら２つのアプローチのいずれが取られるかに関わらず、フォーマット変換インストラクション自体の中の制御フィールドの仕様によって、インストラクションごとのベースでの小数点位置の仕様について、制御フィールドが制御レジスタまたは特定の演算子レジスタ内で特定されているならば利用可能であるよりも、大きな柔軟性が固有に提供されることが理解される。
【００１６】
好ましい実施例においては、前記数の固定小数点表示に符号が付けられるか符号が付けられないかを特定するよう更なる制御フィールドが配置される。好ましい実施例においては、この更なる制御フィールドは、フォーマット変換インストラクション自体の中に提供され、それに応じてその更なる制御フィールドは、フォーマット変換インストラクションの各々の段階について特定される。１つの実施例においては、その更なる制御フィールドがフォーマット変換インストラクションの操作符号の一部であって、各フォーマット変換インストラクションの２つの異なる変数が、すなわち、１つが符号の付けられた、そして１つが符号の付けられていない固定小数点表示が、存在するものとなる。
【００１７】
データ処理ユニットは様々な形態をとることが理解される。しかしながら、好ましい実施例においては、データ処理ユニットはパイプライン・プロセッサであり、フォーマット変換演算が、そのパイプライン・プロセッサの複数のパイプライン段階内で行われる。
【００１８】
特定の実施例においては、パイプライン・プロセッサは、複数のパイプライン段階内に位置する指数処理論理と複数のパイプライン段階内に位置する仮数処理論理とを備える浮動小数点パイプライン・プロセッサであって、指数処理論理と仮数処理論理とはフォーマット変換演算を適用できるように動作可能である。ここで、浮動小数点数について様々な計算を行うように提供される指数処理論理と仮数処理論理とはまた、フォーマット変換インストラクションを実行するのに必要とされるフォーマット変換演算を適用するよう好ましい実施例において好ましく用いられる。
【００１９】
１つの実施例において、フォーマット変換インストラクションは、固定小数点から浮動小数点への変換インストラクションであって、数に適用されるフォーマット変換演算は、前記数の固定小数点表示から前記数の浮動小数点表示への変換を行うよう動作可能である。１つの好ましい実施例において、固定小数点表示は、符号が付けられているか符号がつけられていないかのいずれかであり、また半ワード（すなわち１６ビット）か長ワード（すなわち３２ビット）かのいずれかである。同様に、浮動小数点表示は、単精度か倍精度かである。したがって、好ましい実施例においては、フォーマット変換インストラクションの８つの変形例が提供されて、固定小数点表示の各々から浮動小数点表示の各々への変換が可能となっている。
【００２０】
好ましい実施例において、フォーマット変換演算には、初期の指数値から数の固定小数点表示において先行するゼロの数を指示する値を引くことに等しい演算を行うことによって、数の浮動小数点表示のための指数値を生成するよう動作可能な指数生成演算および前記指数生成演算に先立って、制御フィールド内に提供されるプログラム可能な値に基づいて初期の指数値を調整するよう動作可能であるフォーマット変換演算が含まれている。したがって、フォーマット変換演算は「固定小数点を意識し」ており、小数点位置を特定するプログラム可能な値に依存して、演算で用いられる初期の指数値が調整される。このため、生成される浮動小数点表示は、確実に数の固定小数点表示に依存するものとなり、数の固定小数点表示が、変換を行う目的で整数として取り扱われるに過ぎないものではなくなる。
【００２１】
好ましい実施例においては、データ処理ユニットはパイプライン・プロセッサであり、パイプライン・プロセッサの複数のパイプライン段階内でフォーマット変換演算が行われ、そして指数生成演算が行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で初期の指数値の調整が行われる。これによって、指数生成演算が行われるのに先立って、必要に応じて初期の指数値が確実に調整されるものとなる。
【００２２】
好ましい実施例においては、所定のパイプライン段階が、デフォルトの初期指数値から制御フィールド内に提供されるプログラム可能な値を減算するのに等しい演算を行うことによって、初期の指数値を調整するよう動作可能な調整論理を備える。１つの特定の実施例においては、この減算プロセスは、実際には、プログラム可能な値を反転して、それを、論理に１つの値を加算するのと一緒に、初期の指数値に加えることによって行われる。
【００２３】
本発明の１つの実施例においては、フォーマット変換インストラクションは、浮動小数点から固定小数点への変換インストラクションであり、そして数に適用されるフォーマット変換演算は、前記数の浮動小数点表示から前記数固定小数点表示への変換を行うよう動作可能である。先に述べたとおり、浮動小数点表示は好ましい実施例においては、単精度浮動小数点表示または倍精度浮動小数点表示であり、一方、固定小数点表示は、符号が付けられているか符号が付けられておらず、また半ワード表示であるか長ワード表示である。したがって、好ましい実施例においては、フォーマット変換インストラクションの８つの変形例が提供され、浮動小数点表示の各々のタイプから固定小数点表示の各々のタイプへの変換が可能となる。更には、特に好ましい実施例においては、浮動小数点から固定小数点へのフォーマット変換インストラクションと、固定小数点から浮動小数点へのフォーマット変換インストラクションの双方が提供される。
【００２４】
理解されるとおり、数の浮動小数点表示によって指数値と仮数値とが提供される。浮動小数点から固定小数点への変換インストラクションを考慮すると、フォーマット変換演算には、好ましくは、指数値の所定値との比較に基づいて桁送りカウント値を決定するよう動作可能な指数差決定演算と、その桁送りカウント値に基づいて仮数値に桁送りを適用するよう動作可能な桁送り演算とが含まれており、その指数差決定演算は、桁送りカウント値の決定においてプログラム可能な値を用いるよう動作可能である。したがって、フォーマット変換演算は「固定小数点を意識する」ものとされ、小数点の位置は、桁送りを仮数値に適用するのに用いられる桁送りカウント値を決定するとき考慮され、それに応じて、フォーマット変換演算の結果としての固定小数点表示出力が、必要とされるビットを更に操作せずに、必要とされる固定小数点の形になる。
【００２５】
好ましい実施例においては、指数差決定演算は、指数値とプログラム可能値を所定の値から減算するのに等しい演算を行うことによって桁送りカウント値を決定するよう動作可能である。１つの実施例においては、この減算演算は、指数値とプログラム可能値とを反転し、そしてその反転された指数値と反転されたプログラム可能値とを、論理に１つの値を加えるのと一緒に、所定の値に加えることによって達成される。
【００２６】
当業者には理解されるとおり、数の浮動小数点表示は、更に符号値を提供する。好ましい実施例においては、フォーマット変換演算には更に、桁送り演算に先立って、符号値に必要とされる仮数値の変更を行うよう動作可能な仮数変更演算が含まれている。したがって、桁送り演算が行われるときまでに、符号値を考慮するのに必要とされる仮数値の変更が既に行われている。
【００２７】
１つの実施例において、データ処理ユニットはパイプライン・プロセッサであって、フォーマット変換演算が、そのパイプライン・プロセッサの複数のパイプライン段階内で行われており、指数差決定演算が、桁送り演算の行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われている。したがって、このアプローチによって、桁送り演算が行われるのに先立って、指数差決定演算を確実に完了してしまうことができる。
【００２８】
好ましい実施例において、所定のパイプライン段階は、桁送りカウント値を決定するために、指数値とプログラム可能値とを所定の値から減算するのに等しい演算を行うよう動作可能な指数差決定論理を備える。
【００２９】
フォーマット変換インストラクションによって生成される固定小数点表示は、数の所定の範囲を表示することができ、その範囲は、固定小数点表示における合計ビット数、固定小数点表示の符号が付いているか符号が付いていないか、および小数点がどこに位置するのかに依存するものであることが、当業者に理解される。典型的には、浮動小数点表示は、固定小数点表示よりも数のずっと大きな範囲を表示することができ、それに応じて浮動小数点表示から固定小数点表示に変換するとき、数が固定小数点表示内で表すことのできる数の範囲の外となることが可能である。したがって、好ましい実施例においては、装置は、指数値およびプログラム可能値に基づいて、数が所定範囲内で表示することのできない範囲外の例外を検出し、そして範囲外の例外が検出されるならば、デフォルトの結果が数の固定小数点表示として生成されるように動作可能な例外検出論理を更に備えている。
【００３０】
好ましい実施例においては、浮動小数点数が固定小数点表示内で表示可能であるよりも大きいならば範囲外の例外が起こる。したがって、符号の付いた固定小数点表示については、浮動小数点数が固定小数点表示内で表現可能な最大の正の値よりも大きな正数であるか、または固定小数点表示内で表示可能な（絶対値の大きさが）最大の負の値よりも絶対値の大きさが大きな負数であるならば、範囲外の例外が起こる。同様に、固定小数点表示が符号の付いていない表示であるならば、浮動小数点数が固定小数点表示内で表現可能な最大数よりも大きければ、範囲外の例外が起こる。
【００３１】
好ましい実施例においては、範囲外の例外の検出に際して生成されるデフォルトの結果が、固定小数点表示内で表示可能な最大の許容値である。したがって、符号の付いていない固定小数点表示については、デフォルトの結果は、固定小数点表示内で表現可能な最大の値であり、また符合の付いている固定小数点表示については、デフォルトの結果は、範囲外であると決定される浮動小数点数が正の数であったか負の数であったかに依存して、表現可能な最大の正の値かまたは（絶対値の大きさが）最大の負の値かのいずれかとなる。
【００３２】
好ましい実施例において、数の浮動小数点表示が小さすぎて固定小数点表示の利用可能な範囲内に収まらないときは、例外検出論理が検出を行う必要はなく、それは、そのような瞬間には、フォーマット変換演算が自動的にそのような値をゼロと置き換えるからである。
【００３３】
範囲外の例外が検出されるならば、デフォルトの値が生成されるようにすることに代えて、例外検出論理が、例外を処理する例外取り扱いルーチンを呼び出すよう配置されてもよい。
【００３４】
いくつかの実現例においては、初期のパイプライン段階の間に例外を悲観的に検出することが、すなわち、例外が起こり得るかどうか（起こるかどうかではなく）を決定し、かつそのように検出される全ての例外に例外取り扱いルーチンを参照させることが可能である。したがって、そのような実施例においては、数の固定小数点表示を形成するよう適用される丸め演算によって、範囲外の例外が起こる潜在的な範囲外の例外を検出するよう例外検出論理が更に動作可能である。好ましくは、そのような状況においては、例外取り扱いルーチンが呼び出されて変換プロセスを取り扱う。
【００３５】
代わりに、そのような状況において例外取り扱いルーチンを呼び出すよりもむしろ、インストラクションが代わりにパイプライン・プロセッサの残りの部分を通過することが可能となって、丸め演算によって範囲外の例外が起こるならばデフォルトの値が生成されるように、データ処理装置における制御レジスタを設定することができる。
【００３６】
１つの実施例において、データ処理ユニットはパイプライン・プロセッサであり、フォーマット変換演算が、パイプライン・プロセッサの複数のパイプライン段階内で行われ、指数差決定演算が、桁送り演算の行われる１つ以上のパイプライン段階に先立って、所定のパイプライン段階で行われ、かつ例外検出論理が、前記所定のパイプライン段階内に提供される。それ故、そのような実施例においては、指数差決定演算と例外検出演算の双方が同じパイプライン段階内で行われる。
【００３７】
第２の観点から見ると、本発明は、インストラクションを実行するよう動作可能なデータ処理ユニットを備えるデータ処理装置内で、数を、前記数の固定小数点表示と前記数の浮動小数点表示との間で変換する方法を提供し、その方法は、前記数の固定小数点表示内の小数点位置を特定するプログラム可能な値を制御フィールド内に提供するステップと、フォーマット変換インストラクションに応答し、データ処理ユニットが、フォーマット変換演算を前記数に適用して、前記数の固定小数点表示と前記数の浮動小数点表示との間で変換を行うようにするステップであって、データ処理ユニットに、制御フィールドを参照させ、かつプログラム可能な値に従ってフォーマット変換演算を制御させる操作が含まれているステップとを備える。
【００３８】
第３の観点から見ると、本発明は、本発明の第２の観点による方法を行うデータ処理装置を構成するよう動作可能なフォーマット変換インストラクションを収容するコンピュータ・プログラムを提供する。別の観点から見ると、本発明は、本発明の第３の観点によるコンピュータ・プログラムを収容するキャリア媒体を提供する。キャリア媒体は、不揮発性または揮発性メモリ装置の形をとるか、または実際には、コンピュータ・プログラムが伝送される伝送媒体の形をとるかすることが当業者に理解される。
【発明を実施するための最良の形態】
【００３９】
先に述べたとおり、整数データ・タイプか浮動小数点データ・タイプかについて演算するよう定義されるインストラクションを実行する処理ユニットが配置される。プロセッサ内の整数処理論理が、演算子を整数データとして取り扱う一方で、プログラム環境内では、これらの値には選択可能な演算子内に小数点の位置を持つ固定小数点の解釈を与えることができる。ハードウェアが「固定小数点を意識する」ものではないので、プロセッサの整数ハードウェアで固定小数点アルゴリズムを走らせるには、整数ハードウェア内の固定小数点値の正しい処理、例えば、乗算演算に従うビット操作、結果のスケーリングのし直しなど、を確実に行う追加の演算を用いることが必要となる。
【００４０】
図１Ａは、数の半ワード固定小数点表示、すなわち１６ビット表示を例示する図である。その半ワードが符号の付いていない半ワードであるならば、１６ビット全てを用いて固定小数点値を特定することができ、一方、その半ワードが符号の付いている半ワードであるならば、ビット１５、すなわち最も重要なビットを用いて固定小数点値の符号を指示し、０が典型的には正の値を指示し、また１が典型的には負の値を指示する。そして残りの１５ビットは、値そのものを表すのに用いられる。
【００４１】
図１Ｂに例示されるように、長ワード固定小数点表示についても類似の状況が生じ、符号の付いていない固定小数点値について３２ビット全てが値を表すのに用いられ、一方、符号の付いている固定小数点値については、ビット３１、すなわち、最も重要なビットが、符合情報を収容するのに用いられ、残りの３１ビットが、実際のデータ値を表すのに用いられている。
【００４２】
実際のデータ値を表すのに用いられるビットの数に関しては、「ａ」ビットが小数点の左にあると考えることができ、残りの「ｂ」ビットが小数点の右にあると考えられる。プログラム環境においては、小数点の位置決めが知られており、一方ハードウェア自体においては、整数ハードウェアは、小数点位置を意識するものではなく、代わりに、固定小数点値をハードウェアによって行われる計算のための整数値として取り扱う。以下の記述のために、符号の付いていない固定小数点数が、Ｕ（ａ，ｂ）として表され、一方、符号の付いている固定小数点数が、Ｓ（ａ，ｂ）として表される。
【００４３】
固定小数点数に対比して、浮動小数点数は（＋／−）１．ｘｘ２ｙの形にある。値「１．ｘ」を仮数として言及し、それの値「ｘ」を端数として言及する。値「ｙ」を指数として言及する。これらの値を浮動小数点数内で表す方法を、ここで図２Ａおよび図２Ｂを参照して例示する。
【００４４】
浮動小数点数のフォーマットが、「２進浮動小数点算術のためのＩＥＥＥスタンダード」、ＡＮＳＩ／ＩＥＥＥスタンダード７５４／１９８５、電気電子学会（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ  Ｉｎｃ）、ニューヨーク、１００１７（以下ＩＥＥＥ７５４／１９８５スタンダードとして言及する）と呼ばれる規格において定義される。ＩＥＥＥ７５４／１９８５スタンダードによって特定される単精度浮動小数点数のフォーマットが図２Ａに示されている。図２Ａから明らかなとおり、単精度浮動小数点数３０は、３２ビットからなり、３つのフィールド３２、３４、３６に分割される。第１のフィールド３２は、最も重要なビットを収容し、そして浮動小数点数の符号を特定するのに用いられている。第２のフィールド３４はビット２３乃至３０からなり、そして指数の値を特定するのに用いられており、一方、第３のフィールド３６は、ビット０乃至２２からなり、そして端数を特定するのに用いられている。同様に、倍精度浮動小数点数４０について、それは６４ビットからなり、そして図２Ｂに例示されるように、第１のフィールド４２が最も重要なビットを収容し、それは浮動小数点数の符号を識別するのに用いられており、第２のフィールド４４は、ビット５２乃至６２を収容して指数を表すのに用いられており、一方、第３のフィールド４６は、ビット０乃至５１を収容して端数を識別するのに用いられている。
【００４５】
浮動小数点数を処理するよう動作可能であるプロセッサには、典型的には、図２Ａおよび図２Ｂに例示される単精度および倍精度フォーマットを理解する浮動小数点ハードウェア・ユニットが含まれている。したがって、一旦そのハードウェア・ユニットが、特定の３２ビット値が単精度浮動小数点数であると伝えられたならば、それはその３２ビット値内のフィールド３２、３４、３６およびこれらのフィールド内の値が表すものを意識する。同様に、浮動小数点ハードウェアが一旦、２つの３２ビットのレジスタが６４ビットの倍精度浮動小数点数を収容すると伝えられたならば、それはやはりフィールド４２、４４、４６の存在およびこれらのフィールド内に収容されるデータの適合性を意識する。
【００４６】
対照的に、整数ハードウェアが、半ワードであろうと長ワードであろうと、固定小数点データを処理するのに用いられているとき、それは、これらのデータ値をあたかもそれらが整数値であるかのように、すなわち、小数点が入力されるデータ値に関わらず常に同じ位置に、典型的には最低の有効ビットのすぐ右にあると仮定して、処理するよう動作可能であるに過ぎない。したがって、図３Ａに示されるように、プロセッサの整数ハードウェアが、図３Ａに例示される１６ビットの符号の付いていない値５０を受け取るならば、それは、プロセッサで走っているプログラムによって理解される固定小数点表示に関わりなく、その値が符号の付いていない整数である（すなわち、値４９６を表している）と仮定する。前述のとおり、整数値を浮動小数点値に変換可能とし、またその反対のインストラクションが知られており、それに応じて、整数値５０を、浮動小数点数、例えば図３Ａに例示される単精度浮動小数点数６０に変換するインストラクションを実行するようプロセッサを配置することができる。浮動小数点フォーマットにおいては、値４９６が１．１１１１ｘ２８と表されることが理解される。先行する１を取り除くと、端数値が図３Ａに例示されるように１１１１０．．．０となる。指数に関して、ＩＥＥＥ７５４／１９８５スタンダードは、１６進７Ｆのバイアスを加えることを定義し、そしてこのバイアスが値８に加えられるとき、これが１００００１１１の指数値となることが理解される。更には、その値が正であるので符号ビットが０となる。
【００４７】
しかしながら、プログラム内で実際に固定小数点数がＵ（８，８）の形である、すなわち、それが小数点の左に８ビットを、および小数点の右に８ビットを備える符号の付いていない固定小数点値であるならば、図３Ｂに例示される１６ビット値７０についてプログラムによって理解される実際の値は、１．９３７５（すなわち、４９６割る２５６）である。しかしながら、整数ハードウェアがその値を整数として取り扱い、そして値７０を単精度浮動小数点数に変換するよう周知の変換プロセスが適用されるならば、これはなおも図３Ａに例示される単精度浮動小数点数６０を結果として生じる。しかしながら、実際の正しい浮動小数点数は、図３Ｂにおいて番号８０によって参照されるもので、そしてそれ故に、整数を浮動小数点数に変換するのに周知の技術が用いられるならば、正しい浮動小数点数８０を達成するよう結果を変更するのに更なるインストラクションが必要とされるということが、当業者には理解される。これらの余分なインストラクションは、典型的には、乗算、除算または桁送りタイプの演算の形をとる。
【００４８】
それ故、数の真の固定小数点表示（すなわち、値内の小数点の位置がプログラム可能であるもの）を浮動小数点数に変換するかまたはその反対のことをするには、周知の技術に従って、処理ハードウェアで複数のインストラクションを実行することが必要となり、第１のインストラクションは、整数フォーマットと浮動小数点フォーマットの間で変換するかまたはその反対のことをするのに用いられ、そして更に１つ以上のインストラクションが、特定の固定小数点表示に関連して結果を訂正するよう用いられる。
【００４９】
先に述べたとおり、コストとサイズを考慮して、最近まで整数処理論理のみをプロセッサ内に提供するように決めていた様々な実現例がある。１つの例は、廉価な低電力プロセッサが必要とされる埋め込みプロセッサ環境において、例えば、携帯電話内でＣＯＤＥＣスピーチ処理を行うものなどである。本発明の発明者らは、そのような処理は、浮動小数点ハードウェアによって、より高い信頼性をもってかつより迅速に行うことのできるものとなり、かつ現在の技術によって、浮動小数点ハードウェアをそのような埋め込みプロセッサ内に含むことがもはや禁止されるものでもないと考えられることを認識した。しかしながら、そのような潜在的な利点が実現できるようにするには、埋め込みプロセッサが、数を固定小数点表示から（プログラム可能な小数点位置を有する）浮動小数点表示へと、迅速に変換でき、およびそれを反対に行えるということが、非常に重要である。変換を行うための前述のアプローチは受け入れられないと考えられたが、これは、それが充分に迅速ではなく、また、整数としての固定小数点値の、浮動小数点表示への変換またはその反対の結果を訂正するのに必要とされる追加の処理インストラクションを収容する、より大きなプログラム・スペースを必要とするからである。
【００５０】
本発明の実施例により、固定小数点データの符号の付いているまたは符号の付いていない１６ビットまたは３２ビットを、単精度または倍精度の浮動小数点データに直接高速変換を行い、およびその反対の変換を行う一組のインストラクションが提案される。それらのインストラクションは以下の形にある。
Ｆ（ＳＵ）（ＨＬ）ＴＯ（ＳＤ）‐符号の付いている／符号の付いていない半ワード／長ワードを単精度／倍精度に変換
ＦＴＯ（ＳＵ）（ＨＬ）（ＳＤ）‐単精度／倍精度を符号の付いている／符号の付いていない半ワード／長ワードに変換
【００５１】
好ましい実施例において、固定小数点から浮動小数点への変換について、インストラクションが、入力演算子のためのソース・レジスタを特定し、そして値が、固定小数点表示内の小数点の位置を特定する。宛先レジスタもまた、必要に応じて特定することができるが、好ましい実施例においては、宛先レジスタは、ソース・レジスタと同じレジスタであるので特定する必要はない。小数点の位置を特定する値は、それが、固定小数点データが変換においてプロセッサにどのように取り扱われるかを特定する点で重大である。好ましい実施例において、この最後の項についての０値は整数データを特定する。浮動小数点から固定小数点への変換について、インストラクション内に同じ情報が提供される。好ましい実施例において、この新しいフォーマット変換インストラクションの１６の変形例が提供されて、好ましい実施例において用いられる異なる２つのタイプの浮動小数点表示と異なる４つのタイプの固定小数点表示との間の変換をカバーするが、これらのインストラクションは以下のとおりである。
符号の付いているものから浮動小数点への変換
ＦＳＨＴＯＳ‐符号の付いている半ワードから単精度への変換
ＦＳＨＴＯＤ‐符号の付いている半ワードから倍精度への変換
ＦＳＬＴＯＳ‐符号の付いている長ワードから単精度への変換
ＦＳＬＴＯＤ‐符号の付いている長ワードから倍精度への変換
符号の付いていないものから浮動小数点への変換
ＦＵＨＴＯＳ‐符号の付いていない半ワードから単精度への変換
ＦＵＨＴＯＤ‐符号の付いていない半ワードから倍精度への変換
ＦＵＬＴＯＳ‐符号の付いていない長ワードから単精度への変換
ＦＵＬＴＯＤ‐符号の付いていない長ワードから倍精度への変換
浮動小数点から符号の付いているものへの変換
ＦＴＯＳＨＳ‐単精度から符号の付いている半ワードへの変換
ＦＴＯＳＨＤ‐倍精度から符号の付いている半ワードへの変換
ＦＴＯＳＬＳ‐単精度から符号の付いている長ワードへの変換
ＦＴＯＳＬＤ‐倍精度から符号の付いている長ワードへの変換
浮動小数点から符号の付いていないものへの変換
ＦＴＯＵＨＳ‐単精度から符号の付いていない半ワードへの変換
ＦＴＯＵＨＤ‐倍精度から符号の付いていない半ワードへの変換
ＦＴＯＵＬＳ‐単精度から符号の付いていない長ワードへの変換
ＦＴＯＵＬＤ‐倍精度から符号の付いていない長ワードへの変換
【００５２】
特に好ましい実施例においては、これらのインストラクションは、制限ＡＲＭによって開発されるＡＲＭインストラクションの組の中に提供され、各インストラクションが特定の操作符号部分、好ましくは０ｂ１１１１を有しており、そして拡張された操作符号部分がフォーマット変換インストラクションの特定の変形例を定義する。とりわけ、異なる１６のインストラクションが、以下の表に例示されるような８つの基本インストラクションからなる。
【表１】
2004213622.tif 000003
【００５３】
このとりわけ好ましい実施例においては、演算子Ｆｍは、小数点の位置を収容し、かつ０から３１の範囲の値を有し、一方、演算子Ｆｄは、ソースおよび宛先レジスタの双方を特定する。元の固定小数点または浮動小数点ソースは、変換の結果によって書き換えられる。
【００５４】
好ましい実施例において、これらのインストラクションは、プロセッサの浮動小数点ハードウェアにおいて実行され、それには、理解されるとおり、指数処理経路と仮数処理経路とが含まれる。好ましい実施例において、以下により詳細に記述されるとおり、これらの２つの経路内に存在する論理が用いられて、フォーマット変換インストラクションによって特定されるフォーマット変換演算が行われ、指数経路の論理にほんの小さな変更だけが必要とされる。とりわけ好ましい実施例においては、プロセッサは、変換演算を行う浮動小数点多重累算（ＦＭＡＣ）パイプラインを使用するが、しかし他のパイプラインを用いることもできることが当業者には理解される。
【００５５】
ここで、数の固定小数点表示の、その数の対応する浮動小数点表示への変換を考えると、存在する浮動小数点処理ユニットの指数経路内および仮数経路内の双方に提供される関連論理が、図４に概略的に例示されている。先に記述されたとおり、存在する変換プロセスによって整数を浮動小数点表示に変換することのみが可能となり、そしてそのような変換を行うプロセスが、図４を参照してここに記述される。
【００５６】
整数から浮動小数点への変換については、整数値のみが演算子として受け取られ、そしてレジスタ１００に蓄積される。段階１においては、最初の指数値が強制的に１６進値１Ｆとされてレジスタ２００内に蓄積され、一方、仮数経路を参照すると、整数が正であるならば、それは、そのままマルチプレクサ１１５を通ってレジスタ１２０に送られる。しかしながら整数が負であると、それは、インバータ１１０によって反転され、そしてマルチプレクサ１１５を通ってレジスタ１２０へと送られる。
【００５７】
段階２において、そのままレジスタ２１０へと送られる指数については更なる作業が行われず、一方、仮数経路については、整数が負であったならば増分器１２５内で１だけ増分され、そしてマルチプレクサ１３０を介してレジスタ１３５へと送られ、それによって２の補数演算を完了する。この結果、入力整数について正の値を生じる。
【００５８】
第３の段階において、指数にはやはり作業が行われず、それはそのままレジスタ２２０へと送られ、一方、仮数経路においては、ここで符号の付けられていない整数値が、先行する０の加算器（ＬＺＡ）１４０に入力され、そしてそれは、レジスタ１４５に蓄積する符号の付いていない整数内の先行する０ビットの数の計数を出力する。加えて、符号の付いていない整数はレジスタ１３５からレジスタ１５０へ径路で送られる。
【００５９】
第４の段階において、レジスタ１４５からの先行する０の計数出力によって指数が減分され、ここでの指数が、丸めのための調整を行う前の最後の指数を表すものとなり、この最後の指数は、レジスタ２５０内に蓄積される。この減分プロセスを達成するために、先行する０の計数がインバータ２３０によって反転され、そして論理１値の加算と一緒に、加算論理２４０によって現在の指数に加算され、これによって、先行する０の計数だけ指数を減分することによって、達成されるであろうものと同じ結果を生み出す。仮数経路内で整数が左に桁送りされ、浮動小数点数の宛先精度のための整数ビット位置に先行する１を配置し、これはシフタ１５５によって達成され、そしてその結果がレジスタ１６０内に配置される。
【００６０】
段階５において、丸めを行う仮数オーバーフローに備えて増分器２６０によって指数が増分される。仮数経路内では、浮動小数点仮数が増分器１６５によって増分され、そしてマルチプレクサ１７０に入力され、それはまた増分されない仮数をも受け取る。増分信号がマルチプレクサ１７０に入力され、それは、丸めプロセスが増分される仮数値を結果として生じるか否かを指示するよう使用される丸めモードに依存して駆動され、そしてマルチプレクサ１７０からの出力は、レジスタ１７５内に蓄積される。そして増分器１６５からの実行信号を用いて、必要に応じて指数の増分を制御するようマルチプレクサ２７０への指数増分信号入力を制御し、そしてマルチプレクサ２７０からの出力は、レジスタ２８０内に蓄積される。
【００６１】
最後に、段階６において、最後の指数が加算器２９０によって再度バイアスをかけられて宛先レジスタファイルに書き込まれ、一方、最後の仮数の端数が、続いてレジスタファイルへと書き込まれる。加えて、符号ビットもまた宛先レジスタ内に設定されるということが理解される。
【００６２】
整数と浮動小数点数との間の変換のいくつかの例が、以下の２つの表に与えられており、表２には、正の長ワード整数の、単精度浮動小数点表示への変換のプロセスが例示されており、また表３には、負の長ワードの符号の付いている整数の、単精度浮動小数点表示への変換が例示されている。表２が以下に提供されており、以下の整数値を変換するために図４の論理を通しての信号の流れが例示されている。
ＩｎｔＶａｌｕｅ＝０ｘ０ＦＦＦＦＦＦ９＝２６８，４３５，４４９
【表２】
2004213622.tif 000004
【００６３】
表３が以下に提供され、図４のフロー図内で行われる処理が以下の整数値の変換を行うことが例示されている。
ＩｎｔＶａｌｕｅ＝０ｘＦＦＦＦＦＤＡＢ＝−５９７
【表３】
2004213622.tif 000005
【００６４】
先に述べたとおり、これらの整数値が、プログラム内で最小有効ビットのすぐ右以外の位置の小数点位置を持つ特定の固定小数点表示を有するものとして実際に理解されるならば、結果として得られる浮動小数点表示を操作するためにプロセッサによって更なるインストラクションを実行し、それが望ましい値を表すようにする必要がある。好ましい実施例において、この要件は、図５に例示される論理を用いることによって取り除かれ、それは、本発明の先に記述されたフォーマット変換インストラクションの１つを実行することに伴うもので、それによって、固定小数点値を直接必要とされる浮動小数点フォーマットに変換することが可能となる。
【００６５】
図４を参照して、先に記述されるものと同一の、図５のこれらの論理素子は、同じ参照番号で参照されている。図５から、必要とされる唯一の変更が、固定小数点表示内の小数点の位置を特定する値に従って、初期の指数値を調整することのできる指数経路の段階１内にあることが理解され、先に述べたとおり、この値は、フォーマット変換インストラクション内で特定され、ここではＤｅｃＬｏｃ値として言及される。それゆえ、図５から明らかなとおり、やはり固定小数点値のみが、レジスタ１００内に蓄積される演算子である。しかしながら、ＤｅｃＬｏｃ値もまたレジスタ３００内に蓄積され、初期の指数値の調整を行うことを可能としている。より詳しくは、第１段階において、初期の指数値１６進１Ｆは、そこからＤｅｃＬｏｃ値を減算することによって変更され、レジスタ２００内に蓄積される修正された初期指数値を生成する。図５に例示される実施例において、このプロセスは、ＤｅｃＬｏｃ値をインバータ３１０で反転し、そしてそれを、論理１値の加算と一緒に、加算器３２０内の初期の指数値に加算することによって達成され、修正された初期の指数値を生成する。指数経路の段階１内のこの処理以外の他の処理の全ては、まさに図４を参照して先に記述されたとおりである。
【００６６】
固定小数点値を対応する浮動小数点フォーマットに直接変換するのに、本発明の好ましい実施例の単一フォーマット変換インストラクションをどのように用いることができるかの例が、以下の表４を参照してここに例示される。この例において、入力演算子は、１６整数ビットと１６端数ビットとを備える正の長ワード固定小数点値であり、それは、３２ビット値として表２の先に記述された整数の例と同じビットのシーケンスを有する。しかしながら、表４の例のための入力演算子が、実際は、表２を参照して先に記述された入力演算子に対して異なる番号を表すという事実を説明するのに、異なる単精度浮動小数点数を生成する必要があるということが理解される。表４が以下に提供され、例えば、ここで入力演算子は以下のとおりである。
ＦｉｘｅｄＰｏｉｎｔＶａｌｕｅ＝０ｘ０ＦＦＦＦＦＦ９＝２６８，４３５，４４９／２＾１６＝４０９５．９９９８９３
【表４】
2004213622.tif 000006
【００６７】
前述の表４を参照すると、固定小数点演算子のフォーマットは、Ｓ（１５，１６）であり、１６（１０進）および１０（１６進）のＤｅｃＬｏｃ値を特定する。整数と解釈される演算子０ｘ０ＦＦＦＦＦＦ９は、値２６８，４３５，４４９を有する。Ｓ（１５，１６）と解釈される同じ値が複数の方法で計算されるが、最も簡単な方法は、演算子が符号の付いた整数（Ｓ（３１，０））と解釈されるときに計算される数を、すなわち、２６８，４３５，４４９を２１６で割ることである。これが行われるとき、結果として得られる値は４０９５．９９９８９３である。
【００６８】
第１の段階において、ＤｅｃＬｏｃ値をインバータ３１０で反転して、この値を１という入力キャリーを備える加算器で初期の指数値に加算することによって、１０（１６進）というＤｅｃＬｏｃ値が、１Ｆ（１６進）という初期の指数値から減算される。結果として得られる初期の指数値は０Ｆ（１６進）である。
【００６９】
前記表から、固定小数点値４０９５．９９９８９３が、単一のインストラクション、および図５に例示される論理を通る値の単一経路指定によって、直接必要とされる単一点精度浮動小数点フォーマットに変換される。前述のとおり、これは、従来技術においては可能なものではないが、それは、従来技術においては、図４の論理を最初に通ることで表２の最後のエントリーに例示される単一精度浮動小数点値を生成してしまい、そして必要とされる単精度表示を生成するのに更なる操作が必要とされるからである。
【００７０】
図５に例示される論理を、先に記述された新しいフォーマット変換インストラクションと一緒にどのように用いることができるのかの第２の例が、以下に表５を参照して与えられており、ここで以下の固定小数点値が変換される（これは、２４整数ビットと８端数ビットを備える負の長ワード固定小数点値である）。
ＦｉｘｅｄＰｏｉｎｔＶａｌｕｅ＝０ｘＦＦＦＦＦＤＡＢ＝−２．３３２０３１２５
【表５】
2004213622.tif 000007
【００７１】
前述の表５を参照すると、固定小数点演算子のフォーマットはＳ（２３，８）であり、８（１０進）および８（１６進）のＤｅｃＬｏｃ値を特定する。整数と解釈される演算子０ｘＦＦＦＦＦＤＡＢは値−５９７を有する。Ｓ（２３，８）と解釈される同じ値は複数の方法で計算されるが、最も簡単な方法は、演算子が整数（Ｓ（３１，０））と解釈されるときに計算される数であって、それは−５９７であるものを２８で除算することである。これが行われるとき、結果として得られる値は−２．３３２０３１２５である。
【００７２】
第１の段階において、０８（１６進）というＤｅｃＬｏｃ値が、ＤｅｃＬｏｃ値をインバータ３１０で反転し、かつこの値を０という入力キャリーを備える加算器において初期の指数値に加算することによって、１Ｆ（１６進）という初期の指数値から減算される。その結果得られる初期の指数値は１７（１６進）である。
【００７３】
固定小数点表示から浮動小数点表示への変換を記述したので、ここで浮動小数点表示から固定小数点表示への変換を図６および図７を参照して記述する。図６には、標準的な方法で浮動小数点値を整数値に変換するのに用いられる、存在する浮動小数点パイプライン・プロセッサ内の、関連構成部品が例示されている。図４と比較して、１つ少ない段階が例示されていることが理解される。実際、パイプラインには、図６に例示されるように、段階３と段階４との間に更なる段階がうまく含まれていることが理解されるが、しかし好ましい実施例において、その段階内の処理論理は、フォーマット変換演算によって用いられないので、その段階は図から省略されている。
【００７４】
浮動小数点値のみがプロセスの演算子であり、仮数がレジスタ１００への入力であり、かつ指数（バイアスが取り除かれている）がレジスタ５００への入力である。段階１での指数経路内で指数は所定の値から減算され、それは、図６に例示される実施例においては、単精度のための１６進数１７であるか、倍精度のための１６進数３４であり、これは、結果として異なる因子（ＥｘｐＤｉｆｆとして言及される）を生成するが、この値はレジスタ５４０内に蓄積される。単精度または倍精度に依存する所定の値の選択はマルチプレクサ５２０によって行われ、かつインバータ５１０を用いて指数を反転し、そしてその反転された指数を、論理１値と一緒に加算器５３０内のマルチプレクサ５２０の出力に加算することによって、減算ステップが行われる。
【００７５】
加えて、指数経路の段階１内では、例外検出論理５５０が用いられて指数評価信号を生成し、それには、フォーマット変換インストラクションによって生成される固定小数点表示の範囲内で入力演算子浮動小数点数を表示できるかできないかを指示する範囲外例外信号が含まれている。固定小数点表示の範囲が、固定小数点表示が符号の付いているものか符号の付いていないものか、それが半ワードかまたは長ワードかおよび小数点位置がどこにあるのかに依存するということが理解される。更には、浮動小数点数が固有に等価の固定小数点表示よりも大きな範囲の値を表示することが可能であることが理解され、それに応じて、浮動小数点表示から固定小数点表示に変換するとき、宛先の固定小数点表示は入力数を表すことができないということが起こり得る。例外検出論理５５０が、範囲外の例外が起こる、すなわち、入力浮動小数点演算子が最大値（すなわち、目標となる浮動小数点表示によって、符号の付いている固定小数点表示の最大の負の値または最大の正の値、あるいは符号の付いていない固定し小数点表示に付いての最大の正の値）を超えるということを測定する状況においては、以下に記述するとおり、それによって、整数の結果についてデフォルトの結果が生成されるものとなるか、またはそれは例外を取り扱う例外取り扱いルーチンを呼び出すかする。
【００７６】
仮数経路内で、入力演算子は、段階１および２を経て、図４を参照して前述されたのと同じ方法で処理され、それに応じて正の演算子がそのまま通過し、一方、負の演算子が２の補数の形に配置され、そして演算子がレジスタ１３５に蓄積される。
【００７７】
図６から、段階１の後更なる作業が指数には行われないということが理解される。仮数経路の段階３において、２０の重みを持つ入力浮動小数点演算子におけるビットが最終の整数の最小有効ビット位置にあるように、レジスタ１３５による浮動小数点仮数出力が、ＥｘｐＤｉｆｆ信号から得られる、ＡｌｉｇｎＳｈｉｆｔＣｏｕｎｔ値に基づいて右に桁送りされる。そしてその結果がレジスタ４０５に蓄積される。
【００７８】
段階４において、レジスタ４０５内の値について丸めが行われ、論理素子４１０および４１５が、図４の素子１６５および１７０に関して前述されたのと同じ演算を行い、そして最後に、丸められた結果がレジスタ４２０内に配置される。先に述べたとおり、例外検出論理５５０が範囲外の例外が起こると測定するならば、（プロセッサは、範囲外の例外を検出する際に、段階１で例外取り扱いルーチンを呼び出すよう設定されていないと仮定し）デフォルトの整数結果が、マルチプレクサ４１５への最終結果選択信号入力を適切に選択することによって、強制的にマルチプレクサ４１５から出力される。
【００７９】
好ましい実施例において、範囲外の例外が起こり得る（起こるではなく）これらの状況を、すなわち、丸めプロセスが増分される整数を生じるならばそれが範囲外となることが起こり得るというこれらの状況を、悲観的に判断するよう、例外検出論理５５０を配置することができる。好ましい実施例において、そのような瞬間にはプロセッサは例外取り扱い符号を呼び出すように配置されており、そこでは変換演算が続いて行われる。
【００８０】
単精度浮動小数点値の長ワード整数への変換の２つの例が、ここで表６および表７を参照して以下に提供され、表６は、表２を参照して先に例示された変換の結果であった単精度浮動小数点値の変換を示し、かつ表７は、表３に例示される演算の結果であった単精度浮動小数点値の変換を例示する。
ＦＰＶａｌｕｅ＝０ｘ４ｄ８０００００＝１．０ｘ２２８＝２６８，４３５，４５６
【表６】
2004213622.tif 000008
ＦＰＶａｌｕｅ＝０ｘＣ４１５４０００＝−５９７
【表７】
2004213622.tif 000009
【００８１】
当業者に理解されるとおり、図６を参照して前述された処理の結果得られる整数を用いることを目標とするプログラムが、小数点が最小有効ビットのすぐ右にある以外の固定小数点表示を有するならば、小数点の位置を考慮してそれらを正しい固定小数点表示とするために、結果として得られる値を更に操作することが必要となる。本発明の好ましい実施例により、この要件は、図７に例示される論理を使用することで取り除かれ、それは、浮動小数点表示と必要とされる固定小数点表示との間で直接変換を行うための先に記述されたフォーマット変換インストラクションの１つと一緒に行われる。
【００８２】
図６を図７と比較して分かるとおり、仮数経路はそのままである。しかしながら、指数経路の段階１に関して、処理は以下のとおりである。この実施例において、元の指数（バイアスが取り除かれている）はレジスタ６００内に蓄積され、一方、フォーマット変換インストラクションから抽出されるＤｅｃＬｏｃ値はレジスタ６１０内に配置される。そして初期の指示値とＤｅｃＬｏｃ値とが、所定の値から減算され、それは、好ましい実施例において、単精度浮動小数点値については１６進の１８であり、倍精度浮動小数点値については１６進の３５である。マルチプレクサ６２０が用いられて、適切な所定の値を３：２加算器論理６５０へと出力し、それはまた、インバータ６３０によって反転される指数およびインバータ６４０によって反転されるＤｅｃＬｏｃ値を入力として受け取る。そして加算器論理６５０、６７０は、反転された指数および反転されたＤｅｃＬｏｃ値を所定の値に加算することによって必要とされる減算を行い、それは論理１値の加算と一緒に行われ、これによって、所定の値とＤｅｃＬｏｃ値によって調整される指数値との間の差を表すＥｘｐＤｉｆｆ値が生成され、その結果がレジスタ６９０内に配置される。その後、プロセスは、図６を参照して先に記述されたとおりである。
【００８３】
先に記述されたフォーマット変換インストラクションおよび図７の論理を用いて、浮動小数点値０ｘＣ４１５４０００（すなわち、−５９７．０）がどのように異なる固定小数点フォーマットに変換されるかの２つの例が、ここで表８および表９を参照して例示される。表８において、宛先固定小数点フォーマットは、長ワード・フォーマットにおいて、１６の整数ビットおよび１６の端数ビットを有し、一方、表９において、宛先固定小数点フォーマットは、半ワード・フォーマットにおいて、１２整数ビットと４端数ビットを有する。
ＦＰＶａｌｕｅ＝０ｘＣ４１５４０００＝−５９７．０
【表８】
2004213622.tif 000010
ＦＰＶａｌｕｅ＝０ｘＣ４１５４０００＝−５９７．０
【表９】
2004213622.tif 000011
【００８４】
前記２つの表を見直して理解されるとおり、直接必要とされる固定小数点表示を生成するために、データが図７の論理を一度通過するように単一インストラクションを用いることができ、それによって、従来技術で必要とされるような複数のインストラクションを実行するという要件を回避する。
【００８５】
図７に戻ると、例外検出論理６８０を配置して、図６の例外検出論理５５０によって行われるのと類似する方法で指数評価信号を生成する。しかしながら、例外検出論理６８０は、レジスタ６００からの指数値のみならずレジスタ６１０に蓄積されるＤｅｃＬｏｃ値からのものに基づいて指数評価信号を生成する。先に記述されたとおり、入力浮動小数点値が、符号が付いているか符号が付いていない有効な整数または固定小数点値について上の値を越えるならば、範囲外の例外が起こる。以下の表１０には、ＤｅｃＬｏｃの代表的な値について、長ワードと半ワード双方の符号の付いている有効な整数または固定小数点値について上の値が例示されており、ＤｅｃＬｏｃが０と３１の間の整数値として５ビットで表されるように仮定し、表１０は、単精度浮動小数点から符号の付いている固定小数点への変換を仮定している。
【表１０】
2004213622.tif 000012
【００８６】
以下の表１１には、単精度浮動小数点から符号の付いていない固定小数点への変換について、等価の数が与えられている。
【表１１】
2004213622.tif 000013
【００８７】
倍精度浮動小数点数についての対応する制限は、単精度浮動小数点数についての表１０および表１１を参照して記述されたのと類似の方法で判定することができることが理解される。
【００８８】
単精度から半ワードへの変換について、および倍精度から長ワードまたは半ワードへの変換については、入力浮動小数点値が表１０および表１１（または倍精度についての対応する表）に与えられている最大値未満であってでさえ、結果の丸めによって範囲外の例外が起こり得る。これらの場合において、入力浮動小数点値が、宛先固定小数点データ・タイプ最大値よりも絶対値において大きい場合について、および丸めの後結果が宛先固定小数点データ・タイプの最大値よりも絶対値において大きい他の場合において、範囲外の判定が段階１においてなされる。
【００８９】
完全なものとするために、図８および図９が提供されるが、それらは、本発明の実施例により、固定小数点から浮動小数点への変換および浮動小数点から固定小数点への変換それぞれについて行われる処理ステップを例示するフロー図である。より詳細には、図８は、図５を参照して先に例示された論理の基礎フローを例示するフロー図である。したがって、ステップ７００では、入力固定小数点値が最初の仮数として設定され、かつ最初の指数が設定され、図５の例においてそれは１６進数値１Ｆに設定される。そしてステップ７０５では、小数点位置情報（ＤｅｃＬｏｃ値）が、インストラクションの制御フィールドから読み取られ、その後ステップ７１０で、小数点位置値が最初の指数値から減算されて修正された指数（それは図５のレジスタ２００に蓄積される）を生成する。一方、ステップ７１５では、固定小数点数が負であるならば、２の補数演算が最初の仮数について行われ、新しい最初の仮数を生成し、図５においてこれは仮数経路の段階１および２内の論理によって行われる。
【００９０】
ステップ７２０では、最初の仮数の先行するゼロが数えられ、図５において、これは仮数経路の段階３のＬＺＡ１４０によって行われ、その後ステップ７３０で、修正された指数が先行する０計数で減分されて（図５の論理２３０、２４０で行われるように）最後の指数を生成する。
【００９１】
更には、ステップ７３５で最初の仮数は先行する０の計数だけ左に桁送りされて（図５の素子１５５で行われるように）修正された仮数を生成する。その後ステップ７４０で、修正された仮数が、必要に応じて丸められて、レジスタ１７５に配置される最後の仮数を生成し、そしてステップ７４５で、最後の指数は、必要ならば丸めによって増分されてレジスタ２８０に蓄積される最後の指数を生成する。最後に、ステップ７５０で、浮動小数点値が、符号値、バイアスのかけられた最後の指数および生後の端数（最後の端数は、最大有効ビットを仮数から取り除くことによって得られる）からなる宛先レジスタに書き戻される。
【００９２】
図９は、浮動小数点値の対応する固定小数点値への変換について、図７を参照して先に例示される論理によって、好ましい実施例で行われるプロセスを例示する等価フロー図である。ステップ８００で、小数点位置値（ＤｅｃＬｏｃ値）が制御フィールドから読み取られ、その後ステップ８０５で、指数値および小数点位置値が所定の値から減算されて、指数差値を判定する（図７の指数経路の段階１を参照）。
【００９３】
ステップ８１０では、指数値および小数点位置値に基づいて範囲外の例外が起こったかどうかが決定される（図７の段階１内の素子６８０を参照）。これは、入力浮動小数点値が宛先固定小数点データ・タイプ最大値よりも絶対値において大きいならば、および選択的に、丸めの後、結果が宛先の固定小数点データ・タイプ最大値よりも絶対値において大きいならば、場合に当てはまる。１つの実施例において、そのような状況では、例外を取り扱うのに例外取り扱い符号が呼び出され、一方、他の実施例においては、パイプラインの下でインストラクションが続けられ、後にデフォルトの値が生成される。
【００９４】
ステップ８１５では、浮動小数点数が負であるならば２の補数演算が仮数について行われ、これは、図７の仮数経路の段階１および２における論理によって行われる。
【００９５】
ステップ８２０では、仮数値が桁送り計数値によって桁送りされ、図７においてＡｌｉｇｎＳｈｉｆｔＣｏｕｎｔとして言及されるが、これは指数差値から得られる。これは、２０の重みを持つ入力浮動小数点演算子におけるビットが、宛先固定小数点フォーマットに必要とされる、対応する２０乗のビット位置へと桁送りされるように行われる。この機能は、好ましい実施例の図７の素子４００によって行われる。
【００９６】
その後、ステップ８２５では、桁送りされた仮数値に丸めが適用されて固定小数点の結果を生成し、または範囲外の例外がこの段階で検出されるならば、デフォルトの結果が固定小数点結果として選択され（プロセッサの設定には、そのような範囲外の例外のためにデフォルトの値が生成されることが必要であると仮定する）、好ましい実施例におけるこの処理は、図７の仮数経路の段階４において例示される素子によって行われる。その後、ステップ８３０で、最後の固定小数点の結果が宛先のレジスタに書き戻される。
【００９７】
前述のとおり、好ましい実施例の記述から、本発明の好ましい実施例によって、固定小数点表示と浮動小数点表示との間の直接変換を可能とする、とりわけ迅速で効率的な技術が提供され、その固定小数点表示は、プログラム可能な小数点位置を有する。より詳しくは、急速に変換を行うよう単一のインストラクションを実行することができ、それによって、浮動小数点処理論理の、これまで整数処理論理のみを使っているプロセッサへの導入を実行可能としている。したがって、本発明の好ましい実施例によって、浮動小数点論理を埋め込みプロセッサのようなプロセッサに導入することを容易とし、浮動小数点計算として一定の演算を行う利点を実現することのできる技術が提供される。
【００９８】
ここでは、特定の実施例が記述されているが、発明はそれに限定されるものではなく、発明の範囲内でそれに対して多くの変更および付加をなしてもよいことが理解される。例えば、本発明の範囲から逸脱することなく、従属請求項の特長を独立請求項の特長と様々に組み合わせることができる。
【図面の簡単な説明】
【００９９】
【図１Ａ】本発明の好ましい実施例において用いられる数の固定小数点表示を示す。
【図１Ｂ】本発明の好ましい実施例において用いられる異なる数の固定小数点表示を示す。
【図２Ａ】本発明の好ましい実施例において用いられる浮動小数点表示を示す。
【図２Ｂ】本発明の好ましい実施例において用いられる異なる浮動小数点表示を示す。
【図３Ａ】固定小数点数内の小数点の位置に依存しての固定小数点数の浮動小数点数への変換を示す。
【図３Ｂ】固定小数点数内の小数点の位置に依存しての固定小数点数の浮動小数点数への変換を示す。
【図４】整数値を対応する浮動小数点値に変換するように、典型的なパイプライン・プロセッサ内に提供される関連論理を示す。
【図５】固定小数点数を対応する浮動小数点数に変換する単一インストラクションを用いることを可能とするよう、本発明の好ましい実施例のパイプライン・プロセッサ内に提供される関連論理を示す。
【図６】浮動小数点数を対応する整数値に変換することを可能とするように、典型的なパイプライン・プロセッサ内に提供される関連論理を示すブロック図である。
【図７】浮動小数点数を対応する固定小数点数に変換するのに単一インストラクションを用いることを可能とするように、本発明の好ましい実施例のパイプライン・プロセッサ内に提供される関連論理を示すブロック図である。
【図８】固定小数点数を対応する浮動小数点数に変換するよう、本発明の好ましい実施例において行われるプロセスを示すフロー図である。
【図９】浮動小数点を対応する固定小数点に変換するよう、好ましい実施例において行われるステップを示すフロー図である。
【符号の説明】
【０１００】
３０  単精度浮動小数点数
３２  第１のフィールド
３４  第２のフィールド
３６  第３のフィールド
４０  倍精度浮動小数点数
４２  フィールド
４４  フィールド
４６  フィールド
５０  整数値
６０  単精度浮動小数点数
７０  １６ビット値
８０  正しい浮動小数点数
１００，１２０，１３５，１４５，１６０，２００，２１０，２２０，２５０，２８０，３００，４０５，４２０，５００，５４０，６００，６１０，６９０  レジスタ
１１０，２３０，３１０，５１０，６３０，６４０  インバータ
１１５，１３０，１７０，２７０，４１５，５２０，６２０  マルチプレクサ
１２５，１６５，２６０  増分器
１４０，２９０，３２０，５３０  加算器（ＬＺＡ）
１５５  シフタ
２４０  加算論理
５５０，６８０  例外検出論理
６５０，６７０  加算器論理
【図１Ａ】
2004213622.tif 000014
【図１Ｂ】
2004213622.tif 000015
【図２Ａ】
2004213622.tif 000016
【図２Ｂ】
2004213622.tif 000017
【図３Ａ】
2004213622.tif 000018
【図３Ｂ】
2004213622.tif 000019
【図４】
2004213622.tif 000020
【図５】
2004213622.tif 000021
【図６】
2004213622.tif 000022
【図７】
2004213622.tif 000023
【図８】
2004213622.tif 000024
【図９】
2004213622.tif 000025