Tema 14 Entrada Salida
Tema 14 Entrada Salida
Tema 14 Entrada Salida
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
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
4
Estructura del interfaz de E/S
DATOS
Reg. Datos
Registro de datos de entrada Salida
Almacena los datos enviados DATOS
CONTROL Reg. Datos
por el periférico
Entrada
Nota: los registros del interfaz de E/S también se llaman puertos de E/S
6
Ejemplo Placa ARM: temporizadores
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
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
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
NO
FIN
Solución: Los periféricos deben poder comunicarse con la CPU
11
E/S por interrupciones
MEM
BUS
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
Programa Programa
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
16
Inhibición o deshabilitación de las
interrupciones
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
18
Identificación de la fuente de interrupción
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
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
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
•
• (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
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
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
RTE
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ó
29
Recordatorio:: excepciones en ARM
Recordatorio
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
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
■ Epílogo:
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
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::
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
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
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
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
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
51
Controlador DMA de varios canales
Direcciones
Bus direcc.
INTR*
Sincroniz.
Arbitraje Bus control
R/W*
Memoria
CANAL 0 CANAL n
Reg. dir. Mem. Reg. dir. Mem.
DMA-REQ
DMA-ACK
DMA-ACK
R/W*-IO
R/W*-IO
transferencias de un único
dispositivo
52
Conclusiones