System/370
IBM System/370 (S/370、システム/370、しすてむさんななまる)は、1970年6月30日にIBMがSystem/360ファミリの後継として投入したメインフレームのシリーズ名であり、そのアーキテクチャ名でもある。
顧客の移行が容易に行えるよう System/360 との互換性を保ちつつ、性能を向上させている。System/360 と比較したときの新たな機能としては、2プロセッサ構成の標準化、仮想記憶の完全サポート、128ビット浮動小数点演算などである。なお、これらが全て最初の発表時に挙げられていたわけではない（詳細は後述）。
本稿ではSystem/370シリーズに加えて、後続のシリーズ（30x0、4300、9370）と、その後続シリーズ中に採用された拡張アーキテクチャのSystem/370-XA、ESA/370、ESA/390についても記述する。
System/370は、前身のSystem/360から24ビットアドレッシング（最大仮想メモリは16MB）を引き継いで上位互換性を保ち、前身のSystem/360と同様に互換性のある複数モデルによってコンピュータ・ファミリーを形成し、ユーザーの資産（プログラム、周辺機器など）を保護した。
System/370は商用として初めての仮想記憶を実現したため、ユーザーはより広いアドレス空間を使用できるようになり、企業におけるデータベースやオンライン・トランザクション処理の用途が拡大した。
System/360に続くSystem/370の成功により、GEなどは撤退し、System/360の互換機を製造していたメーカーは撤退するか（RCAなど）System/370の互換機を開発する（日立製作所など）ようになった。また1975年にはIBMから退職したアムダールが富士通と提携してプラグコンパチブル型（IBMのオペレーティングシステムを稼働させる）のSystem/370互換機を発表した。
System/370シリーズの後継製品は、大型（水冷・スタンドアロン）の3030・3080・3090、中型（空冷・スタンドアロン）の4300シリーズ、小型（空冷・ラックマウント）の9370シリーズである。これらは正式にはSystem/370シリーズ（という製品名称）ではなかったが、System/370アーキテクチャを継承したため、広義にはSystem/370と呼ばれる事がある。（このため本稿でも記述する。）
1981年には上位機種用にSystem/370-XAアーキテクチャが発表され、論理アドレッシングが31ビット（最大仮想メモリは2GB）に拡張され、I/OによるCPU負荷を軽減する動的チャネルサブシステムが採用された。なお、この技術は特許と著作権で守られていたため互換機対策とも言われ、この技術をめぐりIBM産業スパイ事件も発生した。System/370-XAアーキテクチャは、更にハイパー空間（64ビットアドレッシングのデータ専用アドレス空間）などを持つESA/370アーキテクチャとなった。
1990年にはブランド名がエンタープライズシステム(ES)と改称され、製品シリーズ名はES/3090、ES/4300、ES/9370に、アーキテクチャ名はESA/390と名称変更された後、真の後継製品であるES/9000シリーズに引き継がれた。
System/370シリーズの中で特筆すべきマシンとして、IBM 3033、IBM 3090 がある。これらはオプションでベクター拡張機構を装備しスーパーコンピュータとしても使用できた。また、中小規模の低価格な IBM 9370 もある。
System/370で話題にするべきトピックは仮想計算機（VM）がある。仮想記憶という概念をコンピュータのほかの部分にも適用した概念で、一台の物理マシンの上に複数台の仮想コンピュータを実現した。当時、コンピュータにOSをインストールするためには数日を要していた。その間、エンドユーザーはコンピュータを使うことが出来なかった。商用利用でマシンタイム一分間数百円の時代であるにも係わらず。仮想計算機はこの作業を、エンドユーザーの利用と並行して行うことができ、最後にDASD（Direct Access Storage Device, つまりハードディスク）をテープに吸い上げ、物理マシンのDASDに戻し直せばよくなった。エンドユーザーが使えない時間は数時間になった。
360では設計責任者をつとめたジーン・アムダールは370の設計の際、新技術の導入について積極案を主張したが却下された。そういったことのため、1970年にIBMを退社、アムダール社を設立した。アムダールはIBMに対してプラグコンパチブル（互換機を参照）で、かつIBMより「小回りの利く」開発体制が可能にする新技術の採用による高性能を実現し、果敢に戦いを挑んだ。初号モデルの470V/6の開発は難航したが、提携した富士通からの支援もあって無事完成、出荷（1975年）され、その後はIBMと激しい争いを演じた。
1980年頃には、それまでIBMマシンを利用している客はコンピュータの処理能力を増やしたくてもIBMからはそれ以上のマシンは出ていないという事態が生じていた。MC68000（1980年出荷開始）を搭載したアポロコンピュータのワークステーションが市場を席巻していた。
ワークステーション市場は、その後すぐ1982年創立のSunの急成長によって急成長した。SunはSPARCプロセッサによりその地位を不動のものとした。IBMもPOWERプロセッサ、IBM版UNIXのAIXを開発し、RT-PC・RS/6000とUnixワークステーションに乗り出した 。MC68000の改造チップを積み、IBM PC/XTで370の命令が実行できるシステムも出現した。
1997年にアムダールは富士通に吸収され、日立製作所は2000年に北米市場から撤退し、世界最高速の汎用機は日本の富士通のみが提供している時代が存在した。
System/370 はその約20年の歴史の中で数回のアーキテクチャ改良を重ねてきた。最初の最も大きな変更は仮想記憶の導入であり、1972年、IBM の "System/370 Advanced Function" の発表により一般に公開された。IBM は当初、System/370 では何故か仮想記憶を採用しなかった。1972年の発表には以下の事項が含まれていた。
仮想記憶は実際にはこの発表以前に System/370 ハードウェアに導入されていた。
その後のアーキテクチャ上の変更は主記憶容量の拡張（物理メモリと仮想アドレス空間）が中心となった。これは、負荷の増大と顧客の要望にこたえるためであった。これはムーアの法則に従ってメモリ単価が低下したことによる必然的傾向であった。IBMのメインフレーム開発では、基本的に従来互換は常に保たれていた。上述の通り、System/370 での大きなアーキテクチャ上の変化として、アドレス空間が 24ビットから 31ビットに拡張された。
System/370 のアドレッシングの拡張は、24ビット論理アドレスに依存している System/360 命令セット設計とそれを使った大量のコードベースのために複雑化した。特によく使われる命令 "Load Address" (LA) はアドレスをレジスタに置くときに上位8ビットを明示的にクリアしていた。このため、既存ソフトウェアの移行時に大きな問題となった。
アドレッシングの拡張の実装は以下の3段階で行う戦略がとられた。
System/360 の命令セット中核部は 24ビット論理アドレスのままとされたため、この第三のステップは「現状」の明らかな打破を要求した。既存のアセンブリ言語アプリケーションはもちろん書き換えない限り移行できないし、アセンブラでないアプリケーションも新たなコンパイラを使わないと対応できない。このため、高性能な31ビットの環境で24ビットアプリケーションを動作させる状況がしばらく続いたユーザーが多かった。
IBM が 32ビットではなく 31ビットを選んだ理由はいくつかある。System/360 Model 67 は完全な 32ビットアドレッシングモードを持っていたが、この機能は System/370 には反映されず、当初は 24ビットとなった。System/370-XA でアドレス空間を 31ビットとしたのには、以下のような理由があった。
以下の表では System/370 の主なシリーズと機種をまとめている。アーキテクチャ欄で各シリーズの主要アーキテクチャを示している。多くの機種で複数のアーキテクチャがサポートされていた。例えば 308x は当初 System/370 アーキテクチャとして出荷されたが、後に XA も提供された。4381 などの多くのプロセッサで、マイクロプログラムの置き換えが可能となっており、ユーザーがアーキテクチャを選択可能になっていた。
以下で "System/370-compatible" という用語が出てくるのは、IBM の文書がこの用語を使っているためである。IBM 以外では、この用語はアムダールや日立製作所などのIBM以外の System/370互換機を指すのが一般的である。
System/370 は1990年代に System/390 に置き換えられた。ただし、当初はマーケティングのための製品ラインの改称でしかなかった。2000年、zSeries が後継として登場。zSeries では64ビットのアーキテクチャが導入されており、31ビット化以来の大きな変化となった。アーキテクチャ的にも命令セット的にも System/360 からの互換性は基本的に保たれている。
GNUコンパイラコレクションには System/370 向けのバックエンドがあったが、更新されることなく最後には System/390 用バックエンドに置換された。System/370 と System/390 の命令セットは基本的には同じで System/360 以来の一貫性を保持しているが、gcc における古いシステムのサポートは重視されなかった。現在サポートされているのは、System/390 Generation 5 (G5) の全命令セットをサポートしたマシンであり、そのハードウェアプラットフォームで Linux/390 がリリースされた。
System/370 はコンピュータ・アーキテクチャ仕様であり、System/360 アーキテクチャとの互換性を保った改良版であり、多くの点で共通している。アーキテクチャには、あらゆる実装で使用可能な必須インタフェースと常に実装されるとは限らないオプションインタフェースから構成される。
アーキテクチャ上の主な特徴は次の通り。主なオプション機能は以下の通り。インタフェース仕様は拡張可能であるため、初期のインタフェースに影響を与えることなく新たなインタフェースを追加可能である。そのような例として次の拡張があった。アーキテクチャに修正を加える際には、互換性を保持することに多大な労力を費やした。特に、最低でも非特権プログラムの互換性だけは確保された。この方針は System/360 のころからのものである。互換性を保つための鍵となった方針として、未使用フィールドを予め決まった値（通常 0）にセットしておいた点がある。そして、それ以外の値になっていると例外として認識される。インタフェースを変更するとき、この未使用フィールドを新たな目的で使用することができる。行儀の良いプログラムなら、新たなインタフェースを実装したシステム上でも実行可能であることが期待できる。例えば、64ビットの PSW レジスタのビット番号 32 は未使用であり、0 でないときは例外が発生することになっていた。後に System/370 XA アーキテクチャが定義され、そのビットで 24ビットアドレスなのか31ビットアドレスなのかを識別するようになった。従って、24ビットアーキテクチャ上で動作していたほとんどのプログラムは新たな31ビットシステムでも64ビットシステムでも動作可能である。しかし、全てのインタフェースの互換性が保たれたわけではない。例えば、入出力インタフェースは System/370 XA で非互換になっている。このため、オペレーティングシステム（デバイスドライバ相当部分）は移植が必要であった。