Tema 14 Entrada Salida

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 53

1

Organización del sistema de entrada/salida

1. Organización del subsistema de E/S


2. Mecanismos básicos de E/S
3. Gestión de interrupciones
4. DMA
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 CPU MEMORIA
 teclado, ratón, pantalla
 Dispositivos de almacenamiento
 discos, disquetes, CD-ROM, cintas,
discos magneto-ópticos, memoria flash ... E/S
 Dispositivos de impresión y escáner
 impresoras, plotters, scanners, ...
 Dispositivos de comunicación 8085 8085 8085

 redes, módems, ...

8085

8085

8085
 Dispositivos multimedia
 audio, video, ...
 Dispositivos de automatización
y control
 sensores, alarmas,
sistemas de adquisición de datos, ...

2
Funciones 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

3
El interfaz de E/S

 Conecta a los dispositivos con el computador


 Interfaz = Controlador = Adaptador = Tarjeta de E/S
5

Ejemplo
8
0

8
0
8
5
8

CPU
Ordenes CPU  Interfaz
Leer N bytes a partir de
Superficie S
Cilindro C
Sector T
CPU INTERFAZ PERIFÉRICO Ordenes Interfaz  periférico
Posicionar cabezales en cilindro C
BUS Conexión
Posicionar cabezales en sector T
Sistema con Seleccionar cabezal de superficie S
o de E/S periféricos Leer N bytes
Retirar cabezales

Funciones del interfaz de E/S


 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

4
Estructura del interfaz de E/S

 La comunicación se realiza a través CPU Bus INTERFAZ PERIFÉRICO


de los registros del interfaz: Sistema
o E/S
Reg. Control CONTROL
 Registro de datos de salida
DIREC.
 Almacena los datos enviados
al periférico Reg. Estado ESTADO

DATOS
Reg. Datos
 Registro de datos de entrada Salida
 Almacena los datos enviados DATOS
CONTROL Reg. Datos
por el periférico
Entrada

 Registro de estado Comunicación


Comunicación
 Proporciona información a la CPU: CPU-Interfaz Interfaz-periférico
 Dispositivo preparado/no preparado
 Reg. datos lleno/vacío
 Transferencia finalizada/no finalizada, etc.
 Registro de control
 Almacena las órdenes de la CPU
 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.
5
Ejemplo de conexión de un interfaz de E/S al
bus
DESCODIFICADOR
INTERFAZ DE LA IMPRESORA
A7  Enviar un carácter almacenado en el
SEL*
LD* registro R1 a la impresora
...

A1 DATOS  MOVE R1, $BD

A0  OUT R1, $BD


 Enviar una orden almacenada en el
ST*
registro R2 a la impresora
RD* ESTADO
 MOVE R2, $BC
 OUT R2,$BC
LD*  Leer estado de la impresora y
WR* CONTROL almacenarlo en el registro R3
BUS  MOVE $BC, R3
DATOS  IN $BC, R3

Dirección Registro Estado/Control: 10111100 ($BC)


Dirección Registro Datos: 10111101 ($BD)

Nota: los registros del interfaz de E/S también se llaman puertos de E/S

6
Ejemplo Placa ARM: temporizadores

 Son contadores descendentes con cierta lógica adicional


 Incluyen 5 registros de control mapeados en memoria que permiten al
procesador:
 Configurar la velocidad a la que cuentan
 Especificar dónde comienza la cuenta
 Si se utilizan para generar una onda cuadrada definir cuando deben
generar salida 0 y cuando 1
 Indicar si deben contar una vez o repetir la cuenta indefinidamente
 Indicar si deben avisar al procesador cada vez que lleguen a cero
 Parar la cuenta
 Reiniciar la cuenta
 Indicar si deben avisar al DMA
 Un registro de salida que permite ver el valor actual de la cuenta
Alternativas de diseño: E/S aislada o
localizada en memoria

E/S aislada
 La E/S y la memoria utilizan un espacio de direcciones distinto
 El conjunto de direcciones de 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
 Ejemplos
 i8086 y demás computadores de la familia intel x86
8
E/S localizada en memoria

 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
 MOVE dir_E/S, Ri (CPU  Periférico)
 MOVE Ri, 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
 ARM
9
Sincronización de la E/S

 Cuando la CPU quiere enviar/recibir datos a/desde un periférico tiene asegurarse de que el
dispositivo está preparado para realizar la transferencia
 Existen dos mecanismos básicos de sincronización de la E/S
 E/S programada con espera de respuesta
 E/S por interrupciones
Leer registro de estado

E/S programada con espera de respuesta Examinar bits de estado

 Cada vez que la CPU quiere realizar una transferencia entra


NO ¿Periférico
en un bucle hasta que éste está preparado para realizar la preparado ?
transferencia

 Problema: ¡Es muy ineficiente! Transferir datos
hacia/desde periférico

SÍ ¿Realizar otra
transferencia?

NO
FIN
10
Problemas de la E/S con espera de respuesta

 La CPU no hace trabajo útil durante el bucle de espera Leer registro de estado

 Con dispositivos lentos el bucle podría repetirse miles/millones de


Examinar bits de estado
veces
 La dinámica del programa se detiene durante la NO ¿Periférico
operación de E/S preparado ?
 Ejemplo: en un vídeo-juego no se puede detener la dinámica del SÍ
juego a espera que el usuario puse una tecla o mueva el jostick Transferir datos
hacia/desde periférico
 Dificultades para atender a varios periféricos
 Mientras se espera a que un periférico esté listo para transmitir, no
SÍ ¿Realizar otra
se puede atender a otro
transferencia?

NO
FIN
Solución: Los periféricos deben poder comunicarse con la CPU

11
E/S por interrupciones

 No existe bucle de espera


 Cuándo la CPU da una orden puede realizar otras tareas mientras 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

MEM

BUS

CPU INTR E/S

12
E/S por interrupciones

 Cuándo la CPU recibe una interrupción puede elegir si quiere atenderla o no en ese
instante
 Para atender una interrupción la CPU ejecuta su 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

Periférico listo para la transmisión 


Activa petición interrupción (INTR)

Programa Programa

La CPU “decide” ha terminado


La CPU “decide” atender de atender la interrupción
la interrupción
Rutina de Tratamiento de Interrupción
(La CPU realiza la operación de E/S)

13
E/S por interrupciones

PROGRAMA RTI
 Analogías entre una subrutina y una RTI
 Se rompe la secuencia normal de ejecución Instrucción 1 Instrucción 1
 Cuando terminan de ejecutarse se debe Instrucción 2 Instrucción 2
retornar al punto de ruptura INTR Instrucción 3 Instrucción 3
 Debemos guardar el PC en Instrucción 4 Instrucción 4
ambos casos Instrucción 5 Instrucción 5
Instrucción 6 ....................
 Diferencias entre una subrutina y una RTI
Instrucción 7 RTE
 En una subrutina el programador sabe en
Instrucción 8
qué punto exacto se rompe la secuencia
Instrucción 9 Instrucción de Retorno
 Una RTI puede ejecutarse en cualquier .................... de Interrupción
momento, sin control del programador
 Necesario guardar el registro de estado 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
14
Secuencia de eventos en el tratamiento de
una interrupción
1 Periférico activa petición 2 CPU termina de ejecutar la instrucción en curso y
interrupción (INTR) comprueba si hay interrupciones pendientes

Programa Programa

3 CPU salva automát. contexto en RTI 6 CPU continúa con la


ejecución del programa
pila (PC y reg. de estado),
deshabilita las interrupciones y
salta a la RTI 5 CPU capacita las interrupciones,
restaura contexto (PC y reg. estado)
4 CPU ejecuta la RTI, durante la cual: y retorna al programa
• Informa al periférico que se ha reconocido su
interrupción (por software o por hardware) Cuestiones planteadas
 El periférico desactiva INTR • ¿Cuándo comprueba la CPU si hay interrupciones pendientes?
