【发布时间】:2014-10-30 08:31:53
【问题描述】:
我可以使用命名空间 System.Runtime.Caching 来修改 CPU Cache L1、L2 和 L3 的属性和值吗?
msdn.microsoft.com 告诉我命名空间允许在 Windows 中创建新的缓存存储,如虚拟 RAM。
但是,我想使用 CPU 包含的缓存进行编程。 你能告诉我怎么做吗?
感谢您的解决方案!
【问题讨论】:
标签: c# .net windows caching cpu
我可以使用命名空间 System.Runtime.Caching 来修改 CPU Cache L1、L2 和 L3 的属性和值吗?
msdn.microsoft.com 告诉我命名空间允许在 Windows 中创建新的缓存存储,如虚拟 RAM。
但是,我想使用 CPU 包含的缓存进行编程。 你能告诉我怎么做吗?
感谢您的解决方案!
【问题讨论】:
标签: c# .net windows caching cpu
System.Runtime.Caching 提供对高级缓存设施的访问,通常在具有键值对的常规 RAM 上。 (除此之外还有更多用例。)就像你提到的,MSDN 说:
您可以创建自定义缓存提供程序。例如,您可以创建自定义提供程序,将缓存数据存储在数据库、自定义对象或文件系统中,而不是使用默认的内存缓存引擎。
但是 CPU 缓存是一种低级内存,它会自动与 CPU 本身一起使用,以减少对 RAM 的访问;所以它实际上并不意味着被外部应用程序修改。
例如,L1 指令缓存在物理上紧挨着处理核心,它存储机器代码指令,而 .NET 应用程序在 .NET Framework 本身运行之前甚至不会存储为机器代码(或 ngen),这使得低级操作更加困难。
但这并不意味着它们不会受到您的代码的影响。您可以编写高效的代码,使 CPU 以优雅的方式使用其缓存。更多信息请见:How does one write code that best utilizes the CPU cache to improve performance?
【讨论】: