有没有办法在缓存中保持空升压循环缓冲区的前端热
Is there a way to keep the front of an empty boost circular buffer hot in cache?
我希望在
缓存中保持热度有一个特定的循环缓冲区,但是它可以长时间未使用。 这会导致缓存未命中。
我有一个空闲循环,可以负责保持位置热,但我看不到仅使用公共接口而不实际插入/删除项目的方法。
是否有任何操作,使用公共接口,当循环缓冲区为空时,将使插入点在缓存中保持热?
您可能希望通过完全执行它并尽可能短地停止提交它的效果来定期预热您的完整快速路径。
如果您可以抓住指向容器前面的指针,则可以使用它上的__builtin_prefetch
将其放入缓存中。或者,push
并pop
元素。
您可能希望研究如何使用 CAT(缓存分配技术(。目前我不确定它在哪里,但看看 Linux 在 2016 年 7 月的位置 https://lwn.net/Articles/694800/。
CAT 是英特尔的东西,用于分离缓存片段并将它们专用于不同的目的。分配了一段缓存的线程无法逐出属于其他片段的数据,尽管我相信它们仍然可以利用读取它。
相关文章:
- 嵌套的 for 循环不循环通过第二个数组
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 编写按初始值循环的循环的更好方法是什么
- 如何在重复循环中循环遍历 std::vector
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 自定义对象构造函数在循环外部循环
- 为什么在我的程序中的第二个循环时,当它在循环之前循环时不起作用
- Qt有循环缓冲吗?
- 而循环比循环更有效.可能是什么原因
- 如何在循环中循环访问两个向量
- C++ for 循环继续循环,即使它不应该循环
- 当使用文件中的getline时,循环仅循环一次
- C 数组,如果循环.如果循环忽略值并在输入值时给出错误的行
- 对于循环(内部循环时)被忽略
- 对于循环,循环次数比它必须的次数多一次
- 我的循环保持循环,并导致程序崩溃
- 数组循环在循环结束后输出垃圾
- C++ do-while 循环不循环
- C++ AMP,用于循环parallel_for_each循环
- 调用linearize后奇怪的boost循环缓冲行为