Los canales DMA (Direct Memory Access) son rutas del sistema usados por muchos dispositivos para transferir información directamente a la memoria en ambos sentidos. Los canales DMA no son tan “famosos” como el sistema IRQ en cuestión de recursos. Esto es debido principalmente por un motivo: Este sistema es usado por muchos menos dispositivos, y normalmente causan menos problemas.
Sin embargo, conflictos con los canales DMA pueden causar problemas extraños en el sistema, y pueden ser difíciles de diagnosticar. Hoy en día los DMAs son utilizados comúnmente en disqueteras y tarjetas de sonido.
¿Para qué se crearon los canales DMA?
Como sabrás, el procesador es el “cerebro” de la máquina, y en muchas maneras se puede asemejar al director de una orquesta. En las máquinas mas antiguas, el procesador hacia prácticamente todo. Aparte de hacer funcionar los programas también era responsable de transferir datos a los periféricos. Desafortunadamente, dejar que el procesador haga estas transferencias, es bastante negativo porque le impide hacer otras tareas.
La invención de la tecnología DMA permitió a los procesadores hacer otros trabajos y que los periféricos transfieran los datos ellos mismos, con la consiguiente mejora del rendimiento. Algunos canales especiales fueron creados, aparte de los circuitos integrados, permitiendo la transferencia de información sin que el procesador controlara cada aspecto de la transferencia. Los circuitos son normalmente parte del sistema que compone la placa base.
Hay que tener en cuenta que los canales DMA solo se encuentran en los bus ISA (y en los EISA y VLB, ya que también son derivados). Los dispositivos PCI no utilizan los canales DMA estándar en absoluto.
Tipos de DMA
El DMA estándar algunas veces recibe el nombre de DMA “third party”, y se refiere a que el controlador DMA del sistema es el que está haciendo la transferencia (las primeras dos partes son el transmisor y receptor de la transferencia). También existe otro tipo llamada “first party”, en el cual el periférico haciendo la transferencia toma control del bus de sistema para realizar dicha transferencia. Esto se llama “bus mastering”.
El “bus mastering” provee de un mejor rendimiento ya que los dispositivos modernos tienen integrados un sistema de circuitos mucho mejores y mas rápidos, comparados al antiguo controlador ISA DMA.
Problemas y conflictos con múltiples dispositivos
Los canales DMA son dispositivos únicos cuando hablamos de compartir recursos. Si dos dispositivos tratan de usar el mismo canal DMA al mismo tiempo, la información se mezclará entre los dos equipos que tratan de usarlo, y los problemas pueden empezar a surgir.
Es posible compartir un canal DMA entre más de un dispositivo, pero solo bajo ciertas condiciones. En esencia, si hay dos dispositivos que raramente usas, y nunca usas simultáneamente, podrás hacerlos compartir un canal. Sin embargo, este no es el método preferido ya que puede resultar en más problemas, que si damos a cada dispositivo su propio recurso.