IBM 700/7000 series

**IBM 700/7000シリーズ** (アイビーエムななひゃく・ななせんシリーズ) は、1950年代から1960年代初頭にかけてIBM社が製造していた大規模コンピュータシステム (メインフレーム) のシリーズである。このシリーズには、互換性のないいくつかの異なるプロセッサ・アーキテクチャが含まれている。700シリーズは真空管ロジックを使用しており、トランジスタ化された7000シリーズが導入されたことによって時代遅れになった。7000シリーズは、最終的に、1964年に発表されたSystem/360に置き換えられた。しかし、7000シリーズに取って代わる十分に強力な最初の360である360/65は、1965年11月まで利用可能にはならなかった。OS/360の初期の問題と、ソフトウェアの変換コストが高かったため、その後も何年にもわたって多くの7000シリーズが使用された。

日本でも、特にIBM 7000シリーズが輸入され、利用されている。

## アーキテクチャ
IBM 700/7000シリーズは、データと命令の格納方法が全く異なる6つの方法がある。
* 最初の科学技術計算機 (36/18ビットワード): 701 (防衛電卓として知られる)
* その後の科学技術計算機 (36ビットワード、ハードウェア浮動小数点): 704、709、7040、7044、7090、7094
* 事務処理用 (可変長文字列): 702、705、7080
* 1400シリーズ (可変長文字列): 7010
* 10進数 (10桁ワード): 7070、7072、7074
* スーパーコンピュータ (64ビットワード): 7030 (「ストレッチ」(Stretch)として知られる)

700クラスは真空管を使用し、7000クラスはトランジスタ化されている。初期の701と702のモデルを除いて、すべてのマシンは (当時の他のほとんどのコンピュータと同様に) 磁気コアメモリを使用しているが、当初はウィリアムス管を使用し、後に磁気コアメモリに変換された。

シリーズでも機種によりワードマシン（科学技術計算用）であったりキャラクタマシン（事務計算用（商用））であったりと、仕様が一貫したりしているわけではない。ストレッチ(Stretch)として知られる7030のように性格の全く違う機種にも、通し番号のように見える名前が付与された。
### ソフトウェアの互換性の問題
初期のコンピュータはソフトウェアなしで販売されていた。オペレーティングシステムが登場し始めると、4つの異なるメインフレームアーキテクチャと1400ミッドラインアーキテクチャを持つことは、少なくとも4つの異なるプログラミング作業が必要となることを意味し、IBMにとって大きな問題となった。

System/360は、7000シリーズおよび1400シリーズのアーキテクチャの最高の機能を1つの設計に統合した。ただし、一部の360モデルには、1400と7000の命令セットをマイクロコードでエミュレートできるオプション機能を持っている。1970年半ばに発売された360の後継機であるSystem/370のセールスポイントの1つは、改良された1400/7000シリーズのエミュレーションで、360上で必要に応じてシャットダウンしてエミュレーションモードで再起動するのではなく、オペレーティングシステムの制御下で実行できるようになったことである。

### 周辺機器
アーキテクチャは異なるものの、同じクラスのマシンは同じエレクトロニクス技術を使用し、通常は同じ周辺機器を使用する。テープ・ドライブは通常7トラック形式を使用し、真空管マシンにはIBM 727が、トランジスタマシンには729が使用されている。真空管機もほとんどのトランジスタ機も、701で導入されたものと同じ、ラインプリンターを使用している。これらのユニット、IBM 711、721、および716は、IBMの会計機テクノロジーに基づいており、プラグボード式のコントロールパネルも含まれている。これらは比較的低速であり、7000シリーズの設置においては、はるかに高速な周辺機器を搭載したIBM 1401を組み込んで、カードからテープ、およびテープからラインプリンタへの操作をオフラインで実行するのが一般的であった。その後の3台のマシン、7010、7040、7044は、ミッドラインのIBM 1400シリーズの周辺機器を採用した。7030のテクノロジーの一部は、Hypertapeなど、他の7000シリーズコンピュータのデータチャネルや周辺機器で使用された。

