(57)【要約】  単一命令複数データ（ＳＩＭＤ）コンピュータプラットフォームにおいて、倍精度除算／逆数計算ベクトル計算を行うための方法及び方法について説明する。一実施形態において、入力独立変数は、指数部と小数部とで現される。小数部は、スケーリングされ、逆数にされ、そして、乗算されて、入力独立変数の逆数表現が生成される。一実施形態において、指数部を逆数にすることは、指数の符号を変更することにより実行されてもよい。その他の実施形態についても説明される。【選択図】図３
2013515319.tif 000002
【特許請求の範囲】
【請求項１】
対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第１の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第２の値を生成するべく、前記第１の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の１以上と前記第２の値との乗算に基づいて、複数の結果を再構築する段階と
を備え、
前記複数の結果は、前記複数の独立変数の逆数の表現に対応している方法。
【請求項２】
前記第１の値を逆数にする段階は、前記第１の値の指数部の符号を変更することにより実行される請求項１に記載の方法。
【請求項３】
前記複数の独立変数の浮動小数点の表現を、整数値へと変換する段階を更に備える請求項１に記載の方法。
【請求項４】
前記複数の独立変数をスケーリングする段階は、前記複数の独立変数を１．０でスケーリングすることを含む請求項１に記載の方法。
【請求項５】
生成された値をメモリに格納する段階を更に備える請求項１に記載の方法。
【請求項６】
ＳＩＭＤ（単一命令複数データ）命令に対応する複数のデータ値を格納するメモリと、
複数のＳＩＭＤレーンを有するプロセッサと
を備え、
前記複数のＳＩＭＤレーンの各々は、前記ＳＩＭＤ命令に従って、前記メモリに格納された前記複数のデータ値のうちの１つを処理し、
前記プロセッサは、
前記複数のデータ値のうちの第１の値の指数部及び小数部をスケーリングして、それぞれ第２の値及び第３の値を生成し、
前記第２の値及び前記第３の値をそれぞれ逆数にして、第４の値及び第５の値を生成し、
前記第４の値と前記第５の値とを乗算して、前記第１の値の逆数表現を生成し、
前記第２の値は、前記第１の値の前記指数部の符号を変更することにより逆数にされる装置。
【請求項７】
前記プロセッサは、前記第１の値の指数部と小数部とを決定する請求項６に記載の装置。
【請求項８】
前記プロセッサは、前記第１の値の前記指数部及び前記小数部を１．０でスケーリングして、前記第２の値及び前記第３の値を生成する請求項６に記載の装置。
【請求項９】
前記プロセッサは、前記複数のデータ値の浮動小数点表現を、整数値に変換する請求項６に記載の装置。
【請求項１０】
前記メモリは、キャッシュを含む請求項６に記載の装置。
【請求項１１】
前記プロセッサは、１以上のプロセッサコアを含む請求項６に記載の装置。
【請求項１２】
前記プロセッサは、生成された値を前記メモリに記憶させる請求項６に記載の装置。
【請求項１３】
前記第１の値の前記逆数表現を表示させる表示デバイスを更に備える請求項６に記載の装置。
【請求項１４】
１以上の命令を格納するコンピュータ可読媒体であって、前記１以上の命令がプロセッサ上で実行されると、
対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第１の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第２の値を生成するべく、前記第１の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の１以上と前記第２の値との乗算に基づいて、複数の結果を再構築する段階と
を前記プロセッサが実行するコンピュータ可読媒体。
【請求項１５】
前記複数の結果は、前記複数の独立変数の逆数表現に対応している請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記プロセッサ上で実行されると、前記第１の値の指数部の符号を変更することにより、前記第１の値の逆数にするよう前記プロセッサを設定する１以上の命令を更に格納する請求項１４に記載のコンピュータ可読媒体。
【請求項１７】
前記プロセッサ上で実行されると、前記複数の独立変数の浮動小数点表現を、整数値へと変換するように前記プロセッサを設定する１以上の命令を更に格納する請求項１４に記載のコンピュータ可読媒体。
【請求項１８】
前記プロセッサ上で実行されると、前記複数の独立変数を１．０でスケーリングするように前記プロセッサを設定する１以上の命令を更に格納する請求項１４に記載のコンピュータ可読媒体。
【請求項１９】
前記プロセッサ上で実行されると、生成された値をメモリに格納するよう前記プロセッサを設定する１以上の命令を更に格納する請求項１４に記載のコンピュータ可読媒体。
【請求項２０】
前記プロセッサ上で実行されると、前記複数の独立変数の逆数にされた指数部と逆数にされた小数部とを乗算するよう前記プロセッサを設定する１以上の命令を更に格納する請求項１４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピュータを使用した計算の分野に関する。より詳細には、本発明は概して、分岐なし高速ベクトル除算計算の技術に関する。
【背景技術】
【０００２】
その他の単純な算術的オペレーションと比較して、除算オペレーションをハードウェア実装すると、例えば、大きなレイテンシにより、非常に計算が遅くなる。ベクトルの場合には、ＳＩＭＤ（単一命令複数データ）並列処理、スーパースカラー及びアウトオブオーダー実行のような現代のアーキテクチャに存在する様々な並列処理により、スピードアップを図ることができる。例えば、ニュートン・ラフソン反復法を使用した逆数の近似（例えば、http://en.wikipedia.org/wiki/Newton%E2%80%93Raphson_method参照）は、単精度（ＳＰ）の場合には概して有効であり、ある実装形態におけるハードウェア除算オペレーションを、最大で２倍の速度で行うことができる。しかしながら、この方法では、現在のＳＳＥアーキテクチャでは、倍精度（ＤＰ）の逆数演算が存在しないため、倍精度の利点が大方失われてしまう。その結果、指数フィールドの操作と共に、ＤＰからＳＰへの及びＳＰからＤＰへの変換を実行する必要がある。また、通常、上記のＳＰ及びＤＰ近似では、分母の値が無限（ＩＮＦ）又は０の場合には特別な処理が必要となり、並列処理が低減され、性能利得も少なくなってしまっている。
【０００３】
以下、添付の図面を参照して、詳細な説明が提供される。図面において、参照番号の最も左側の桁は、参照番号が最初に示される図面の番号を表している。異なる複数の図面間で使用されている同じ参照番号は、同様な又は同一のアイテムを示している。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態に係る方法のフローチャートである。
【図２Ａ】幾つかの実施形態で使用してもよい疑似コードの一部分を示した図である。
【図２Ｂ】幾つかの実施形態で使用してもよい疑似コードの一部分を示した図である。
【図２Ｃ】幾つかの実施形態で使用してもよい疑似コードの一部分を示した図である。
【図３】一実施形態に係る、高速ベクトル除算のブロック図である。
【図４】本明細書に説明される幾つかの実施形態を実装するのに使用されてもよいコンピュータシステムのブロック図である。
【図５】本明細書に説明される幾つかの実施形態を実装するのに使用されてもよいコンピュータシステムのブロック図である。
【発明を実施するための形態】
【０００５】
以下の詳細な説明では、本発明を理解するために多くの詳細事項が記される。しかしながら、これら詳細事項がなくとも本発明を実施可能である。また、本発明を不明瞭にしない目的から、周知の方法、手順、構成要素及び回路等の詳細な説明を省略している。更に、本発明の実施形態の様々な側面は、集積半導体回路（"ハードウェア"）、１以上のプログラムに整理されたコンピュータ可読命令（"ソフトウェア"）、又は、ハードウェア及びソフトウェアのある組み合わせ等の様々な手段を利用して実装されてもよい。本開示において、"ロジック（logic）"とは、ハードウェア、ソフトウェア、（例えば、プロセッサのオペレーションを制御するマイクロコードを含む）、又は、これらの組み合わせを意味する。
【０００６】
また、本明細書において、本発明の"一実施形態"又は"ある実施形態"とは、実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている"一実施形態において"という表現が全て、同一の実施形態を示している場合もあるし、同一の実施形態を示していない場合もある。
【０００７】
以下に記載の説明及び特許請求の範囲において、"連結される（coupled）"及び"接続される（connected）"という言葉、並びにこれらの派生語が使用されることがある。本発明の幾つかの実施形態では、"接続される"は、２つ以上の要素が物理的に又は電気的に直接互いに接触していることを示すのに使用されている。"連結される"も、２つ以上の要素が、物理的に又は電気的に直接互いに接触していることを示すが、"連結される"は、２つ又は２つ以上の要素が、協動又は相互作用しているが、直接接していない場合も示す。
【０００８】
本明細書に記載される実施形態の一部は、例えば、以前は必要であった分岐又は特別な動作を必要とすることなく、倍精度除算／逆ベクトル計算における性能を改善することを提供する。ベクトル除算計算は、ＳＩＭＤコンピュータプラットフォームで実行されてもよい。一般的に、ＳＩＭＤは、データレベルの並列処理を達成するのに採用される技術である。特に、複数のデータを、１つの命令に従って、ＳＩＭＤベクトルプロセッサ（例えば、図４及び図５にそれぞれ示す、プロセッサ４０２及び５０２／５０４）の対応する複数のレーン上で処理してもよい。
【０００９】
ある実相例では、幾つかの逆数に対して、１つの除算オペレーションのみが実行される。例えば、以下に示すような一例が挙げられる（I. I. Zavarzin, V. F. Kuryakin, V. V. Lunev, D.M. Obuvalin, V. G. Ryzhih 等により提案された "Optimizatsiya Vychislenij Vektornyh Funktsyj." VANT. ser. Matematicheskoe modelirovanie fizicheskih protsessov. 1997年. Vol. 4、（ロシア語の文献）。
【数１】
2013515319.tif 000003
【００１０】
各独立変数の逆数は、Ｒと３つのその他の独立変数との３つの乗算を利用して計算してもよく、大きなレイテンシ及び大きなスループット値を伴うハードウェアによる４つの除算よりも、早く計算を行うことができる。具体的には、Ｎ個の値が存在する一般的な場合、この方法における、次に得られる最大の性能利得については、次のように計算することができる。ここでＤは、除算におけるスループット値であり、Ｍは、乗算におけるスループット値である。
【数２】
2013515319.tif 000004
【００１１】
この方法の弱点は、独立変数の指数が様々であることから、積ｘ１・ｘ２・ｘ３・ｘ４のオーバーフロー又はアンダーフローが発生する確率が高くなり、その場合、４つの独立変数の組全体について不正確な出力となる可能性がある。例えば、ｘ１＝０．０であり、ｘ２≠０．０、ｘ３≠０．０、ｘ４≠０．０である場合、Ｒ＝ＩＮＦとなり、４つのうちの３つの結果は誤りとなる。
【数３】
2013515319.tif 000005
【００１２】
この問題を解決するには、入力する指数の全ての合計が、アンダーフロー又はオーバーフローを引き起こさないことを確かにする必要がある。そのため、計算可能範囲は狭くなり、独立変数の比較が必要になる。また、メインの経路で正しく処理できないような特別な場合について、分岐が発生する可能性がある。一実施形態において、上記の問題は、独立変数のスケーリング及び再構築によって解決されてもよい。
【００１３】
図１には、一実施形態に係る方法１００のフロー図が示されている。オペレーション１０２において、１個以上の独立変数（例えば、ｘ１、ｘ２等）が受信される。独立変数は、
【数４】
2013515319.tif 000006
と表してもよく、ここで、ｓ＝｛０，１｝、で（−１）ｓの符号を表すためのｓであり、ｂは基数（例えば、２進数の場合ｂ＝２）、ｎは指数であり、Ｅｍａｘ≦ｎ≦Ｅｍｉｎで、ここで、Ｅｍａｘ及びＥｍｉｎは、ＡＮＳＩ／ＩＥＥＥ規格７５４−２００８に従った対応するデータタイプにおける最小指数及び最大指数である。そして、
2013515319.tif 000007
（１≦ｆ＜２）である。
【００１４】
逆数は、次のように求められる。
【数５】
2013515319.tif 000008
【００１５】
ここで、入力される独立変数が、
2013515319.tif 000009
2013515319.tif 000010
であり、（ｘ１，ｘ２，ｘ３，ｘ４）であるとする。オペレーション１０４において、これら独立変数が、
2013515319.tif 000011
により、
2013515319.tif 000012
として、スケーリングされる。オペレーション１０６において、スケーリングされた独立変数が乗算されて（例えば、Ｍ＝ｚ１ｚ２ｚ３ｚ４）、乗算された値が、オペレーション１０８において逆数にされる（例えば、Ｒ＝１／Ｍ）。例えば、
2013515319.tif 000013
の場合の、
2013515319.tif 000014
はそれぞれ、次のように計算される。
【数６】
2013515319.tif 000015
【００１６】
オペレーション１１０において、一実施形態において、符号反転入力指数
2013515319.tif 000016
及び、ソースの符号を
2013515319.tif 000017
に挿入することにより、上記で得られた逆数を、
【数７】
2013515319.tif 000018
として再構築し、ここで、
2013515319.tif 000019
である。
【００１７】
この方法によれば、十分な精度を提供でき、また、メイン経路における電気電子技術者協会（ＩＥＥＥ）の特別値についての処理も提供できる。ｚｉ∈［１，２）の範囲では、計算の間にオーバーフロー／アンダーフローは発生しないと考えられ、例えば、ｚｉ・ｚｊ∈［１，４）のうちの任意の２つの値の積、ｚｉ・ｚｊ・ｚｋ∈［１，８）のうちの任意の３つの値の積、ｚ１・ｚ２・ｚ３・ｚ４∈［１，１６）の４つの独立変数全ての積、及び、
2013515319.tif 000020
等である。
【００１８】
更に、各乗算は、動作精度で丸めて実行されてもよく、最大０．５ｕｌｐ（Unit in the Last Place又はUnit of Least Precision、http://en.wikipedia.org/vviki/Ulp、及び、"On the definition of ulp(x)" by Jean-Michel Muller, INRIA 技術報告書 5504を参照）の誤差幅で実行される。したがって、ｚ１・ｚ２・ｚ３・ｚ４の計算誤差は、３・０．５＝１．５ｕｌｐを超えることはない。
【００１９】
一実施形態において、
【数６】
2013515319.tif 000021
を求めるために、別の３つの積を使用してもよく、この場合、更なる誤差、３・０．５＝１．５ｕｌｐと誤差が存在しない反転が伴う。したがって、この場合に求められる結果の誤差は、（３＋３）＊０．５＝３．０ｕｌｐ以下となる。最終的な再構築、すなわち、
【数７】
2013515319.tif 000022
では、ＩＥＥＥ浮動小数点表現により、更なる誤差は付加されない。このように、３．０ｕｌｐの誤差幅は、ＩＣＬ（インテルコンパイラー）、ＳＶＭＬ（ショート・ベクトル・マス・ライブラリ）、ＭＫＬ（マス・カーネル・ライブラリ）、及び、ＩＰＰ（インテル・パフォーマンス・プリミティブス）ベクトルマスライブラリＬＡ（低精度）デフォルトフレーバ、の必要条件の範囲内であり、４ｕｌｐは、２個の仮数部ビットの間違いに相当することから、大多数のアプリケーションにおいて十分な精度である。
【００２０】
上記では、４つの値の組について説明がされたが、上記で説明した技術は、任意の組のサイズに適用可能である。
【００２１】
図２Ａから図２Ｃには、幾つかの実施形態に係る分岐なし高速ベクトル除算計算を実行する疑似コードが例示されている。より詳細には、図２Ａには、独立変数、結果、型変換及びその他の定義が示されている。図２Ｂには、独立変数をスケーリングし、元の指数値を、例えば、図１を参照して上記で説明したようにスケーリングした独立変数の乗算値と共に保存するための疑似コードが示されている。図２Ｃには、結果を再構築するための疑似コードが示されている。幾つかの実施形態において、完全な除算のために、ｒ［ｉ］に分子を掛けてもよい。
【００２２】
図３は、一実施形態に係る高速ベクトル除算のブロック図である。図に示すように、浮動小数点３０２の指数部と小数部（fraction）部分は別々に取り扱われる３０４。図に示す例では、変数（図では"ａｒｇ"と示されている）が、示される範囲内に指定されているが、実装形態、プロセッサ、データ経路幅等に応じて、その他の範囲を使用してもよい。また、独立変数の逆数を得るために、指数３０６の逆数と仮数３０８の逆数とは別々に計算されて、その積に基づいて最終的な計算結果が求められる。一実施形態において、指数の逆数は、図１から図２Ｃを参照して上記で説明したように、符号の置換（３１０及び３１２）に基づいてもよい。ある実施形態では、これは、精度の損失なく、整数オペレーションを使用して行われてもよい。小数部を逆数にする（３１４及び３１６）べく、小数部を指数０の浮動小数点として表す。そして、最後に、３１８において、小数部の逆数と指数の逆数との積に基づいて、最終的な結果が求められる（少なくとも１つの乗数がゼロ小数部を有することから、正確な結果であると考えられる）。
【００２３】
図４には、コンピュータシステム４００の一実施形態のブロック図が例示されている。様々な実施形態において、システム４００の１以上の構成要素が、本発明の実施形態を参照して説明されるオペレーションの１以上を実行可能な様々な電子デバイス内に提供されてもよい。例えば、システム４００の構成要素の１以上が、図１−３を参照して説明したオペレーションを実行するのに使用されてもよく、例えば、本明細書に記載されるオペレーションに従って、ＳＩＭＤを利用することにより性能を向上させて、除算／逆数に対応する値を生成してもよい。また、（例えば、図４及び／又は図５を参照して）以下に説明される様々な記憶デバイスは、データ、オペレーション結果の格納に使用されてもよい。一実施形態では、図３の方法３００のオペレーションに関するデータは、メモリデバイス（図４のプロセッサ４０２又は図５のプロセッサ５０２／６０４に存在するメモリ４１２又は１以上のキャッシュ（例えば、一実施形態では、Ｌ１キャッシュ））に格納されてもよい。プロセッサは、高速除算／逆数計算のために（図１−図３の１以上のオペレーションのような）上記で説明したオペレーションを適用してもよい。したがって、幾つかの実施形態では、図４のプロセッサ４０２又は図５のプロセッサ５０２／６０４は、ＳＩＭＤオペレーションをサポート可能なベクトルプロセッサであってもよい。
【００２４】
さらに、コンピュータシステム４００は、１以上の中央演算処理装置（ＣＰＵ）４０２、又は、相互接続ネットワーク（又は、バス）４０４を介して通信を行うプロセッサを含んでもよい。プロセッサ４０２は、（コンピュータネットワーク４０３上で通信されたデータを処理する（汎用プロセッサ、ネットワークプロセッサ、又は、（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、又は、複数命令セットコンピュータ（ＣＩＳＣ）を含む）その他の種類のプロセッサを含んでもよい。さらに、プロセッサ４０２は、シングルコア、又は、複数コア設計であってもよい。複数コア設計のプロセッサ４０２は、同じ集積回路（ＩＣ）ダイ上に、異なる種類のプロセッサコアを集積してもよい。また、複数コア設計を有するプロセッサ４０２は、対称マルチプロセッサ又は非対称マルチプロセッサとして実装されてもよい。また、プロセッサ４０２は、ＳＩＭＤアーキテクチャを利用してもよい。さらに、図１から図３を参照して上記で説明されたオペレーションは、システム４００の１以上の構成要素によって実行されてもよい。
【００２５】
チップセット４０６は、相互接続ネットワーク４０４と通信を行ってもよい。チップセット４０６は、メモリ制御ハブ（ＭＣＨ）４０８を含んでもよい。ＭＣＨ４０８は、メモリ４１２と通信を行うメモリコントローラ４１０を含んでもよい。メモリ４１２は、ＣＰＵ４０２又はコンピュータシステム４００に含まれるその他のデバイスによって実行される命令のシーケンスを含むデータを格納してもよい。本発明の一実施形態において、メモリ４１２は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）のような１以上の揮発性記憶（メモリ）デバイス、又は、その他の種類の記憶デバイスを含んでもよい。ハードディスクのような、不揮発性メモリを使用してもよい。複数のＣＰＵ及び／又は複数のシステムメモリのような更なるデバイスが、相互接続ネットワーク４０４を介して通信を行ってもよい。
【００２６】
ＭＣＨ４０８はまた、ディスプレイ４１６と通信を行うグラフィックスインターフェース４１４を含んでもよい。上記で説明した高速除算／逆数計算に関するオペレーションのユーザー結果を示すのに、ディスプレイ４１６を使用してもよい。本発明の一実施形態において、グラフィックスインターフェース４１４は、アクセラレイティッド・グラフィックス・ポート（ＡＧＰ）を介して、ディスプレイ４１６と接続されてもよい。本発明の一実施形態において、ディスプレイ４１６は、例えば、ビデオメモリ又はシステムメモリに格納された画像のデジタル表現を、ディスプレイ４１６によって変換及び表示される表示信号へと変換する信号変換器を介して、グラフィックスインターフェース４１４と通信を行うフラットパネルディスプレイであってもよい。インターフェース４１４によって生成される表示信号は、ディスプレイ４１６において、変換され実質的に表示される前に、様々な制御デバイスを通過してもよい。
【００２７】
ハブインターフェース４１８は、ＭＣＨ４０８及び入出力制御ハブ（ＩＣＨ）４２０が通信を行うことを可能にしてもよい。ＩＣＨ４２０は、コンピュータシステム４００と通信するＩ／Ｏデバイスに対するインターフェースを提供してもよい。ＩＣＨ４２０は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラのような周辺機器ブリッジ（又はコントローラ）４２４、又は、その他の種類の周辺機器ブリッジ又はコントローラを介して、バス４２２と通信を行ってもよい。ブリッジ４２４は、ＣＰＵ４０２と周辺機器との間のデータ経路を提供してもよい。その他の種類のトポロジーを使用してもよい。複数のバスが、例えば、複数のブリッジ又はコントローラを介して、ＩＣＨ４２０と接続されてもよい。また、ＩＣＨ４２０と通信を行うその他の周辺機器として、本発明の様々な実施形態では、インテグレーティッド・ドライブ・エレクトロニクス（ＩＤＥ）、又は、スモールコンピュータシステムインターフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインターフェース（ＤＶＩ））、又は、その他のデバイスを含んでもよい。
【００２８】
バス４２２は、オーディオデバイス４２６、１以上のディスクドライブ４２８、及び、コンピュータネットワーク４０３と接続されてもよいネットワークインターフェースデバイス４３０と接続されてもよい。一実施形態において、デバイス４３０は、無線通信可能なＮＩＣであってもよい。その他のデバイスが、バス４２２を介して接続されてもよい。また、本発明のある実施形態では、（例えば、ネットワークインターフェースデバイス４３０のような）様々な構成要素を、ＭＣＨ４０８と接続してもよい。また、プロセッサ４０２及びＭＣＨ４０８は、１つのチップを形成するべく組み合わせられてもよい。さらに、本発明の別の実施形態では、グラフィックスインターフェース４１４は、ＭＣＨ４０８内に含められていてもよい。
【００２９】
また、コンピュータシステム４００は、揮発性及び／又は不揮発性メモリ（又はストレージ）を含んでもよい。例えば、不揮発性メモリは、リードオンリーメモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電子的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、４２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、又は、電気的データ（例えば、命令を含む）を格納可能なその他の種類の不揮発性機械可読媒体のうち、１以上を含んでもよい。一実施形態において、システム４００の構成要素は、図５を参照して説明するように、ポイントツーポイント（ＰｔＰ）構成に配置されてもよい。例えば、プロセッサ、メモリ及び／又は入出力デバイスは、複数のポイントツーポイントインターフェースによって相互接続されてもよい。
【００３０】
具体的には、図５には、本発明の一実施形態に係るポイントツーポイント（ＰｔＰ）構成に配置されるコンピュータシステム５００が示されている。特に、図５には、プロセッサ、メモリ及び入出力デバイスが、複数のポイントツーポイントインターフェースによって相互接続されているシステムが示されている。図１から図４を参照して上記で説明したオペレーションが、システム５００の１以上の構成要素によって実行されてもよい。
【００３１】
図５には、明瞭化のために２つのプロセッサ５０２及び５０４しか示されていないが、システム５００は、これより多い数のプロセッサを含んでもよい。プロセッサ５０２及び５０４は、メモリ５１０及び５１２とそれぞれ接続されるローカルメモリ制御ハブ（ＭＣＨ）５０６及び５０８をそれぞれ含んでもよい。メモリ５１０及び／又は５１２は、図４のメモリ４１２を参照し上記で説明したように、様々なデータを格納してもよい。
【００３２】
プロセッサ５０２及び５０４は、図４のプロセッサ４０２を参照して説明したような、任意の好適なプロセッサを含んでもよい。プロセッサ５０２及び５０４は、それぞれインターフェース回路５１６及び５１８を使用して、ポイントツーポイント（ＰｔＰ）５１４を介してデータをやりとりしてもよい。プロセッサ５０２及び５０４はそれぞれ、ポイントツーポイントインターフェース回路５２６、５２８、５３０及び５３２を介して、別個のＰｔＰインターフェース５２２及び５２４を介して、チップセット５２０とデータをやりとりしてもよい。チップセット５２０はまた、ＰｔＰインターフェース回路５３７を使用して、高性能グラフィックスインターフェース５３６を介して高性能グラフィックス回路５３４とデータをやりとりしてもよい。
【００３３】
本発明の少なくとも１つの実施形態が、プロセッサ５０２及び５０４を利用することにより提供されてもよい。例えば、プロセッサ５０２及び／又は５０４は、図１から図４のオペレーションのうちの１以上を実行してもよい。本発明のその他の実施形態では、図５のシステム５００内のその他の回路、論理ユニット又はデバイスに存在してもよい。さらに、本発明のその他の実施形態は、図５内に示された複数の回路、論理回路、又は、デバイスにわたって分配されてもよい。
【００３４】
チップセット５２０は、ＰｔＰインターフェース回路５４１を使用して、バス５４０に接続されてもよい。バス５４０には、１以上のデバイスが接続されてもよく、例えば、バスブリッジ５４２及びＩ／Ｏデバイス５４３が接続されてもよい。バス５４４を介して、バスブリッジ５４３は、キーボード／マウス５４５、図５を参照して説明したネットワークインターフェースデバイス５３０（コンピュータネットワーク４０３と接続されてもよいモデム、ネットワークインターフェースカード（ＮＩＣ）等）、オーディオＩ／Ｏデバイス、及び／又は、データ記憶デバイス５４８のようなその他のデバイスと接続されてもよい。データ記憶デバイス５４８は、プロセッサ５０２及び／又は５０４によって実行されてもよいコード５４９を格納してもよい。
【００３５】
本発明の様々な実施形態において、例えば、図１〜図５を参照して説明したオペレーションは、ハードウェア（例えば、論理回路）、ソフトウェア（例えば、図４から図５を参照して説明したプロセッサのようなプロセッサのオペレーションを制御するマイクロコード）、ファームウェア、又は、これらの組み合わせに実装されてもよく、本明細書で説明されたオペレーションを実行するべく、コンピュータ（例えば、プロセッサ又はコンピュータデバイスのその他のロジック）をプログラムするのに使用される命令（又は、ソフトウェアプロセス）を格納する有形機械可読又はコンピュータ可読媒体として提供されてもよい。機械可読媒体は、本明細書で説明したような記憶デバイスを含んでもよい。
【００３６】
さらに、このような有形コンピュータ可読媒体は、リモートコンピュータ（例えば、サーバー）から要求を行うコンピュータ（例えば、クライント）へと、通信リンク（例えば、バス、モデム又はネットワーク接続）を介して有形伝播媒体に実装されるデータ信号の態様で転送されるコンピュータプログラム物品としてダウンロードされてもよい。
【００３７】
このように、本発明の実施形態が、構造的特徴及び／又は方法の動作に絞って説明されたが、特許請求される特徴は、上記で説明された特定の特徴又は動作に限定されないことは理解されるべきである。特定の特徴及び動作は、特許請求される特徴を実装するサンプルの形式として開示されてもよい。
【図１】
2013515319.tif 000023
【図２Ａ】
2013515319.tif 000024
【図２Ｂ】
2013515319.tif 000025
【図２Ｃ】
2013515319.tif 000026
【図３】
2013515319.tif 000027
【図４】
2013515319.tif 000028
【図５】
2013515319.tif 000029
【手続補正書】
【提出日】平成24年6月22日(2012.6.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第１の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第２の値を生成するべく、前記第１の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の１以上と前記第２の値との乗算に基づいて、複数の結果を再構築する段階と
を備え、
前記複数の結果は、前記複数の独立変数の逆数の表現に対応している方法。
【請求項２】
前記第１の値を逆数にする段階は、前記第１の値の指数部の符号を変更することにより実行される請求項１に記載の方法。
【請求項３】
前記複数の独立変数の浮動小数点の表現を、整数値へと変換する段階を更に備える請求項１に記載の方法。
【請求項４】
前記複数の独立変数をスケーリングする段階は、前記複数の独立変数を１．０でスケーリングすることを含む請求項１に記載の方法。
【請求項５】
生成された値をメモリに格納する段階を更に備える請求項１に記載の方法。
【請求項６】
ＳＩＭＤ（単一命令複数データ）命令に対応する複数のデータ値を格納するメモリと、
複数のＳＩＭＤレーンを有するプロセッサと
を備え、
前記複数のＳＩＭＤレーンの各々は、前記ＳＩＭＤ命令に従って、前記メモリに格納された前記複数のデータ値のうちの１つを処理し、
前記プロセッサは、
前記複数のデータ値のうちの第１の値の指数部及び小数部をスケーリングして、それぞれ第２の値及び第３の値を生成し、
前記第２の値及び前記第３の値をそれぞれ逆数にして、第４の値及び第５の値を生成し、
前記第４の値と前記第５の値とを乗算して、前記第１の値の逆数表現を生成し、
前記第２の値は、前記第１の値の前記指数部の符号を変更することにより逆数にされる装置。
【請求項７】
前記プロセッサは、前記第１の値の指数部と小数部とを決定する請求項６に記載の装置。
【請求項８】
前記プロセッサは、前記第１の値の前記指数部及び前記小数部を１．０でスケーリングして、前記第２の値及び前記第３の値を生成する請求項６に記載の装置。
【請求項９】
前記プロセッサは、前記複数のデータ値の浮動小数点表現を、整数値に変換する請求項６に記載の装置。
【請求項１０】
前記メモリは、キャッシュを含む請求項６に記載の装置。
【請求項１１】
前記プロセッサは、１以上のプロセッサコアを含む請求項６に記載の装置。
【請求項１２】
前記プロセッサは、生成された値を前記メモリに記憶させる請求項６に記載の装置。
【請求項１３】
前記第１の値の前記逆数表現を表示させる表示デバイスを更に備える請求項６に記載の装置。
【請求項１４】
プロセッサに、
対応する複数のスケーリングされた独立変数を生成するべく、複数の独立変数をスケーリングする段階と、
第１の値を生成するべく、前記複数のスケーリングされた独立変数の乗算を行う段階と、
第２の値を生成するべく、前記第１の値を逆数にする段階と、
前記複数のスケーリングされた独立変数の１以上と前記第２の値との乗算に基づいて、複数の結果を再構築する段階と
を実行させるためのプログラム。
【請求項１５】
前記複数の結果は、前記複数の独立変数の逆数表現に対応している請求項１４に記載のプログラム。
【請求項１６】
前記第１の値の指数部の符号を変更することにより、前記第１の値の逆数にする段階を更に実行させる請求項１４に記載のプログラム。
【請求項１７】
前記複数の独立変数の浮動小数点表現を、整数値へと変換する段階を更に実行させる請求項１４に記載のプログラム。
【請求項１８】
前記複数の独立変数を１．０でスケーリングする段階を更に実行させる請求項１４に記載のプログラム。
【請求項１９】
生成された値をメモリに格納する段階を更に実行させる請求項１４に記載のプログラム。
【請求項２０】
前記複数の独立変数の逆数にされた指数部と逆数にされた小数部とを乗算する段階を更に実行させる請求項１４に記載のプログラム。
【国際調査報告】
2013515319.tif 000030
2013515319.tif 000031
2013515319.tif 000032