MOS 6502

MOS Technology 6502
モステクノロジー 6502 マイクロプロセッサ
生産時期 1975から
販売者 モステクノロジー
CPU周波数 1 MHz から 3 MHz
パッケージ 40ピンDIP
前世代プロセッサ
次世代プロセッサ
トランジスタ 3,510, 3,218
テンプレートを表示

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

概要

開発背景と市場戦略

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

主要な技術的特徴

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

6502のアーキテクチャ
シンプルなレジスタ構成

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

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

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

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

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

バス互換性とバイトオーダー

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

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

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

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

6502のレジスタセット

6502のレジスタセット
呼称説明
P プロセッサステータス
A アキュムレータ
X インデックスレジスタX
Y インデックスレジスタY
PC プログラムカウンタ
S スタックポインタ

命令セット

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

主なアドレッシングモード
呼称記述説明
イミディエイト#nn 直接8 ビットの値を指定する。
アブソリュートnnnn 直接16 ビットの番地を指定する。
ゼロページnn ゼロページの番地を下位8ビットで指定する。
リラティブnn 命令直後から-128 - +127の範囲の相対番地を指定する。
ゼロページ・インデックストXnn,X ゼロページの番地にXレジスタの値を加算した番地を指定する。
ゼロページ・インデックストYnn,Y ゼロページの番地にYレジスタの値を加算した番地を指定する。
アブソリュート・インデックストXnnnn,X 絶対番地にXレジスタの値を加算した番地を指定する。
アブソリュート・インデックストYnnnn,Y 絶対番地にYレジスタの値を加算した番地を指定する。
インデックストX・インダイレクト(nn,X) ゼロページ・インデックストXで指定される番地に格納された16 ビット値を指定する。
インダイレクト・インデックストY(nn),Y ゼロページの指定される番地に格納された16 ビット値に、Yレジスタの値を加算した番地を指定する。

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

割り込み

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

割り込み処理 一覧
$XXXX 割り込み名 詳細 優先順位
$FFFA NMI 制御不能の強制割り込み。間隔はシステムに依存 2
$FFFC RESET 開始時のみ発動 1
$FFFE IRQ/BRK BRK 命令 (0x00) 時に発動 3

周辺チップ

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

CMOS化

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

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

また、NMOS版から以下の命令が追加されている。

NMOS版で存在した以下の問題点についても修正されている。

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

モステクノロジーによる製造はもう行われていない。

互換CPU

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で使用。
G65SC02
カリフォルニアマイクロデバイス(英語版)による互換CPU。他の65C02で追加されている無条件相対ジャンプ命令などの一部命令も追加されているが、ビット操作やビット判定、WDC版で追加されている割り込み待ち(WAI)や停止(STP)などの命令は含まれていない。
RP2A03E
RP65C02 (RICOH)
CMOS版で、Rockwell製NMOS版6502とピンコンパチブルであり、パワーダウン、スタンバイモードなどCMOSの特長を備える。
RP2A03 (RICOH)
6502から10進演算関連の機能が削除され、サウンド機能が追加されているもの。命令はNMOS版の6502準拠で、65C02準拠ではない。ファミリーコンピュータで使用された。CPUのIPコアも存在した。
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制御用としても使用された。

採用例

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

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

制御用、組み込み用

NMOS 6502を搭載した装置
CMOS 65C02を搭載した装置
  • Medtronic製 植込み型ペースメーカーの制御中核。1980年代に搭載。
  • GTE Microcircuits製 電話交換機(PBX / 通信制御装置)の制御部。1980年代前半搭載
  • AT&T / Lucent製 通信機器、DS1/T1ラインカードのプロトコル制御。1980年代後半搭載

2000年代の主な用途

歴史

きっかけ

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

設計

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

発表

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

採用

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

初期ロットの不具合と実務的対処

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

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

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

他

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

脚注

