O que é DMA — Direct Memory Access?
Por Renan da Silva Dores • Editado por Wallace Moté |
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.
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.
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