7839

雑草魂エンジニアブログ

メインメモリ(主記憶装置)RAM

現在、CSの勉強のために、コンピュータアーキテクチャ (電子情報通信レクチャーシリーズ)を読んでいる。

P.17

f:id:serip39:20220223094450j:plain
主記憶装置を含む演算実行機構

レジスタ→ALU→レジスタのサイクルで計算ができるものの、大量のデータを処理するためには大量のレジスタが必要となる。そのため、レジスタの外側に主記憶装置が備えられる。

  1. 主記憶装置からレジスタにデータを移動させる(読み出し, read)
  2. レジスタ→ALU→レジスタで演算を実施(計算, calculate)
  3. レジスタから主記憶装置にデータを移動させる(書き出し, write)

主記憶装置を使うことで大量のデータ処理が可能となる。今回は、メインメモリ(主記憶装置)に関して整理をしてみる。

メモリの構成

メモリとは、一般にアドレスを使ってアクセスする記憶装置のことを指す。基本機能は2つである。

  1. read, 読み出し:与えれたアドレスに記憶されているデータを読み出す
  2. write, 書き込み:与えれたアドレスに与えられたデータを書き込む

f:id:serip39:20220223183223j:plain

  • 入力
    • アドレス線:アクセスしたいメモリのアドレス
    • チップ選択信号(ChipSelect):複数のメモリの中からどのメモリを有効にするか選択する
    • read/write選択信号:アクセスしたい1語に対する操作を選択する
    • データ線:write時に、書き込むデータ
  • 出力
    • データ線:read時に、読み出すデータ

メモリはセルと呼ばれる1ビットの記憶素子を2次元に並べたものである。横一列の1行をアドレスで指定することができ、1語(word)と言われる。1語(word)はメモリが一度に扱えるデータの大きさを表す。

デコーダ(アドレスデコーダ)は、アドレス線からのnビット信号を解読し、任意のアドレスにアクセスできるようにする。

メモリの種類

メモリは大きく分けると2種類に分類される。電源を切ってもデータが消えない「不揮発性メモリ(Non-Volatile Memory)」と、電源を切ったらデータが消えてしまう「揮発性メモリ(Volatile Memory)」である。

不揮発性メモリ:ROM(Read Only Memory)

「Read Only Memory」は「読み出し専用メモリ」である。ユーザーが書き換えられないと不便なため、「Programmable ROM」というユーザーによる消去と書き込みが可能なROMが登場した。

フラッシュメモリ Flash Memory

電気的に書き込み・消去が可能。

  • NAND型:データの書き込みや消去の処理速度に優れ、容量あたりの単価が安い。アクセスがブロック単位で行われるため、物理的な記録位置が連続していないデータ(ランダムアクセスデータ)の読み取りが低速になる傾向がある。
  • NOR型:読み取り速度が高速、プログラムをメインメモリにコピーせず直接実行できる。ただし、容量当たりの単価は高い。
    • スマホ、プリンタ、デジカメなど、大容量ではなく、ある程度制御ソフトが必要なデバイスはNOR型が適している。

f:id:serip39:20220225010504j:plain

フローティングゲートMOSFET(FGMOS)が一般的に使用されている。P型半導体の上にN型半導体のドレイン電極とソース電極を設け、P型半導体上にトンネル酸化絶縁膜で挟んだフローティングゲートを形成している。このフローティングゲートに電子を蓄えることで書き込み、電子を追い出すことで消去を行なっている。電子がフローティングゲート内に絶縁された状態で保持されるため、電源を切ってもデータが消えず、不揮発性となる。データの読み出しは、ソースからドレインに流れる電流がフローティングゲートの電子の有無で変化するので0"or"1"を判断できる。

EEPROM(Electric Erasable PROM)

フラッシュメモリ同様に、電気的に書き込み・消去が可能。フラッシュメモリはブロック単位であったが、EEPROMの場合バイト単位での書き込み・消去が可能であるため、RAMと同じように使用可能。

揮発性メモリ:RAM(Random Access Memory)

「Random Access Memory」は「読み出しと書き込みができるメモリ」である。ランダムアクセスが意味することは、データを順番に取り出すことができず、アドレスを指定して自由にデータを取り出すことができることを意味している。

