MC6809

MC6809は、モトローラが1979年に発売した、8ビットのマイクロプロセッサ。直交性の高い命令セットアーキテクチャを特徴とする。

 概要 

MC6809は、レジスタに8ビット幅のアキュムレータを2つ（A,B、一部の命令ではこれらを連結して16ビット幅のアキュムレータ（D）として使用可能）、16ビットのインデックスレジスタを2つ（X,Y）、および16ビットのスタックポインタを（U,S）2つ持つ。インデックスアドレッシングモードでは、スタックポインタもインデックスレジスタとして指定できる。

MC6800に対し、アセンブリ言語のニーモニックにおいて互換性は保たれていたが、バイナリコードの互換性はない。また、ピン配列にも互換性はない。命令数はMC6800の78に対し、MC6809は59であるが、等価な命令によってカバーできる。

8ビットCPUとしてはライバルであるZ80よりも後発であるが、その分よく練られた直交性の高い命令体系が特徴である。高級言語を意識した豊富なアドレッシングモードや乗算命令を持ち、シンプルかつ高性能なプロセッサである。MC6809は、CPU単体でもOS-9によってプリエンプティブなマルチタスクを実現しており、オプションのMMUであるMC6829 MMUを追加することでメモリ空間を最大2MBに拡張し、メモリ／プロセス保護も実現可能である。この機能はOS-9 Level2でサポートされる。

動作クロックは80系CPU（8080、Z80）と比較して低いが、二相クロックの利用により1クロックでメモリアクセスが可能である。また、命令の実行に必要なクロック数はMC6800と比べると多くなるが、実際には複数の命令を要した処理を1命令でこなせるようになり、実行クロック数は実質的に減少する。たとえば、MC6800では「Xレジスタで示されるメモリからAレジスタに値をロードし、その後Xレジスタをインクリメント」する処理を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相クロックを入力する。

 セカンドソース品 

モトローラから発売されたオリジナル品に加え、セカンドソース品が存在する。日本では主に日立製作所と富士通がMC6809系のプロセッサを製造した。

 日立製 
日立によるセカンドソース品では、オリジナルと完全互換のHD6809と、CMOS構造のHD6309がある。HD6309はクロック周波数2MHzのHD63B09と3MHzのHD63C09がある。これらの製品はそれぞれに外部クロック版（末尾にEが付く）がある）が提供された。

注意点
日立は、モトローラのMC6809の命令セットを用いるために、モトローラから命令セット使用のライセンスを受けてHD63B09/HD63C09（一般にHD6309と総称）の設計・製造を行ったと指摘されている。このライセンス契約により、HD6309はMC6809命令セットとの互換性を実現している。ただし、モトローラ社と日立が交わしたライセンス契約では、機能を追加すること（拡張命令や追加レジスタ）は明示的に許諾されてはいなかった。

日立はHD6309で単にクロックを高速化しただけではなく、（ライセンスで明示的に許諾はされていない）レジスタや命令の追加も行った。通常は割り込み時のスタック退避や命令実行のクロック数を含めMC6809互換だが、俗にネイティブモードに移行することで新設レジスタも割り込み時の退避対象になり、また命令実行に要するクロック数が減少して動作が約30%高速になる。ただしMC6809の未定義命令はよく使われたものでもサポートされず新設の命令コードが割り当てられたため、そのような命令を使ったプログラムは動作が異なった。発売当初のユーザーズマニュアルにこの"ネイティブモード"と追加命令などの記述があったが、セカンドソース品はオリジナル品と完全互換である事を要求するモトローラからライセンス違反とのクレームがつき、版を重ねたユーザーズマニュアルからは記述が削除され、公式には封印された。しかし後年、CPU換装されたFM-11にてMC6809未定義命令を使ったソフトの不具合から新設レジスタの存在が発覚『Oh!FM』 1988年4月号 p.72-77「63C09の拡張機能をさぐる」、熱心なユーザの手により資料の作成が行われた。これによりMC6809の代わりに日立の6309を使うことを望んでいたユーザに道が開けた。未定義コードの動作が違うためCPU換装には注意が必要だが、OS-9/6809においては、ユーザーの手によりOS自身のHD6309ネイティブモード対応(通称osn)やアプリケーションの6309化が行われた。

 富士通製 
富士通が1981年に発売した8ビットマイクロコンピュータ「FUJITSU MICRO 8（FM-8）」などの製品がモトローラMC6809互換のCPUを搭載しており、そのチップには「MBL6809」や「MBL68A09」などと印字されており、MC 6809互換、もしくはMC 6809"系"プロセッサであろうと推定されている。これらのチップは富士通製品に搭載されたが、単品販売の形で流通に乗ることはなかったようである。

 採用製品 

例を挙げる。網羅的ではない。

 オリジナル品の製造停止とライセンス品の供給継続 
モトローラ社およびその後継会社Freescale/NXPがいつまでMC6809を継続的に生産していたかについてははっきりしないが、2000年代の初頭ころまでにはMC 6809を生産した形跡が途絶えていたと指摘する人がおり、そのころまでに同社は既存在庫の出荷やライセンス品の生産のみに切り替えたとみられる。日立によるライセンス品の新規製造もすでに行われていない。

ライセンス品の供給継続
2015年頃にはFreescale（モトローラの後継会社）がロチェスターエレクトロニクス（Rochester Electronics）へ再供給ライセンスを行い、2016年頃からロチェスター版のMC6809が入手可能になった。（すでにMC6809は1980年代のチップと見なされており、これは、本格的生産というより例外的な生産ではあるが、これによりMC6809搭載の旧型機器の保守や修理の際に必要なら新品に交換することも可能な状態が今も維持されている。）

 脚注 

 注釈 

 出典 

 関連項目 
 OS-9

Category:モトローラのマイクロプロセッサ