(57)【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令の制御下で処理演算を遂行するための処理回路と、
プログラム命令を復号して、前記処理演算を遂行するように前記処理回路を制御するための制御信号を生成するための復号器と、を備え、
前記復号器が、所与のプログラム命令および丸め位置入力オペランドに応答して、仮数値を有する浮動小数点入力オペランドを処理して、前記丸め位置入力オペランドにより指定された前記浮動小数点入力オペランドの前記仮数内の可変丸め点を使用して前記浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように前記処理回路を制御するための制御信号を生成する、装置。
【請求項２】
前記所与のプログラム命令が、前記浮動小数点入力オペランドおよび前記丸め位置入力オペランドを含む入力オペランドを指定する浮動小数点丸めプログラム命令である、請求項１に記載の装置。
【請求項３】
前記丸めからの値および前記出力結果が、前記可変丸め点に丸められた前記浮動小数点入力オペランドである、請求項２に記載の装置。
【請求項４】
前記浮動小数点入力オペランドが、指数値を有し、前記処理回路が、前記丸め位置入力オペランドを前記指数値と比較して、前記可変丸め点を決定する、請求項２および３のいずれか一項に記載の装置。
【請求項５】
前記処理回路が、丸めモードパラメータにより指定された丸めモードに従って前記丸めを遂行する、請求項２、３、および４のいずれか一項に記載の装置。
【請求項６】
前記所与のプログラム命令が、プログラマブルなオペランド重要度を有するアンカー付き入力オペランドに前記浮動小数点入力オペランドを加算する変換加算命令である、請求項１〜５のいずれか一項に記載の装置。
【請求項７】
前記浮動小数点入力オペランドの前記仮数が、前記アンカー付き入力オペランドの最下位ビットから前記アンカー付き入力オペランドの前記最下位ビットより下位に延在するビットを含む重要度範囲を有するとき、前記処理回路が、前記アンカー付き入力オペランドと前記アンカー付き入力オペランドの前記最下位ビットに対応する丸め点に丸められた前記浮動小数点入力オペランドの前記仮数との和に対応する前記出力結果を生成する、請求項６に記載の装置。
【請求項８】
前記処理回路が、前記アンカー付き入力オペランドと重要度が重なり合う前記浮動小数点入力オペランドの前記仮数の部分と、前記アンカー付き入力オペランドの仮数と、前記アンカー付き入力オペランドの前記最下位ビットの重要度を有する丸めビットとの整数加算を遂行し、前記丸めビットが、前記丸めからの値である、請求項７に記載の装置。
【請求項９】
前記部分が正であり、丸めインクリメントを必要としないとき、前記丸めビットが＋０であり、
前記部分が正であり、丸めインクリメントを必要とするとき、前記丸めビットが＋１であり、
前記部分が負であり、丸めインクリメントを必要としないとき、前記丸めビットが＋１であり、
前記部分が負であり、丸めインクリメントを必要とするとき、前記丸めビットが＋０である、請求項８に記載の装置。
【請求項１０】
前記丸め位置オペランドが、前記プログラマブルなオペランド重要度に応じたものである、請求項６〜９のいずれか一項に記載の装置。
【請求項１１】
前記プログラマブルなオペランド重要度が、前記アンカー付き入力オペランドの最下位ビット位置を指定する、請求項１０に記載の装置。
【請求項１２】
前記浮動小数点入力オペランドが、指数値を有し、前記処理回路が、前記プログラマブルなオペランド重要度を前記指数値と比較して、前記可変丸め点を決定する、請求項１１に記載の装置。
【請求項１３】
前記処理回路が、それぞれの重要度部分前記変換加算命令を実行するための複数の加算器を含み、前記複数の加算器中の最下位加算器が、前記浮動小数点入力オペランドのためのいかなる丸めも提供するための丸め回路を含む、請求項６〜１２のいずれか一項に記載の装置。
【請求項１４】
前記処理回路が、丸めモードパラメータにより指定された丸めモードに従って前記丸めを遂行する、請求項６〜１３のいずれか一項に記載の装置。
【請求項１５】
データを処理するための装置であって、
プログラム命令の制御下で処理演算を遂行するための処理手段と、
プログラム命令を復号して、前記処理演算を遂行するように前記処理手段を制御するための制御信号を生成するための復号手段と、を備え、
前記復号手段が、所与のプログラム命令および丸め位置入力オペランドに応答して、仮数値を有する浮動小数点入力オペランドを処理して、前記丸め位置入力オペランドにより指定された前記浮動小数点入力オペランドの前記仮数内の可変丸め点を使用して前記浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように前記処理手段を制御するための制御信号を生成する、装置。
【請求項１６】
データを処理する方法であって、
所与のプログラム命令および丸め位置入力オペランドを復号して、仮数値を有する浮動小数点入力オペランドを処理して、前記丸め位置入力オペランドにより指定された前記浮動小数点入力オペランドの前記仮数内の可変丸め点を使用して丸められた前記浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように処理回路を制御するための制御信号を生成することを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムに関する。より具体的には、本開示は、浮動小数点数の使用および操作をサポートするデータ処理システムに関する。
【背景技術】
【０００２】
浮動小数点演算は、グラフィックスデータの操作の生成、物理系のモデリング／シミュレーション、および他の用途など、多くの用途を有する。
【０００３】
浮動小数点数の使用をサポートするデータ処理システムを提供することが知られている。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
プログラム命令の制御下で処理演算を遂行するための処理回路と、
プログラム命令を復号して、該処理演算を遂行するように該処理回路を制御するための制御信号を生成するための復号器と、を備え、
該復号器が、所与のプログラム命令および丸め位置入力オペランドに応答して、仮数値を有する浮動小数点入力オペランドを処理して、該丸め位置入力オペランドにより指定された該浮動小数点入力オペランドの該仮数内の可変丸め点を使用して該浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように該処理回路を制御するための、制御信号を生成する、装置、を提供する。
【０００５】
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
プログラム命令の制御下で処理演算を遂行するための処理手段と、
プログラム命令を復号して、該処理演算を遂行するように該処理手段を制御するための制御信号を生成するための復号手段と、を備え、
該復号手段が、所与のプログラム命令および丸め位置入力オペランドに応答して、仮数値を有する浮動小数点入力オペランドを処理して、該丸め位置入力オペランドにより指定された該浮動小数点入力オペランドの該仮数内の可変丸め点を使用して該浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように該処理手段を制御するための、制御信号、を生成する、装置、を提供する。
【０００６】
本開示の少なくとも一部の実施形態は、データを処理する方法であって、
所与のプログラム命令および丸め位置入力オペランドを復号して、仮数値を有する浮動小数点入力オペランドを処理して、該丸め位置入力オペランドにより指定された該浮動小数点入力オペランドの該仮数内の可変丸め点を使用して丸められた該浮動小数点入力オペランドを丸めることからの値に応じた出力結果を生成するように処理回路を制御するための、制御信号、を生成することを含む、方法、を提供する。
【０００７】
これより、添付図面を参照しながら、例示的な実施形態をただの例として説明する。
【図面の簡単な説明】
【０００８】
【図１】データ処理演算を遂行するプログラム命令を実行するためのデータ処理システムを概略的に例示する。
【図２】浮動小数点数を概略的に例示する。
【図３】アンカー付き数を概略的に例示する。
【図４】浮動小数点丸めプログラム命令を概略的に例示する。
【図５】浮動小数点丸めプログラム命令の動作を概略的に例示する流れ図である。
【図６】変換加算プログラム命令の動作を概略的に例示する。
【図７】変換加算プログラム命令の動作を概略的に例示する流れ図である。
【図８】変換加算プログラム命令を実行するためのハードウェアの一例を概略的に例示する。
【発明を実施するための形態】
【０００９】
図１は、プロセッサコア４およびメモリ６を含むデータ処理システムを概略的に例示する。メモリ６は、実行されるべきプログラム命令８およびデータ値１０を記憶する。プログラム命令は、処理演算を遂行するようにプロセッサコア４を制御する働きをする。プロセッサコア４は、メモリ６からフェッチされたプログラム命令を復号するための、およびそれらのプログラム命令により指定された処理演算を遂行するように処理回路１６を制御する働きをする制御信号１４を生成するための復号器１２を含む。処理回路１６は、レジスタストア１８に連結されており、レジスタストア１８は、実行されるべきプログラム命令への入力オペランドを記憶し、実行されるプログラム命令からの出力結果を記憶する複数のレジスタを含む。レジスタストア１８内のレジスタは、整数レジスタ、小数点レジスタ、アンカー付き数レジスタ、ベクトルレジスタなどの様々な異なる形態をとり得る。
【００１０】
図２は、浮動小数点数を概略的に例示する。コンピュータシステム内の浮動小数点数は、典型的に、浮動小数点数が正かそれとも負かを示す符号ビットｓ、表現される浮動小数点数を提供するために仮数がそれにより乗算されるべき、２の累乗の指数を表す指数値ｘから形成される。仮数は、仮数の小数部を表すｎビットの数ｂ０、ｂ１、・・・である。仮数は、隠れビットおよび小数ｂ０、ｂ１、ｂ２・・・から形成される。隠れビットは、（バイアス）指数により決定され、ゼロまたは１のいずれかであり得、バイアス指数についてはゼロ、他の任意の指数については１である。異なるビット幅を消費して、異なる指数範囲および仮数精度が表現されることを可能にするものなど、異なる形式の浮動小数点数表現が可能である。本技法は、このような全ての形式の浮動小数点数表現と共に使用され得る。
【００１１】
図３は、アンカー付き数を概略的に例示する。アンカー付き数は、ペア（ｉ、ａ）であり、ｉが、２の補数の長整数２０（アンカー付き仮数)であり、ａが、整数の最下位ビットの重み（ゆえに整数の全ビットの重み）を与えるアンカー値２２である。アンカー値は、２の補数の整数２０のプログラマブルなオペランド重要度を提供する。アンカー付き数は、様々な異なる精度レベル（２の補数の整数２０内に設けられるビット）を有し得、アンカー値２２により表現され得る様々な範囲の重要度を有する。これらの様々な異なる形式のアンカー付き数が、本技法と共に使用され得る。
【００１２】
図４は、アンカー付き数と共に使用され得る浮動小数点丸めプログラム命令（ＦＲＡＮＣ命令）を概略的に例示する。この浮動小数点丸めプログラム命令は、操作されるべき浮動小数点数を記憶するレジスタストア１８内のレジスタを与える浮動小数点入力オペランドＦＰｒｅｇを指定する。浮動小数点丸めプログラム命令のさらなる入力オペランドは、丸めが遂行されるべき浮動小数点数内のビット位置を指定する丸め位置入力オペランドである。それゆえに、この丸め位置入力オペランドは、丸め演算中に使用されるべき浮動小数点入力オペランドの仮数内の可変丸め点を指定する。浮動小数点丸めプログラム命令は、さらなる入力オペランド（例えば、丸めモード）を有し得る。
【００１３】
図４に例示するように、図示する例における丸め点は、二進位置ｂ２にあり、これにより、二進桁ｂ３〜ｂ［ｎ−１］は、丸められて、二進桁ｂ２およびそれより上位の浮動小数点の仮数の部分に加算される値、すなわち丸め浮動小数点数を出力結果として生成するために丸め点で加算される丸めからの値を生じさせる。よって、図４に例示するように、二進桁ｂ３〜ｂ［ｎ−１］は全て、出力結果においてゼロに丸められており、入力された浮動小数点数の二進桁ｂ０ｂ１ｂ２は、丸めからの値の加算に供されている。
【００１４】
様々な異なる丸めモードが使用され得ることが理解されるであろう。例えば、これらの丸めモードとしては、丸めがゼロに向かってであるモード、ゼロから離れる方向にであるモード、最も近い有意ビットに向かってであるモードなどが挙げられる。浮動小数点丸めプログラム命令ＦＲＡＮＣは、様々なこのような丸めモードにおいて使用され得、用いられる丸めモードは、丸めモードパラメータにより指定される。このような丸めモードパラメータは、例えば、データ処理システム２の初期化の一環としてプロセッサコア４の構成レジスタ内で設定されてもよい。
【００１５】
一部の実施形態では、丸め位置入力オペランドが、浮動小数点丸めプログラム命令により丸めがなされるべき浮動小数点数の仮数内のビット位置（例えば、ｂ２）を直接指定してもよいことが可能である。あるいは、他の実施形態では、丸め位置入力オペランドは、操作されるべき特定の浮動小数点数の指数値から独立して、丸めが遂行されるべきビット重要度を指定してもよい。この場合、操作される浮動小数点数の仮数に適用されるべき可変丸め点を決定するために、当の浮動小数点数の指数値は、処理回路１６により、所望の丸めビット重要度を指定する丸め位置入力オペランドと比較されてもよい。
【００１６】
この第２の手法は、浮動小数点数およびアンカー付き数の使用を混合することが望まれる状況において有用であり得る。このようなシステムでは、アンカー付き数は、それらのアンカー値２２により決定される重要度を有することになる。浮動小数点丸め命令ＦＲＡＮＣを使用して、アンカー付き数に例えば加算されるべき浮動小数点数を、浮動小数点数がアンカー付き数に一致するビット重要度を有するように、丸めてもよい。よって、浮動小数点数は、アンカー付き数に一致する重要度に丸められることにより、アンカー付き数と共に使用するために準備されてもよく、アンカー付き数の最下位ビットより下の浮動小数点数の仮数の部分は、組み合わせがなされる前に浮動小数点数のより上位の部分に対して遂行される丸めの結果として、組み合わせの結果中に表現される。この状況で、浮動小数点丸めプログラム命令に対する丸め位置入力オペランドは、浮動小数点丸めプログラム命令の出力結果になる丸められた浮動小数点数と組み合わせることが望まれるアンカー付き数のアンカー値２２により（直接に、または間接にのいずれかで）提供されてもよい）。図５は、浮動小数点丸めプログラム命令の動作を概略的に例示する流れ図である。遂行される処理ステップは、処理回路１６を様々な異なる方法で使用して実装され得る。図５の流れ図は、遂行される処理を直線的な演算シーケンスとして示すが、ステップの様々なが異なる順序で、または重なり合う様式で遂行されるなどの、代替的な配置が可能であることを当業者は理解するであろう。
【００１７】
図５のステップ２４では、浮動小数点数が、レジスタストア１８内の小数点レジスタから読み出される。ステップ２６では、浮動小数点数の仮数内の丸め点を決定するために、浮動小数点数の指数値ｘを、丸め位置入力オペランドと比較する。ステップ２８は、浮動小数点数の仮数をステップ２６で決定された丸め点へ丸めることを、データ処理システム２の現在の丸めモードを使用して遂行する。ステップ３０は、符号、指数、および小数からなる浮動小数点数である出力結果として返す。
【００１８】
図６は、本開示の異なる例示的な実施形態による変換加算プログラム命令の動作を概略的に例示する。アンカー付き数に一致する重要度を有するように浮動小数点数を丸めることと併せて、このような変換加算プログラム命令を使用して、浮動小数点数をアンカー付き数に加算してもよい。図６に示すように、アンカー付き数は、そのビット重要度を示す関連付けられたアンカー値３４を有する２の補数の整数３２を含む。アンカー付き数は、変換加算命令に対する１つの入力オペランドとして働く。変換加算命令に対する別の入力オペランドは、浮動小数点数３６である。この浮動小数点数３６の指数を使用して、入力浮動小数点数の仮数のどの部分が２の補数の整数３２の最下位ビット端部と重なり合う重なり合い部分３８であるのか、およびどれがアンカー付き数内の最下位ビットのアンカー値３４により示されるビット重要度より下位のビット重要度を有する非重なり合い部分４０であるのか、を判定してもよい。非重なり合い部分４０を使用して、プロセッサコア４により現在使用されている丸めモードに従って丸め値Ｒを生成する。次いで、変換加算命令は、２の補数の整数３２と、浮動小数点数の重なり合い部分３８（および浮動小数点数の隠れビット）と、遂行される整数加算に対するキャリーインビットとして働く丸め値Ｒとの整数加算を遂行する。この整数加算の結果が、変換加算プログラム命令の出力結果である。
【００１９】
図６の変換加算命令の丸め位置入力オペランドは、浮動小数点数３６の指数であるとみなされ得る。しかしながら、アンカー値３４および浮動小数点数の指数値が両方とも可変である他の実施形態では、丸め位置入力オペランドは、これらの値の両方から、または少なくともこれらの値間の差から形成されるとみなされてもよい。
【００２０】
図７は、変換加算プログラム命令の動作を概略的に例示する流れ図である。前述したように、このような流れ図は、変換加算プログラム命令を実行する際に遂行される処理の概略的表現に過ぎず、本開示の異なる実施形態では他の演算のシーケンスも使用されてもよい。
【００２１】
ステップ４２では、アンカー付き数および浮動小数点数が読み出される。ステップ４４では、アンカー付き数のアンカー値を、浮動小数点数の指数値と比較して、アンカー付き数と浮動小数点数との間の重なり合いを判定する。ステップ４６では、部分的に重なり合う浮動小数点数の非重なり合い部分に関して、現在の丸めモードに従って、丸めからの値Ｒを取得するために遂行される丸め。ステップ４８では、アンカー付き数の２の補数の整数３２が、浮動小数点数の重なり合い部分３８に加算され、ステップ４６で決定された丸めからの値Ｒが、加算に対するキャリーイン入力として使用される。ステップ５０は、出力変換加算プログラム命令の出力結果として、ステップ４８で遂行された整数加算の結果を返す。
【００２２】
丸めからの値Ｒは、丸めビットと呼ばれてもよい。この丸めビットの値は、浮動小数点数の符号と、浮動小数点数の重なり合い部分が浮動小数点数の非重なり合い部分４８により示される丸めインクリメントを必要とするかまたは必要としないかとの両方に応じて変化することになる。より具体的には、丸めビットの値は、以下に従って決定されてもよい。
重なり合い部分が正であり、丸めインクリメントを必要としないとき、丸めビットは＋０である。
重なり合い部分が正であり、丸めインクリメントを必要とするとき、丸めビットは＋１である。
重なり合い部分が負であり、丸めインクリメントを必要としないとき、丸めビットは＋１である。
重なり合い部分が負であり、丸めインクリメントを必要とするとき、丸めビットは＋０である。
【００２３】
図８は、変換加算プログラム命令を遂行するために使用され得る変換加算ハードウェア５２を概略的に例示する。この変換加算ハードウェア５２は、データ処理システム２内のＳＩＭＤハードウェアと共有されてもよく、それゆえに、アンカー付き数が、複数のレーンであって、各々がそれら自身のそれぞれの２の補数の整数値およびアンカー値を有する、複数のレーン、に分割されるように形成されてもよい。これらのレーンの各々に関連付けられたレーン変換回路５４、５６、５８、６０は、それらのそれぞれの関連付けられたアンカー付き数に重なり合う入力浮動小数点数の部分を見つけ出し、これを整数レジスタ６２に渡す働きをする。よって、整数レジスタ６２内には、入力浮動小数点数の重なり合い部分３８に対応する２の補数の整数値が形成される。レーン変換器５４、５６、５８、６０の各々は、そのローカルアンカー値を入力浮動小数点数の指数と比較することにより、それ自身の重なり合い部分を見つけ出す働きをする。
【００２４】
浮動小数点数の最下位ビット端部のレーン変換器６２に関連付けられているのは、丸め値決定回路６４である。この丸め値決定回路６４は、最下位レーン変換器６０に関連付けられたアンカー値ａｎｃｈｏｒ０を入力浮動小数点数の指数と共に使用して、入力浮動小数点の仮数の非重なり合い部分４０を見つけ出す。次いで、丸め値決定回路６４は、この非重なり合い部分４０および現在有効な丸めモードを使用して、丸めビットＲ（丸めからの値）を形成する。
【００２５】
整数加算器６６は、整数レジスタ６２内で組み立てられた浮動小数点数の重なり合い部分３８と、アンカー付き数の仮数（２の補数の整数）と、丸めビットＲから形成されるキャリーイン値との整数加算を遂行する。加算器６４による加算の結果は、変換加算ハードウェア５２の出力結果である。この出力結果は、それぞれのレーンであって、アンカー付き数を表し、各々がそれ自身の２の補数の整数値および関連付けられたアンカー値を有する、それぞれのレーン、から形成されてもよい。
【００２６】
本明細書では例示的な実施形態を添付図面を参照しながら詳細に説明したが、請求項はそれらの実施形態に厳密に限定されるものではないこと、ならびに当業者は、添付請求項の範囲および趣旨から逸脱することなしに、それらの実施形態において様々な変更、追加、および変形を成し遂げることができることが理解されるべきである。例えば、従属請求項の特徴と独立請求項の特徴との様々な組み合わせがなされ得る。
【図１】
0006744913.tif 000002
【図２】
0006744913.tif 000003
【図３】
0006744913.tif 000004
【図４】
0006744913.tif 000005
【図５】
0006744913.tif 000006
【図６】
0006744913.tif 000007
【図７】
0006744913.tif 000008
【図８】
0006744913.tif 000009