Metodología de codiseño hardware-software para la
computación paralela distribuida dentro de un chip
Jaume Joven Murillo, David Castells Rufas, Jordi Carrabina Bordoll
Dept. MiSE (Microelectrónica i Sistemas Electrónicos) – CEPHIS-UAB
Universidad Autónoma de Barcelona
Edifici Q - Campus UAB (ETSE)
08193 Bellaterra (Barcelona)
[email protected],
[email protected],
[email protected]
Resumen. Éste artículo presenta una nueva
metodología de codiseño hardware/software para
el desarrollo de sistemas multiprocesador de
computación paralela distribuida en entornos de
plataformas y sistemas empotrados on-chip,
comúnmente llamados Systems-On-a-Chip (SoC).
Esta metodología, se basa en dos fases, que se
desarrollan de forma concurrente. Una fase trata
el desarrollo software, donde se debe implementar
los lenguajes o mecanismos de programación
paralela distribuida tradicionales para dicho
entorno on-chip, tales como Parallel Virtual
Machine (PVM) o Message Passing Interface
(MPI). Mientras que la otra fase, el principal
objetivo es el desarrollo de la arquitectura
paralela on-chip. Así, esta fase es puramente
hardware y se basa en el desarrollo de un
Multiprocessor-System-On-a-Chip (MPSoC) o de
una Network-On-a-Chip (NoC), y en su sistema de
memoria, cuya implementación física final se
realizará en dispositivos reconfigurables (FPGAs)
o en circuitos integrados de aplicación especifica
(ASICs). De esta forma, una vez terminadas las
dos
fases del diseño hardware/software, el
entorno de programación software se mapeará en
cada uno de los procesadores de la arquitectura
hardware. Una vez hecho esto, ya se podrán
desarrollar aplicaciones típicas de procesamiento
paralelo distribuido en la arquitectura on-chip
generada, y por tanto, el resultado de este trabajo
será un entorno de desarrollo empotrado para la
computación paralela distribuida on-chip.
1. Motivación
Actualmente y gracias a la constante evolución
tecnológica y al aumento de la capacidad de
integración de transistores dentro de un chip (ley
de Moore), nos ofrece la posibilidad a los
investigadores el diseño de SoCs mucho más
complejos que aprovechen de forma más efectiva
todos estos recursos tecnológicos. La arquitectura
tradicional de un SoC[1] fundamentalmente está
compuesta por:
• Un bus estándar del sistema, llamado on-chip
bus (OCB), como pude ser AMBA, Avalon,
CoreConnect o Wishbone.
• Un conjunto de componentes virtuales o IP
cores, los cuales pueden ser procesadores de
tipos soft o hard IP, como ARM, PowerPC,
MicroBlaze, NIOSII
Sistema de memoria, on-chip RAM,
memorias SSRAM externas,...
•
(FPGAs) donde
Actualmente disponemos de dispositivos
reconfigurables
implementar
físicamente estos SoCs, y cuya capacidad de
integración ha aumentado considerablemente en
los últimos años. Además, estos dispositivos tienen
la flexibilidad y
facilidad que permiten al
diseñador probar diferentes arquitecturas hardware,
al contrario que los ASIC, que una vez está
diseñada la arquitectura, si se debe hacer un
cambio éste resulta difícil y económicamente muy
caro. Por ello, en este artículo se utilizaran
dispositivos reconfigurables de Altera, y no
ASICs, pero la metodología propuesta sirve para
ambos dispositivos tecnológicos. Altera o Xilinx
son en la actualidad los principales vendedores de
además
dispositivos
proporcionan herramientas para
el diseño
hardware/software del SoC.
En nuestro caso de estudio esta arquitectura
SoC básica evolucionará y se convertirá en una
arquitectura MPSoC[2][3][4]
compuesta por
múltiples procesadores independientes. El número
de procesadores que podamos integrar dentro del
dispositivo
los
recursos de cada dispositivo. Como más adelante
reconfigurable dependerá de
reconfigurables
y
arquitecturas
veremos en este artículo, la misma arquitectura
ser
MPSoC puede
fácilmente aplicable a
arquitecturas NoC[5].
Analizando
paralelas
las
genéricas que tradicionalmente se han utilizado en
los sistemas convencionales no empotrados de
computación[6], (ver tabla 1) podemos ver que
existen distintas opciones.
Modelos
de memoria
Memoria
compartida
Arquitecturas paralelas
UMA
SMP
(Symmetric
Multiprocessors)
con
de
Memoria
distribuida
No se usa
NUMA
ccNUMA
(NUMA
coherencia
cache)
MPP
(Massive
Parallel
Processing)
Table 1. Modelos de memoria en arquitecturas paralelas
la memoria es
UMA (Uniform Memory Access): el tiempo de
acceso a
independiente del
procesador, o dicho de otra manera, todos los
procesadores tardan el mismo tiempo de acceso a
la memoria. Suelen utilizarse en sistemas SMP,
donde se utiliza una memoria compartida (Shared
Memory) para todos los procesadores.
NUMA
(Non-Uniform Memory Access):
utilizados en sistemas multiprocesador, donde el
tiempo de acceso a memoria depende de la
posición relativa al procesador. Un ejemplo son
los sistemas ccNUMA, donde cada procesador
tiene una memoria reducida muy rápida y una
memoria global compartida más lenta. Por otro
lado, si estos sistemas paralelos utilizan memoria
distribuida (Distributed Memory) pueden verse
como un cluster de procesadores (MPP).
La principal desventaja de la arquitectura
UMA respecto a la NUMA, es que cuando el
número de procesadores aumenta por encima de un
umbral no escala de forma adecuada.
Alguna de estas arquitecturas han sido
desarrolladas dentro de un chip con procesadores
empotrados y memoria
sin
embargo, en este artículo se hará un análisis de la
implementación, de las arquitecturas NUMA con
un modelo de memoria distribuido, los llamados
sistemas Massive Parallel Processing (MPP).
compartida[7],
2. Entorno de programación paralela
distribuida PVM/MPI
en
como
pueda
Interface
heterogéneos
esta metodología,
La Parallel Virtual Machine (PVM)[8] y el
Message Passing
(MPI)[9][10] son
librerías software estándares definidas durante los
años 90 para describir paralelismo para entornos de
computación paralela distribuida heterogenia. En
otras palabras, el entorno permite que una red de
procesadores
colaborar
conjuntamente para resolver un problema de
computación complejo.
Este entorno de software para la computación
paralela, además define otros muchos aspectos
relevantes
la
arquitectura del hardware que se debe usar,
arquitecturas NUMA con memoria distribuida, el
modelo de comunicación, con el paso de mensajes,
y también el modelo de computación que es el
llamado Single/Multiple Instruction Multiple Data
(SIMD/MIMD[6]).
Ambos entornos software se basan en el paso
de mensajes por la red de procesadores subyacente,
usando mecanismos o protocolos soportados por
dicha red (por ejemplo en Internet, los protocolos
UDP y TCP pueden usarse). Este aspecto es muy
importante, ya que si la comunicación se hace a
través de una red on-chip con un protocolo
determinado, se pueden conseguir mejores anchos
de banda
(~Mbps o Gbps[11]) entre cada
procesador que en las redes convencionales, ya que
la interconexión son las pistas del propio chip.
Estos dos entornos son muy similares, ambos
definen el protocolo de comunicación entre los
procesadores que ejecutan el programa paralelo
distribuido. Sin embargo, PVM se construye
alrededor del concepto de maquina virtual, y por
tanto, proporciona unos mecanismos potentes de
control dinámico del cluster de procesadores[8].
3. Componentes del arquitectura on-chip
para la computación paralela
distribuida
Una vez visto el entorno arquitectural (apartado 1)
y el entorno de librerías software disponible
(apartado 2) vamos a dar una visión rápida y
enumerar los componentes necesarios para generar
una arquitectura para la computación paralela
distribuida on-chip:
Procesadores Soft/Hard IP cores (Pi)
Subsistema de memoria distribuida (Mi)
•
•
• Network Interface Controller (NICi)
•
Interconexión en la red (routers, switch,
crossbars...)
Entorno de software paralelo
•
P0
M0
P1
M1
…
Pn
Mn
NIC0
NIC1
…
…
NICn
emisor receptor, una crossbar, hasta un router
dedicado.
Cabe destacar que la arquitectura propuesta en
la figura 1, se puede desarrollar con otro tipo de
procesadores para sistemas empotrados (ARM,
MicroBlaze, PowerPC, Leon,…), y que el on-chip
bus también podrá cambiar en función de que
procesador se utilice (AMBA, CoreConnect,…), e
incluso
desarrollo
(UltraWizard[12] para desarrollar MPSoC/NoC
basados en ARM y AMBA, Xilinx ISE,…), sin
embargo, tanto los componentes que se deben
utilizar, como la metodología propuesta, sigue
siendo válida.
herramientas
las
de
NETWORK
Figura 1. Arquitectura MPSoC/NoC para el
processamiento paralelo distribuido (MPP)
4. Diseño hardware
entorno
un
soft
core
procesador
elementos. El
En la figura 1, se puede observar el diagrama
de bloques de los componentes que formaran parte
de nuestra arquitectura para el procesamiento
paralelo y la relación que existe entre cada uno de
estos
software de
procesamiento paralelo estará basado en la librería
PVM, y se cargará en memoria y se ejecutará en
cada procesador. Este software interaccionará con
el NIC y enviará los mensajes a través
Comentarios de: Metodología de codiseño hardware-software para la computación paralela distribuida dentro de un chip (0)
No hay comentarios