Il primo amore non si scorda mai, come si suol dire, e come dimenticare il primo microprocessore su cui ho avuto la possibilità di smanettare? Era il MOS 7501 del Commodore Plus/4, avuto soltanto per un mese causa passaggio al nuovissimo Commodore 128 che montava… un 8502!
CPU sconosciute ai più, ma che sono semplicemente delle versioni potenziate (sostanzialmente come clock) del ben più famoso 6510 in dotazione al Commodore 64…
Eppure tutti hanno un denominatore comune: il MOS 6502 da cui sono derivati (e con esso pienamente compatibili), che è uno dei microprocessori più famosi (e ancor oggi molto diffusi) a 8 bit che ha segnato la storia dell’informatica.
Sì perché, oltre che nei famosi home computer Commodore, lo ritroviamo negli Apple I e II, nel Nintendo NES, nel PC Engine di Nec, nell’Atari Lynx, in centinaia di giochi arcade e in un numero indefinito di dispositivi in cui è stato usato come microcontroller (nel sito dedicato uno dei produttori, The Western Design Center, parla orgogliosamente di stime fra i 5 e i 10 miliardi di pezzi venduti, anche se questo dato include anche le soluzioni a 16 bit) per sistemi di controllo industriali, sistemi di sicurezza, giocattoli, pacemaker, ecc. (l’ambito applicativo è vastissimo e non legato prettamente all’informatica).
Quali le ragioni di così tanto successo? Personalmente ne trovo tre significative:
- il basso costo (quando fu immesso nel mercato venne proposto a un prezzo di quasi un ordine di grandezza inferiore rispetto alla concorrenza, tanto che… inizialmente non vendette perché si pensava fosse un prodotto scadente o una burla!);
- il basso costo di sviluppo e produzione delle schede madri (la prima versione, il 6501, era pienamente compatibile col Motorola 6800 e poteva quindi essere tranquillamente utilizzato al suo posto, ma Motorola fece sentire il peso dei suoi avvocati e MOS decise prontamente di ritirare il 6501, cambiare piedinatura al chip e commercializzare il 6502);
- la notevole semplicità dell’architettura.
Quest’ultima è di particolare importanza perché un hardware, per quanto buono, senza software non va da nessuna parte, e sviluppare codice per il 6502 non era affatto complicato rispetto ai concorrenti. Anzi!
La CPU era costituita da 3 soli registri, di cui un solo accumulatore (chiamato A) e due registri “di appoggio” (chiamati X e Y) che erano impiegati anche nell’indirizzamento della memoria. C’era poi un registro di stato per i flag (chiamato P; mai direttamente indirizzabile), e l’immancabile Program Counter che determinava il flusso delle istruzioni.
Anche le istruzioni era poche: una cinquantina in tutto. L’accumulatore era il registro privilegiato, perché buona parte delle istruzioni usavano soltanto lui. Ad esempio non era possibile memorizzare il registro X o Y nello stack (che era ampio soltanto 256 byte), tramite istruzioni di tipo push o pop (cioé che salvano o recuperano dati dallo stack): si doveva necessariamente passare dall’accumulatore.
La cosa interessante è che questa semplicità dell’ISA era bilanciata da modalità d’indirizzamento molto potenti, che permettevano di referenziare la memoria tramite l’uso dei suddetti registri X e Y; c’era anche una veloce e comoda modalità per indirizzare direttamente le prime 256 locazioni di memoria, molto utile (nonché usatissima) perché venivano impiegate come una sorta di “registri temporanei” (data la penuria di quelli veri: 3 erano veramente pochi).
A completare l’opera c’era l’ISA abbastanza ortogonale e, infatti, buona parte delle istruzioni potevano utilizzare tutte (o quasi) le modalità d’indirizzamento, permettendo quindi di scrivere codice compatto e veloce.
A forza di parlare di semplicità dell’ISA sembra che si stia parlando di uno dei tanti e rinomati microprocessori RISC, che hanno fatto di questo aggettivo un’autentica filosofia nonché cavallo di battaglia.
Niente di più sbagliato: il 6502 è, infatti, un’esponente della famiglia CISC, che per decenni ha conteso la palma di miglior tipologia architetturale coi RISC. Una sfida che, almeno in ambito desktop, sembra ormai aver avuto un vincitore (ma di questo ne parleremo prossimamente).
mmh …
sinceramente ignoravo che ne esistesse una versione a 16bit.
.. ma un bell’articolo come questo fa sorgere, in un contadino dell’informatica quale sono, una bella domandona mistica :
in cosa consistono i limiti tecnici di un specifica architettura?
mi spiego meglio, supponiamo di avere una bella cpu 6502 a
64bit
multicore
con frequenze di clock altissime
processi produttivi infinitesimali
cache sempre più veloci e capienti
TDP da scaldabagno
vari controller a scelta integrati (grafica, memoria, rete, ecc)
interconnessioni che a garantiscano bandwidth da CERN
cosa avrei in mano di diverso da un processore di oggi?
Non voglio fare polemica ma infondo windows non è il migliore, ma se lo so vendere bene non morirà mai! Forse lo stesso è valso per Intel.
…bha!
Non è così semplice. Non possiamo pensare di aumentare tutti i parametri di una CPU e pensare che “regga” o che abbia il miglior comportamento possibile.
Le scelte sono sempre frutto di compromessi.
Per quanto riguarda la versione a 16 bit ne parlerò in un prossimo articolo e vedrai anche in quale “macchina” molto famosa è stata utilizzata. ;)
P.S. Windows non sarà certamente il miglior s.o. in assoluto, ma magari è il miglior strumento per determinati ambiti applicativi.
Ogni strumento ha pregi e difetti, e non esiste quello miglior per qualunque ambito applicativo. :)
una faticaccia tutti questi hyperlink :D
right tool for the right job ;) e sul NES faceva veramente la sua “porca” figura
Credo di non aver capito bene.. 3 registri e 50 istruzioni non sono un reduced instruction set? In che senso rietra nella categoria dei CISC?
[…] MOS 6502 con clock a […]
@Jacopo. Purtroppo per affrontare un discorso così tecnico sono dovuto ricorrere a diversi link per spiegare almeno sommariamente certi concetti a chi ne è a digiuno o ne mastica poco. Per il futuro conto di evitarli, tranne per qualche novità.
@Davide. Nel senso che non bisogna fermarsi agli acronimi. Purtroppo i termini CISC e RISC sono figli del loro tempo, ovvero sono stati introdotti per classificare certe tipologie (o grandi famiglie che dir si voglia) di architetture che all’epoca prevedevano, appunto, un set d’istruzioni “complesse” (cioé che facevano tanto lavoro) oppure uno ridotto (poche istruzioni, e pure molto semplici).
In realtà questi concetti sono variati molto nel tempo e ormai rimangono in piedi giusto un paio di differenze per classificare un microprocessore come RISC o CISC.
Di questo ne parlerò più approfonditamente in un prossimo articolo, perché la questione non è molto ben conosciuta e merita di essere trattata a parte (prima però ho intenzione di introdurre un altro po’ di architetture sia CISC che RISC, in modo da avere alcuni esempi noti quando affronterò il discorso).
x Cesare
non era assolutamente una critica anzi un apprezzamento e il riconoscimento dello sforzo (perché sì inserire in modo appropriato 20-30 hyperlink è anche uno sforzo concettuale) :)
Sul discorso che fai delle categorizzazioni sono perfettamente d’accordo. Il problema è che nonostante siano figlie del loro tempo ancora oggi vengono insegnate nei corsi di Architettura degli Elaboratori ma con scarso spirito critico.
E in Rete le cose non migliorano. Non molto tempo fa uscì un articolo su ArsTechnica estremamente dettagliato e tecnico e qualcosa su Lithium ai tempi forse, ma generalmente il materiale è poco.
Questo perché chi scrive deve possedere competenze decisamente sopra la media, aver vissuto in prima persona quel periodo, averci sviluppato e riuscire con ottima capacità di sintesi a spiegare i suoi pensieri.
Per cui approvo senz’altro la tua iniziativa di proseguire su questo filone che per inciso contribuisce significativamente a tutti gli articoli (sia a chi li scrive sia a chi li legge) che inevitabilmente si troveranno a parlare delle CPU o architetture menzionate (e soprattutto nel campo retro questo è all’ordine del giorno…o della settimana se sono rubriche :D)
@ Cesare
sono perfettamente d’accordo con Jacopo, stai affrontando in modo chiaro e sintetico un argomento del quale si parla solo superficialmente nel mondo informatico consumer, credo che il progressivo disinteresse su tali argomenti sia imputabile, in parte, anche hai nuovi strumenti di sviluppo sempre più svincolati dall’hardware sottostante … ma anche di questo mi piacerebbe tu ne parlassi in un prossimo articolo :)
Quindi … complimenti e buon lavoro :D
Grazie. :) C’è parecchia carne al fuoco e ciò che chiedi è sicuramente in programma. Prima però vorrei parlare un po’ di architetture hardware e poi passerò a concetti di più alto livello.
[…] il MOS 6502 ha fatto la fortuna di Apple, Commodore, Nintendo e di tantissime altre aziende che hanno prodotto […]
Ho conosciuto e programmato il 6502 nel lontano 1983 con il mio Commodore 64 e anche questo processore alla stessa stregua dello Z80 era e rimarra’ un mito.
ciao a tutti
Graziano
[…] diffusi e popolari, che sono rimasti nell’immaginario collettivo di moltissima gente: il MOS 6502 e lo Zilog […]
[…] è un computer spartano ma estremamente potente e funzionale per l’epoca, basato sul celebre 6502 di MOS – solo perché l’8080 costava più di dieci volte tanto, immaginiamo cosa sarebbe successo se […]
[…] hardware fondamentali nelle prime pagine di storia dell’home e personal computer: MOS 6502 e Intel […]
[…] con lo Z80, o software, come Intel con l’8086) o, quanto meno, una forte ispirazione (MOS col 6502), per cui gli ingegneri diedero fondo alla loro creatività nel progettare il chip, introducendo […]
[…] di chi, avendo iniziato la propria carriera di programmatore smanettando su un glorioso MOS 6510, è rimasto letteralmente folgorato (in tutti i sensi, dopo quello che avete appena letto) dal […]
[…] a compartimenti stagni, uno composto dall’hardware C64 (ivi compresa una CPU derivata dal 6502 e compatibile col 6510 del C64) e uno basato sullo Z80 di Zilog, per la compatibilità col parco […]
[…] PC a 16 bit farebbe del 6502 una CPU a 16 […]