Cuando se utiliza acceso directo a
memoria, es el controlador el que se encarga directamente de transferir los
datos entre el periférico y la memoria principal, sin requerir intervención
alguna por parte del procesador. Esta técnica funciona de la siguiente manera:
cuando el procesador desea que se imprima un bloque de datos, envía una orden
al controlador indicándole la siguiente información:
- Tipo de operación: lectura o escritura.
- Periférico involucrado en la operación.
- La dirección de memoria desde la que se va a leer o a la que va a escribir directamente con el controlador de dispositivo (dirección).
- El número de bytes a transferir (contador).
Existen varias operaciones, las más importantes son las siguientes:
- Lectura: el canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo nº de palabras, en orden ascendente de direcciones, empezando en la dirección especificada en el campo dirección del dato.
- Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura.
- Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S, como rebobinar una cinta magnética, etc.
- Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo dirección del dato como la dirección de la siguiente CCW a ejecutar.
Los pasos a seguir en una operación de E/S con DMA son los
siguientes:
1. Programación de la operación de E/S. Se indica
al controlador la operación, los datos a transferir y la dirección de memoria
sobre la que se efectuará la operación.
2. El controlador contesta aceptando la petición
de E/S.
3. El controlador le ordena al dispositivo que
lea (para operación de lectura) una cierta cantidad de datos desde una posición
determinada del dispositivo a su memoria interna.
4. Cuando los datos están listos, el controlador
los copia a la posición de memoria que tiene en sus registros, incrementa dicha
posición de memoria y decremento el contador de datos pendientes de transferir.
5. Los pasos 3 y 4 se repiten hasta que no quedan
más datos por leer.
No hay comentarios:
Publicar un comentario