• Salva en pila todos los registros de datos y/o • ¿Por qué es necesario deshabilitar las interrupciones?
direcciones utilizados por la RTI (manual) • ¿Cómo se informa al periférico que se ha reconocido su
• Realiza la operación de E/S con el periférico interrupción?
 Identificación de la fuente de interrupción
• Restaura los registros de datos/direcciones
• ¿Qué ocurre si se produce una segunda interrupción durante la
• Ejecuta la instrucción de retorno de
ejecución de la RTI?
interrupción (RTE)
 Interrupciones multinivel y anidamiento de interrupciones
15
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.
 ¿Qué ocurre con los procesadores segmentados?

16
Inhibición o deshabilitación de las
interrupciones

 Antes de saltar a la RTI es necesario inhibir o deshabilitar 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 ha 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)

Petición de interrupción (INTR activada)


Programa Programa

INTR activada RTI


Si no deshabilitamos
saltaría de nuevo

17
Inhibición o deshabilitación de las
interrupciones

 Alternativas
 deshabilitación global
 Se inhiben todas las interrupciones  ningún otro periférico podrá interrumpir durante la
ejecución de la RTI
 deshabilitación o enmascaramiento selectivo
 Cuando hay varios niveles de interrupción se pueden deshabilitar las interrupciones por el nivel
que interrumpe, pero no necesariamente por el resto de niveles
 Véase interrupciones multinivel y anidamiento de interrupciones

Petición de interrupción (INTR activada)


Programa Programa

INTR activada RTI


Si no deshabilitamos
saltaría de nuevo

18
Identificación de la fuente de interrupción

 Normalmente hay más periféricos que líneas de interrupción


 En 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 Vcc

R
INTR INTR
CPU CPU
E/S 1 E/S 2 E/S 3
INTR 1 INTR 2 INTR 3
.....
INTR 1 INTR 2 INTR 3 ..... E/S 1 E/S 2 E/S 3

 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

19
Identificación software por encuesta (polling)

 La RTI examina los registros 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 del 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
RTI

NO SÍ Subrutina
¿Ha interrumpido tratamiento
periférico 1? periférico 1

NO SÍ Subrutina
¿Ha interrumpido tratamiento
periférico 2? periférico 2

NO SÍ Subrutina
¿Ha interrumpido tratamiento
periférico n? periférico n
Mensaje de
ERROR
RTE

20
Identificación software por encuesta (polling)

 Asignación de prioridades
 El método de encuesta introduce un mecanismo
de prioridades software
 En caso de peticiones simultáneas se atiende
por orden de encuesta
RTI
 La RTI se suele diseñar de manera que
se pregunta primero a los dispositivos
NO SÍ Subrutina
más prioritarios ¿Ha interrumpido tratamiento
periférico 1? periférico 1
 Rendimiento
 No es un sistema muy eficiente NO SÍ Subrutina
¿Ha interrumpido tratamiento
 Se desperdicia tiempo periférico 2? periférico 2
consultando a dispositivos
que no han solicitado
servicio Subrutina
NO SÍ
¿Ha interrumpido tratamiento
periférico n? periférico n
Mensaje de
ERROR
RTE

21
Identificación hardware: interrupciones
vectorizadas

 Los periféricos son capaces de identificarse ellos mismos enviando un código (nº
de vector) a la CPU.
 Cuando el periférico recibe una señal de 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 la CPU calcula la dirección de comienzo de la RTI

Bus Datos
INTR
INTA
CPU E/S 1 E/S 2 E/S 3 .....

22
Identificación hardware: 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

Bus Datos
INTR
INTA
CPU E/S 1 E/S 2 E/S 3 .....

