同等品・上位互換品リスト
コメント量は、私のそのプロセッサに対する思い入れの程度にほぼ比例しています。
こちらが元祖・本家のZ80 CPU。1976年発表。
Z84**といった数字4桁の型番は後付けのようで、発表当初はZ80CPU/PIO/DMA/CTC/SIOというのが正式名称だった。
一般的に数字型番中にCが付くものはCMOSプロセス、そうでないものはNMOSプロセスである。
ご存じのように、Z80のメモリアクセスタイミングは高速化に不向きであるが、それにもめげず、10MHz品や20MHz品が存在する(タイミングは若干異なるが)。しかしこの2品種にはバージョン俗称(Z80A等)がなかったように記憶しているが、実際にはどうなのだろうか?
恥ずかしながら、筆者はNMOSプロセス品特有のIFFサンプリング命令に関する不具合について、つい最近知った。かつて悩んだモジュールを追試して、現象を確認。胸のつかえが取れた感じ。
| ナショナルセミコンダクタ(NS) NSC800[絶滅種] |
CMOSプロセスのバイナリ互換CPU。ピン配置はZ80と異なるどころか、論理的にとはいえi8085に酷似しており、無論差し替えは不可能。
ソフトウェアはZ80互換、ハードウェアはi8085互換という、i8080用システムを最低限の変更でZ80用に置き換えたいといった要望に応えるための品種といえる。
国産初の人工衛星「ふじ」にも搭載された。
LH0080(Z80/2.5MHz)、LH0080A(Z80A)、LH0080B(Z80B)、LH0080E(Z80H)、LH0080H(10MHz)がある。シャープはZ80の正式セカンドソーサである。
ディスクリートのCMOS版はLH5080(2.5MHz)のみ。
バイナリ上位互換MPU。MMU(最大1MB)を内蔵。
命令の実行速度は、内部動作の改善(リフレッシュサイクルの非同期化など)で同一周波数動作のZ80よりも速くなっている。後述のZ280が速度維持をキャッシュに頼っているのとは対照的である。
拡張機能は内部I/Oアドレスに割り振られたが、このアドレスが00xxH固定な為これが既存のZ80システムからの移行の障害となっている。だがこの悪習は以後のバイナリ互換MPUにも例外なく受け継がれてしまい、既存環境高速化の手段としてのCPU交換をほぼ絶望的にしている。
発表当初のR0マスクはZ80ファミリと直接組み合わせて使うには不都合があったが、後にZ80ファミリとの接続性を改善したR1マスクやHD64180Zも発表され、後者はザイログからZ180としてセカンドソースされている。上位互換MPUとしては最も成功しているファミリといえる。しかし、当初はCP/M互換プロセッサという、非常に怪しい売り文句が付けられていた。
現在Rマスクは製造中止、一部シリーズのみが存続している。形状は64ピンシュリンクDIP、68ピンPLCC、または80ピンQFP。
1983年にメーカ発表されたが、実際には発売されなかった幻のCPU。そこそこ期待させておいて発売されなかった為、嘘八百などと叩かれたりもした。Z8000が普及していたら現物を拝めたであろう石である。
Z80の正式なセカンドソーサである東芝が発表した、Z80単体(TMPZ84C00)を含むZ80互換コアに周辺ICを内蔵したワンチップマイクロプロセッサシリーズ。周辺ICの組合せによるバリエーションがいくつかあるが、その詳細についてはここでは割愛する。
CPUとしては、I/Oアドレスの一部を周辺ICに占有されている他はZ80そのもので、動作周波数も最高10MHz程度である。CMOSプロセスのみだが、IFFサンプリングの不具合を持っている。
秋月電子のAKI-80シリーズを始めとする、各社のワンボードマイコンに多数採用されている。
現在は保守部品扱い。
Z80の正式なセカンドソーサであるシャープが発表した、Z80互換コアに周辺ICを内蔵したワンチップマイクロプロセッサシリーズ。開発意図は東芝のTMPZ84C***と同一と思われるが、両者の型番と製品構成に関連性はない。
PC−8800シリーズの8MHz化にあたり、μPD780C-1に代わって搭載されたCPU。CMOSプロセスになった以外、μPD780との特筆すべき差異はない。動作周波数も8MHzから上がる気配はない。形状は40ピンDIPまたは44ピンQFP。
1987年に発表された同社製パソコンPC−88VAに搭載されたMPU。V30はi8086上位互換+i8080エミュレーションという構成だったが、このμPD9002はV50(V30コアに周辺を内蔵したMPU)をベースに、i8080エミュレーション部分をμPD780相当に強化した折衷プロセッサである。
厳密にはV30から4命令が削られているが、それらはすべてV30で追加された命令であるため、i8086命令を実行する分には全く問題ない。命令の削られた理由も、μPD780エミュレータ部に回路を奪われた為というのが泣かせる話である。
そのμPD780エミュレーションは、正規の命令と未定義命令のうちインデックスレジスタの8ビット分割使用関連命令までが動作するが、Rレジスタの挙動と一部命令におけるフラグ変化がμPD780と異なるほか、命令毎の動作速度に大幅な違いがある。また、V30モードとμPD780モードの双方で、互いに相手のコードをサブルーチンコールできる命令があり、BIOS/BDOSをi8086コードで記述したCP/M-80の実現といった芸当も可能になっている。
但し外部信号出力は常にV50そのものであるため、Z80ファミリなどはそのままでは接続できない。その為か外販はされず、V型番も付いていない。
形状はPLCC。
ザイログ社は、Z80のセカンドソーサ(東芝・川崎製鉄など)との技術提携に積極的で、このシリーズは東芝のTMPZ84C***シリーズのセカンドソース。動作周波数は最高20MHz。IFFサンプリングの不具合については不明。
ザイログでは互換モードを搭載した上位プロセッサへの移行を推奨している。
バイナリ上位互換MPU。Z800の発表からだいぶ経過していた為多少手直しはされたが、Z800の具現化と言える。256バイトのキャッシュを持ち、MMU(最大16MB)、仮想記憶をもサポートした高機能CPUだが、最高動作周波数は12MHzと少々奮わない。
命令も大幅に追加され、多くの命令でB(バイト)とW(ワード)両方を扱えるように拡張されている。その拡張方法はZ80のそれを踏襲しているのだが、それが災いしてバイナリコードが非常に見苦しい。80x86の命令セットが美しく見える程である。拡張の経緯が異なるので単純に比較するのは乱暴だが、キャッシュのサイズを考えると、あまりバランスの良い拡張とは言えない。Z280では、5〜6バイト長の命令が存在する為、これらの命令を50ステップ程実行すればキャッシュフルになってしまうのである。
そのキャッシュを切ると、同一周波数動作のZ80(Z8400)よりも遅い場合があり、高速Z80としての魅力は薄い。
Z180(HD64180)とZ280は拡張された命令にまったく互換性がない。両者の開発メーカが違うので仕方ないが、これが上位互換MPUを商用機に採用しにくくしていた一因ではなかろうか。私の知る限りでは、Z180(HD64180)を採用した国産マシンは1機種(2モデル)、Z280を採用した国産マシンに至っては皆無であった。
機能拡張I/Oアドレスについても同様で、両者に全く互換性はない。但しZ280ではこのアドレスを0FFxxH固定にしており、Z180(HD64180)よりはパソコン用途を意識していた事が伺える。
ザイログの歴史からは既に抹消されている。形状は68ピンPLCC。
DMGとは任天堂ゲームボーイの日本国内型番。つまりゲームボーイのCPU(そのまんま)。特定ハードウェアへの組み込み用に大幅カスタマイズされたZ80(と言うよりはi8080)だが、1バイトOPコードの1割程度が独自もしくは未定義命令に置き換えられており、I/Oポートもない(メモリマップドI/O)。あくまでカスタマイズされたZ80(i8080)のようなCPUである。
レジスタセットは一見i8080と同じだが、パリティフラグとサインフラグが省かれている。命令の実行クロックもZ80とは異なり、Z80やi8080をアセンブラでガリガリやっていた人はいろんな意味でハマる石かも知れない。
初代ゲームボーイから現在のゲームボーイカラーに至る全てのモデルに搭載。動作周波数は1.05MHz(ゲームボーイカラーは2.1MHz)。新機種のゲームボーイアドバンスは32ビットCPU併載だそうだ。
このシリーズは日立のHD64180シリーズのセカンドソースを改良したもの。
Z80180/1/2/5/9/Z80195(6〜33MHz)、Z8S180/8/Z80S183/8(10〜33MHz)、3.3V対応のZ8L180/2/9/Z80L183(20MHz)など、バリエーションは実に多彩である。パッケージ形状はZ80180のみHD64180と同様、それ以外は100ピンQFPまたは160ピンVQFP。総てCMOSプロセス。
バイナリ上位互換MPU。Z280の失敗を踏まえ、機能よりも性能を目指したと思われる。4Gバイトのメモリ・I/Oアドレスを持ちながら、命令・データキャッシュはおろか、MMUすら持っていない。名前からは何となく32ビットMPUを連想してしまうが、仕様書には16ビットMPUと表記されている。最高動作周波数は現在18MHz。ファミリのZ382は同20MHz。
Z380はZ180のバイナリ上位互換チップであり、Z280とはソースレベル以下の互換しか持たない。Z380は親藩(Z280)ではなくて外様大名(Z180)の直系なのである。親藩をバッサリやってしまった事で、跡目争いに拍車が掛かってしまった感があり、今や命令セットの拡張部分は無法地帯である。
アドレッシングモードはZ280から大幅に減り、命令バイト長の増加を極力抑えた拡張がなされている。ロングワードを無理なく扱えるように、レジスタ長も32ビットに拡張されている。この辺は 80286→i386 における拡張と似ている。
レジスタ本数も、32ビットに拡張されたBC,DE,HL,IX,IYが表裏で10本×4バンクと計40本もあり、レジスタ個別に裏表を切り替える事もできるようになった。もともとZ80の裏レジスタは、メモリアクセスが苦手なZ80において割り込み時のレジスタ退避復帰を高速に(しかも少ないゲート数で)実現する為に設けられた仕組みであり、Z380のレジスタセットのバンク化は、この高速退避復帰を階層的に行う事もできるようにしたものである。
個人的には、Z280にあったベースインデックスモードがないのが残念である。
試しに、かなりZ80に特化した2400行のアセンブリソース(うちショートインデックスアクセス240行)をZ380ネイティブコードに書き換えてみたところ(*1)、オブジェクトサイズが4498バイト→4300バイトと約4.4%小さくなった。これはワードデータのショートインデックスもしくはポインタからのロードを、2〜4バイトの1命令で行える(平均2バイト短縮)事と、ショートインデックス内データを直接HLレジスタの演算対象にできる(4バイト以上短縮)事が大きい。
Z380では命令の最短実行速度が2クロックなので、同じ処理を行うならば少ない命令数で行うように書き換えた方が、実行時の速度は向上する。
今回のソースでは乗除算ルーチンは一箇所だけだったが、レジスタ間乗除算は同一周波数動作のi386以上の速度なので、乗除算使用の多いモジュールならば、相応の速度向上が期待できる。
形状は100ピンQFP。周辺を内蔵したZ80382(20MHz)や3.3V駆動対応のZ8L382(10MHz)も発表されている。こちらは144ピンQFPまたはVQFP。
*1 適当なクロスアセンブラが見つからなかったので、ハンドアセンブルで行った。相対アドレス計算が無かったのがせめてもの救い。どこかで安価な評価用ボードとか出しませんかねぇ(今更か)。
バイナリ上位互換MPU。私の知る限りではMSXturboR(FS-A1ST,FS-A1GT)にのみ採用実績がある。最初名前を聞いた時には、RISC版のZ800かと思ってしまった。
Z80から追加された命令は、符号無し乗算命令(Z280バイナリ互換)のみと最小限だが、メモリアクセスの発生しない1バイト命令を最短1クロックで実行する。但し各種ペナルティにより実行速度はこれより遅くなる事が多々ある。これはMPUとメモリ(DRAM)の接続方法による制限で、これらを回避するには多少の修練を要する。
R800はMMU(最大16MB)を備えているが、採用機では内部MMUを使用しておらず、MSX従来機と同様メモリマッパで拡張メモリにアクセスしている。
一度使ってみたい石。搭載本体が入手難なのが困り物。
バイナリ互換コアKC82(KC80+MMU)を中心に、各種周辺を内蔵した高機能MPU。最高動作周波数は10MHzでMMU(最大1MB)を備え、R800同様、メモリアクセスの発生しない1バイト命令を最短1クロックで実行する。10MHz動作時にはオリジナルZ80の40MHz相当の性能になる。この数値はRAMアクセスノーウェイトを前提としたもので、それを実現する為にはアクセスタイム45ns以下のRAMが必要になる。
全品種ともにMMU(512KB〜1MB)に対応し、80A12は512バイトRAM内蔵、80A16/80A20は4MBまでのDRAM接続・バンク切り替え機構を備えている。クロックアップ耐性に優れている。
現行製品はKL5C80A12、KL5C80A16、KL5C80A20となっており、Aなしバージョンとの差異は不明。パッケージ形状はいずれも100ピンQFP。
無印とAバージョンの違いは出荷先で、製品自体に違いはないという情報を頂きました。
無印は非公開で3.3V駆動が可能という情報を頂きました。
バイナリ互換コアKC80単体の、周辺ICを内蔵しない高速MPU。8400という型番からもそれが伺える。同社のKL5C80A12シリーズなどは、メモリアクセスを見かけ上1クロックで完了するが、この石は従来のHD64180などと同様3クロックで実行する。その代わりといっては何だが最高動作周波数は33MHzと高く、33MHz動作時にはオリジナルZ80の40MHz相当の性能になる。クロックアップ耐性にも優れている。形状は44ピンQFP。
このプロセッサをDIP版Z80CPUと差し替えられるようユニット化した製品が、株式会社ラステーム・システムズ(旧ユニテク電子株式会社)からZ80高速化ボードUKC84/00(標準小売価格¥3,000)として発売されている。ボード(というよりソケットそのもの)上に、44ピンQFPのKL5C8400がハンダ付けされている様は、ボンディングされたプロセッサコアを連想させる。
うちにあるZ80マシンは実質PC−8800シリーズのみなので、PC−8801FHのμPD70008AC-8をこのユニットと差し替えてCPUの速度測定を行ったところ、従来比103%程度のパフォーマンスが得られた。つまり速度向上はほとんど認められなかった。また、/RFSH信号に依存するシステムでは、この製品を使用する事はできない。
プロセッサコアにTLCS-900シリーズ(900, 900/L, 900/H)を搭載した16ビットMPUシリーズ。入力最大周波数は10MHz(内部動作周波数は20MHz)。
Z80互換を期待しつつ、実仕様を見た第一印象は「なんじゃこりゃ!?」。
基本レジスタ名やニモニックこそZ80のそれに酷似しているが、OPコードからしてまったくの別物。開発には専用のアセンブラかコンパイラが必要になる。
Z280とZ380の特異点を全て抱え込んだような仕様になっているので、Z80バイナリ(上位)互換にこだわらないなら、遊べそうな石。
他に、同TLCS-900/H2を搭載した32ビット版もある。
メーカから公開されている.PDFファイルは、ちょっと読みづらい。
1996年に設立された英ABセミコンという会社から、1998年10月に国内発表された高速互換MPU。採用命令セットはHD64180(Z180)互換。
動作周波数は外部バス40MHz、内部20MHz(AB180-20)で、10MHz動作のZ180比5倍程度の性能を持つとされる。プロセッサコアは3.3V駆動だが、5V駆動にも対応している。形状は100ピンQFP。
一部拡張を施したAB181E-20(22MHz)が発表されている。
KC80を16ビットに拡張したバイナリ上位互換コアKC160を中心に、各種周辺を内蔵した高機能MPU。KC80の特徴をそのままに、最高動作周波数を20MHzに引き上げ、MMUを16MBに拡張、同一周波数動作のKC80に比べて4倍程度の性能を持つ。1999年3月から量産出荷。プロセッサコアは3.3V及び5V駆動に対応している。形状は100ピンQFP。
内蔵周辺を多少変更したKL5C16005もある。
アドレスが24ビット(16MB)に拡張された為、上位8ビット分を指定するレジスタが追加されている。この追加レジスタと従来の16ビットレジスタは暗黙の対応関係を持っており、24ビットアドレッシングの際に対で参照される。これはi8086のセグメントの概念に酷似している。対応レジスタを明示(プリフィックス)して、別のセグメントエリアを参照する事ができるのも同じだ。
性能・用途ともにザイログのeZ80190や東芝のTLCS-900シリーズと真っ向からぶつかる製品である。
1999年発表のバイナリ上位互換CPU。
今時アドレスバス24ビット(データバス8ビット)の上位互換プロセッサは珍しくないが、内部レジスタも24ビットリニアに対応という、少々珍しい作りのMPU。従来の16ビットレジスタ自体が、演算対象とならないAFレジスタを除き24ビットに拡張されている。またSPが1本追加されている。
同一周波数動作のZ80に比べて4倍程度の性能を持ち、最高動作周波数は80MHzとなっている。ただこの80MHzが、Z80の80MHz相当(20MHz駆動)なのか、実クロックで80MHz駆動なのかまでは読み取れなかった。
おおまかに5つの動作モードを持つ。
・Z80互換
・仮想Z80
・Z180互換(1MB MMU)
・仮想Z180(1MB MMU)
・ADL(Address and Data Long:eZ80ネイティブ)
これらはi386で言うところのリアルモード、仮想86モード、プロテクトモードに類似している。ADLモード時には、MMUなしで16MBの連続したメモリアドレスを持つ。MMUなしのリニアアドレスはZ380と同様だが、eZ80のI/Oアドレスは64KBのみ、デコーダディレクティブもない。
命令セットはZ180のそれに独自命令を追加したものだが、追加命令のバイナリコードは例によってどのプロセッサとも互換性がない。ザイログは、バイナリコードの互換性についてはZ180レベルで取れていればよいという考えのようだ。
確かにデータバスは8ビットなので、8ビットプロセッサと呼称するのは問題ないが、パイプラインを備えた上にALUは24ビットである。今までのMPU分類論争を逆手に取った戦略のような気がしなくもない。手元の資料には、各命令の実行サイクルは明記されているが、実行クロックは記載されていない。パイプラインによりダイナミックに実行時間が変わるというのであれば、その範囲も含めて明記すべきだろう。
今のところ、eZ80190のみのラインナップ。
| Rabbit Semiconductor Rabbit2000[別種] |
1999年に設立された米ラビットセミコンダクター社が同年発表したZ80上位互換のようなMPU。最高動作周波数は30MHz。
メーカは自信満々に比較対象のZ180をこき下ろしているが、実はZ180専用命令は全く実装されていない。それどころかZ80完全互換ですらない。1バイトOPコードの1割弱が独自命令に置き換えられていて、残念ながら既存のアプリケーションはまず正常動作しない。余談ではあるが、IX,IYレジスタの8ビット分割使用もできない。
アドレスバスが20ビット(1MB)に拡張されているなど、設計意図はeZ80190と同様と思われ、Z180クラスの組み込み用8ビットプロセッサからの置き換えを狙っている。基本命令の所要サイクル(クロックではない)はeZ80190と同じか、やや多い。最小2クロックで1命令を実行でき、この点においてはZ180よりも有利である。
拡張された命令は、16ビットレジスタに関するものがほとんどで、C言語による新規開発を強く意識しているようだ。
一部OPコードがZ80と異なるので、手持ちの開発ソフトを流用するのには無理がある。開発キットが比較的安価に提供されているので、それを利用するのがよいだろう。対応言語にはDynamic Cがあり、TCP/IPアプリケーションの開発も可能だ。
3.3V及び5V駆動に対応。形状は100ピンPQFP。
国内では東京電子販売株式会社が販売代理店契約を結んでいる。
バイナリ互換チップ・ボードも多数存在すると思われるが、そのほとんどが既に製造中止となっており、現物および資料の入手が困難なため割愛する。
μPD780余多話に戻る