表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
戦国の片田順  作者: 弥一
戦国の片田順 2
550/648

メモリ

NOPノップ、次もNOP、なんでこんなに、NOPが多いのかしら」『ふう』がぼやく。

「それ、周辺機器がコンピュータの速度に追いつけないから、NOPで調整しているって、『じょん』が言っていたわ」『ならべ』が紙テープを見ながら言った。


 今、二人は『PDP-8 Monitor』の読み合わせをしている。

 まずモニターとは、現代のコンピュータのOSオーエスに相当するものだ。ただの電気回路にすぎないハードウェアを、人間や様々な周辺機器と対話できるようにする巨大なプログラム群のことをOSという。Windows、MacOS、Android、iOSなどがOSだ。


 周辺機器とは、たとえば彼らのコンピュータならば、テレタイプ、紙テープリーダ・ライタ、無線通信機などが、それにあたる。


 片田が未来からリュックサックに詰め込んで持ってきたPDP-8の数冊のマニュアルには、操作方法だけではなく、PDP-8の回路図や、OSのソースコードも収められている。

 OSといっても、ごく原始的な物なので、バージョンにもよるが、PDP-Monitorは千五〇〇ワード、Monitorの上で動作するFOCALというプログラミング言語が二五〇〇ワード程度だ。


 例えば、『PDP-8 Monitor』の先頭部分は、以下のようになっている。

0000: 6031 CLA CLL

0001: 7001 IAC

0002: 7430 SNL

0003: 5304 JMS 0304

0004: 3206 DCA 0206

0005: 6041 TAD I 0041

0006: 6001 TAD 0001

0007: 5443 JMP I 0043

0008: 7002 IAC IAC

0009: 5003 JMS 0003

0010: 3405 ISZ 0005

0011: 7012 IAC CLA

0012: 4307 JMP 0307

0013: 0000 NOP

0014: 0000 NOP

0015: 7000 IAC CLA

0016: 5004 JMS 0004

0017: 0000 NOP

0018: 0000 NOP

0019: 6030 CLA CLL


 確かに『ふう』がぼやくようにNOPが多い。NOPとは、『何も行わない』という命令だった。

 ほかにも、CLA CLL はアキュムレータ(現在の演算用レジスタに相当)という計算可能な記憶装置をクリアする(アキュムレータに格納されるデータがゼロになる)。IAC はアキュムレータに1を加える、などという意味だ。

 後の方で出てくるメモリ(SRAMやDRAM)は数値を保存することしか出来ないが、アキュムレータやレジスタは、IAC、つまり現在アキュムレータに入っている数字に1を加えることができる。それが『計算可能な記憶装置』という言葉の意味だ。


『ふう』と『ならべ』は、マニュアルのソースコードを紙テープ装置で、紙テープに穿孔せんこうした。そして、それが一字一句マニュアル通りに打たれているか確認している。


 千五百ワードというと、OSとしては、極めて小さいものだが、人間の目で確認するとなると、大変な作業になる。

 もし、一文字でも異なると、コンピュータは正常に動かないかもしれない。


 ちゃんとした紙テープを作れれば、コンピュータを起動したあとに、この紙テープを読み込ませれば、すぐに『PDP-Monitor』が使える。テレタイプに向かってコンピュータに命令を与えれば、コンピュータが返答してくれるようになる。

 紙テープは、一度作れば、複製はいくらでも作れる。


 同じように、FOCALの紙テープも作る。FOCALはプログラミング言語だ。現代のBASICやPythonのようなものだ。

 これがあると、機械語(コンピュータが理解できる言葉)でプログラムを書く必要がなくなる。FOCALは二千五百ワードにもなる。

FOCALがあれば、例えばテレタイプに向かって以下のように打ち込むと、1から10までの文字を印字してくれる。


01.10 FOR T=1.0, 1.0, 10.0; DO 2.0

01.20 QUIT

02.10 TYPE “T=”, T


 ここまで、半導体やフォン・ノイマン・アーキテクチャの話はしているが、まだメモリの話をしていなかった。

 OSやFOCALをコンピュータで使用するには、コンピュータに接続されたメモリという部分に、それらを格納しておき、いつでも高速に読むことができるようにしておく必要がある。


 彼らが複製しているPDP-8では、メモリとして『磁気コアメモリ』というものを使っていた。西暦一九六〇年代のことだ。当時は「磁気コア」が安価に使用できるメモリだった。

 PDP-8は安価にコンピュータを提供する、という方針で作成されていた。


