Você está na página 1de 3

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.

Í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,

Memória cache problema de coerência[editar | editar código-fonte]


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.
Os híbridos igualmente existem, onde a posição-esconderijo L2 secundário é coerente
quando o posição-esconderijo L1 (tipicamente na CPU) for controlado pelo software.

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).

Você também pode gostar