C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

キャッシュのヒット率が低くなる理由?

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■86339 / inTopicNo.1)  キャッシュのヒット率が低くなる理由?
  
□投稿者/ くまファン (1回)-(2018/01/20(Sat) 23:52:22)

分類:[Windows 全般] 

CPUには2次キャッシュや1次キャッシュメモリがあります。
どんな処理によって、キャッシュのヒット率が低くなるのでしょうか。

ご教授お願い致します

引用返信 編集キー/
■86340 / inTopicNo.2)  Re[1]: キャッシュのヒット率が低くなる理由?
□投稿者/ 774RR (583回)-(2018/01/21(Sun) 08:20:18)
「よりヒットさせる」にはどうすればよいか、という質問であるものと解釈する。
で、キャッシュシステムについてはどれくらい知ってるの?それによって答えられる範囲が変わるけど・・・

キャッシュは「連続したアドレス」を一括管理することで高速性を維持している。
連続したアドレスを使う=アドレス下位ビットをタグに転用できる。
今の Core i7 とかだと
- 1エントリのサイズは 64 byte
- L1 キャッシュ自体のサイズはコード 32KiB データ 32KiB

なので、キャッシュに最大ヒットする条件は
(64byte 境界に整合させた上で)
32KiB 内でループするコードが 32KiB 以下のデータをアクセスすれば L1 キャッシュに最大ヒットする、だろう。
逆にいうと、それ以外の条件ではキャッシュヒットミスする可能性が高くなるということ。
- 64byte 境界に整合していないとか
- ループサイズが 32KiB 超過であるとか
- ループ内でアクセスしたいデータサイズが 32KiB 超過であるとか

プログラマが工夫することでできる範囲では「アドレス整合」のほうが簡単で、コードデータサイズの縮小は難しいわけだ。
でも、そんなことに注力するくらいなら「キャッシュヒット率」などより気にするべきことはいくつもあって
- アルゴリズムの見直しとか(バブルソートよりクイックソートのほうが速いだろう)
- ループ回数の削減とか(リニアサーチよりバイナリサーチのほうが圧倒的に速いだろう)
究極の限界を追求するのでない限り、「常識的な高速化」を行うほうが開発効率が良いだろうよ。

引用返信 編集キー/
■86341 / inTopicNo.3)  Re[1]: キャッシュのヒット率が低くなる理由?
□投稿者/ よもやま (1回)-(2018/01/21(Sun) 10:53:25)
No86339 (くまファン さん) に返信
> CPUには2次キャッシュや1次キャッシュメモリがあります。
> どんな処理によって、キャッシュのヒット率が低くなるのでしょうか。
>
> ご教授お願い致します
>
CPUに搭載されているキャッシュメモリって
インテル、AMDなどメーカー、グレードによってまちまちなのに
キャッシュのヒット率を意識する場面ってなんだろう・・・
OS(Windows, Mac, Linux, μTron)上で動作するアプリ、ドライバー、サービスがある上、
CPUを占有して動かせる状態になるとしても
キャッシュヒット率を気にするより
最適でシンプルなコードを作成・構築するに心掛けたほうがいいような・・・

あとはインテルなどのメーカーが知財特許など取得しているので
キャッシュ、パイプラインの動作機構に関する詳細が知りたいのであれば
そちらを調べてみればよいかと・・・

引用返信 編集キー/
■86342 / inTopicNo.4)  Re[2]: キャッシュのヒット率が低くなる理由?
□投稿者/ くまファン (2回)-(2018/01/21(Sun) 12:07:26)
774RR 様
よもやま様

丁寧なご説明有難うございます。

原理的な事を知りたかったのです。
なので、774RR 様の具体例はよかったのです。

GPUの世界はGLOBALメモリアクセスがネックです。
なので、キャッシュ機能がうまく働かせば、関数の実行時間が非常に短くなります。
原理的にそうだったけれども、
プログラマはどうやってそういうキャッシュ機能を発揮させるかはずっと疑問です。
アルゴリズムは大事ですが、そもそも科学技術領域においての算法は
用意に発明や改造できるもんではありません。
それをさらに並列化してやろうとしたら一層自由改造の余地が狭くなります。


GPU分野において普遍的な高速化方法はキャッシュ機能を生かす。。。ただこれは理論的な発想に過ぎないようです。
なぜならば、皆さんの解説からすれば、
キャッシュ機能を生かす方法は容易でないですね。

ありがとうございました!




解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