23
Identificación hardware: interrupciones
vectorizadas

 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 una estrategia mixta
 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

24
Sistemas con varios niveles 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:
 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

Menor
prioridad INTR0 Código de la línea
Codificador de

INTR1 • más prioritaria


prioridades


• (k bits, siendo n = 2k)

Mayor • INTR Se activa si alguna
prioridad INTRn-1 entrada está activada

25
Sistemas con varios niveles de
interrupciones

 Enmascaramiento selectivo:
 Los sistemas de interrupciones multinivel permiten enmascarar o deshabilitar
selectivamente las interrupciones por determinados niveles
 Para ello se utiliza un registro de máscara
Si bk = 1  Nivel INTRk habilitado
 1 bit de máscara bk por nivel Si bk = 0  Nivel INTRk deshabilitado o enmascarado

INTR0 Código de la línea


Codificador de
prioridades
• más prioritaria
INTR1 •
• no enmascarada

• INTR Se activa si alguna
INTRn-1 entrada está activada

b0 b1 ··· bn-1 Registro de máscara

26
Sistemas con varios niveles de
interrupciones

 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

INTR0 Código de la línea


Codificador de
prioridades •
INTR1 • más prioritaria
• no enmascarada

• INTR Se activa si alguna
INTRn-1 entrada está activada

b0 b1 ··· bn-1 Registro de máscara

27
3. Ejemplo de anidamiento de interrupciones
INTR0
Sistema con 3 niveles de interrupción: INTR1 (INTR0 < INTR1 < INTR2)
INTR2
Registro de estado
SR: b2 b1 b0 Si bk = 1  Nivel INTRk capacitado
Bits de máscara
Si bk = 0  Nivel INTRk enmascarado

Supongamos que se producen 3 peticiones de interrupción en el orden INTR1 - INTR0 - INTR2


Prog. Principal RTI Nivel 1 RTI Nivel 2
INTR0
dir1 INTR2 dir2
INTR1
q
n RTE
RTI Nivel 0 q+1
n+1
dir0
RTE

RTE

Evolución de PC, SR y Pila SE ATIENDE


FIN INTR0
LLEGA INTR1 LLEGA INTR0 LLEGA INTR2 FIN INTR2 FIN INTR1 INTR0
Pila SP Pila Pila Pila Pila Pila
PC (q+1)
SP SR (100) SP SP
PC (n+1) (No hay PC (n+1) PC (n+1) PC (n+1)
SR (111) alteración) SR (111) SR (111) SR (111)
SP SP
PC dir1 PC dir2 PC q+1 PC n+1 PC dir0 PC n+1
SR 100 SR 000 SR 100 SR 111 SR 110 SR 111

28
Interrupciones 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
 Los autovectores se utilizan para periféricos que no son capaces de generar su propio nº de vector
 El autovector activara una RTI por defecto
 La RTI por defecto utilizará un mecanismo de encuesta para identificar al periférico que interrumpió

INTR0  autovector $00000010


Ejemplo
INTR1  autovector $00000014
Computador con 4 niveles de interrupción:
INTR2  autovector $00000018
(direcciones de 32 bits)
INTR3  autovector $0000001C
MEMORIA


$00000010 dir. Inicio RTI Nivel 0
$00000014 dir. Inicio RTI Nivel 1
$00000018 dir. Inicio RTI Nivel 2
$0000001C dir. Inicio RTI Nivel 3

29
Recordatorio:: excepciones en ARM
Recordatorio

 Los procesadores ARM tienen 7 modos de operación:


 User (usr): estado normal de ejecución
 FIQ : manejo de interrupciones rápidas para transferencias de
datos
 IRQ : manejo de interrupciones de propósito general o lentas
 Supervisor (svc): modo protegido para el sistema operativo
 Abort (abt): usado para gestionar las fallos de acceso a memoria
(prefetching o accesos convencionales)
 Undef (und): manejo de excepciones por códigos de operación no
