Newsgroup: it.comp.hardware.cpu
Titolo: Niagara II

Secondo questo articolo:
http://www.theregister.co.uk/2006/08/22/sun_niagaratwo/
Sun ha confermato i dettagli riguardo "Niagara II"
ovvero il nuovo UltraSparc successore del T1 "Niagara".
Il nuovo chip resta ad 8 core, ma questa volta
ogni core ha la FPU integrata (sui T1 era una unita
a parte condivisa in modo trasparente dagli 8 core)
con 8 thread per core (sui T1 erano 4 per core)
e con unita di accelerazione crittografica per core.
La cache L2 condivisa passa a 4MByte (il T1 3MB)
e questa volta ci sono 4 controller dual-channel FB-DIMM
per 8 canali FB-DIMM complessivi (il T1 aveva 2 controller
dual-channel per DDR2 per un totale di 4 canali DDR2).
Ed oltre a questo, sempre integrati nel chip ci sono
2 controller ethernet a 10GBit ed una porta PCI-E.
Il Niagara II avra' un clock di 1.4GHz, ma per applicazioni
da server quei 64 thread in esecuzione simultanea
con i vari "accessori" descritti sopra, dovrebbero fare
una bella differenza.
Notare che il clock non e' stato spinto piu di tanto
perche con 64 thread in esecuzione simultanea tutto
il resto del sistema e' gia piu che carico
(ovviamente se si sfruttano tutti i thread disponibili).
I sistemi "standard" che utilizzerrano Niagara II saranno
Michigan (1U) con supporto per 64GB di ram
ed Uron (2U) con supporto per 128GB di ram.
A seguire ci sara' "Victoria Falls" con 4 socket
(e quindi 256 thread in esecuzione simultanea).
I primi Niagara II dovrebbero essere in vendita nel 2007.
Il T1 ha avuto un buon successo, con piu di 300 clienti
(e per "clienti" si tratta di grossi clienti che comprano
  in grossi quantitativi) ed il Niagara II
punta a ripetere e migliorare quanto fatto con il T1
infatti non e' un caso se vengono proposti in versioni
"da rack" (U1 ed U2) ovvero roba che va installata
su web farm, centri di calcolo grossi o centrali
di compagnie di telecomunicazioni.
Se si guarda alle modifiche piu importanti
mentre i thread sono "solo" raddoppiati, la capacita
*di picco* di elaborazione in floating point e' stata
aumentata di 4..8 volte (dipende da cosa hanno sacrificato
rispetto alla FPU "condivisa" precedente)
e la presenza dell'acceleratore crittografico alza ancora
di piu le prestazioni nelle applicazioni in cui il T1 si
trovava gia a suo agio.
La transizione verso i "multicore massicci" degli UltraSparc
e stata relativamente indolore perche i "vecchi" UltraSparc
erano rimasti indietro rispetto alla concorrenza
quindi gia con l'arrivo del T1 in media c'e' stato un bel passo
avanti in termini di prestazioni pure (nonostante i core
"piu semplici" ecc. ecc.).
Invece per gli x86 la cosa sara' piu complessa
perche un "multicore massiccio" x86  (con core "semplificati")
si ritrovera' ancora con una montagna di codice ottimizzata
per roba con relativamente pochi thread (e rischiera' di fornire
prestazioni inferiori rispetto ad un dual core o quad core
"con i core complessi" attuali o in prossimo arrivo).
L. Micheletto

 ovvero il nuovo UltraSparc successore del T1 "Niagara".
[CUT]
Qualche bench ,anche non convenzionale, che per quantificare la potenza di
una cpu simile nei calcoli in virgola mobile?
Oppure se lo dovessi paraganoare a dell'hw commerciale circa a cosa
corrisponderebbe?


Con codice "normale", probabilmente niente di spettacolare.
Il precedente "Niagara I" (il T1 era) stato pensato principalmente come
"macina interi" ed aveva la FPU su un unica unita funzionale a cui
i core accedevano tramite il crossbar switch, Niagara II probabilmente
e' orientato allo stesso tipo di applicazioni quindi le prestazioni
a livello floating point sono state incrementate probabilmente in un ottica
di prestazioni complessive (riportando le FPU sui core si e' ridotto
il traffico sul crossbar switch, cosa che aiuta ad avere globalmente
prestazioni migliori, visto che con 64 thread di sicuro c'e' molta
roba in transito).
Non ci sono sufficienti dettagli per capire a che livello arrivano
le prestazioni delle "nuove" FPU, comunque, ipotizzando che le FPU
possano produrre un risultato per ciclo, con codice che sfrutta tutti
e 64 i thread disponibili (in modo che appena si crea una "bolla" nelle
pipeline viene riempita con un istruzione di uno dei thread) si dovrebbero
ottenere 8 risultati floating point per ciclo di clock (5.6 Gflops con un
clock di 1.4Ghz).
Il problema semmai e' che il Niagara II ha la pipeline "degli interi"
ad 8 stadi, quindi con 8 thread per core da cui prendere 2 istruzioni
per ciclo (tutte e due dallo stesso thread, ma ad ogni nuovo ciclo la cpu
cambia thread scegliendo quello usato meno recentemente tra quelli
con istruzioni pronte) e' poco probabile che ci siano "bolle" nelle
pipeline degli interi quando ci sono abbastanza thread.
Invece la FPU e' a 12 stadi (e li le "bolle" sono piu probabili)
quindi le prestazioni reali "a pieno carico" saranno piu basse.
Notare che a differenza dei P4 con Hyperthreading, dove
le pipeline erano *molto lunghe* e c'erano solo due thread per core
con questa cpu le pipeline sono "corte" rispetto ai thread per core
( e la differenza si nota, visto che mentre Intel ha abbandonato
   l'Hyperthreading, Sun ha puntato senza indecisioni
   sul raddoppio dei thread rispetto al T1).
Con codice "bastardo"
(che provoca ogni genere di stalli nelle pipeline, ecc. ecc.)
invece potrebbero esserci delle belle sorprese sempre per il discorso
che ogni core di volta in volta puo scegliere tra 8 "fonti di istruzioni"
*certamente senza dipendenze tra loro*
(perche appartengono a thread diversi e se si hanno interdipendenze
  le ha gia sbrogliate il programmatore che ha scritto il codice)
e mandarle in esecuzione.
L. Micheletto



Grazie, chiaro ed esaustivo come sempre!