estructura de computadores módulo d. el subsistema de e/s · 2 estructura de computadores tema 5....
TRANSCRIPT
1
Estructura de ComputadoresEstructura de Computadores
Módulo D. El subsistema de E/SMódulo D. El subsistema de E/S
Tema 5. Organización de la E/S. Gestión de interrupciones Tema 5. Organización de la E/S. Gestión de interrupciones
1. Organización del subsistema de E/S2. Mecanismos básicos de E/S3. Gestión de interrupciones4. Ejemplos
2
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
⌦ La E/S permite al computador interactuar con el “mundo exterior”
⌦ Dispositivos típicos de E/S (PERIFÉRICOS)
Ø Dispositivos de E/S básica ð teclado, ratón, pantalla
Ø Dispositivos de almacenamiento ð discos, disquetes, CD-ROM, cintas,
discos magneto-ópticos, ...
Ø Dispositivos de impresión y escáner ð impresoras, plotters, scanners, ...
Ø Dispositivos de comunicaciónð redes, módems, ...
Ø Dispositivos multimediað audio, video, ...
Ø Dispositivos de automatizacióny controlð sensores, alarmas,
sistemas de adquisición de datos, ...
Necesidad de la E/S
CPU MEMORIA
E/S
8085
8085
8085
8085
8085
8085
1. organización del subsistema de E/S1. organización del subsistema de E/S
3
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
1. organización del subsistema de E/S1. organización del subsistema de E/SFunciones básicas del subsistema de E/S⌦ Direccionamiento
Ø Necesario seleccionar el dispositivo de E/S con el que se realiza la transferencia⌦ Transferencia de datos entre el computador y el periférico
Ø Tipos de transferenciað Lectura: computador ← periféricoð Escritura: computador → periférico
Ø Puede requerir ciertas conversiones de formato de los datosð Conversión de niveles eléctricos
ð TTL: 1 → V > 2,0 Volt; 0 → V < 0,8 Voltð RS-232-C: 1 → V < -3.0 Volt; 0 → V > +3.0 Volt
ð Conversión del tipo de codificación ð Caracteres (ASCII, EBCDIC)ð Enteros (magnitud y signo, C’1, C’2, ...)ð Reales (punto fijo punto flotante, simple precisión, doble precisión, ...)
ð Conversión serie-paralelo / paralelo-serieð Conversión digital-analógico / analógico-digital
⌦ Sincronización y control de la transferenciaØ Necesario un mecanismo de sincronización de la transferencia
ð El computador debe conocerð Si el periférico está preparado para enviar o recibir datosð Si el periférico ha terminado de realizar una transferencia y puede iniciar una nueva
Ø No confundir con la sincronización elemental a nivel de transferencias de palabras a través del bus
4
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
Conexión de dispositivos de E/S al computador⌦ Los dispositivos periféricos se conectan al computador a través de un INTERFAZ de E/S
Ø Interfaz = Controlador = Adaptador = Tarjeta de E/S
Ordenes CPU → InterfazLeer N bytes a partir de
Superficie SCilindro CSector T
Ordenes Interfaz → periféricoPosicionar cabezales en cilindro CPosicionar cabezales en sector TSeleccionar cabezal de superficie SLeer N bytesRetirar cabezales
Ejemplo8 0 8 5 8085
INTERFAZ PERIFÉRICOConexión
con periféricos
BUS Sistemao de E/S
CPU
CPU
⌦ Interpretar las órdenes que recibe de la CPU y transmitirlas al periférico⌦ Controlar la transferencia de datos entre la CPU y el periférico
Ø Conversión de formatosØ Adaptar la diferencia de velocidades entre CPU y periférico (mediante buffers de
almacenamiento)⌦ Informar a la CPU del estado del periférico
Funciones del interfaz de E/S
1. organización del subsistema de E/S1. organización del subsistema de E/S
5
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
⌦ La comunicación entre la CPU y el periférico se realiza a través de los registros del interfaz
⌦ Registro de datos de salidaØ Cuando la CPU quiere enviar datos
al periférico los escribe sobre el registro(s) de datos de salida
⌦ Registro de datos de entradaØ Cuando la CPU quiere recibir datos
del periférico los lee desde el registro(s) de datos de entrada
⌦ Registro de estado Ø Cuando la CPU quiere conocer el
estado del periférico, lo hace leyendo el registro de estado:ð Dispositivo preparado/no preparadoð Reg. datos lleno/vacíoð Transferencia finalizada/no finalizada, etc.
⌦ Registro de control Ø Cuando la CPU quiere transmitir una orden al periférico lo hace escribiendo en el registro de
controlð Leer/escribir N bytes en cilindro C, pista P, sector S (para discos)ð Rebobinar / avanzar / leer N bytes (para cintas)ð Imprimir carácter / saltar de línea / saltar de página (para impresoras), etc.
Estructura del interfaz de E/S
Reg. Control
Reg. Estado
Reg. Datos Salida
Reg. Datos Entrada
CPU INTERFAZ PERIFÉRICO
CONTROL
ESTADO
DATOS
DIREC.
DATOS
CONTROL
BusSistema
o E/S
Comunicación CPU-Interfaz
Comunicación Interfaz-periférico
1. organización del subsistema de E/S1. organización del subsistema de E/S
6
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
Ejemplo de conexión de un interfaz de E/S al bus
INTERFAZ DE LA IMPRESORADESCODIFICADOR
A7
A1
...
A0
RD*
WR*
BUSDATOS
SEL*LD*
ST*
LD*
DATOS
ESTADO
CONTROL
Dirección Registro Estado/Control: 10111100 ($BC)Dirección Registro Datos: 10111101 ($BD)
⌦ Enviar un carácter almacenado en el registro R1 a la impresora
Ø MOVE R1, $BD
Ø OUT R1, $BD
⌦ Enviar una orden almacenada en el registro R2 a la impresora
Ø MOVE R2, $BC
Ø OUT R2,$BC
⌦ Leer estado de la impresora y almacenarlo en el registro R3
Ø MOVE $BC, R3
Ø IN $BC, R3
1. organización del subsistema de E/S1. organización del subsistema de E/S
Nota: los registros del interfaz de E/S también se llaman puertos de E/S
7
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
Alternativas de diseño del subsistema de E/S
1. organización del subsistema de E/S1. organización del subsistema de E/S
⌦ La E/S y la memoria utilizan un espacio de direcciones distintoØ El conjunto de direcciones que utiliza la memoria y el que utiliza la E/S son independientes
⌦ Existen instrucciones específicas de E/SØ IN dir_E/S, Ri (CPU ← Periférico)Ø OUT Ri, dir_E/S (Periférico ← CPU)
⌦ El bus dispone de líneas de control específicas (MEM/IO*) para indicar si se trata de una operación con memoria o una operación de E/SØ Si MEM/IO* = 1
ð Operación con memoria (MOVE, LOAD, STORE) ⇒ La dirección del bus corresponde a una posición de memoria
Ø Si MEM/IO* = 0 ð Operación de E/S (IN, OUT) ⇒ La dirección del bus corresponde a un puerto de E/S
Ø Un puerto de E/S puede tener asignada la misma dirección que una posición de memoria válidað Es imposible que exista ambigüedad gracias a la existencia de la línea MEM/IO*
⌦ EjemplosØ i8086 y demás computadores de la familia intel x86
E/S aislada
E/S aislada
E/S localizada en memoria
8
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
1. organización del subsistema de E/S1. organización del subsistema de E/S
⌦ La E/S y la memoria comparten el mismo espacio de direcciones⌦ No se requieren instrucciones específicas de E/S
Ø Las mismas instrucciones que se utilizan para movimiento de datos con memoria (MOVE) pueden utilizarse para realizar operaciones de E/Sð MOVEdir_E/S, Ri (CPU ← Periférico)ð MOVERi, dir_E/S (Periférico ← CPU)
⌦ En el bus no existe una línea especial para distinguir operaciones con memoria de operaciones de E/SØ Un puerto de E/S no puede tener asignada la misma dirección que una posición de memoria
válidaØ Normalmente se asigna a los dispositivos de E/S una porción contigua del espacio de
direcciones que no se utiliza para la memoria⌦ Ventajas de la E/S localizada en memoria
Ø Es más flexible que la E/S aislada ya que permite realizar distintos tipos de operaciones sobre los puertos de E/S (aritméticas, lógicas, manipulación de bits, etc.) y no sólo de movimiento de datos
⌦ EjemploØ MC68000
ð 24 líneas de dirección ⇒ espacio de direcciones de 16 Mbytesð Podemos dividir el espacio de direcciones en dos partes, por ejemplo:
ð Direcciones asignadas a memoria: de $000000 a $BFFFFF (primeros 12 Mbytes )ð Direcciones asignadas a E/S: de $C00000 a $FFFFFF (últimos 4 Mbytes )
E/S localizada en memoria
9
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
2. mecanismos básicos de E/S2. mecanismos básicos de E/S
⌦ Cuando la CPU quiere enviar/recibir datos a/desde un periférico tiene asegurarse de que el disp. está preparado para realizar la transferencia: sincronización entre la CPU y el dispositivo de E/S
⌦ Existen dos mecanismos básicos de sincronización de la E/S
Ø E/S programada con espera de respuesta
Ø E/S por interrupciones
Sincronización de la E/S
E/S programada con espera de respuesta⌦ Cada vez que la CPU quiere realizar una transferencia entra en un
bucle en el que consulta una y otra vez el estado del periférico hasta que éste está preparado para realizar la transferencia
⌦ Problemas
Ø La CPU no hace trabajo útil durante el bucle de esperað Con dispositivos lentos el bucle podría repetirse miles/millones de
veces
Ø La dinámica del programa se detiene durante la operación de E/Sð Ejemplo: en un vídeo-juego no se puede detener la dinámica del
juego a espera que el usuario puse una tecla o mueva el jostick
Ø Dificultades para atender a varios periféricosð Mientras se espera a que un periférico esté listo para transmitir, no se
puede atender a otro
Examinar bits de estado
¿Periférico preparado ?
Transferir datos hacia/desde periférico
¿Realizar otra transferencia?
NO
SÍ
NO
SÍ
FIN
Leer registro de estado
10
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
2. mecanismos básicos de E/S2. mecanismos básicos de E/SE/S por interrupciones
⌦ No existe bucle de espera
⌦ Cuando un periférico está listo para transmitir se lo indica a la CPU activando una línea especial del bus de control denominada LÍNEA DE PETICIÓN INTERRUPCIÓN
Ø La CPU decide qué periféricos tienen capacidad para interrumpir
⌦ RUTINA DE TRATAMIENTO DE INTERRUPCIONES (RTI)
Ø Cuando la CPU recibe una señal de petición de interrupción salta a ejecutar una RTI
Ø La RTI se encarga de atender al periférico que interrumpió y realizar la operación de E/S
Programa
Periférico listo para la transmisión ⇒Activa petición interrupción (INTR)
Rutina de Tratamiento de Interrupción(La CPU realiza la operación de E/S)
Programa
MEM
E/SUCP
BUS
INTR
11
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
⌦ Analogías entre una subrutina y una RTI
Ø Se rompe la secuencia normal de ejecución
Ø Cuando terminan de ejecutarse se debe retornar al punto de rupturað Debemos guardar el PC en
la pila en ambos casos
⌦ Diferencias entre una subrutina y una RTI
Ø En una subrutina el programador sabe en qué punto exacto se rompe la secuencia
Ø Una RTI puede ejecutarse en cualquier momento, sin control del programador
ð Necesario guardar el registro de estado en la pila y restaurarlo al retornar de la RTI
ð Normalmente se realiza automáticamente
ð Necesario guardar los registros que utiliza la RTI en la pila y restaurarlos al retornar de la RTI
ð Normalmente hay que realizarlo de forma manual
2. mecanismos básicos de E/S2. mecanismos básicos de E/SE/S por interrupciones (cont.)
Instrucción 1Instrucción 2Instrucción 3Instrucción 4Instrucción 5Instrucción 6Instrucción 7Instrucción 8Instrucción 9....................
PROGRAMA
INTR
Instrucción 1Instrucción 2Instrucción 3Instrucción 4Instrucción 5....................RTE
RTI
Instrucción de Retorno de Interrupción
12
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesSecuencia de eventos en el tratamiento de una interrupción
Programa Programa
1 Periférico activa petición interrupción (INTR)
2 CPU termina de ejecutar la instrucción en curso y comprueba si hay interrupciones pendientes
3 CPU salva automát. contexto en pila (PC y reg. de estado), descapacita las interrupciones y salta a la RTI
RTI
4 CPU ejecuta la RTI, durante la cual:• Informa al periférico que se ha reconocido su
interrupción (por software o por hardware)⇒ El periférico desactiva INTR
• Salva en pila todos los registros de datos y/o direcciones utilizados por la RTI (manual)
• Realiza la operación de E/S con el periférico• Restaura los registros de datos/direcciones• Ejecuta la instrucción de retorno de
interrupción (RTE)
5 CPU capacita las interrupciones, restaura contexto (PC y reg. estado) y retorna al programa
6 CPU continúa con la ejecución del programa
Cuestiones planteadas• ¿Cuándo comprueba la CPU si hay interrupciones pendientes?• ¿Por qué es necesario descapacitar las interrupciones?• ¿Cómo se informa al periférico que se ha reconocido su
interrupción?⇒ Identificación de la fuente de interrupción
• ¿Qué ocurre si se produce una segunda interrupción durante la ejecución de la RTI?
⇒ Interrupciones multinivel y anidamiento de interrupciones
13
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupciones
Comprobación de peticiones de interrupción pendientes
⌦ La CPU comprueba si hay interrupciones pendientes (línea INTR activada) al final de la ejecución de cada instrucción
Ø Motivo: ð Sólo es necesario guardar el PC, el reg. de estado y los registros accesibles por programa (registros de
datos y/o direcciones)
ð Si se interrumpiese una instrucción en mitad de la ejecución sería necesario guardar el valor de todos los registros internos de la CPU
ð Reg. de instrucción, registros de dirección de datos, registros de datos de memoria, etc.
Ø Excepciones:ð Instrucciones de larga duración
ð Por ejemplo, en instrucción de movimiento múltiple (MOVEM), se comprueba si hay interrupciones pendientes después de mover cada una de las palabras
ð Interrupciones muy prioritarias
ð Por ejemplo, una interrupción por fallo de página, en la que hay que acceder a disco para traer los operandos en memoria de la instrucción
14
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesInhibición o descapacitación de las interrupciones⌦ Antes de saltar a la RTI es necesario inhibir o descapacitar las interrupciones
Ø Motivo: Si no se inhiben la CPU puede entrar en un bucle infinitoð Cuando se entra en la RTI el periférico todavía no ha desactivado su petición
ð Si las interrupciones están capacitadas ⇒ la CPU detecta una interrupción pendiente y vuelve saltar a la RTI una y otra vez
ð Antes de finalizar la RTI hay que asegurarse de que el periférico desactivado la línea de petición INTR
ð Por software: accediendo al registro de estado o de datos del interfaz
ð Por hardware: activando una señal de reconocimiento de interrupción (INTA)
⌦ Alternativas
Ø Descapacitación globalð Se inhiben todas las interrupciones ⇒ ningún otro periférico podrá interrumpir durante la ejecución de
la RTI
Ø Descapacitación o enmascaramiento selectivoð Cuando hay varios niveles de interrupción se pueden descapacitar las interrupciones por el nivel que
interrumpe, pero no necesariamente por el resto de niveles
ð Véase interrupciones multinivel y anidamiento de interrupciones
Programa Programa
RTI
Petición de interrupción (INTR activada)
INTR activada Si no descapacitamos
⇒ Salta a RTI
15
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesIdentificación de la fuente de interrupción⌦ A una misma línea de interrupción es posible conectar varios periféricos
Ø Normalmente se utiliza lógica negativa (INTR*) y cableada (en colector abierto, “open collector”)ð Sí INTR* = 1 ⇒ No hay interrupción pendiente
ð Sí INTR* = 0 ⇒ Sí hay interrupción pendiente
Ø La señal INTR* se calcula como la Y lógica cableada de cada una de las líneas de petición de interrrupción individuales:ð INTR = INTR 1 · INTR 2 · INTR 3 · ....... · INTR n
⌦ Cuando existen varias fuentes de interrupción es necesario un mecanismo para identificar al periférico que interrumpió y ejecutar la RTI adecuada para atender a ese periférico particular
Ø Identificación software: por encuesta (polling)
Ø Identificación hardware: por vectores
.....INTR 1
E/S 1
INTRR
CPUINTR 2
E/S 2
INTR 3
E/S 3
Vcc
.....INTR 1
E/S 1
INTR
CPU
INTR 2
E/S 2
INTR 3
E/S 3
16
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesIdentificación software por encuesta (polling)
⌦ La RTI examina uno a uno los bits de estado de cada periférico hasta hallar el que tiene activado su bit de petición de interrupción
Ø Una vez detectado el periférico que interrumpió se ejecuta una subrutina particular para atender a ese periférico en cuestión
Ø Durante la ejecución de esa rutina se debe desactivar el bit de petición de interrupción del periférico ð Normalmente se pone automáticamente a cero cuando
se lee o escribe el registro de datos del interfaz
⌦ Prioridades
Ø El método de encuesta introduce un mecanismo de prioridades softwareð En caso de peticiones simultáneas se atiende
por orden de encuesta
ð La RTI se suele diseñar de manera quese pregunta primero a los dispositivos más prioritarios
⌦ Problemas del método de encuesta
Ø Se desperdicia tiempo consultando a losque no han solicitadoservicio
RTI
¿Ha interrumpidoperiférico 1?
NO
¿Ha interrumpidoperiférico 2?
¿Ha interrumpidoperiférico n?
NO
Subrutina tratamiento periférico 1
Subrutina tratamiento periférico 2
Subrutina tratamiento periférico n
NO
SÍ
SÍ
SÍ
Mensaje deERROR
RTE
17
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesIdentificación hardware por vectores: interrupciones vectorizadas
⌦ El periférico que ha interrumpido envía un código o número de vector a la CPU a partir del cual se puede calcular la dirección de comienzo de la RTI de ese periférico particular
Ø Cuando el periférico recibe una señal de confirmación o reconocimiento de interrupción INTA (“Interruption Ack.”) envía el nº de vector a través del bus de datos
Ø A partir del nº de vector se calcula una dirección de memoria (vector) donde está almacenada la dirección de comienzo de la RTI
.....E/S 1
INTR
CPU E/S 2 E/S 3
Bus Datos
INTA
18
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesIdentificación hardware por vectores: interrupciones vectorizadas
Secuencia de eventos en el tratamiento de una interrupción vectorizada
1. El periférico activa la señal de interrupción (INTR*=0)
2. La CPU activa la señal de confirmación de interrupción (INTA=1) que se conecta a
los dispositivos de forma encadenada (daisy-chain)
3. Un periférico que no ha interrumpido, cuando recibe la señal INTA, la propaga al
siguiente
4. Cuando el periférico que interrumpió recibe la señal INTA vuelca su número de
vector sobre el bus de datos y desactiva la señal de petición de interrupción. Este
periférico no propaga INTA
5. La CPU calcula la dirección de comienzo de la RTI a partir del nº de vector
6. La CPU salva el contexto en pila (CPU y reg. de estado) y salta a la RTI
7. Se guardan los registros accesibles por programa, se ejecuta la operación de E/S
y se retorna de la interrupción al programa principal restaurando previamente
todo el contexto
19
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesIdentificación hardware por vectores (cont.)
⌦ Ventajas
Ø La transmisión de INTA es totalmente hardware ⇒ es mucho más rápido que el método de
encuesta
⌦ Desventajas
Ø El nº de dispositivos que se pueden identificar con este método depende del nº de bits que
utilicemos para el nº vector
ð Ejemplo: con un nº de vector de 4 bits podemos identificar 16 dispositivos
Ø Solución: pueden utilizarse códigos de grupo
ð Un mismo nº de vector puede utilizarse para identificar a un grupo de varios dispositivos
ð Cuando la CPU recibe un nº de vector de grupo, la RTI debe identificar al dispositivo particular de
ese grupo mediante encuesta
20
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupciones
⌦ Interrupciones multinivel
Ø Existen varias líneas o niveles de petición de interrupción
Ø Cada nivel tiene asignado una prioridad distinta
Ø A cada línea de interrupción se pueden conectar uno o varios dispositivos
⌦ Resolución de conflictos de peticiones de interrupción simultáneas
Ø Peticiones simultáneas por la misma líneað Se resuelve con alguno de los mecanismos estudiados anteriormente
ð Mediante encuesta (software)
ð Mediante vectores (hardware)
Ø Peticiones simultáneas por líneas distintasð Se suele resolver mediante un codificador de prioridades ⇒ Se atiende a la línea más prioritaria
Interrupciones multinivel y anidamiento de interrupciones
Cod
ifica
dor
de
prio
ridad
es
INTR0INTR1
INTRn-1
•••
Menor prioridad
Mayorprioridad
••
Código de la línea más prioritaria (k bits, siendo n = 2k)
INTR Se activa si alguna entrada está activada
21
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupciones
⌦ Enmascaramiento selectivo de niveles de interrupción
Ø Los sistemas de interrupciones multinivel permiten enmascarar o descapacitarselectivamente las interrupciones por determinados niveles
Ø Para ello se utiliza un registro de máscarað 1 bit de máscara bk por nivel
⌦ Anidamiento de interrupcionesØ En general, en los sistemas de interrupciones multinivel se permite el anidamiento de
interrupcionesð Mientras se ejecuta la RTI de un determinado nivel se inhiben las interrupciones por el mismo nivel o
inferiores, pero se pueden atender petición de interrupción de mayor nivelØ El anidamiento se controla mediante el registro de máscara
ð Cuando se produce una interrupción de prioridad Pk se enmascaran todas las interrupciones de prioridad P ≤ Pk
Interrupciones multinivel y anidamiento de interrupciones (cont.)
Cod
ifica
dor
de
prio
ridad
es
INTR0
INTR1
INTRn-1
•••
••
Código de la línea más prioritaria no enmascarada
INTR Se activa si alguna entrada está activada
b0 b1 ··· bn-1 Registro de máscara
Si bk = 1 → Nivel INTRk capacitadoSi bk = 0 → Nivel INTRk descapacitado o enmascarado
22
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupciones
Sistema con 3 niveles de interrupción:
Ejemplo de anidamiento de interrupciones
INTR0INTR1INTR2
(INTR0 < INTR1 < INTR2)
b2 b1 b0
Registro de estado
Bits de máscaraSi bk = 1 → Nivel INTRk capacitadoSi bk = 0 → Nivel INTRk enmascarado
SR:
nn+1
INTR1
INTR0RTI Nivel 1
dir1Prog. Principal
qq+1
INTR2
RTI Nivel 2dir2
RTI Nivel 0dir0
RTE
RTE
RTE
SE ATIENDE INTR0
FIN INTR0
Evolución de PC, SR y Pila
Supongamos que se producen 3 peticiones de interrupción en el orden INTR1 - INTR0 - INTR2
LLEGA INTR0LLEGA INTR1
PC (n+1)SR (111)
dir1100
PCSR
SP→
LLEGA INTR2
PC (n+1)SR (111)
dir2000
PCSR
SP→PC (q+1)SR (100)
FIN INTR2
PC (n+1)SR (111)
q+1100
PCSR
SP→
FIN INTR1
n+1111
PCSR
SP→
PC (n+1)SR (111)
dir0110
PCSR
SP→
n+1111
PCSR
SP→
Pila PilaPila Pila Pila Pila
(No hay alteración)
23
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
3. gestión de interrupciones3. gestión de interrupcionesInterrupciones autovectorizadas
⌦ La mayoría de sistemas de interrupciones multinivel asignan un vector de interrupción por defecto a cada nivel de interrupción denominada autovectorØ El autovector almacena la dirección de comienzo de la RTI asignada por defecto a ese nivel Ø Si un periférico conectado a un determinado nivel no es capaz de generar su propio nº de
vector entonces se utiliza el autovector para saltar a la RTI por defecto de ese nivelØ La RTI por defecto utilizará un mecanismo de encuesta para identificar al periférico que
interrumpió
EjemploComputador con 4 niveles de interrupción:(direcciones de 32 bits)
INTR0 → autovector $00000010INTR1 → autovector $00000014INTR2 → autovector $00000018INTR3 → autovector $0000001C
MEMORIA
$00000010
$00000014
$00000018
$0000001C
dir. Inicio RTI Nivel 0
dir. Inicio RTI Nivel 1
dir. Inicio RTI Nivel 2
dir. Inicio RTI Nivel 3
••
••
24
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000Características generales del MC68000
⌦ Procesador de 16 bits de datos y 24 de direcciones (espacio de direcciones de 16 Mbytes)
⌦ 16 registros de propósito general de 32 bits cada uno (8 para datos y 8 para direcciones)
⌦ 7 niveles de interrupción (6 de ellos enmascarables)
⌦ Registro de estado (SR):
15 13 10 8 4 0T S I I I2 1 0 X N Z V C
Byte del Supervisor Byte del Usuario (CCR)
Bit TrazaBit Supervisor Máscara
InterrupcionesCódigos deCondición
Excepciones del MC68000⌦ Noción de excepción:
Ø Cualquier evento que requiera la interrupción de la ejecución normal del programa
⌦ Tipos de excepciónØ Internas o TRAPS
ð Se deben a errores producidos durante la ejecución normal de instrucciones
Ø Externas o INTERRUPCIONESð Se deben principalmente a
peticiones realizadas por dispositivos externos
ð También pueden producirse por un error de bus o una señal de RESET
Excepciones del MC68000
Internas Externas
Error de ejecución
Traza Instrucción Reset Error de bus
Petición deinterrupción
— División por cero— Violación privilegio— Emulador— Instrucción ilegal— Error de dirección
— TRAP— TRAPV— CHK
— Vectorizadas— Autovectorizadas
25
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000Vectores de excepción
⌦ Cada tipo de excepción tiene asignado uno o varios autovectores donde se almacena la dirección de comienzo de la rutina de tratamiento de la excepción
⌦ Para el caso particular de las interrupciones tenemos dos alternativasØ Vectores de interrupción de usuario
ð Posiciones de memoria reservadas para aquellos periféricos capaces de generar su propio nº de vector
ð Interrupciones vectorizadas
Ø Autovectores de interrupciónð Cada nivel de interrupción tiene asignado por
defecto un autovector, que se utiliza cuando el periférico no es capaz de generar su propio nº de vector
ð Interrupciones autovectorizadas
⌦ Existen 255 vectores/autovectores distintos
Ø Cada uno se identifica por un nº de vector de 8 bits
Ø La dirección del vector se calcula multiplicando por 4 (desplaz. 2 bits a izda.) el nº de vectorð dir_vector = nº_vector * 4
Nº Dirección vector AsignaciónVector Decimal Hex.
0 0 000 Reset: SSP inicial- 4 004 Reset: PC inicial2 8 008 Error de Bus3 12 00C Error en Dirección4 16 010 Instrucción Ilegal5 20 014 Div isión por Cero6 24 018 Instrucción CHK7 28 01C Instrucción TRAP8 32 020 Violación de Priv ilegio9 36 024 Traza
10 40 028 Emulador Línea 101011 44 02C Emulador Línea 111112 48 030 (No asignado, reservado)13 52 034 (No asignado, reservado)14 56 038 (No asignado, reservado)15 60 03C Vector de Interrupción
no Inicializado
16-23 64-92 040-05C (No asignado, reservado)
24 96 060 Interrupción espúrea25 100 064 Autovector Interrupción Nivel 126 104 068 Autovector Interrupción Nivel 227 108 06C Autovector Interrupción Nivel 328 112 070 Autovector Interrupción Nivel 429 116 074 Autovector Interrupción Nivel 530 120 078 Autovector Interrupción Nivel 631 124 07C Autovector Interrupción Nivel 7
32-47 128-188 080-0BC Vectores Instrucción TRAP
48-63 192-252 0C0-0FC (No asignado, reservado)
64-255 256-1020 100-3FC Vectores Interrupción deUsuario
26
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000
⌦ 1.Se copia el SR en un registro interno y luego se modifican los siguientes camposØ Se pasa a modo supervisor (S=1)Ø Se desactiva el modo traza (T=0)Ø Se actualiza el valor de la máscara (I2-I0) descapacitando las interrupciones de menor o
igual prioridad⌦ 2.Se determina el nº de vector de excepción
Ø Por lógica interna si se trata de una excepción interna o una interrupción autovectorizadaØ Por hardware de reconocimiento de interrupción si se trata de una interrupción vectorizada
⌦ 3. Se calcula la dirección del vector de excepción a partir del nº de vectorØ dir_vector = nº_vector * 4
⌦ 4. Se salva el contexto en la pila del supervisorØ Se guarda en pila el PC actual (estará apuntando a la siguiente ejecución a ejecutar)
ð Orden: primero PC-H (palabra más significativa) y luego PC-L (palabra menos significativa) Ø Se guarda en pila el SR que se salvó en el paso 1
⌦ 5. Se carga en el PC la dirección de comienzo de la rutina de tratamiento de excepción⌦ 6. Se ejecuta la rutina de tratamiento de excepción
Ø Se deben guardar en pila (manualmente) los registros de propósito general utilizados en esta rutina
Ø La última instrucción de esta rutina debe ser RTE (retorno de excepción)Ø Cuando se ejecuta la instrucción RTE se restaura el contexto y se continúa con la
ejecución normal del programa en el punto donde se interrumpió
Secuencia de eventos en el procesamiento de una excepción del MC68000
27
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000Niveles de prioridad
⌦ El MC68000 dispone de 7 niveles de interrupción de distinta prioridad
Ø IRQ7 > IRQ6 > IRQ5 > IRQ4 > IRQ3 > IRQ2 > IRQ1
Ø Estas líneas se conectan al procesador a través de un codificador de prioridades
Ø El nivel que activado más prioritario se codifica mediante 3 líneas: IPL2 - IPL1 - IPL0
Línea de Nivel de prioridad codificado (Señales)interrupción
activada____IPL2
____IPL1
____IPL0
IRQ7 L L LIRQ6 L L HIRQ5 L H LIRQ4 L H HIRQ3 H L LIRQ2 H L HIRQ1 H H L
No interrup. H H H
⌦ Se realiza mediante bits de máscara I2 - I1 - I0 del registro de estado
Ø El nivel 7 no es enmascarable
Ø Cuando se produce una interrupción por un cierto nivel se enmascaran automáticamente las interrupciones de prioridad menor e igual
Enmascaramiento de interrupcionesMáscara NivelesI2 I1 I0 Enmascarados0 0 0 Ninguno0 0 1 IRQ10 1 0 IRQ1, IRQ20 1 1 IRQ1, IRQ2, IRQ31 0 0 IRQ1, IRQ2, ..., IRQ41 0 1 IRQ1, IRQ2, ..., IRQ51 1 0 IRQ1, IRQ2, ..., IRQ61 1 1 IRQ1, IRQ2, ..., IRQ6
Cod
ifica
dor
de
prio
ridad
es
IRQ7
IRQ6
IRQ1
•••
Mayor prioridad
Menorprioridad
76543210
IPL2IPL1
IPL0
2
1
0MC68000
28
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000Identificación de la fuente de interrupción
⌦ El mecanismo de identificación del dispositivo que interrumpió depende del tipo de interrupciónØ Interrupción autovectorizada: identificación mediante encuesta (“polling”)Ø Interrupción vectorizada: identificación mediante el nº de vector proporcionado por el
periférico⌦ Para distinguir si el periférico es capaz o no de generar un nº vector se utiliza una línea especial
del bus Ø Línea VPA (Valid Peripheral Address)
ð Si VPA activada ⇒ interrupción autovectorizada (el periférico no puede generar un nº de vector)ð Si VPA desactivada ⇒ interrupción vectorizada (el periférico proporcionará el nº de vector)
PROBLEMA: No es conveniente mezclar interrupciones vectorizadas y autovectorizadas en la mismas líneas de petición de interrupciónEJEMPLO: Simultáneamente se solicitan dos interrupciones
Ø Una vectorizada por IRQ7* y otra autovectorizada por IRQ4* (Activa VPA*)
Ø La CPU atenderá la interrupción de IRQ7*, pero al detectar VPA* activada tomará el autovector del nivel 7 en lugar del vector proporcionado por el periférico
SOLUCIÓN: Utilizar líneas de petición de interrupción distintas para interrupciones vectorizadas y autovectorizadas
Cod
ifica
dor
de
prio
ridad
es
IRQ7
IRQ6
IRQ1
•••
1514131211109876543210
IPL2
IPL1
IPL0
3
2
1
0
MC68000
IRQ7
IRQ6•••
IRQ1
VPA
Inte
rrup
cion
esve
ctor
izad
asIn
terr
upci
ones
auto
vect
oriz
adas
29
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: MC680004. Ejemplos: MC68000Identificación de la fuente en interrupciones autovectorizadas
⌦ Si produce una interrupción y la CPU detecta la señal VPA activada, se producen las siguientes acciones
Ø La CPU genera automáticamente un nº de vector en función del nivel que interrumpe
Ø La CPU calcula la dirección del autovector (nº_vector * 4) y toma de memoria la dirección de comienzo de la RTI por defecto específica para ese nivelð La RTI es común a todos los periféricos autovectorizados conectados a ese nivel
ð La RTI debe encuestar a estos periféricos para hallar cual de ellos solicitó la interrupción
Identificación de la fuente en interrupciones vectorizadas
⌦ Si se produce una interrupción y la CPU detecta VPA desactivada, se producen las siguientes acciones
Ø La CPU pone sus líneas de estado (FC2, FC1, FC0) en “Reconocimiento de Interrupción”ð (FC2, FC1, FC0) = (1, 1, 1)
Ø La CPU utiliza las líneas de direcciones A3-A2-A1 para codificar el nivel de interrupción que se reconoce (codificación de la señal INTA)
⌦ El periférico que interrumpió, al recibir INTA realiza las siguientes acciones:
Ø Envía su vector de interrupción de usuario a través de las líneas D7-D0 del bus de datosð El nº de vector debe ser un nº entre 64 y 255
Ø Desactiva su señal de petición de interrupción
30
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
1. Un periférico conectado a IRQ4* activa INTR*2. Si nivel 4 no esta enmascarado la CPU confirma la interrupción
FC2, FC1, FC0 = 1 1 1 (estado de reconocimiento de interrupción)A3, A2, A1 = 1 0 0 (reconocimiento de nivel 4)
3. El periférico que generó la petición reconoce INTA4 y envía su nº de vector por D0-D7
4. Ejemplos: MC680004. Ejemplos: MC68000Ejemplo de conexión para interrupciones vectorizadas
⌦ Suponemos varios periféricos conectados al nivel 4
Cod
ifica
dor
de
prio
ridad
es
IRQ7
IRQ4
IRQ1
••76543210
IPL2IPL1
IPL0
2
1
0
MC68000••
E/S 1 E/S 2 E/S 3 FC
0
FC
1F
C2
Bus dir.
E
Decod.3 a 8
210
76543210
A3 A2 A1
INTA7
INTA4
INTA1
••
••
INTAINTAINTA
Bus datos (D7-D0)
Nº vector Nº vector Nº vector
INTR INTR INTR
Bus datos
31
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: i80864. Ejemplos: i8086Características generales del sistema de interrupciones del i8086⌦ Procesador de 16 bits de datos y 20 de direcciones (espacio de direcciones de 1 Mbytes)
⌦ Se distinguen 2 tipos de interrupciones
Ø Internasð Se deben a errores producidos durante la ejecución normal de instrucciones
Ø Externas ð Se deben a peticiones realizadas por dispositivos externos
⌦ Dentro de las interrupciones externas se distingue a su vez dos tipos
Ø Interrupciones no enmascarablesð Se producen a través de la línea NMI (Non-Maskable Interrupt)
ð Son autovectorizadas (vector nº 2)
ð Son de mayor prioridad que las enmascarables
Ø Interrupciones enmascarablesð Se producen a través de la línea INTR
ð Son vectorizadas
ð Se reconocen a través de la línea INTA
ð El periférico debe envía un nº de vector (entre 32 y 255) a través del bus de datos
ð La dirección del vector se calcula multiplicando por 4 el nº de vector: dir_vector = nº_vector * 4
Nº Dirección AsignaciónVector Hex.
0 000 División por cero1 004 Traza2 008 Interrupción no enmascarable3 00C Breakpoint4 010 Overflow
5-31 014-07E Reservados por Intel
32-255 07C-3FC Vectores Interrupción deUsuario
32
Estructura de ComputadoresEstructura de Computadores
Tema 5. Organización de la E/S. Gestión de interrupciones
4. Ejemplos: i80864. Ejemplos: i8086Controlador de interrupciones i8259⌦ Permite convertir la línea de petición de interrupción enmascarable (INTR) en 8 niveles de
interrupción distintos (INTR0-INTR7)
⌦ Cada línea tiene asignado un nivel de prioridad que puede ser fija o rotante
⌦ El controlador i8259 dispone de un conjunto de registros para almacenar un nº de vector por cada nivel
Ø Estos registros son programables desde la CPU
Ø Cuando se produce una interrupción por un determinado nivel el controlador pone el nº vector asignado a ese nivel en el bus de datos
⌦ El controlador i8259 permite encadenar en cascada dos niveles de controladores
Ø Esto permite disponer de hasta 64 niveles de prioridad distintos (8x8)
INTR
INTA
D7-D0
RD*WR*
INTR7
INTR6
INTR0
•••i8086 i8259