MC6809
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/MC6809EP.jpg/200px-MC6809EP.jpg)
MC6809は、モトローラが1979年に発売した、8ビットのマイクロプロセッサ。対称性の高い命令体系を持っている点が特徴である。
概要
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/6809registers.png/300px-6809registers.png)
MC6809は、レジスタには8ビット幅のアキュムレータを2つ(A,B。一部の命令では2つを連結して16ビット幅のアキュムレータ(D)として使用できる)、16ビットのインデックスレジスタを2つ(X,Y)、および16ビットのスタックポインタを2つ持つ(U,S)。インデックスアドレッシングモードにおいては、スタックポインタもインデックスレジスタとして指定できる。
前身となるMC6800とは、アセンブリ言語のソースコードの範囲でニーモニックの互換性は保たれていた。MC6800用アセンブラプログラムからMC6809用バイナリコードを出力するアセンブラでは、自動的に等価な命令に変換する。しかし、バイナリコードでは互換性がない。また、ピン配列に互換性はない。命令数は6800の78に対して6809は59であるが、等価な命令によってカバーできる。
8ビットCPUとしてはライバルとなるZ80よりも後発のアーキテクチャであるが、それゆえによく練られた直交性の高い命令体系が特徴である。高級言語を意識した豊富なアドレッシングモードや乗算命令を持つ、シンプルかつ高性能なプロセッサである。CPU単体でもOS-9によってプリエンプティブなマルチタスクを実現し、またオプションのMMUであるMC6829 MMUを追加することでメモリ空間を最大2MBに拡張すると共にメモリ/プロセス保護も実現可能である。この機能はOS-9 Level2でサポートされる。
動作クロックは80系CPU(8080、Z80)と比較して低いが、二相クロックの利用により1クロックでメモリアクセスが可能である。また、命令の実行に必要なクロック数は、単純に6800と比べると多くなっているが、実際の命令実行では従来複数の命令を要した処理を1命令でこなせるようになり、実行クロック数は実質的に減らせる。例えば「Xレジスタで示されるメモリからAレジスタに値をロードし、その後Xレジスタをインクリメント」する処理をMC6800では、ロード命令とインクリメント命令の2命令で行っていたのに対し、MC6809ではオートインクリメント付きインデックスドアドレッシングのロード命令という1つの命令で実行可能である。 また、MC6800ではレジスタの少なさをカバーするダイレクトページアドレッシングモードを持ち、0~255番地のメモリへのアクセスを高速に行う事が出来たが、MC6809ではその機能を継承したうえで、DPレジスタを追加し、高速にアクセスできる256バイトの領域を変更することが可能である。これらの特徴により、MC6800に対し最高5倍の処理能力を持ち、当時の8ビットCPUの中では最も高速である。
MC6809は、PC相対アドレッシングモードや、64KBの全アドレス空間をカバーする相対ジャンプ命令を利用して、位置独立なプログラムを作製する事が容易である。また、スタックポインタを使ったアドレッシングモードも充実しており、ローカル変数をスタック上に確保する事で、再入可能(リエントラント)なコードの記述を容易に行える。位置独立で再入可能なプロシージャを作成すると、そのバイナリ実行形式コードをメモリ空間の空いた領域に置くことで、リンカやローダによる書き換え処理を行う事無く直ちに利用可能になる。組み込みシステムの開発において、この特徴は利便性を発揮した。MC6809の特徴を生かしたオペレーティングシステムであるOS-9を設計するにあたって、コードは位置独立で、再入可能であることが要求された。
このような背景から、登場当時の月刊アスキー誌上では「究極の8ビットCPU」と紹介された。
バリエーション
MC6809には、クロック周波数が1MHzの6809、1.5MHzの68A09、2MHzの68B09があり、それぞれにクロックジェネレータを内蔵した版と、外部からクロックを入力する版があり、計6つのバリエーションが存在することになる。クロックジェネレータの種類は型番の末尾で区別し。アルファベットの無い型番(例 MC6809)はクロックの4倍の周波数の水晶発振子を接続し、内蔵したジェネレータで1/4に分周して使用する。末尾にアルファベットEのある型番(例 MC6809E)は、外部で生成した2相クロックを入力する。
モトローラから発売されたオリジナル品に加え、セカンドソース品が存在する。日本では主に日立製作所と富士通によるものが流通した。
6309
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/6309programmingmodel.png/300px-6309programmingmodel.png)
日立によるセカンドソース品では、オリジナルと完全互換のHD6809と、CMOS構造のHD6309がある。HD6309はクロック周波数2MHzのHD63B09と3MHzのHD63C09がある。これらの製品はそれぞれに外部クロック版(末尾にEが付く)がある)が提供された。HD6309は単にクロックを高速化しただけではなく、レジスタや命令の追加が行われた。通常は割り込み時のスタック退避や命令実行のクロック数を含めMC6809互換だが、俗にネイティブモードに移行することで新設レジスタも割り込み時の退避対象になり、また命令実行に要するクロック数が減少して動作が約30%高速になる。ただしMC6809の未定義命令はよく使われたものでもサポートされず新設の命令コードが割り当てられたため、そのような命令を使ったプログラムは動作が異なった。発売当初のユーザーズマニュアルにこのネイティブモードと追加命令などの記述があったが、セカンドソース品はオリジナル品と完全互換である事を要求するモトローラからライセンス違反とのクレームがつき、版を重ねたユーザーズマニュアルからは記述が削除され、公式には封印されてしまった。しかし後年、CPU換装されたFM-11にてMC6809未定義命令を使ったソフトの不具合から新設レジスタの存在が発覚[1]、熱心なユーザの手により資料の作成が行われた。未定義コードの動作が違うためCPU換装には注意が必要だが、OS-9/6809においては、ユーザーの手によりOS自身のHD6309ネイティブモード対応(通称osn)やアプリケーションの6309化が行われた。
搭載製品
日本国内で流通したパソコンでは富士通のFM-8、FM-7シリーズ、FM-77シリーズ、FM-11シリーズと日立のベーシックマスターシリーズのベーシックマスターレベル3とMB-S1シリーズが6809を搭載した。
アーケードゲーム業界では1980年代を通じて積極的に採用された。ナムコの「ドルアーガの塔」、コナミの「ハイパーオリンピック」、カプコンの「魔界村」などのヒット作品が6809を用いた。源平討魔伝では6809が2つ使用されており高レベルな表現を可能にしていた。コナミでは6309の搭載実績もある。
天体望遠鏡の業界では、ビクセンより1984年9月に発売したアマチュア向け自動導入装置の量産として世界初となる「スカイセンサー」に6809が搭載された。
アメリカ合衆国で流通したパソコンではタンディ・コーポレーションが発売したTandy TRS-80 Color Computer(英語版、ドイツ語版、フランス語版、スペイン語版)に6809Eが搭載された。
脚注
関連項目
モトローラ/フリースケール/NXPのプロセッサ(英語版) | |
---|---|
Industrial Control Unit | |
6800ファミリー(英語版) |
|
68000ファミリー(英語版) | |
88000 |
|
浮動コプロセッサ | |
メモリ管理ユニット |
|
PowerPCファミリー |
|