Controllore di memoria - Memory controller

Il controller di memoria è un circuito digitale che gestisce il flusso di dati in entrata e in uscita dalla memoria principale del computer . Un controller di memoria può essere un chip separato o integrato in un altro chip, ad esempio posizionato sullo stesso die o come parte integrante di un microprocessore ; in quest'ultimo caso, viene solitamente chiamato controller di memoria integrato ( IMC ). Un controller di memoria è talvolta chiamato anche controller del chip di memoria ( MCC ) o unità controller di memoria ( MCU ).

Una forma comune di controller di memoria è l' unità di gestione della memoria (MMU) che in molti sistemi operativi, come Unix , implementa l'indirizzamento virtuale .

Storia

La maggior parte dei moderni microprocessori per desktop o workstation utilizza un controller di memoria integrato (IMC), inclusi i microprocessori di Intel , AMD e quelli costruiti attorno all'architettura ARM .

Prima di K8 (circa 2003), i microprocessori AMD avevano un controller di memoria implementato sul Northbridge della loro scheda madre . In K8 e versioni successive, AMD ha utilizzato un controller di memoria integrato. Allo stesso modo, fino a Nehalem (circa 2008), i microprocessori Intel utilizzavano controller di memoria implementati sul Northbridge della scheda madre. Nehalem e successivamente è passato a un controller di memoria integrato.

Altri esempi di microprocessori che uso controller di memoria integrati includono IBM 's POWER5 , e Sun Microsystems ' s UltraSPARC T1 .

Mentre un controller di memoria integrato ha il potenziale per aumentare le prestazioni del sistema, ad esempio riducendo la latenza della memoria , blocca il microprocessore su un tipo (o tipi) specifico di memoria, forzando una riprogettazione per supportare le più recenti tecnologie di memoria. Quando è stata introdotta la DDR2 SDRAM , AMD ha rilasciato nuove CPU Athlon 64. Questi nuovi modelli, con un controller DDR2, utilizzano un socket fisico diverso (noto come Socket AM2 ), in modo che si adattino solo alle schede madri progettate per il nuovo tipo di RAM. Quando il controller di memoria non è acceso, la stessa CPU può essere installata su una nuova scheda madre, con un northbridge aggiornato .

Alcuni microprocessori negli anni '90, come il DEC Alpha 21066 e l'HP PA-7300LC , avevano controller di memoria integrati; tuttavia, piuttosto che per migliorare le prestazioni, questo è stato implementato per ridurre il costo dei sistemi eliminando la necessità di un controller di memoria esterno.

Alcune CPU sono progettate per avere i controller di memoria come componenti esterni dedicati che non fanno parte del chipset. Un esempio è IBM POWER8 , che utilizza chip Centaur esterni che sono montati su moduli DIMM e agiscono come buffer di memoria, chip di cache L4 e come controller di memoria effettivi. La prima versione del chip Centaur utilizzava la memoria DDR3, ma in seguito è stata rilasciata una versione aggiornata che può utilizzare la DDR4.

Scopo

I controller di memoria contengono la logica necessaria per leggere e scrivere nella DRAM e per "aggiornare" la DRAM . Senza aggiornamenti costanti, la DRAM perderà i dati scritti su di essa poiché i condensatori perdono la loro carica in una frazione di secondo (non più di 64 millisecondi secondo gli standard JEDEC ).

La lettura e la scrittura su DRAM vengono eseguite selezionando gli indirizzi dei dati di riga e colonna della DRAM come ingressi al circuito multiplexer , dove il demultiplatore sulla DRAM utilizza gli ingressi convertiti per selezionare la posizione di memoria corretta e restituire i dati, che vengono quindi passato attraverso un multiplexer per consolidare i dati al fine di ridurre la larghezza del bus richiesta per l'operazione.

