高速化のために
SSEC は真空管を使って計算を行っていて、当時としても十分に高速でした。
その一方でメモリや各種周辺機器との接続にはリレー回路が多用され、命令やデータは紙テープから読み込まれています。
これでは真空管の高速性は活かされなかったのではないか?
誰もがそう思うのではないでしょうか。
今回は、各部の速度を挙げて、SSEC の工夫を見ていきたいと思います。
目次
IBM - SSEC(別記事)
SSECのプログラム方法(別記事)
SSECの周辺装置(別記事)
再訂正・NOP命令の誕生(別記事)
SSEC の速度
特許書面では、「月の軌道計算」の計算速度実例が書かれています。
初回の最後に紹介しましたが、これを見る限りでは秒間 50命令程度。
当時のリレー計算機だと、加減算でも秒間 10回程度。
掛算などではもっと遅くなるため、秒間 5命令も実行できれば十分な速度でした。
この点、SSEC は十分速いです。
当時はまだ、「クロックに合わせて動作する」ような作り方はしておらず、各所の準備が整ったことを確認して、次の動作が行われました。
非同期式と呼びますが、命令ごと・使用する機器ごとに速度が違いすぎる場合には、こちらの方が全体としての動作が速くなります。
そして、SSEC ではリレー回路や機械部分が真空管の速度を無駄にしないように、各所が最適な速度で動ける工夫がされていました。
メモリと演算の速度
まず、特許書面に記載されているものから。
電気記憶(レジスタ)は 1ms 以下、リレー記憶のアクセスは 20ms。
レジスタは、現代的な意味のレジスタとしても使えるのですが、周辺機器の速度差を解消するための「バッファ」の役割がありました。(詳細後述)
そのため、周辺機器とデータの入出力をする時は、必ずレジスタを経由します。
そして、レジスタはそのまま、8本ある入出力バスに接続されていました。
乗算は1/60秒(16ms)程度、除算は 1/30秒(33ms)程度…とあります。
加減算については明示されていませんが、1ms 以下だったようです。
紙テープ装置の速度
しかし、2つの方法で推計すると、その2つの値はほとんど同じになります。
そのため、おそらくこの速度は正しいと考えています。
SSEC中で一番低速だと心配されたのでしょう。
多数の高速化の工夫があり、それほど遅くない機械になっています。
その1
特許書面に、表引き装置は 100,000桁のデータを格納でき、平均1秒で検索できた、とあります。
紙テープの1行は 20桁ですから、5000行が収まったことになります。
表引き装置の詳細は後でまた書きますが、データは 36台で分散するので、テープ1本当たり140行程度です。
「平均で」1秒で検索するので、全部読み込むのには2秒です。1秒当たり 70行を読み取れることになります。
その2
当時の IBM のパンチカード高速読み取り機は、1分間に 300枚のカードを読み取れました。
SSEC の紙テープはわざわざ横幅をパンチカード読み取り機に合わせてあります。
ということは、同じ部品を流用しているか、少なくともノウハウは活かされているでしょう。
パンチカードは縦方向に 12の穴が空けられます。紙テープでいえば12行です。
これを1分に300枚読み取るのですから、3600行を読み取れることになります。
1秒あたりに直すと、60行を読み取ることになります。
恐らく、最初から連続させてある紙テープは、パンチカードよりも高速に読み取れたでしょう。
表引き装置の例は数値が「わかりやすい」ように丸めてあると思われるので、正確ではないかもしれません。
ここでは、遅い方を取って1秒に60行と考えます。1行は 16ms です。
非同期式
現在のパソコンは、基本的にはすべての部品がクロック信号に同期して動作します。
「クロックをきっかけとして動作している」のです。これを「同期式」と呼びます。
しかし、初期のコンピューターは非常に大きく、単一の信号を全体に届けるのにも難がありました。
そのため、ある部品が「動作を完了した」信号を発信し、これをきっかけとして次の部品が動く、という構成がよく使われました。
これを「非同期式」と呼びます。
同期式では、命令の速度の単位は「クロック」です。
どんなに遅い命令でも、クロックの中で動作を終わらせなくてはなりません。
逆に言えば、クロックは一番遅い命令を元に決められます。
より早い命令は、一番遅い命令に合わせて、無駄に待たされることになります。
非同期式は、それぞれの部品が動作を終えた時に、次の部品が動作します。
加算は速く、乗除算は遅くなります。それだけでなく、メモリアクセスの有無なども命令の実行速度に影響を与えるでしょう。
非同期式の SSEC では、各部の動作の無駄をどれだけ無くせるかが、全体の速度に大きく影響を与えることになります。