メモリとレジスタの働き

メモリとレジスタの働き

メモリとレジスタの働き

序論

CPUは計算を行う装置であるが、CPU単体ではプログラムを実行できない。

なぜなら、計算対象となる数値や命令を保持する場所が必要だからである。

本節では、「メモリ(memory)」と「レジスタ(register)」という

2つの記憶領域が、なぜ分けて設計されているのかを説明する。

これは速度・構造・役割の違いに起因する。

本論

記憶装置が必要な理由

プログラムは「命令」と「データ」から構成される。

これらは実行中、どこかに保存されていなければならない。

CPUは電源を切ると状態を保持できないため、

外部に記憶装置を持つ必要がある。

この役割を担うのがメモリである。

メモリ(memory)とは何か

メモリとは、CPUの外部に存在する大容量の記憶装置である。

プログラム全体や大量のデータは、まずメモリに配置される。

メモリは以下の特徴を持つ。

  • 大量のデータを保存できる
  • CPUからはアドレス(address)を指定して読み書きする
  • CPU内部よりもアクセス速度が遅い

レジスタ(register)とは何か

レジスタは、CPU内部に存在する極めて高速な記憶領域である。

計算中の数値や一時的な結果は、必ずレジスタに置かれる。

レジスタの特徴は次の通りである。

  • CPU内部にある
  • 非常に高速にアクセスできる
  • 数が少ない

なぜメモリとレジスタを分けるのか

もしすべてをレジスタで賄おうとすると、

CPU内部が巨大になり、回路が複雑化する。

逆に、すべてをメモリで処理すると、

アクセスが遅すぎて実用的な速度が得られない。

そこで、

「大量だが遅いメモリ」と

「少量だが速いレジスタ」

を組み合わせる設計が採用された。

CPUはどのように使い分けているか

CPUは次のような流れで動作する。

  1. メモリから命令やデータを読み出す
  2. 必要なデータをレジスタに転送する
  3. レジスタ上で計算を行う
  4. 結果を必要に応じてメモリへ書き戻す

このため、CPUの演算命令は

「レジスタ同士の演算」

として定義されている場合が多い。

2の補数との関係

前節で説明した2の補数による整数表現は、

実際にはレジスタ上で扱われる。

メモリ上のビット列は単なるデータであり、

それを符号付き整数として解釈するかどうかは、

レジスタに読み込まれ、演算される文脈によって決まる。

結論

メモリとレジスタは、

単なる容量の違いではなく、

CPU設計思想そのものを反映した役割分担である。

この違いを理解しないままプログラムを書くと、

性能低下や予期しない挙動の原因となる。

Q&A

Q. memory とは何ですか?
A. データやプログラムを大量に保存する場所です。CPUの外にあり、住所(address)を指定して使います。

Q. register とは何ですか?
A. CPUの中にある、とても速い作業机のような場所です。計算は必ずここで行われます。

Q. なぜ直接メモリで計算しないのですか?
A. メモリは遅いため、毎回アクセスすると計算が極端に遅くなるからです。

Q. プログラマはレジスタを意識する必要がありますか?
A. 高水準言語では意識しない場合もありますが、性能や安全性を考える場合、

レジスタとメモリの違いを理解することは重要です。