Entradas Salidas Velocidades Típicas de transferencia en Dispositivos I/O Entradas/Salidas: Problemas • Amplia variedad de periféricos —Entrega de diferentes cantidades de datos —Diferentes velocidades —Variedad de formatos • Todos más lentos que CPU y RAM • =>Necesidad de Módulos de I/O Entradas salidas: Criterios • Como acceder: ¿Aislada o mapeada? • Como ejecutar: Programada, Manejada por Interrupciones o DMA? 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 • I/O Aislada — Espacio de direccionamiento separados — Son necesarias líneas para seleccionar I/O o memoria — Comandos especiales para I/O – Conjunto Limitado Decodificación de Direcciones (1) Ubicación de la EPROM, RAM, y PIO en un espacio de direccionamiento de 64 KB Decodificación de Direcciones (2) Full address decoding. Módulos de I/O: • Interfaz al CPU y Memoria • Interfaz a uno o mas periféricos Modelo Genérico de Módulo I/O Dispositivos Externos • Interrelació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 & 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 • 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. El módulo I/O: Diagrama Técnicas de Entrada Salida • Programada • Manejada por Interrupciones • Acceso Directo a Memoria Técnicas para Ingreso de un Bloque de Datos I/O Programada • CPU tiene control directo sobre I/O —sensar status —Comandos Read/write —Transferir datos • CPU espera al módulo I/O para completar la operación • Gasta tiempo de CPU I/O Programada - detalles • • • • 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: Comandos • CPU emite dirección —Identifica modulo (& dispositivo if >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 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 • Ejecución de un Programa — ej. división por cero 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 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: • 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 Identificando el Modulo que Interrumpe (1) • Diferentes lineas para cada modulo —PC —Limita el número de dispositivos • Encuesta por Software —El CPU interroga por turno a cada módulo —lento Identificando el Modulo que Interrumpe (2) • 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 (1) (a) Arbitraje centralizado, un nivel, Daisy Chain (b) Arbitraje centralizado, dos niveles, Daisy Chain Arbitraje de Bus (2) Arbitraje de bus descentralizado. Interrupciones Multiples: Manejo Secuencial Interrupciones Multiples: Anidadas Interrupciones Multiples: secuencia temporal Interrupciones Multiples: estrategias • 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. Ejemplo – Bus PC • 80x86 posee una línea de interrupción • Sistemas basados en el 8086 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 Controlador de Interrupciones 82C59A Interfaz programable de periféricos Intel 82C55A Interfaz Teclado/Pantalla con el 82C55A Acceso Directo a Memoria • Entrada Salida programada y con interrupciones requiere participación activa del CPU —Velocidad de Transferencia es limitada —El CPU está atado • Respuesta: DMA Funciamiento del DMA • Requiere un módulo Adicional (hardware) conectado al bus • DMA recibe el control del sistema cedido por el procesador Diagrama Módulo DMA Típico 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 • 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 Puntos de acceso de DMA e Interrupciones en el Ciclo de Instrucción 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) • 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 Diagrama Módulo DMA Típico 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 • 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 Buses • There are a number of possible interconnection systems • Single and multiple BUS structures are most common • e.g. Control/Address/Data bus (PC) • e.g. Unibus (DEC-PDP) Que es un Bus? • Un camino que comunica dos o mas dispositivos • Generalmente en “broadcast” • A menudo se agrupan lineas —P. ej. Un bus de datos de 32 bits corresponde a 32 líneas de un bit Bus de datos • Transporta datos —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 • 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 —P. ej. Mic1 tiene bus de direcciones de 32 bits=> 4G capacidad de direccionamiento Bus de Control • Información de Control, Estado y temporización —read/write —Interrupt request —Señales de reloj Esquema de interconexion de Buses Arquitectura de Bus Tradicional (ISA) (con cache) Bus de alto rendimento Chipset 780G ATI Chipset G33 de Intel Controlador de memoria integrado Tipos de Buses • Dedicado —Separa datos & lineas de dirección • Multiplexado —Líneas compartidas —Ventaja: menos líneas —Desventajas: – Control + complejo – Desmejora el rendimiento PCI: Diagrama de temporización de lectura PCI: Arbitraje de Bus PCI: Arbitraje de Bus