| 一般情報 | |
|---|---|
| 発売 | 1988 |
| 製造中止 | 1988 |
| 共通メーカー | |
| パフォーマンス | |
| 最大CPU クロックレート | 2MHz~10MHz |
| アーキテクチャと分類 | |
| 命令セット | 6502 |
| 物理的仕様 | |
| パッケージ |
|
CSG 65CE02は、1988年にコモドールセミコンダクターグループによって開発された8/16ビットマイクロプロセッサです。 [1]これは、1983年にウェスタンデザインセンターによってリリースされたCMOS WDC 65C02から開発されたMOSテクノロジー6502ファミリのメンバーです。
65C02 と同様に、65CE02 は、オリジナルの 6502 の 8 µm NMOSテクノロジではなく 2 µm CMOS プロセスで構築されているため、チップが小型化 (したがって安価) され、消費電力も大幅に削減されました。65C02 に加えられた変更に加えて、65CE02 ではプロセッサ パイプラインも改良され、1 バイトの命令が 6502 (およびほとんどの派生製品) の最小 2 サイクルではなく 1 サイクルで完了できるようになりました。また、ページ境界を越えるときに 1 サイクルの遅延がなくなりました。これらの変更により、同じクロック速度でパフォーマンスが最大 25% 向上しました。
その他の変更には、3 番目のインデックス レジスタZの追加と、このレジスタを使用するためのいくつかの命令の追加と変更が含まれます。疑似レジスタとして使用されていたメモリの最初の 256 バイトであるゼロ ページは、B(ase page) レジスタを使用してメイン メモリの任意のページに移動できるようになりました。スタック レジスタは、同様のページ レジスタ SPH (stack point high) を使用して 8 ビットから 16 ビットに拡張され、スタックをページ 1 から移動して、より大きなサイズに拡張できるようになりました。
65CE02 は、未発表のCommodore 65用に開発されたシステム オン チップ CSG 4510のベースでした。65CE02 は後にAmigaコンピュータのA2232シリアル ポートカードに使用されました。他の用途には使用されなかったようです。
説明
| CSG 65CE02 レジスタ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

