Acceso directo a la memoria (DMA) en la arquitectura de los ordenadores

La ejecución de un programa informático requiere el funcionamiento sincrónico de varios componentes de un ordenador. Por ejemplo, los procesadores - para proporcionar la información de control necesaria, las direcciones... etc, los buses - para transferir información y datos hacia y desde la memoria y los dispositivos de E/S... etc. El factor interesante del sistema es cómo gestiona la transferencia de información entre el procesador, la memoria y los dispositivos de E/S. Normalmente, los procesadores controlan todo el proceso de transferencia de datos, desde el inicio de la transferencia hasta el almacenamiento de los datos en el destino. Esto supone una mayor carga para el procesador, que, en la mayoría de los casos, permanece en un estado ideal, lo que reduce la eficiencia del sistema. Para acelerar la transferencia de datos entre los dispositivos de E/S y la memoria, el controlador DMA actúa como maestro de estación. El controlador DMA transfiere datos con una intervención mínima del procesador.


Índice de Contenido
  1. ¿Qué es un controlador DMA?
  2. Diagrama del controlador DMA en la arquitectura del ordenador
    1. Funcionamiento del controlador DMA
    2. controlador DMA 8237
    3. controlador DMA 8257
    4. Ventajas y desventajas del controlador DMA

¿Qué es un controlador DMA?

El término DMA significa acceso directo a la memoria. El dispositivo de hardware utilizado para el acceso directo a la memoria se llama controlador DMA. El controlador DMA es una unidad de control, que forma parte del circuito de interfaz de dispositivos de E/S, que puede transferir bloques de datos entre los dispositivos de E/S y la memoria principal con una intervención mínima del procesador.

Diagrama del controlador DMA en la arquitectura del ordenador

El controlador DMA proporciona una interfaz entre el bus y los dispositivos de entrada-salida. Aunque transfiere los datos sin la intervención del procesador, es controlado por éste. El procesador inicia el controlador DMA enviando la dirección de inicio, el número de palabras del bloque de datos y la dirección de la transferencia de datos, es decir, de los dispositivos de E/S a la memoria o de la memoria principal a los dispositivos de E/S. Se pueden conectar varios dispositivos externos al controlador DMA.

El DMA en la arquitectura informática

El controlador DMA contiene una unidad de direccionamiento para generar direcciones y seleccionar el dispositivo de E/S que se va a transferir. También contiene la unidad de control y el recuento de datos para llevar la cuenta del número de bloques transferidos e indicar la dirección de la transferencia de datos. Cuando la transferencia se ha completado, el DMA informa al procesador lanzando una interrupción. El diagrama de bloques típico del controlador DMA se muestra en la siguiente figura.

Diagrama de bloques típico del controlador DMA
Diagrama de bloques típico del controlador DMA

Funcionamiento del controlador DMA

El controlador DMA debe compartir el bus con el procesador para realizar la transferencia de datos. El dispositivo que mantiene el bus en un momento dado se llama maestro del bus. Cuando se va a realizar una transferencia desde un dispositivo de E/S a la memoria o viceversa, el procesador interrumpe la ejecución del programa actual, incrementa el contador de programa, mueve los datos a la pila y envía una señal de selección DMA al controlador DMA en el bus de direcciones.

Si el controlador DMA está libre, solicita el control del bus al procesador elevando la señal de solicitud de bus. El procesador concede el bus al controlador elevando la señal de concesión de bus; el controlador DMA es ahora el maestro del bus. El procesador pone en marcha el controlador DMA enviando las direcciones de memoria, el número de bloques de datos a transferir y la dirección de la transferencia de datos. Tras asignar la tarea de transferencia de datos al controlador DMA, en lugar de esperar idealmente a que se complete la transferencia de datos, el procesador reanuda la ejecución del programa tras recuperar las instrucciones de la pila.

Transferencia de datos vía DMA En el ordenador vía DMA
Transferencia de datos al ordenador a través del controlador DMA

El controlador DMA tiene el control total de los buses y puede interactuar directamente con la memoria y los dispositivos de E/S independientemente de la CPU. Realiza la transferencia de datos basándose en las instrucciones de control recibidas del procesador. Cuando la transferencia de datos se ha completado, desactiva la señal de petición de bus y la CPU desactiva la señal de concesión de bus, transfiriendo así el control de los buses a la CPU.

Cuando un dispositivo de E/S quiere iniciar la transferencia, envía una señal de solicitud DMA al controlador DMA, que confirma si está libre. A continuación, el controlador solicita el bus al procesador, elevando la señal de solicitud de bus. Tras recibir la señal de concesión del bus, transfiere los datos del dispositivo. Para un controlador DMA de n canales, se puede conectar un número n de dispositivos externos.

El DMA transfiere los datos en tres modos, que son los siguientes

a) Modo ráfagaen este modo, el DMA cede el bus a la CPU sólo cuando se ha completado la transferencia de datos. Mientras tanto, si la CPU solicita el bus, debe esperar la transferencia de datos.

