PCI II
Estructura del bus
• El bus puede tener varios segmentos.• Un “puente” une dos segmentos• Cada segmento recibe un número de
identificación dentro del sistema de buses.• La asignación de números de identificación se
realiza en profundidad• Cada “puente” conoce qué segmentos hay
“debajo” de ella.• La interfaz host-pci es la raíz del árbol y sabe
cuántos segmentos hay en el sistema.
Estructura
Host-PCI
Procesador
Maestros Esclavos PCI -PCI
EsclavosMaestros
Bus local
Bus PCI
Bus PCI
Estructura del bus
• Dispositivos:– Un dispositivo puede hospedar hasta 8
funciones. – La función es la que proporciona la
funcionalidad de entrada/salida– Los dispositivos en un segmento están
ordenados por una línea IDSEL#• Dos configuraciones:
– conectadas al “puente”. – Conectadas a las líneas de dirección del bus.
Estructura del bus
• Funciones– Cada función tiene un conjunto de registros
de configuración.• VendorID: indica si la función está implementada
en el dispositivo o no.– Si sólo hay una función en un dispositivo debe ser la 0. – Si hay más de 1, las otras pueden ser cualquiera (no
necesariamente en orden secuencial)
Estructura
• Registros de configuración.– 64 registros de 32 bits
• Tipo de función, requerimientos de configuración, datos del fabricante.
• Genéricos-Obligatorios Device Independent(16)– DeviceID, VendorID, ClassCode, Status, Command...
• Dependientes de la función-Obligatorios Device Header(48)– Dispositivos Estándares
– PCI-PCI Bridges
– CardBus Bridges
• Dependientes de la función-Específicos Device Dependent(192)
Registros de configuración.
Registros de Configuración
DEVICE INDEPENDENT
DEVICE HEADER
Device Independent
• VendorID: Identificador del fabricante (PCI SIG)• DeviceID: Identificador del dispositivo (Fabricante)• Command: Capacidades del dispositivo para generar y
responder a los accesos.• ¿Es maestro o esclavo?• Responde a transacciones de I/0, Mem, Ciclos especiales, Escritura
e Invalidación? Etc
• Status: graba los eventos que ocurren en el bus. (monitorización)
• RevisionID: Revisión del dispositivo (fabricante)• ClassCode: Describe la función genérica del dispositivo.
Class Code Reg
Device Dependent
• I/O and Memory Base Registers– Es el medio por el que un dispositivo solicita
direcciones I/O y memoria del espacio de direcciones del procesador.
– Permite que el espacio asignado sea dinámicamente mapeado en el espacio de direcciones del procesador.
Registro base de I/0
Escribir en el registro 0ffffffffh
Leer el registro. El primer bit ha de estar a 1
A partir del bit 2, buscar el primer bit a 1, sea la posición i
Se solicitan 2i localizaciones de memoria.
Asignarle una dirección alineada a 2i
Registro base de memoria
Escribir en el registro 0ffffffffh
Leer el registro.
El primer bit ha de estar a 0
A partir del bit 4, buscar
el primer bit a 1, sea la posición i
Se solicitan 2i localizaciones de memoria.
Asignarle una dirección alineada a 2i
Asignación de interrupciones.
• Interrupt Line: Identifica a qué línea de interrupción del controlador de interrupciones está conectado este dispositivo.
• Interrupt Pin: Identifica a qué línea de interrupción de PCI está conectado este dispositivo– INTA#,INTB#,INTC#, INTD#
Espacio de direcciones de configuración.
• Para acceder al espacio de configuración: – 0CF8h: CONFIG_ADDRESS
• Registro de 32 bits. Accesos en DWord (32)
– 0CFCh: CONFIG_DATA• Ventana: 8, 16, 32 bits.
E
(1)
Reservado
(7)
Id Bus
(8)
Nº Dispositivo
(5)
Función
(3)
Registro
(6)
00
(2)