本棚の棚番号に相当します。同じデータでも、どのアドレスにあるか分からなければCPUは読み出せません。
アドレスは通常、0から始まる整数を2進数で表します。
LESSON 02 ・ MAIN MEMORY
主記憶は、CPUがいま実行する命令と、いま処理するデータを、番号の付いた場所へ置く作業台です。
BIG PICTURE
ノイマン型の基本モデルでは、主記憶に命令とデータを置き、CPUが順に読み出して実行します。
主記憶の役割:CPUとストレージの間にある、広くて比較的高速な作業場所です。「保存」と「実行中の保持」は同じではありません。
ADDRESS AND DATA
メモリは、小さな格納場所が並んだものとして考えられます。CPUは場所を示す番号と、読み書きする値を区別します。
本棚の棚番号に相当します。同じデータでも、どのアドレスにあるか分からなければCPUは読み出せません。
アドレスは通常、0から始まる整数を2進数で表します。
指定した場所に置かれたビット列です。そのビット列を数値、文字、命令、色のどれとして解釈するかはプログラムと命令で決まります。
01000001は、数値なら65、文字コードなら「A」と解釈できます。
SMALL EXPERIMENT
16個の小さなメモリで、アドレスとデータが別々に動くことを観察します。値は0〜255です。
アドレス0x00を選択しています。
各枠の上段がアドレス、下段が保存値です。表示は16進数です。
READ AND WRITE
基本モデルでは、バスを役割ごとに分けて考えると読み出しと書き込みを理解しやすくなります。
CPUが「どの場所か」を指定します。アドレス線がn本なら、基本的に2のn乗個の異なる番号を表せます。
読み出しでは主記憶からCPUへ、書き込みではCPUから主記憶へ値を運びます。実機では複数バイトをまとめて運びます。
読み出しか書き込みか、処理を開始してよいか、完了したかなどを伝えます。
CPUがアドレスと「読む」という指示を出し、主記憶がその場所の値をデータとして返します。読み出しても元の値は残ります。
CPUがアドレス、書く値、「書く」という指示を出します。その場所に以前あった値は新しい値に置き換わります。
MEMORY HIERARCHY
一種類の記憶だけで「とても速い・とても大きい・安い」を同時に満たすことは難しいため、性質の違う記憶を組み合わせます。
| 段階 | 主な場所 | 特徴 | 誰が移動を管理するか |
|---|---|---|---|
| レジスタ | CPU内部 | 最も小さく、演算が直接使う | CPU命令 |
| キャッシュ | CPU内部または近く | 最近・近くで使ったデータを複製 | 主にハードウェア |
| 主記憶(RAM) | メモリモジュール | 実行中のプログラムとデータを保持 | OSとCPU |
| ストレージ | SSD・HDD | 大容量で、電源OFFでも保持 | OS、ファイルシステム、アプリ |
局所性:プログラムは「最近使った場所」や「近くの場所」を再び使う傾向があります。キャッシュはこの性質を利用してRAMを待つ時間を減らします。
RAM TECHNOLOGY
は「任意の場所へ直接アクセスできるメモリ」という分類名です。実際には用途に合わせて異なる方式が使われます。
は小さなコンデンサの電荷でビットを表します。高密度に作れるため主記憶に向きますが、電荷が漏れるので定期的に読み直して書き戻すリフレッシュが必要です。
は複数のトランジスタで状態を保持します。高速ですが面積が大きく高価なため、主にCPUキャッシュなど小容量で速度が重要な場所に使います。
一般的なDRAMとSRAMは、電源がなくなると内容を保持できません。この性質を「揮発性」と呼びます。スリープではRAMへの給電を続け、休止状態ではRAMの内容をストレージへ退避します。
VIRTUAL MEMORY
現在のOSは、プログラムが使うアドレスと物理RAMの場所を直接同じにせず、対応表を使って変換します。
はMemory Management Unitの略です。仮想記憶は容量の補助だけでなく、プログラム同士を分離する安全性にも重要です。
OPEN A PHOTO
PERFORMANCE AND RELIABILITY
「メモリ」と「ストレージ」はどちらもデータを覚えますが、役割が違います。RAMを増やしてもSSDに保存できる総量は増えず、SSDの空きが多くてもRAM不足が必ず解消するわけではありません。
CHECK
アドレスはメモリ上の場所を指定する番号、データはその場所に入っているビット列です。
基本的な読み出し操作では消えません。CPUへ値の複製が届き、メモリ上の内容は残ります。
DRAMは高密度で大容量にしやすく、SRAMは面積と費用が増える代わりに高速だからです。
いいえ。アドレスの分離と保護を実現し、必要に応じてストレージも利用しますが、ストレージからの読み込みはRAMより大幅に遅くなります。