Você está na página 1de 49

SUBSISTEMA DE ENTRADA-SALIDA

Arquitectura de Computadores I 4 tema

Descripcin de la interfaz de E/S


Objetivo
- Cmo se comunica la CPU con el exterior (perifricos de E/S) - Cmo se controla esta comunicacin.

Perifricos
- Presentacin de datos (pantalla, impresora,...) - Adquisicin de datos (teclado, sensores,...) - Soportes de informacin (discos, cintas,...) - Otros (motores, vlvulas,...)

Conexin (bus nico, dos buses)


Subsistema de Entrada-Salida (ACI) 2

Esquema de la interfaz de E/S


datos @ control

CPU

MEM

Kp

Perifrico

Subsistema de Entrada-Salida (ACI)

Controlador
Justificacin
gran variedad de perifricos con diferentes conexiones fsicas a los buses y controlados de forma muy diferente electrnicamente.

Controlador
Dispositivo electrnico que se interpone entre los buses del sistema y el perifrico y que es visible a nivel de LM como un conjunto de registros. El controlador descarga a la CPU del control directo del dispositivo La CPU se comunica con los perifricos a travs de los registros del controlador.
Subsistema de Entrada-Salida (ACI) 4

Clasificacin de los controladores de E/S


No multiplexado
Slo controla 1 perifrico: perifricos rpidos

Multiplexado
Controla varios perifricos Multiplexado por caracteres: perifricos lentos Multiplexado por bloques: perifricos de velocidad intermedia

Subsistema de Entrada-Salida (ACI)

Clasificacin de los controladores de E/S


buses CPU MEM Kp P buses CPU MEM P1 K P2

No Multiplexado

Multiplexado
P3
6

Subsistema de Entrada-Salida (ACI)

Funciones del controlador de E/S


Dilogo con la CPU
Recibe peticiones para realizar operaciones de E/S Avisa acerca del estado de los perifricos

Control del perifrico


Controla que el perifrico realice la operacin indicada por la CPU

Facilitar la transferencia con el perifrico

Subsistema de Entrada-Salida (ACI)

Visin funcional del controlador de E/S


MEMORIA

datos
DATOS

CPU

@
ESTADO

Interfaz con el perifrico

Interfaz Interfaz con el con el controlador exterior

control

CONTROL

invisible a L.M.

controlador
Subsistema de Entrada-Salida (ACI)

perifrico
8

Registros del controlador de E/S


Registro de Estado
Informacin de estado: se ha pulsado una tecla, se ha terminado la escritura en disco, etc. Informacin leda por la CPU

Registro de control
Informacin de control: la operacin a realizar (r/w), la forma de trabajar del perifrico, etc. Informacin escrita por la CPU

Registro de datos
Informacin a transferir entre el perifrico y la CPU
Subsistema de Entrada-Salida (ACI) 9

Esquema de la interfaz de E/S


datos @ control

CPU

MEM

Kp

Perifrico

Cmo se accede a los registros del controlador? E/S mapeada en memoria E/S no mapeada en memoria
Subsistema de Entrada-Salida (ACI) 10

Mapa de memoria E/S mapeada en memoria


Mapa de memoria
FFFFh

E/S
C000h BFFFh Registros de E/S

RAM
4000h 3FFFh

32 K

64 K

ROM
0000h

16 K

Subsistema de Entrada-Salida (ACI)

11

Ejemplo de E/S MAPEADA en MEMORIA


RD/WR
16 7 6 5..0 6
16

DATOS
6 1 0 6 1 0 6 1 0

@
16

16

16

CS

RD/WR OE RD/WR [1000001] LD RD/WR [1000011] OE RD/WR [1000010]

RAM
[0xxxxxx]

CS = A 6

datos
OE = A 6 A1 A0

control
LD = A 6 A 1 A 0

estado
OE = A 6 A 1 A 0

RAM

0000000

Reg. datos Reg. control Reg. estado


Subsistema de Entrada-Salida (ACI)

1000001 1000011 1000010


12

