有没有办法在缓存中保持空升压循环缓冲区的前端热

Is there a way to keep the front of an empty boost circular buffer hot in cache?

本文关键字:循环缓冲 循环 缓冲区 前端 缓存 有没有      更新时间:2023-10-16
我希望在

缓存中保持热度有一个特定的循环缓冲区,但是它可以长时间未使用。 这会导致缓存未命中。

我有一个空闲循环,可以负责保持位置热,但我看不到仅使用公共接口而不实际插入/删除项目的方法。

是否有任何操作,使用公共接口,当循环缓冲区为空时,将使插入点在缓存中保持热?

您可能希望通过完全执行它并尽可能短地停止提交它的效果来定期预热您的完整快速路径

如果您可以抓住指向容器前面的指针,则可以使用它上的__builtin_prefetch将其放入缓存中。或者,pushpop元素。

您可能希望研究如何使用 CAT(缓存分配技术(。目前我不确定它在哪里,但看看 Linux 在 2016 年 7 月的位置 https://lwn.net/Articles/694800/。

CAT 是英特尔的东西,用于分离缓存片段并将它们专用于不同的目的。分配了一段缓存的线程无法逐出属于其他片段的数据,尽管我相信它们仍然可以利用读取它。