私は理論的にキャッシュフレンドリーなアルゴリズムであることが証明されたコードをテストするためにperfを使用しています。キャッシュミス対命令比は、キャッシュミス比に対するキャッシュ参照と比較して、キャッシュ性能の指標として優れていますか?
this articleによれば、命令へのキャッシュミスはキャッシュ性能の優れた指標です。
命令に対するキャッシュミスの割合は、どのようにキャッシュが正常に機能しているかを示します。比率が低いほど良い。この の例では、比率は1.26%(6,605,955キャッシュミス/ 525,543,766 命令)です。 RAMメモリとキャッシュアクセスとの間のコスト差が比較的大きいため(20サイクル) キャッシュミス率のわずかな改善でさえ、 のパフォーマンスを大幅に向上させることができます。 1命令あたりのキャッシュミス率が5%を超える場合は、さらに調査する必要があります( )。
しかし私はこのようなPERF実行すると:
perf stat -B -e cache-references,cache-misses,instructions ./td 1.txt 2.txt
Performance counter stats for './td 1.txt 2.txt':
93,497,101 cache-references
56,452,246 cache-misses # 60.379 % of all cache refs
8,115,626,200 instructions
2.509309040 seconds time elapsed
をだから、キャッシュミス率にキャッシュ参照の上、より焦点を当てこの記事で提案されているものの代わりに。
キャッシュ・ミスとキャッシュ・レシオの比は60%と非常に悪いと思われます。これは、アプリケーションがキャッシュにアクセスする時間の60%を意味します。一方、キャッシュミスと命令の比率はわずか0.6%です。
私はこれからどうしたらいいのか分かりません。どの比率を最適化する必要がありますか?