Sistemas MPSoC en FPGAs



Documentos relacionados
4. Programación Paralela

LA REVOLUCIÓN DE LOS SISTEMAS DE INFORMACIÓN (S.I.) Introducción PORQUÉ SISTEMAS DE INFORMACIÓN? El Competitivo Entorno de los Negocios

Palabras Clave: Vídeo en FPGA, Procesamiento en Tiempo Real RESUMEN

Capitulo V Administración de memoria

Introducción a los FPGAs y el Cómputo Reconfigurable Miguel Morales Sandoval INAOE, 2006

Arquitectura de Redes y Comunicaciones

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

TEMA VII: DISEÑO SECUENCIAL PROGRAMABLE

Implementación de algoritmos genéticos paralelos de grano burdo en redes locales de computadoras. Resumen

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

Sistema de Provisión Centralizada CPS

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Nombre de la asignatura: Clave de la asignatura: SIB Carrera:

Encuesta sobre utilización de la microelectrónica en la Argentina

CAPÍTULO III MARCO TEÓRICO. Cada día cambian las condiciones de los mercados debido a diferentes factores como: el

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Solución de telefonía para empresas TL Presentación de producto. Telefonía IP

Tipos de Dispositivos Controladores

CAPÍTULO 2 ANTECEDENTES

1. Aplicación de la conmutación de circuitos y la conmutación de paquetes. 1.1 Sistema de señalización número 7 (SS7).

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

picojava TM Características

1. Introducción. Universidad de Cantabria 1-1

Procesador Intel Core 2 Extreme de 4 núcleos Traducción de Textos Curso 2007/2008

4. METODOLOGÍA. 4.1 Materiales Equipo

DESCRIPCION DEL SITEMA MASTER.

Figura 1.4. Elementos que integran a la Tecnología de Información.

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Resumen Ejecutivo. Sistemas de Gestión, Conversión y Difusión de Contenidos Audiovisuales 3D para Pantallas Autoestereoscópicas

Unidad II: Administración de Procesos y del procesador

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Universidad Autónoma de Baja California Facultad de Ingeniería Mexicali

La vida en un mundo centrado en la red

Los requisitos de accesibilidad en un proyecto software. Implicaciones de usuarios discapacitados en el proceso software

Curso: FT433 - Introducción a la virtualización con VirtualBox

GESTIÓN Y CONTROL DEL DESARROLLO E IMPLANTACIÓN DE APLICACIONES

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

HERRAMIENTA DE DIMENSIONADO DE SISTEMAS FOTOVOLTAICOS AUTONOMOS

Redes I Clase # 3. Licda. Consuelo E. Sandoval

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

El Producto: Software

CONTROL DIGITAL PARA CONVERTIDOR MULTINIVEL ALIMENTADO CON ENERGÍA SOLAR. Anexo A: FPGA. Introducción

Capítulo 1. Introducción

Electrónica Digital II

Guía de selección de hardware Windows MultiPoint Server 2010

Aplicación de la reconfigurabilidad dinámica de la FPGA Virtex de Xilinx *.

Partes, módulos y aplicaciones de un Controlador de Procesos

Elementos requeridos para crearlos (ejemplo: el compilador)

Documento técnico Sistemas según el principio de modularidad Automatización modular con terminales de válvulas

Curso: Arquitectura Empresarial basado en TOGAF

Cada computadora conectada a la red suele recibir el nombre de estación de trabajo o nodo de la red.

Diseño y desarrollo de una aplicación informática para la gestión de laboratorios

DIRECCIONAMIENTO IPv4

COMPUTADORES MULTINUCLEO. Stallings W. Computer Organization and Architecture 8ed

Conclusiones. Particionado Consciente de los Datos

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

El grupo de trabajo IEEE ha definido tres clases de WPANs que se

4. Base de datos XML nativa: Marklogic

Capítulo 5. Cliente-Servidor.

UN ENTORNO A MEDIDA PARA EL DISEÑO Y LA SIMULACIÓN DE MAQUINARIA POR COMPUTADOR

Métricas, Estimación y Planificación en Proyectos de Software

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

INTRODUCCIÓN A LAS REDES INFORMÁTICAS

E-learning: E-learning:

Unidad 3 Direccionamiento IP (Subnetting)

INFORME TECNICO PREVIO DE EVALUACIÓN DE SOFTWARE N /UIE-PATPAL - FBB