definidas
 System : modo privilegiado para el sistema operativo, usando los
mismos registros que en el modo usuario
Registros y modos

 El modo en el que se encuentra el procesador


determina los registros accesibles
 En cada modo se puede acceder a:
 Un conjunto particular de registros generales (r0-r12)
 Registros de puntero de pila (r13) y enlace (r14) particulares
 El contador de programa (r15)
 El registro de estado actual del programa (cpsr)
 En los modos privilegiados (excepto system) se puede
acceder también a:
 Un registro especial que almacena el estado del programa
(spsr): permite guardar el estado sin tener que apilarlo
Registros y modos
User FIQ IRQ SVC Undef Abort
r0
r1
User
r2
mode
r3 r0-r7,
r4 r15, User User User User
repertorio
and mode mode mode mode Thumb
r5
cpsr
r6
r0-r12, r0-r12, r0-r12, r0-r12, Registros
r15, r15, r15, r15, inferiores
r7 and and and and
r8 r8 cpsr cpsr cpsr cpsr
r9 r9 repertorio Thumb
r10 r10 Registros
r11 r11 superiores
r12 r12
r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp)
r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr)
r15 (pc)

cpsr
spsr spsr spsr spsr spsr
Registro de estado
31 28 27 24 23 16 15 8 7 6 5 4 0

N Z C V Q J U n d e f i n e d I F T mode
f s x c

 Códigos de condición  Bits de habilitación de


 N = resultado de la ALU negativo interrupciones
(C2)  I = 1: Deshabilita IRQ.
 Z = resultado de la ALU cero  F = 1: Deshabilita FIQ.
 C = operación de ALU produce  T Bit
acarreo
 Sólo para arquitecturas -T
 V = operación de ALU desborda (C2)
 T = 0: repertorio ARM
 QyJ
 T = 1: repertorio Thumb
 Sólo para la arquitectura 5TE/J
 Bits de modo
 Especifican el modo del procesador
Gestión de excepciones

 Cuando se produce una excepción


de forma automática:
 Se copia el CPSR en SPSR_<modo>
 Se modifican los bits adecuados del
CPSR 0x1C FIQ
 Cambio a repertorio ARM 0x18 IRQ
 Actualizar el registro de estado con la 0x14 (Reserved)
excepción correspondiente 0x10 Data Abort
 Deshabilitar interrupciones (si procede) 0x0C Prefetch Abort
 Se guarda la dirección de retorno en 0x08 Software Interrupt

LR_<modo> 0x04 Undefined Instruction


0x00 Reset
 Se actualiza el PC con el vector
correspondiente Tabla de Vectores
Gestión de excepciones

 Además se debe actualizar la dirección de retorno:


 Restar 4 a LR en el caso de las interrupciones
 Guardar en pila los registros compartidos que se
vayan a modificar.
 ¿hay que guardar LR en pila?
 Para volver, la rutina de tratamiento de excepción
tiene que:
 Restaurar los registros
 Restaurar el CPSR a partir del SPSR_<modo>
 Restaurar el PC a partir del LR_<modo>
 Se puede hacer con una única instrucción de store múltiple
Marco de pila de una rutina

■ Estructura de una rutina:

Construye el marco
Código de entrada (prólogo)
Cuerpo de la rutina
Código de salida (epílogo)
Destruye el marco y
hace el retorno
Marco de pila de una rutina

■ Estructura de una rutina:


■ Prólogo
MOV IP, SP
STMDB SP!, {r4-r10,FP,IP,LR,PC}
SUB FP, IP, #4
SUB SP, #SpaceForLocalVaribles

■ Epílogo:

LDMDB FP, {r4-r10,FP,SP,PC}

¿Qué hay que añadir en el caso de una interrupción?


Gestión de las interrupciones en nuestra placa
de laboratorio:

