"プロセッサであって、multiplyadd命令をサポートする指数差分計算ロジック、乗算器、及び加算器を有する機能部を有し、前記機能部は、仮数値を何桁丸めるか指定するround命令をサポートするラウンダも有し、前記指数差分計算ロジックは前記multiplyadd命令と前記round命令の実行をサポートするシフタを有する、プロセッサ。前記シフタは前記機能部により実行されるscale命令もサポートする、請求項1に記載のプロセッサ。前記指数差分計算ロジックは、前記multiplyadd命令の実行をサポートする第2のシフタを含み、前記第2のシフタは前記機能部により実行されるgetexponent命令もサポートする、請求項2に記載のプロセッサ。前記指数差分計算ロジックは、前記multiplyadd命令の実行をサポートする第2のシフタを含み、前記第2のシフタは前記機能部により実行されるgetexponent命令もサポートする、請求項1に記載のプロセッサ。前記第1のシフタ、第2のシフタ、及びラウンダは、前記機能部により実行されるreduce命令もサポートする、請求項4に記載のプロセッサ。前記第1のシフタ及びラウンダは、前記機能部により実行されるreduce命令もサポートする、請求項1に記載のプロセッサ。機能部が第1の命令を実行する、前記第1の命令はmultiplyadd命令であるステップと、前記機能部が第2の命令を実行する、前記第2の命令はround命令であるステップとを有する、方法。前記機能部が第3の命令を実行する、前記第3の命令はscale命令であるステップをさらに有する、請求項7に記載の方法。前記機能部が第4の命令を実行する、前記第4の命令はgetexponent命令であるステップをさらに有する、請求項8に記載の方法。前記機能部が第5の命令を実行する、前記第5の命令はreduce命令であるステップをさらに有する、請求項9に記載の方法。前記機能部が第6の命令を実行する、前記第6の命令はgetmantissa命令であるステップをさらに有する、請求項10に記載の方法。前記機能部が第7の命令を実行する、前記第7の命令はrange命令であるステップと、請求項11に記載の方法。計算システムであって、ハードディスクドライブと、プロセッサとを有し、前記プロセッサは機能部を有し、前記機能部は、multiplyadd命令をサポートする指数差分計算ロジック、乗算器、及び加算器を有し、前記機能部は、仮数値を何桁丸めるか指定するround命令をサポートするラウンダも有し、前記指数差分計算ロジックは前記multiplyadd命令と前記round命令の実行をサポートするシフタを有する、計算システム。前記シフタは前記機能部により実行されるscale命令もサポートする、請求項13に記載のプロセッサ。前記指数差分計算ロジックは、前記multiplyadd命令の実行をサポートする第2のシフタを含み、前記第2のシフタは前記機能部により実行されるgetexponent命令もサポートする、請求項14に記載のプロセッサ。前記指数差分計算ロジックは、前記multiplyadd命令の実行をサポートする第2のシフタを含み、前記第2のシフタは前記機能部により実行されるgetexponent命令もサポートする、請求項13に記載のプロセッサ。前記第1のシフタ、第2のシフタ、及びラウンダは、前記機能部により実行されるreduce命令もサポートする、請求項16に記載のプロセッサ。図2は、ここに説明する複数の異なる命令を実行できる実行ユニット機能ユニットとも呼ぶを示す図である。MADD命令図2のアーキテクチャが実行できる基本命令は、MADDmultiplyadd命令である。これは被乗数Aと乗数Bを乗算して、その積ABを被加数Cに加算する。すなわち、MADD命令は、命令R=ABCを実行する一実施形態では、MADD命令を用いて、ABC、AB-C、-ABC、-AB-Cのうちどれかを実行できる。浮動小数点形式では、本技術分野で知られているように、値は仮数項と指数項で表される。このように、例えば、被乗数AはA.mant,A.expと表され、乗数BはB.mand,B.expと表され、被加数CはC.mant,C.expと表される。図2のアーキテクチャは、浮動小数点演算の場合、指数計算ロジック201と仮数計算ロジック202とを含む。浮動小数点MADD命令の基本的な動作によると、指数計算ロジック201は、浮動小数点結果の指数項R.expを決定し、仮数計算ロジック202は、浮動小数点結果の仮数項R.mantを決定する。浮動小数点MADD命令の場合、指数計算ロジック201は、最初にR.exp項を、iC.expとiiA.expB.expとの最大として決定する。仮数ロジック202は、左シフトロジック204と右シフトロジック205とを両方含む、指数差分ロジック203を含む。また、仮数ロジックは乗数206を含む。乗算の動作は、複数の部分積の合計として見ることができる。また、図2は、特定乗数デザインアプローチも示す。このアプローチでは、セレクタロジック207は、A.mant項とB.mant項の乗算の部分積を生成するB.mant項もBoothエンコードされていることに留意せよ。ウォレスツリーロジック208は、セレクタロジック207により生成された部分積の合計を有効に実行する。特に、加数の仮数項C.mantはウォレスツリー208にインジェクションされ、ウォレスツリー208もABCを実行するようになっている。しかし、インジェクションの前に、C.mant項は調整され、部分積の合計において適切にアライメントされる。ここで、乗算器により行われる乗算は、A.expB.expのオーダーの仮数項を生成するので、指数差分ロジック203は、C.mant項を、C.expとA.expB.expとの間の差分だけシフトする。具体的に、C.expがA.expB.expより大きい場合、C.mant項は、左シフトロジック204により、C.exp-A.expB.expバイナリポイントだけ、左にシフトされるすなわち、C.mant項のバイナリポイントは、右にシフトされ、これは整数項が増える効果を有する。同様に、C.expがA.expB.expより小さい場合、C.mant項は、右シフトロジック205により、A.expB.exp-C.expデシマルポイントだけ、右にシフトされるすなわち、C.mant項のバイナリポイントは、左にシフトされ、これは整数項が減る効果を有する。この場合、C.mantの下位項は、ロジック213によりスティッキービットに結合され、以下に説明する命令のため、ラウンダ217により用いられる。ウァラスツリーロジック207により行われる合計により、合計項と桁上がり項が生成され、加算器209により加算され、ABCの計算の結果を生成する。ここで、ABCの計算の結果の最初がゼロであれば又は結果が負の場合、最初が1であれば、リーディング変更予想器210により、その最初のゼロの又は1の数だけ結果を左にシフトして、それらを削除する。この同じ情報は、R.expを適宜調整するため、指数計算ロジック201に提供される。2つのシフタがある。始めのゼロを除去する左シフト204この場合、R.expはshiftcountで更新されると、右シフト212これはC.expがAB.expより大きい時に必要である。この場合、ウァラスツリーの結果は右シフトされ、C.exp-AB.expが等しくなるポイントまで右シフトされるである。MUX213は、2つのシフタ211、212のうち正しい結果を得られるものを選択する。一実施形態では、C.mant項が左にシフトされると、加算器209は桁上がり項214を生成する。桁上がり項214により、インクリメント器215は、左シフトされたC.mant項に桁上がり項を加算するすなわち、加算器209が桁上がり項を生成すると、インクリメント器215の出力は2:1マルチプレクサ216を通る。一実施形態では、加算器209は108ビットであり、インクリメント器215は53ビットインクリメント器である。図2の機能ユニットで実行できる他の多くの命令を、以下にさらに詳しく説明する。これらの命令のどれも、上記のFMADD命令だけでなく、一実施形態では、機能ユニットがスカラー又はPackeddataSIMDスタイルのオペランドの任意の組合せを、単精度又は倍精度で演算するように設計されている。オペランドのスタイルと精度の仕様の組合せは命令で指定される。さらに、図2の機能ユニットを複数回インスタンス化して、ベクトル機能ユニットを実現できる。ここで、マスキングレイヤを、ベクトル機能ユニット出力と、そのベクトル機能ユニット内のインスタンス化された機能ユニットの各々との間に、入れても良い。ベクトル演算は、ベクトルマシンでは入力オペランドが可変であるのに対して、SIMDマシンでは固定であるという意味で、SIMD演算とは異なるものと見なせる。上記のマスキングレイヤは、ベクトルマシン中の要素数を可変する機能を提供する。具体的に、インスタンス化された機能ユニットの一からの各出力要素は、その書き込みロジック回路に書き込まれる。一実施形態では、書き込みロジック回路は、ベクトル機能ユニットの任意の出力要素ロケーションに書き込むことができる。有効なベクトルオペランド要素に対応する要素のみに対して書き込みロジック回路をイネーブルすることにより、可変長ベクトルを処理できる。これは、有効なベクトル要素に対応するインスタンス化された機能ユニットの動作のみを基本的にイネーブルする効果を有する。さらに、マスキングレイヤは、個々のインスタンス化された機能ユニットにより検知された算術例外が、イネーブルされたインスタンス化された機能ユニットのみの有効出力に提示され、非アクティブの機能ユニットからの例外は抑制するように設計されている。SCALE命令SCALE命令のフロー図を図3に示した。SCALE命令は第1の浮動小数点項Xを浮動小数点項Yの最小整数表示であるフロアYだけスケールする。VSCALE命令は、実際、Xのバイナリポイントをフロア量Yだけ動かす命令と見ることができる。これは、数学的には、以下のように表現することができる:R2XmantE。このように、結果の仮数項はR.mant=X.mantであり、結果の指数項はR.exp=X.expフロア:Y.mantEY.expである。R.expの計算に関して、X.expはそれ自体整数であり、Y.mantEY.expは、Y.mant項のバイナリポイントを端数ビットが無くなるまでシフトすることにより、整数に変換できる。すなわち、例えば、Y.mant=1.01011でありY.exp=5であるとすると、Y=101011である。これは基本的に、シフタ内でY.mantを左にY.expだけシフトすることに対応する。ここで、フロア演算は、基本的に、端数ビットの切り捨てに対応する。よって、R.exp号は、iY.mantをY.expの量だけシフトし、iiシフトした値をX.expに加算することにより、計算できる。これは、A.expとB.exp項を=0にしつつ、MADD命令の加数C.mantとC.expを処理するデータパスでY項を処理することにより、図2の指数差分ロジック203内で行われる。この場合、C.exp-A.expB.exp=Y.exp-0=Y.expであり、これによりY.mantは左シフタ204により、Y.expだけ左にシフトされる。シフタ204の出力は指数計算ロジック201に提供される。指数計算ロジック201は、シフタ204の出力をX.exp項に加算する。X.exp項は、指数計算ロジック201へのA.exp、B.exp、C.exp入力のどれにも強制される。和はR.expとして与えられる。R.mantは単に入力X.mant項として与えられる。GETEXP命令GETEXP命令のフロー図を図4に示した。GETEXP命令は入力項Z.mant、Z.expを受け取り、Z.expの値からバイアスを減算し、答えを浮動小数点形式で提供する。基本的に、この命令は入力Zの真の指数を浮動小数点形式で提供する。ここで、本技術分野では知られているように、浮動小数点の指数値は、計算で負の指数を容易に扱えるように、一般的にはバイアスされている。例えば、単精度の場合、8ビットが指数項のために予約されており、254通りの値を与えるこの他の2つの値には特別な意味が与えられている。ここで、-127乃至127の実際の指数範囲に対して、かかる実際の指数値に127のバイアスがハードウェアにより加算され、指数に対してハードウェアで物理的に計算される数値範囲が0から254になる。よって、単精度の場合、GETEXP命令はZ.expから値127を減算し、答えを浮動小数点形式で提供する。倍精度の場合には、Z.expから値1023が減算される倍精度では.exp項は11ビットである。単精度の場合、値-127を加算することにより、値127が他の項から減算される。2の補数形式では、-127は10000001と表され、これは0.10000001E8と表されるすなわち、値10000001E0が右に8桁分シフトされる。このように、一アプローチでは、単精度の場合、値0.10000001は被乗数A.mantとされ、値1が乗数B.mantとされ、乗算器により行われるAB項の乗算の結果は、0.10000001であり、これは-127を8桁だけ右へシフトしたものに対応する。Z.exp項は、加数C.mantデータパスに沿って受け入れられ、右シフタ205により8桁右シフトされ、ウァラスツリー208にインジェクトされる前に、乗算器出力とアライメントされる。加算器209からの結果は、Z.exp項からバイアス127を引き、右に8けたシフトしたものに対応する。リーディングチェンジ予測器210と左シフタ211は、先のゼロ/1を除去し、結果をR.mantとして提供する。R.expは、指数計算ロジックにより計算され、単精度の場合、R.exp=8-LCA210からカウントしたリーディング0/11271である。倍精度の場合、バイアスが1023であり、値を8ビットでなく11ビットシフトすることを除き、上記と同じ演算を適用する。このように、R.exp=11-LCA210からカウントしたリーディング010231である。入力項Z.mant,Z.expが非正規数すなわち、指数項がゼロにバイアスされ、非ゼロの仮数が0.XXXX...Xの形式である場合、Z.mant項は、最初のリーディング1が見つかるまで、LCA210の制御下で、左シフタ211により左シフトされる。結果はR.mantとして与えられる。左シフトカウントは、指数の絶対値に対応し、負数であると考える。このように、R.expは、指数計算ロジックにより、R.exp=-|LCA210からからのリーディング0カウント|として表される。ROUND命令ROUND命令のフロー図を図5に示す。ROUND命令は、入力項S.mant;S.expの仮数S.mantを、入力項Qにより指定されたバイナリ桁数まで丸める。例えば、S=10111.11001E0であり、Q=2である場合、この命令は結果R=10111.11E0すなわち、R.mant=10111.11;R.exp=0を与える。この演算を実行するため、S.mant項は加数仮数入力C.mantとして受け入れられ、右シフタ205により、S.mant中の端数ビット数-Qだけ右シフトされる。上記の例では、S.mantの端数ビット数は5であるすなわち、ストリング11001には5ビットある。よって、S.mantは5-Q=5-2=3桁だけ右にシフトされる。入力S.mant項10111.11001を右に3桁シフトすると、10.11111E3に対応する結果が生じ、元の入力Sから最下位オーダーの端数ビットストリング001をドロップする効果を有する。一実施形態では、命令は次の丸めモードをサポートする:1切り上げ;2切り下げ;3最も近い偶数への丸め;及び4ゼロへの丸め。完全な演算により、指定された丸めモード及びドロップされた端数ビットとに応じて、最小端数値が切り上げ又は切り下げされ、その結果が元の指数とともに提示されるすなわち、10111.11E0。ここで、最初の複数のゼロが元のS.mantの一部とアライメントされ、それに続く複数の1が元のS.mantのドロップされる一部とアライメントされたマスクを生成する。ここで説明する例では、これは0000000111に対応する。このマスクは、元のS.mant入力とOR演算され、この例の場合、第1の値1011111111を生成する。マスクのNOT1111111000が元の入力S.mant項とAND演算され、第2の値1011111000を生成する。ラウンダ217は、両方の値を受け取り、ラウンドアップ値に対応する第1の値をインクリメントする。第2の値は非ラウンドアップ値に対応する。指定された丸めモードと、右シフタ205からドロップされたビットとに基づき、第1又は第2の値が正しい仮数の答えとして選択される。この例では、ドロップされたビットは001に対応し、それゆえ最も近い値への丸めモードでは切り上げは行われず、第2の値が正しい仮数として選択される。切り上げモードかつ入力符号が正であるの場合、又は切り下げモードかつ入力符号が負であるの場合、切り上げられた値が選択される。ゼロへの丸めモードでは、非切り上げモードが常に選択される。指数計算ロジックは正しい指数を決定する例えば、roundtonearestモードにおいて、S=11111.11111E0かつQ=2であるとすると、規格化後、R.exp=S.exp1である。特に、第1と第2の値の一方は、偶数の仮数値に対応し、他方は奇数の仮数値に対応する。最も近い偶数値への丸めの場合、選択は左端のドロップされたビットと、他のドロップされたビットスティッキービットとに基づく。左端のドロップされたビットが1であり、スティッキービットが0である場合、偶数値が選択される。スティッキービットが1である場合、選択は左端のドロップされたビットに基づく:1であれば、切り上げ値を選択し、0であればトランケートされた値すなわち、切り上げではないを選択する。roundtoinfinityの場合、ドロップされた端数ビットのどれかが1であれば、切り上げ値が選択される。ドロップされたビットがすべて0であれば、非切り上げ値が選択される。一実施形態では、切り下げモードにおける負の入力に、及び切り上げモードにおける正の入力に対し、roundtoinfinityルールが適用される。切り下げモードにおける正の入力に、及び切り上げモードにおける負の入力に対し、roundtozeroルールが適用される。説明した丸めroundingbehaviorは、IEEE標準754-2008で与えられる丸めモードの定義と一致する。GETMANTGETMANT命令のフロー図を図6に示した。GETMANTは浮動小数点形式で仮数の値を提供する。浮動小数点形式で表す仮数をC.mant入力で受け取る。結果の仮数部ここでは、仮数significandと呼ぶは、1.XXXX...Xの形式である。出力値が入らねばならない数値範囲正規化値とも呼ぶも入力パラメータとして提供される。一実施形態では、指定できる区間が4つある:12121122及び3432。範囲12は、1.XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力結果として提示される。指数ロジックは指数の結果を0又はBIASに設定し、正しい範囲内の出力値を提示する。範囲1/21は、0.1XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。指数結果は-1又はBIAS-1として提示され、指定範囲内の出力値すなわち、0.1XXXX...Xの数値を供給する。範囲1/22は、0.1XXX...X又は.XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。C.mant入力項が0.1XXX...Xの形式である場合、指数は-1又はBIAS-1として提示され、正しい数値範囲の出力結果を提供する。C.mant入力項が1.XXXX...Xの形式である場合、指数は0又はBIASとして提示され、正しい数値範囲の出力結果を提供する。範囲3/43/2は、011XXX...X又は1.0XXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。C.mant入力項が1.0XXX...Xの形式である場合、指数は0又はBIASとして提示され、正しい数値範囲の出力結果を提供する。C.mant入力項が1.1XXX...Xの形式である場合、指数は-1又はBIAS-1として提示され、正しい数値範囲の出力結果を提供する。上記のいずれの命令においても、入力項が非正規数すなわち、指数項がゼロにバイアスされ、非ゼロの仮数が0.XXXX...Xの形式である場合、C.mant項は、最初のリーディング1が見つかるまで、LZA210の制御下で、左シフタ211により左シフトされる。これは、出力を所望の出力形式である1.XXXX...Xの形式で表すことに対応する。正しい成分は、当てはまる範囲で正しい指数が上記のように確立される。REDUCEREDUCE命令のフロー図を図7に示した。REDUCEは、入力値の縮尺した引数を、関係R=X-Round2MX2-Mにより抽出する。ここで、Mは、抽出で参照するビット位置を決定するスケーリングファクタである。また、入力値は、ROUND演算が切り上げか、切り下げか、それとも最も近い偶数値への丸めか指定する。例えば、X=1.01010101であり、切り下げが指定され、スケーリングファクタが3である場合、Round23X=1010.00000であり、Round23X23=1.01000000である。よって、X-Round2MX2-M=1.01010101-1.01000000=0.00010101である。この場合、Rは1.0101と表され、指数はゼロである。図2を参照して、制御ロジック図示せずは、命令とともに入力として供給されるスケーリングパラメータMを受け取る。値Xは、C.mant.inputで受け取られ、制御ロジックの制御下で左シフタ204により左シフトされる。具体的に、制御ロジックにより、左シフタ204は、値Xを、スケーリングパラメータMと等しいバイナリ桁だけ左シフトする。これにより2MX項が生じる。この後の動作は、ROUND命令を参照して上で説明したものと同様である。ただし、右シフタ205は使われない。この演算では、ROUND命令のQパラメータはゼロだからである。一実施形態では、ラウンダ217は、その命令から他の入力パラメータとして、切り上げるか、切り下げるか、又は最も近い偶数に丸めるかの表示を受け取ることができる。これらの異なるモードに対するラウンダの動作は、ROUND命令について上で説明したのと同様である。丸めた答えは、ラウンダ217により供給されると、右シフタ205によりスケーリングパラメータMと同じデシマル桁だけ、右シフトされる特に、ラウンダ217出力は右シフタ205入力に結合される。右シフタ205の出力は、Round2MX2-Mに対応し、負数であることを表す適当な符号操作をしてウァラスツリー209に送られる。乗算器は、C.mant.inputで受け取った同じ入力値を、A.mant又はB.mant入力の一方で受け取り、他の入力の値は1に固定される。よって、加算器209はX-Round2MX2-Mを供給する。切り上げの場合、加算器209の結果は負かゼロである。結果が負であれば、LCAにより左シフタ211は最初の複数の1をシフトアウトする。切り下げの場合、加算器209の結果は正かゼロである。結果が正であれば、LCAにより左シフタ211は最初の複数のゼロをシフトアウトする。最も近い偶数に丸める場合、加算器209の結果は正か負かゼロである。LCA209は、正の結果と負の結果に対して上記のシフトを行う。出力は機能部から供給される。RANGERANGE命令のフロー図を図8に示した。RANGE命令は2つの値FとGを受け取り、次のうちのどれかを返す:iFとGの最小値;iiFとGの最大値;iiiFの絶対値とGの絶対値の最小値;及びivFの絶対値とGの絶対値の最大値。一実施形態では、上記のiないしivの一が実行する命令で特定される。図2を参照して、一実施形態では、上記の命令iとiiに対して、FはC.mant.inputで与えられ、GはA.mant.inputで与えられる。B.mant.inputの値は1.0にされる。Gの符号項はスイッチされ、ウァラスツリーと加算器209により計算F-Gをする。加算器209の出力の符号項は、FとGのどちらが大きいか示す。具体的に、符号項が正であれば、Fの方が大きく、符号項が負であれば、Gの方が大きい。よって、前者の場合は出力としてFがルーティングされ、後者の場合は出力としてGがルーティングされる。命令iiiとivでは同様に、乗算器への出力に先立ちFとGの値の符号項が正の値である。CLASSCLASS命令はオペランドのタイプを決定する。一実施形態では、命令は、複数の異なるデータタイプのテストと、各タイプのビット位置を基本的に確保する特殊な出力フォーマットに対応し、オペランドがタイプをテストされたものである場合、機能部はそのタイプに対応する出力のビット位置に1を置く。別の一実施形態では、8個の異なるデータタイプがテストされる。これらはiANaN;iiNegativeFinite;iiiDenormall;ivvegativeinfinity;vpositiveinfinity;vinegativezero;viipositivezero;viiiSNANである。一実施形態では、機能部中の制御ロジック図2には図示せずは、C.mant.inputにあるオペランドを決定し、それに応じて特殊な出力を生成する。BLENDSEMとFIXUPIMMこのBLENDSEM命令は、対応するビット[7:0]ごとに、条件付きで、第2のソースオペランド中の倍精度浮動小数点値の符号、指数、及び仮数を、第1のソースオペランド中の倍精度浮動小数点値から符号、指数、及び仮数とマージする。結果のパックされた倍精度浮動小数点値は、宛先レジスタに記憶される。直近のビット[7:0]により、第2のソースオペランド又は第1のソースオペランドの単精度値からの対応する符号、指数、及び仮数を宛先にコピーしなければならないか決まる。特殊値も直近の制御により操作される。FIXUPMM命令は、int64ベクトルからの32ビットテーブル値を用いてfloat64ベクトルzmm2において、様々な実数及び特殊数タイプの要素ごとのフィックスアップfixupを行う。結果はfloat64ベクトルzmm1にマージされる。この命令は、複数命令シーケンスの結果をフィックスアップして、特殊数入力を反映するのに有用であるが、一ソースを含む算術計算の結果をスペックとマッチするようにフィックスアップするのに使うことを意図したものである。例えば、rcp0を考える。rcpへの入力0、及び結果はINFである。しかし、Newton-Raphsonによりrcpを評価すると、ここでx=approx1/0であり、不正な結果が生じる。これに対応するため、N-R反復シーケンスの後に、FIXUPIMMを用いて、結果を正しい値に設定するすなわち、入力が0であるときINFことができる。非正規入力オペランドzmm1又はzmm2は、正規入力と考えられ、フィックスアップfixupや不正報告はトリガーしない。一実施形態では、BLENDSEMとFIXUPIMM命令は、異なる機能部で実行され、これはシャッフル機能部と呼ばれる。RCP14とRSQRT14RCP14命令は、ソースオペランド第2のオペランド中の4/2パックされた倍精度浮動小数点値の逆数のSIMD計算を実行し、パックされた倍精度浮動小数点結果を宛先オペランドに格納する。この近似の最大相対誤差は2-14より小さい。ソースオペランドは、ZMMレジスタ又は512ビットメモリロケーションである。宛先オペランドはZMMレジスタである。RCP14PD命令は丸め制御ビットにより影響されない。ソース値が0.0であるとき、ソース値の符号を有する∞が返される。ソース値がSNaN又はQNaNであるとき、SNaNはQNaNに変換され、ソースQNaNが返される。RSQRT14命令は、ソースオペランド第2のオペランド中の8パックされた倍精度浮動小数点値の平方根の近似逆数のSIMD計算を実行し、パックされた倍精度浮動小数点結果を宛先オペランドに格納する。この近似の最大相対誤差は2-14より小さい。ソースオペランドは、ZMMレジスタ又は512ビットメモリロケーションである。宛先オペランドはZMMレジスタである。RSQRT14PD命令は丸め制御ビットにより影響されない。ソース値が0.0であるとき、ソース値の符号を有する∞が返される。ソースオペランドが∞であるとき、ソース値の符号を有する0が返される。ソース値が0.0以外の負の値であるとき、浮動小数点不定が返される。ソース値がSNaN又はQNaNであるとき、SNaNはQNaNに変換され、ソースQNaNが返される。一実施形態では、VRCP14及びVRSQRT14命令は、異なる機能部で実行され、これはPFPROMS機能部と呼ばれる。上記の機能を有するプロセッサは、いろいろな計算システムで実施できる。図9は、計算システム例えば、コンピュータの一実施形態を示す。図9の計算システム例は次を含む:1ベクトルロジカルリダクション命令を含むように設計された一又は複数のプロセッサ901;2メモリコントロールハブMCH902;3DDRRAM、EDORAMなどのタイプのシステムメモリ903;4キャッシュ904;5I/OコントロールハブICH905;6グラフィックスプロセッサ906;7陰極線管CRT、フラットパネル、薄膜トランジスタTFT、液晶ディスプレイLCD、DPLなどのタイプのディスプレイスクリーン907;8一以上のI/Oデバイス908。計算システムはハードディスクドライブ図示せずを含んでいてもよい。一又は複数のプロセッサ901は、計算システムが実装するソフトウェアルーチンを実行するために命令を実行する。命令は、データに対して行われる操作を含むことが多い。データと命令は両方ともシステムメモリ903とキャッシュ904に格納される。キャッシュ904は、一般的には、システムメモリ903よりもレイテンシ時間が短く設計されている。例えば、キャッシュ904は、プロセッサと同じシリコンチップ上に集積され、及び/又は高速のSRAMセルで構成され、一方システムメモリ903は低速のDRAMセルで構成されている。より頻繁に使われる命令とデータを、システムメモリ903ではなくキャッシュ904に格納することにより、計算システムの全体的な性能効率を改善する。システムメモリ903は、計算システム中の他のコンポーネントに利用可能である。例えば、様々なインタフェース例えば、キーボード、マウス、プリンタポート、LANポート、モデムポートから計算システムに受け取られたデータや、計算システムの内部記憶要素例えば、ハードディスクドライブから読み出したデータは、ソフトウェアプログラムの実施で、一又は複数のプロセッサ901により処理される前に、システムメモリ903に一時的にキューされる。同様に、計算システムから計算システムインタフェースの一を介して外部エンティティに送るべきと、又は内部記憶要素に格納すべきとソフトウェアプログラムが判断するデータは、送信又は格納される前に、システムメモリ903に一時的にキューされる。ICH905は、かかるデータが、システムメモリ903と適切な対応する計算システムインタフェース計算システムの設計によっては内部記憶装置との間で正しく受け渡しさせる役割を有する。MCH902は、時間的に近接して生じるプロセッサ901、インタフェース、及び内部記憶要素の間のシステムメモリ903へのアクセスを求める様々な要求を管理する役割を果たす。また、一又は複数のI/O装置908が典型的な計算システムに実装されている。I/O装置は、一般的に、計算システムへ及び/又は計算システムから例えば、ネットワーキングアダプタ、計算システム内の大規模不揮発性記憶例えば、ハードディスクドライブをのデータを転送する役割を果たす。ICH905は、それ自体と上記のI/Oデバイス908との間の双方向ポイントツーポイントリンクを有する。上記の説明では、本発明をその具体的な実施形態を参照して説明した。しかし、明らかなことは、添付した請求項に記載したように、本発明の広い精神と範囲から逸脱することなく、様々な修正や変更を加えることができる。したがって、明細書と図面は例示であって限定ではないと考えるべきである。"