# Microprocessore

Il microprocessore (in sigla µP o uP, con particolare riferimento al chip hardware) è una tipologia particolare di processore; più precisamente è un circuito elettronico dedicato all'elaborazione di istruzioni, costituito da uno o più circuiti integrati e per questo di dimensioni molto ridotte (da qui il termine "micro" anteposto a "processore").
La tecnologia a microprocessore è attualmente quella più utilizzata per la realizzazione della CPU e della GPU (montate direttamente su una scheda madre) ed è impiegata dalla quasi totalità dei moderni computer, con la caratteristica di utilizzare, per tutte le sue elaborazioni, un insieme di istruzioni fondamentali di base (instruction set).

## Storia
### I progetti ed i primi esemplari degli anni 1960

La costruzione dei microprocessori è stata resa possibile dall'avvento della tecnologia LSI (Large Scale Integration), a sua volta basata sulla Silicon Gate Technology sviluppata dall'italiano Federico Faggin alla Fairchild nel 1966: integrare una CPU (unità di elaborazione centrale) completa in un solo chip permise di ridurre significativamente i costi dei calcolatori. Dagli anni ottanta in poi i microprocessori sono diventati praticamente l'unica implementazione di CPU.
Dalla loro introduzione in poi, l'evoluzione del microprocessore ha seguito con buona approssimazione la legge di Moore, una legge esponenziale che prevede il raddoppio del numero di transistor integrabili sullo stesso chip (e quindi, nella visione di Moore, delle prestazioni) ogni 18 mesi. L'incremento prestazionale verificatosi dalla fine degli anni ottanta però è dovuto soprattutto al miglioramento dell'architettura dei calcolatori, attraverso l'adozione di tecnologie RISC, come l'uso di pipeline e di gerarchie di memorie cache.
Come altre innovazioni tecnologiche, il microprocessore monolitico apparve appena la tecnologia lo consentì dato che l'idea di integrare i componenti di una CPU in un singolo circuito integrato era una soluzione logica e già alla fine degli anni sessanta erano state articolate architetture di microprocessore. Quasi contemporaneamente infatti iniziarono lo sviluppo l'Intel 4004, il Texas Instruments TMS1000, e il Garrett AiResearch Central Air Data Computer:
* Nel 1968 la Garrett AiResearch iniziò a sviluppare un sistema elettronico per competere con i sistemi elettromeccanici utilizzati nei caccia militari, con l'obiettivo di equipaggiare il nuovo F-14 Tomcat che allora era in sviluppo. Il progetto venne completato nel 1970 e utilizzava integrati MOS per il core della CPU e per la sua semplicità e la sua innovatività prevalse sui concorrenti di tipo elettromeccanico venendo utilizzato fin dai primi Tomcat. La marina statunitense, per il livello di innovazione introdotto dal progetto, impedì la pubblicazione di articoli sul sistema fino al 1997, per cui questo microprocessore rimase semisconosciuto. Si trattava comunque di una implementazione della CPU in più di un chip e quindi non era un vero microprocessore (che è per definizione una CPU in un singolo chip);
* Texas Instruments (TI) sviluppò inizialmente il sistema TMS1000 a 4 bit per applicazioni embedded pre-programmate e quindi non utilizzabile per altre applicazioni e il 17 settembre 1971 annunciò il modello TMS 1802NC, programmabile, che poteva essere utilizzato per implementare un calcolatore;
* L'Intel 4004, processore a 4 bit, già in produzione per la ditta Busicom nel giugno del 1971, venne presentato per l'uso generale il 15 novembre 1971 e fu sviluppato da Federico Faggin (che ne ideò il design e lavorò al progetto dal 1970 fino al suo debutto sul mercato nel 1971) e Marcian Hoff (che ne formulò l'architettura nel 1969). Questo fu il primo microprocessore commerciale di Intel che dette il via al mercato, aprendo la possibilità di nuove applicazioni non possibili prima.
TI presentò la prima richiesta di brevetto per il microprocessore e Gary Boone ottenne l'assegnazione del brevetto (EN) US3,757,306, United States Patent and Trademark Office, Stati Uniti d'America. per l'architettura di un microprocessore a singolo chip il 4 settembre 1973. Non è mai stato reso noto se realmente l'azienda avesse avuto un microprocessore funzionante nei suoi laboratori ma sia nel 1971 che nel 1976 Intel e TI stipularono un accordo in cui Intel pagava a TI i diritti per l'utilizzo del suo brevetto. Un riassunto della vicenda è contenuto nella documentazione che Intel presentò in tribunale quando fu chiamata in giudizio da Cyrix per violazione dei brevetti e TI intervenne come proprietario del brevetto originario.
Intel e TI hanno affermato di avere brevetti che potrebbero coprire il brevetto del "microprocessore": c'è il caso di Gilbert Hyatt che riuscì ad ottenere nel 1990 il brevetto che fu poi invalidato nel 1996 per il fatto che l'architettura di Hyatt non sarebbe stata realizzabile con la tecnologia disponibile nel 1970. Sempre sull'argomento, sulla rivista McMicrocomputer n. 101 del 11/1990, fu pubblicata un'intervista a Gylbert Hyatt e a Federico Faggin, in cui si approfondirono risvolti poco chiari sulla condotta tenuta dalla Intel. TI e Intel pre-datano il brevetto descrivendo un microcontrollore che potrebbe coprire il brevetto del microprocessore essendo il progetto indicato concettualmente simile: Gary Boone e Michael J. Cochran presso la TI ne depositarono il brevetto, (EN) US4,074,351, United States Patent and Trademark Office, Stati Uniti d'America., che pur essendo più simile a un microcontroller potrebbe coprire anche quello del microprocessore.
Secondo A History of Modern Computing, Intel venne contattata dalla Computer Terminals Corporation (in seguito nota come Datapoint) di San Antonio (Texas) per l'acquisto dell'integrato che stava sviluppando. In seguito Datapoint decise di non utilizzare il componenti e Intel lo immise sul mercato come 8008 nell'aprile del 1972, riscuotendo un certo successo, creando il primo vero mercato per i microprocessori; il processore fu la base del famoso computer Mark-8 venduto in scatola di montaggio da Radio-Electronics nel 1973.

### Gli anni 1970 ed i processori a 8 e 16 bit

Il 4004 venne seguito nel 1972 dall'8008, il primo microprocessore a 8 bit del mondo, evoluto successivamente nel più famoso Intel 8080 (1974).
Dal progetto 8080 venne derivato lo Z80 prodotto nel 1976 dalla ZiLOG, società fondata da Federico Faggin con Ralph Ungerman nel 1975. Compatibile a livello binario con i programmi scritti per l'8080, lo Z80 includeva moltissimi miglioramenti che lo fecero rapidamente preferire all'8080 dagli utenti. Intel reagì producendo nel 1977 una propria versione migliorata dell'8080, l'8085, anch'essa compatibile a livello binario con i programmi scritti per l'8080, ma molto inferiore allo Z80.
Motorola presentò nell'agosto del 1974 il 6800, primo processore ad adottare un registro indice. Molto versatile, ebbe un discreto successo, oscurato in parte l'anno successivo dal lancio del MOS Technology 6502: era ispirato all'architettura del 6800, dotato di alcune soluzioni tecniche migliorative e soprattutto caratterizzato da un costo drasticamente inferiore (25 USD contro i 175 USD del 6800), cosa che lo rese estremamente popolare. Il 6502 fu scelto, ad esempio, da Steve Wozniak per l'Apple I nel 1976 ed il successivo Apple II nel 1977.
Motorola reagì con il 6809 (1979), uno dei più potenti e ortogonali processori a 8 bit mai sviluppati: non usava microcodice, e l'unità di controllo era interamente in logica cablata. I successori del 6809 risultarono essere troppo complessi per poter mantenere questo approccio e vennero equipaggiati con una tradizionale unità logica a microcodice. Il progetto 6809 è alla base di una serie molto diffusa di microcontrollori tuttora utilizzata in sistemi embedded.
Western Design Center, Inc. (WDC) presentò nel 1982 il WDC 65C02 con tecnologia CMOS e dette in licenza il progetto a molte altre ditte che svilupparono i processori alla base dei computer Apple IIc e IIe. Il processore fu utilizzato anche in pacemaker, defibrillatori, automobili, prodotti industriali e di consumo. WDC fu pioniera nella vendita delle proprietà intellettuali e fu seguita anni dopo da Architettura ARM e altre ditte che basano i loro guadagni sullo sviluppo e sulla vendita delle proprietà intellettuali.
Un altro processore a 8 bit che ebbe una discreta fama fu il Signetics 2650 caratterizzato da un'architettura innovativa e da un potente set di istruzioni.
Tutti questi processori furono alla base della "rivoluzione" degli home computer, poiché grazie al loro basso prezzo permisero la realizzazione di veri computer ad un costo accessibile.
Il primo microprocessore utilizzato per applicazioni spaziali fu l'RCA 1802 (conosciuto anche come CDP1802 o RCA COSMAC) (presentato nel 1976) che venne utilizzato dalle sonde NASA Voyager, Viking e dalla sonda Galileo (lanciata nel 1989 e arrivata nel 1995 su Giove). L'RCA COSMAC era la prima implementazione della tecnologia CMOS. Il CDP1802 venne utilizzato dato che era a basso consumo e dato che era prodotto con una tecnologia (Silicon on Sapphire) che lo rendeva meno sensibile ai raggi cosmici e alle cariche elettrostatiche. Il 1802 può essere considerato il primo microprocessore anti radiazione della storia.
Il primo microprocessore a 16 bit fu il National Semiconductor IMP-16 basato su più integrati. Venne presentato nel 1973 e una versione a 8 bit chiamata IMP-8 venne presentata nel 1974. Nel 1975 National presentò il primo microprocessore a 16 bit su singolo chip il PACE, che fu seguito dalla versione NMOS chiamata INS8900.
Altri sistemi multichip a 16 bit furono l'LSI-11 prodotto da Digital Equipment Corporation per il minicomputer PDP 11/03 e il MicroFlame 9440 della Fairchild Semiconductor prodotto tra il 1975 e il 1976.
Il primo microprocessore a 16 bit su singolo chip fu il Texas Instruments TMS-9900 un processore compatibile con la linea TI 990 di minicomputer. Il 990 venne utilizzato dai minicomputer TI990/4, dall'home computer TI-99/4A e dai computer TM990 prodotti da terze parti. Il processore era inserito in un integrato ceramico da 64 pin di tipo DIP mentre molti altri microprocessori a 8 bit dell'epoca utilizzavano un più economico package a 40 pin di tipo plastico. Il successivo TMS 9980 venne sviluppato per competere con l'Intel 8080 e venne inserito in un package plastico di 40 pin. Il processore era compatibile con il set di istruzioni TI 990 ma per poter utilizzare solo 40 pin faceva muovere 8 bit di dati per ciclo di clock e gestiva un indirizzamento di 16 kB. Il successore TMS 9995 aveva una nuova architettura. La famiglia venne espansa con il 99105 e il 99110.
La Western Design Center, Inc. presentò nel 1984 il CMOS 65C816, una versione a 16 bit del WDC CMOS 65C02. Il 65C816 fu il cuore dell'Apple IIGS e del Super Nintendo Entertainment System, uno dei progetti a 16 bit più famosi dell'epoca.
Diversamente da TI, Intel non aveva una linea di minicomputer da emulare e decise di usare l'8085 come base per il suo progetto a 16 bit, realizzando così l'Intel 8086, capostipite di quella che poi sarebbe diventata la famiglia X86, i cui discendenti sono molto diffusi nei moderni personal computer. Realizzò anche una versione con il bus esterno a 8 bit, l'8088, che venne impiegato nel primo IBM PC modello 5150.
Successivi sviluppi furono gli Intel 80186, 80286 e nel 1985 l'Intel 80386, la prima versione a 32 bit compatibile X86. La prima Memory management unit (MMU) integrata in un microprocessore venne sviluppata da Childs e altri per Intel e ricevette il brevetto (EN) US4,442,484, United States Patent and Trademark Office, Stati Uniti d'America..

### Gli anni 1980 ed i microprocessori a 32 bit

A partire dagli anni 1980 iniziarono ad esser prodotti i primi microprocessori a 32 bit; il primo di essi fu il BELLMAC-32A prodotto dalla AT&T Bell Labs e nel 1980 mentre la produzione in serie iniziò nel 1982. Nel 1984 dopo lo smembramento della AT&T il microprocessore venne rinominato WE 32000 (WE da Western Electric) e vennero sviluppati due successori, il WE 321000 e il WE 32200. Questi microprocessori vennero utilizzati nei minicomputer AT&T 3B5 e 3B15. Il 3B2 fu il primo superminicomputer da tavolo. I processori vennero utilizzati anche in Companion il primo computer portatile a 32 bit e in Alexander il primo supermicrocomputer grande quanto un libro. Il sistema era dotato anche di cartucce ROM, simili a quelle utilizzate da alcune console attuali. Tutte queste macchine eseguivano l'originale Unix sviluppato dai Bell Labs e includevano il primo gestore grafico chiamato xt-layer.
Il primo processore a 32 bit ad arrivare sul mercato dei personal computer fu però il Motorola 68000 presentato nel 1979. Il 68000 possedeva un'architettura interna a 32 bit ma un bus dati a 16 bit per ridurre il numero di pin del package. Motorola normalmente lo indicava come un processore a 16 bit sebbene l'architettura interna fosse chiaramente a 32 bit. La combinazione di alta velocità, ampio spazio di indirizzamento (16 MB) e costo contenuto ne fecero un processore molto diffuso: venne usato dall'Apple Lisa e dal Macintosh e da molti altri sistemi come l'Atari ST e l'Amiga, e anche Olivetti lo impiegò sulla sua linea di minicomputer denominata L1.
Dato il successo ottenuto, Motorola sviluppò una serie di successori del 68000: il secondo della famiglia fu l'MC 68010 che aggiunse il supporto della memoria virtuale. Nel 1984 presentò il Motorola 68020, la prima versione con bus dati e indirizzi a 32 bit. Il 68020 fu molto popolare nei superminicomputer Unix e diverse compagnie produssero macchine basate su questo microprocessore. Il successivo Motorola 68030 (1987) introdusse la MMU nel microprocessore; la famiglia 68000 in quel periodo era l'unica a contendere la palma di processori per personal computer alla famiglia x86, con un considerevole vantaggio in termini di prestazioni e versatilità. Il successivo Motorola 68040 (1991) inserì il coprocessore matematico nel microprocessore e migliorò notevolmente le sue prestazioni grazie all'adozione della pipeline. Tuttavia Motorola, operando anche in altri mercati oltre a quello dei microprocessori, non fu in grado di tenere il passo con Intel e le varie case produttrici di processori x86 compatibili sul piano della ricerca e dell'accelerazione tecnologica: i successivi processori della serie, il 68050 e 68060, offrivano un incremento prestazionale molto modesto, rimanendo staccati dalle prestazioni offerte dai modelli x86 compatibili di prezzo analogo.
Alcune società avevano utilizzato il 68020 per realizzare soluzioni embedded e per un certo periodo il numero di 68020 utilizzati in sistemi embedded era uguale a quello dei personal computer con processore Pentium Motorola a tal proposito sviluppò la famiglia ColdFire derivata dal 68020.
Tra l'inizio e la metà degli anni ottanta National Semiconductor presentò il processore NS 16032, versione a 32 bit del suo predecessore con cui manteneva una piedinatura compatibile. Il successore con piedinatura in grado di trasmettere 32 bit di dati e indirizzi fu l'NS 32032 che venne utilizzato in una linea di computer industriali prodotti da OEM. In quel periodo la Sequent presentò il primo sistema server SMP basato su NS 32032. Questi sistemi vennero abbandonati alla fine degli anni ottanta.
Altre architetture come lo Zilog Z8000 (a 16 bit) e lo Zilog Z80000 (a 32bit) arrivarono troppo tardi sul mercato e non ebbero seguito.

### Gli anni 1990 ed i processori a 64 bit

Sebbene i microprocessori a 64 bit fossero disponibili per i sistemi di fascia alta (server e workstation) in filosofia RISC a partire dagli ALPHA MICRO della Digital fin dagli anni novanta, solo dopo l'inizio del nuovo millennio si iniziarono a vedere sistemi a 64 bit per il mercato dei personal computer.
AMD presentò il primo sistema a 64 bit nel settembre 2003 con l'Athlon 64. Questo microprocessore implementava l'AMD64, una estensione a 64 bit dell'IA-32 sviluppata da AMD. I processori supportavano le istruzioni a 32 bit per compatibilità ma solo con la modalità a 64 bit riuscivano a mostrare a pieno la loro potenza. Con il passaggio a 64 bit vennero raddoppiati i registri gestiti dal set di istruzioni per migliorare le prestazioni dei sistemi.

## Processo di produzione

La realizzazione dei chip (e quindi anche dei microprocessori) avviene in diverse fasi. Il materiale di partenza è una fetta circolare di semiconduttore (solitamente silicio) detta substrato: questo materiale, già debolmente drogato, viene ulteriormente drogato per impiantazione ionica per creare le zone attive dei vari dispositivi; vengono poi depositati una serie di sottili strati di materiali diversi che vanno a creare il wafer:
* Strati di semiconduttore policristallino;
* Strati isolanti sottili;
* Strati isolanti di ossido molto più spessi dei precedenti;
* Strati metallici per i collegamenti elettrici, generalmente costituiti da alluminio e più raramente da rame
La geometria delle zone che devono ricevere il drogaggio è realizzata con un processo di fotolitografia: ogni volta che il circuito integrato deve ricevere un nuovo strato o una nuova impiantazione di droganti, viene ricoperto da un sottile film fotosensibile, che viene impressionato tramite una maschera ad altissima definizione; le zone del film illuminate divengono solubili e vengono asportate dal lavaggio, lasciando in tal modo scoperto il chip sottostante. Una volta terminata la creazione dei chip sul substrato, questi vengono testati, il substrato viene tagliato e i chip incapsulati nei package con cui verranno montati sui circuiti stampati. In un circuito integrato si possono facilmente inserire transistor e diodi: è anche possibile creare su semiconduttore delle piccole resistenze e condensatori ma in genere questi ultimi componenti occupano molto spazio sul chip e si tende ad evitarne l'uso, sostituendoli quando possibile con reti di transistor. Non è invece possibile integrare induttori e trasformatori, che devono quindi essere collegati esternamente al circuito integrato; lo stesso vale per i condensatori di media e grande capacità.
In seguito si è iniziato ad usare il silicio in combinazione col germanio con la tecnica del silicio stirato (Strained-Silicon). Questa tecnica consiste nel depositare, sul corpo del wafer di silicio, uno strato di silicio-germanio di 2 micron con concentrazione di germanio pari al 20%. La concentrazione del germanio non è uniforme in tutto lo strato ma è maggiore sulla cima della struttura. A questo punto un sottilissimo strato di silicio dello spessore di circa 20 nm viene depositato sullo strato di silicio-germanio. Questa tecnica allunga il reticolato cristallino del silicio di circa l'1% sia in direzione laterale che verticale e ciò permette un enorme incremento sulla mobilità dei portatori di carica, che incontrano una resistenza inferiore al loro passaggio e fluiscono fino al 70% più velocemente, cosa che rende più veloci i chip del circa 30% senza bisogno di ulteriori miniaturizzazioni. Il principio che sta alla base di tutto questo è che gli atomi di silicio dello strato sovrastante tendono ad allinearsi con quelli dello strato di silicio-germanio che, essendo più spesso, obbliga gli atomi di silicio a spaziarsi di una distanza analoga a quella degli atomi di silicio-germanio.
Nei wafer di silicio da 8" per i collegamenti non si usano più né il rame né l'alluminio, bensì diversi strati di tungsteno (deposti a diversi Angstrom, a seconda dello strato) che vanno a ricoprire le vias, i piedini utilizzati per i collegamenti elettrici con le micro-saldature. Per agevolare il processo di realizzazione, data l'elevata quantità di vias, il tungsteno è deposto su tutto il wafer e poi rimosso dove non serve per planarizzazione chimica-meccanica.

## Classificazione

Tipologie particolari di microprocessori sono le seguenti:
* microprocessore monolitico;
* microprocessore general purpose;
* microprocessore special purpose.

### Microprocessore monolitico

Un microprocessore monolitico è un microprocessore costituito da un unico circuito integrato. Questo importante traguardo è stato raggiunto nei primi anni settanta del secolo scorso grazie ai notevoli e sorprendenti passi avanti compiuti dalla microelettronica: soltanto due decenni prima non era neanche immaginato un processore interamente contenuto in un unico componente elettronico in grado di occupare lo spazio di pochi centimetri cubi. Oggi invece il microprocessore è tipicamente implementato come microprocessore monolitico. Attualmente quindi il microprocessore monolitico è una tipologia di microprocessore estremamente diffusa.

### Microprocessore general purpose

Un microprocessore general purpose è un microprocessore progettato per essere utilizzato nelle elaborazioni dati più varie a uso non specializzato. È quindi utilizzato come CPU nei computer general purpose, ma anche in altri compiti. Ad esempio, le periferiche che necessitano di grande potenza di calcolo, come ad esempio le stampanti, possono essere dotate di un proprio processore al fine di non gravare sul processore centrale e a questo scopo si impiegano microprocessori general purpose.

### Microprocessore special purpose

Un microprocessore special purpose è un microprocessore progettato e ottimizzato per essere utilizzato in particolari elaborazioni dati; un esempio di microprocessore special purpose è il microcontrollore. Altri esempi di microprocessori special purpose sono i microprocessori che implementano digital signal processor, unità di elaborazione grafiche e unità di calcolo in virgola mobile.
Molti microprocessori special purpose sono dotati di limitate possibilità di programmazione o non sono completamente programmabili, come nel caso delle prime GPU sviluppate negli anni novanta. Solo in seguito le GPU hanno acquisito una certa libertà di programmazione.
L'RCA 1802 era un microprocessore specializzato non tanto perché fosse limitato nella programmazione, bensì perché era progettato per applicazioni spaziali e quindi aveva delle particolari caratteristiche. Il sistema venne definito a progetto statico dato che poteva variare la frequenza di funzionamento in modo arbitrario fino a raggiungere gli 0 Hz in modo da andare in stop totale. Le sonde Voyager, Viking e Galileo hanno sfruttato questa caratteristica per minimizzare i consumi elettrici durante il viaggio spaziale, mettendo in stop il processore quando il suo impiego non era necessario.

## Le architetture

Tra la metà degli anni 80 e l'inizio degli anni 90 apparvero molti microprocessori RISC ad alte prestazioni sebbene questi microprocessori vennero utilizzati principalmente in sistemi ad alte prestazioni basati su varianti del sistema operativo Unix e su macchine embedded. Da allora i sistemi RISC si diffusero ovunque e oramai anche i microprocessori Intel integrano all'interno un'architettura RISC che utilizza uno strato di emulazione per eseguire il codice x86 che è di tipo CISC.
Il concetto RISC apparve nei supercomputer fin dagli anni 60 (CDC 6600) ma i primi progetti che puntarono allo sviluppo di microprocessori esplicitamente RISC risalgono agli anni 80 con i progetti Berkeley RISC e il progetto MIPS della Stanford University. Il primo microprocessore RISC commerciale fu l'R2000, un sistema a 32 bit appartenente all'architettura MIPS derivata dall'architettura sviluppata a Stanford. Il successore R3000 migliorò le prestazioni e l'R4000 fu il primo sistema a 64 bit RISC. Progetti concorrenti furono l'IBM POWER e il Sun SPARC. Poco dopo anche altri produttori iniziarono a mettere in commercio processori RISC, tra questi si segnalano l'AT&T CRISP, l'AMD 29000, l'Intel i860 e Intel i960, il Motorola 88000, il DEC Alpha e il PA-RISC.
La guerra dei microprocessori ha eliminato quasi tutte le famiglie, solo il PowerPC e lo SPARC resistono nei sistemi di calcolo per server e supercomputer. I MIPS fino al 2006 furono utilizzati da Silicon Graphics per alcuni loro sistemi sebbene adesso siano utilizzati principalmente in applicazioni embedded. Alcune società come la ARM seguirono una strada diversa. Inizialmente i processori ARM vennero progettati per l'utilizzo nei personal computer ma nel giro di pochi anni la società si rese conto dell'elevata richiesta di processori a basso consumo per applicazioni embedded e si convertì invadendo il mercato embedded con opportune versione di processori ARM. Attualmente il mercato dei dispositivi embedded è dominato dai processori MIPS, ARM e PowerPC.
Nel calcolo a 64 bit le architetture DEC Alpha, AMD64, MIPS, SPARC, Power e Itanium sono tra le più popolari.
Rispetto alla CISC, semplicità dei RISC si traduce in una minore espressività del linguaggio assembly: il numero di word necessarie per esprimere una computazione in una macchina RISC è maggiore/uguale alla controparte: questo si traduce in programmi più grossi, penalità molto alta in altre epoche, in cui la RAM era una componente costosa e di bassa capacità. L'architettura CISC dipende dal compilatore più di quanto non dipenda il RISC: dato che le istruzioni prevedono più metodi di indirizzamento, e che son presenti istruzioni dalla semantica complessa, al compilatore viene prospettato un ampio ventaglio di scelte per quanto concerne la traduzione di un'istruzione, e non sempre la scelta migliore è banale. Come spesso accade nei problemi di ottimizzazione, la scelta della configurazione migliore è un compito NP-completo, e non è pensabile utilizzare un compilatore che, per ogni istruzione, valuti la scelta migliore in base al contesto. Si conoscono solo delle buone euristiche, ma il problema dell'ottimizzazione è un problema di ricerca aperto. La stessa macchina CISC può essere dunque più o meno veloce rispetto a una macchina comparabile RISC in base al compilatore utilizzato.

### Architettura CISC

CISC è l'acronimo di complex instruction set computer: tipicamente un processore di questo tipo implementa un numero relativamente scarso (una decina) di registri di uso generale, e ha un'unità di controllo microprogrammata: la logica del programma è memorizzata in una memoria veloce situata nella parte di controllo, invece di essere espressa tramite una rete combinatoria.
Il set di istruzioni associato a CPU di tipo CISC è molto esteso e composto in genere di alcune centinaia di codici operativi diversi che svolgono funzioni anche molto complesse, fra cui sono caratteristici i trasferimenti memoria-memoria, assenti nei RISC; le istruzioni hanno lunghezza variabile e possono presentarsi in formati diversi, e sono necessari due o più (a volte molti di più) cicli di clock per completare un'istruzione; è possibile specificare la posizione dei dati necessari alle istruzioni usando molti metodi di indirizzamento diversi. Il ridotto numero di registri interni obbliga questi processori a scrivere in memoria ogni volta che si verifica una chiamata di funzione, che si verifica una commutazione di contesto o che viene salvato un registro nella pila delle chiamate.
Programmare in Assembly una CPU CISC è un compito (relativamente) facile, perché le istruzioni presenti sono più vicine a quelle dei linguaggi ad alto livello.

### Architettura MISC

La Minimal instruction set computer è un'architettura per microprocessori basata su un numero minimale di istruzioni.

### Architetture Multicore

Un approccio per incrementare le performance di un computer consiste nell'utilizzo di più processori, come nelle architetture SMP utilizzate in server e workstation a partire dagli anni 1990. L'inseguimento della legge di Moore ha però presentato difficoltà sempre maggiori, così come nella progettazione di singoli chip più prestanti, a mano a mano che si avvicinavano i limiti fisici della tecnologia. Conseguentemente, i produttori hanno cercato soluzioni alternative per inseguire i costanti aggiornamenti nel mercato. Grazie anche alla continua evoluzione della tecnologia di fabbricazione dei chip, si è resa possibile la realizzazione di processori multi core, costituiti dall'integrazione di più nuclei operativi di microprocessori (core) su un singolo chip.
I processori multi-core consentono potenzialmente una moltiplicazione delle prestazioni in base al numero dei core (purché il sistema operativo sia in grado di sfruttare tale capacità). I vari core possono condividere tra loro alcuni componenti come il bus di interfaccia o la cache di secondo livello. La prossimità estrema dei diversi core consente uno scambio di dati molto più veloce in comparazione con i sistemi SMP discreti tradizionali, migliorando le prestazioni generali. Nel 2005 è stato presentato il primo processore dual-core (a due core) e già nel 2007 i processori dual-core erano ampiamente diffusi in server, workstation e nei PC. Al 2008 si annoveravano processori quad-core (a quattro core) per applicazioni high-end in ambito professionale ma anche domestico. L'evoluzione tecnologica ha poi consentito di aumentare ulteriormente il numero dei core, tanto che componenti a 8 e 16 core sono di impiego comune per computer professionali e smartphone di fascia alta che richiedono elevate capacità di calcolo. Nel 2021 AMD ha annunciato la disponibilità di CPU a 128 core su singolo chip.

### Architettura RISC

RISC è l'acronimo di reduced instruction set computer. Il tipico set di istruzioni RISC è molto piccolo, circa sessanta o settanta istruzioni molto elementari (logiche, aritmetiche e istruzioni di trasferimento memoria-registro e registro-registro): hanno tutte lo stesso formato e la stessa lunghezza, e molte vengono eseguite in un solo ciclo di clock. La diretta conseguenza di questa scelta progettuale è che i processori RISC posseggono un'unità di controllo semplice e a bassa latenza, riservando invece molto spazio per i registri interni: una CPU RISC ha di solito da un minimo di un centinaio ad alcune migliaia di registri interni generici, organizzati in un file di registri. Il fatto di avere un formato unico di istruzione permette di strutturare l'unità di controllo come una pipeline, cioè una catena di montaggio a più stadi: questa innovazione ha il notevole vantaggio di ridurre il critical path interno alla CPU e consente ai RISC di raggiungere frequenze di clock più alte rispetto agli analoghi CISC.
Nel caso di commutazione di contesto o di chiamata a funzione o comunque di uso della pila delle chiamate i RISC spesso invece di accedere alla memoria di sistema usano un meccanismo chiamato register renaming, che consiste nel rinominare i registri in modo da usare per la nuova esecuzione una diversa zona del file di registri, senza dover accedere alla memoria ogni volta.

## Diffusione nel mercato

Tra tutte le case produttrici si distinguono, specie nel mercato dei personal computer e server, Intel e AMD; Nel 2003 il mercato dei microprocessori valeva 44 miliardi di dollari; la cifra include sia la produzione che la vendita. I microprocessori per personal computer assorbono la metà del fatturato totale pur rappresentando solo lo 0.2% del numero totale di pezzi prodotti. Circa il 55% delle CPU erano microcontrollori a 8 bit; nel 1997 furono venduti più di due miliardi di microcontrollori a 8 bit. Meno del 10% delle CPU erano a 32 bit o 64 bit; di tutte le CPU a 32 bit, solo il 2% era utilizzato nei personal computer, mentre il 98% era utilizzato in applicazioni embedded come elettrodomestici, controllori industriali, periferiche per computer o altro. Tenendo conto di tutti i microprocessori prodotti e del mercato totale, il prezzo medio di un microprocessore è di 6 dollari statunitensi.

## Architetture e microprocessori comuni

* Altera Nios, Nios II
* AMD K5, K6, K6-2, K6-III, Duron, Athlon, Athlon XP, Athlon MP, Athlon XP-M (IA-32 32-bit Intel architettura x86)
* AMD Athlon 64, Athlon 64 FX, Athlon 64 X2, Opteron, Sempron, Turion 64 (architettura AMD64)
* Apple Silicon
* architettura ARM, StrongARM, Intel PXA2xx
* Architettura Atmel AVR (microcontrollori)
* EISC
* RCA 1802 (noto anche come RCA COSMAC, CDP1802)
* Cyrix M1, M2 (IA-32 architettura x86)
* DEC Alpha
* Intel 4004, 4040
* Intel 8080, 8085, Zilog Z80
* Architettura x86
** Intel 8086, 8088, 80186, 80188 (architettura x86 a 16 bit reale)
** Intel 80286 (architettura x86 a 16 bit modalità reale e protetta)
** Intel 80386, 80486, Pentium, Pentium Pro, Celeron, Intel Core Duo, Intel Core 2 Duo, Pentium II, Pentium III, Xeon, Pentium 4, Pentium M, Celeron M (IA-32 architettura Intel x86 a 32 bit)
* Autimi Xeon, primi Pentium 4, Pentium D, Celeron D, Intel Core 2 (architettura EM64T)
* Intel Centrino (anche nella versione dual-core)
* Intel Core SandyBridge I3, I5 e I7
* Intel Core IvyBridge I3, I5 e I7
* Intel Itanium (architettura IA-64)
* Intel i860
* Intel i960
* Architettura MIPS
* Motorola 6800, MOS Technology 6502, Motorola 6809
* Motorola 68000, ColdFire
* Motorola 88000
* NexGen Nx586 (IA-32 architettura x86 a 32 bit)
* IBM POWER
* NSC 320xx
* OpenCores architettura OpenRISC
* PA-RISC
* PowerPC, G3, G4, G5
* National Semiconductor SC/MP ("scamp")
* Signetics 2650
* SPARC, UltraSPARC, UltraSPARC II–IV
* SuperH family
* Transmeta Crusoe, Efficeon (VLIW architettura x86, IA-32 32-bit Intel x86 tramite emulazione)
* INMOS Transputer
* VIA C3,C7,Eden Series (IA-32 architettura x86 a 32 bit)
* Western Design Center 65xx
* XAP da Cambridge Consultants