
オリジナルチップセット(OCS)は、初期のコモドールAmigaコンピュータで使用されていたチップセットで、Amigaのグラフィックおよびサウンド機能を規定していました。OCSの後継として、若干改良されたエンハンスドチップセット(ECS)と、大幅に改良されたアドバンストグラフィックスアーキテクチャ(AGA)が登場しました。
オリジナルのチップセットは、1985年から1990年の間に製造されたAmigaモデル、すなわちAmiga 1000、Amiga 2000、Amiga CDTV、およびAmiga 500に搭載されていました。
Amigaに独自のグラフィック機能を与えたチップセットは、Agnus、Denise、Paulaという3つの主要な「カスタム」チップで構成されています。オリジナルのチップセットと拡張チップセットの両方は、コモドールのチップ製造子会社であるMOS TechnologyによってNMOSロジック技術を使用して製造されました。Jay Minerによると、OCSチップセットは5μm製造プロセスで製造され、AGA Lisaは1.5μmプロセスで実装されました。3つのカスタムチップはすべて、当初は48ピンDIPパッケージでしたが、Fat Agnusとして知られるAgnusの後のバージョンは84ピンPLCCパッケージになりました。
Agnusは設計の中心となるチップです。複雑な優先順位システムを使用して、中央の68000プロセッサと他のカスタムチップの両方からの共有RAM(Amigaでは「チップRAM 」と呼ばれる)へのすべてのアクセスを制御します。Agnusには、ブリッター(プロセッサの介入なしにメモリ内でデータを高速転送する機能)とカッパー(ビデオ同期コプロセッサ)と呼ばれるサブコンポーネントが含まれています。オリジナルのAgnusは512KBのチップRAMをアドレス指定できます。後の改訂版では「Fat Agnus」と呼ばれ、512KBの擬似高速RAMが追加されました。ECSではこれが1MB(「Fatter Agnus」と呼ばれることもあります)に変更され、その後2MBのチップRAMになりました。
Deniseはメインのビデオプロセッサです。オーバースキャンを使用しない場合、Amigaのグラフィック表示は幅320または640ピクセル、高さは200( NTSC)または256(PAL)ピクセルです。Deniseはインターレースもサポートしており、垂直解像度を2倍にしますが、当時の一般的なモニターでは目障りなちらつきが発生します。(ちらつきを修正するさまざまなソリューションが登場しました。)プレーンビットマップグラフィックスが使用され、ピクセルごとの個々のビットがビットプレーンと呼ばれる別々のメモリ領域に分割されます。通常の動作では、Deniseは1~5個のビットプレーンを許可し、2~32個の固有の色を提供します。これらの色は、 4096色( RGBコンポーネントごとに4ビット)のパレットから選択されます。6番目のビットプレーンは、ハーフブライトモードとホールドアンドモディファイ(HAM)モードという2つの特殊なビデオモードで使用できます。Deniseは、8つのスプライト、1ピクセルスクロール、および「デュアルプレイフィールド」モードもサポートしています。デニスはマウスとデジタルジョイスティックの入力も担当している。
Paulaは主にオーディオチップとして機能し、4つの独立したハードウェアミキシングによる8ビットPCMサウンドチャンネルを備えています。各チャンネルは65段階の音量レベル(無音から最大音量まで)と、毎秒約20サンプルから毎秒約29,000サンプルまでの波形出力レートに対応しています。また、Paulaは割り込み処理や、フロッピーディスクドライブ、シリアルポート、アナログジョイスティックなどの各種入出力機能も処理します。
OCSチップセットと、ANTIC、GTIA、POKEYチップから構成される、はるかに初期のシンプルなAtari 8ビットコンピュータのチップセットの間には、全体的な機能性と、3つの構成チップへの機能の分割の両方において、多くの類似点があります。どちらのチップセットもJay Minerによって概念的に設計されたため、この類似性は説明できます。

