Performance 多uop指令的x86解码

Performance 多uop指令的x86解码,performance,x86,micro-optimization,Performance,X86,Micro Optimization,: 解码变得更有效,因为生成 一个融合的μop可以进入三个解码器中的任何一个,而 生成两个μops的指令只能发送到解码器D0 我知道解码器以x86机器代码作为输入(就像来自moveax、eax的汇编程序输出),并产生微操作作为输出 在解码之前,如何确定哪个解码器应该解码特定指令?可能是预解码器?Agner的Microoch PDF解释了解码,以及多uop指令会发生什么 如果多uop指令不是被解码块中的第一个insn,则解码在该insn处结束。在下一个周期中,解码从多uop insn开始,因此它将

:

解码变得更有效,因为生成 一个融合的μop可以进入三个解码器中的任何一个,而 生成两个μops的指令只能发送到解码器D0

我知道解码器以x86机器代码作为输入(就像来自
moveax、eax
的汇编程序输出),并产生微操作作为输出


在解码之前,如何确定哪个解码器应该解码特定指令?可能是预解码器?

Agner的Microoch PDF解释了解码,以及多uop指令会发生什么

如果多uop指令不是被解码块中的第一个insn,则解码在该insn处结束。在下一个周期中,解码从多uop insn开始,因此它将命中能够处理多uop指令的复杂解码器

这就是为什么3-1-3-1重复模式比3-3-1-1重复模式解码效果更好

预解码器仅标记指令长度/边界。他们还不知道哪个INSN将解码为多个UOP。这实际上需要对指令进行解码,因此无法对指令流进行洗牌以将复杂指令发送到复杂解码器


这就是为什么当你在解码器上遇到瓶颈时指令排序很重要。对于具有uop缓存的CPU,解码性能通常并不重要。如果是,则存在代码大小问题。希望很少有代码能够经常运行以保证其性能,但很少有代码在uop缓存中不热。

Agner的Microach PDF解释了解码以及多uop指令的情况

如果多uop指令不是被解码块中的第一个insn,则解码在该insn处结束。在下一个周期中,解码从多uop insn开始,因此它将命中能够处理多uop指令的复杂解码器

这就是为什么3-1-3-1重复模式比3-3-1-1重复模式解码效果更好

预解码器仅标记指令长度/边界。他们还不知道哪个INSN将解码为多个UOP。这实际上需要对指令进行解码,因此无法对指令流进行洗牌以将复杂指令发送到复杂解码器

这就是为什么当你在解码器上遇到瓶颈时指令排序很重要。对于具有uop缓存的CPU,解码性能通常并不重要。如果是,则存在代码大小问题。希望很少有代码经常运行以使其性能发挥作用,但很少有代码在uop缓存中不热