Memory management 嵌套分页和阴影分页中的内存事务数

Memory management 嵌套分页和阴影分页中的内存事务数,memory-management,virtual-machine,virtualization,kvm,Memory Management,Virtual Machine,Virtualization,Kvm,对于简单的说明,请说 MOV memorylocationA, memorylocationB 假设我正在将值从一个寄存器移动到另一个寄存器 如果我们考虑一个TLB缺失,我们应该实际通过页面,TabLSi意味着最坏的情况, 嵌套页表的内存访问数为48。i、 e,1个用于访问CR3的内存访问,1个用于访问页表,20个用于通过影子页进行翻译的访问,1个用于访问指定的内存位置,1个用于访问实际物理地址,因此每次内存访问将为1+1+1+20+1。在这种情况下,我们正在访问寄存器BX和AX,因此总的转

对于简单的说明,请说

MOV memorylocationA, memorylocationB 
假设我正在将值从一个寄存器移动到另一个寄存器

如果我们考虑一个TLB缺失,我们应该实际通过页面,TabLSi意味着最坏的情况,

嵌套页表的内存访问数为48。i、 e,1个用于访问CR3的内存访问,1个用于访问页表,20个用于通过影子页进行翻译的访问,1个用于访问指定的内存位置,1个用于访问实际物理地址,因此每次内存访问将为1+1+1+20+1。在这种情况下,我们正在访问寄存器BX和AX,因此总的转换数将为42+24=48。 因为在NPT中,来宾页面表中的每个翻译都要经过VMM页面表中额外的4个翻译

现在,如果我们使用扩展页表进行同样的操作,那么内存访问的数量将是 1用于CR3,1用于页表,1用于指定的memorylocation,4个内存转换,然后使用EPT进行相同的转换,因此另一个1+1+4=7。因此,在本例中,由于使用了这两个页表,来宾操作系统总共需要14次内存访问7次,VMM需要另外7次。总共28个,因为我们将访问两个内存位置a和B

这是我的理解。但是他们不应该是一样的吗?我有研究表明,EPT是由Intel和NPT由AMD引入的,它们的性能或多或少是相同的

那么,在最坏的情况下,如果使用NPT,上述指令将需要48次内存访问,如果使用EPT,则需要28次内存访问,这是真的吗

更新1:更改说明以保持清晰。假设我正在将寄存器上的值移动到另一个寄存器中。
Update2:假设对于每个内存转换,我们访问页面目录指针、页面目录、页面表和4k页面

您的示例说明无效。另外,我不认为访问CR3是一种内存访问——CR3是CPU中的一个寄存器。页表访问也可能需要几个内存引用才能通过页表的几个层。。。我不知道确切的数字,但我知道在TLB和所有缓存级别中丢失的最坏情况访问是一件坏事…@twalberg:很抱歉造成混淆,我已经更新了指令。关于CR3,是的,它是一个寄存器,但我们应该访问它,以了解页面控制器指针在内存中的位置。CR3指向页面目录指针所在的内存位置,因此我将其计算为内存访问。如何使寄存器上的TLB未命中以进行寄存器移动?@AndrewMedico:我的意思是,我正在访问两个内存位置,这是一条示例指令。