System-on-Chip S3C44B0X
• Procesador: ARM7TDMI
• Controladores E/S
• Buses
• Comunicación directa con el
PC a través del puerto JTAG
• Temporizadores
• Controlador de
interrupciones
• y muchas otras cosas…
Controlador de interrupciones del S3C44B0X

 Permite ampliar el nº de líneas de petición de


interrupción del ARM7TDMI
 30 posibles fuentes de interrupción usando 26 líneas
(algunas fuentes comparten línea)
 Añade soporte de interrupciones vectorizadas (¡Solo
para aquellas fuentes que usan IRQ!)
 Implementado mediante 5 controladores
encadenados (1 master + 4 slaves)
Controlador de interrupciones

 26 líneas de interrupción
 1 maestro + 4 esclavos
 Configurable:
 Modo IRQ/FIQ
 Int. vectorizadas (¡sólo IRQ!)
 Prioridades (¡sólo int. vect.!):
 Orden (fijo/programable)
 Modo (fijo/round-robin)
Funcionamiento interrupciones vectorizadas
vectorizadas::

 Cuando el ARM intenta leer la instrucción en la dir.


0x18 (vector IRQ)
 El controlador actúa sobre el bus de datos e inserta
una instrucción de salto al vector correspondiente a la
línea más prioritaria activa
 EINT0 (0x20)
 EINT1 (0x24)
 …
 EINT4/5/6/7 (0x30)
 …
 INT_ADC (0xc0)
Controlador de interrupciones

 Código de ejemplo para int. vectorizadas:



b HandlerIRQ ; 0x18
b HandlerFIQ ; 0x1c
ldr pc,=HandlerEINT0 ; 0x20
ldr pc,=HandlerEINT1 ; 0x24
ldr pc,=HandlerEINT2 ; 0x28
ldr pc,=HandlerEINT3 ; 0x2c
ldr pc,=HandlerEINT4567 ; 0x30

Controlador de interrupciones

 Registros de configuración
 INTCON (Interrupt Control Register), 3 bits
 V (bit [2]) = 0, habilita las interrupciones vectorizadas
 I (bit [1]) = 0, habilita la línea IRQ
 F (bit [1]) = 0, habilita la línea FIQ
 INTMOD (Interrupt Mode Register), 1 bit por línea
 0 = modo IRQ; 1 = modo FIQ
Controlador de interrupciones

 Registros de gestión
 INTPND (Interrupt Pending Register), 1 bit por línea
 0 = no hay solicitud; 1 = hay una solicitud
 INTMSK (Interrupt Mask Register), 1 bit por línea
 0 = int. disponible; 1 = int. enmascarada
 I_ISPC (IRQ Int. Service Pending Clear register), 1 bit
por línea
 1 = borra el bit correspondiente del INTPND e indica al
controlador el final de la rutina de servicio (¡FIN RUTINA
SERVICIO!)
 F_ISPC (FIQ Int. Service pending Clear register), 1 bit
por línea
 Idem
Controlador de interrupciones

 Registros de gestión para int. vectorizadas:


 I_ISPR (IRQ Int. Service Pending Register), 1 bit por
línea
 Indica la interrupción que se está sirviendo actualmente
 Sólo el bit de la línea más prioritaria puede estar a 1 (≠INTPND)
4. DMA: Necesidad de acceso directo a
memoria
 La E/S con espera de respuesta o por interrupciones resulta inadecuada para periféricos de
alta velocidad, sobre todo si hay que transferir una gran cantidad de datos
 Ejemplo periférico lento
 Procesador a 200 MHz (tiempo ciclo = 5 ns.; Ciclo medio por instrucción: CPI = 2 ciclos
 Una instrucción tarda en promedio 2 x 5 ns = 10 ns  el computador puede ejecutar ~100 MIPS
 Queremos imprimir un fichero de 10 Kbytes en una impresora láser de 20 páginas por minuto
 1 página  3.000 caracteres (1 carácter = 1 byte)
 La impresora imprime 60.000 caracteres por minuto = 1 Kbyte/s
a) E/S con espera de respuesta
 La CPU entra en un bucle y envía un nuevo byte cada vez que la impresora está preparado para recibirlo
 La impresora tarda 10 s en imprimir 10 Kbyte
 La CPU está ocupada con la operación de E/S durante 10 s
