对于运行Linux的ARM CPU(在具有Raspbian(32位)的Raspberry Pi 3B +上测试):
“Arm®Cortex®-A53MPCore处理器技术参考手册”中的一章是“缓存大小选择寄存器”和“缓存大小ID”注册”,包括汇编程序指令。
这些汇编器指令已经可以在Linux内核头文件asm / cachetype.h中使用:set_csselr(...)和read_ccsidr(),但是无法在用户模式下调用这些函数,因此我们需要构建一个内核模块以获取/打印值:
linux释放缓存、Makefile:
obj-m += cachesize.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
centos查看内存大小命令、clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
文件cachesize.c:
#include
cpu二级缓存重要吗,#include
#include
#include
MODULE_LICENSE("GPL");
linux缓存自动清理。MODULE_AUTHOR("Abc defg");
MODULE_DESCRIPTION("Find out ARM cache sizes");
MODULE_VERSION("0.01");
static int __init lkm_example_init(void) {
centos查看cpu,// Must run in kernel mode
// Assumptions: L1 (instructions + data), L2 (check your CPU manual)
set_csselr(0);
printk(KERN_INFO "ccsidr L1 data cache = %08x\n", read_ccsidr());
cpu缓存作用、set_csselr(1);
printk(KERN_INFO "ccsidr L1 instruction cache = %08x\n", read_ccsidr());
set_csselr(2);
printk(KERN_INFO "ccsidr L2 unified = %08x\n", read_ccsidr());
处理器缓存、return 0;
}
static void __exit lkm_example_exit(void) {
printk(KERN_INFO "Goodbye, World!\n");
}
module_init(lkm_example_init);
module_exit(lkm_example_exit);
然后:
make
insmode cachesize.ko
rmmod cachesize
dmesg | tail
# Compare numbers to the table "CCSIDR encodings" in the "ARM ... Technical Reference Manual"
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态