英特尔Agilex® 7可变精度DSP模块用户指南

ID 683037
日期 4/11/2023
Public
文档目录

2.2.6. 浮点算术运算的异常处理

英特尔® Agilex™ 7浮点运算支持乘法器和加法器模块的异常处理。

表 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

该信号指示乘法器运算是否定义不清(ill-defined)并产生无效结果。

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

该信号指示加法器运算是否定义不清(ill-defined)并产生无效结果。

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

该信号指示乘法器运算是否定义不清(ill-defined)并产生无效结果。

1:如果乘法器结果无效并转换为qNaN。

0:如果乘法器结果不是一个无效数字。

此信号在Adder or Subtract Mode(加法器或减法器模式)下不可用。

fp16_mult_top_infinite

fp16_mult_bot_infinite

1

此信号指示顶部或底部乘法器结果是一个正无穷还是负无穷。

1:如果结果是无穷大

0:如果结果是规范化浮点数(normalized float)或在适当的无穷大范围内

此信号仅适用于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

该信号指示加法器运算是否定义不清(ill-defined)并产生无效结果。

1:如果加法器结果无效并转换为qNaN。

0:如果加法器结果不是无效数字。

此信号在Multiplication Mode(乘法运算模式)下不可用。

fp16_adder_infinite 1

此信号指示加法器结果是一个正无穷还是负无穷。

1:如果结果是无穷大

0:如果结果是规范化浮点数(normalized float)或在适当的无穷大范围内

此信号仅适用于Extended格式。

fp16_adder_zero 1

此信号指示加法器结果是一个正零或者负零。

1:如果结果为零

0:如果结果不为零

此信号仅适用于Extended格式。

表 10.  FP32 Multiplication、FP16 Flushed和FP16 Bfloat16模式乘法器异常处理的可能结果
Input A Input B 结果 4

标志(Flag)

上溢/下溢/不准确/无效

规格化(Normalized) 规格化 规格化的值 0/0/0/0
规格化(四舍五入)值 0/0/1/0
正/负无穷值 1/0/1/0
非规约(非正常)值 0/1/1/0
0或非规约(非正常) 规格化(Normalized) 0值 0/0/0/0
正/负无穷 规格化(Normalized) 正/负无穷值 0/0/0/0
Quiet Not A Number(qNaN) 规格化(Normalized) qNaN值 0/0/0/0
0或非规约(非正常) 0或非规约(非正常) 0值 0/0/0/0
正/负无穷 0或非规约(非正常) qNaN值 0/0/0/1
Quiet Not A Number (qNaN) 0或非规约(非正常) 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 ddition/Subtraction、FP16 Flushed和FP16 Bfloat16模式加法器异常处理的可能结果
Input A Input B 结果: 4

标志(Flag)

上溢/下溢/不准确/无效

规格化(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或非规约(非正常) 规格化(Normalized) Input b 0/0/0/0
正/负无穷 规格化(Normalized) 正/负无穷值 0/0/0/0
Quiet Not A Number (qNaN) 规格化(Normalized) qNaN值 0/0/0/0
0或非规约(非正常) 0或非规约(非正常) 0值

对于(-0 + (-0))方程式,符号位= 1。对于其他任何方程式,符号位= 0。

0/0/0/0
正/负无穷 0或非规约(非正常) 正/负无穷值 0/0/0/0
Quiet Not A Number(qNaN) 0或非规约(非正常) 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 Extended模式乘法异常处理可能结果
Input A Input B 结果: 4

标志(Flag)

无穷/零/不精确/无效

规格化/非规约化 规格化/非规约化 规格化/非规约化 0/0/x/0
0值 规格化/非规约化 0值 0/1/0/0
正/负无穷 规格化/非规约化 正/负无穷值 1/0/0/0
Quiet Not A Number (qNaN) 规格化/非规约化 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

0值 0值 0值 0/1/0/0
正/负无穷 0值 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

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

Mantissa(尾数) = {100...00}

正/负无穷 正/负无穷 正/负无穷值 1/0/0/0
Quiet Not A Number(qNaN) 正/负无穷 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

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

Mantissa(尾数) = {100...00}

表 13.  FP16 Extended模式加法异常处理可能结果
Input A Input B 结果: 4

标志(Flag)

无穷/零/不精确/无效

规格化/非规约化 规格化/非规约化 规格化/非规约化 0/0/x/0
0值

符号位 = 0

0/0/0/0
0值 规格化/非规约化 Input b 0/0/0/0
正/负无穷 规格化/非规约化 正/负无穷值 1/0/0/0
Quiet Not A Number(qNaN) 规格化/非规约化 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

0值 0值 0值

对于(-0 + (-0))方程式,sign bit = 1。对于其他任何方程式,sign bit = 0。

0/0/0/0
正/负无穷 0值 正/负无穷值 1/0/0/0
Quiet Not A Number (qNaN) 0值 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

正/负无穷 正/负无穷

无效情况下的qNaN值

有效情况下的正/负无穷值

0/0/0/1代表无效情况

尾数= {100...00}

1/0/0/0代表有效情况

有效情况是:
  • 正无穷值 + 正无穷值
  • 夫无穷值+ 负无穷值
  • 负无穷值 - 正无穷值
  • 正无穷值 - 负无穷值
Quiet Not A Number(qNaN) 正/负无穷 qNaN值 0/0/0/1

Mantissa(尾数) = {100...00}

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

Mantissa(尾数) = {100...00}

4 输出异常标志。如果输入值出现异常,则这些标志不会改变。