gpt4 book ai didi

caching - 如何确保代码运行时不会因缓存而导致执行时间发生变化?

转载 作者:行者123 更新时间:2023-12-02 12:15:57 25 4
gpt4 key购买 nike

在具有硬实时约束的嵌入式应用程序(在 32 位处理器上用 C 语言编写)中,关键代码(特别是中断)的执行时间需要保持不变。

如何确保代码执行中不会引入时间可变性,特别是由于处理器的缓存(无论是 L1、L2 还是 L3)?

请注意,我们担心缓存行为,因为它对执行速度有巨大影响(有时与访问 RAM 相比超过 100:1)。由于特定处理器架构而引入的可变性远不及缓存的大小。

最佳答案

如果您能够接触到硬件,或者与能够接触到硬件的人合作,则可以关闭缓存。有些 CPU 有一个引脚,如果连接到地而不是电源(或者可能是其他方式),将禁用所有内部缓存。这将提供可预测性,但不能提供速度!

如果做不到这一点,也许可以在软件代码的某些地方编写故意用垃圾填充缓存的方法,因此接下来发生的任何事情都可以保证是缓存未命中。如果做得好,这可以提供可预测性,并且也许只能在某些地方完成,因此速度可能比完全禁用缓存更好。

最后,如果速度确实很重要 - 仔细设计软件和数据,就像在古代 8 位 CPU 的编程中一样 - 保持其足够小以使其全部适合 L1 缓存。我总是对现在的板载缓存比过去(十年前)小型计算机上的所有 RAM 还要大感到惊讶。但这将是一项艰苦的工作,需要聪明才智。祝你好运!

关于caching - 如何确保代码运行时不会因缓存而导致执行时间发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69049/

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