¿Cómo funciona un controlador DMA?

13

De la Sección 5.1.4 Acceso directo a la memoria en Sistemas operativos modernos por Andrew S. Tanenbaum, Herbert Bos, 2014 ,

  

Para simplificar la explicación, asumimos que la CPU accede a todos los dispositivos y la memoria a través de un solo bus del sistema que conecta la CPU, la memoria y los dispositivos de E / S, como se muestra en la Fig. 5-4.

  1.   

    ParaexplicarcómofuncionaDMA,veamosprimerocómoseproducenlaslecturasdeldisco.  cuandonoseutilizaDMA.

        
    • Primero,elcontroladordeldiscoleeelbloque(unoomássectores)delaunidadenserie,bitporbit,hastaquetodoelbloqueestáen  la  búferinternodelcontrolador.
    •   
    • Acontinuación,calculalasumadecomprobaciónparaverificarquenosehayanproducidoerroresdelectura.Entonceselcontroladorprovocaunainterrupción.Cuandoel  operando  elsistemacomienzaaejecutarse,puedeleerelbloquedediscodesdeel  búferdelcontroladorunbyteounapalabraalavezmediantelaejecucióndeunbucle,  concadaiteraciónleyendounbyteopalabradeuncontrolador  dispositivoseregistraysealmacenaenlamemoriaprincipal.
    •   

    P:enelsegundopaso,

    • ¿losdatosnosetransfieren" desde el búfer del controlador " a la memoria principal? ¿Por qué dice tanto " desde el controlador búfer "y" de un registro de dispositivo del controlador "?

    • en el segundo paso, ¿puede el controlador transferir datos desde su búfer a la memoria principal, sin interrumpir a la CPU, y ¿sin involucrar nuevamente al sistema operativo?

  2.   

    Cuando se usa DMA, el procedimiento es diferente.

         
    • Primero, la CPU programa el controlador DMA estableciendo sus registros para que sepa qué transferir a dónde (paso 1 en la Fig. 5-4).
      También emite un comando al controlador de disco diciéndole que leer   datos del disco en su búfer interno y verifique la suma de comprobación.
    •   
    • Cuando hay datos válidos en el búfer del controlador de disco, DMA puede comenzar. El controlador DMA inicia la transferencia emitiendo una lectura   solicite a través del bus al controlador de disco (paso 2). Esta lectura   solicitud   se parece a cualquier otra solicitud de lectura, y el controlador de disco no lo hace   saber (o cuidar) si proviene de la CPU o de un controlador DMA.   Por lo general, la dirección de memoria para escribir está en la dirección del bus   líneas, por lo que cuando el controlador de disco recupera la siguiente palabra de su   búfer interno, sabe dónde escribirlo. La escritura en la memoria es   Otro ciclo de bus estándar (paso 3).
    •   
    • Cuando se completa la escritura, el controlador de disco envía una señal de confirmación al controlador DMA, también a través del bus   (paso   4). El controlador DMA luego incrementa la dirección de memoria para usar y   Disminuye el número de bytes. Si el número de bytes es aún mayor   que 0, los pasos 2 a 4 se repiten hasta que el conteo   llega a 0.
    •   
    • En ese momento, el controlador DMA interrumpe la CPU para hacerle saber que la transferencia está completa. Cuando el funcionamiento   sistema   se inicia, no tiene que copiar el bloque de disco a la memoria; es   ya allí.
    •   

    P: en el segundo paso, el controlador DMA solicita el disco controlador para transferir datos desde el búfer del controlador de disco a la memoria principal. En el primer paso, la CPU envía un comando al controlador del disco para que lea los datos del disco en su búfer interno. Al mismo tiempo, ¿puede la CPU también indicar al controlador del disco que transfiera datos? desde el búfer del controlador de disco a la memoria principal, cuando el controlador de disco finaliza la transferencia de datos del disco al búfer del controlador de disco, por lo que no es necesario que el controlador DMA le indique al controlador del disco que transfiera datos del búfer del controlador de disco a la memoria principal? (No entiendo por qué necesitamos un controlador DMA para la transferencia de datos entre el disco y la memoria principal, así que supongo que me olvido de algo importante para entender la cita).

  3. Un controlador de dispositivo de un dispositivo controla el dispositivo y realiza Operaciones en el dispositivo. ¿Qué dispositivo controla un controlador DMA? y realizar operaciones en?

