Perché il tempo di accesso alla RAM (qualsiasi tipo) diminuisce così lentamente?


22

Questo articolo mostra che DDR4 SDRAM ha circa 8 volte maggiore larghezza di banda DDR1 SDRAM. Ma il tempo dall'impostazione dell'indirizzo della colonna a quando i dati sono disponibili è diminuito solo del 10% (13,5 ns). Una ricerca rapida mostra che il tempo di accesso del più veloce asincrono. SRAM (18 anni) ha 7ns. Perché il tempo di accesso a SDRAM è diminuito così lentamente? La ragione è economica, tecnologica o fondamentale?


1
Un'altra possibile ragione potrebbe essere che semplicemente non è così necessario?
Sebastiaan van den Broek,

Ad esempio, è necessario un tempo di accesso ridotto per rendere più veloce la ricerca di dati nella memoria.
Arseniy,

Mi rendo conto che, la velocità extra è sempre buona, ma dal punto di vista dello sviluppatore di software, forse rispetto a tutti gli altri IO e architetture (inclusi i microservizi che possono letteralmente funzionare su diversi data center), la velocità della RAM non è proprio un collo di bottiglia più. A volte "abbastanza buono" è buono, o almeno non garantisce l'ulteriore ricerca e sviluppo nel velocizzarlo. Vorrei aggiungere questo come un potenziale motivo anche nella tua domanda.
Sebastiaan van den Broek,

1
Secondo Wikipedia, DDR3-2200 ha una latenza di First Word di 6,36 ns, ovvero quanto tempo impiega un segnale a propagarsi attorno a 3 piedi su FR4, direi che siamo abbastanza vicini ai limiti fisici
Mark Omo,

Risposte:


33

È perché è più facile ed economico aumentare la larghezza di banda della DRAM piuttosto che diminuire la latenza. Per ottenere i dati da una fila aperta di ram, è necessaria una quantità non banale di lavoro.

L'indirizzo della colonna deve essere decodificato, i mux che selezionano le linee a cui accedere devono essere guidati e i dati devono spostarsi attraverso il chip verso i buffer di output. Ciò richiede un po 'di tempo, soprattutto se si considera che i chip SDRAM sono prodotti su un processo su misura per densità di ram elevate e velocità logiche non elevate. Per aumentare la larghezza di banda, dire usando DDR (1,2,3 o 4), la maggior parte della logica può essere ampliata o pipeline e può funzionare alla stessa velocità della generazione precedente. L'unica cosa che deve essere più veloce è il driver I / O per i pin DDR.

Al contrario, per ridurre la latenza è necessario velocizzare l'intera operazione, il che è molto più difficile. Molto probabilmente, parti del ram dovrebbero essere realizzate su un processo simile a quello per le CPU ad alta velocità, aumentando sostanzialmente il costo (il processo ad alta velocità è più costoso, inoltre ogni chip deve passare attraverso 2 processi diversi).

Se si confrontano le cache della CPU con RAM e disco rigido / SSD, esiste una relazione inversa tra l'archiviazione è grande e l'archiviazione è veloce. Un L1 $ è molto veloce, ma può contenere solo tra 32 e 256kB di dati. Il motivo per cui è così veloce è perché è piccolo:

  • Può essere posizionato molto vicino alla CPU utilizzandolo, il che significa che i dati devono percorrere una distanza più breve per arrivarci
  • I cavi su di esso possono essere accorciati, il che significa che richiede meno tempo perché i dati attraversino
  • Non occupa molta area o molti transistor, quindi farlo su un processo ottimizzato per la velocità e usare molta potenza per bit memorizzato non è così costoso

Man mano che avanzi nella gerarchia, ogni opzione di archiviazione diventa più grande in termini di capacità, ma anche più grande nell'area e più lontana dal dispositivo che la utilizza, il che significa che il dispositivo deve rallentare.


21
Bella risposta. Voglio solo enfatizzare il fattore di distanza fisica: a forse 10 cm per la RAM stick più lontana, da 1/3 a 1/2 della velocità della luce come velocità del segnale, oltre a una lunghezza extra per instradare e abbinare le tracce PCB, potresti essere facilmente al tempo di andata e ritorno di 2 ns. Se ~ 15% del tuo ritardo è causato dall'infrangibile limite di velocità universale ... secondo me stai andando davvero bene.
martedì

1
Anche L1 è organizzato in modo univoco, è direttamente nel core che lo utilizza e utilizza SRAM.
foresta il

@forest E ha anche un limite di dimensioni piuttosto rigoroso: rendilo troppo grande e non c'è modo di mantenerlo così velocemente.
Luaan,

La cache L1d può anche essere fortemente ottimizzata per la latenza, ad es. Recupero di tag e dati in parallelo per tutti i modi nel set. Pertanto, quando una corrispondenza tag modifica i dati sull'output, invece di recuperarli da SRAM. Questo può accadere anche in parallelo con la ricerca TLB sui bit alti dell'indirizzo, se i bit di indice provengono tutti dalla parte offset all'interno della pagina di un indirizzo. (Quindi questo è un limite alla dimensione, come menzionato da @Luaan: size / associativity <= page-size per questo VIPT = PIPT speed hack per funzionare. Vedi Cache VIPT: Connessione tra TLB e Cache? )
Peter Cordes

6

C_Elegans fornisce una parte della risposta: è difficile ridurre la latenza complessiva di un ciclo di memoria.

L'altra parte della risposta è che nei moderni sistemi di memoria gerarchica (livelli multipli di memorizzazione nella cache), la larghezza di banda della memoria ha un'influenza molto più forte sulle prestazioni complessive del sistema rispetto alla latenza della memoria , ed è qui che sono stati concentrati tutti gli ultimi sforzi di sviluppo.

