図1:レジスタはメインメモリとALUの間にある「作業台」のような役割を担う
「レジスタ」という言葉を聞いても、CPUの中にある部品というイメージ以上のことは思い浮かばない、という方も多いのではないでしょうか。レジスタとは、CPU内部に組み込まれた、演算に使うデータを一時的に置いておくための超高速な記憶装置です。メインメモリよりもはるかに高速にアクセスできるため、レジスタの存在がCPUの処理速度を大きく左右します。
この記事では、レジスタの役割や種類を整理したうえで、非エンジニアの方にもわかりやすく解説します。あわせて、Intel・AMD・Armの公式資料をもとに、現行の64bit CPU(x86-64・ARM64)で実際に使われているレジスタの本数まで紹介します。
この記事でわかること
- レジスタの基本的な仕組み(CPU内部の超高速・小容量の記憶装置として、演算の「作業台」の役割を果たす)
- レジスタにデータを置くことで、CPUがメインメモリへのアクセス待ちに引っ張られにくくなる理由
- 汎用レジスタ・フラグレジスタ・プログラムカウンタ・命令レジスタという代表的な種類とそれぞれの役割
- x86-64(Intel 64/AMD64)とARM64(AArch64)における64bit汎用レジスタの本数(16本・31本)と、その公式資料上の根拠
- レジスタ・キャッシュメモリ・メインメモリ・ストレージの違い(記憶階層としての整理)
レジスタとは?
レジスタとは、CPU内部に組み込まれた、演算処理に使うデータを一時的に保存する超高速・小容量の記憶装置です。CPUが四則演算や比較といった処理を行うとき、CPUはまず対象のデータをレジスタに読み込み、演算装置(ALU)がそのレジスタの内容を直接操作します。
イメージとしては、レジスタは「今まさに使っている道具を置く作業台」のような存在です。倉庫(メインメモリ)から毎回道具を取りに行くのではなく、手元の作業台に置いた道具を使い続けることで、作業のたびに倉庫まで往復する手間を省いています。
レジスタはCPUチップの内部に直接組み込まれているため、メインメモリやキャッシュメモリと比べてアクセス速度が最も高速です。その代わり、保持できるデータ量はごくわずかで、電源が切れると内容は消えます。
なぜレジスタがあるとCPUの処理は速くなるの?
図2:レジスタがない場合(仮定)とある場合(実際の仕組み)の処理の違い
レジスタがあると、CPUは演算のたびにメインメモリへアクセスする必要がなくなるため、処理速度が向上します。CPU内部の演算装置(ALU)は、メインメモリのデータを直接操作できず、演算を行うにはいったんデータをレジスタに読み込む必要があります。なお、x86-64のような命令セットではADD EAX, [EBX]のようにメモリ番地を直接指定できる命令も存在しますが、CPU内部では結局レジスタや専用の内部バッファを経由してデータが処理されます。
もしレジスタがなく、CPUが演算のたびにメインメモリへ直接アクセスしなければならないとしたら、処理はメインメモリの応答速度に引っ張られてしまいます。レジスタに演算対象のデータを置いておけば、その演算はCPU内部だけで完結するため、メインメモリへのアクセス回数を減らせるという点が、処理速度向上の要になっています。
CPUの演算装置や制御装置がどのように連携して処理を進めるかについては、別記事「CPUとは」でも解説しています。あわせて確認すると、レジスタがCPU全体の処理フローのどこに位置づけられるかがつかみやすくなります。
レジスタにはどんな種類があるの?
図3:CPUに搭載される代表的な4種類のレジスタとその役割
レジスタには役割ごとにいくつかの種類があり、代表的なものは汎用レジスタ・フラグレジスタ・プログラムカウンタ・命令レジスタの4つです。
| レジスタの種類 | 役割 |
|---|---|
| 汎用レジスタ | 演算対象のデータやアドレスを一時的に保存する、用途を限定しないレジスタ |
| フラグレジスタ | 直前の演算結果の状態(ゼロになった、桁あふれが起きた等)を記録するレジスタ |
| プログラムカウンタ | 次に実行する命令が格納されているメモリ上のアドレスを保持するレジスタ |
| 命令レジスタ | 現在CPUが実行している命令そのものを保持するレジスタ |
汎用レジスタとは?
汎用レジスタとは、演算対象のデータやアドレスを一時的に保存するために、用途を限定せず自由に使えるレジスタです。四則演算の途中結果を置いたり、メモリ上のデータの参照先(アドレス)を保持したりと、プログラムの内容に応じて柔軟に使われます。
フラグレジスタとは?
フラグレジスタとは、直前に行った演算の結果がどのような状態だったかを記録しておくレジスタです。「結果がゼロになったか」「桁あふれ(オーバーフロー)が起きたか」といった状態が1ビットずつ記録され、条件分岐命令の判定に使われます。
プログラムカウンタとは?
プログラムカウンタとは、次にCPUが実行する命令が格納されているメモリ上のアドレスを保持するレジスタです。1つの命令の実行が終わるたびに値が更新され、CPUはこのアドレスをもとに次の命令を取りに行きます。
命令レジスタとは?
命令レジスタとは、CPUがメモリから読み込んだ、現在実行中の命令そのものを一時的に保持するレジスタです。制御装置は、命令レジスタに読み込まれた命令を解読し、実行に必要な処理へと振り分けます。
64bit CPU(x86-64・ARM64)のレジスタは実際どうなっているの?
図4:x86-64とARM64(AArch64)の64bit汎用レジスタ本数の違い(16本 vs 31本)
現行の64bit CPUでは、汎用レジスタ・命令ポインタ・フラグレジスタのいずれもが64bit幅に拡張されています。8086〜32bit時代の情報とは仕様が変わっている部分もあるため、ここではIntel・AMD・Armの公式資料に基づいて現行の実態を整理します。
x86-64(Intel 64/AMD64)の汎用レジスタは何本ある?
x86-64は、8本の32bit汎用レジスタ(eax等)を64bitに拡張したうえで、新たに8本(r8〜r15)を追加しました。この結果、合計16本の64bit汎用レジスタを備えています。あわせて、プログラムカウンタに相当する命令ポインタと、フラグレジスタも、それぞれ64bit幅のripとrflagsに拡張されています(x64 アーキテクチャの概要とレジスタ)。
x86-64の汎用レジスタ名の対応例
| 64bit名 | 32bit名 | 16bit名 | 8bit名 |
|---|---|---|---|
| rax | eax | ax | al |
| rbx | ebx | bx | bl |
| r8 | r8d | r8w | r8b |
※ この対応表は、エンジニアとの会話でレジスタ名が出てきた際に参照する程度で十分です。
Intel自身のソフトウェア開発者向けマニュアル(Volume 1、第3章「Basic Execution Environment」のセクション3.4.3「EFLAGS Register」配下)にも、Intel 64アーキテクチャに対応したプロセッサ上でRFLAGSレジスタが64bit幅になると明記されています(Intel® 64 and IA-32 Architectures Software Developer's Manuals)。AMDのプログラマーズマニュアルも、AMD64アーキテクチャにおいて同様に64bitへ拡張した汎用レジスタ構成を定義しています(AMD64 Architecture Programmer's Manual Volume 1: Application Programming)。「x64」という呼び方はIntel 64とAMD64の両方を指す総称で、CPUが実行できる命令の集合(命令セット)はほぼ共通しています。
ARM64(AArch64)の汎用レジスタは何本ある?
AArch64は、X0〜X30という名称の31本の64bit汎用レジスタを持ち、各レジスタの下位32bitはW0〜W30として個別にアクセスすることもできます(Registers in AArch64 - general-purpose registers)。x86-64が16本であるのに対し、ARM64は31本と、汎用レジスタの本数そのものにアーキテクチャごとの違いがあります。
また、プログラムカウンタ(PC)はAArch64では汎用レジスタとして扱われず、データ処理命令のオペランド(演算の対象となる値)として直接使うことはできない仕様です(Registers in AArch64 - other registers)。汎用レジスタと命令アドレス管理用のレジスタが明確に分離されている点は、x86-64との設計上の違いのひとつです。
レジスタとメインメモリ・キャッシュメモリは何が違うの?
図5:レジスタ・キャッシュメモリ・メインメモリ・ストレージの記憶階層(CPUからの距離とアクセス速度・容量のトレードオフ)
レジスタ・キャッシュメモリ・メインメモリ・ストレージの違いは、CPUからの距離とアクセス速度・容量のトレードオフとして整理できます。CPUに近い記憶装置ほど高速にアクセスできますが、その分だけ搭載できる容量は小さくなります。
| 記憶装置 | 位置 | アクセス速度の傾向 | 容量の傾向 | 主な役割 |
|---|---|---|---|---|
| レジスタ | CPU内部 | 最も高速 | 最小 | 演算中のデータの一時保持 |
| キャッシュメモリ | CPUに近接 | 高速 | 小〜中 | メインメモリの内容を一部複製し、呼び出しを高速化 |
| メインメモリ(RAM) | CPU外部 | 中程度 | 中〜大 | 実行中のプログラムとデータの保持 |
| ストレージ(SSD・HDD) | 装置外部 | 低速 | 大 | 電源を切っても消えないデータの長期保存 |
レジスタ・キャッシュメモリ・メインメモリはいずれも「揮発性メモリ」で、電源を切るとデータは失われます。一方、ストレージ(SSD・HDD)は「不揮発性」で、電源を切ってもデータが消えません。揮発性・不揮発性の仕組みについては、別記事「揮発性メモリと非揮発性メモリの仕組みと違い」でより詳しく解説しています。
レジスタはCPUチップに直接組み込まれているのに対し、メインメモリはCPUの外部にある部品です。CPUが演算のたびにメインメモリへ直接アクセスすると処理速度が落ちてしまいます。そこで、レジスタとキャッシュメモリを間に挟むことで、メインメモリへのアクセス頻度を抑える設計になっています。
メインメモリそのものの役割や仕組みについては、別記事「メモリとは」で詳しく解説しています。レジスタとの役割の違いをより具体的に理解したい場合は、あわせて参照してください。
まとめ
- レジスタは、CPU内部にある超高速・小容量の記憶装置で、演算に使うデータを一時的に保存する
- CPUの演算装置はメインメモリを直接操作できないため、レジスタを経由することでメインメモリへのアクセス頻度を抑え、処理速度を高めている
- 代表的な種類は、汎用レジスタ・フラグレジスタ・プログラムカウンタ・命令レジスタの4つ
- 現行の64bit CPUでは、x86-64が16本、ARM64(AArch64)が31本の64bit汎用レジスタを備えており、8086〜32bit時代の情報とは仕様が異なる
- レジスタ・キャッシュメモリ・メインメモリ・ストレージは、CPUからの距離に応じてアクセス速度と容量がトレードオフの関係にある記憶階層を形成している
出典一覧
- 「x64 アーキテクチャの概要とレジスタ」 — Microsoft(2025-11-05)
- 「Intel® 64 and IA-32 Architectures Software Developer's Manuals」 — Intel Corporation
- 「AMD64 Architecture Programmer's Manual Volume 1: Application Programming」(Rev. 3.25) — Advanced Micro Devices, Inc.(2026-05-28)
- 「Registers in AArch64 - general-purpose registers」 — Arm Limited
- 「Registers in AArch64 - other registers」
関連記事

執筆者:えだまめ
Elcamyでバックオフィスとブログ執筆を担当。AI未経験の状態からAI活用を学び、Claude CodeをはじめとするAIエージェントの実務活用法を発信している。
更新情報はElcamy公式Xでも発信中。