Performance x86/64 vs ARM缓存未命中/分支预测失误惩罚

Performance x86/64 vs ARM缓存未命中/分支预测失误惩罚,performance,x86,arm,cpu,cpu-architecture,Performance,X86,Arm,Cpu,Cpu Architecture,ARM和x86/64处理器的缓存未命中惩罚和分支预测失误惩罚之间是否存在任何重大或根本性差异 我知道里程数可能因具体型号和机器的整体配置而异。但是仍然想知道是否有什么。基本上,~32MHz 3级Cortex-M0管道的工作方式与~3GHz 40级NetBurst P4管道的工作方式相同-如果下一条指令/数据还不可用,您只需等待它出现 实际的周期计数、计时和其他一切都将取决于许多不同的微体系结构/系统/实现细节,甚至在单个体系结构中也会有很大的差异(例如,将所述NetBurst P4与486DX-

ARM和x86/64处理器的缓存未命中惩罚和分支预测失误惩罚之间是否存在任何重大或根本性差异


我知道里程数可能因具体型号和机器的整体配置而异。但是仍然想知道是否有什么。基本上,~32MHz 3级Cortex-M0管道的工作方式与~3GHz 40级NetBurst P4管道的工作方式相同-如果下一条指令/数据还不可用,您只需等待它出现


实际的周期计数、计时和其他一切都将取决于许多不同的微体系结构/系统/实现细节,甚至在单个体系结构中也会有很大的差异(例如,将所述NetBurst P4与486DX-40进行比较,或将所述Cortex-M0与X-Gene 2进行比较)。

AFAIK否,因为这些都是已知的优化对象(理论上讲).就在x86/64处理器实现和更重要的主板实现中,您的结果会有所不同,因此除了这些之外,对其他体系结构的担心是毫无意义的。arm的实现将比x86之间的差异更大,因为arm只覆盖芯片的一小部分,内存接口是其他人的IP,与外围设备和其他总线的仲裁也是如此。IIRC,对于像Intel Haswell这样的现代CPU,从uop缓存运行时,预测失误的惩罚大约为15个周期,19当指令直接来自解码器时。预测失误的惩罚不是整个管道的长度,而是到达可以检测到预测失误的点。(而且现代Intel CPU在检测到预测失误时不需要刷新的内容方面非常聪明。)您可以在以下位置找到许多x86微阵列的数字。