Organização da memória RAM: UMA, NUMA e diferenças

Os sistemas informáticos podem ser classificados pela forma como a organização dos seus RAM a memória é projetada e, portanto, em dois grupos diferentes: sistema UMA e sistemas NUMA. Explicamos as diferenças básicas entre essas formas de organizar um sistema de acordo com a organização da memória e quais são as vantagens e desvantagens de cada tipo.

Ao projetar um sistema, uma das primeiras coisas que são colocadas na mesa de projeto é a forma como a RAM será organizada, pois isso não só indicará como será a arquitetura do sistema, mas também seu desempenho, seu custo de fabricação e seus Expansibilidade.

Organização de memória RAM

Organização da memória RAM: UMA

Organização Memória UMA

UMA é a sigla para Uniform Memory Access e se refere a todos os sistemas onde RAM é um único poço compartilhado em termos de acesso pelo CPU e o resto dos processadores do sistema. Esse tipo de configuração é usado especialmente em SoCs hoje, onde os diferentes componentes compartilham o acesso à memória.

O sistema UMA também é o utilizado em consoles de videogame, em geral é o sistema de memória utilizado em todo sistema onde seus componentes são montados em uma placa comum, onde o roteamento de dois tipos diferentes de poços de memória é uma complicação nos caminhos e linhas de comunicação que atravessam a placa.

É, portanto, a maneira mais fácil de construir um sistema de memória em qualquer tipo de computador, mas traz consigo uma série de problemas como o fato de que o compartilhamento do acesso à memória acaba criando um efeito de contenção, no qual se cria uma “lista de espera ”Para acessar dados, que só podem ser amenizados com o uso de tipos de memória RAM com vários canais de acesso.

Organização da memória RAM: NUMA

Organização memória NUMA

A organização de memória NUMA ou Non-Uniform Memory Access. Refere-se a sistemas em que vários poços de memória diferentes são usados ​​no mesmo sistema. É o caso do PC onde, por exemplo, podemos ver como as placas gráficas possuem memória própria diferente da RAM principal do sistema.

Os sistemas NUMA não sofrem do problema de contenção no acesso à memória dos sistemas UMA, mas na verdade, para comunicar os diferentes componentes do sistema entre si, resulta em um sistema muito complexo. A razão para isso é que cada um dos componentes precisa ter mecanismos de acesso à memória RAM principal para comunicação com a CPU, por exemplo as GPUs possuem unidades DMA que lhes permitem acessar a RAM principal do sistema e fazer cópias de determinados dados de RAM para VRAM.

Este tipo de organização de memória é utilizado quando queremos criar um sistema com capacidades de expansão, para isso é necessário criar o que se chama de portas de expansão, que são utilizadas para a comunicação da CPU do sistema com os sistemas de memória RAM do sistema. cada componente que faz parte do sistema.

Abordagem vs. organização física

RAM da CPU

Um dos ideais do PC é o sistema de memória totalmente coerente, no qual o endereçamento dos diferentes componentes nele contidos é comum a todos eles. Isso significa que, se modificarmos o endereço, digamos, por exemplo, F4. Então todos os componentes ao ir para o endereço de memória F4 qualquer outro componente do PC teria que se referir ao mesmo endereço de memória.

Pode-se pensar desde o início que, como os sistemas UMA têm sua memória sempre compartilhada no nível físico, ela será o mesmo no nível de endereçamento, já que estamos falando do mesmo pool de memória no nível físico. A realidade é bem diferente, pois é necessário que os diferentes componentes sejam coerentes em termos de memória, o que significa que tomando o exemplo anterior se escrevermos o valor 30 no endereço F4 então todos os componentes saberão que existe um valor 30 lá.

Rede CoreLink-Cache

A maneira de fazer com que todos os componentes de um SoC sejam totalmente coerentes é, portanto, não usar o mesmo controlador de memória, mas adicionar um último nível de cache imediatamente antes do referido controlador, que estaria além da CPU, o GPU. e outros componentes e seriam vistos por todos eles como um último nível de cache.

O fato de adicionar um cache de último nível antes do controlador de memória é típico dos sistemas PostPC, uma vez que todos eles foram projetados para SoCs desde o início, não existem programas que fazem cópias dos dados de um espaço para outro. No PC, no entanto, isso não é comum e embora Intel e AMD vem lançando SoCs há anos onde todos os componentes são unificados em um único chip, o acesso aos diferentes elementos dentro do SoC não é e partes da RAM são isoladas exclusivamente para um componente específico. Por exemplo, quando temos um gráfico integrado e estamos atribuindo uma quantidade de memória a esse gráfico, o que estamos fazendo é dizer à CPU que seu espaço não pode tocá-lo, pois está fora de sua alocação.