Está en la página 1de 24

Controlador de E/S

• Interfaz procesador-periférico:
– interfaz funcional:
• oculta particularidades de funcionamiento del periférico con
un conjunto de registros de datos, de estado, y de control
– interfaz eléctrico :
• oculta detalles de conexión eléctrica con el periférico

Interfaz normalizada

CPU

Interfaz específica
Modelo de Programación de la E/S
• Acceso a periféricos a través
del Sistema Operativo:
Detección, Instalación dinámica,
Abstracción (ficheros),
Protección, Rendimiento

• A bajo nivel los periféricos se


ven como un conjunto de
registros especiales
• Recibir/Enviar dato == KBstatus
Leer/Escribir Registro 1
KBdata
• Enviar Orden == Escribir Reg. 00001101
• Preguntar Estado == Leer Reg.
Direccionamiento de los registros de E/S
• E/S mapeada en Memoria (Memory-mapped I/O)
– Lecturas/escrituras con instrucciones de acceso a memoria:
mov dir_mem, port_a
• E/S separada (Isolated I/O)
– Instrucciones diferentes para acceder al espacio de E/S:
out port_a, al
in al, port_a
• Comparación: en un sistema Memory-Mapped I/0 ..
– el control de protección más complejo (basado en la dirección
y no en el tipo de instrucción) pero hay más flexibilidad para
usar modos de direccionamiento
– una parte del espacio de direccionamiento se reserva a E/S en
lugar de RAM/ROM (se dispone de menos memoria física)
E/S Separada o Mapeada en Memoria

• Isolated I/O: los accesos a Memoria o de E/S se distinguen


gracias a un señal IO/MEM
• Memory-Mapped I/O: El diseño a nivel físico es más simple,
pues se usan las mismas señales de direcciones, datos y control
para aceder a memoria que para acceder a los registros de E/S
I/O Register Address Decoder

FFFF0000h -
FFFFFFFFh up to 1024, 32-bit
I/O registers
Técnica de E/S Programada
Wait

Transfer

• Sincronización por Encuesta


• Cada Transferencia requiere la
gestión/control de la CPU
E/S programada por Consulta
• El procesador espera en un bucle S/W hasta que el
periférico esté listo para una transferencia

• El periférico indica su disponibilidad en un registro de


estado del controlador

• El procesador ejecuta un conjunto de instrucciones que


mueven un dato entre el dispositivo de E/S y memoria

• Adaptación velocidad procesador a velocidad del


periférico (CPU/periférico =106/1)
Ejemplo: Escritura en Disco

• Características del controlador de disco


• Registro de estado: DIR_STAT
• Registro de datos: DIR_DATA
• Registro de control: DIR_COM

• Sector a transferir
• Dirección inicial de memoria: DIR_BLOQ
• Tamaño: <COUNT>
• Sentido: +
mov al, PISTA
Indicar comando al out DIR_COM, al
controlador de E/S mov al,SECTOR
out DIR_COM,al
mov al, READ
out DIR_COM,al
mov bx,0
mov cx, COUNT

Leer estado del controlador de E/S Espera:in al, DIR_STAT


cmp al, READY
no
Controlador listo?
jeq Espera
si
Mover dato al/del controlador de E/S
in al, DIR_DATA
mov DIR_BLOQ[bx],al
Incrementar dir.mem.
Decrementar cuenta inc bx
dec cx
no
Cuenta = 0? jne Espera
si
Fin
Evaluación de la E/S POR CONSULTA
TRANSMISIÓN DE UN BYTE

#Bytes #Clocks DISPOSITIVO RÁPIDO:


66 Ciclos de reloj
Espera: in al, DIR_STAT 2 10
cmp al, READY 2 4 DISPOSITIVO LENTO:
jeq Espera 2 16/4
(30*M+48) Ciclos de reloj
in al, DIR_DATA 2 10 M: número de TESTS realizados
mov DIR_BLOQ[bx ],al 4 9+EA(9)

inc bx 1 2
TRANSMISIÓN DE N BYTES
dec cx 1 2
DISPOSITIVO RÁPIDO:
jne Espera 2 16/4
66*N Ciclos de reloj
TOTAL= 16 78/66
DISPOSITIVO LENTO:
(30*M+48) * N Ciclos de reloj
Evaluación de la E/S POR CONSULTA

N = 512 BYTES
M= 50
1 CLK= 100 ns (10 Mhz)

DISPOSITIVO LENTO
TOTAL= (30*M+48) * N = 79,25 ms  6,46 Kbytes/s

