|
|
|
![]() |
|
Strumenti |
![]() |
#81 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Quote:
![]() guarda che lo so benissimo che i MIPS al pari degli ALPHA degli SPARC dei PA-RISC erano RISC.. ![]() dove avrei detto il contrario? ![]() Io parlavo dei 68000 e quelli si che sono cisc.. basta usare un pò del loro assembly per rendersene perfettamente conto ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#82 |
Senior Member
Iscritto dal: Jun 2003
Città: vivo in Sicilia (tra la prov. di AG e Palermo)
Messaggi: 956
|
Io però non mi riferivo alle prestazioni, ma ad una qualche facilità nell'ottenere rapidamente un'ottimizzazione decente, senza però riuscire ad andare (molto) oltre i primi buoni risultati, con i RISC che invece progredivano senza soluzione di continuità, in un epoca in cui, comunque, l'ottimizzazione spinta era una necessità abbastanza pressante. Per arrivare ad oggi, con i RISC preferiti nei supercomputer dediti al calcolo scientifico più pesante, anche in virtu di algoritmi particolari, vecchi di decenni ma sempre validi, giunti nel tempo ad un livello di ottimizzazione eccellente proprio sui risc, ma anche in datacenter "cattivi", dove macinano database alla grande (ma in quest'ambito gli amd non sfigurano, ma anche gli xeon - un po' peggio però, dai 4 processori in su, per via dell'assenza di un controller integrato e dell'architettura NUMA, anche se i core 2 e derivati sono davvero molto veloci) anche senza logica ooo (perchè alla fine contano le prestazioni sugli interi e la parallelizzazione delle transazioni, e le ultime famiglie SUN, ad esempio, sono in order, ma multithreaded e multicore, quindi sopperiscono alla (potenzialmente) minore parallelizzazione a livello di istruzione con una notevole parallelizzazione a livello di thread/task). Sicuramente i motivi saprebbe spiegarteli meglio di me repne scasb, ad esempio (lei si diverte, nel tempo libero, a scrivere e ottimizzare compilatori, anche direttamente in esadecimale
![]() Effettivamente, i primi x86 non reggevano il confronto con i 68K, che avevano soluzioni molto più intelligenti (ad esempio, gli x86 usavano dei multiplexer per accedere virtualmente a qualsiasi registro contemporaneamente, ma non serviva e quindi era uno spreco di transistor e denaro, mentre i 68k usavano più intelligenemente un bus - più altre cosucce interessanti). Col tempo, però, l'isa x86 è stata sistemata, e come giustamente dicevi non c'è più una grandissima differenza tra CISC e RISC. Forse le due principali differenze rimaste sono il formato istruzione a lunghezza fissa, che ha dei vantaggi per calcolare facilmente spiazzamenti di un certo tipo, anche se la lunghezza variabile delle istruzioni x86 ha (meglio, aveva) dei vantaggi nel minimizzare l'occupazione di memoria, e comunque non se ne risente particolarmente, e la presenza (ancora) di microcode, che però si riduce praticamente ad ogni nuova famiglia, e ormai serve solo per istruzioni poco usate e solo se l'alternativa sarebbe più lenta (ormai, i compilatori le evitano abbastanza bene). Inoltre, nel tempo sono state introdotte istruzioni interessanti, come le varie cmovx che consentono, se sfruttate bene, di minimizzare i salti (ad esempio, confrontando su uno stesso processore un semplice confronto, come il massimo di due numeri, fatto con le istruzioni condizionali e con una versione linearizzata dell'algoritmo (= totalmente senza salti, ma solo una serie di addizioni e operazioni logiche, o al più moltiplicazioni), il primo è più veloce del secondo, che a sua volta è più veloce di uno con i salti (cioè, con la più semplice traduzione di un if-else)). E comunque riconosco pienamente i meriti dei RISC, che hanno introdotto soluzioni interessanti (ma col tempo sono diventati meno risc), come il concetto di pipeline e istruction window per velocizzare l'esecuzione delle istruzioni e l'aumento del clock, che poi si è evoluto, è diventato un approccio superscalare, e si è complicato molto, tanto nei cisc quanto nei risc In fin dei conti, vista la notevole somiglianza, le differenze sono praticamente da ricercare più nella bontà delle implementazioni tecniche, che nel tipo di ISA (a tal proposito, vedrei bene la sparizione del concetto di RISC e CISC come in qualche modo contrapposti, perchè alla fine entrambi gli approcci, salvo implementazioni particolari, fanno la stessa cosa: tolgono complessità dove non serve e l'aggiungono dove serve, per massimizzare le prestazioni, quindi mi permetto di coniare l'espressione "Balanced Complexity Architectures", che a seconda degli approcci "storici" e ai set di istruzioni distinguerei in "BCA-RISC" e "BCA-CISC" - ma siccome sono anche le mie iniziali, diventerebbero i risc e i cisc secondo me ![]() |
![]() |
![]() |
![]() |
#83 |
Bannato
Iscritto dal: Jun 2004
Messaggi: 4607
|
|
![]() |
![]() |
![]() |
#84 | |
Bannato
Iscritto dal: Jun 2004
Messaggi: 4607
|
Quote:
Quello di oggi porta solo il suo nome e non ha nulla di innovativo. I veri Cray erano davvero "spaziali", estremi, innovativi, geniali. E' molto interessante leggere la storia di quei calcolatori. Oggi le CPU si somigliano un po' tutte, a parte il Cell che un po' richiama gli approcci estremi del geniale Seymour. |
|
![]() |
![]() |
![]() |
#85 |
Senior Member
Iscritto dal: Jun 2003
Città: vivo in Sicilia (tra la prov. di AG e Palermo)
Messaggi: 956
|
Secondo me, più che la "vera" Cray, è "morto", per certi versi, quel tipo di approccio al supercomputing. I Cray a cui ti riferisci erano dei gioielli sotto tutti i punti di vista possibili e immaginabili, e anche di più, ma a un certo punto si sono trovati ad avere problemi e di scalabilità, e di performance rispetto ad altre architetture emergenti nel panorama del supercomputing; poi, si, concettualmente i microprocessori usati somigliavano al Cell, e questo sicuramente comporta le stesse limitazioni e problematiche che avrebbe l'impiego in "massa" (= come unica architettura per tutti i campi) di Cell: difficoltà di programmazione e ambiti d'uso "ottimale" ridotti (piccola nota: fino a quel momento, l'approccio di Cray era il migliore e il più facile da programmare in qualsiasi ambito del supercomputing, col tempo però le cose cambiarono e divenne via via più facile programmare macchine con molti processori non vettoriali - Massive Parallel Processors). Processori di tipo vettoriale vengono usati, attualmente, all'interno dei supercomputer come dei coprocessori affiancati a processori meno specializzati, e sembra che il futuro fada in questa direzione, con l'integrazione di core eterogenei nella stessa cpu.
Al punto in cui si trovava, bisognava fare una scelta: proseguire sulla stessa strada e ottimizzare le soluzioni già adottate (migliorando le architetture esistenti e/o cercandone sul mercato di simili), rischiando di rinchiudersi in una nicchia sempre più ristretta (all'interno di quella che è già una nicchia - non è che di supercomputer da 100 TeraFlops se ne vendano miliardi in un anno ![]() E' stata scelta la seconda via, e a giudicare dai risultati non è stata poi così sbagliata: nella TOP500 attuale (aggiornata a novembre 06), al secondo posto, dietro l'inossidabile BlueGene, si piazza proprio un Cray che usa degli Opteron, infrange il muro dei 100 TFlops (101,4 ottenuti nei test, su 127,411 massimi teorici), che corrispondono a poco più di 1/3 delle prestazioni del primo in classifica (sia come picco, sia come risultato dei test), con circa 1/5 dei processori. Oserei dire che non abbiano proprio perso tutto lo smalto dei bei tempi andati nel mettere insieme dei pezzi di silicio da spremere al massimo ![]() Ma mi rendo conto che guardi alla Cray vecchia scuola come ad una specie di cattedrale nel deserto dell'innovazione che è venuta meno. Del resto, bisogna tener conto dei problemi finanziari e dei passaggi di mano dalla metà degli anni '90 (bisogna però anche dire che già da qualche anno aveva cominciato ad affiancare ai propri processori vettoriali delle cpu non vettoriali, in particolare gli Alpha), però continua ad avere delle soluzioni interessanti, e a progettarle, in parte, in casa: si sta orientando verso soluzioni Torrenza, con cpu Opteron affiancate (in "proporzioni" variabili a seconda degli scopi) da chip programmabili FPGA (altamente customizzabili), da processori multithread e specializzati (fatti in casa) e da progetti vettoriali, passando per soluzioni (in progetto) che vedono un misto delle varie soluzioni (Opteron + FPGA + Multithread Processor +Vector Processor) e arrivando a un coprocessore "Multithread Vector Processor" (dovrebbe essere un ibrido dei due approcci, capace di un qualche "trasformismo"). Ma difficilmente, ormai, si può pensare ad un approccio puramente (ed esclusivamente) vettoriale. Comunque, mi sa tanto che non ci saranno rivoluzioni tecnologiche sbalorditive fino a quando entreremo nell'era dei computer quantistici, perchè con le tecnologie attuali praticamente s'è già visto tutto e il contrario di tutto, e si va avanti un po' con i classici corsi e ricorsi storici, ibridizzazioni di tecnologie note (più o meno sbilanciate in una direzione o in un'altra) e ottimizzazioni varie, con qualche nuovo materiale d'uso immediato o futuristico (come nanotubi e grafene) e qualche variazione sul tema (ma finchè si va avanti e si riesce a migliorare prestazioni e consumi, va bene anche così ![]() [Edit: ho corretto un "piccolo" errore di circa 3 ordini di grandezza nel riportare i risultati della top500] Ultima modifica di xeal : 27-05-2007 alle 05:08. |
![]() |
![]() |
![]() |
#86 | |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 3300
|
Quote:
Alpha invece è rimasto più "fedele" all'idea iniziale.
__________________
If ain't broken keep tweakin' till it will! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:51.