# Architettura x86

La locuzione architettura x86 è un'espressione generica per indicare un'architettura di una famiglia di microprocessori sviluppata e prodotta da Intel.

## Storia

L'elenco che segue riporta i processori Intel con architettura x86 in ordine cronologico:

### Intel 8086

Primo processore a 16 bit di Intel (1978). Era un'evoluzione dell'Intel 8085 a 8 bit.

### Intel 8088

(1979) Modello ridotto dell'8086, identico dal punto di vista software, aveva un bus dati esterno ridotto a 8 bit che lo rendeva compatibile con l'hardware sviluppato per le macchine a 8 bit di allora.

### Intel 80186

Modello poco venduto e poco diffuso. Comprendeva nuove istruzioni ed una differente gestione della memoria. Destinato al nascente mercato embedded, ebbe una buona diffusione nel mondo dell'automazione industriale.

### Intel 80286

Fu il primo microprocessore Intel ad avere una modalità protetta e diversi livelli di privilegio per il codice da eseguire. Aveva un bus dati a 16 bit e un bus indirizzi a 24 bit, che lo rendeva in grado di indirizzare fino a 16 MB di RAM. Restava però ancorato al vecchio schema di indirizzamento segmento/offset, troppo rigido, e non aveva MMU, cioè non supportava in hardware nessuno schema di memoria virtuale. Inoltre non era possibile tornare alla modalità reale una volta entrati in modo protetto. Altra caratteristica innovativa era il prefetching delle istruzioni, che lo rendeva molto più veloce, anche a parità di clock, dell'8086.

### Intel 80386

Primo processore Intel a 32 bit pieni, con bus indirizzi e dati a 32 bit, in grado di gestire fino a 4GB di RAM. Era dotato di MMU e supportava memoria virtuale sia paginata sia a segmenti. Con 32 segnali dati e indirizzi da gestire e con le frequenze di clock dei processori che continuavano a salire, il progetto delle schede madri per personal computer cominciò a divenire molto impegnativo e costoso; anche del 386 venne quindi prodotta una versione con bus dati dimezzata a 16 bit, più economica e che richiedeva hardware meno sofisticato, per le applicazioni meno esigenti di prestazioni elevate. A differenza dei predecessori, che venivano prodotti sia da Intel sia (su licenza) da altri produttori, il 386 fu prodotto solo ed esclusivamente da Intel. Dopo alcuni anni, comunque, AMD, Cyrix e le altre case presentarono sul mercato processori compatibili con il 386 ma basati su progetti più o meno originali.

### Intel 80486

(1989) Molto simile al 386 dal punto di vista software, era però decisamente più veloce grazie all'integrazione di una piccola quantità di memoria cache di secondo livello. Le versioni DX integravano il coprocessore matematico, che fino ad allora era stato un componente opzionale esterno al processore. Veniva commercializzata anche una versione SX, identica al DX ma priva del coprocessore matematico. Per le frequenze di clock sempre più alte, il 486 fu il primo processore per cui si rese necessario un sistema di raffreddamento attivo (dissipatore e ventola) e una tensione di alimentazione più bassa dei canonici 5 volt impiegati fino ad allora nei circuiti integrati TTL.
Nelle sue versioni più potenti il 486 raggiunse i 100 MHz grazie ad un moltiplicatore di frequenza che permetteva la produzione di schede madri "standard" a 33 MHz dotate di processori che moltiplicavano x3 la frequenza. AMD ha raggiunto i 133 MHz con questa CPU. Con i 486 inizia anche l'era delle versioni a basso consumo energetico (principalmente per portatili) denominate SL. La Cyrix presentò due processori denominati 486SLC e DLC, molto economici, che però erano dei compatibili 386 (SX e DX) dotati di una cache di secondo livello e non disponevano delle istruzioni aggiuntive del 486 Intel.

### Pentium

(1993) Il processore Pentium era l'unione di due processori 486 in un solo chip, che condividevano l'unità di gestione della cache di secondo livello, il prefetcher delle istruzioni e il coprocessore matematico. Aveva un bus dati a 64 bit, che venivano poi divisi in due parti a 32 bit nella cache interna. Questo processore recepiva una serie di innovazioni introdotte dalle architetture RISC: aveva una pipeline a più stadi per la decodifica delle istruzioni; il prefetcher era in grado di decidere a quale core 486 inviare ogni istruzione che decodificava, permettendo (a certe condizioni) l'esecuzione di due istruzioni contemporaneamente. Questa architettura di base resterà invariata, anche se solo formalmente, per tutti i successivi processori Pentium.
Il Pentium "base" fu sostituito dopo circa un anno dalla versione MMX (da MultiMedia eXtension), che includeva una nuova unità di calcolo in virgola mobile capace di eseguire calcoli in parallelo su otto valori a 64 bit (o 4 da 128 bit) con una sola istruzione: come dice il nome, la nuova unità era pensata per la codifica e decodifica di flussi multimediali audio/video. Non era possibile usare contemporaneamente il coprocessore matematico e l'unità MMX, ma si doveva scegliere da software, con una istruzione apposita, quale unità abilitare. Inoltre le istruzioni MMX operavano solo su numeri interi.

### Pentium Pro

Il Pentium Pro fu una versione destinata al mercato server e workstation, più veloce perché integrava nel chip (molto più grande del normale) la cache di primo e di secondo livello. Il prezzo al pubblico era molto alto e il prezzo di produzione non era da meno, per cui fu rapidamente abbandonato appena furono disponibili i successivi modelli.

### Pentium II

Il Pentium II introdusse la Branch Prediction Unit, che si occupa di prevedere l'esito delle istruzioni di salto condizionale. Il principale limite prestazionale del Pentium era la lunghezza delle pipeline di decodifica delle istruzioni: dopo un salto condizionale esistono due possibili serie di istruzioni da eseguire, e se la pipeline viene riempita con la serie di istruzioni sbagliata deve essere svuotata e le istruzioni giuste rilette e ridecodificate, perdendo molto tempo. La BPU cerca di prevedere in anticipo quale sarà la serie giusta, migliorando parecchio le prestazioni complessive del processore.
Da questo modello in poi, lo schema dei due core 486 in parallelo è sempre più una facciata: in realtà la pipeline dei Pentium II e successivi non solo decodifica le istruzioni x86 ma le traduce anche in istruzioni RISC interne, eseguite da dei core RISC e non più 486.

### Pentium III

Con il Pentium III vennero introdotte delle migliori istruzioni SIMD rispetto ad MMX, le SSE (da Streaming SIMD Extensions). in grado di operare sia su numeri interi, sia su numeri in virgola mobile, ed in grado di essere usate contemporaneamente al coprocessore matematico.

### Pentium 4

Questa serie di Pentium introdusse due nuove versioni di SSE, le SSE2 e in seguito le SSE3. Con queste aggiunte, il vecchio coprocessore matematico era ormai superfluo oltre che più limitato, e la stessa Intel ne sconsigliò l'uso a favore delle nuove estensioni.

## Caratteristiche

L'x86 ha un instruction set CISC a lunghezza variabile. Questa caratteristica era utile negli anni '70 e '80, perché permetteva di risparmiare costosa memoria. In tempi più recenti, la lunghezza variabile è diventata un tallone d'Achille che complica notevolmente il progetto dei nuovi processori, i quali dedicano una parte consistente delle loro risorse a "tradurre" il set di istruzioni x86 in uno più razionale.
È al momento una architettura in fase di dismissione nel mercato dei PC desktop, portatili, e server economici. Dal 2016 è estremamente difficile trovare hardware a 32 bit /x86 sul mercato per ogni tipologia di mercato, inclusi lo sviluppo di sistemi embedded, thin client, set-top box e altre. L'ultima console x86 di grande successo sul mercato è stata Xbox di Microsoft.
Nel corso dei decenni, più di una ditta ha introdotto processori compatibili con l'architettura x86, ponendosi in concorrenza con Intel; dal fallimento di Transmeta, l'unico concorrente di un certo peso nel settore dei personal computer è AMD che ha prodotto processori x86-compatibili fin dai primi anni dell'architettura sino al termine della produzione dei K7. La cessazione della disponibilità dei processori embedded Geode dovrebbe essere avvenuta nel 2019.
Tale architettura ha subito evoluzioni nel tempo, cambiando denominazione, per esempio l'architettura i386 tipica dei processori Intel 80386 e AMD386 o AM386 è la prima a supportare i 32 bit. Successivamente anche con le altre architetture, quali la i486 tipica dei processori Intel 80486 e AMD486 o AM486, seguita dalla i586 con Intel Pentium o AMD-K5, la i686 con Intel Pentium Pro o AMD-K6 ed infine dalla i786 con Intel Pentium 4 o AMD-K7 cambiarono denominazione. Ad ogni generazione vennero aggiunte nuove funzioni, le quali sono compatibili con le generazioni future, ma non permettono la compatibilità dei software che usano tale funzioni con l'hardware di generazione precedente.
Per mantenere la retro-compatibilità con il processore 8086, che diede origine all'architettura x86, durante la fase di avvio (boot) di ogni dispositivo che utilizza tale architettura, vengono eseguite delle operazioni in modalità reale ormai diventate standard. Tra di esse troviamo la disabilitazione della Linea A20 del bus di indirizzamento.