Uploaded by Branny Peña

17. Cap 6 Sistema de I-O (1)

advertisement
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
Download