Zilog Z80
Son succès ne tient pas seulement à ses performances. Le Z80 rassemble dans un seul circuit plusieurs fonctions qui simplifient la réalisation d’un micro-ordinateur, notamment la gestion des interruptions et le rafraîchissement des mémoires DRAM. Il offre également au programmeur un ensemble de registres beaucoup plus riche que celui de l’Intel 8080.
De l’Intel 8080 à la création de Zilog
L’histoire du Z80 commence chez Intel. Federico Faggin participe au développement des premiers microprocesseurs de la société et dirige notamment la conception de l’Intel 4004. Il joue ensuite un rôle majeur dans le développement de l’Intel 8080.
À la fin de 1974, Federico Faggin quitte Intel et fonde Zilog avec Ralph Ungermann. Leur objectif est ambitieux : produire un microprocesseur 8 bits capable d’exécuter les logiciels destinés à l’Intel 8080, tout en offrant une architecture plus complète.
Masatoshi Shima, qui avait déjà travaillé avec Faggin sur les Intel 4004 et 8080, rejoint à son tour Zilog. Il participe directement à la conception logique du nouveau processeur.
Le résultat est le Z80, commercialisé en 1976. Plutôt que de repartir de zéro, Zilog conserve l’essentiel du jeu d’instructions du 8080 et lui ajoute de nombreuses possibilités. Cette compatibilité constitue un avantage décisif : les logiciels existants peuvent être réutilisés tandis que les nouveaux programmes peuvent exploiter les fonctions supplémentaires du Z80.
Un processeur 8 bits avec 16 bits d’adressage
Le Z80 est un microprocesseur 8 bits. Son unité arithmétique et logique ainsi que son principal accumulateur travaillent essentiellement sur des données de 8 bits.
Il possède cependant un bus d’adresses de 16 bits. Avec 16 lignes d’adresse, le processeur peut générer 216, soit 65 536 adresses différentes. Son espace mémoire directement accessible est donc limité à 64 Ko.
Cette distinction entre largeur des données et largeur des adresses est fondamentale. Un processeur peut être qualifié de « 8 bits » tout en manipulant des adresses de 16 bits. Le Z80 peut donc travailler sur des octets de 8 bits situés dans un espace mémoire de 64 Ko.
Cette limite deviendra particulièrement visible sur les micro-ordinateurs possédant plus de 64 Ko de mémoire. Le Amstrad CPC 6128, par exemple, possède physiquement 128 Ko de RAM, mais le Z80 ne peut toujours en voir que 64 Ko simultanément. Des circuits externes doivent donc utiliser un système de commutation de banques pour rendre différentes parties de la mémoire accessibles au processeur.
Les registres : le cœur de la programmation du Z80
Une grande partie de la richesse du Z80 vient de son nombre de registres. Ces petites zones de stockage situées directement dans le processeur sont beaucoup plus rapides d’accès que la mémoire principale.
L’accumulateur A
Le registre A, ou accumulateur, est utilisé dans de nombreuses opérations arithmétiques et logiques. Une addition peut par exemple charger une valeur dans A, lui ajouter une seconde valeur puis enregistrer le résultat en mémoire.
LD A,5
ADD A,3
LD (8000h),A
Après l’instruction ADD A,3, l’accumulateur contient la valeur 8.
Le registre F et les indicateurs
Le registre F contient les indicateurs, ou flags, qui décrivent le résultat de certaines opérations. Parmi eux figurent notamment le bit de retenue C, le zéro Z, le signe S et l’indicateur de dépassement ou de parité P/V.
Ces bits permettent au programme de prendre des décisions. Après une comparaison, une instruction conditionnelle peut par exemple effectuer un saut uniquement si le résultat est nul.
Les paires BC, DE et HL
Les registres B, C, D, E, H et L sont des registres de 8 bits. Ils peuvent cependant être associés deux par deux pour former trois registres de 16 bits : BC, DE et HL.
Cette organisation permet au Z80 de manipuler facilement des adresses mémoire. HL est notamment très souvent utilisé comme pointeur vers une donnée.
LD HL,8000h
LD A,(HL)
La première instruction place l’adresse 8000h dans HL. La seconde lit l’octet situé à cette adresse et le place dans l’accumulateur A.
Un deuxième jeu de registres
Le Z80 possède une caractéristique particulièrement originale : plusieurs de ses registres principaux disposent d’un jeu alternatif.
Aux registres AF, BC, DE et HL correspondent ainsi AF’, BC’, DE’ et HL’. Des instructions permettent d’échanger très rapidement le jeu actif avec le jeu alternatif.
L’instruction EX AF,AF' échange les registres AF et AF’, tandis que EXX échange simultanément BC, DE et HL avec BC’, DE’ et HL’.
Cette organisation est particulièrement utile lorsqu’une routine d’interruption doit temporairement utiliser des registres sans détruire immédiatement les valeurs du programme principal. Au lieu de sauvegarder plusieurs registres en mémoire, le processeur peut basculer rapidement vers l’autre jeu.
IX et IY : deux registres d’index
Le Z80 ajoute également deux registres de 16 bits absents de l’architecture classique du 8080 : IX et IY.
Ils servent principalement à l’adressage indexé. Une instruction peut accéder à une donnée située à une certaine distance d’une adresse de base contenue dans IX ou IY.
LD IX,8000h
LD A,(IX+5)
Ici, le processeur lit l’octet situé cinq positions après l’adresse contenue dans IX, donc à l’adresse 8005h.
Ce mécanisme facilite notamment la manipulation de tableaux, de structures de données et de zones mémoire organisées autour d’une adresse de référence.
PC et SP : exécuter le programme et gérer la pile
Deux autres registres de 16 bits jouent un rôle fondamental : PC et SP.
Le Program Counter, ou PC, contient l’adresse de la prochaine instruction à exécuter. Au fur et à mesure que le processeur lit les instructions en mémoire, cette adresse progresse automatiquement. Les instructions de saut, d’appel de sous-programme ou de retour modifient directement sa valeur.
Le Stack Pointer, ou SP, indique quant à lui le sommet de la pile. Celle-ci est stockée en mémoire vive et sert notamment à sauvegarder temporairement des valeurs, les adresses de retour des sous-programmes et certains registres.
PUSH BC
...
POP BC
PUSH BC place le contenu de BC sur la pile. POP BC le récupère ensuite. Ce mécanisme permet de préserver un registre pendant l’exécution d’une routine.
Deux registres particuliers : I et R
Le Z80 possède encore deux registres spécialisés : I et R.
Le registre I intervient notamment dans le mode d’interruption vectorisé IM 2. Il fournit la partie haute de l’adresse utilisée pour trouver la routine correspondant à une interruption.
Le registre R est lié au mécanisme de rafraîchissement des mémoires dynamiques. Les DRAM doivent en effet être régulièrement rafraîchies afin de conserver leur contenu. Le Z80 fournit directement des signaux facilitant cette opération et utilise le registre R pendant les cycles de rafraîchissement.
Cette fonction représente un avantage matériel important dans les années 1970 : elle permet de réduire le nombre de circuits externes nécessaires à la construction d’un système utilisant de la mémoire dynamique.
Trois modes d’interruption
Le Z80 propose plusieurs mécanismes d’interruption. Une interruption permet à un périphérique ou à un événement extérieur de demander temporairement l’attention du processeur.
Le processeur dispose d’une entrée d’interruption masquable INT et d’une interruption non masquable NMI. Pour INT, trois modes de fonctionnement sont disponibles : IM 0, IM 1 et IM 2.
Le mode IM 1 utilise une adresse de routine prédéfinie. Le mode IM 2 est plus élaboré : il permet d’utiliser une table de vecteurs afin de diriger le processeur vers différentes routines en fonction du périphérique à traiter.
Cette gestion des interruptions contribue à rendre le Z80 particulièrement adapté aux systèmes comprenant de nombreux périphériques.
Un jeu d’instructions plus riche que celui du 8080
Le Z80 conserve la possibilité d’exécuter le code machine écrit pour l’Intel 8080, mais il ajoute de nombreuses instructions.
Il dispose notamment d’opérations de manipulation individuelle des bits, de rotations et décalages supplémentaires, d’instructions utilisant IX et IY et d’opérations capables de traiter automatiquement des blocs de mémoire.
L’instruction LDIR est particulièrement représentative. Elle permet de recopier une série d’octets d’une zone mémoire vers une autre en répétant automatiquement l’opération.
LD HL,8000h
LD DE,9000h
LD BC,0100h
LDIR
Dans cet exemple, HL indique la source, DE la destination et BC le nombre d’octets à copier. Le processeur transfère ici 0100h, soit 256 octets.
Des instructions similaires permettent également de rechercher une valeur en mémoire ou d’effectuer des opérations répétées sur les entrées-sorties.
Un espace d’entrées-sorties distinct
Le Z80 ne communique pas nécessairement avec les périphériques en utilisant l’espace mémoire principal. Il possède des instructions spécifiques d’entrée-sortie, notamment IN et OUT.
Cette organisation permet de conserver un espace logique distinct pour les périphériques tout en préservant les 64 Ko de mémoire adressable pour la RAM et les ROM.
IN A,(F5h)
OUT (7Fh),A
Le sens exact de ces ports dépend de l’ordinateur dans lequel le Z80 est installé. Sur un CPC, par exemple, différents circuits utilisent certaines combinaisons d’adresses d’entrée-sortie pour communiquer avec le processeur.
Du Z80 à 2,5 MHz aux versions plus rapides
Le premier Z80 commercialisé en 1976 fonctionne à une fréquence maximale d’environ 2,5 MHz. Zilog développe rapidement des versions capables de fonctionner plus vite.
- Z80 : environ 2,5 MHz pour la version originale.
- Z80A : jusqu’à 4 MHz.
- Z80B : jusqu’à 6 MHz.
- Z80H : jusqu’à 8 MHz.
Les versions CMOS ultérieures de la famille Z84C00 atteindront des fréquences encore supérieures, jusqu’à plusieurs dizaines de mégahertz selon les références.
La fréquence ne suffit cependant pas à comparer deux ordinateurs. Le nombre de cycles nécessaire à chaque instruction, la vitesse de la mémoire, les circuits vidéo et les éventuels temps d’attente imposés au processeur influencent directement les performances réelles.
Le Z80 dans les micro-ordinateurs
Le succès du Z80 est étroitement lié à l’explosion de la micro-informatique à la fin des années 1970 et au début des années 1980.
Le TRS-80 Model I de Radio Shack, commercialisé en 1977, contribue à faire connaître le processeur aux États-Unis. Au Royaume-Uni, Sinclair l’utilise dans les ZX80, ZX81 puis dans le célèbre ZX Spectrum.
Au Japon et dans de nombreux autres pays, le Z80 devient également l’un des processeurs associés au standard MSX.
En France et en Europe, Amstrad l’utilise dans toute sa première gamme CPC : le CPC 464, le CPC 664 puis le CPC 6128.
Amstrad l’emploie également dans la famille PCW, davantage orientée vers le traitement de texte et l’utilisation de logiciels professionnels.
Le Z80 et CP/M
Le Z80 est étroitement associé à CP/M, l’un des principaux systèmes d’exploitation pour micro-ordinateurs professionnels avant la généralisation du PC IBM.
CP/M avait initialement été développé pour les processeurs Intel 8080. La compatibilité du Z80 permet donc à de nombreuses machines équipées du processeur de Zilog d’exécuter cet important catalogue de logiciels.
Des ordinateurs comme les Kaypro, Osborne et Amstrad PCW utilisent cette combinaison. Le Z80 devient ainsi une plateforme commune sur laquelle peuvent fonctionner traitements de texte, langages de programmation, bases de données et nombreux utilitaires professionnels.
Cette compatibilité logicielle constitue une raison majeure de sa diffusion. Acheter un ordinateur Z80 ne signifie pas nécessairement repartir de zéro : une partie importante de l’écosystème développé autour du 8080 et de CP/M reste disponible.
Une durée de vie industrielle exceptionnelle
La carrière du Z80 dépasse largement celle des micro-ordinateurs qui l’ont rendu célèbre. Après les années 1980, son architecture continue d’être utilisée dans des équipements industriels, des systèmes embarqués, des appareils électroniques et de nombreux produits spécialisés.
Zilog poursuit également l’évolution de la famille avec des processeurs comme le Z180 puis l’eZ80, qui reprennent une partie de l’héritage logiciel et architectural du Z80 tout en ajoutant de nouvelles capacités.
La production des derniers processeurs autonomes classiques de la famille Z84C00 arrive finalement à son terme en 2024. Zilog annonce alors la fin de cette gamme après près de 48 années de commercialisation.
Cet arrêt ne signifie pas la disparition du Z80. Des millions de machines historiques utilisent encore ce processeur, des implémentations compatibles existent sous différentes formes et son architecture continue d’être étudiée, émulée et reproduite.
Pourquoi le Z80 est-il si important ?
Le Z80 ne doit pas son importance à une seule innovation spectaculaire. Son succès vient plutôt d’une combinaison particulièrement efficace de choix techniques et commerciaux.
Il reprend d’abord un environnement logiciel déjà existant grâce à sa compatibilité avec l’Intel 8080. Il offre ensuite beaucoup plus de possibilités au programmeur : davantage de registres, deux registres d’index, des jeux de registres alternatifs, de nombreuses instructions supplémentaires et plusieurs modes d’interruption.
Il simplifie aussi la conception matérielle grâce à des fonctions comme le rafraîchissement des mémoires dynamiques. Pour les fabricants de micro-ordinateurs, cette intégration permet de concevoir des systèmes puissants avec relativement peu de composants supplémentaires.
Enfin, son immense diffusion crée un cercle vertueux. Plus les constructeurs choisissent le Z80, plus les programmeurs apprennent son langage machine et plus les outils et logiciels deviennent nombreux.
Du TRS-80 au ZX Spectrum, des systèmes CP/M aux Amstrad CPC, le Z80 devient ainsi l’un des processeurs qui définissent la micro-informatique 8 bits.
Caractéristiques principales
| Élément | Caractéristique |
|---|---|
| Constructeur | Zilog |
| Commercialisation | 1976 |
| Architecture | 8 bits |
| Bus de données | 8 bits |
| Bus d’adresses | 16 bits |
| Espace mémoire | 64 Ko |
| Fréquence initiale | Environ 2,5 MHz |
| Registres principaux | A, F, B, C, D, E, H, L |
| Registres 16 bits | BC, DE, HL, IX, IY, SP et PC |
| Registres alternatifs | AF’, BC’, DE’, HL’ |
| Registres spécialisés | I et R |
| Interruptions | NMI et INT avec modes IM 0, IM 1 et IM 2 |
| Mémoire dynamique | Support matériel du rafraîchissement DRAM |
| Compatibilité | Code machine Intel 8080, avec extensions propres au Z80 |
| Fin de la gamme Z84C00 classique | 2024 |
Sources
- Zilog, Z80 CPU User Manual, documentation technique officielle.
- Zilog, Z8400/Z84C00 Z80 CPU Product Specification.
- Computer History Museum, archives consacrées à Federico Faggin, Masatoshi Shima, Zilog et au Z80.
- Zilog / Littelfuse, avis de fin de production de la famille Z84C00, 2024.
Photo de couverture : Gennadiy Shvets — Wikimedia Commons, licence CC BY 2.5.
