View Single Post
Old 08-05-2009, 12:06   #32
shodan
Senior Member
 
L'Avatar di shodan
 
Iscritto dal: Sep 2001
Città: Pescara
Messaggi: 3695
Quote:
Originariamente inviato da gondsman Guarda i messaggi
Eccomi!
L'architettura x86 non e' inefficiente rispetto agli ARM, e' inefficiente e basta.
E' ovvio che un ARM vada piu' lento (e parecchio) di un x86: e' pensato per soluzioni embedded e punta molto sul risparmio energetico e altre features che su un PC non servono a niente. I processori Intel e AMD, d'altra parte, sono sviluppati con tecnologia allo stato dell'arte e sono incredibilmente ottimizzati con soluzioni hardware all'avanguardia. Inoltre lo sviluppo di compilatori x86 e' decisamente avanzato in confronto a quelli per altre architetture.
Il fatto e' che l'ISA x86 e' vecchio, inadeguato e incredibilmente complesso. I processori x86, per mantenere la retrocompatibilita', sono costretti a implementare in hardware strutture capaci di eseguire tutte le istruzioni dell'ISA (oltre a quelle MMX, SSE, SSE2, SSE3...). "Questo i tecnici della Intel lo sanno benissimo e getterebbero volentieri il set di istruzioni x86 nella baia di San Francisco, se non fosse per le stringenti leggi anti-inquinamento in vigore in California"[1]. Gli stessi programmi, facendo uso di un ISA piu' snello e moderno, consentirebbero di liberarsi di molti "pezzi" del processore, rendendolo piu' piccolo, meno costoso e piu' efficiente.
Tutto il discorso si traduce nel fatto che esistono miliardi di applicazioni "legacy" che nessuno vuole (o sa) riscrivere, quindi cambiare architettura su PC e' semplicemente impossibile in questo momento. Questo comporta che sull'x86 siano stati investiti una quantita' di soldi inimmaginabile, portando i processori Intel compatibili a essere i piu' veloci sul mercato nonostante un ISA pessimo. Su dispositivi embedded questa necessita' di retrocompatibilita' e' di gran lunga ridotta, quindi e' ovvio che qui possano prendere piede anche soluzioni alternative come ARM.
[1] Andrew S. Tanenbaum, Structured Computer Organization, Prentice Hall, 2006
Ciao,
capisco quello che vuoi dire e condivido il fatto che ARM ha un netto margine di vantaggio per quanto riguarda i consumi, ma credo che stai trascurando alcuni aspetti:
1) se è vero che l'ISA x86 non è il massimo, è anche vero che i maggiori grattacapi vengono dati dalle istruzioni x87. Queste istruzioni ormai possono essere in gran parte abbandonate, in quanto le SSE2 permettono di sostituire quasi completamente le istruzioni x87 (per esempio, su tutte le architetture x86-64 il GCC 4.x sfrutta di default le SSE2 al posto delle istruzioni x87);
2) con l'introduzione del set x86-64, AMD ha rimosso diverse istruzioni e opcode raramente utilizzati e ha uniformato in diversi modi le altre istruzioni. Tanto per fare un esempio, è stata rimosso l'opcode di incremento (INC) in quanto c'era già quello di addizione (ADD) che faceva egregiamente il suo lavoro. Altro esempio: è stata rimossa la modalità virtual-386; è questo il motivo per cui i sistemi Windows x64 _non_ fanno girare diversi programmi DOS;
3) è vero che il deconding delle istruzioni CISC nelle micro/macro ops RISC interne porta via spazio sul silicio e un aumento del consumo, ma a livello prestazionale non incide più di tanto in quanto i decoder sono calibrati per alimentare in maniera adeguata il back-end di elaborazione. Oltre a questo, considera che avere un'ISA esterna di tipo CISC comporta un migliore uso della RAM e della cache, in quanto le istruzioni sono più "dense". Uno dei motivi per cui i processori RISC sono stati i primi a usare cache di una certa dimensione (l'Alpha aveva 96 KB di L2 on-die) è proprio perchè le loro istruzioni occupavano, mediamente, più memoria;
4) se parliamo di Atom, i processori ARM sono tutto sommato comparabili in quanto a velocità/capacità. Se però tiriamo in ballo genericamente tutta la famiglia x86, il paragone non regge: seppur in qualche modo penalizzate dalla loro ISA esterna, i processi x86 hanno mostrato una densità di potenza notevole, e si sono fatti strada anche nel mercato dei supercomputer. Ovvio che, oltre una certa soglia, aumentare la velocità del processore sia inefficiente da un punto di vista energetico, ma questo è il prezzo da pagare per avere le migliori prestazioni in assoluto. Per esempio, un'archiettura out-of-order consuma sicuramente di più di una in-order, ma nel codice con molti salti e/o accessi alla memoria è incontestabilmente più veloce.

Detto questo, come giustamente hai fatto notare, anche i progettisti Intel vorrebbero girare pagina e ripartire con un'ISA e un'architettura completamente nuova, e in realtà lo hanno già fatto con ITANIUM. Hanno adottato un'architettura in-order e un ISA VLIW supportati da un back-end di prim'ordine, dando così a quei processori un'efficienza niente male. Nel normale codice applicativo, però, spesso un x86 è più veloce in quanto il codice delle normali applicazioni spesso è poco parallelizzabile ed è pieno di salti condizionali. Nelle applicazioni in cui il core VLIW può stendere la gambe, però, ITANIUM è un missile!

Comunque siamo finito abbastanza off-topic...

Ciao.
shodan è offline   Rispondi citando il messaggio o parte di esso
 
1