Questo è vero sia nel calcolo generale, in cui molti processi / thread sono in esecuzione in parallelo, sia nei sistemi integrati. Ad esempio, nel lavoro di video HD che faccio, non mi importa delle latenze nell'ordine dei millisecondi, ma ho bisogno di più gigabyte / secondo di larghezza di banda.


E va sicuramente detto che nella maggior parte dei casi il software può essere progettato abbastanza facilmente per la latenza "alta", rispetto alla difficoltà e al costo della riduzione della latenza. Sia la CPU che il loro software sono molto bravi a eliminare la latenza effettiva nella maggior parte dei casi. Alla fine, non raggiungi il limite di latenza tutte le volte che potresti pensare, a meno che tu non abbia idea di come funzionano l'architettura della memoria, la cache / pre-fetching della CPU ecc. L'approccio semplice di solito funziona abbastanza bene per la maggior parte dei software, specialmente a thread singolo.
Luaan,

Nelle moderne CPU Intel, la latenza della memoria è il fattore limitante per la larghezza di banda single-core : la larghezza di banda non può superare la max_concurrency / latency e un singolo core ha una capacità limitata per le richieste off-core contemporaneamente in volo. Un Xeon a molti core (con latenza uncore maggiore da più hop sul ring bus) ha una larghezza di banda single-core peggiore rispetto a un chip desktop quad-core, nonostante abbia più controller DRAM. Perché Skylake è molto meglio di Broadwell-E per il throughput di memoria a thread singolo? . Occorrono molti più thread per saturare la memoria B / N su un Xeon a molti core.
Peter Cordes,

Nel complesso il punto principale è corretto: la maggior parte degli accessi ha raggiunto la cache per una bassa latenza per evitare di bloccare il back-end fuori servizio. Il prefetch HW richiede principalmente solo larghezza di banda per tenere il passo con gli accessi sequenziali e avere i dati pronti nella cache prima che il core ne abbia bisogno. La latenza DRAM è costituita da centinaia di cicli di clock principali, quindi è necessario ottimizzare il software efficiente per utilizzare modelli di accesso che non memorizzano nella cache i mancati sconfiggendo sia la località spaziale / temporale che il prefetching HW. Soprattutto per i carichi, perché i buffer di archivio possono disaccoppiare la latenza del negozio dal resto del back-end fuori servizio.
Peter Cordes,

Per l'I / O del disco, le latenze di millisecondi importerebbero se non avessimo il prefetch readahead per nasconderlo per gli accessi sequenziali. Ma maggiore è la latenza, più difficile è nascondere. (Migliore deve essere il tuo algoritmo di prefetch e più prevedibili devono essere i tuoi schemi di accesso.) E più richieste / byte di dati devi tenere in volo per ottenere la larghezza di banda che desideri.
Peter Cordes,

2

Non ho molte intuizioni, ma mi aspetto che sia un po 'tutto.

Economico

Per la maggior parte dei computer / telefoni, la velocità è più che sufficiente. Per memorie di dati più veloci, SSD è stato sviluppato. Le persone possono usare video / musica e altre attività ad alta velocità in (quasi) tempo reale. Quindi non c'è così tanto bisogno di maggiore velocità (tranne per applicazioni specifiche come previsioni meteorologiche ecc.).

Un altro motivo è elaborare una velocità RAM molto elevata, sono necessarie CPU veloci. E questo comporta un notevole consumo di energia. Poiché la tendenza ad usarli in dispositivi a batteria (come i telefoni cellulari), impedisce l'uso di RAM (e CPU) molto veloci, rende quindi anche non economicamente utile realizzarli.

Tecnico

Con la dimensione decrescente di chip / CI (livello nm ora), la velocità aumenta, ma non in modo significativo. È più spesso usato per aumentare la quantità di RAM, che è necessaria di più (anche una ragione economica).

Fondamentale

Ad esempio (entrambi sono circuiti): il modo più semplice per ottenere più velocità (utilizzato da SSD) è semplicemente distribuire il carico su più componenti, in questo modo si sommano anche le velocità di "elaborazione". Confronta usando 8 chiavette USB che leggono contemporaneamente e combinando i risultati, invece di leggere i dati da 1 chiavetta USB uno dopo l'altro (impiega 8 volte di più).


1
Cosa hanno a che fare esattamente gli SSD con la latenza SDRAM?
C_Elegans,

@C_Elegans sono entrambi circuiti, per questa domanda "generica" ​​non credo che ci sia tanta differenza.
Michel Keijzers,

2
La quantità di tempo per aprire una pagina non è diminuita molto a causa del ciclo di precarica; la quantità di energia richiesta non è significativamente diversa oggi rispetto a dieci anni fa. Ciò domina il tempo di accesso nella mia esperienza.
Peter Smith,

5
@MichelKeijzers Sebbene siano entrambi circuiti, SSD e SDRAM servono casi d'uso molto diversi e fanno uso di tecniche diverse per l'archiviazione dei dati. Inoltre, dire che le CPU non hanno davvero bisogno di una RAM più veloce non ha molto senso, l'intero motivo per cui le CPU più moderne hanno 3 livelli di cache è perché il loro ram non può essere reso abbastanza veloce per servire la CPU.
C_Elegans,

1
Hai detto che per l' archiviazione più grande ci sono SSD. Intendi più velocemente ? È più costoso ottenere la stessa quantità di memoria in un SSD rispetto a un HDD. Il principale punto di forza degli SSD è la velocità, e forse il rumore e l'affidabilità. Per capacità, gli HDD sono ancora migliori
user198712
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.