Мы знаем, что nop занимает один тактовый цикл.
Современный процессор можно рассматривать как конвейер этапов; где внешний интерфейс мог бы извлекать и декодировать несколько команд параллельно и помещать полученные микрооперации в буфер, где они ожидают удовлетворения своих зависимостей (до того, как они будут приняты исполнительным блоком, где несколько микроопераций могут быть выполнены в одновременно несколькими исполнительными блоками).
A NOP
не имеет микроопераций - он просто отбрасывается интерфейсом. Это не стоит 1 цикл.
Но результат не равен 1.
Вероятно, требуется 14 или 16 циклов для инструкций, которые генерирует компилятор, чтобы справиться с выходы первого rdtsc
, затем готовятся ко второму rdtsc
, затем ко второму rdtsc
.
Обратите внимание, что rdtsc
, вероятно, считает циклы таймера с фиксированной частотой, который не имеет ничего Текущая (переменная) тактовая частота процессора; поэтому 14 или 16 «временных циклов» могут быть (например, 7 или 8 циклов ЦП.