[gl-como] Chi ha detto che i MIPS sono processori spompati?

Nicola Viganò ben.vighy@gmail.com
Ven 4 Feb 2011 00:06:03 CET


Il 03/02/2011 20:50, ADB ha scritto:
> Infatti...pipeline lunghe sono si convenienti, ma molto a rischio,
> come nell'architettura odierna degli X86 dove si tende ad usare
> pipeline lunglissime...
> Chissà perchè Apple ha abbandonato i POwerpc in favore di una
> architettura si più "popolare" ma secondo me poco efficiente...Bah
> penso solo Marketing, tanto è vero che IBM che non è l'ultima arrivata
> e che fa dell'architettura power il so cavallo di battagli DA SEMPRE,
> continua ad usarli in quasi tutti i suoi server....
>
> Anche dopo aver "sentito dire da tutti" che l'architettura Power era
> al suo "naturale fine techologico e quindi difficilmente ancora
> scalabile in frequenza, Il grande Blue, ha tirato dritto e ha
> contimuato a sfornare CPU-Killer per il mercato server sempre più
> potenti.
>
> Io sono dell'idea che "poco ma buono" => istruzioni semplici, che non
> riempiono i cicli di clock inutilmente, (e di conseguenza anche
> facilità progettuale-numero basso di transistor-equivalenti) guarda
> caso i Power (ma anche gli ARM o i MIps)  hanno (ora) reletivamente
> poche istruzioni-base rispetto agli X86 e guarda che caso rullano di
> BBBBrutto, ripeto, sarà solo un caso,.
>
> Etu che ne pensi, visto che vedo sei ferratissimo sull'argomento?
> Quale sarebbe, secondo te, l'architettura col rapporto potenza di
> calcolo/numero di transistor (quindi anche consumo) migliore sul
> mercato? Fermo restando quello che hai già detto sulla compilazione
> nell'ultimo thread...e tutto quello che ne consegue..
Vedo che sei molto sull'eterna lotta CISC vs. RISC! :)

In realtà ammetto che me la cavo meglio dal punto di vista della
programmazione.
Purtroppo uno dei motivi per cui rimpiango un po' ing informatica è
proprio il fatto che ad ing fisica non ho dato esami di compilatori ed
architetture di calcolatori.
Mentre però per quanto riguarda i compilatori, mi sono studiato il
funzionamento e gli algoritmi per conto mio, nella parte di architetture
ho solo le conoscenze generiche/teoriche necessarie per far del buon HPC
(del resto è proprio quello che sto facendo di tesi qui in Francia!)

Quel che so dall'informatica teorica è che la complessità di un
algoritmo può essere ridotta ampliando l'alfabeto/lessico dell'architettura.
Quindi dal punto di vista teorico, avere un set di istruzioni esteso non
è mai un male, poiché accelerare in HW (con istruzioni che puoi
considerare a tempo costante O(1) ) delle cose che altrimenti dovresti
far in SW (con procedure a tempo O(n) oppure O(log n) ) non è per niente
male!
In pratica bisogna ammettere che le istruzioni SIMD (SSE, SSE2 etc) in
alcuni casi fanno proprio la differenza.

Tu introduci però altri aspetti che vanno al di là della pura potenza di
calcolo: grandezza del die e TDP. Su questi non sono per nulla ferrato,
e per quanto mi riguarda, dal punto di vista lavorativo, per me il
computer deve essere solo il più potente possibile!!

Ammetto però che la tecnologia ARM mi solletica mica male, e mi sono
informato un po'. A settembre avevo avuto una interessantissima
discussione con due studenti Phd del gruppo compilatori al polimi, ed
erano saltate fuori molte cose cose interessanti.

Ovviamente come prima cosa mi avevano ricordato che l'architettura x86 è
molto complessa per motivi "legacy", ossia teoricamente potresti far
girare programmi scritti e compilati negli anni '70 sui nuovissimi i7
2600k tranquillamente. Potrebbe far ridere ma è vero, e quello che è
ancora più bizzarro è che c'è chi lo fa!!
Infatti, per quanto ne so io, in ambito scientifico esistono delle
vecchie librerie scritte in fortran, compilate 30 anni fa, che ora
possono solo essere linkate, perché al giorno d'oggi non compilerebbero
più (a meno di abilitare certe flag permissive nei compilatori) che
senza il supporto legacy non potrebbero più esser utilizzate! Si farebbe
in fretta a dire: riscriviamole! ma sono ormai oscure da comprendere.. e
allo stesso tempo stravalidate (nell'arco di 30 anni..) e quindi
sicuramente funzionanti alla perfezione!

Ricordo poi, che durante quella discussione a settembre, erano usciti
anche gli ARM, come tecnologia fresca e potente, e quello che ricordo
con piacere era proprio che potessero lavorare con diversi tipi di
instruction sets allo stesso tempo, semplicemente cambiando il supporto
di volta in volta a runtime.
Ovviamente avere la possibilità di usare un IS a 16bit, e quando
necessario passare a 24 o 32 per poi ritornare indietro è proprio un bel
vantaggio! del resto quando si parla di numero di istruzioni che fittano
in cache, la dimensione delle istruzioni conta... eccome se conta!!

Purtroppo però, nonostante tutte queste belle features, per il calcolo
pesante, non c'è né x86, né ARM, né powerpc... c'è solo la GPU! :)
Bisogna ammettere che però la GPU ha dei problemi intrinseci notevoli:
relativamente poca memoria rispetto a quanta ne può averea diposizione
la CPU ed il bus pci-express che è il vero e proprio collo di bottiglia.
Dipende tutto molto dalle applicazioni, dagli algoritmi e dalla
struttura della memoria (infatti l'allineamento e la sequenzialità dei
dati conta tantissimo).

Tralasciando però la GPU, in cui dovremmo aprire un capitolo di ore ed
ore di discussione, e rimanendo sul campo CPU, se dobbiamo parlare di
potenza pura, purtroppo ancora oggi si preferisce gli x86. Con queste
nuove istruzioni vettoriali poi, diventano sempre più competitivi. Basta
vedere le nuove AVX di intel che promettono miracoli. Staremo a vedere!

Come vedi, dalla mia risposta non esce un quadro chiaro. Io sono più
dell'idea: per ogni applicazione la sua architettura.

Pace!
Nicola


Maggiori informazioni sulla lista gl-como