【基本情報技術者試験】メモリ2 ~アクセス方式~
今回は【コンピュータ(ハードウェア)編】メモリのアクセス方式について紹介します。
特に、キャッシュメモリを介した『実効アクセス時間』の流れは試験にも出やすいので、しっかり学習しましょう。
キャッシュメモリ
前回の記事で、主記憶装置(メインメモリ)には『DRAM』というメモリが使用されているという話をしました。
DRAMとは記憶素子にコンデンサを用いたもので、安価かつ記憶容量が大きいメモリでした。
RAMにはDRAM以外にもSRAMというものがあり、
SRAMは記憶素子にフリップフロップ回路を使用しており、DRAMと比較して高価かつ記憶容量は低いという反面、高速性や省電力性には優れているという性質がありました。
そんなSRAMですが、コンピュータの中で『キャッシュメモリ』と呼ばれる部品に使用されています。
キャッシュメモリは、CPUと主記憶装置(メインメモリ)の間に配置されるメモリです。
キャッシュメモリを配置することで、CPUでの処理に掛かる時間が全体的に短縮されます。
これはどういうことかというと・・・まず、CPUで行われる命令や演算対象データ(オペランド)というものは、基本的には記憶装置から取り出されます。記憶装置の中でも、実際には主記憶装置(メインメモリ)です。
つまり、CPUは、主記憶装置に必ずアクセスする必要があるということです。
そして、主記憶装置というのは中身はDRAMという部品であり、高速性には優れていません。
CPUというのは非常に高速で処理を行うものなので、この主記憶装置にアクセスしている間は、暇な時間が生じてしまいます。
もしも主記憶装置へのアクセス時間も非常に高速だと、CPUが持て余す時間というのは少なくなり、全体的に効率的に処理を行うことが出来るでしょう。
『じゃあ主記憶装置には高速アクセスが可能なSRAMを使えば良いのでは?』と思うかもしれませんが、これは現実的ではありません。
上述した通り、SRAMというのは高集積化に向いていないため大きな記憶容量を確保することは難しく、また、コストも大きく上がってしまいます。
そこで、SRAMを使用した小さめの記憶容量のメモリをCPUと主記憶装置の間に配置することで、せめてもの効率化を図ろうというスタンスのものがキャッシュメモリです。
主記憶装置から読みだしたデータをキャッシュメモリに保持しておき、後から同じデータへアクセスするような場合にはキャッシュメモリから読み出すことで、アクセス時間の短縮を図っています。
さて、ではこんなキャッシュメモリに関して、実際の試験では『実効アクセス時間』というものがよく問われます。
そこまで複雑な計算式ではありませんので、恐れずに学習しましょう。
実効アクセス時間
実効アクセス時間とは、CPUからメモリ(メインメモリ・キャッシュメモリ)へのアクセスに掛かる平均時間です。
CPUからメモリに対してアクセスを行う際に、
パターン1 メインメモリへアクセスする必要がある場合
パターン2 キャッシュメモリへアクセスすれば済む場合
の2パターンがあります。
例えば、
パターン1の場合には、CPUからのアクセス時間は100ナノ秒
パターン2の場合には、CPUからのアクセス時間は20ナノ秒
というような感じですね。
パターン2の場合は、キャッシュメモリはSRAMであることから、パターン1の場合と比較してアクセス時間は短くなります。
ただし、アクセスしたいデータが必ずしも毎回キャッシュメモリに入っているとは限りません。
この、アクセスしたいデータがキャッシュメモリに存在する確率のことを『ヒット率』と呼びます。
ヒット率はパーセントで表されます。
例えばヒット率が70パーセントという場合には、『CPUがデータを読み出すためにメモリにアクセスする際、当該データは70%の確率でキャッシュメモリに存在する』ということになります。
では、上記の情報を使用して、実効アクセス時間を求めてみましょう。
・メインメモリへのアクセス時間:100ナノ秒
・キャッシュメモリへのアクセス時間:20ナノ秒
・ヒット率:70%
計算式はヒット率に応じた平均を求めるような形である、下記の通りになります。
(実効アクセス時間)= (メインメモリへのアクセス時間)×(1-ヒット率) + (キャッシュモリへのアクセス時間)×(ヒット率)
キャッシュメモリに存在しない(メインメモリにしかない)確率は100-70=30%となるので、実効アクセス時間は、
100×0.3 + 20×0.7=44ナノ秒
となります。
キャッシュメモリを導入していないと毎回100ナノ秒かかることから、平均のアクセス時間は短縮されていることがわかりますね。
キャッシュメモリと実効アクセス時間については試験でもよく問われるので、覚えておきましょう。
まとめ
・キャッシュメモリは、CPUと主記憶装置(メインメモリ)の間に配置されるメモリ
・実効アクセス時間とは、CPUからメモリ(メインメモリ・キャッシュメモリ)へのアクセスに掛かる平均時間
・実効アクセス時間は以下の計算式で求められる。
(実効アクセス時間)= (メインメモリへのアクセス時間)×(1-ヒット率) + (キャッシュモリへのアクセス時間)×(ヒット率)