Tema 3
Buses de Entrada/Salida
Periféricos e Interfaces
Referencias: [Stallings03] Chapter 3 [Messmer02] Chapter 25
Sumario
• 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
Conectores a Buses en Placa Base
2 conectores ISA 5 conectores PCIUSB
2 conectores IDE Placa base Periférico esclavo Periférico maestroEstructura Universal de un Bus
Memoria Principal Interfaz serie Interfaz paralelo ProcesadorLÍNEAS: Datos, Direcciones, Control
Controlador de disco
Controlador de cinta
Maestro Esclavo Esclavo
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
– 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
Memoria Procesador Disposi-tivo E/S Disposi-tivo E/S Disposi-tivo E/S BUS • 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
Desventajas
BUS Disposi-tivo 2 Disposi-tivo 3 Procesador Disposi-tivo 1 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
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
Líneas de Control Líneas de Dirección Líneas de Datos
Esclavo
• 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
Jerarquía de Buses: Un Sistema de 3 Buses
Procesador Memoria Principal Bus Sistema Adaptador Bus Adaptador Bus Adaptador BusBus Expansión E/S (IDE, USB, etc.)
PCI, AGP
Bus Expansión E/S
Vídeo LAN FireWire Memoria Cache Bus Local Interfaz de Memoria
• 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
Ejemplo: Computador basado en Jerarquía PCI
Bus LOCAL:
Procesador/Cache
Bus del SISTEMA (PCI)
Buses de EXPANSION E/S: ISA, USB
Ejemplo: Computador basado en Jerarquía PCI
Tipos de
Transferencias:
• Procesador-Memoria • Procesador-E/S • E/S-MemoriaEspecificación Normalizada de un Bus
Protocolo Transacción Direc R/W Temporización de Señales v t Datos Nivel Lógico Características Físicas/Mecánicas Especificación Eléctrica de las Señales BUSTema 3/13
Normalización de un Bus
• Características Físicas/Mecánicas
– 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
Temporización Síncrona
Bus- Acceso Bus- Petición Cmd+Addr Dirección + Orden Data1 Data2 Datos Data1 Espera (Wait) RELOJ• El destinatario indica cuándo está preparado para transferir datos • La transferencia real se realiza a la frecuencia del RELOJ
Tema 3/16
Temporización Asíncrona
Dirección Datos Lectura/Escritura Petición ReconocimientoMaestro activa “Dirección” Maestro activa “Datos”
Próxima “Dirección” Transacción de
ESCRITURA
t0 t1 t2 t3 t4 t5
CICLO de Bus
• 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”
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
Arbitraje
• Petición del Bus :
– 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
Tipos de Arbitrajes
Arbitro PCI Dispositivo PCI REQ# GNT# Dispositivo PCI REQ# GNT# Dispositivo PCI REQ# GNT# Dispositivo PCI REQ# GNT# BUS Centralizado “Daisy Chain” Arbitro PCI Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# BUS “Centralizado”Tipos de Arbitrajes
BUS Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Distribuido por Detección de Colisión de Señales (Ethernet)Tipos de Arbitrajes
Distribuido por Autoselección
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
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) Data2 Data3 Datos Data1 RELOJTransferencias de Ciclo Completo
Buses MultiplexadosBuses Dedicados
Tiempo
Dirección Dato Dirección
Operación de escritura (multiplexada)
Dato
Operación de escritura (no multiplexada)
Dirección Tiempo acceso Dato
Operación de lectura (multiplexada)
Dirección Dirección Lect Escr
Dato
Lectura-Modificación-Escritura
Operación de lectura (no multiplexada)
Dirección Escri Lect
Transferencias de Ciclo Partido
Dirección Dato Dato Dato
Transferencia de un bloque de datos (Burst)
Trasacción 1
Arbitraje Petición Error Snoop Respuesta Datos
Trasacción 2
Arbitraje Petición Error Snoop Respuesta Datos BCLK
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/sEstudio de Casos: Bus PCI
Bus PCI 0
BRIDGE Agente PCI
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 Arbitro PCI Dispositivo PCI (Slot 1) GNT# REQ# Dispositivo PCI (Slot 2) GNT# REQ# Dispositivo PCI (Slot 3) GNT# REQ# Dispositivo PCI (Slot 4) GNT# REQ# AD0-31 C/BE0-3 Control IDSEL /INTA..D PCI HOST (Puente Norte) PCI HOST (Puente Norte) 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
procesador-memoria y periférico PCI-periférico PCI
Niveles
Físico-Mecánico-Eléctrico:
Conector PCI
Organización de pines para eliminar Paradiafonía
(Crosstalk) 5 voltios
Tema 3/32
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
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
Arbitraje PCI
• Centralizado
• Interrupciones activas por nivel, se pueden
unir varias líneas
• Sin algoritmo especificado para prioridad
• No relentiza las transferencias
BUS PCI Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Dispositivo PCI GNT# REQ# Arbitro PCI
Arbitraje PCI
Bus PCI
FRAME#, IRDY#, TRDY#, AD, CLK
A
B
REQ#A GNT#A REQ#B GNT#B
Arbitro PCI
• Modos multiplexados :
– ”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)
Transferencias
de Datos
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
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
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 D= 1
RESERVADO Nº de BUS PCI en la estructura jerárquica (0...255) Nº de dispositivo PCI (0...31) conectado a bus Función (multifunci onales) Nº de Registro de la Ventana Configuración (64 regs) Tipo CONFIG_DATA (E/S= 0x0cfc) 31 0
DATO
Area de Configuración PCI
64 Byte Header
192 Bytes available for PCI
Unit Unit ID Manufacturer ID 0 15 16 31 Status Command
Class Code Revision
BIST Header Latency CLS
00h 04h 08h 0Ch
Base Address Register
10h 24h Reserved Reserved 28h 2Ch
Expansion ROM Base Address Reserved Reserved 30h 34h 38h INT-Line INT-Pin MinGNT MaxLat
256-byte Configuration Area and 64-byte Header
Offset
(6)
CONFIG_ADDRESS CONFIG_DATA
3Ch
En el interior del controlador
P CI Cabecera Dependiente del Dispositivo Formato Fijo 16B
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
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
Ejemplo
pci_bios_present: find_pci_device(); DX: fabricante (8086=“Intel”) CX: unidad (7190=“440BX Host/PCI”) SI= indiceVersión: x.y; x=BH, y=BL EDX=PCI; 00 49 43 50 Carry=NC; si PCI-BIOS
Carry=NC; comando OK
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
Ejemplo: Arranque PC
Bus No Device No. Func. No. Vendor ID DeviceID 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
Ejemplo:
PCItree
(
www.pcitree.de)
Interrupción PCI Interrupción IRQx
Situación del módulo en la jerarquía PCI DID.VID
Jerarquía PCI
Area de Configuración