Tanto en la E/S
programada como la basada en interrupciones, la CPU debe encargarse de la
transferencia de datos una vez que sabe que hay datos disponibles en el
controlador. Una mejora importante para incrementar la concurrencia entre la CPU
y la E/S consiste en que el controlador del dispositivo se pueda encargar de
efectuar la transferencia de datos, liberando de este trabajo a la UCP, e
interrumpir a la UCP sólo cuando haya terminado la operación completa de E/S.
Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory
Access).
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).
Donde el campo Operación corresponde al código de operación de las instrucciones máquina normal. Especifica la operación que debe realizar la CCW. La unidad de control decodifica este campo y envía las señales adecuadas de control al dispositivo. 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.
6. Cuando el
registro de contador está a cero, el controlador interrumpe a la UCP para in
dicar que la operación de DMA ha terminado.
Inicio y control de los programas
de canal
Hemos
visto cómo se utilizan los programas de canal para realizar operaciones de E/S.
Estos programas residen en la memoria principal del computador y se ejecutan en
el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las
operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen
cuatro instrucciones máquina que la CPU puede utilizar para estos fines. Son
las siguientes:
- START I/O Inicia una operación de E/S. El campo de
dirección de la instrucción se emplea para especificar el canal y el
dispositivo de E/S que participa en la operación.
- HALT I/O Finaliza la operación del canal.
- TEST CHANNEL Prueba el estado del canal.
- TEST I/O Prueba el estado del canal, el subcanal y el
dispositivo de E/S.
Una operación de E/S se inicia con
la instrucción START I/O. La ubicación del programa de canal en la memoria
principal viene definida en la palabra de dirección de canal (CAW:
Channel Address word), que siempre está almacenada en la posición 72 de
la memoria principal.
Funciones
implicadas en las operaciones de entrada/salida
Para que un computador pueda
ejecutar un programa debe ser ubicado previamente en la memoria, junto con los
datos sobre los que opera, y para ello debe existir una unidad funcional de
entrada de información capaz de escribir en la memoria desde el exterior.
Análogamente, para conocer los resultados de la ejecución de los programas, los
usuarios deberán poder leer el contenido de la memoria a través de otra unidad
de salida de datos. La unidad de Entrada/Salida (E/S) soporta estas
funciones, realizando las comunicaciones del computador (memoria) con el mundo
exterior (periféricos). Los dispositivos periféricos que se pueden conectar a
un computador se suelen clasificar en tres grandes grupos:
Dispositivos de presentación de datos. Son
dispositivos con los que interactúan los usuarios, portando datos entre éstos y
la máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc.
- Dispositivos de almacenamiento de datos. Son dispositivos que
forman parte de la jerarquía de memoria del computador. Interactúan de
forma autónoma con la máquina, aunque también sirven para el intercambio
de datos con el usuario, por ejemplo, los discos magnéticos.
- Dispositivos de comunicación con otros procesadores. Permiten
la comunicación con procesadores remotos a través de redes, por ejemplo,
las redes de área local o global.
- Dispositivos de adquisición de datos. Permiten la
comunicación con sensores y actuadores que operan de forma autónoma en el
entorno del computador. Se utilizan en sistemas de control automático de
procesos por computador y suelen incorporar conversores de señales A/D y
D/A.
Los dispositivos de transporte y presentación de datos representan una
carga muy baja de trabajo para el procesador comparados con los dispositivos
de almacenamiento. La siguiente tabla muestra las velocidades de transferencia
típicas para diferentes dispositivos.

- Los gráficos requieren una gran capacidad de procesamiento de datos, hasta el punto que se han diseñado procesadores de propósito especial para manejar de forma eficiente las representaciones gráficas (GPU: Graphic Processor Unit).
- El problema del vídeo es simplemente la animación de los
problemas gráficos, ya que debe crearse una nueva imagen cada 1/30 de
segundo (33 milisegundos).
- El procesamiento de la voz es también elevado porque exige la
creación o el reconocimiento de varios fonemas en tiempo real. De hecho es
el medio que más capacidad de procesamiento requiere debido a que presenta
el mayor grado de intolerancia por retrasos en el usuario.
Los dispositivos periféricos que pueden conectarse a un computador
para realizar entrada y salida de información presentan, pues, las siguientes
características:
- Tienen formas de funcionamiento muy diferentes entre sí,
debido a las diferentes funciones que realizan y a los principios físicos
en los que se basan.
- La velocidad de transferencia de datos es también
diferente entre sí y diferente de la presentada por la CPU y la memoria.
- Suelen utilizar datos con formatos y longitudes de
palabra diferentes
No obstante estas diferencias, existen una serie de funciones
básicas comunes a todo dispositivo de E/S:
- Identificación única del dispositivo por parte de la
CPU
- Capacidad de envío y recepción de datos
- Sincronización de la transmisión, exigida por la diferencia
de velocidad de los dispositivos de E/S con la CPU
La identificación del dispositivo se realiza con un
decodificador de direcciones. El envío y la recepción de datos
tienen lugar a través de registros de entrada y salida de datos. Los circuitos
de sincronización se manipulan por medio de registros de estado y control. El
siguiente esquema representa gráficamente estas funciones:
Las tres funciones básicas se pueden realizar a través del
bus del sistema que conecta la memoria y la CPU, o bien se puede
utilizar un bus específico para las operaciones de E/S. Estas alternativas se
traducen en dos formas de organización de los espacios de direcciones:
- Espacios de direcciones unificados
- Las unidades de E/S se ubican en el espacio único de direcciones como si fuesen elementos de Memoria.
- A cada unidad de E/S se le asigna un conjunto de direcciones (suficiente para diferenciar todos sus registros internos).
- La interacción entre CPU y unidad de E/S se realiza a través de instrucciones de referencia a memoria. El bus del sistema es único.
Espacios de direcciones independientes
(Memoria y E/S)
- Las unidades de E/S se ubican en un espacio de direcciones diferente al de memoria
- La interacción entre CPU y unidad de E/S se realiza a través de instrucciones específicas de E/S. La separación de espacios de direcciones puede soportarse con un bus único de uso compartido entre Memoria y E/S en función del estado de una línea de control MEM/IO:
Pero el
desdoblamiento de espacios de direcciones puede responder a la existencia de
dos buses independientes, uno para memoria (bus del sistema) y otro para E/S:
Funcionalmente
son equivalentes, pero desde el punto de vista de la codificación de programas
difieren en el uso de las instrucciones. En el caso de E/S asignada en memoria
se utilizan instrucciones de referencia a memoria, mientras que para E/S
aislada existe un grupo particular de instrucciones para realizar esta función.
No hay comentarios.:
Publicar un comentario