MC68020
出典: フリー百科事典『ウィキペディア(Wikipedia)』
MC68020(えむしーろくまんはっせんにじゅう) はモトローラが開発したマイクロプロセッサである。 68000、68010の後継であり、その系統は後に68030に受け継がれた。
68020はアドレスバスもデータバスもCPU内外含めて完全に32ビット化されている。 低価格版の68EC020は24ビットアドレスバスであった。
68020は68010に比較して以下の点で進化している。
- 演算論理ユニットALUを32ビット化
- 外部データバスを32ビット化
- 外部アドレスバスを32ビット化
- 新たな命令とアドレッシングモードを追加
- 3ステージのパイプラインを導入
- プリフェッチの強化
68020にはモトローラのマルチプロセッシングモデルが追加された。 これにより、ひとつのシステムで8個までのプロセッサを組み合わせることができるようになった。 8個のプロセッサはCPUでもFPUでもよいが、MMU(68841か68851)が必ずひとつ必要である。 このときの制限として、CPUは全て同じモデル(クロック周波数は同じでなくても良い)、FPUも全て同じモデル(やはりクロック周波数は同じでなくても良い)でなければならない。 したがって、68020と68030を組み合わせたマルチプロセッサは不可能だが、68020/25と68882/33を組み合わせることは全く問題ない。 しかしながら、1個のCPUと1個のFPU以上の組み合わせのシステムは全くといっていいほど存在しなかった。 ほとんどの68020を使ったUNIXマシンは、ひとつの68020にひとつのFPU(68881か68882)とひとつのMMU(68841か68851)を組み合わせた単純な構成だった。
新しい命令は以下のようなものがあった。
- スーパーバイザモードについてのいくつかの改善と拡張
- マルチプロセッシングシステムのソフトウェア制御のためのいくつかの命令(68060では削除された)
- 高級言語サポートのためのいくつかの命令(あまり使われず、以降の68kプロセッサでは削除された)
- 32ビット整数同士の掛け算/割り算
- ビットフィールド操作
新しいアドレッシングモードとしては新たな間接モードが既存のモードに追加され、インデックスの使い方が柔軟になった。 あまり触れられることはないが、これらの新しいアドレッシングモードによって68020はページプリンティングに最適となり、90年代初頭の多くのレーザープリンタが68EC020コアを使用した。
命令バッファ(命令キャッシュ)は256バイトで、1エントリ4バイトの64エントリがダイレクトマップで配置された。 小さなキャッシュではあるが、アプリケーションの性能向上に大変効果があった。
リアルタイムオペレーティングシステムを考慮し、従来のユーザーモード/スーパーバイザモード夫々のスタックポインタに加えて、割り込み用スタックポインタが追加された。割り込みの受け入れとその処理を分離できるようになり、従来のように割り込み処理中に処理を完結させる必要性が軽減された。
パイプラインを備える事でより高いクロック周波数と命令の実行速度が向上した。なお、1111ラインエミュレータにおいて、メモリを参照するオペコードを実行した場合、メモリーへの投機実行が行われる。この為、1111ラインエミュレータにシステムコールを配置したOS(例えばシャープ/ハドソン Human68k)では予期せぬメモリアクセスによってバスエラーが発生するという問題が生じた。この問題は1010ラインエミュレータでは発生しない。