Contenido TEMA 2 ENTRADA / SALIDA • El concepto de interfaz de E/S • Direccionamiento de interfaces de E/S – Mapa de memoria – Organización • Mapeada y no mapeada en memoria • Una interfaz genérica de E/S: puertos – Coordinación de E/S: protocolos • Métodos de E/S – Por programa (polling) – Por interrupción Sergio Romero Montiel Depto. Arquitectura de Computadores Interfaz HW de E/S Interfaz HW: buses del sistema E/S a través de los buses del sistema • CPU ⇔ Interfaz ⇔ Periféricos Datos Direcciones • Componentes del interfaz hardware de E/S – Buses del sistema – Puerto de salida – Puerto de entrada Memoria CPU Puerto Puerto Controlador Controlador Periférico Periférico Interfaz HW: puerto de salida INTERIOR Señales internas de datos Interfaz HW: puerto de entrada EXTERIOR INTERIOR EXTERIOR D0 Q0 D0 I0 D1 Q1 D1 I1 D2 Q2 D2 I2 D3 Q3 D3 I3 D4 Q4 D4 I4 D5 Q5 D5 I5 D6 Q6 D6 I6 D7 Q7 D7 I7 Señales accesibles desde el exterior Señales internas de datos EN EN Señales producidas en el exterior Los interruptores se implementan con puertas triestado Direccionamiento de Interfaces Direccionamiento de Interfaces DIAGRAMA DE BLOQUES MAPA DE DIRECCIONES: ejemplo I E/S mapeada en memoria Datos Direcciones R/W 2n 0 1 2 . . . 2n-1 Memoria CPU Puerto 2n+1 Puerto Controlador Controlador Periférico Periférico Buses del sistema: dirección, datos y control E/S mapeada en memoria 0 1 2 . . . . . . . . . . . . 2(n-1)-1 2(n-1) . . . . . . . 2(n-1)+2(n-2)-1 (n-1) (n-2) 2 +2 . . . . . 2n-1 | n bits | 000............00 000............01 000............10 ½ del espacio de direccionamiento para la memoria Memoria 011............11 100............00 100............01 E/S 101............11 110............00 110............01 no usado 111111111111 1/4 del espacio de direccionamiento para E/S 1/4 del espacio de direccionamiento no utilizado Direccionamiento de Interfaces E/S mapeada en memoria Direccionamiento de Interfaces E/S no mapeada en memoria MAPA DE DIRECCIONES: ejemplo II | n bits | 000............00 000............01 000............10 Memoria 001............11 010............00 011............11 100............00 101............11 110...00.....00 110...00.....01 110...00.....10 E/S |m bits| 110..001.....11 110..010.....00 110..010.....01 no usado 1111110.....00 1111111.....11 Datos 3·2(n-2) posiciones del espacio de direcciones para la memoria Direcciones IO_R/W R/W 0 2m posiciones del espacio de direcciones para E/S Resto de posiciones no utilizadas Direccionamiento de Interfaces E/S no mapeada en memoria 0 1 2 . . . 2n-1 Memoria Controlador Controlador Periférico Periférico puerto de salida INTERIOR A0-A15 ALE 111............11 Espacio de direccionamiento de E/S Puerto EXTERIOR D0-D7 Espacio de direccionamiento de la memoria Memoria 1 Direccionamiento de Interfaces Address Decoder EQUAL | m bits | 000.........00 000.........01 000.........10 E/S 111.........11 0 1 2 . . . . 2m-1 CLK 0 1 2 . . . . . . . . . . . . 2n-1 Puerto Buses del sistema: dirección, datos y control MAPA DE DIRECCIONES DE MEMORIA Y DE E/S | n bits | 000............00 000............01 000............10 CPU 74374 0 1 2 . . 2 (n-2)-1 2 (n-2) . . . . 2 (n-1)-1 2 (n-1) . . 2(n-1)+2(n-2)-1 2(n-1)+2(n-2) . . . . . . . 2(n-1)+2(n-2)+2(m) -1 2(n-1)+2(n-2)+2(m) . . . . . 2n-1 M/IO WR Señales visibles desde el exterior WR RD A2-A15 ALE wr rd RDS RCD Address Decoder RDE EQUAL A0 A1 RSD A0 A1 CS Ejemplo de interfaz de impresora Data wr rd EXTERIOR Printer Data Register A0 A1 7 0 7 0 Printer Status Register A0 A1 BSY ACK PE SL ERR IRQ Printer Control Register A0 A1 D IQ SI IN AF A0 A1 CS M/IO ST read or last written write IMPRESORA D0-D7 Dependiente del dispositivo Controlador de periférico de 4 puertos Direccionamiento de Interfaces Comunicación con la impresora Direccionamiento de Interfaces Direccion base: 278h, 378h Interfaz E/S Software Los protocolos de E/S pueden ser SW ó HW. Los más simples pueden implementarse en HW. Los complejos y más habituales son SW. Protocolo PC-Impresora (ej.) Las señales de datos y strobe las genera el procesador Las señales busy y ack las envía la impresora ¿Eres la impresora? Si, soy yo D7-D0 ¿Estas lista? Preparada para recibir datos Primer dato CPU Recibido IMPRESORA STROBE BUSY ACK dato dato Métodos de E/S E/S mediante ‘polling’ Bloqueante No Bloqueante Polling (sondeo) • Bloqueante: el procesador espera a que el periférico esté listo (perdida de tiempo en el procesador) • No bloqueante: el procesador continua con otra tarea y atiende al periférico al terminar (perdida de tiempo en el periférico) PROGRAMA PROGRAMA NO NO Interrupción • Permite al procesador trabajar en otra tarea mientras el periférico está ocupado • Es necesario que el procesador disponga de un mecanísno que le permita recibir y atender interrupciones E/S mediante Interrupciones El periférico “interrumpe” cuando ocurre un evento que debe ser tratado PROGRAMA Rutina de tratamiento de la interrupción (RTI) PROGRAMA Al finalizar la RTI, la CPU sigue la ejecución del programa por donde estaba antes de la interrupción Está listo el periférico? SI Rutina de tratamiento del periférico Está listo el periférico? SI Rutina de tratamiento del periférico Origen de las Interrupciones • Interrupciones HW internas (excepciones) – División por cero, desbordamiento, etc • Interrupciones HW Externas – Pines INTR, INTA – PIC (IRQ’s) • Interrupciones software o simuladas (int) – Servicios BIOS (int 10h), DOS (int 21h) Determinación de la Interrupción Interrupciones Externas Multiples • Vectorizadas – Requiere de un controlador que proporciona el número de la interrupción (vector) – El vector determina quién produce la interrupción y dónde está la rutina de tratamiento CPU • Autovectorizadas Periférico Periférico Periférico Periférico – El vector es conocido, ya que la interrupción se produce por un pin dedicado CPU . . . . . . . . . . . . Periférico Periférico • No vectorizadas – Siempre se ejecuta la misma rutina que determina mediante polling al perif. causante Reconocimiento de la Interrupción Varias lineas de petición de interrupción (autovectorizada) Reconocimiento de la Interrupción INICIO I=1 ES EL PERIFÉRICO I-ÉSIMO Periférico 2 CPU . . . SI NO . . . I=I+1 RUTINA DE TRATAMIENTO PARA EL PERIFÉRICO I-ÉSIMO Periférico N NO I>n Bus de datos vector Periférico 1 SI FIN Reconocimiento de intr.’s por sondeo (no vectorizadas) CPU Controlador de Interrupciones Bus de datos Una línea de petición de interrupción Periférico 1 Periférico 2 . . . . . . Periférico N INICIO EL CONTROLADOR DE INTERRUPCIONES INDICA QUE SE TRATA DEL PERIFÉRICO I-ÉSIMO (VECTOR=I) RUTINA DE TRATAMIENTO PARA EL PERIFÉRICO I-ÉSIMO FIN Controlador de Interrupciones Inteligente ó Programable Interrupciones vectorizadas Gestión de Prioridades Procesamiento de la Interrupción – Siempre toman el control de la CPU cuando se producen (errores fatales) 1. El dispositivo envía una señal de interrupción 2. Se termina de ejecutar la instrucción en curso 3. La CPU envía una señal de reconocimiento de la interrupción 4. La CPU guarda la información necesaria para continuar el programa en curso (PC y FLAGs) 5. Se carga el PC con la dirección de la rutina de tratamiento de la interrupción (RTI) 6. La RTI guarda el resto del estado del sistema 7. La RTI procesa la interrupción 8. La RTI recupera el estado del sistema 9. La RTI devuelve el control al programa E/S en el 8086 El 8086 por dentro y por fuera – Con prioridades: SW y HW – Sin prioridades – Concepto de máscara de interrupción • Enmascaramiento por niveles • Enmascaramiento individual (registro de máscara) – Controlador de Interrupciones Programable • PIC (intel 8259), prioridades HW • No enmascarables (NMI) • El 8086 maneja E/S no mapeada en memoria: – Posee líneas control para seleccionar la memoria o los periféricos de E/S – Posee instrucciones (IN, OUT) para leer y escribir de/en los puertos de los periféricos – Posee líneas de interrupción • La E/S de vídeo (memoria de video) se realiza mediante mapeo en memoria Diagrama de bloques de 8086 DATA, INDEX & SEGMENT POINTER REGS REGISTERS & (8 WORDS) IP (5 WORDS) 16 BIT ALU FLAGS BUS INTERFACE UNIT 6-BYTE INSTRUCTION QUEUE CONTROL & TIMING ADDRESS DATA Configuración de PINES GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8086 • Enmascarables 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc AD15 A16/S3 A17/S4 A18/S5 A19/S6 BHE/S7 MN/MX RD HOLD HLDA WR M/IO DT/R DEN ALE INTA TEST READY RESET Interrupciones en el 8086 • Posee dos líneas para interrupciones HW externas – INTR (INTerrupt Request): • Enmascarable (IF, interruption flag) • Vectorizada (tamaño del vector: 1 byte,256 int.’s) – NMI (Non Maskable Interrupt): • No enmascarable • Autovectorizada (Vector = 02h) • Las interrupciones internas (excepciones) son los vectores de 00h a 07h • Las interrupciones SW se invocan con la instrucción INT vector, ej.: INT 21h Interconexión 8086-8259 El PIC 8259 Controlador de Interrupciones Programable (o PIC 8259) es el microchip de intel que se utiliza con el 8086 – 8 líneas de petición de interrupción (IRQ0-7) – Proporciona el vector de interrupción al 8086 (vector base programable) – Pueden conectase el cascada (en dos niveles, hasta 64 interrupciones) – Gestiona las prioridades (programable) – Permite enmascarar las interrupciones individualmente Modo de operación del 8259 16 Bus de direcciones Bus de datos 16 8 A0-19 D0-15 M/IO ¿20h-21h? cs 8086 rd wr INTR INT INTA INTA a0 data 8259 El 8259, como periférico que es, se conecta a la CPU por los buses de dirección, datos y control asignandosele una dir. base de E/S En este ejemplo la dirección base es 20h Posee 3 registros: IRR, ISR (solo lectura, dir.base), IMR (lectura y escritura, dir base+1) Se puede escribir una palabra de control sobre la dirección base Bus de datos 8 D0-15 Periférico 1 IRQ0 IRQ1 8086 INTR INTA INTR INTA 8259 20 IRQ7 Periférico 2 . . . . . . Periférico 8 Un periférico genera una señal de interrupción Si no está enmascarada y no hay otra de mayor prioridad ejecutandose, el 8259 envía la señal INTR al 8086 Si IF está a 1, el 8086 acepta la interrupción y envía INTA al 8259 El 8259 vuelca sobre el bus de datos el vector correspondiente Acceso a la RTI Bus de direcciones 20 Bus de datos Tabla de Vectores de Interrupción Con el número de vector NV la ALU calcula la posición en la tabla de vectores de interrupción (NVx4) 16 A0-19 D0-15 En dicha posición de memoria se encuentra un puntero a la rutina de tratamiento (RTI) MEMORIA Se guarda en la pila los flags, CS e IP y el puntero lejano leido se carga en CS e IP 8086 8259 en cascada Ocupa el primer 1kbyte de memoria (00000h-003FFh) Contiene 256 punteros lejanos (4 bytes, CS:IP) a RTI La tabla de vectores se puede modificar simplemente escribiendo en la posición adecuada un nuevo valor de puntero a RTI Es recomendable restaurar los valores originales de la tabla de vectores antes de finalizar un programa que haya modificado dichos valores Bibliografía 16 Bus de datos 8 D0-15 Dir. Base Maestro: 020h INTA INTR INTA IRQ7 IRQ0 . . . 8259 8086 INTR Periférico 2 IRQ0 IRQ1 IRQ2 8259 Dir. Base Esclavo: 0A0h Periférico 1 8 IRQ7 15 periféricos, el periférico de IRQ2 es el PIC esclavo • William Stallings – Organización y Arquitectura de Computadores, 5ª Edición – Prentice Hall Periférico 9 . . . Periférico 16 Periférico 8 • Patterson, Hennessy – Estructura y Diseño de Computadores – Editorial Reverté