Z80CPUアクセラレータに関する考察 #226 AYANY ◆設計概要◆  Z80CPUと物理的に差し替え可能な形状のボードとする。パソコン本体側はCP U交換以外の改造はしない。また、Z80CPUを搭載しているマシンであれば機種を 選ばない。  外部から見た場合は、本体内蔵クロックに同期して動作しており、アクセラレータ内 部は独自のクロックで高速化を図る。 ◆問題点◆  キャッシュ・メモリやローカルRAMを搭載しないと高速化は殆ど図れないので、こ れらの搭載を検討する必要がある。しかし,これらについては、以下のような問題点が ある。 (1)キャッシュ・メモリに関しては、自己書き換えを行なうプログラムで問題が生じ る。 (2)メモリ・バンクの切り替えに対応できない。 (3)ローカルRAMに関しては、本体内蔵RAMをバスから切り離せない限り、ダイ レクト・メモリ・アクセスによる読み出しが出来ない。 (4)キャッシュ・メモリやローカルRAMのいづれにおいても、Z80ファミリ・チ ップのCPUバス上のデータ解析に対応できない。 (5)キャッシュ・メモリやローカルRAMのアクセス中の本体内蔵RAMのリフレッ シュが必要となる。 ◆対応策◆ (1)キャッシュ・メモリ  ローカルRAMを採用し、うち先頭の64KBを命令キャッシュとデータ・キャッシ ュを区別しないダイレクト・マップ方式のキャッシュ・メモリとして使用する。これに より、キャッシュは本体メモリのアドレスと1対1で対応したものとなる。 (2)DIP−SWによる選択  メモリ領域をいくつかのブロックに分割し、DIP−SWにより各ブロック毎にキャ シュのON/OFFを設定する。また、CPUリセット時には、キャッシュをクリアす る。 ON キャッシュ有効 条件付きON キャッシュ有効(I/O命令の直前にキャッシュ・クリア) OFF キャッシュ無効 (3)内蔵RAMとの整合  キャッシュはライト・スルー方式を採用する。周辺回路からバス要求があった場合は バス解放中に平行してキャッシュのクリア処理を行なう。そのため、キャッシュ・メモ リはパソコン本体バスから切り離しておく。 (4)2バイト命令  RETI命令はキャッシュ・メモリに積まない。また、2バイト命令のオペコードの うち1バイトがキャッシュOFF領域にある場合は、その命令はキャッシュ・メモリに 積まない。 (キャッシュON領域を挟んでその直前と直後の各1バイトの計2バイト、もしくは、 キャッシュON領域の直後の2バイトがRETI命令と誤認される恐れを考慮しなけれ ばならない。さらに、他命令の2バイト目とRETI命令の1バイト目が1つの命令と 誤認されてRETI命令が検出されない恐れについても同様である。) (5)リフレッシュ  パソコン本体内蔵RAMを定期的にリフレッシュする。 ◆その他◆ (1)ローカルRAM  Z80未定義命令を用いてローカルRAMにアクセス出来るようにしておきます。た だし、アプリケーションで直接この未定義命令を使用することは禁止します。そうする と、例えば、専用のRAMディスク・ドライバを用意することでアクセラレータ上に高 速RAMディスクを確保することができます。 ローカルRAM 内蔵RAM +―――――――――――+ +―――+ 00000000| | 0000| | | キャッシュ・メモリ | → |メイン| 0000FFFF| | FFFF| | +―――――――――――+ +―――+ 00010000| | | キャッシュ用フラグ | 00011FFF| | +―――――――――――+ 00012000| | | 空き | 0001FFFF| | +―――――――――――+ 00020000| | | スタック領域 | 0002FFFF| | +―――――――――――+ 00030000| | | 空き | ????????| | +―――――――――――+ (2)DMA  アクセラレータ上にZ80DMA互換のコントローラを用意して、その機能のON/ OFFとI/Oアドレスの設定をDIP−SWで出来るようにすれば、本体内蔵DMA による速度低下を抑えることが出来る。 (3)スタック  スタック専用RAMを64KB用意し、これのON/OFFを設定するようにすれば PUSH時の速度低下を抑えることが出来る。 [EOF]