プロが教える店舗&オフィスのセキュリティ対策術

基本情報技術者試験の問題を解いていたのですが、

> 実効アクセス時間を求めるための公式は、
>   (キャッシュメモリのアクセス時間×ヒット率)+主記憶のアクセス時間×(1-ヒット率)
> で表すことができます。

という解説を見て疑問に思ったことがありましたので、質問させて下さい。

ここで実効アクセス時間を求める時、キャッシュメモリにヒットしなかった場合は主記憶にアクセスする物だと解釈しています。
上の公式でいう「主記憶のアクセス時間×(1-ヒット率)」の項がこのケースにおける時間の計算だと思うのですが、一旦キャッシュメモリにあるかどうか確認した上で主記憶にアクセスするのであれば「(キャッシュメモリのアクセス時間 + 主記憶のアクセス時間) * (1 - ヒット率)」になるのではないでしょうか?
それとも、キャッシュメモリにあるかどうかは一般にアクセスする前にリスト等で確認できる仕様になっているという事でしょうか?

どなたか教えてくださると助かります。
宜しくお願いします。

A 回答 (2件)

考え方はそれで正しいと思います。


ただ、ここではそういう厳密なモデルを想定していないだけでしょう。
ここでの主記憶のアクセス時間というのは、メモリそのもののアクセス時間というよりも、命令がキャッシュへのアクセスを始めて、キャッシュにミスして、主記憶からデータがかえってくるまでの全時間を指していると考えるべきです。
細かいことをいうと、キャッシュにミスした後、すぐに主記憶に要求がでるとは限りませんし、アドレス変換まで必要であれば主記憶に何度もアクセスしてからようやくデータが返ってくるということになります。したがって、「主記憶のアクセス時間」が本当にメモリそのもののアクセス時間を指しているのなら、「(キャッシュメモリのアクセス時間 + 主記憶のアクセス時間) * (1 - ヒット率)」も正しくないことになりますし、実際のマイクロアーキテクチャがわからない限り、厳密には平均アクセス時間は計算できないことになります。
この問題では、そういう細かい話ではなく、キャッシュヒット、ミスの概念的なものを問うていると考えるべきです。
    • good
    • 1
この回答へのお礼

ふと浮かんだこの疑問のみに焦点を当てすぎて、仰るようなケースが見えてませんでした。
「主記憶へのアクセス時間」の言葉を広く解釈すべきでした。
ありがとうございます、理解できました。

お礼日時:2015/01/03 20:26

>一旦キャッシュメモリにあるかどうか確認した上で主記憶にアクセスするのであれば


とありますが、そのうち
「一旦キャッシュメモリにあるかどうか確認した上で」が、キャッシュメモリのアクセス時間×ヒット率
「主記憶にアクセスするのであれば」が、主記憶のアクセス時間×(1-ヒット率)
にあたります。
http://www.it-license.com/memory/cache_memory_ac …

これは確率の問題で、キャッシュメモリにあった場合に読み込む時間と
キャッシュメモリに無かった場合(主記憶にあった場合)に読み込む時間を
それぞれの場合に分けて計算して、単純に合計したものを実効アクセス時間としています。

もしあなたが書かれているように
「(キャッシュメモリのアクセス時間 + 主記憶のアクセス時間) * (1 - ヒット率)」
という考え方をしたとすると、
キャッシュメモリにデータが見つかった場合はどのような計算式になるでしょうか?
    • good
    • 0
この回答へのお礼

私が「(キャッシュメモリのアクセス時間 + 主記憶のアクセス時間) * (1 - ヒット率)」
と挙げた箇所は元の公式の第二項に当たる箇所についてでして、ヒットしなかった時に「主記憶のアクセス時間」だけを考えたならばにキャッシュメモリを探索したコストはどうなるんだろう、という疑問でした。
キャッシュメモリにデータが見つかった場合は(キャッシュメモリのアクセス時間×ヒット率)で納得しております。

質問がわかりづらかったようで申し訳ないです、回答ありがとうございました。

お礼日時:2015/01/03 20:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!