CAPITULO 3 REDES HIBRIDAS-COMPLEJAS. 3.1 Descripción de la Red Híbrida Compleja (HCNN)

Concepto y tipo de redes

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé PRATICA NO. 24, CLUSTER

MODULO ADMINISTRATIVO

Licenciatura en Computación

HARDWARE DE SISTEMA AUTOMÁTICO DE RASTREO DE VEHÍCULOS MEDIANTE TECNOLOGÍAS GPRS Y GPS

Metodologías de diseño de hardware

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Arquitecturas GPU v. 2013

Fundamentos de los Sistemas Operativos (GII) Examen Final 15 de Junio de SEGUNDA PARTE - SOLUCIONES

Servicio de Firma Electrónica Remota sobre Dispositivo Seguro Centralizado (SSCD)

Introducción a las redes de computadores

Alcatel-Lucent VitalQIP Appliance Manager

Actualización de versión a Bizagi 10.x

PRACTICA NO.24: CLUSTER

Servicio de telefonía ip de la Universidad Carlos III de Madrid

Centro de Capacitación en Informática

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

GLOSARIO DE TÉRMINOS

Curso de seguridad informática en el entorno docente. Sesión 4. PONENTE: Jaime López Soto.

Evaluación del Software

Análisis de costos proyectado de la plataforma SAP HANA

Sistema Operativo (OS). Andrea Serna. 10 Inf 2.

RAID 0 : No redundante

SISTEMAS DE INFORMACIÓN II TEORÍA

PUERTOS DE COMUNICACIÓN EXTERNOS TIPO VELOCIDAD DESCRIPCION GRAFICO

Arquitectura de Computadoras. Clase 5 Posibles soluciones a atascos

Dispositivos de Red Hub Switch

AUTORES: OBREGON CARLA ROMERO MARIA MARACAIBO FEBRERO 2012

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

RAID. Redundant Array of Independent Disks. Rafael Jurado Moreno Fuente: Wikipedia

Transcripción:

Sistemas MPSoC en FPGAs Pablo Huerta Pellitero, Javier Castillo Villar, Jose Ignacio Martínez Torre Dept. de Arquitectura y Tecnología de Computadores, Ciencia de la Computación e Inteligencia Artificial Universidad Rey Juan Carlos Escuela Superior de Ciencias Experimentales y Tecnología Móstoles {pablo.huerta, javier.castillo, joseignacio.martinez} @urjc.es Resumen. Las necesidades de cómputo de los sistemas electrónicos modernos aumentan cada día. Los sistemas multiprocesador en chip (MPSoC) son una buena opción para satisfacer las demandas de las aplicaciones modernas. En este artículo se presenta un estado del arte actual de los sistemas multiprocesador en chip, centrado fundamentalmente en los implementados en FPGA. 1. Introducción Los sistemas electrónicos modernos demandan cada día mayor capacidad de cómputo. Por ejemplo, las aplicaciones de red requieren dispositivos capaces de ofrecer un buen rendimiento a velocidades de transferencia del orden de gigabits por segundo. También los sistemas multimedia están aumentando sus necesidades de potencia de cálculo debido principalmente tanto al incremento de sus funciones (codificación/decodificación de audio y video, conectividad a redes, etc.) como a la aparición de nuevos algoritmos de compresión/descompresión de audio y video que ofrecen mayor calidad a costa de una mayor complejidad y costo computacional. Estos dos grupos de sistemas son un buen ejemplo del tipo de aplicaciones embebidas más implementadas habitualmente. Muchos de estos sistemas embebidos suelen estar desarrollados en forma de un SoC (System on a Chip) que materializa las funciones necesarias mediante una solución integrada hardware/software que utiliza un procesador de propósito general y una serie de coprocesadores, buses, memorias y periféricos. Con el aumento de las necesidades computacionales de los sistemas embebidos actuales, los procesadores de propósito general se ven desbordados y se hace necesario buscar soluciones alternativas. Una posible solución es mejorar el procesador que se está utilizando introduciendo mejoras estructurales que permitan obtener un mayor rendimiento y aumentar la frecuencia de reloj, o sustituir el procesador por uno más moderno que ofrezca un rendimiento más elevado. Esta solución, que aparentemente es la más fácil, presenta una serie de inconvenientes: Aumentar la frecuencia de reloj implica un mayor consumo de energía, lo cual es un punto crítico ya que muchos sistemas embebidos tienen unas restricciones de consumo muy estrictas, especialmente los que funcionan con baterías. Cambiar el procesador por uno más potente conlleva la necesidad de cambiar también el software para adaptarlo al nuevo procesador así como elevar el coste de producción del sistema. Otra solución consiste en desarrollar nuevos coprocesadores específicos que hagan frente a las crecientes necesidades de cómputo. Aunque esta solución es la que en muchos casos puede ofrecer un mejor rendimiento tanto computacionalmente como en términos de consumo de energía, tiene una desventaja importante: incrementa el tiempo de desarrollo. Esto es debido a que el tiempo de desarrollo de cada coprocesador es muy grande comparado con el tiempo que llevaría implementar la misma función en software. Esto hace que el time to market, parámetro crítico en el mercado actual, se dispare de forma inaceptable. Una tercera solución consiste en utilizar varios procesadores, bien de propósito general o especifico, para formar lo que se conoce como MPSoC (Multiprocessor System on Chip). Las posibilidades que ofrece esta solución se ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 28

