# Personal computer/Architettura

Personal computer
* Storia dei calcolatoriPersonal computer/Storia
* Architettura del calcolatorePersonal computer/Architettura
** CPUPersonal computer/Architettura/CPU
** MemoriaPersonal computer/Architettura/Memoria
** Input/OutputPersonal computer/Architettura/IO
* Linguaggio MacchinaPersonal computer/Linguaggio Macchina
** DLXPersonal computer/Linguaggio Macchina/DLX
*** Operazioni DLXPersonal computer/Linguaggio Macchina/DLX/Operazioni
*** DLX sequenzialePersonal computer/Linguaggio Macchina/DLX/DLX_sequenziale
*** DLX in pipelinePersonal computer/Linguaggio Macchina/DLX/DLX_pipeline
** 8086-8088Personal computer/Linguaggio Macchina/8086
* Mapping di Memorie ed InterfaccePersonal computer/Mapping
** Integrati NotevoliPersonal computer/Mapping#Caratteristiche_e_funzionamento_degli_integrati_notevoli
*** DriverPersonal computer/Mapping/Driver
*** CPUPersonal computer/Mapping/CPU
*** Memoria PrincipalePersonal computer/Mapping/Memorie
*** Interfacce I/OPersonal computer/Mapping/Interfacce
** Gestione delle interfacce tramite programmaPersonal computer/Mapping#Gestione_delle_interfacce_tramite_programma
* Standard alla base di un personal computerPersonal computer/Standard
* Appendici e RiassuntoPersonal computer/Appendici
Modifica il sommario

## Architettura del calcolatore

La concezione che abbiamo oggi di calcolatore multifunzione di tipo generale è basata su un concetto teorico di circa cinquanta anni fa. Von Neumann la elaborò come una macchina digitale ad esecuzione sequenziale e programma memorizzato, questo permette di esprimere il concetto di funzionamento desiderato in termini di sequenza di istruzioni (il programma) memorizzate su un supporto di memoria, in modo da poter cambiare funzionamento semplicemente cambiando il programma in esecuzione.
A costituire la struttura di un calcolatore sono:
* linguaggio macchina o Instruction Set Architecture - ISA ovvero un set di istruzioni che si pongono come interfaccia all'utente per le operazioni che svolge il calcolatore
* struttura interna l'insieme di blocchi interconnessi, ognuno costituente un sottosistema logico della macchina
* realizzazione circuitale ovvero la tecnologia microelettronica alla base del sistema
L'architettura risulta adatta a trattare problemi molto più complessi di quelli delle reti logiche, per questo motivo il calcolatore è suddiviso in blocchi più semplici collegati da una struttura ad hoc. Gli elementi indipendenti sono le strutture di
* memoria principale, contiene le istruzioni del programma da eseguire e i risultati delle operazioni svolte. Istruzioni e dati sono codificati in forma binaria, questo comporta che non siano di per sé distinguibili le istruzioni dai dati, ma tutto dipende dal modo in cui un gruppo di bit viene letto e interpretato. Il fatto che dati e istruzioni sono distinguibili permetti di avere programmi, quali i compilatori, che generano dati che possono essere interpretati come istruzioni.
* l' unità di elaborazione e controllo o CPU (Central Processing Unit) è quella che interpreta ed esegue il programma, sarà a sua volta suddivisa in sottosistemi più semplici quali PC (Program Counter), ALU (Arithmetic and Logic Unit), Registri, Cache e vari strumenti aggiuntivi.
* Le Interfacce o registri di Input/Output con il compito di interfacciarsi ai dispositivi di input/output (memoria di massa, monitor, tastiera, stampante, ...); sono detti anche buffer.
A permettere la comunicazione, e quindi lo scambio dati, tra questi tre blocchi vi è il Bus di sistema. Fino agli anni novanta il bus era un unico canale di comunicazione, con l'enorme crescita delle prestazioni della CPU e l'impiego di memorie cache la struttura a bus unico venne abbandonata per far spazio alle attuali architetture che prevedono più bus. Vi è quindi un bus ad altissima velocità per il trasferimento di dati tra memoria cache, memoria centrare e CPU, un bus a prestazioni più basse che collega i dispositivi periferici.
Il moderno sviluppo dell'informatica sta avvenendo soprattutto nell'ambito dei processori. Resta infatti la struttura di comunicazione, detta BUS, una delle parti più lente della macchina. Approssimativamente, possiamo dire che mentre i più recenti processori hanno frequenze di Clock che vanno dai 4 ai 6 GHz, la frequenza del clock del BUS, non va, nei computer a più alte prestazioni, oltre gli 1033 MHz. Una tale differenza provoca inevitabilmente dei colli di bottiglia. L'unica altra parte del computer che è più lenta è il disco rigido.
Abbiamo messo in un gruppo tutti i tipi di memoria, sia contenente dati che programmi. Questo perché se si prende un singolo byte, non si può dire se esso provenga da un programma o da un dato.
Da un punto di vista logico si può dividere il BUS di sistema in tre bus:
* Bus Dati, ha il parallelismo della cpu e scambia istruzioni e dati con gli altri bus agent, ovvero memoria e I/O
* Bus di controllo, contiene informazioni che permettono all'agente master (la CPU) il controllo degli agenti slave (memoria e interfacce), quali ad esempio il Memory Read Command, Memory Write Command, ...
* Bus di indirizzi, ha la dimensione dello spazio di indirizzamento della memoria (l'8086 aveva 20 bit di indirizzo, gli attuali calcolatori hanno 32 o anche 36 bit)