24531904_j
24531904_j 24531904_j
て異なる。 バイアス定数には、 最小の正規化数の逆数を求めた と き、 オーバーフロ ーが発 生しない値が選択される。 3.7.1.4 実数と非数のエンコーディング IA プ ロ セ ッ サの浮動小数点フ ォ ー マ ッ ト は、 各種の実数 と 特殊な値を コ ー ド 化で き る。 こ れらの数と値は、 通常は以下のクラスに分類される。 • 符号付き ゼ ロ • デノーマル有限数 • 正規化有限数 • 符号付き無限大 • NaN (Not a Number) • 不定数 図 3-10 は、 これ ら の数 と 非数のエン コ ー デ ィ ン グが実数連続体の ど の部分を占め る かを示 している。 こ こでは、 IEEE 単精度 (32 ビッ ト ) フォーマットでのエンコーディングを示 す。 "S" は符号ビ ッ ト 、 "E" はバイアス さ れた指数、 "F" は小数部を表す ( 指数の値は 10 進数で示す )。 プ ロ セ ッ サは、 実行 さ れる計算の タ イ プに基づいて、 こ れ ら の値を操作した り 、 こ れ ら の 値で結果を返す こ と がで き る。 以下の各項では、 これら の数 と 非数について説明する。 3.7.1.5 符号付きゼロ ゼロは、 符号ビッ ト付きで +0 または -0 として表現できる。 2 つのエンコ ーデ ィ ングは、 同じ値を示している。 0 の結果の符号は、 実行される演算 と 、 使用 される丸めモー ド に よ っ て決ま る。 符号付き ゼロ は、 区間演算を実行するために用意されている。 0 の符号に よ っ て、 アンダ ー フ ロ ー が発生した方向や、 逆数計算で得 ら れた ∞の符号がわかる。 3.7.1.6 正規化有限数とデノーマル有限数 ゼ ロ でない有限数は、 正規化有限数 と デ ノ ー マル有限数の 2 つのク ラスに分類される。 正 規化有限数は、 0 ~ ∞の範囲の正規化実数フ ォ ー マ ッ ト で コ ー ド 化可能な、 ゼ ロ でないす べての有限値で構成 さ れる。 図 3-10 に示すフ ォ ーマ ッ ト では、 このグループの数は、 1 ~ 254 10 の範囲のバイアス された指数を持つすべての数値を含む ( バイ アス さ れない指数の 範囲は、 -126 10 ~ +127 10 である )。 3:860 第 3 巻 : IA-32 ストリーミング SIMD 拡張命令リファレンス
図 3-10. 実数と NaNs NaN 実数が限 り な く 0 に近づ く と 、 正規化数フ ォ ー マ ッ ト を使用して数を表現で き な く な る。 これは、 指数の範囲が足り な く な り、 先頭の 0 を削除するために 2 進小数点を右にシ フ ト ができな く なるためである。 バイアスされた指数が 0 であ る場合、 非常に小 さ い数を表現する に は、 仮数部の整数ビ ッ ト ( および通常は他の先頭ビット ) を 0 にする必要がある。 この範囲の数は、 デノ ーマル 数 ( ま たは極小数 ) と呼ばれる。 デノーマル数に先頭の 0 を使用する と、 非常に小さい数 を表現で き る。 ただし、 こ の非正規化に よ っ て、 精度は低下す る ( 先頭の 0 のために、 小 数部分の有効ビ ッ ト 数が減る )。 プ ロ セ ッ サは、 正規化浮動小数点計算を実行す る と き、 通常は正規化数を操作し、 正規化 数で結果を生成する。 結果がデノ ーマル数になった場合は、 アンダー フロー状態が発生し たことを示す。 デ ノ ー マル数は、 段階的アンダ ー フ ロ ー と 呼ばれる方法で計算 さ れる。 表 3-2 は、 非正規 化処理時の段階的アンダ ー フ ロ ー の例を示してい る。 こ こ では単精度実数フ ォ ー マ ッ ト が 使用 さ れてい る ため、 最小の指数 ( バイアスなし ) は -12610 になる。 この例では、 真の結 果を正規化数で得る ためには、 -12910 の指数が必要である。 -12910 は指数の許容範囲を超 えているため、 最小の指数である -12610 に達する まで先頭の 0 を挿入すれば、 計算結果 が非正規化される。 表 3-2. 非正規化処理 32 ビット浮動小数点フォーマットでの実数と NaN のエンコーディング S E F S E F 1 0 0 −0 +0 0 0 0 1 0 0.XXX - デノーマル 有限数 + デノーマル 有限数 0 0 1 1...254 任意の値 + 正規化 有限数 0 1...254 任意の値 2 0.XXX2 - 正規化有限数 1 255 0 −∞ X 1 −∞ 255 1.0XX 2 −SNaN X 注: 255 1.1XX −QNaN 1. 符号ビットは無視される。 2. 小数部分はゼロ以外の値でなければならない。 1 操作 符号部 指数部 a 仮数部 真の結果 0 −129 1.01011100000...00 非正規化 0 −128 0.10101110000...00 非正規化 0 −127 0.01010111000...00 非正規化 0 −126 0.00101011100...00 デノーマル数の結果 0 −126 0.00101011100...00 a. 指数はバイアスなしの 10 進数で示す。 - デノーマル有限数 + デノーマル有限数 - 正規化有限数 −0 +0 + 正規化有限数 0 255 0 X 1 255 1.0XX 2 255 1.1XX 第 3 巻 : IA-32 ストリーミング SIMD 拡張命令リファレンス 3:861 +∞ +SNaN +QNaN X 1 +∞ NaN
- Seite 822 und 823: PCMPGTB/PCMPGTW/PCMPGTD—Packed Co
- Seite 824 und 825: PMADDWD—Packed Multiply and Add
- Seite 826 und 827: PMULHW—Packed Multiply High オ
- Seite 828 und 829: PMULLW—Packed Multiply Low オペ
- Seite 830 und 831: POR—Bitwise Logical OR オペコ
- Seite 832 und 833: PSLLW/PSLLD/PSLLQ—Packed Shift Le
- Seite 834 und 835: PSLLW/PSLLD/PSLLQ—Packed Shift Le
- Seite 836 und 837: PSRAW/PSRAD—Packed Shift Right Ar
- Seite 838 und 839: PSRLW/PSRLD/PSRLQ—Packed Shift Ri
- Seite 840 und 841: PSRLW/PSRLD/PSRLQ—Packed Shift Ri
- Seite 842 und 843: PSUBB/PSUBW/PSUBD—Packed Subtract
- Seite 844 und 845: PSUBSB/PSUBSW—Packed Subtract wit
- Seite 846 und 847: PSUBSB/PSUBSW—Packed Subtract wit
- Seite 848 und 849: PSUBUSB/PSUBUSW—Packed Subtract U
- Seite 850 und 851: PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ—Unp
- Seite 852 und 853: PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ—Unp
- Seite 854 und 855: PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ—Unp
- Seite 856 und 857: PXOR—Logical Exclusive OR オペ
- Seite 858 und 859: 3:846 第 3 巻 : IA-32 MMX ® テ
- Seite 860 und 861: 令テ ク ノ ロジを組み込
- Seite 862 und 863: 図 3-3. パックド操作 図 3-4
- Seite 864 und 865: COMISS (Compare scalar single-preci
- Seite 866 und 867: scalar 32-bit integer) 命令は、
- Seite 868 und 869: MASKMOVQ (Non-temporal byte mask st
- Seite 870 und 871: 3.7.1 実数体系 図 3-8 に示
- Seite 874 und 875: 極端な場合には、 先頭の
- Seite 876 und 877: 3.8 データ・フォーマット
- Seite 878 und 879: 3.10 命令プリフィックス
- Seite 880 und 881: •xmm/m64: 128 ビット ・マル
- Seite 882 und 883: ADDPS—Packed Single-FP Add ( 続
- Seite 884 und 885: ADDSS—Scalar Single-FP Add ( 続
- Seite 886 und 887: ANDNPS—Bit-wise Logical And Not F
- Seite 888 und 889: ANDPS—Bit-wise Logical And for Si
- Seite 890 und 891: CMPPS—Packed Single-FP Compare (
- Seite 892 und 893: CMPPS—Packed Single-FP Compare (
- Seite 894 und 895: CMPSS—Scalar Single-FP Compare (
- Seite 896 und 897: CMPSS—Scalar Single-FP Compare (
- Seite 898 und 899: COMISS—Scalar Ordered Single-FP C
- Seite 900 und 901: CVTPI2PS—Packed Signed INT32 to P
- Seite 902 und 903: CVTPS2PI—Packed Single-FP to Pack
- Seite 904 und 905: CVTPS2PI—Packed Single-FP to Pack
- Seite 906 und 907: CVTSI2SS—Scalar Signed INT32 to S
- Seite 908 und 909: CVTSS2SI—Scalar Single-FP to Sign
- Seite 910 und 911: CVTTPS2PI—Packed Single-FP to Pac
- Seite 912 und 913: CVTTSS2SI—Scalar Single-FP to Sig
- Seite 914 und 915: DIVPS—Packed Single-FP Divide オ
- Seite 916 und 917: DIVSS—Scalar Single-FP Divide オ
- Seite 918 und 919: FXRSTOR—Restore FP and Intel ® M
- Seite 920 und 921: FXRSTOR—Restore FP And Intel ® M
図 3-10. 実数と NaNs<br />
NaN<br />
実数が限 り な く 0 に近づ く と 、 正規化数フ ォ ー マ ッ ト を使用して数を表現で き な く な る。<br />
これは、 指数の範囲が足り な く な り、 先頭の 0 を削除するために 2 進小数点を右にシ フ ト<br />
ができな く なるためである。<br />
バイアスされた指数が 0 であ る場合、 非常に小 さ い数を表現する に は、 仮数部の整数ビ ッ<br />
ト ( および通常は他の先頭ビット ) を 0 にする必要がある。 この範囲の数は、 デノ ーマル<br />
数 ( ま たは極小数 ) と呼ばれる。 デノーマル数に先頭の 0 を使用する と、 非常に小さい数<br />
を表現で き る。 ただし、 こ の非正規化に よ っ て、 精度は低下す る ( 先頭の 0 のために、 小<br />
数部分の有効ビ ッ ト 数が減る )。<br />
プ ロ セ ッ サは、 正規化浮動小数点計算を実行す る と き、 通常は正規化数を操作し、 正規化<br />
数で結果を生成する。 結果がデノ ーマル数になった場合は、 アンダー フロー状態が発生し<br />
たことを示す。<br />
デ ノ ー マル数は、 段階的アンダ ー フ ロ ー と 呼ばれる方法で計算 さ れる。 表 3-2 は、 非正規<br />
化処理時の段階的アンダ ー フ ロ ー の例を示してい る。 こ こ では単精度実数フ ォ ー マ ッ ト が<br />
使用 さ れてい る ため、 最小の指数 ( バイアスなし ) は -12610 になる。 この例では、 真の結<br />
果を正規化数で得る ためには、 -12910 の指数が必要である。 -12910 は指数の許容範囲を超<br />
えているため、 最小の指数である -12610 に達する まで先頭の 0 を挿入すれば、 計算結果<br />
が非正規化される。<br />
表 3-2. 非正規化処理<br />
32 ビット浮動小数点フォーマットでの実数と NaN のエンコーディング<br />
S E F<br />
S E F<br />
1 0 0 −0<br />
+0 0 0 0<br />
1 0 0.XXX<br />
- デノーマル<br />
有限数<br />
+ デノーマル<br />
有限数<br />
0 0<br />
1 1...254 任意の値<br />
+ 正規化<br />
有限数<br />
0 1...254 任意の値<br />
2 0.XXX2 - 正規化有限数<br />
1 255 0 −∞<br />
X 1<br />
−∞<br />
255 1.0XX 2 −SNaN<br />
X<br />
注:<br />
255 1.1XX −QNaN<br />
1. 符号ビットは無視される。<br />
2. 小数部分はゼロ以外の値でなければならない。<br />
1<br />
操作 符号部 指数部 a<br />
仮数部<br />
真の結果 0 −129 1.01011100000...00<br />
非正規化 0 −128 0.10101110000...00<br />
非正規化 0 −127 0.01010111000...00<br />
非正規化 0 −126 0.00101011100...00<br />
デノーマル数の結果 0 −126 0.00101011100...00<br />
a. 指数はバイアスなしの 10 進数で示す。<br />
- デノーマル有限数 + デノーマル有限数<br />
- 正規化有限数 −0 +0<br />
+ 正規化有限数<br />
0 255 0<br />
X 1 255 1.0XX 2<br />
255 1.1XX<br />
第 3 巻 : IA-32 ストリーミング SIMD 拡張命令リファレンス 3:861<br />
+∞<br />
+SNaN<br />
+QNaN X 1<br />
+∞<br />
NaN