MOS 6502
AI生成コンテンツ / AI-generated content
AI生成コンテンツ / AI-generated content
MOS 6502は、MOS Technologyが1975年(昭和50年)に発売した8ビットCPUである。当時、競合CPUが100ドルを超えるなか、6502 はわずか25ドルで登場した。その安さは値引き競争ではなく、回路を小さくして作りやすくし、限られた機能を巧みに組み合わせる設計から生まれた。
1977年(昭和52年)発売のApple IIをはじめ、コモドールPETやBBC Microなどのパソコンに採用され、6502 系のカスタムCPUはファミリーコンピュータの頭脳にもなった。
そのシンプルさがゆえに、2026年(令和8年)8月現在も高機能・低消費電力化した後継製品が発売中で、国内で750円ほどで手に入る。
そのシンプルさがゆえに、2026年(令和8年)8月現在も高機能・低消費電力化した後継製品が発売中で、国内で750円ほどで手に入る。
目次
25ドルを可能にした小さく作る技術
6502のダイ
半導体は、円盤状のシリコンウェハー上に同じ回路を何個も焼き付けて作る。CPUの面積が小さければ、1枚のウェハーから多く取れる。さらに、ほこりなどの欠陥が1か所あっても、小さいCPUほど欠陥に当たる確率が低くなる。この「正常品の割合」を歩留まりという。小さく単純な 6502 は、材料を節約するだけでなく、歩留まりを高めて1個当たりの製造費を下げられた。
開発チームは、製造後の検査で見つかった回路上の弱点を設計へ素早く戻し、マスクを修正する体制も整えた。安さの正体は、必要な機能まで削ったことではない。「ゲームや小型コンピュータに必要な仕事」を見極め、回路面積と製造工程の両方から無駄を減らしたのである。
究極の引き算――小さな道具箱
6502のアーキテクチャ
6502 のプログラマーが主に使う8ビット・レジスタは、計算の中心となるアキュムレータAと、位置を数えるX、Yの3本だけである。ほかに8ビットのスタックポインタS、状態を記録するP、16ビットのプログラムカウンタPCを持つ。大量の汎用レジスタを備えるCPUに比べると、まるで小さな道具箱だ。
| レジスタ | 役割 | 設計上の狙い |
|---|---|---|
| A | 計算とデータ転送 | 演算回路へ直結する中心の作業場所 |
| X・Y | 配列の位置、繰り返し | 用途を絞って回路と命令を簡潔にする |
| S | スタック位置 | 0x0100~0x01FF専用の8ビット値にして回路を節約 |
| PC | 次の命令の番地 | 64Kバイトのメモリ空間を指す |
道具が少なければ、データをメモリへ出し入れする回数は増える。それでも、どのレジスタを選ぶかを命令中で細かく指定する必要がなく、命令を短くできる。レジスタ同士を結ぶ複雑な配線や選択回路も小さくなる。「道具箱を小さくする代わりに、よく使う道具へすぐ手が届く」設計である。
6502のピン配置
低いクロックでも速い理由
AI生成コンテンツ / AI-generated content
CPUの速さはクロック周波数だけでは決まらない。1命令に何クロック必要かも重要である。6502 は、レジスタ上の簡単な命令なら2クロック、ゼロページへの読み書きなら3~4クロック程度で済むものが多い。1MHzは現代のCPUより桁違いに低いが、1クロックごとに外部メモリへアクセスし、仕事のない待ち時間を減らしたため、同時代のCPUに対して高い実効性能を示した。
6502 は命令の最後の処理と次の命令コードの読み込みが重なる場合がある。これは無駄な時間を減らす先読みであり、後世の多段パイプラインほど複雑な仕組みではない。6502 は命令形式が一様なRISCではなく、分類上はCISCである。ただし、単純な回路と短い基本命令を高速に回す考え方は、後のRISCと似た魅力を持っていた。
| 時刻 | 命令A | 命令B |
|---|---|---|
| クロック1 | 命令を読み込む | ― |
| クロック2 | 演算して結果を保存 | 次の命令を先読み |
| クロック3 | ― | 命令Bの処理へ |
ゼロページはメモリの特等席
AI生成コンテンツ / AI-generated content
レジスタの少なさを補う切り札がゼロページである。6502 は64Kバイトのメモリを扱うため、普通の番地は16ビット、つまり命令中に2バイト必要になる。しかし先頭の0x0000~0x00FFだけは上位バイトが必ず0なので、下位の1バイトだけを書けばよい。命令が1バイト短くなり、多くの場合は実行も1クロック短くなる。
たとえるなら、ゼロページはメモ帳の1ページ目だけに用意されたショートカットキーである。頻繁に使う変数や16ビットのポインタをこの256バイトへ置けば、メモリの一部を高速な追加レジスタのように使える。回路としてレジスタを増やす代わりに、プログラマーが「特等席」を使い分けることで、低コストと速さを両立した。
| 指定方法 | 機械語の例 | 長さ | 所要時間 |
|---|---|---|---|
| 通常のメモリ | LDA $1234 | 3バイト | 4クロック |
| ゼロページ | LDA $34 | 2バイト | 3クロック |
少ない命令でデータを操る
6502 には、番地へXやYを足すインデックス付きアドレッシングがある。表の先頭番地を命令へ書き、Xを0、1、2……と増やすだけで、画像や音符などの連続データを順番に読める。また、ゼロページに置いた番地を経由する間接インデックスを使えば、表の置き場所を変更しながら同じプログラムを再利用できる。

