gpt4 book ai didi

c - 编写一段代码,该代码在新 cpu 上比在旧 cpu 上运行的 cpu 周期更多

转载 作者:行者123 更新时间:2023-11-30 18:35:47 27 4
gpt4 key购买 nike

我正在寻找一个在迁移到较新的CPU时会导致性能下降的代码。我知道这在理论上是可能的,但我很难找到可行的示例。

一些限制:

  • 它应该是单线程的

  • 它应该针对 i386 或 oldset x86_64 进行编译,或者是手写汇编

  • 如果编译,它应该静态链接到所有库,以便 libc 无法在运行时加载库的优化版本

  • 时钟周期可以近似为执行时间/最大频率。或者可以使用一些性能工具。这是为了避免某些 RISC 代码在 4GHz 奔腾 4 上运行速度极快。

我目前的想法是用分支重载指令发出缓冲区,但不知道如何有效地实现它。欢迎其他方法。降低性能的方法越多越好。

最佳答案

Pentium 4 有一个双泵 ALU,因此几乎任何简单的相关 ALU 操作链都将在 P4 上每个周期执行两个操作,但在所有最新架构上每个周期执行一个操作。

例如:

top:
or eax, eax
or eax, eax
or eax, eax
or eax, eax
...
sub ecx, 1
jnz top
除此之外,(很多)较旧的架构具有单周期内存访问,后来在少数周期内进行访问,而今天的内存访问是数百个周期。因此,任何依赖于内存延迟的事情通常都会在旧架构上以更少的周期运行。简单的例子是指针追逐循环。

与错误预测的分支类似:旧架构的短(呃)管道意味着错误预测的分支在周期中的惩罚更短。这种惩罚可能在 P4 左右达到顶峰,然后下降到 15 个周期左右,此后一直相对稳定。

关于c - 编写一段代码,该代码在新 cpu 上比在旧 cpu 上运行的 cpu 周期更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com