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