情報処理試験を勉強していると、「レジスタの種類が多すぎて、汎用レジスタって結局何を保持するの?」と混乱しがちです。この記事では汎用レジスタの意味と役割を、日常の例え話と図解で端的に整理します。
対象試験と出題頻度
汎用レジスタは、基本情報技術者・応用情報技術者で出題されるテーマです。
CPU内部のレジスタに関する問題の選択肢として登場するのが定番パターンで、プログラムカウンタやアキュムレータとの役割の違いを正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★☆☆☆
ランクC(応用)余裕があれば覚える
用語の定義
汎用レジスタ(General Purpose Register / GR)とは、一言で言うと
「CPU内部でデータやアドレスを多目的に一時保持する、用途が固定されていないレジスタ」
のことです。
イメージとしては、「キッチンの何でも置ける作業台」です。
キッチンには「コンロ(加熱専用)」「冷蔵庫(保存専用)」のように役割が決まった設備があります。しかし、食材を切ったり盛り付けたり下ごしらえしたり、何にでも使える「作業台」がないと調理が回りません。
汎用レジスタはこの作業台と同じで、演算データの一時保持、アドレスの計算、関数の引数受け渡しなど、用途を選ばず使えるCPU内部の高速な記憶領域です。
📊 汎用レジスタの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | General Purpose Register(GR) |
| 分類 | CPU内部のレジスタ(演算装置側) |
| 主な役割 | 演算データの一時保持、アドレス計算、引数の受け渡しなど多目的 |
| 特徴 | 用途が固定されておらず、プログラマが自由に使い分けられる |
解説
CPUには「次の命令アドレスを保持するプログラムカウンタ」「演算結果を蓄えるアキュムレータ」のように、役割が固定された専用レジスタが複数あります。
しかし、専用レジスタだけでは演算に必要なデータを複数同時に保持できず、頻繁にメモリとのやり取りが発生してCPUの処理速度が落ちます。
この問題を解決するために、用途を限定しない「何にでも使える高速記憶領域」として汎用レジスタが設けられました。
専用レジスタとの比較
レジスタの問題で得点するには「専用レジスタと汎用レジスタの違い」を押さえることが土台になります。
| レジスタ名 | 保持する内容 | 用途 |
|---|---|---|
| プログラムカウンタ | 次に実行する命令のメモリアドレス | 専用 |
| 命令レジスタ | メモリから取り出した命令そのもの | 専用 |
| アキュムレータ | ALUの演算結果 | 専用 |
| フラグレジスタ | 演算結果の状態(ゼロ・桁あふれ・正負など) | 専用 |
| インデックスレジスタ | 有効アドレス計算時の修飾値 | 専用 |
| ベースレジスタ | プログラムの先頭アドレス(基準値) | 専用 |
| 汎用レジスタ | データ・アドレスなど多目的に利用 | 汎用 |
図解:CPU内部のレジスタ配置
CPU内部でのレジスタの位置関係を図にすると、汎用レジスタが演算装置側に複数並んでいることがわかります。
CPU内部のレジスタ配置
制御装置
次の命令アドレス
取り出した命令
命令の解読
演算装置(ALU)
演算結果
データ・アドレスを多目的に保持
演算結果の状態
▲ 汎用レジスタは演算装置側に複数搭載され、プログラマが自由に用途を割り当てる
命令実行サイクルでの役割
CPUが命令を処理する流れの中で、汎用レジスタは「オペランド読み出し」と「結果の書き戻し」の2つのフェーズで登場します。
命令実行サイクルと汎用レジスタの関与
PC→主記憶→IR
IRの命令を解読
有効アドレス算出
主記憶→GR
ALU演算→GR
PC=プログラムカウンタ IR=命令レジスタ GR=汎用レジスタ
何となくで覚えたい人向け:ざっくり整理
汎用レジスタ → 「何でも置けるキッチンの作業台」。食材を切るのも盛り付けるのも自由。
アキュムレータ → 「電卓の表示画面」。直前の計算結果だけが映る。
プログラムカウンタ → 「レシピの何番目かを指す指」。次にやることの番号を持つ。
命令レジスタ → 「いま開いているレシピのページ」。読み込んだ指示を保持。
フラグレジスタ → 「結果のメモ」。答えがゼロだったか、あふれたかの記録。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 汎用レジスタの核心を2行で
・用途が固定されておらず、データ保持・アドレス計算・引数渡しなど多目的に使えるCPU内部の高速記憶領域
・専用レジスタ(PC・IR・アキュムレータ・フラグレジスタ)と「何を保持するか」で区別する
試験ではこう出る!
汎用レジスタは、FE・APの午前問題で「レジスタの役割を選ばせる問題」の選択肢として繰り返し登場しています。汎用レジスタ自体が正解になるパターンと、不正解の選択肢として他のレジスタと区別させるパターンの両方があります。
📊 過去問での出題実績
| 試験回 | 出題内容 | 汎用レジスタの扱い |
|---|---|---|
| FE H23秋 問10 |
プログラムカウンタの役割を選ぶ問題。 | 「メモリから読み出したデータを保持する」が汎用レジスタの説明として不正解の選択肢に配置。 |
| FE R3免除 問11 |
上記H23秋 問10と同一構成の問題(流用)。 | 同様に不正解の選択肢として登場。FEでは同一論点の流用が定番。 |
| FE H23特別 問10 |
LOAD命令で汎用レジスタGRにロードされるデータを求める問題。 | ベースレジスタとの加算で有効アドレスを計算し、主記憶からGRに値をロードする実計算問題。 |
| AP R1秋 問9 |
プログラムカウンタの役割を選ぶ問題。 | FE H23秋 問10の流用。APでも同一問題が出回る典型例。 |
📝 IPA試験での出題パターン
パターン1:「レジスタの役割を選ばせる」
各レジスタの説明文が4つ並び、指定されたレジスタに該当するものを選ぶ形式。汎用レジスタの説明文は「メモリから読み出したデータを保持する」。プログラムカウンタ(命令アドレスを保持)やフラグレジスタ(演算結果の状態を保持)の説明と混同しないことがカギ。
パターン2:「LOAD命令の実計算」
ベースレジスタやインデックスレジスタの値を使って有効アドレスを計算し、主記憶からGRにロードされる値を求める形式。アドレス計算の手順を1ステップずつ追えば確実に解ける。
ここだけは確実に押さえてください。「メモリから読み出したデータを保持する」=汎用レジスタです。これだけで選択肢を正しく切り分けられます。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. CPU内部のレジスタのうち、汎用レジスタの説明として最も適切なものはどれでしょうか?
- A. 演算に使うデータの一時保持やアドレス計算など、用途を限定せず多目的に利用できるレジスタである。
- B. 次に実行すべき命令が格納されている主記憶上のアドレスを保持し、命令実行ごとに自動的に加算されるレジスタである。
- C. 演算結果の状態(ゼロ、桁あふれ、正負など)をビット単位で保持し、条件分岐命令の判定に使われるレジスタである。
正解と解説を見る
正解:A
解説:
汎用レジスタは、用途が固定されておらず、演算データの保持からアドレス計算まで多目的に使えるCPU内部の記憶領域です。
選択肢Bはプログラムカウンタの説明です。プログラムカウンタは命令アドレスの管理に特化した専用レジスタであり、データの一時保持には使いません。選択肢Cはフラグレジスタの説明です。フラグレジスタは演算結果の「状態」をビットで保持するものであり、データそのものを多目的に扱う汎用レジスタとは役割が異なります。
よくある質問(FAQ)
Q. CASL IIの汎用レジスタはいくつありますか?
CASL IIでは GR0〜GR7 の8本が用意されています。このうち GR0 はインデックスレジスタとして使用できないという制約があり、GR1〜GR7 はインデックスレジスタとしても利用可能です。FEのアセンブラ(CASL II)問題ではこの制約を前提に出題されるため、「GR0 はインデックス修飾に使えない」という点は押さえておくと安心です。
Q. 汎用レジスタの数はCPUによって違いますか?
異なります。CASL IIは8本ですが、x86(32ビット)は8本、x64(64ビット)は16本、ARMv8は31本と、アーキテクチャごとに本数が違います。本数が多いほどメモリアクセスの回数を減らせるため、一般に性能面で有利です。ただし、IPA試験の範囲ではCASL IIの仕様を基準に出題されるため、実CPUの本数まで覚える必要はありません。
Q. 汎用レジスタとキャッシュメモリはどう違いますか?
どちらも「高速にデータを保持する記憶装置」ですが、位置と容量がまったく異なります。汎用レジスタはCPUの内部にあり、容量は数十バイト程度、アクセス速度は数ピコ秒です。キャッシュメモリはCPUとメインメモリの間に配置され、容量は数KB〜数十MB、アクセス速度は数ナノ秒です。記憶階層の上からレジスタ → キャッシュ → メインメモリ → 補助記憶装置の順に、速度が遅くなり容量が増える関係になっています。
Q. 「汎用レジスタ方式」と「アキュムレータ方式」の違いは何ですか?
CPUアーキテクチャの分類です。アキュムレータ方式は演算結果を必ずアキュムレータという1つのレジスタに格納する設計で、初期のマイコン(Intel 8080やZ80など)が代表例です。汎用レジスタ方式は複数のレジスタを自由に指定して演算できる設計で、現代のCPU(x86、ARM、RISCなど)の主流です。IPA試験の範囲ではこの分類自体が深掘りされることは少ないため、「こういう分類がある」という程度の理解で十分です。