メモリー関係

 メモリーとは、記憶装置の事で、主にキャッシュメモリー、主記憶(メインメモリー)、補助記憶(USBやハードディスクなど)の3種類に分かれます。
ここでは、そのメモリー関連の事を記述しますが、あくまでも単語を暗記しておいた方が良い箇所だけを記述します。
メモリーのアクセス時間はここに記述しますが、補助記憶のアクセス時間などの計算関係は別のページで記述します。


◆ キャッシュメモリーとは

 キャッシュメモリーとは、CPU内部に設けられた高速な記憶装置です。 使用頻度の高いデータを蓄積する事によって、主記憶(メインメモリー)へのアクセスを低減させ高速化を図る事が目的です。 なので注意点は、補助記憶装置(ハードディスクなど)とは、何の関連が無い事に気をつけましょう。
 もちろんキャッシュメモリー内に目的のデータが無い場合(ヒットしなかった場合)は、主記憶からデータを持ってきます。  最近のCPUだとキャッシュメモリーが多段化し、1次キャッシュ、2次キャッシュ、サーバー用などに3次キャッシュまで内臓しているCPUもある。


SRAM
(スタィックRAM)
・・・ フリップフロップ回路(順序回路)を使用した高速なメモリーです。 キャッシュメモリーに使用されていますが、構造が複雑でチップ面積で不利な特徴を持っています。


◆ 主記憶(メインメモリー)とは

 主記憶(メインメモリー)とは、CPUが直接アクセスできる記憶装置です。 CPUが内蔵しているキャッシュメモリーとは違います。


DRAM
(ダイナミックRAM)
・・・ コンデンサに電荷があるかないかで、2進数の 0 と 1 を判断している記憶装置。 データを維持するために定期的にリフレッシュ(保持しているデータを再度更新して電荷を与える)する必要があります。
構造上、集積度が高いため、主記憶(メインメモリー)に使われている。
SDRAM ・・・ Synchronous DRAM(シンクロナス DRAM)の略。システムクロックとメモリの外部クロックと同期して、行アドレス内容を同期転送(バースト・モード)が高速に行えるメモリーの事。
DDR-SDRAM ・・・ ダブルデータレートモード DRAM。クロック信号の立ち上がりと立下りの両方にに同期して、高速なデータ転送機能をもつSDRAMの事を言います。


◆ キャッシュと主記憶の対応付け

 対応付け・・・て書かれても何を対応するのか、なんで対応するのかが分からなかったので、まずそこを調べました。
 キャッシュメモリーとは、上記で書いた通り主記憶にアクセスするのを軽減させるのが目的です。 なので主記憶のデータをキャッシュメモリーに置いて、データが更新されたら主記憶の方も更新しないといけません。 そのための対応付けです。
 キャッシュメモリーは、キャッシュラインと言うデータの単位で管理しています。 このキャッシュラインは

 (1) インデックス
 (2) タグ
 (3) データフィールド

 という構成でできているそうです。注目点は「タグ」です。 これが何をするかと言いますと、CPUは目的のデータをキャッシュから検索しないといけませんが、 データフィールドを全て見ていては処理が遅くなってしまいます。 なので「タグ」の部分に、何のデータが入っているかの情報を格納する事で、検索処理を高速にしようとするのが目的です。

 では、「タグ」の意味を踏まえたうえで、キャッシュと主記憶の対応付けの話に戻します。
 対応付けの方法は、以下の3つがあります。

ダイレクトマップ方式 ・・・ 主記憶の1ブロックとタグ(1つのキャッシュライン)を対応付ける基本的な方法。 構成は簡単ですが、ヒット率も低くスループットが落ちる特徴があります。
セットアソシアティブ方式 ・・・ タグ複数をセットにする事で、複数のデータを取得できるようになります。 (複数のキャッシュラインに同じタグのデータが入って、該当する複数のデータを一括で取得できる事だと思います。) このセット数を連想度(ウェイ)と呼びます。
この方式はこの連想度2以上にする事で、主記憶の複数のブロックを対応する方法です。
フルアソシアティブ方式 ・・・ 任意の複数のキャッシュラインと、任意の複数の主記憶のブロックを対応づける方法です。 ・・・と、情報処理の参考書では上の様になってますけど、ネットで調べてみると全てのキャッシュラインを主記憶上のデータ全て対応つけるという説明もあります。 ヒット率は非常に高いのですが、キャッシュメモリーがそんなに容量が無いなど、実装されている事は無いとか・・・。


◆ ライン入替え方式

 キャッシュメモリーの容量が一杯で、なおキャッシュミス(ヒットしなかった場合:キャッシュにデータが無かった場合)に主記憶からデータを取得してきます。 その時、キャッシュのデータをどれか削除しないといけないのですが、その手順の事を言います。覚えておいた方がいいのは1つだけかなと思います。

LRU ・・・ Least Recently Used の略。最も古くアクセスされたデータを消す手法です。 時間が経過しすぎている=今後使われる可能性が最も少ない という事で、この部分にデータを上書きします。


◆ データ更新方式

 CPUの処理で、更新されたキャッシュのデータは主記憶の方にも更新を反映しないといけません。 下はその更新するタイミングに関する手法です。

ライトスルー方式 ・・・ CPUが更新したら、同時に主記憶側にも更新する方式です。 ただし、キャッシュと主記憶を結ぶバスが競合を起こしやすいと言われています。
ライトバック方式 ・・・ CPUが更新しても、条件が揃わない限りに主記憶側にも更新しないという方式です。 マルCPUや、2次キャッシュなどの構成がCPUなど、データの整合性を保つ必要性が高い構成に良く使われている方式だそうです。


◆ メモリーインタリーブとは

 主記憶を複数の領域に分け、連続したメモリ領域へのアクセスを高速化する方式の事です。
 CPUが主記憶に対してアクセス要求してから、実際にデータが届くまでに待ち時間ができてしまいます。 そして主記憶は連続した領域に順番に読み書きを行なうことが多いようです。 なのでその特徴を利用してある、データにアクセス要求をした後の待ち時間の間に、次のアドレスへアクセス要求を発行して時間を有効利用しようという手法である。


◆ 実行アクセス時間

 キャッシュメモリー関係では、よく出題されます。 基本は「アクセス時間」「ヒット率」またはNFP(キャッシュに存在しない確率)で計算します。 問題にメモリの容量などでてきますが、一切計算には関係しません。
 下が公式です。

1次キャッシュアクセス時間 × 1次キャッシュヒット率(またはNFP)
2次キャッシュアクセス時間 × 2次キャッシュヒット率(またはNFP)
主記憶アクセス時間 × (1−キャッシュヒット率の総和)




TOPページに戻る