View Single Post
Old 27-08-2009, 07:34   #60
Pleg
Member
 
Iscritto dal: Sep 2007
Messaggi: 265
Quote:
Originariamente inviato da JackZR Guarda i messaggi
Ma in teoria ci sarà un numero oltre al quale non conviene andare?!
In numeri più o meno quanti core si potrebbero montare al massimo considerando dimensioni socket, frequenza (e quindi temperatura), nanometri e quant'altro?
La domanda e' fondamentale, ed e' difficile dare una risposta precisa: dipende da che applicazioni ci devono girare, e dal modello di programmazione e di memoria.

Un supercomputer riesce a sfruttare decine di migliaia di core, ma:
* devi programmarli in modo molto accorto, in genere gestendo direttamente il traffico dati (es.: MPI); la cosa e' una piaga sul culo, e' difficile, facilissimo fare errori che mandano in deadlock tutto il sistema, serve gente molto specializzata, e il costo finale del software e' molto alto
* usano sistemi operativi dedicati, non puoi metterci windows (e neanche ubuntu o MacOS
* altre piaghe varie

Il problema fondamentale e' dato dall'accesso alla memoria e dal traffico dati per tenere l'applicazione sincronizzata (coerenza dei dati).
Se vuoi avere shared memory, cache coherence in hardware in modo trasparente al programmatore... allora gia' a 16--32 core cominci a piangere. E devi tenerne conto _molto_ bene quando programmi, e possibilmente devi avere supporto dal sistema operativo.
Se vuoi sincronizzare tutto in software, le prestazioni possono crescere molto, e anche il numero di processori usabili in modo efficace... ma programmare diventa un dolore atroce.

Coi multicore vai meglio dei multiprocessori perche' essendo i core on-chip hai piu' banda e _soprattutto_ meno latenza nella comunicazione, ma il limite e' sempre li' vicino.
Pleg è offline   Rispondi citando il messaggio o parte di esso
 
1