我想知道C#中是否存在允许访问CPU缓存的内容。这对我来说很有趣,但我目前没有与cpu缓存有关。所以我想知道它是否是一个系统受限访问,或者它也是用户可用的。我在谈论L1 / L2或其他任何东西!
很高兴听到您的评论,外部链接以及一些代码片段!感谢。
答案 0 :(得分:10)
没有编程语言可以直接访问CPU缓存。读取和写入缓存是由硬件自动完成的;没有办法编写将缓存视为任何类型的独立实体的指令。对缓存的读取和写入对所有触摸存储器的指令都是副作用。
答案 1 :(得分:4)
对于这种类型的活动,C#有点过高。除非你调用一些用C / ASM编写的其他库=)当然,使用缓存通常是一个相当模糊的主题,并且在很大程度上它完全由硬件控制。另一方面,你可能已经遇到过一些非常有趣的问题/讨论。
C++ cache aware programming
How can I do a CPU cache flush in x86 Windows?
无论如何,尽管存在这些限制,您仍然可以(稍微)预测缓存将要执行的操作,并将其用于特殊应用程序。
答案 2 :(得分:0)
public static string GetComponent(string hwclass, string syntax)
{
var mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
foreach (var o in mos.Get())
{
var mj = (ManagementObject)o;
CpuModel = Convert.ToString(mj[syntax]);
}
return CpuModel;
}
private string L2CacheSize = HardwareManagement.GetComponent("Win32_Processor", "L2CacheSize");
private string L3CacheSize = HardwareManagement.GetComponent("Win32_Processor", "L3CacheSize");