Desarrollo de un Driver bajo Windows 95 para un bridge PCI-SCI

Anuncio
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
Descargar