PSW

PSW:Program Status Word:プログラム状況ワード

PSWは、CPUの各種の状態を示すフラグ・ビットや、次に実行すべき命令の仮想記憶アドレスをもつ、特殊なレジスターです。ESA/390までは64ビットでしたが、現在のz/Architectureでは128ビットに拡張されています。PSWはCPU毎に存在します。世の中にはさまざまなコンピューターがありますが、どのCPUであってもその形態は異なるものの、現在のCPUの状態や次に実行する命令をポイントする機構は備わっています。IBMのSystem/360や370系のアーキテクチャーではPSWですが、インテルのCPUではプログラム・ステータス制御レジスター(EFLAGSまたはRFLAGS)と命令ポインタ・レジスター(EIPもしくはRIP)の2つのレジスターによって制御されます。PSWにせよEFLAGSにせよ、CPUの状態を示すフラグに関しては、命令によって操作することができます。どの程度の範囲までプログラムで制御できるかはアーキテクチャーによって変わります。

COBOLなどの言語アプリケーションでは、PSWの存在や状態を意識することはありません。アセンブラー言語のプログラムであっても、一般ユーザーの作る問題プログラムでは、プログラミングそのものでPSWを意識する必要はほとんどありません。アベンドした際のダンプ・リストの調査などで、プログラムがどの部分を実行していたのかを特定するのにPSWの命令アドレス・フィールドを見る程度でしょう。しかしシステム系のソフトウェア製品のプログラムでは、プログラムの実行モード(監視プログラムor問題プログラム)、アドレッシングモード(24or31あるいは64)やアドレス空間モード(1次or2次orAR)、記憶保護キー、といったものを実行状況に合わせて変更してコントロールすることがあります。

PSWは、アプリケーション・プログラミングではその存在を意識する必要はないものの、昔も今もCPUでプログラムを実行するのに欠かせない極めて重要なハードウェア機構の1つです。CPUではI/Oの完了やプログラム割り込みなど各種の割り込みが発生し、それによって制御を切り替えますが、その際PSWの内容は予め決められたMVSのシステム・ルーチンが実行されるようにPSW全体が割り込み種類によって入れ替わります。現在実行中のアクティブなPSWを現PSW、割り込みが発生した際の入れ替え前のPSWを旧PSW(割り込み時点のPSW)、入れ替え後のPSWを新PSW(OSの割り込みハンドラーを実行するためのPSW)と呼びます。PSWの詳細についてはハードウェアのマニュアル(z/Architecture解説書:SA88-8773)に詳細が解説されています。

PSWの形式(ESA/390およびFACOM,HITAC Mシリーズ互換アーキテクチャー)
PSW形式(zアーキテクチャー)

※現在のz/ArchitectureではPSWは64ビット・アドレスできるように128ビットに拡張されていますが、従来の24/31ビットモードのプログラムでは、互換のため新形式のPSWではなく旧形式の64ビットPSWでプログラミングできるようになっています。