WWIの命令と画面

目次

使用可能レジスタ

演算命令

加減算命令乗算命令除算命令シフト命令呼び出し命令ストア命令

完成後の追加命令群

周辺機器制御命令I/O 命令Flip-Flop reset 命令チェック命令ビット演算命令謎の命令

完成時の27命令って?

オシロスコープ

初期のもの中期のもの後期のもの


Flip-Flop reset 命令

フリップフロップレジスタをリセットします。

…と、突然書いても意味が分からないでしょう。WWI のメモリはコアメモリで準備されましたが、ほんの一部のアドレスには、真空管で作ったフリップフロップ回路が接続されていました。

真空管フリップフロップは、コアメモリよりも高速に動作します。…が、そんなことは回路の目的ではなく、真空管だと電球のように電気が通っているのが「見える」ため、数値を目で見ることができるのです。

このため、この真空管メモリはテスト用に使われていたようです。この部分を「フリップフロップレジスタ」と呼んでいました。


どうも、そのフリップフロップレジスタをリセットする回路があったようで、どのフリップフロップレジスタをセットするかも(おそらくスイッチなどで)選べたようです。

そして、リセット命令一発で、すべてのフリップフロップレジスタをリセットできます。


…どうも、よくわかりません。メモリの一部なのだから、単純に 0 を書き込むのではダメなのでしょうか?


この命令は、その後どうなったのか扱いがわかりません。1952年初頭の命令セットには載っているのですが、その後(1954年ごろと思われる)に作られた命令一覧表には載っていません。

前の節で書いた通り、周辺機器にはインジケーターランプも接続されていました。ここにデータを送り込むことでデータが目視できるようになりました。こうなると、同じ目的で用意されていたフリップフロップレジスタは不要になっただろう、と容易に想像がつきます。


ただ、この命令の命令番号である「1」が別の命令で使われた形跡はありません。なので、単に無意味になったので使われなくなっただけで、命令そのものは残っていた可能性もあります。

(詳細不明ですが、ここでは、廃止されたものとして扱います。)

rs00001ReSetFlip-Flopリセット

チェック命令

WWI には、各種チェック機構が備わっています。

当時としては電子デバイスの信頼性が低く、故障などに備え自己チェック機能を備えさせたものです。

たとえば、16bit のメインバスでデータを移動させるとき、目的とするメモリやアキュムレータと一緒に、「チェックレジスタ」にデータが送られます。そして、書き込んだはずのメモリなどとチェックレジスタの内容が後で調べられ、違っていたら「アラーム」を鳴らして人に注意を促し、停止します。

この仕組みは、チェック以外にも使われます。現代でいうところの「例外」ですが、ゼロで除算したり、磁気ドラムから読み込んだ値のパリティチェックに失敗したり、周辺機器の応答が得られずタイムアウトしたり、いろいろな理由でアラームを鳴らして停止します。

そして、プログラム中でも、積極的に「値のチェック」を行う方法が準備されました。メモリ内容とアキュムレータの内容を比較し、違っていたらアラームを鳴らして停止します。

ck01011ChecK registerメモリチェック

ビット演算命令

1952年末時点での命令一覧には載っておらず、その後作られたと思われる命令が2つあります。

この2つの命令は、製作時期不明の簡単な命令一覧表に記載がありました。簡単な表なので詳細な動作は不明なのですが、おそらく、ビット演算命令と思われます。


Sum Digit は、現代的な用語でいえばビットごとの「論理和」、Multiply Digit は「論理積」です。


掲載されたメモの製作時期は不明ですが、一緒に書かれている「接続機器一覧」の内容から、1954年9月以前のものだと思われます。

sd00110Sum Digit論理和
md11111Multiply Digit論理積

謎の命令

ほぼすべての命令を解説し終わりましたが、一つだけ、謎の命令が残っています。

1952年初頭の書類には、この命令はありません。1952年8月の書類には使用しているのが確認されます。しかし、1952年末の書類では「廃止された」と書かれているのです。


わざわざ命令を追加しておきながら、1年もたたないうちに廃止されたこの命令は、いったい何なのでしょう?


使用例が少なすぎて、この命令がどのような動作をしたか類推できません。ただ、乱暴な推定をすると…おそらく「何もしない命令」だったのではないかと思われます。

現代的な NOP 命令、というのとも違います。NOP は何もしないことを「保証」する命令なのですが、ri 命令の使用例を見ると、プログラムの流れの「届かない」データ中にしか置かれていないのです。もし実行されたら何が起こるかわかりません。

まぁ、それは怖すぎるので「何もしない」回路がつけられていたのではないかと推定しているのですが。


なぜそんな命令が作られたか、という話は長くなりそうなので、さらに別ページに書きます。

ri00000R? I?動作不明

次ページ: 完成時の27命令って?


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

(ページ作成 2013-02-09)
(最終更新 2013-02-15)

前記事:WWI 初の現代的コンピュータ     戻る     次記事:Whirlwindのアセンブラ
トップページへ

-- share --

1000

-- follow --




- Reverse Link -