【发布时间】:2013-04-25 15:24:42
【问题描述】:
我想将一些代码预取到指令缓存中。代码路径不经常使用,但我需要它在指令缓存中,或者至少在 L2 中,因为在极少数情况下使用它。我提前通知了这些罕见的情况。 _mm_prefetch 是否适用于代码?有没有办法在缓存中获取这个不经常使用的代码?对于这个问题,我不关心可移植性,所以即使 asm 也会这样做。
【问题讨论】:
-
你为什么要这个?听起来你减慢了你为租约编写代码的所有其他部分,就像被使用的部分一样。总的来说,我认为一切都会执行得更慢。
-
@andre 一个函数可能很少使用,但在使用时仍然对延迟非常敏感。
-
@andre 当有“这些罕见情况的提前通知”时,这可能是一种有用的技术。一些处理器有专门的指令。
-
是的,我明白我想要什么。这适用于对延迟非常敏感的操作。想象一下,您正试图从一些传感器数据中识别爆炸,您需要尽快做出反应。谢天谢地,反应非常罕见,但感应/检查等非常频繁。
-
相关:Bring code into the L1 instruction cache without executing it 想要做同样的事情,但要进行微基准测试,而不是在 L1I$ 中保持对延迟敏感的函数热。不过,您可以使用其中一些想法来保持 L1I$ 的准备状态,同时等待您需要做出反应的事件。
标签: c++ low-latency prefetch