|
|
|
|
|
|
|
|
|
目次
CPU章トップ|誰にでもわかるCPUの仕組み
第1節:CPUとは何か
第2節:命令の実行サイクル
第3節:レジスタの役割
第4節:メモリとCPUの関係
第5節:アドレス指定とメモリマップ
第6節:整数演算とフラグ
第7節:浮動小数点演算
アドレス指定とメモリマップ
CPUはデータや命令そのものを
直接扱うのではなく、
アドレスを指定して
メモリにアクセスします。
この仕組みを理解することは、
プログラムの実行原理や
OS・ハードウェア制御を理解する上で
非常に重要です。
アドレスとは何か
アドレスとは、
メモリ上の位置を示す番号です。
CPUは
「どこにあるデータを読むか」
「どこに結果を書き込むか」
をアドレスによって指定します。
このとき、
メモリアドレスレジスタ(MAR)が
指定されたアドレスを保持します。
基本的なメモリアクセスの流れ
命令実行 ↓ アドレス計算 ↓ PC / レジスタ → MAR ↓ Memory → MDR ↓ レジスタ / ALU
CPUは常に
「アドレス → データ」
という手順で動作しています。
アドレッシング方式
命令がどのようにアドレスを指定するかを
アドレッシング方式と呼びます。
| 方式 | 概要 |
|---|---|
| 即値アドレッシング | 命令内に値そのものを含める |
| 直接アドレッシング | 命令内にメモリアドレスを指定する |
| 間接アドレッシング | 指定したアドレス先に実際のアドレスがある |
| レジスタアドレッシング | レジスタに格納された値を使う |
| 相対アドレッシング | 現在位置からの差分で指定する |
これらを組み合わせることで、
柔軟で効率的な命令実行が可能になります。
メモリマップという考え方
メモリマップとは、
アドレス空間全体を
どの用途に割り当てるか
を整理したものです。
0x00000000 ─ プログラム領域 0x00100000 ─ データ領域 0x7FFFFFFF ─ ユーザー空間上限 0x80000000 ─ OS / カーネル領域
CPUはこの配置を意識せず、
単にアドレスを指定しますが、
OSやハードウェア設計では
非常に重要な概念です。
メモリマップドI/O
一部のシステムでは、
周辺機器の制御レジスタを
メモリ空間の一部として配置します。
これを
メモリマップドI/O
と呼びます。
CPUは通常のメモリアクセスと
同じ命令で、
デバイス制御を行えます。
アドレス空間の保護
現代のCPUでは、
ユーザープログラムが
OS領域を直接操作できないよう、
アドレス空間が分離されています。
これにより、
1つのプログラムの暴走が
システム全体に影響することを
防いでいます。
第5節のまとめ
- CPUはアドレス指定によってメモリにアクセスする
- アドレッシング方式が命令の柔軟性を決める
- メモリマップはアドレス空間の設計図である