1 Estructura y Tecnología de Computadores Módulo D. Buses del computador Tema 6. Características y protocolos de los buses José Manuel Mendías Cuadros Dpto.. Arquitectura de Computadores y Automática Universidad Complutense de Madrid 2 contenidos 1. Introducción Definición de bus. Modo de operación. Parámetros de caracterización. 2. Clasificación de las líneas del bus Según su función. Según su uso. Según sus características eléctricas 3. Protocolos de transferencia Función. Protocolo síncrono. Protocolo asíncrono. Protocolo semisíncrono. Protocolo de ciclo partido 4. Protocolos de arbitraje Función. Protocolos centralizados vs. protocolos distribuídos. Protocolo en estrella. Protocolo daisy-chain de 2 hilos. Protocolo de 3 hilos. Protocolo de 4 hilos. Protocolo de líneas de identificación. Protocolo de códigos de identificación 5. Ejemplos MC68000. i8086
3 1. introducción Un bus es un medio de transmisión compartido que interconecta dos o más dispositivos de un sistema digital Función: permitir la correcta comunicación entre los dispositivos interconectados Constitución: Conjunto de líneas (conductores eléctricos) compartidas por todos los dispositivos Cualquier señal transmitida por un dispositivo está disponible para los demás Si dos dispositivos transmiten simultáneamente las señales se solapan y la información se distorsiona. Conexiones en paralelo: varias señales viajan juntas sobre distintas líneas CPU Memoria DMA E/S BUS 4 1. introducción Modo de operación Elementos implicados en una transferencia: Bus master: Inicia y dirige las transferencias (CPU, DMA,...) Bus slave: Obedece y accede a las peticiones del master (memoria, interfaz E/S,...) Tipos básicos de transferencia: Escritura: Master DATO Slave Lectura: Slave DATO Master Ciclo de bus: cualquier transferencia completa Operaciones básicas: 1. Direccionamiento del slave 2. Especificación del tipo de operación (lectura o escritura) 3. Transferencia del dato 4. Finalización del ciclo de bus Control de la transferencia: Sincronización: determinar el inicio y el final de cada transferencia Arbitraje: controlar del acceso al bus en caso de varios masters
5 1. introducción Parámetros de caracterización Capacidad de conexión: número máximo de dispositivos conectables Longitud de bus: máxima distancia que puede separar a dos dispositivos conectados Ancho de bus: número total de líneas ejemplos: i8086: 40; MC68000: 64; Multibus II: 96; VME: 128 Ancho de datos: número total de líneas para datos Ancho de banda: caudal máximo de información que puede transmitirse ejemplos: VME: 40 Mb/s; PCI: 132 Mb/s; POWERpath-2: 1 2 Gb/s; AlphaServer 8000: 2 1 Gb/s Protocolo de transferencia: método utilizado para sincronizar master y slave Protocolo de arbitraje: método utilizado para la resolución de conflictos de acceso por varios masters 6 según su función 2. clasificación de las líneas del bus Líneas de datos (bus de datos): transmiten datos Líneas de direcciones (bus de direcciones): designan la fuente o el destino de un dato Líneas de control: gobiernan el acceso y el uso de las líneas de datos y direcciones Líneas de operación: determinan el tipo de operación que debe realizar el slave Líneas de sincronización: determinan el comienzo y final de cada transferencia Líneas de arbitraje: determinan cual de los elementos conectados puede usar el bus según su uso Líneas dedicadas: tienen asignada una única función Líneas multiplexadas: realizan distintas funciones a lo largo del tiempo Ventajas: menor número de líneas ahorra espacio menor coste Desventajas: Circuitería más compleja y menor rendimiento (las funciones que realizan las líneas multiplexadas no pueden realizarse en paralelo) Líneas multiplexadas Tiempo Líneas dedicadas Tiempo Bus datos y direcciones (1º ciclo) Dato (2º ciclo) Bus direcciones Bus datos Dato
7 2. clasificación de las líneas del bus según sus características eléctricas Líneas unidireccionales con un transmisor y múltiples receptores: en cada instante, sólo un dispositivo puede escribir sobre la línea Ejemplo: líneas de dirección Tipo de driver: TRI-STATE (tres estados de salida: high, low, off) Líneas unidireccionales con múltiples transmisores y un receptor: múltiples dispositivos pueden escribir sobre la línea de forma simultánea Señal resultante: O-lógica (cableada) de las distintas fuentes Ejemplo: líneas de petición de interrupción Tipo de driver: OPEN-COLLECTOR (dos estados de salida: activo e inactivo) Líneas bidireccionales: un mismo dispositivo puede transmitir o recibir a través de las líneas Ejemplo: líneas de datos Tipo de driver: TRANSCEIVER (tiene capacidad para transmitir o recibir) 8 3. protocolos de transferencia Función: Sincronizar los elementos implicados en una transferencia (master y slave) Determinar el comienzo y el final de cada transferencia Tipos de transferencia: Lectura Escritura Lectura de bloque Escritura de bloque Lectura-modificación-escritura Lectura después de escritura Tipos de protocolos de transferencia: Síncrono Asíncrono Semisíncrono Ciclo partido
9 3. protocolos de transferencia Protocolo síncrono Las transferencias están gobernadas por una única señal de reloj compartida por todos los dispositivos Cada transferencia se realiza en un número fijo de periodos de reloj (1 en el ejemplo) Los flancos del reloj (de bajada en el ejemplo) determinan el comienzo de un nuevo ciclo de bus y el final del ciclo anterior Ciclo Ciclo Ciclo Bus Master Bus Slave Reloj Datos R/W* Reloj Datos M S S M M S ESCRITURA LECTURA ESCRITURA tiempo que debe ser superior a: t. decodificación + t. setup + t. skew tiempo que debe ser superior a: t. setup + t. skew tiempo que debe ser superior a: t. hold 10 3. protocolos de transferencia Temporización: Tiempo de decodificación (decode time): tiempo necesario para que slave decodifique la dirección Tiempo de estabilización (setup time): tiempo antes del flanco de reloj que deben permanecer estables las señales para asegurar su correcto almacenamiento Tiempo de permanencia (hold time): tiempo después del flanco de reloj que deben permanecer estables las señales para asegurar su correcto almacenamiento Tiempo de desplazamiento relativo de las señales (skew time): diferencia de tiempo entre la llegadas al receptor de dos señales que partieron del emisor simultáneamente Retardo Relativo Origen Destino A0 A1 skew Ventajas: Simplicidad (de diseño y de uso) Sólo se necesita una señal (reloj) para llevar a cabo la sincronización Mayor velocidad (en relación a protocolo asíncrono) Desventajas: El periodo de reloj se tiene que adaptar a la velocidad del dispositivo más lento (por lo que suele usarse para conectar dispositivos homogéneos) No existe confirmación de la recepción de los datos La necesidad de distribuir la señal de reloj limita la longitud del bus Ejemplos: MC6800, MC6809
11 3. protocolos de transferencia Protocolo asíncrono No existe señal de reloj Los dispositivos implicados en la transmisión fijan el comienzo y el final de la misma mediante el intercambio de señales de control (handshake) Se utilizan 2 señales de sincronización: Master SYNC (procedente del master) Slave SYNC (procedente del slave) Protocolo completamente interbloqueado, a cada flanco del master le sigue uno del slave Ciclo de escritura: 1: (M a S) Hay un dato en el bus 2: (S a M) He tomado el dato 3: (M a S) Veo que lo has tomado 4: (S a M) Veo que lo has visto (Bus libre) Ciclo de lectura: 1': (M a S) Quiero un dato 2': (S a M) El dato está en el bus 3': (M a S) He tomado el dato 4': (S a M) Veo que lo has tomado (Bus libre) Bus Master Datos R/W* Master SYNC Slave SYNC 1 3 Master SYNC Slave SYNC 2 4 Datos M S ESCRITURA Tiempos de Tiempos de 1' Bus Slave 2' 3' S M 4' LECTURA estabilización decodificación desplazamiento relativo estabilización desplazamiento relativo 12 3. protocolos de transferencia Protocolo asíncrono (cont) Ventajas: Facilidad para conectar elementos de diferentes velocidades Fiabilidad: la recepción siempre se confirma. Desventajas: El intercambio de señales de control introduce retardos adicionales A igualdad de velocidades de los dispositivos, menos eficiente que el síncrono Ejemplos: Unibus (PDP-11), MC680XX(10,20,30), Bus VME, FutureBus+
13 3. protocolos de transferencia Protocolo semisíncrono Las transferencias se rigen por una única señal de reloj Cada transferencia puede ocupar uno o varios periodos de reloj Señal de WAIT (puede activarla cualquier Slave y debe llegar antes que el flanco de reloj) Dispositivos rápidos: operan como en un bus síncrono (una transferencia por ciclo) Dispositivos lentos: activan la señal de WAIT y congelan actuación del Master (una transferencia puede ocupar varios ciclos) Ejemplos: i80x86, MC68040, Multibus II, Bus PCI, DEC 7000/10000 AXP Datos R/W* Reloj WAIT Bus Master Bus Slave Reloj Datos M S M S S M S M WAIT ESCRITURA NORMAL ESCRITURA LENTA LECTURA NORMAL LECTURA LENTA 14 3. protocolos de transferencia Protocolo de ciclo partido Mejora el rendimiento del bus en las operaciones de lectura El ciclo de lectura se divide en dos transacciones separadas El Master envía al Slave la petición de lectura y deja el bus libre Cuando el Slave dispone del dato solicitado, inicia un ciclo de bus y envía el dato al Master (Slave actúa como master del bus) Desventajas: Lógica más compleja: ambos dispositivos deben ser capaces de actuar como Master y como Slave Necesidad de incluir un protocolo de arbitraje Ejemplos: VAX-11/780, iapx-432 Dir. Slave Dir. Master Master SYNC Slave SYNC Datos Master envía dirección a Slave Bus libre S M Slave envía dato a Master (Slave actúa como bus master)
15 Función: Garantizar el acceso al bus libre de conflictos cuando existen varios masters alternativos Procesador + Controladores DMA Procesador + Procesador de E/S + Coprocesador matemático +... Sistema multiprocesador Tipos de protocolos de arbitraje Centralizados: existe un árbitro del bus o master principal que controla el acceso al bus Protocolo en estrella Protocolo daisy-chain de dos hilos Protocolo de tres hilos Protocolo de cuatro hilos Distribuidos: el control de acceso al bus se lleva a cabo entre todos los posibles masters de una forma cooperante Protocolo de líneas de identificación Protocolo de códigos de identificación 16 Protocolo en estrella Cada master se conecta al árbitro mediante dos líneas individuales: BUS REQUEST: línea de petición del bus BUS GRANT: línea de concesión del bus REQ GNT REQ GNT Arbitro M n REQ GNT Varias peticiones de bus pendientes: el árbitro puede aplicar distintos algoritmos de decisión FIFO Prioridad fija Prioridad variable Ventajas: Algoritmos de arbitraje simples Pocos retardos de propagación de las señales (en comparación con protocolos daisy-chain) Desventajas: Número elevado de líneas de arbitraje en el bus (dos por cada posible master) Número de masters alternativos limitado por el número de líneas de arbitraje Ejemplo: PCI
17 Protocolo daisy-chain de 2 hilos Dos líneas de arbitraje comunes BUS REQUEST: Línea de petición del bus BUS GRANT: Línea de concesión del bus REQUEST OUT IN Arbitro GRANT IN OUT OUT IN IN OUT OUT IN M n Funcionamiento: El master que quiere tomar el control del bus activa REQUEST Los restantes masters propagan REQUEST hasta el árbitro El árbitro activa GRANT Si un master recibe GRANT y no pidió el bus, propaga GRANT al siguiente Si un master recibe GRANT y tiene una petición pendiente, toma el control del bus Prioridades: El orden en que se conectan los Masters a las líneas de arbitraje determina la prioridad de los mismos Ejemplo: bus i8086 Situaciones típicas: 1) M k pide el Bus Cuando Mk recibe GRANT toma el control del bus 2) M k recibe una petición de M k+1 Cuando Mk recibe GRANT la propaga a M k+1 3) M k pide el bus Cuando M k recibe GRANT toma el control del bus Mientras M k controla el bus, recibe una petición de M k+1 Cuando M k termina de usar el bus, propaga GRANT a M k+1 Señales del master Mk REQUEST IN REQUEST OUT GRANT IN GRANT OUT 1 2 Petición local del master Mk Petición local + Control del bus del master Mk 3 18 Protocolo daisy-chain de 2 hilos (cont) Situación conflictiva 1 1) pide el Bus 2) detecta GRANT IN y toma el control del bus 3) pide el bus. detecta GRANT IN y toma el control del bus Solución Un master sólo puede tomar el control del bus cuando detecta el flanco de subida de GRANT IN Situación conflictiva 1 REQUEST OUT GRANT IN REQUEST OUT GRANT IN 1 2 3 Conflicto! Situación conflictiva 2 1) controla el bus 2) Cuando deja de controlar el bus, a) pide el control b) M 3 pide el control 3) Como tiene GRANT IN todavía activada propaga GRANT a M 3, que toma el control 4) Al mismo tiempo recibe GRANT in del árbitro y toma el control Solución Un master M i sólo puede propagar GRANT al terminar de usar el bus, si REQUEST IN se activó antes de que Mi desactivase su petición local Situación conflictiva 2 M 3 REQUEST OUT GRANT IN REQUEST OUT GRANT IN REQUEST OUT GRANT IN 1 2b 4 Conflicto! 2a 3 Petición local Petición local + Control del bus
19 Protocolo de 3 hilos Líneas de arbitraje: BUS REQUEST: línea de petición de bus BUS GRANT: línea de concesión del bus BUS BUSY: línea de bus ocupado Arbitro GRANT REQUEST BUS BUSY M n Funcionamiento: Cuando un master toma el control del bus activa BUS BUSY Un master solicita el bus activando REQUEST El árbitro activa GRANT cuando detecta REQUEST activado y BUS BUSY desactivado Si un master recibe GRANT y no ha pedido el bus, entonces propaga GRANT al siguiente Un master puede tomar el control del bus si se cumplen las tres condiciones siguientes: a) El master tiene una petición local pendiente b) La línea BUS BUSY está inactiva c) El master recibe el flanco de subida de la señal GRANT Ejemplo: VME 20 Protocolo de 3 hilos (cont) Situaciones típicas 1) solicita el bus. Bus libre Cuando detecta el flanco de GRANT toma el control del bus 2) solicita el bus. Bus ocupado debe esperar bus libre y detectar el flanco de GRANT 3) solicita el bus. Bus libre. GRANT activado debe esperar que GRANT baje y vuelva a subir REQUEST GRANT BUS BUSY Master M1 Master M2 1 3 Master con solicitud del bus pendiente 2 Master con el control del bus
21 Protocolo de 4 hilos Permite solapar la transferencia del ciclo actual con el arbitraje del ciclo siguiente Líneas de arbitraje: BUS REQUEST: línea de petición de bus BUS GRANT: línea de concesión del bus BUS BUSY: línea de bus ocupado BUS ACK: línea de confirmación La activa el master que solicitó el bus en respuesta a BUS GRANT, cuando el bus está ocupado Cuando está activada el árbitro queda inhibido Ejemplo: Unibus (PDP-11), MC68000 Arbitro GRANT REQUEST BUS BUSY BUS ACK M n controla el bus controla el bus BUS BUSY REQUEST pide el bus pide el bus GRANT BUS ACK Arbitro inhibido 22 Protocolo de líneas de identificación Funcionamiento: Cuando un master quiere tomar el control del bus activa su línea de identificación Cada línea de identificación tiene asignada una prioridad: Prioridad(ID 1 )<Prioridad(ID 2 )<...< Prioridad(ID n ) Si varios masters activan simultáneamente sus líneas de identificación, gana el de mayor prioridad Funcionamiento alternativo: las prioridades pueden ser variables Desventajas: Número de dispositivos limitado por el número de líneas de arbitraje Ejemplos: Prioridad fija: VAX SBI, SCSI Prioridad variable: DEC 70000/10000 AXP, AlphaServer 8000 M n ID 1 ID 2 ID n
23 Protocolo de códigos de identificación Funcionamiento: Cada master tiene un código de identificación de n bits (máximo 2 n masters) Existen n líneas de arbitraje: ARB 0, ARB 1,..., ARB n-1 Cuando un master quiere tomar el control del bus pone su código en las n líneas de arbitraje Si varios masters compiten por el bus, gana el de mayor identificador Ejemplos: Multibus II, Futurebus+ M n ARB 0 ARB 1 ARB n-1 24 5. ejemplos: MC68000 Bus datos (16 bits) líneas D0-D15 Bus de direcciones (24 bits) líneas A1-A23 (no existe línea A0) LDS* (Lower Data Strobe) Selecciona el byte menos significativo MC68000 UDS* (Upper Data Strobe) Selecciona el byte más significativo Control de operación: R/W* (Read/Write) 1 Lectura; 0 Escritura Protocolo de transferencia asíncrono: AS* (Address Strobe): equivale a MASTER SYNC DTACK* (Data Transfer Acknowledge): equivale a SLAVE SYNC Protocolo de arbitraje de 4 hilos con MC68000 como arbitro: BR* (Bus Request): equivale a BUS REQUEST BG* (Bus Grant): equivale a BUS GRANT BGACK* (Bus Grant Acknowledge): equivale a BUS ACK Las señales AS* y DTACK*: hacen la función de BUS BUSY (si están activadas indican que el bus está ocupado) El MC68000 utiliza un reloj interno para marcar el inicio de todas las operaciones que realiza sobre el bus, este reloj NO es compartido por los slaves (el protocolo es asíncrono) D0-D15 A1-A23 UDS* LDS* AS* DTACK* BR BG* BGACK* R/W* bus datos bus direcciones líneas de sincronización líneas de arbitraje lectura/escritura
25 5. ejemplos: MC68000 Ciclo de escritura Ciclo de lectura Acciones del master (MC68000) Acciones del slave Acciones del master (MC68000) Acciones del slave S1: - Pone la dirección en A1-A23 S2: - Activa R/W* para escritura (R/W* = 0) - Activa AS* (MASTER SYNC) S3: - Pone los datos en D0-D15 S4: - Activa las señales UDS*, LDS* S8: - Desactiva AS* - Desactiva UDS*, LDS* S9 - Desactiva R/W* - Quita la dirección de A1-A23 - Quita los datos de D0-D15 - Decodifica la dirección - Almacena los datos de D0-D15 - Activa DTACK* (SLAVE SYNC) (Si DTACK* no está activado al inicio de S7, el Master introduce estados de espera SW entre S6 y S7) S1: - Pone la dirección en A1-A23 S2: - Activa R/W* para lectura (R/W* = 1) - Activa AS* (MASTER SYNC) - Activa las señales UDS*, LDS* S6: - Almacena los datos presentes en D0-D15 - Desactiva AS* - Desactiva UDS*, LDS* - Desactiva R/W* S7: - Quita la dirección de A1-A23 - Decodifica la dirección - Pone los datos en D0-D15 - Activa DTACK* (SLAVE SYNC) (Si DTACK* no está activado al inicio de S5, el Master introduce estados de espera SW entre S4 y S5) - Desactiva DTACK* - Desactiva DTACK* S0: - Inicia nuevo ciclo S0: - Inicia nuevo ciclo 26 5. ejemplos: MC68000 NOTA: El MC68000 es a la vez master y árbitro. Por defecto tiene control del bus y por ello AS* y DTACK* (que actúan como BUS BUSY) están habitualmente activadas. Cuando otro master alternativo desea utilizar el bus, el MC68000 solapa el arbitraje con la transferencia actual. Arbitraje: 1) el master alternativo activa BR* 2) el MC68000 activa BG* para indicar que el bus estará libre al final del ciclo actual (cuando se desactiven AS* y DTACK*) 3) cuando el master alternativo controla el bus, activa BGACK* para inhibir al MC68000, que responde desactivando BG* 4) el control del bus retorna al MC68000 cuando el master alternativo desactiva BACK*
27 Bus de datos (16 bits) multiplexado con parte baja de bus de direcciones líneas AD0-AD15 Bus de direcciones (20 bits) líneas AD0-AD15/A16-A19 Control de operación: RD*: lectura WR*: escritura MEM/IO* 1 con memoria; 0 con E/S ALE (Address Latch Enable) válida Protocolo de transferencia semisíncrono: CLK: reloj ciclo de bus = 4 ciclos de reloj mínimo READY: equivale a WAIT i8086 5. ejemplos: i8086 AD0-AD15 A16-A19 CLK ALE READY RD* WR* MEM/IO* HLDA HOLD bus datos/direcciones bus direcciones líneas de sincronización lectura escritura memoria/es líneas de arbitraje Activada al inicio de cada transferencia, la desactiva el slave si no puede completar la transferencia en el tiempo mínimo (4 ciclos) Protocolo de arbitraje de 2 hilos: HOLD: equivale a REQUEST HLDA: equivale a GRANT 28 5. ejemplos: i8086 Ciclo de lectura Ciclo de escritura Ciclo de lectura: T1: - i8086 pone la dirección - i8086 activa ALE T2: - i8086 pone el bus de datos en "estado flotante" - i8086 desactiva ALE - i8086 activa RD T3: - Slave pone el dato - Slave activa READY - i8086 copia el dato T4: - i8086 prepara bus para siguiente transferencia Ciclo de escritura: T1: - i8086 pone la dirección - i8086 activa ALE T2: - i8086 pone el dato T3: - Slave copia datos - Slave activa READY T4: - i8086 prepara bus para siguiente transferencia Ciclos Twait: Son ciclos de espera que introduce el i8086 si el slave desactiva READY durante T2
29 5. ejemplos: i8086 Arbitraje: 1) El master alternativo activa HOLD 2) El i8086 finaliza el ciclo de bus actual y activa HLDA para indicar que el bus estará libre en el siguiente ciclo de reloj 3) El master alternativo desactiva HOLD y toma el control del bus durante un ciclo de bus