メモリ
要点と定義
メモリは、揮発性・不揮発性、アクセス速度、容量、コストなどを用途に合わせて選びます。半導体メモリには、主記憶やキャッシュなどの役割に応じた種類があります。これはシラバスに示されるメモリ選択の考え方です。
DRAMはコンデンサの電荷でデータを保持するため、電源が入っている間も定期的なリフレッシュが必要です。セル構成が単純で高密度化しやすく、ビット当たりの単価を低くできます。SRAMはフリップフロップでデータを保持します。DRAMとSRAMのセル構成やリフレッシュの違いを区別する知識が、DRAMの特徴を判断するために必要でした。
キャッシュは、速度の異なる記憶装置の間に置き、よく使うデータへのアクセスを速める記憶階層です。ライトスルーでは、キャッシュへの書込みと同時に主記憶も更新します。ライトバックでは通常、まずキャッシュを更新し、主記憶への反映を遅らせます。ライトバックで更新済みのデータを追い出すときは、主記憶への書戻しが必要です。二つの方式で主記憶が更新される時点を区別することが、書込み方式の判断に必要でした。
ヒット率は参照がキャッシュで見つかる割合で、ミス率は見つからない割合です。ヒット率を h とすればミス率は 1−h です。二段キャッシュでは、後段に進むのは前段でミスした参照です。たとえば前段のヒット率が0.8、前段ミス後の後段ヒット率が0.5なら、全体のヒット率は 0.8+(1−0.8)×0.5=0.9 です。前段と後段のヒット率がどの参照を分母にしているかを区別する知識が、全体のヒット率の判断に必要でした。
実効アクセス時間は、条件に応じたヒット時とミス時の時間を、それぞれの割合で重み付けして求めます。例として、主記憶の時間を1、キャッシュ確認時間を0.1、ヒット率を0.8とし、ミス時は確認後に主記憶へ進むなら、平均時間は 0.8×0.1+0.2×1.1=0.3 です。ミス時に確認時間を含めるかなど、問題の前提を先に確かめます。割合と時間を組み合わせて平均する知識が、実効時間を求める判断に必要でした。
適用条件と例
メモリインターリーブは、主記憶を複数のバンクに分けてアクセスを高速化する方式です。連続するデータを複数のバンクに分散して配置すれば、アクセスを並行させやすくなります。例えば、連続する読み出し要求を順番に別のバンクへ割り当てる構成を考えます。これはシラバスに示されるアクセス方式の知識です。
LRUは最終参照が最も古いブロック、FIFOは読込みが最も古いブロック、LFUは参照回数が最も少ないブロックを置換候補にします。LIFOは最後に読み込んだブロックを候補にします。たとえば、先に読み込んだブロックが直近に参照されていれば、FIFOでは古い候補でも、LRUでは最も長く使われていない候補とは限りません。参照時刻・読込み時刻・回数のどれを基準にするかが、LRUを他の方式から区別する判断に必要でした。これは過去の出題で扱った補足です。
ページング方式の仮想記憶については、過去の出題で扱った補足です。有効なページが主記憶にないとページフォールトが起き、需要ページングではこれを契機に必要なページを読み込みます。空きページ枠がなければ、ページ置換で枠を確保することがあります。無効なアドレスへのアクセスはページ読込みとは異なり、エラーになります。実行開始時にコード領域全体を主記憶へ置く必要があるとは限りません。ページフォールト後の処理と、無効なアドレスや空き枠不足を区別する知識が、この問題の正答判断に必要でした。
ページ置換を追う場合も、過去の出題で扱った補足です。複数の枠が埋まった状態で未配置のページを参照したら、LRUでは各ページの最終参照順を確認し、最も長く使われていないページの枠を使います。枠の番地を求める場合は、置換対象のページだけでなく、そのページが占めていた枠との対応も追跡します。参照列を順に更新し、最後に対象ページが入る枠を特定する知識が正答判断に必要でした。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む