今日は、ビル・メンズチの誕生日(1945)。
モトローラで 6800 の設計に携わり、モステクノロジーで 6502 の基本設計を行い、ウェスタンデザインセンターで 65816 を設計した人です。
独特な、癖の強い設計で、ファンも多い CPU を作り続けた人。
「思想的な後継」としては現在でも ARM がありますが、設計者などは全然別ね。
実のところ、僕は 6800 をあまり知りません。
通り一遍の知識はあるけど、プログラムまではしたことが無い、という意味ね。
6800 は、PDP-11 を元に設計された、と言われている 8bit CPU です。
当時としては、PDP-11 は最高の CPU 設計。
でも、小さなマイクロチップにこれを押し込めるには、まだ時代が速すぎた。
A B 二つの 8bit アキュムレータ、X PC SP の3本あるアドレスレジスタ。そしてフラグ用に 8bit 。
これがレジスタのすべてです。
PC はプログラムカウンタなので、16bit は当然。
SP はスタックポインタ、X はインデックスでした。これらも 16bit あるので、メモリのどこでも参照できます。
設計はチームで行われ、CPU だけでなく周辺チップなども開発されています。
メンズチは、主に周辺チップの担当でした。
6800 は後に改良され、互換性のない 6809 として発売されます。
どちらかというと売れたのは 6809 の方で、6800 はそれほど売れていないはず。
6809 の方は、メンズチは関わっていません。
別の会社に移籍してしまったためです。
6502 は、この 6800 を思い切って簡素化し、値段をずっと安くした CPU です。
モトローラではなく、モステクノロジーで作成された物。
アキュムレータは A だけになりました。
PC は 16bit ですが、SP とインデックスレジスタは 8bit に縮小されました。
16bit のアドレス空間を、8bit でアクセスするのではアドレスの完全な指定ができません。
そこで、スタックは、アドレスの上位が 1 のアドレス空間に固定になりました。
256バイトしかスタックが無いことになりますが、工夫すれば乗り切れます。
インデックスレジスタを使用する際も、命令と共に上位8ビットは指定することになります。
このため、メモリ空間は 256byte ごとに区切られることになりました。
6502 では、この 256byte 単位を「ページ」と呼びます。
改めて書くと、スタックは1ページ目に固定されていることになります。
6800 を「貧弱にしただけ」では出来ることも限られてしまいます。
6502 は、大胆な方法で拡張された機能もあります。
まず、インデックスレジスタは X Y の2つになりました。
配列をコピーする際など、インデックスが2つ必要になる場合は多いです。
必要とされる機能を、ちゃんと用意したのです。
ただし、X Y の持つ機能は、微妙に異なります。
これも、利用される状況を考え、微妙に異なる機能を持たせた方が便利だからそうなっているのです。
アキュムレータは1本だけに減らされています。
アキュムレータとは「計算に使うレジスタ」なので、普通に考えると、必ず2本必要です。
6502 では、ここに設計の最大の特徴があります。
先ほど書いた「ページ」と組み合わせ、0ページ目の 256byte のメモリは、アキュムレータと組み合わせて計算しやすい命令が揃っているのです。
つまり、一見するとアキュムレータは1本ですが、実は +256 本ある、というような設計になっているのです。
6800 よりも設計が簡素化され、安くなっているにもかかわらず、機能は 6800 を上回る部分もある。
後に作られ、大人気となる Z80 と比べたって遜色ないのです。
ただし、癖が強いので使いこなすのには腕が必要です。
ウォズニアックはこの CPU を気に入り、Apple I に採用しました。
その後 Apple II でも採用され、爆発的なヒットとなったのは多くの人が知る通り。
さらに、ファミコンでも 6502 の一部機能を省略したものが使用されています。
設計はたった3人で行われ、メンズチは演算回路など、中心となる部分を作っています。
65816 は、Apple II の後継機を 16bit にしたかったアップル社の要望で設計された CPU です。
単純に 16bit CPU が欲しいのではなく、過去の 8bit 資産を完全に活かせることが重要要件でした。
モステクノロジーではなく、メンズチが設立した、ウェスタン・デザイン・センターで作成されています。
65xx シリーズで、8bit と 16bit の2つのモードを持つ。
それが 65816 の名前の由来です。
6502 では 8bit だった、アキュムレータ、スタックポインタ、インデックス X Y が、16bit に拡張されています。
やった! これで全メモリ空間を指定できる!
…のではなく、メモリ空間も 24bit に拡張されています。やっぱり 8bit 足りない。
そして、やっぱり「256byte をレジスタ代わりに使える」方式は残されています。
ただし、この 256byte はアドレス先頭に固定ではなく、新設されたレジスタで指定されたメモリから始まります。
サブルーチン内でローカル変数が欲しいときは、このアドレスを移動して、終了後に元に戻せば大丈夫。
同時に使えるメモリは相変わらず 256byte ですが、ひと手間かければ無限に増えるようになったのです。
設計は、メンズチ1人で行っています。
妹さんが雑用を手伝ったりはしたらしいけど。
そして、65816 の最大の特徴は、8bit と 16bit がモード切替だということです。
このモードは、基本的にレジスタ・メモリアクセス幅を変えるだけだと思ってください。
「16bit の拡張命令が増えた」のではなく、モードを切り替えて同じ命令を使います。
でも、そのことを除けば、基本的に機能は同じ。
これは、「16bit モードで 8bit のアクセスをする方法が無い」という意味にもなります。
読み込むときは、16bit で読み込んで、上位データを and 0 して消してしまえばよいだけ。
8bit を書き込むときは結構面倒なことになります。
でも、8bit / 16bit モードの切り替えは遅かったので、工夫した方が高速に動く。
高速にしたい場合、8bit アクセスを無くす、というのが一番良い方法でしたけど、遅くてもいいからメモリ節約したい場合もあった。
こう書くと使いにくいダメ CPU のようですが、メンズチは 6502 の時から一貫して「小さな回路規模で最大の効果」を念頭に設計しています。
命令は 8bit/16bit で共通で、データ幅だけを完全に切り替える、という設計は、この観点で見ると非常に素晴らしい割り切り方です。
256byte のゼロページアドレッシングを残しつつも、0ページの位置を変えられる、というのも、簡素ながら良く練り込まれた設計。
そもそも 6502 の設計が面倒くさくて使いにくい、という人には、65816 もダメでしょう。
その一方で、6502 の簡素な美しさが好きだという人は、65816 もきっと好きになれます。
そういう、癖の強い設計の CPU です。
先に書いたように、65816 は、16bit の Apple II を作るために設計されました。
実際に Apple II GS という名前で発売されています。
GS は Graphics and Sound の略。
Apple II 独特の、貧弱な画面とサウンドを大幅強化して、CPU も 16bit にして、OS も GUI にしたマシン。
もう Apple II じゃないじゃん、と言われそうだけど、ちゃんと互換性もある。
ちなみに、Mac 発売以降に作られていて、OS も Mac 風。
Apple II 部署と Mac 部署は仲悪かったはずだから、会社の方針で使い勝手の統一を図ったとかではなくて、「対抗心で作った」のではないかな、と思ってます。
もっとも、仲が悪かったのは Jobs のせいで、Woz は怒ってすでに会社辞めているし、Jobs も混乱の原因を取らされてクビにになった後に Apple II GS が作られているのだけど。
そして、実は ADB の採用第1号マシンです。
ADB … Apple Desktop Bus は、マウスやキーボードをコンピューターに接続するための規格。
これ以前は、周辺機器ごとに違う接続方法があり、直接コンピューターに接続するのが普通でした。
ADB では、今後機器を増やしても大丈夫な設計指針があり、デイジーチェーン(直列つなぎ)で機器を増やせたので、柔軟な周辺機器設計が可能になりました。
IBM 系の PC で、この ADB を真似しようとして後に作られたのが USB ね。
こちらも iMac が大々的に採用したことで普及したのだけど。
65816 は、6502 上位互換なのでスーパーファミコンにも搭載されています。
スーパーファミコンは、ファミコンとの互換性はありませんでしたが、開発時にはギリギリまで「上位互換」として作られていました。
その名残で、スーパーファミコンは起動するとまず 8bit モードで動作し、メモリなどもすべてファミコンとほぼ互換性を持った状態で見えるようになっています。
その後 16bit へ切り替える命令が実行されると、スーパーファミコンの全機能が利用できるようになるのです。
スーパーファミコンは画面モードとしても「ファミコン互換モード」を持っていたし、なぜ互換機路線をやめたのかは不明。
多分、将来の拡張性も考えた際に、カートリッジ形状を変えたかったのではないかとも思いますし、些細な部分で完全互換が難しくなったのかもしれません。
当初は「上位互換」として発表されたため、後に上位互換が無理だとわかっても「アダプタで対応」となりました。
ただ、この「アダプタ」は、スーパーファミコンとは独立した機械。ジョイパッドや電源アダプタなどを共有できる、というだけ。
つまり、新設計されたファミコンでした。
結局「アダプタ」という誤解を招く名称もなくなり、後に AV ファミコンとして発売になっています。
同じテーマの日記(最近の一覧)
関連ページ
【訃報】6502 の開発責任者、チャック・ぺドル【日記 19/12/28】
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |