Cap 6: Sistema de I-O Entrar y salir informacion = intercambiar datos con otros dispositivos Velocidades de transmision variables: usualmente no tenemos la misma latencia para todas las velocidades de transmision y eso esta ligado al hardware. Ancho de palabra diferente al CPU Read (teclado), escritura (monitor), R/W (modem) Todo eso es desde el punto de vista del procesador Cap 6: Sistema de I-O 1 Respecto a modulos de control en el host y en los perifericos es importante ya que necesitamos controlar la informacion pero de la forma que sea consistente con el sistema. Por ejemplo, si agregamos un dispositivo de almacenamiento, eso no implica que vamos a dejar de interactuar con otros dispositivos de almacenamiento. Cap 6: Sistema de I-O 2 Todo sistema embebido funciona con buses, y tenemos 3 grupos funcionales (el numero de buses va a determinar que informacion se guarda en cada uno): bus de datos, bus de direccion y bus de control (te da la concordancia entre el dato y la direccion y te indica si es de entrada o de salida) Un bus sincrono es un bus que me permite sincronizar dispositivos de la derecha como de la izquierda. Algunos problemas relacionados a los buses sincronos es el clock skew y velocidad. El clock skew es cuando los flancos de subida (o de bajada) no estan alineados porque tienen un pequenio delay y no estan trabajando al mismo periodo. La velocidad es un problema tambien. Digamos que estamos en una carrera por grupos (A y B). Si es carrera por grupo, acaso afecta que una persona de A sea mas rapido que otra persona de B? No necesariamente. Acaso afecta que dos personas de A sean mas rapidos que las otras dos de B? No necesariamente. Digamos que una persona en el grupo A llego tarde… incluso si todos los demas integrantes del grupo A hayan comenzado mas adelante que el grupo B, significa que el grupo A va a ganar? No, porque la persona que llego tarde se demoro. Eso nos dice que si tenemos un dispositivo que trabaja con una velocidad V1 y otro dispositivo que trabaja con una velocidad V2. Si V1 > V2, a que velocidad trabajaria el bus? V2 (toma la velocidad mas lenta). Un bus asincrono es como tener una clase sincrona o un foro donde las personas no responden al instante. Esto es viable pero podria ser mejor que la sincrona? Depende. Debemos saber las variables implicadas en la asincrona. Un ejemplo Cap 6: Sistema de I-O 3 puede ser como en WhatsApp, si yo le mando un mensaje a una persona, esta se queda en enviada, luego recibida y luego visteada. Es un conjunto de banderas que me permiten saber cual es el estado de comunicacion asincrona (esto no es controlado por un reloj, esta enviando informacion y como se esta enviando, nos va diciendo en que etapa se encuentra). Los buses asincronos se comunican a traves de un protocolo conocido como Handshaking, el cual es como un apreton de manos que vas avisando en que etapa estas (protocolo de enviar seniales para saber en que estado nos encontramos y que no sea en tiempo real). Su nombre lo dice todo: un arbitro que controla cosas. Arquitectura de I-O: Metodos de Control Cap 6: Sistema de I-O 4 Tenemos dato 1 que corresponde a estado 1 y dato 2 que corresponde a estado 2. Quien se encarga de establecer quien se relaciona con quien? La linea del control Cap 6: Sistema de I-O 5 Una analogia puede ser la siguiente: el objetivo del profe es transmitir informacion a los alumnos. Puede ser que en el trayecto los alumnos tengan dudas y pueden preguntar interrumpiendo (el estado natural del profe es explicar hasta que haya una interrupcion). De la misma forma sucede con la computadora, si no hace nada estaria en su estado natural pero cuando demos click derecho al mouse estamos interrumpiendo lo que sea que este haciendo. A esto le llamamos controlador por interrupciones. Otra forma es que el profe mismo pregunta si quedo claro y el alumno recien pregunta (pero en este caso toma tiempo). A esto ultimo le llamamos programados (polling). Cap 6: Sistema de I-O 6 Polling 1. Envio la orden de lectura a dispositivo de entrada y salida 2. Leo el estado del dispositivo 3. Compruebo estado (si no esta listo, regreso a seguir leyendo paso 2) 4. Si esta listo, lee palabra del dispositivo (osea informacion) 5. Escribir palabra en memoria 6. Acabo? Si acaba, pasa a la siguiente instruccion. Si no acaba, se regresa a paso 1 Interrupciones 1. Envio orden de lectura a dispositivo de entrada y salida 2. Se hace otra cosa hasta que el dispositivo de entrada y salida interrumpa. 3. Comprobar estado 4. Leer palabra del dispositivo 5. Escribir palabra en memoria Cap 6: Sistema de I-O 7 6. Acabo? Si acaba, pasa a la siguiente instruccion. Si no acaba, se regresa a paso 1 La principal diferencia entre polling e interrupciones es que en polling estoy constantemente leyendo mientras que interrupciones mandas la orden, el CPU hace otra cosa (su estado natural) y luego es interrumpido. Podemos darnos cuenta que interrupciones es mas directo. Asimismo, si estamos completamente seguros que el resultado es consistente, entonces el tiempo por interrupcion no deberia a ser grande que el tiempo por polling. Debemos saber que casi siempre se demorara mas por polling que por interrupcion. DMA (Direct Memory Access) Es un modulo particular que tiene el hardware para comunicarte con el dispositivo de entrada y salida. Esto es mas rapido que polling e interrupciones. A diferencia de los otros dos, este modulo esta directamente conectado a la memoria y ya no pasa por todo el proceso de buses. Hay un OR porque basta que uno de los perifericos quiera interrumpir el sistema para que el procesador lo pueda atender Ejemplo Cap 6: Sistema de I-O 8 Cap 6: Sistema de I-O 9 Limitaciones de Polling e Interrupciones Cap 6: Sistema de I-O 10 DMA (Direct Memory Access) La idea de DMA es que tengamos acceso directo a memoria y no pasar por el control del CPU (no pasar en que el CPU realice lecturas de memoria). Hay 3 formas de como actua el DMA: 💡 Un ciclo DMA es el proceso que te permite pasar informacion a la memoria Cap 6: Sistema de I-O 11 1. Modo Rafaga: se ejecuta instruccion 1 y todos los ciclos de DMA se van a ejecutar y una vez que acabe, se ejecuta la instruccion 2 2. Modo Robo de Ciclo: intercala la instruccion con el ciclo DMA. Eso significa que ejecuta la instruccion 1, hace un ciclo DMA, ejecuto instruccion 2 y luego hacemos un ciclo DMA 3. Modo Transparente: tienes las instrucciones y de forma paralela puedes hacer ciclos DMA (no lo usamos gaaaaaa) En modo Rafaga es tener 5 ciclos de instruccion 1 y una vez acabe la instruccion utiliza todos los demas ciclos para poder llevar la informacion y cuando acabe de llevar la informacion se va recien a la siguiente instruccion. En otras palabras, pasamos el control al periferico DMA y este se encarga de toda la copia de informacion. En modo Robo de Ciclo haces un robo de ciclo por cada cosa que hace el procesador. En la imagen digamos que la instruccion 1 toma 5 ciclos por ejemplo, y el siguiente ciclo lo roba el DMA para hacer parte del trabajo (llevar informacion), haciendo lo mismo con la instruccion 2. El trabajo se reparte en distintos ciclos. Cap 6: Sistema de I-O 12 En modo transparente los ciclos de DMA se realizan dentro de las etapas del pipeline de la instruccion que no requieren comunicacion con otros perifericos (decodificacion o ejecucion, donde principalmente estamos usando el ALU o unidad de aritmetica logica y no necesitamos leer ni escribir en memoria), entonces en esos ciclos es donde colocamos el ciclo DMA. Ejemplo Cap 6: Sistema de I-O 13 💡 💡 Consideramos el overhead como la parte de cada ciclo que se toma para el polling En la B basicamente es como decir: tengo 4 MB/s (velocidad de transmision). Veo cuantos polls se realizan por segundo (lo que llamamos como polling rate, que es cuantas veces estan transmitiendo por interfaz), luego calculo cuantos ciclos por segundo se gastan en polls y finalmente veo que parte representa de todo el trabajo del procesador. Ejemplo Cap 6: Sistema de I-O 14 Ejemplo Cap 6: Sistema de I-O 15 💡 En este caso estamos comparando el overhead de procesador para toda la interrupcion con transferencia de datos de entrada y salida mientras que en el anterior era el overhead de la interrupcion. Por esa razon es que en este caso consideramos 500 ciclos por transferencia = 400 por interrupcion + 100 por transferencia, mientras que en el ejercicio anterior consideramos 400 ciclos solo por interrupt handler Sin embargo, para polling se mantiene en 400, solo es en interrupcion. 💡 Tener en consideracion que en DMA si se toma en cuenta los ciclos por interrupcion, aparte de los ciclos por DMA Cap 6: Sistema de I-O 16 💡 La relacion esperada en terminos de rapidez siempre es la siguiente: DMA > Interrupcion > Polling Cap 6: Sistema de I-O 17