Organizzazione della memoria RAM: UMA, NUMA e differenze

I sistemi informatici possono essere classificati in base al modo in cui l'organizzazione dei loro RAM la memoria è progettata, e quindi in due diversi gruppi: sistema UMA e sistemi NUMA. Spieghiamo le differenze fondamentali tra questi modi di organizzare un sistema in base all'organizzazione della memoria e quali sono i vantaggi e gli svantaggi di ciascun tipo.

Quando si progetta un sistema, una delle prime cose che viene posta sul tavolo di progettazione è il modo in cui sarà organizzata la RAM, poiché ciò non solo indicherà come sarà l'architettura del sistema, ma anche le sue prestazioni, il suo costo di produzione e il suo espandibilità.

Organizzazione della memoria RAM

Organizzazione della memoria RAM: UMA

Organizzazione Memoria UMA

UMA è l'acronimo di Uniform Memory Access e si riferisce a tutti i sistemi in cui la RAM è un unico pozzo condiviso in termini di accesso da parte del CPU e il resto dei processori del sistema. Questo tipo di configurazione viene utilizzato soprattutto nei SoC odierni, dove i diversi componenti condividono l'accesso alla memoria.

Il sistema UMA è anche quello utilizzato nelle console per videogiochi, in generale è il sistema di memoria utilizzato in ogni sistema in cui i suoi componenti sono montati su una scheda comune, dove l'instradamento di due diversi tipi di pozzetti di memoria sono una complicazione sui percorsi e linee di comunicazione che attraversano la piastra.

È quindi il modo più semplice per costruire un sistema di memoria in qualsiasi tipo di computer, ma porta con sé una serie di problemi come il fatto che la condivisione dell'accesso alla memoria finisce per creare un effetto contesa, in cui viene creata una “lista d'attesa ”Per accedere ai dati, che può essere alleviato solo con l'uso di tipi di memoria RAM con vari canali di accesso.

Organizzazione della memoria RAM: NUMA

Organizzazione memoria NUMA

Organizzazione della memoria NUMA o Non-Uniform Memory Access. Si riferisce a sistemi in cui vengono utilizzati diversi pozzetti di memoria nello stesso sistema. È il caso del PC dove, ad esempio, possiamo vedere come le schede grafiche abbiano una propria memoria diversa dalla RAM principale del sistema.

I sistemi NUMA non soffrono del problema della contesa nell'accesso alla memoria dei sistemi UMA, ma in realtà per comunicare tra loro i diversi componenti del sistema, si ottiene un sistema molto complesso. La ragione di ciò è che ciascuno dei componenti deve avere meccanismi di accesso alla memoria RAM principale per la comunicazione con la CPU, ad esempio le GPU hanno unità DMA che consentono loro di accedere alla RAM principale del sistema e fare copie di determinati dati da Da RAM a VRAM.

Questo tipo di organizzazione della memoria viene utilizzato quando vogliamo creare un sistema con capacità di espansione, per loro è necessario creare quelle che vengono chiamate porte di espansione, che vengono utilizzate per la comunicazione della CPU del sistema con i sistemi di memoria RAM del sistema. ogni componente che fa parte del sistema.

Indirizzamento vs. organizzazione fisica

RAM della CPU

Uno degli ideali nel PC è il sistema di memoria totalmente coerente, in cui l'indirizzamento dei diversi componenti in esso è comune a tutti loro. Ciò significa che se modifichiamo l'indirizzo, diciamo, ad esempio, F4. Quindi tutti i componenti quando si va all'indirizzo di memoria F4 qualsiasi altro componente del PC dovrebbe fare riferimento allo stesso indirizzo di memoria.

Si potrebbe pensare fin dall'inizio che poiché i sistemi UMA hanno la loro memoria sempre condivisa a livello fisico, allora sarà la stessa a livello di indirizzamento, poiché stiamo parlando dello stesso pool di memoria a livello fisico. La realtà è ben diversa, poiché è necessario che i diversi componenti siano coerenti in termini di memoria, il che significa che prendendo l'esempio precedente se scriviamo il valore 30 nell'indirizzo F4 allora tutti i componenti sanno che c'è un valore 30 Là.

Rete CoreLink Cache

Il modo per far sì che tutti i componenti di un SoC siano totalmente coerenti è quindi non utilizzare lo stesso controller di memoria, ma aggiungere un ultimo livello di cache appena prima di detto controller, che sarebbe oltre la CPU, il GPU. e altri componenti e sarebbero visti da tutti loro come un ultimo livello di cache.

Il fatto di aggiungere una cache di ultimo livello prima del controller di memoria è tipico dei sistemi PostPC, poiché tutti sono stati progettati per SoC dall'inizio, non ci sono programmi che fanno copie di dati da uno spazio all'altro. In PC, tuttavia, questo non è comune e sebbene Intel ed AMD da anni lancia SoC in cui tutti i componenti sono unificati in un unico chip, l'accesso ai diversi elementi all'interno del SoC non lo è e parti della RAM sono isolate esclusivamente per un componente specifico. Ad esempio, quando abbiamo un grafico integrato e stiamo assegnando una quantità di memoria a detto grafico, quello che stiamo facendo è dire alla CPU che il suo spazio non può toccarlo, poiché è fuori dalla sua allocazione.