(57)【要約】【課題】データ処理システムにおいて浮動小数点算術演算を実行するための機構を提供すること。【解決手段】浮動小数点算術演算の複数の浮動小数点オペランドを受け取り、その複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数中のビットをシフトする。少なくとも１つの浮動小数点オペランドの仮数のビットの範囲外にシフトされた仮数の１つまたは複数のビットを格納し、さらにその少なくとも１つの浮動小数点オペランドの仮数のビットの範囲外にシフトされた、仮数の格納された１つまたは複数のビットに基づいて、ベクトル値を生成する。そのベクトル値、およびその複数の浮動小数点オペランドに基づいて、その浮動小数点算術演算の結果としての値を生成する。【選択図】図３
2015505998.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて浮動小数点算術演算を実行するための方法であって、
前記データ処理システムのハードウェア・ロジックにおいて、前記浮動小数点算術演算の複数の浮動小数点オペランドを受け取ること、
前記ハードウェア・ロジックにより、前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトすること、
前記ハードウェア・ロジックにより、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納すること、
前記ハードウェア・ロジックにより、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成すること、および
前記ハードウェア・ロジックにより、前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成することから成る方法。
【請求項２】
前記浮動小数点算術演算は、２つの浮動小数点数値を加算するための加法演算である、請求項１に記載の方法。
【請求項３】
前記浮動小数点算術演算は、減法演算、除法演算、または乗法演算のうちの１つである、請求項１に記載の方法。
【請求項４】
前記浮動小数点算術演算は、前記データ処理システムのメモリの領域に対するメモリ活動をカウントするためのカウンタを更新し、前記カウンタは、前記データ処理システムの前記メモリの利用を最適化するためのメモリ最適化アルゴリズムの一部として使用される、請求項１に記載の方法。
【請求項５】
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納することは、前記仮数のビットの前記範囲外にシフトされた前記仮数の前記１つまたは複数のビットに対応する、別個のレジスタのビット位置にビットをセットすることから成る、請求項１に記載の方法。
【請求項６】
前記別個のレジスタ内の各ビット位置には異なる確率的重みが関連付けられており、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて前記ベクトル値を生成することは、前記別個のレジスタ内に対応するビット値がセットされているビット位置に関連付けられた確率的重みに基づいて、前記ベクトル値を生成することから成る、請求項５に記載の方法。
【請求項７】
各確率的重みによって、ｘ回の算術演算ごとに前記算術演算で、前記シフトされた浮動小数点オペランドの前記シフトされた仮数に値を加算し、ここでｘは、前記確率的重みに対応する整数値である、請求項６に記載の方法。
【請求項８】
前記別個のレジスタ内の第１のビット位置は、２回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように５０％という確率的重みを有し、前記別個のレジスタ内の第２のビット位置は、４回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように２５％という確率的重みを有し、前記別個のレジスタ内の第３のビット位置は、８回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように１２．５％という確率的重みを有する、請求項７に記載の方法。
【請求項９】
前記ベクトル値中の各ビットを、前記別個のレジスタ内の対応するビット位置に関連付けられた確率的重みに対応する確率分布により、対応する疑似乱数発生器を使用して生成する、請求項６に記載の方法。
【請求項１０】
前記方法は、前記データ処理システムのプロセッサ、メモリ・コントローラ、ファームウェア、またはサービス・プロセッサのうちの少なくとも１つのハードウェア・ロジックの形態で実施される、請求項１に記載の方法。
【請求項１１】
浮動小数点算術演算の複数の浮動小数点オペランドを受け取るように構成されたハードウェア・ロジックと、
前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトするように構成されたハードウェア・ロジックと、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納するように構成されたハードウェア・ロジックと、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成するように構成されたハードウェア・ロジックと、
前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成するように構成されたハードウェア・ロジックとから成る装置。
【請求項１２】
前記浮動小数点算術演算は、２つの浮動小数点数値を加算するための加法演算である、請求項１１に記載の装置。
【請求項１３】
前記浮動小数点算術演算は、減法演算、除法演算、または乗法演算のうちの１つである、請求項１１に記載の装置。
【請求項１４】
前記浮動小数点算術演算は、前記データ処理システムのメモリの領域に対するメモリ活動をカウントするためのカウンタを更新し、前記カウンタは、前記データ処理システムの前記メモリの利用を最適化するためのメモリ最適化アルゴリズムの一部として使用される、請求項１１に記載の装置。
【請求項１５】
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納するように構成された前記ハードウェア・ロジックは、前記仮数のビットの前記範囲外にシフトされた前記仮数の前記１つまたは複数のビットに対応する、別個のレジスタのビット位置にビットをセットするように構成されたハードウェア・ロジックを備える、請求項１１に記載の装置。
【請求項１６】
前記別個のレジスタ内の各ビット位置には、異なる確率的重みが関連付けられており、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、前記ベクトル値を生成するように構成された前記ハードウェア・ロジックは、前記別個のレジスタ内に対応するビット値がセットされているビット位置に関連付けられた確率的重みに基づいて、前記ベクトル値を生成するように構成されたハードウェア・ロジックから成る、請求項１５に記載の装置。
【請求項１７】
各確率的重みによって、ｘ回の算術演算ごとに前記算術演算で、前記シフトされた浮動小数点オペランドの前記シフトされた仮数に値を加算し、ここでｘは、前記確率的重みに対応する整数値である、請求項１６に記載の装置。
【請求項１８】
前記別個のレジスタ内の第１のビット位置は、２回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように５０％という確率的重みを有し、前記別個のレジスタ内の第２のビット位置は、４回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように２５％という確率的重みを有し、前記別個のレジスタ内の第３のビット位置は、８回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように１２．５％という確率的重みを有する、請求項１７に記載の装置。
【請求項１９】
前記ベクトル値中の各ビットを、前記別個のレジスタ内の対応するビット位置に関連付けられた確率的重みに対応する確率分布により、対応する疑似乱数発生器を使用して生成する、請求項１６に記載の装置。
【請求項２０】
前記装置は、前記データ処理システムのプロセッサ、メモリ・コントローラ、ファームウェア、またはサービス・プロセッサのうちの１つの一部である、請求項１１に記載の装置。
【請求項２１】
コンピュータ可読プログラムが格納されているコンピュータ可読記憶媒体を備えるコンピュータ・プログラム製品であって、
前記コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、
浮動小数点算術演算の複数の浮動小数点オペランドを受け取らせ、
前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトさせ、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納させ、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成させ、
前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成させるコンピュータ・プログラム製品。
【請求項２２】
前記浮動小数点算術演算は、２つの浮動小数点数値を加算するための加法演算である、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２３】
前記浮動小数点算術演算は、前記コンピューティング・デバイスのメモリの領域に対するメモリ活動をカウントするためのカウンタを更新し、前記カウンタは、前記コンピューティング・デバイスの前記メモリの利用を最適化するためのメモリ最適化アルゴリズムの一部として使用される、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２４】
前記コンピュータ可読プログラムは、前記コンピューティング・デバイスに、前記仮数のビットの前記範囲外にシフトされた前記仮数の前記１つまたは複数のビットに対応する別個のレジスタのビット位置にビットをセットすることによって、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納させ、
前記別個のレジスタ内の各ビット位置には異なる確率的重みが関連付けられており、
前記コンピュータ可読プログラムは、前記コンピューティング・デバイスに、前記別個のレジスタ内に対応するビット値がセットされているビット位置に関連付けられた確率的重みに基づいて、前記ベクトル値を生成することによって、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、前記ベクトル値を生成させる、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２５】
各確率的重みによって、ｘ回の算術演算ごとに前記算術演算で、前記シフトされた浮動小数点オペランドの前記シフトされた仮数に値を加算し、ここでｘは、前記確率的重みに対応する整数値である、請求項２４に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、改良されたデータ処理装置およびデータ処理方法に関し、より詳細には、大きい浮動小数点値と小さい浮動小数点値の両方を使用して算術演算を実行するための機構に関する。
【背景技術】
【０００２】
「浮動小数点」という用語は、多種多様な値をサポートすることができる様態で実数を表す方法を指す。浮動小数点フォーマットでは、数は、一般に、決まった数の有効数字によって近似的に表され、さらに基数値および対応する指数を使用して拡大縮小される。拡大縮小のための基数は、通常、２、１０、または１６であるが、特定の実施例に適する任意の基数値であり得る。正確に表され得る通常の数は、以下の形態、すなわち、有効数字×基数指数、例えば、１．３４×２１０である。コンピューティング・システム内で、そのような浮動小数点フォーマットの値は、浮動小数点値の有効数字を表す有効ビット部分（または仮数部）と、浮動小数点値の指数部を表す指数ビット部分とを備え、基数値は、コンピュータ・システム・アーキテクチャ内で整合性がある、例えば、基数２であるものと想定される。このため、浮動小数点フォーマットは、比較的非常に大きい値から比較的非常に小さい値までの範囲に及び得る広い範囲の値を表す能力をもたらす。
【発明の概要】
【０００３】
１つの例示的な実施形態において浮動小数点算術演算を実行するためのデータ処理システムにおける方法が提供される。この方法は、データ処理システムのハードウェア・ロジックにおいて、浮動小数点算術演算の複数の浮動小数点オペランドを受け取ることを備える。この方法は、ハードウェア・ロジックによって、その複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数の中のビットをシフトすることをさらに備える。さらに、この方法は、ハードウェア・ロジックによって、その少なくとも１つの浮動小数点オペランドの仮数のビットの範囲外にシフトされた仮数の１つまたは複数のビットを格納することを備える。さらに、この方法は、ハードウェア・ロジックによって、その少なくとも１つの浮動小数点オペランドの有効ビットの範囲外にシフトされた仮数の格納された１つまたは複数のビットに基づいて、ベクトル値を生成することを備える。さらに、この方法は、ハードウェア・ロジックによって、そのベクトル値、およびその複数の浮動小数点オペランドに基づいて、浮動小数点算術演算の結果の値を生成することを備える。
【０００４】
他の例示的な実施形態において、コンピュータ可読プログラムを有するコンピュータ可用媒体またはコンピュータ可読媒体を備えるコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、そのコンピューティング・デバイスに、方法を例示する実施形態に関して先に概説した動作のうちの様々な動作、およびそのような動作の組み合わせを実行させる。
【０００５】
さらに別の例示的な実施形態において、システムまたは装置が提供される。このシステムまたは装置は、１つまたは複数のプロセッサと、その１つまたは複数のプロセッサに結合されたメモリとを備えるものであってよい。そのメモリは、その１つまたは複数のプロセッサによって実行されると、その１つまたは複数のプロセッサに、方法を例示する実施形態に関して前段で概略を述べた動作のうちの様々な動作、およびそのような動作の組み合わせを実行させる命令を備えることが可能である。
【０００６】
本発明のこれら、およびその他の特徴および利点は、後述する本発明の例示的な実施形態の詳細な説明において説明され、またはその詳細な説明に鑑みて当業者には明白となろう。
【０００７】
本発明、ならびに本発明の好ましい使用形態、およびさらなる目的および利点は、後述する例示的な実施形態の詳細な説明を参照し添付の図面と併せて読むことで、最もよく理解されよう。
【図面の簡単な説明】
【０００８】
【図１】浮動小数点加法演算の例を示す図である。
【図２】１つの例示的な実施形態による浮動小数点加法演算を示す例示的なブロック図である。
【図３】１つの例示的な実施形態による浮動小数点加法を実行するための例示的な浮動小数点算術演算の概略を示す流れ図である。
【図４】例示的な実施形態の態様が実施され得る１つの例示的なデータ処理システムの例示的なブロック図である。
【発明を実施するための形態】
【０００９】
例示的な実施形態は、大きい浮動小数点値と小さい浮動小数点値の両方を使用して算術演算を実行する機構を提供する。１つの例示的な実施形態において、例示的な実施形態の機構が、有効ビットおよび指数ビットとしてそれぞれが表される２つ以上の浮動小数点値が足し合わされて結果の浮動小数点値が生成される加法演算に適用される。例示的な実施形態の機構は、仮数より下のビットを、確率的重みを付けて累積する能力をもたらし、例えば、仮数の範囲から１つ外れた位置は１／２の時間の間累積され、仮数の範囲から２つ外れた位置が１／４の時間の間累積されるといった具合である。例示的な実施形態は、浮動小数点加法演算に関して説明されるが、例示的な実施形態は、減法、除法、乗法などを含む任意のタイプの浮動小数点算術演算で利用され得ることを理解されたい。
【００１０】
コンピュータ・システムにおける値の浮動小数点表現は、基本的に、実際の値の近似である。例えば、１／３という値を、０．３（３×１０−１）、０．３３、０．３３３などに対応する浮動小数点値を使用して表すことができ、このことは、１／３の値のますます良好な近似を得るように無限の１０進桁数まで拡張され得る一方で、浮動小数点値は決して正確に１／３と等しくなることはなく、すなわち、浮動小数点値は、近似である。同様に、コンピュータ・システム・アーキテクチャは、コンピュータ・システム・アーキテクチャにおいて表される有効数字および指数の数に制限を課す。このことは、一部の数は、浮動小数点表現によって使用される基数値のため、正確に表すことが単純に不可能であること（例えば、１／３という値は、基数２の浮動小数点フォーマットによって正確には表され得ない）と相俟って、浮動小数点表現が実数の近似であることにつながる。
【００１１】
浮動小数点値算術では、算術演算を実行するために、オペランドは、算術演算のオペランドの間で一貫性のある指数値を有するように調節されなければならない。このことは、各数の指数を同一にするように同様に調節されなければならない科学的記数法での数の算術演算と同様である。例えば、科学的記数法において、値１．５８ｅ１と値３．４５ｅ０を加算する場合、値３．４５ｅ０を値０．３４５ｅ１に調節した後、値１．５８ｅ１に加算する必要がある。この結果の値が１．９２５ｅ１である。同じことが、コンピューティング・システムにおける浮動小数点算術にも当てはまり、オペランドが同一の指数を有するように有効ビットおよび指数ビットをシフトして算術演算を実行する必要がある。
【００１２】
浮動小数点算術において、浮動小数点値は、非常に大きい値と非常に小さい値の両方を表すのに使用され得るので、比較的小さい浮動小数点値が比較的大きい浮動小数点値と組み合わされることがしばしばあり得る。そのような事例において、小さい浮動小数点値は、大きい浮動小数点値に加算される際の丸めにより、しばしば失われる。このことは、浮動小数点値が近似であるという性質、ならびにオペランドの指数値が同一になるように仮数ビットおよび指数ビットをシフトして算術演算を促進する必要性に起因する。
【００１３】
例えば、図１が、浮動小数点加法演算の例を示す。図１に示されるとおり、オペランド１１０および１２０のそれぞれが、指数部１１２、１２２と、仮数部１１４、１２４とを備える浮動小数点フォーマットで与えられる。一部のコンピューティング・システム・アーキテクチャにおいて、浮動小数点値１１０および１２０は、符号ビット（図示せず）をさらに備えることが可能である。さらに、一部のコンピューティング・システム・アーキテクチャにおいて、図１に示されるとおり指数および仮数のそれぞれに関して８ビットを有するのではなく、他の数のビットが指数および仮数に関して使用されてもよく、この数は、互いに対して同一であっても、そうでなくてもよく、すなわち、指数に関するビットの数が、仮数に関するビットの数と同一であっても、異なっていてもよい。
【００１４】
第１の浮動小数点値１１０は、指数部１１２における第４番目の指数ビットが１にセットされている一方で、残りのビットは０にセットされ、さらに仮数部１１４の第８番目のビットが１にセットされている一方で、残りのビットは０にセットされている。このことは、１２８＊２＾８＝１２８＊２５６＝３２，７６８という値に相当する。第２の浮動小数点値１１０は、１２８＊２＾０＝１２８という値を有する。第１の浮動小数点値１１０という比較的大きい値を第２の浮動小数点値１２０という比較的小さい値に足すことができるように、第２の浮動小数点値１２０の指数部１２２および仮数部１２４において、指数部１２２が第１の浮動小数点値１１０の指数部１１２と同一になるように調節する必要がある。このことは、図１に浮動小数点値１３０として示されるとおり、指数部１２２の指数ビット、および仮数部１２４の仮数ビットをシフトして、相応するように値を調節することを伴う。つまり、指数部１２２のビットが、左にシフトされ、指数ビットを左にシフトしたことを相殺するように、仮数部１２４の仮数ビットが右にシフトされる。
【００１５】
図１に示されるとおり、指数部１２２および仮数部１２４中のビットをシフトすることは、仮数のビットが、コンピューティング・システム・アーキテクチャによってサポートされる仮数ビットの数を超えてシフトされること、すなわち、浮動小数点値の丸めをもたらす場合がある。つまり、第２の浮動小数点値１２０の値は、第１の浮動小数点値１１０と比べるとあまりにも小さく、浮動小数点値の近似性と、コンピューティング・システム・アーキテクチャが促すビットの数の制限の両方のため、重要性を欠く。つまり、より小さな浮動小数点値１２０の最上位ビットが、より大きな浮動小数点値１１０の最下位ビットより下位の大きさである。そのため、かかるより小さな浮動小数点値は実質的に消滅し、かかる浮動小数点算術演算において無視され、単純により大きな浮動小数点値１４０が結果となる。
【００１６】
浮動小数点算術演算を使用する一部のアプリケーションまたは機能においては、そのような丸め誤差または近似は許容可能であり、つまり精度が失われることは重要ではない。しかし、他のアプリケーションにおいては、そのような丸め誤差または近似はアプリケーションまたはコンピューティング・システム機能の適切な動作に悪影響を及ぼす可能性があり、例えば、イベント・カウントおよび統計値などの小さい値を累積する機能またはアプリケーションは、機能に悪影響を及ぼすことなしには、そのような丸め誤差または近似に対応することができない惧れがある。
【００１７】
例えば、多くのコンピュータ・システム・アーキテクチャにおいて、メモリ最適化機能またはアルゴリズムは、メモリの各領域に関してメモリ活動をカウントすることを必要とする可能性がある。そのようなメモリ最適化機能またはアルゴリズムの例には、メモリ・ページ置換アルゴリズム、多層メモリサポート構造などが含まれる。そのようなメモリ最適化機能またはアルゴリズムでは、メイン・メモリのページ毎にカウンタ（複数可）が必要となるので、ストレージ・オーバヘッドが少なく、ダイナミックレンジが広い浮動小数点値が求められる。その結果、これらのカウンタ（複数可）は、前述した浮動小数点算術演算の問題を抱えた、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実施される浮動小数点算術演算を利用する。しかしながら、様々なメモリ最適化動作を実行するためにはメモリ・ページ活動を正確に測定することが重要なので、このようにカウンタ値を累積する結果、精度を損なうことは許容できない。
【００１８】
例示的な実施形態は、浮動小数点算術演算中に小さい浮動小数点値が失われること、例えば、浮動小数点値仮数ビットをシフトすることの結果として実行される丸めを補償するための機構を提供する。例示的な実施形態の機構では、組み合わされた仮数の最下位ビットより下のビットを、確率的重みを付けて累積するための機能が提供される。つまり、仮数の最下位ビットより下の各ビット位置は、ｘ回の算術演算のたびにその仮数に或る値が加算されることをもたらす関連付けられた確率的重みを有し、ここでｘは、その確率的重みに基づいて決定された整数値である。例えば、最下位ビットのすぐ下のビット位置に関して、このビット位置の値が、２回の演算ごとに１回、つまり、浮動小数点算術演算回数の１／２で仮数に累積される。組み合わされた仮数の範囲を２ビット外れたビット位置に関して、このビット位置の値が、４回の演算ごとに１回、つまり、浮動小数点算術演算回数の１／４で仮数に累積される。このことが組み合わされた仮数の有効ビット範囲を外れたビット位置毎に、仮数を最大数外れたビット位置まで続けられる。
【００１９】
この機能を実施するために、アーキテクチャがサポートする仮数の最大幅を有する疑似ランダム・ベクトルを生成するロジックが提供される。ランダムに生成されるベクトルにおける各ビットは、より小さな浮動小数点オペランドの仮数をより大きなオペランドの指数値にマッチするように指数値を調節するようにシフトした後の値が存在する仮数範囲を外れたビット位置に対応する適当な確率分布により、疑似乱数発生器から生成される。この疑似ランダム式に生成されたベクトルが、その仮数のシフト対象となったオペランドの実際の仮数に加算される。その結果生成されるビット・ベクトルが、浮動小数点算術演算を使用して通常態様で合計されて通常の結果としての仮数となる。
【００２０】
当業者には理解されるとおり、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として実現されることが可能である。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様とハードウェアの態様を組み合わせた形態をとることが可能であり、これらはすべて本明細書では「回路」、「モジュール」、または「システム」と一般的に称される場合がある。さらに、本発明の態様は、コンピュータ可用プログラム・コードが具現化された任意の１つまたは複数のコンピュータ可読媒体の形態で実施されたコンピュータ・プログラム製品の形態をとることが可能である。
【００２１】
１つまたは複数のコンピュータ可読媒体（複数可）の任意の組み合わせが利用されることが可能である。このコンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または以上のシステム、装置、デバイスの任意の適切な組み合わせであり得るが、以上には限定されない。コンピュータ可読記憶媒体のより具体的な例（網羅的でないリスト）には、以下のもの、すなわち、１つまたは複数の配線を有する電気接続体、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または以上の任意の適切な組み合わせが含まれる。本明細書の文脈で、コンピュータ可読記憶媒体は、命令実行システム、命令実行装置、もしくは命令実行デバイスによって、またはそのようなシステム、装置、もしくはデバイスに関連して使用されるプログラムを包含すること、または格納することができる有形の任意の媒体であり得る。
【００２２】
コンピュータ可読信号媒体は、例えば、ベースバンドの形で、または搬送波の一部としてコンピュータ可読プログラム・コードが具現化されている伝搬されるデータ信号を含み得る。そのような伝搬される信号は、電磁式、光学式、または電磁式と光学式の任意の適当な組み合わせを含むが、以上には限定されない様々な形態のいずれをとることも可能である。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、命令実行装置、もしくは命令実行デバイスによって、またはそのようなシステム、装置、もしくはデバイスに関連して使用されるプログラムを通信すること、伝搬すること、またはトランスポートすることができる任意のコンピュータ可読媒体であり得る。
【００２３】
コンピュータ可読媒体上に具現化されたコンピュータ・コードは、ワイヤレス、有線、光ファイバ・ケーブル、無線周波数（ＲＦ）など、または以上の任意の適切な組み合わせを含むが、以上には限定されない任意の適切な媒体を使用して伝送されることが可能である。
【００２４】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（ＴＭ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または類似したプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで書かれることが可能である。プログラム・コードは、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、スタンドアロンのソフトウェア・パッケージとして実行されること、部分的にユーザのコンピュータ上で実行されるとともに、部分的に遠隔コンピュータ上で実行されること、または完全に遠隔コンピュータもしくは遠隔サーバの上で実行されることが可能である。完全に遠隔コンピュータもしくは遠隔サーバの上で実行されるシナリオにおいて、その遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は、外部のコンピュータに対して行われてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）。
【００２５】
本発明の態様が、本発明の例示的な実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方の図を参照して以下に説明される。流れ図またはブロック図あるいはその両方の図の各ブロック、および流れ図またはブロック図あるいはその両方の図のブロックの組み合わせは、コンピュータ・プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が流れ図またはブロック図あるいはその両方の図のブロックまたは複数のブロックにおいて指定される機能または動作を実施するための手段を構成するように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを構成する。
【００２６】
また、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体の中に格納された命令が、流れ図またはブロック図あるいはその両方の図のブロックまたは複数のブロックにおいて指定される機能または動作を実施する命令を含む製造品をもたらすように、特定の様態で機能するようコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスを導くことが可能なコンピュータ可読媒体の中に格納されることも可能である。
【００２７】
また、コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、一連の動作ステップが、そのコンピュータ、その他のプログラマブル装置、またはその他のデバイスの上で実行されて、コンピュータまたはその他のプログラマブル装置の上で実行される命令が、流れ図またはブロック図あるいはその両方の図のブロックまたは複数のブロックにおいて指定される機能または動作を実施するためのプロセスをもたらすように、コンピュータによって実施されるプロセスをもたらすようにすることも可能である。
【００２８】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施例のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図における各ブロックは、指定された論理機能（複数可）を実施するための１つまたは複数の実行可能命令を備えるコードのモジュール、セグメント、または部分を表すことが可能である。また、一部の代替の実施例において、ブロックに記載される機能は、図に記載される順序を外れて行われてもよいことに留意されたい。例えば、連続して示される２つのブロックが、実際には、実質的に同時に実行されてもよく、またはそれらのブロックが、関与する機能に依存して、時として、逆の順序で実行されてもよい。また、ブロック図または流れ図あるいはその両方の図の各ブロック、およびブロック図または流れ図あるいはその両方の図のブロックの組み合わせは、指定された機能もしくは動作を実行する専用ハードウェア・ベースのシステムによって、または専用ハードウェアとコンピュータ命令の組み合わせによって実施され得ることに留意されたい。
【００２９】
このため、例示的な実施形態は、多くの異なるタイプのデータ処理環境において利用されることが可能である。例示的な実施形態の特定の要素および機能の説明に関する脈絡を与えるために、図１および図２が、例示的な実施形態の態様が実施され得る例示的な環境として以下で与えられる。図１および図２は、例に過ぎず、本発明の態様または実施形態が実施され得る環境に関する限定を主張する、または暗示することは全く意図していないことを理解されたい。説明される環境の多数の変形が、本発明の趣旨および範囲を逸脱することなく、行われることが可能である。
【００３０】
図２は、１つの例示的な実施形態による浮動小数点加法演算を示す例示的なブロック図である。図２に示される例は、例示的な実施形態の付加的な機構を示すために、図１に示されるのと同一のタイプのオペランドを使用するが、例示的な実施形態は、同一タイプのオペランドを使用することに限定されない。図２に示されるとおり、第２のオペランド２２０の仮数２２４における有効ビット、および指数２２２における指数ビットをシフトする際、有効ビットは、仮数２２４の範囲外に、この事例では、仮数２２４の最下位ビットより下の１つ下位のビットにシフトされる。図２に示されるとおり、仮数２２４の範囲外へのこのシフトは、仮数２２４の範囲外のどのビットがビット値１にセットされているかを示す別個のレジスタ２３０によって追跡され、または格納される。ランダム・ベクトル生成ロジック２４０には確率的重み２４２があって、レジスタ２３０内のビット位置のそれぞれに関連付けられている。
【００３１】
重み２４２によって、疑似ランダム式に生成された結果のベクトル値２５０の最下位ビットを、ｘ回の浮動小数点算術演算ごとにセットする。例えば、重み２４２のうちの、レジスタ２３０のビット位置１に対応する重みＷ１は、レジスタ２３０内でこのビットがセットされた時間の５０％にわたって、ランダム・ベクトル生成ロジック２４０が最下位ビットを１にセットした疑似ランダム式に生成されたベクトル値２５０（ベクトル２５４）を生成し、５０％の時間の間、ランダム・ベクトル生成ロジック２４０が最下位ビットを０にセットした疑似ランダム式に生成されたベクトル値２５０（ベクトル２５２）を生成するように、Ｗ１を５０％にセットすることが可能である。
【００３２】
他の重みＷ２、Ｗ３、Ｗ４などが、有効部２２４の範囲外に、例えば、仮数２２４の最下位ビットより下位にシフトされたビットの値を追跡する別個のレジスタ２３０の異なるビットに関連付けられ得る。例えば、これらの重みＷ１〜Ｗ４は、仮数の最下位ビットより下位のビットに対応する実数の小数部分に対応する。このため、レジスタ２３０の第１のビットは、値０．５、つまり５０％に対応する。レジスタ２３０の第２のビットは、０．２５という値、つまり２５％に対応し、レジスタ２３０の第３のビットは、０．１２５という値、つまり１２．５％に対応するといった具合である。このため、例えば、重みＷ１は５０％に対応し、重みＷ２は２５％に対応し、重みＷ３は１２．５％に対応し、重みＷ４は６．２５％に対応し得るといった具合である。
【００３３】
ランダム・ベクトル生成ロジック２４０が、ベクトル２３０を入力として受け取り、オペランド・レジスタ２２０の有効部２２４に加算するために疑似ランダム・ベクトル値２５０を疑似ランダム式に生成する。疑似ランダム・ベクトル値２５０の疑似ランダム式の生成は、入力ベクトル２３０においてセットされるビットに対応する確率的重み付け２４２に基づいて実行される。説明される例において、入力ベクトル２３０の第１のビットがセットされているが、これは５０％という重みＷ１に対応する。このため、５０％の確率で、ランダム・ベクトル生成ロジック２４０は、その最下位ビットを１にセットした疑似ランダム式に生成されたベクトル値２５０（ベクトル値２５４）を生成し、さもなければ、疑似ランダム式に生成されたベクトル値２５０の最下位ビットを０にセットする（ベクトル値２５２）。疑似ランダム式に生成されたベクトル値２５０における各ビットをセットする（すなわち、状態を有効にする）ことが可能であり、さらに縦列で加算して正しいモード・ビットを生成することが可能である。レジスタ２３０においてセットされる特定のビットに応じて、様々な重み付けが使用されることが可能である。
【００３４】
疑似ランダム式に生成されたベクトル値２５０（２５２または２５４）を、加算ロジック２７０によって、シフトされたオペランド２２０の仮数２２４に加算し、次にその結果をより大きな値のオペランド２１０に加算して、結果レジスタ２６０中に格納される結果としての浮動小数点値を生成する。図２に示される例では、重みは５０％であるため、５０％の確率で、第１のベクトル値２５２を加算ロジック２７０によって仮数２２４に加算し、残りの５０％の確率で、第２のベクトル値２５４を加算ロジック２７０によって仮数２２４に加算する。その結果、５０％の確率で、第１の結果の値２６０を生成し、残りの５０％の確率で、第２の結果の値２６０を生成する。
【００３５】
前述した例示的な実施形態の機構では、ベクトル・レジスタ２５０内の疑似ランダム式に生成されたベクトル値は、浮動小数点算術演算によってさもなければ無視されることになる比較的小さい浮動小数点値を近似する。同一の浮動小数点算術演算が、同一の、または類似したオペランドを使用して複数回実行される例示的な実施形態の使用を介して、オペランドの指数を揃えるためにシフト操作によってビット値がシフトされて仮数の範囲外となったビット位置に関連付けられた確率的重みに従って生成された、疑似ランダム式に生成されたベクトル値が、比較的小さい浮動小数点値を近似する。その結果、比較的より小さな浮動小数点値を無視する、または破棄するのではなく、比較的より大きな浮動小数点値に足された比較的より小さな浮動小数点値を考慮に入れる、より正確な結果としての値が結果のベクトル２６０の形で生成される。
【００３６】
別個のレジスタ２３０、ランダム・ベクトル生成ロジック２４０、疑似ランダム式に生成されたベクトル値のレジスタ２５０、および加算ロジック２７０、ならびに例示的な実施形態に従って浮動小数点算術演算を実施するのに使用されるその他のハードウェア・ロジックまたはソフトウェア・ロジックあるいはその両方は、ハードウェアによって具現化されるプロセッサの、またはハードウェアによって具現化されるプロセッサ上で実行されるソフトウェア・アプリケーションの１つまたは複数の機能ユニット、メモリ・コントローラなどとして具現化することが可能である。例えば、１つの例示的な実施形態において、例示的な実施形態の機能を実施するための様々な要素は、データ処理システムのハードウェアによって具現化されるプロセッサのメモリ・コントローラのハードウェア・ロジックとして、またはソフトウェア・ロジックとして、あるいはその両方として具現化することが可能である。他の例示的な実施形態において、例示的な実施形態の機能を実施するための様々な要素は、データ処理システムのハードウェアによって具現化されるプロセッサの浮動小数点ユニットのハードウェア・ロジックとして、またはソフトウェア・ロジックとして、あるいはその両方として具現化されることが可能である。もちろん、例示的な実施形態は、複数の機能ユニット、機能ユニットおよびメモリ・コントローラ、複数のメモリ・コントローラ等の形で具現化が可能である。
【００３７】
例示的な実施形態の機構がメモリ・コントローラとして具現化される１つの例示的な実施形態において、例示的な実施形態の機構は、データ処理システムにおけるメモリの領域に関してメモリ動作をカウントするためのカウンタ・ロジックと一緒に利用されることが可能である。例えば、メイン・システム・メモリのページ毎にハードウェアまたはソフトウェアで具現化される浮動小数点カウンタがあってもよい。累積の総計を表す比較的大きい浮動小数点値に対する、メモリ操作の現在の回数を示す小さい浮動小数点値の加算を考慮することによって、例示的な実施形態の機構がこれらの浮動小数点カウンタの各々で具現化されて、メモリ操作のカウントの適切な累積を確実にする。
【００３８】
１つの例示的な実施形態は、メモリの領域を対象とするメモリ操作に関する統計値を累積することに向けられているが、例示的な実施形態はかかる態様に限定されず、代わりに、例示的な実施形態の機構は、任意の浮動小数点算術演算に適用され得ることが理解されよう。さらに、例示的な実施形態は、浮動小数点加法に限定されず、浮動小数点減法演算、浮動小数点除法演算、浮動小数点乗法演算、これらのタイプの演算の任意の組み合わせ、および他のタイプの浮動小数点算術演算にも適用され得る。
【００３９】
図３は、１つの例示的な実施形態による浮動小数点加法を実行するための例示的な浮動小数点算術演算の概略を示す流れ図である。説明を簡単にするために、２つだけのオペランドが浮動小数点加法演算に関与するものと想定されている。しかしながら、図３に概略が示される演算は、オペランドの仮数の範囲外へのシフトは任意のオペランドで起こり得ることを考慮して、例示的な実施形態の機構によって、任意の数の浮動小数点オペランドに適用され得ることを理解されたい。
【００４０】
図３に示されるとおり、演算は、浮動小数点加法演算に関する２つの浮動小数点オペランドを受け取ることから始まる（ステップ３１０）。浮動小数点オペランド中のビットが、浮動小数点オペランドの指数値を揃えるようにシフトされる（ステップ３２０）。仮数の範囲外にシフトされた任意のビットは、対応する別個の追跡レジスタを用いて追跡される（ステップ３３０）。対応する追跡レジスタ（複数可）のビットが、ランダム・ベクトル生成ロジックに入力されて（ステップ３４０）、ランダム・ベクトル生成ロジックが、追跡レジスタ（複数可）内のセットされたビットを対応する確率的重みと相関させる（ステップ３５０）。ビットがセットされた入力追跡レジスタ（複数可）のそれぞれについて、特定された確率的重みが疑似ランダム・ベクトル生成ロジック機能で使用されて、疑似ランダム・ベクトル値が生成される（ステップ３６０）。疑似ランダム式に生成された結果のベクトル値（複数可）が、対応してシフトされたオペランドの仮数に加算される（ステップ３７０）。加算されたオペランド値が足し合わされて、結果としての値が生成され（ステップ３８０）、演算は、終了する。
【００４１】
図４は、例示的な実施形態の態様が実施され得る１つの例示的なデータ処理システムの例示的なブロック図である。図４は、例示的な実施形態の態様が実施され得る１つのタイプのデータ処理システムの例に過ぎず、例示的な実施形態が実施され得るデータ処理システム、データ処理構成、またはデータ処理アーキテクチャのタイプに関して限定を述べる、または暗示することは全く意図していない。このデータ処理システムの多数の変形が、例示的な実施形態の趣旨および範囲を逸脱することなく、行われることが可能である。
【００４２】
図示されるとおり、データ処理システム４００は、プロセッサ・カード４１１ａ〜４１１ｎを含む。プロセッサ・カード４１１ａ〜４１１ｎのそれぞれは、プロセッサと、キャッシュ・メモリとを含む。例えば、プロセッサ・カード４１１ａが、プロセッサ４１２ａと、キャッシュ・メモリ４１３ａとを包含し、プロセッサ・カード４１１ｎが、プロセッサ４１２ｎと、キャッシュ・メモリ４１３ｎとを包含する。
【００４３】
プロセッサ・カード４１１ａ〜４１１ｎは、メイン・バス４１５に接続される。メイン・バス４１５は、プロセッサ・カード４１１ａ〜４１１ｎおよびメモリ・カード４２３を包含するシステム・プレーナ４２０をサポートする。システム・プレーナは、データ・スイッチ４２１およびメモリ・コントローラまたはキャッシュ４２２も包含する。メモリ・コントローラまたはキャッシュ４２２は、複数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）を有するローカル・メモリ４１６を含むメモリ・カード４２３をサポートする。
【００４４】
データ・スイッチ４２１が、ネイティブ入出力（ＮＩＯ）プレーナ４２４内に配置されたバス・ブリッジ４１７およびバス・ブリッジ４１８に接続される。図示されるとおり、バス・ブリッジ４１８は、システム・バス４１９を介してペリフェラル・コンポーネンツ・インターコネクト（ＰＣＩ）ブリッジ４２５および４２６に接続される。ＰＣＩブリッジ４２５は、ＰＣＩバス４２８を介して様々な入出力デバイスに接続される。図示されるとおり、ハード・ディスク４３６が、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）ホスト・アダプタ４３０を介してＰＣＩバス４２８に接続され得る。グラフィックス・アダプタ４３１が、ＰＣＩバス４２８に直接に、または間接的に接続され得る。ＰＣＩブリッジ４２６が、ＰＣＩバス４２７経由でネットワーク・アダプタ４３４およびアダプタ・カード・スロット４３５ａ〜４３５ｎを通る外部データ・ストリームのための接続をもたらす。
【００４５】
業界標準アーキテクチャ（ＩＳＡ）バス４２９が、ＩＳＡブリッジ４３２を介してＰＣＩバス４２８に接続される。ＩＳＡブリッジ４３２が、シリアル接続、シリアル１およびシリアル２を有するＮＩＯコントローラ４３３を介した相互接続能力をもたらす。フロッピ・ドライブ接続、キーボード接続、およびマウス接続が、データ処理システム４００が、対応する入力デバイスを介してユーザからデータ入力を受け付けることを可能にするようにＮＩＯコントローラ４３３によってもたらされる。さらに、不揮発性ＲＡＭ（ＮＶＲＡＭ）４４０が、電源問題などのシステム故障またはシステム障害からいくつかのタイプのデータを保護するための不揮発性メモリを提供する。また、初期基本入出力システム（ＢＩＯＳ）機能を実施するためのシステム・ファームウェア４４１もＩＳＡバス４２９に接続される。システム診断またはシステム修理のための機能を提供するサービス・プロセッサ４４４が、ＩＳＡバス４２９に接続される。
【００４６】
オペレーティング・システム（ＯＳ）は、ハード・ディスク４３６上に格納され、ハード・ディスク４３６は、データ処理システムによって実行されるさらなるアプリケーション・ソフトウェアのためのストレージを提供することも可能である。ＮＶＲＡＭ  ４４０が、現場交換可能ユニット（ＦＲＵ）分離のためにシステム変数およびエラー情報を格納するのに使用される。システムの起動中、ブートストラップ・プログラムが、オペレーティング・システムをロードし、オペレーティング・システムの実行を開始する。オペレーティング・システムをロードするのに、ブートストラップ・プログラムはまず、オペレーティング・システム・カーネル・タイプをハード・ディスク４３６から探し出し、メモリにＯＳをロードし、オペレーティング・システム・カーネルによって与えられる初期アドレスにジャンプする。通常、オペレーティング・システムは、データ処理システム内のランダムアクセス・メモリ（ＲＡＭ）にロードされる。ロードされ、初期化されると、オペレーティング・システムは、プログラムの実行を制御し、リソース割り当て、スケジューリング、入出力制御、およびデータ管理などのサービスを提供することが可能である。
【００４７】
例示的な実施形態の機構に関して、例示的な実施形態の浮動小数点算術ロジックは、図４に示される要素のうちの様々な要素において具現化されることが可能である。例えば、浮動小数点算術ロジックは、プロセッサ１１２ａ〜１１２ｎ、メモリ・コントローラ１２２、システム・ファームウェア１４１、サービス・プロセッサ１４４のうちの１つもしくは複数において、または図４のその他の要素のいずれかにおいて、または図４の要素の組み合わせにおいて具現化されることが可能である。要するに、浮動小数点算術演算を実行することが可能な図４の任意の要素が、ハードウェア・ロジック、ソフトウェア・ロジック、あるいはハードウェア・ロジックもしくはソフトウェア・ロジックまたはその両方の任意の組み合わせとして具現化され得る例示的な実施形態の機構を利用することが可能である。
【００４８】
前述したとおり、例示的な実施形態は、ブートストラップ・プログラムやオペレーティング・システムなどのいくつかの異なるハードウェア構成およびソフトウェアを利用する様々なデータ処理システムの形態で実施され得る。データ処理システム４００は、例えば、スタンドアロンのシステムであっても、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）などのネットワークの一部であってもよい。
【００４９】
このように、例示的な実施形態は、比較的大きい浮動小数点値、および比較的小さい浮動小数点値を使用して浮動小数点算術演算を実行するための機構を提供する。例示的な実施形態は、浮動小数点算術演算の際に仮数のビットの範囲を超える有効ビットのシフトを追跡する追跡レジスタのビット位置に関連付けられた確率的重みに基づくことを考慮を行うことによって、小さい浮動小数点値が無視される、または破棄されることがないように小さい浮動小数点値を近似するための機構を提供する。その結果、例示的な実施形態の機構を使用して、浮動小数点算術演算のより正確な結果が実現される。
【００５０】
前述したとおり、例示的な実施形態は、完全にハードウェアの形態をとっても、完全にソフトウェアの形態をとっても、ハードウェア要素とソフトウェア要素の両方を包含する形態をとってもよいことを理解されたい。例示的な一実施形態において、例示的な実施形態の機構は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、以上には限定されないソフトウェア、またはプログラム・コードの形態で具現化される。
【００５１】
プログラム・コードを格納するのに、または実行するのに、あるいはその両方を行うのに適したデータ処理システムは、システム・バスを介してメモリ要素に直接に、または間接的に結合された少なくとも１つのプロセッサを含む。メモリ要素には、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、および実行中に大容量ストレージからコードが取り出されなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的格納を可能にするキャッシュ・メモリが含まれ得る。
【００５２】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、以上には限定されない）が、直接に、または介在する入出力コントローラを介してシステムに結合され得る。また、データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを介して他のデータ処理システムまたは遠隔のプリンタもしくはストレージ・デバイスに結合されるようになることを可能にするネットワーク・アダプタが、システムに結合されることも可能である。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、現在、利用可能なタイプのネットワーク・アダプタのいくつかに過ぎない。
【００５３】
本発明の説明は、例示および説明の目的で提示されており、網羅的であることも、開示される形態の本発明に限定されることも意図していない。多数の変形および変更が、当業者には明白となろう。実施形態は、本発明の原理、実際的な応用を最もよく説明するように、さらに当業者が、企図される特定の用途に適する様々な変形を伴う様々な実施形態に関して本発明を理解することを可能にするように選択され、説明されている。
【図１】
2015505998.tif 000003
【図２】
2015505998.tif 000004
【図３】
2015505998.tif 000005
【図４】
2015505998.tif 000006
【手続補正書】
【提出日】平成26年6月24日(2014.6.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムにおいて浮動小数点算術演算を実行するための方法であって、
前記データ処理システムのハードウェア・ロジックにおいて、前記浮動小数点算術演算の複数の浮動小数点オペランドを受け取ること、
前記ハードウェア・ロジックにより、前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトすること、
前記ハードウェア・ロジックにより、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納すること、
前記ハードウェア・ロジックにより、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成すること、および
前記ハードウェア・ロジックにより、前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成することから成る方法。
【請求項２】
前記浮動小数点算術演算は、２つの浮動小数点数値を加算するための加法演算である、請求項１に記載の方法。
【請求項３】
前記浮動小数点算術演算は、減法演算、除法演算、または乗法演算のうちの１つである、請求項１に記載の方法。
【請求項４】
前記浮動小数点算術演算は、前記データ処理システムのメモリの領域に対するメモリ活動をカウントするためのカウンタを更新し、前記カウンタは、前記データ処理システムの前記メモリの利用を最適化するためのメモリ最適化アルゴリズムの一部として使用される、請求項１に記載の方法。
【請求項５】
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納することは、前記仮数のビットの前記範囲外にシフトされた前記仮数の前記１つまたは複数のビットに対応する、別個のレジスタのビット位置にビットをセットすることから成る、請求項１に記載の方法。
【請求項６】
前記別個のレジスタ内の各ビット位置には異なる確率的重みが関連付けられており、前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて前記ベクトル値を生成することは、前記別個のレジスタ内に対応するビット値がセットされているビット位置に関連付けられた確率的重みに基づいて、前記ベクトル値を生成することから成る、請求項５に記載の方法。
【請求項７】
各確率的重みによって、ｘ回の算術演算ごとに前記算術演算で、前記シフトされた浮動小数点オペランドの前記シフトされた仮数に値を加算し、ここでｘは、前記確率的重みに対応する整数値である、請求項６に記載の方法。
【請求項８】
前記別個のレジスタ内の第１のビット位置は、２回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように５０％という確率的重みを有し、前記別個のレジスタ内の第２のビット位置は、４回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように２５％という確率的重みを有し、前記別個のレジスタ内の第３のビット位置は、８回の算術演算ごとに１回、前記シフトされた仮数に前記値を加算するように１２．５％という確率的重みを有する、請求項７に記載の方法。
【請求項９】
前記ベクトル値中の各ビットを、前記別個のレジスタ内の対応するビット位置に関連付けられた確率的重みに対応する確率分布により、対応する疑似乱数発生器を使用して生成する、請求項６に記載の方法。
【請求項１０】
前記方法は、前記データ処理システムのプロセッサ、メモリ・コントローラ、ファームウェア、またはサービス・プロセッサのうちの少なくとも１つのハードウェア・ロジックの形態で実施される、請求項１に記載の方法。
【請求項１１】
浮動小数点算術演算の複数の浮動小数点オペランドを受け取るように構成されたハードウェア・ロジックと、
前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトするように構成されたハードウェア・ロジックと、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納するように構成されたハードウェア・ロジックと、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成するように構成されたハードウェア・ロジックと、
前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成するように構成されたハードウェア・ロジックとから成る装置。
【請求項１２】
コンピュータ可読プログラムが格納されているコンピュータ可読記憶媒体を備えるコンピュータ・プログラムであって、
前記コンピュータ可読プログラムは、コンピューティング・デバイス上で実行されると、前記コンピューティング・デバイスに、
浮動小数点算術演算の複数の浮動小数点オペランドを受け取らせ、
前記複数の浮動小数点オペランドのうちの少なくとも１つの浮動小数点オペランドの仮数におけるビットをシフトさせ、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの範囲外にシフトされた前記仮数の１つまたは複数のビットを格納させ、
前記少なくとも１つの浮動小数点オペランドの前記仮数のビットの前記範囲外にシフトされた前記仮数の前記格納された１つまたは複数のビットに基づいて、ベクトル値を生成させ、
前記ベクトル値および前記複数の浮動小数点オペランドに基づいて、前記浮動小数点算術演算の結果としての値を生成させるコンピュータ・プログラム。
【国際調査報告】
2015505998.tif 000007