2017-07-27 13:56 — asano
カテゴリー:
前回書いたように初期のパソコンではCPUのメモリ空間(64kB)は十分なものでした。ところが程なくして不足するようになります。
1981~1982年ごろ発売の代表機種にはこんなものがありました。
名称 | CPU | ROM | メインRAM | GVRAM | 備考 | ||
---|---|---|---|---|---|---|---|
FM-8 | 6809×2 | 8kB×4 + 2kB | (64k×1bit)×8 | 64kB | (16k×1bit)×24 | 48kB | ROMの2kBはブートローダ |
PC-8801 | μPD780 (Z80A CPU) | 16kB×4 + 8kB | (64k×1bit)×8 | 64kB | (16k×1bit)×24 | 48kB | |
X1 | LH0080A (Z80A CPU) | 4kB | (64k×1bit)×8 | 64kB | ((16k×1bit)×24) | (48kB) | GVRAMはオプション |
おっと、RAM, GVRAMの構成はみな一緒ですね。
不足の一つの原因は高解像度のグラフィック機能の搭載です。この頃の標準的な640×200ドット8色の表示に必要なG(グラフィック)VRAMは640 × 200 × 3 = 384,000bit = 48,000バイトにもなります。これを64kBの空間にそのまま配置すると3/4を占めてしまいます。それではパソコンとして成り立ちませんので、以下のような対策がされました。
FM-8はグラフィック用にCPUをもう1つ搭載するという方法をとりました。サブCPUにはGVRAM以外に大きなメモリは不要なので64kBに収めることができます。直線の描画等はサブCPUが実行しますからメインCPUの負担軽減になりましたが、メインメモリ⇔GVRAM間の転送が遅いという問題がありました。CASIOのFP-1000/1100等もこの方式です。
PC-8801では同じアドレスに複数のメモリを配置し切り替える方法を採用しました。これはバンク切り替えと呼ばれます。アドレス0C000H~0FFFFHの16kBの空間にメインRAM,GVRAMのR,G,B各プレーンの4つが配置され、I/O 5CH~5FHに出力することによって切り替えられます。切り替えるとメインメモリが見えなくなるわけで、プログラムやスタックのアドレスに注意が必要でした。
X1はさらに違う方法を採っています。使われているCPU Z80にはメモリ空間とは別にI/O空間があります。これは本来A0~A7を使って256バイトの空間なのですが、A8~A15にも値が出力される(一部の命令は使えませんが)のを利用デコードすることで64kBの空間を作り、ここにGVRAMを配置しています。メモリ空間と比べ制約はありますが、サブCPUよりはアクセスしやすいです。
他にもメモリは専用のコントローラ配下に置き、CPUからはコントローラという窓を通してアクセスするという方法も考えられます。メインCPUから見ると最初のサブCPU方式に近いとも言えます。TMS9918(VDP)・V9938(E-VDP)・V9958(E-VDP II)の系列はMSXに使われました。PC-9801シリーズに使われたμPD7220(GDC)も本来はこのタイプ(PC-9801ではメインメモリにマップしていますが)です。パソコンにはほとんど使われませんでしたがHD63484(ACRTC)もそうです。
いずれの方式でも横8ドットが1バイトで1ドットずつシフトレジスタを通して出力するので、8ドット毎にRGB各8ビットを読み出す必要があります。ですから64k×1bitのDRAMを8つで16kB分を捨てる(使わない)というのはNGです。16k×1bit品を24個か16k×4bit品を6つで構成していました。
DRAMの大容量化もメモリ空間の不足の原因です。64k×1bitの64k DRAMが出てくると最小構成の8つで64kB、CPUのメモリ空間をこれだけで満たしてしまうようになりました。これでは起動用のROMも配置できません。
これはほぼどの機種も共通して空間全体にRAMを配置して、リセットに必要なところにROMを並列に配置してバンク切り替えすると言う方法を採用しています。ROMを切り離せばCP/MやOS-9等のOSの実行にも都合がよいのです。
また搭載するBASICソフトウェアも機能追加とともに肥大化してきます。多機能だけれどユーザメモリがほとんど残らないでは困りますので、ROMを複数バンクにした機種もあります。
日本独特の事情もありました。日本語表示のためには漢字の問題があります。640×200ドットのグラフィックがあれば、16×16ドットの漢字を40桁×12行の表示が可能です。十分とはいえませんが、ワープロ等として実用可能になりました。
JIS第1水準の漢字を16×16ドットで用意すると128kB必要になります。これはメモリ空間には置けませんし、X1のような方式でI/O空間にそのままマップすることもできません。バンク切り替えにしてもよいのですが、多くの場合I/O空間に小さな窓を作ってアクセスする方法が使われます。
漢字のフォントを格納したROMは「漢字ROM」と呼ばれましたが、この時代はまだオプションでした。FM-8のようにソケットが用意されていてICを挿入する形式と、PC-8801のように漢字ROM一式が搭載されたボードを専用コネクタに装着する形式とがありました。
コメントを追加