IBM 709

IBM 709はIBMが1958年8月に発表した初期のコンピュータシステムのひとつ。IBM 704 の改良版である。IBM 709 では、入出力のオーバーラップ機能、間接アドレス指定、十進数命令などが追加されている。ワード長は36ビットで、アドレス空間は32Kワードであり、1秒間に42,000回の加減算または5000回の乗算が可能とされていた。
オプションのハードウェアエミュレータで IBM 704 のプログラムを実行することができた。これは初の商用エミュレータである。レジスタとよく使われる 704 命令が709のハードウェア上でエミュレートされた。複雑な 704 命令は 709 のソフトウェアでエミュレートされている。
709は真空管を使っている。709をトランジスタ化したのが IBM 7090 で、1959年11月に登場した。
バッチ処理OSの FORTRAN Assembly Program は、709向けに開発されたのが最初である。
レジスタ.
IBM 709 の持つレジスタは次の通り。
デクリメントレジスタとはインデックスレジスタであり、ベースアドレスからその値を引いて実効アドレスとするため、このように呼ばれた。2の補数で加算を行う命令も用意されていた。1命令で3つのデクリメントレジスタ全てを関与させることもできる。命令にある3ビットのタグフィールドは各ビットがそれぞれデクリメントレジスタに対応しているので、複数をONにすれば複数のデクリメントレジスタをアドレス計算に使用できる。ただし、その場合デクリメントレジスタの内容を加算するわけではなく論理和で結合するp. 12。
命令形式とデータ形式.
命令形式にはタイプAからタイプEまで5種類がある。ほとんどの命令はタイプB形式である。
タイプA命令形式は、「プレフィックス」3ビット、「デクリメント」15ビット、「タグ」3ビット、「アドレス」15ビットから構成される。プレフィックス部は命令の種類を指定する。デクリメント部は命令結果を修飾する即値を格納するか、命令の種類指定に使われる。タグ部はインデックスレジスタを指定し、指定されたインデックスレジスタの内容がアドレスから引かれて実効アドレスとなる。アドレス部はアドレスか即値オペランドを格納している。タグフィールドで指定したデクリメントレジスタの内容に基づいて条件分岐する命令もある。プレフィックスの2ビット目と3ビット目が共にゼロの場合、タイプBと判断されるため、タイプAの命令は6種類しかない。
タイプBの命令形式は、12ビットの命令コード（うち2ビット目と3ビット目は常にゼロ）、2ビットのフラグフィールド、4ビットの未使用フィールド、3ビットのタグフィールド、15ビットのアドレスフィールドから構成される。
タイプC、タイプD、タイプEは特殊な命令で使われた。
タイプAの命令形式のようにデータワードをプレフィックス、デクリメント、タグ、アドレスのフィールドに分けて操作する命令があり、ワードの他のフィールドを変更せずに特定のフィールドだけを操作できる。
I/Oチャネル.
704 から 709 での主要な改良点は、磁気コアメモリの容量を増加させた点と独立したI/O専用プロセッサを初めて採用した点である(当初はデータ・シンクロナイザと呼ばれ、のちにチャネルと呼ばれるようになった)。704ではI/Oを主プロセッサのプログラムが直接制御していた。709には IBM 766 Data Synchronizer が付属し、2つの独立したプログラムされたI/Oチャネルを提供している。IBM 766 は最大3台接続でき、それぞれが最大20台の磁気テープ装置やパンチカードリーダー/パンチ/プリンターを制御できる。これにより接続可能な周辺機器数は6倍となり、主プロセッサがプログラムを実行中も並行して複数の入出力を進めることができるようになった。
IBM 738 Magnetic Core Storage も709向けに登場した。この装置の磁気コアドライブ回路は真空管で構成されているが、リードセンス用アンプはトランジスタを使用していた。