La Asociación Multicore fue fundada en 2005. Asociación Multicore es un miembro con fondos sin fines de lucro , la industria consorcio se centró en la creación de abiertos estándar API , especificaciones y guías que permiten a los desarrolladores de sistemas y programadores a más fácilmente adoptan la tecnología de múltiples núcleos en sus aplicaciones .
El consorcio proporciona un foro neutral para proveedores y desarrolladores que estén interesados en trabajar con productos relacionados con múltiples núcleos o en su proliferación, incluidos procesadores , infraestructura, dispositivos, software y aplicaciones. Sus miembros representan proveedores de procesadores , sistemas operativos , compiladores , herramientas de desarrollo , depuradores , herramientas ESL / EDA y simuladores; y la aplicación y del sistema desarrolladores .
El presidente del consorcio es Markus Levy, quien también es presidente de EEMBC , el Consorcio de referencia de microprocesadores integrados. Sven Brehmer es el director de tecnología y presidente de PolyCore Software.
Proyectos completados
En 2008, el grupo de trabajo API de comunicaciones multinúcleo publicó la primera especificación del consorcio, denominada MCAPI . MCAPI es una API de transmisión de mensajes que captura los elementos básicos de comunicación y sincronización que se requieren para sistemas integrados distribuidos de cerca (múltiples núcleos en un chip y / o chips en una placa de circuito ). Los sistemas de destino para MCAPI abarcan múltiples dimensiones de heterogeneidad (p. Ej., Heterogeneidad del núcleo, heterogeneidad de la estructura de interconexión, heterogeneidad de la memoria, heterogeneidad del sistema operativo, heterogeneidad de la cadena de herramientas de software y heterogeneidad del lenguaje de programación).
En 2011, el grupo de trabajo de MCAPI lanzó MCAPI 2.0. La versión mejorada agrega nuevas características, como dominios para propósitos de enrutamiento. La versión 2.0 de MCAPI agrega un nivel de jerarquía a esa red de nodos mediante la introducción de "dominios". Los dominios se pueden utilizar de diversas formas específicas de implementación, como para representar todos los núcleos de un chip determinado o para dividir una topología en áreas públicas y seguras. MCAPI 2.0 también agrega tres nuevos tipos de parámetros de inicialización (atributos de nodo, configuraciones específicas de implementación, información de implementación como la topología de red inicial o la versión de MCAPI que se está ejecutando). El MCAPI WG está presidido por Sven Brehmer.
En 2011, el grupo de trabajo de la API de gestión de recursos multinúcleo publicó su primera especificación, denominada MRAPI . MRAPI es una API estándar de la industria que especifica las capacidades esenciales de administración de recursos a nivel de aplicación. Las aplicaciones multinúcleo requieren esta API para permitir el acceso simultáneo coordinado a los recursos del sistema en situaciones en las que: (1) no hay suficientes recursos para dedicar a tareas o procesadores individuales , y / o (2) el tiempo de ejecución (fase del ciclo de vida del programa) no lo hace proporcionar un mecanismo de acceso uniforme para coordinar el intercambio de recursos. Esta API es aplicable a implementaciones multinúcleo integradas SMP y AMP (en las que AMP se refiere a heterogéneas tanto en términos de software como de hardware). MRAPI (junto con otras API de asociación multinúcleo) puede servir como una herramienta valiosa para implementar aplicaciones, así como para implementar administradores de recursos con todas las funciones y otros tipos de servicios en capas. El grupo de trabajo de MRAPI fue presidido por Jim Holt.
En 2013, el grupo de trabajo de la API de administración de tareas multinúcleo (MTAPI) lanzó su primera especificación. MTAPI es una especificación estándar para una interfaz de programa de aplicación (API) que admite la coordinación de tareas en sistemas paralelos integrados con núcleos homogéneos y heterogéneos. Las características principales de MTAPI son la programación en tiempo de ejecución y la asignación de tareas a los núcleos del procesador. Debido a su comportamiento dinámico, MTAPI está diseñado para optimizar el rendimiento en sistemas multinúcleo, lo que permite al desarrollador de software mejorar la estrategia de programación de tareas para lograr latencia y equidad. Este grupo de trabajo fue presidido por Urs Gleim de Siemens .
En 2013, el grupo de trabajo de Prácticas de programación multinúcleo (MPP) entregó una guía de programación de software multinúcleo para la industria que ayuda a mejorar la coherencia y la comprensión de los problemas de programación multinúcleo . La guía MPP proporciona las mejores prácticas que aprovechan el lenguaje C / C ++ para generar una guía de valor genuino para los ingenieros que se acercan a la programación multinúcleo. Este grupo de trabajo fue presidido por Rob Oshana de NXP Semiconductors y David Stewart de CriticalBlue .
En 2015, el grupo de trabajo Software / Hardware Interface for Multicore / Manycore (SHIM) entregó una especificación para definir un estándar de descripción de arquitectura útil para el diseño de software. Algunas características arquitectónicas que describe SHIM son la topología de hardware, incluidos los núcleos de procesador , aceleradores , cachés y canales de comunicación entre núcleos, con detalles seleccionados de cada elemento e información de instrucción, memoria y rendimiento de comunicación. Este grupo de trabajo fue presidido por Masaki Gondo de eSOL [1] .
Grupos de trabajo activos
- El grupo de trabajo de la API de comunicaciones multinúcleo (MCAPI) está agregando actualmente más características y funciones para expandir la utilidad de MCAPI para la versión 2.x. El grupo de trabajo está trabajando en la interoperabilidad y la funcionalidad de 'copia cero', incluida la interacción bidireccional entre 'aplicación y aplicación' utilizando memoria compartida e interacción bidireccional entre 'aplicación y controlador', que está dirigida por Sven Brehmer de PolyCore Software.
- El grupo de trabajo de virtualización se centrará en definir y optimizar un conjunto de información y funciones de paravirtualización para comunicarse con un hipervisor . El grupo de trabajo también se centrará en un sistema para categorizar las diversas características y funcionalidades de virtualización, incluso dentro de los procesadores multinúcleo. Este grupo de trabajo está presidido por Rajan Goyal de Cavium Networks y Surender Kumar de Nokia Networks .
- El grupo de trabajo Open Asymmetric Multi Processing (OpenAMP) se centrará en estandarizar las API, proporcionar documentación detallada para la especificación y ampliar la funcionalidad de OpenAMP. Este grupo de trabajo está presidido por Tomas Evensen de Xilinx .
OpenAMP
OpenAMP Multicore Framework es un marco de código abierto para desarrollar software de aplicación de sistemas de multiprocesamiento asimétrico (AMP), [1] similar a OpenMP para sistemas de multiprocesamiento simétrico. [2]
Hay varias implementaciones de OpenAMP Multicore Framework, cada una destinada a interoperar con todas las demás implementaciones sobre la API de OpenAMP. Una implementación de Multicore Framework, desarrollada originalmente para Xilinx Zynq , ha sido de código abierto bajo el proyecto de código abierto OpenAMP. [3] [4] Mentor Embedded Multicore Framework (MEMF) es una implementación propietaria del estándar OpenAMP. [4]
El estándar API OpenAMP se gestiona bajo el paraguas de Multicore Association. [4]
Referencias
- ^ "OpenAMP"
- ^ Peng Zhang. "Tecnología avanzada de control industrial" . pag. 210.
- ^ "repositorio de amplificador abierto"
- ^ a b c Felix Baum, Arvind Raghuraman. "Aprovechar al máximo los SoC heterogéneos multinúcleo emergentes basados en ARM". 8 ° Congreso Europeo de Software y Sistemas Embebidos en Tiempo Real (ERTS 2016), enero de 2016, TOULOUSE, Francia. ffhal-01292325
enlaces externos
- Sitio web oficial de la Asociación Multinúcleo
- Benchmarking de plataformas multinúcleo - EEMBC