C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在c / c中分配CPU缓存中的静态内存:是否可能?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有可能在cpu缓存中显式创建静态对象,以确保这些对象始终保留在缓存中,从而不会从达到RAM或上帝禁止 – 硬盘虚拟内存中获得性能损失?

我特别感兴趣的是针对大型L3共享缓存,而不是针对L1,L2,指令或任何其他缓存,只是存储器中最大的片上chub.

并且为了澄清与我在发布之前搜索的其他线程的区别,我对整个缓存私有化不感兴趣,只是一小部分类的区域.

解决方法

不可以.缓存不可寻址,因此您无法在其中分配对象.

你想要问的是:在虚拟内存中分配了空间,我可以确保总是获得缓存命中吗?

这是一个更复杂的问题,答案是:部分.

通过使用操作系统的内存管理API(例如mlock())将区域标记为不可分页,您绝对可以避免被换出到磁盘.或者从“非分页池”开始分配.

我不相信有一个类似的API将内存固定到cpu缓存中.即使您可以为该块保留cpu缓存,也无法避免缓存未命中.如果另一个核心写入内存,将转移所有权,并且您将遭受缓存未命中和相关的总线传输(可能是主内存,可能是另一个内核的缓存).

正如Mathew在他的评论中提到的那样,您还可以强制缓存未命中与管道中的其他有用工作并行发生,以便在需要时数据位于缓存中.

大佬总结

以上是大佬教程为你收集整理的在c / c中分配CPU缓存中的静态内存:是否可能?全部内容,希望文章能够帮你解决在c / c中分配CPU缓存中的静态内存:是否可能?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。