Tema 8: Comunicacion Entre Procesador y Perifericos
Comunicacion Entre Procesador y Perifericos
La unidad de entrada/salida (E/S) es un componente clave en el computador ya que permite la comunicacion de este con el exterior. Es un error pensar que un controlador de E/S es unicamente una conexion fisica entre el bus del sistema y los dispositivos externos ya que tambien cuenta con la logica necesaria para realizar la comunicacion entre el dispositivo y la memoria y entre el dispositivo con la CPU, como tambien supervisar y comunicarse con el dispositivo.
Los perifericos no se conectan directamente al bus porque:
- No es practico incorporar dentro de la CPU la logica para controlar todos los dispositivos que se conectan.
- La velocidad de transferencia de datos de los perifericos es significativamente menor que la de la CPU debi a la naturaleza mecanica de estos.
- Los tipos de datos que emplean los perifericos y su longitud de la palabra no tiene porque coincidir con los empleados por la CPU.
Dispositivos Externos
La utilidad de un computador no tiene sentido sin comunicarse con el exterior. Esta comunicacion con el exterior se lleva a cabo a traves de una gran variedad de dispositivos externos que se conectan al computador a traves de un controlador de E/S.
Los perifericos se pueden clasificar en funcion de la tarea que realizan:
- Adaptados al Usuario: Permiten a la CPU comunicarse con el usuario (por ejemplo, la impresora.)
- Adaptados a la Maquina: Permiten comunicarse al ususario con el sistema (por ejemplo, las unidades de disco.)
- De Comunicacion: Transmiten informacion a dispositivos remotos (por ejemplo, la tarjeta bluetooth.)
- Interaccion con el Medio Externo: Transmiten informacion a elementos actuadores y reciben la informacion de los sensores.
Controlador de E/S ATTACH
El controlador de E/S se encarga de controlar uno o mas dispositivos externos e intercambiar datos entre ellos y la memoria principal, o entre ellos y la CPU. Por ello, el controlador E/S debe contar con una interfaz interna al computador con la que comunicarse con la memoria, la CPU y una interfaz externa para conectarse con los perifericos.
Las principales funciones de un controlador E/S son:
- Control y Temporizacion: La CPU se puede comunicar, en un mismo instante de tiempo, con varios dispositivos externos a la vez, en funcion de las necesidades del programa que este ejecutando. El controlador E/S necesita una manera de coordinar el intercambio de informacion entre memoria y CPU con los dispositivos externos.
- Comunicacion con la CPU: El computador utiliza un bus, cada una de las
interacciones que se producen entre el controlador de E/S y el resto de
elementos requerira uno o mas arbitrajes para conseguir el acceso al bus. Para
realizar esta comunicacion con la CPU, el controlador E/S debe:
- Decodificar la orden que recibe, a traves del bus de datos.
- Intercambiar datos a traves del bus de datos.
- Informar sobre el estado del controlador de E/S.
- Reconocer la direccion de cada uno de los perifericos que controla.
- Comunicacion con el Dispositivo Externo: La comunicacion incluye ordenes, informacion del estado del dispositivo, y datos.
- Almacenamiento Temporal de Datos: Debido a las distintas velocidades de transferencia de los dispositivos puede ser necesario realizar un almacenamiento temporal de los datos que se transmiten para adecuar las diferencias de velocidades entre la interfaz interna del computador y la interfaz externa en la que se conectan los dispositivos.
- Deteccion de Errores: A veces se producen anomalias mecanicas o electricas en los dispositivos o en la secuencia de los bits que se transmiten y el controlador de E/S es el encargado de comunicarlas a la CPU.
El controlador de E/S se conecta con el computador a traves del bus del sistema. Los datos que se transfieren se almacenan temporalmente en uno o mas registros de datos. Tambien, se incluye uno o mas registros de estado que aporte informacion del estado actual y que, a veces, actua tambien como registro de control que acepta informacion de la CPU. Al conjunto de registros se le denomina puertos del controlador. Por ultimo, la logica de E/S interacciona con la CPU mediante las lineas de control que utiliza la CPU para enviarle las ordenes.
El controlador debe ser capaz de reconocer y generar las direcciones asociadas con los dispositivos que controla. Cada controlador de E/S tiene asignada una o mas direcciones en funcion de si controla uno o mas perifericos asi como la logica especifica para cada interfaz de cada uno de los perifericos.
Las tecnicas a partir de las cuales se realizan las operaciones de E/S se clasifican en:
- E/S Controladas por Programa: La CPU ejecuta un programa que tiene el control directo de la operacion de E/S y comprubea el estado del dispositivo, el envio de una orden y la transferencia de datos. Cuando la CPU envia una orden al controlador de E/S, debe esperar hasta que este acabe de ejecutarla y si es muy lento, se malgasta el tiempo de la CPU.
- E/S por Interrupciones: La CPU envia una orden al controlador de E/S y continua ejecutando otras instrucciones hasta que es interrumpida por el controlador de E/S cuando acaba la orden que se le habia enviado.
- Acceso Directo a Memoria (DMA): A diferencia de los dos anteriores, con este modo de operacion el controlador de E/S y la memoria intercambian datos sin intervenir la CPU.
E/S Controlada Por Programa
Cuando se utiliza el modo de operacion de la E/S controlada por programa, el computador se debe adaptar a la velocidad de trabajo del periferico. La CPU no recibe ninguna interrupcion y su contenido es chequear periodicamente el estado del controlador de E/S para detectar cuando ha acabado la operacion que le envio en su ultima orden.
La CPU puede enviar cuatro tipos distintos de orden al controlador de E/S:
- Ordenes de Control: Se realizan para activar un periferico e indicarle que debe hacer por lo que deben estar adaptadas al periferico particular.
- Ordenes de Comprobacion: Se envian para comprobar los diferentes estados del controlador de E/S y los perifericos.
- Ordenes de Escritura: Se encargar de realizar el proceso inverso que las ordenes de lectura, es decir, que el controlador E/S reciba un dato a traves del bus y se lo transmita al teriferico.
Cuando se realiza la transferencia de un dato, el computador se mantiene en un bucle de espera hasta que el periferico esta preparado para realizar la siguiente transferencia. Mientras el computador esta dentro del bucle de espera, no realiza ningun trabajo util por lo que si el periferico es muy lento, puede estar mucho tiempo en espera.
Dado que puede haber muchos perifericos conectados a la vez en un computador, cuando la CPU emite una orden de E/S, esta contiene la direccion del periferico deseado y los controladores de E/S deben ser capaces de interpretar esta informacion para saber si la orden les compete a ellos o no. La forma de llevar a cabo este direccionamiento:
- E/S Localizada en Memoria: Solo hay un espacio de direcciones para las posiciones de memoria y los dispositivos de E/S.
- E/S aislada: Este sistema cuenta con lineas de control de lectura y escritura en memoria y lineas de control especificas de E/S para acceder a los perifericos de forma que la linea de control especifica si la direccion corresponde a la memoria o a un periferico.
E/S por Interrupciones ATTACH
Utilizar E/S controlada por programa presenta los siguientes inconvenientes:
- Perdida de tiempo en el bucle de espera.
- Si la CPU esta atendiendo a un periferico concreto, desatiende al resto.
- Si hay programas que deben ejecutarse de forma periodica, la CPU no puede permanecer en el bucle de espera indefinidamente.
Una solucion a estos problemas es eliminar por completo el bucle de espera incluyendo las interrupciones. En este caso, el periferico envia una senal de interrupcion a la CPU cuando esta listo para atender una operacion de E/S. La CPU interrumpe la ejecucion del programa que esta realizando, envia los datos solicitados y retoma la ejecucion del programa que habia interrumpido. Para que el periferico pueda enviar una interrupcion a la CPU debe activar una linea especial de control del bus de control que se llama linea de peticion de interrupcion.
Cuando la CPU es interrumpida, la informacion se guarda en el PC (Program Counter) para poder retomar posteriormente la tarea sin verse afectado por la ejecucion, salvo por el retardo que esta supone. Guardar esta informacion supone una sobrecarga adicional en el tratamiento de las interrupciones.
La CPU no siempre esta en disposicion de aceptar peticiones de interrupcion de los perifericos. Esto puede ocurrir cuando la CPU no requiere ninguna transferencia de datos con le periferico o cuando la CPU esta atendiendo la interrupcion de un periferico mas prioritario y recibe la peticion de otro menos prioritario.
Tambien es habitual que el usuario disponga de un metodo que le permita activar o desactivar las peticiones de interrupcion.
Clasificacion de las Interrupciones:
Acceso Directo a Memoria (DMA) ATTACH
El método DMA utiliza un dispositivo que se conecta al bus del sistema y que se conoce como controlador de DMA. Este dispositivo se encarga de las funciones asignadas a la CPU durante la transferencia de datos y el control del sistema (del bus de datos y de dirección, especialmente). Contiene un registro de dirección y un registro contador de palabra que permiten al controlado de DMA transferir datos desde/hacia una zona contigua de la memoria. El registro de dirección se utiliza para almacenar la dirección de las siguientes palabras que se va a transmitir y se incrementa de forma automática después de cada transferencia. El registro contador de palabras almacena el número de palabras que quedan por enviar y también se decreta automáticamente después de cada transferencia. La unidad de control del DMA comprueba si el contenido del registro contador de palabras es 0 y cuando alcanza este valor para la transferencia, envía una señal de interrupción a la CPU para indicarle que la transferencia ha finalizado.
El controlador de DMA necesita tener el control del bus para poder transferir/recibir datos de la memoria. Existen diferentes estrategias para obtener el control y estas suponen distintos compromisos entre la velocidad de transferencia y actividad de la CPU. Estos métodos son:
- Por ráfagas (o parada del procesador): Cuando el DMA toma el control del bus no lo libera hasta haber transmitido el bloque de datos solicitado. Con este método se consigue la mayor velocidad de transferencia pero se tiene a la CPU inactiva durante periodos relativamente grandes.
- Por robo de ciclos: Es la forma más habitual de transferencia. Cuando el DMA toma el control del bus lo retiene durante un solo ciclo. Transmite una palabra y libera el bus. El proceso acaba cuando se ha transferido todo el bloque. El robo de ciclos reduce la velocidad de transferencia y la interferencia del controlador de DMA sobre la actividad de la CPU. La CPU no se ocupa de nada de la operación y continúa trabajando en su programa mientras se efectúa la transferencia de datos de forma casi simultánea.
- DMA transparente: Se diseña el DMA para que solo se roben ciclos cuando la CPU no está utilizando el bus del sistema ya que la CPU no necesita usar el bus en todas las fases de ejecución de una instrucción. La ejecución del programa de la CPU no disminuye su velocidad pero, a la vez, se produce una transferencia por DMA.
Procesador de E/S (PE/S) ATTACH
El PE/S se considera una extensión del concepto DMA. Este dispositivo tiene el control completo de las operaciones de E/S ya que puede ejecutar sus instrucciones. En los computadores con PE/S, la CPU no ejecuta las instrucciones de E/S. Las instrucciones de E/S se almacenan en memoria principal para ser ejecutadas por el PE/S.
La CPU comienza la transferencia de E/S cuando le da la orden al PE/S para que sea él quien ejecute un programa de memoria. El PE/S se encarga, entonces, de especificar el/los periférico/s intervinientes, la zona de memoria utilizada en la transferencia, las prioridades y qué acciones hay que efectuar si se producen ciertas condiciones de error durante la transferencia. El PE/S controla estas instrucciones y la transferencia de datos. Además, dado que los datos que emplean los diferentes no siempre coinciden con los utilizados por la CPU y la memoria, el PE/S tiene la capacidad de estructurar estos datos para hacerlos compatibles.
Los datos se agrupan en el PE/S con la velocidad impuesta por los periféricos mientras la CPU ejecuta el programa. Después del ensamblado (o agrupación) en una palabra de memoria, el dato se transfiere directamente desde el PE/S a memoria robando un ciclo de memoria a la CPU. De igual manera, las transferencias de datos desde la memoria al PE/S se realiza a la velocidad que marca el dispositivo.
La comunicación entre PE/S y CPU utiliza térmicas diferentes en función del computador. En la mayor parte de los casos, la memoria actúa como un centro de envío de mensajes, donde cada procesador deja información al otro.
Hay dos tipos de PE/S que son muy comunes:
- Canal Selector: Este canal gestiona múltiples dispositivos de alta velocidad. En cada instante de tiempo, solo transmite datos un único dispositivo.
- Canal Multiplexor: Múltiples dispositivos controlan de forma simultáneamente operaciones de E/S. En periféricos de baja velocidad, este sistema orientado a la transferencia de bytes acepta y transmite caracteres muy rápido. En dispositivos de alta velocidad, este sistema orientado a la transferencia de bloques, alterna bloques de datos de algunos dispositivos.