6.1. Introducción La Entrada/Salida (E/S) es una unidad básica de un sistema computador a través de la que se realiza la comunicación con el exterior: cargar programas, introducir de datos para ser procesados y visualizar resultados. Elementos básicos del sistema de E/S • Interfaz o controlador del periférico – Sistema mixto hardware/software que permite la comunicación entre la CPU/memoria y el periférico, que tiene una velocidad de transferencia menor y formatos de datos distintos. • Periférico – Dispositivo hardware (electrónico, mecánico u óptico) que posibilita la comunicación con el exterior. Puede ser de almacenamiento o de E/S de datos. Processor Interrupts Cache Memory– I/O bus Main memory I/O controller Disk Disk I/O controller I/O controller Graphics output Network 6.2. Dispositivos de E/S Tipos de periféricos • Características útiles para la clasificación de los periféricos – Comportamiento • Entrada (teclado, ratón,...) • Salida (impresora, pantalla, ...) • Lectura y escritura o almacenamiento (discos y cintas magnéticas) – Compañero (según quien introduzca o lea los datos en el otro extremo del periférico) • Máquina • Humano – Frecuencia de datos (Ancho de banda (KB/seg)) • Frecuencia máxima a la que pueden ser transferidos datos entre procesador y periférico o entre memoria y periférico. Dispositivo Teclado Ratón Entrada de voz Escáner Salida de voz Impresora de línea Impresora láser Pantalla gráfica Red-LAN Modem Disco flexible Disco óptico Cinta magnética Disco magnético Comportamiento Entrada Entrada Entrada Entrada Salida Salida Salida Salida Entrada/salida Entrada/salida Almacenamiento Almacenamiento Almacenamiento Almacenamiento Compañero Humano Humano Humano Humano Humano Humano Humano Humano Máquina Máquina Máquina Máquina Máquina Máquina Frecuencia de datos KB/seg 0.01 0.02 0.02 400 0.6 1 200 60000 500-6000 2-8 100 1000 2000 2000-10000 6.3. Métodos de sincronización Los dispositivos funcionan más lentos que el procesador, por lo que este sigue ejecutando instrucciones durante las operaciones de E/S, y lo que hace es sincronizarse con ellos para determinar cuando los datos están listos, como por ejemplo ha habido un movimiento del ratón, o se ha leído un bloque de datos de un disco. (1) Consulta: el procesador comprueba cada cierto tiempo (leyendo el registro de estado) si los datos en el dispositivo están listos. (2) Interrupción: el dispositivo interrumpe cuando los datos están listos. En ese momento el procesador tendrá que ejecutar una rutina para determinar de qué dispositivo se trata y realizar la transferencia de los datos. (1) Sincronización por consulta – Forma más simple de sincronización – El dispositivo pone la información en el registro de Estado y el procesador la lee – El procesador hace todo el trabajo Desventaja: Se necesita mucho tiempo de procesador (sobrecarga) dedicado a comprobar el estado del periférico y transferir el dato. Sobrecarga = proporción del tiempo de CPU que se utiliza para la sincronización. Ejercicio: Suponga que el número de ciclos que requiere una operación de encuesta, incluidos el salto a la rutina de encuesta, el acceso al dispositivo y el retorno al programa de usuario, es 400 y que el procesador trabaja con un reloj de 500 MHz. Determine la proporción del tiempo de CPU que se consume en cada uno de los tres casos siguientes, suponiendo que se realiza la encuesta con la frecuencia necesaria para que no se pierda ningún dato y que los dispositivos están potencialmente siempre ocupados: – El ratón debe ser encuestado 30 veces por segundo para asegurar que no se pierde ningún movimiento realizado por el usuario. – El disco flexible transfiere datos al procesador en unidades de 16 bits, a una velocidad de 50 KB/sg. No debe perderse ningún dato. – El disco duro transfiere datos en bloques de 4 palabras, y puede transferir a una velocidad de 4MB/sg. De nuevo, no debe perderse ningún dato. Ciclos por segundo para encuestas: cpse = encuestas/segundo * ciclos/encuesta = e/s * c/e Ciclos por segundo totales: cpst = frecuencia de reloj Sobrecarga: S = ( cpse / cpst ) Æ S% = ( cpse / cpst ) * 100 % Ratón cpse = e/s * c/e = 30 * 400 = 12 * 103 c/s S = cpse / cpst Æ S% = ( 12 * 103 / 500 * 106 ) * 102 = 0.0024 % Disco flexible e/s = frecuencia de llegada de datos = velocidad de transferencia / tamaño del bloque = 50KB/seg / 2B = 25K cpse = e/s * c/e = 25K * 400 § 25*103 * 400 = 25*103 * 4*102 = 100*103 *102 = 10*106 S = cpse / cpst Æ S% = ( 10 * 106 / 500 * 106 ) * 102 = ( 1 / 50 ) * 102 = 2 % Disco duro e/s = 4MB/seg / 16B § ( 4 / 16 ) * 106 = 0.25 * 106 cpse = e/s * c/e = 0.25 * 106 * 400 = 0.25*106 * 4*102 = 108 S = cpse / cpst Æ S% = ( 108 / 500 * 106 ) * 102 = ( 108 / 5 * 108 ) * 102 = ( 1 / 5 ) * 102 = 20 % (2) Sincronización por interrupciones – Las interrupciones tienen su origen en los controladores de los periféricos que activan la señal de interrupción de la CPU (ej. INTR) para demandar su atención. Al final de la ejecución de una instrucción la CPU comprueba si hay interrupciones pendientes. En caso afirmativo y si están permitidas (bit de habilitación de interrupciones activo en el registro de estado) Æ el procesador inicia un ciclo de reconocimiento de interrupción que tiene como fin bifurcar a una rutina de servicio de interrupción para atender al periférico que interrumpió y, finalmente, volver al programa interrumpido. Ejercicio: Sobrecarga de las interrupciones en un sistema de E/S. Determinación del impacto de la sobrecarga de las interrupciones. Suponga que tiene el mismo disco duro y el mismo procesador que en el ejercicio anterior, pero que ahora se utiliza E/S por interrupciones. La sobrecarga para cada transferencia, incluida la interrupción, es de 500 ciclos de reloj. Encuentre la proporción de tiempo de procesador consumida si cada disco duro transfiere datos solo el 5% del tiempo. - Ciclos por segundo para interrupciones: cpsi = interrupciones / segundo * ciclos / interrupción = i/s * c/i - Cuando el disco está siempre ocupado: i/s = e/s = 0.25M = 250K Æ cpsi = 250K * 500 § 125 * 106 Sobrecarga: So = ( cpse / cpst ) = (125 * 106) / (500 * 106) = 0.25 Æ S% = 25% - En la realidad el disco transfiere el 5% del tiempo: Sr = (5%cpse)/cpst = [ 5%(125 * 106)] / (500 * 106)= 5%[(125 * 106) / (500 * 106)] = (5/100)*0.25 = 1.25 / 100 Æ S% = (1.25 / 100) * 100 = 1.25%