RETRODREAMSAMIGA & SPECTRUM
Menu

← Toutes les puces

z80.chip

DIP-40 · Z8400A PS · dessin, pas une photo

Zilog Z80Zilog

1976

Zilog Z80

Le processeur 8 bits de toute la famille Sinclair, conçu par l'équipe qui avait dessiné l'Intel 8080.

Lancé par Zilog en juillet 1976, le Z80 est un processeur 8 bits compatible avec l'Intel 8080, conçu par Federico Faggin et Masatoshi Shima. Lui, ou un compatible, équipe toutes les machines Sinclair du ZX80 au +3, et il n'a quitté la production qu'en 2024.

bits en interne
8
bits de bus
8
MHz au maximum
20
transistors
8 500
adressables
64 KB

Les hommes du 8080

Chez Intel, Federico Faggin avait dirigé les travaux sur le 4004 et le 8080, et Masatoshi Shima avait été le principal concepteur de la logique et des transistors de ces deux puces. En 1974, alors qu'Intel traitait les microprocesseurs comme un accessoire pour vendre de la mémoire, et en pleine récession, Faggin mit Ralph Ungermann au défi de fonder une entreprise avec lui. Le dernier jour de Faggin chez Intel fut Halloween, le 31 octobre 1974.

L'entreprise n'avait même pas encore de nom quand Exxon Enterprises, la branche d'investissement technologique du groupe pétrolier, lut un article à son sujet et y investit 500 000 dollars en juin 1975. Shima les rejoignit en février de cette même année et apporta, de son expérience des mini-ordinateurs chez NEC, l'idée d'avoir deux jeux de registres, pour répondre vite aux interruptions.

Le nom naquit d'une conversation entre Faggin et Ungermann : Zilog, qu'ils expliquaient comme « le dernier mot en logique intégrée ». Les premiers échantillons du Z80 arrivèrent de chez Mostek le 9 mars 1976 et le lancement officiel eut lieu en juillet. Selon Faggin lui-même, il travaillait 80 heures par semaine pour tenir le calendrier des investisseurs.

Un 8080 amélioré

Le Z80 exécute sans modification la plupart des programmes du 8080, y compris le système d'exploitation CP/M, et hérita ainsi d'un coup de toute une bibliothèque de logiciels. Mais il simplifie beaucoup le reste de la carte : il n'a besoin que d'une seule alimentation de 5 V (le 8080 demandait −5, +5 et +12 V), d'une horloge simple monophasée, et il rafraîchit tout seul la mémoire dynamique (DRAM), qui autrement exigeait des circuits à part.

Il ajoute aussi des instructions que les programmeurs ont appréciées : des opérations sur des bits individuels, des sauts relatifs, la copie et la recherche de blocs de mémoire (LDIR, CPIR), l'arithmétique 16 bits signée, et deux registres d'index, IX et IY. Le système d'interruptions gagna trois modes (0, compatible 8080 ; 1, qui saute toujours à la même adresse ; et 2, avec une table d'adresses) et une interruption non masquable, la NMI.

L'intérieur, expliqué

Un registre est un tiroir à l'intérieur du processeur, bien plus rapide que la mémoire. Le Z80 a l'accumulateur A (où se font les calculs), les indicateurs F (qui disent si le résultat vaut zéro, s'il y a eu une retenue, etc.) et les paires BC, DE et HL, qui peuvent contenir aussi bien deux nombres de 8 bits qu'une adresse de 16 bits. Il y a encore IX et IY, le pointeur de pile SP et le compteur de programme PC.

L'astuce de Shima, c'est que AF, BC, DE et HL existent en double : il y a un second jeu « fantôme », AF', BC', DE' et HL'. Les instructions EX AF,AF' et EXX échangent les deux jeux en quatre cycles d'horloge. Pensé pour les interruptions, ce second jeu a fini par servir de tiroirs supplémentaires : la ROM du ZX81 utilise les registres fantômes pour travailler sur les nombres à virgule flottante de 40 bits de son BASIC.

Le Z80 adresse 64 Ko de mémoire et, à part, 256 ports d'entrée-sortie. En pratique, à chaque opération d'entrée-sortie il place 16 bits sur le bus d'adresses, et le ZX81 et l'Amstrad CPC exploitent l'octet haut pour économiser de la logique de décodage.

Une surprise pour qui le voit comme un processeur 8 bits : l'unité arithmétique fait 4 bits, et chaque addition de 8 bits se fait en deux moitiés.

Le registre R et l'astuce de Sinclair

Il y a deux registres peu courants. I contient la partie haute de l'adresse de la table d'interruptions du mode 2. R est le compteur de rafraîchissement : il augmente de 1 à chaque instruction lue en mémoire, ne compte que sur ses 7 bits bas, et juste après chaque lecture d'instruction le Z80 place I et R sur le bus d'adresses pour rafraîchir la DRAM.

Sinclair en fit une carte graphique. Sur le ZX80 et le ZX81, le processeur « exécute » la mémoire de l'écran elle-même : le circuit vidéo lit chaque code de caractère, donne au Z80 une instruction NOP (ne rien faire) et, au cycle de rafraîchissement suivant, combine le registre I (qui pointe vers le dessin des caractères en ROM), le code du caractère et le numéro de ligne pour aller chercher en ROM le dessin à afficher. Chaque ligne de texte se termine par une instruction HALT.

R sert de compteur de position à l'écran. Sur le ZX81, la broche d'interruption est reliée à la ligne d'adresse A6 : quand le bit 6 de R passe de 1 à 0, une interruption se déclenche, et le système sait qu'il est arrivé en fin de ligne. Moins de composants, moins de coût, et un processeur occupé à dessiner, d'où les modes FAST et SLOW.

Sur le Spectrum, c'est l'ULA qui dessine l'image, mais R et I continuent de compter. Beaucoup de jeux utilisent R comme source de nombres aléatoires. Et si un programme place le registre I entre 0x40 et 0x7F, les adresses de rafraîchissement tombent dans la mémoire partagée avec l'ULA et de la « neige » apparaît à l'écran (le snow effect).

Variantes, copies et clones

En NMOS d'origine, la vitesse maximale ne cessa de monter : 2,5 MHz pour le Z80, 4 MHz pour le Z80A (celui du ZX81 et du Spectrum, qui l'utilisent sous sa limite), 6 MHz pour le Z80B et 8 MHz pour le Z80H, avec une version à 10 MHz à la fin des années 80. Les versions CMOS vont jusqu'à 20 MHz et peuvent arrêter l'horloge sans perdre leur état, ce que le NMOS ne permet pas au-delà de quelques milliers de cycles.

