问题描述
|
我想知道C#中是否有实现的东西,可以访问CPU缓存。这对我来说很有趣,但是目前我与cpu缓存无关。所以我想知道这是系统限制的访问还是对用户也适用。我说的是L1 / L2或它们的名字!
很高兴听到您的评论,外部链接以及一些代码片段!谢谢。
解决方法
没有编程语言可以直接访问CPU缓存。读写缓存是由硬件自动完成的。无法编写将缓存视为任何种类的单独实体的指令。读取和写入缓存是所有接触内存的指令的副作用。
, 对于此类活动,C#的级别有点高。除非您要调用其他用C / ASM编写的库=)当然,使用高速缓存通常是一个晦涩难懂的主题,并且在大多数情况下,它完全由硬件控制。另一方面,关于SO的一些非常有趣的问题/讨论可能已经遇到。
C ++缓存感知编程
如何在x86 Windows中刷新CPU缓存?
无论如何,尽管有这些限制,您仍然可以预测(某种程度上)缓存将要做什么,并利用它来处理特殊的应用程序。
,
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\");