R800:MSX turboRを支えた16ビットプロセッサ
R800は、
1990年に株式会社アスキーによって開発され、アスキー三井物産セミコンダクタ株式会社(当時)が製造した
16ビットプロセッサです。MSX turboRの
CPUとして採用され、その性能向上に大きく貢献しました。このプロセッサは、
Z80バイナリ互換の命令セットを持ちながら、内部構造に
RISCの要素を取り入れた点が特徴です。
開発の背景
MSX turboRの開発にあたり、アスキーは搭載する
CPUとして様々な選択肢を検討していました。その中で、当時社内にいた岸岡和也氏が開発していた
Z80高速版の研究が採用され、MSX向けにカスタマイズされることとなりました。この高速版のベースとなったのは
ASICで、これを基にR800が誕生しました。
R800の特徴
R800は、単なる
Z80の高速化版ではなく、様々な点で機能強化が図られています。以下にその主な特徴をまとめます。
Z80命令コード上位互換: Z80の命令セットと互換性を保ちつつ、高速化を実現しています。
メモリアクセスの高速化: M1サイクルを廃止し、メモリアクセスサイクルを大幅に高速化しました。さらに、アドレスの上位バイトが変化しない場合に高速アクセスを実現するページアドレスモードを導入しています。
隠し命令の正式サポート: IX,IYレジスタを8ビットで使用するなどの隠し命令を正式にサポートしています。
16ビットALU:
16ビットのALU(演算論理装置)を搭載し、演算能力を大幅に向上させています。
乗算機能: 32ビットおよび16ビットの乗算機能を新たに追加しました。
16ビット演算の高速化:
16ビット演算を
8ビット演算と同等の速度で実行可能にしました。
広大なアドレス空間: 24ビット幅の16MBのアドレス空間をサポート(MMU)しています。
DRAMインターフェース: DRAMインターフェースを内蔵し、直接DRAMを接続してリフレッシュやノーウェイトアクセス制御が可能です。また、外部からDRAMアクセスするためのアービトレーション(調停)機能も内蔵しています。
クロックジェネレータ: クロックジェネレータを内蔵し、MSX turboRでは28.63636MHzで動作し、4分周した7.159090MHzがシステムクロックとして出力されます。
高速化: 従来のMSX(
Z80A 3.579545MHz)と比較して、単純なM1サイクル命令で10倍の速度を実現しています。
拡張された割込み機能: 従来のZ80互換割込みモードに加え、新たに7種類の割込みモードを搭載しています。
Z80互換割込み信号: NMI#, INT#
新割込み信号: NINT1#~7#
DMAコントローラ: 2チャンネルのDMAコントローラ(DMA0、DMA1)を内蔵し、メモリtoメモリ、I/O to メモリ、メモリ to I/O、I/O to I/Oの転送が可能です。また、転送アドレスは
24ビットリニア指定が可能で、DMAアドレス自動インクリメント機能も備えています。
パッケージ: 100ピン0.65mmピッチQFP(フラットパッケージ)を採用しています。
R800の「R」は「RISC」の頭文字に由来します。内部構造はRISCの考え方に基づいて設計されていますが、Z80バイナリ互換のために完全なロード・ストア型の命令セットではありません。しかし、Z80の命令は典型的なCISC(例えばVAX)に比べれば十分シンプルであり、「Z80互換の命令セットを持ち、RISCの内部構造で実装されたプロセッサ」と表現するのが適切でしょう。
その他の特徴
DMAやMMU(メモリ管理ユニット)は、互換性確保のためにMSX turboRでは使用されていません。アドレス空間の拡張は、メモリマッパ機能(バンク切り替え)によって実現されています。また、MSX turboRでは、MSX2+までの互換性を維持するために、Z80相当品も搭載し(MSX-ENGINEに内包)、R800と排他的に切り替えて使用しています。
R800の課題
MSX turboR「FS-A1ST」はR800を搭載して発売されましたが、搭載予定だった新VDP(ビデオプロセッサ)の開発が間に合わず、既存の低速なV9958がそのまま使われました。このため、高速化されたR800の性能を十分に活かしきれていないという課題がありました。
外部リンク
MSX turbo R Technical Hand Book - 23~26ページにR800
CPUの概要、166~186ページにインストラクション表が掲載されています。
R800は、MSXの歴史において重要な役割を果たした
CPUであり、その開発は当時の技術力の高さを物語っています。