The Multicore Association was founded in 2005. Multicore Association is a member-funded, non-profit, industry consortium focused on the creation of open standard APIs, specifications, and guidelines that allow system developers and programmers to more readily adopt multicore technology into their applications.
The consortium provides a neutral forum for vendors and developers who are interested in, working with, and/or proliferating multicore-related products, including processors, infrastructure, devices, software, and applications. Its members represent vendors of processors, operating systems, compilers, development tools, debuggers, ESL/EDA tools, and simulators; and application and system developers.
In 2008, the Multicore Communications API working group released the consortium's first specification, referred to as MCAPI. MCAPI is a message-passing API that captures the basic elements of communication and synchronization that are required for closely distributed (multiple cores on a chip and/or chips on a circuit board) embedded systems. The target systems for MCAPI span multiple dimensions of heterogeneity (e.g., core heterogeneity, interconnect fabric heterogeneity, memory heterogeneity, operating system heterogeneity, software toolchain heterogeneity, and programming language heterogeneity).
In 2011, the MCAPI working group released MCAPI 2.0. The enhanced version adds new features, such as domains for routing purposes. MCAPI Version 2.0 adds a level of hierarchy into that network of nodes through the introduction of "domains". Domains can be used in a variety of implementation-specific ways, such as for representing all the cores on a given chip or for dividing a topology into public and secure areas. MCAPI 2.0 also adds three new types of initialization parameters (node attributes, implementation-specific configurations, implementation information such as the initial network topology or the MCAPI version being executed). The MCAPI WG is chaired by Sven Brehmer.
In 2011, the Multicore Resource Management API working group released its first specification, referred to as MRAPI. MRAPI is an industry-standard API that specifies essential application-level resource management capabilities. Multicore applications require this API to allow coordinated concurrent access to system resources in situations where: (1) there are not enough resources to dedicate to individual tasks or processors, and/or (2) the Run time (program lifecycle phase) system does not provide a uniformly accessible mechanism for coordinating resource sharing. This API is applicable to both SMP and AMP embedded multicore implementations (whereby AMP refers to heterogeneous both in terms of software and hardware). MRAPI (in conjunction with other Multicore Association APIs) can serve as a valuable tool for implementing applications, as well as for implementing such full-featured resource managers and other types of layered services. The MRAPI WG was chaired by Jim Holt.
In 2013, the Multicore Task Management API (MTAPI) working group released its first specification. MTAPI is a standard specification for an application program interface (API) that supports the coordination of tasks on embedded parallel systems with homogeneous and heterogeneous cores. Core features of MTAPI are runtime scheduling and mapping of tasks to processor cores. Due to its dynamic behavior, MTAPI is intended for optimizing throughput on multicore-systems, allowing the software developer to improve the task scheduling strategy for latency and fairness. This working group was chaired by Urs Gleim of Siemens.
In 2013, the Multicore Programming Practices (MPP) working group delivered a multicore software programming guide for the industry that aids in improving consistency and understanding of multicore programming issues. The MPP guide provides best practices leveraging the C/C++ language to generate a guide of genuine value to engineers who are approaching multicore programming. This working group was chaired by Rob Oshana of NXP Semiconductors and David Stewart of CriticalBlue.
in 2015, the Software/Hardware Interface for Multicore/Manycore (SHIM) working group delivered a specification to define an architecture description standard useful for software design. Some architectural features that SHIM describes are the hardware topology including processor cores, accelerators, caches, and inter-core communication channels, with selected details of each element, and instruction, memory, and communication performance information. This working group was chaired by Masaki Gondo of eSOL .
The OpenAMP Multicore Framework is an open-source framework for developing asymmetric multi-processing (AMP) systems application software, [1] similar to OpenMP for symmetric multi-processing systems. [2]
There are several implementations of OpenAMP Multicore Framework, each one intended to interoperate with all the other implementations over the OpenAMP API. One implementation of the Multicore Framework, originally developed for the Xilinx Zynq, has been open-sourced under the OpenAMP open-source project. [3] [4] Mentor Embedded Multicore Framework (MEMF) is a proprietary implementation of the OpenAMP standard. [4]
The OpenAMP API standard is managed under the umbrella of Multicore Association. [4]
Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing applications that span multiple operating systems and network protocols. The middleware creates a distributed communications layer that insulates the application developer from the details of the various operating systems and network interfaces. APIs that extend across diverse platforms and networks are typically provided by MOM.
Game programming, a subset of game development, is the software development of video games. Game programming requires substantial skill in software engineering and computer programming in a given language, as well as specialization in one or more of the following areas: simulation, computer graphics, artificial intelligence, physics, audio programming, and input. For multiplayer games, knowledge of network programming is required. In some genres, e.g. fighting games, advanced network programming is often demanded, as the netcode and its properties are considered by players and critics to be some of the most important metrics of the game's quality. For massively multiplayer online games (MMOGs), even further knowledge of database programming and advanced networking programming are required. Though often engaged in by professional game programmers, some may program games as a hobby, spawning a thriving scene of so-called indie game developers.
OpenMAX, often shortened as "OMX", is a non-proprietary and royalty-free cross-platform set of C-language programming interfaces. It provides abstractions for routines that are especially useful for processing of audio, video, and still images. It is intended for low power and embedded system devices that need to efficiently process large amounts of multimedia data in predictable ways, such as video codecs, graphics libraries, and other functions for video, image, audio, voice and speech.
The Khronos Group, Inc. is an open, non-profit, member-driven consortium of 170 organizations developing, publishing and maintaining royalty-free interoperability standards for 3D graphics, virtual reality, augmented reality, parallel computation, vision acceleration and machine learning. The open standards and associated conformance tests enable software applications and middleware to effectively harness authoring and accelerated playback of dynamic media across a wide variety of platforms and devices. The group is based in Beaverton, Oregon.
The MicroBlaze is a soft microprocessor core designed for Xilinx field-programmable gate arrays (FPGA). As a soft-core processor, MicroBlaze is implemented entirely in the general-purpose memory and logic fabric of Xilinx FPGAs.
A multi-core processor is a computer processor on a single integrated circuit with two or more separate processing units, called cores, each of which reads and executes program instructions. The instructions are ordinary CPU instructions but the single processor can run instructions on separate cores at the same time, increasing overall speed for programs that support multithreading or other parallel computing techniques. Manufacturers typically integrate the cores onto a single integrated circuit die or onto multiple dies in a single chip package. The microprocessors currently used in almost all personal computers are multi-core.
The Simple API for Grid Applications (SAGA) is a family of related standards specified by the Open Grid Forum to define an application programming interface (API) for common distributed computing functionality.
The Advanced Learning and Research Institute (ALaRI), a faculty of informatics, was established in 1999 at the University of Lugano with the mission of promoting research and education in embedded systems. The Faculty of Informatics within very few years has become one of the Switzerland major destinations for teaching and research, ranking third after the two Federal Institutes of Technology, Zurich and Lausanne.
OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.
Robotics middleware is middleware to be used in complex robot control software systems.
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 embedded systems.
Vector Fabrics, B.V. was a software-development tools vendor originated from Eindhoven based in Zaltbommel, the Netherlands. They developed tools for programming multicore platforms. Vector Fabrics says to help software developers and OEMs that struggle to write error-free and efficient code for multicore and (heterogeneous) manycore processors.
Heterogeneous System Architecture (HSA) is a cross-vendor set of specifications that allow for the integration of central processing units and graphics processors on the same bus, with shared memory and tasks. The HSA is being developed by the HSA Foundation, which includes AMD and ARM. The platform's stated aim is to reduce communication latency between CPUs, GPUs and other compute devices, and make these various devices more compatible from a programmer's perspective, relieving the programmer of the task of planning the moving of data between devices' disjoint memories.
Heterogeneous computing refers to systems that use more than one kind of processor or cores. These systems gain performance or energy efficiency not just by adding the same type of processors, but by adding dissimilar coprocessors, usually incorporating specialized processing capabilities to handle particular tasks.
MulticoreWare Inc is a software development company, offering products and services related to HEVC video compression, machine learning, compilers for heterogeneous computing, and software performance optimization services. MulticoreWare's customers include AMD, Microsoft, Google, Qualcomm and Telestream. MulticoreWare was founded in 2009 and today has offices in 3 countries – USA, China and India.
SensorThings API is an Open Geospatial Consortium (OGC) standard providing an open and unified framework to interconnect IoT sensing devices, data, and applications over the Web. It is an open standard addressing the syntactic interoperability and semantic interoperability of the Internet of Things. It complements the existing IoT networking protocols such CoAP, MQTT, HTTP, 6LowPAN. While the above-mentioned IoT networking protocols are addressing the ability for different IoT systems to exchange information, OGC SensorThings API is addressing the ability for different IoT systems to use and understand the exchanged information. As an OGC standard, SensorThings API also allows easy integration into existing Spatial Data Infrastructures or Geographic Information Systems.
RPMsg is a protocol enabling inter-processor communication inside multi-core processors.
SYCL is a higher-level programming model to improve programming productivity on various hardware accelerators. It is a single-source embedded domain-specific language (eDSL) based on pure C++17. It is a standard developed by Khronos Group, announced in March 2014.