¡Gracias!

    
pregunta Tim 08.02.2015 - 05:49

2 respuestas

7

P1

En el primer paso, NO estamos usando DMA, por lo que el contenido del controlador del disco es leído pieza por pieza por el procesador. El procesador, por supuesto (asumiendo que los datos realmente se van a utilizar para algo, y no solo a ser desechados) los almacenará en la memoria del sistema.

El búfer en este caso es una pieza de memoria en el propio disco duro (controlador), y el dispositivo del controlador registra un registro de control del propio disco duro (controlador).

No involucrar el sistema operativo (o algún otro software) requeriría algún tipo de operación de DMA, y la sección de texto que está discutiendo en esta parte de su pregunta NO está utilizando DMA. Entonces, no, no sucederá así en este caso.

P2

Por lo tanto, el objetivo principal de un controlador DMA es "realizar la tediosa tarea de almacenar cosas del búfer interno del dispositivo en la memoria principal". La CPU funcionará tanto con el controlador DMA como con el dispositivo de disco. Si el disco pudiera hacer esto por sí mismo, no habría necesidad de un controlador DMA.

Y, de hecho, en los sistemas modernos, la capacidad DMA está típicamente integrada en el controlador del disco duro, en el sentido de que el controlador tiene capacidades de "masterización de bus", lo que significa que el controlador mismo IS El controlador DMA para el dispositivo. Sin embargo, verlos como dos dispositivos separados hace que todo el concepto de DMA sea un poco menos difícil de entender.

Q3 (tipo de)

Si piensa en el disco duro como la pila de ladrillos que se acaba de entregar a un sitio de construcción, y el procesador es el albañil que coloca los ladrillos para construir la casa. El controlador DMA es el trabajador que transporta los ladrillos desde la pila de ladrillos hasta donde son necesarios para el albañil, lo que significa que el albañil puede concentrarse en hacer el trabajo real de colocar ladrillos (que es un trabajo calificado, si alguna vez lo ha intentado). usted mismo), y el trabajo simple de "buscar y transportar" lo puede hacer un trabajador menos calificado.

Evidencia anecdótica: La primera vez que aprendí sobre la transferencia de DMA desde el disco a la memoria fue aproximadamente en 1997 cuando los controladores IDE comenzaron a usar DMA, y usted necesitaba obtener un controlador de "controlador IDE de la placa base" para permitir que el IDE realice DMA, y en ese momento, la lectura de el disco duro tomaría alrededor del 6-10% del tiempo de CPU, mientras que DMA en la misma configuración usaría alrededor del 1% del tiempo de CPU. Antes de ese tiempo, solo los sistemas sofisticados con controladores de disco SCSI utilizarían DMA.

    
respondido por el Mats Petersson 08.02.2015 - 15:50
5

Esto no es una respuesta; es una solicitud de aclaración que es demasiado larga para caber en los comentarios.

Antes de que alguien pueda responder esta pregunta, uno tiene que explicar claramente la arquitectura del sistema informático que se está discutiendo. A saber:

  • ¿Cuáles son los sistemas de bus involucrados en esta descripción?

    • La mayoría de los sistemas informáticos tienen un bus de memoria.
    • La mayoría de las computadoras también tienen otros tipos de sistemas de bus.
  • ¿El disco IO también pasa por el bus de memoria?

    • En otras palabras, ¿el disco usa las líneas del bus de direcciones para las direcciones y las líneas del bus de datos para los datos?
  • ¿El controlador de disco ve el bus de memoria como ...

    • ¿Un bus de memoria? Es decir, piensa que está hablando con un chip de memoria; es decir, RAS (luz estroboscópica de acceso de fila), CAS (columna estroboscópica de acceso de columna), ...
    • Muy improbable: hablar con un chip de memoria requiere que uno sea ultra preciso para emitir comandos de acuerdo con la temporización DRAM (latencias); unos pocos ciclos de reloj demasiado pronto o demasiado tarde, se producirá la pérdida de datos.
  • Entonces ... ¿qué piensa el controlador de disco que el bus "en realidad es"?

  • En la mayoría de los sistemas informáticos, hay un tipo de IO llamado "Port I / O".

    • La E / S del puerto puede combinarse con el bus de memoria, o puede tener otro bus dedicado.
    • La característica distintiva de Port I / O es que uno puede terminar todo en un solo ciclo de bus (o un número constante predefinido), sin tener que preocuparse por los peligros de los tiempos de DRAM.
  • En los sistemas más avanzados (bueno, desde hace dos décadas), hay tipos más nuevos de sistemas de bus. Por ejemplo, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...