## 最初の科学技術計算機 (701)

IBMポキプシー 研究所での開発中は「**防衛計算機**」(Defense Calculator)として知られていたが、1953年4月7日にこのマシンは**IBM 701電子データ処理マシン** (IBM 701 Electronic Data Processing Machine) として正式に発表された。

**データ形式**

数値の幅は36ビットまたは18ビットで、固定小数点のみである。

* 固定小数点数は、二進の符号/絶対値形式で格納される。

**命令形式**

命令は18ビット長のシングルアドレスである。

* 符号(1ビット) - ワード全体(-)またはハーフワード(+)オペランドアドレス
* オペコード(5ビット) - 32命令
* アドレス(12ビット) - 4096ハーフワードアドレス

メモリを2048ワードから4096ワードに拡張するために、アドレスフィールドの最上位ビットを使用してバンクを選択する33番目の命令が追加された。(この命令は、元々アドレスフィールドを無視していたため、未使用のビットを持つ唯一の命令であると思われる「No OP」命令を使用して作成された可能性があるが、この新しい命令の説明書は現在入手できない)。
**レジスタ**
プロセッサレジスタは以下のように構成されていた。
* AC - 38ビットアキュムレータ
* MQ - 36ビット乗数/商

**メモリ**

2,048または4,096 - 6ビット文字の36ビットバイナリワード

## その後の科学技術計算機 (704/709/7090/7094)

IBMの36ビット科学技術アーキテクチャは、さまざまな計算集約型アプリケーションに使用された。最初のマシンは真空管式の704と709で、その後、トランジスタ式の7090、7094、7094-II、そして低価格の7040と7044が続いた。最終モデルは、入出力操作を処理する7044にリンクされた7094で構成される直接結合システム (Direct Coupled System: DCS) であった。

**データ形式**

数値は固定小数点でも浮動小数点でも36ビットである。(参照：なぜ36ビットなのか?)

* 固定小数点数は、二進の符号/絶対値形式で格納される。
* 単精度浮動小数点数は、仮数部符号、8ビット指数(エクセス128)、27ビット仮数で構成される。
* 7094で導入された倍精度浮動小数点数は、仮数部符号、17ビット指数(エクセス65536)、54ビット指数で構成される。 
* 英数字文字 (Alphameric characters) は6ビットBCDで、1ワードに6文字が格納される。
**命令形式**

基本的な命令フォーマットは、3ビットのプレフィックス、15ビットのデクリメント、3ビットのタグ、15ビットのアドレスからなる。プレフィックス・フィールドは命令のクラスを指定する。デクリメント・フィールドは、多くの場合、演算結果を更新するための即値オペランドを含むか、命令タイプをさらに定義するために使用される。タグの3ビットは3つ (7094では7つ) のインデックスレジスタを指定し、その内容がアドレスから**減算されて**実効アドレスが生成される。アドレスフィールドには、アドレスまたは即時オペランドが含まれる。

**レジスタ**

プロセッサ・レジスタは次のように構成されている。
* AC - 38ビットアキュムレータ
* MQ - 36ビット乗数/商
* XR - 15 ビットインデックスレジスタ (3個 または 7個)
* SI - 36ビットセンスインジケータ

アキュムレータ (および乗数/商) レジスタは符号/絶対値形式で動作する。

インデックスレジスタは2の補数形式で動作し、命令アドレスを修正するために使用される場合、命令内のアドレスから**減算される**。3つのインデックス・レジスタを持つマシンでは、タグに2つまたは3つのビットがセットされている場合 (つまり、複数のレジスタを選択している場合)、それらの値は減算される前に一緒にOR演算される。7つのインデックスレジスタを持つIBM 7094には「互換性」モードがあり、このトリックを使用した以前のマシンのプログラムを引き続き使用できる。

センス・インジケータは、パネル・スイッチやライトを介してオペレータとの対話を可能にする。
**メモリ**

