インテル® Agilex™ 可変精度DSPブロック・ユーザーガイド

ID 683037
日付 2/05/2021
Public
ドキュメント目次

2.2.6. 浮動小数点演算に対する例外処理

インテルAgilexの浮動小数点演算は、乗算器ブロックと加算器ブロックの例外処理をサポートしています。

表 9.  サポートされている例外フラグ
浮動小数点形式 例外フラグ 説明
単精度 乗算
fp32_mult_overflow 1

この信号は、乗算結果が表現可能な最大値よりも大きい値かどうかを示します。

1: 乗算結果が表現可能な最大値よりも大きい値であり、結果が無限大にキャストされる場合

0: 乗算結果が表現可能な最大値より大きくない場合

この信号はAdder or Subtract Modeでは使用できません。

fp32_mult_underflow 1

この信号は、乗算結果が表現可能な最小値よりも小さい値かどうかを示します。

1: 乗算結果が、表現可能な最小の非ゼロ絶対値よりも小さい値であり、結果がゼロにフラッシュされる場合

0: 乗算結果が表現可能な最小値よりも大きい場合

この信号はAdder or Subtract Modeでは使用できません。

fp32_mult_inexact 1

この信号は、乗算結果が正確に表されていないかどうかを示します。

1: 乗算結果が次の場合
  • 丸められた値
  • 表現可能な最小値よりも小さい値
  • 表現可能な最大値よりも大きい値

0: 乗算結果が上記の基準のいずれにも適合しない場合

この信号はAdder or Subtract Modeでは使用できません。

fp32_mult_invalid 1

この信号は、乗算器の演算が明確に定義されておらず、無効な結果を生成するかどうかを示します。

1: 乗算結果が無効で、qNaNにキャストされた場合

0: 乗算結果が無効な数値でない場合

この信号はAdder or Subtract Modeでは使用できません。

加算
fp32_adder_overflow 1

この信号は、加算結果が表現可能な最大値よりも大きい値かどうかを示します。

1: 加算結果が表現可能な最大値よりも大きい値であり、結果が無限大にキャストされる場合

0: 加算結果が表現可能な最大値より大きくない場合

この信号はMultiplication Modeでは使用できません。

fp32_adder_underflow 1

この信号は、加算結果が表現可能な最小値よりも小さい値かどうかを示します。

1: 加算結果が、表現可能な最小の非ゼロ絶対値よりも小さい値であり、結果がゼロにフラッシュされる場合

0: 加算結果が表現可能な最小値よりも大きい場合

この信号はMultiplication Modeでは使用できません。

fp32_adder_inexact 1

この信号は、加算結果が正確に表されていないかどうかを示します。

1: 加算結果が次の場合
  • 丸められた値
  • 表現可能な最小値よりも小さい値
  • 表現可能な最大値よりも大きい値

0: 加算結果が上記の基準のいずれにも適合しない場合

この信号はMultiplication Modeでは使用できません。

fp32_adder_invalid 1

この信号は、加算器の演算が明確に定義されておらず、無効な結果を生成するかどうかを示します。

1: 加算結果が無効で、qNaNにキャストされた場合

0: 加算結果が無効な数値でない場合

この信号はMultiplication Modeでは使用できません。

半精度 乗算

fp16_mult_top_overflow

fp16_mult_bot_overflow

1

この信号は、上位または下位の乗算結果が表現可能な最大値よりも大きい値かどうかを示します。

1: 乗算結果が表現可能な最大値よりも大きい値であり、結果が無限大にキャストされる場合

0: 乗算結果が表現可能な最大値より小さい場合

この信号はAdder or Subtract ModeおよびExtended形式では使用できません。

fp16_mult_top_underflow

fp16_mult_bot_underflow

1

この信号は、上位または下位の乗算結果が表現可能な最小値よりも小さい値かどうかを示します。

1: 乗算結果が、表現可能な最小の非ゼロ絶対値よりも小さい値であり、結果がゼロにフラッシュされる場合

