Mercado fechará em 4 h 48 min
  • BOVESPA

    109.272,80
    +170,80 (+0,16%)
     
  • MERVAL

    38.390,84
    +233,89 (+0,61%)
     
  • MXX

    52.508,35
    -314,88 (-0,60%)
     
  • PETROLEO CRU

    85,24
    -0,31 (-0,36%)
     
  • OURO

    1.841,80
    -0,80 (-0,04%)
     
  • BTC-USD

    38.372,99
    -4.070,66 (-9,59%)
     
  • CMC Crypto 200

    902,67
    -92,59 (-9,30%)
     
  • S&P500

    4.482,73
    -50,03 (-1,10%)
     
  • DOW JONES

    34.715,39
    -313,26 (-0,89%)
     
  • FTSE

    7.484,43
    -100,58 (-1,33%)
     
  • HANG SENG

    24.965,55
    +13,20 (+0,05%)
     
  • NIKKEI

    27.522,26
    -250,67 (-0,90%)
     
  • NASDAQ

    14.715,75
    -125,25 (-0,84%)
     
  • BATS 1000 Index

    0,0000
    0,0000 (0,00%)
     
  • EURO/R$

    6,1757
    +0,0456 (+0,74%)
     

O que é DMA — Direct Memory Access?

·4 min de leitura

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.

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)
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)
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: Canaltech

Trending no Canaltech:

Nosso objetivo é criar um lugar seguro e atraente onde usuários possam se conectar uns com os outros baseados em interesses e paixões. Para melhorar a experiência de participantes da comunidade, estamos suspendendo temporariamente os comentários de artigos