gpt4 book ai didi

c - 如何以编程方式模拟较低的处理器频率?

转载 作者:太空狗 更新时间:2023-10-29 17:10:16 25 4
gpt4 key购买 nike

我有兴趣在我的 2GHz+ 处理器上以特定频率(如 25MHz)运行程序。我能想到的做这样的事情的唯一方法是使用微秒精度 sleep 函数,但我不确定如何计算线程应该 sleep 多长时间才能匹配特定频率。任何提示或其他想法?我在 X86 Linux 操作系统上用 C 语言执行此操作。

最佳答案

这里有几个问题。这首先是您要模拟的内容。现代处理器的时钟频率为 2Ghz,但流水线指令因此一条单独的指令可能需要 10-30 个时钟才能完成。通过在线程中放置 sleep ,您会破坏管道。第二个是您希望模拟的粒度。您是否需要指令级时序,我们可以通过在函数之间放置一些空间来伪造它吗?

我最后的想法是,您可能不想模拟以 25Mhz 运行的现代处理器,而是模拟嵌入式设备上的某种类型的 ARM 芯片。如果是这种情况,市场上已经有针对这些芯片中的大多数的非常好的模拟器。将您的代码编译为目标芯片的 native 指令,如果可用,它们会使用已经可用的模拟器。


编辑:

因此,据我现在的理解,您想以每秒 25M 次的速度在虚拟处理器上执行一条指令。我可能会尝试的是一种适应性方法。你有很多时间在指令之间“乱搞”。首先在每条指令之间放置一些间距, sleep 可能会起作用。请注意,在每个虚拟时钟开始时尽可能精确的阵列中保持滚动平均值,例如最后 25、100 或 1000 个周期。如果平均值上升到 25Mhz 以上,请开始添加更多空间。如果太慢,请减少空间。

正如我最初所说,在现代处理器上计算一条指令所花费的时间是非常困难的。第一组指令的运行速度可能有点太快或太慢,但像这样的技术应该使它尽可能接近正确的速度,就像可比较的硬件实现上的典型振荡器一样。

关于c - 如何以编程方式模拟较低的处理器频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860658/

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