Mercado abrirá em 1 h 5 min
  • BOVESPA

    109.717,94
    -517,82 (-0,47%)
     
  • MERVAL

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

    48.460,55
    +652,34 (+1,36%)
     
  • PETROLEO CRU

    92,86
    -1,48 (-1,57%)
     
  • OURO

    1.800,10
    -7,10 (-0,39%)
     
  • BTC-USD

    23.693,71
    -931,75 (-3,78%)
     
  • CMC Crypto 200

    562,59
    -12,16 (-2,11%)
     
  • S&P500

    4.207,27
    -2,97 (-0,07%)
     
  • DOW JONES

    33.336,67
    +27,16 (+0,08%)
     
  • FTSE

    7.485,52
    +19,61 (+0,26%)
     
  • HANG SENG

    20.175,62
    +93,19 (+0,46%)
     
  • NIKKEI

    28.546,98
    +727,65 (+2,62%)
     
  • NASDAQ

    13.358,50
    +47,25 (+0,35%)
     
  • BATS 1000 Index

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

    5,3137
    -0,0100 (-0,19%)
     

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