「IBM 650」の版間の差分

en:IBM 650(2012年6月2日 13:43:43(UTC))の翻訳をマージ
m (r2.7.1) (ロボットによる 追加: uk:IBM 650)
(en:IBM 650(2012年6月2日 13:43:43(UTC))の翻訳をマージ)
タグ: サイズの大幅な増減
[[ファイル:IBM 650 at Texas A&M.jpg|280px|thumb|テキサスA&M大学の IBM 650。 右にあるのが IBM 533 パンチカード・リーダ/パンチャー]]
[[ファイル:IBM-650-panel.jpg|right|250px|thumb|IBM 650の前面パネル(1956年製造) ランプが7個ずつ組になっている、すなわちバイクイナリ方式であることが分かる]]
[[ファイル:IBM-650-panel.jpg|right|280px|thumb|IBM 650 の前面パネル(1956年製造) 二五進法表示になっている。]]
'''IBM 650'''(アイビーエムろくごーまる)は[[IBM]]の最初の[[コンピュータ]]のひとつであり、世界初の[[大量生産]]されたコンピュータである。[[1953年]]に発表され、[[1954年]]の初出荷から生産終了の[[1962年]]までに2000システム以上が製造された。保守サポートは[[1969年]]に停止された。
[[ファイル:IBM-650-wiring.jpg|280px|thumb|IBM 650の前面パネルの裏側]]
[[ファイル:IBM 650 EMMA.jpg|280px|thumb|ノルウェーの最初の IBM 650 (1959)。"EMMA" と呼ばれていた。[[CPU]](右)、入出力装置(中央)、パンチカードソータ(左)。([[オスロ]]、{{仮リンク|ノルウェー科学技術博物館|en|Norwegian Museum of Science and Technology}})]]
[[ファイル:RoehreIBM 090325.jpg|thumb|upright|650で使われていたタイプの真空管回路モジュール]]
[[ファイル:BronxScienceProgrammingClassroom1960.jpg|thumb|[[:en:Bronx High School of Science|Bronx High School of Science]] での1960年の教室。IBM 650 の命令コード表が黒板の右上にある。]]
'''IBM 650'''(アイビーエムろくごーまる)<ref name="IBM06">[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph06.html IBM 650 installation]</ref>は[[IBM]]の最初の[[コンピュータ]]のひとつであり、世界初の[[大量生産]]されたコンピュータである<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph05.html IBM 650 Assembly]</ref>。[[1953年]]に発表され、[[1954年]]の初出荷から生産終了の[[1962年]]までに2000システム以上が製造された。保守サポートは[[1969年]]に終了。
 
