2018-12-03 21:26 — asano
カテゴリー:
MC68010の前にMC68008について書いておきましょう。
Intelの8088に対抗して小規模向けに作られたのがMC68008です。データバスが8ビット、アドレスバスが20ビットに縮小されています。メモリ空間は1MBとなります。
これで不足するなら素直にMC68000を使えということです。
それでは本題のMC68010を見ていきましょう。
ハードウェア的にはMC68000と互換でそのまま挿し換えもできます。当然バス幅にも変更はなく、メモリ空間も16MBのままです。ソフトウェア的にはさまざまな改良点がありますが、メモリに関するものには次のようなものがあります。
- Function Codeを自由に設定してメモリアクセスが可能になりました。もちろんSupervisor Modeでのみ実行可能な特権命令です。
- バスエラーになったアクセスを再実行して「再開」できるようになりました。
- アドレス0からに固定されていた例外ベクタが移動可能になりました。
1でOSからユーザメモリへのアクセスが可能にななったこと、2で仮想記憶が使えるようになったこと、これらから汎用マシンとして使いやすくなったはずですが残念ながらあまり採用例を聞きません。同じ再設計の手間をかけるならMC68020に移行した方がパフォーマンス的にも有利という判断なのかもしれません。
あまり知られていませんがMC68012というものもありました。
MC68010のパッケージを84ピンのPGAにすることでアドレスバスを7ビット増やしてメモリ空間を2GBに拡張したものです。他にRead-Modify-Writeサイクルであることを示すRMCが増え、GNDが2ピン増やされています。
不思議なのは増えたアドレスでなぜかA24~A29, A31となっています。
何か理由があるのでしょうがよくわかりませんね。
MC68000で未使用だったアドレスのビット24以上が有効になったので、前回書いたアドレスの上位を利用しているソフトウェアには影響が出てしまいました。
そういうトリッキーなソフトウェア以外はアドレス範囲の定数を変更するなどの簡単な修正で対応可能です。やれメモリモデルだ、プロテクトモードだといった変更は必要ありません。
一つ書き忘れていたことがありました。
8086では奇数アドレスから16ビット幅のデータを読み書きすることが可能(8ビットずつ2回のアクセスになる)でしたが、MC68000~MC68012ではこれはできずアドレスエラー例外が発生します。データバス8ビットのMC68008ではできても良さそうなのですがやはり例外が発生します。
速度を考えたら奇数アドレスに置くべきではないのでたいした問題ではありませんが。
コメントを追加