DISPOSITIVO RÁPIDO
TOTAL= 66 * N = 3,37 ms  151,9 Kbytes/s
HC12 (Versión: MC9S12E128)
• Mapa de Memoria y E/S Común
– Registros E/S: $0000 - $03FF
• Sin instrucciones explícitas E/S:
– Cualquier instrucción de acceso a memoria sirve!
• Instrucción especial para sincronización E/S:
– Leer de memoria - comparar ciertos bits - saltar según el
resultado de la comparación
• Integra varios módulos
de E/S en el chip
• La placa del
entrenador integra
leds, pulsadores y
potenciómetro
HC12: Puertos Paralelos de E/S
HC12. Ejemplo: uso puertos paralelos
PORTA: EQU $00 Programar Port A:
DDRA : EQU $02 bits 0-3 de entrada
...
bits 4-7 de salida
ldaa
staa
#$F0
DDRA
HC12
...
Sincronización PA5 PA0
Loop: con el bit 0
brclr #$01,PORTA,Loop
ldaa PORTA (pulsador de
oraa #$20 entrada)
staa PORTA

Escritura en el bit 5
de un ‘1’ vss
(led de salida)
HC12: mapa de Memoria

Ciertos
Registros
de E/S
permiten
modificar el
mapa de
memoria
DataSheet: HC12 (MC9S12E128)
DataSheet: HC12 (MC9S12E128)
HC12: Timer Functions
• Necesario para el control
de ciertos dispositivos
(ABS de automóviles)
• Temporizador básico de
16 bits (programable),
escalable mediante un
valor de 7 bits.
• Generación y medida de
señales ondulatorias
• Captura y
contabilización de
eventos (Input Capture)
Ejemplo: HC11 (MC68HC711E9)
Ejemplo: Pentium
• Proporciona 64 KB de direccionamiento para E/S
– Se pueden usar puertos E/S de 8-, 16-, y 32-bits (Los puertos de 16 y 32
bits deben estar alineados con direcciones múltiplo de 2 o de 4)
– También soporta memory-mapped I/O
• Lecturas/escrituras a un puerto de E/S
in accumulator,port8 -- (direct addressing)
in accumulator,DX -- (indirect addressing) DX := #port
out port8,accumulator -- (direct addressing)
out DX,accumulator -- (indirect addressing) DX := #port

port8 is 8-bit port number


accumulator can be AL, AX, or EAX (depending on I/O port)

• Instrucciones de acceso a bloques de datos de E/S


– ins: port address in DX, memory address in ES:(E)DI
– outs: port address in DX, memory address in ES:(E)SI
– use rep prefix for block transfer of data
Ejemplo: Teclado en PC-Pentium
• Controlador de Teclado escanea y da información sobre teclas
pulsadas y soltadas.
• La sincronización se obtiene del bit 0 del registro 64h
• C0 = 0 – no hay nueva tecla
• C0 = 1 – nueva información del teclado
• El registro de E/S en la dirección 60h proporciona
– Código de rastreo en los 7 bits menos significativos (PA0 – PA6)
• El “scan code” o código de rastreo identifica la posición de la tecla dentro
del teclado (pero no tiene relación con el valor ASCII)
– Estado de la tecla en el bit más significativo (PA7)
• PA7 = 0 – tecla pulsada
• PA7 = 1 – tecla soltada
Gestión de n dispositivos con E/S
programada con consulta
• 32 dispositivos de ancho de banda
Gestión
pequeño (teclados ?) ≈ 10 caracteres/seg
Listo 1
?
(≈ 1 Byte / 3 ms)
disp. 1
• Cada dispositivo tiene un registro de
control/estado, y uno de datos de 8 bits
Listo 2 Gestión
?
• Software controlado por un puntero y
disp. 2
una variable Acabado (tipo flag)
– Apuntador a la siguiente posición libre del
buffer de entrada
– Acabado se marca cuando se recibe el código
Gestión
Listo n CR (carriage-return)
? disp. n
Evaluación: gestión de 32 teclados
• Gestionar un dispositivo: 20 instrucciones
• Testear un dispositivo: 1 instrucción
• Si todos los periféricos están activos y tienen un
caracter listo:
– 32 bytes de entrada en 640 instrucciones
– Ancho de banda de 512KB/s en una CPU de 10 MIPS
• Pero si la CPU se salta un dispositivo sin gestionar, se
ejecutan 609 instrucciones antes de volver a testear el
dispositivo
• Esto implica que cada dispositivo debe proporcionar
datos con un retardo superior a 60.9 µseg, para evitar
el riesgo de perder datos
Limitaciones de la E/S Programada con
consulta para múltiples dispositivos

1. Poco eficiente: pérdida de tiempo cuando no hay


eventos que gestionar
2. Dificultad para establecer prioridades por S/W:
– El orden de la consulta determina prioridad:
• Esquema fijo: si se atiende a un dispositivo, siempre se vuelve a
comenzar la encuesta siguiendo la misma secuencia
• Esquema rotativo: si se atiende a un dispositivo, al volver a la
encuesta se sigue por el siguiente
3. Complejidad para manejar a la vez periféricos lentos y
periféricos rápidos por ráfagas

También podría gustarte