トップQs
タイムライン
チャット
視点

MOS 6502

8ビットマイクロプロセッサ ウィキペディアから

MOS 6502
Remove ads

MOS 6502(ロクゴーゼロニ)は、1975年にアメリカ合衆国のMOS Technology社から発表された8ビットマイクロプロセッサである[3]。当時の競合製品、特にインテル8080やモトローラMC6800と比較して、極めて安価な価格設定と、高い処理効率を両立した革新的な設計思想により、パーソナルコンピュータおよびテレビゲーム機の黎明期における普及を決定づけた、歴史的に特に重要なCPUの一つとして位置づけられる[4]。CMOS化とともに命令も強化され、そのアーキテクチャが現在も組み込みシステムで使われ続けている重要なマイクロプロセッサである。より正式にはMOS Technology 6502と表記される。

概要 生産時期, 販売者 ...
Remove ads

概要

要約
視点
開発背景と市場戦略

6502の開発チームは、モトローラ社のMC6800の開発に携わっていたエンジニア、特にチャック・ペドル(Chuck Peddle)とビル・メンチ(Bill Mensch)らを中心とするメンバーが、モトローラを退社し構成された[5]。彼らは、当時の高価なCPU(約179ドル)が市場の拡大を阻害していると判断し、製品をホビイスト向けに25ドルという破格の低価格で販売するという、積極的な価格破壊戦略を採用した[6]。この低価格戦略は、ホビー用コンピュータ・個人用コンピュータ市場を一気に開拓しApple、Commodore、Atariといった新興企業による革新的な製品への採用を促す決定的な要因となった[7]。(#歴史

主要な技術的特徴

6502の設計は、チップ面積の最小化と命令実行サイクルの短縮、すなわち高いコストパフォーマンスの実現に重点が置かれている[8]

シンプルなレジスタ構成

6502のレジスタセットは極めて簡素化されており、8ビットのアキュムレータ(A)が1つ、同じく8ビットのインデックスレジスタ(XとY)が2つ存在するのみである[9]。このシンプルな構成は、競合製品よりもトランジスタ数を大幅に削減し、低コスト化と高速動作に貢献した[10]。インデックスレジスタが8ビット幅であるため、プログラミングにおいては効率的なポインタ操作のためにゼロページ・アドレッシングを多用する手法が確立された[11]

高効率なパイプライン処理

6502は、命令のフェッチ(読み出し)とデコード(解釈)と実行をオーバーラップさせる洗練されたパイプライン機構を備えている[12]。この機構により、同じクロック周波数で動作する同時期の他社のCPUよりも、実効的な処理速度が格段に速くなった[6]。多くの命令がわずか数クロックサイクルで完了するため、リアルタイム処理が求められるゲーム機などのシステムにおいて特に有利であった。

多彩なアドレッシングモードとゼロページ

6502は、豊富なアドレッシングモードを有し、メモリアクセスの柔軟性と効率性を高めている[13]

  • ゼロページ・アドレッシング - メモリマップの最初の256バイト($0000〜$00FF)を「ゼロページ」と定義し、アドレスを1バイトのオペランドで指定できる[14]。これにより、命令コードを短縮し、かつ高速なメモリアクセスを可能にしたため、この領域は頻繁に利用される変数やポインタの格納に不可欠となった。
  • 間接アドレッシング - 間接アドレッシングにおいては、インデックスト・インダイレクト(Indexed Indirect: (IM8, X))とインダイレクト・インデックスト(Indirect Indexed: (IM8), Y)という、動作順序が異なる2種類のモードを備えている[15]。これらは、特にデータ構造やテーブルへのアクセスを効率的に行うための強力な機能であった。
バス互換性とバイトオーダー

6502はMC6800と多くの点でバス互換性を持っていたが、データ格納のバイトオーダーはMC6800のビッグエンディアンとは異なり、リトルエンディアン(下位バイトが先にメモリに格納される)を採用している[16]

派生CPU、CMOS化による組み込み用途の発展

6502は、その価格優位性と処理効率から、1970年代や1980年代は、多くのマイクロコンピュータ(ホームコンピュータ、パーソナルコンピュータ)のCPUとして採用された。Apple Computer社のApple IおよびApple II[17]、Commodore社のPET 2001やVIC-20[18]、Atari社のゲーム機Atari 2600などに広く採用された。 さらに、任天堂の家庭用ゲーム機ファミリーコンピュータ(NES)には、6502に音源回路を追加・統合し代わりに10進演算機能を削除した派生チップRP2A03(リコー製)が搭載され、世界的な普及に貢献した[19]#歴史#採用例

オリジナルはNMOSのプロセッサであったが、1980年ころからWDC社により、省電力で発熱の少ないCMOS版の開発が進み、さらにオリジナルのNMOS版の命令セットのいくつかの欠点も改良され( #CMOS化)、1983年からCMOS版65C02の出荷が開始され、組み込み用途のCPUとして採用されることが増え、寿命の長いCPUとなっていった。CMOS技術は1980年代以降の半導体の主流となり、CMOS版65C02は現代に至るまで生産が(主にWDCによって)継続されており、産業用システムの長期的な維持に不可欠なプロセッサであり続けている(#採用例)。  

Remove ads

6502のレジスタセット

さらに見る 呼称, 説明 ...
  • 6502のレジスタはPCが16ビットであることを除き、すべて8ビットである。
  • スタックポインタも上位8ビットが$01に固定されており、スタック領域としては第1ページ(アドレス範囲 $0100 - $01FF)の256バイトのみが使用可能。

命令セット

要約
視点
  • 命令はバイト単位で、1 - 3 バイトの可変長命令である。
  • 主な命令内容は以下の通り
    • メモリまたはイミディエイト値からレジスタへのロード
    • レジスタからメモリへのストア
    • レジスタ値を別のレジスタへ転送(コピー)
    • Aレジスタを用いた次の処理
      • 加算
      • 減算
      • ビット論理演算
      • 比較演算
    • 絶対番地による無条件分岐
    • サブルーチン分岐・リターン
    • Pレジスタ値による相対番地への条件分岐
    • スタックへのプッシュ・プル
    • Pレジスタへのセット・クリア
  • 加減算命令は、必ずキャリーを伴って行われるため、単に2値の加減算を行う場合には、必ずCLCまたはSEC命令でキャリーを初期化する必要がある。
  • リセット直後は$FFFC番地に格納されたアドレス(RSTベクタ)から増加する方向に実行が行われる。また、スタックポインタはアドレスが減少する方向に自動的に減算されるため、スタックはメモリ下位番地に向かって伸びる。
  • アセンブリ言語において、ニーモニックは必ず3 文字で表記される。
  • 豊富なアドレッシングモードを持つ。
  • A,P以外のレジスタをスタックに直接プッシュ・プルする命令はない。
  • インデックスレジスタの値は+1,-1できるが、算術・論理演算に使用する命令はない。

主なアドレッシングモード

さらに見る 呼称, 記述 ...

ただし、nには16進1桁の数値を指定する。

  • ゼロページではアブソリュートより命令のコード数が1バイト少なくなり、所要サイクル数も変化する。
  • MC6800シリーズは「16 ビットインデックス値+8 ビット定数」になるのに対して、6502はインデックスレジスタが2 つで「16 ビット絶対番地+8 ビットインデックス値」になっているのが最大の違いとなっている。比較すると、インデックスレジスタの重要性が増す代わりに、ポインタを扱うのは難しくなっている。

割り込み

6502の割り込み処理は三種類ある。それぞれの割り込みにつき、所定のアドレスに割り込み処理ルーチンの先頭アドレスが記載されており、割り込みが入るとそこへ制御を移す。割り込み処理ルーチンを終了して元のルーチンに復帰するにはRTI 命令 (0x40) を使用する。

さらに見る $XXXX, 割り込み名 ...

周辺チップ

周辺チップ英語版としては、6502用のタイミングにあわせた6521(6821互換)PIAや6522、6551 (ACIA) などが用意されていた。

CMOS化

要約
視点

最初、NMOSプロセスで生産されたが、 オリジナルのNMOS版6502と比較して消費電力の低いCMOS (Complementary Metal-Oxide-Semiconductor) 版である65C02が、特に**ウェスタンデザインセンター (WDC)**によって開発・改良された。WDCは1980年代初頭にこの技術を導入し、1983年頃には製品の出荷を開始した。ロックウェルも製造。

CMOS版は下記の点で、NMOS版6502に優り、6502という設計の寿命を組み込みシステムの世界で大幅に延ばすことになった。

  • NMOSはトランジスタがオフ状態でも電流が流れ続ける(静的消費電力が発生する)のに対し、CMOSはオフ状態のとき電流がほぼゼロになり、特に待機状態や低速動作時の電力消費が劇的に減少し、バッテリー駆動の機器も多い組み込みシステムへの採用で有利になった。
  • 発熱が少ないことでヒートシンクが不要になり、システムの小型化や信頼性の向上に貢献した。
  • CMOS回路はNMOSよりも電源電圧変動に対するノイズ耐性が高く、特に産業用途やノイズの多い環境での信頼性が向上

また、加えて次の点も65C02のメリットとして挙げられる

  • 命令セットにSTZ命令(STore Zero、値$00のストア)を追加 - アキュムレータ (A) を変更せずに、直接メモリに $00 をストアできるようになり、レジスタの状態を保存・復元する手間が省け、コードが簡潔になった。
  • BRA命令(BRanch Always、無条件相対分岐)を追加 - 無条件で相対分岐を実行する。NMOS版6502 は無条件分岐に絶対アドレス指定の JMP しか持たず、相対アドレス指定による短いコードを実現できなかった。BRA の追加により、位置独立コードの作成が容易になり、コードサイズが削減された。
  • ビット操作命令 (SMB, RMB, BBR, BBS)の追加 - ゼロページメモリ上の特定のビットを直接セット (Set Memory Bit) またはリセット (Reset Memory Bit) する命令 (SMB, RMB) や、特定のビットをテストして分岐する命令 (BBR, BBS) が追加された。制御機器やI/Oポート操作を行う組み込みシステムにおいて、これらの命令は処理速度を大幅に向上させ、コードを劇的に簡素化した。
  • スタックポインタの操作命令 (TSX, TXS )の強化 - インデックスレジスタとスタックポインタ間の転送が、より柔軟に行えるようになった。
  • NMOS版6502にあったJMP(Indirect) (xxxx)$ のバグ修正 - NMOS版 6502 の JMP ($xxFF) 命令(間接ジャンプ)は、アドレスの下位バイトが $FF の場合、上位バイトが正しくインクリメントされないという致命的なバグがあったが、MOS版65C02 ではこれが修正され、信頼性の高い間接分岐が可能になった。
  • 未定義オペコードの挙動の確定 - NMOS版 $6502$ は、命令セットにないオペコードを与えると予測不能な動作をしたり、意図しない二つの命令を実行したりする「非公式命令」の挙動が問題でした。$65C02$ では、これらすべての未定義オペコードがNOP (No Operation) として処理されるようになり、システムの安定性が向上した。

なお、CMOS版65C02 は基本的に一つの標準として設計されたが、ウェスタンデザインセンター(WDC)[注釈 1]ロックウェル・インターナショナル(Rockwell international)、リコー(Ricoh)、Synertek、GTEなど複数のメーカーが製造し、異なるメーカーの 65C02では、一部の拡張命令や未定義オペコードの挙動にわずかな違いが生じ、あるいはWDCの 65C02 のように WAI (割込待ち) / STP (停止) 命令が追加されていたりするなど、拡張命令のセットにバリエーションが生じたことに若干の注意を要する。

モステクノロジーによる製造はもう行われていない[注釈 2]

Remove ads

互換CPU

Thumb
W65C02
65C02 (Rockwell)
CMOS版で、命令が拡張されている。
W65C02 (Western Design Center)
CMOS版で、Rockwellのものとは別の形で命令が拡張されている。Apple IIe, IIcなどに採用。
6507
6502のアドレスを13ビットに削減したもの。Atari 2600アタリ)で使用。
6510
6502にクロック入力ピンとI/Oポートを追加。VIC-20 (VIC-1001) の後継機、コモドール64マックスマシーンで使用。改良版の7501/8500/8501というバリエーションも存在する。
8502
6510を高速化、コモドール128で使用。
Thumb
RP2A03E
RP65C02 (RICOH)
CMOS版6502。Rockwell製NMOS版6502とピンコンパチブル、命令コンパチブルであり、さらに59の命令の追加、パワーダウン、スタンバイモードなどCMOSの特長を備える。
RP2A03 (RICOH)
6502から10進演算関連の機能が削除され、サウンド機能が追加されているもの。ファミリーコンピュータで使用。CPUのIPコアも存在した。
Thumb
HuC6280A
HuC6280
ハドソンが開発。高クロック化がはかられ独自に命令拡張がなされたもの。PCエンジンで使用。
65816 (W65C816)
Western Design Centerが開発。レジスタの16ビット化を含む多くの機能拡張がなされたもの。Apple IIGSスーパーファミコンで採用。
740ファミリ
ルネサス エレクトロニクス(旧三菱電機)社製の8ビットMCUコア。7200、740/7450/7470、7600、38000シリーズがある。8ビット定数を直接ゼロページに入れる命令、乗除算命令(一部のもの)を備える。ビット操作・ブランチ命令もあるが、両65C02のものとは互換性がない。スタックは1ページではなくゼロページに置くことも可能。ROM・RAMと周辺機能を内蔵し、ゼロページの下位はI/Oレジスタとなっている。
7700ファミリ
ルネサス エレクトロニクス(旧三菱電機)社製の16ビットMCUコア。7700、7900シリーズがある。公式にはうたっていないが内容的には6502を拡張したもので、65816とはレジスタ構成と命令セットの多くが共通であり、さらに多バイト長コードの命令が増えている。6502エミュレーションモードはない。ビット操作・ブランチ命令は両65C02や740シリーズとは互換性がない。ROM・RAMと周辺機能を内蔵する。
YM-2002 (YAMAHA)
ヤマハ製の互換CPU。ゼロページが2ページあり、Z80の表レジスタ、裏レジスタのように切り替えられる。YIS(ワイズ, Yamaha Integrated System)はコンピュータを中心としたトータルシステムのホームコンピュータで使用した。
SPU
ソニー製のチップまたはCPUコアで、8ビットのアキュムレータの上下の4ビットの部分を交換するXCN (eXChange Nibble) と8ビット×8ビット=16ビットの乗算命令が追加されている。スーパーファミコンのDSP制御用としても使用された。
Remove ads

採用例

要約
視点

オリジナルの6502だけでなく、互換CPUも挙げる。

トレーニングキット、ホームコンピュータ、ゲーム機

  • KIM-1 - 開発元によるワンボード型の開発キット(トレーニングキット)。オリジナルの6502を搭載。
  • Apple I - オリジナルの6502。スティーブ・ウォズニアックが、当時Motorola 6800の半額ほどで済むという理由でCPUに採用した(Mos technology側の意図通り、低価格に反応した)。Apple I自体の製造は170~200台程度だったが、後継機のApple IIにも採用される理由となったので、その意味で重要。
  • Apple II - 1977年5月リリース。大ヒット商品、ロングセラーとなり、Apple IIのおかげで6502に親しむ人が急増した。Apple II Plus, IIeでも採用。Apple IIシリーズの累計販売台数は、(正確な数は不明だが)13年間の販売期間の累計で500万台から600万台ほどだとされる。
  • Commodore PET(PET 2001)- 1977年1月発表、10月発売。
  • CBM3032
  • Atari 400/Atari 800 - 1979年発売
  • VIC-20 (日本国内名:VIC-1001)- 1980年ころ発売
  • en:Acorn Atom - 1980年
  • Commodore 64 - 1982年発売。改良版のMOS 6510を採用
  • 任天堂ファミリーコンピュータ(海外版: Nintendo Entertainment System (NES)) - 互換CPU。1983年ころ発売
  • Atari 5200 - ゲーム機、1982年
  • Commodore 128 - ホームコンピュータ
  • NEC PCエンジン (TurboGrafx-16) - ゲーム機、1987年

制御用、組み込み用

NMOS 6502を搭載した装置
  • New England Digital製 シンセサイザー「Synclavier I / II」 - 1977年以降にNMOS6502を搭載
  • シーケンシャル・サーキット社製 シンセサイザー「Prophet-5」- 1978年、NMOS6502を搭載
  • E-mu Systems製 デジタルサンプラー「Emulator I」 - 1981年に搭載
  • Rolandシーケンサー「CSQ-600」 - 1979年搭載
  • Commodore製 専用ワードプロセッサ(Commodore Word Processor) [注釈 3]
  • プリンタの制御部(Rockwell R6500ファミリ)
  • Rockwell(Allen-Bradley)製 プログラマブルロジックコントローラ「PLC-2」
  • General Electric (GE)製 製造ライン制御装置「GE Series Six Plus PLC」のI/O制御部。1980年代に搭載。
  • Tektronixオシロスコープ「492P」の掃引・表示機能制御。1980年搭載。
  • Tektronix製 ロジックアナライザ「1240」のメイン制御・UI制御。1983年搭載。
CMOS 65C02を搭載した装置
  • Medtronic製 植込み型ペースメーカーの制御中核。1980年代に搭載。
  • GTE Microcircuits製 電話交換機PBX / 通信制御装置)の制御部。1980年代前半搭載
  • AT&T / Lucent製 通信機器、DS1/T1ラインカードのプロトコル制御。1980年代後半搭載

