阿格纳雾在他的microarch.pdf说
解码变得更有效,因为生成一个融合的D0 op的指令可以进入三个解码器中的任何一个,而生成两个μop的指令只能进入解码器μ。
我知道解码器以x86机器代码作为输入(就像mov eax, eax的汇编程序输出),并生成微操作作为输出。
在解码之前,如何确定哪个解码器应该解码特定的指令?可能是解码前的?
发布于 2016-04-25 13:51:04
Agner的microarch解释了解码,以及多个uop指令会发生什么.
如果多个uop指令不是正在解码的块中的第一个insn,则在该in处结束解码。在下一个循环中,解码从多个uop开始,因此它将命中能够处理多个uop指令的复杂解码器。
这就是为什么3-1-1-1重复模式比3-3-1-1重复模式更能解码的原因.
预解码器只标记指令长度/边界。他们还不知道哪一个密码会被解码成多个uop。这实际上需要对指令进行解码,因此没有办法在指令流周围乱码,将复杂的指令发送到复杂的解码器。
这就是为什么当你在解码器上遇到瓶颈时,指令排序很重要的原因。对于具有uop缓存的CPU,解码性能通常并不重要。如果是的话,你有代码大小的问题。希望很少有足够频繁地运行代码来影响其性能,但很少会在uop缓存中运行。
https://stackoverflow.com/questions/36836900
复制相似问题