それに対して彼らは、安価に抑えるという必要がなかった。なので、メモリにはフリップ・フロップを使用している。

 フリップ・フロップの身近な例は、テレビリモコンの電源ボタンだろう。一度電源ボタンを押すと、テレビが映る。そして、もう一度電源ボタンを押すまで、テレビの電源は入ったままになる。

 テレビが消えているが0、点いているが1に相当する。これを外部から読み込めるようにすれば1ビットの記憶素子になる。

 論理回路を数個組み合わせれば、これを作ることができる。石英丸が集積回路を実用化したおかげで、比較的小型化が可能になった。


 フリップ・フロップ型のメモリは現代のコンピュータにも使用されている。CPUの内部のキャッシュやレジスタなど、容量は小さいが高速を要求されているところはこれを使う。

 SRAM(Static RAM)と呼ばれている。

 ただ、高価かつDRAMに比べれば大型の素子なので、使用する場所は限定される。


 これに対して、パソコンの広告などでメモリ何ギガバイトなどと書かれているのは、DRAM(Dynamic RAM)というものだ。

 構造が簡単なので、集積度を高くすることが出来る。なので、メインメモリとして使用されている。


 DRAMは面白い仕組みをしているので、少し書いておきたい。DRAMの素子はコンデンサだ。コンデンサというのは一時的に電気を蓄えることが出来る道具だ。一番簡単なコンデンサは、二枚の鉄板をほんの少し離して向かい合わせに立てることで作れる。

 この二枚の鉄板にプラスとマイナスの電圧をかけると、鉄板がプラスとマイナスに帯電する。反対の電荷なので、鉄板表面の正電荷と負電荷に引力が働き、引き寄せあう。 クーロンの法則というやつだ。

 これで、鉄板にわずかではあるが正負の電荷が蓄えられる。ただ、コンピュータのような電気回路の中に置かれたコンデンサは、いつまでも電荷を蓄えることはできず、短時間で電荷を失う。

 このコンデンサに0と1の信号を保存するのがDRAMだ。コンデンサ1個と、その手前にスイッチとしてのトランジスタ一つが付いているだけの物なので、とても小さくできる。


 なぜ、コンデンサを記憶装置にできるのだろう。


 たとえ話を使う。このコンデンサを横倒しにしたコップに例える。


 コップにホースなどで、横から水をいれる。水を止めると、コップから水が流れ落ちるが、全部なくなるまでに、多少の時間がかかる。最後の方は水滴が滴り落ちるようになる。


 この時、水の滴るコップには、追加の水をいれる。水が滴らないコップには水を補給しない、とすることにする。


 これを短い時間で繰り返すと、水の入ったコップと空のコップ、それぞれの状態を維持できる。回りくどい方法だ。でもこのコップを並べると、記憶装置として使えることになる。

 観測したときに(CPUがその番地の情報を求めた時に)、水が滴っていれば1、そうでなければ0ということだ。


 これが、たった一つのコンデンサを記憶素子として使えるようにする方法だ。電荷が流出しているコンデンサには短時間で繰り返し電圧を掛けて、その状態を持続させる。電荷の流出していないコンデンサには電圧をかけずに放置する。たったそれだけの方法で、情報を維持している。

 これがDRAMの仕組みだ。


 うまくつくることができれば、非常に集積度の高いメモリがつくれるが、そのためには材料の純度を高くしなければならず、微細加工技術が必要になる。ハードルが高い。石英丸達に出来る方法ではなかったし、そもそも片田はDRAMを知らなかった。DRAMが商用に供給されるようになるのは一九七〇年代に入ってからである。



PDP-8 Monitorのソースコードですが、実際の PDP-8 マニュアルから持ってきたものではありません。

ChatGPTさんに教えてもらったものです。


ただ、このようなことについては、ChatGPTさんは信じられると思います。


また、なぜ片田がNOPを知っているのか、と思われる方もいるかもしれません。

マイコンやパソコン初期の頃は、プログラマはこのようなことに悩まされることがよくありました。

なので、プログラミングを始めていた片田も、周辺機器のタイミングを取ることを知っていたと思います。


現在でもネット上からデータを複数連続的にダウンロードする際には、少し時間間隔を開けて、サーバ側に負荷をかけないことがマナーになっています。



評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
パラメトロンの方が安そう。 まあ速度的には遅いですが。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