最新のマルチコア プラットフォームでは、メモリ帯域幅が制限されたアプリケーションの並列パフォーマンスは、多くの場合、コアの数に応じて適切にスケーリングされません。通常、ある程度のコア数まで高速化が見られますが、それ以降は性能が飽和します。総合的な例として、有名なSTREAM ベンチマークがあります。これは、達成可能なメモリ帯域幅、つまり飽和点でのメモリ帯域幅を報告するためによく使用されます。
ピーク メモリ帯域幅が 42.7GB/s (DDR3-1333) の単一の Xeon E5-2680 での STREAM ベンチマーク (Triad) の次の結果を考慮してください。
1 core 16 GB/s
2 cores 30 GB/s
3+ cores 36 GB/s
STREAM は 1 コアから 2 コアまで適切にスケーリングしますが、3 コアを超えると、パフォーマンスはほぼ一定になります。
私の質問は、単一の CPU コアで達成できるメモリ帯域幅を決定するものは何ですか? この質問は明らかに範囲が広すぎるため、上記のアーキテクチャに絞り込みます: E5-2680 の仕様から、またはハードウェア カウンターなどを見て、1 スレッドの STREAM で 16 GB/s が得られることをどのように予測できますか? ?