IBM 650

世界初の大量生産されたコンピュータ

IBM 650(アイビーエムろくごーまる)[1]IBMの最初のコンピュータのひとつであり、世界初の大量生産されたコンピュータである[2]1953年に発表され、1954年の初出荷から生産終了の1962年までに2000システム以上が製造された。保守サポートは1969年に終了。

テキサスA&M大学の IBM 650。 右にあるのが IBM 533 パンチカード・リーダ/パンチャー
IBM 650 の前面パネル(1956年製造) 二五進法表示になっている。
IBM 650の前面パネルの裏側
ノルウェーの最初の IBM 650 (1959)。"EMMA" と呼ばれていた。CPU(右)、入出力装置(中央)、パンチカードソータ(左)。(オスロノルウェー科学技術博物館
650で使われていたタイプの真空管回路モジュール
Bronx High School of Science での1960年の教室。IBM 650 の命令コード表が黒板の右上にある。

概要 編集

650は主に科学技術計算用とされ、IBMパンチカード機器(タビュレーティングマシンの進化した IBM 604 などの機械)のユーザーに対してまともなコンピュータへのアップグレードパスを提供する目的で設計された[3]。同時期に科学技術計算用のIBM 701と、磁気テープ装置を基本としたビジネス用のIBM 702がリリースされたが、650が最も多く製造された。1958年までに800台が販売されたが、これは当時世界で販売されたコンピュータ全体の半分以上を占める台数である。トーマス・J・ワトソン・ジュニアはこれを「コンピュータ界のT型フォード」と称した[4]

2アドレス命令形式で、データもアドレスも二五進法二進化十進表現である[※ 1]。メモリは磁気ドラムメモリである。比較的安価でプログラミングも単純であるため、潜水艦乗組員の能力のモデリング[5]から高校でのプログラミング教育まで、様々な用途がここから生まれた。

ハードウェア 編集

基本の650システムは以下の3つの機器筐体から構成される。

  • コンソールユニット (IBM 650[6])
  • 電源ユニット (IBM 655[7])
  • カード読取装置/パンチ装置 (IBM 533, 537[8])

オプション装備として以下のものがある。

  • ディスク装置 (IBM 355[9]) - ディスク装置を備えたシステムを IBM RAMAC 650 Data Processing System と呼んだ。
  • カード読取装置 (IBM 543)
  • カードパンチ装置 (IBM 544)
  • 制御装置 (IBM 652[10]) - 磁気テープコントローラ
  • 補助装置 (IBM 653[11]) - 磁気コアメモリ、インデックスレジスタ、浮動小数点演算機構
  • 補助英字装置 (IBM 654)
  • 磁気テープ装置 (IBM 727[1])
  • 問合せ端末(IBM 838[12])
  • Tape To Card Punch IBM 46 Model 3、Tape To Card Punch IBM 47 Model 3 - 磁気テープからパンチカードへの変換を行う装置
  • 会計機 IBM 407

磁気ドラムメモリ[13]には2000個の符号付十桁のワードが格納できる(文字ならば、1ワードに5文字格納)。アドレス範囲は 0000 から 1999 で、今日の単位で言えば約8.5kBである[※ 2]。1959年に登場した Model 4 では磁気ドラムの容量が倍増して4,000ワードとなった[14]。この装置は必要なデータが格納されている部分が回転によってヘッドのところに来るまで読み書きできないため、非常に低速だった(回転数は12,500rpmで、最適化した平均アクセス時間は2.5ミリ秒)。このため、各命令ワード内の二つ目のアドレスは次に実行すべき命令のアドレスを格納するようになっていた。プログラムを最適化するには、前の命令の実行時間から次の命令語を置くべきドラム上の位置を計算してアドレスを求める必要があった。"table lookup" という特殊な命令が用意されている。これは磁気ドラムの1トラック(50ワードが格納されている)の先頭ワードを比較のための値とし、その後に昇順に整列したデータが並んでいるものとして、ドラムが1回転する間に比較を行い、最初に等しいかまたは大きい値が出現したときのワードのアドレスをアキュムレータにセットする。これを使うと、1963年の1000倍高速なコンピュータの約3分の1程度の速度でテーブル比較が可能である(IBM 7040 で同じことを行うと1.5ミリ秒かかり、IBM 650 で table lookup 命令で同じことをすると5ミリ秒かかる)。高水準言語を使うと、(テーブル参照に限ると)IBM 7040 の方がずっと遅くなる。

オプションの補助装置(IBM 653)は1955年5月3日にリリースされたもので、以下の3つの機能を持っていた。

  • 60ワード分の容量の磁気コアメモリ。アドレスは 9000 から 9059。小さな高速記憶装置(アクセス時間は96μ秒で、ドラムの26倍の速さ)で、テープおよびディスクの入出力バッファとして必要とされた。
  • 3個の4桁サイズのインデックスレジスタ。アドレスは 8005 から 8007。ドラムメモリやコアメモリを追加したとき、それらの拡張された空間にアクセスする手段として使われた。
  • 浮動小数点演算装置。8桁の仮数部と2桁の指数部の二五進法で浮動小数点数を表す。これで表せる範囲は ±0.10000000E-50 から ±0.99999999E+49 までである。

IBM 533 パンチカードリーダ/パンチ装置は、26桁の英数字を読み取ることしかできない。拡張は可能だが、最大でも50桁を超えられない。そのため1枚から最大でも10ワードまでしか読み取れない(1ワードは5文字)。

1960年に発表された IBM 7070 は「トランジスタ化した IBM 650」としてアップグレードパスを提供するよう設計されている。1959年に登場した IBM 1620 は科学技術計算分野のローエンド用である。どちらも十進方式だが、命令セットの互換性はない。

命令セット 編集

IBM 650 の命令は、2桁の命令コード、4桁のデータアドレス、4桁の次命令アドレスで構成される。符号は無視される。アキュムレータは20桁で、上半分の10桁と下半分の10桁ずつ別に扱われることが多い。符号は全体で1つである。磁気ドラムからデータを読み込むとディストリビュータという一種のレジスタに格納される。実行中命令はプログラムレジスタに保持される。算術演算は1桁相当の加算器を使って行う。浮動小数点演算機構や磁気コアメモリ、インデックスレジスタ、入出力装置を追加すると、命令も追加される。基本モデルには42種類の命令がある。あらゆるオプションを追加すると、全部で97命令となる[15]

70 RD パンチカードから磁気ドラムに読み込む
71 PCH 磁気ドラムの内容をパンチカードに出力
69 LD ディストリビュータ・レジスタにロード
24 STD ディストリビュータ・レジスタの内容をストア
10 AU アキュムレータの上半分に加算
15 AL アキュムレータの下半分に加算
11 SU アキュムレータの上半分から減算
16 SL アキュムレータの下半分から減算
60 RAU アキュムレータ全体をリセットして、上半分に加算
65 RAL アキュムレータ全体をリセットして、下半分に加算
61 RSU アキュムレータ全体をリセットして、上半分から減算
66 RSL アキュムレータ全体をリセットして、下半分から減算
20 STL アキュムレータの下半分を磁気ドラムにストア
21 STU アキュムレータの上半分を磁気ドラムにストア。ストアされる値はアキュムレータの符号を含む。除算後の場合は、余りの符号がストアされる。
22 STDA アキュムレータの下から5桁目から8桁目までを指定されたアドレスの同じ位置にストアする。命令のオペランド書き換え用
23 STIA アキュムレータの下から1桁目から4桁目までを指定されたアドレスの同じ位置にストアする。命令のオペランド書き換え用
17 AABL アキュムレータの下半分に絶対値を加算
67 RAABL アキュムレータ全体をリセット後、下半分に絶対値を加算
18 SABL アキュムレータの下半分から絶対値を減算
68 RSABL アキュムレータ全体をリセット後、下半分から絶対値を減算
19 MULT 乗算、被乗数はアキュムレータの上半分、積はアキュムレータ全体
14 DIV 除算、アキュムレータの上半分には余り、下半分には商がセットされる
64 DIVRU 除算後、アキュムレータの上半分、すなわち余りを消去
44 BRNZU アキュムレータの上半分がゼロでないとき分岐
45 BRNZ アキュムレータ全体がゼロでないとき分岐
46 BRMIN アキュムレータの符号が負のとき分岐
47 BROV オーバーフローが起きているとき分岐
90-99 BRD ディストリビュータ・レジスタの対応する桁が8なら分岐、9なら分岐しない。それ以外ならエラー。IBM 533 の制御パネルからCPUに信号を送るのに使われた。
30 SRT アキュムレータの内容を右シフト(データアドレスをシフトする桁数として解釈する)
31 SRD アキュムレータの内容を右シフトすると同時に、数値としての丸めを施す。
35 SLT アキュムレータの内容を左シフト
36 SCT アキュムレータの上位桁がゼロの部分を左シフトして消し去り、何桁シフトしたかを最下位2桁に書き込む。全くシフトしない場合は最下位2桁がゼロになる。最大10桁までしかシフトしないので、アキュムレータの下半分の上位桁がゼロであってもそのままとなる。
84 TLU テーブル参照(上述)
00 No-Op 何もしない
01 Stop コンソールのスイッチがstopに設定されていれば停止。さもなくば No-Op と同じ

ソフトウェア 編集

ソフトウェアとしては、以下のものがあった。

  • BLIS (Bell Laboratories Interpretive System)[16] - 言語処理系。数のみの3アドレス方式
  • IPL - 初期のリスト処理言語。IPL-V というバージョンが最も有名。
  • SPACE (Simplified Programming Anyone Can Enjoy) - ビジネス指向の2ステップコンパイラ(下記の SOAP を経由する)
  • IT (Internal Translator)[17]
  • SOAP (Symbolic Optimal Assembly Program) - 機械語に一対一対応する言語[18]
  • FOR TRANSIT - FORTRANの一種。ソースをIT(上記)に変換し、ITからSOAP(上記)に変換し、最終的にオブジェクトコードにする[19]
  • FORTRAN[20]
  • GATE - 変数名が1文字という単純なコンパイラ
  • RUNCIBLE (Revised Unified New Compiler IT Basic Language Extended)
  • TASS (Technical Assembly System) - マクロアセンブラ

注釈 編集

  1. ^ 二五進法」で解説されている方式とは異なり、7ビットを2ビットと5ビットに分け、2ビット部分では "10" が 5 "01" が 0 を意味し、残る5ビットは各ビット位置が 0 から 4 までの数に対応している。従って、どの数であっても必ず2ビットがONになっている。
  2. ^ 各ワードは符号付10桁の十進数を表現できるので、233が約85億(10桁)である。符号を考慮すると234、すなわち約170億となる。従って IBM 650 の各ワードは少なくとも現代的な意味での34ビットの情報を格納できる。2000×34=68000ビットとなるので、8で割ると8500バイトとなり、約8.5kBという記述になった。1024単位なら 8.3KiB である。

出典 編集

  1. ^ a b IBM 650 installation
  2. ^ IBM 650 Assembly
  3. ^ 650 Customers
  4. ^ Watson, Thomas Jr.; Peter Petre (1990年). 'Father and Son & Co.'. ロンドン: Bantam Press  244ページ
  5. ^ Gray, Wayne D. (2007). Integrated Models of Cognitive Systems. Oxford University Press. p. 36. ISBN 978-0195189193 
  6. ^ IBM 650 Console Unit
  7. ^ IBM 655 Power Unit
  8. ^ IBM 537 Card Read Punch
  9. ^ IBM 355 Disk Storage
  10. ^ IBM 652 Control Unit
  11. ^ IBM 653 Auxiliary Unit
  12. ^ IBM 838 Inquiry Station
  13. ^ IBM 650 Magnetic Drum
  14. ^ IBM 640 Model 4 announcement
  15. ^ http://www.bitsavers.org/pdf/ibm/650/24-5003-0_CPU_Extensions.pdf "IBM 650 DATA PROCESSING SYSTEM BULLETIN"
  16. ^ J. Paul Morrison, Flow-Based Programming: A New Approach to Application Development, van Nostrand Reinhold, 1994, ISBN 0-442-01771-5
  17. ^ Perlis, A.J.; et al. (4/18/58) (PDF). Internal Translator; IT, A Compiler for the 650. 650 Library Program 2.1.001. http://www.bitsavers.org/pdf/ibm/650/CarnegieInternalTranslator.pdf 
  18. ^ IBM (1957) (PDF). SOAP II for the IBM 650. C24-4000-0. http://www.bitsavers.org/pdf/ibm/650/24-4000-0_SOAPII.pdf 
  19. ^ IBM (1959) (PDF). FOR TRANSIT Automatic Coding System for the IBM 650. 28-4028. http://www.bitsavers.org/pdf/ibm/650/28-4028_FOR_TRANSIT.pdf 
  20. ^ IBM (1960) (PDF). FORTRAN Automatic Coding System for the IBM 650. 29-4047. http://www.bitsavers.org/pdf/ibm/650/29-4047_FORTRAN.pdf 

参考文献 編集

外部リンク 編集