ВМ должны иметь возможность иметь отдельные TSC, потому что они запускаются в разное время.У физического ЦП есть только один, поэтому необходимо что-то, чтобы хотя бы получить индивидуальные смещения TSC для каждой виртуальной машины.
Кроме того, поскольку виртуальные машины не владеют базовыми физическими ЦП полностью, то есть они незапускаться на них все время, их TSC также должны как-то отражать периоды «вкл / выкл», и желательно, чтобы они не менялись резко в значении по сравнению с реальным временем, которое виртуальные машины должны по-прежнему получать прямо от хост-ОСпотому что есть много программного обеспечения, которое не готово к виртуализации и может сломаться, когда цифры слишком отключены.
Я думаю, что это причины, по которым RDTSC виртуализирован.Но что бы вы ни делали, выполнить противоречивые требования сложно, и они усложняют ситуацию.Вы не можете скрыть виртуализацию и одновременно запускать виртуальные машины на почти родной скорости.Есть компромиссы, и некоторые вещи должны уступить.