Выполняясь на современном процессоре (AMD Phenom II 1090T), сколько тактов часов потребляет следующий код, скорее всего : 3 или 11?
label: mov (%rsi), %rax
adc %rax, (%rdx)
lea 8(%rdx), %rdx
lea 8(%rsi), %rsi
dec %ecx
jnz label
Проблема в том, что когда я выполняю много итераций такого кода, время от времени результаты меняются примерно на 3 ИЛИ 11 тиков на итерацию. И я не могу решить, «кто есть кто».
UPD Согласно Таблице задержек инструкций (PDF) , мой фрагмент кода занимает не менее 10 тактовых циклов на микроархитектуре AMD K10. Следовательно, невозможность 3 тактов на итерацию вызвана ошибками в измерениях.
РЕШЕНО
@Atom заметил, что тактовая частота не постоянна в современных процессорах . Когда я отключил в BIOS три параметра - Повышение производительности ядра
, Поддержка AMD C1E
и AMD K8 Cool & Quiet Control
, потребление моих «шести инструкций» стабилизировалось на ] 3 такта : -)