Tanto en la E/S programada como la basada en interrupciones, la UCP 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 UCP 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 decrementa el
contador de datospendientes 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
como 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:
Aunque la
velocidad de transferencia de los dispositivos de presentación de datos ha sido
tradicionalmente lenta comparada con la
de los dispositivos de almacenamiento, en los últimos tiempos la situación está
cambiando. Cada vez más, los computadores se utilizan para manejar documentos
multimedia que constan de gráficos, vídeos y voz. La siguiente tabla presenta
algunos parámetros de transferencia para los dispositivos modernos de E/S
multimedia:
- 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.
Los dos ejemplos siguientes muestran ambas alternativas:
No hay comentarios:
Publicar un comentario