Newsgroup: it.scienza.informatica
Titolo: Stallo delle Pipeline

Salve a tutti,
mi sorge questo dubbio: perché le istruzioni di branch e jump (e 
forse anche load e store, non ricordo) richiedono che la pipeline 
venga messa in stallo? grazie.
-- 
Lord Gas, the Waxen - Blasfemo di IFTMDG - Penguin's Enemy #1 
[ICQ: 57483751][the Waxen Pith: 
http://www.snipp.org/gas
]
... "Goddamn, there's always such a big temptation to be good"
... (Tom Waits - God's Away on Business)

 venga messa in stallo? grazie.
Il principio della pipeline è quella di suddividere il ciclo di esecuzione
di una istruzione in + fasi associate a pezzi di hw diversi. In questo modo
si possono avere + istruzioni a differenti livelli di avanzamento, un
contemporanea sullo stesso datapath (parte dell'hw cpu che maneggia i dati).
A volte può capitare che vi siano dipendenze fra le istruzioni per cui ad
esempio la lettura dei parametri di una debba attendere la fase di scrittura
di quella precedente. Ad esempio add r1 r2 r3 e poi add r3 r4 r5  ove i
primi sono i registri sorgente e l'ultimo la destinazione non possono essere
successive per ovvi motivi. Anche i branch (jump in/condizionati e robe tipo
call) possono causare problemi poichè le istruzioni ad esse sucessive
entrano in pipeline e poi magari non sono contenute nel corretto flusso di
esecuzione del programma.
Queste tematiche vanno sotto il nome di hazard delle pipeline. Naturalmente
ci sarebbe moltissimo da dire su come vengano risolte via hw o prevenute dal
compilatore.
Non ho presente invece cosa si intenda per stallo della pipeline.. se non
una situazione con due istruzioni mutuamente dipendenti in coda..
Trini.

 venga messa in stallo? 
Non ho idea di cosa intendi per 'stallo', comunque posso dirti che, per
velocizzare l'esecuzione, in caso di branch condizionale non ancora eseguito
ma in pipeline, il processore deve scegliere che istruzione successiva
mettere in pipeline, differente in caso di 'taken' o 'not taken'. Una volta
fatta questa scelta, se il processore ha sbagliato, gli tocca svuotare la
pipeline e far ripartire tutto dall'istruzione corretta.
Questo e' anche il motivo del perche' alcuni compilatori consentono macro di
'suggerimento' sul come considerare il branch.
Sul sito Intel se ne parla a fondo:
http://cedar.intel.com/cgi-bin/ids.dll/content/content.jsp?cntKey=Generic+Editorial%3a%3asolveit_mobile_optimize&cntType=IDS_EDITORIAL&catCode=BZC&path=13
-- 
Email address is protected by fee-based service.
Authorized senders will be white-listed.

 ha
scritto:

--------------------------------------------------------------------
Ciao! Ho visto solo ora il tuo msg di "help" ;-P ...e volevo, a proposito di
pipeline e stallo delle stesso, proporti un file pdf in cui il mio prof di
Architettura degli elaboratori, ha spiegato le pipeline ed il relativo
stallo. Purtroppo non č piů accessibile via rete, io potrei anche scriverti
un po di spiegazioni, ma sarebbe un pň lunghetto, quindi mi permetto
d'inviarti direttamente il file al tuo indirizzo e-mail sperando possa
esseti utile.
--------------------------------
Inviato via 
http://usenet.libero.it

 venga messa in stallo? grazie.
perche' fino a quando non le hai eseguite non sai quale codice verra'
eseguito in seguito (ergo non sai che mettere nella pipeline). Non ricordo
se stallo e' il termine corretto ... anche se non mi suona nuovo; se non
trovi risposta potrei cercare ( <> trovare ) i vecchi appunti di calcolatori
...
L.