(en ese tiempo la CPU podría haber ejecutado 1000 millones de instrucciones)
b) E/S por interrupciones
 La impresora genera una interrupción cada vez que está preparada para recibir un nuevo byte
 Suponemos que la RTI tiene 10 instrucciones (salvar contexto, comprobar estado, transferir byte, restaurar contexto, RTE)
 Para transferir 10 Kbyte tenemos que ejecutar 10.000 veces la RTI
 hay ejecutar 100.000 instrucciones para atender al periférico  la CPU tarda 0,001 s
 La CPU está ocupada con la operación de E/S durante 0,001 s
CONCLUSIÓN
 La E/S por interrupciones reduce en 10.000 veces el tiempo que la CPU está ocupada gestionando la impresora

46
Necesidad de DMA
 Ejemplo periférico rápido
 Procesador a 200 MHz (tiempo ciclo = 5 ns.; Ciclo medio por instrucción: CPI = 2 ciclos
 Una instrucción tarda en promedio 2 x 5 ns = 10 ns  el computador puede ejecutar ~100 MIPS
 Disco con velocidad de transferencia de 10 Mbytes/s (1 byte cada 2*10-7 seg)
 Queremos transferir un fichero de memoria a disco de 10 Mbytes
a) E/S con espera de respuesta
 La CPU entra en un bucle y envía un nuevo byte cada vez que el disco está preparado para recibirlo
 El disco tarda 1 seg en recibir un fichero de 10 Mbyte
 La CPU está ocupada con la operación de E/S durante 1 s
(en ese tiempo la CPU podría haber ejecutado 200 millones de instrucciones)
b) E/S por interrupciones
 El disco genera una interrupción cada vez que está preparado para recibir un nuevo byte
 Suponemos que la RTI tiene 10 instrucciones (salvar contexto, comprobar estado, transferir byte, restaurar contexto, RTE)
 Para transferir 10 Mbytes tenemos que ejecutar 107 veces la RTI
 hay ejecutar 100 millones de instrucciones para atender al periférico  la CPU tarda 1 s
 La CPU está ocupada con la operación de E/S durante 1 s
CONCLUSIÓN
 La E/S por interrupciones no mejora el tiempo que la CPU está ocupada en atender al periférico

La técnica de DMA permite la transferencia de datos entre un periférico y la memoria


sin intervención de la CPU (salvo en la fase de inicialización de los parámetros de la transferencia)

47
El controlador de DMA (DMAC)
 El controlador de DMA es un dispositivo capaz de controlar una transferencia de datos entre un periférico
y memoria sin intervención de la CPU

CPU Memoria DMAC E/S

Bus Datos

Bus Direcciones

Bus Control

 El DMAC debe actuar como máster del bus durante la transferencia DMA y debe ser capaz de
 Solicitar el uso del bus mediante las señales y la lógica de arbitraje necesarias
 Especificar la dirección de memoria sobre la que se realiza la transferencia
 Generar las señales de control del bus
 Tipo de operación (lectura/escritura)
 Señales de sincronización de la transferencia

48
Etapas de una transferencia DMA

 Inicialización de la transferencia
 La CPU debe enviar al interfaz del periférico y al DMAC los parámetros de la transferencia
Inicialización del interfaz (Bus master: CPU - Bus slave: Interfaz )
 Nº de bytes a transferir
 Tipo de transferencia (lectura/escritura)
 Otra información de control (pista, sector, etc.)
