現代のプロセッサは、1コアで1サイクルあたり多数の命令を実行する能力を持っています。実際に1サイクルあたり多数の命令を実行するためには、プロセッサが分岐を予測する必要があります。私は長年、現代のCPUが分岐を予測する驚異的な能力を持っていることを指摘してきました。
小さいデータセットでテストすると、現実のデータでは再現されない意外な結果が得られることがあるため、ベンチマークが難しくなります。
私の定番ベンチマークは次のような関数です:
while (howmany != 0) {
val = generate_random_value()
if(val is odd) write to buffer
decrement howmany
}
プロセッサは分岐(if 句)を予測しようとします。ランダムな値を使用するため、プロセッサは2回に1回は予測を誤るはずです。
しかし、同じランダム値を常に使用してベンチマークを複数回繰り返すと、プロセッサは分岐を学習します。プロセッサはどれだけの分岐を学習できるのでしょうか? 3つの最近のプロセッサでテストしました。
- AMD Zen 5プロセッサは30,000の分岐を完全に予測できます。
- Apple M4プロセッサは10,000の分岐を完全に予測できます。
- Intel Emerald Rapidsは5,000の分岐を完全に予測できます。
またしてもIntelには失望させられました。AMDはこのベンチマークで非常に優れた結果を出しています。
Published by


0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.