|
MC6809は、モトローラが1979年に発売した、8ビットのマイクロプロセッサ。対称性の高い命令体系を持っている点が特徴である。 == 概要 == 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命令でこなせるようになり、実行クロック数は実質的に減らせる。例えば「IXレジスタで示されるメモリからAレジスタに値をロードし、その後IXレジスタをインクリメント」する処理をMC6800では、ロード命令とインクリメント命令の2命令で行っていたのに対し、MC6809ではオートインクリメント付きインデックスドアドレッシングのロード命令という1つの命令で実行可能である。 また、MC6800ではレジスタの少なさをカバーするダイレクトページアドレッシングモードを持ち、0~255番地のメモリへのアクセスを高速に行う事が出来たが、MC6809ではその機能を継承したうえで、DPレジスタを追加し、高速にアクセスできる256バイトの領域を変更することが可能である。これらの特徴により、MC6800に対し最高5倍の処理能力を持ち、当時の8ビットCPUの中では最も高速である。 MC6809は、PC相対アドレッシングモードや、64KBの全アドレス空間をカバーする相対ジャンプ命令を利用して、位置独立なプログラムを作製する事が容易である。また、スタックポインタを使ったアドレッシングモードも充実しており、ローカル変数をスタック上に確保する事で、再入可能(リエントラント)なコードの記述を容易に行える。位置独立で再入可能なプロシージャを作成すると、そのバイナリ実行形式コードをメモリ空間の空いた領域に置くことで、リンカやローダによる書き換え処理を行う事無く直ちに利用可能になる。組み込みシステムの開発において、この特徴は利便性を発揮した。OS-9ではコードは位置独立で、再入可能であることが要求された。 このような背景から、登場当時の月刊アスキー誌上では「究極の8ビットCPU」と紹介された。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「MC6809」の詳細全文を読む スポンサード リンク
|