キャッシュの1つの行にサイズ2^nBがあるとします。シーケンシャルリードバイトで予想されるヒット率はどれくらいですか?キャッシュのヒット率 - 長い一連のバイトを読み取る
私の目には(2^n - 1)/ 2^nです。
しかし、私は正しいかどうかはわかりません。どう思いますか ?
キャッシュの1つの行にサイズ2^nBがあるとします。シーケンシャルリードバイトで予想されるヒット率はどれくらいですか?キャッシュのヒット率 - 長い一連のバイトを読み取る
私の目には(2^n - 1)/ 2^nです。
しかし、私は正しいかどうかはわかりません。どう思いますか ?
はい、シンプルなハードウェア(プリフェッチなしのパイプラインではありません)に適しています。例えば1ミス、64Bキャッシュラインで63ヒット。実際のハードウェア上で
ロード・バッファを使い果たすまで、あなたはミスが表示されますので、さえに次のシングルの問題(非スーパースカラ)のCPU、miss under miss (multiple outstanding misses)は通常、サポートされています。これにより、メモリアクセスもパイプライン化されます。これは、異なるキャッシュラインへのミスがそれぞれのレイテンシを待つのではなく、一度に飛ぶことができる場合に便利です。
実際のハードウェアにもハードウェアのプリフェッチがあります。たとえば、いくつかのユースケースについてインテルのarticle about disabling HW prefetchingを見てください。
HWプリフェッチはほとんどのCPUで1バイト単位のループに追いついている可能性があります。そのため、プリフェッチを正しく行うとL1キャッシュミスはほとんど発生しません。
実際のHWパフォーマンスの詳細については、Ulrich DrepperのWhat Every Programmer Should Know About Memoryおよびx86タグwikiのその他のリンクを参照してください。
あなたは教授や同級生にこのような初心者の質問を聞くことができますか?また、これはx86とは関係がありません。なぜなら、実際のx86ハードウェアは先読みしているからです。 –