Agnusチップは、チップセット全体の動作を統括的に制御します。すべての動作はビデオビームの位置に同期されます。これには、チップセットがアクセスできる内蔵RAM (チップRAMとも呼ばれる)へのアクセスも含まれます。中央の68000プロセッサとチップセットの他のメンバーは、 Agnusを介してチップRAMへのアクセスを仲介する必要があります。コンピューティングアーキテクチャの用語では、これはダイレクトメモリアクセス(DMA)であり、AgnusはDMAコントローラ(DMAC)として機能します。
Agnusは、競合するリソース間でメモリアクセス要求を最適に調整しようとする、複雑で優先度ベースのメモリアクセスポリシーを採用しています。たとえば、フレームバッファデータの即時表示はブリッターによるメモリ処理よりも重要であるとみなされるため、ビットプレーンデータのフェッチはブリッター転送よりも優先されます。Agnusはまた、CPUバスサイクルとDMAサイクルがオーバーラップするようにアクセス順序を調整しようとします。Amigaに搭載されていたオリジナルの68000プロセッサは、利用可能なメモリサイクルの2つおきにしかメモリにアクセスできなかったため、Agnusは、残りのサイクルをCPUが利用できるようにしつつ、必要に応じて「奇数」のメモリアクセスサイクルを時間制約のあるカスタムチップDMAに優先的に割り当てるシステムを採用しています。そのため、CPUは通常メモリアクセスからロックアウトされることはなく、速度が低下することもありません。しかし、ブリッター転送などの時間制約のないカスタムチップアクセスは、余剰の奇数サイクルまたは偶数サイクルを消費する可能性があり、「BLITHOG」(ブリッターホッグ)フラグが設定されている場合、Agnusはブリッターを尊重してCPUから偶数サイクルをロックアウトすることができます。
アグナスのタイミングは、280ナノ秒の「カラークロック」で測定されます。これは、低解像度(140ナノ秒)のピクセル2個分、または高解像度(70ナノ秒)のピクセル4個分に相当します。デニスと同様に、これらのタイミングは家庭用テレビでの表示を想定して設計されており、外部クロックソースに同期させることができます。
ブリッターはAgnusのサブコンポーネントです。「Blit」は「ブロックイメージ転送」または「ビットブリッター」の略です。ブリッターは、高度に並列化されたメモリ転送および論理演算ユニットです。動作モードは、メモリブロックのコピー、ブロックの塗りつぶし(ポリゴンの塗りつぶしなど)、線描画の3種類があります。
ブリッターはビデオメモリの高速コピーを可能にするため、CPUを他のタスクに解放できる。ブリッターは主に、画面上にグラフィック画像を描画および再描画するために使用され、これらの画像は「ボブ」(「ブリッターオブジェクト」の略)と呼ばれた。
ブリッターのブロックコピーモードでは、メモリ内の0~3個のデータソース(A、B、C)を受け取り、それらのデータソースに対してプログラム可能なブール関数を実行し、結果を宛先領域Dに書き込みます。これら4つの領域は重複しても構いません。ブリッターは、ブロックの先頭から末尾まで(「昇順」モード)、またはその逆(「降順」モード)で動作します。このタイプの操作は、現在ではビット単位の3値論理命令として知られています。
ブロックは「長方形」です。幅は 16 ビットの倍数で、「ライン」で測定される高さ、および 1 つのラインの終わりから次のラインに移動するための「ストライド」距離があります。これにより、ブリッターは最大 1,024×1,024 ピクセルまでの任意のビデオ解像度で動作できます。[ 1 ]コピーは自動的にピクセルごとの論理演算を実行します。これらの演算は、mintermsを使用して一般的に記述されます。これは、直接コピー (D = A) を実行するか、ブリットされたオブジェクトの周囲にピクセル マスクを適用する (D = (C AND B) OR A) 場合に最もよく使用されます。コピーは、各ラインを 0 ~ 15 ピクセルだけバレル シフトすることもできます。これにより、ブリッターは、正確に 16 の倍数ではないピクセル オフセットで描画できます。
これらの機能により、AmigaはGUIウィンドウを画面上で高速に移動させることができます。各ウィンドウはグラフィックメモリ空間において長方形のメモリブロックとして表現され、必要に応じて任意の画面メモリ位置に移動できるからです。
ブリッターのラインモードでは、ブレゼンハムのラインアルゴリズムを使用して、1ピクセル幅の線を描画します。また、16ビットの繰り返しパターンを線に適用することもできます。ラインモードは、回転したボブを描画するためにも使用できます。ボブデータの各行がラインパターンとして使用され、ラインモードでは傾いたボブが1行ずつ描画されます。
ブリッターの塗りつぶしモードは、行ごとの水平スパンを塗りつぶすために使用されます。各スパンでは、右から左へ順番に各ピクセルを読み取ります。設定されたピクセルを読み取るたびに、塗りつぶしモードのオン/オフを切り替えます。塗りつぶしモードがオンの場合、塗りつぶしモードがオフになるか行が終了するまで、すべてのピクセルを設定します。これらのモードを組み合わせることで、ブリッターは個々のフラットシェーディングされたポリゴンを描画できます。後期のアミーガでは、多くの処理に高速なCPUとブリッターの組み合わせが使用される傾向がありました。
CopperはAgnusのもう一つのサブコンポーネントです。その名前は「コプロセッサ」の略です。Copperは、ビデオハードウェアと同期してプログラムされた命令ストリームを実行する、プログラム可能な有限状態機械です。
Copperは電源を入れると、命令の読み込み、実行、または特定のビデオビーム位置の待機という3つの状態をとります。Copperは、メインCPUと並行してCopperリストと呼ばれるプログラムを実行します。Copperはビデオビームと同期して動作し、ビデオ同期を必要とする様々な操作を実行できます。最も一般的な用途はビデオ出力の制御ですが、チップセットのほとんどのレジスタに書き込むことができるため、ブリットの開始、オーディオレジスタの設定、CPUの割り込みなどにも使用できます。
Copperリストには3種類の命令があり、それぞれが2バイトのペアで構成され、合計4バイトです。
Copperリストプログラムの長さは実行時間によって制限されます。Copperは、新しいビデオフレームの開始時にCopperリストの実行を再開します。明示的な「終了」命令はなく、代わりにWAIT命令を使用して、決して到達しない位置を待機します。
通常、Amiga は独自のビデオタイミングを生成しますが、Agnus は外部ビデオハードウェアとのジェンロックを実現するために、システムを外部信号に同期させることもサポートしています。このコネクタには、Amiga が背景色を出力しているかどうかを示す 1 ビット出力もあり、Amiga のビデオを外部ビデオに簡単に重ね合わせることができます。これにより、Amiga は、ジェンロックのサポートがない場合に必要となるA/B ロールやクロマキーユニットの使用とコストを回避できるため、ビデオのタイトル作成や放送作業用のキャラクタージェネレータとして特に魅力的になりました。オーバースキャン、インターレース、ジェンロック機能のサポート、および表示タイミングが放送規格 (NTSC または PAL) に非常に近いという事実により、Amiga はビデオ用途に最適な最初のコンピュータとなり、実際、多くのスタジオでビデオデータのデジタル化 (フレームグラビングと呼ばれることもあります)、字幕作成、インタラクティブなビデオニュースに使用されました。

