IDSP: un framework distribuido para multicomputadores DSP

Transcripción

IDSP: un framework distribuido para multicomputadores DSP
XIV JORNADAS DE PARALELISMO—LEGANÉS, SEPTIEMBRE 2003
1
IDSP: un framework distribuido para
multicomputadores DSP TMS320C6000
Jesús M. Álvarez Llorente 1 , Juan C. Díaz Martín1 , José M. Rodríguez García 1 , Juan L. García Zapata2 ,
Juan A. Rico Gallego1
Resumen—Este trabajo describe el diseño y desarrollo de
IDSP, un framework distribuido para la programación de
aplicaciones DSP en multicomputadores basados en
procesadores Texas Instruments TMS320C6000. Los
fabricantes actuales de multicomputadores DSP utilizan
herramientas de configuración que ubican de forma
estática las tareas de la aplicación sobre el conjunto de
procesadores. El framework IDSP aporta a este estado
actual de la cuestión un esquema de direccionamiento que
posibilita la creación y ubicación dinámica de tareas. IDSP
proporciona esencialmente un conjunto de primitivas de
creación y manipulación de instancias de aplicaciones
distribuidas denominadas grupos. El grupo es un conjunto
de operadores, donde el operador es el contexto de
ejecución de un algoritmo DSP. A diferencia de los
sistemas comerciales en uso, nuestro esquema de
direccionamiento permite una comunicación entre
operadores transparente a la ubicación. Esto da lugar a un
criterio de ubicación dinámica en función de la carga y la
posibilidad de migración de operadores.
Palabras clave— TMS320C6000, multicomputador DSP,
aplicaciones distribuidas, transparencia, tiempo real.
I. INTRODUCCIÓN Y OBJETIVOS
U
n DSP es un procesador optimizado para ejecutar
algoritmos de procesado de señal numéricamente
intensivos. La diversificación de uso de estos
procesadores ha dado lugar a sistemas operativos de
tiempo real (RTOS) para DSPs. Paralelamente, en los
últimos diez han aparecido en el mercado
multicomputadores basados en este tipo de
procesadores. El estado del arte en multicomputadores
DSP está bien representado por los desarrollos de
compañías como Motorola ([10]), Sundance ([4]) o Hunt
Engineering ([9]). Estos fabricantes confían en un
núcleo de tiempo real en el DSP como Virtuoso ([8])
DSP/BIOS ([6]), OSE ([11]) o Diamond ([12]) por citar
los más representativos. Nuestra investigación se ha
llevado a cabo sobre la familia de procesadores Texas
Instruments TMS320C6000 ([4]) con DSP/BIOS.
DSP/BIOS es el sistema operativo de tiempo real que
Texas Instruments distribuye con sus sistemas DSP y es
en la actualidad el más difundido y utilizado. Se trata de
un sistema pequeño, con apenas 25 Kbytes, pero su
interfaz es relativamente compleja. Nuestra experiencia
en el desarrollo de un reconocedor de voz indica que
DSP/BIOS lleva a aplicaciones complejas difíciles de
(1) Departamento de Informática, (2) Departamento de Matemáticas,
Universidad de Extremadura. Escuela Politécnica. Campus
Universitario. Avda. Universidad s/n. 10071 Cáceres. Correo
electrónico: {llorente, juarcarl, jmrodri, jgzapata,
jarico}@unes.es.
comprender y mantener. Por otra parte, DSP/BIOS no
proporciona soporte alguno para la construcción de
sistemas distribuidos. IDSP es un framework que aborda
estos dos problemas. Proporciona un API potente y
sencillo que permite construir aplicaciones distribuidas
DSP utilizando los servicios de DSP/BIOS según
muestra la figura A. Las aplicaciones DSP
habitualmente están constituidas por algoritmos que
procesan la señal de forma encadenada. La característica
innovadora de IDSP sobre los sistemas comerciales
anteriormente citados es la transparencia a la ubicación
del algoritmo.
Fig. A. El framework IDSP
En el siguiente apartado analizaremos la arquitectura
de IDSP. En el apartado III se describe el estado actual
de desarrollo del sistema, así como los retos más
inmediatos. En el apartado IV se recogen las
conclusiones y proyectos futuros.
II. PRINCIPIOS DE DISEÑO
A. El esquema de direccionamiento
Nuestra aproximación a la distribución de tares DSP se
basa en el siguiente modelo: Una aplicación distribuida
DSP es un grafo de algoritmos que se ejecutan
repartidos en un conjunto finito de máquinas. Cada nodo
del grafo, llamado operador, realiza un algoritmo DSP
con los datos procedentes de otros nodos, de manera que
el grafo representa un flujo de datos entre operadores.
Una instancia de una aplicación se denomina un grupo.
La operación de creación de un grupo devuelve un
identificador de grupo que es único a nivel de sistema.
La Fig. B representa aplicación formada por 5
operadores.
2
ÁLVAREZ, J.M. Y COL.: IDSP: UN FRAMEWORK DISTRIBUIDO PARA MULTICOMPUTADORES DSP TMS320C6000
Fig. B. Modelo de aplicación IDSP
Además de operaciones típicas DSP como puede ser
una DFT, un operador puede realizar otras tareas. Tal es
el caso de los servidores del sistema.
Cada aplicación IDSP tiene un identificador estático
único, un nombre con el que se registra en un módulo
llamado registro de aplicaciones junto con la
descripción de su grafo de operadores. Este módulo hace
las veces de un sistema de ficheros en el que se
almacenan los archivos ejecutables.
Los operadores que llevan a cabo algoritmos DSP
sobre flujos de señal digital se comunican típicamente
mediante abstracciones denominadas canales, que
pueden ser de entrada o de salida. Se caracterizan por un
un plazo (timeout). Un operador permanece suspendido
hasta que se completa una lectura por un canal de
entrada o se agota el plazo.
Para simplificar el sistema, un operador tiene un único
hilo de ejecución soportado por una tarea DSP/BIOS.
Típicamente, un operador constará de un bucle infinito
en el que, en cada iteración, lee los canales de entrada,
procesa los datos recibidos y los escribe en los canales
de salida.
IDSP asigna los operadores de un grupo siguiendo una
estrategia de equilibrado de carga. Así, el grupo g pde la
aplicación A puede tener su operador 4 en la máquina m,
mientras que el grupo h de la misma aplicación puede
tenerlo en la máquina n.
Los operadores se comunican mediante el uso de un
objeto llamado comunicador. Los mensajes se envían
desde un comunicador a otro. Cada operador dispone de
un conjunto de comunicadores, como ilustra la Fig. C.
El número máximo de comunicadores puede cambiarse
en tiempo de compilación.
El índice de grupo es asignado de forma única por el
sistema en el instante de creación del mismo.. El índice
de operador identifica al un operador dentro de la
aplicación (entre 0 y el máximo de operadores de la
aplicación) y el índice de comunicador identifica al
comunicador dentro del operador (entre 0 y el máximo
de comunicadores por operador). En el ejemplo de la
Fig. B, los operadores se identificarían entre 0 y 4, y los
comunicadores del operador 2, entre 0 y 2. De esta
forma, el par (gix, oix) identifica a un operador dentro
del sistema. Así se logra un esquema jerárquico de
identificación grupo-operador-comunicador, ilustrado en
la Fig. D, que es independiente de la ubicación.
Fig. D. Estrategia de direccionamiento IDSP
Un flujo de datos es una secuencia de mensajes. En
una aplicación de procesado del habla, por ejemplo,
cada mensaje puede transportar una ventana de 256
muestras a un operador que realiza una extracción de
características. Este mismo operador emitirá mensajes
que consistirán en vectores de 32 enteros, etc. Un
mensaje, como se aprecia en la Fig. E, consta de 4
campos: las direcciones de origen y destino, seguidos
del tamaño del campo de datos y el propio campo de
datos. El campo de datos también se utiliza para
identificar métodos de los servidores del sistema, junto
con los parámetros y resultados.
Dirección Dirección
origen
destino
Tamaño
datos
Datos o método
Fig. E. Formato de mensaje IDSP
B. Arquitectura del sistema
IDSP se ha construido, al igual que DSP/BIOS,
siguiendo técnicas de objetos. Entendemos un objeto
como una estructura de datos junto con las operaciones
sobre esos datos (métodos). Así, tareas, semáforos,
buzones, etc., son objetos proporcionados por
DSP/BIOS, y operadores, comunicadores, grupos, etc.
son objetos IDSP. IDSP sigue un paradigma de capas o
niveles que responde a la estructura de la Fig. F.
Fig. C. Objetos involucrados en la comunicación
Cada comunicador tiene una dirección única en el
sistema que es independiente de la ubicación del
operador. Esta dirección se denomina puerto. El puerto
se construye mediante tres números enteros: el índice de
grupo (gix), el índice de operador (oix) y el índice de
comunicador (cix). Observemos que la máquina no está
involucrada.
Fig. F. La pila IDSP
El nivel fundamental es el núcleo, que soporta las
operaciones sobre los comunicadores. Permite crear,
destruir y manipular comunicadores para enviar
mensajes.
XIV JORNADAS DE PARALELISMO—LEGANÉS, SEPTIEMBRE 2003
Por encima del núcleo, la interfaz IDSP permite la
manipulación de operadores, grupos y canales. Es
posible crear y destruir otros grupos y operadores
Un canal es realmente la mitad de un comunicador,
utilizado bien para entrada, o bien para salida de datos.
El canal, al ser creado, determina en tiempo de ejecución
cuál es la máquina y el canal destino. De esta manera, la
interfaz de canal no utiliza direcciones, lo cual
implementa la transparencia a la ubicación del
algoritmo.
La comunicación entre procesadores se realiza en los
niveles de red y enlace. En el nivel de red se lleva a cabo
el encaminamiento de mensajes . Si el destino de un
mensaje se encuentra en la misma máquina, el mensaje
se entrega utilizando el mecanismo de cita; de lo
contrario, se pasa al nivel de enlace para que éste lo
haga llegar hasta el procesador adecuado. El nivel de
enlace implementa la comunicación mediante
dispositivos hardware concretos, dependiendo del tipo
de periféricos que estemos utilizando, por ejemplo, una
combinación del EDMA y el puerto serie MCBSP. Con
sólo cambiar el módulo de enlace, y sin tocar el nivel de
red, es posible realizar las comunicaciones mediante
otros dispositivos disponibles en arquitecturas
alternativas, como puede ser el Comm-Port o el Bus
Digital de Sundance (SDB) [1].
Una diferencia importante entre los objetos IDSP y
DSP/BIOS es que los primeros pueden residir en
máquinas diferentes. Este hecho plantea el problema de
la invocación remota. Las operaciones sobre objetos
remotos en sistemas distribuidos se lleva a cabo
usualmente mediante variaciones de la técnica de
llamada a procedimiento remoto (RPC). IDSP
implementa su propio mecanismo RPC para
proporcionar servicios del sistema como la creación de
operadores y grupos o la solicitud de carga de una
máquina. También como servicios construidos por
usuario como puede ser la impresión remota de cadenas
de caracteres. La
Fig. G ilustra la arquitectura
microkernel de IDSP. El núcleo proporciona
simplemente la interfaz de comunicación mientras que la
gestión de operadores y grupos se lleva a cabo en
servidores RPC.
3
de operadores. Mientras hay un servidor de operadores
en cada procesador DSP, hay un único servidor de
grupos en todo el sistema. La máquina que alberga el
servidor de grupos se denomina la máquina raíz.
III. DEFINICIÓN DE INTERFACES
IDSP se compone de cuatro APIs que gestionan
canales, grupos, operadores y comunicadores. Ya que
los operadores de un grupo se despliegan sobre los
máquinas de forma aleatoria según un criterio de carga,
los operadores de una aplicación no conocen a priori
donde enviar sus datos. El operador 3 de la Fig. B, por
ejemplo, al arrancar no conoce la ubicación física de los
operadores 2, 4 y 5. El nivel de canal resuelve este
problema. Cada canal de salida, en tiempo de creación,
pregunta al servidor de grupos la máquina donde
realmente ejecutan los operadores destino. La
simplicidad del API de canales es la consecuencia de
que no contempla direcciones. Esta aproximación es la
adoptada por el API Diamond, pero restringida a una
distribución de tareas “cableada” por la herramienta de
configuración. La aproximación dinámica de IDSP
posibilita, entre otras cosas, la migración de operadores
en función de las circunstancias del entorno. A
continuación mostramos la interfaz de canal.
Int CHANNEL_create
(Channel_t * ch, Uns mode, Uns
Channel_Nr, Uns timeout);
Int CHANNEL_send
(Channel_t ch, Ptr buffer,
Int nbytes);
Int CHANNEL_receive (Channel_t ch, Ptr *buffer,
Int *nbytes);
Int CHANNEL_destroy (Channel_t ch);
Las primitivas que permiten a un operador IDSP crear
un grupo, arrancarlo, destruirlo o abandonarlo son las
siguientes:
Int
Int
GROUP_self
GROUP_create
Int GROUP_kill
Int GROUP_start
Void GROUP_leave
El servicio de grupos es soportado en cada máquina
particular por el servicio de operadores, cuya interfaz es
la que sigue:
Oper_t
Int
Void
Int
Void
Void
Int
Int
Fig. G. La arquitectura IDSP
Los servidores RPC del sistema también encajan en el
modelo de aplicación IDSP, a saber, están
implementados como la instancia única de una
aplicación de un único operador. Hay dos servidores
RPC fundamentales, el servidor de grupos y el servidor
(Void);
(Int *gix, Int appCode,
Void * param[]);
(Int gix);
(Int gix);
(Void);
OPER_self
(Void);
OPER_upgrade (Void);
OPER_degrade (Void);
OPER_create (Oper_t
*oper,
Int
operCode,
Int
appCode,
Oper_Addr_t addr,
Void
*param );
OPER_destroy (Oper_t
oper);
OPER_exit
(Void);
OPER_start (Oper_t
oper,
Oper_Addr_t addr );
OPER_kill
(Oper_t
oper,
Oper_Addr_t addr );
La primitiva upgrade permite a una tarea DSP/BIOS
convertirse en un operador IDSP y, por lo tanto, utilizar
sus interfaces. La primitiva degrade la despoja de esta
condición. Finalmente, el kernel proporciona la
siguiente interfaz de mensajes:
Int COMM_create
Int COMM_destroy
Int COMM_receive
Int COMM_send
(Comm_t
*comm,
Comm_Attr_t attr,
Comm_Addr_t addr);
(Comm_t
comm);
(Int cix, Comm_Addr_t *src,
char *buffer, Int *nbytes);
(Int cix, Comm_Addr_t dst,
4
ÁLVAREZ, J.M. Y COL.: IDSP: UN FRAMEWORK DISTRIBUIDO PARA MULTICOMPUTADORES DSP TMS320C6000
char *buffer, Int nbytes);
(Int cix, Comm_Addr_t * addr,
char *buffer, Int *nbytes);
Int COMM_setTimeout (Int cix, Uns timeout);
Int COMM_sendrec
IV. U SO DE IDSP
La Fig. H ilustra la estructura interna de DIARCA, un
motor multiusuario de reconocimiento de voz de palabras
aisladas robusto al ruido ([5]). La figura muestra a DIARCA
como como una aplicación IDSP dispuesta en pipeline aunque
en realidad exige una topología más compleja. Cada vez que
un usuario se conecta al sevicio de reconocimiento, una nueva
instancia de DIARCA, es decir, un nuevo grupo se despliega
en el sistema. Las siguientes instrucciones muestran cómo esta
tarea se realiza con suma facilidad y en tiempo de ejecución:
GROUP_create(& gix, DIARCA_APP, params);
GROUP_start ( gix);
Fig. I. Módulo multicomputador PCI SMT310Q de Sundance
La migración al nuevo sistema resulta relativamente
costosa debido a las diferencias existentes, no sólo en el
entorno de dispositivos externos que incorporan ambos
sistemas, sino también entre los propios procesadores
'C6711 y 'C6201. A pesar de pertenecer a familias
aparentemente cercanas de DSP, sorprenden algunas
diferencias radicales, como la que supone que las
arquitecturas 'C6x1x dispongan únicamente del
dispositivo de acceso a memoria EDMA, no presente en
los 'C6x0x, que, a cambio, disponen de otro dispositivo
más simple, el DMA. También se observan grandes
diferencias en la organización de la memoria, la cache,
etc.
Una primera versión del sistema portado está ya en
funcionamiento. Trabaja en un único procesador, aunque
utiliza los dispositivos de comunicación (comm-ports)
para el intercambio e invocación entre tareas
(realimentado hacia el mismo procesador). El paso a 2
procesadores se prevé bastante sencillo
Fig. H. El motor de reconocimiento de voz DIARCA
VI. CONCLUSIONES Y TRABAJO FUTURO
V. DETALLES DEL HARDWARE OBJETIVO
IDSP se ha implementado y probado con éxito sobre un
módulo DSK (Dsp Starter Kit) TMS320C6711 [6],
utilizando un codificador de audio conectado al puerto
serie MCBSP y la aplicación de voz DIARCA [5], un
sistema de reconocimiento de voz.
El DSK TMS320C6711 únicamente dispone de un
DSP 'C6711. Las pruebas del sistema de red se han
hecho simulando la comunicación entre procesadores
mediante el uso del puerto serie MCBSP realimentado
(loopback), asistido por el EDMA de la arquitectura
TMS320C6x1x. Esta misma configuración se ha
probado con éxito para construir un sistema formado por
dos módulos DSK idénticos.
Actualmente nos encontramos portando IDSP a una
arquitectura multicomputador. Concretamente estamos
utilizando una tarjeta multicomputador PCI SMT310Q
([2]) de Sundance con 4 módulos SMT335 ([1]) basados
en el DSP TI TMS320C6201. Este hardware, que
podemos ver en la Fig. I., nos facilita diversas
soluciones avanzadas para la comunicación entre
procesadores. De entre ellas hemos elegido los puertos
de comunicación de Sundance (comm-ports) debido a la
flexibilidad de interconexión que proporcionan y a la
simplicidad de su interfaz.
IDSP es el primer intento conocido de desarrollar un
framework distribuido para multicomputadores DSP con
transparencia a la ubicación. IDSP demuestra ser un
sistema eficiente para DSP en tiempo real [5]. Introduce
muy poca sobrecarga y, a cambio, proporciona un
conjunto de servicios indispensables para la
programación de aplicaciones distribuidas de forma
sencilla y fiable.
La migración a entornos hardware distintos a los
utilizados durante el diseño inicial es una tarea dura,
pero la rapidez con que se está logrando demuestra que
es un sistema bien diseñado y bien construido.
Cuando se culmine la migración al sistema
multicomputador, IDSP servirá como base para la
construcción de un mecanismo de memoria compartida
distribuida, que a su vez, apoyará una máquina virtual
Java distribuida para procesadores DSP.
También está previsto integrar IDSP con PONNHI
([7]). PONNHI es un núcleo POSIX para procesadores
DSP 'C6000 que proporcionará una gestión más sencilla
de las tareas IDSP de lo que actualmente proporciona
DSP/BIOS.
VII. A GRADECIMIENTOS
Este trabajo está financiado por los proyectos IPR00C032
de la Junta de Extremadura y CICYT TIC99-0609 (DIARCA).
VIII. REFERENCIAS
[1] Sundance Multiprocessor Technology Ltd., SMT335-SMT375
User Manual (QCF42), Sundance Multiprocessor Technology
Ltd., February 2001.
XIV JORNADAS DE PARALELISMO—LEGANÉS, SEPTIEMBRE 2003
[2] Sundance Multiprocessor Technology Ltd., SMT310Q User
Manual (QCF42), Sundance Multiprocessor Technology Ltd.,
November 2000.
[3] www.sundance.com
[4] www.ti.com
[5] Díaz Martin, JC. Garcia Zapata, JL. Rodriguez Garcia, J.M.,
Alvarez Salgado, J.F., Espada Bueno, P. Gómez Vilda, P.,
DIARCA: A Component Approach to Voice Recognition, Proc. of
7th European Conference on Speech Communication and
Technology, Eurospeech 2001, Aalborg, Denmark, 2001, V4, pp.
2393-2396
[6] Texas Instruments Inc., TMS320C6000 DSP/BIOS Application
Programming Interface (API) Reference Guide, Application
Report SPRU403D, Texas Instruments Inc., November 2001.
[7] www.templario.unex.es/ponnhi
[8] http://www.transtech-dsp.com/software/virtuoso.htm
[9] http://www.hunteng.co.uk/
[10] http://mcg.motorola.com/us/general/CPCIC6400.pdf
[11] http://www.ose.com/downloads/pdfs/products/OSEck_Final.pdf
5

Documentos relacionados