背景
1970年代後半までに、6502を設計したオリジナルのMOSテクノロジーチームは解散しました。ビル・メンシュはアリゾナに移り、6502ベースの設計サービスを提供するためにWestern Design Center (WDC)を設立しました。1981年頃、6502設計の主なライセンシーであるロックウェル・セミコンダクター、GTE、およびシグネティクスは、メンシュと再設計の取り組みを開始し、 WDC 65C02を生み出しました。これは主に、消費電力が10〜20倍少ないオリジナルのNMOS 6502のCMOS実装でしたが、特定のアプリケーションでコード密度を向上させるための新しい命令もいくつか含まれていました。新しい命令には、アキュムレータを増分および減分する命令、メモリ位置にゼロを書き込む命令、および分岐スタイルの1バイト相対アドレスによるジャンプ命令が含まれていました。65C02では、オリジナルの6502設計のいくつかの小さな欠陥(および少なくとも1つの明らかなバグ)も修正されました。
INA/DEASTZBRA
オリジナルの 6502 は、マイクロコンピュータが存在する前の時代に設計されました。当時は、マイクロプロセッサは、スマート端末、デスクトップ計算機、さまざまな産業用コントローラシステムなどのより単純なシステムの基盤として使用されていました。また、メモリ デバイスが一般にスタティック RAMに基づいていた時代でもありましたが、これは非常に高価でメモリ密度が低かったです。これらの理由から、「大量」のメモリを処理する機能は必要とされず、多くのプロセッサは、より高いパフォーマンスを提供するために、より大きなアドレス空間の小さな部分で動作する動作モードを持っていました。6502 の場合もそうで、最初のメモリ ページ、つまり「ゼロ ページ」を使用してアクセスを高速化し、2 番目のページである「ページ 1」を使用して 256 バイトのスタックを保持していました。
1980 年代になると、これらの仮定はもはや当てはまらなくなり、これらのプロセッサをベースにした多くのマシンは、はるかに安価で密度の高いダイナミック RAM を使用して、6502 がアドレス指定できる最大の 64 kB で出荷されました。ゼロ ページ アドレッシング モードの速度の利点はそのまま残りましたが、劇的に拡大したメモリ空間内で実現されました。同様に、シングル ページのコール スタックは、全体のメモリ内ではわずかなものとなり、スタック空間を大量に使用する高級言語は6502 では簡単には実行できませんでした。
新機能
65CE02 は 65C02 のさらなる改良版で、メモリ モデルを拡張して、大容量のメイン メモリを搭載したシステムに適したものにしています。そのために、次の新機能が追加されています。
- 65CE02 は、ベース ページ用の 8 ビット B レジスタを追加し、ゼロ ページをメモリ内の任意の場所にオフセットします。B は電源投入時またはリセット時にゼロに設定されるため、65CE02 は最初は 6502 とまったく同じように動作します。
TAB(Transfer A to B) を使用して B レジスタに値を配置すると、ゼロ ページは新しい場所に移動します。この機能の重要な用途は、ページの 256 バイト内に収まる小さなルーチンがゼロ ページ アドレッシング (現在はベース ページ アドレッシングと呼ばれています) を使用できるようにすることです。これにより、アドレスに 2 番目のバイトがなくなるためコードが小さくなり、2 番目のバイトをメモリからフェッチする必要がないため、コードの実行速度も速くなります。[1]
- 65CE02 は、スタックを元の 1 ページ目の 256 バイトから、理論上はアドレス空間全体に拡張します。これは、スタック ポインター ハイ用の別の 8 ビット レジスタ SPH を追加することで実現します。通常、これは B のように動作し、スタックのベース アドレスを 1 ページ目から任意の選択されたページにオフセットします。それ以外は、最大サイズが 1 ページ (256 バイト) であるため、以前と同じように動作します。B と同様に、起動時またはリセット時に SPH は 01 に設定され、65C02 とまったく同じように動作します。[1]
- 新しい命令を使用してステータス レジスタの新しい「スタック拡張」ビットが設定されると
CLE/SEE、スタック ポインタは真の 16 ビット値になります。SPH の値は、スタック ポインタ ロー (SPL) として知られる元の SP の値に追加され、スタックの下部への 16 ビット ポインタが生成されます。これにより、スタックは元の 256 バイトよりはるかに大きくなりますが、これは高級言語には小さすぎます。[1]
- これは、スタックには 2 つのタイプがあることを意味します。どこにでも配置できる 256 バイトのスタックと、メモリにまたがる 16 ビットのスタックです。後者はより柔軟ですが、スタックへのアクセスには 2 つのレジスタから 16 ビットのアドレスを構築する必要があり、余分なサイクルが必要になり、全体的なパフォーマンスが低下します。可能であれば、より小さなスタックを使用すると、パフォーマンスが向上します。[1]
- 65CE02 では、新しいインデックス レジスタZ も追加されています。これは、起動時またはリセット時にゼロに設定されるため、Z をメモリに格納する命令 は、
STZ65C02 と同様に機能します (65C02 では、同じ命令がゼロをメモリに格納することを意味します)。これにより、変更されていない 65C02 コードを 65CE02 で実行できます。Z レジスタにアクセスできるようにするために、他の多くの命令が追加または変更されています。これらの中にはLDZ、メモリから値をロードする命令、TZA/TAZアキュムレータとの間で値を転送する命令、PHZ/PLZスタックに Z をプッシュおよびプルする命令、INZ/DEZ増分および減分を行う命令、CPZZ の値をメモリの値と比較する命令などがあります。[1]
- 65C02 では
BRA、Branch Always 命令が追加されました。これは基本的にJMP、16 ビットの絶対アドレスではなく、分岐形式の 8 ビット相対アドレスを使用する命令です。理由は不明ですが、65CE02 ではニーモニックがBRU(Branch Unconditionally) に変更されました。また、Branch to SubRoutine 命令も追加されました。これは、 Jump to SubRoutineBSR命令と同じ相対アドレッシング モードを使用します。 [1]JSR
- さらに、CE は既存の分岐命令すべてに 16 ビットのアドレス指定、つまり「ワード相対」を追加しました。以前は、分岐は符号付き 8 ビット値、つまり「相対アドレス」に基づいて、後方 128 位置または前方 127 位置しか移動できませんでした。65CE02 では、16 ビット値で分岐を続けることで、相対アドレスは -32768 または +32767 位置になる場合があります。以前は、「長い分岐」を実行するには、通常、
JMP16 ビットのターゲットに を使用し、その後、不要な場合はその 3 バイトを分岐する必要がありました。たとえば、アキュムレータがゼロの場合にアドレス $1234 に分岐する場合は を使用します。つまり、アキュムレータがゼロでないCMP #$00/BNE +3/JMP $1234場合は3 バイトをスキップするということです。65CE02 では、これを のように短縮できるため、コードがわかりやすくなり、命令の 2 バイトが削除され、分岐のフェッチと実行に要するサイクルのロスがなくなります。しかし、相対アドレス指定を使用しているため、機械語に変換する際には、プログラマーまたはアセンブラがラベルから相対アドレスを計算する必要があります。[1]JMP addrCMP #$00/BEQ $0123
- システムに追加されたもう 1 つの機能は、16 ビット データに対して操作を実行する多数の「ワード」命令です。これには、
INW/DEWメモリ内の値の増分と減分、ASW/ROW算術シフト (左) ワードまたは ROtate (左) ワードの実行が含まれます。[1]
- より小さな変更点としては、
ASR算術(符号付き)右シフトを実行する (6502 では論理右シフト、つまり符号なし右シフトのみが可能だった)、アキュムレータで2 の補数のNEG A否定を実行する 命令、および、先頭ではなくスタックのアドレス オフセットに戻る(サブルーチンからの戻り)のバリエーションである の追加などがある。これにより、ルーチンの実行中にルーチンが追加した内容を明示的にオフにする必要がなくなる。また、システムでは、間接アドレッシングの基準としてスタック上のベース アドレスを使用する新しいアドレッシング モードも追加された。[1]RTNRTSPOP
- 最後に、将来の拡張のために新しい4バイト
AUG命令が追加されました。データシートではその最終的な目的は明確にされていませんが、メモリ管理ユニットなどのコプロセッサユニットに命令を渡すためのプレースホルダであると思われます。[1]
パイプラインの改善
オリジナルの6502の大きな特徴は、1バイトの命令が完了するのに2サイクルかかったことです。これによりパイプラインINXシステムの簡素化が可能になりました。メモリからの次のバイトは、操作がデコードされている間にフェッチされます。つまり、次のバイトは必ずフェッチされます。ほとんどの命令では、このバイトはオペランドの一部(または全体)であり、デコードされた命令にすぐに取り込むことができます。[2]
命令が 1 バイトしか必要としない場合でも、プロセッサは最初のバイトをデコードしながら次のバイトを読み取ります。この場合、次のバイトは次の命令ですが、それをパイプラインの最初のステージにフィードバックしてデコードする方法がありませんでした。代わりに、フェッチされた命令は破棄され、デコーダにフィードするために再度読み込まれました。これによりサイクルが無駄になります。これにより、多くの命令が本来よりも遅くなりましたが、この「機能」は 65C02 でも保持されました。ただし、これがパイプラインの単純さを維持するためなのか、サイクルのタイミングを維持するためなのかは、入手可能な情報源では説明されていません。[2]
65CE02ではサイクル互換性の維持は必須条件ではなく、新しい製造プロセスによりパイプライン内の追加回路は問題ではなくなったため、パイプラインは1サイクルで1バイトの命令を処理できるように再配置されました。[2]これらの改良により、65CE02は以前の65xxモデルよりも最大25%高速にコードを実行できます。[1]
さらなる改善により、最終アドレスを生成するために値を加算するアドレス指定命令に関する問題が解消されました。例としては、インデックス レジスタの 1 つの値がベースアドレスに加算され、その結果のアドレスに命令が適用される「インデックス間接」が挙げられます。オリジナルの 6502 では、2 つの値の加算が現在の 256 バイト ページ境界を越えると、最終アドレス値を生成するために追加のサイクルが必要でした。65CE02 ではこの制限がなくなり、これらのよく使用されるモードのパフォーマンスが向上しました。[1]
物理的詳細
2µm CMOS技術を使用して製造されており、65xxファミリーの以前のNMOSおよびHMOSバージョンと比較して低消費電力動作が可能になっています。6502とピン互換の40ピンDIPに収められています。[3]
CSG4510

