O termo DMA é un acrónimo para a expresión en inglés Direct memory access. O DMA permite que certos dispositivos de hardware nun computador accedan a memoria do sistema para lectura e escrita independentemente da CPU. Moitos sistemas utilizan DMA, incluíndo controladores de disco, placas gráficas, de rede ou de son .O acceso directo da memoria é usado igualmente para transferencia de datos de núcleos en procesadores multi-core, en especial nos sistema-en-microplaquetas do procesador, onde seu elemento de procesamento é equipado cunha memoria local ,e o acceso directo da memoria é usado para trasladar datos entre a memoria local e a memoria principal. Os computadores que teñen as canles de acceso directo a memoria poden trasladar datos aos dispositivos con moi menos perdas xerais de procesamento do que computadores sen unha vía de acceso directo á memoria. Similarmente un elemento de procesamento dentro dun procesador multi-core pode trasladar datos para e de súa memoria local sen ocupar seu tempo de procesamento e permitir a simultaneidade de transferencia de datos. Sen acceso directo da memoria, usando a modalidade programada de entrada/saída (E/S) para unha comunicación cos dispositivos periféricos, ou as instrucións do troco no caso dos núcleos multi-core, o procesador central é ocupado enteiramente para a lectura ou escrita da operación, e así non se torna posíbel executar o outro afazer. Con acceso directo da memoria, o procesador central executa transferencias, fai outras operacións mentres algunha transferencia estiver en marcha, recibe unha interrupción do controlador de acceso directo da memoria unha vez que a operación foi feita.
Táboa de contido |
O DMA é unha característica esencial dos computadores modernos. Normalmente o único compoñente que acessa a memoria RAM da máquina é o procesador. O recurso DMA permite que outros compoñentes tamén acessem a memoria RAM directamente, como discos ríxidos, o que aumenta o desempeño na transferencia de gran cantidade de datos. Doutra maneira, a CPU tería que copiar todos os datos da fonte até o destino. Isto é tipicamente máis lento do que copiar bloques de datos dentro da memoria, xa que o acceso a dispositivo de I/O a través de barramentos periféricos é máis lento que a RAM. Durante a copia dos datos a CPU ficaría indispoñíbel para outras tarefas. Unha transferencia por DMA esencialmente copia un bloque de memoria dun dispositivo para outro. A CPU inicia a transferencia, mais non executa a transferencia. Para os chamados third party DMA, como é utilizado normalmente nos barramentos ISA, a transferencia é realizada polos controladores DMA que son tipicamente parte do chipset da placa nai. Proxectos máis avanzados de barramento, como o PCI, tipicamente utilizan bus-mastering DMA, onde o dispositivo toma o control do barramento e realiza a transferencia de forma independente. Un uso típico do DMA ocorre na copia de bloques de memoria da RAM do sistema para un buffer de dispositivo. Estas operacións non bloquean o procesador que fica libre para realizar outras tarefas. Transferencias DMA son esenciais para sistemas embarcados de alto desempeño. Tamén é fundamental na implementação de drivers de periféricos, roteamento de paquetes de rede, execución de áudio e vídeo por streaming Existen 8 portas de DMA e, como acontece coas peticións de interrupción, dous dispositivos non poden compartir a mesma canle DMA, en caso contrario haberá un conflito. Os 8 canles DMA son numerados de 0 a 7, sendo nas canles de 0 a 3 a transferencia de datos feita a 8 bits e nos demais a 16 bits. O uso de palabras binárias de 8 bits polos primeiros 4 canles de DMA visa manter compatibilidade con periféricos máis antigos. Xustamente por seren moi lentos, as canles de DMA son utilizados só por periféricos lentos, como drives de disquete, placas de son e portas paralelas padrão ECP. Periféricos máis rápidos, como discos ríxidos, utilizan o Bus Mastering, unha especie de DMA mellorado. A Canle 2 de DMA é nativamente usado pola controladora de disquetes. Unha placa de son xeralmente precisa de dúas canles de DMA, un de 8 e outro de 16 bits, usando xeralmente o DMA 1 e 5. O DMA 4 é reservado á placa nai. Ficamos entón coas canles 3, 6 e 7 libres. No caso de que a porta paralela do micro sexa configurada no Setup para operar en modo ECP, precisará tamén dun DMA, podemos entón configurala para usar a canle 3.
DMA pode guiar para memoria cache problemas de coherencia. Imaxine un CPU equipado cunha memoria cache e unha memoria externa que poidan ser acessadas directamente por dispositivos usando DMA. Cando o CPU acessa a localización X na memoria, o corrente valor está almacenado noutro local na cache. Subseqüentemente operacións serán efectuadas co valor X tales como disposición e actualización, a memoria cache copia X. Se a cache non é esguichado á memoria antes do fin próxima vez que un dispositivo tenta acessar X, o dispositivo capta un stale valor de X.
Da mesma forma, se a memoria cache copiar de X , o valor corrente non é o correcto pois cando un dispositivo escribe un novo valor na memoria, despois o CPU opera un valor incorreto de X. Esta edición pode ser enderezada de dúas maneiras no proxecto de sistema: os sistemas posición-coerentes executan un método no hardware por medio de que o dispositivo esterno escribe é sinalizado ao controlador do agocho cal executa entón unha invalidação da posición-agocho (para o acceso directo da memoria le) ou resplandores (para o acceso directo da memoria escribe) as liñas da posición na pregunta. Os sistemas sen coherencia deixan este proceso ao software, onde o Sistema Operacional debe entón se asegurar de que as liñas da posición estean niveladas antes que algunha transferencia parta utilizando acceso directo da memoria, e que estean estes accesos se xa decorridos sexan invalidados antes que unha escala da memoria afectada por transferencia durante acceso directo da memoria comprometida. O Sistema Operacional debe certificar-se de que a escala da memoria non sexa comprometida por ningunha das liñas correntes. A última aproximación introduce algúns gastos xerais á operación do acceso directo da memoria, porque a maioría do hardware esixe que un lazo invalide individualmente cada liña da posición-agocho. Os híbridos igualmente existen, onde a posición-agocho L2 secundario é coerente cando o posición-agocho L1 (tipicamente na CPU) for controlado polo software.
Por exemplo, un controlador DMA ISA dun PC ten 16 canles DMA dos cales 7 están dispoñíbeis para a CPU. Cada canle DMA é asociado cun registador de enderezo de 16-bit e un registador contador de 16-bit. Para iniciar unha transferencia o driver do dispositivo inicializa o enderezo e o contador coa dirección da transferencia, lectura ou escrita. El instrúe o hardware DMA para iniciar a transferencia. Cando a transferencia é completa o dispositivo interrompe a CPU.
Un tipo de DMA coñecido como scatter-gather permite transferencias en múltiples áreas de memoria nunha única transacción. Isto é equivalente ao encadeamento de múltiples requisições simples de DMA. Novamente, a motivación é liberar a CPU de múltiples interrupcións de I/O.
A requisição DMA é chamada de DMARQ e o acknowledge(confirmación) de DACK. Estes símbolos son xeralmente visados en esquemas de hardware que utilizan DMA. Eles representan os sinais electrónicos trocados entre a CPU e o controlador DMA.
Motor DMA
Como exemplo de motor DMA incorporado nun procesador de propósito xeral, son os novos chipsets Intel Xeon, que inclúen unha tecnoloxía chamada DMA I/O Acceleration Technology(I/OAT) destinado a mellorar o desempeño de rede(Gigabit Ethernet).