| デザイナー | IBM |
|---|---|
| ビット | 64ビット |
| 紹介された | 2000 ( 2000 ) |
| バージョン | ARCHLVL 2およびARCHLVL 3(2008年) |
| デザイン | CISC |
| タイプ | レジスター–レジスターレジスター–メモリーメモリー–メモリー |
| エンコーディング | 変数(2、4、または6バイト長) |
| 分岐 | 条件コード、インデックス、カウント |
| エンディアン | 大きい |
| 前任者 | ESA/390 |
| レジスタ | |
| アクセス 16×32、ブレークイベントアドレスレジスタ (BEAR) 64 ビット、コントロール 16×64、浮動小数点コントロール 32 ビット、プレフィックス 64 ビット、PSW 128 ビット | |
| 汎用 | 16×64ビット |
| 浮動小数点 | 16×64ビット(16進数およびIEEE2進数、 IBM System z9以降はIEEE10進数) |
| ベクター | 32×128ビット、VR0~VR15にはFPR0~FPR15が含まれる |
z/Architecture は、当初はESA Modal Extensions ( ESAME ) と呼ばれていましたが、IBMの64 ビット複合命令セット コンピュータ(CISC)命令セット アーキテクチャであり、 IBM のメインフレーム コンピュータで実装されています。IBM は、2000 年後半に最初の z/Architecture ベースのシステムであるz900 を発表しました。 [ 1 ]その後の z/Architecture システムには、IBM z800、z990、z890、System z9、System z10、zEnterprise 196、zEnterprise 114、zEC12、zBC12、z13、z14、z15、z16、z17があります。
z/Architecture は、以前の 32 ビット データ/31 ビット アドレス指定アーキテクチャESA/390およびその前身である 32 ビット データ/24 ビット アドレス指定のSystem/360との下位互換性を維持しています。IBM z13 は、ESA/390 アーキテクチャ モードでオペレーティング システムを実行することをサポートする最後の z Systems サーバーです。[ 2 ]ただし、元々 ESA/390 アーキテクチャで実行するように作成されたすべての 24 ビットおよび 31 ビットの問題状態アプリケーション プログラムには、この変更による影響はありません。
z/ArchitectureにはESA/390のほぼすべての機能[ a ]が含まれており、いくつかの新機能が追加されています。z /Architectureの機能[ b ]には、
各機能がいつ導入されたかについては、「動作原理」を参照してください。[ 3 ] [ 5 ]
拡張即値機能では、32ビットの符号付きおよび符号なし即値オペランドを使用する命令、最左端のオペランドの検索、およびロードとテスト、バイトのロード、論理文字のロードなどのその他のロード命令が追加されます。
一般命令拡張機能には、以下の3ダースの命令が追加されます。
上位ワード機能は、64ビット汎用レジスタの上位ワードに対して動作する命令を提供する。
ロングディスプレイスメント機能は、LAYなどの20ビット符号付きディスプレイスメントを持つ命令を追加します。
その他の指導拡張施設1は、
その他の指導拡張施設2は、
その他の指導拡張施設3
z13 では、「ベクトル機能」と呼ばれる128 ビットのパックSIMD機能が導入されました。 [ d ]これは、z/Architecture Principles of Operation の第 11 版で初めて文書化されました。[ 6 ] 128 ビット幅のベクトルレジスタが 32 個追加され、既存の 16 個の浮動小数点レジスタは新しいベクトルレジスタに重ねて配置されます。新しいアーキテクチャでは、整数、浮動小数点、文字列データ型を含むベクトルレジスタ内のデータを操作する 150 を超える新しい命令が追加されています。z13 の実装には、ベクトルデータを操作する2 つの独立したSIMDユニットが含まれています。 [ 7 ] IBM 3090で初めて導入され、ES/9000でもサポートされていた古いベクトルプロセッサ機能は、z/Architecture ではサポートされていません。[ 8 ]
z16では、ニューラルネットワーク処理支援機能が導入されました[ 9 ] [ 10 ]。これは、モデル依存のデータ型に対して演算を実行するいくつかの命令を導入するものです。z16の場合、これは16ビットNNPデータ型1フォーマットです。
The new instructions include tensor operations useful for AI and neural network applications.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
各プロセッサにはこれらのレジスタがあります
各CPUには16個の32ビットアクセスレジスタがあります。[ 11 ] [ 17 ] ARモードで実行されているプログラムがレジスタ1~15をベースレジスタまたはアドレスを含むレジスタオペランドとして指定すると、CPUはアドレス変換中に関連付けられたアクセスレジスタを使用します。
64ビットのBEAR [ 12 ] [ 18 ]には、命令のシーケンシャル実行を中断した最後の命令のアドレスが格納されます。割り込みが発生すると、BEARは実アドレス272(110 16)のダブルワードに格納されます。分岐の実行後、BEARには分岐のアドレスではなく、実行のアドレスが格納されます。
16 個の 64 ビット制御レジスタは、PSW に含まれる情報を除き、CPU の制御と状態を提供します。これらは、IBM S/390プロセッサの以前のESA/390の制御レジスタの進化的な拡張です。どのフィールドが特定の機能に依存しているかの詳細については、「動作原理」を参照してください。[ 19 ] z/Architecture では制御レジスタが 32 ビットから 64 ビットに拡張されているため、ビット番号は ESA/390 とは異なります。
FPCレジスタには、割り込みマスク(IM)、ステータスフラグ(SF)、データ例外コード(DXC)、10進丸めモード(DRM)、および2進丸めモード(BRM)が格納されます。割り込みが発生すると、FPCレジスタのAFPレジスタ(追加浮動小数点レジスタ)制御ビット(制御レジスタ0のビット13)が1の場合にのみDXCが格納されます。また、DXCの各ビットはそれぞれ意味を持ちますが、プログラムは通常、個々のビットを照会するのではなく、8ビット整数として扱うべきです。
各CPUには16個の64ビット浮動小数点レジスタがあり、FP0~15はVR0~15のビット0~63を占めます。ベクトルレジスタを無視すると、浮動小数点データは3つのフォーマットのいずれかで、3つのサイズのいずれかになります。z/Architectureはこれをサポートしています。
各CPUには、アキュムレータ、ベースレジスタ[ e ]、インデックスレジスタ[ e ]として機能する16個の64ビット汎用レジスタがあります。Grandéと指定された命令は64ビットすべてで動作します。Extended-Immediate Facilityによって追加された一部の命令は、レジスタ内の任意のハーフワードまたはワードで動作します。その他のほとんどの命令は、ビット0~31を変更または使用しません。
プレフィックスレジスタは、実アドレスを絶対アドレスに変換するために使用されます。z/Architectureモードでは、PSAは2ページ(8 KiB)です。ビット0~32と51~63は常にゼロです。実アドレスのビット0~50がゼロの場合、プレフィックスレジスタのビット0~50で置き換えられます。実アドレスのビット0~50がプレフィックスレジスタのビット0~50と等しい場合、それらはゼロで置き換えられます。
PSWレジスタには、CPU上で現在実行中のプログラムの状態を示す命令アドレスやその他のフィールドが格納されています。プログラムの状態は、制御レジスタの内容によっても影響を受けます。
各CPUには32個の128ビットベクトルレジスタがあります。[ 20 ] VR0~15のビット0~63はFPR0~15でもあります。ベクトルレジスタには、16個の8ビットフィールド、8個の16ビットフィールド、4個の32ビットフィールド、2個の64ビットフィールド、または1個の128ビットフィールドが含まれる場合があります。
IBMはz/Architectureにおけるメモリを、メインストレージと拡張ストレージに分類しています。
メインストレージは8ビットバイト(オクテット)単位でアドレス指定され、より大きな[ f ]グループが整列されます。
z/Architectureでは0から2⁶⁴ -1までの実アドレスと仮想アドレスが使用可能ですが、エンジニアリング上の制約により、現在および計画中のモデルではそれよりもはるかに少ないアドレスに制限されます。
拡張ストレージは 4 KiB ブロックでアドレス指定され、ブロック番号は 0 から 2 32までです。
z/Architectureには3種類のメインストレージアドレスがあります。
z/ArchitectureはESAと同じ切り捨てアドレッシングを使用しますが、いくつかの追加の命令フォーマットがあります。ESAと同様に、ARモードでは、ゼロ以外の各ベースレジスタは、アドレス空間を指定するベースレジスタに関連付けられます。命令によっては、アドレスが複数の異なるフォーマットで提供される場合があります。
S/370-XAおよびESAでサポートされている2つのアドレッシングモードに加えて、a/Architectureには64ビット仮想アドレスによる拡張アドレッシングモードがあります。アドレッシングモードは、PSWのEA(ビット31)とBA(ビット32)ビットによって制御されます。有効な組み合わせは次のとおりです。
z/Architectureは、 PSWのビット5(DATモードビット)とビット16~17(アドレス空間制御(AS)ビット)によって制御される4つの仮想変換モードをサポートしています。[ 21 ]
IBMのオペレーティング・システムであるz/OS、z/VSE、z/TPF、およびz/VMは、 MVS、VSE、トランザクション処理機能(TPF)、およびVMのバージョンであり、z/Architectureをサポートしています。z/OS、z/VSE、およびz/VMの旧バージョンは引き続き32ビット・システムをサポートしていましたが、z/OSバージョン1.6以降、z/VSEバージョン4以降、およびz/VMバージョン5以降ではz/Architectureが必要です。
LinuxはIBM Z上のLinuxでz/Architectureもサポートしています。
z/Architectureは、異なるアドレスサイズを使用する複数のオペレーティングシステムおよびアプリケーションを同時に実行することをサポートします。これにより、ソフトウェア開発者は、アプリケーションとデータ構造にとって最も有利なアドレスサイズを選択できます。
2009 年 7 月 7 日、IBM は自社のオペレーティングシステムの新バージョンを発表する際に、アーキテクチャ レベル セット 4 ( ALS 4 ) が存在し、System z10 以降のマシンで実装されていることを暗黙のうちに表明しました。[ 22 ] [ 23 ]また、ALS 4 は LOADxx でARCHLVL 3として指定されていますが、以前の z900、z800、z990、z890、System z9 では ARCHLVL 2 が指定されていました。System z10 の以前の発表では、z/Architecture を実装し、50 を超える新しいマシン命令、1 MB ページ フレーム、ハードウェア 10 進浮動小数点ユニット (HDFU) を追加したとだけ指定されていました 。[ 24 ] [ 25 ]
z/OSを含むz/アーキテクチャ向けのほとんどのオペレーティングシステムは、アーキテクチャ上の制限ではなく、効率性と互換性の観点から、コードの実行範囲を各仮想アドレス空間の最初の2GB (31アドレスビット、または2³¹アドレス可能バイト)に制限しています。IBM Z上のLinuxでは、64ビットのアドレス範囲内でコードを実行できます。
z/OSの各アドレス空間(64ビットアドレス空間と呼ばれる)のサイズは16エクサバイトです。
z/OS のJava プログラミング言語の実装は例外です。z /OS の仮想メモリ実装は複数の2 GBのアドレス空間により、 同時実行可能なプログラムコード容量は2GBです。
データ専用領域とは、読み書きは可能ですが、実行可能コードとして使用できないメモリ領域のことです。(他の最新プロセッサのNXビットに相当します。)デフォルトでは、z/Architectureのメモリ領域は64ビットポインタでインデックス付けされ、実行中のプログラムから最大16エクサバイトのメモリが参照可能になります。
16エクサバイトを超えるデータアドレス空間を必要とするアプリケーションは、追加のアドレス空間またはデータ専用空間を使用する拡張アドレス指定技術を採用できます。ユーザープログラムが利用できるデータ専用空間は、次のように呼ばれます。
これらの空間は、どちらもプログラムが作成できる仮想ストレージ領域であり、最大2ギガバイトまで拡張できるという点で類似しています。アドレス空間とは異なり、データ空間またはハイパースペースにはユーザーデータのみが含まれており、システム制御ブロックや共通領域は含まれていません。プログラムコードはデータ空間またはハイパースペースでは実行できません。[ 30 ]
データスペースはバイト単位でアドレス指定できるのに対し、ハイパースペースはページ単位でアドレス指定できるという点で、ハイパースペースと異なる。
従来、IBM System/360メインフレームとその後継機(z/Architecture メインフレームを含む)では、メモリはバイト単位でアドレス指定可能でした。この種のメモリは「中央ストレージ」と呼ばれています。1980 年代から 1990 年代にかけての IBM メインフレーム プロセッサは、別の種類のメモリである拡張ストレージをサポートしていました。これは、 1985 年にIBM 3090ハイエンド メインフレーム シリーズで初めて導入されました。 [ 31 ]
拡張ストレージは4KBページ単位でアドレス指定可能です。アプリケーションが拡張ストレージ内のデータにアクセスするには、まずデータを中央ストレージに移動する必要があります。同様に、中央ストレージから拡張ストレージへのデータ移動も4KB ページ単位で行われます。当初、ページ移動はページングサブシステムコードによる比較的コストの高い命令を使用して実行されていました。
MVPG(ページ移動)命令とADMF(非同期データ移動機能)機能の導入により、中央ストレージと拡張ストレージ間で単一ページまたはページグループを移動する際のオーバーヘッドが削減されました。
MVPG命令とADMFは、拡張ストレージ内のデータにアクセスするために、通常はz/OSまたはz/VM (およびACP?)のミドルウェアによって明示的に呼び出されます。主な用途は以下のとおりです。
1990年代半ばまでは、中央記憶装置と拡張記憶装置はプロセッサ上の物理的に異なるメモリ領域でした。1990年代半ば以降、中央記憶装置と拡張記憶装置は、基盤となるプロセッサメモリの割り当ての選択肢に過ぎなくなりました。これらの選択は、特定の想定される用途に基づいて行われました。たとえば、ハイパーバッチ機能(ハイパースペースにアクセスするためにMVPG命令を使用する)には拡張記憶装置が必要です。
上記で述べたハイパースペースやページングの事例に加えて、拡張ストレージには他にも以下のような用途があります。
z/OSでは拡張ストレージのサポートが終了しました。z/OS のすべてのメモリは中央ストレージになりました。z /VM 6.4 は、拡張ストレージのすべての使用に対するサポートを終了するという方針声明を満たしています。
IBMはMVPGを「1ページを移動し、ページ移動が完了するまで中央処理装置は他の命令を実行できない」と説明した。[ 32 ]
MVPG メインフレーム命令[ 33 ] ( M o V e P a G e、オペコード X'B254') は、 MVCL ( M o V e C uacter L ong) 命令と比較され、どちらも単一の命令を使用してメインメモリ内で 256 バイトを超えるデータを移動できます。これらの命令は、文書化されたタイミングと非重複の制限内で単一の命令として使用できるものの、アトミック性の定義には準拠していません。 [ 34 ] :注 8、7-27ページ[ 35 ]
メインメモリ内で 256 バイトを超えるデータを移動する必要があるという問題は、これまでソフトウェア[ 36 ] (MVC ループ)、 1970 年にSystem/370の発表とともに導入されたMVCL [ 37 ]、および IBM が 1989 年に特許を取得し発表した MVPG [ 38 ]によって対処されてきましたが、それぞれに利点があります。[ 39 ]
1992年に導入されたADMF(非同期データ移動機能)は、単一ページに限定されるMVPG(ページ移動)命令の機能を超え、中央ストレージと拡張ストレージ間でページのグループを移動できます[ 40 ]。
IOSADMF というマクロ命令は、 「ADMF の直接的な低レベル使用」を回避するAPIとして説明されており[ 41 ] 、ハイパースペースへのデータの読み取り[ h ]または書き込みに使用できます[ 42 ] 。ハイパースペースは DSPSERV CREATE を使用して作成されます。
Platform Solutions Inc. (PSI) は以前、z/Architecture と互換性のあるItaniumベースのサーバーを販売していました。IBM は 2008 年 7 月に PSI を買収し、PSI のシステムは入手できなくなりました。 [ 44 ] FLEX-ES、zPDT、およびHercules エミュレータも z/Architecture を実装しています。VOS3オペレーティングシステムの新しいリリースを実行するHitachiメインフレームは、ESA/390 に加えて、いくつかの 64 ビット命令を含む Hitachi 独自の CPU 命令を実装しています。Hitachi は 2002 年に発表された z900-G2/z800 CPU で正式に IBM と協力しましたが、Hitachi のマシンは z/Architecture と互換性がありません。
データスペースアーキテクチャは、すべてのSystem/390プロセッサで標準です。
Associates Internationalは現在、VSE/ESAまたはSystem/370ユーザー向けにデータスペース技術を提供しています。