PDF de programación - Metodología de codiseño hardware-software para la computación paralela distribuida dentro de un chip

Imágen de pdf Metodología de codiseño hardware-software para la computación paralela distribuida dentro de un chip

Metodología de codiseño hardware-software para la computación paralela distribuida dentro de un chipgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 17 de Marzo del 2018)
211 visualizaciones desde el 17 de Marzo del 2018
95,4 KB
6 paginas
Creado hace 13a (31/05/2006)
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)

jaume.joven@uab.es, david.castells@uab.es, jordi.carrabina@uab.es



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
  • Links de descarga
http://lwp-l.com/pdf9610

Comentarios de: Metodología de codiseño hardware-software para la computación paralela distribuida dentro de un chip (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad