IPA メモリ・キャッシュ — 頻出論点と過去問

頻出論点

1. この分野は何か

コンピュータ内部でプログラムやデータを保持する半導体メモリについて、記憶素子の性質や、CPUと主記憶の速度差を埋めるための高速化の仕組みを掘り下げます。主記憶・キャッシュメモリ・不揮発性メモリがそれぞれなぜその用途に使われるのかという構造上の理由と、ヒット率やバス幅などの条件から実効的なアクセス時間を導く考え方がこの分野の要です。

2. 実際の出題のされ方

電源を切ると内容が消えるメモリや、画面表示専用のメモリを名前で選ぶ問題が、ITパスポートで出ています。

キャッシュメモリの方式や高速化技術、アクセス時間の計算は、応用情報技術者の午前と高度試験の午前Iで繰り返し出題されています。方式や技術では、ライトスルー方式とライトバック方式の比較、メモリインタリーブの説明を選ぶ問題、フラッシュメモリの寿命を延ばす技術を名前や説明から選ぶ問題などが問われます。計算では、実効アクセス時間やヒット率の逆算、L1とL2の2段構成での総合ヒット率を求める問題が出ています。また、ロード時刻・最終参照時刻・参照回数の表から置換アルゴリズムを判定する問題や、画面の画素座標からメモリアドレスを求める問題も出題されています。

エンベデッドシステムスペシャリストの午前IIでは、メモリ素子の特性や回路の読み取り、バス制御を伴う時間計算まで問われます。具体的には、SRAMとDRAMの比較やFeRAMの特徴、プログラムの局所参照性、マルチコアプロセッサにおけるスヌープキャッシュが問われています。さらに、クロック周波数とウェイト数やバス幅から処理時間を求める計算、アドレスバスと論理ゲートが接続された回路図からROMにアクセスできるアドレス範囲を16進数で特定する問題も出題されています。

キャッシュに存在しない確率を使った平均アクセス時間の文字式を選ぶ問題が、システムアーキテクトとデータベーススペシャリストの午前IIで出ています。データベーススペシャリストの午前IIでは、ECCメモリに使う誤り訂正符号も問われました。

3. 学習のポイント

半導体メモリの種類と特性は、記憶素子の仕組みと結び付けて対比します。揮発性メモリのうち、DRAMはコンデンサに電荷を蓄えるため構造が単純でビット単価が安く主記憶に使われますが、定期的なリフレッシュが必要です。一方、SRAMはフリップフロップ回路で構成され、リフレッシュ不要かつ高速なためキャッシュメモリに使われます。不揮発性メモリでは、フラッシュメモリがブロック単位であらかじめ消去してから書き込む特性や書換え回数の上限を持つのに対し、FeRAMは強誘電体の分極の向きで記憶する不揮発性メモリで、フラッシュメモリのような一括消去が要らず、書換えに強い特徴があります。また、画面表示のフレームバッファとして主記憶の一部を共有するユニファイドメモリ方式や、2ビットの誤り検出と1ビットの誤り訂正にハミング符号を用いるECCメモリの役割も確認しておきます。

次に、キャッシュメモリの3つの制御方式を整理します。

  • 書込み方式:ライトスルー方式は書込みのたびに主記憶も同じ値に更新するので、主記憶とキャッシュの内容がずれませんが、書込みは主記憶の速さに合わせて遅くなります。ライトバック方式はキャッシュだけに書き込み、キャッシュから追い出されるときに主記憶へ書き戻すため高速です。
  • 割付(マッピング)方式:主記憶のブロックをキャッシュのどの位置でも割り当てられるフルアソシエイティブ方式と、特定の位置(セット)内の複数ロケーションに対応付けるセットアソシエイティブ方式などの違いを区別します。
  • 置換アルゴリズム:キャッシュが満杯のとき、ロード時刻が最も古いものを選ぶFIFO、最終参照時刻が最も古いものを選ぶLRU、参照回数が最も少ないものを選ぶLFUの基準を押さえます。

