高速化のために

目次

SSEC の速度

メモリと演算の速度紙テープ装置の速度非同期式

高速化の工夫

VLIWパイプライン装置の読み込み同時アクセス遅延書き込み

低速装置への配慮

表引き装置テープ装置への同時アクセス

終わりに


遅延書き込み

演算結果データの「書き込み」は、命令の実行最後に行われます。

しかし、SSECは周辺機器への書き込みが完了するのを待たず、レジスタに保存(1ms以下)された時点で次の命令に移行します。


結果はレジスタに保存されていて、周辺機器はここからコピーするだけなので、特に問題はありません。

次の命令の実行中に書き込みが完了するでしょう。


ただし、次の命令で同じレジスタを「出力」としてはなりません。

レジスタが破壊されると、遅延書き込みに失敗する可能性があるためです。



遅延書き込みに関しては、実は判然としません。
レジスタに書き込んだ時点で「命令実行終了」の信号が出るようになっているのは特許から読み取れるのですが、これが次の命令の実行開始になるのかどうかわからないためです。
ただ、他の部分での工夫や、例示されたプログラムなどから、遅延書き込みを行ったのではないかと思っています。



さて、先に書いた命令の時間を、少し見直してみます。


1) 紙テープ装置からの命令読み込みに 16ms

2) リレー記憶からのデータ読み込みを2つで 40ms

3) 乗算に 16ms

4) リレー記憶への書き込みで 20ms


1 は2命令同時読み込み・命令の先読みにより消滅します。

2 は同時読み込みにより、平均 10ms。

3 の乗算時間は変わらず 16ms 。

4 の書き込み時間は、遅延書き込みにより消滅します。


2 に関して解説が必要でしょう。

リレー記憶へのアクセスは 20ms かかりました。2つのデータを読み込んでも、同時アクセスなので 20msです。

しかし、次に実行される「2命令目」も同時アクセスしています。このため、2命令目を実行する際にはデータの読み込みは 0ms です。

これを平均して 10ms となります。


結果として、26ms で実行できることになります。

実際には 1 にも 4 にも若干の遅延はありますし、30ms 程度と考えてみましょう。


これだと、1秒に 33命令を実行できます。

乗算命令は比較的遅い命令なので、加算なども考慮すれば秒間 50命令は妥当なところです。



特許書面にはリレー記憶へのアクセスは 20ms 、と書かれています。
しかし、おそらくこれは、リレーを動かさなくてはならない書き込み時の速度だと思います。
読み込み時にはリレーを動かさないので 1ms 以下だったと想像しますが、ここでは特許書面に書かれた時間を採用しています。

低速装置への配慮

SSEC で特にボトルネックになりそうだと予期されたのが、紙テープ装置、特に表引き装置のようです。


マーク1では、表引き装置は累乗・対数・三角関数専用に作り込まれ、アクセス時間は1分程度でした。

SSEC では汎用化しながら、もっと高速に処理を行うための工夫があります。


表引き装置

SSECの表引き装置表引き装置は、36台の紙テープ読み取り機を束ねた装置です。

読み取り機は6台が1組で、6組あることになります。


図は表引き装置(クリックで拡大)。
1段に12台の装置があり、3段で36台。
6台が同時に動いて表を検索する。
テープは非常に短いため、全部読んでも2秒程度だったようだ。


先に一度書きましたが、全部で 100,000桁のデータを格納できます。

読み取り機一台当たりでは、140行のデータが入る計算です。


1行は 20桁ですが、これを任意の場所で(装置で設定できました)区切り、検索キーと結果数値とします。


さて、表引き装置に検索キーが渡されると、6台の装置が同時に読み取りを開始し、検索キーを探します。

どれか1台で検索キーを見つけると、同じ行に書かれた「結果数値」を返しました。


同時に6台を動かすことで、検索速度を6倍にしているのです。




表引き装置に値を渡すと「検索」が始まり、その後値を取り出すと「結果」が得られました。


詳細は書かれていないのですが、結果が出る前に取り出しアクセスを行うと、プログラムが待たされたようです。

一方で、検索開始から結果を得るまでの間に、別の命令を実行しても問題はなかったようです。


このため、検索には平均1秒かかるとはいえ、その間に別の命令を実行することが可能でした。



1秒を全て命令実行で埋める、という究極の最適化は出来なかったと思いますが。

テープ装置への同時アクセス

表引き装置ではない、通常テープ装置は、読み取り装置10台が1つの装置内でセットになっていました。


この10台は、装置内でバスを共有しています。

バスが共有されているということは、同時にアクセスを行うと「バスを奪い合い」待たされるということです。


しかし、命令は2つの紙テープから同時に読み込まれました。

速度向上が目的なので、ここで待たされてしまっては意味がありません。


紙テープ装置のポート実は、テープ装置には2つのバスが設けられていて、2つのアクセスを同時に行えるようになっています。


左図はテープ装置の接続模式図(クリックで拡大)
stationが個別の読み取り機で、10台ある。
各読み取り機には A/B 二つの読み取りポートがあり、それらは装置内でまとめられて、ASSP / BSSP の2つの出力になっている。
(SSP は Station Selector Plug の略)

各テープ読み取り機には「装置番号」があるのですが、1台について連続した2つの番号がついています。

奇数と偶数でバスが違うため、明示的に切り替えることで、同じ装置内の別々の機械に同時アクセスできます。


しかし、先に書いた通り、命令の先読みは行われますし、同時に読み込まれる2つの命令が、それぞれテープ装置にアクセスすることもあります。


2つの命令の先読みで2台。1つの命令で入力として2台、2つの命令なので4台。

可能性としては、最大6台へのアクセスが同時に行われます。


流石に、これほどのアクセスが集中する場合には、調停回路があって優先順位の低いものが遅延しました。


今まさに実行しようとしている命令でデータ読み込み待ちが発生すると時間の無駄ですから、これが最優先。


この命令を実行している間に、2つ目に実行する命令のデータ読み込みができれば無駄がありません。


優先順位が低いのは、次の命令の先読み。

2つ目の命令が実行されている時間内に読み込めれば、十分間に合うことになります。


次ページ: 終わりに


前ページ 1 2 3 4 次ページ

(ページ作成 2015-06-08)

前記事:IBM - SSEC     戻る     次記事:SSEC のプログラム方法
トップページへ

-- share --

2000

-- follow --




- Reverse Link -