Créditos: DHM Research

DMA: o que é Direct Memory Access e como funciona?

Normalmente, o único componente que acessa a memória RAM da máquina é o processador

Para começar do início, DMA é a abreviação de "Direct Memory Access" ou, em português livre,  Acesso Direto à Memória.  Ele é um recurso que capacita os dispositivos de entrada e saída (periféricos  como placas de som, placas de rede e discos de armazenamento) a terem acesso direto à memória RAM, sem sobrecarregar o processador e acelerando as operações que envolvem a memória. 

Normalmente o único componente que acessa a memória RAM da máquina é o processador. Enquanto a maioria dos dados de entrada ou saída do seu computador é processada pela CPU, alguns dados não requerem processamento ou podem ser "processados" por outro dispositivo.

Nessas situações, o DMA pode economizar tempo de processamento e é uma maneira mais eficiente de mover dados da memória do computador para outros dispositivos. O recurso DMA permite que outros componentes também acessem a memória RAM diretamente, o que aumenta o desempenho na transferência de grande quantidade de dados. De outra maneira, a CPU teria que copiar todos os dados da fonte até o destino e estaria indisponível para outras tarefas. 

Leia também: Você sabe o que é um soquete de processador?

DMA: poupando desempenho do processador

A ideia do DMA é a troca de ordem nos acessos, alterando a sequência comum. A técnica permite que o processador tenha o desempenho poupado e mantenha o foco na tarefa que está realizando, enquanto a transferência de dados atua de maneira independente em segundo plano.

Como o TechLib exemplifica, uma placa de som pode precisar acessar os dados armazenados na RAM do computador, mas, como pode processar os dados, pode usar o DMA para ignorar a CPU. As placas de vídeo compatíveis com DMA também podem acessar a memória do sistema e processar gráficos sem precisar da CPU. 

Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para outro. O CPU inicia a transferência, mas não a executa - explicando de outra forma, o processador realiza a configuração de acesso direto à memória e depois não interfere .  Algumas coisas que são organizadas pela CPU incluem:

- Número de bytes a transferir

- Continua após a publicidade -

- Endereço de memória

- Direção do fluxo de dados

O DMA é vantajoso para a transferência de grandes blocos de dados

Todo o processo é controlado por um chip chamado DMAC ou Direct Memory Access Controller que determina quais dispositivos ou entradas estarão aptas ao DMA. Ele atua como um coprocessador para realizar as transferências, ter acesso ao barramento de dados do sistema e receber instruções da CPU.

 O DMAC recebe a solicitação de um periférico, como uma placa de vídeo, para ter acesso direto à memória RAM e a CPU faz uma autorização por um determinado tempo. Quando o dispositivo não estiver mais utilizando a memória, o dispositivo DMA gera uma interrupção e a CPU aparece novamente para considerar o processo encerrado. 

Leia também: O que é armazenamento SSD NVMe?

Quais são os tipos de DMA?

Existem dois tipos de DMA. São eles:

  • Third-Party DMA: método de acesso direto que usa um controlados único no sistema (que está na placa-mãe).
  • First-Party DMA ou Bus Mastering: método em que existe um controlados por periférico.

Além disso, por DMA, o bloco de dados pode ser transferido de e para a memória de três formas. Uma seria o Burst Mode, em que o periférico recebe acesso ao barramento e transfere as informações de uma vez só. Quando o processo termina, as pistas do barramento são liberadas para a CPU novamente, mas enquanto a transferência está acontecendo o CPU deixa de trabalhar. Essa seria a sua principal desvantagem.

- Continua após a publicidade -

O Transparent Mode é parecido com o anterior, mas enquanto a transferência acontece, o CPU continua trabalhando em tarefas que não exijam acesso ao barramento.

O modo mais divergente dos outros para o DMA é o chamado "Cycle Stealing", em que a transferência é realizada lentamente. Nesse processo, o DMAC solicita o acesso ao barramento e, após receber autorização do CPU, um byte é transferido. Com isso, é como se a tarefa estivesse concluída, devolvendo o controle das pistas para o CPU. Nesse ciclo, cada byte que precisa ser transferido é uma solicitação.

O grande problema do DMA, por fim, é o uso de um controlador DMA pode causar problemas de coerência de cache. Os dados armazenados na RAM acessada pelo controlador DMA podem não ser atualizados com os dados de cache corretos se a CPU estiver usando memória externa.


PRÓS
Acelera a tarefa de leitura e gravação
Reduz o ciclo de clock necessário para ler ou gravar um bloco de dados
Reduz a sobrecarga do processador
CONTRA
Tem um custo para implementar o DMAC nos dispositivos
Pode acontecer problemas de coerência de cache
Tags
  • Redator: Saori Almeida

    Saori Almeida

    Saori Almeida é natural do Rio Grande do Sul, técnica em administração formada pelo Centro Tecnológico de Caxias do Sul (CETEC) e estudante de Jornalismo na Universidade Federal de Santa Catarina (UFSC). Gosta da cultura asiática e nerd no geral e tem interesse crescente por tecnologia e games desde pequena - gosto que se intensifica diariamente na redação.

O que você achou deste conteúdo? Deixe seu comentário abaixo e interaja com nossa equipe. Caso queira sugerir alguma pauta, entre em contato através deste formulário.