Rob*_*tin 5 hardware virtualization rdtsc
我正在研究RDTSC,并了解它是如何虚拟化虚拟机,如VirtualBox和VMWare.为什么Intel/AMD会遇到虚拟化此指令的麻烦?
我觉得它可以很容易地用陷阱来模拟它并不是一个超常用的指令(我测试过并且在禁用硬件RDTSC虚拟化的虚拟机中一般用法没有明显的减速).
但是,我知道英特尔/ AMD不会把这个指令添加到虚拟化硬件中,除非能够非常快速地执行它是很重要的.
有谁知道为什么?
通常使用RDTSC来获得细粒度的定时信息,其中虚拟化陷阱的开销非常大.最常见的用途是与它们之间的代码量小2个RDTSC指令,取时间的差作为经过时间(周期数)为码序列.因此,即使管道排水/冲洗的开销也非常显着.
此外,由于所有指令都是连续运行的计数器,因此虚拟化很容易 - 硬件只需要允许在VM上下文切换上保存/重新加载计数器值,而不是RDTSC指令本身的任何特殊值.