La larghezza del bus è il numero di linee parallele disponibili per comunicare con la cella di memoria. Le larghezze del bus dei controller di memoria vanno da 8 bit nei sistemi precedenti, a 512 bit in sistemi e schede video più complicati (in genere implementati come quattro controller di memoria simultanei a 64 bit che operano in parallelo, sebbene alcuni siano progettati per funzionare in "modalità di gruppo". " dove è possibile utilizzare due controller di memoria a 64 bit per accedere a un dispositivo di memoria a 128 bit ).

Alcuni controller di memoria, come quello integrato nei processori PowerQUICC II, includono hardware di rilevamento e correzione degli errori .

Sicurezza

Alcuni controller di memoria sperimentali (per lo più rivolti al mercato dei server in cui la protezione dei dati è richiesta per legge) contengono un secondo livello di traduzione degli indirizzi, oltre al primo livello di traduzione degli indirizzi eseguito dall'unità di gestione della memoria della CPU .

I controller di memoria integrati in alcuni processori Intel Core forniscono anche lo scrambling della memoria come funzionalità che trasforma i dati dell'utente scritti nella memoria principale in schemi pseudo-casuali .

Memory Scrambling (in Cryptographic Theory) dovrebbe prevenire l' analisi forense e di reverse engineering basata sulla rimanenza dei dati DRAM, rendendo inefficaci vari tipi di attacchi di avvio a freddo . Nella pratica attuale questo non è stato raggiunto.

Tuttavia Memory Scrambling è stato progettato solo per risolvere i problemi elettrici relativi alla DRAM. Gli standard di rimescolamento della memoria della fine degli anni 2010 non risolvono o prevengono problemi o problemi di sicurezza. Gli standard di Memory Scrambling del 2010 non sono crittograficamente sicuri, né necessariamente open source o aperti a revisioni o analisi pubbliche.

ASUS e Intel hanno i propri standard di scrambling della memoria. Attualmente le schede madri ASUS hanno consentito all'utente di scegliere quali standard di scrambling della memoria utilizzare [ASUS o Intel] o se disattivare completamente la funzione.

varianti

Memoria a doppia velocità di trasmissione dati

I controller di memoria a doppia velocità di dati (DDR) vengono utilizzati per pilotare DDR SDRAM , in cui i dati vengono trasferiti su entrambi i fronti di salita e di discesa del clock di memoria del sistema. I controller di memoria DDR sono significativamente più complicati rispetto ai controller di velocità dati singoli, ma consentono di trasferire il doppio dei dati senza aumentare la frequenza di clock della cella di memoria o la larghezza del bus.

Memoria multicanale

I controller di memoria multicanale sono controller di memoria in cui i dispositivi DRAM sono separati su più bus diversi per consentire ai controller di memoria di accedervi in ​​parallelo. Ciò aumenta la quantità teorica di larghezza di banda del bus di un fattore del numero di canali. Mentre un canale per ogni cella DRAM sarebbe la soluzione ideale, aggiungere più canali è molto difficile a causa del numero di fili, della capacità della linea e della necessità che le linee di accesso parallelo abbiano lunghezze identiche.

Memoria completamente bufferizzata

I sistemi di memoria completamente bufferizzati posizionano un dispositivo buffer di memoria su ogni modulo di memoria (chiamato FB-DIMM quando viene utilizzata la RAM completamente bufferizzata ), che a differenza dei dispositivi controller di memoria tradizionali, utilizzano un collegamento dati seriale al controller di memoria invece del collegamento parallelo utilizzato in precedenti progetti di RAM. Ciò riduce il numero dei fili necessari per posizionare i dispositivi di memoria su una scheda madre (consentendo di utilizzare un numero inferiore di livelli, il che significa che è possibile posizionare più dispositivi di memoria su una singola scheda), a scapito dell'aumento della latenza (il tempo necessario per accedere a una posizione di memoria). Questo aumento è dovuto al tempo necessario per convertire le informazioni parallele lette dalla cella DRAM nel formato seriale utilizzato dal controller FB-DIMM e di nuovo in un formato parallelo nel controller di memoria sulla scheda madre.

In teoria, il dispositivo buffer di memoria dell'FB-DIMM potrebbe essere costruito per accedere a qualsiasi cella DRAM, consentendo la progettazione del controller di memoria indipendente dalle celle di memoria, ma ciò non è stato dimostrato, poiché la tecnologia è agli inizi.

Controller di memoria flash

Molti dispositivi di memoria flash , come le memory stick USB, includono un controller di memoria flash su chip. La memoria flash è intrinsecamente più lenta da accedere rispetto alla RAM e spesso diventa inutilizzabile dopo alcuni milioni di cicli di scrittura, il che generalmente la rende inadatta per le applicazioni RAM.

Guarda anche

Riferimenti

link esterno