Definição – o que significa acesso direto à memória (DMA)?
O acesso direto à memória (DMA) é um método que permite que um dispositivo de entrada / saída (E / S) envie ou receba dados diretamente para ou da memória principal, ignorando a CPU para acelerar as operações de memória.
O processo é gerenciado por um chip conhecido como controlador DMA (DMAC).
Definirtec explica Direct Memory Access (DMA)
Uma parte definida da memória é usada para enviar dados diretamente de um periférico para a placa-mãe sem envolver o microprocessador, de modo que o processo não interfira na operação geral do computador.
Em computadores mais antigos, quatro canais DMA eram numerados 0, 1, 2 e 3. Quando o barramento de expansão de arquitetura padrão da indústria (ISA) de 16 bits foi introduzido, os canais 5, 6 e 7 foram adicionados.
ISA era um padrão de barramento de computador para computadores compatíveis com IBM, permitindo que um dispositivo iniciasse transações (mestre de barramento) em uma velocidade mais rápida. O controlador ISA DMA tem 8 canais DMA, cada um dos quais associado a um endereço de 16 bits e registradores de contagem.
ISA já foi substituída por placas de expansão de porta gráfica acelerada (AGP) e de interconexão de componentes periféricos (PCI), que são muito mais rápidas. Cada DMA transfere aproximadamente 2 MB de dados por segundo.
As ferramentas de recursos do sistema do computador são usadas para comunicação entre hardware e software. Os quatro tipos de recursos do sistema são:
-
Endereços de E / S.
-
Endereços de memória.
-
Números de solicitação de interrupção (IRQ).
-
Canais de acesso direto à memória (DMA).
Os canais DMA são usados para comunicar dados entre o dispositivo periférico e a memória do sistema. Todos os quatro recursos do sistema dependem de certas linhas em um barramento. Algumas linhas no barramento são usadas para IRQs, algumas para endereços (os endereços de E / S e o endereço de memória) e algumas para canais DMA.
Um canal DMA permite que um dispositivo transfira dados sem expor a CPU a uma sobrecarga de trabalho. Sem os canais DMA, a CPU copia todos os dados usando um barramento periférico do dispositivo de E / S. O uso de um barramento periférico ocupa a CPU durante o processo de leitura / gravação e não permite que outro trabalho seja executado até que a operação seja concluída.
Com o DMA, a CPU pode processar outras tarefas enquanto a transferência de dados está sendo realizada. A transferência de dados é iniciada primeiro pela CPU. O bloco de dados pode ser transferido de e para a memória pelo DMAC de três maneiras.
No modo burst, o barramento do sistema é liberado somente após a transferência de dados ser concluída. No modo de roubo de ciclo, durante a transferência de dados entre o canal DMA e o dispositivo de E / S, o barramento do sistema é abandonado por alguns ciclos de clock para que a CPU possa realizar outras tarefas. Quando a transferência de dados é concluída, a CPU recebe uma solicitação de interrupção do controlador DMA. No modo transparente, o DMAC pode assumir o controle do barramento do sistema apenas quando não for exigido pelo processador.
No entanto, o uso de um controlador DMA pode causar problemas de coerência de cache. Os dados armazenados na RAM acessada pelo controlador DMA podem não ser atualizados com os dados de cache corretos se a CPU estiver usando memória externa.
As soluções incluem esvaziar as linhas de cache antes de iniciar as transferências de DMA de saída ou executar uma invalidação de cache nas transferências de DMA de entrada quando as gravações externas são sinalizadas para o controlador de cache.