メニューを開く 項目を開く 記事投稿時刻 コメント トラックバック カテゴリー ブログテーマ タグ URLリンク コメントの編集 コメントに返信する

MBL68B09E

2020/01/06  00:03
0
タイトルを見ただけでわかる人はかなりのマニアである。
現在主流のPC用CPU、インテルCORE i7あたりは64ビットだが、いまから40年前は8ビット全盛時代で、中でも代表的なのがザイログZ-80、モステクノロジーMOS-6502、モトローラMC-6809の3つだろう。
え?インテルはどこいったかって?最初期に4ビットマイクロプロセッサi4004を開発したインテル(このCPU設計には日本人も関わっている)はその後8ビットのi8008、さらにi8080を開発したが、ザイログ社がi8080をベースにZ-80を開発して売り出し、当時の8ビットPCのほとんどがZ-80を採用したため、i8080の出番はなくなってしまったのである。シャープのMZ、NECの60,66,80,88、東芝のPASOPIAなどにZ-80が用いられていた。Z-80の命令セットはi8080と同等であったが、「裏レジスタ」を持っておりデータをレジスタに持たせたままレジスタセットを切り替えることができ、i8080より使い勝手がよかったことがi8080を駆逐した原因だろう。
6502というと小説家を思い浮かべる人もいるかもしれない。まあ、小説家「ろくごまるに」はこの8ビットMPUからとったものだろう。このMPUの特徴はパイプラインを持っていることだ。パイプラインといえばPentiumにUパイプとVパイプが実装されているが、あれみたいなものだろう。6502はいじったことがないからよく知らない。6502系はPC用8ビットMPU,CPUの中では最も売れたプロセッサではないだろうか?機種数ではZ-80がダントツであるが、6502系はファミコンとアップルⅡに採用されている。ファミコンとNESだけで2500万台以上売れているはずだから、Z-80パソコン全部あわせても追いつかないのではないだろうか?最も、Z-80はPC以外にも制御用によく用いられていたので、総数となるとどっちが多いかわからなくなるが。ちなみにファミコンに用いられたのは純正6502ではなく、リコーのカスタムチップだったはずである。
モトローラのMPU6800は日立のベーシックマスターに使われていたと思う。それにレジスタを増やしたのが6809で2つあるスタックセグメントレジスタとプログラムポインタとフラグレジスタ以外の全てのレジスタを用いて、一気にメモリブロック転送を行うという荒業が使えるようになった。6809の1MHz版が68A09でmicro-8に用いられ、2MHz版の68B09がmicro-7に採用された。
MBL68B09Eの「MBL」は富士通製、Bは2MHz、Eは外部同期の意味である。
富士通のPCはmicro-8の時代から2MPU搭載しており、サブMPUが描画を担当しており、misro-7やFM-New7でもこの構成は変わらない。メインMPUとサブMPUは独立した別回路で動いており、メインからサブに描画命令を出すときは、いったんサブMPUを止め、共有メモリに命令やデータを書き込み、サブMPUを動かす必要があった。
7のMPUは外部同期であったため、2MHzのメインとサブを1MHzずらして動かすことができ、いちいちサブをとめなくてもメインからサブに命令やデータを渡すことができ、サイクルスチールと呼ばれた。これを用いて作られたのがFM-77で、FM-7と同一MPU構成ながら2倍近い速度性能を実現している。この話を聞いたときは感心したものだ。
さて、この6809だが、2MHzが最高クロックだったが、日立からほぼ互換の3MHz版6309が発売されると、FM-7を魔改造することがはやったようだ。6309は6809の公開定義命令には互換性があったが、未定義命令には互換性がなかったため、動かないソフトもあったようである。健全なユーザーであった私は、そんな魔改造はしなかった。せいぜいバグのあったブートPOMを焼き直して、高速起動するようにしたぐらいだ。(正規のブートROMは周辺機器接続チェックのリトライ回数が異様に多く、起動が遅い原因になっていた)
6809のいい点は、マシン語命令の直交性が高く、ハンドアセンブルしやすいことだ。欠点はZ-80に比べてペリフェラルが少ないことか。ま、ハードに興味がない私にはあまり関係ないことであったが。
当時のOSといえば、80系用のCP/M全盛時代だったが、個人的にはOS/9が気に入っている。もちろんMAC OS-9ではない。OS/9-6809だ。後に68000版もでたが、そっちはさわってない。OS/9は8ビットOSでは類を見ないマルチタスクOSである。当時、その先進性に驚かされたものだ。Windows3.1のようなとってつけたようなイベントドリブンなシステムではなく、いわゆるTSS(Time Sharing System)であった。搭載されていたBASIC-09は構造化BASICで、PASCALがP-コードコンパイラであったように、i-コードコンパイラであった。先進的なBASICといえば、後にシャープがX-BASICを出すが、あれはBASICのふりをしたCだ。マイクロソフトがQuick-BASICを出すまでは、最も使いやすいBASICだったように思う。
6809の特徴をあと2つ挙げるなら、メモリマップドI/Oであることと、スタックマシンであることだろうか。Z-80やインテルのCPUはメモリ空間とI/O空間が分離さrており、I/O操作には専用命令を用いるが、6809はメモリへの読み書き命令でI/O操作ができる。また、インテル系はレジスタでのデータ操作が前提に作られており、扱うデータ数が増えるとレジスタが不足しがちになる。そのためZ-80の裏レジスタが重宝するのだが、6809はスタックを用いる前提のため、レジスタへの負荷は小さい。そのかわり、メモリI/Oが多発するため、メモリが低速だと処理能力が低下する。
ちなみに、16ビットで比較すると、レジスタマシンである8086より、スタックマシンである68000のほうがレジスタが多く、しかも汎用である。8086のセグメントレジスタの使いにくさもあり、68000のほうが格段にプログラムを組みやすかった。ただし、ニーモニックを読む、という点からすると、レジスタが汎用でない8086のほうが読みやすいのは皮肉である。(自分の書いたコードならどのレジスタを何に使ってるかわかっているのでいいが、他人のコードだとさっぱりである)
インテルのCPUは「高速化」「処理ビット数の増加」「集積度の増加」という点では進化してるといえるが、命令セットという点では8086の頃とあまり変わっていない。互換性を引きずった結果といえる。
以前はオールアセンブラでゲームを作ったりもしていたものだが、最近はアセンブラで組むこともなくなり、世の中JAVAだらけである。マーズローバーもJAVAで組まれてるとか・・・。(まあ、制御の根幹部分はCだろうが)
いまどきプログラマはCPU(MPU)なんて気にしないんだろうなーと思うきょうこのごろである。




スポンサーサイト



コメント

コメントの投稿