0: 乗算結果が表現可能な最小値よりも大きい場合

この信号はAdder or Subtract ModeおよびExtended形式では使用できません。

fp16_mult_top_inexact

fp16_mult_bot_inexact

1

この信号は、上位または下位の乗算結果が正確な表現であるかどうかを示します。

1: 乗算結果が次の場合
  • 丸められた値
  • 表現可能な最小値よりも小さい値
  • 表現可能な最大値よりも大きい値

0: 乗算結果が上記の基準のいずれにも適合しない場合。

この信号はAdder or Subtract Modeでは使用できません。

fp16_mult_top_invalid

fp16_mult_bot_invalid

1

この信号は、乗算器の演算が明確に定義されておらず、無効な結果を生成するかどうかを示します。

1: 乗算結果が無効で、qNaNにキャストされた場合

0: 乗算結果が無効な数値でない場合。

この信号はAdder or Subtract Modeでは使用できません。

fp16_mult_top_infinite

fp16_mult_bot_infinite

1

この信号は、上位または下位の乗算結果が正または負の無限大であるかどうかを示します。

1: 結果が無限大の場合

0: 結果が正規化された浮動小数点または適切な無限大の範囲にある場合

この信号はExtended形式でのみ使用可能です。

fp16_mult_top_zero

fp16_mult_bot_zero

1

この信号は、上位または下位の乗算結果が正または負のゼロであるかどうかを示します。

1: 結果がゼロの場合

0: 結果がゼロでない場合

この信号はExtended形式でのみ使用可能です。

加算
fp16_adder_overflow 1

この信号は、加算結果が表現可能な最大値よりも大きい値かどうかを示します。

1: 加算結果が表現可能な最大値よりも大きい値であり、結果が無限大にキャストされる場合

0: 加算結果が表現可能な最大値より大きくない場合

この信号はMultiplication Mode Extended形式でのみ使用可能です。

fp16_adder_underflow 1

この信号は、加算結果が表現可能な最小値よりも小さい値かどうかを示します。

1: 加算結果が、表現可能な最小値よりも小さい値であり、結果がゼロにフラッシュされる場合

0: 加算結果が表現可能な最小値よりも大きい場合

この信号はMultiplication Mode Extended形式でのみ使用可能です。

fp16_adder_inexact 1

この信号は、加算結果が正確な表現であるかどうかを示します。

1: 加算結果が次の場合
  • 丸められた値
  • 表現可能な最小値よりも小さい値
  • 表現可能な最大値よりも大きい値

0: 加算結果が上記の基準のいずれにも適合しない場合

この信号はMultiplication Modeでは使用できません。

fp16_adder_invalid 1

この信号は、加算器の演算が明確に定義されておらず、無効な結果を生成するかどうかを示します。

1: 加算結果が無効で、qNaNにキャストされた場合

0: 加算結果が無効な数値でない場合

この信号はMultiplication Modeでは使用できません。

fp16_adder_infinite 1

この信号は、上位または下位の加算結果が正または負の無限大であるかどうかを示します。

1: 結果が無限大の場合

0: 結果が正規化された浮動小数点または適切な無限大の範囲にある場合

この信号はExtended形式でのみ使用可能です。

fp16_adder_zero 1

この信号は、加算結果が正または負のゼロであるかどうかを示します。

1: 結果がゼロの場合

0: 結果がゼロでない場合

この信号はExtended形式でのみ使用可能です。

表 10.  FP32乗算、FP16 Flushed、およびFP16 Bfloat16モードで発生する可能性のある結果の乗算例外処理
入力A 入力B 結果 4

フラグ

オーバーフロー/アンダーフロー/不正確/無効