== 概要 ==
650は主に科学技術計算用とされ、[[IBM]]の[[パンチカード]]機器([[タビュレーティングマシン]]の進化した [[:en:IBM 604|IBM 604]] などの機械)のユーザーに対してまともな[[コンピュータ]]へのアップグレードパスを提供する目的で設計された<ref>[http://www.ibm.com/ibm/history/exhibits/650/650_cu1.html 650 Customers]</ref>。同時期に科学技術計算用の[[IBM 701]]と、[[磁気テープ]]装置を基本としたビジネス用の[[IBM 702]]がリリースされたが、650が最も多く製造された。1958年までに800台が販売されたが、これは当時世界で販売されたコンピュータ全体の半分以上を占める台数である。[[トーマス・J・ワトソン・ジュニア]]はこれを「コンピュータ界の[[フォード・モデルT|T型フォード]]」と称した<ref>{{cite book|last = Watson|first = Thomas Jr.|coauthors = Peter Petre|date = 1990年|title = 'Father and Son & Co.'|publisher = Bantam Press|location = [[ロンドン]]}} 244ページ</ref>
同時期に科学技術計算用の[[IBM 701]]と、[[磁気テープ]]装置を基本としたビジネス用の[[IBM 702]]がリリースされたが、650が最も多く製造された。1958年までに800台が販売されたが、これは当時世界で販売されたコンピュータ全体の半分以上を占める台数である。[[トーマス・J・ワトソン・ジュニア]]はこれを「コンピュータ界の[[フォード・モデルT|T型フォード]]」と称した。<ref>{{cite book|last = Watson|first = Thomas Jr.|coauthors = Peter Petre|date = 1990年|title = 'Father and Son & Co.'|publisher = Bantam Press|location = [[ロンドン]]}} 244ページ</ref>
 
2アドレス命令形式で、データもアドレスも[[二五進法]]の[[二進化十進表現]]である<ref>「[[二五進法]]」で解説されている方式とは異なり、7ビットを2ビットと5ビットに分け、2ビット部分では "10" が 5 "01" が 0 を意味し、残る5ビットは各ビット位置が 0 から 4 までの数に対応している。従って、どの数であっても必ず2ビットがONになっている。</ref>。メモリは[[磁気ドラムメモリ]]である。比較的安価でプログラミングも単純であるため、潜水艦乗組員の能力のモデリング<ref>{{Cite book |title=Integrated Models of Cognitive Systems |first=Wayne D. |last=Gray |publisher=Oxford University Press |isbn=978-0195189193 |year=2007 |page=36}}</ref>から高校でのプログラミング教育まで、様々な用途がここから生まれた。
後継機は[[トランジスタ]]化した[[IBM 1401]]である。
 
== ハードウェア ==
650は、[[磁気ドラムメモリ]]を[[記憶装置]]に採用したバイクイナリ式[[二進化十進表現]]のマシンである。バイクイナリとは7[[ビット]]で[[十進数]]一桁を表すもので、7ビットのうち2ビットだけが常に1となっている。そのため、ビット化けが即座にわかるようになっている。
 
基本の650システムは以下の3つの機器筐体から構成される。
* コンソールユニット (TypeIBM 650<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph01.html IBM 650 Console Unit]</ref>)
* 電源ユニット (TypeIBM 655<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph15.html IBM 655 Power Unit]</ref>)
* カード読取装置/パンチ装置 (Type[[:en:IBM 533|IBM 533]], 537<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph14.html IBM 537 Card Read Punch]</ref>)
オプション装備として以下のものがある。
* ディスク装置 (IBM 355<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph07.html IBM 355 Disk Storage]</ref>) - ディスク装置を備えたシステムを ''IBM RAMAC 650 Data Processing System'' と呼んだ。
* ディスク装置(Type 355)、カード読取装置(Type 543)、カードパンチ装置(Type 544)
* カード読取装置 (IBM 543)
* 制御装置(Type 652)、補助装置(Type 653)、補助英字装置(Auxiliary Alphabetic Unit)(Type 654)、磁気テープ装置(Type 727)、問合せ端末(Type 838)
* カードパンチ装置 (IBM 544)
* 制御装置 (IBM 652<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph12.html IBM 652 Control Unit]</ref>) - 磁気テープコントローラ
* 補助装置 (IBM 653<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph11.html IBM 653 Auxiliary Unit]</ref>) - 磁気コアメモリ、インデックスレジスタ、浮動小数点演算機構
* 補助英字装置 (IBM 654)
* 磁気テープ装置 (IBM 727<ref name="IBM06" />)
* 問合せ端末(IBM 838<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph16.html IBM 838 Inquiry Station]</ref>)
* Tape To Card Punch IBM 46 Model 3、Tape To Card Punch IBM 47 Model 3 - 磁気テープからパンチカードへの変換を行う装置
* 会計機 [[:en:IBM 407|IBM 407]]
 
