Tema 3 Buses de Entrada/Salida Periféricos e Interfaces Referencias: [Stallings03] Chapter 3 [Messmer02] Chapter 25 Tema 3/1
Tema 3/2 Conceptos Generales Estructura Universal del Bus Operaciones en un Bus Ventajas y Desventajas Tipos de Buses Solución en Computadores: Jerarquía Normalización de un Bus Niveles de Especificación Físico, Eléctrico y Lógico Temporización de las Señales Protocolo de Transferencia Método de arbitraje Direccionamiento Anchura del bus Tipos de transferencias Estudio de Casos: Bus PCI Organización de Computadores Basados en Bus PCI Nivel Físico Protocolo: arbitraje, lectura/escritura Autoconfiguración Programación a través de PCI-BIOS Sumario
Conectores a Buses en Placa Base 2 conectores ISA 5 conectores PCI 2 conectores IDE Placa base Periférico esclavo Periférico maestro USB Tema 3/3
Estructura Universal de un Bus Procesador Memoria Principal Interfaz serie Interfaz paralelo LÍNEAS: Datos, Direcciones, Control Controlador de disco Controlador de cinta Maestro Esclavo Esclavo Líneas de Direcciones Tema 3/4 Líneas de Datos
Operaciones Básicas Transacciones: agrupación de eventos que se producen en un bus entre Fuente y Destino Partes en las que frecuentemente se dividen las Transacciones Tema 3/5 1: Petición del bus 2: Obtener el uso del bus (Cesión) 3: Direccionamiento del destinatario 4: Transferir dato 5: Espera confirmación de envío correcto (control de errores)
Ventajas BUS Procesador E/S E/S E/S Memoria Tema 3/6 Versatilidad: Nuevos dispositivos pueden ser añadidos fácilmente Los Periféricos pueden ser conectados a distintos computadores que usen el mismo estándar de bus La reparación consiste en sustituir los módulos dañados Bajo Costo: Un único conjunto de cables es compartido de múltiples formas Se maneja la complejidad particionando el diseño
Desventajas BUS Procesador 1 2 3 Memoria Se crea un cuello de botella en las comunicaciones El ancho de banda de un bus puede limitar el ritmo de transferencia máximo de E/S El ritmo de transferencia del bus está básicamente limitada por: La longitud del bus El número de dispositivos conectados al bus La necesidad de soportar un rango de dispositivos con distintas características: Latencias (tiempo de ciclo) que varían grandemente Ritmos de transferencias de datos que varían ampliamente Tema 3/7
Tipos de Buses Dedicados: asignar un conjunto de líneas a una función determinada (datos, direcciones, etc.) Mayor rendimiento debido a menor contención del bus Incremento del tamaño del sistema Maestro Esclavo Esclavo Líneas de Control Líneas de Dirección Líneas de Datos Multiplexados: por un determinado conjunto de líneas se transmiten varios tipos de información Ventajas: menos líneas Desventajas: HW más complejo y menor prestaciones Serie: se transmiten bit a bit Paralelo: se transmiten palabra a palabra Tema 3/8
Jerarquía de Buses: Un Sistema de 3 Buses Memoria Cache Bus Local Adaptador Bus Interfaz de Memoria Procesador Vídeo LAN FireWire PCI, AGP Bus Sistema Adaptador Bus Adaptador Bus Memoria Principal Bus Expansión E/S (IDE, USB, etc.) Bus Expansión E/S Un pequeño número de buses de la placa base se obtienen a partir del Bus Local La interfaz de memoria se usa para el tráfico entre procesador y memoria A través de adaptador se obtienen los buses del sistema (PCI) Los buses de E/S se conectan al bus del sistema (IDE, USB, SCSI, etc.) Ventaja: la carga del bus del procesador se reduce Tema 3/9
Ejemplo: Computador basado en Jerarquía PCI Bus LOCAL: Procesador/Cache Interfaz de MEMORIA Bus del SISTEMA (PCI) Tema 3/10 Buses de EXPANSION E/S: ISA, USB
Ejemplo: Computador basado en Jerarquía PCI Tipos de Transferencias: Procesador-Memoria Procesador-E/S E/S-Memoria Tema 3/11
Especificación Normalizada de un Bus Protocolo Transacción Temporización de Señales Nivel Lógico Especificación Eléctrica de las Señales v R/W Direc Datos t Características Físicas/Mecánicas BUS Tema 3/12
Normalización de un Bus Características Físicas/Mecánicas Tema 3/13 Topología de conexión, Número máximo de dispositivos conectados al bus (Capacidad de Conexión), Tipos de cables y conectores, Longitud Especificación Eléctrica de las Señales Características eléctricas de las señales (V, I, Z), Fiabilidad eléctrica de las líneas de bus (interferencias, corto circuito, tensión del cable), Modos de suministro de alimentación Nivel Lógico Asigna un nivel lógico binario (0 ó 1) a cada nivel eléctrico estable de las señales de un bus (Vcc ó Gnd) Señales: Datos, Direcciones, Escritura/Lectura de Mem/ES, Reconocimiento de transacción, Petición/Cesión del bus, Petición/Reconocimiento de Interrupción, Reloj, Reset
Temporización de Señales Definición: forma en la que se coordinan los eventos en el bus Temporización Síncrona (Bus Síncrono): Incluye una señal de reloj entre las líneas de control La activación de señales siempre se realiza de forma relativa a la señal de reloj Ventaja: implica muy poca lógica y puede ser muy rápido Desventajas: Cada dispositivo en el bus debe funcionar a la misma velocidad Para evitar el desfase de reloj, las líneas del bus no deben ser muy largas si se quiere que sea rápido Temporización Asíncrona (Bus Asíncrono): No está sincronizado por reloj, la activación de una señal depende de activaciones de otras señales Requiere un Protocolo de Intercambio (Handshaking) Ventaja: Puede acomodar un rango amplio de dispositivos Ventaja: El bus puede ser alargado sin preocuparse del desfase de reloj Tema 3/14
Temporización Síncrona RELOJ Bus- Acceso Bus- Petición Dirección + Orden Cmd+Addr Espera (Wait) Datos Data1 Data1 Data2 Tema 3/15 El destinatario indica cuándo está preparado para transferir datos La transferencia real se realiza a la frecuencia del RELOJ
Temporización Asíncrona Transacción de ESCRITURA Dirección Datos Lectura/Escritura Petición Reconocimiento CICLO de Bus Maestro activa Dirección Maestro activa Datos Próxima Dirección Tema 3/16 t0 t1 t2 t3 t4 t5 t0 : Maestro ha obtenido el control y activa Dirección y Datos Espera una cantidad de tiempo para que los esclavos decodifiquen t1: El Maestro activa las líneas de Petición (Request) t2: El Esclavo activa Reconocimiento (Ack), reconociendo que el dato se ha recibido t3: El Maestro desactiva Petición t4: El Esclavo desactiva Reconocimiento
Protocolo de Transferencia: Arbitraje La transferencia de información se realiza a través de un convenio entre Maestro y Esclavo: Sólo el maestro del bus puede controlar el acceso al bus: Inicia y controla todas las peticiones del bus Un esclavo responde a peticiones de lectura y escritura El sistema más sencillo: Maestro Unico El Procesador es el único maestro del bus Todas las peticiones de bus deben estar controladas por el procesador Inconveniente: el procesador se implica en cada transacción Uno de los aspectos más importantes en el diseño de un bus: Cómo se reserva el bus a un dispositivo que desea usarlo en un Bus Multimaestro?: se necesita arbitraje Tema 3/17
Petición del Bus : Tema 3/18 Arbitraje Un maestro que quiere usar el bus activa la señal de petición del bus Que se dirige a un árbitro central (Arbitraje Centralizado) Que es compartida por otros maestros y éstos detectan la actividad de esta línea compartida (Arbitraje Distribuido por Detección de Colisión de Señales) Dependiendo del estado de unas señales de arbitraje (código identificativo, habilitación), los módulos se abstienen de usar el bus o acceden a él (Arbitraje Distribuido por Autoselección) Cesión del Bus : 2 tipos: Estática (bajo encuesta), Dinámica (bajo demanda) Un maestro no puede usar el bus hasta que la petición sea atendida Un maestro debe indicar al árbitro que ha terminado de usar el bus Los esquemas de Cesión equilibran 2 factores : Prioridad del Bus: el dispositivo de más alta prioridad debe ser atendido primero Completitud: Incluso el dispositivo de prioridad más baja debe ser atendido
Tipos de Arbitrajes Centralizado BUS Arbitro PCI PCI GNT# REQ# PCI GNT# REQ# PCI GNT# REQ# PCI GNT# REQ# Centralizado Daisy Chain BUS Arbitro PCI PCI REQ# GNT# PCI REQ# GNT# PCI REQ# GNT# PCI REQ# GNT# Tema 3/19
Tipos de Arbitrajes BUS PCI GNT# REQ# PCI GNT# REQ# PCI GNT# REQ# PCI GNT# REQ# Distribuido por Detección de Colisión de Señales (Ethernet) Tema 3/20
Tipos de Arbitrajes Distribuido por Autoselección (SCSI) Tema 3/21
Protocolo: Direccionamiento Lógico: información de dirección de destino está almacenada en el destinatario Geográfico: la dirección está asociada a una posición física Multicast: forma de distribuir información a más de un destinatario Broadcast: forma de distribuir información a todos los destinatarios Tema 3/22
Protocolo: Anchura del Bus Anchura del Bus de Datos: Afecta a las prestaciones del sistema Anchura del Bus de Direcciones: Afecta a la capacidad del sistema Ritmo de Transferencia (Ancho de Banda): MB/s. PCI(1X), BW= 32 bits x 33 MHz /8 = 132 MB/s Tiempo (s) RELOJ Datos Data1 Data2 Data3 Tema 3/23
Transferencias de Ciclo Completo Tiempo Buses Multiplexados Buses Dedicados Dirección Dato Dirección Operación de escritura (multiplexada) Dirección Tiempo acceso Dato Operación de lectura (multiplexada) Dirección Lect Escr Lectura-Modificación-Escritura Dirección Escri Lect Lectura después de escritura Dato Operación de escritura (no multiplexada) Dirección Dato Operación de lectura (no multiplexada) Tema 3/24
Transferencias de Ciclo Partido Dirección Dato Dato Dato Transferencia de un bloque de datos (Burst) BCLK Trasacción 1 Arbitraje Petición Error Snoop Respuesta Datos Trasacción 2 Arbitraje Petición Error Snoop Respuesta Datos Tema 3/25
Demandas de Ritmo de Transferencia en los Periféricos Gráficos Resolución Colores Redisplay Ancho de Banda 160x120 8 bits 15 Imag/s 288 KB/s 640x480 8 bits 10 Imag/s 1.9 MB/s 640x480 24 bits 30 Imag/s 26.3 MB/s 1024x768 24 bits 30 Imag/s 67.5 MB/s ISA: 8 MHz x 2 Bytes x (1/2)= 8 MB/s EISA: 8 MHz x 4 Bytes x (1/2)= 16 MB/s Tema 3/26
Estudio de Casos: Bus PCI Bus PCI 0 BRIDGE Agente PCI Bus PCI Tema 3/27
Tema 3/28 Principales Características PCI Peripheral Component Interconnect, estándar independiente del procesador para expansión de computadores PCI SIG (Special Interest Group, www.pcisig.org): asociación industrial, PCI Express, PCI-X 2.0, PCI 2.3 Bus de tipo multiplexado Temporización síncrona (33/66 MHz) y 32/64 bits de datos Alto Ritmo de Transferencia: 1X=132 MB/s (33MHz, 32 bits), 4X=528 MB/s (66 MHz, 64 bits)
Estructura General PCI CLK IDSEL Control PCI PCI HOST HOST (Puente (Puente Norte) Norte) Arbitro PCI PCI (Slot 1) GNT# REQ# PCI (Slot 2) GNT# REQ# C/BE0-3 AD0-31 PCI (Slot 3) GNT# REQ# PCI (Slot 4) GNT# REQ# Tema 3/29 /INTA..D Controlador de Interrupciones (Puente Sur)
Principales Características PCI Multimaestro. El procesador no es el único maestro del bus. Aplicado a sistemas multiprocesadores Hasta 256 buses con 32 periféricos/bus y 8 controladores/periférico Permite establecer conexiones a través de puentes con buffers internos con otras normas de bus: ISA, EISA, SCSI, etc. Permite el paralelismo de transacciones procesadormemoria y periférico PCI-periférico PCI Autoconfiguración: Plug&Play Tema 3/30
5 voltios Niveles Físico- Mecánico-Eléctrico: Conector PCI Tema 3/31 Organización de pines para eliminar Paradiafonía (Crosstalk)
Nivel Lógico PCI Grupos funcionales de líneas obligatorias (49): Sistema: reloj (CLK), reset (/RST) Direcciones y Datos: Dir/Dat mux (AD[31:0]), interpretación Dir/Dat (/DEVSEL), validación/comando (C/BE[3:0]) Control de la Interfaz: temporización (/FRAME), coordinación fuente/destino (/IRDY, /TRDY), parar transacción (/STOP) Arbitraje: par de líneas desde cada maestro al árbitro (/REQ, /GNT), líneas no compartidas Control de Errores de paridad (PAR, /PERR, /SERR) Activación del Espacio de Configuración: IDSEL Grupos funcionales de líneas opcionales (+51): Interrupciones: para pedir servicio Soporte cache: permite utilizar protocolos de coherencia de memorias caches en el bus, para sistemas multiprocesadores Ampliación del bus a 64 bits Test: JTAG/Boundary Scan Alimentación/Tierra (+24): Soporta: 5 v / 3.3 v (marcas físicas Tema 3/32 en el conector distinitas dependendiendo de 5/3.3 v.)
Sincronización PCI Interpretación de eventos: Activación de eventos por maestro del bus: en transiciones negativas de clk Interpretación de eventos por esclavos del bus: en transiciones positivas de clk Interrupciones activadas por nivel, lo cual permite compartir las líneas entre varios periféricos Tema 3/33
Arbitraje PCI Centralizado Interrupciones activas por nivel, se pueden unir varias líneas Sin algoritmo especificado para prioridad No relentiza las transferencias BUS PCI Arbitro PCI PCI PCI PCI PCI GNT# REQ# GNT# REQ# GNT# REQ# GNT# REQ# Tema 3/34
Tema 3/35 Bus PCI Arbitraje PCI FRAME#, IRDY#, TRDY#, AD, CLK A B REQ#A GNT#A REQ#B GNT#B Arbitro PCI
Transferencias de Datos Modos multiplexados : Tema 3/36 ciclo completo (escritura: 2 clk/dato, lectura: 3 clk/dato), ciclo partido (bloques datos, 1 clk/dato) Estructura de la transferencia: 1 fase de direccionamiento 1 ó varias fases de datos Ritmos de Transferencia Ciclo Completo 1X: escritura= 66 MB/s, lectura= 44 MB/s Ciclo Partido: 1X=132 MB/s (33MHz, 32 bits), 4X=528 MB/s (66 MHz, 64 bits)
Comandos/Ordenes PCI Se utilizan las señales C/BE(3:0) Lectura/Escritura E/S: leer/escribir en registros del controlador de periféricos Lectura/Escritura Memoria: transferencias de bloques de datos, permite ser utilizado en sistemas multiprocesadores en el que se utiliza un algoritmo de coherencia de cache Lectura/Escritura Configuración: permite al usuario del bus leer y escribir en registros de configuración del dispositivo conectado a PCI, máximo número registros: 256, utilizado en Plug&Play Ciclo de Dirección Dual: permite la utilización de direcciones de 64 bits Reconocimiento de Interrupción: el controlador de interrupciones utiliza el bus de datos para leer el identificador de la interrupción Ciclos Especiales Tema 3/37
Tema 3/38 Transacción PCI de Lectura
Tema 3/39 Transacción PCI de Escritura
Autoconfiguración PnP-PCI: Mecanismo Configuración #1 3er tipo de espacio direccionamiento en PCs Registros de Configuración: 2 registros E/S de 32 bits para acceso a la Memoria de Configuración PCI CONFIG_ADDRESS: 0x0cf8 CONFIG_DATA: 0x0cfc, 32 bits Memoria de Configuración: 256 bytes por controlador Tema 3/40
Autoconfiguración PnP-PCI: Mecanismo Configuración #1 ECD=1: acceso a Espacio Configuración PCI ECD=0: acceso a Direccionamiento E/S CONFIG_ADDRESS (E/S= 0x0cf8) 31 30 24 23 16 15 11 10 8 7 2 1 0 EC RESERVADO Nº de BUS PCI en la estructura Nº de dispositivo Función Nº de Registro de la D= jerárquica (0...255) PCI (0...31) (multifunci Ventana Configuración 1 conectado a bus onales) (64 regs) Tipo CONFIG_DATA (E/S= 0x0cfc) 31 0 DATO Tema 3/41
Area de Configuración PCI CONFIG_ADDRESS En el interior del controlador PCI CONFIG_DATA 64 Byte Header Cabecera 192 Bytes available for PCI Unit Dependiente del Formato Fijo 16B 31 16 15 Unit ID Manufacturer ID Status Command Class Code Revision BIST Header Latency CLS Base Address Register (6) Reserved Reserved Expansion ROM Base Address Reserved Reserved MaxLat MinGNT INT-Pin INT-Line Offset 0 00h 04h 08h 0Ch 10h 24h 28h 2Ch 30h 34h 38h 3Ch 256-byte Configuration Area and 64-byte Header Tema 3/42
Campos de Configuración Command (16 bits: 9+7): configura cómo reacciona el módulo PCI a los distintos ciclos de bus Status (16 bits): estado del módulo PCI Class code (24 bits): indica el tipo de módulo PCI. MSB=clase, MediumSB=sub-clase, LSB= interfaz de programación Latency (8 bits): duración máx de operaciones de bus (/FRAME=0, >8 clks) Header: permite indicar el contenido de los otros 48 bytes de la cabecera BIST (8 bits): autotest BAR (32/64 bits): punteros a zonas de memoria o E/S donde se almacenan datos o programas INT-Line (8 bits): línea interrupción asignada, IRQx (0.. 15) INT-Pin (8 bits): petición de interrupción, 0000 (no int), 0001 (/INTA), 0010 (/INTB), etc (MaxLat,MinGNT): máxima y mínima latencia que requiere el módulo PCI, y que es indicado por el fabricante de la placa Tema 3/43
Tema 3/44 Programación a través de BIOS Ensamblador: INT 1aH pci_bios_present: indica si BIOS PCI presente AH= 0xb1, AL=0x01 find_pci_device(); encuentra periféricos PCI AH= 0xb1, AL=0x02, num. fabricante, num. dispositivo read_configuration_area(); lee espacio configuración sobre registro ECX AH= 0xb1, AL=0x08 (byte), AL=0x09 (word) write_configuration_area(); escribe registro de configuración desde registro ECX AH= 0xb1, AL=0x0c (byte), AL=0x0c (word)
Ejemplo pci_bios_present: find_pci_device(); DX: fabricante (8086= Intel ) CX: unidad (7190= 440BX Host/PCI ) SI= indice Versión: x.y; x=bh, y=bl EDX=PCI; 00 49 43 50 Carry=NC; si PCI-BIOS BH=Nº bus; BL[7..3]=unidad; BL[2..0]=función Carry=NC; comando OK Tema 3/45
Programación a través de BIOS con C++ getinterrupt(0x1a); pci_bios_present(); indica si BIOS PCI presente find_pci_device(); encuentra periféricos PCI read_configuration_byte(); lee espacio configuración write_configuration_byte(); escribe registro de configuración Tema 3/46
Ejemplo: Arranque PC Bus No Device No. Func. No. Vendor ID Device ID Device Class IRQ 0 4 1 8086 7111 IDE controller 14/15 0 4 2 8086 7112 Serial bus controller 10 0 11 0 1307 000B Unknown PCI device N/A 1 0 0 12D2 0018 Display controller 11 Tema 3/47
Ejemplo: PCItree (www.pcitree.de) Jerarquía PCI Interrupción IRQx Interrupción PCI DID.VID Situación del módulo en la jerarquía PCI Area de Configuración Tema 3/48