Z380
読み:ズィーさんびゃくはちじゅう
外語:Z380
ZiLOG
の
Z80
の上位互換
16ビットマイクロプロセッサー
(事実上の
32ビットマイクロプロセッサー
)の一つ。
目次
仕様
特徴
32ビットアドレスバス
レジスター
動作モード
互換
機能
オペコード
アドレッシング
IX/IY/Rレジスター
相対CALL
仕様
32ビット
アドレスバス
、最大4Giバイトのリニアアドレッシング
32ビットのデータパスとALU(加算器)
強化された命令セット
4バンクのチップ内蔵レジスターファイル
3.3V
で10MHz、
5V
で18MHzの2バージョンがある。
特徴
32ビットアドレスバス
Z380最大の特徴は、32ビットアドレスバスである。
Z80上位互換でありながら、32ビットマイクロプロセッサーであることが、他に比類ない最大の特徴なのである。
これは、MMUでも、8086のような「
セグメント:オフセット
」でもない、完全にリニアな32ビット、4Giバイトのアドレス空間である。
また、
I/Oポート
空間も同様に4Giバイト存在する。この環境に対応するため、16/24ビットの相対ジャンプや、8/16/24ビットの相対CALL命令などが追加され、Z80で弱かったリロケータブルなプログラムを作れるようになった。
レジスター
レジスターはBC/DE/HL/IX/IYが32ビット化されていて、それにZ80と同様、裏レジスターがある。そしてこれが4バンクある。
レジスターの内容交換命令もEXXに加え、EXXX、EXXY、EXALL、EX XY,XY'、SWAPなどが用意されている。
動作モード
互換性のため、ネイティブモードと拡張モードが存在する。
ネイティブモードではプログラムカウンターはFFFFHの次は0000HでありZ80と互換性があるが、拡張モードではプログラムカウンターはFFFFHの次は10000Hへと桁上がりする。
またネイティブモードであっても、拡張命令により、この64Kiバイトを超えたアドレスへアクセスすることができる。
互換
Z380は、「
Z180
」のバイナリ上位互換チップである。
一つ前の
Z280
とは設計コンセプト自体が異なり、オペコードはもちろんのこと、ソースレベルすら満足な互換性はない。
Z280は完全な失敗作だったので、Z180をベースに、改めて作り直したものがZ380であると言える。
Z280はパソコン用途も想定されていたようだが、Z380はあくまでも組み込み用としての用途が想定されているようである。このため、Z280にあったコプロセッサー制御命令やシステム保護機能(特権機能)は、Z380には存在しない。
機能
オペコード
Z80ならば8080に対して「ED」や「CB」でエスケープした。更に「DD-CB」、「FD-CB」がある。Z180も同様である。
Z380で命令を追加するにしても、Z80命令セットはあまり大胆な命令拡張の余地がない。そこでZ280と同様に「DD」、「FD」、「ED-CB」、「DD-ED」、「FD-ED」によるオペコード空間の拡張を使っている。
「DD」や「FD」がIX/IYの拡張以外にも使われており、命令の拡張部分は無法地帯と化している。
アドレッシング
従来の16ビットアドレッシングに、更に24/32ビットアドレッシングが加わっているため、アドレスが関わる命令は事実上3倍に増加することになる。しかしオペコード空間には、その全てを格納する余裕がない。
そこでザイログは、この拡張をプリフィックスであるデコーダ・ディレクティブ(DDIR)命令によって解決させた。DDIR命令を目的の命令に前置することで32ビットアドレスが扱えるようになる。
IX/IY/Rレジスター
Z80ではIX/IYはHLの置き換えという印象が強く、IX/IYとHLとの間の命令は存在しなかったが、Z380には次のような命令がある。
DD 3B : LD HL,IX
FD 3B : LD HL,IY
DD 37 : LD IX,HL
FD 37 : LD IY,HL
DD 27 : LD IX,IY
FD 27 : LD IY,IX
他に、LD IX,(HL)やLD HL,(IX+d)といったような命令もある。Z380では、IX/IYは独立したレジスターという扱いのようであり、このために不足する命令を追加している。
また、IX/IYレジスターの8ビットアクセスが正式サポートされている点は
Z180
等に対する(ある種の)アドバンテージと言える。
一方で、Rレジスターは単なる汎用レジスターとなりリフレッシュレジスターのエミュレート機能を持たないので、乱数の種に使うことができない。
相対CALL
Z80には、JP命令に対し、相対JP命令としてJRがある。しかしCALLに対する相対CALL命令はなかった。
Z380には、相対CALL命令としてCALRという命令がある。オフセットに8/16/24ビットが用意され、次のように符号化されている。
ED CD xx
DD CD xx xx
FD CD xx xx xx
オペコードバイトを共通にし、DD/FDでオフセット長を切り替えている。
再検索