サブページ
カスタムチップセット
Amigaのユニークな能力は、Amiga Inc.のJay Minerチームが設計した3つのカスタムLSIチップから生まれる。これらは、グラフィックス、サウンド、I/OがDMA経由で68000 CPUから独立して動作する並列処理アーキテクチャを構成する。3つのチップはすべて$DFF000から始まるレジスタ空間を共有し、約200のライトオンリーレジスタで制御される。
カスタムチップは「チップバス」上にあり、Chip RAM(A500では最初の512 KB、ECSでは1 MBまで拡張可能)にのみアクセスできる。これはAmigaアーキテクチャの根本的な制約――すべてのグラフィックスデータ、サウンドサンプル、Copperリスト、スプライトデータはChip RAMに存在しなければならない。
Agnus (8375)
Agnus(Address Generator Unit)はカスタムチップセットのマスターチップである。Amiga 500では、Fat Agnus(8375)――マザーボード中央付近に配置される大型PLCC-84パッケージ。
Agnusの責務:
- DMAコントローラ — 25のDMAチャネルすべてを管理し、68000、Copper、Blitter、ビットプレーンフェッチ、スプライトフェッチ、オーディオ、ディスク間のChip RAMアクセスを調停
- アドレス生成 — すべてのDMAアドレスを生成し、バスサイクル割り当てスキームによりChip RAMへのアクセスを多重化
- Copper — ディスプレイコプロセッサはAgnus内蔵
- Blitter — ブロックイメージ転送エンジンもAgnusの一部
- ビームカウンタ — ビデオビーム位置を追跡(VHPOSR/VHPOSW: $DFF004/$DFF02C)
Fat Agnus (8375)
A1000のオリジナルAgnusは512 KBのChip RAMしかアドレスできなかった。A500とA2000のFat Agnus(8375)はアドレスラインを1本追加して1 MBに拡張した。Fat AgnusはPAL/NTSCタイミング生成も統合しており、チップはリージョン固有――PALとNTSCのFat Agnusチップは互換性がない。
Denise (8362)
Denise(Display ENabler)はすべてのビデオ出力を処理する。Agnusからビットプレーン、スプライト、カラーデータを受け取り、モニタに送信される最終的なアナログRGB信号を生成する。
Deniseの責務:
- ビットプレーンからピクセルへの変換 — 最大6つのビットプレーンDMAストリームをピクセルカラー値にシリアライズ
- カラーパレット — 32のカラーレジスタ(COLOR00–COLOR31: $DFF180–$DFF1BE)、12ビットRGB(4096色)
- スプライトレンダリング — プレイフィールド上に最大8つのスプライトを合成
- プレイフィールド優先度 — スプライト対プレイフィールドの描画順序を決定(BPLCON2)
- 衝突検出 — スプライトとプレイフィールド間のハードウェア衝突検出(CLXDAT/CLXCON)
- 表示モード — HAM(Hold-And-Modify)、Extra Half Brite(EHB)、デュアルプレイフィールド
Deniseは23ピンビデオコネクタを通じてアナログRGBを出力する。各カラーチャネルは4ビットの精度を持ち、チャネルあたり16段階の輝度と合計4096色のパレットを提供する。同時表示色数は表示モードに依存する——1ビットプレーンの2色からHAMモードの4096色まで。
Paula (8364)
Paulaはオーディオ出力、ディスクI/O、UARTシリアル通信、割り込み管理を担当する。カスタムチップセットの「I/Oハブ」。
Paulaの責務:
- オーディオ — 4つの独立した8ビットDMAオーディオチャネル、チャネル毎のボリューム制御、ステレオ出力(チャネル0+3が左、1+2が右)、チャネル間モジュレーション
- ディスクコントローラ — MFMフロッピーディスクDMA、同期ワード検出、リード/ライト制御
- シリアルポート — RS232通信用UART
- 割り込みコントローラ — すべてのソースから割り込み要求を収集、優先度を付けて68000のIPLラインを駆動
- アナログ入力 — ポテンショメータ/パドル入力測定(POTGO/POTINP)
Gary (5719)
Garyはアドレスデコーダとバスコントローラ――「グルーロジック」チップ。カスタムチップセットの一部ではないが、システム動作に不可欠。
Garyの責務:
- アドレスデコーディング — 各68000バスサイクルでどのチップが応答するかを決定(Chip RAM、Kickstart ROM、CIA-A、CIA-B、カスタムチップ、または拡張バス)
- DTACK生成 — 68000にバスサイクルの完了を通知
- ROMオーバーレイ — リセット時のROMオーバーレイを制御(OVLビットへの最初の書き込みまで、Kickstart ROMをアドレス$000000にマッピング)
- バスタイムアウト — マップされていないアドレスへのアクセス時にバスエラーを生成
GaryはまたCIA-Aを奇数アドレス($BFE001、$BFE101など)に、CIA-Bを偶数アドレス($BFD000、$BFD100など)に配置するアドレスラインマッピングも処理する——このサイト名の由来である。
バスサイクル割り当て
Amigaのバスは約3.58 MHz(280 nsに1メモリサイクル)で動作する。ディスプレイの各水平ラインは227.5カラークロック(PAL)で構成され、各カラークロックは1バスサイクルに相当する。これらのサイクルは2つのカテゴリに分類される:
奇数サイクル — ビットプレーンDMA、スプライトDMA、オーディオDMA、ディスクDMA、リフレッシュに予約。68000は奇数サイクル中にアクセスできない。
偶数サイクル — Copper、Blitter、68000で共有。Copperが最も高い優先度を持ち、次にBlitter(BLTPRIがセットされている場合)、最後に68000。
このインターリーブ方式により、カスタムチップは連続的なDMAストリーム(例:毎ライン毎のビットプレーンデータフェッチ)を、68000を目に見える形で中断することなく維持できる――DMA活動が割り当てられた帯域幅内に収まっている限り。アクティブなDMAチャネルが多すぎる場合(例:hiresで6ビットプレーン + 全スプライト)、68000はバスサイクルを完全に奪われる可能性がある。