Download Entrada y Salida - prof.usb.ve.

Document related concepts
no text concepts found
Transcript
Velocidades de transferencia típicas en Dispositivos I/O
Entrada y Salida!
EC-2721
Arquitectura del Computador I!
William Stallings, Computer Organization and
Architecture, Cap. 7
Universidad Simón Bolívar!
Departamento de Electrónica y Circuitos!
Prof. Juan. C. Regidor
Entradas/Salidas: Problemas
• Amplia variedad de periféricos!
Entradas salidas: Criterios
—Entrega de diferentes cantidades de datos!
—Diferentes velocidades!
—Variedad de formatos!
• Como acceder: ¿Aislada o Asignada en
Memoria?!
!
• Como ejecutar: Programada, Manejada
por Interrupciones o DMA?
• Todos más lentos que CPU y RAM!
• =>Necesidad de Módulos de I/O
!
Asignación de I/O
• I/O Asignada en Memoria!
— Dispositivos y memoria comparten espacio de
direccionamiento!
— Se maneja igual que operaciones sobre memoria (r,w)!
— Se usan las mismas instrucciones que para transferir
datos de o a memoria!
Decodificación de Direcciones (1)
Ubicación de la EPROM, RAM, y PIO en un
espacio de memoria de 64 KB
!
• I/O Aislada!
— Espacios de dirección separados!
— Son necesarias líneas para seleccionar I/O o memoria!
— Comandos especiales para I/O!
– Conjunto Limitado
Decodificación de Direcciones (2)
Módulos de I/O:
Full address decoding.
• Interfaz a CPU y Memoria!
!
• Interfaz a uno o mas periféricos
Modelo Genérico de Módulo I/O
Dispositivos Externos
• Interacción con seres Humanos!
—Pantalla, Teclado, Impresora!
!
• Relación con otras máquinas!
—Monitoreo y control!
!
• Comunicación!
—Modem!
—Tarjeta de Red - Network Interface Card (NIC)
Dispositivo Externo: Diagrama de Bloques
Módulo I/O: Función
•
•
•
•
Control y Temporización!
Comunicación con el CPU !
Comunicación con el Dispositivo!
Almacenamiento temporal de datos
(buffer)!
• Detección de errores
Transacción I/O: Pasos
El módulo I/O: Diagrama
• CPU chequea status en el módulo I/O del
dispositivo!
• El módulo I/O returna el status!
• Si está listo, CPU solicita transferencia de
datos!
• El módulo I/O obtiene datos del
dispositivo!
• El módulo I/O transfiere datos al CPU!
• Variaciones para salida, DMA, etc.
Técnicas para Ingreso de un Bloque de Datos
Técnicas de Entrada Salida
• Programada!
!
• Manejada por Interrupciones!
!
• Acceso Directo a Memoria
I/O Programada
I/O Programada - detalles
• CPU tiene control directo sobre I/O!
•
•
•
•
—Comprobar estado!
—Comandos Read/write!
—Transferir datos!
• CPU espera al módulo I/O para completar
la operación!
• Gasta tiempo de CPU
I/O Programada: Comandos
• CPU emite dirección!
—Identifica modulo (y dispositivo si >1 por
módulo)!
• CPU emite comando!
—Control – Dice al módulo que hacer!
– ej. girar disco!
—Probar - chequear status!
– ej. encendido? Error?!
—Leer/Escribir!
– El Módulo transfiere datos via el buffer desde o hacia el
dispositivo
CPU solicita operación I/O!
Módulo I/O ejecuta operación!
Módulo I/O establece bits de status!
CPU chequea bits de status
periodicamente!
• Módulo I/O no informa al CPU
directamente!
• Módulo I/O no interrumpe al CPU!
• CPU puede esperar o regresar mas tarde
I/O Programada:!
Asignada en Memoria y Aislada
I/O Manejada por Interrupciones
• Qué es una Interrupción? !
! Es una llamada a subrutina iniciada por
Hardware!
Fuentes:!
• Timer!
— Generado por un temporizador interno del procesador!
— Usado en multitarea!
• I/O"
— De un módulo de I/O!
• Falla de Hardware!
— ej. Error de paridad de memoria!
I/O Manejada por Interrupciones !
Operación Básica
• El CPU emite un comando de lectura!
• El módulo I/O obtiene datos del periférico
mientras el CPU trabaja!
• El módulo I/O interrumpe el CPU!
• El CPU solicita los datos!
• El módulo I/O transfiere los datos
• Ejecución de un Programa!
— ej. división por cero
Transferencia de Control via Interrupciones
Ciclo de interrupción
• Añadido al ciclo de instrucción!
• El Procesador chequea por interrupción!
• Si no hay Interrupción pendiente busca la
siguiente instrucción!
• Si hay una interrupción pendiente:!
—Suspender ejecución del programa actual !
—guardar contexto!
—PC apunta al inicio de la rutina de atención !
—Completar el Procesamiento de la interrupción!
—Restablecer el contexto y continuar el programa
interrumpido
Ciclo de instrucción (con interrupciones) Diagrama de Estados
Cambios en Memoria y Registros!
En una Interrupción
Desde el Punto de vista del CPU:
Identificando el Modulo que Interrumpe (1)
• Emite un comando de lectura!
• Trabaja en otra cosa!
• Verifica interrupciones al finalizar cada
ciclo de instrucción!
• Si es interrumpido:-!
—Almacenar contexto de ejecución (registros)!
—Procesa la interrupción!
– Busca los datos & almacena
• Diferentes lineas para cada modulo!
—PC!
—Limita el número de dispositivos!
!
• Encuesta por Software (Polling)!
—El CPU interroga por turno a cada módulo!
—Lento
Identificando el Modulo que Interrumpe (2)
Arbitraje de Bus (1)
• Daisy Chain o Encuesta por Hardware!
—Reconocimiento de la Interrupción devuelta por
una cadena!
—Módulo responsable coloca el vector en el bus!
—CPU usa el vector para identificar rutina de
servicio!
!
• Arbitraje del Bus !
—Módulo debe solicitar el bus antes de
interrumpir ! y colocar su vector!
—ej. PCI & SCSI
Arbitraje de Bus (2)
Arbitraje de bus descentralizado.
(a) Arbitraje centralizado, un nivel, Daisy Chain!
(b) Arbitraje centralizado, dos niveles, Daisy Chain
Interrupciones Multiples: Manejo Secuencial
Interrupciones Multiples: Anidadas
Interrupciones Multiples: secuencia temporal
Interrupciones Multiples: estrategias
Ejemplo – Bus PC
• Desabilitar Interrupciones!
—Mientras el Procesador procesa una
interrupción, ignora otras !
—Otras interrupciones permanencen pendientes
hasta finalizar el procesamiento de una
interrupción !
—Son atendidas secuencialmente!
• Definir prioridades!
—Interrupciones de baja prioridad pueden ser
interrumpidas por otras de mayor prioridad!
—Cuando el procesador termina de procesar la
interrupción de alta prioridad, retorna a la
interrupción previa.
• 80x86 posee una línea de interrupción!
!
• Sistemas basados en el 80x86 usan un
controlador de interrupciones 8259A!
!
• 8259A tiene 8 líneas de interrupción
Secuencia de Eventos
•
•
•
•
•
8259A: acepta interrupciones!
8259A: determina prioridad!
8259A: señaliza al 8086 (sube línea INTR)!
CPU: Reconoce interrupción (INTA)!
8259A: Coloca el vector adecuado en las
líneas de datos!
• CPU: procesa interrupción
Interfaz programable de periféricos !
Intel 82C55A
Controlador de
Interrupciones!
82C59A
Interfaz Teclado/Pantalla con el 82C55A
Acceso Directo a Memoria
Funcionamiento del DMA
• Entrada Salida programada y con
interrupciones requiere participación
activa del CPU!
• Requiere un módulo Adicional (hardware)
conectado al bus!
—Velocidad de Transferencia es limitada!
—El CPU está atado!
!
• Respuesta: DMA
Diagrama Módulo DMA Típico
!
• DMA recibe el control del sistema cedido
por el procesador
Operación del DMA
• CPU al controlador DMA:!
—Read/Write!
—Dirección de dispositivo!
—Dirección inicial del bloque de datos!
—Cantidad de datos a ser transferidos!
!
• CPU: trabaja en otra cosa!
!
• Controlador de DMA: !
—Prepara la transferencia!
—Interrumpe cuando termina la preparación
Transferencia DMA: Robo de ciclos
Puntos de acceso de DMA e Interrupciones en
el Ciclo de Instrucción
• Controlador DMA se apodera del bus por
un ciclo!
• Transferencia de una palabra de datos!
• No es una interrupción!
—CPU no cambia de contexto!
• CPU suspendido justo antes de acceder al
bus!
— antes de buscar operando, datos o escribir
datos!
• Disminuye la velocidad del CPU pero no
tanto como otros esquemas
DMA: Configuraciones (1)
• Bus único!
• Cada transferencia usa el bus dos veces!
—I/O a DMA luego DMA a memoria!
• El CPU es suspendido dos veces
DMA: Configuraciones (2)
• Bus único, Controlador Integrado a E/S!
• Cada transferencia usa el bus una vez!
—DMA a memoria!
• El CPU es suspendido una vez
DMA: Configuraciones (3)
Diagrama Módulo DMA Típico
• Buses separados para E/S!
• El Bus soporta todos los dispositivos habilitados
para DMA!
• Each transferencia usa el bus una vez!
— DMA a memoria!
• CPU es suspendido una vez
Controlador DMA Intel 8237A
• Interfaz para la familia 80x86 y la RAM!
!
• Cuando el módulo DMA necesita el bus,
señaliza HOLD al procesador!
!
• CPU responde HLDA (hold acknowledge) !
—DMA puede usar el bus
Controlador DMA Intel 8237A
• Ej. transferir datos desde memoria al disco!
1. Los dispositivos pueden solicitar servicio DMA,
levantando DREQ (DMA request)!
2. El DMA coloca alto HRQ (hold request), !
3. CPU finaliza el ciclo de bus actual y coloca en alto
HDLA (hold acknowledge). HOLD permanece alto
durante la operación DMA!
4. El DMA activa DACK (DMA acknowledge),
indicando al dispositivo que inicie la transferencia!
5. El DMA inicia la transferencia colocando la
dirección del primer byte en el bus de direcciones
y activando MEMR; entonces activa IOW para
escribir al periferico. El DMA decrementa el
contador e incrementa el apuntador de
direcciones. Se repite hasta que el contador llega
a cero.!
6. El DMA desactiva HRQ, devolviendo el bus al CPU
Uso del Bus de Sistema: DMA 8237
Fly-By
• Mientras el DMA accede al bus, el procesador se
detiene!
• Si el Procesador usa el bus, el módulo DMA
duerme!
— Conocido como controlador DMA “fly-by” !
• Los datos no pasan a través ni son almacenados
en el chip DMA!
— DMA Solamente entre un puerto I/O y memoria!
— No entre dos puertos I/O o dos localidades de memoria !
• Memoria a Memoria via registro!
• Chip 8237 contiene cuatro canales DMA!
— Programados independientemente!
— Solo uno activo a la vez !
— Enumerados 0, 1, 2, y 3
Que es un Bus?
Bus de datos
• Un camino que comunica dos o mas
dispositivos!
• Generalmente en “broadcast”!
• A menudo se agrupan lineas!
• Transporta datos!
—P. ej. Un bus de datos de 32 bits corresponde a
32 líneas de un bit
—Ojo: en este nivel no hay diferencia entre
“dato” e “instrucción”!
• El ancho suele ser una pieza clave en el
rendimiento:!
—8, 16, 32, 64 bit
Bus de Direcciones
Bus de Control
• Identifica la fuente o el destino de los
datos!
• P. ej. El CPU necesita leer una instrucción
(dato) en una posición de memoria!
• El ancho del Bus determina la capacidad
máxima de memoria de el sistema!
• Información de Control, Estado y
temporización!
—read/write!
—Interrupt request!
—Señales de reloj
—P. ej. Mic1 tiene bus de direcciones de 32
bits=> 4G capacidad de direccionamiento
Esquema de interconexion de Buses
Arquitectura de Bus
Tradicional (ISA)!
(con cache)
Bus de alto rendimento
Tipos de Buses
PCI: Diagrama de temporización de lectura
• Dedicado!
—Separa datos & lineas de dirección!
• Multiplexado!
—Líneas compartidas!
—Ventaja: menos líneas!
—Desventajas:!
– Control + complejo!
– Desmejora el rendimiento
PCI: Arbitraje de Bus
PCI: Arbitraje de Bus