さらに、高速化の原理と時間計算の立式を身につけます。同じ場所や近い場所を短い間に何度も使うほど局所参照性が高く、キャッシュに載ったデータが再び使われてヒット率が上がります。主記憶側では、主記憶をいくつかのバンクに分け、連続する番地を別々のバンクに置くことで、続けてのアクセスを重ねて進めるメモリインタリーブが用いられます。マルチコア環境で共有バスを監視して他コアとの一貫性(コヒーレンシ)を保つスヌープキャッシュも重要です。計算問題では以下の考え方を確実に使えるようにします。

  • 実効アクセス時間:キャッシュのアクセス時間を TcT_c、主記憶のアクセス時間を TmT_m、ヒット率を pp とすると、ミスしたときにキャッシュを調べる時間を別に足さないモデルの式として p×Tc+(1−p)×Tmp \times T_c + (1 - p) \times T_m で求まります。L1のヒット率を h1h_1、L1でミスしたアクセスのうちL2にあった割合(L2のヒット率)を h2h_2 とすると、2段キャッシュの総合ヒット率は h1+(1−h1)×h2h_1 + (1 - h_1) \times h_2 です。
  • バスアクセスと転送時間:1クロックの時間(1÷クロック周波数1 \div \text{クロック周波数})に(基本クロック数 + ウェイト数)を掛けて1回のアクセス時間を出し、データサイズとバス幅から必要なアクセス回数を求めて掛け合わせます。圧縮データの展開時間を足す問題では、圧縮後のサイズで転送時間を計算します。

4. 間違えやすいところ

用語や方式の定義では、対になる概念を入れ替えた誤答肢が並びます。

  • ライトスルーとライトバックの混同:ライトスルー方式をキャッシュだけに書き込む方式としたり、ライトバック方式では追い出すときにも主記憶への書き戻しが要らないとしたりする誤答肢があります。更新されたデータが追い出される際には主記憶への書き戻しが必要です。
  • メモリインタリーブと他の高速化・記憶管理技術の混同:メモリインタリーブを問う問題では、DMAやディスクキャッシュなど、別の技術の説明が誤答肢としてよく並びます。
  • 半導体メモリの特性の取り違え:フラッシュメモリの問題で「定期的にリフレッシュしないと,データが失われる」(DRAMの特徴)としたり、FeRAMの問題で「1ビットのメモリセルは4個〜6個のトランジスタで構成される」(SRAMの特徴)としたりする選択肢に注意が必要です。

計算や回路読み取りでは、条件の読み落としや式の当てはめミスに気をつけます。

  • 実効アクセス時間の文字式とダミー数値:キャッシュに存在しない確率が与えられたときに、それをヒット率として掛けてしまった式や、計算に関係のないメモリ容量の比を掛けた式が誤答肢でした。また、2段キャッシュの総合ヒット率で、L1とL2のヒット率を単純に掛け合わせるのも誤りです。
  • 1画素あたりのバイト数とアドレス計算:たとえば1画素が4バイトでメモリが1番地あたり1バイトの条件では、先頭から数えた画素の順番に1画素あたりのバイト数を掛けて番地を求める必要があります。バイト数を掛け忘れた画素インデックスそのものの値が選択肢に含まれています。
  • 負論理のチップセレクト端子:ROMのアドレス範囲を求める回路図では、チップセレクトが負論理なら、ゲートの出力が0になる上位アドレスの組合せを真理値表で拾い、その組合せごとに範囲を足し合わせます。両方が1の範囲だけ、あるいは片方だけが1の範囲に限定してしまう誤りに注意します。

メモリ・キャッシュの理解度チェック

メモリ・キャッシュの過去問一覧

メモリ・キャッシュの用語

ハードウェアのほかの論点

プロセッサ・性能計算48問 補助記憶・入出力装置27問 論理回路24問 電子部品・電子回路14問