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相クロックを入力する。
モトローラから発売されたオリジナル品に加え、セカンドソース品が存在する。日本では主に日立製作所と富士通が提供した。
6309
編集日立によるセカンドソース品では、オリジナルと完全互換の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が搭載された。