desarrollan a lo largo del artículo. En la sección 2 se presentan los distintos tipos de MPSoC. La sección 3 muestra las posibilidades que ofrecen las FPGAs a la hora de desarrollar sistemas multiprocesadores. Por último, los retos actuales en el diseño de MPSoCs se exponen en la sección 4. 2. Distintos tipos de MPSoC Se pueden realizar diferentes clasificaciones de los sistemas MPSoCs atendiendo a diferentes criterios. Según el tipo de aplicación para la cual están diseñados se pueden distinguir entre MPSoCs de propósito específico y de propósito general. Atendiendo al tipo de procesadores que se utilizan se pueden clasificar en MPSoCs heterogéneos y homogéneos dependiendo de si usan un mismo tipo de procesador o procesadores diferentes. Habitualmente los MPSoCs de propósito específico son heterogéneos, utilizando diversos procesadores de propósito específico para realizar una tarea muy concreta, mientras que los de propósito general son homogéneos. Algunos ejemplos de distintos tipos de MPSoCs son: Intel IXP2850[8]: es un procesador diseñado para aplicaciones de red que requieran procesamiento de paquetes, procesamiento de contenidos y seguridad. Está formado por una matriz de 16 microengines para manejar paquetes, un procesador Xscale para operaciones de control y dos procesadores criptográficos para acelerar los algoritmos de seguridad. Es por tanto un sistema heterogéneo y de propósito específico. Viper PNX-8500[18]: contiene en su interior dos procesadores: un Trimedia TM32 VLIW y un MIPS PR3940 de 32 bits, además de una serie de aceleradores para distintas aplicaciones de vídeo. También una serie de interfaces de entrada/salida: UART, PCI, IEEE 1394. Está diseñado para ser utilizado en aplicaciones de vídeo y red: televisión digital, pasarela de red, set-top-boxes, etc. Es también un sistema de propósito específico y heterogéneo. CELL [7]: es un procesador diseñado para ser usado en un amplio rango de aplicaciones, desde electrónica de consumo hasta grandes servidores. En su interior cuenta con un procesador PowerPC, y con 8 procesadores vectoriales idénticos. Aunque tiene dos tipos de procesadores, se acerca más a la idea de multiprocesador homogéneo. 3. Sistemas Multiprocesador en FPGA Actualmente las FPGAs ofrecen gran cantidad de recursos al diseñador, millones de puertas logicas equivalentes, bloques de memoria, bloques DSP, e incluso las más modernas incluyen uno o varios procesadores dentro de la propia FPGA. Por ejemplo Xilinx ofrece FPGAs de las familias Virtex 2 Pro y Virtex 4 con uno o varios procesadores Power PC 405 [19], este tipo de procesadores se denominan Hard-Core Processors. Además de los procesadores Hard-Core, existen en el mercado procesadores que se pueden implementar utilizando los recursos lógicos de la FPGA. Estos procesadores se conocen como Soft- Core Processors (SCP). Los fabricantes de FPGAs están comenzando a ofrecer SCPs muy optimizados para sus FPGAs. Así, Xilinx distribuye dos procesadores PicoBlaze [21] - un microcontrolador de 8 bits - y MicroBlaze [20] un procesador RISC de 32 bits. Altera también ofrece SCPs para sus FPGAs, como el Nios y el más moderno Nios II [1]. Aparte de estos SCPs comerciales, hay una serie de procesadores de código abierto como el OpenRISC[3] y el Leon[5], con lo que el abanico de posibilidades a la hora de elegir un SCP es relativamente amplio. El rendimiento de estos SCP es menor que el que pueden ofrecen los HCP, pero tienen la ventaja de que su número no está fijado de antemano: se pueden utilizar todos los que sean necesarios y sólo se está limitado por la capacidad de la FPGA. Otra característica muy interesante de los SCP a la hora de diseñar un MPSoC, es su elevada configurabilidad: por ejemplo, se pueden configurar los tamaños de las cachés en función de la aplicación a la que vayan destinados, se pueden incluir o no diferentes unidades como la unidad de punto flotante, barrel-shifter, etc. lo que permite crear sistemas heterogéneos a pesar de utilizar procesadores de la misma familia. Así, se podría construir un sistema con dos procesadores: uno de ellos con todas las unidades opcionales en las que se mapearía la parte software que necesita ese tipo de operaciones, y el otro con una ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 29

