nop

最内ループ中のあるロード命令の後にnop命令を一つ入れるか入れないかだけで性能が10%も変わる例を発見して鬱になる。しかも、nop命令を入れたほうが速くなるのだ。コードが仮想メモリ空間に配置されるアドレスも、nop命令のぶんを除いて完全に同一であることを確認している。命令キャッシュのせいとは考えづらい。UltraSPARC III内部の命令ディスパッチャでグルーピングが変わることが原因としか思えんが……。

こんなんじゃ、ウチらが「コンパイラの最適化で性能が5%上がりました」とか言ってるのは一体全体何なんだ、という感じだ。

CPUメーカーは自社製CPUについてクロックレベルの完全なソフトウェアシミュレータをリリースしてほしい(無理だけど)。CPU内部で何が起きてるのかさっぱりわからん。それとも実機でJTAGとか使うべきなのか。