XC68020(68020のプロトタイプ)
MC68020 (エムシー ロクハチゼロニゼロ)は、1984年にモトローラ が開発した32ビット マイクロプロセッサ 。68000 、68010 の後継であり、その系統は後に68030 に受け継がれた。低価格版の68EC020 もある。
解説
MC68020
従来の同系統のプロセッサはデータバス16ビットでアドレスバス23ビットだったのに対して、68020はアドレスバス もデータバス もプロセッサ内外含めて完全に32ビット 化されていた。新たなパッケージング技法により、従来のDIP に対してサイズを大きくすることなく多くのピンを出力できるようになっている。68EC020はアドレスバスを24ビットにしてコストを低減させている。68020は12MHzから33MHzの速度の製品が出荷された。
68010からの改良点
68020は、演算論理ユニットALU と外部データバスと外部アドレスバスの32ビット化、新たな命令とアドレッシングモード の追加、プリフェッチ の強化など、68010に様々な改良を施している。また3ステージのパイプライン を導入。それによってより高いクロック周波数が実現でき、命令の実行速度が向上した。68010には「ループモード」があり小さなループを小さな命令キャッシュの保持して高速化することができたが、あまり効果はなかった。68020ではそれを普通の256バイトの命令キャッシュに置き換え、68kシリーズで初めてキャッシュメモリ を内蔵することとなった。
68000と68010では、ワード(16ビット)とロングワード(32ビット)がワード境界(アドレスが偶数の位置)にあるときのみ、ワードまたはロングワードとしてアクセスできるという制限があった。68020ではこのデータ配置制限も取り除かれた。ただし整列されていないロングワードへのアクセスは、整列されたロングワードへのアクセスよりも遅い。
リアルタイムオペレーティングシステム を考慮し、従来のユーザーモード/スーパーバイザモードそれぞれのスタックポインタに加えて、割り込み用スタックポインタが追加された。割り込みの受け入れとその処理を分離できるようになり、従来のように割り込み処理中に処理を完結させる必要性が軽減された。
コプロセッササポート
MC68020 には、新たにコプロセッサ インターフェースが搭載された。これにより、最大8個のコプロセッサを接続できる。メインCPUは「Fライン命令」(オペコード の先頭4ビットが全て1の命令)を認識すると、特別なバスサイクルでコプロセッサとやり取りし、その命令をコプロセッサに実行させる。コプロセッサとしては、メモリ管理ユニット(MMU )MC68841/MC68851 や浮動小数点数演算装置 (FPU )MC68881 /MC68882 が用意された。MMUはCPU1つに対して1つだけ接続可能。FPUは原理的には複数個接続可能だが、通常は1つだけ接続した。コプロセッサとの接続は非同期バスで行われるため、メインプロセッサと同じ周波数のコプロセッサでなくても動作した。
マルチプロセッシング機能
マルチプロセッシング は、RMCピン[ 1] で外部にリード・モディファイ・ライト (英語版 ) サイクル実行中であることを示す信号を供給することで実装されている。他のプロセッサはその間メモリアクセスを控える[ 1] 。ソフトウェアサポートとしては、TAS 命令、CAS 命令、CAS2命令などがある。
マルチプロセッサシステムでは、CPU間でコプロセッサを共有できない。コプロセッサからの復帰、バスエラーやアドレスエラー例外からの復帰に関わる問題を防ぐため、一般にマルチプロセッサシステム内の全CPUが同一モデルでなければならず、全FPUも同一モデルでなければならない。
命令セット
新たな命令としては、スーパーバイザモードについてのいくつかの改善と拡張、マルチプロセッシングシステムのソフトウェア制御のためのいくつかの命令(68060では削除された)、高級言語サポートのためのいくつかの命令(あまり使われず、以降の68kプロセッサでは削除された)、32ビット整数同士の掛け算(結果は64ビット)、64ビット数値を32ビット数値で割る割り算(結果は32ビットの商と余り)、ビットフィールド 操作命令がある。
68000にも「スーパーバイザモード」があったが、特権モードで保護しなければならない 'MOVE from SR' という命令が非特権モードで実行可能だったためPopekとGoldbergの仮想化要件 を満たしていなかった。68010以降、これが特権保護されるようになり、仮想化ソフトウェアをサポートしやすくなった。
なお、F(1111)ラインエミュレータにおいて、メモリを参照するオペコードを実行した場合、メモリーへの投機実行が行われる。この為、1111ラインエミュレータにシステムコールを配置したOS(例えばシャープ /ハドソン Human68k のVer.2.0以前)では予期せぬメモリアクセスによってバスエラー が発生するという問題が生じた。この問題はA(1010)ラインエミュレータでは発生しない。
アドレッシングモード
新しいアドレッシングモードとしては新たな間接モードが既存のモードに追加され、インデックスの使い方が柔軟になった。
あまり触れられることはないが、これらの新しいアドレッシングモードによって68020はページプリンティングに最適となり、90年代初頭の多くのレーザープリンター が68EC020コアを使用した。
68020の命令バッファ(命令キャッシュ)は256バイトで、1エントリ4バイトの64エントリがダイレクトマップで配置された。小さなキャッシュではあるが、アプリケーションの性能向上に大変効果があった。またそれによってバストラフィックが低減され、特にDMA を多用するシステムに有利となった。
XC68020の底面
使用例
コモドール のAmiga 、Apple の Macintosh II と Macintosh LC といったパーソナルコンピュータ だけでなく、サン・マイクロシステムズ のSun-3 ワークステーション、ヒューレット・パッカード のネットワークアナライザーなどにも使われた。
アーケードゲームとしてはナムコSYSTEM22 、SYSTEM22SUPERへの使用が確認されている。
フランスのTGV では、線路を通して列車に送られる信号のデコードにこのプロセッサを使用していた。戦闘機ユーロファイター タイフーン の操縦制御システムでも使われている。
派生品
MC68EC020
68EC020 はモトローラ が発売したマイクロプロセッサ である。68020の低価格版であり、アドレスバスを24ビットに縮小してあるため、最大16MBのメモリしかアクセスできない。
コモドール のコンピュータ Amiga 1200 とゲーム機 Amiga CD32 が68EC020を採用していた。アーケードゲーム用基板コナミSYSTEM-GX 、タイトーF3システム もこのプロセッサを使用している。レーザープリンターにも使われており、QMS PS 410、アップルはLaserWriter II NTXとLaserWriter II NTX-J 、コダックは Ektaplus 7016PS、データプロダクツは LZR 1260 に採用していた。
技術データ
正式名称
MC68020[ 2]
動作周波数
12.5 , 16.67 , 20 , 25 , 33 MHz (最低周波数は 8 MHz。クロックは外部から供給)[ 2]
供給電圧
5 V
最大消費電力
1.75 W [ 2]
製造プロセス
HCMOS, 3/8" シリコンピース[ 2]
パッケージ
PGA 169 (114ピンを使用) 34.16 x 34.16 mm [ 2] (ヒートシンク無で 53 °C/W)[ 3]
アドレスバス
32ビット(4GBのフラットなアドレス空間に直接アクセス可能)[ 2]
データバス
32ビット
命令セット
101命令 CISC
キャッシュ
256バイト 命令キャッシュ[ 4] [ 2]
レジスタ
アドレスレジスタ7本(32ビット)[ 2]
データレジスタ8本(32ビット)[ 2]
トランジスタ数
~200 000 [ 2]
性能
10 MIPS @ 33MHz [ 4]
脚注・出典
この記事は2008年11月1日以前にFree On-line Dictionary of Computing から取得した項目の資料を元に、GFDL バージョン1.3以降の「RELICENSING」(再ライセンス) 条件に基づいて組み込まれている。
外部リンク