最新のプロセッサ (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)に よると、私のコードは AMD K10 マイクロアーキテクチャで少なくとも 10 クロック サイクルかかります。したがって、反復ごとに不可能な 3 ティックは、測定のバグが原因です。
解決済み@Atomは、最近のプロセッサ
ではサイクル周波数が一定ではないことに気付きました。BIOSで3つのオプションを無効にするCore Performance Boost
とAMD C1E Support
、AMD K8 Cool&Quiet Control
「6つの命令」の消費が3クロックティックで安定しました:-)