見出し画像

6502 - ミニマリストな8bitCPU

Apple][を始め、PETやATARIでも採用されたモステクノロジーの6502ですが、このCPUはモトローラの6800をモデルとし、大幅なコストダウンを図ったCPUです。元になる6800は、自分で使ったことが無いので置いておきますが、いわゆる80系、68系のグループ分けでは68系に分類されます。ただエンディアンはなぜか80系と同じです。

MOS 6502

68系はミニコンのアーキテクチャを縮小したものであるという説明がされることもありますが、少ないトランジスタで実装するには、多少、無理をしたところもあったようで、そういった部分をバッサリと切り捨てて6502は設計されたようです。

MC6800

6502には16ビットのレジスタはプログラムカウンタしかありません。スタックレジスタは上位8ビットは常に$01で、仮にこれを超えてもラップアラウンドするだけでエラーにもならず、$01xxのアドレスをぐるぐる回って使います。他のCPUではスタックの扱いにバグが有ると、メモリを使い切るまで値を書き込んでしまうことがあったのですが、6502では、これが避けられて助かったことがあります。

さらに当時は珍しかったパイプライン機構を採用しており、各命令の実行サイクルが短縮されていて、6800と比べると実行速度が稼げていました。おそらくなるべくマイクロコードを使わずにハードウェアで直接、実行するようにしていたのでしょう。ただパイプラインのおかげでメモリアクセスが同一ページであれば早いのですが、変わるときにはペナルティがあって、ソフトウェアでタイミングを計るときには注意が必要でした。

インデックスレジスタも8ビットなので、どうやって16ビットあるメモリをアクセスするのかというと、$0000~$00FFの0ページと呼ばれるメモリを2バイトずつ、あたかも128個の16ビットレジスタであるかのように利用します。

この0ページを活用するためにもアドレッシングモードが13もあります。この中で6502らしいのが、インデックス・インダイレクトとインダイレクト・インデックスです。

前者はXレジスタ専用で、LDA ($80,X) であればゼロページの $80+X および $81+X 番地からの2バイトが示すアドレスの値をアキュムレータに読み込みます。Xが$80 だった場合、実効アドレスはCPUアドレス $0000 からの2バイトになります(読み出すメモリは0ページのみなので、計算結果が繰り上がればラップアラウンドします)。

後者はYレジスタ専用で、LDA ($80),Yの場合はゼロページの $80 および $81 番地からの2バイトに Y レジスタの値を加えたアドレスが示す値をアキュムレータに入れます。実効アドレスはこのゼロページのアドレスからの2バイトにYレジスタの値を加えた値になります。

実際には0ページはアドレス毎に特定の用途を決めて使うので、ここをインデックスする用途はほとんどなく、もっぱらインダイレクト・インデックスが使われました。

6502の研究部屋

NES研究室 - 6502

これらの特徴と採用されたパソコンに多くのゲームが開発されたことから6502はゲームを動かすには最適だという評判になりました。アセンブラでプログラムを書くのは、他のCPUより少しばかり面倒でしたが、実行速度を計ると確かに速かったんだと思います。ただ80系のパソコンはビデオ出力の際にDMAを使いCPUを止めるので、そちらの影響のほうがあったような気がしなくもありません。多くのゲームがでればテクニックが磨かれてノウハウが貯まるので、そちらの影響のほうが大きかったのでしょう。

Z80 vs 6502

この6502は、どういう訳か日本のパソコンでは採用されなかったのですが、だいぶ後になって後継のCPUがファミリーコンピュータに採用され(なぜかリコーが絡んでいるらしい)、ゲーム用CPUとしての評判に拍車がかかったようです。これに関しては個人的にファミコンの会社とお付き合いをしたくなかったので、ほとんど知ることはありません。

Apple][でも拡張スロットにCPUを入れるようになると、他のCPUのアセンブラも使うようになったので、6502の長所と短所を、より実感するようになりました。他のCPUよりも、より低レベルというかハードウェアに近いところでマシン語を使っている感じがあって、アセンブラの行数は増えるのですが、アセンブルすると結局、バイナリの長さは他とあまり変わらず、実行速度は少し速い感じです。ですのでマクロアセンブラで適切なマクロを書けば解決したという事です。余計なことは切り捨てるミニマリストなアップルの精神が6502を採用させたのか、6502を採用したことで育まれたのかは知る由もありませんが、これを採用したことがアップルの礎になったことは間違いありません。


2023-1-5 追記

6502とファミコンの話は、こんなページに情報が見つかりました。
岩田さんはPET2001から入ったんですね。

岩田聡氏を悼んで

ヘッダ写真は、Apple][基板上の6502。


この記事が気に入ったらサポートをしてみませんか?