開発メモ : L1メモリのアクセスが遅すぎる件

NehalemはcacheはLevel 3までと、より深い階層の構成をとりました。しかし、L1Dのlatencyは3→4 cycleに増えています。また、地味なところで連想数も8→4 wayに落ちています。Cache遅延は、配線遅延によるものが大きく、おかげで微細化とともに増加の一途をたどるのが最近の傾向らしいが、Nehalemの場合は、way数も減っているのに同processのPenrynと比較してもlatencyが大きくなっているのは何故だろう(?) 個人的な観測ではやはりSMTの対応のためか(?) L1Dのlatency増加は痛いよ…(Northwood→Prescottのときを思い出してしまう)。

Nehalem Microarchitectureを考える 〜IDF編〜
http://microboy.seesaa.net/article/92013102.html


公式資料によるとNehalemのL1D(L1 Data Cache)のlatencyは4サイクルということで間違いないようだ。throughputは公開されていない。2ぐらいだと思う。「Cache遅延は、配線遅延によるものが大きく、おかげで微細化とともに増加の一途をたどるのが最近の傾向らしい」は衝撃的だ。今後、L1D latencyはどんどん大きくなっても不思議ではないのか。


L1D latencyが大きくなると、メモリコピー以外なら1サイクルに何命令も実行できるといういまどきのアーキテクチャにとってみると、メモリアクセスは相当の痛手となる。


しかし1サイクルにどの命令とどの命令が並列実行できるか正確なところは公開されていないが、Core 2シリーズで1サイクルで最大5命令と言われている。1サイクルで5命令も実行できるても、L1へアクセスするとそこで4サイクル待たされるなら、それは最大5命令×4サイクル = 最大20命令分の遅延に相当する。L1がこんなに遅いとは!しかも今後、ますます(時間当たりに実行できる命令数に対して相対的に)遅くなりうるとは…。