4510は65CE02のシステムインパッケージ(SiP)版で、2つの6526 CIA I/Oポートコントローラと、アドレス空間を20ビット(1メガバイト)に拡張するカスタムMMUを搭載している。84ピンPLCCに収められている。[4]
4510は、未発表のコモドール65ホームコンピュータ[5]と、未発表のコモドールCDTVのコスト削減版[ 5]に使用されました。 [6]
アプリケーション
65CE02は、 AmigaコンピュータのCommodore A2232シリアルポートカードに使用されました。[7] [8]
参照
参考文献
- ^ abcdefghijklm 「MOS 65CE02 マイクロプロセッサ データシート」(PDF)。
- ^ abc 「米国特許 5088035: マイクロプロセッサによるプログラム命令の実行を加速するシステム」。
- ^ 「Commodore Semiconductor Group CSG65CE02 テクニカル リファレンス」 zimmers.net。2009 年 8 月 18 日。2013年 6 月 21 日閲覧。
- ^ 「Amiga の情報: 4510 ハードウェア情報」。
- ^ ab 「コモドール ナレッジ ベース: コモドール 65」。
- ^ 「Amiga ハードウェア データベース: CDTV II」。
- ^ 「Amiga の情報: 65CE02 ハードウェア情報」。
- ^ 「Amiga ハードウェア大全: Commodore A2232」.
さらに読む
外部リンク
- Commodore Semiconductor Group CSG65CE02 技術リファレンス
- 65CE02 マイクロプロセッサ (暫定版) (1988 年 11 月)
- 65CE02 パッケージとダイの画像
- Victor F. Andrade 氏 (65CE02 主任 LSI エンジニア) のプロフィール
