IBM 1401
出典: フリー百科事典『ウィキペディア(Wikipedia)』
IBM 1401は、IBMが1959年10月5日に発表した可変ワード長コンピュータであり、低価格な「ビジネスコンピュータ」として販売された。1971年2月8日に販売終了となった。
目次 |
[編集] 概要
ピーク時の1960年代中ごろには10,000台を超えるシステムが設置されていた。IBM 1401 は1971年2月に販売終了。それまで間に20,000台以上のシステムが製造され、IBM 1401 はIBMの中でも成功した製品のひとつとなったのである。
IBM 1401 は大型の科学技術計算機や大型のビジネスコンピュータなどのシステムでオフラインの周辺制御装置としても多く使用された。この形態のシステムでは大型機(IBM 7090など)は入出力を全て磁気テープで行い、1401 は他の形式の入力データ(パンチカードなど)を磁気テープに変換したり、出力テープの内容を他の周辺機器(カードパンチャーやラインプリンタ)に出力するのに使われた。
1401の主なソフトウェアとしては、単純なアセンブラ Symbolic Programming System (SPS) やより高度なアセンブラ Autocoder がある。広く使われた高級言語としては宣言型言語のRPGがあり、現在もSystem iでの会計処理などに使われている。FORTRAN IIは8000文字分以上のメモリを搭載したシステムで使用可能であった(ほぼ8Kバイトに相当)。小規模なメモリでコードを生成するため、当時としては先進的な中間言語方式を採用していた(John A. N. Lee(著)、The Anatomy of a Compiler、1968年、Appendix)。
市場の要望に応じて 1401 を大規模化するサポートは継続していたが、1964年に全てのリソースをSystem/360に集約するという決定がなされ、1400シリーズはやや唐突に終わることになった。顧客の1401上のソフトウェア資産を守るため、IBMはマイクロコードをROMの形式で360の一部モデルに搭載し、1401の命令をエミュレートできるようにした。ただし、2000年問題への対処の際に残っていた1401用コードも書き換えられたと考えられる。
特筆すべき導入事例としては、1960年代初期にシカゴ警察がハイエンド機 1440 を導入した事例がある。また、1970年代にはインドで多く導入され、現在のインド人IT起業家の一部は 1401 でコンピュータに触れたのである。
カリフォルニア州マウンテンビューのコンピュータ歴史博物館では、1401が復元され展示されている。
[編集] 1400シリーズ
1401 は 1400シリーズの最初のモデルである。その後、以下のようなモデルが登場した。
- IBM 1410(1960年) - ほぼ1401と同じ設計だが、アドレスが5桁(文字)になって最大 80,000文字分のメモリにアクセス可能となった。(1401でのアドレスは3桁、16,000文字分)
- IBM 1440(1962年)
- IBM 1460(1963年) - 論理的にはフルオプション装備の1401と同等(ハードウェアの実装は異なる)
[編集] BCDアーキテクチャ
BCDコンピュータと言われるが、1401でのバイト(英数字)は 6ビットで表現され、各ビットを A, B, 8, 4, 2, 1 と呼ぶ。AとBのビットは「ゾーン」ビット、8, 4, 2, 1 のビット群は「数字」ビットあるいは「BCD」ビットと呼ぶ。この6ビットバイトにはさらに2ビットが付属し、Cビットは 「odd パリティチェック」であり、Mビットは「ワードマーク」ビットである。これらは以下のようなフォーマットで配置される:
C B A 8 4 2 1 M
IBM 1401 の磁気コアメモリのアドレスは3個の6ビットバイトから構成される。1401のメモリ構成は 1.4K、2K、4K、8K、16K の5種類あった(ごく一部の1401は特注で32Kまで拡張された)。1.4K、2K、4Kのマシンはプログラムをコンパイルすることができず、より大容量のメモリを搭載したマシンでプログラムをコンパイルして供給する必要があった。
1000バイトのページ内アドレスは3桁のBCDビット群で指定される。BCDビット群が正しい値(つまり数字でない値)となっているアドレス値が与えられるとシステムが停止する。上位バイトのAビットとBビットでページを指定することができ、全体として4,000バイトのアドレスを指定することができる。さらに IBM 1406 メモリ拡張ユニットを使用すると下位バイトのゾーンビットを使用して最大16,000バイトまで使用することができた。アドレスの真ん中のバイトのゾーンビットはオプション機能のインデックスレジスタを指定するのに使用される。
[編集] 詳細
命令には6種類の長さがある(1, 2, 4, 5, 7, 8)。1バイトの命令は命令コードのみから成っていて、前の命令が残したアドレスを使用するようになっているため chained instructionsと呼ばれた。2バイト命令は命令コードと修飾バイトから構成されている。4バイト命令は命令コードとアドレスから構成され、5バイト命令はそれにさらに修飾バイトが付属している。7バイト命令は命令コードと2つのアドレスから構成され、8バイト命令はそれにさらに修飾バイトが付属している。
命令コードには必ずワードマークがセットされ、それ以外のバイトにはワードマークがセットされてはならない(ワードマークで命令の区切りを認識する)。次の命令の命令コードのワードマークを検出すると命令フェッチが停止してそれまでに読み込んだ命令の実行が開始される。これには以下のような例外がある:
- 2オペランドの SET WORDMARK 命令(2ヶ所のワードマークをセットする)は次の命令コードがどうであっても7バイト命令として認識される。
- 無条件 BRANCH INDICATOR 命令は次の命令コードがどうであっても5バイト命令として認識される。
これら以外の命令では9バイト目にワードマークが見つからない場合、8バイト命令として実行される。そして、次のワードマークのセットされた正しい命令コードが見つかるまでバイト群を無視し続ける(メモリの最後まで行くとエラーになる)。このようなプログラミングはきれいではないが、エラーを発生させるものではなかった。
IBM 1402 (パンチカード読み取り/パンチ装置)のLOADボタンが押下されると、カードがバッファに読み込まれる。このときの読み取り位置を1から80とすると、位置1のワードマックがセットされ(カードの最初の命令を有効にする)、位置2~80のワードマークはクリアされる。従って、ブートストラッププログラムの最初の命令は2オペランドのSET WORDMARK命令であり、他の2命令を有効にするようになっていた。実際、ブートプログラムのカードデッキの最初の数枚は2オペランドの SET WORDMARK命令、NOP命令(何もしない命令)、"read card"命令、無条件分岐で構成されていて、バッファ内のワードマックのパターンを設定するようになっていた。"read card"命令はバッファ内のワードマークパターンを変更しない。任意の長さのNOP命令を使うことで、このワードマークパターンに適合するような命令の並びのカードが読み込まれて実行される。
[編集] キャラクターと命令コード
以下の表はキャラクターを辞書的順序で示したものである。
BCD文字 | Print-A | Print-H | カード | BCD | 操作 | 定義その他 |
---|---|---|---|---|---|---|
空白 | C | |||||
. | . | . | 12-3-8 | BA8 21 | Halt | |
¤ | ¤ | ) | 12-4-8 | CBA84 | Clear Word Mark | Lozenge |
[ | 12-5-8 | BA84 1 | ||||
< | 12-6-8 | BA842 | Less Than | |||
| 12-7-8 | CBA8421 | Group Mark | |||
& | & | + | 12 | CBA | ||
$ | $ | $ | 11-3-8 | CB 8 21 | ||
* | * | * | 11-4-8 | B 84 | ||
] | 11-5-8 | CB 84 1 | ||||
; | 11-6-8 | CB 842 | ||||
Δ | 11-7-8 | B 8421 | Delta (モード変更) | |||
- | - | - | 11 | B | ||
/ | / | / | 0-1 | C A 1 | Clear Storage | |
, | , | , | 0-3-8 | C A8 21 | Set Word Mark | |
% | % | ( | 0-4-8 | A84 | Divide | オプション機能 |
ˠ | 0-5-8 | C A84 1 | Word Separator | |||
\ | 0-6-8 | C A842 | Left Oblique | |||
⧻ | 0-7-8 | A8421 | Tape Segment Mark | |||
ƀ | ‡ | ‡ | N/A 0 |
A | カードからは読めない。 ゼロとしてパンチ。 テープでは Blank with "even-parity" |
|
# | # | = | 3-8 | 8 21 | Modify Address | オプション (4000文字分以上のメモリを要する) |
@ | @ | ' | 4-8 | C 84 | Multiply | オプション機能 |
: | 5-8 | 84 1 | ||||
> | 6-8 | 842 | Greater Than | |||
√ˉ | 7-8 | C 8421 | Tape Mark | |||
? | & | & | 12-0 | CBA8 2 | Zero and Add | Plus Zero |
A | A | A | 12-1 | BA 1 | Add | |
B | B | B | 12-2 | BA 2 | Branch | |
C | C | C | 12-3 | CBA 21 | Compare | |
D | D | D | 12-4 | BA 4 | Move Numerical | (ビット) |
E | E | E | 12-5 | CBA 4 1 | Move Characters and Edit | |
F | F | F | 12-6 | CBA 42 | Control Carriage | (プリンタ) |
G | G | G | 12-7 | BA 421 | ||
H | H | H | 12-8 | BA8 | Store B-Address Register | オプション機能 |
I | I | I | 12-9 | CBA8 1 | ||
! | - | - | 11-0 | B 8 2 | Zero and Subtract | Minus Zero |
J | J | J | 11-1 | CB 1 | ||
K | K | K | 11-2 | CB 2 | Select Stacker | (カード) |
L | L | L | 11-3 | B 21 | Load Characters to Word Mark | |
M | M | M | 11-4 | CB 4 | Move Characters to Word Mark | |
N | N | N | 11-5 | B 4 1 | No Operation | |
O | O | O | 11-6 | B 42 | ||
P | P | P | 11-7 | CB 421 | Move Characters to Record or Group Mark |
オプション機能 |
Q | Q | Q | 11-8 | CB 8 | Store A-Address Register | オプション機能 |
R | R | R | 11-9 | B 8 1 | ||
‡ | ‡ | ‡ | 0-2-8 | A8 2 | Record Mark | |
S | S | S | 0-2 | C A 2 | Subtract | |
T | T | T | 0-3 | A 21 | ||
U | U | U | 0-4 | C A 4 | Control Unit | (テープ) |
V | V | V | 0-5 | A 4 1 | Branch if Word Mark and/or Zone |
|
W | W | W | 0-6 | A 42 | Branch if Bit Equal | オプション機能 |
X | X | X | 0-7 | C A 421 | Move and Insert Zeros | オプション機能 |
Y | Y | Y | 0-8 | C A8 | Move Zone | (ビット) |
Z | Z | Z | 0-9 | A8 1 | Move Characters and Suppress Zeros |
|
0 | 0 | 0 | 0 | C 8 2 | ||
1 | 1 | 1 | 1 | 1 | Read a Card | |
2 | 2 | 2 | 2 | 2 | Write a Line | |
3 | 3 | 3 | 3 | C 21 | Write and Read | |
4 | 4 | 4 | 4 | 4 | Punch a Card | |
5 | 5 | 5 | 5 | C 4 1 | Read and Punch | |
6 | 6 | 6 | 6 | C 42 | Write and Punch | |
7 | 7 | 7 | 7 | 421 | Write, Read, and Punch | |
8 | 8 | 8 | 8 | 8 | Start Read Feed | オプション機能 |
9 | 9 | 9 | 9 | C 8 1 | Start Punch Feed | オプション機能 |
[編集] ハードウェアの実装
1401の論理回路のほとんどは Diode-transister logic(DTL)であり、IBMはこれをCDTLと称した。IBMは他にも以下のような回路を使用した。
- Alloy - 一部の論理回路にも使われたが、大抵の場合論理回路以外で使用。アロイ型トランジスタを使用。
- CTRL - Resister-transister logic(RTL)の一種
後のアップグレードでは「ドリフト」型トランジスタ(1957年に Herbert Kroemerが発明)を使用したDTLで高速化を図っている。これをIBMはSDTLと称した。典型的な論理回路の電圧レベルは次の通り:
- S & U Level: high - 0V~-0.5V, low - -6V~-12V
- T Level: high - 6V~1V, low - -5.5V~-6V
回路は紙エポキシ樹脂の片面実装プリント基板で構成されていた。基板は2.5インチ×4.5インチで16ピンの金メッキコネクタが1つあるものか、5.375インチ×4.5インチで16ピン金メッキコネクタが2つあるものが使われた。IBMはこれをSMSカード(Standard Modular System)と称した。ひとつのカード上の論理回路は7400シリーズなどと同等レベルである(小さいカードには3~5個の論理ゲートか1~2個のフリップフロップ、大きいカードには最大20個の論理ゲートか4個のフリップフロップが実装された)。
これらのボードは、IBMがgatesと称したラック内のソケットに挿入された。
[編集] 外部リンク
以下、いずれも英文
- IBM 1401 documents on bitsavers.org
- 1401 Data Processing System
- 1401s I have Known
- Serial compilation and the 1401 FORTRAN compiler
カテゴリ: IBM | コンピュータ (歴代)