E/S mapeada en memoria


Ventajas
Acceso a los registros: mismas instrucciones y modos de direccionamiento que para el acceso a memoria CPU no diferencia el acceso a memoria y a los reg. E/S

Desventajas
Menor espacio direccionable de memoria Dificultad para controlar el acceso a los reg. E/S por parte de los programas de usuario Modo privilegiado (SO) para accesos a E/S
Subsistema de Entrada-Salida (ACI) 13

Mapa de memoria mapa de E/S


MAPA DE MEMORIA FFFFh RAM IO/M=0 ROM 0000h 8000h 7FFFh
Registros E/S

MAPA DE E/S FFh 00h

RAM ROM

IO/M * A15 IO/M * A15

Reg. E/S

IO/M (=1)

Subsistema de Entrada-Salida (ACI)

14

Ejemplo de E/S INDEPENDIENTE o NO MAPEADA en MEMORIA IO/M


RD/WR
16 7 7
16

DATOS
1 0 1 0 1 0

@
16

16

16

CS

@ RD/WR RAM
[xxxxxxx] OE RD/WR [0000001] LD RD/WR [0000011] OE RD/WR [0000010]

datos
OE = IO/M A1 A0

control
LD = IO/M A1 A0

estado
OE = IO/M A1 A0

CS = IO/M

RAM

0000000

Instrucciones in/out

Reg. datos Reg. control Reg. estado

0000001 0000011 0000010


15

Subsistema de Entrada-Salida (ACI)

E/S no mapeada en memoria


Ventajas
No se pierde espacio direccionable de memoria Control del acceso a los registros de E/S por parte de los programas de usuario in y out slo en modo privilegiado (SO)

Desventajas
Necesidad de nuevas instrucciones: in y out Necesidad de una seal de control ms en el bus

Subsistema de Entrada-Salida (ACI)

16

Sincronizacin en las operaciones de E/S


cmo se sincroniza la CPU con los dispositivos de E/S? cmo se detecta que el dispositivo est listo para comenzar la transferencia? 2 alternativas
Sincronizacin por encuesta: la CPU consulta constantemente del registro de estado del controlador Sincronizacin por interrupcin: el propio controlador avisa de su disponibilidad a la CPU mediante una interrupcin

Subsistema de Entrada-Salida (ACI)

17

E/S por encuesta


Consulta continua del registro de estado del controlador encuesta por estado 2 alternativas
Encuesta continua: while (leer_registro_estado==NO_PREPARADO) NOP; realizar_operaciones_E/S; Encuesta peridica: while (leer_registro_estado==NO_PREPARADO) { otras_acciones; } realizar_operaciones_E/S;
Subsistema de Entrada-Salida (ACI) 18

E/S por interrupciones


Interrupcin: suceso extraordinario que requiere una atencin especial por parte del procesador Son sucesos asncronos: el controlador interrumpe a la CPU cuando est listo para iniciar la transferencia Ventaja:
La CPU no pierde tiempo realizando la encuesta y puede realizar otras tareas

Desventajas:
Se complica el hardware (mecanismo de ejecucin de las instrucciones)

Subsistema de Entrada-Salida (ACI)

19

E/S por interrupciones: fases


Deteccin de la peticin de interrupcin Salvar el estado del programa interrumpido Identificar la rutina de atencin a la interrupcin que hay que ejecutar (dependiente del dispositivo) Ejecutar la rutina de atencin correspondiente Rutina asncrona: no activada por el programa principal Recuperar el estado (la ejecucin) del programa interrumpido

Subsistema de Entrada-Salida (ACI)

20

E/S por interrupciones


Aplicacin

INT

Buses (@, DATOS, CONTROL)

. . . . . . . . .

INT
Rutina de servicio CPU Kp PC Aplicacin

Per.

Rutina de servicio MEMORIA

Retorno de la Subsistema de Entrada-Salida (ACI) interrupcin

21