2000年代の主な用途

Remove ads

歴史

要約
視点
きっかけ

モトローラの技術者としてMC6800の設計とマーケティングに携わっていたチャック・ペドル(Chuck Peddle)は、当時の高価なマイクロプロセッサがホビーや個人用途の市場開拓を妨げているという強い信念を持っていた[5]。ペドルは、モトローラで6800の廉価版を提案したが受け入れられず、1974年に設計者であるビル・メンチ(Bill Mensch)らと共に退社し、MOS Technology社に移籍した[23]

設計

新チームは、6800のアーキテクチャを参考にしつつ、チップ面積を最小化するためにレジスタ数を徹底的に削減し、代わりにアドレッシングモードとパイプライン処理を洗練させた6502を設計した。これは、当時最も成功していたインテル8080やMC6800の価格(約179ドル)を大きく下回ることを目的としていた[4]

発表

6502は、1975年9月にサンフランシスコで開催されたウェスコン(WESCON)という見本市で正式に発表された。この際、チャック・ペドルは競合他社のブースで自社の6502を25ドルという破格の価格で販売し、大きな話題を呼んだ。ペドルの狙い通り、この価格設定は当時の業界に大きな衝撃を与え「パーソナルコンピュータ革命」の引き金の一つとなった[7]

採用

