NOP 命令の誕生

目次

NOP命令と都市伝説

再検証

EDSAC の「何もしない」命令PDP-1 の NOP 命令

NOP の誕生

なぜ NOP が必要なのかその後PDP-1 と TX-0 の関係

僕の見解


なぜ NOP が必要なのか

初期の命令表では、opr 命令はビットフィールドごとに、「1にすると機能が使える」と言う形で書かれていました。

場合によってはビットの組み合わせが必要になりますが、この場合も、0 と 1 の組み合わせを示すだけで、わざわざ「全部 0 だと何もしない」とは書きません。


なぜなら、プログラムをするうえでは「機能」こそが重要で、何もしない命令を示す必要はないからです。


ところが、大改造の提案では、ビットの組み合わせが複雑化したため、わかりやすい「表」にしました。

表の中に互換を取るための命令を納め、新設予定の命令を納め…何もないところは、「今後の拡張予定」としました。

この時は、すべてが 0 の部分も空欄でした。

ここで混乱が生じます。空欄が拡張予定だとすれば、すべての bit が 0 の部分も拡張予定なの?


opr 命令は、「複数の機能を一度に実行する」ことが出来る命令です。

しかし、同時には実行したくない、と言う命令だって、当然あります。勝手なことをされたら、プログラムができません。

重要なのは、「実行する」ことではなく、「実行するかしないかをはっきりする」ことでした。


拡張案が実装されたとき、すべてが 0 の部分は「NOP」と示されました。

ここは拡張予定ではなく、「何もしない、と言う機能が実装されている」と考えたのです。


これまでは、何もしないなら明記しないでよい、と考えていました。

しかし、「何もしないと保証する」ことが重要だと、この時初めて気づいたのです。


この発見は、数学上の「ゼロの発見」に匹敵するほどの大発見だった、と僕は思います。

だからこそ、この後のコンピューターには必ずと言って良いほど NOP 命令が実装されることになるのです。


この時の NOP は、opr 命令で解釈される、bit 4~8 という、一部の小さな部分につけられた名前でした。命令の名前ではありません。


しかし、同じ文書の opr の組み合わせ機能例では、すべてを 0 にすると「no operation」であると示されています

TX-0 1960年の no operation


これ、「bit 4~8 以外に関しても、0 のときは何もしない」と明記しようとしたのではないかと思います。

当たり前すぎることの再定義。それが、すべてが 0 のときは「no operation」だという記述の意味です。


ニーモニックこそ NOP ではなく opr なのですが、no operation が「命令として」はじめて公式に文章化されたのは、おそらくこれが最初だと思います。


その後

ちょうど1年後の 1961年7月、命令をまとめた文書が更新されました。


TX-0 1961年のビットフィールドここでは、opr 命令の bit 4~8 を示す表は、改造計画時のものと同じ表記方法になっています。(クリックで全体表示します)

そして、すでに互換性を失う再編が行われたこともわかります。いくつかの命令が、このビットフィールドに移行しているのです。


全体を見ると、NOP と共に SPARE の文字が見られます。

SPARE は未実装部分です。なにもしないと思いますが、動作は保証されません。


そして、この文書では、opr 命令の組み合わせ例としても、「NOP」が記載されています。

TX-0 1961年の NOP 命令

ここで、NOP は「何もしない、と言う一部機能」ではなく、「何もしない命令」になったのです。


もっとも、先に書いた PDP-1 のマニュアルも 1961年でしたから、どちらが先に「命令化」したかは不明です。


PDP-1 と TX-0 の関係

TX-0 と PDP-1 は、ともにケン・オルセンが関わったマシンです。


オルセンは、TX-0 の開発指揮をとった後、DEC 社を創設します。

しかし、並行して MIT のリンカーン研究所で TX-2 の開発指揮をとっています。大学は辞めず、DEC はサイドビジネスとして始めたのでしょう。


TX-0 はリンカーン研究所から RLE に貸し出されます。おそらく、リンカーン研究所と TX-0 はここで関係が切れます。しかし、DEC社はその後も TX-0 の周辺機器を作成したり、かかわり続けています。


改造は、教授や職員と一部のハッカーたちが TX-0 の内部構造を調べ上げて行ったことになっているのですが、おそらくは DEC も関係しているでしょう。

…というか、関係していないと考える方が不自然です。直接の改造をやっていなかったとしても、アドバイスくらいはやっているはず。だって、この後も DEC と MIT のハッカーたちの良好な関係は続くのだから。


そのような状態ですから、TX-0 と PDP-1 がほぼ同時期に nop を明記したのも当然です。

ただ、この命令はやはり TX-0 由来だったのだろうなぁ、と思います。


PDP-1 の命令は、TX-0 よりもシンプルで、素直です。

そんな状況では、「何もしない」と保証することが重要、という発見にはたどり着かない。


改造に次ぐ改造で、命令セットがぐちゃぐちゃになっていたからこそ、将来の保証として「何もしない」が重要になったのです。


次ページ: 僕の見解


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

(ページ作成 2013-06-27)
(最終更新 2015-06-20)

前記事:後期TX-0命令     戻る     次記事:世界初のテレビゲーム
トップページへ

-- share --

8000

-- follow --




- Reverse Link -