* 704: 4,096 または 8,192 または 32,768 - 6 ビット文字を含む 36 ビットのバイナリワード
* 709、7090、7094、7094 II、7040、7044：32,768 - 6ビット文字を持つ36ビットのバイナリワード

**入力/出力**

709/7090 シリーズは、テープやディスクなどの高速入出力に**データ同期チャネル** (Data Synchronizer Channels; DSC) を使用する。基本的な7ビットのDSC (7607など) は、メモリとI/Oデバイス間のデータ転送を制御するコンピュータメモリから独自の簡単なプログラムを実行するが、より高度な9ビットの7909では、より高度なチャネルプログラムをサポートしている。709xのユニットレコード装置は非常に遅かったため、パンチカードのI/Oや高速プリントは、オフラインのIBM 1401との間で磁気テープを転送して行うことがよくあった。その後、データチャネルを使用して7090を7040に、または7094を7044に接続して**IBM 7094/7044** **Direct Coupled System (DCS)**を構成するために使用された。この構成では、より高速な1400シリーズの周辺機器を使用できる 7044 が主にI/Oを処理した。

**FORTRANアセンブリプログラム**

FORTRAN Assembly Program (FAP) は、IBMの間に合わせのFMS (Fortran Monitor System)オペレーティングシステムの下で動作する、709、7090、および 7094 用のアセンブラである。以前のアセンブラは SCAT (SHARE Compiler-Assembler-Translator) であった。マクロはベル研究所 (BE-FAP) によってFAPに追加され、最終的な7090/7094アセンブラはIBSYSの下でIBMAPとなった。

メモリを予約するために使用されるその擬似命令BSSは「BSSセクション」という一般名の由来であり、今日でも多くのアセンブリ言語で、実行イメージに保存する必要のないタイプの予約メモリアドレス範囲を指定するために使用されている。

## 事務処理用アーキテクチャ (702/705/7080)

**[[IBM 702]]**と**[[IBM 705]]**は類似しており、705は702のプログラムの多くを変更することなく動かすことができるが、完全に互換性があるわけではない。

**IBM 7080**は705をトランジスタ化したバージョンで、さまざまな改良が加えられている。

後方互換性のために、705 I モード、705 II モード、705 III モード、または完全な 7080モードで実行できる。

**データ形式**

データは、レコードマークで終わる可変長の文字列で表される。

**命令形式**

5文字：1文字のオペコードと4文字のアドレス - OAAAA

**レジスタ**
* 702
** 2つのアキュムレータ(A & B) - 512文字
* 705
** 1アキュムレータ - 256文字
** 14個の補助記憶装置 - 16文字
** 1つの補助記憶装置 - 32文字
* 7080
** 1アキュムレータ - 256文字
** 30個の補助記憶装置 - 512文字
** 32個の通信記憶装置 - 8文字
**メモリ**

* 702
** ウィリアムズ管で2,000～10,000文字（2,000文字単位)
** 文字サイクルレート - 23マイクロ秒
* 705 (モデルI、II、またはIII)
** 20,000または40,000または80,000文字のコアメモリ
** 文字サイクルレート - 17マイクロ秒または9.8マイクロ秒
* 7080
** 80,000文字または160,000文字のコアメモリ
** 文字サイクルレート - 2.18マイクロ秒

**入力/出力**

705 と基本的な 7080 は、7ビット・インターフェイスのチャネルを使用する。7080は、7908データチャンネルを装備して、9ビット・インターフェースを使用して高速デバイスを接続することができる。
## 1400シリーズアーキテクチャ (7010)
700/7000 事務処理用アーキテクチャは、大きく成功したIBM 1400シリーズの中型ビジネス・コンピュータに影響を与えた。その後、IBMはIBM 7010と呼ばれるIBM 1410のメインフレーム版を発表した。

**データ形式**

* データは、で終わる可変長の文字列で表される。

**命令形式**

* 可変長：1、2、6、7、11、12文字