Deteccin de la interrupcin
La CPU dispone de una o varias lneas a travs de las que los dispositivos pueden interrumpir a la CPU INT: seal de entrada a la unidad de control La CPU muestrea el valor de la seal de peticin de interrupcin
En alguna de las fases de ejecucin de la instruccin

Flag de interrupcin (Interrupt Flag, IF):


IF = 0 IF = 1 NMI)
Subsistema de Entrada-Salida (ACI) 22

interrupciones inhibidas/enmascaradas (CLI en 80x86) interrupciones permitidas (STI en 80x86)

Interrupciones no enmascarables (Non Maskable Interrupt,

Deteccin de interrupciones
IF

K1 K2

I nt1 I nt2

PSW INT INT

*
U.C.

Kn

I nt n

CPU

Flag de interrupcin (IF):


Cuando la CPU atiende una interrupcin, pone IF = 0 Cuando finaliza el tratamiento de la interrupcin pone IF = 1 interrupciones uninivel
Subsistema de Entrada-Salida (ACI) 23

Deteccin y enmascaramiento de interrupciones


Mscara
IF

PSW INT * U.C. INT 1 INT 2

K1 K2

Kn

INT n CPU

Subsistema de Entrada-Salida (ACI)

24

Salvar el estado del programa


La CPU interrumpe la ejecucin del programa en el momento de tratar la interrupcin y reanuda su ejecucin tras el tratamiento de la interrupcin Hay que salvar informacin de contexto del programa interrumpido
El PC de retorno PC de la siguiente instruccin en ejecucin La palabra de estado, PSW flags, etc.

La rutina de interrupcin salva los registros que utilice Dnde se salva esta informacin? PILA
Subsistema de Entrada-Salida (ACI) 25

Identificacin de la interrupcin
problemas
Cmo determinar quin ha interrumpido? Si varios han interrumpido por la misma lnea INT, a quin se atiende?

alternativas
Identificacin software (por ejemplo, MC68000) Identificacin hardware

Subsistema de Entrada-Salida (ACI)

26

Identificacin software
Tras la deteccin de la seal INT y si IF=1, la CPU ejecuta una rutina de atencin general que determina mediante encuesta qu dispositivo ha interrumpido
for (i=0;i<n;i++) if (leer_reg_estado (Ki) == PREPARADO) { rut_atencion_Ri(); break; }

Una vez determinado el perifrico, se ejecuta la rutina de atencin correspondiente a ese perifrico Interrupciones simultneas? El orden en que se realiza la encuesta determina la prioridad entre los dispositivos
Subsistema de Entrada-Salida (ACI) 27

Identificacin hardware
El propio dispositivo es quien se identifica El controlador enva a la CPU (tres opciones):
la propia direccin de la rutina de atencin, o bien el cdigo de una instruccin (salto) que ser ejecutada por la CPU para lanzar la ejecucin de la rutina de atencin, o bien un identificador que es usado por la CPU para acceder a una tabla (vector de interrupcin) donde se encuentra la direccin de la rutina a ejecutar interrupcin vectorizada (i80x86)

La CPU acepta la peticin de interrupcin por medio de una seal INTA hacia el controlador del perifrico
Subsistema de Entrada-Salida (ACI) 28

Identificacin hardware
Bus (@, Dat, Control) INTA

INT
INT1 INT2 INTn

CPU

Controlador 1

Controlador 2

Controlador n

Subsistema de Entrada-Salida (ACI)

29

Interrupciones simultneas
Si varios perifricos han interrumpido por la misma lnea INT, a quin se atiende? Alternativas
1. Codificador con prioridad: + un codificador proporciona, adems de la seal INT, el cdigo del perifrico con mayor prioridad + un decodificador utiliza este cdigo para llevar la seal INTA de la CPU al controlador correspondiente

Subsistema de Entrada-Salida (ACI)

30

Identificacin de interrupciones simultneas: Codificador con prioridad


Bus (@, Dat, Control)
INT 1

INT

Controlador 1 Controlador 2

INT 2 INT n

Codificador con prioridad Cdigo del perifrico

p INTA 1 INTA 2
decodificador

CPU

Controlador n

INTA n

INTA
31

Subsistema de Entrada-Salida (ACI)

Interrupciones simultneas
alternativas
2. Daisy-chain o cadena de margaritas: + la CPU activa la seal INTA + cuando el controlador detecta la seal INTA + si no ha pedido la interrupcin, activa la seal de salida INTA hacia el siguiente controlador (as hasta que la seal llega al controlador que ha pedido la interrupcin) + si ha pedido la interrupcin, no pasa la seal INTA al siguiente controlador y enva a la CPU la informacin necesaria para el tratamiento de la interrupcin + los controladores ms cercanos a la CPU son los ms prioritarios
Subsistema de Entrada-Salida (ACI) 32

Identificacin de interrupciones simultneas: Daisy-Chain o cadena de margaritas


INT

CPU
INTA
Controlador n INTAin Controlador 2 INTAout Controlador 1 INTAout INTAin

Bus (@, Dat, Control)

Subsistema de Entrada-Salida (ACI)

33

Interrupciones multinivel
La CPU puede ser interrumpida mientras est ejecutando otra rutina de atencin a una interrupcin previa
+ se pospone la ejecucin de la rutina de interrupcin actual y se atiende la nueva interrupcin + IF no se desactiva por defecto al tratar una interrupcin

Prioridades decrecientes:
+ se atiende la interrupcin de un perifrico de prioridad n si estn permitidas y si en ese momento se est ejecutando una rutina de atencin a una interrupcin menos prioritaria

Subsistema de Entrada-Salida (ACI)

34

Interrupciones multinivel
Aplicacin

INTx

. . . . . . . . .

Rutina de servicio x

INTy
Rutina de servicio y

Retorno de la interrupcin x

Retorno de la interrupcin y
Subsistema de Entrada-Salida (ACI) 35

Interrupciones multinivel: Codificador con prioridad


Nivel de prioridad IF
PSW

INT*

Controlador 1

Codificador con prioridad

B Comparador A

A>B

Controlador 2

Cdigo del perifrico

CPU

decodificador

Controlador n BUS (@, Datos, Control)


Subsistema de Entrada-Salida (ACI)

INTA

36

Interrupciones multinivel: Daisy-Chain o cadena de margaritas


+ Ki desactiva la seal S (S=0) para no permitir interrupciones multinivel a los perifricos con menor prioridad a Ki + Ki activa S (S=1) tras finalizar el tratamiento de su interrupcin
INT

CPU
S INT S INT INTA in INTAout Controlador 1 S INTAin

INTA

Controlador n

Controlador 2

Bus (@, Datos, Control)


Subsistema de Entrada-Salida (ACI) 37

Controlador de interrupciones
Circuito intermediario entre la CPU y los controladores de los perifricos de E/S Circuito que resuelve todos los aspectos comentados:
+ gestiona la comunicacin entre la CPU y el controlador del perifrico + determina el perifrico a atender en funcin de prioridades + gestiona las interrupciones multinivel, ...

Por ejemplo, controlador de interrupciones i8259 del i8086

Subsistema de Entrada-Salida (ACI)

38

Entrada/salida por DMA: Direct Memory Access / Acceso Directo a Memoria


Motivacin:
+ transferencia de gran volumen de datos desde un dispositivo (por ejemplo, disquete) a posiciones consecutivas de memoria + sin DMA, la CPU se vera constantemente interrumpida (por ejemplo, por cada carcter a transferir desde el disco)

Solucin: controlador de DMA


+ Circuito especializado que descarga a la CPU de un trabajo simple, repetitivo y frecuente + Circuito capaz de acceder directamente a memoria sin usar los registros generales del procesador
Subsistema de Entrada-Salida (ACI) 39

@ DAT CONT

Entrada/salida por DMA


SIN DMA

A Kp CPU M

Perifrico

@ DAT CONT

A KDMA CPU M Kp

CON DMA
Perifrico

Subsistema de Entrada-Salida (ACI)

40

Memoria

Entrada/salida por DMA


Memoria Multipuerto
K3

K1

K2 CPU KDMA

P1

P2

P3

Sincronizacin entre la CPU y el KDMA en el uso del bus

K1 CPU M P1

K2

K3 KDMA

P2

P3

Memoria con un solo puerto


Subsistema de Entrada-Salida (ACI) 41

Controlador de DMA
Registro de direccin: direccin de lectura/escritura de la
informacin a transferir

Registro de longitud: contador con el nmero de datos que


faltan por transferir

Registro de control: informacin de control (lectura/escritura,


modo de sincronizacin al finalizar, etc.)

Registro de estado: funcin de un registro de estado de


cualquier otro controlador (por ejemplo, control de errores)

Subsistema de Entrada-Salida (ACI)

42

Controlador de DMA
Sincronizacin bus Seal al CI
BR Bus
Request

KDMA
DIRECCIN DMAR LONGITUD CONTROL

BR BG

DMAG

IRQ

ESTADO

Sincronizacin perifrico

Peticin de utilizacin del BUS Concesin del BUS Peticin de Interrupcin


DMAR Direct Memory Access Request DMAG Direct Memory AccessGrant
Subsistema de Entrada-Salida (ACI)

BG Bus Grant IRQ Interruption ReQuest

Peticin de Acceso directo a memoria. Concesin de Acceso directo a memoria


43

Entrada/salida por DMA: funcionamiento


Aplicacin (CPU): programa perifrico y su controlador
de DMA (@, nmero de datos, lectura/escritura)

Perifrico: cada vez que est listo para enviar/recibir un


dato, avisa al KDMA

KDMA: sincroniza con la CPU el uso del bus y realiza la


transferencia del dato Al finalizar la transferencia de todos los datos, KDMA se sincroniza con la CPU: encuesta o interrupcin slo se interrumpe a la CPU al final de la E/S

Subsistema de Entrada-Salida (ACI)

44

Entrada/salida por DMA


@ DAT CONT

BR M CPU BG KDMA

DMAR KPER DMAG

INTR

INTA Perif. C.I. IRQ

Subsistema de Entrada-Salida (ACI)

45

Entrada/salida por DMA: fases


1.-Iniciar la transferencia (CPU)
Programar el KDMA
Direccin Longitud Sentido de la operacin:

Perifrico Memoria

Memoria Perifrico

Interrumpir o no al finalizar Otras seales (incrementar/decrementar)

Programar el Kper (controlador del perifrico)

Subsistema de Entrada-Salida (ACI)

46

Entrada/salida por DMA: fases


2.-Transferencia propia (KDMA) [CPU

otras tareas]

Kper DMAR (Peticin de DMA) KDMA BR (Peticin del uso de los buses) CPU BG (Concesin del uso de los buses) KDMA realiza la transferencia del dato/datos
Direccin en el bus de direcciones Activa la seal (R/W) Activa DMAG Kper acta sobre el bus de datos

Kper desactiva DMAR DMA desactiva BR


Subsistema de Entrada-Salida (ACI) 47

Entrada/salida por DMA


Transferencia por robo de ciclo
+ KDMA roba de vez en cuando un ciclo a la CPU para acceder a memoria + se degrada el rendimiento de la CPU si la velocidad del perifrico es alta

Transferencia por rfagas o bloques


+ cuando KDMA recibe la seal BG, no abandona el control del bus hasta que se complete la transferencia de todo el bloque + modo adecuado para dispositivos rpidos
Subsistema de Entrada-Salida (ACI) 48

Entrada/salida por DMA


3.-Finalizar la transferencia
Sincronizacin KDMA CPU para indicar el fin de la E/S Por encuesta continua: la CPU consulta el registro de estado del KDMA poco interesante!!!! Por interrupciones: KDMA interrumpe a la CPU Leer registro de estado del KDMA Si (no ha ido bien) programar de nuevo el KDMA programar de nuevo el Kper sino ...............
Subsistema de Entrada-Salida (ACI) 49

Você também pode gostar