Ahora, con tantas dudas sobre el "sistema informático que se está discutiendo", puede comprender por qué no obtendrá una respuesta clara para su pregunta.

Sí, sé que viene de un libro de texto. Usted tiene una copia Yo no. (No en casa, sin embargo, hay uno en la oficina). Por lo tanto, si necesita una respuesta, deberá mostrar algunos diagramas y explicar cómo es el sistema de bus de su computadora.

En la línea de fondo, sin embargo:

  • Un DMA es un dispositivo programable. Es decir, la CPU tiene la responsabilidad final de decirle al DMA qué hacer. Por supuesto, durante el intervalo de tiempo en el que el DMA toma el control del sistema, la CPU cooperará al permitir que el DMA ejecute el programa.

  • Bajo el control de la CPU (y el sistema operativo que la ejecuta), un DMA tiene la capacidad de tomar el control de uno o más bus (plural) para facilitar la transferencia de datos desde el controlador de disco a la memoria principal.

  • Durante el período de tiempo en el que la DMA toma el control del bus (en plural), la DMA emitirá comandos a través de ese bus, es decir, en lugar de su controlador habitual, es decir, la DMA pretende que está haciendo el trabajo de la CPU.

  • Si la transferencia de datos involucra dos buses diferentes, el DMA puede tener que hacer esto a diferentes buses.

  • Para poder mover una cantidad de bytes (palabras, etc.), el DMA contiene un contador de bucle para realizar un seguimiento de la cantidad restante de datos a copiar.

  • Para poder escribir en la memoria principal, el DMA contiene un registro de dirección de memoria, que es programable por la CPU, para que la CPU pueda decirle al DMA dónde escribir los datos.

  • Dependiendo del diseño del bus del sistema, el DMA puede o no tener que lidiar con los detalles espantosos de los ciclos de tiempo de DRAM.

  • Érase una vez, algún tiempo después de que se haya inventado el DMA, algunos dispositivos periféricos comienzan a empaquetar el DMA en sus controladores, lo que se denomina Bus Mastering . Sin embargo, si el DMA se encuentra en el paquete de la CPU, la placa base o la tarjeta de E / S, debe estar finalmente bajo el control (programación) de la CPU, ya que de alguna manera deben negociar el acceso al bus del sistema (plural), y la memoria principal.

  • Los sistemas informáticos modernos tienen un subsistema dedicado denominado Controlador DRAM. Si hay uno, es casi seguro que este controlador DRAM también cumplirá con la funcionalidad de DMA, es decir, parece que es un "bucle de copia de bytes" programable, y toda la complejidad mencionada anteriormente está oculta dentro del silicio de la DRAM Controlador.

Si lo encuentras muy confuso, también lo encuentro confuso, necesitarás diagramas. Muchos diagramas. Diagramas del sistema. Diagramas de bus. Diagramas de tiempo. Diagramas de transición de estado. etc.

respondido por el rwong 08.02.2015 - 06:52

Lea otras preguntas en las etiquetas

Comentarios Recientes

Así es como funcionan los controladores: un DMA normalmente se procesará en una extensión que hace lo mismo con un controlador DMA (en cuyo caso los datos se almacenan allí). Pero el problema, en estos días, es que no recibo comentarios específicos del usuario ni permito que ningún tipo de código se comunique o analice estos DMA. Supongo que no tiene sentido intentar hacerlo yo mismo porque no quiero toda esta atención sobre mí ... pero es todo lo contrario de entender al usuario, que es una parte importante... Lee mas