小编ale*_*791的帖子

如何获取大页的物理地址

我需要从用户空间获取大页面(2 MB)的物理地址。我设法从页面映射中获取正常 4 KB 页面的物理地址,如https://shanetully.com/2014/12/translated-virtual-addresses-to-physcial-addresses-in-user-space/#codeprocpidpagemapcode所示但是我不明白应该如何使用页面映射来获取大页面的物理地址。一个大页的页框号在pagemap中是如何表示的?任何参考文献,尤其是任何代码段将不胜感激。

c linux linux-kernel huge-pages

5
推荐指数
1
解决办法
3051
查看次数

根据Intel的说法,我的缓存应该是12路的,但应该是24路的。

根据“英特尔64和IA-32架构优化参考手册”,2012年4月,第2-23页

LLC数据阵列中保留的数据的物理地址通过散列函数分布在缓存片之间,从而使地址均匀分布。高速缓存块中的数据阵列可以具有对应于0.5M / 1M / 1.5M / 2M块大小的4/8/12/16方式。但是,由于从软件的角度来看,缓存块之间的地址分配,因此它不会显示为普通的N路缓存。

我的计算机是一个2核Sandy Bridge,具有3 MB,12路组关联LLC缓存。但是,这似乎与英特尔的文档不一致。根据数据,看来我应该有24路。我可以想象内核/缓存切片的数量正在发生变化,但是我还不太清楚。如果我有2个内核,因此每个切片有2个1.5 MB的高速缓存片,那么根据Intel的说明,每个高速缓存片将有12种方式,这似乎与我的CPU规格不一致。有人可以向我澄清吗?

如果我想逐出整个缓存行,是否需要以128 KB或256 KB的步幅访问缓存?实际上,这就是我要实现的目标。

任何建议的读物都非常欢迎。

performance intel cpu-architecture micro-optimization cpu-cache

4
推荐指数
1
解决办法
553
查看次数