SRAM(Static RAM)

セルとしてフリップフロップ(FF)構成の論理を使い、静的にデータを保持する。 低消費電力かつ、リフレッシュ回路が不要なため、マイコン内蔵のRAMはSRAMが多い。

f:id:serip39:20220226140207j:plain

以前紹介したFFのNORの入出力を接続した回路ではなく、インバータを反転して接続することで"0"または"1"の値を保持することができる。読み出しの場合は、スイッチをONにするだけで保持していた値を取り出すことができる。書き込みの場合、書き込みたい値をDにセットしておいた状態でスイッチをONにすることで値を書き込むことができる。(値の書き込みは電位の変化で決まるので、実際には4つの段階を踏む。Dをビット線、スイッチ切り替えをワード線とする。[1]Pre-chargeでワード線を0の状態で、ビット線をの電位を持ち上げ、1にする。[2]Data-assertionでビット線の電位を書き込むデータに変更する。[3]WL-assertionでワード線を1にして、スイッチをONにする。[4]Cell-flipsで電位がの影響で保持していた値が反転する。) インバータはそれぞれ2つのトランジスタで構成され、スイッチにもトランジスタが用いられるので、合計6個のトランジスタで1個のSRAMのセルが完成する。

DRAM(Dynamic RAM)

1つのトランジスタと小容量のコンデンサで構成され、コンデンサ電荷の有無によってデータを保持する。 コンデンサに充電された電荷は漏れ電流で、時間とともに減衰するので、一定時間ごとに同一データの繰り返し書き込み(再充電)が必要である。これをリフレッシュと呼ぶ。リフレッシュ動作は動的な動作のためダイナミック(Dynamic)という言葉が使われている。

f:id:serip39:20220226145316j:plain

コンデンサ電荷がある場合は"1"、電荷がない場合は"0"とみなす。トランジスタのスイッチを切り替えて、読み出しと書き込みを行う。読み出す場合は、スイッチをONにすると、電荷がある場合にはビット線に放電電流が流れるので電位が瞬間的に立ち上がるので検出回路でその変化を検知し"1"と判別する。電化がない場合は電位が何も変化しないので"0"と判別する。ただし、一度放電してしまうと電荷がなくなるので、読み出し後、再度書き込みを行う必要がある。書き込む場合は、スイッチをONにして、ビット線の電位を変化させることで、充電・放電が行われ、保持する値を書き換えることができる。

SRAM DRAM
容量 小容量
同じ面積の場合、DRAMの1/4以下
大容量
速度 高速 やや遅い
内部 FF コンデンサ
備考 待機時の消費電力小 リフレッシュが必要
リフレッシュにより待機時の消費電力大

レジスタとメモリの違い

レジスタ

  • CPUに組み込まれている最小のデータ記憶装置
  • 汎用レジスタ:CPUの演算対象や演算結果を保持する。CPUにハード的に直結しているので、内部バスを経由してデータにアクセスするRAMよりも高速アクセスが可能。
  • 制御レジスタ:周辺機能(タイマ、USART、ADコンバータなど)の設定値やデータを格納する

メモリ

  • プログラム、命令、データを格納する
  • CPUの内部にあるメモリ:プライマリメモリ、一次メモリ、メインメモリ(主記憶装置)、RAM(揮発性)
    • CPU内で現在実行中のプログラムに必要なデータを格納する(作業領域)
    • プライマリメモリにCPUが必要とするデータがない場合、二次メモリから一次メモリにデータが転送される
    • CPUとは内部バスを経由して接続するため、汎用レジスタよりアクセスが遅い
  • CPUの外部にあるメモリ:セカンダリメモリ、二次メモリ、二次記憶装置、ハードドライブ(不揮発性)
    • データ保存領域
    • ストレージ

レジスタは容量は小さいがCPUが高速にアクセス可能な記憶領域である。一方、メモリは一般にメインメモリ(主記憶装置、RAM)と呼ばれ、レジスタより容量は大きく様々なデータが保存可能であるが、CPUへのアクセスは内部バスで接続するためレジスタより遅い。

f:id:serip39:20220226152728j:plain

まとめ

RAM、ストレージであるメモリに関して、改めて知識を整理することができた。

関連書籍