cerca
Architettura degli elaboratori - Pipeline
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.Pipeline History

Hide minor edits - Show changes to output

Added lines 12-20:

!!CPU pipeline
La CPU pipeline è una CPU che ha una struttura a catena di montaggio, cioè formata da stadi che operano in parallelo in modo tale di consentire di velocizzare l’esecuzione e aumentare il numero di istruzioni macchina completate per unità di tempo. Riesce quindi a completare un’istruzione ad ogni ciclo di clock. Gli stadi di cui è formata sono quattro:
* ''fetch'': prelievo dell’istruzione dalla memoria da parte del processore;
* ''decode'': l’istruzione viene esaminata e decodificata (in base all’operando);
* ''execute'': viene effettuata l’esecuzione delle istruzioni;
* ''writeback'': il risultato dell’istruzione viene copiato in un registro del processore o memorizzato.

Tra uno stadio e l’altro vi è un registro intermedio chiamato buffer o registro di buffer, poiché ciascuno stadio passa informazioni allo stadio consecutivo, le informazioni vengono scritte nel buffer dallo stadio precedente per permettere allo stadio successivo di utilizzarle. E’ formata da memoria cache.
Added lines 1-32:
(:title Architettura degli elaboratori - Pipeline:)
[[Torna alla pagina di Architettura degli elaboratori->Uni.Architettura degli elaboratori]]
----

>>evvai<<
Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! '''''È SERVITA A QUALCOSA, NO?!''''' [++;)++]
>><<

%titolo%''':: Architettura degli elaboratori - Pipeline ::'''

Una '''pipeline''' si può efficacemente immaginare come una catena di montaggio, attraverso la quale le istruzioni vengono processate per essere eseguite. Ogni istruzione, cioè, viene scomposta in operazioni più semplici, eseguibili dai vari stadi della pipeline, e dunque percorre tutta la “catena di montaggio” fino alla sua completa esecuzione. Il vantaggio di tutto ciò è che una volta che un’istruzione abbandona uno stadio della pipeline, tale stadio può occuparsi dell’istruzione successiva, la quale dunque verrà completata dopo la precedente in un tempo sensibilmente inferiore a quello della sua completa esecuzione. Una struttura a catena di montaggio (pipeline) e un ottimo approccio per velocizzare l’esecuzione non tanto della singola istruzione quanto del numero di istruzioni in corso di lavorazione e quindi che verranno completate per unita di tempo con un incremento netto del [@[MIPS]@] che la nostra macchina è in grado di portare a termine.

L’incremento delle prestazioni è dovuto tipicamente ed esclusivamente ad un intervento architetturale: la tecnologia di realizzazione dell’integrato circuito CPU e quindi la sua frequenza di lavoro non deve cambiare. A parità di tecnologia un approccio architetturale pipeline consente guadagni di prestazione di un fattore da 2 a 8.

I problemi nell’adozione di un modello a pipeline sono legati in generale alle cosiddette ''dipendenze'' (''dependencies''), cioè al fatto che durante l'esecuzione di programmi da parte di una CPU pipeline ci sono relazioni di dipendenza fra le diverse istruzioni del programma o fra le diverse risorse che il programma richiede di utilizzare che comportano conflitti nella catena di montaggio nella pipeline e quindi rallentamento della sua attività con perdita di efficacia. Vediamone alcune:
* ''Control dependency'', il flusso di esecuzione delle istruzioni che interrompe il normale comportamento sequenziale;
* ''Data dependency'', due istruzioni vicine utilizzano uno stesso dato;
* ''Resource dependency'', due istruzioni entrano in conflitto per una risorsa del sistema.

I legami fra le istruzioni in esecuzione e i loro conflitti di accesso alle risorse possono provocare rallentamenti della pipeline dovuti a:
* control dependencies;
* data dependencies;
* resource dependencies.

Si riesce a ridurre le inefficienze ricorrendo a soluzioni architetturali anche complesse:
* branch prediction;
* data forwarding;
* CPU con cache di primo livello separata per istruzioni e variabili (macchina di Harvard).


----
[[Torna alla pagina di Architettura degli elaboratori->Uni.Architettura degli elaboratori]]