Pour disposer de secondes sources, Zilog accorda une licence à Mostek (MK3880) et à SGS (Z8400) ; Sharp fit le LH0080 et NEC le µPD780C. NEC y parvint par rétro-ingénierie et conclut plus tard un accord avec Zilog lors d'un litige de brevets, obtenant une licence. Le NEC D780C-1 est le processeur de la majorité des Spectrum et de la plupart des ZX80. Il y eut aussi des copies sans licence, comme l'U880 d'Allemagne de l'Est et le T34BM1 soviétique.

Zilog et NEC ne sont pas exactement identiques dans les recoins : après SCF et CCF, les bits 3 et 5 des indicateurs, que le manuel ne documente pas, diffèrent de l'un à l'autre. Presque aucun programme n'en dépend, mais les programmes de test de CPU détectent la différence.

Le 15 avril 2024, Zilog annonça la fin du Z80 classique, avec des commandes acceptées jusqu'au 14 juin 2024 : 48 ans après le lancement. L'eZ80, un descendant compatible, continue.

Où le trouver encore

Dans les années 70 et 80, le Z80 sous CP/M domina les ordinateurs de bureau, de l'Osborne 1 aux Kaypro. Côté ordinateurs domestiques, il est dans les TRS-80, les Amstrad CPC et PCW, le MSX et le SAM Coupé, qui utilise un Z80B à 6 MHz. Le Cambridge Z88, le portable que Clive Sinclair fit en 1988 après avoir vendu la marque à Amstrad, a lui aussi un Z80, en version CMOS.

Dans le jeu vidéo : la borne d'arcade de Pac-Man, la ColecoVision, la Master System et la Game Gear de Sega. La Mega Drive a un Z80 à côté du 68000, avec 8 Ko de mémoire propre ; il sert à faire tourner les jeux Master System et on l'utilise souvent pour gérer le son, mais ce n'est pas qu'une puce sonore.

Et dans les calculatrices graphiques de Texas Instruments, à commencer par la TI-81, de 1990, avec un Z80 à 2 MHz, jusqu'aux TI-83 et TI-84 Plus, encore vendues en 2025. Les plus récentes TI-84 Plus CE utilisent déjà l'eZ80.

Le saviez-vous…

  1. Pour compliquer la copie, l'équipe plaça dans la puce six « pièges » : des transistors modifiés pour se comporter autrement que ne le suggère le dessin. Selon Shima, un ingénieur de NEC lui raconta plus tard que cela avait retardé leur rétro-ingénierie de six mois.

  2. Shima avait la réputation de calculer de tête, en pleine réunion, la place qu'une idée allait occuper sur la puce, et de la refuser si elle ne tenait pas.

  3. On dit que le X de ZX80 était « l'ingrédient mystère » ajouté au Z80.

  4. Les registres IX et IY peuvent être utilisés par moitiés (IXH, IXL, IYH, IYL). Zilog ne l'a jamais documenté, mais cela fonctionne sur les Z80 de l'époque et les programmeurs ne s'en sont pas privés.

  5. Sur les Z80 CMOS, l'instruction non documentée OUT (C),0 envoie 255 au lieu de 0.

  6. Le bit 7 du registre R ne change jamais tout seul : seule l'instruction LD R,A le modifie.

  7. Comme sur le Spectrum l'octet présent sur le bus pendant une interruption vaut presque toujours 0xFF sans que ce soit garanti, les jeux qui utilisent le mode 2 remplissent une table de 257 octets tous identiques, pour toujours retomber au même endroit.

  8. Il est resté 48 ans en production, de 1976 à 2024.

Où on la trouve