pulpul 日本の試験

基本情報技術者 概念書 · コンピュータ構成要素

メモリとキャッシュ

要点と定義

メモリはデータや命令を記憶する装置です。性質を比べるときは、電源を切った後も内容を保つか、記憶セルがどう情報を保持するか、アクセス速度・容量・コストがどう異なるかを見ます。揮発性メモリは電源を切ると内容を失い、不揮発性メモリは電源を切っても内容を保ちます。

DRAMはコンデンサに蓄えた電荷で情報を表す揮発性メモリです。電荷が時間とともに失われるため、内容を保つには定期的なリフレッシュが必要です。容量当たりのコストを抑えやすく、主記憶に広く使われます。SDRAMはクロックに同期して動作するDRAMの一種で、記憶セルにもコンデンサを使います。

SRAMはフリップフロップ回路で情報を保持する揮発性メモリです。DRAMのようなリフレッシュを必要とせず高速ですが、セルの回路が大きいため、一般に大容量化や低コスト化には不利です。この速度を生かし、キャッシュメモリなどに使われます。

キャッシュメモリは、CPUが使ったデータや命令を一時的に保持し、再び要求されたときのアクセスを速めます。要求された内容がキャッシュにあればヒットし、なければ主記憶などから取得します。速度や容量の異なる記憶装置を組み合わせる記憶階層によって、全体として速度と容量の両立を図ります。

キャッシュへの書込み方式にはライトスルーとライトバックがあります。ライトスルーはキャッシュを更新するとき主記憶にも書き込みます。ライトバックはまずキャッシュを更新し、主記憶への反映を後に行います。更新済みデータを追い出すときなどに書き戻しが必要ですが、主記憶への書込み頻度を減らせます。

仮想記憶のページングでは、仮想記憶空間と実記憶空間を同じ固定長の単位に分け、ページとページフレームを対応づけて管理します。主記憶に必要なページがないときは補助記憶から読み込みます。空きがなければ、ページ置換アルゴリズムで追い出すページを選びます。

FIFOは主記憶に読み込んだ順にページを追い出し、LRUは最も長く使われていないページを追い出します。置換回数を数えるとき、最初の空きフレームへの読み込みは置換に含めず、満杯になった後に別のページを読み込むため追い出した回数を数えます。たとえば3枠にページA、B、Cを順に読み込む間は置換0回で、4つ目の異なるページを読み込む際に初めて置換が起きます。

ECCは、誤りの検出や訂正のための冗長ビットをデータに加える仕組みです。必要なビット数は方式や問題で与えられる条件に従って求めます。たとえば、データ幅が2ⁿビット、冗長ビット数がn+2ビットと指定され、幅が128ビットなら、128=2⁷よりn=7、冗長ビット数は7+2=9ビットです。

適用条件と例

メモリの説明では、まず揮発性か不揮発性かを確認し、次に記憶セルの仕組みを見ます。コンデンサの電荷とリフレッシュが手掛かりならDRAM系、フリップフロップが手掛かりならSRAMです。主記憶には容量とコストの面で有利なDRAM、CPUが繰り返し使う情報の高速な保持にはSRAMを使う、という組合せが考えられます。フラッシュメモリは電源を切っても内容を保ち、SSDやUSBメモリなどに用いられます。

キャッシュの効果は、内容が再利用されてキャッシュにある場合に現れます。CPUが値を読み出してキャッシュに保持し、後で同じ値を要求したとき、キャッシュから渡せれば主記憶へのアクセスを省けます。キャッシュにない値は主記憶などから取得するため、キャッシュを設けただけで全てのアクセスが速くなるわけではありません。

値を「4」から「7」に書き換える例では、ライトスルーならキャッシュと主記憶の両方をその時点で「7」にします。ライトバックなら、まずキャッシュを「7」にして更新済みと記録し、後で主記憶に反映します。更新済みのデータを反映前に追い出す場合は、主記憶に書き戻して内容を失わないようにします。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む