【れじすた】

レジスタ とは?

公開:
💡 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」 = 登録簿・記録器
💬 データを一時的に「登録」して保持する場所という意味からこの名前になったんだよ
← 用語集にもどる