我想在xen-4.5.0上做一些内存管理,并且对MTRR(内存类型范围注册表)有些困惑。当我试图获得IA32_MTRRCAP寄存器的值时,我得到了值1d0a。为什么我在IA32_MTRRCAP寄存器的保留位上得到1?
但是,在2016年12月发布的英特尔手册中,IA32_MTRRCAP寄存器的位12-63全部标记为保留,而我在位12上得到1。为什么?与此同时,当我试图从MTRR读取内存信息时,我找不到它们中的大部分内存地址。
我试过这些与英特尔Skylake处理器的几台机器上,他们的情况是一样的。但在配备Intel Haswell处理器的机器上,IA32_MTRRCAP的价值并不奇怪,我也可以从MTRR读取所有内存信息。
Skylake中MTRRs的编程方式是否改变了?我只能用这种方式猜测。
感谢。