Desarrollo de un Driver bajo Windows 95 para un bridge PCI-SCI Autores: Antonio Gimenez, Juan A. Mas, Francisco Mora, Ricardo J. Colom, Angel Sebastia Abstract El siguiente trabajo expone el desarrollo de un driver de comunicaciones para una tarjeta interface entre el bus PCI (Peripheral Component Interconnect ) y la red de alta velocidad SCI (Scalable Coherent Interface). La red de interconexión SCI está siendo estudiada para aplicarse dentro del sistema de adquisición de datos de los detectores de partículas del Laboratorio Europeo de Física de Partículas (CERN). Con SCI es posible interconectar 65536 nodos (memorias o procesadores), proporcionando un gran ancho de banda (1 Gbyte/s). Las interconexiones pueden ser llevarse a cabo por medio de cable plano, coaxial, o fibra óptica. 1. Introducción En el próximo gran proyecto del Laboratorio Europeo de Física de Partículas (CERN), lo constituye el LHC (Large Hadron Collider), en el cual se van a producir una cantidad de datos por cada cruce de haces (cada 25 ns) sin precedentes hasta el momento. Los sitemas clásicos de adqusisición de datos, VME, FASTBUS, etc. no son posibles de utilizar en los nuevos detectores. La solución pasa por el estudio de redes de banda ancha, ATM, Fibre Channel, SCI, etc.. A continuación se comenta el desrrollo de un driver de comunicaciones para la red de interconexión SCI, la cual está siendo estudiada dentro del proyecto de I+D RD24 del CERN del que forma parte el departamento de Ingeniería Electrónica de la U.P.V.. 2. Descripción General SCI El estándar SCI (Scalable Coherent Interface) fue concebido en un intento de incrementar el ancho de banda de los buses en blackplane, superando los límites físicos encontrados en tales buses y, de esta forma, satisfacer las necesidades de las nuevas generaciones de chips, algunos de los cuales pueden saturar los buses más rápidos que existen actualmente. La configuración básica de SCI es un anillo que contiene varios nodos conectados entre si por enlaces (links) unidireccionales punto a punto (figura 1). Cada aplicación se conecta a SCI a través de un nodo, el cual es visto por la aplicación como un bus convencional. Los nodos, a su vez, se enlazan entre si con enlaces punto a punto a velocidad muy alta ya que no tienen las limitaciones de los backplanes. 1 Cada nodo está conectado al anillo SCI por un link (SCI IN) proveniente del nodo precedente y por otro link (SCI OUT) con destino al nodo siguiente y, a su vez, está conectado con la aplicación normalmente por el bus propio. Cuando un paquete que circule por el anillo llega al nodo, un decodificador de direcciones verá si el paquete es para ese nodo o no, en caso de que sí lo sea lo encaminará a una FIFO de entrada, en el caso contrario, lo será hacia una “bypass FIFO”, o sea, hacia el anillo SCI. Cuando se mande un paquete de salida a SCI, éste irá a una FIFO de salida y si no hay ningún paquete mandándose en ese momento, desde la bypass FIFO, el paquete será encaminado hacia el link de salida. Figura 1. Configuración básica de SCI. 2.1 Principales Características El SCI es la norma IEEE/ANSI 1596 que permite a sistemas crecer con componentes modulares de diferentes fabricantes. Características: • • • • • • • Flujo de datos en el anillo de hasta 1 Gbyte/s por nodo. Memoria distribuida compartida. Opcionalmente coherencia cache basada en directorios. Posibilidad de mecanismos de paso de mensajes. Escalable desde 1 hasta 64K procesadores. Enlaces de datos unidireccionales de 16 bits cada 2 ns. Todos los transceivers, FIFOs y lógica de protocolo incluyen Single-chip interfaces, con el consiguiente ahorro de costes y simplicidad. 2 • Posibles enlaces por fibra óptica o coaxial de 1 Gbit para aplicaciones LAN con protocolos eficientes de memoria compartida. • Mecanismos de interface a otros buses (VME, SBUS, PCI,...) • Arquitectura CSR (Control State Registers, IEEE Std 1212-1991). El propósito de SCI es definir un interface estándar para sistemas multiprocesadores de prestaciones muy altas, que soporten un modelo de memoria compartida coherente, y escalable a sistemas de un gran número de nodos, además debe facilitar la integración de procesadores, memoria, I/O y tarjetas que adopten el bus de diferentes fabricantes en sistemas de procesamiento paralelo masivo (MPP). Las siglas SCI se corresponden con: Escalabilidad (Scalability): un sistema es escalable cuando su funcionamiento es independiente del número de procesadores que en él intervengan. La escalabilidad en la arquitectura de un sistema posee varias dimensiones que atienden a eficiencia, coste económico., tamaño físico, direccionamiento, independencia del software, etc... Coherencia (Coherence): utilización de forma eficiente y coherente de la memoria cache en los sistemas multiprocesador con memoria compartida. Interface: disponer de una arquitectura de comunicación abierta que permita la utilización de múltiples productos de diversos fabricantes. La configuración básica de anillo en SCI es una reminiscencia del estándar FDDI (Fiber Distributed Data Interface). Así pues, posee características LAN y además, los nodos SCI, permiten la construcción de múltiples y complejas configuraciones que potencian y amplían las posibilidades de la red, por ejemplo, comunicando los distintos sistemas. Aun así, las diferencias entre la configuración en anillo SCI y el de FDDI son que en la comunicación FDDI cada nodo opera asíncronamente con respecto a su vecino mientras que en SCI la comunicación es síncrona transfiriendo símbolos continuamente. Otra diferencia importante es que el acceso al anillo en FDDI está controlado por una petición mientras que en SCI se gobierna el tema mediante memorias FIFO. 3. PCI y SCI en los próximos sistemas de adquisición de datos El bus local PCI se ha convertido en poco tiempo en el bus más utilizado no sólo por los PC´s, sino también por los módulos instalados en crates VME, FASTBUS, y otros sistemas de adquisición de datos. Por este motivo, se ha desarrollado un bridge PCI-SCI para interconectar SCI a la mayoría de sistemas existentes. El estándar SCI es en muchos aspectos complementario al bus PCI. SCI puede interconectar mediante enlaces punto a punto numerosos segmentos PCI a muy alta velocidad (1 Gbyte/s), con latencias del orden de 1 microsegundo por nodo. Como se muestra en la figura 1, SCI extiende las limitaciones físicas del bus PCI manteniendo el 3 ancho de banda de PCI. La extensión de PCI se ve completada por el hecho de que SCI está preparado para satisfacer las necesidades de sistemas con memoria distribuida, permitiendo a un nodo direccionar cualquiera de los otros como si fueran parte de su espacio de memoria, mapeando por hardware los ciclos PCI de forma transparente en el espacio de direcciones SCI. Este funcionamiento en modo transparente, puede ser complementado con el funcionamiento basado en el paso de mensajes, sin que haya problemas de coexistencia entre ambos.Un tercer modo de funcionamiento, basado en accesos directos a memoria (DMA) puede ser implementado para grandes transferencias de datos. Extensión del bus local PCI, a largas distancias con SCI. • El espacio de memoria PCI es extendido a través de SCI. • SCI puede interconectar varios nodos PCI sin problemas de saturación. • Bajas latencias de comunicación. • Cualquier dispositivo PCI puede iniciar la transacción. Figura 2. Jerarquía del bus PCI, conectado remotamente vía SCI. 4. Descripción del bridge El bridge ha implementa tres modos de funcionamiento, y la elección de uno u otro dependerá de la aplicación. • Transacciones transparentes entre los espacios de memoria PCI y SCI. En este modo el Host PCI no necesita librerías especiales para acceder a SCI, la reducción del software empleado en las transacciones se traduce en unas menores latencias entre nodos. Un nodo PCI puede acceder a la memoria de cualquier otro nodo, de igual forma que a su propia memoria. • Transferencias en modo DMA Direct ( Memory Access). Este modo está especialmente diseñado para grandes transferencias de datos entre nodos, de forma que sea el bridge quien lleve a cabo la transferencia, resultando el procesador libre para otras tareas. • Transferencia por paso de mensaje. Se implementan todas las transacciones hacia SCI mediante librerías software. Al requerir el uso de librerías software presentan unas prestaciones inferiores a las transacciones en modo transparente, pero a su vez son necesarias para realizar operaciones en SCI que no son posibles a partir del bus PCI, como por ejemplo la instrucción fetch&add. A su vez, este tipo de transferencia es necesaria para rutinas de inicialización, configuración diagnóstico y sincronización. 4 La arquitectura de la tarjeta se puede ver en la figura 3. La lógica se encuentra confinada entre dos buses: el bus secundario PCI de 32 bit/33 MHz y el bus BLINK (bus de aplicación utilizado por el chip de enlace LC-1 con SCI) de 64 bit/33 MHz. Las memorias de doble puerto almacenan los paquetes y producen la adaptación del ancho de bus. Figura 3. Esquema funcional de la tarjeta. 5. Accesos al Hardware con Windows 95 En el sistema operativo Windows, los VxDs (Virtual Drivers) son los responsables de implementar un entorno en el que el código de la aplicación pueda interactuar de forma satisfactoria con el hardware del PC. Esta tarea de mostrar una visión estándar del hardware a las aplicaciones se complica por el hecho que algunos de los interfases VxDs deben soportar la herencia del modelo de programa del DOS. Además, varias aplicaciones pueden solicitar simultáneamente el acceso al mismo hardware. Un VxD es un controlador de dispositivo. Las aplicaciones ven al sistema operativo como un interfaz abstracto del hardware gracias a los controladores de dispositivo, que permiten que el programador desconozca los detalles a bajo nivel del mismo. Esto facilita el desarrollo de una aplicación, lo que lleva consigo que las aplicaciones y el sistema operativo sean mejores. Para permitir a Windows correr varias aplicaciones simultáneamente, los diseñadores del sistema operativo implementaron las llamadas máquinas virtuales, que son un entorno separado, en el que corre una aplicación. Cada una tiene su propio espacio de direcciones, registro de estado, pilas, tabla de descriptor local, tabla de estado de interrupciones y prioridad de ejecución. 5 La primera máquina virtual que se crea cuando Windows arranca es la llamada máquina virtual del sistema. Todas las aplicaciones de Windows y las DLLs corren en esta máquina virtual, y por consiguiente, todos comparten el mismo espacio de direcciones. (La excepción son las aplicaciones Win32 que corren bajo Windows 95, las cuales tienen sus propios espacios de direcciones). Una forma de distinguir entre el código de una aplicación y el código del sistema operativo es observar en que nivel de privilegio corre el código. Los microprocesadores tienen modos distintos de operación para la ejecución de código del sistema y ejecución de código de una aplicación. Los sistemas operativos aprovechan esta característica para dar mayor fiabilidad al sistema. Como la mayoría de los sistemas operativos, Windows se estructura en capas. Dentro de estos niveles, es de destacar que los VxDs corren en el anillo 0, el modo de operación más privilegiado, mientras que las aplicaciones corren en el anillo 3, y los anillos 1 y 2 no son usados actualmente. Los VxDs trabajan en un espacio plano de direcciones; el código, los datos, y los segmentos de pila tienen una base lineal de cero, y un límite de 4GB. Esto significa que la segmentación no existe; el offset de 32 bits es suficiente para direccionar cualquier posición dentro del espacio de direcciones del procesador. Un VxD especial es el llamado Virtual Machine Manager, o VMM, que juega el papel de administrador en el uso de recursos del sistema. El trabajo principal del VMM es crear, programar, y destruir las máquinas virtuales (VM) y, además, proporciona servicios a otros VxDs. Para la arquitectura de múltiples VM de Windows, es esencial esta capacidad para controlar, en software, toda la interacción entre aplicaciones y hardware. La tarea de un VxD es la de administrar un dispositivo virtual para cada máquina virtual cliente que necesite acceder al correspondiente dispositivo físico. Los VxDs proporcionan entornos de máquina virtual para aplicaciones clientes con accesos transparentes arbitrados por la capa situada en un anillo inferior, es lo que se llama virtualización. En la evolución desde Windows 3.1 a Windows 95, la importancia de VxDs ha crecido apreciablemente. Las operaciones que se realizaban antes con llamadas al modo real BIOS o a DLLs de 16 bits se manejan ahora en el entorno de modo protegido de 32 bits de VxDs. 6. VxD para el bridge PCI-SCI El bridge PCI-PCI que existe en la tarjeta permite la conexión del bus primario (Host PCI) con el secundario (y a través de éste al bus SCI) por medio de una ventana de direcciones físicas y de una ventana de I/O, que se establecen en el espacio de configuración del puente y son las que rigen la comunicación. El VxD se desarrolló para 6 implementar los accesos a través de dichas ventanas bajo el sistema operativo Windows 95. Al inicio del programa se carga el VxD, ya que es dinámico y sólo lo utiliza esta aplicación no siendo llamado por otros VxDs, con lo que no es necesario que esté permanentemente cargado. El VxD se ha implementado en C para una mayor sencillez en la programación, estando unicamente los módulos de especificación escritos en lenguaje ensamblador (por no existir otra alternativa). El VxD ofrece tres servicios: • Reserva de direcciones físicas, devolviendo un puntero. • Lectura de un puerto de I/O. • Escritura de un puerto de I/O. Como primer servicio se solicita el puntero a la dirección base de la ventana de direcciones. Este puntero permanecerá invariable durante la ejecución del programa. Además cada vez que se realice un acceso a I/O se debe llamar a un servicio del VxD, ya que sino otro VxD podría virtualizar los puertos y las llamadas a las funciones de I/O no se ejecutarían correctamente. En próximas ampliaciones deberán ofrecerse nuevos servicios para poder implementar el modo DMA de la tarjeta. 7. Resultados y conclusiones Para estas primeras pruebas, se ha utilizado un anillo de dos nodos. En el caso de utilizar transferencias por paso de mensaje el ancho de banda que se obtiene es de 53 Mbyte/s en operaciones de escritura y de 37 Mbyte/s en operaciones de lectura. Mientras que con accesos transparentes el ancho de banda que se consigue es de 69 Mbyte/s. El ancho de banda máximo puede estar limitado por el propio bus PCI. A pesar de disponer de un ancho de banda máximo teórico de 132 Mbyte/s, en la práctica, la saturación del bus se sitúa entorno a los 80 Mbyte/s. Los resultados de la primera versión son satisfactorios, y se esta estudiando y desarrollando una nueva versión del driver para el sistema operativo Windows NT. Un análisis más profundo de la tarjeta PCI-SCI, asi como ciertas modificaciones de su lógica interna, permitirán obtener prestaciones superiores a las comentadas anteriormente. 8. Aplicaciones 7 Al margen de la aplicación para la que se desarrolla este trabajo, existen otros grupos que investigan las posibilidades de SCI. Las más destacables son: • La realización de imágenes en 3D y Realidad Virtual, para modelar la atmósfera que se está llevando a cabo por el Laboratorio de Investigación Naval Americano (Naval Research Laboratory). • JAST es una coalición de las fuerzas militares americanas para desarrollar un nuevo avión de combate, esperando tener un primer prototipo para 1999. Como es muy difícil elegir el diseño de sistemas a tan largo plazo, una de las estrategias adoptada por la coalición es el uso del diseño modular con conexiones estándar SCI. Ya que SCI es la única tecnología disponible que puede cubrir las exigencias futuras del sistema y cubrir todas las áreas de aplicación, además de manejar todas las comunicaciones de la aeronave. Por comparación el avión F-22 emplea hasta siete tipos de buses distintos para cubrir todas sus necesidades. 9. Bibliografia PCI to PCI Bridge Architecture Specification, Rev 1.0 PCI Special Interest Group, P.O. Box 14070, Portland , OR 97214, USA PCI Local Bus Specification, "Review Draft" Revision 2.1 Octobert 1994, PCI Special Interest Group, P.O. Box 14070, Portland , OR 97214, USA RD24 Collaboration, "RD24 Status Report, Application of the Scalable Coherent Interface to Data Acquisition at LHC",CERN/DRDC 94-23, Status Report 9 May 1994 Scalable Coherent Interface IEEE 1596-1992, Distribution and copyrighrt by IEEE, 345 East 47th Street, New York, NY 10017-2394, USA CSR Architecture, IEEE 1212, Distribution and copyrighrt by IEEE, 345 East 47th Street, New York, NY 10017-2394, USA Backside Link ( B-Link) for Scalable Coherent Interface (SCI) Nodes, Draft 2.3. Dolphin Interconnect Solutions AS, P.O. Box 52, Bogerud, N-0621 OSLO, Norway, email: techsupport@sci.dolphinics.no DECchip 21050 PCI-to-PCI Bridge Dat Sheet, Order No: EC-Q9XVA-TE, Digital Equipment Corporation, Maynard Massachusetts, USA. Technical Support/ordering USA: 1-800-DIGITAL Scalable Coherent Interface Applications to DAQ, H.Müller, Overview talk at the DAQ Conference Fermilab Oct.26-28. Postscript slideshow on the rd24.cern.ch server in sci/Talks+Papers/FNALtalk.ps. 8