[[磁気ドラムメモリ]]<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_ph09.html IBM 650 Magnetic Drum]</ref>には2000個の符号付十桁の[[ワード]]が格納できる(文字ならば、1ワードに5文字格納)。[[メモリアドレス|アドレス]]範囲は 0000 から 1999 で、[[バイト (情報)|今日の単位]]で言えば約8.5[[キロバイト|kB]]である<ref>各ワードは符号付10桁の十進数を表現できるので、2<sup>33</sup>が約85億(10桁)である符号を考慮すると2<sup>34</sup>、すなわち約170億となる。従って IBM 650 の各ワードは少なくとも現代的な意味での34ビットの情報を格納できる。2000×34=68000ビットとなるので、8で割ると8500バイトとなり、約8.5kBという記述になった。1024単位なら 8.3KiB である。</ref>。1959年に登場た Model 4 では磁気ドラムの容量が倍増て4,000ワードとなった<ref>[http://www-03.ibm.com/ibm/history/exhibits/650/650_pr4.html IBM 640 Model 4 announcement]</ref>。この装置は必要なデータが格納されている部分が回転によってヘッドのところに来るまで読み書きできないため、非常に低速だった(回転数は12,500[[Rpm (単位)|rpm]]で、最適化した平均アクセス時間は2.5ミリ秒)。このため、各[[命令 (コンピュータ)|命令]]ワード内の二つ目のアドレスは次に実行すべき命令のアドレスを格納するようになっていた。プログラムを最適化するには、前の命令の実行時間から次の命令語を置くべきドラム上の位置を計算してアドレスを求める必要があった。Table"table lookup" という特殊な命令が用意されていて、与えらる。こた10桁は磁気ドラムの1トラック(50ワードを次が格納されている)46先頭ワードを比較のための値とし、その後に昇順に整列したデータが並でいるもとして、ドラム上にあが1回転すワードと5ミリ秒間に比較を行い最初に等しいかまたは大きい値が出現したときトラワードのアドレスをアキュムレータにセクへ移る(ラックにはする。これを使うと、1963年の1000倍高速なコンピュータの約3分の1回転程度の速度50ワブル比較格納され可能であ)。<!--(IBM 意味不明7040 Thisで同じことを行うと1.5ミリ秒かかり、IBM was650 a feattable welookup (who??)命令で同じことをすると5ミリ秒かかる)。高水準言語を使うと、(テーブル参照に限ると)IBM could7040 not match on our one-thousand times faster binary machine in 1963. -->の方がずっと遅くなる。
 
オプションの補助装置(Type(IBM 653)は[[1955年]][[5月3日]]にリリースされたもので、以下の3つの機能を持っていた。
* 60ワード分の容量の[[磁気コアメモリ]]。アドレスは 9000 から 9059。小さな高速[[記憶装置]](アクセス時間は96マイクロ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|en|IBM 7070}} は「トランジスタ化した IBM 650」としてアップグレードパスを提供するよう設計されている。1959年に登場した [[IBM 1620]] は科学技術計算分野のローエンド用である。どちらも十進方式だが、命令セットの互換性はない。
 
== 命令セット ==
IBM 650 の命令は、2桁の命令コード、4桁のデータアドレス、4桁の次命令アドレスで構成される。符号は無視される。[[アキュムレータ (コンピュータ)|アキュムレータ]]は20桁で、上半分の10桁と下半分の10桁ずつ別に扱われることが多い。符号は全体で1つである。磁気ドラムからデータを読み込むとディストリビュータという一種のレジスタに格納される。実行中命令はプログラムレジスタに保持される。算術演算は1桁相当の加算器を使って行う。浮動小数点演算機構や磁気コアメモリ、インデックスレジスタ、入出力装置を追加すると、命令も追加される。基本モデルには42種類の命令がある。あらゆるオプションを追加すると、全部で97命令となる<ref>http://www.bitsavers.org/pdf/ibm/650/24-5003-0_CPU_Extensions.pdf</ref>。
 
{| class="wikitable"
|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 と同じ
|-
|}
 
== ソフトウェア ==
[[ソフトウェア]]としては、以下のものがあった。
[[ソフトウェア]]としては、[[FORTRAN]]の一種 FORTRANSIT がある。これは、[[コンパイラ|コンパイル]]結果としてIT(Interpretive Language)を生成し、さらにそれを SOAP(Symbolic Optimized Assembler Program)という[[機械語]]に一対一対応する言語にコンパイルする。他に BLIS(Bell Laboratories Interpretive System)、SPACE(Simplified Programming Anyone Can Enjoy)などのコンパイラがあった。
* BLIS ([[ベル研究所|Bell Laboratories]] Interpretive System)<ref>J. Paul Morrison, ''Flow-Based Programming: A New Approach to Application Development,'' van Nostrand Reinhold, 1994, ISBN 0-442-01771-5</ref> - 言語処理系。数のみの3アドレス方式
* IPL - 初期のリスト処理言語。IPL-V というバージョンが最も有名。
* SPACE (Simplified Programming Anyone Can Enjoy) - ビジネス指向の2ステップコンパイラ(下記の SOAP を経由する)
* IT (Internal Translator)<ref>{{Cite book| first = A.J. | last = [[アラン・パリス|Perlis]] | coauthors = et al. | title = Internal Translator; IT, A Compiler for the 650 | date = 4/18/58 | url = http://www.bitsavers.org/pdf/ibm/650/CarnegieInternalTranslator.pdf | id = 650 Library Program 2.1.001 |format=PDF}}</ref>
* SOAP (Symbolic Optimal Assembly Program) - [[機械語]]に一対一対応する言語<ref>{{Cite book| last = IBM | title = SOAP II for the IBM 650 | year = 1957 | url = http://www.bitsavers.org/pdf/ibm/650/24-4000-0_SOAPII.pdf | id = C24-4000-0 |format=PDF}}</ref>
* FOR TRANSIT - [[FORTRAN]]の一種。ソースをIT(上記)に変換し、ITからSOAP(上記)に変換し、最終的にオブジェクトコードにする<ref>{{Cite book| last = IBM | title = FOR TRANSIT Automatic Coding System for the IBM 650 | year = 1959 | url = http://www.bitsavers.org/pdf/ibm/650/28-4028_FOR_TRANSIT.pdf | id = 28-4028 |format=PDF}}</ref>。
* FORTRAN<ref>{{Cite book| last = IBM | title = FORTRAN Automatic Coding System for the IBM 650 | year = 1960 | url = http://www.bitsavers.org/pdf/ibm/650/29-4047_FORTRAN.pdf | id = 29-4047 |format=PDF}}</ref>
* GATE - 変数名が1文字という単純なコンパイラ
* RUNCIBLE (Revised Unified New Compiler IT Basic Language Extended)
* TASS (Technical Assembly System) - マクロアセンブラ
 
== 脚注 ==
{{Reflist}}
 
== 参考文献 ==
* {{Cite book| last = IBM | title =IBM 650 magnetic drum data-processing machine manual of operation. | url = http://www.bitsavers.org/pdf/ibm/650/22-6060-2_650_OperMan.pdf | year = 1955 | id =22-6060 |format=PDF}}
* {{Cite book| last = IBM | title = IBM Presents the 650 Magnetic Drum Data Processing Machine | url = http://archive.computerhistory.org/resources/text/IBM/IBM.650.1955.102646125.pdf | year = 1955 | id = 32-6770 |format=PDF}}
* {{Cite book| last = Andree | first = Richard V. | title = Programming the IBM 650 magnetic drum computer and data-processing machine | year = 1958}}
* {{Cite journal| first = Donald E. | last = Knuth | title = The IBM 650: An Appreciation from the Field | journal = IEEE Annals of the History of Computing | volume = 8 | issue = 1 | date = January–March 1986 | pages = 50–55 | doi = 10.1109/MAHC.1986.10010}} - [[ドナルド・クヌース]]は ''[[The Art of Computer Programming]]'' の献辞に IBM 650 を挙げている。
* [http://www-03.ibm.com/ibm/history/exhibits/650/650_intro.html IBM Archives: Workhorse of Modern Industry: The IBM 650]
 
== 外部リンク ==
* {{Cite book| first = Martin H. | last = Weik | title = A Third Survey of Domestic Electronic Digital Computing Systems | publisher = Ballistic Research Laboratories (BRL) | date = March 1961 | id = Report No. 1115 | url = http://ed-thelen.org/comp-hist/BRL61.html#TOC}} - 40ページに渡り、IBM 650 の顧客、用途、仕様、コストなどの調査結果が記載されている。
いずれも英文
* [http://www-1.ibm.com/ibm/history/exhibits/650/650_intro.html IBM Archives: Workhorse of Modern Industry: The IBM 650]
* [http://www.columbia.edu/acis/history/650.html The IBM 650 at Columbia University]
* [http://sim650.googlecode.com An IBM 650 Simulator written in Python]
* [http://infinitefish.com/650/650.html An IBM 650 Simulator]
* [http://www.theage.com.au/news/Perspectives/History-galore-at-IBM-museum/2005/01/31/1107020294580.html History Galore at IBM Museum].
* [http://www.bitsavers.org/pdf/ibm/650/ IBM 650 documents at Bitsavers.org] (PDFファイル群)
* [http://www.mta.ca/~amiller/cs3711/cs3711_ibm650.html IBM 650 assembler and byte code interpreters]
 
== 脚注 ==
<references />
 
{{IBM_Computers}}
25,487

回編集