b) Modo de robo de ciclosen este modo, el DMA cede el control del bus a la CPU después de cada transferencia de bytes. Envía continuamente una solicitud de control del bus, realiza una transferencia de bytes y devuelve el bus. De este modo, la CPU no tiene que esperar mucho tiempo si necesita un bus para una tarea de mayor prioridad.

c) Modo transparente: En este caso, el DMA sólo transfiere datos cuando la CPU está ejecutando una instrucción que no requiere el uso de buses.

controlador DMA 8237

  • el 8237 tiene 4 canales de E/S y la posibilidad de aumentar el número.
  • Cada canal se puede programar individualmente y tiene una capacidad de 64k de direcciones y datos.
  • El bloque de control de temporización, el bloque de control de órdenes de programación y el bloque de codificador de prioridad son los tres bloques principales del 8237A.
  • El bloque de control de la temporización interna y las señales de control externas son manejadas por el bloque de control de la temporización.
  • El bloque de control de comandos del programa descodifica las distintas órdenes que el microprocesador da al DMA.
  • El bloque de codificación de la prioridad decide a qué canal asignar la mayor prioridad.
    el 8237A tiene 27 registros internos.

el 8237A funciona en dos ciclos: ciclo ideal y ciclo activo, en los que cada ciclo contiene 7 estados separados que constan de un periodo de reloj cada uno.

S0- El primer estado, en el que el controlador ha solicitado el bus y espera el reconocimiento del procesador.

S1, S2, S3, S4 son los llamados estados de trabajo del 8237A en los que se produce la transferencia de datos real. Si se necesita más tiempo para la transferencia, se añaden estados de espera SW entre estos estados.

Las transferencias de memoria a memoria requieren transferencias de lectura desde la memoria y transferencias de escritura desde la memoria. Se necesitan ocho estados para una sola transferencia. Los cuatro primeros estados con subíndices S11, S12, S13, S14 realizan la transferencia de lectura a memoria y los cuatro siguientes S21, S22, S23, S24 son para la transferencia de escritura a memoria.

El DMA pasa al estado ideal cuando ningún canal solicita un servicio y ejecuta el estado SI. El estado SI es un estado de reposo en el que el DMA está inactivo hasta que recibe una petición. En este estado, el DMA está en condición de programa y el procesador puede programar el DMA.

Cuando el DMA está en el estado ideal y no recibe ninguna otra petición de canal, emite una señal HRQ al procesador y entra en el estado Activo, donde puede empezar a transferir datos en modo ráfaga, robo de ciclos o transparente.

diagrama de pines del 8237
diagrama de pines del 8237

controlador DMA 8257

Cuando se combina con un único dispositivo Intel 8212, el controlador DMA 8257 forma un sistema completo de 4 canales Controlador DMA. Cuando recibe una solicitud de transferencia, el 8257..

  • Adquiere el control del bus del sistema desde el procesador.
  • Se reconoce el periférico conectado al canal de mayor prioridad.
  • Los bits menos significativos de la dirección de memoria se desplazan a las líneas de dirección A0-A7 del bus del sistema.
  • Los 8 bits más significativos de la dirección de memoria se envían al puerto de E/S 8212 a través de las líneas de datos.
  • Genera las señales de control adecuadas para transferir datos entre los dispositivos periféricos y las posiciones de memoria direccionadas.
  • Cuando se ha transferido el número de bytes especificado, el controlador informa a la CPU del final de la transferencia activando la salida TC (Terminal Count).

Para cada canal, el 8257 contiene dos registros de 16 bits: 1) registro de dirección DMA y 2) registro de recuento de terminales, que deben inicializarse antes de activar un canal. La dirección de la primera posición de memoria a la que se accede se carga en el registro de direcciones DMA. Los 14 bits inferiores del valor cargado en el registro de recuento de terminales indican el número de ciclos DMA menos uno antes de que se active la salida de recuento de terminales. El tipo de operación de un canal se indica mediante los dos bits más significativos del registro de recuento de terminales.

diagrama de pines del 8257
diagrama de pines del 8257

Ventajas y desventajas del controlador DMA

Las ventajas y desventajas del controlador DMA son las siguientes.

Ventajas

  • El DMA acelera las operaciones de memoria al evitar la participación de la CPU.
  • La sobrecarga de la CPU disminuye.
  • Sólo se necesitan unos pocos ciclos de reloj para cada transferencia

Desventajas

  • El problema de la coherencia de la caché surge cuando se utiliza el DMA para la transferencia de datos.
  • Aumenta el precio del sistema.

DMA (Acceso directo a la memoria) se utiliza en tarjetas gráficas, tarjetas de red, tarjetas de sonido, etc. El DMA también se utiliza para la transferencia en el chip en los procesadores multinúcleo. Al funcionar en uno de sus tres modos, el DMA puede reducir significativamente la carga del procesador. ¿En cuál de las modalidades de DMA has trabajado? ¿Qué modalidad consideras más eficaz?

Si quieres conocer otros artículos parecidos a Acceso directo a la memoria (DMA) en la arquitectura de los ordenadores puedes visitar la categoría Generalidades.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir