首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在没有缓存的情况下运行程序

在没有缓存的情况下运行程序
EN

Stack Overflow用户
提问于 2014-05-09 05:22:44
回答 1查看 231关注 0票数 2

我们总是在谈论如何更好地使用缓存来加速程序。但是,如果我有一个后台程序,它不是延迟敏感的。我还在同一台计算机上运行了一些对延迟敏感的程序。为了避免后台程序污染延迟敏感型程序的缓存,我有两个选择:

1)使用页面颜色或其他一些技术来“分区”缓存,并让延迟敏感型程序以几种缓存颜色运行,而后台程序从不使用具有这些缓存颜色的内存。<--我知道这是如何工作的,并且对这种方法没有任何疑问。

2)我们可以只将后台程序使用的内存标记为不可缓存吗?换句话说,所有来自后台程序的内存访问都会绕过缓存,这样缓存就不会受到污染?

我知道我们可以通过设置CR3寄存器的第30位来绕过机器上的缓存。但是,我们如何才能让一些程序绕过缓存,而其他程序仍然使用缓存呢?

添加一个问题:是否可以将内存页标记为绕过缓存?换句话说,我们可以将内存页面标记为不可缓存吗?

非常感谢你的见解!

EN

回答 1

Stack Overflow用户

发布于 2018-03-17 05:38:52

您可以使用现代x86处理器的内存类型范围寄存器(MTRR)和/或页属性表(PAT)功能。您可以使用这些功能将某些内存区域标记为不可缓存。特别是,您可以使用UC、UC-或WC内存类型。但是您必须知道延迟不敏感的应用程序使用了哪些内存区域。有关更多信息,请参阅英特尔手册第3卷第11章:内存缓存控制。

在用户模式下,您可以执行的最接近的操作是使用non-temporal accesses (NTAs)。

我知道我们可以通过设置CR3寄存器的第30位来绕过机器上的缓存。

我想你指的是CR0的第30位,而不是CR3。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23552808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档