Newsgroup: it.comp.hardware.cpu
Titolo: [info] P4 e protezione antifusione

Spero di aver scelto un "subject" comprensibile. ^_^
se ho capito bene, da un precedente post, il P4 ha un sistema che lo
protegge dal surriscaldamento eccessivo che lo rallenta, ma senza
toccare la frequenza.
Negli Z80, la ram poteva forzare la cpu dei cicli di wait, in cui la
cpu non faceva niente in attesa dei dati.
Il sistema di protezione del P4 non potrebbe usare un sistema simile?
Quando il sensore avverte che la temperatura e' troppo alta, vengono
forzate una serie di istruzioni nulle, quando la temperatura e'
abbastanza bassa, riprende a funzionare normalmente.
Non mi sembra troppo difficile da implementare nel nucleo della CPU.
Felice Claudio
--
Chi preferisco?
AMD per le migliori cpu, Intel per il miglior marketing.
le mie effettive esigenze per la scelta :-P

abbastanza bassa, riprende a funzionare normalmente.
questa e' una cosa profondamente diversa: il segnale "wait" impone alla
cpu di non terminare l'istruzione corrente. invece per forzare istruzioni
nulle (anzi, istruzioni halt), l'istruzione corrente deve prima di tutto
terminare...
ricordando che un circuito cmos dissipa potenza solo durante le
transizioni 0-1-0 (o 1-0-1, e' uguale) dei segnali, la soluzione migliore
(e piu' semplice) rimane quella di "fermare" il clock, e quindi tutti gli
altri segnali (e' un circuito sincrono). per questo basta solo una porta
logica (nand, nor ...).
nella realta' pero' le cose potrebbero non essere cosi'semplici: all'interno
del processore c'e' un pll che si occupa, partendo dal clock
esterno(fsb) di generare il clock interno, mantenendo la differenza di
fase tra i due costante. la porta and quindi dovrebbe essere all'interno
dell'anello di retroazione del pll. se fosse all'esterno, il ritardo da
essa introdotto non potrebbe essere compensato...
con moltiplicatori alti il ritardo introdotto dalla porta _potrebbe_ non
essere trascurabile.
la cosa brutta e' che se si maschera la linea di clock, il pll smette di
funzionare. riattivando la linea, c'e' un certo tempo da attendere prima
che il clock generato torni alla giusta frequenza ed in fase con il clock
esterno. 
e' lo stesso motivo per cui cambiare il moltiplicatore durante il funzionamento
non e' banale.
poiche' si riesce a cambiare il moltiplicatore, e' probabile che si
possano usare altri segnali che inibiscano la linea di clock "interna" che
va al resto della cpu, per alcuni cicli di clock (esterno)  appena dopo il
cambio.
ma l'unico modo che mi viene in mente per fare questo e' usare la
porta and di cui sopra :)
quindi la mia ipotesi e' che per "spegnere" il processore non facciano
altro che inibire il clock generato dal pll, con un driver _fuori_
dall'anello del pll. 
inserire stalli nelle pipeline (si puo' utilizzare il circuito di
generazione stalli usato per aspettare i dati da cache o ram), non
"ferma" molti segnali e quindi e' meno efficiente.
forzare il comportamento dell'istruzione halt potrebbe invece portare a
situazioni equivalenti... imho l'and e' piu' semplice.

 toccare la frequenza.
Ti sintetizzo quello che ho capito io: nel P4 sono integrati un sensore
termico sul die e un circuito di controllo, chiamato TCC (Thermal Control
Circuit). Se la temperatura supera un determinato valore di soglia, il TCC
interviene lasciando la frequenza del processore inalterata, ma facendo si'
che solo una determinata percentuale dei cicli di clock venga realmente
utilizzata (il 50% se il funzionamento del TCC e' lasciato in automatico;
altrimenti e' possibile impostare una certa percentuale sulla base di un
intervallo di valori predefiniti). Dal punto di vista pratico, le
prestazioni ovviamente decadono come se
stessi dimezzando la frequenza di lavoro della CPU...
Oltre al TCC esiste un ulteriore meccanismo di protezione dal
surriscaldamento che si attiva in casi estremi
(quando la temperatura del processore raggiunge i 135° C) spegnendo del
tutto la CPU.
Saluti...

Non mi sembra troppo difficile da implementare nel nucleo della CPU.
diciamo che oggi ci sono meccanismi un tantino piu' efficaci dei
vecchi cicli a vuoto... :-)
e' possibile spegnere totalmente il prcessore, lasciando attivi
soltanto alcuni registri speciali che controllano l'accadere del
trigger per la riattivazione - vedi la funzione HLT.
e sono possibili soluzioni ancora piu' complesse, vedi le versioni per
portatili di amd e - un po meno efficiente - intel.
--
    (iao!!oai)                                    (ICQ: 10860566)
    //.aurizio
[WARNING!: a breve 
m.mu...@iol.it
 verra' disabilitato, usate il nuovo indirizzo]
[WARNING!: togliete _nessuno_ per rispondere]
    Time may change me
    But I can't trace time