270 likes | 449 Views
Bus PCI. J. P. Oliver Instituto de Ingeniería Eléctrica Facultad de Ingeniería Universidad de la República. ISA EISA VESA Micro Channel PCI PCI PCI-X 64 bits 133MHz PCI Special Interest Group. PCI Local Bus Specification Rev 2.2, Dec. 1998.
E N D
Bus PCI J. P. Oliver Instituto de Ingeniería Eléctrica Facultad de Ingeniería Universidad de la República
ISA EISA VESA Micro Channel PCI PCI PCI-X 64 bits 133MHz PCI Special Interest Group. PCI Local Bus Specification Rev 2.2, Dec. 1998. PCI to PCI Bridge Architecture Specification Rev 1.1, Dec. 1998. PCI System Design Guide PCI BIOS Specification www.pcisig.com Introducción 32 bits, 33MHz 64 bits, 66MHz
Características principales • Síncrono • Arbitrado • Configurable en booteo • Master / Target • 3 espacios de direcciones • Transferencias BURST (ráfagas) • Direcciones y datos multiplexadas • 5V ó 3.5V • Configuración • Memoria • I/O
CPU local bus Memory bus Host/PCI Cache/Bridge CPU Memory Video Audio PCI bus ISA bridge SCSI LAN PCI/PCI bridge ISA bus SCSI bus ISA board PCI bus
Intel 430HX PCIset System Block Diagram http://www.intel.com/design/chipsets/designex/29746702.PDF
Master / Target • Master (Iniciator) • pide el bus • inicia transferencias RD o WR • Target • acepta transf. si es direccionado RD o WR • puede terminar
cben[3..0] Bus Command 0000 Interrupt acknowledge 0001 Special cycle 0010 I/O read 0011 I/O write 0100 Reserved 0101 Reserved 0110 Memory read 0111 Memory write cben[3..0] Bus Command 1000 Reserved 1001 Reserved 1010 Configuration read 1011 Configuration write 1100 Memory read multiple 1101 Dual address cycle (DAC) 1110 Memory read line 1111 Memory write andinvalidate PCI bus commands
Software • ¿Cómo acceder a un periférico PCI? • En general están mapeados en memoria • Hay funciones del BIOS para detectar los diferentes dispositivos y sus rangos de direcciones. • PCI usa direcciones físicas • Hay funciones para copiar • PCI - memoria • memoria - PCI
Software • Sistemas operativos “en serio”: Linux, NT • solo se puede acceder con un device driver • En DOS puro no se llega a direcciones de memoria tan altas • DPMI (DOS Protected Mode Interface) • http://www.delorie.com/djgpp/
Problemas • Lograr burst en ambos sentidos en plataformas PC • Velocidad del diseño • Target solo ó Master Target ? • DMA ? • Software: si usamos un SO de “verdad” es necesario implementar un DEVICE DRIVER
Guías para un diseño eficiente • Las elecciones en el diseño de la interfaz PCI son de vital importancia para determinar la performance del sistema. • Las diferencias de performance en diferentes placas PCI son causadas por diferencias en la implementación de la interfaz PCI. • Hay reglas a seguir que determinan un sistema eficiente y de alta performance.
Reglas Para Un Diseño PCI Eficiente Implementarcomandos PCI avanzados. • Usar Memory Read Line (MRL) para lecturas menores a 1 línea de cache y de más de 4 bytes (en lugar de realizar una Lectura Común). En porcesadores Pentium y Pentium pro una línea de cache es de 32 bytes (8 Dwords). • Usar Memory Read Multiple (MRM) para lecturas de un tamáño mayor a 1 línea de cache. • Usar Memory Write Invalidate (MWI) para escrituras a múltiples líneas de cache (deben estar alineadas). No terminar un comando Memory Write (MW) largo para empezar un comando MWI.
Reglas Para Un Diseño PCI Eficiente Usar bursts largos. • Paralecturas, es necesario utiliar bursts de al menos 64 Dwords (32 bit words) para obtener buena performance en algunas plataformas. • Para escrituras, los bursts deben ser al menos tan largos como el cache line. Usar comandos de memoria, no comandos de I/O.
Reglas Para Un Diseño PCI Eficiente Minimizar Latencia. • Responder a accessos lo más rápido posible y tratar de evitar insertar estados de WAITen de las transferencias de bloques. Seguir las reglas, NO experimentar. • Es posible obtener sistemas de buena performance sin seguir las reglas, pero este sistema puede no comportarse bien en sistemas futuros.
Algunas Conclusiones • PCI no es fácil (comparado con ISA) • Un core PCI requiere gran cantidad de celdas • Diseño cuidadoso para cumplir requisitos de tiempos (con los chips de la ARC-PCI) • Para lograr buena velocidad es necesario Master/Target con DMA
¿En Qué Estamos? • ARC-PCI • Desarrollar una interfaz PCI que pueda transferir burts sin wait en ambos sentidos • Desarrollar una biblioteca hardware transparente al programador • Desarrollar un driver Linux • Desarrollar un core PCI propio • Diseñar una nueva placa PCI con chips más rápidos y SDRAM