Como cada periferico es distinto la forma de unificar la vision de HW es que la CPU solo dialoga con los modulos que estos si que son estandar.

Intrucciones de E/S


Tiene dos lineas de control MEMRP (Memory Request) o AS (Address Strobe)

  • OUT .R1,/Dir_Reg_Cont_Px; (Origen -> Destino)
  • IN .R1, /Dir_Reg_Dato_Px; (Destino /- origen )
  • Tecnicas de E/S

  • Programada -> Inicia (Prepara la operacion)-> Sincronizar (¿Pregunta por el siguiente dato?) ->Transferencia -> Finalizar
    -> Todo lo realiza la CPU , la sincronizacion al estar programada se realiza mediante un bucle de espera.
  • Interrupciones -> Inicia (Prepara la operacion)-> Transferencia -> Finalizar
    -> Por interrupciones la CPU no se encarga de la interrupcion , es el modulo quien avisa a la cpu para una nueva trasnferencia. (ahorra tiempo de CPU pero causa una sobrecarga inevitable, que se puede tratar aumentando el tamaño del registro de datos).
    -> El proceso es el siguiente, tenemos un sucero asincrono que hace que se deje de ejcutar la instruccion a la que apunta el PC , para que se ejecute la rutina de servicio de interrupcion que es la que realiza la transferencia. Despues se reanuda la ejecucion por donde estaba. La unidad de control puede tener un biestable de mascara de interrupcion que pueda permitir que algunas sean atendidas.
    hay instrucciones para habilitar EI y para inhibir DI.
    SRI Secuencia de reconocimiento de interrupcion : la realiza la unidad de control al final de cada instruccion si la linea de peticion esta activada. Las pautas son 1º salvar el pc y el re , inhibir interrupciones , cambiar a modod privilegiado , cargar en pc la DRTI nueva, e ir a fetch.
    SRI o RTI Rutina de servicio de interrupcion : salva y restaura el estado. finaliza con un RETI. con el sri se evita la sincronizacion pero llevan otras operaciones para la transferencia.
    Prioridades: La señal de reconocimiento le ha de llegar al mas prioritario, hay diferentes modelos , gesto centralizado, gestor encadenado (daisy chain) (prioriza por la posición ocupada),hibrido. Prioridad 1 baja, 7 alta. solo añade priorizacion por el orden por el que vienen las interrupciones. Se da prioridad al dispositivo que mas interrupciones pide, la frecuencia depende de la velocidad de transferencia y del tamaño de registro de datos.
    Es posible usar un buffer de registro de datos , de este modo solo se interrumpe cuando el buffer esta lleno.
  • DMA -> Inicia (Prepara la operacion)-> Finalizar.
    La CPU inicia operaciones, el modulo por HW se encarga de la sincronizacion y transferencia y avisa cuando ha terminado mediante una interrupcion. Se ahorra mucho tiempo de CPU, puesto que solo tienes una interrupcion.
    DMA mediante robo de ciclo, el módulo cuando hay datos listos solicita los buses con BUSRQ. La CPU lo cede al final del ciclo de bus en curso. Para ello se desconecta de los buses colocando sus salidas en alta impedancia. La CPU indica al modulo que puede usarlos con BUSACK. El modulo inicia el ciclo de bus para realizar las transferencias con memoria (Actualiza contador y Dir), Cuando acaba devueleve el bus desactivando BUSRQ. La CPU recupera los buses y desactiva BUSAK. Si no hay mas datos a transferir el modulo avisa a la CPU con una interrupcion.
    Operacion por DMA : 1 programar la operacion en el periferico .2º Cuando el periferico esta listo solicita los buses BUSREQ. 3º El periferico transfiere el dato desde M activando las ss de control y direccion pertinentes y usando el bus de datos. 4º Si el contador es desigual a 0 flataran datos por transferir. sino desactiva BUSREQ avisa a la CPU de que ha terminado la operacion de DMA y solicita la interrupcion.
  • Examenes

    Conceptos de examenes


    Caso 1 dan un codigo y preguntan porque no es eficiente: El problema es que esta rutina de tratamiento de interrupciones incluye un bucle de sincronizacion como si se tratase de una subrutina que realiza las operaciones mediante entrada/salida programada o directa. Si realiza esto ocupa el 100% de la CPU. En general hacer eso en un sistema por interrupciones no tiene sentido alguno.
    Caso 2 Detalla SRI: FETCH: Si (Si INT ^ RE.MI = 0) entonces: [SP--] PC; [SP--] RE; RE.MI - 1 (Inhibir interrupciones); RE.S - 1 (Cambiar a modo privilegiado) ; PC - Direccion de la rutina de tratamiento de interrupcion; ir a fetch ; Si no ; ir a fetch.
    Caso 3 Buses en DMA: BR (Bus Request): se usa para solicitar los robos de ciclo y acceder directamente a memoria. La CPU le notifica que tiene los buses mediante BA (Bus Acknowledge). MEMREQ (Memory Request): para marcar la temporizacion de los ciclos de acceso a memoria. READ y WRITE: para indicar si el acceso a memoria es para una lectura o una escritura.

    Formulas y terminos

    Interrupciones
    Principales


    Toperación (Tiempo) = Tinicio (Tiempo) + Tacceso(Tiempo) + Ttransferencia (tamaño archiv / Vtransferencia)(Tiempo) + T Ultima Interrupción (SRI + RTI + Tfin)(Tiempo)
    Tcpu (tiempo de CPU se ocupa para la lectura ... ) = Tinicio (Tiempo) + Nºinterrupciones (Tamaño del bloque a transferir / tamaño de nuestro registro de datos (buffer the interrupcion) (puede estar en Bytes o bits 1B = 8bits) × T interrupciones(SRI + RTI) + Tfin (el tiempo de inicio o de fin lo pueden dar en Ins y lo tienes que pasar a unidades de tiempo)

    DMA
    Principales

    Toperacion (Tiempo) = Tinicio + Ttransferencia (tamaño archivo / V Transferencia) + Tultimo robo de ciclo (Bus de datos+registro x TAcc) + T ultima interrupcion (SRI + TFin)
    Tcpu (Tiempo) = Tinicio + Nº robos de cicloDMA (Bloque a transferir / Tamaño de mis buffer de datos "nº registros * Tam registros") × T DMA (Bus de datos+registro x TAcc) o (TConcesion/liberacion + TMP) + T ultima interrupcion (SRI + TFin)
    %CPU = (TCPU / Toperacion) x 100


    1 MIPS(millones de instrucciones por segundo) -> 1x10^6 I en 1 S -> 1/1x10^6 = 1 us(microsegundos) una instrucción
    Un error comun: es importante fijarse que en mucho apartado te piden la solucion en Instrucciones , con la formula de arriba tienes el tiempo que ocupa una Instruccion

    Interrupciones:
    T entre 2 interrupciones (T Int) = registros de datos (en bit o bytes) / Velocidad de transferencia (bytes/s) ( recordar tienen que estar los dos en bytes o en bits 1 byte - 8 bits) (al final el tiempo entre una Int y otra es lo que tarde en llenarse los buses de datos)
    T tratamiento de una interrupcion (TInt) = SRI (Tiempo) + RTI (Tiempo)
    Nº Interrupciones = (Tamaño de lo que quieres leer)(bytes o bit) / registros de datos (bytes o bit)
    T interrupciones = SRI + RTI (en tiempo no en Instrucciones)(Tiempo)
    mayor prioridad quien tenga menor T entre 2 interrupciones (Tiempo)

    Toperación (Tiempo) = Tinicio (Tiempo) + Tacceso(Tiempo) + Ttransferencia (tamaño archiv / V Transferencia)(Tiempo) + T Ultima Interrupción (SRI + RTI + Tfin)(Tiempo)
    Tcpu (tiempo de CPU se ocupa para la lectura ... ) = Tinicio (Tiempo) + Nºinterrupciones (Tamaño del bloque a transferir / tamaño de nuestro registro de datos (buffer the interrupcion) (puede estar en Bytes o bits 1B = 8bits) × T interrupciones(SRI + RTI) + Tfin (el tiempo de inicio o de fin lo pueden dar en Ins y lo tienes que pasar a unidades de tiempo)

    DMA:
    T ultimo robo de ciclo (Tiempo) = protocolo de concesion y liberacion de los buses + ciclo de acceso a memoria
    Ttransferencia (Tiempo) = Tamaño del bloque a transferir / Velocidad de transferencia
    T RTI (Tiempo) = SRI + Tfin
    Nº Robos de ciclo = Tamaño del bloque / Tamaño registro de datos

    Toperacion (Tiempo) = Tinicio + Ttransferencia (tamaño archivo / V Transferencia) + Tultimo robo de ciclo (Bus de datos+registro x TAcc) + T ultima interrupcion (SRI + TFin)
    Tcpu (Tiempo) = Tinicio + Nº robos de ciclo (Bloque a transferir / Tamaño de mis buffer de datos "nº registros * Tam registros") × T DMA (Bus de datos+registro x TAcc) + T ultima interrupcion (SRI + TFin)
    %CPU = (TCPU / Toperacion) x 100

    Totales:
    Cuando trate tiempos totales hay que tener en cuenta que el dominante va a ocupar un tiempo en el cual el segundo esta trabajando. Pero cuando hablamos de tiempo de CPU es diferente puesto que son tiempos indiferentes y por cada dsipositivo tendremos que tener en cuenta sus tiempos de cpu.
    por ejmplo si tenemos dos componentes un disco y una tarjeta de red y subimos un archvo a drive -> T total = nº operaciones del disco x Toperacion del disco+ t la ultima operacion de la tarjeta de red. Pero si hablamos de tiempo de cpu cambia = nº operaciones del disco x T cpu del disco + Nºopdeed x t cputarjeta de red. y el %cpu libre seria = (Ttotal - Ttotal_cpu / Ttotal) x 100

    TIPS

  • Calcular los MIPS que necesita un dispositivo :
    1º calcular la frecuencia de interrupcion (Hz)= Velocidad trasnferencia / Registro de datos.
    2º Cada interrupcion implica tratar esta mismas por tanto el siguiente paso es sacar el Tiempo de interrupcion y pasarlo a Instrucciones.
    3º La Capacidad del dispositivo sera (MIPS) = frecuencia de interrupcion en (Hz)Hz x Intrucciones por cada interrupcion (Instrucciones).

  • Calcular T operacion y TCpu en leer o escribir un fichero que pasa por mas de un periferico:
    1º lo primero es sacar los tiempos de cpu y de operacion para el tamaño del buffer de interrupcion de cada dispositivo
    2º Nº disp1 = lo siguiente por tanto sera dividir el tamaño del fichero entre el tamaño de los buffers de interrupcion, con el fin de conocer cuantas veces se llena el buffer
    3º Nº disp2 = el resultado anterior nos dice el numero de veces que se ejecuta cada operacion, ahora el tema es ver si en el caso de el tiempo de operacion este se solapa con el de otro periferico, esto ocurre cuando por ejemplo un disco duro manda los bloques a un ethernet que lo va enviando, mientras el disco lee un segundo bloque ethernet esta enviando el 1 por tanto ese tiempo se solapa y al calcular el tiempo total de operacion no saldria reflejado en el Nº que multiplica el Toperación de ethe
    4º Top Total = Nº disp1 + Top disp1 + Nº disp2 (mirar si hay solapamiento y restar a Nº disp ) + Top disp2
    5º Tcpu Total = Nº disp1 + Tcpu disp1 + Nº disp2 (no hay solapamiento la cpu siempre tiene que tratar los dos disp) + Tcpu disp2
    6º %CPU libre = ( Top Total - Tcpu Total / Top Total ) x 100
  • Examenes

    Unidades

    Submúltiplos Múltiplos
    Valor Símbolo Nombre Valor Símbolo Nombre
    10−1 s ds decisegundo 101 s das decasegundo
    10−2 s cs centisegundo 102 s hs hectosegundo
    10−3 s ms milisegundo 103 s ks kilosegundo
    10−6 s µs microsegundo 106 s Ms megasegundo
    10−9 s ns nanosegundo 109 s Gs gigasegundo
    10−12 s ps picosegundo 1012 s Ts terasegundo
    10−15 s fs femtosegundo 1015 s Ps petasegundo
    10−18 s as attosegundo 1018 s Es exasegundo
    10−21 s zs zeptosegundo 1021 s Zs zettasegundo
    10−24 s ys yoctosegundo 1024 s Ys yottasegundo
    Prefixes for multiples of
    (bit) or bytes(B)
    Decimal
    Value SI
    1000 103 k kilo
    10002 106 M mega
    10003 109 G giga
    10004 1012 T tera
    10005 1015 P peta
    10006 1018 E exa
    10007 1021 Z zetta
    10008 1024 Y yotta
    Binary
    Value IEC JEDEC
    1024 210 Ki kibi K kilo
    10242 220 Mi mebi M mega
    10243 230 Gi gibi G giga
    10244 240 Ti tebi
    10245 250 Pi pebi
    10246 260 Ei exbi
    10247 270 Zi zebi
    10248 280 Yi yobi