Professional Documents
Culture Documents
Contenido
1. Funciones implicadas en una operacin de E/S
1. Direccionamiento 2. Transferencia 3. Sincronizacin
2. Conexin de un dispositivo de E/S al computador 3. Interfaces de E/S. 4. Estructura del sistema de E/S:
1. Localizada en memoria 2. Aislada
estructura de computadores
Entrada/Salida
109 bps
104 bps
estructura de computadores
estructura de computadores
CPU
BUS de E/S
INTERFAZ
Conexin con perifricos
PERIFRICO
estructura de computadores
3. Interfaz de Entrada/Salida
Estructura del interfaz de E/S
La comunicacin entre la CPU y el perifrico se realiza a travs de los registros del interfaz Permite enviar rdenes al perifrico: imprime carcter, salto de lnea CPU INTERFAZ
Bus E/S Reg. Control DIREC. Reg. Estado DATOS Reg. Datos Salida Reg. Datos Entrada DATOS ESTADO
CONTROL
Comunicacin CPU-Interfaz
Nota: los registros del interfaz de E/S tambin se llaman puertos de E/S
Comunicacin Interfaz-perifrico CPU enva datos al perifrico escribiendo sobre el registro(s) de datos de salida
estructura de computadores
3. Interfaz de Entrada/Salida
Ejemplo de conexin de un interfaz de E/S al bus
Disear la lgica de direccionamiento necesaria para conectar el interfaz de un dispositivo a un bus de 8 bits de direcciones. Las direcciones de los registros del interfaz son:
Registro de Estado (slo lectura): $BC (1011 1100) Registro de Control (slo escritura): $BC (1011 1100) Registro de Datos: $BD (1011 1101)
DESCODIFICADOR
A7
SEL*
estructura de computadores
estructura de computadores
...
A1 A0
ST* ESTADO
CONTROL
La direccin de los controladores La direccin de los controladores no puede ser fija, ya que podra no puede ser fija, ya que podra solaparse: solaparse: mediante jumpers mediante jumpers plug & play (se fijan en el plug & play (se fijan en el arranque) arranque)
estructura de computadores
estructura de computadores
estructura de computadores
estructura de computadores
UCP
INTR
E/S
estructura de computadores
INTR
estructura de computadores
RTI
estructura de computadores
6. Gestin de interrupciones
Comprobacin de peticiones de interrupcin pendientes
La CPU comprueba si hay interrupciones pendientes (lnea INTR activada) al final de la ejecucin de cada instruccin Motivo: Si se interrumpiese una instruccin en mitad de la ejecucin sera necesario guardar el valor de todos los registros internos de la CPU. Excepciones: Instrucciones de larga duracin (Ej. Instruccin MOVEM del repertorio del 68K) Interrupciones muy prioritarias (Ej. excepcin de fallo de pgina)
Lectura de instruccin Lectura de operando Escritura de resultado
Clculo de EA de instruccin
Decodificacin de instruccin
Clculo de EA de operando
Operacin
Clculo de EA de resultado
estructura de computadores
6. Gestin de interrupciones
Inhibicin o descapacitacin 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 Antes de finalizar la RTI hay que asegurarse de que el perifrico ha desactivado la lnea de peticin INTR
Por software (registro de estado o de datos del interfaz) Por hardware (seal de reconocimiento de interrupcin, INTA)
Programa
INTR activada Si no descapacitamos Salta a RTI Peticin de interrupcin (INTR activada)
Programa
RTI
Alternativas Descapacitacin global: Se inhiben todas las interrupciones Descapacitacin o enmascaramiento selectivo (Varios niveles de interrupcin) estructura de computadores
6. Gestin de interrupciones
Identificacin de la fuente de interrupcin
A una misma lnea de interrupcin es posible conectar varios perifricos Normalmente se utiliza lgica negativa (INTR*) y cableada (en colector abierto, open collector) La seal INTR* se calcula como la Y lgica cableada de cada una de las lneas de peticin de interrrupcin individuales:
INTR* = INTR1* INTR2* INTR3* ... INTRn*
Vcc R INTR* E/S 2 INTR 2 E/S 3 INTR 3 CPU INTR 1 E/S 1 INTR 2 E/S 2 INTR 3 E/S 3
Es necesario identificar el perifrico que interrumpi y ejecutar la RTI adecuada Identificacin software: por encuesta (polling) Identificacin hardware: por vectores estructura de computadores
6. Gestin de interrupciones
Identificacin software por encuesta (polling)
La RTI examina uno a uno los bits de estado de cada perifrico hasta hallar el que tiene activado su bit de peticin de interrupcin Se ejecuta una subrutina particular para atender a ese perifrico en cuestin Desactivar el bit de peticin de interrupcin del perifrico por software Prioridades (implcitas por el orden de encuesta) Desventajas: Consulta de dispositivos que no han solicitado servicio
NO Ha interrumpido perifrico 2? S NO
RTI
Ha interrumpido perifrico 1? S Subrutina tratamiento perifrico 1
NO Mensaje de ERROR
Ha interrumpido perifrico n?
RTE
estructura de computadores
6. Gestin de interrupciones
Identificacin hardware por vectores: interrupciones vectorizadas
El perifrico que ha interrumpido enva un cdigo o nmero de vector a la CPU El n vector permite calcular la direccin de comienzo de la RTI de ese perifrico Cuando el perifrico recibe una seal de reconocimiento de interrupcin INTA (Interruption Ack.) enva el n de vector a travs del bus de datos A partir del n de vector se calcula una direccin de memoria (vector) donde est almacenada la direccin de comienzo de la RTI N de Vector Direccin Memoria
Perifrico
0 1 2 3
0 2 4 6 00 A4
RTI = n vector * 2
00A4 00A6
estructura de computadores
10
6. Gestin de interrupciones
Identificacin hardware por vectores (cont.)
Secuencia de eventos en el tratamiento de una interrupcin vectorizada 1. El perifrico activa la seal de interrupcin (INTR*=0) 2. La CPU activa la seal de confirmacin de interrupcin (INTA=1), se conecta a los dispositivos de forma encadenada (daisy-chain): 1. Un perifrico que no ha interrumpido propaga INTA 2. El perifrico que interrumpi vuelca su vector cuando recibe INTA (no la propaga) 3. La CPU calcula la direccin de comienzo de la RTI a partir del n de vector 4. La CPU salva el contexto en pila (CPU y reg. de estado) y salta a la RTI 5. Se guardan los registros accesibles por programa, se ejecuta la operacin de E/S y se retorna de la interrupcin al programa principal restaurando previamente todo el contexto
Bus Datos INTR INTA
E/S 1
E/S 2
E/S 3
.....
6. Gestin de interrupciones
Identificacin hardware por vectores (cont.)
Ventajas La transmisin de INTA es totalmente hardware, ms rpido que el mtodo de encuesta Desventajas El n de dispositivos que se pueden identificar con este mtodo depende del n de bits que utilicemos para el n vector Solucin: cdigos de grupo, combinado con el mtodo de encuesta
estructura de computadores
11
6. Gestin de interrupciones
Interrupciones multinivel y anidamiento de interrupciones
Interrupciones multinivel Existen varias lneas o niveles de peticin de interrupcin, cada una con un nivel de prioridad A cada lnea de interrupcin se pueden conectar uno o varios dispositivos Resolucin de conflictos de peticiones de interrupcin simultneas Peticiones simultneas por la misma lnea Mediante encuesta (software) Mediante vectores (hardware) Peticiones simultneas por lneas distintas, se suele resolver mediante un codificador de prioridades
Menor prioridad
INTR0 INTR1 INTRn-1
Codificador de prioridades
Mayor prioridad
estructura de computadores
6. Gestin de interrupciones
Interrupciones multinivel y anidamiento de interrupciones (cont.)
Enmascaramiento selectivo de niveles de interrupcin Los sistemas de interrupciones multinivel permiten enmascarar las interrupciones de cada nivel Para ello se utiliza un registro de mscara 1 bit de mscara bk por nivel
Si bk = 1 Nivel INTRk capacitado Si bk = 0 Nivel INTRk descapacitado o enmascarado
Anidamiento de interrupciones En general, en los sistemas de interrupciones multinivel se permite el anidamiento de interrupciones El anidamiento se controla mediante el registro de mscara
Codificador de prioridades INTR0 INTR1 INTRn-1
INTR
estructura de computadores
12
6. Gestin de interrupciones
Ejemplo de anidamiento de interrupciones
Sistema con 3 niveles de interrupcin (INTR0 < INTR1 < INTR2):
Registro de estado SR: b2 b1 b0 Bits de mscara Si bk = 1 Nivel INTRk capacitado Si bk = 0 Nivel INTRk enmascarado
INTR0 INTR2
LLEGA INTR2
SP Pila PC (q+1) SR (100) PC (n+1) SR (111) dir2 000
FIN INTR2
Pila SP PC (n+1) SR (111)
FIN INTR1
Pila
SE ATIENDE INTR0
Pila SP PC (n+1) SR (111)
FIN INTR0
Pila
SP PC SR n+1 111
estructura de computadores
3. Gestin de interrupciones
Interrupciones autovectorizadas
La mayora de sistemas de interrupciones multinivel asignan un vector de interrupcin por defecto a cada nivel de interrupcin denominada autovector El autovector almacena la direccin de comienzo de la RTI asignada por defecto a ese nivel Si un perifrico 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 perifrico que interrumpi
Ejemplo
Computador con 4 niveles de interrupcin y direcciones de 32 bits: INTR0 autovector $00000010 MEMORIA INTR1 autovector $00000014 INTR2 autovector $00000018 $00000010 dir. Inicio RTI Nivel 0 INTR3 autovector $0000001C
$00000014 $00000018 $0000001C dir. Inicio RTI Nivel 1 dir. Inicio RTI Nivel 2 dir. Inicio RTI Nivel 3
estructura de computadores
13
4. Ejemplos: MC68000
Caractersticas generales del MC68000
Procesador de 16 bits de datos y 24 de direcciones (espacio de direcciones de 16 Mbytes) 16 registros de propsito general de 32 bits cada uno (8 para datos y 8 para direcciones) 7 niveles de interrupcin (6 de ellos enmascarables) Registro de estado (SR):
Byte del Supervisor 15 T Bit Traza Bit Supervisor 13 S 10 8 I2 I1 I0 Mscara Interrupciones Byte del Usuario (CCR) 4 X 0 N Z V C
Cdigos de Condicin
estructura de computadores
4. Ejemplos: MC68000
Excepciones del MC68000
Excepcin: Cualquier evento que requiera la interrupcin de la ejecucin normal del programa Internas (Traps) Externas (Interrupciones)
Excepciones del MC68000 Internas Externas
Error de ejecucin
Traza
Instruccin
TRAP TRAPV CHK
Peticin de interrupcin
Reset
Error de bus
Divisin por cero Violacin privilegio Emulador Instruccin ilegal Error de direccin
Vectorizadas Autovectorizadas
estructura de computadores
14
4. Ejemplos: MC68000
Vectores de excepcin
Cada tipo de excepcin tiene asignado uno o varios autovectores Existen 255 vectores/autovectores distintos Cada uno se identifica por un n de vector de 8 bits La direccin del vector se calcula multiplicando por 4 (desplaz. 2 bits a izda.) el n de vector dir_vector = n_vector * 4 Interrupciones tenemos dos alternativas Vectores de interrupcin de usuario (vectorizadas) Autovectores de interrupcin (autovectorizadas)
N Vector 0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 32-47 48-63 Direccin vector Decimal Hex. 0 000 4 004 8 008 12 00C 16 010 20 014 24 018 28 01C 32 020 36 024 40 028 44 02C 48 030 52 034 56 038 60 03C 96 060 100 064 104 068 108 06C 112 070 116 074 120 078 124 07C 128-188 192-252 080-0BC 0C0-0FC Asignacin Reset: SSP inicial Reset: PC inicial Error de Bus Error en Direccin Instruccin Ilegal Divisin por Cero Instruccin CHK Instruccin TRAP Violacin de Privilegio Traza Emulador Lnea 1010 Emulador Lnea 1111 (No asignado, reservado) (No asignado, reservado) (No asignado, reservado) Vector de Int. no Inicializado Interrupcin esprea Autovector Int. Nivel 1 Autovector Int. Nivel 2 Autovector Int. Nivel 3 Autovector Int. Nivel 4 Autovector Int. Nivel 5 Autovector Int. Nivel 6 Autovector Int. Nivel 7 Vectores Instruccin TRAP (No asignado, reservado) Vectores Interrupcin de Usuario
estructura de computadores
4. Ejemplos: MC68000
Secuencia de eventos en el procesamiento de una excepcin del 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 mscara (I2-I0) descapacitando las int. de menor o igual prioridad
2.
3. 4.
5. 6. 7.
Se carga en el PC la direccin de comienzo de la RTI Se ejecuta la rutina de tratamiento de excepcin La ltima instruccin de esta rutina debe ser RTE (retorno de excepcin)
estructura de computadores
15
4. Ejemplos: MC68000
Niveles de prioridad
El MC68000 dispone de 7 niveles de interrupcin de distinta prioridad, que se codifican en las lneas IPL2*-IPL0*. IRQ7* > IRQ6* > IRQ5* > IRQ4* > IRQ3* > IRQ2* > IRQ1*
Mayor prioridad
Codificador de prioridades
Menor prioridad
7 6 5 4 3 2 1 0
2 1 0
Lnea de interrupcin activada IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 IRQ2 IRQ1 No interrup.
Nivel de prioridad codificado (Seales) ____ ____ ____ IPL2 IPL1 IPL0 L L L L L H L H L L H H H L L H L H H H L H H H
estructura de computadores
4. Ejemplos: MC68000
Enmascaramiento de interrupciones
Se realiza mediante bits de mscara I2 - I1 - I0 del registro de estado El nivel 7 no es enmascarable Permite anidamiento
Mscara I2 I1 I0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Niveles Enmascarados Ninguno IRQ1 IRQ1, IRQ2 IRQ1, IRQ2, IRQ3 IRQ1, IRQ2, ..., IRQ4 IRQ1, IRQ2, ..., IRQ5 IRQ1, IRQ2, ..., IRQ6 IRQ1, IRQ2, ..., IRQ6
estructura de computadores
16
4. Ejemplos: MC68000
Identificacin de la fuente de interrupcin
Segn el tipo de interrupcin: Interrupcin autovectorizada: identificacin mediante encuesta (polling) Interrupcin vectorizada: identificacin mediante el n de vector proporcionado por el perifrico Para distinguir si el perifrico es capaz o no de generar un n vector se utiliza una lnea especial del bus, VPA* (Valid Peripheral Address)
Si VPA* activada interrupcin autovectorizada (el perifrico no puede generar un n de vector) Si VPA* desactivada interrupcin vectorizada (el perifrico proporcionar el n de vector)
Interrupciones vectorizadas
Codificador de prioridades
PROBLEMA: No es conveniente mezclar interrupciones vectorizadas y autovectorizadas en la mismas lneas de peticin de interrupcin EJEMPLO: Simultneamente se solicitan dos interrupciones Una vectorizada por IRQ7* y otra autovectorizada por IRQ4* (Activa VPA*) La CPU atender la interrupcin de IRQ7*, pero al detectar VPA* activada tomar el autovector del nivel 7 en lugar del vector proporcionado por el perifrico SOLUCIN: Utilizar lneas de peticin de interrupcin distintas para interrupciones vectorizadas y autovectorizadas
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VPA
3 2 1 0
Interrupciones autovectorizadas
MC68000
estructura de computadores
4. Ejemplos: MC68000
Identificacin de la fuente en interrupciones autovectorizadas Si produce una interrupcin y la CPU detecta la seal VPA* activada, se producen las siguientes acciones
La CPU genera automticamente un n de vector en funcin del nivel que interrumpe La CPU calcula la direccin del autovector (n_vector * 4) y toma de memoria la direccin de comienzo de la RTI por defecto especfica para ese nivel La RTI (comn a todos los dispositivos de ese nivel) determinar por encuesta el perifrico que interrumpi
estructura de computadores
17
4. Ejemplos: MC68000
Identificacin de la fuente en interrupciones vectorizadas
Si se produce una interrupcin y la CPU detecta VPA desactivada, se producen las siguientes acciones La CPU pone sus lneas de estado (FC2, FC1, FC0) en Reconocimiento de Interrupcin, configuracin (1,1,1). (FC2, FC1, FC0) = (1, 1, 1) La CPU utiliza las lneas de direcciones A3-A2-A1 para codificar el nivel de interrupcin que se reconoce (codificacin de la seal INTA) El perifrico que interrumpi, al recibir INTA realiza las siguientes acciones: Enva su vector de interrupcin de usuario a travs de las lneas D7-D0 del bus de datos. (Nota: vector [64, 255]) Desactiva su seal de peticin de interrupcin
estructura de computadores
4. Ejemplos: MC68000
Ejemplo de conexin para interrupciones vectorizadas por el nivel 4
1.Un perifrico conectado a IRQ4* activa INTR* 2.Si nivel 4 no esta enmascarado la CPU confirma la interrupcin
FC2, FC1, FC0 = 1 1 1 (estado de reconocimiento de interrupcin) A3, A2, A1 = 1 0 0 (reconocimiento de nivel 4)
3.El perifrico que gener la peticin reconoce INTA4 y enva su n de vector por D0-D7
IRQ7
IRQ4 IRQ1
INTR INTR INTR
7 6 5 4 3 2 1 0
Codificador de prioridades
2 1 0
Bus datos
MC68000
Bus dir.
FC0
FC1 FC2
E Decod. 1 3a8 0
2
A3 A2 A1
E/S 1
INTA
E/S 2
INTA
E/S 3
INTA
N vector
N vector
7 6 5 4 3 2 1 0
estructura de computadores
18
4. Ejemplos: i8086
Caractersticas 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 ejecucin 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 travs de la lnea NMI (Non-Maskable Interrupt) Son autovectorizadas (vector n 2) Son de mayor prioridad que las enmascarables Interrupciones enmascarables Se producen a travs de la lnea INTR Son vectorizadas Se reconocen a travs de la lnea INTA El perifrico debe enva un n de vector (entre 32 y 255) a travs del bus de datos La direccin del vector se calcula multiplicando por 4 el n de vector: dir_vector = n_vector * 4
N Direccin Vector Hex. 0 000 1 004 2 008 3 00C 4 010 5-31 014-07E Asignacin Divisin por cero Traza Interrupcin no enmascarable Breakpoint Overflow Reservados por Intel Vectores Interrupcin de Usuario
32-255 07C-3FC
estructura de computadores
4. Ejemplos: i8086
Controlador de interrupciones i8259
Permite convertir la lnea de peticin de interrupcin enmascarable (INTR) en 8 niveles de interrupcin distintos (INTR0-INTR7) Cada lnea 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 interrupcin 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 INTR7 INTR6
i8086
RD*
D7-D0
i8259
INTR0
WR*
estructura de computadores
19