X86 读取寄存器还是从内存中读取更昂贵?

X86 读取寄存器还是从内存中读取更昂贵?,x86,ram,cpu-registers,X86,Ram,Cpu Registers,我想知道:在x86体系结构上,从寄存器读取值或从RAM读取值需要更多的时间/CPU周期吗?我会假设RAM,因为CPU必须与某种地址/内存总线接口,而它通过寄存器从硬编码区域读取。这是正确的,还是需要考虑其他因素?CPU上存在寄存器,必须通过总线从芯片读取内存。因此寄存器应该总是更快。CPU上存在寄存器,必须通过总线从芯片读取内存。因此寄存器应该总是更快。L1d缓存也存在于每个CPU内核中,但读取寄存器的速度更快(延迟更低,UOP更少),不必通过加载端口。注意,这是标记为x86的,所有x86 CP

我想知道:在x86体系结构上,从寄存器读取值或从RAM读取值需要更多的时间/CPU周期吗?我会假设RAM,因为CPU必须与某种地址/内存总线接口,而它通过寄存器从硬编码区域读取。这是正确的,还是需要考虑其他因素?

CPU上存在寄存器,必须通过总线从芯片读取内存。因此寄存器应该总是更快。

CPU上存在寄存器,必须通过总线从芯片读取内存。因此寄存器应该总是更快。

L1d缓存也存在于每个CPU内核中,但读取寄存器的速度更快(延迟更低,UOP更少),不必通过加载端口。注意,这是标记为x86的,所有x86 CPU都有缓存已经超过25年了。(不包括基于8086的微控制器。)但是,读取某些特殊寄存器(如控制寄存器、调试寄存器或MSR)可能会较慢。每个CPU内核中也存在L1d缓存,但读取寄存器的速度更快(延迟更低,UOP更少),不必通过加载端口。注意,这是标记为x86的,所有x86 CPU都有缓存已经超过25年了。(不包括基于8086的微控制器。)然而,读取一些特殊寄存器(如控制寄存器、调试寄存器或MSR)可能会较慢。它总是尽可能使用寄存器,而不是内存。如果这个问题的答案对您来说并不明显,请转到.Related:-x86中的read和其他性能链接。对于寄存器比L1d缓存更快的规则,x86也不例外。请查看编译器生成的asm。它总是尽可能使用寄存器,而不是内存。如果这个问题的答案对您来说并不明显,请转到.Related:-x86中的“读取”和其他性能链接。对于寄存器比L1d缓存更快的规则,x86也不例外。