Pesquisa · Mapa mental

Acesso direto à memória

O termo DMA é um acrónimo para a expressão em inglês Direct memory access. O DMA permite que certos dispositivos de hardware num computador acessem a memória do sistema para leitura e escrita independentemente da CPU. Muitos sistemas utilizam DMA, incluindo controladores de disco, placas gráficas, de rede ou de som.O acesso direto da memória é usado igualmente para transferência de dados de núcleos em processadores multi-core, em especial nos sistema-em-microplaquetas do processador, onde seu elemento de processamento é equipado com uma memória local ,e o acesso direto da memória é usado para transferir dados entre a memória local e a memória principal. Os computadores que têm os canais de acesso direto à memória podem transferir dados aos dispositivos com muito menos perdas gerais de processamento do que computadores sem uma via de acesso direto à memória. Similarmente um elemento de processamento dentro de um processador multi-core pode transferir dados para e de sua memória local sem ocupar seu tempo de processamento e permitir a simultaneidade de transferência de dados. Sem acesso direto da memória, usando a modalidade programada de entrada/saída (E/S) para uma comunicação com os dispositivos periféricos, ou as instruções da troca no caso dos núcleos multi-core, o processador central é ocupado inteiramente para a leitura ou escrita da operação, e assim não se torna possível executar o outro afazer. Com acesso direto da memória, o processador central executa transferências, faz outras operações enquanto alguma transferência estiver em andamento, recebe uma interrupção do controlador de acesso direto da memória uma vez que a operação foi feita.

Fonte: Wikipédia (pt)Atualizado em 22/06/2026
01

Princípio

Imagem: Crocodilo · BY-SA · Openverse

O DMA é uma característica essencial dos computadores modernos. Normalmente o único componente que acessa a memória RAM da máquina é o processador. O recurso DMA permite que outros componentes também acessem a memória RAM diretamente, como discos rígidos, o que aumenta o desempenho na transferência de grande quantidade de dados. De outra maneira, a CPU teria que copiar todos os dados da fonte até o destino. Isto é tipicamente mais lento do que copiar blocos de dados dentro da memória, já que o acesso a dispositivo de I/O através de barramentos periféricos é mais lento que a RAM. Durante a cópia dos dados a CPU ficaria indisponível para outras tarefas. Uma transferência por DMA essencialmente copia um bloco de memória de um dispositivo para outro. A CPU inicia a transferência, mas não executa a transferência. Para os chamados third party DMA, como é utilizado normalmente nos barramentos ISA, a transferência é realizada pelos controladores DMA que são tipicamente parte do chipset da placa mãe. Projetos mais avançados de barramento, como o PCI, tipicamente utilizam bus-mastering DMA, onde o dispositivo toma o controle do barramento e realiza a transferência de forma independente.

02

Memória cache problema de coerência

Imagem: Portuguese_eyes · BY-SA · Openverse

DMA pode guiar para memória cache problemas de coerência. Imagine um CPU equipado com uma memória cache e uma memória externa que possam ser acessadas diretamente por dispositivos usando DMA. Quando o CPU acessa a localização X na memória, o corrente valor está armazenado em outro local na cache. Subseqüentemente operações serão efetuadas com o valor X tais como disposição e atualização, a memória cache copia X. Se a cache não é esguichado à memória antes do fim próxima vez que um dispositivo tenta acessar X, o dispositivo capta um stale valor de X. Da mesma forma, se a memória cache copiar de X , o valor corrente não é o correto pois quando um dispositivo escreve um novo valor na memória, depois a CPU opera um valor incorreto de X. Esta edição pode ser endereçada de duas maneiras no projeto de sistema: os sistemas posição-coerentes executam um método no hardware por meio de que o dispositivo externo escreve é sinalizado ao controlador do esconderijo qual executa então uma invalidação da posição-esconderijo (para o acesso direto da memória lê) ou resplendores (para o acesso direto da memória escreve) as linhas da posição na pergunta. Os sistemas sem coerência deixam este processo ao software, onde o Sistema Operacional deve então se assegurar de que as linhas da posição estejam niveladas antes que alguma transferência parta utilizando acesso direto da memória, e que estejam estes acessos se já decorridos sejam invalidados antes que uma escala da memória afetada por transferência durante acesso direto da memória comprometida. O Sistema Operacional deve certificar-se de que a escala da memória não seja comprometida por nenhuma das linhas correntes. A última aproximação introduz algumas despesas gerais à operação do acesso direto da memória, porque a maioria do hardware exige que um laço invalide individualmente cada linha da posição-esconderijo.

03

Exemplos

Imagem: Portuguese_eyes · BY-SA · Openverse

Por exemplo, um controlador DMA ISA de um PC tem 16 canais DMA dos quais 7 estão disponíveis para a CPU. Cada canal DMA é associado com um registador de endereço de 16-bit e um registador contador de 16-bit. Para iniciar uma transferência o driver do dispositivo inicializa o endereço e o contador com a direcção da transferência, leitura ou escrita. Ele instrui o hardware DMA para iniciar a transferência. Quando a transferência é completa o dispositivo interrompe a CPU. Um tipo de DMA conhecido como scatter-gather permite transferências em múltiplas áreas de memória em uma única transação. Isto é equivalente ao encadeamento de múltiplas requisições simples de DMA. Novamente, a motivação é libertar a CPU de múltiplas interrupções de I/O. A requisição DMA é chamada de DMARQ e o acknowledge(confirmação) de DACK. Estes símbolos são geralmente vistos em esquemas de hardware que utilizam DMA. Eles representam os sinais eletrônicos trocados entre a CPU e o controlador DMA.

Vídeos recomendados

Fontes consultadas

Continue pesquisando