MCAPI
Encyclopedia
The Multicore Communications API (MCAPI) is the first specification to be produced by the Multicore Association
. MCAPI provides a standardized API for communication and synchronization
between closely distributed (multiple cores on a chip and/or chips on a board) embedded systems.
used to program multi-core devices. MCAPI provides three modes of communication: messages, packets, and scalars. MCAPI is a message-passing application programmer interface, together with protocol and semantic specifications for how its features must behave in any implementation. The primary goals for any MCAPI implementation are extremely high performance and low memory footprint.
MCAPI traces its heritage to communications APIs such as MPI
and Berkeley sockets
. Both MPI and sockets were developed primarily with inter-computer communication in mind, while MCAPI is targeted primarily towards inter-core communication in a multicore chip. Accordingly, a principal design goal of MCAPI was to serve as a low-latency interface leveraging efficient on-chip interconnect in a multicore chip. However, because of the more limited scope of multicore communications and its goal of low latency, MCAPI is less flexible than MPI or Sockets.
1. messages – connection-less datagrams. Messages are intended to be flexible with respect to payload, dynamically changing receivers and priorities and configuration effort, although at a slight performance penalty.
2. packets – connection-oriented, arbitrary size, uni-directional, and FIFO streams. Packets are intended to be flexible with respect to payload, providing higher performance than messages at the expense of configuration effort.
3. scalars – connection-oriented, fixed size, uni-directional, and FIFO streams. Scalars are intended to be the highest performance communications mode, albeit at the expense of payload flexibility and configuration effort.
Other big differences include:
MCAPI has no language binding for FORTRAN since this is not commonly found in embedded systems.
MCAPI does not support collective communications as in MPI. This allows MCAPIv to have a smaller implementation.
MCAPI does not have the concepts of groups.
MCAPI does not have any synchronization methods as in MPI, no barriers, no fences, no locks.
MCAPI has no file objects or any functions associated with them.
MCAPI has no model for creation or management of processes.
Poly-Messenger/MCAPI
Free MCAPI specification download
Multicore Association
The Multicore Association, founded in 2005, is a member-funded, non-profit, industry consortium focused on the creation of open standard APIs, specifications, and guidelines that will allow system developers and programmers to adopt multicore technology into their applications more readily .The...
. MCAPI provides a standardized API for communication and synchronization
Synchronization
Synchronization is timekeeping which requires the coordination of events to operate a system in unison. The familiar conductor of an orchestra serves to keep the orchestra in time....
between closely distributed (multiple cores on a chip and/or chips on a board) embedded systems.
Overview
MCAPI is a language-independent, processor and operating system agnostic communications protocolCommunications protocol
A communications protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems and in telecommunications...
used to program multi-core devices. MCAPI provides three modes of communication: messages, packets, and scalars. MCAPI is a message-passing application programmer interface, together with protocol and semantic specifications for how its features must behave in any implementation. The primary goals for any MCAPI implementation are extremely high performance and low memory footprint.
MCAPI traces its heritage to communications APIs such as MPI
MPI
-Science, information technology and engineering:* Magnetic particle imaging, an imaging technique still being developed* Magnetic-particle inspection, a non-destructive method used to detect defects in ferrous materials...
and Berkeley sockets
Berkeley sockets
The Berkeley sockets application programming interface comprises a library for developing applications in the C programming language that perform inter-process communication, most commonly for communications across a computer network....
. Both MPI and sockets were developed primarily with inter-computer communication in mind, while MCAPI is targeted primarily towards inter-core communication in a multicore chip. Accordingly, a principal design goal of MCAPI was to serve as a low-latency interface leveraging efficient on-chip interconnect in a multicore chip. However, because of the more limited scope of multicore communications and its goal of low latency, MCAPI is less flexible than MPI or Sockets.
MCAPI Communication Modes
MCAPI provides three modes of communication:1. messages – connection-less datagrams. Messages are intended to be flexible with respect to payload, dynamically changing receivers and priorities and configuration effort, although at a slight performance penalty.
2. packets – connection-oriented, arbitrary size, uni-directional, and FIFO streams. Packets are intended to be flexible with respect to payload, providing higher performance than messages at the expense of configuration effort.
3. scalars – connection-oriented, fixed size, uni-directional, and FIFO streams. Scalars are intended to be the highest performance communications mode, albeit at the expense of payload flexibility and configuration effort.
MCAPI Compared to MPI
MCAPI is focused purely on embedded communications, and adds the ideas of messages, packets, and scalars + connected channels. This allows MCAPI to support various quality of service, where connected channels may exploit underlying embedded hardware. Furthermore MCAPI supports various kinds of priorities, messages can have a per message priority and channels can be treated as having different priorities as well, allowing implementations to map some or all channels to dedicated hardware. MCAPI can also support zero-copy via assigning attributes to connected channels.Other big differences include:
MCAPI has no language binding for FORTRAN since this is not commonly found in embedded systems.
MCAPI does not support collective communications as in MPI. This allows MCAPIv to have a smaller implementation.
MCAPI does not have the concepts of groups.
MCAPI does not have any synchronization methods as in MPI, no barriers, no fences, no locks.
MCAPI has no file objects or any functions associated with them.
MCAPI has no model for creation or management of processes.
External links
Multicore Communications APIPoly-Messenger/MCAPI
Free MCAPI specification download