SSEC のプログラム方法
目次
条件判断
・03 Tolerance check
条件停止命令です。
02 の Accumulation と同様に計算を行い、結果が負の場合に停止を行います。
「結果が負」を判定するので、計算内容は通常は「減算」になるように、データの符号を調整します。
また、計算結果をどこかに書き込む必要はありませんが、「転送」ではなく計算であることを明示するため、データ記述部分のどれか一つを「出力」に設定する必要があります。
(たとえば、Rs を 4 に設定する。受け取りレジスタや装置を指定する必要はない)
P-Q <0 の時停止、という計算式を書いた場合、P<Q の時停止することになります。
乗算
・10 Multiplication without half correction
・15 Multiplication with half correction of the product
乗算を行います。
R = P * Q です。
内部的には、データを乗算器に送って、その後結果を処理して出力装置に納めています…が、プログラマが気にする必要がありません。
Accumulation と同じように使うことができます。
除算
・20 Division without half correction
・25 Division with half correction of the Quotien
除算です。乗算と同様。
R = P / Q です。
ふたつのシフト
命令には half correction の有無で2つのものがありました。
これ、実は計算結果をシフトするかどうか、の違いです。
これとは別に、通常のシフト指示もあります。
half correction
命令には「with half correction」と「without half correction」の2通りが用意されています。
この違いを説明しましょう。
計算部分に使用されている IBM 603 は、28桁+符号を扱えました。
しかし、乗除算器は入力が 14桁になっていて、14桁×14桁=28桁の計算をすることができます。
値が最初から14桁以下であれば、特に問題はありません。入力には 28桁の「下半分」が取り出されるためです。
しかし、14桁を超えている場合、乗算時にデータを与える時点で桁あふれを起こすことになります。
主に固定小数点演算を行っている場合など、最初から 14桁以上であることがわかっている時には、あらかじめ上半分を取り出し、14桁以下にしておく処理が必要になります。
これが half correction 、「半分だけ得る」です。
この後乗除算を行うことがわかっているデータを得る際に、この機能を使うのです。
SSEC としては、IBM 603 が内部で 28桁で演算した結果を、19桁だけ受け取っています。
これが 14桁に減るため、5桁分の左シフトを行ったのと同じことになります。
シフト
half correction とは別に、SSEC には明示的な「シフト」機能があります。
これは、周辺機器にデータを書き込む際にのみ使うことができる機能です。
命令の SH1 / SH2 フィールド1桁で、シフトする桁数を指定します。
右シフトか左シフトかは、データを「書き込み」に指定するフィールドで同時に決めます。
また、 SH1 / SH2 フィールドが1桁しかないため、10以上のシフトを行いたい際も、データの扱いフィールドで同時に決めます。
この「シフト」は、IBM 603 の内部バス部分で行われています。
つまり、28桁の段階でシフトが行われ、その結果の下 19桁を SSEC 側に取り出すのです。
掛算を行った場合、14桁×14桁の28桁が求まります。
下 19桁を取り出すのですから、10桁同士以上の掛け算になる場合は、少なくとも 9桁のシフトを行わなくては値が桁あふれすることになります。
状況によっては、28桁のシフトも必要かもしれません。結果は必ず 0 ですが、符号だけは残ります。
SSEC としては 19桁までしか扱えないのですが、シフト桁数の指定は 29桁まで対応できるようになっています。
次回につづく
さて、命令概要を示すまでで、かなり長くなってしまいました。
SSEC には数多くの周辺機器がありましたが、その「装置番号」が示せていません。
また、表引き装置など一部の特殊な機器の使用法も示せていません。
次回は、これらの使い方を示します。
参考文献 | |||
SSEC特許書面(1982年に書かれた解説付き) | F.E. Hamilton | 1953/1982 | IBM |
COMPUTER HISTORY MUSEUM - archive SSEC | 2005-2010 | ||
その他、WEB上の各種ページ |