O que é DMA — Direct Memory Access?

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?

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.

Quer ficar por dentro das melhores notícias de tecnologia do dia? Acesse e se inscreva no nosso novo canal no youtube, o Canaltech News. Todos os dias um resumo das principais notícias do mundo tech para você!

Com o DMA, os componentes podem trocar informações com a memória RAM sem precisar tomar tempo de processamento da CPU (Imagem: Reprodução/Corsair)

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:

  • 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:

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.

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.

O uso do DMA requer cuidados em virtude da coerência de cache, em que pode haver inconsistências nos dados presentes no cache e na memória RAM (Imagem: Divulgação/Intel)

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

Fonte feed: canaltech.com.br

Veja também