Articles

GeeksforGeeks

Per migliorare le prestazioni di una CPU abbiamo due opzioni:
1) Migliorare l’hardware introducendo circuiti più veloci.
2) Disporre l’hardware in modo tale che più di un’operazione può essere eseguita allo stesso tempo.

Poiché esiste un limite alla velocità dell’hardware e il costo dei circuiti più veloci è piuttosto alto, dobbiamo adottare la 2a opzione.

Pipelining : Pipelining è un processo di disposizione degli elementi hardware della CPU in modo tale che le sue prestazioni complessive siano aumentate. L’esecuzione simultanea di più di un’istruzione avviene in un processore pipeline.

Vediamo un esempio di vita reale che funziona sul concetto di operazione pipeline. Si consideri un impianto di confezionamento bottiglia d’acqua. Lascia che ci siano 3 fasi che una bottiglia dovrebbe passare attraverso, Inserendo la bottiglia(I), Riempiendo l’acqua nella bottiglia(F) e Sigillando la bottiglia(S). Consideriamo queste fasi come fase 1, fase 2 e fase 3 rispettivamente. Lascia che ogni fase richieda 1 minuto per completare il suo funzionamento.
Ora, in un’operazione non pipeline, una bottiglia viene prima inserita nell’impianto, dopo 1 minuto viene spostata allo stadio 2 dove viene riempita l’acqua. Ora, nella fase 1 non sta succedendo nulla. Allo stesso modo, quando la bottiglia si sposta allo stadio 3, sia lo stadio 1 che lo stadio 2 sono inattivi. Ma nell’operazione pipeline, quando la bottiglia è nella fase 2, un’altra bottiglia può essere caricata nella fase 1. Allo stesso modo, quando la bottiglia è in fase 3, ci può essere una bottiglia ciascuno in fase 1 e fase 2. Quindi, dopo ogni minuto, otteniamo una nuova bottiglia alla fine della fase 3. Quindi, il tempo medio impiegato per produrre 1 bottiglia è:

Senza pipelining = 9/3 minutes = 3m

I F S | | | | | || | | I F S | | || | | | | | I F S (9 minutes)

Con pipelining = 5/3 minutes = 1.67 m

I F S | || I F S || | I F S (5 minutes)

Quindi, il funzionamento con pipeline aumenta l’efficienza di un sistema.

Progettazione di una pipeline di base

  • In un processore pipeline, una pipeline ha due estremità, l’estremità di ingresso e l’estremità di uscita. Tra queste estremità, ci sono più fasi/segmenti in modo tale che l’output di uno stadio sia collegato all’input dello stadio successivo e ogni stadio esegua un’operazione specifica.
  • I registri di interfaccia vengono utilizzati per contenere l’uscita intermedia tra due fasi. Questi registri di interfaccia sono anche chiamati latch o buffer.
  • Tutte le fasi della pipeline insieme ai registri dell’interfaccia sono controllate da un clock comune.

Esecuzione in un processore pipeline
La sequenza di esecuzione delle istruzioni in un processore pipeline può essere visualizzata utilizzando un diagramma spazio-temporale. Ad esempio, considera un processore con 4 stadi e lascia che ci siano 2 istruzioni da eseguire. Possiamo visualizzare la sequenza di esecuzione attraverso i seguenti diagrammi spazio-temporali:

Esecuzione non sovrapposta:

Stage / Cycle 1 2 3 4 5 6 7 8
S1 I1 I2
S2 I1 I2
S3 I1 I2
S4 I1 I2

Total time = 8 Cycle

Overlapped execution:

Stage / Cycle 1 2 3 4 5
S1 I1 I2
S2 I1 I2
S3 I1 I2
S4 I1 I2

Total time = 5 Cycle

Pipeline Stages

Il processore RISC ha una pipeline di istruzioni a 5 stadi per eseguire tutte le istruzioni nel set di istruzioni RISC. Di seguito sono riportate le 5 fasi della pipeline RISC con le rispettive operazioni:

  • Stage 1 (Instruction Fetch)
    In questa fase la CPU legge le istruzioni dall’indirizzo nella memoria il cui valore è presente nel program counter.
  • Stage 2 (Instruction Decode)
    In questa fase, l’istruzione viene decodificata e si accede al file del registro per ottenere i valori dai registri utilizzati nell’istruzione.
  • Stage 3 (Instruction Execute)
    In questa fase vengono eseguite le operazioni ALU.
  • Fase 4 (Accesso alla memoria)
    In questa fase, gli operandi di memoria vengono letti e scritti da/verso la memoria presente nell’istruzione.
  • Stage 5 (Write Back)
    In questa fase, il valore calcolato/recuperato viene riportato nel registro presente nelle istruzioni.

Prestazioni di un processore pipeline
Considerare una pipeline di segmento ‘k’ con tempo di ciclo di clock come ‘Tp’. Lascia che ci siano ” n ” attività da completare nel processore pipeline. Ora, la prima istruzione prenderà cicli ” k “per uscire dalla pipeline, ma le altre istruzioni” n-1 “prenderanno solo cicli” 1 “ciascuno, cioè un totale di cicli “n – 1”. Così, il tempo impiegato per l’esecuzione ‘n’ istruzioni di un processore pipeline:

 ETpipeline = k + n – 1 cycles = (k + n – 1) Tp

Nello stesso caso, per un non-processore pipeline, il tempo di esecuzione ‘n’ istruzioni sarà:

 ETnon-pipeline = n * k * Tp

Così, speedup (S) del processore pipeline non-processore pipeline, quando ‘n’ compiti vengono eseguiti sullo stesso processore:

 S = Performance of pipelined processor / Performance of Non-pipelined processor

Come le prestazioni di un processore è inversamente proporzionale al tempo di esecuzione, abbiamo,

 S = ETnon-pipeline / ETpipeline => S = / S = / 

Quando il numero di attività ‘n’ sono significativamente maggiori rispetto a k, che è, n >> k

 S = n * k / n S = k

dove ” k ” è il numero di stadi della pipeline.

Inoltre, l’Efficienza = velocità up / Max speed up = S / Smax
sappiamo che, Smax = k

Così, Efficienza = S / k

Throughput = Numero di istruzioni / tempo Totale per completare le istruzioni

Così, il Throughput = n / (k + n – 1) * Tp

Nota: I cicli per istruzione (CPI) il valore di un ideale processore pipeline è 1

vedere il Set di 2 per le Dipendenze e i Dati di Pericolosità e Impostare 3 Tipi di pipeline e di Stallo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *