HuC6280の分解:PCエンジンのターボチャージド・ハート
PCエンジン(北米ではTurboGrafx-16として知られる)は、ゲーム史の中で興味深い位置を占めています。1987年に発売され、NESのような第3世代コンソールと、Sega Genesisやスーパーファミコンといった第4世代の強力機種の間に不自然に位置していました。優れたグラフィックのために後者と同列に語られることが多いですが、PCエンジンの内部アーキテクチャは別の物語を語ります――ビット幅よりも生の速度を重視したものです。
このシステムの中心にあるのは、Hudson Softが設計したカスタムCPUパッケージHuC6280です。カジュアルな観察者にとっては、TurboGrafx-16の「16」はマーケティング上の嘘のように思えるかもしれませんが、技術的観点から見ると、HuC6280は8ビットアーキテクチャを最適化し、クラス以上の性能を発揮させる名手です。
ターボチャージド6502アーキテクチャ
ブランド名にもかかわらず、PCエンジンは16ビットCPUを搭載していません。8ビットレジスタ、8ビットALU、8ビットデータバスを使用しています。しかし、この制限は純粋な速度で補われます。HuC6280は、NESで使用された伝説的なMOS 6502の拡張版であるWDC 65C02を大いにベースにしています。
- 低速: 約1.79 MHz(NESと同等)
- 高速: 約7.16 MHz
ほとんどのゲームはCSH(Clock Speed High)命令を使用してすぐに高速モードに切り替えます。7.16 MHzでは、PCエンジンCPUはSNES CPUの2倍の速度です。さらに、ほとんどのROMおよびRAM領域が1クロックサイクルで応答できるため、SNESで問題となっていたメモリ遅延も回避できます。
コミュニティメンバーが指摘しているように、この設計選択は非常に実用的でした。画面解像度が幅256ピクセルに限られていたため、ほとんどのゲーム計算は8ビットのままで、速い8ビットCPUの方が遅い16ビットCPUよりも効率的でした。ある貢献者は、SNESの16ビットCPUでさえ8ビットデータバスに悩まされており、16ビット操作でも余分なサイクルが必要だったと指摘しています。
メモリ管理と内蔵MMU
標準的な16ビットアドレス空間の64 KB制限を克服するため、HuC6280は内蔵メモリ管理ユニット(MMU)を備えています。このMMUは物理アドレス空間を21ビットに拡張し、2 MBのアドレス範囲を可能にします。
システムは16ビット論理アドレス空間を8つの8 KBページに分割します。各ページは8ビットメモリページレジスタ(MPR)を介して物理ページにマッピングされます。このアーキテクチャはNESカートリッジで使用されるマッパーに似ていますが、CPUに統合することで、Hudsonはほとんどのカートリッジで高価なマッパーハードウェアが不要になりました。
物理メモリマップ
| Pages | Description |
|---|---|
| $00-$7F | HuCardゲームカートリッジまたはCD-ROM 2システムカード |
| $80-$F7 | 拡張(CD-ROM 2 追加RAM) |
| $F8 | 8 KB作業RAM |
| $F9-$FB | 拡張(SuperGrafx 追加RAM) |
| $FF | メモリマップドI/Oレジスタとポート |
8 KBの作業RAMはGenesis(64 KB)やSNES(128 KB)に比べて控えめですが、CD-ROM 2アドオンはこれを大幅に増強し、ディスク読み取りの高レイテンシに対応するために64 KBから2 MBの追加RAMを提供しました。
専用命令とブロック転送
HuC6280は、標準的な6502に比べて大幅な性能向上をもたらすいくつかの命令を導入しました。
ブロック転送命令
目立つ追加はブロック転送命令(TAI、TDD、TIA、TII、TIN)です。これらはインクリメント、デクリメント、または交互のアドレスステップオプションで大量のメモリコピーを可能にします。
Arcade Cardアドオンは、転送命令を使用してグラフィックをVRAMに高速転送することを前提に設計されており、これが非常に得意でした。その結果、非常に優れたNeo Geo移植が可能になりました。
これらの命令は1バイトあたり6サイクルの速度でデータをコピーします。専用DMAユニットほど高速ではありませんが、ソフトウェアベースのコピーよりはるかに効率的です。ただし、割り込み不可であり、大きな転送はCPUが複数のVBlank割り込みを見逃す原因となりやすいため、通常は画面遷移やゲームプレイ外のシーンで使用されます。
その他の注目すべき命令
- SET(Set T): 後続の命令(
ADCやANDなど)がアキュムレータではなくゼロページの値で動作できるようにし、データをアキュムレータ経由で移動させる必要を減らします。 - BSR(Branch to Subroutine): PC相対のオフセットを使用し、コードがどのメモリバンクにマッピングされているかに依存しません。
- VDC直接書き込み: 命令
ST0、ST1、ST2は即値オペランドを直接ビデオディスプレイコントローラのポートに書き込み、レジスタ更新を高速化します。
技術的遺産
PCエンジンのアーキテクチャは特定の哲学を体現しています――既知で効率的な8ビットコアの有用性を最大化するためにクロック速度を上げ、専用ハードウェアサポートを追加することです。SNESが多数の背景レイヤーや複雑な映像ハードウェアに焦点を当てたのに対し、PCエンジンは画面描画中にビデオメモリへアクセスできる能力と、純粋なCPU速度の組み合わせにより、Soldier BladeやR-Typeといったシューティングゲームで見られる驚異的に滑らかなパフォーマンスを実現しました。
西側では「16ビット戦争」に影が薄れたかもしれませんが、HuC6280は6502系統の効率性と、適切に実装されたMMUの威力を示す証です。