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
Procesador
Bus local
Host-PCI
Bus PCI
Maestros
Esclavos
PCI
PCI
Bus PCI
Maestros
Esclavos
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 Id Bus
(7)
(8)
Nº Dispositivo
(5)
Función
(3)
Registro
(6)
00
(2)
continuará
Descargar

PCI y II