【れじすた】

レジスタ とは?

💡 CPUの手元メモ — 一番近くて、一番速い記憶場所
📌 このページのポイント
CPU内部のレジスタとメモリ階層 CPU 汎用レジスタ R0 0x0000004A R1 0x000000FF R2 0x00000149 (計算用データを格納) 特殊レジスタ PC 次の命令位置 SP スタック先頭 FLAGS 演算結果の状態 (制御・状態を管理) ALU(演算装置) 結果を書き戻し メモリ階層 速い 遅い レジスタ キャッシュ メインメモリ ストレージ ~1ns ~5ns ~100ns ~10ms レジスタはCPU内部にある最も高速で最も小さい記憶装置
レジスタのイメージ
ひよこ ひよこ

レジスタって何?メモリとは違うの?

ペンギン先生 ペンギン先生

レジスタはCPUの中にある超高速の小さな記憶場所だよ。メモリが本棚だとすると、レジスタは作業デスクの上のメモ帳みたいなもの。手を伸ばさなくてもすぐ見られるから、とにかく速いんだ

ひよこ ひよこ

どのくらい速いの?

ペンギン先生 ペンギン先生

レジスタへのアクセスは1クロックサイクルで完了するよ。メインメモリだと100クロックサイクル以上かかることもある。100倍以上の速度差があるんだ。だからCPUは計算するデータをまずレジスタに持ってきてから処理するんだよ

ひよこ ひよこ

いろんな種類があるって聞いたけど?

ペンギン先生 ペンギン先生

代表的なのは汎用レジスタで、足し算や比較などの計算に使うデータを入れるよ。他にもプログラムカウンタ(次に実行する命令の場所を記録)、スタックポインタ(関数の呼び出し管理)、フラグレジスタ(計算結果が0かどうかなどの状態記録)などがあるね

ひよこ ひよこ

レジスタの数って決まっているの?

ペンギン先生 ペンギン先生

命令セットアーキテクチャによって決まっているよ。x86-64だと汎用レジスタが16本、ARMv8だと31本あるんだ。レジスタが多いほどメモリへのアクセスを減らせるから、プログラムが速くなる傾向があるよ

ひよこ ひよこ

レジスタが足りなくなったらどうなるの?

ペンギン先生 ペンギン先生

レジスタスピル(Register Spill)といって、使い切れないデータを一時的にメモリに退避させるんだ。コンパイラが自動的にやってくれるけど、メモリアクセスが増えるから当然遅くなる。だからコンパイラの最適化では、レジスタをいかに効率よく使い回すかが重要なポイントなんだよ

ひよこ ひよこ

プログラマーがレジスタを意識することってあるの?

ペンギン先生 ペンギン先生

普通のプログラミングでは意識しなくていいけど、組み込み開発やゲームエンジンの最適化では意識することがあるよ。SIMD(Single Instruction Multiple Data)レジスタを使って、1命令で複数のデータを同時に計算するテクニックは、画像処理やAIの推論高速化で今でも現役の技術なんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「レジスタ」って出てきたら「CPUの中にある超高速の一時メモ帳」と思えればだいたいOK!
📖 おまけ:英語の意味
「Register」 = 登録簿・記録器
💬 データを一時的に「登録」して保持する場所という意味からこの名前になったんだよ
← 用語集にもどる