これは「命令の種類を大量に増やす」工夫ではない。データの探し方を複数用意し、短い命令の組み合わせで配列、文字列、画面データを扱いやすくする工夫である。ゲームでは同じ形の敵や背景データを何度も読むため、X・Yとアドレッシングモードの組み合わせが力を発揮した。
これは「命令の種類を大量に増やす」工夫ではない。データの探し方を複数用意し、短い命令の組み合わせで配列、文字列、画面データを扱いやすくする工夫である。ゲームでは同じ形の敵や背景データを何度も読むため、X・Yとアドレッシングモードの組み合わせが力を発揮した。
6800との関係とリトルエンディアン
6502 の開発者には、モトローラで6800を設計した技術者が参加していた。最初に同時発表された6501は6800と同じ40ピン配置を狙ったが、6502 はクロック回路を内蔵した別のピン配置であり、6800の基板へそのまま挿せる互換CPUではない。ただし、5V単一電源や既存のメモリ、周辺回路を使いやすい構成は、システム全体を安くする助けになった。
6502 は、16ビット値の下位バイトを小さい番地へ置くリトルエンディアンを採用した。CPUはまず下位バイトを読み、次に上位バイトを読む。16ビットの番地へ8ビットの値を足すときも、下位側から計算して桁上がりを上位側へ渡せる。これは 6502 だけの高速化機能ではないが、8ビットの演算器で16ビット値を順番に処理する流れと相性がよい。
| メモリ番地 | 0x1000 | 0x1001 |
|---|---|---|
| 16進数0x1234 | 0x34(下位) | 0x12(上位) |
Apple IIとファミコン
MOS 6502を搭載したApple II
スティーブ・ウォズニアックは、25ドルで入手できた 6502 をApple Iに採用し、続くApple IIにも搭載した。当時の高価なCPUを使えば、個人が部品を買い集めてコンピュータを組み立てることは難しかった。6502 の安さは、ウォズニアックがホームブリュー・コンピュータ・クラブで自作機を披露し、スティーブ・ジョブズと製品化へ進むための重要な条件になった。
安いCPUのおかげでコンピュータ本体の原価を抑え、その余裕をカラー表示や拡張スロットへ振り向けられた。Apple IIは、6502 単体ですべてを行うのではなく、用途に合った周辺回路と巧みなソフトウェアを組み合わせた。高価な部品を並べるのではなく、少ない部品を最大限に働かせる設計思想は、6502 とApple IIに共通していた。
6502系カスタムCPUを搭載したファミリーコンピュータ
1983年(昭和58年)発売のファミリーコンピュータは、6502 そのものではなく、リコー製のカスタムLSI RP2A03を搭載した。6502 互換のCPUコアから10進演算モードを省き、その代わりに5チャンネルの音源、コントローラー接続、DMAなどを同じチップへ統合した。CPUは約1.79MHzで動くが、画面描画はPPUという専用LSIへ任せる。CPUを豪華にする代わりに、音と絵の専用回路を用意したから、低価格でもゲームを滑らかに動かせた。
65C02と派生CPU
6502系は、機器ごとに必要な機能を足す土台として広がった。アタリ2600の6507は外部アドレス線とピン数を減らした低価格版である。PCエンジンのHuC6280は 6502互換の 65C02 を基に、メモリ管理機能、タイマー、割り込み制御、音源などを加え、約7.16MHzで動作した。

