妄想CPU

コンピュータの仕組に興味をもった人は一度はアセンブラとかマシン語に興味を持つ。そして、私をふくめて多くの人はアセンブラの修得に挫折する。高級言語にくらべてマシン語の修得はむずかしい。しかし、これはコンピュータというもの原理が複雑であるからではなく、現実のコンピュータが複雑であるからである。

その複雑さの原因は記憶装置が何種類もあり、それぞれのアクセススピードと容量当りの価格にばらつきがあるからである。たとえば、多くのパソコンにはディスク、メインメモリ、キャッシュメモリ(外部キャッシュとCPU内部の内部キャッシュ)、CPU内部のレジスタがある。いまあげた順番に、記憶容量あたりの価格は安く、逆にアクセススピードは速くなる。

コンピュータはもとのデータを何らかの形で加工し、それを出力するのが目的だ。そうだとすれば、たとえば、ディスク上にデータがあり、それを編集して、ディスクに保存するのなら、ディスクのデータを直接CPUで処理し、ディスクに書き込めばいい。しかし、それはディスクは読み込みや書込みがおそいので、パソコン上ではほとんどの場合このような処理は、ディスクのもとのデータ全体をメモリによみこんだあと、計算に必要な部分をレジスタによみこみ、そのレジスタ上のデータのみが、直接、CPUで処理されるようになっている。レジスタの数は通常、100を越えることはないので、ディスク上のデータをいっきにレジスタ上で処理することはできない。したがって、大量のデータの処理をマシン語アセンブラで記述する場合、レジスタの職人的な作法をみにつけざるをえない。

世界で最初のパソコンといわれるAPPLE ][や、任天堂ファミリーコンピュータにつかわれた6502とよばれるCPUがある。このCPUはレジスタの数が非常にすくなく、そのためもあって、安価であったが、処理スピードがはやかった。その当時はメモリのスピードがレジスタのスピードより速かったため、メモリをレジスタと同様のつかいかたをできるようにマシン語をくみていた。つまり、メモリのゼロから256番地を256本のレジスタのように見せたのだ。レジスタのスピードがメモリのスピードをうわまわるようになると今度はレジスタの本数をふやし、チップ上のレジスタのスペースをあけるためにCPUの機能を簡略にするRISCという発想がうまれてくる。

しかし、レジスタがなく、ハードディスクだけが記憶装置であるコンピュータも原理的に可能だし、逆にメモリもディスクもなく、2Gの容量のレジスタだけが記憶装置のコンピュータも原理的に可能だ。前者は安価だがスピードがおそく、後者はスピードは速いが高価であるだけである。すくなくとも、学習用なら十分に意味があるし、現在の技術なら十分に実用的な用途にもつかえるのではないだろうか。

具体的には記憶装置はすべて、通常のダイナミックRAMより、スピードの速いスタティックRAMにするとか、レジスタは数本にして、記憶装置はすべて、DRAMにする(これはディスクのない32bitのAPPLE ][にちかいものになるかもしれない。)。前者なら、高価かもしれないが、通常のパソコンより、シンプルで高性能なコンピュータになりそうな気がする。後者はもし、PDAワープロ専用機くらいの性能のものなら、パソコンより安価につくれるはずである。このような用途なら、ディスクがわりにつかう分としても数百メガのメモリでも実用的だし、50メガ程度のCPUのスピードはかせげるからである。

たぶん、FGPAでmsxとか、pc-8001とかX1とかMZを再現するより、簡単そうにおもうのだが。こういう妄想のために、論理回路設計のろの字もしらないのに、アルテラのスターターキットを27,000円で買おうかとか思っている私はやはりおかしいのだろうか。

あそれと、OSAKというオープンソースのOSがありますが、ここでの話と非常に発想がちかいと思います。