PSW(Program Status Word)は、CPUが「今何をしているか」を記録している特殊なレジスタです。割り込みやプロセス切替えの場面で必ず登場する概念なので、ここでしっかり押さえておきましょう。
対象試験と出題頻度
PSW(Program Status Word)は、基本情報技術者・応用情報技術者で出題されるテーマです。
単独で「PSWとは何か」を問う出題は少なく、CPUのプロセス制御やコンテキスト切替えの選択肢中に登場する形が中心です。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★☆☆☆
ランクC(応用)余裕があれば覚える
用語の定義
情報処理試験を勉強していると、「レジスタの種類が多すぎて、PSWって結局何を保持してるの?」と混乱しがちです。
PSW(Program Status Word:プログラムステータスワード)とは、一言で言うと
「CPUの現在の実行状態をまとめて保持する特殊レジスタ」
のことです。
イメージとしては、「読みかけの本に挟むしおり+付箋のセット」です。
しおりには「今どのページを読んでいたか」(=プログラムカウンタの値)が記録され、付箋には「ここまでの内容で気になった点」(=演算結果のフラグ)が書かれています。
本を閉じて別の本を読むとき、このしおり+付箋があれば元の本にすぐ戻れます。
PSWはこの「読書の中断・再開」をCPUレベルで実現する仕組みです。
PSWの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Program Status Word |
| 別名 | プログラム状態語、プロセッサステータスワード |
| 分類 | CPU内部の特殊レジスタ(制御用レジスタ) |
| 主な格納情報 | プログラムカウンタ、条件コード、割り込みマスク、実行モードなど |
解説
CPUは複数のプロセスを切り替えながら実行しています。切替えのたびに「今どこまで処理したか」「直前の演算結果はどうだったか」を正確に保存・復元しなければ、プログラムは正しく再開できません。この保存・復元の対象となる情報を一括管理しているのがPSWです。
PSWに格納される主な情報
PSWの構成はCPUアーキテクチャによって異なりますが、試験で押さえるべき代表的なフィールドは以下の通りです。
| フィールド | 役割 |
|---|---|
| プログラムカウンタ(PC) | 次に実行する命令のメモリアドレスを保持する |
| 条件コード(CC) | 直前の演算結果の状態(ゼロ、正、負、オーバーフローなど)を示すフラグ群 |
| 割り込みマスク | 割り込みの許可・禁止を制御するビット |
| 実行モード | カーネルモード(特権モード)かユーザモードかを区別するビット |
| 命令長コード(ILC) | 現在実行中の命令の長さ(障害解析時に使用) |
図解:PSWの構造イメージ
PSWの各フィールドがビット列としてどのように並んでいるか、概念図で整理します。
PSWに含まれる主なフィールド(概念図)
マスク
/モード
コード
マスク
(PC)
▲ フィールドの構成・配置はCPUアーキテクチャによって異なる。上記は代表的な要素を概念的に示したもの
割り込み発生時のPSWの動き
PSWが最も重要な役割を果たすのは割り込み発生時です。
OSは割り込みが入ると、現在のPSW(現PSW)をメモリに退避し、割り込み処理用の新しいPSW(新PSW)をCPUにロードします。処理が終われば退避していたPSWを復元して元のプログラムに戻ります。
割り込み発生時のPSW退避・復元の流れ
PSWと他のレジスタとの違い
汎用レジスタやプログラムカウンタと混同しやすいため、役割の違いを整理しておきます。
| レジスタ | 保持する情報 | 特徴 |
|---|---|---|
| PSW | CPUの実行状態全体(PC+CC+割り込みマスク等) | 複数の状態情報を1つにまとめた「総合ステータス」 |
| プログラムカウンタ | 次に実行する命令のアドレス | PSWの一部として含まれるアーキテクチャもある |
| 汎用レジスタ | 演算用データやアドレス | 用途を限定しない汎用の作業領域 |
| アキュムレータ | 演算結果 | ALUの演算結果を一時的に格納する専用レジスタ |
では、この用語が試験でどのように出題されるか見ていきましょう。
PSWの核心を3行で
・CPUの実行状態(PC・条件コード・割り込みマスク・実行モード等)をまとめて保持する特殊レジスタ
・割り込み発生時に「現PSWを退避 → 新PSWをロード → 処理後に復元」という流れでプログラムの中断・再開を実現
・コンテキスト切替え(プロセスの切替え)のオーバーヘッドに直結する存在
試験ではこう出る!
PSWは、FE・APの午前問題でプロセス制御やコンテキスト切替えの文脈で登場します。「PSWとは何か」を直接問う出題は稀で、選択肢の解説文中に含まれる形が主流です。
過去問での出題実績
| 試験回 | 出題内容 | PSWの登場箇所 |
|---|---|---|
| AP H26春 午前 問16 |
プリエンプティブ方式の適切な記述を選ぶ問題 | 選択肢の解説で「コンテキスト切替え=PSWや主記憶アドレス空間の内容をタスクごとに切り替える操作」と言及 |
| SW H15春 問28 |
上記AP H26春 問16と同一構成の問題(流用元) | 同様にコンテキスト切替えのオーバーヘッドに関連してPSWに言及 |
IPA試験での出題パターン
パターン1:コンテキスト切替えの選択肢に登場
「プリエンプティブ方式ではコンテキスト切替えのオーバーヘッドが大きい/小さい」を判断させる問題で、コンテキスト切替えの定義として「PSWや主記憶アドレス空間をタスクごとに切り替える操作」と記述されます。ここで「PSW=CPUの実行状態」と知っていれば、文意を正確に読み取れます。
パターン2:割り込み処理の手順を問う問題の背景知識
割り込み発生時に「何を退避するか」を問う文脈で、PSW・プログラムカウンタ・汎用レジスタの退避順序が問われるケースがあります。PSWの中にプログラムカウンタの値が含まれることを把握していれば、選択肢の絞り込みに使えます。
試験ではここまででOKです。PSWの各ビットの詳細配置まで覚える必要はなく、「CPUの状態をまとめて保持するレジスタ」「コンテキスト切替えで退避・復元される」という2点を押さえれば得点に直結します。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. PSW(Program Status Word)の説明として、最も適切なものはどれでしょうか?
- A. CPUの実行状態(プログラムカウンタの値、条件コード、割り込みマスクなど)をまとめて保持する特殊レジスタである。
- B. ALUが実行した演算の結果を一時的に格納するための専用レジスタである。
- C. 演算に使うデータやアドレスを用途を限定せずに格納できる汎用的な記憶領域である。
正解と解説を見る
正解:A
解説:
PSWは、プログラムカウンタの値や条件コード、割り込みマスク、実行モードなど、CPUの実行状態に関する複数の情報をまとめて保持するレジスタです。コンテキスト切替えの際に退避・復元される対象として、プロセス管理の中核を担います。
選択肢Bはアキュムレータの説明です。アキュムレータは演算結果を一時格納する専用レジスタであり、CPU全体の状態情報を保持するPSWとは役割が異なります。選択肢Cは汎用レジスタの説明です。汎用レジスタは演算データやアドレスを自由に格納できる領域であり、状態フラグや割り込み制御情報は含みません。
よくある質問(FAQ)
Q. PSWとプログラムカウンタは別物ですか?
アーキテクチャによります。IBMメインフレームのようにプログラムカウンタをPSWの一部として格納する設計もあれば、RISCプロセッサのようにプログラムカウンタを独立したレジスタとして持ち、PSW相当のステータスレジスタとは分離している設計もあります。IPA試験では「PSWにはプログラムカウンタの情報が含まれる」という理解で問題ありません。
Q. PSWの退避先はどこですか?
多くのアーキテクチャでは主記憶(メモリ)上のスタック領域に退避されます。IBMメインフレームの場合は、割り込みの種類ごとに主記憶の固定番地(旧PSW領域)に格納される方式を採用しています。組み込み系のマイコンではPSWとプログラムカウンタをまとめてスタックにプッシュする設計が一般的です。
Q. PSWの「条件コード」とフラグレジスタは同じものですか?
ほぼ同義として扱って差し支えありません。x86アーキテクチャでは「FLAGS / EFLAGS」と呼ばれるフラグレジスタが条件コードに相当します。ARM系では「CPSR(Current Program Status Register)」がPSWの役割を担います。名称は異なりますが、「演算結果のゼロ・正負・オーバーフロー等を示すフラグ群」という本質は共通です。
Q. 実務でPSWを意識する場面はありますか?
メインフレームの運用では、プログラムが異常終了(ABEND)した際にダンプに出力されるPSWの値を読み解いて、障害発生箇所を特定する場面が日常的にあります。PSWの命令長コードと次命令アドレスから逆算して、異常を起こした命令のアドレスを割り出す手法はメインフレームエンジニアの基本スキルです。組み込み開発でも、デバッガでPSW相当のレジスタを確認して割り込みの許可状態やCPUモードを確認する場面があります。