目的
アウトプットによる理解の促進と情報共有。
内容
メモリの種類
名称 | 揮発性 | 速度 | 容量 | 説明 |
---|---|---|---|---|
SRAM | 揮発性 | ◎ | × | リフレッシュ操作不要。消費電力小。 |
DRAM | 揮発性 | 〇 | △ | リフレッシュ操作必要。消費電力大。安価。 |
SDRAM | 揮発性 | △ | △ | リフレッシュ操作必要。動作がバスクロックと同期。 |
DDR-SDRAM | 揮発性 | 〇 | △ | リフレッシュ操作必要。クロック立ち上がり、立ち下がり両方でデータリード可能。 |
マスクROM | 不揮発性 | △ | △ | 書き込み不可。 |
EEPROM | 不揮発性 | △ | △ | バイト単位でデータの書き込みと消去が可能。 |
フラッシュメモリ | 不揮発性 | × | 〇 | ブロック単位で消去が可能。 |
FeRAM | 不揮発性 | △ | × | フラッシュメモリより書き換え回数多、高速。 |
参考:https://www.nedo.go.jp/content/100085075.pdf
※速度、容量の星取表は独自調査に基づいてつけました。間違っていたらご指摘ください。
フラッシュメモリの構造
- NOR型:データの信頼性が高いため、FWの格納用に用いられる。
- NAND型:大容量化がしやすく、SSDなどで使われる。
NAND型には1セル当たり1ビットのデータを保持するSLC型と2ビット以上データを保持するMLC型がある。
MLC型の中でも1セル当たり3ビット保持をTLC型、4ビット保持をQLC型と呼ぶ。MLC型は慣例的に2ビットのものを指す用語として使われている。
ビット数が多いほど安価だが、書き換え可能回数は減少し、耐久性が低くなる。
大容量化技術
オーバレイ方式
プログラムをセグメント単位に分割し、必要なセグメントのみ主記憶に読出しして実行。
不要になったセグメントは次に実行するセグメントで上書き(オーバレイ)する。
仮想記憶
細切れになったメモリ空間を1つの連続した空間としてアプリケーションに提供する技術。
外部記憶も仮想記憶の領域として使うことで、主記憶の物理容量を超える空間を得られる。
記憶領域の管理はOSが行う。
主記憶の仮想記憶への割り当て方には2つの方式がある。
- ページング方式:固定長の区画(ページ)に区切って行う。主記憶に読出しされていないアドレスにアクセスしたとき、ページフォールトの割込みが発生する。これが頻繁に発生して処理能力が低下することをスラッシングと呼ぶ。
- セグメント方式:プログラムごとに可変の大きさで行う。
ページ置き換えアルゴリズム
メモリ領域管理のアルゴリズムは以下4つ。
- LFU方式:利用頻度(Frequency)の低いデータから順に置き換える。
- LRU方式:最も使われなかった(Recently)データから順に置き換える。最もヒット率が高い。
- FIFO方式:最も古いデータから順に置き換える。
- LIFO方式:最も新しいデータから順に置き換える。
高速化技術
メモリインタリーブ
主記憶を複数のバンクに分け、メモリコントローラが各バンクに並列にアクセスすることでアクセスを高速化する技術。
参考:https://atmarkit.itmedia.co.jp/icd/root/78/39772278.html
高信頼化技術
ECCメモリ
パリティ方式やハミング符号を用いて誤りの検出や訂正を行うメモリ。
パリティ方式は1ビットの誤りを検出できるが誤りの訂正はできない。
ハミング符号は2ビットの誤り検出と1ビットの誤り訂正ができる。
記憶保護
メモリ上のデータを誤った操作や不正な操作から保護する仕組みをいう。
リング方式とは、メモリのブロック単位で権限(リングレベル)を設定し、実行中のプログラムが属する階層よりも高い階層のアクセスを禁止する方式。
キャッシュメモリ
構成と動作
CPUと主記憶の速度差が大きく、1階層のキャッシュでは十分に高速化の効果が得られない場合、複数のキャッシュを階層的に配置する。
複数キャッシュの動作形式は2つある。
- インクルージョンキャッシュ:上位キャッシュのデータはすべて下位キャッシュにも格納する。
- ビクティムキャッシュ:キャッシュミス(アクセス先データがキャッシュに存在しないこと)発生時、上位キャッシュからあふれたデータを下位キャッシュに格納する。
ヒット率
アクセスしようとするデータがキャッシュ上に存在することをキャッシュヒット、その確率をヒット率という。
キャッシュのアクセス時間をx[ns]、主記憶のアクセス時間をy[ns]、ヒット率をrとすると、平均アクセス時間[ns]は以下で表される。
平均アクセス時間=rx+(1-r)y
制御方式
- ライトスルー方式:キャッシュ上にデータがあるかないかに関わらず主記憶に書き込む方式。コヒーレンシ(キャッシュと主記憶の内容の一貫性)は気にしなくてよいが主記憶への書き込み頻度は多い。
- ライトバック方式:キャッシュ上にデータがある場合はキャッシュだけに書き込み、主記憶への後でまとめて書き込む方式。マルチプロセッサではコヒーレンシを保つ必要がある。各CPUが共有する主記憶の内容が変化したかどうかを監視し変化があった場合にキャッシュに反映させることをバススヌープという。
データ格納構造
キャッシュはキャッシュラインと呼ばれる単位で主記憶のアドレス範囲(エントリ)と対応させる。
キャッシュのデータ格納構造には次の方式がある。
ダイレクトマップ方式
キャッシュラインとエントリの対応をあらかじめ決めておく方式。
キャッシュに格納したいエントリと同じエントリが既に使われているときは上書きする。
フルアソシティブ方式
キャッシュラインとエントリの対応をキャッシュのどこに置いてもいい方式。
アクセス時、どこに置いたか探索する必要があり、回路規模大きいし遅い。
セットアソシティブ方式
上記二つの折衷案。
1個のエントリに対して2個以上のキャッシュラインを割り当てる方式。
割り当てるキャッシュラインの数をウェイ数という。
疑問に思ったこと
- 1個のセルに複数のビットを書き込むことが可能なの? ていうかセルとはなんぞや
- キャッシュむずい。動作が把握しきれない