MOS 6502は Apple IIやファミコンに搭載されたCPU

1975年、25ドルで登場した8ビットCPU
MOS 6502
MOS 6502
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円ほどで手に入る。

目次

25ドルを可能にした小さく作る技術

6502のダイ
6502のダイ
半導体は、円盤状のシリコンウェハー上に同じ回路を何個も焼き付けて作る。CPUの面積が小さければ、1枚のウェハーから多く取れる。さらに、ほこりなどの欠陥が1か所あっても、小さいCPUほど欠陥に当たる確率が低くなる。この「正常品の割合」を歩留まりという。小さく単純な 6502 は、材料を節約するだけでなく、歩留まりを高めて1個当たりの製造費を下げられた。
開発チームは、製造後の検査で見つかった回路上の弱点を設計へ素早く戻し、マスクを修正する体制も整えた。安さの正体は、必要な機能まで削ったことではない。「ゲームや小型コンピュータに必要な仕事」を見極め、回路面積と製造工程の両方から無駄を減らしたのである。

究極の引き算――小さな道具箱

6502のアーキテクチャ
6502のアーキテクチャ
6502 のプログラマーが主に使う8ビット・レジスタは、計算の中心となるアキュムレータAと、位置を数えるX、Yの3本だけである。ほかに8ビットのスタックポインタS、状態を記録するP、16ビットのプログラムカウンタPCを持つ。大量の汎用レジスタを備えるCPUに比べると、まるで小さな道具箱だ。
レジスタ役割設計上の狙い
A計算とデータ転送演算回路へ直結する中心の作業場所
X・Y配列の位置、繰り返し用途を絞って回路と命令を簡潔にする
Sスタック位置0x0100~0x01FF専用の8ビット値にして回路を節約
PC次の命令の番地64Kバイトのメモリ空間を指す
道具が少なければ、データをメモリへ出し入れする回数は増える。それでも、どのレジスタを選ぶかを命令中で細かく指定する必要がなく、命令を短くできる。レジスタ同士を結ぶ複雑な配線や選択回路も小さくなる。「道具箱を小さくする代わりに、よく使う道具へすぐ手が届く」設計である。
6502のピン配置
6502のピン配置

低いクロックでも速い理由

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 $12343バイト4クロック
ゼロページLDA $342バイト3クロック

少ない命令でデータを操る

6502 には、番地へXやYを足すインデックス付きアドレッシングがある。表の先頭番地を命令へ書き、Xを0、1、2……と増やすだけで、画像や音符などの連続データを順番に読める。また、ゼロページに置いた番地を経由する間接インデックスを使えば、表の置き場所を変更しながら同じプログラムを再利用できる。

これは「命令の種類を大量に増やす」工夫ではない。データの探し方を複数用意し、短い命令の組み合わせで配列、文字列、画面データを扱いやすくする工夫である。ゲームでは同じ形の敵や背景データを何度も読むため、X・Yとアドレッシングモードの組み合わせが力を発揮した。

6800との関係とリトルエンディアン

6502 の開発者には、モトローラで6800を設計した技術者が参加していた。最初に同時発表された6501は6800と同じ40ピン配置を狙ったが、6502 はクロック回路を内蔵した別のピン配置であり、6800の基板へそのまま挿せる互換CPUではない。ただし、5V単一電源や既存のメモリ、周辺回路を使いやすい構成は、システム全体を安くする助けになった。
6502 は、16ビット値の下位バイトを小さい番地へ置くリトルエンディアンを採用した。CPUはまず下位バイトを読み、次に上位バイトを読む。16ビットの番地へ8ビットの値を足すときも、下位側から計算して桁上がりを上位側へ渡せる。これは 6502 だけの高速化機能ではないが、8ビットの演算器で16ビット値を順番に処理する流れと相性がよい。
メモリ番地0x10000x1001
16進数0x12340x34(下位)0x12(上位)

Apple IIとファミコン

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エンジンのHuC62806502互換の 65C02 を基に、メモリ管理機能、タイマー、割り込み制御、音源などを加え、約7.16MHzで動作した。

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

参考サイト

参考書籍

表紙 ファミコンの驚くべき発想力
著者 松浦健一郎/司ゆき
出版社 技術評論社
サイズ 単行本
発売日 2010年11月
価格 1,518円(税込)
ISBN 9784774144290
表紙 スティーブズ
著者 うめ/松永肇一
出版社 小学館
サイズ コミック
発売日 2014年11月28日頃
価格 671円(税込)
ISBN 9784091866981

CPUの歴史

発表年 メーカー CPU名 ビット数 最大クロック
1970年Garrett
AiResearch
MP944 (軍用)20bit375KHz
1971年インテル40044bit750KHz
1974年インテル80808bit3.125MHz
1975年モステクノロジーMOS 65028bit3MHz
1976年ザイログZ808bit20MHz
1978年インテル808616bit10MHz
1979年モトローラMC68098bit2MHz
1979年ザイログZ800016bit10MHz
1980年モトローラMC6800016bit20MHz
1983年NECV3016bit16MHz
1984年インテル8028616bit12MHz
1985年インテル8038632bit40MHz
1985年インテルi96032bit100MHz
1985年サン・マイクロシステムズSPARC32bit150MHz
1985年エイコーンARM132bit6MHz
1986年MIPSR200032bit15MHz
1987年ザイログZ28016bit12MHz
1987年モトローラMC6803032bit50MHz
1988年MIPSR300032bit40MHz
1989年インテル8048632bit100MHz
1989年インテルi86032bit50MHz
1990年モトローラMC6804032bit40MHz
1991年MIPSR400064bit200MHz
1992年DECAlpha 2106464bit200MHz
1993年IBM, モトローラ, ApplePowerPC 60132bit120MHz
1993年インテルPentium32bit300MHz
1994年IBM, モトローラ, ApplePowerPC 60332bit300MHz
1995年サイリックスCyrix Cx5x8632bit133MHz
1995年AMDAm5x8632bit160MHz
1995年サン・マイクロシステムズUltraSPARC64bit200MHz
1999年IBM, モトローラPowerPC G432bit1.67GHz
1999年AMDAthlon32bit2.33GHz
2000年インテルPentium 432bit3.8GHz
2001年インテルItanium64bit800MHz
2003年AMDOpteron64bit3.5GHz
2003年インテルPentium M32bit2.26GHz
2006年SCE,ソニー,IBM,東芝Cell64bit3.2GHz
2006年インテルCore Duo32bit2.33GHz
2006年インテルCore 2 Duo64bit3.33GHz
2008年インテルCore i9/i7/i5/i364bit5.8GHz
2017年AMDRyzen64bit5.7GHz
2020年AppleM1/M2/M3/M4/M564bit3.49GHz
2023年インテルCore Ultra 9 / 7 / 564bit5.1GHz
(この項おわり)
header