configuración mínima dedicado sólo a tareas de control sin restricciones estrictas de rendimiento. 3.1. Arquitecturas MPSoC en FPGA A la hora de diseñar un sistema multiprocesador en FPGA hay infinidad de posibles arquitecturas, cada una con sus ventajas e inconvenientes y más o menos idóneas según el tipo de aplicación en la que se vaya a utilizar. Una posible arquitectura multiprocesadora entre iguales sin comunicación entre los procesadores se muestra en la figura 1. Esta mecanismo de comunicación puede implementarse de múltiples maneras: buses de propósito general, buses de propósito específico, memoria compartida, NoC (network on chip), etc. Otra posibilidad consiste en utilizar una arquitectura maestro/esclavo, en la que un procesador maestro reparte el trabajo entre diversos procesadores esclavos. Esta arquitectura es idónea para aplicaciones de procesamiento masivo de datos, donde cada procesador esclavo ejecuta exactamente el mismo código que los demás y es el procesador maestro el encargado de dividir los datos que llegan de una o varias fuentes para repartirlos entre los diferente procesadores [fig 3], aunque también se puede usar en aplicaciones con paralelismo a nivel de tarea siendo el maestro el encargado del reparto de tareas entre los esclavos. Figura 1. Arquitectura multiprocesador sin comunicación. Una arquitectura de este tipo sólo es útil para aplicaciones que tengan paralelismo a nivel de tarea, y las tareas sean independientes unas de otras, algo poco frecuente. En caso de que las tareas no sean independientes, es necesario que esta arquitectura incluya un mecanismo de comunicación entre los procesadores, como el que se muestra en la figura 2. Figura 3. Arquitectura maestro-esclavo En la figura 4 se muestra una arquitectura de procesadores en cadena. Esta arquitectura es útil en aplicaciones donde no existe paralelismo intrínseco, pero que se pueden dividir en tareas más pequeñas y puede ser segmentada. En este caso, cada procesador ejecuta una parte de la tarea y pasa los resultados al siguiente procesador. Figura 2. Arquitectura multiprocesador con comunicación. Figura 4. Arquitectura segmentada. A partir de estas tres arquitecturas básicas: en red, maestro/esclavo y segmentada, se pueden desarrollar múltiples sistemas multiprocesador combinándolas o modificándolas para adaptarlas a las necesidades específicas de cada aplicación, como el desarrollado en [10] que combina el ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 30