Inicialización del controlador DMA (Bus master: CPU - Bus slave: DMAC)
 Nº de bytes o palabras a transferir
 Tipo de transferencia (lectura/escritura)
 Dirección de memoria inicial para la transferencia
 Nº de canal (para DMAs con varios canales)
 Después de la inicialización la CPU retorna a sus tareas y ya no se preocupa más de la evolución de la transferencia
 Realización de la transferencia
 Cuando el periférico está listo para realizar la transferencia se lo indica al DMAC
 El DMAC pide el control del bus y se realiza la transferencia entre el periférico y la memoria
 Bus máster: DMAC + Periférico - Bus slave: Memoria
 Después de la transferencia de cada palabra se actualizan los registros del DMA
 Nº de bytes o palabras a transferir
 Dirección de memoria
 Finalización de la transferencia
 El DMAC libera el bus y devuelve el control a la CPU
 El DMAC suele activar una señal de interrupción para indicar a la CPU la finalización de la
operación de E/S solicitada
49
Transferencias DMA
 Transferencia DMA modo ráfaga
 El DMAC solicita el control del bus a la CPU
 Cuando la CPU concede el bus el DMAC no lo libera hasta haber finalizado la transferencia de todo
el bloque de datos completo
 VENTAJAS:
 La transferencia se realiza de forma rápida
 DESVENTAJAS:
 Durante el tiempo que dura la transferencia la CPU no puede utilizar el bus con memoria, lo que puede
degradar el rendimiento del sistema
 Transferencia DMA modo robo de ciclo
 El DMAC solicita el control del bus a la CPU
 Cuando la CPU concede el bus al DMAC, se realiza la transferencia de una única palabra y
después el DMAC libera el bus
 El DMAC vuelve a solicitar el control del bus tantas veces como sea necesario hasta haber
finalizado la transferencia del bloque completo
 La CPU cede el control del bus durante los ciclos que hace uso del mismo
 VENTAJAS:
 No se degrada el rendimiento del sistema
 DESVENTAJAS:
 La transferencia tarda más tiempo en llevarse a cabo

50
Estructura hardware de un DMAC

CPU Datos Bus datos

Direcciones Bus direcc.


INTR*
Sincroniz.
Bus control
Arbitraje
R/W*

DMAC
Reg. dir. memoria
Lógica de E/S Memoria
descodific. Reg. Nº palabras
y control

DMA-REQ
DMA-ACK
R/W*-IO
Reg. sentido

Registros del DMAC


 Reg. dir. memoria: almacena la dir. inicial de memoria y se incrementa/decrementa después de transferir cada palabra
 Reg. Nº palabras: almacena el número de palabras a transferir y se decrementa después de transferir cada palabra
 Reg. sentido: almacena el sentido de la transferencia (lectura o escritura)

51
Controlador DMA de varios canales

CPU Datos Bus datos

Direcciones
Bus direcc.
INTR*
Sincroniz.
Arbitraje Bus control
R/W*

DMAC INTERFAZ BUS INTERNO


Lógica de descodific. y control

Memoria
CANAL 0 CANAL n
Reg. dir. Mem. Reg. dir. Mem.

 Permiten conectar más de un Reg. Nº pal. ··· Reg. Nº pal.


periférico al DMAC
Reg. sentido Reg. sentido
 Cada canal controla las
DMA-REQ

DMA-REQ
DMA-ACK

DMA-ACK
R/W*-IO

R/W*-IO
transferencias de un único
dispositivo

E/S 0 ··· E/S n

52
Conclusiones

 Los procesadores deben interactuar con todo tipo de


dispositivos
 Estos dispositivos suelen incluir un interfaz para facilitar
las comunicaciones
 Las interrupciones son la clave para una E/S eficiente
 Debido al gran número de fuentes de interrupción
muchos sistemas incluyen un controlador de
interrupciones
 Las transferencias de datos son claves para el
rendimiento de un sistema:
 Los DMAs permiten descargar al procesador

También podría gustarte