どうも初めまして!
最近基本情報技術者の資格取得に向けて勉強中な駆け出しエンジニアのワカです。
#■この記事を書こうと思ったきっかけ
最近書籍を購入して勉強しているのですが、暗記ばかりでなかなか身にならないと思いました。
そこで基本情報に書かれている内容を自分なりに解釈したものをここに備忘録として書き残すことにしました。
そうすれば手も動かせるし人にみられると思うとその分責任感出ますしね!
あと個人的に今自作PCを作りたいとも考えているのでこの機会に詳しくなっとこうと思ったのも理由の一つです笑
もしかすると間違っている点などあるかもしれませんので、その時は指摘していただけると嬉しいです。
今回の記事は前回の記事の続きとなりますので前回の記事もぜひ読んでくださるとありがたいです。
##メモリの高速化手法
記憶装置には速度差があります。それは以下のような構図になっています
CPU > メモリ > 補助記憶装置
(ちなみに価格帯は補助記憶装置>メモリ>CPUとなる)
この”>”の部分には「超えられない壁」と言ってもいいくらいの差が存在しこの差(ギャップ)を埋めることで持ち時間などのロスをできるだけなくすことが図られます。
このロスをなくすための手法がキャッシュです
###キャッシュメモリ
CPUとメモリとのデータのやりとりを行う際先ほども言った通り、
処理の速度差の影響でCPUよりメモリ側の処理の方が遅いです。
それを解消するのがキャッシュメモリ(通常CPU内に入っている装置)です。
ではキャッシュメモリが何をやっているかというと、「メモリからCPUへのデータを一時的に保持」しています。
も少し詳しく説明すると、
メモリからCPUへデータを読み込むときに作動。
↓
メモリからCPUへ送られたデータをキャッシュメモリで保持。
↓
次回CPUからメモリへ同じデータの読み込み命令が出たときキャッシュメモリで保持していたデータが読み込まれる
↓
結果としてメモリが読み込まれず、その分早く処理される。(キャッシュメモリにない場合メモリ側へ読み込みが行われる)
キャッシュメモリはCPU内の物だけではなく複数の設置が可能で、その時に用いられるのが前回説明したSRAMになります。(ちなみにこのキャッシュメモリの呼び方をアクセスする順番に「1次キャッシュ」、「2次キャッシュ」と呼びます。)
###ディスクキャッシュ
キャッシュメモリがCPUとメモリの間を担うのに対して、メモリと補助記憶装置との間を担うキャッシュも存在します。それがディスクキャッシュです。
ディスクキャッシュは専用に半導体メモリを搭載したり主記憶装置の一部を間借りすることをして実装しています。
これまで説明してきたのをまとめると
CPU
↓→ここにキャッシュメモリ
主記憶装置(メモリ)
↓→ここにディスクキャッシュ
補助記憶装置(HDD、SSD)
この上記のような階層を記憶階層と言います。
##キャッシュメモリにおける書き込み方式
キャッシュメモリは読み出しだけじゃなく書き込みも行われます。
ですがこの時処理速度が早いからと言ってキャッシュメモリだけでやりとりをしていると、いつまでもメモリ側が更新されず整合性が取れなくなってしまう危険性があります。
実は読み込みに対して、書き込みは単に処理の代行をするだけでは不十分です。どこかのタイミングでメモリ側へ変更の処理を更新してしてあげないといけないのです。
その方式には2種類ありそれがライトスルー方式とライトバック方式です。
ライトスルー方式・・・キャッシュメモリへの書き込みを行うと同時にメモリへの書き込みも行う。(高速化は望めないが確実にデータが一致する)
ライトバック方式・・・普段はキャッシュメモリへのみ書き込みを行う。キャッシュに入り切らなくなったデータが発生したタイミングでメモリへ書込みが行われます。
###キャッシュメモリのヒット率と実行アクセス時間
キャッシュメモリは容量が小さいので必ずしも目的のデータが入っていることは限りません。この「目的とするデータがキャッシュメモリに入っている確率」のことをヒット率と言います。
これとは逆の考え方で「キャッシュメモリになくてメモリへ読み込みに行く確率」を1ーヒット率で表します
この考え方から実行アクセス時間は次のようなやり方で求めることができます。
キャッシュメモリにアクセスする時間(①) = キャッシュメモリのアクセス時間 x ヒット率
メモリへアクセスする時間(②) = メモリのアクセス時間 x (1ーヒット率)
① + ② = 実行アクセス時間
#■最後に
ここまで長々と読んでくださりありがとうございました!
少し説明がわかりにくかった部分があるかと思いますが、もしわからないところがあればコメントしていただけると嬉しいです。
では!次の記事にて!