Publicidade
Economize: canal oficial do CT Ofertas no WhatsApp Entrar

O que é DMA — Direct Memory Access?

Por| Editado por Wallace Moté | 04 de Dezembro de 2021 às 16h00

Link copiado!

Michael Dziedzic/Unsplash
Michael Dziedzic/Unsplash

A computação evolui rapidamente a cada ano, ganhando funções até então impensadas que lentamente se tornam essenciais conforme programas mais complexos são desenvolvidos para tirar proveito dessas capacidades, como foi o caso, por exemplo, do processamento de Ray Tracing em tempo real ou do barramento PCI Express.

Outra dessas funcionalidades é o DMA, tecnologia de acesso direto à memória criada para agilizar o processamento e garantir que a CPU continue a trabalhar mesmo quando componentes precisam de dados da memória RAM.

O que é DMA?

Continua após a publicidade

A tecnologia Direct Memory Access, ou Acesso Direto à Memória, em tradução livre, é o método pelo qual periféricos como placas de som, placas de rede e discos de armazenamento acessam e transferem diretamente os dados que precisam enviar ou receber sem utilizar a CPU no processo. 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.

Para funcionar, o DMA utiliza um controlador dedicado (DMA Controller, DMAC), que atua como um coprocessador para realizar as transferências, ter acesso ao barramento de dados do sistema e receber instruções da CPU, bem como avisá-la quando as transferências forem concluídas, para que esta possa então verificar se o procedimento teve ou não sucesso.

Existem dois tipos de DMA, que variam de acordo com qual componente do PC possui o controlador. São eles:

Continua após a publicidade
  • Third-Party DMA: é o método de acesso direto de memória que usa um controlador único do sistema, presente na placa-mãe.
  • First-Party DMA: também conhecido como Bus Mastering, tem como diferencial o uso de um controlador por periférico, ou seja, a placa de vídeo possui seu DMAC, assim como a placa de som, o sistema de armazenamento e outros componentes.

Como funciona?

Ainda que não envolva a CPU no processo de transferência de dados, o controlador ainda requer instruções do processador para poder funcionar. Assim sendo, basicamente, o DMAC recebe a solicitação de um periférico, como uma placa de vídeo, para ter acesso direto à memória RAM, e então solicita à CPU o acesso ao barramento PCI-E para que o procedimento seja iniciado. Após concluído, o DMAC avisa o processador, que verifica se o processo foi de fato concluído, e se houve êxito.

A tecnologia de DMA opera nos seguintes modos:

Continua após a publicidade

Burst Mode

Neste modo, o periférico que recebe acesso ao barramento irá transferir as informações necessárias de uma única vez, para então liberar as pistas para a CPU novamente. Ainda que permita que o processo de transferência atinja altas velocidades, a desvantagem desse modo é que o processador deixa de trabalhar até que o envio seja concluído.

Cycle Stealing

No "roubo de ciclo", em tradução livre, a transferência de dados é realizado lentamente, aguardando a conclusão de cada ciclo de processamento da CPU. Basicamente, o DMAC solicita acesso ao barramento para o processador e, após concedido, um byte de informação é transferido. O controle das pistas é então devolvido à CPU, e uma nova solicitação é realizada a cada ciclo, até que todos os dados sejam enviados.

Continua após a publicidade

Transparent Mode

Similar ao Burst Mode, o Transparent Mode dá acesso total do barramento ao periférico que enviará ou receberá informações. No entanto, há uma diferença importante: a CPU continuará operando normalmente, em tarefas que não exijam acesso ao barramento. O controle das pistas retorna ao processador assim que a transferência dos dados é finalizada.

Vantagens e cuidados

Antes da adoção do DMA, a CPU era responsável pela transferência de dados, impedindo-a de realizar o processamento de outras tarefas. A técnica trouxe novas possibilidades e acelerou o envio e recebimento das informações, que passaram então a ser enviadas em paralelo. Na prática, isso significou maior velocidade e abriu portas para que aplicações mais complexas pudessem ser desenvolvidas.

Continua após a publicidade

Ainda assim, o processador fica incapacitado de acessar a RAM durante o procedimento de DMA, limitação contornada pelo uso do cache do chip para armazenar as instruções mais importantes, o que gera outra preocupação: a coerência do cache, que exige cuidados para que as informações no cache da CPU não se tornem desatualizadas conforme o DMA modifique os dados na memória RAM. Do contrário, erros podem acontecer por incompatibilidades.

Fonte: Prof. Dr. Edson Moreno, Binary Terms