**レジスタ**

なし、すべての命令はメモリ上で動作した。ただし、低位メモリの固定位置にある15個の5文字フィールドは、インデックスレジスタとして扱うことができ、その値を命令で指定されたアドレスに追加することができる。また、現在処理中の文字のアドレスなど、今日では目に見えない内部レジスタもプログラマに公開されている。

**メモリ**

* 100,000文字

## 10進アーキテクチャ (7070/7072/7074)

**[[IBM 7070]]**、**IBM 7072**、**IBM 7074**は、10進の固定ワード長のマシンである。

これらは、小型で古いIBM 650と同様に10桁ワードを使用しているが、650と命令セットの互換性はない。

**データ形式**

* ワード長 - 10進数10桁＋符号
* 数字エンコーディング - 5者択2符号(two-out-of-fiveコード)
* 浮動小数点 - オプションで、2桁の指数を使用
* 各ワードの3つの記号 - プラス、マイナス、アルファ
** プラスとマイナスは10桁の数値を示す。
** アルファは、数字のペアでコード化された5文字のテキストを示す。(61 = A, 91 = 1)
**命令形式**

* すべての指示は1ワードを使用する
* 2桁のオペコード (符号を含む、プラスまたはマイナスのみ)
* 2桁のインデックスレジスタ
* 2桁のフィールドコントロール - 桁の集合を選択し、左右に移動することができる
* 4桁のアドレス
**レジスタ**
* すべてのレジスタは1ワードを使用し、メモリとしてアドレスを指定することもできる。
* アキュムレータ - 3つ (アドレス 9991、9992、9993 - 標準、99991、99992、99993 - 拡張 7074)
* プログラムレジスタ - 1つ (アドレス 9995 - 標準、99995 - 拡張 7074)
** コンソールからのみアドレス指定可能。現在の命令を格納する。
* 命令カウンタ - 1つ (アドレス9999 - 標準、99999 - 拡張 7074)
** コンソールからのみアドレス指定可能
* インデックスレジスタ - 99 (アドレス 0001-0099)

**メモリ**
* 5000～9990ワード (標準)
* 15000～30000ワード (拡張 7074)
* アクセス時間 - 6マイクロ秒 (7070/7072)、4マイクロ秒 (7074)
* 加算時間 - 72マイクロ秒 (7070)、12マイクロ秒 (7072)、10マイクロ秒 (7074)
**入力/出力**

707x は7ビット・インターフェースのチャネルを使用する。7070と7074は、9ビット・インターフェイスを使用してより高速なデバイスを接続するために、7907のデータチャネルを装備することができる。
## タイムライン

IBM 7074は、1962年に米国内国歳入庁で使用された。

IBM 7700データ収集システム(IBM 7700 Data Acquisition System)は、その番号と発表日が1963年12月2日であるにもかかわらず、IBM 7000シリーズのメンバーではない。

## パフォーマンス
700シリーズと7000シリーズのすべてのマシンは、Wheatstone (1972年)、Dhrystone (1984年)、LINPACK (1979年)、 (1986年) などの標準的な性能測定ツールよりも前のものである。

下の表では、GibsonとKnightの測定では速度を報告しており、数値が大きいほど速度が高くなる。TRIDIAの測定では時間を報告するが、数値が低い方が高速である。

## 参照項目
* IBM 650
* IBM 1400シリーズ
* IBM System/360シリーズ
* IBM System/370シリーズ

## ノート

## 脚注

## 外部リンク

*IBM Mainframe family tree
*The Architecture of IBM's Early Computers (PDF)
*C Gordon Bell, ''Computer Structures: Readings and Examples'', McGraw-Hill, 1971; part 6, section 1, "The IBM 701-7094 II Sequence, a Family by Evolution", 
*IBM 705
*IBM 7030 Stretch
*IBM 7070
*IBM 7094
*IBM 7090/94 Architecture
*Jack Harper's FAP page
*Birth of an Unwanted IBM Computer, by Bob Bemer