Articulo de referencia

MCAPI

La API de comunicaciones multinúcleo (MCAPI) es la primera especificación producida por la Multicore Association . MCAPI proporciona una API estandarizada para la comunicación y...

La API de comunicaciones multinúcleo (MCAPI) es la primera especificación producida por la Multicore Association . MCAPI proporciona una API estandarizada para la comunicación y sincronización entre sistemas embebidos estrechamente distribuidos (múltiples núcleos en un chip y/o chips en una placa) .

Descripción general

MCAPI es un protocolo de comunicación independiente del lenguaje, del procesador y del sistema operativo, utilizado para programar dispositivos multinúcleo . MCAPI ofrece tres modos de comunicación: mensajes, paquetes y escalares. MCAPI es una interfaz de programación de aplicaciones (API) de paso de mensajes , junto con especificaciones de protocolo y semánticas que definen el comportamiento de sus funcionalidades en cualquier implementación. Los objetivos principales de cualquier implementación de MCAPI son un rendimiento extremadamente alto y un bajo consumo de memoria .

MCAPI tiene sus orígenes en las API de comunicación como MPI y los sockets de Berkeley . Tanto MPI como los sockets se desarrollaron principalmente para la comunicación entre ordenadores, mientras que MCAPI está orientado principalmente a la comunicación entre núcleos en un chip multinúcleo. Por consiguiente, uno de los principales objetivos de diseño de MCAPI era funcionar como una interfaz de baja latencia que aprovechara la eficiente interconexión en el chip. Sin embargo, debido al alcance más limitado de las comunicaciones multinúcleo y a su objetivo de baja latencia, MCAPI es menos flexible que MPI o los sockets.

Modos de comunicación MCAPI

MCAPI ofrece tres modos de comunicación:

  1. Mensajes: datagramas sin conexión . Los mensajes están diseñados para ser flexibles en cuanto a la carga útil, los receptores y las prioridades que cambian dinámicamente, y el esfuerzo de configuración, aunque con una ligera penalización en el rendimiento.
  2. Paquetes: flujos orientados a la conexión, de tamaño arbitrario, unidireccionales y FIFO. Los paquetes están diseñados para ser flexibles en cuanto a la carga útil, ofreciendo un rendimiento superior al de los mensajes, aunque a costa de una mayor configuración.
  3. Los escalares son flujos unidireccionales, de tamaño fijo, orientados a la conexión y con orden FIFO (primero en entrar, primero en salir). Se consideran el modo de comunicación de mayor rendimiento, aunque a costa de la flexibilidad de la carga útil y el esfuerzo de configuración.

MCAPI comparado con MPI

MCAPI se centra exclusivamente en comunicaciones integradas e incorpora los conceptos de mensajes, paquetes y escalares, además de canales conectados. Esto permite que MCAPI admita diversos niveles de calidad de servicio, donde los canales conectados pueden aprovechar el hardware integrado subyacente. Asimismo, MCAPI admite diferentes tipos de prioridades: los mensajes pueden tener una prioridad individual y los canales pueden tratarse con prioridades distintas, lo que permite a las implementaciones asignar algunos o todos los canales a hardware dedicado. MCAPI también admite la copia cero mediante la asignación de atributos a los canales conectados.

Otras grandes diferencias incluyen:

  • MCAPI no tiene una interfaz de lenguaje para FORTRAN, ya que este no se encuentra comúnmente en sistemas embebidos.
  • MCAPI no admite comunicaciones colectivas como MPI. Esto permite que MCAPIv tenga una implementación más reducida.
  • MCAPI no tiene el concepto de grupos.
  • MCAPI no tiene ningún método de sincronización como MPI, ni barreras, ni cercas, ni bloqueos.
  • MCAPI no tiene objetos de archivo ni funciones asociadas a ellos.
  • MCAPI no dispone de un modelo para la creación o gestión de procesos.

Referencias

  • Holt, Jim; Agarwal, Anant; Brehmer, Sven; Domeika, Max; Griffin, Patrick; Schirrmeister, Frank (junio de 2009), "Estándares de software para la era multinúcleo", IEEE Micro , 29 (3): 40–51 , doi : 10.1109/MM.2009.48 , hdl : 1721.1/52432
  • API de comunicaciones multinúcleo
  • Poly-Messenger/MCAPI
  • Kactus2/MCAPI e IP-XACT
  • Descarga gratuita de la especificación MCAPI
  • API de perfil de LinkedIn