Índice do Artigo

Artigos

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

DMA: o que é Direct Memory Access e como funciona?
Créditos: DHM Research

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

– 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.

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

Contras

Tem um custo para implementar o DMAC nos dispositivos

Pode acontecer problemas de coerência de cache

Participe do grupo de ofertas do Adrenaline

Participe do grupo de ofertas do Adrenaline

Confira as principais ofertas de hardware, componentes e outros eletrônicos que encontramos pela internet. Placa de vídeo, placa-mãe, memória RAM e tudo que você precisa para montar o seu PC. Ao participar do nosso grupo, você recebe promoções diariamente e tem acesso antecipado a cupons de desconto.

Entre no grupo e aproveite as promoções