x86:超越函数的延迟和吞吐量

x86:超越函数的延迟和吞吐量,x86,latency,throughput,fpu,x87,X86,Latency,Throughput,Fpu,X87,列出各种CPU指令的延迟和吞吐量数字 对于超越函数(FSINetc),一些图列为范围(第C-29页)。脚注4说明: 在动态执行环境中,超越指令的延迟和吞吐量可能会发生很大变化。这些说明仅给出近似值或一系列值 我的问题是:哪些因素会影响这些指令的吞吐量和延迟?我想这个论点的价值是一个因素。是否还有其他指令?除了参数之外,正在运行的其他指令的混合可能会对延迟和吞吐量产生影响。这些指令是微码化的,这意味着它们生成一系列µOp,需要与ALU资源的其他指令竞争;在这种争用情况下,性能可能会受到不利影响。x

列出各种CPU指令的延迟和吞吐量数字

对于超越函数(
FSIN
etc),一些图列为范围(第C-29页)。脚注4说明:

在动态执行环境中,超越指令的延迟和吞吐量可能会发生很大变化。这些说明仅给出近似值或一系列值


我的问题是:哪些因素会影响这些指令的吞吐量和延迟?我想这个论点的价值是一个因素。是否还有其他指令?

除了参数之外,正在运行的其他指令的混合可能会对延迟和吞吐量产生影响。这些指令是微码化的,这意味着它们生成一系列µOp,需要与ALU资源的其他指令竞争;在这种争用情况下,性能可能会受到不利影响。

x87控制字指定计算精度(64位、53位或24位尾数),并且它可能会影响超越函数的性能,尤其是那些内部使用除法或平方根的函数。总的来说,我建议避免使用三角x87指令,因为从设计上看,它们对于大输入值非常不准确。

请告诉我-我正要说同样的话。我要补充的唯一一件事是强调像
FSIN
这样的操作可能通过某种逐次逼近来实现,例如评估一个短系列,这意味着需要内部资源的多个步骤,从而有更多的机会与其他操作“冲突”。