Personal computer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pizeta (discussione | contributi)
m →‎DLX in Pipeline: visualizzazione tabella
Pizeta (discussione | contributi)
Riga 1 133:
 
Nonostante questi accorgimenti, una pipeline così costruita funzionerebbe bene se le istruzioni fossero tutte tra di loro indipendenti, qualora non lo fossero si verificherebbero delle '''alee''' o '''conflitti''' (in inglese ''Hazard''), che possono essere di tre tipi:
 
* ''Conflitti strutturali'' che derivano da problemi nell'uso delle risorse
* ''Conflitti tra dati'' che si verificano quando un'istruzione dipende dai risultati dell'istruzione precedente
* ''Conflitti di controllo'' che sono legati alle diramazioni e alle istruzioni che modificano il PC
 
Un'alea nella pipeline rende necessario l'arresto della stessa, ovvero uno '''stallo''.
Uno stallo richede che alcune istruzioni possano proseguire per consentire di risolvere il conflitto, mentre altre debbano essere sopsese, questo ovviamente comporta un peggioramento delle prestazioni, ovvero il CPI di un'istruzione sarà il CPI ideale ( 1 ) più il numero di stalli necessari per risolvere il conflitto.
 
 
=== Conflitti strutturali ===
 
Dato che l'esecuzione delle istruzioni non è più lineare, ma sovrapposta, per rendere possibili le diverse combinazioni di istruzioni da eseguire contemporaneamente sono necessari dei collegamenti tra i diversi stadi della pipeline. Se mancano alcuni collegamenti, ovvero alcune combinazioni non sono possibili, si dice che la macchina presenta ''conflitti strutturali''.
 
Per esempio una macchina potrebbe disporre di un'unica memoria per dati ed istruzioni, ciò comporta uno stallo ogni volta che viene eseguita un'istruzione con riferimento ai dati in memoria perchè la macchina non può eseguire l'operazione di IF che comporta la lettura in memoria dell'istruzione da eseguire
 
''Istruzione di caricamento'' IF ID EX MEM WB
''Istruzione i+1'' IF ID EX MEM WB
''Istruzione i+2'' IF ID EX MEM WB
''Istruzione i+3'' '''stallo''' IF ID EX MEM WB
 
L'istruzione i+3 non può iniziare finchè l'istruzione di caricamento non libera l'unica porta di memoria disponibile.
 
I conflitti strutturali comportano un CPI inferiore e sono sempre risolvibili aumentando la complessità, e quindi i costi, della macchina. La realizzazione di una pipeline completa (senza conflitti strutturali) comporta, inoltre, un aumento dei tempi di latenza delle operazioni che in alcuni casi si può trasformare in un peggioramento delle prestazioni
 
 
=== Conflitti tra dati ===