Escolar Documentos
Profissional Documentos
Cultura Documentos
Índice
1Princípio
2Memória cache problema de coerência
3Exemplos
4Ver também
5Ligações externas
Princípio[editar | editar código-fonte]
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.
Um uso típico do DMA ocorre na cópia de blocos de memória da RAM do sistema para um
buffer de dispositivo. Estas operações não bloqueiam o processador que fica livre para
realizar outras tarefas. Transferências DMA são essenciais para sistemas embarcados de
alto desempenho. Também é fundamental na implementação de drivers de periféricos,
roteamento de pacotes de rede, execução de áudio e vídeo por streaming Existem 8
portas de DMA e, como acontece com os pedidos de interrupção, dois dispositivos não
podem compartilhar o mesmo canal DMA, caso contrário haverá um conflito. Os 8 canais
DMA são numerados de 0 a 7, sendo nos canais de 0 a 3 a transferência de dados feita a
8 bits e nos demais a 16 bits. O uso de palavras binárias de 8 bits pelos primeiros 4 canais
de DMA visa manter compatibilidade com periféricos mais antigos.
Justamente por serem muito lentos, os canais de DMA são utilizados apenas por
periféricos lentos, como drives de disquete, placas de som e portas paralelas padrão ECP.
Periféricos mais rápidos, como discos rígidos, utilizam o Bus Mastering, uma espécie de
DMA melhorado.
O Canal 2 de DMA é nativamente usado pela controladora de disquetes. Uma placa de
som geralmente precisa de dois canais de DMA, um de 8 e outro de 16 bits, usando
geralmente o DMA 1 e 5. O DMA 4 é reservado à placa mãe. Ficamos então com os
canais 3, 6 e 7 livres. Caso a porta paralela do micro seja configurada no Setup para
operar em modo ECP, precisará também de um DMA, podemos então configurá-la para
usar o canal 3,
Exemplos[editar | editar código-fonte]
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.
Motor DMA
Como exemplo de motor DMA incorporado em um processador de propósito geral, são os
novos chipsets Intel Xeon, que incluem uma tecnologia chamada DMA I/O Acceleration
Technology(I/OAT) destinado a melhorar o desempenho de rede(Gigabit Ethernet).