Deniseは、1~5ビットプレーンから平面ビデオデータを取得し、それをカラールックアップに変換するようにプログラムされています。ビットプレーンの数は任意であるため、32色が必要ない場合は、代わりに2、4、8、または16を使用できます。ビットプレーンの数(および解像度)は、通常はCopperによってオンザフライで変更できます。これにより、RAMを非常に経済的に使用でき、チップRAMから実行する場合のCPU処理速度とグラフィックの洗練度のバランスを取ることができます(低解像度で4bppを超えるモード、または高解像度で2bppを超えるモードでは、通常の競合しないチャネルに加えて、CPUを遅くしたり一時的に停止させたりする可能性のある追加のDMAチャネルが使用されます)。また、6番目のビットプレーンがあり、これは3つの特別なグラフィックモードで使用できます。
水平方向のグラフィック解像度は、140 ns ピクセルの「lowres」と 70 ns ピクセルの「hires」の 2 つがあり 、オーバースキャンを使用しない場合のデフォルトの水平方向の幅は 320 または 640 ピクセルです。ピクセル出力は、NTSCカラーバーストクロックに直接基づくメイン システム クロックによって制御されるため、これらのサイズは、他の多くの現代のホーム コンピュータと比較して、グラフィックと画面の境界の間に薄い「アンダースキャン」境界があるだけで、標準的なテレビの幅をほぼ埋め尽くし、ゲーム コンソールに近い外観でありながら、より細かいディテールを実現します。さらに、Denise は、かなり広範囲のオーバースキャンをサポートしています。技術的には、最大 400 または 800 ピクセル (+25%) のデータを持つモードを指定できます。ただし、これは、大きなグラフィックの部分表示を伴うスクロールや特殊効果にのみ実際に役立ちます。これは、別のハードウェア制限が 368 または 736 ピクセルに達するためです。これは、1 つのブランキング期間の終了から次のブランキング期間の開始までの間に収まる最大値です。それでも、水平走査幅を調整できる専用モニター以外のディスプレイでは、これほど多くのピクセルが表示される可能性は低い。標準的なCRTでは、画像の大部分が画面ベゼルの後ろに隠れてしまい、LCDではパネルの端で画像が切り取られる。[ 4 ] [ 5 ]スキャンラインと通常の「プレイフィールド」グラフィックス以外のさまざまな用途へのDMAリソースの割り当てに関するAmigaのタイミングの構造が非常に規則的であるため、水平解像度を上げることは、ピクセル数と使用可能なハードウェアスプライトの数のトレードオフでもある。プレイフィールドビデオ専用のDMAスロットを増やすと、スプライトエンジンの一部(合計8つのうち1~7つ)が奪われることになる。。
オーバースキャンなしの垂直解像度は、60 Hz NTSC Amiga では 200 ピクセル、50 Hz PAL Amiga では 256 ピクセルです。インターレース表示を使用すると、この解像度を 2 倍にすることができ、水平解像度と同様に、オーバースキャンを使用して最大 241 (または 483) まで、PAL では 283 (または 567) まで増やすことができます (インターレース モードでは、ブランキングと同期によって使用可能な合計から何行が削除されるかによって最大が決定されるため、1 行多くなります。非インターレース モードの総走査線数は、元の放送仕様の奇数インターレース カウントの半分を切り捨てた値になります)。
ECSを皮切りに、Deniseは「生産性」モードをサポートするようにアップグレードされ、640x400のノンインターレース(ただし4色のみ)が可能になった。
Denise は、スキャンラインごとに最大 8 個の 16 ピクセル幅のスプライト(自動モード) をプレイフィールドの上、下、または間に合成し、スプライトとプレイフィールド間、またはスプライト間の衝突を検出します。これらのスプライトには、3 つの可視色と 1 つの透明色があります。オプションで、隣接するスプライトのペアを「接続」して、1 つの 15 色のスプライトを作成することもできます。Sprite DMA は、レジスタによって制御されるスプライト チャネルを形成するためにデータを読み取り、スプライトの垂直方向の再利用を可能にします。スプライト データの更新を可能にするには、連続する 2 つのリスト エントリの間に 1 つの空のスキャンラインが必要です。Copper または CPU レジスタ操作を使用すると、各スプライトチャネルを 1 つのフレームで複数回再利用して、フレームあたりのスプライトの総数を増やすことができます。スプライト位置レジスタはスキャンライン中にも変更でき、1 つのスキャンライン上のスプライトの総数を増やすことができます。ただし、スプライトデータ(形状) はスキャンラインごとに 1 回だけフェッチされ、変更することはできません。スキャンライン中にスプライトの再配置レジスタを利用した最初のアミーガゲームは、 1988年にリリースされた『Hybris』だった。
Deniseチップは専用のテキストモードをサポートしていません。[ 6 ]
最後に、CIAの隣にいるデニスは、マウス/ジョイスティックのX/Y入力の処理を担当しています。
デニスがビットプレーンとスプライトのデータを取得するという考え方は単純化しすぎです。水平方向と垂直方向の画面位置カウンタを維持し、DRAM読み出し操作を開始するのはアグナスです。デニスはそれぞれ16ビットのデータを保持する複数のビットプレーンレジスタを持っており、これは16ピクセルを描画するのに十分な容量です。アグナスがレジスタ1に書き込みを行うと、すべてのレジスタが個別のシフトレジスタに転送され、そこからピクセルが生成されます(同時にDRAMから新しい値がロードされます)。デニスはメモリのアドレスも認識していません。