concepto de maestro/esclavo con una arquitectura segmentada. 3.2. Sistemas MPSoC en FPGA En [10] se presenta un sistema multiprocesador en FPGA que utiliza 2 procesadores PowerPC y 14 MicroBlaze. Este sistema está basado en una arquitectura combinada maestro/esclavo y segmentada. Los autores utilizan el sistema en una aplicación de encaminado de paquetes obteniendo un rendimiento de 1.8 Gbps. Para la misma aplicación ejecutada en un Intel IXP2800 se obtiene un rendimiento de 10 Gbps, pero este chip utiliza el doble de área que el diseño en FPGA y es una solución de propósito específico. En [15] se presenta otro sistema multiprocesador en FPGA que utiliza 8 procesadores MicroBlaze para evaluar distintos tipos de aplicaciones, como aplicaciones que hacen uso intenso de arrays o aplicaciones de procesamiento masivo de datos. Utiliza una arquitectura de tipo maestro/esclavo. Otro sistema multiprocesador en FPGA es MiniNoC [9]. Este sistema contiene 4 procesadores MIPS simplificados en una FPGA de Xilinx y se utiliza para ejecutar algunas aplicaciones paralelizables, como un decodificador Motion JPEG mediante una arquitectura de comunicación basada en una NoC toroidal. SoCrates [11] es un sistema multiprocesador de memoria distribuida basado en una arquitectura de bus compartido, a la que se conectan los nodos de procesamiento. Estos nodos tienen bien un procesador basado en ARM7 o bien un DSP (Digital Signal Processor). El número de nodos y el tipo de éstos es configurable lo que permite realizar sistemas multiprocesador muy diversos. memoria compartida). No hay un estándar establecido lo que hace que cada sistema emplee la solución más apropiada a la aplicación concreta. Como consecuencia de esto, la integración de MPSoCs es difícil y las oportunidades de re-usar módulos hardware o software son limitadas. En [17] se proponen un nuevo modelo de programación y un interfaz de plataforma para diseño e integración de MPSoCs, llamado TTL (Task Transaction Level). TTL define una serie de interfaces tanto para comunicación entre tareas como para multitarea, pero deja su implementación abierta para que sean implementadas como una API software o como interfaces hardware, permitiendo así la integración sencilla de tareas hardware y software. 4.2. Memoria Las configuraciones de memoria que se utilizan en los MPSoCs son muy diversas y para cada tipo de configuración existen distintas técnicas para mejorar el rendimiento del sistema completo. Una posibilidad muy frecuente en sistemas multiprocesador es que cada procesador tenga acceso exclusivo a una memoria local al procesador e interna al chip, y un acceso compartido a una memoria externa al chip compartida entre todos los procesadores del MPSoC como se muestra en la figura W. 4. Retos en el diseño de MPSoCs 4.1. Comunicaciones Como se describió en el apartado anterior las posibilidades para conectar entre si varios procesadores son múltiples, tanto en topología (red, maestro/esclavo, en cadena) como en implementación (NoC, buses compartidos, Figura 5. Arquitectura de memoria compartida Para este tipo de sistemas y sus variantes existen diversos estudios que buscan mejorar el rendimiento global del sistema gestionando de diferentes formas los accesos a memoria. En [6] se ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 31

presenta una estrategia dirigida a reducir el número de accesos a memoria externa, que son los más costosos en tiempo y en consumo de energía. Para ello se hace que los procesadores almacenen datos de otros procesadores en su memoria local si se puede predecir que esos datos van a ser usados pronto por otro procesador. Con esto se reduce el número de accesos a memoria externa a costa de aumentar el tráfico entre procesadores, más eficiente y menos costoso en consumo de energía. Otra solución muy similar se presenta en [12]. En [2] se presenta un método para maximizar aciertos en la caché en sistemas multiprocesador. Para ello propone colocar las instrucciones en la memoria en función de la frecuencia con que se acceden. Todos estos métodos buscan reducir el número de accesos a memoria externa utilizando mejoras en el compilador. Hay que remarcar que todos exigen un conocimiento a priori del programa y datos que se van a ejecutar en el sistema multiprocesador, ya que las optimizaciones que se introducen en tiempo de compilación se hacen en función de que datos e instrucciones se van a acceder con más frecuencia. 4.3. Software El desarrollo de aplicaciones para sistemas multiprocesador está marcado por la falta de un estándar que permita desarrollar aplicaciones portables entre sistemas. Un sistema operativo para sistemas embebidos, compatible con una gran variedad de procesadores, y fácilmente portable a nuevos procesadores sería un buen punto de partida para desarrollar un sistema operativo para MPSoCs. ecos [4] es un sistema operativo que cumple estos requisitos, y que además cuenta con la ventaja de ser libre. Utilizando ecos, y añadiéndole funcionalidades que permitan programación de aplicaciones paralelas, como las proporcionadas por OpenMP[14] o MPI [13], se podría desarrollar un sistema operativo que permitiese desarrollar aplicaciones portables para sistemas multiprocesador. En esta línea se enmarca el trabajo actual de este grupo. 4.4. Consumo Una de las restricciones a tener en cuenta a la hora de diseñar SoCs es el consumo de energía. Los sistemas multiprocesador se pueden usar, además de para aumentar el rendimiento de una aplicación, para reducir el consumo de energía de algunas aplicaciones. En [16] se presenta un sistema que utilizando un sistema multiprocesador y escalando el voltaje del sistema y reduciendo la frecuencia de reloj se puede reducir drásticamente el consumo de energía sin afectar demasiado al rendimiento. 5. Conclusiones En este artículo se han presentado las posibilidades que ofrecen los MPSoCs a la hora de desarrollar sistemas embebidos que requieren un alto rendimiento. Se ha mostrado el potencial que ofrecen las FPGAs actuales a la hora de desarrollar este tipo de sistemas, así como los distintos retos que presenta el diseño de este tipo de sistemas. Referencias [1] Altera, Nios II Processor Reference Handbook, 2005, Disponible en http://www.altera.com [2] C. Goldfeder, Frequency-Based Code Placement for Embedded Multiprocessors. Proceedings of Design Automation Conference. 2005 [3] D. Lampret, OpenRISC 1200 IP Core Specification, 2001, Disponible en http://www.opencores.org [4] ecoscentric Ltd, ecos User Guide, disponible en http://ecos.sourceware.org/, 2003 [5] Gaisler Research, Leon2 Processor User s Manual, 2005, Disponible en http://www.gaisler.com [6] G. Chen, G. Chen, O. Ozturk, M. Kandemir. Exploiting Inter-Processor Data Sharing for Improving Behaviour of Multi-Processor SoCs. Proceedings of the IEEE Computer Society Annual Symposium on VLSI. 2005. [7] IBM, The Cell Project at IBM Research, disponible en http://www.research.ibm.com, 2006 [8] Intel, Product Brief: Intel IXP2850 Network Processor, 2002, Disponible en http://www.intel.com ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 32

[9] J.C. Prats, Design of Components For A NoC-Based MPSoC Platform, Master Thesis en Computer Science de la Eindhoven University of Technology [10] Kaushik Ravindran, Nadathur Satish, Yujia Jin and Kurt Keutzer. An FPGA-Based Soft Multiprocessor System for IPv4 Packet Forwarding. 15th International Conference on Field Programmable Logic and Applications (FPL-05), pp 487-492, 2005. [11] M. Collin, R. Haukilahti, M. Nikitovic, J. Adomat, Socrates A Multiprocessor SoC in 40 Days, Conference on Desing, Automation and Test in Europe (DATE 01), 2001 [12] M. Kandemir, I. Kadayif, A. Choudhary, J. Ramanujan, I. Kolcu. Compiler-Directed Scratch Pad Memory Optimization for Embedded Multiprocessors. IEEE Transactions on Very Large Scale Integration Systems, Vol. 12, No. 3, pp. 281-287. [13] Message Passing Interface, wwwunix.mcs.anl.gov/mpi [14] OpenMP, www.openmp.org [15] P. Huerta, J. Castillo, J.I. Martínez, V. Lopez, "A MicroBlaze based MultiProcessor SoC, WSEAS Transactions on Circuits and Systems, pp 423-430, May 2005 [16] P. Schaumont, B. Charles Lai, W. Qin, I. Verbauwhede. Cooperative Multithreading on Embedded Multiprocessors Architectures Enables Energy-scalable Design Proceedings of Design Automation Conference. 2005. [17] P. Van de Wolf, E. De Kock, T. Hendrikson, W. Kruijtzer, G. Essink. Design and Programming of Embedded Multiprocessors: An Interface-Centric Approach. Proceedings of CODE+ISSS 04. 2004 [18] S. Dutta, R. Jensen, and A. Rieckmann, Viper: A Multiprocessor SOC for Advanced Set-Top Box And Digital TV Systems, IEEE Design and Test of Computers, October 2001, pp. 21-31. [19] Xilinx, PowerPC 405 Processor Block Reference Guide, 2005, Disponible en http://www.xilinx.com [20] Xilinx, MicroBlaze Processor Reference Guide, 2005, Disponible en http://www.xilinx.com [21] Xilinx, PicoBlaze 8-bit Embedded Microcontroller User Guide, 2005, Disponible en http://www.xilinx.com ISBN-10: 84-611-1314-4 ISBN-13: 978-84-611-1314-9 Pág. 33