Newsgroup: it.comp.hardware.cpu
Titolo: Perdonate l'ignoranza

ma leggendo articoli sulle cpu
viene sempre detto
che il numero di stadi influenza la capacità
di salire di clock ma non viene mai spiegato perché
evidentemente è cosa ovvia, ma io non la so
qualcuno è così gentile da spiegarmelo ?
Grazie

 evidentemente è cosa ovvia, ma io non la so
chiaramente intendo il numero di stadi in cui è suddivisa
la pipeline, sono stato un po' troppo conciso

:
news:Ltai8.9034$
tC3.2...@twister1.libero.it
-- 
"It is not enough to succeed.  Others must fail."
Linux Registered User #301571, running Slackware
Memeber of Luganega - Linux User Group Crema
http://filibusta.crema.unimi.it/

:
news:qSai8.8177%2524%2525d1.220084%
2540twister2.libero.it


:
news:qSai8.8177$%
d1.2...@twister2.libero.it


 news:qSai8.8177$%
d1.2...@twister2.libero.it
il messaggio che mi hai indicato spiega
l'utilizzo di pipeline lunghe, ma non dice
perché processori con pipeline più lunghe
riescono a salire di clock più di quelli con
pipeline più corte

 pipeline più corte
Ragionaci su... più "spezzetto" le istruzioni più corto è il tempo
necessario ad eseguire ogni "pezzetto" di istruzione.


 necessario ad eseguire ogni "pezzetto" di istruzione.
certo
ma io mi chiedo perché il pentium 4 arriva a 3 ghz tranquillo
mentre l'athlon non ce la fa a superare 2,2 ghz ?
la giustificazione più frequente che ho letto
è proprio la pipeline differente nei due processori
ossia processore con pipeline lunghe possono
salire molto di clock mentre quelli con pipeline lunghe hanno dei
problemi: è questo che chiedo

 problemi: è questo che chiedo
Avendo una pipeline più lunga il P4 può suddividere ogni istruzione in un 
maggior numero di operazioni più corte rispetto a quanto possa fare Athlon.
Questo significa che l'operazione più lunga eseguita da un P4 è più corta di
quella eseguita da un Athlon, permettendogli quindi (vedi il messaggio a
cui ti ho mandato prima) di operare a frequenze di clock più alte.


problemi: è questo che chiedo
La frequenza di clock massima è determinata da molti fattori; i più
importanti sono il calore prodotto (sopra una certa temperatura il
sistema diventa instabile) e ovviamente l'architettura del chip.
Ora, considerando il secondo fattore, in generale più un chip è
complesso più la sua scalata in frequenza è limitata; se il chip è
diviso in diverse subunità, ovviamente quella che sale di meno fa da
"collo di bottiglia" e limita la frequenza dell'intero chip. Il P4 usa
una pipeline a 20 stadi, l'Athlon a 10; questo vuol dire che gli stadi
della pipeline del P4 sono più semplici di quelli della pipeline
dell'Athlon e quindi consentono al processore di salire meglio in
frequenza. Ovviamente questo approccio ha anche dei contro, perché
quando si sbaglia a predire un salto e la pipeline va in "stallo" la
penalità da pagare è esattamente doppia (devi "buttare via" il doppio
delle operazioni).
-- 
ZHELGADIS THE LIGHTBRINGER (ICQ 33134824)
BAG #008,DPPSJ #000,BAT #013,TFC #012, GAMERDA #026
"Aspettare non è mai stato un problema, per me.
Posso trascorrere piacevolmente ore e ore con l'aiuto di un buon caffè"

 delle operazioni).
ti ringrazio per la risposta


Inoltre c'è anche da dire che una pipeline più profonda consente si
di poter arrivare a frequenze di funzionamento della cpu maggiori,
ma di conseguenza tale profondità di pipeline necessitano
di funzionare a frequenze più alte per eseguire la stessa quantità
di lavoro di una pipeline più corta funzionante ad una frequenza
inferiore.
Ciao

inferiore.
Beh, questo per il problema degli stalli, perché "a regime" da una
pipeline dovrebbe comunque uscire una istruzione completa per ciclo di
clock...




scusami se sono un po' poco tecnico, ma l'esempio piu' classico per
spiegare il problema e' la catena di montaggio...
immaginati una fabbrica automatizzata di automobili - arriva il telaio
semiassemblato, un braccio robotico prende la carrozeria e la
installa, mettendoci un minuto, un motore e lo installa, mettendoci un
minuto - poi prende la portiera sinistra e la installa, mettendoci un
altro minuto, poi prende la portiera destra e la installa, altro
minuto, poi la ruota anteriore sinistra, poi quella anteriore destra,
posteriore sinistra, posteriore destra...  (pèr rapportare l'esempio
alla versione computativa, qui stiamo parlando di automi quindi il
tempo necessario per compiere ogni operazione e' il minimo possibile -
la pura e semplice latenza necessaria al segnale per propagarsi per i
vari transistor percio' aumentare il clock e' inutile).
tempo totale otto minuti.
altra catena di montaggio, arriva il telaio, otto bracci robotici
calano installano ciascuno il proprio componente, tempo totale due
minuti , ma se uno dei bracci ha un problema (diciamo che siano finiti
i bulloni per montare il motore), tutti ed otto devono stare fermi in
attesa che questo sia risolto - la velocita' massima teorica aumenta
drasticamente ma considera che hai una macchina estremamente piu'
complessa e ogni "segmento" e' molto meno efficiente - there are no
such things as free lunches....
ovvio che -considerando la genericita' di queste "catene di
montaggio"- la soluzione piu' efficiente sarebbe quella di averne
-otto- in parallelo (in questo caso se uno dei "bracci" ha un problema
gli altri sette vanno comunque avanti per i fatti propri), piuttosto
che una spezzettata in otto segmenti, ma purtroppo X86 gradisce molto
poco il parallelismo interno (per questo vengono introdotti trucchetti
sempre piu' estremi, dal passaggio fra x86 a Risc86 all'HT alle
soluzioni del k8 ecc...)
--
    (iao!!oai)                                    (ICQ: 10860566)
    //.aurizio
[WARNING!: togliete _nessuno_ per rispondere]
    Il segreto per essere considerato un creativo sta nel non fare
    mai riconoscere le proprie fonti [A. Einstein]


perche' i vari transistor hanno un determinato tempo minimo di
risposta, al di sopra del quale non sono piu' operativi.
quindi se hai una "linea" (i cosiddetti datapath critici) di mille
transistor ognuno dei quali ha un tempo minimo di risposta da 1uS il
clock massimo possibile sara' di 1ghz visto che il segnale deve
transitare linearmente in ognuno dei transistor, quindi la latenza si
somma, e non puoi introdurre un nuovo segnale (un nuovo ciclo di
clock, una nuova istruzione, vedila come preferisci) nella "linea"
finche' l'intero ciclo non e' stato eseguito.
spezzettando la "linea" in N segmenti il tempo necessario ad operare
ognuno dei segmenti e' T/N, il tempo complessivo perche' l'operazione
venga eseguita (da quando viene introdotta a quando "esce" dalla pipe)
rimane T (teoricamente, ovvio che l'efficienza cala visto che la
complessita' aumenta) ma in questo caso via via che ogni segmento ha
compiuto la propria parte di lavoro puoi introdurci un nuovo compito,
quindi una volta che la pipeline e' a regime ti trovi con N "compiti"
eseguiti in tempo T+T/N (meno la perdita di efficienza) :-).


 --
Certamente... anche se il discorso che ho fatto è valido indipendentemente
da quando la pipeline è a regime o meno.
Ciao