2

在应用程序级别,我使用malloc()和memset(),并在驱动程序中使用get_user_pages_fast()来固定相应的页面。如何检查分配缓冲区的相应页面是否在缓存或主内存中?

在linux中有没有一种方法来确定是否检查这些页面是在缓存还是在主内存中?

+2

如果他们在缓存中,他们也在主内存中。 XY问题?不清楚你想要什么 – Olaf

+0

IIRC,在某些体系结构中,你可以锁定缓存行。在许多体系结构中,您可以预取事物以缓存。但总的来说,缓存是按照定义进行排序的,意味着它是处理器和内存之间的隐藏层,在大多数体系结构中,它完全是硬件控制的,并且不可见。 – MaKo

回答

0

除非您有设备特定的调用,允许您将它们固定到缓存,否则CPU可以自由地将它们移入缓存中,因为它认为合适。即使您可以检查地址是否存在问题存在于缓存中,但在执行驱动程序中的下一条语句时,该信息也不可靠。