Você está na página 1de 2

SISTEMI: 30/01/2015

La CPU l'elemento fondamentale nel modello di Von Neumann, e l'architettura fondamentale rimasta invariata
negli anni, nonostante l'evoluzione:

Unit di controllo: gestisce le operazioni interne in base ai segnali ricevuti e alle istruzioni da eseguire.
ALU (Arithmetic Logic Unit): esegue le operazioni logico-matematiche necessarie richieste dalla CU.
Registri: piccole aree di memoria molto veloci che conservano i dati in elaborazione e le informazioni
relative alle operazioni da eseguire per eseguire le istruzioni.
Cache interna: area di memoria dove sono inserite le istruzioni successive, al fine di velocizzare l'esecuzione
delle operazioni. E' organizzata su livelli in base alla velocit di accesso e alla frequenza d'uso.
Logica di controllo: insieme di circuiti che trasformano gli impulsi elettrici provenienti dall'esterno in
segnali per la CU e viceversa.
Logica I/O: insieme di circuiti che fornisce ai bus esterni (indirizzi e dati) gli impulsi per comunicare con le
periferiche e trasforma gli impulsi esterni in segnali per la CU.
Bus Interno: insieme di collegamenti elettrici che consente di trasferire dati e indirizzi tra i vari blocchi del
microprocessore.

Il microprocessore nato dall'esigenza di creare un piccolo componente in grado di svolgere tutte le funzioni di
dispositivi gi esistenti separatamente. Il primo fu inventato da Federico Faggin; i parametri principali sono:

Velocit di clock: il numero di impulsi inviati dal generatore di clock a tutti i dispositivi collegati alla
motherboard. Questi impulsi servono a sincronizzare tutti i dispositivi collegati ad essa; ogni volta che arriva
un impulso, viene eseguita un'operazione elementare. Questa velocit si esprime spesso in Mhz o Ghz, anche
se la misura corretta sarebbe ips (istruzioni per secondo).
Parallelismo: indica il numero di bit di dati che possono essere letti o ricevuti in una singola operazione. I
primi microprocessori lavoravano in parallelismo a 4 bit, ora siamo arrivati a 64.
Cache di memoria: memoria interna al microprocessore, caratterizzata da un accesso veloce e divisa in livelli
(L1, L2, L3) che permettono di precaricare all'interno della cpu un numero elevato di istruzioni e dati che
serviranno in futuro, evitando cos il collegamento con le memorie esterne.
Numero di CPU o Core: indica il numero di microprocessori presenti all'interno del pc
Firmware: insieme di microistruzioni che comprende le istruzioni da eseguire. Esistono due tipi di progetto
per le CPU:
CISC (Complex Instruction Set Computer): pc dotato di una cpu che esegue molte istruzioni complesse,
ma queste richiedono tempi di esecuzione molto lunghi e un firmware molto complesso
RISC (Reduced Istruction Set Computer): pc dotato di una cpu che esegue istruzioni elementari, ma
molto velocemente. Il firmware molto semplice e veloce.
Ora come ora, molte cpu elaborani istruzioni CISC, che vengono trasformate in RISC al loro interno ed
eseguite come tali.

L'ISA (Istruction Set Architecture) descrive l'organizzazione e la sintassi delle istruzioni in una cpu; al suo interno
viene utilizzato il linguaggio macchina, costituito da codici binari che rappresentano le varie operazioni e i dati.
Quest linguaggio pe runa persona molto difficile da utilizzare, cos stato creato un linguaggio mnemorico,
l'assembly, che d un nome ad ogni istruzione, che sarebbe sottoforma di codice binario. In genere, le istruzioni per
le vecchie versioni delle cpu vengono sempre supportate nei nuovi, ma le versioni vecchie non supportano i comandi
nuovi.
L'uso dell'assembly, per, ormai limitato ad applicazioni molto particolari dove devono essere eseguite funzionalit
ben precise con un numero ridotto di istruzioni; i programmatori lavorano con un linguaggio ad alto livello elaborati
dai compilatori, che traducono comandi complessi in istruzioni semplici: prima si passa dall'alto livello
all'assembly, poi vengono eliminate eventuali istruzioni superflue o ripetute.
Il file generato dal compilatore, il file oggetto, viene poi modificato dal linker per inserire elementi esterni previsti
dal programma, e viene generato il file eseguibile.
Esistono anche dei microcontrollori, presenti nei dispositivi di uso comune, che altro non sono che cpu con
prestazioni ridotte: servono a contollare e rendere variabile il funzionamento di questi dispositivi, e sono formati da
circuiti a basso costo e bassi consumi, che riescono a semplificare il controllo dei dispositivi che formano
l'elettrodomestico. Queste cpu sono programmate con un linguaggio assembly specifico: le istruzioni sono le stesse
delle cpu normali (tranne alcune che sono specifiche), ma sono molto ridotte.

Durante la lettura e l'esecuzione delle istruzioni, la cpu esegue 5 fasi:

IF (Instruction Fetch): lettura dell'istruzione da memoria


ID (Instruction Decode): decodifica dell'istruzione e lettura degli operandi dai registri
EX (Execution): esecuzione dell'istruzione
MEM (Memory): attivazione della memoria (non sempre, dipende dalle istruzioni)
WB (Write Back): scrittura del risultato in un opportuno registro

Nelle prime cpu, ogni istruzione veniva eseguita nelle sue 5 fasi, e si passava alla successiva una volta completata la
prima; ora, invece, si ha una struttura che permette di eseguire in modo parallelo 5 istruzioni diverse: una volta
terminata la fase IF della prima. Partir la fase IF della seconda, poi della terza ecc...
cos facendo, ogni volta che viene finita una fase si avr un'altra istruzione che deve passarla, e il tempo di
esecuzione di tutte le istruzioni diminuir notevolmente. Queste tecnica, chiamata pipeline, funziona bene se non ci
sono legami stretti tra le istruzioni: se l'istruzione 4 ha bisogno del risultato dell'istruzione 2, la pipeline di
quell'istruzione dovr fermarsi e aspettare la fase WB dell'istruzione 2.
Un altro problema quello dei salti di esecuzione: alcune istruzioni non possono essere eseguite se non ci sono
determinate condizioni, quindi la cpu passa ad eseguire altre istruzioni che non seguono le precedenti, con la
necessit di svuotare la pipeline prima di eseguire il salto, e quindi si ha un rallentamento dell'esecuzione.
Per ovviare a questi problemi ci sono varie soluzioni:

usare i registri a doppia porta, che mettono a disposizione il risultato per le istruzioni che ne hanno bisogno al
termine della fase EX, in modo che queste non debbano aspettare altre due fasi per avere il dato
usare pi pipeline autonome in parallelo (tecnica superscalare), elaborando cos molte istruzioni in parallelo
introdurre circuiti che analizzano i possibili salti e attivano alcune pipeline per l'esecuzione delle istruzioni
dopo il salto
suddividere l'esecuzione di un'operazione in 20/30 fasi elementari che vengono eseguite rapidamente,
aumentando la frequenza di clock.

Con le cpu multicore i problemi di gestione della pipeline si sono molto ridotti, in quanto ogni core lavora da s;
necessario per che il s.o. sia in grado di gestirli.

Você também pode gostar