6502は、その低コストと性能のバランスから、電子ホビイストらや初期のコンピュータメーカーに急速に採用された。初期段階で特に重要だったのは下記の採用である。

  • KIM-1 - MOS Technology自身がホビイスト向けに開発・販売したシングルボードコンピュータに搭載。安価な学習・開発用プラットフォームとして普及した[24]。(KIMはKeyboard Input M'onitorの略)。
  • Apple II: 1977年に発売されたApple ComputerのApple IIに搭載され、この機種の世界的な成功により6502の地位は決定的なものとなった[25]
  • Commodore PET - 1977年にCommodore International(MOS Technologyを1976年に買収)から発売された一体型パーソナルコンピュータCommodore PET 2001にも採用された[26]
  • ゲーム機 - Atari社の家庭用ゲーム機Atari 2600(1977年)や、後に続くAtari 5200などにも搭載され、ゲーム業界の中核CPUとしても広く利用された。
初期ロットの不具合と実務的対処

6502は設計段階で高い完成度を誇ったものの、初期に出荷されたNMOS版チップにはいくつかのマイナーな技術的欠陥が確認されていた。その中でも、ROR命令(右回転命令)は、特定の条件下で誤動作する不具合があった[27]。この問題に関しMOS Technology社は、設計の修正を行うまでの間のユーザーの混乱と誤用を避ける、という実務的で賢い判断を行い、初期の公式ドキュメント(データシート)ではROR命令を意図的に非掲載とする対応を取った。そしてこの不具合は、1976年5月以降に出荷されたチップにおいて速やかに修正され、ROR命令は正常に動作するようになったので、公式ドキュメントの命令セットに正しく掲載されることになり、当時の市場に広く普及した大半の6502チップにはこの問題は存在しない[16][注釈 4] 人気のKIM-1に搭載されているMOS 6502も、ほとんどの場合基板に直接はんだ付けされておらずDIPソケット(Dual In-line Package socket)に差し込まれており、正常動作する6502チップに差し替え可能となった。

派生CPU、16ビット化による長期的な展開 (1980年代以降)

6502の成功を受け、多くのメーカーがライセンス生産や互換チップの開発を行った。1980年代初頭には、低消費電力化を図ったCMOS版の65C02が登場し、オリジナル版のバグも解消された[28]。任天堂のファミリーコンピュータ(NES)には、音源回路を統合した6502のカスタム派生チップRP2A03が搭載され、世界的な普及に貢献した[19]。さらに16ビットに拡張されたW65C816は、Apple社のApple IIGSや任天堂のスーパーファミコン(SNES)に採用され、そのアーキテクチャは現在に至るまで利用され続けている[29]

なお、ARM (Acorn RISC Machine) の設計は6502を参考に行われたとされることがあるが、設計者らは6502を参考に設計を行ったわけではない。ARMの命令セットを設計したソフィー・ウィルソンは、6502とARMにはほとんど共通点がないと述べている[30]。別のインタビューでは、(メインメモリをVRAMとしても使っている当時のパソコンの設計では)メモリアクセスが比較的に高性能であり、6502はそれを利用するバランスがすぐれていた、という事のみ言及している[31]

脚注

参考文献

関連項目

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads