La storia del PC è legata alla storia dell'Intel, che con la sua linea di processori a basso costo ha permesso lo sviluppo e l'ampia diffusione dei PC. Altri produttori, come la Motorola, hanno messo sul mercato CPU di qualità, ma non hanno avuto la stessa diffusione ed importanza dell'Intel. L'AMD e, per un certo tempo la Cyrix, hanno creato "cloni" delle CPU Intel, quasi completamente compatibili. L'AMD, coll'Athlon, ha prodotto ad un certo punto processori migliori di quelli dell'Intel, e con l'Athlon 64 e' stata protagonista dell'evoluzione dei PC verso i 64 bits. Attualmente Intel ed AMD si spartiscono il mercato delle CPU per PC, ci sono anche altri fornitori, ma di meno successo. L'architettura di queste CPU e' denominata X86, questi processori hanno un set di istruzioni di tipo CISC, con parole in little endian order. Le prime versioni di queste CPU avevano 16 registri a 16 bit : 4 registri generali utilizzati per i calcoli e vari registri speciali, che servono a gestire puntatori alla memoria, gli IRQ, le eccezioni etc.; con i processori 386 i registri furono portati a 32 bits, vennero poi introdotti registri ed istruzioni per il calcolo float. Le versioni successive videro aggiunte dedicate alla grafica, come le istruzioni MMX, che utilizzano i registri float per istruzioni di tipo SIMD, le istruzioni SSE, che utilizzano 8 nuovi registri a 128 bit per il calcolo float. Pian piano siamo arrivati agli odierni microprocessori i quali hanno subito numerose evoluzioni rendendoli sempre più potenti ed efficienti. Con l’Intel 8086 inizia la storia dei PC, esso è l’antenato dei processori odierni, i quali sono delle evoluzioni che mantengono lo stesso tipo di architettura. Questo processore racchiudeva in se circa 29.000 transistor e aveva una frequenza di clock di circa 8 Mhz. Il package ha una struttura detta “Dual Line” che significa che ha due file di 20 pin parallele. L'unità di interfaccia con il bus (detta BIU da Bus Interface Unit) passa le istruzioni all'unità di esecuzione (detta EU da Execution Unit attraverso una coda di prefetch, in modo che il fetch e l'esecuzione delle istruzioni fosse contemporaneo – una forma primitiva di pipelining (le istruzioni dell'8086 avevano una dimensione tra 1 e 4 byte). L’Intel 8086 è un microprocessore a 16 bit progettato dalla Intel nel 1978, che diede origine all'architettura x86. È basato sull'8080 e sull'8085, con un insieme di registri simili, ma a 16 bit. Ha quattro registri a 16 bit per uso generico, a cui si può accedere come se fossero otto registri a 8 bit, e quattro registri a 16 bit di indice. I registri per i dati sono spesso utilizzati implicitamente dalle istruzioni, complicando l'uso degli stessi per memorizzare valori temporanei. Ha uno spazio di indirizzamento a 16 bit per l'I/O cioè può accedere a 65.536 dispositivi di I/O a 8 bit e dispone di una tabella di vettori per gli interrupt fissa. La maggior parte delle istruzioni possono accedere ad una sola locazione di memoria, perciò uno degli operandi deve essere un registro. Il risultato viene memorizzato in uno degli operandi. Ci sono anche quattro registri per i segmenti che possono essere calcolati dai registri di indice. I registri di segmento permettono alla cpu di accedere ad un megabyte di memoria in un modo particolare. Invece di fornire i byte mancanti, come nella maggior parte dei processori che supportano la segmentazione, l'8086 fa uno shift a sinistra di 4 bit del registro di segmento e lo somma all'indirizzo. Il risultato è che i segmenti si sovrappongono, il che è stato considerato come un indice di cattiva progettazione da molti sviluppatori. Anche se questo fu un vantaggio per la programmazione in linguaggio assembly, dove il controllo sui segmenti è completo, causò confusione nei linguaggi che fanno molto uso dei puntatori (come ad esempio il linguaggio C). Rese difficile una rappresentazione efficiente dei puntatori e rese possibile avere due puntatori con valori diversi ma che puntano ad una stessa locazione di memoria. Inoltre questo scherma rese difficile aumentare lo spazio di indirizzamento a più di un megabyte. INTEL 8086 ARCHITETTURA DI UN SISTEMA BASATO SU MICROPROCESSORE Intel 8086 BUS DI DATI 16 BIT INPUT ROM RAM CPU OUTPUT BUS DI INDIRIZZI 8 BIT BUS DI CONTROLLO 5 BIT