linux user group brescia

immagine del castello

Archivio della mailing list

-march=pentium4

Luca Giuzzi giuzzi a lugbs.linux.it
Mar 11 Nov 2003 17:16:20 UTC
On Tue, Nov 11, 2003 at 07:02:23PM +0100, Vernia Damiano wrote:
> 
> On Tue, 11 Nov 2003, Luca Giuzzi wrote:
> > > 	Cioe'? Questi sono segnati come 2.8 GHz, vuol dire 11,2 GHz in
> > > tutto o "solo" 5,6? (Evitiamo di entrare nella discussione sulla
> > > sincronizzazione e simpatici ammenicoli dell'SMP, cosi' con parole
> > > semplici ci capiamo).
> > Che 'vvo di'? 
> 
> 	Ok, cerco di spiegarmi meglio. Ecco il /proc/cpuinfo 
> (stagliuzzato) della macchina in questione:
> 
Ok...
 Hai un grazioso Quad Xeon (core PentiumIV)...
 ogni processore e' a 2.8Ghz e viene "interpretato"
 grazie alla magia dell'hyperthreading come avente 2
 "figli" (unita' di esecuzione indipendenti).
 Il fatto che l'ID fisico sia 0 in tutti e 4 i casi
 non ti deve preoccupare, in quanto l'arbitrazione viene
 fatta dalla MB.

> 
> 	Io non so come si "inventi" questi valori, so soltanto che dentro 
> lo scatolotto ci sono fisicamente due processori.
> 	Ora, come interpretate i "bogoMIPS" che sono spannometricamente il 
> doppio dei "cpu MHz"? Inoltre, quanti processi possono girare 

I "bogomips" sono esattamente quello che dici "spannometricamente" una
 misura della velocita' (da cui il prefisso "bogo" > bogus) ... nel caso
 dei pentium (II,III,IV) sono circa 2*Mhz ...

> contemporaneamente su questa macchina senza interrompersi a vicenda? Se 
lascia perdere... la domanda e' ragionevole, ma non e' possibile
dare una risposta diretta sensata.
[la risposta "brutale" e': 4 cpu => 4 processi]
ci sono sempre dei kernel threads in esecuzione/migrazione di processi/
gestione irq (inclusi gli NMI) arbitrazione del bus e sincronizzazione
delle cache fra le 4 cpu fisiche... i processi in esecuzione
"contemporanea" sono, alla fine di tutto, sempre uno ... alla risoluzione
della frequenza di clock (e per quanto visibile dall'OS) sono un
numero compreso fra 4 e 8 (a seconda di quanto bene l'hyperthreading
parallelizza... se il tuo codice usa l'FPU in modo intensivo la risposta
e' 4) :))
[il vantaggio effettivo di avere piu' CPU e di poter settare l'affinita' di un
processo al processore e' che un processo puo' continuare a girare
apparentemente senza mai interrompersi, senza dunque avere dei
cambiamenti di contesto non voluti]

> ciascuno di essi esegue esclusivamente (ad esempio) NOP, che ipotizziamo 
> utilizzare un solo ciclo di CPU, quante NOP vengono in totale eseguite in 
> un secondo? ~5600, ~11200 , ~22400 o cos'altro?

Mah... le cose non sono cosi' semplici (attento MIPS=Million Instruction
 per second ... hai sbagliato di qualche ordine di grandezza :))) )
in generale la NOP potrebbe anche essere eseguita in zero (!) cicli di
clock ... in un ciclo di cpu (come tu dici) di solito non esegui
alcuna operazione [il decoding delle istruzione richiede tempo...
non mi ricordo quanto e' lunga la pipleline del pentium IV ma mi pare
12 o 14, per cui ci vuole tempo solo per la predecodifica... alcune
istruzioni (quasi tutte) hanno bisogno di piu' cicli per venire
eseguite, etc. etc.]

In generale, la stima di velocita' dovrebbe essere fatta su applicazioni
specifiche e comparata su quelle.
Se usi codice numerico, ad esempio, vale la pena di testare le cose
con la libreria ottimizzata atlas oppure (per avere una idea della
"baseline performance") con la blas classica.

ciao,
 lg




> 	Grazie per le spiegazioni
> 
> -- 
> 							Ciriciao
> 						LtC. Melkor?! B. Xapatan

-- 



Maggiori informazioni sulla lista Lug