アーキテクチャ概要
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/22 09:47 UTC 版)
「System/360」の記事における「アーキテクチャ概要」の解説
System/360シリーズにはコンピュータ・アーキテクチャ仕様が定められている。その仕様は実装については全く何も前提としておらず、外部とのインタフェースと外から見た振る舞いを規定している。アーキテクチャは、あらゆる実装で必須とされるインタフェースが記述しており、実装しなくてもよいオプションのインタフェースも記述している。 アーキテクチャには次のような項目が含まれる。 バイト順序はビッグエンディアン プロセッサ16本×32ビット 汎用レジスタ (R0-R15) 64ビット プログラムステータスワード (PSW)割り込みマスク 特権状態 条件コード 24ビット 命令アドレス 割り込みは、マスク不可とマスク可能なクラス、さらにサブクラスがある。 命令セット。各命令が詳述されており、プログラムへの割り込みとして認識される例外の発生条件も定義されている。 記憶装置1バイトは8ビット 特殊なプロセッサ通信領域がアドレス0番地から始まっている。 アドレスは24ビット 人手による操作で可能な制御ブート(IBMでは Initial Program Load、IPL と呼ぶ) オペレータによる割り込み発生 システムのリセット 基本的なデバッグ機能 システム状態(メモリおよびプロセッサ)の表示と人手による変更 入出力機構 - 周辺機器自体は記述されていない。 オプションの機能として次のような項目がある。 パック10進数命令群 浮動小数点数命令群 タイミング機能(インターバルタイマ) キー制御型メモリ保護 モデル20を除く全てのSystem/360でこれらの仕様を実装していた。 二進演算と論理演算は、レジスタ-レジスタ間、メモリ-レジスタ/レジスタ-メモリ間で実行可能である。商用命令セット・オプションを実装している場合、レジスタ-レジスタ間および一部はメモリ-レジスタ間でパック10進数演算を実行可能である。科学命令セット・オプションを実装している場合、4本の浮動小数点数レジスタがあり、32ビットまたは64ビットの浮動小数点演算を実行可能である。モデル85と195の場合、さらに128ビットの拡張浮動小数点数を扱うことができ、2本の浮動小数点数レジスタで1つの数値を格納する。他の機種ではソフトウェアでのエミュレーションで同等機能を提供する。1バイトは8ビット、1ワードは32ビット、1ダブルワードは64ビット、1ニブルは4ビットである。命令のオペランドにはレジスタ番号またはメモリアドレスを指定できる。この複雑な組み合わせにより、命令長や形式は様々に変化する。 メモリアドレッシングは「ベース+ディスプレースメント」形式でレジスタ R1~R15 をベースに使うことができる。ディスプレースメントは12ビットなので最大4096バイトまで示すことができ (0-4095)、ベースレジスタの示すアドレスからのオフセットを指定する。R0レジスタはベースとして使うことはできず、「0」をベースに指定するとメモリの先頭 4KBの範囲を指定することになっていた。これは割り込みルーチンの先頭部分で、ベースレジスタを適切に設定する前に固定のメモリアドレスにアクセスするのに使われていた。IPLの場合は、レジスタの内容をセーブする必要はなく単にクリアすればよいので、この機能は使われていない。 モデル67以外では、あらゆるアドレスは物理メモリアドレスである。IBMが仮想記憶を本格的に採用したのはSystem/370シリーズからである。モデル67では仮想記憶アーキテクチャが導入され、MTS(英語版)、CP-67(en:CP-67)、TSS/360(英語版) で使われたが、System/360の主要OSでは仮想記憶に対応していない。 命令コードは1バイトで、最低でも1バイトのイミディエート値が一種のオペランドとして存在する。命令は必ず 2バイト境界に配置しなければならない(命令の先頭アドレスが2で割り切れる)。命令には3種類の形式がある。オペランド無し(2バイト)、1オペランド(4バイト)、2オペランド(6バイト)である。 例えばMVC(文字移動)命令(16進で D2)は最大でも256バイトしか転送できない。それ以上の転送には複数回のMVC命令を実行する必要がある(System/370ではもっと強力な命令MVCLが追加され、16MBまでの文字列転送が可能となった)。1オペランドは2バイトである。4ビット(ニブル)でベースレジスタを指定し、残り12ビットでディスプレースメントを指定する。MVC命令は 6バイトであり、(R8+1)アドレスから(R7+0)アドレスへ256バイトを転送する命令のコードは "D2FF 7000 8001" となる(FFの部分が転送サイズを示し、実際の転送サイズより1小さい値を取る)。 System/360は「システム状態」と「問題状態」を分離するよう設計されている。それによって基本的セキュリティとプログラミング上のエラーからの復帰を可能にしている。問題 (problem) とはユーザプログラムを意味し、システム状態に対応しているデータやプログラムの内容を変更することはできない。プログラム実行で何らかのエラーが起きると、制御されたルーチンを経由してシステム状態に移行し、オペレーティングシステムがエラーの訂正または当該プログラムの終了を試みる。同様にプロセッサのハードウェアエラーが起きると、マシンチェック・ルーチンを経由して復旧を試みる。
※この「アーキテクチャ概要」の解説は、「System/360」の解説の一部です。
「アーキテクチャ概要」を含む「System/360」の記事については、「System/360」の概要を参照ください。
- アーキテクチャ概要のページへのリンク