MOS Technology社のGlenn Keller氏が設計したPaulaチップは、割り込みコントローラであるだけでなく、オーディオ再生、フロッピーディスクドライブ制御、シリアルポート入出力、マウス/ジョイスティックボタン2および3信号用のロジックも備えている。このロジックは、Commodore社のすべてのAmigaモデルで機能的に同一であった。
Paulaには、DMA駆動の8ビットPCMサウンドチャンネルが4つ搭載されています。2つのサウンドチャンネルは左オーディオ出力に、残りの2つは右オーディオ出力にミックスされ、ステレオオーディオ出力が生成されます。サポートされているハードウェアサンプルフォーマットは、符号付き線形8ビット2の補数のみです。各サウンドチャンネルは独立した周波数と6ビットのボリュームコントロール(64段階)を備えています。内部的には、オーディオハードウェアは4つのステートマシンによって実装されており、それぞれ8つの異なる状態を持ちます。
さらに、このハードウェアでは、チャンネルペアの一方のチャンネルがもう一方のチャンネルの周期または振幅を変調することができます。周波数と音量をより適切に制御できる方法があるため、Amigaではほとんど使用されませんが、さまざまな種類のトレモロやビブラート、さらには基本的なFMシンセシス効果を実現するために使用できます。
音声は 2 つの方法で出力できます。最も一般的には、DMA 駆動の音声が使用されます。Agnus の説明で説明したように、メモリへのアクセスが優先され、4 つの音声チャンネルそれぞれにスキャン ラインごとに 1 つの DMA スロットが使用可能です。通常の NTSC または PAL ディスプレイでは、DMA 音声再生は、各ステレオ出力で、チャンネルあたり毎秒 28,867 値 (PAL: 28,837)、合計毎秒 57,674 (PAL: 57,734) 値という最大出力レートに制限されます。このレートは、水平スキャン レートの高いビデオ モードを使用することで、ECS および AGA チップセットで向上させることができます。
あるいは、ポーラは新しいサンプルが必要になったときに割り込みを発生させることで、CPUに4つのオーディオ出力バッファのいずれかに新しいサンプルをロードするよう指示することもできます。これにより、 チャンネルあたり57kHzを超える出力レートが可能になり、ソフトウェアミキシングによって可能な音声(同時再生可能な音)の数を増やすことができます。
Amigaモデルには、Paulaとは別個のアナログローパスフィルタ(再構成フィルタ)が搭載されています。これは、約3.3kHzのカットオフ周波数を持つ12dB /octのバターワース型ローパスフィルタで 、4つのチャンネルすべてに適用されます。
Amiga 1000以降のモデル(Amiga 500の最初の改訂版を除く)では 、電源LEDの明るさが内蔵アナログフィルターの状態を示すために使用されます。フィルターが有効な場合、電源LEDは通常の明るさで点灯します。フィルターが無効になっている場合、電源LEDは暗くなり、初期のAmiga 500モデルでは完全に消灯します。
Amiga 1200より前に発売されたAmigaモデルには、電源LEDで示されるオプションのアナログフィルターの有無に関わらず有効な、静的なトーンノブタイプのローパスフィルターが搭載されています。これは、 カットオフ周波数が4.5kHzまたは5kHzの6dB/octローパスフィルターです 。
その後、異なる音量に設定された2つのチャンネルを組み合わせることで14ビットオーディオを再生できるソフトウェア技術が開発されました。これにより、4つの8ビットチャンネルではなく、2つの14ビットチャンネルが得られます。これは、16ビットサンプルの上位バイトを最大音量で、下位バイトを最小音量で再生することで実現されます(両方の範囲が重なるため、下位バイトを2ビット右にシフトする必要があります)。ビットシフト操作にはわずかなCPUまたはブリッターのオーバーヘッドが必要ですが、従来の8ビット再生はほぼ完全にDMA駆動です。この技術は、リターゲット可能なオーディオサブシステムAHIに組み込まれ、互換性のあるアプリケーションがこのモードを透過的に使用できるようになりました。
フロッピーコントローラは非常に柔軟性に富んでいます。DMAまたはプログラムI/Oを介して、500kbit/s(倍密度)または250kbit /s(単密度またはGCR)でディスクから直接生のビットシーケンスを読み書きできます。MFMまたはGCRは最も一般的に使用される2つのフォーマットですが、理論的には任意のランレングス制限コードを使用できます。また、同期ワード(MFMコーディングでは、$4489が同期ワードとして通常使用されます)などの便利な機能も多数備えています。MFMエンコード/デコードは通常ブリッターで行われ、デコードには1パス、エンコードには3パスが用いられます。通常、トラック全体がセクターごとではなく、一度に読み書きされます。これにより、ほとんどのフロッピーディスクフォーマットで必要とされるセクター間のギャップの大部分をなくすことが可能になりました。このギャップは、ドライブの速度変動により、書き込まれたセクターが次のセクターの既存のヘッダーに「漏れる」のを安全に防ぐために必要です。すべてのセクターとそのヘッダーが常に一度に書き込まれる場合、このようなデータの漏れはトラックの末尾でのみ問題となり(それでも先頭に漏れ出してはならない)、トラックごとに1つのギャップのみが必要となります。このようにして、ネイティブのAmigaディスクフォーマットでは、3.5インチDDディスクの生の記憶容量が一般的な720KBから880KBに増加しましたが、初期のAmigaモデルの理想的とは言えないファイルシステムにより、実際のペイロードデータは約830KBに減少しました。
コントローラは、ネイティブの880KB 3.5インチディスクフォーマットに加えて、次のような多くの外部フォーマットを処理できます。
Amiga 3000では、特別な2速フロッピーディスクドライブが導入され、Paulaのフロッピーコントローラーに変更を加えることなく、容量が2倍の高密度ディスクを使用することが可能になった。
シリアルポートは基本的なもので、プログラムによる入出力のみを使用し、FIFOバッファは搭載されていません。しかし、標準レート、 MIDIレート、そして極めて高いカスタムレートなど、ほぼすべてのビットレートを選択できます。