Normalized Normalized 正規化された値 0/0/0/0
正規化された (丸められた) 値 0/0/1/0
正/負の無限大値 1/0/1/0
非正規値 0/1/1/0
0またはSubnormal (denormal) Normalized 0値 0/0/0/0
Positive/negative infinity Normalized 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) Normalized qNaN値 0/0/0/0
0またはSubnormal (denormal) 0またはSubnormal (denormal) 0値 0/0/0/0
正/負の無限大 0またはSubnormal (denormal) qNaN値 0/0/0/1
Quiet Not A Number (qNaN) 0またはSubnormal (denormal) qNaN値 0/0/0/0
正/負の無限大 正/負の無限大 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/0
Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/0
表 11.  FP32加算/減算、FP16フラッシュ、およびFP16 Bfloat16モードで発生する可能性のある結果の加算例外処理
入力A 入力B 結果 4

フラグ

オーバーフロー/アンダーフロー/不正確/無効

Normalized Normalized 正規化された値 0/0/0/0
正規化された (丸められた) 値 0/0/1/0
正/負の無限大値 1/0/1/0
0値

符号ビット= 0

0/0/0/0
非正規値

この符号は保存されます。

0/1/1/0
0またはSubnormal (denormal) Normalized 入力b 0/0/0/0
正/負の無限大 Normalized 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) Normalized qNaN値 0/0/0/0
0またはSubnormal (denormal) 0またはSubnormal (denormal) 0値

(-0 + (-0)) 方程式の場合、符号ビット = 1です。これ以外の式に対しては、符号ビット = 0となります。

0/0/0/0
正/負の無限大 0またはSubnormal (denormal) 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 0またはSubnormal (denormal) qNaN値 0/0/0/0
正/負の無限大 正/負の無限大

無効なケースに対しては、qNaN値

有効なケースに対しては、正/負の無限大値

無効なケースに対しては、0/0/0/1

有効なケースに対しては、0/0/0/0

有効なケースは次のとおりです。
  • 正の無限大値 + 正の無限大値
  • 負の無限大値 + 負の無限大値
  • 負の無限大値 - 正の無限大値
  • 正の無限大値 - 負の無限大値
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/0
Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/0
表 12.  FP16拡張モードで発生する可能性のある結果の乗算例外処理
入力A 入力B 結果 4

フラグ

無限/ゼロ/不正確/無効

Normalized/Subnormalized Normalized/Subnormalized 正規化/非正規化 0/0/x/0
0値 Normalized/Subnormalized 0値 0/1/0/0
正/負の無限大 Normalized/Subnormalized 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) Normalized/Subnormalized qNaN値 0/0/0/1

仮数 = {100...00}

0値 0値 0値 0/1/0/0
正/負の無限大 0値 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) 0値 qNaN値 0/0/0/1

仮数 = {100...00}

正/負の無限大 正/負の無限大 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/1

仮数 = {100...00}

表 13.  FP16拡張モードで発生する可能性のある結果の加算例外処理
入力A 入力B 結果 4

フラグ

無限/ゼロ/不正確/無効

Normalized/Subnormalized Normalized/Subnormalized 正規化/非正規化 0/0/x/0
0値

符号ビット = 0

0/0/0/0
0値 Normalized/Subnormalized 入力b 0/0/0/0
正/負の無限大 Normalized/Subnormalized 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) Normalized/Subnormalized qNaN値 0/0/0/1

仮数 = {100...00}

0値 0値 0値

(-0 + (-0)) 方程式の場合、符号ビット = 1です。これ以外の式に対しては、符号ビット = 0となります。

0/0/0/0
正/負の無限大 0値 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 0値 qNaN値 0/0/0/1

仮数 = {100...00}

正/負の無限大 正/負の無限大

無効なケースに対しては、qNaN値

有効なケースに対しては、正/負の無限大値

無効なケースに対しては、0/0/0/1

仮数 = {100...00}

有効なケースに対しては、1/0/0/0

有効なケースは次のとおりです。
  • 正の無限大値 + 正の無限大値
  • 負の無限大値 + 負の無限大値
  • 負の無限大値 - 正の無限大値
  • 正の無限大値 - 負の無限大値
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/1

仮数 = {100...00}

4 例外フラグを出力します。例外が入力値にある場合、これらのフラグは変更されません。