MC68000
出典: フリー百科事典『ウィキペディア(Wikipedia)』
MC68000(エムシーろくまんはっせん)はアメリカのモトローラ社が開発したCPU(モトローラ社での呼称は「MPU」)である。通称「68000」、68K(ろくはちケー)。後継MPUも含めた同一アーキテクチャのシリーズを総称するときは、680x0と呼称される事が多い。MC型番は量産ロットで、量産先行品はXC型番。
目次 |
[編集] 歴史
本来、MC68000は家電向けに設計された(少なくともモトローラの社内文書ではそうなっていた)。 発表後は、ワークステーションのCPUとしてよく使われた。 また、68000搭載のパーソナルコンピュータとしては初期のアップルコンピュータのMacintoshやコモドールのAmiga、アタリのST、日本ではシャープのX68000シリーズがあった。 ゲーム機では各社のアーケードゲームの基板や、セガのメガドライブ、SNKのネオジオなどで使用された。 SGIのIRIS 1000と1200でも使われた。
68000の派生品はUNIX市場で長年に渡って使用された。 そのアーキテクチャがDEC社のPDP-11やVAXによく似ていて、C言語のコードを動作させるのに最適なコンピュータだったからである。 また、68000はコントローラとして機器制御分野で最も成功し、HPやアドビシステムズの多数のプリンターで使われた。 CPU32とColdfireプロセッサは自動車のエンジン制御に数百万個単位で使われた。 また、低価格で信頼性が高いことから医療機器分野でも多く使用された。 低電圧版のDragonballは、Palm PilotシリーズやHandspring VisorなどのPDAで使われた(後にこの市場はARMプロセッサコアに奪われた)。 高速シリアルポートを内蔵した派生品(68302と68360)は、Cisco、3com、Ascend、Marconiなどが通信機器に使用した。
68000の最初のサンプルは1979年にリリースされ、インテル社の8086、80286と対抗、ある程度の成功を収めた。 1982年、当時としては非常に高速なクロック周波数8MHzで登場した。 単純な命令は4クロックサイクルで実行できたが、複雑な命令の実行にはもっと時間がかかった。 しかし、命令セットを比較した場合インテルのプロセッサよりも多くのことができる。 モトローラは2000年にオリジナルのNMOS版68000の生産を終了したが、例えば68HC000(オリジナルとピン配置互換のHCMOS版)や680x0ファミリやCPU32ファミリなどの派生品は今も生産している。
モトローラの他、日立がセカンドソースHD68000を製造した。日立は、68000のC-MOS版を独自に開発したが、その製品名はHD63000ではなく、HD68HC000であった。 また、後にシグネティックス社がアーキテクチャ互換のSCC68070を製造した。 SCC68070は、現在フィリップス社が版権を持つ。
後継の68020からは外部データバス、アドレスバス共に32ビットの、名実共に32ビットのCPUとなり、ユーザーモードで使用するぶんにはソフトウェア的にはほぼ上位互換であった。 互換性のない部分は、存在しない命令を実行しようとしたときに割り込みでトラップすることで、ソフト的に吸収することができた。
なおRISCであるPowerPCシリーズとの互換性はなく、同プロセッサを搭載したMacintoshではMC68LC040をエミュレーションしている。
RISC技術を採用したColdFireシリーズは、68000から命令の多くを削除した下位互換のプロセッサである。
[編集] アーキテクチャ
[編集] 概要
32ビットのデータレジスタを8個、また、32ビットのアドレスレジスタを8個持つ、CISCアーキテクャのマイクロプロセッサである。8ビットのMC6800シリーズとは互換性を持たない。
MC68000は、DEC社のVAXを参考にしたと言われる、直交性(対称性)の高いきれいな命令体系をもつ。
外部バス幅はアドレスバス24ビット、データバス16ビットで、発表当初のクロック周波数は4~16MHz。約68,000個のトランジスタからなるN-MOS集積回路であり、当初は巨大な64ピンDIPパッケージ、後にPGAパッケージでも供給された。名前の由来は総トランジスタ数からきている。
MC68000自体は16ビットCPUだが、68000シリーズはもともと32ビットプロセッサとして設計されており、レジスタとアドレスのデータ長は等しく32ビットだった。 32ビットのアドレス空間は4Gバイトであるが、当時の技術では、4Gバイトのアドレス空間は使う可能性が無いとされ、下位24ビットの16Mバイトの記憶空間を管理する事が出来た。 最初に理想とする32ビットアーキテクチャを決めておき、その時々で利用できる技術で実現可能な機能から順に実装するという方式をとっていたため、無理なく上位互換性が確保できた。
プログラムアドレス空間とデータアドレス空間を分離しているハーバードアーキテクチャを採用していた。しかし、アドレス空間の分離におけるメモリ管理の複雑化、またハーバードアーキテクチャを採用したオペレーティングシステムがあまり供給されなかたった事から、多くの実装ではプログラムアドレス空間とデータアドレス空間を分離しない設計が採用される場合が殆どであった。
スタックがOS用とアプリケーション用に二つあり、特権モード(スーパバイザモード)と、ユーザモードの2つの特権レベルを持つなど、当初からOSを搭載することを前提に設計されている。
[編集] アドレスバス
68000は16ビットのALUを持っているのに対して、アドレスは常に32ビットで扱われ、フラットな32ビットアドレス空間を扱えた。 このことは非常に重要な点である。 比較すると、8086は20ビットのアドレス空間を持っていたが、16ビット(64キロバイト)をひとつの単位として扱い、セグメントレジスタの操作を必要とした。 68000ではこれを16ビットのALUで実現していたのである。 通常の操作では、ふたつの16ビットALUを接続してアドレスを処理して、3つめのALUが16ビットの演算を行った。 例えば、32ビットのアドレスレジスタのポストインクリメント(そのアドレスにアクセスした後、アドレスをインクリメント(増加)する命令)「ADD.W (An)+,Dn」は速度低下なしに実現されている。
したがって、16ビットCPUとして始まってはいるが、68000の命令セットは32ビットアーキテクチャになっている。 アーキテクチャの重要性は強調してもしすぎることはない。 アドレッシングの問題はハードウェアの問題ではなく、常にアーキテクチャの問題である(命令セットの問題、つまり互換性の問題)。 後継の68020は32ビットのALUと32ビットのデータバスを持っていたが、68000用のソフトウェアを全く変更することなく32ビットの速度で実行できた。
しかし、ソフトウェアの非互換は全くなかったわけではない。 プログラマはアドレスビットの使われていない部分(24~31)にデータを格納することがあった(例えば、Lisp言語などでポインタの指すオブジェクトの種類をその部分で表したり、ガーベジコレクション用のフラグにしたりした)。 そのようなコードをより広いアドレスバスを持つマシンで実行するとバスエラーが発生した。 Macintoshでは8Mバイト以上のRAMを搭載する際にソフトウェアのアップグレードが必要だった。 もちろん、多くのアプリケーションは将来を見越して書かれており、問題は発生しなかった。
市場の広がりをカバーするため、ふたつのバリエーションが設計された。 MC68000は24ビットアドレスバスと16ビットデータバスを持つ。 MC68008は20ビットアドレスバス(DIP/48ピン版では20ビット。後のPLCC/52ピン版では22ビット)と16ビットデータバスを持つ(Sinclair QLで使用された)。
[編集] 内部レジスタ
8本の汎用データレジスタ (D0-D7) と8本のアドレスレジスタ (A0-A7) を持つ。 最後のアドレスレジスタ (A7) は通常のスタックポインタ (SP) として使われる。 これは色々な意味でちょうどよいレジスタ本数である。 68000が割り込みにすばやく応答するためには十分少ない本数であり(15~16本をセーブすればよい)、高速な計算をするためには十分多い本数でもある。
レジスタが二種類存在することは悩ましいことであるが、実際には使いづらいというほどではない。 このようにすることによって、アドレスレジスタ用の別の実行ユニットを用意して内部の並列性を高めたと言われている。
68000ファミリでの整数の表現はビッグ・エンディアンである。
[編集] ステータスレジスタ
68000の比較命令、算術演算命令、論理演算命令は実行結果をステータスレジスタに反映させ、後で条件ジャンプ命令でそれを使えるようになっている。 ステータスレジスタのビットには、"Z"ero(ゼロ)、"C"arry(キャリー)、o"V"erflow(オーバーフロー)、eXtend、そして"N"egative(ネガティブ)がある。 eXtendビットはCarryビットと分離されているので注意が必要である。 eXtendとCarryは、シフト/算術演算/論理演算命令の桁上がり結果を保持するが、eXtendビットはより多バイトの演算を実現するために使い、Carryビットは処理の流れを制御するのに用いる。
[編集] 命令セット
68000の設計者はアセンブリ言語が直交性を持つよう注意を払った。 つまり、命令は操作とアドレッシングモードに分けられ、ほとんど全てのアドレッシングモードがほとんど全ての命令で使えるようになっている。 多くのプログラマは "ほぼ" 直交性があるのを嫌い、他の人々はその試みを喜んだ。
ビットレベルで見ると、アセンブリ言語を使ったことがある人なら分かると思われるが、命令のオペコードの値は必ずしも現状の通りである必然性はない。 このことは、ある意味でよい妥協点であった。 真の直交性のあるマシンと同等の利便性を得ると同時にCPU設計者はオペコード表を自由に埋めることができた。
最小命令サイズは当時としては大きい16ビットである。 さらに多くの命令やアドレッシングモードは追加のワードでアドレスやアドレスモードビット等を表現する。
多くの設計者はMC68000アーキテクチャはコストに見合うコンパクトなコードを実現していると信じている(特にコンパイラがコードを生成した場合)。 このコンパクトなコードについての信念がアーキテクチャの長命と多くの採用をもたらした。
多くの組み込み制御システムの設計者はメモリのコストに敏感である。
この信念(または特長、人によって言い方は異なる)は、ARMアーキテクチャのThumb命令セット(同様にコンパクトである)が登場するまで多くの68000命令セット(のCPU)の採用をもたらし続けた。
[編集] 特権レベル
このCPUと他の全ファミリは二段階の特権レベルを実装している。 ユーザモードでは割り込みレベル制御以外はアクセス可能である。 スーパバイザ特権では全てにアクセスできる。 割り込みが発生するとスーパバイザモードに移行する。 スーパバイザビットはステータスレジスタに格納され、ユーザプログラムからも見える。
このシステムでの真の利点は、スーパバイザレベル用に分離したスタックポインタを用意している点である。 これによりマルチタスクのシステムでタスク毎のスタックを小さくすることができる。 なぜなら、割り込みの際のレジスタやステータスをセーブするフレームを考慮してスタック領域を用意する必要がないからである。 (訳注:ただし、UNIXの実装方法ではカーネルモード(つまりスーパバイザモード)で使用するスタックは実行中のユーザプロセス毎に用意するようになっているため、スタック領域を小さくできるというのは褒めすぎである。)
[編集] 割り込み
68000は8つの割り込みレベルを持つ。 レベル0から7まで厳密に優先順位が決まっている。 番号が大きい割り込みが番号の小さい割り込みに対して割り込むことが出来る。 ステータスレジスタには現在の割り込みレベルを特権命令でセットすることができ、これにより低いレベルの割り込みをブロックする。 レベル7はマスクすることができないため、NMI (Non-Maskable Interrupt) とも言う。 レベル0は他の全てのレベルが割り込むことができる。 レベルはステータスレジスタに格納され、ユーザレベルプログラムからも見ることが出来る。
ハードウェア割り込みは3本の信号によってCPUに伝えられ、この3本の値がペンディング中の最も高い割り込みレベルにエンコードされる。 別途割り込みをエンコードするための割り込みコントローラが必要である。 ただし、割り込み発生源が三つ以下のシステムでは、各割り込みを三本の信号線にそれぞれつなぐことで割り込みコントローラを省略できる。 ただし、割り込みレベルと割り込みの対応が単純ではないためソフトウェアでの処理が複雑になる。 割り込みコントローラは74LS148のような単純なエンコーダでもよいし、VLSIの周辺チップでもよい。 例えばMC68901は、割り込み制御だけでなくUART(シリアル)、タイマー、パラレルI/Oを備えている。
例外テーブル(割り込みベクターテーブル)はアドレス0番地から1023番地まで固定で置かれ、256個の32ビットアドレスを表す。 最初のベクターは初期スタックアドレスであり、二番目のベクターは初期コードアドレスである。 3番から15番のベクターは各種エラー処理ルーチンのアドレスである。 エラーの種類としてはバスエラー、アドレスエラー、不正命令、ゼロによる割り算、CHK/CHK2命令ベクター、特権違反、そして予約されたベクター(後に line 1010エミュレータ、line 1111 エミュレータ、ハードウェアブレークポイントに割り当てられた)がある。 ベクター24から実際の割り込みに対応する。擬似割り込み(ハードウェアに対応しない)、レベル1から7のベクター、15個のTRAPベクター、いくつかの予約されたベクター、ユーザ定義ベクターの順番で並んでいる。
リセットされたとき、少なくともスタートコードアドレスのベクターには正しいアドレスが入っている必要があるので、多くのシステムは不揮発メモリ(つまりROM)を持っていて、0番地に配置している。 そのROMにはベクターテーブルとブートストラップコードが入っている。 しかし、汎用システムでは動作中にベクターを書き換えられるのが望ましい。 これを実現するため、ROM上のベクターがRAM上のジャンプテーブルを指すようにするか、バンク切り替えで動作中に0番地付近の配置をROMからRAM変更する。
68000はPopekとGoldbergのプロセッサの完全仮想化に要求される事項 (virtualization requirements for full processor virtualization) を満たしていない。 というのは、"MOVE from SR" 命令が特権命令でないため、ユーザモードから特権ステータスが見えてしまうからである。 この問題は後述する仮想記憶サポートの問題とともに後のMC68010で改善された。"MOVE from SR" 命令は特権命令となり、ユーザモードのソフトウェア用に"MOVE from CCR"命令を追加した。ユーザモードで "MOVE from SR" 命令を使った場合、トラップが発生してOS側でエミュレートすることも可能である。
[編集] 仮想記憶サポートにおける割り込み機能の問題
(以下の点は不具合、バグと語られることが多い。しかしMC6000の初版マニュアルからRERUN機能はきちんと説明されている。また、当時は仮想記憶の実現に必要なMMUも計画中に過ぎなかった。したがって、以下の動作は「将来仮想記憶をシリコン上に実装することを正当化する需要が発生するまでの暫定的な実装仕様」だったと考えるほうが自然である。そうではなく、バグなのだという根拠がある場合は是非その情報元を記してほしい。)
MC68000は、割り込みに際してプログラマに見えるレジスタしか退避せず、しかも命令の再実行機能もなかったため、仮想記憶を単独で実現することができなかった。なぜなら、仮想記憶を実現するには命令実行中のメモリ・アクセスを中断し、他の処理を行ってから中断したメモリ・アクセスを再開する必要があるからである。このような処理はページフォールトが発生したときにおきる。MC68000はこのような場合のための命令中断・再実行機能を実装せず、かわりにバス・アクセスのリラン(Re-Run)機能を搭載していた。これは、バス・アクセスを中断し、バスをスリーステートにして開放した後、後に中断したアクセスを再実行する機能である。
MC68000で仮想記憶を実現するために、リラン時にページスワップを行うための68000を積んだデュアルプロセッサのコンピュータも存在した。仮想記憶の実装は以下のとおりである。メモリ管理ハードウェアによってページフォールトを検出する。すると、ハードウェアによってメインのCPUがバスからいったん切り離される。この操作は信号線を2本操作することで行われる。このメインのCPUが切り離された状態で、もうひとつのCPUでハードディスクやメモリやメモリ管理情報にアクセスして、適切なページの入れ替え作業を実行する。その後で、メインのCPUにバスサイクルの再実行を行なわせれば、正しいデータをメモリから読み出すことができる。
メインのCPUは、ページの入れ替え作業の間は何もせずにただ停止しているだけなので、コンテキストを保存したり復帰したりする必要は無い。またページの入れ替えを行なうCPUは原理的には何でもかまわない。しかし、MC68000をメインのCPUとしたコンピュータのバスに接続しやすいのはMC68000なので、補助のCPUにもMC68000を採用すればハードウェアが簡単になることから、MC68000を2個搭載する装置がよく見られた。
補助のCPUはページフォールトが発生するまでは停止させられていて、メインのCPUがバスから切り離されてから活動状態になる。補助CPUがページを入れ替え終わって、再び停止状態になってから、メインのCPUのバスサイクル再実行を起動するので、メモリ・スワップに関する限り二つのCPUが同時に動作することは無い。
以上のようなMC68000のデュアル・プロセッサによる仮想記憶を実現したコンピュータとしてはApollo社のDomainが有名である。同社の実装ではページスワップを担うスレーブ・プロセッサは、通常時はグラフィックス・プロセッサとして動作し、必要に応じてマスターのページ・スワップ要求に応じた。
この問題は後のMC68010で解決された。バスエラーとアドレスエラーが発生した場合、大量の内部状態をスーパバイザスタックに格納することにより、元の処理に復帰できるようになった。
[編集] 命令セットの詳細
基本的なアドレッシングモードは以下の通りである。
- レジスタ直接
- データレジスタ、例 "D0"
- アドレスレジスタ、例 "A6"
- レジスタ間接
- 単純アドレス、例 (A0)
- ポストインクリメント付アドレス、例 (A0)+
- プレデクリメント付アドレス -(A0)
- 16ビット符号付オフセット、例 16(A0)
- 実際のインクリメントやデクリメントのサイズはオペランドの指定によって変わる。バイトリード命令ではインクリメントすると、アドレスに1を加算し、ワード(16ビット)では2を、ロング(32ビット)では4を加算する。
- インデックス付レジスタ間接
- 8ビット符号付オフセット、例 8(A0, D0) または 8(A0, A1)
- プログラムカウンタ相対
- 16ビット符号付オフセット、例 16(PC). このモードは非常に便利
- インデックス付8ビット符号付オフセット、例 8(PC, D2)
- 絶対アドレス指定
- "$4000"のような数値や、アセンブラが翻訳するシンボリックな名前。
- 68000のアセンブリ言語では16進数を表すのに"0x"ではなく"$"を使うものが多い。
- イミディエート値
- 命令内に埋め込み、例 "#400".
追加:ステータスレジスタへのアクセス。後のモデルでは他の特殊レジスタも同様。
多くの命令にはドットに続くサフィックスが付き、処理単位を8ビット (".b")、 16ビット (".w")、32ビット (".l")で指定する。
多くの命令は入力(ソース)と出力(デスティネーション)を持ち、デスティネーションに変更を加える。主な命令は以下の通りである。
- 算術演算:ADD, SUB, MULU(符号なし掛け算), MULS(符号あり掛け算), DIVU, DIVS, NEG(否定加算), and CMP(減算の一種だが、ステータスビットにのみ結果を反映し、実際の減算結果は格納しない)
- 二進化十進演算:ABCD, SBCD
- 論理演算:EOR(排他的論理和), AND, NOT(論理否定)
- シフト演算:
- 論理シフト、つまり右シフトで最上位ビットをゼロにする: LSL, LSR
- 算術シフト、つまり最上位ビットを符号拡張する: ASR, ASL
- ローテート、eXtendを使う命令と使わない命令: ROXL, ROXR, ROL, ROR
- メモリ内のビット操作:BSET(1にする), BCLR(0にする), and BTST(SRのZeroビットをセット)
- マルチプロセッサ制御:TAS(テストアンドセット、見えないバス操作を行うことによりメモリ共有型マルチプロセッサでのセマフォを実現)
- フロー制御:JMP(ジャンプ), JSR(サブルーチンコール), BSR(相対アドレスでのサブルーチンコール), RTS(サブルーチンからの復帰), RTE(例外や割り込みからの復帰), TRAP(ソフトウェア割り込みに似たソフトウェア例外を発生), CHK(条件付きソフトウェア割り込み)
- 分岐:Bcc("cc"は分岐条件として16種類のステータスレジスタのチェック方法を記述:equal(等しい), greater than(大きい), less-than(小さい), carry, これらの組み合わせや論理否定)
- デクリメント付き分岐:DBcc("cc"は分岐命令と同じ意味)指定したデータレジスタをデクリメントした後、指定された条件が真で、デクリメント結果が-1でないなら分岐する。0ではなく-1でチェックするのは、ループを記述する場合にコードを単純化するためである。ループカウンタとして最初から0が指定された場合、デクリメントされて-1になるので分岐しない。したがって0かどうかをループに入る前にチェックする必要がない。
[編集] 680x0ファミリ
- MC68000 - 日本ではSHARP X68000 XVI/Compact、SNK NEO-GEOなどに採用。
- MC68EC000 - 各種機器制御用の組み込みMPUとして使用されたほか、セガサターンではサウンド制御用MPUとして搭載された。
- MC68008 - データバスを8ビット、アドレスバスを20ビットに縮小、安価な48ピンパッケージに収めた縮小版の68000MPUである。
- MC68010 - 仮想記憶および仮想マシン機構を追加した68000MPU。サン・マイクロシステムズの初代UnixワークステーションであるSun-1に搭載された。3ワード分のキャッシュを持ち、68000に較べ、DBcc命令等を高速に実行可能であった。
- MC68012 - 外部アドレスバス31ビット。
- MC68020 - 外部アドレスバス32ビット、データバス32ビットと、名実ともに32ビット化。命令キャッシュ256バイトを追加。 Sun3、Macintosh II、Amiga 1200などに搭載。
- MC68030 - MMU内蔵、命令キャッシュのほかにデータキャッシュ256バイトを追加。Sun3/80、SONY NEWS、Next Cube(初代)、Macintosh IIx以降、Amiga 3000などに搭載。
- MC68EC030 - MMU無し。SHARP X68030に搭載。
- MC68040 - MMU,簡素化されたFPU内蔵、各キャッシュを4Kバイトに増加、命令の高速化。Next Cube、Macintosh Quadra・Centris、Amiga 4000などに搭載。
- MC60EC040 - MMU無し。
- MC68LC040 - FPU無し。Macintosh LC475・575等、Appleの廉価モデルなどに搭載。
- MC68040V - 低電圧動作 (3.3V) 版。
- MC68060 - 68040とピン互換、内部2逓倍、ワイヤードロジック化に伴い、一部の命令が削除された。しかしSunはSPARC、MacintoshはPowerPC、他はMIPSなどに移行したためワークステーション・パソコンではほとんど採用されず。X680x0ではアクセラレータとして使われた。
- MC68EC060
- MC68LC060
- SCC68070 - シグネティックス社が、CD-iのために製造した組み込み用の互換MPU。
- MC68MH360FE - MC68360(CPU32+ベース)+SCC(Serial Communications controllers)
[編集] 周辺LSI
- MC68120 - IPC (Intelligent Peripheral Controller with mask ROM)
- MC68121 - IPC (Intelligent Peripheral Controller w/o mask ROM)
- MC68150 - DBS (Dynamic Bus Sizer)
- MC68153 - Bus Interrupter
- MC68160 - EEST (Ethernet Driver)
- MC68184 - BIC (Broadband Interface Controller)
- MC68185 - Twisted Pair Modem
- MC68194 - Carrierband Modem for IEEE 802.4
- MC68195 - Local Talk Adapter
- MC68230 - PI/T (Parallel Interface & Timer) パラレルインターフェイス&タイマ
- MC68338 - MAC (Media Access Controller)
- MC68339 - FSI (FDDI System Interface)
- MC68356 - SPCE (Signal Processing Communication Engine)
- MC68360 - QUICC ( Quad Integrated Communication Controller)
- SCC68430 - DMAC (1ch Direct Memory Access Controller)
- MC68440 - DMAC (2ch Direct Memory Access Controller)
- HD68450 - DMAC (4ch Direct Memory Access Controller)
- MC68451 - MMU (Memory Managiment Unit)
- MC68452 - Bus Arbiter
- HD63463 - HDC (Hard Disk Controller) ハードディスクコントローラ
- HD63484 - ACRTC (Advanced Cathod Ray Tube Controller)
- MC68488 - GPIBA (GP-IB Adapter)
- R68C552 - DACIA (Dual Asynchronous Communication Interface Adapter)
- R68560]- MPCC ( Multi Protcol Commuication Controller)
- HD68562 - DUSCC (Dual Universal Serial Communication Controller)
- MK68564 - UART
- MC68605 - X.25 Protcol Controller
- MC68606 - X.25 Multi-Link LAPD Protocol
- SCN68652 - MPCC (Multi-protcol Communication Controller)
- MC68661 - UART
- MC68681 - DUART (Dual Universal Asynchronus Receiver/Transmitter)
- SCC68692 - 68681 Compatible CMOS
- R68802 - LNET (Local Network Controller)
- MC68824 - TBC (Token Bus Controller)
- MC68834 - Stream Cipher Chip
- MC68836 - FCG (FDDI Clock Generator)
- MC68837 - ELM (Elasticity Buffer and Link management)
- MC68838 - MAC (Media Access Controller)
- MC68839 - FSI (FDDI System Interface)
- MC68840 - Integrated FDDI
- MC68847 - quad ELM
- MC68848 - CAMEL
- MC68851 - PMMU (32bit Page Memeoy Management Unit)
- MC68881 - FPU (Floating-Point Unit) 浮動小数点演算ユニット
- MC68882 - FPU (Floating-Point Unit) 浮動小数点演算ユニット(改良版)
- MC68901 - MFP (Multi Function Peripheral) 多機能周辺コントローラ
[編集] 後継製品
- CPU16
- TMP68301 - 68HC000 + UART etc
- TMP68303 - 68HC000 + UART + PI/T
- MC68302 - 68EC000 +
- MC68306 - 68EC000 + DUART
- MC68307 - 68EC000 + UART
- MC68322 (BANDIT) - 68EC000 +
- CPU32 MCU
- MC68330 -
- MC68331 -
- MC68332 -
- MC68334 -
- MC68340 -
- MC68341 -
- MC68349 (Dragon Ball) - CPU030 + Palm (PDA) に使われた。
- MC68356 - 68EC000 +
- MC68360 - CPU32+
- ColdFire - M68Kシリーズから派生したRISCプロセッサ。命令セットはソースコードがサブセットとなっている。
[編集] 参考文献
- 68000とファミリの活用 ISBN 4-501-51240-7