La legge di Moore (empiricamente) è la stessa sia per la capacità di memoria che per la velocità di elaborazione?

5

La memoria e la potenza di elaborazione sono aumentate nel tempo praticamente attorno alla stessa velocità, oppure possiamo dire che l'una o l'altra è aumentata di più? Il costo è diminuito nello stesso tasso? E che dire del prossimo futuro?

Sono consapevole che questa domanda non è direttamente correlata alla programmazione, ma ho pensato che sarebbe stato meglio chiederla qui per alcuni motivi:

  1. Lavoro come programmatore, non come teorico informatico (quindi probabilmente non troverei molto utile il tipo di domanda che avrei ricevuto dal Sito Web di Theoretical Computer Science , ad esempio).
  2. Preferisco le risposte basate sull'esperienza reale dei programmatori.
  3. E sono preoccupato per problemi relativi alla programmazione reale, specialmente per il dibattito imperativo x funzionale.

Informazioni sul terzo elemento: al momento stiamo vedendo un sacco di argomenti su come l'aumento dell'uso delle tecniche di programmazione funzionale sia correlato alle ormai comuni macchine multi-core e su come il pranzo gratis sia finito [pdf ].

Ma mi sembra che il paradigma funzionale stia consumando molta più memoria (ma questa è un'opinione, non un fatto), e non ho molte discussioni su questo futuro aumento delle esigenze di memoria.

    
posta rsenna 19.01.2011 - 18:59
fonte

5 risposte

6

È importante notare che la legge di Moore non parla della velocità del processore. Parla della densità dei transistor.

In realtà, abbiamo colpito il muro dei tassi di clock molto tempo fa, e gli orologi sono stati generalmente decrescenti dal P4. Ci sono stati ulteriori guadagni in termini di prestazioni con cose come l'esecuzione di OOO e altri meccanismi per sfruttare ILP, ma oggigiorno la densità extra sta andando verso più cache e più core, piuttosto che aumentare drasticamente la velocità di ogni core.

La memoria, d'altra parte, è molto più semplice da implementare - una densità di transistor più alta significa fondamentalmente che puoi impacchettare più celle di memoria nello stesso pacchetto, senza dover effettuare alcuna riprogettazione complessa.

Fondamentalmente, la memoria scala eccezionalmente bene con l'aumento della densità dei transistor. Processori, non così tanto.

    
risposta data 19.01.2011 - 21:44
fonte
3

Quindi la legge di Moore afferma specificamente che la densità dei transistor raddoppierà ogni 18 mesi circa. Ciò che si traduce in modo efficace sono i processori più veloci e più RAM. Diamo un'occhiata da alcuni confronti.

1996 Un desktop di punta aveva circa un processore da 300 MHz, 32 MB di RAM e un disco rigido da 2 GB. I computer stavano diventando abbastanza potenti che il formato audio MPEG (MP3) poteva essere decompresso e riprodotto in tempo reale. E le persone erano preoccupate per le prestazioni di un linguaggio basato su macchine virtuali come Java.

2011 Il mio telefono ha un processore da 1 GHz, 512 MB di RAM, 16 GB di spazio di archiviazione e può riprodurre MP3 e praticamente ogni altro formato.

In 15 anni, il mio telefono è più potente del mio computer, non solo Java è utilizzato per lo sviluppo di applicazioni, ma lo è anche un'altra piattaforma interpretata (.NET). Quindi sì, dato il tempo, la legge di Moore renderà ogni cosa che è limitata alle risorse oggi una tecnologia praticabile.

Inoltre, non ho mai sentito parlare di linguaggi funzionali con una maggiore intensità di memoria rispetto a OO.

    
risposta data 19.01.2011 - 19:22
fonte
3

Non è strettamente una risposta, ma ...

La tua domanda implica che ti stai chiedendo se la programmazione funzionale diventerà inevitabile a causa delle limitazioni della legge di Moore. Forse questo è oltre il punto. Il principale fattore alla base delle nuove tecnologie nella programmazione non è la prestazione, altrimenti dovremmo scrivere assemblaggi. Il driver principale è la complessità. Le nuove tecniche e tecnologie di programmazione diventano popolari perché facilitano la creazione di sistemi più grandi.

In altre parole, se la programmazione funzionale prende il sopravvento, non sarà perché offre prestazioni migliori, sarà perché ti consentirà di creare app più grandi più velocemente. E questo non ha nulla a che fare con la legge di Moore.

    
risposta data 19.01.2011 - 21:50
fonte
1

La legge di Moore riguardava in origine il numero di elementi del circuito che si adattano a un chip. Il confronto con l'aumento della velocità del processore è venuto dopo.

Elementi più veloci e più piccoli avvantaggiano sia la CPU che la memoria, quindi ci si aspetterebbe un aumento approssimativamente parallelo della capacità della CPU e della memoria. Semplicemente per un'impressione qualitativa, mi sembra che stiano aumentando più o meno insieme, insieme alla dimensione del disco rigido. (Il mio primo computer con un hard disk era un Mac SE, con un processore 68000 a 8 MHz (16/32 bit), 1M di memoria e un'unità disco da 20 M. Tutto è aumentato nelle mie attuali macchine da fattori compresi tra uno e diecimila. )

    
risposta data 19.01.2011 - 19:13
fonte
1

Come altri hanno affermato, la legge di Moore riguardava davvero la densità dei transitori. Dal momento che le geometrie più piccole significano tempi di commutazione e di spostamento dati più rapidi, abbiamo visto che la velocità migliora insieme alla densità e che i due sono stati fusi. Diversi anni fa è stata raggiunta una barriera di dissapazione di potenza totale, i clock rate più veloci hanno più fame di energia e senza meccanismi di raffreddamento esotici non potremmo continuare a farli avanzare. Ma i bilanci dei transistor sono andati aumentando in modo esponenziale, il che significa maggiore parallelismo all'interno di un nucleo, e invece è stata perseguita la replica di più core. Anche le cache diventano più grandi con il passare del tempo, e questo aiuta a ridurre un po 'la pen velocità di mismatch della velocità della memoria.

La programmazione funzionale, o qualsiasi altra tecnica che offra la complessità del programmatore per (un po ') una riduzione dell'efficienza nell'uso delle risorse è una conseguenza dei progressi nella capacità HW. Lo sweetspot nel compromesso tra la complessità del codice sorgente e le prestazioni non elaborate cambia quando aumenta la capacità della macchina. Inoltre, la capacità di permettersi / contemplare calcoli più complessi porta alla richiesta di applicazioni più complesse, che ha un impatto anche sul sweetspot del tradeoff. Se avessimo solo orologi kilohertz e piccoli ricordi, probabilmente considereremmo che l'assembly fosse il linguaggio di livello più elevato che avremmo voluto prendere in considerazione.

    
risposta data 20.01.2011 - 00:11
fonte

Leggi altre domande sui tag