Western Design Centerが開発したCMOS版65C02は、消費電力を減らし、命令を追加して従来品の不具合も整理した。2020年(令和2年)6月に発売した W65C02S は最大14MHzで、クロックを止めても内部状態を保てる。電池で動く装置や、長期間同じ制御を繰り返す組み込み機器に向く。
6502 の長寿命を支えたのは、巨大な万能CPUではなく、理解しやすい小さな核を用途に合わせて育てられる設計だった。
Western Design Centerが開発したCMOS版65C02は、消費電力を減らし、命令を追加して従来品の不具合も整理した。2020年(令和2年)6月に発売した W65C02S は最大14MHzで、クロックを止めても内部状態を保てる。電池で動く装置や、長期間同じ制御を繰り返す組み込み機器に向く。
6502 の長寿命を支えたのは、巨大な万能CPUではなく、理解しやすい小さな核を用途に合わせて育てられる設計だった。
シンプルさが生んだイノベーション
6502 は「機能を詰め込めば高性能になる」という常識を逆転させた。小さな回路で価格と歩留まりを改善し、少ないレジスタをゼロページで補い、短い命令と効率的なメモリアクセスで低クロックを生かした。さらにゲーム機では、CPU、映像、音を専用回路へ分担した。削った部分をソフトウェアと周辺回路の工夫で補える余白こそ、6502 最大の技術的な面白さである。
主要スペック
| 項目 | 仕様 |
|---|---|
| メーカー | MOS Technology |
| 発表 | 1975年 |
| 発売時価格 | 25ドル(1MHz版) |
| データバス | 8ビット |
| アドレスバス | 16ビット |
| 物理メモリ | 64Kバイト |
| 主なレジスタ | A、X、Y、S、P、PC |
| バイト順 | リトルエンディアン |
| CPUクロック | 1~2MHz(初期製品) |
| トランジスタ数 | 約3,500 |
| 製造プロセス | 8μm NMOS |
| パッケージ | 40ピンDIP |
参考サイト
- W65C02S Datasheet:Western Design Center
- MCS6500 Microcomputer Family Hardware Manual:MOS Technology
- MCS6500 Microcomputer Family Programming Manual:MOS Technology
- MCS6500 Programming Manual:Smithsonian National Museum of American History
- Oral History of Chuck Peddle:Computer History Museum
- 西暦1977年 - Apple II 発売/ボイジャー1号打ち上げ:ぱふぅ家のホームページ
- 西暦1983年 - ファミリーコンピュータ発売:ぱふぅ家のホームページ
- Z80 で機械語を学ぶ:ぱふぅ家のホームページ
参考書籍
|
|
ファミコンの驚くべき発想力 | ||
| 著者 | 松浦健一郎/司ゆき | ||
| 出版社 | 技術評論社 | ||
| サイズ | 単行本 | ||
| 発売日 | 2010年11月 | ||
| 価格 | 1,518円(税込) | ||
| ISBN | 9784774144290 | ||
|
|
スティーブズ | ||
| 著者 | うめ/松永肇一 | ||
| 出版社 | 小学館 | ||
| サイズ | コミック | ||
| 発売日 | 2014年11月28日頃 | ||
| 価格 | 671円(税込) | ||
| ISBN | 9784091866981 | ||
CPUの歴史
| 発表年 | メーカー | CPU名 | ビット数 | 最大クロック |
|---|---|---|---|---|
| 1970年 | Garrett AiResearch | MP944 (軍用) | 20bit | 375KHz |
| 1971年 | インテル | 4004 | 4bit | 750KHz |
| 1974年 | インテル | 8080 | 8bit | 3.125MHz |
| 1975年 | モステクノロジー | MOS 6502 | 8bit | 3MHz |
| 1976年 | ザイログ | Z80 | 8bit | 20MHz |
| 1978年 | インテル | 8086 | 16bit | 10MHz |
| 1979年 | モトローラ | MC6809 | 8bit | 2MHz |
| 1979年 | ザイログ | Z8000 | 16bit | 10MHz |
| 1980年 | モトローラ | MC68000 | 16bit | 20MHz |
| 1983年 | NEC | V30 | 16bit | 16MHz |
| 1984年 | インテル | 80286 | 16bit | 12MHz |
| 1985年 | インテル | 80386 | 32bit | 40MHz |
| 1985年 | インテル | i960 | 32bit | 100MHz |
| 1985年 | サン・マイクロシステムズ | SPARC | 32bit | 150MHz |
| 1985年 | エイコーン | ARM1 | 32bit | 6MHz |
| 1986年 | MIPS | R2000 | 32bit | 15MHz |
| 1987年 | ザイログ | Z280 | 16bit | 12MHz |
| 1987年 | モトローラ | MC68030 | 32bit | 50MHz |
| 1988年 | MIPS | R3000 | 32bit | 40MHz |
| 1989年 | インテル | 80486 | 32bit | 100MHz |
| 1989年 | インテル | i860 | 32bit | 50MHz |
| 1990年 | モトローラ | MC68040 | 32bit | 40MHz |
| 1991年 | MIPS | R4000 | 64bit | 200MHz |
| 1992年 | DEC | Alpha 21064 | 64bit | 200MHz |
| 1993年 | IBM, モトローラ, Apple | PowerPC 601 | 32bit | 120MHz |
| 1993年 | インテル | Pentium | 32bit | 300MHz |
| 1994年 | IBM, モトローラ, Apple | PowerPC 603 | 32bit | 300MHz |
| 1995年 | サイリックス | Cyrix Cx5x86 | 32bit | 133MHz |
| 1995年 | AMD | Am5x86 | 32bit | 160MHz |
| 1995年 | サン・マイクロシステムズ | UltraSPARC | 64bit | 200MHz |
| 1999年 | IBM, モトローラ | PowerPC G4 | 32bit | 1.67GHz |
| 1999年 | AMD | Athlon | 32bit | 2.33GHz |
| 2000年 | インテル | Pentium 4 | 32bit | 3.8GHz |
| 2001年 | インテル | Itanium | 64bit | 800MHz |
| 2003年 | AMD | Opteron | 64bit | 3.5GHz |
| 2003年 | インテル | Pentium M | 32bit | 2.26GHz |
| 2006年 | SCE,ソニー,IBM,東芝 | Cell | 64bit | 3.2GHz |
| 2006年 | インテル | Core Duo | 32bit | 2.33GHz |
| 2006年 | インテル | Core 2 Duo | 64bit | 3.33GHz |
| 2008年 | インテル | Core i9/i7/i5/i3 | 64bit | 5.8GHz |
| 2017年 | AMD | Ryzen | 64bit | 5.7GHz |
| 2020年 | Apple | M1/M2/M3/M4/M5 | 64bit | 3.49GHz |
| 2023年 | インテル | Core Ultra 9 / 7 / 5 | 64bit | 5.1GHz |
(この項おわり)


