Se il MOS 6502 ha fatto la fortuna di Apple, Commodore, Nintendo e di tantissime altre aziende che hanno prodotto dispositivi elettronici che lo integravano, lo Zilog Z80 (che per anni gli si è contrapposto) non ha certo avuto una sorte meno felice. Anzi, ci troviamo di fronte a un altro microprocessore che è entrato di diritto nella storia dell’informatica e nel cuore di molti appassionati.
Lo Z80 nasce dalla geniale mente di Federico Faggin (padre del primo microprocessore della storia, il 4004, e di altri suoi successori) che, nonostante il grande prestigio e la fama acquisita nella società per la quale lavorava, ebbe il coraggio di abbandonare la Intel per fondare la Zilog e dedicarsi a questo ambizioso quanto fortunato progetto.
Troviamo, infatti, questa CPU a 8 bit impiegata in una miriade di apparecchiature elettroniche, dei più disparati generi: home computer (Sinclair ZX-Spectrum ed MSX in primis), console (SEGA Master System), portatili (Nintendo GameBoy e GameBoy Color, SEGA Game Gear), giochi arcade, ma anche modem, calcolatrici, strumenti musicali, carte di credito, microcontrollori, ecc.
Un grande successo (si parla di circa 2 miliardi di pezzi venduti) che trovo legato principalmente a quattro punti:
- basso costo (rispetto al concorrente principale: l’Intel 8080);
- compatibilità hardware (a livello di ISA) con l’8080;
- miglioramento dell’architettura (sempre rispetto all’8080);
- circuiteria di refresh della memoria DRAM integrata (che ha permesso di ridurre il numero di chip necessari nel sistema).
Il vantaggio di avere la circuiteria di refresh della memoria direttamente integrata era notevole: non soltanto ciò rendeva necessari meno chip, ma anche lo schema delle schede madri risultava semplificato e, dunque, più economico.
A titolo d’esempio, il 6502 (che non aveva nulla del genere) costrinse Commodore a integrare questa funzionalità nel chip grafico dei suoi home computer (il famoso VIC del Vic 20 e VIC-II C64, tanto per citare i più famosi) per ottenere un risultato simile (anche in termini di costi).
Un altro aspetto di fondamentale importanza che, a mio avviso, spalancò le porte del mercato allo Z80 fu la piena compatibilità con l’8080. All’epoca un sistema operativo economico, semplice e molto diffuso era il CP/M della Digital, che “casualmente” girava proprio sull’8080 di Intel (e sul suo successore, l’8085). Dunque già alla sua commercializzazione lo Z80 si ritrovò immediatamente con una ricca libreria di software.
Questo microprocessore però non era soltanto un clone dell’8080 e, infatti, integrava diversi miglioramenti rispetto a quest’ultimo. Agli 8 registri ne affiancava altri 8 che era possibile scambiare velocemente tramite apposite istruzioni (in questo modo si evitava di dover utilizzare la memoria, il cui accesso era decisamente più lento, per conservare e poi ripristinare il valore di un registro).
Ma la modifica più consistente e utile era rappresentata dall’introduzione di due nuovi registri a 16 bit (chiamati IX e IY) che permettevano di indirizzare la memoria indirettamente tramite l’utilizzo di offset a 8 bit (un numero intero compreso fra -128 e +127).
Con l’8080 era presente soltanto il registro HL (anch’esso a 16 bit) allo scopo e non era possibile specificare l’offset, per cui per accedere alle locazioni di memoria vicine si doveva necessariamente ricorrere all’incremento o decremento di questo registro, che era un’operazione abbastanza lenta.
A completare il già ricco quadro contribuivano le nuove istruzioni che erano state aggiunte e che si occupavano di spostamento di blocchi di memoria e di I/O, e di ricerca di dati (che ritroveremo dopo nell’8086 e nell’80186 di Intel), oltre a quelle per la manipolazione di singoli bit (che Intel introdurrà soltanto con l’80386). Infine la gestione degli interrupt era notevolmente più avanzata e flessibile (grazie alla loro “vettorizzazione”).
Lo Z80 si presenta, quindi, come una CPU particolarmente ricca ma complessa, che porta con sé tanta di quella roba che appare fin troppo evidente la sua appartenenza alla famiglia dei processori CISC che ho mensionato nel precedente articolo sul 6502.
Complessità che lascerebbe pensare giustamente a una maggior difficoltà di programmazione e, per contro, una situazione diametralmente opposta per i RISC (sarebbe più facile lavorarci).
Vedremo in futuro che le due cose non sono necessariamente legate e che tutto dipende in ultima istanza dall’architettura nel suo complesso.