• ベストアンサー

キャッシュミス率の増大

キャッシュミス率の増大によって、プロセッサの計算速度が劇的に低下することを具体的な事例を挙げて説明せよ。 という問いなのですが キャッシュミス:命令処理に必要なデータがキャッシュメモリに存在せず、キャッシュメモリからデータを読み込むことができないこと。キャッシュミスの場合、メインメモリ等にデータを探しに行く。 はわかったのですが、「具体的な事例」がよくわかりません。 教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

例えば float x[10000][10000]; 程度の配列を宣言して for (i=0; i<10000; i++){ for (j=0; j<10000; j++){ のように二重のループにして、その中でx[i][j]に対していろいろな操作をします。 それとx[j][i]のようにi,jを入れ替えただけのものと速度を比較するとかなり差が出ます。やってみてください。 コンパイルするときには最適化しないオプションを指定する必要があります。 gccだと-O0です。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.1

「具体的な事例」という抽象的な表現だと意味不明で、この問いかけをした人に聞くしか無いです。

関連するQ&A

  • キャッシュミス率の増大2

    キャッシュミス率の増大によって、プロセッサの計算速度が劇的に低下することを具体的な事例を挙げて説明せよ。 という問題です。 実行する命令やデータがキャッシュメモリに入っているなら(これをヒットと言う)、CPUは高速で動作し続けることができる。必要な命令やデータが キャッシュメモリに入っていないときは(ミスヒット)、CPUは低速なDRAMから命令やデータを読み出さなければならず、CPUは処理を一時停止して待 つことになる。ミスヒットが続くと、CPUの処理速度は信じられないほど低下してしまう。だからヒット率の高いキャッシュシステムを実装することは、 CPU設計の最優先課題の1つである。 という答えに行き着きました。合っていますでしょうか?ご教示お願い致します。

  • VBAで高速にデータを処理するコツを教えてください

    いつもお世話になっております。 VBAのことで教えて欲しいことがあります。 EXCEL2000 VBAであるデータを処理するコードを作っています。 データ数は1万行×5列×6シート=30万です。 処理する際のパラメータの違いから、この30万個のデータをfor文を使って繰り返し処理します。 繰り返し回数は20万回です。 一回の処理に1秒かかるとすると1秒×20万回なので、2~3日かかります。 このデータを処理する速度の向上を考えています。 L1キャッシュ→L2キャッシュ→メインメモリ→HDD の順に処理速度(アクセス速度?)が遅くなると調べて分かりました。 30万個のデータを配列(メインメモリ?)に格納する方法は下記のようにすればいいと分かりました。 Dim myData as Variant myData = Worksheets("myData").range("A1:E10000") myDataから1行1列目のデータを取り出すのはmyData(1,1)でできると言うことも分かりました。 そこで質問です。 1.コードの記述により、メインメモリよりも高速なL1キャッシュ、L2キャッシュを意識して使うことはできるのでしょうか。 処理している間ずっと30万個のデータをL1,L2キャッシュに格納しておけば、メインメモリに格納しておくよりも高速に処理ができると単純に考えました。 2.私のPCはVista、Core2Quad Q9450、4GB DRAMです。 VBAでは4つのコアをすべて使って実行すること(CPU使用率100%)はできないと聞きました。 上記の処理を実行する時、1つのコアで処理させるのがいいのか、複数のコアで処理させるのがいいのか、プロセスの優先度はどうすべきか、など、コードの記述以外の方法で処理速度を上げる方法はあるのでしょうか。 3.処理速度を向上させるコツなどありますでしょうか。 4.VBA以外の言語なら4つのコアをフルパワーで使えるよ、というのがありましたら教えてください。 (C言語はそれに該当するというのは聞きました。) よろしくお願いいたします。

  • キャッシュメモリのヒット率とは

    キャッシュメモリのヒット率とはどういった概念なのでしょうか。テキストの字面はわかりますが。 メモリのデータのうち、よくつかうと考えられるものが、キャッシュメモリに移される。CPUが必要なデータを探しにいくときに、キャッシュメモリにそれが存在する確率が、ヒット率ということでよいのでしょうか。 どれだけ合理的に、必要なデータが、キャッシュメモリに移されているか、というそのレベルのことを言うわけでしょうか。

  • データキャッシュ、命令キャッシュ、キャッシュフラッシュ

    データキャッシュ 命令キャッシュ キャッシュフラッシュ  この三つの差がよくわかりません。キャッシュはCPUの処理速度を上げるためのものであることは理解しています。私が知っていたのはデータキャッシュのみで、同じデータのやり取りを行う時に使用するものですよね?  では、命令キャッシュとは、同じ命令を行うときに使用する?いつ、どこで、その命令をキャッシュに入れておくのでしょうか?  キャッシュフラッシュはなんとなくわかります。キャッシュに格納してある情報を要求先へ送ることですか?  会社でこの質問に答えれなくて、宿題にされてしまいました・・・・。答えでも、答えでなくてもいいです。情報をいただけたらと思い質問させていただきました。 よろしくお願い致します。

  • CPUの使用率

    今日ビデオカメラで撮った映像を編集してパソコンに保存しているとき、 何となくタスクマネージャのパフォーマンス画面を眺めていて、ふと疑問に思ったのですが、 物理メモリが228KBでコミットチャージの合計が380KBとかなりオーバーしていたのに、CPU使用率がずーっと100%なんですよね……。 何が疑問かって言うと、仮想メモリ使っててかなり速度が落ちてるはずなのに、何でCPUは100%なんだろう?っと思ったんです。 データのやり取りが遅くなってるんだから、CPUの速度に対して処理するデータがなかなか送られないんじゃないかな?だからCPUの使用率は100%になったり、低くなったりするんじゃないかな?と。 できるだけわかりやすく書いたつもりなんですが、何かわからなかったら書いてくれれば、補足するのでお願いします。

  • キャッシュメモリーについて

    パソコン素人で恐縮です。 インテルのcpuの説明資料を読んでいるとキャッシュメモリーという用語がでてきました。1次キャッシュメモリ、2次キャッシュメモリー 3次キャッシュメモリ、とあるそうでキャッシュの数が増えるとメイン メモリーにアクセスする回数が減るので処理速度があがりますといった 内容でした。  何でメインメモリーにアクセスする回数が減ると処理速度があがる のでしょうか?イメージがわきません。 お詳しい方いっらしゃいましたら、ご教授願います。

  • 非機能要求のトレードオフ(アーキテクチャ設計)

    客先からあがっている非機能要求に、「処理速度」と「メモリ使用率」が並んでいます。対象となっているシステムは、大きなファイルの読み込みをするので、最初に全部読み込んでメモリに展開し、その後はメモリのデータを読むことによって妥当な「処理速度」を達成しようとしましたが、そうすればメモリ使用率が上がってしまい、結局、処理速度が落ちてしまうもんですよね。同時にそこそこ妥当な線で達成する方法は、ありますでしょうか。システムの詳細は書けないですが、マルチスレッドやトランザクション、通信などはあまり関係のないシステムで、設計対象は、ただ膨大なデータをひたすら計算するだけって感じです。まだアーキテクチャの勉強を始めたばかりで、どの点を抑えるべきなのかがわかりません。

  • vmstatで、メモリ使用率を計算する

    vmstatから得られるメモリの値である swpd、free、buff、cache 以上の使用量の値から、メモリの「使用率」を計算したいのですが、可能でしょうか? CPUは、そのものずばり使用率が出てくるのですが、メモリは出てこなかったので…… 簡単な質問かもしれませんが、よろしくお願いいたします。

  • キャッシュメモリのヒット率

    アクセス時間10ナノ秒のキャッシュメモリとアクセス時間40ナノ秒の主記憶を使用した処理装置の実行メモリアクセス時間を20ナノ秒以下にしたい。最低限必要なキャッシュメモリのヒット率を求めたい。 「問題」 最低限必要なキャッシュメモリのヒット率を小数点以下第3位を四捨五入して求めよ。 どなたかお願いします。

  • 達成率の計算について

    あまり現実的ではありませんが、次の事例における達成率の計算について、ご教示ください。 「事例」 ・客からの年間クレーム件数について、目標を6件とする。 ・年間のクレーム件数が6件の場合は、達成率を100%とする。 この場合、クレーム件数が3件であった場合、達成率は200%とするのが妥当ですか?また、クレーム件数が、4件とか7件、あるいは0件であった場合、達成率は何%になるのですか?具体的な計算式を教えてください。 なお、意味不明な点があればご指摘ください。