2017-07-25 22:48 — asano
カテゴリー:
今回から数回にわたって「パーソナルなコンピュータのメモリ事情」を書いてみたいと思います。「パソコン」としないのは個人でプログラムできるコンピュータとしてもう少し広く考えているからです。
日本では上の条件を満たす最初のグループは半導体メーカがトレーニングキットとして販売したマイコンボードでしょう。本来はエンジニア向けのものですが、ホビーストが飛びついてブームとなりました。
一方ホビーストは自分用の1台があればよいわけですから、半導体の売り上げにはほとんど貢献しません。それでもこのムーブメントには将来性を感じたのでしょう。出荷を絞るではなく、改良して後継機も出てきます。
その他アメリカからAltairやIMSAIを輸入したり、個人で自作することも多かったようです。
代表的なものをいくつか挙げてみます。カッコ内はソケット等で増設可能な最大容量です。
名称 | CPU | ROM | RAM | 備考 | ||
---|---|---|---|---|---|---|
Altair 8800 | 8080 | - | - | 256B | ||
TK-80 | μPD8080A | μPD454D ×3 (4) | 768B (1kB) | μPD5101E ×4 (8) | 512B (1kB) | ROMはEEPROM 後のTK-80EではマスクROMに変更 |
H68/TR | HD46800 | マスクROM | 4kB | 2114×2(4) HM46810A | 1kB (2kB) + 128B | 128BはROMのモニタ・アセンブラ等のワークエリア |
LKit-16 | MN1610 | MB8518EC ×2 (4) | 2kB (4kB) | MB8111 ×8 (16) | 1kB (2kB) | 16ビットバス |
H68/TRのRAM 1kB+128Bというのが面白いですね。kBのまとまったメモリはすべてユーザに開放するというのは、やがてユーザが独自のシステム(制御等のためで当然モニタ等は搭載しない)を開発するのを前提としているからでしょう。
メモリ容量はどれも数kBかそれ以下しかありません。CPUのメモリ空間は64kB(MN1610はワードマシンなので64k×16bit)ありますから、広い空間のところどころにメモリがあるといった状況です。メモリ容量が少なかったのにはもちろん理由があります。
一番は大容量のメモリが非常に高価だったことでしょう。上の表で使われているRAMはすべてSRAMでH68/TRを除き256×4bitのものです。H68/TRの2114は1k×4bit、HM46810Aは128×8bitです。1977年ごろのI/O誌の広告を見ると、256×4bitの2101-1が1,000円ほどします。1kBにするにはこれが8個必要なので、バッファやデコーダも考えると1万円/kBくらいです。もちろん大容量ならDRAMという手もありますが、それでも劇的に安くなるわけではありませんし、リフレッシュ等の問題も出てきます。
値段とともに忘れてはならないのは必要とするデバイスの数です。仮に2101で64kBのメモリを構成するには8×64 = 512個も必要になります。これを全部繋いだらピンをドライブできませんのでグループに分けてバッファを入れることになります。アドレスの上位8ビットをデコードする必要もあります。Intelの資料が見当たらなかったのでNational Semiconductorの同等品MM2101の資料を使いますが、それによると標準で150mWの消費電力があります。これが512個ですからバッファ等も考えれば白熱電球なみということになります。電流で考えると最大で60mAだそうなのでメモリだけで5V 30Aの電源が必要ということで、今のようにスイッチング電源が自由に使えなかったことを考えると現実的ではありません。
もう一つ大きな理由は大容量のRAMがそもそも必要ないという事実です。この頃のプログラムの入力方法は主にこんなものでした。
- Altair 8800のように書き込むアドレス・データをトグルスイッチで設定してボタンで書き込む方法
これだとCPUの助けを借りないのでROM無しでも何とかなります。ROM書き込み手段の無い人が1から自作する場合に向いています。私のZ80ボード 1号機もこの変形です。 - TK-80のように16進テンキーでバイナリをそのまま打ち込む方法
それなりの操作性があるのでROMの用意ができるメーカ製では多かったです。自作の場合も何とかここまでたどり着くのが最初の大きな目標になったりします。 - H68/TRのように簡易アセンブラを搭載しているもの
とはいってもソースを保存することはできず、入力するそばから変換されたオブジェクトがメモリに書かれていくだけです。
このような状況なので仮に大きなメモリが使えたとしても大きなプログラムを開発するのは困難だったのです。
やがてTiny BASICなどの言語処理系が動くようになってくるとさすがにRAMが1kBとかでは不足ですので拡張することになります。
ボードによっては増設のためのパターンやソケットが用意されていてある程度追加できるものもあります。その範囲を超えて増設したり、そもそも増設の準備が無い場合は拡張バスで(それも無ければ基板にハンダ付けして線を引き出して)増設することになります。メモリの回路は単調な配線が多く面倒なのですが、汎用のメモリボードなんかも売られていて楽をすることができました。「汎用」というのはそのまま何にでも接続できるということではなく、誰もが共通に必要とする回路があるだけということです。自分のCPUボードに合わせるところは自分でやらなくてはいけません。
また自分でROMを焼ける人はよく使うプログラムをROM化することを考えます。この時代のプログラムの保存方法はRAMに電源を供給し続けて保持するか、オーディオテープに記録するしかありません。前者は不注意で消してしまう可能性がありますし、後者は時間がかかります。これもRAMの増設と同様、ソケットがあれば挿せばよいですし、無ければ拡張バスにROMボードを接続します。SSST (Solid State Star Trek)と称してゲームをROMに入れてしまった人もいました。
最後に、今回の話はリアルタイムに体験したわけではありません、念のため。
コメントを追加