注釈

  1. ↑ XやYレジスタ、メモリに対しては存在することを考えると奇妙な見落としであった。
  2. ↑ JMP ($10FF) という命令の場合、本来であれば$10FF, $1100の2バイトをジャンプ先アドレスとして使うべきところ、NMOS版では$10FF,$1000の2バイトを取得してしまっていた。
  3. ↑ この修正のために、この命令は6502では5クロックかかるところ、65C02では6クロックとなり、1クロック余分に消費されることになった。
  4. ↑ 例えばADC $10F0,X でXレジスタが$21だった場合、上位アドレスが繰り上がる前の$1011のアドレスの内容を一度読み込んだ後(この内容は使用されず捨てられる)、上位アドレスが正しく繰り上がった$1111のアドレスの内容を読み込む。
  5. ↑ WDCの公式ドキュメントでは「reserved for future use(将来の拡張用)」と書かれている。
  6. ↑ ただし、未定義命令が完全にNOPと同等になったわけではなく、1バイト命令で2クロックを消費する挙動は本来のNOP($EA)のみである。未定義命令のうち、$03は1バイト命令だが1クロックしか消費せず、$5Cは3バイト命令で8クロックを消費する。2バイト以上のNOPはオペランドによってはメモリアクセスの可能性があるため、I/Oポートなどへの影響は留意する必要がある。
  7. ↑ 1977年にモステクノロジーのメンバーがスピンアウトした会社
  8. ↑ モステクノロジーはモトローラからスピンアウトしたチームで、当初に発表したMCS6501がピン配列が完全互換だったことでモトローラとの特許係争もあり、1976年に資金難から、コモドール傘下に入りCommodore Semiconductor Group (CSG) となっていた(ICのマーキングにはMOSブランドがしばらく使用されていた)。同社は1994年にコモドールごと倒産した。 (モステクノロジー社はMostek社とは別の会社である)。
  9. ↑ 搭載年詳細不明
  10. ↑ ただし、トランジスタロジックで6502の再現を行ったエリック・シュレープファー氏は、彼が作成した動画The 6502 Rotate Right Myth(6502でのROR命令の神話)の中で、チップのマスクの写真を初期版と改良版とで比べた結果、初期版には処理回路のバグどころか命令のデコード自体行われていないと証言している。
  11. ↑ ROR命令の不具合ロットを識別するためには、チップ表面に印字された製造年週を示す4桁の日付コードが使える。MOS6502のチップに印字されているコードの形式は「WW(週)YY(年)」なので、ROR命令の不具合が含まれるロットは、1975年製造を示す「xx75」および、1976年製のうち「1876」前後までと推測されている。この「1876」('76年第18週)は、1976年4月末にあたる週であり、修正が完了する直前のロットに該当する可能性がある。不具合が解消されたチップが市場に出回り始めたのは、修正版のデータシートが公表された1976年5月(第20週頃)以降である。「2076」以降は大丈夫だと見て良い。

出典

  1. ↑ “The MOS 6502 and the Best Layout Guy in the World”. swtch.com (2011年1月3日). 2022年8月24日閲覧。
  2. ↑ “MOnSter6502”. monster6502.com (2017年). 2022年8月24日閲覧。
  3. ↑ Bagnall 2010, p. 70.
  4. 1 2 Peddle 2013, p. 5.
  5. 1 2 Bagnall 2010, pp. 58–65.
  6. 1 2 Reid, T. R. (1975年10月14日). “Microcomputers: The New Technology of the 1970s”. The Washington Post.
  7. 1 2 Wozniak 2006, p. 152.
  8. ↑ Mensch 2015, p. 22.
  9. ↑ MOS Technology 1976, pp. 1–5.
  10. ↑ Bagnall 2010, p. 72.
  11. ↑ Western Design Center 2021, p. 3.
  12. ↑ Mensch 2015, p. 25.
  13. ↑ MOS Technology 1976, pp. 2–10.
  14. ↑ Western Design Center 2021, p. 4.
  15. ↑ MOS Technology 1976, pp. 2–14.
  16. 1 2 MOS Technology 1976, pp. 1–4.
  17. ↑ Wozniak 2006, pp. 152–155.
  18. ↑ Bagnall 2010, pp. 100–110.
  19. 1 2 Sheff 1994, p. 36.
  20. ↑ “6502.org Tutorials: 65C02 Opcodes” (英語). 6502.org. 2026年1月22日閲覧。
  21. ↑ “W65C02S 8–bit Microprocessor Datasheet” (PDF) (英語). ウェスタンデザインセンター (2022年4月8日). 2026年1月23日閲覧。
  22. 1 2 3 4 5 6 7 8 Western Design Center. “Integrated Circuit (IC)”. 2025年11月1日閲覧。 “The W65C02S is a low-power 8–bit microprocessor utilized in a vast array of products for the Automotive, Consumer,Industrial, and Medical markets.”
  23. ↑ Western Design Center. “W65C134S”. 2025年11月1日閲覧。 “The W65C134S is a feature-rich 8–bit microcomputer based on the W65C02 with an advanced (originally designed for life support) Serial Interface Bus...”
  24. 1 2 Western Design Center. “W65C02S 8–bit Microprocessor Data Sheet”. 2025年11月1日閲覧。 “If you need robust math for applications in sensing, such as pressure, temperature, revolutions per minute, flow monitoring and control, variable climate control or other systems for scientific, automotive, communications, home appliance/automation, then you'll benefit...”
  25. ↑ Bagnall 2010, pp. 66–68.
  26. ↑ Bagnall 2010, pp. 85–90.
  27. ↑ Wozniak 2006, pp. 160–165.
  28. ↑ Bagnall 2010, pp. 100–105.
  29. ↑ Mensch 2015, p. 27.
  30. ↑ Mensch 2015, pp. 40–42.
  31. ↑ Mensch 2015, p. 60.
  32. ↑ Smotherman, Mark (2001年10月). “Which Machines Do Computer Architects Admire?”. 2022年8月24日閲覧。
  33. ↑ “Wilson, Sophie oral history : 2012 fellow - 102746190”. Computer History Museum (2012年1月31日). 2022年8月24日閲覧。

参考文献

関連項目

外部リンク