The Multicore Association was founded in 2005. Multicore Association is a member-funded,
non-profit
A nonprofit organization (NPO) or non-profit organisation, also known as a non-business entity, not-for-profit organization, or nonprofit institution, is a legal entity organized and operated for a collective, public or social benefit, in co ...
,
industry
Industry may refer to:
Economics
* Industry (economics), a generally categorized branch of economic activity
* Industry (manufacturing), a specific branch of economic activity, typically in factories with machinery
* The wider industrial sector ...
consortium focused on the creation of
open standard
An open standard is a standard that is openly accessible and usable by anyone. It is also a prerequisite to use open license, non-discrimination and extensibility. Typically, anybody can participate in the development. There is no single definitio ...
API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
s,
specifications
A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard.
There are different types of technical or engineering specificati ...
, and guidelines that allow system developers and
programmers
A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software.
A programmer is someone who writes/creates ...
to more readily adopt multicore technology into their
applications
Application may refer to:
Mathematics and computing
* Application software, computer software designed to help the user to perform specific tasks
** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
.
The
consortium provides a neutral forum for vendors and developers who are interested in, working with, and/or proliferating multicore-related products, including
processors
A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, an ...
, infrastructure, devices, software, and applications. Its members represent vendors of
processors
A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, an ...
,
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s,
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that ...
s,
development
Development or developing may refer to:
Arts
*Development hell, when a project is stuck in development
*Filmmaking, development phase, including finance and budgeting
*Development (music), the process thematic material is reshaped
*Photographi ...
tools,
debugger
A debugger or debugging tool is a computer program used to test and debug other programs (the "target" program). The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execut ...
s,
ESL
English as a second or foreign language is the use of English by speakers with different native languages. Language education for people learning English may be known as English as a second language (ESL), English as a foreign language (EF ...
/
EDA EDA or Eda may refer to:
Computing
* Electronic design automation
* Enterprise Desktop Alliance, a computer technology consortium
* Enterprise digital assistant
* Estimation of distribution algorithm
* Event-driven architecture
* Exploratory d ...
tools, and simulators; and application and system
developers.
Completed Projects
In 2008, the Multicore Communications API working group released the consortium's first specification, referred to as
MCAPI 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 ch ...
. MCAPI is a
message-passing
In computer science, message passing is a technique for invoking behavior (i.e., running a program) on a computer. The invoking program sends a message to a process (which may be an actor or object) and relies on that process and its supporting i ...
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
A printed circuit board (PCB; also printed wiring board or PWB) is a medium used in electrical and electronic engineering to connect electronic components to one another in a controlled manner. It takes the form of a laminated sandwich stru ...
) embedded systems. The target systems for MCAPI span multiple dimensions of
heterogeneity
Homogeneity and heterogeneity are concepts often used in the sciences and statistics relating to the uniformity of a substance or organism. A material or image that is homogeneous is uniform in composition or character (i.e. color, shape, siz ...
(e.g., core heterogeneity,
interconnect fabric
Switched fabric or switching fabric is a network topology in which network nodes interconnect via one or more network switches (particularly crossbar switches). Because a switched fabric network spreads network traffic across multiple physical li ...
heterogeneity, memory heterogeneity,
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
heterogeneity, software
toolchain
In software, a toolchain is a set of programming tools that is used to perform a complex software development task or to create a software product, which is typically another computer program or a set of related programs. In general, the tools for ...
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
task
Task may refer to:
* Task (computing), in computing, a program execution context
* Task (language instruction) refers to a certain type of activity used in language instruction
* Task (project management), an activity that needs to be accomplished ...
s or processors, and/or (2) the
Run time (program lifecycle phase)
In computer science, runtime, run time, or execution time is the final phase of a computer programs life cycle, in which the code is being executed on the computer's central processing unit (CPU) as machine code. In other words, "runtime" is t ...
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
A multi-core processor is a microprocessor 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 (such ...
software programming guide for the industry that aids in improving consistency and understanding of
multicore
A multi-core processor is a microprocessor 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 (such ...
programming issues. The MPP guide provides best practices leveraging the
C/
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significa ...
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
NXP Semiconductors N.V. (NXP) is a Dutch semiconductor designer and manufacturer with headquarters in Eindhoven, Netherlands. The company employs approximately 31,000 people in more than 30 countries. NXP reported revenue of $11.06 billion in 2 ...
and David Stewart of
CriticalBlue
Lucio Lanza
, industry = IT, Cybersecurity
, products = SECaaS Dynamic Analysis Tools Profiling Tools Verification Tools
, production =
, services = API SecurityApplication SecuritySoftware OptimizationP ...
.
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
Accelerator may refer to:
In science and technology
In computing
*Download accelerator, or download manager, software dedicated to downloading
*Hardware acceleration, the use of dedicated hardware to perform functions faster than a CPU
** Gr ...
,
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 eSO
Active Working Groups
* The Multicore Communications API (
MCAPI 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 ch ...
) working group is currently adding more features and functions to expand the usefulness of MCAPI for Version 2.x. The working group is working on interoperability and 'zero copy' functionality, including bidirectional interaction between 'application and application' using shared memory and bidirectional interaction between 'application and driver', which is being led by Sven Brehmer of PolyCore Software.
* The Virtualization working group will focus on defining and optimizing a set of
paravirtualization
In computing, paravirtualization or para-virtualization is a virtualization technique that presents a software interface to the virtual machines which is similar, yet not identical, to the underlying hardware–software interface.
The intent o ...
information and functions to communicate with a
Hypervisor
A hypervisor (also known as a virtual machine monitor, VMM, or virtualizer) is a type of computer software, firmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called ...
. The working group will also focus on a system to categorize the various virtualization features and functionality including within multicore processors. This working group is chaired by Rajan Goyal of
Cavium Networks
Cavium was a fabless semiconductor company based in San Jose, California, specializing in ARM-based and MIPS-based network, video and security processors and SoCs. The company was co-founded in 2000 by Syed B. Ali and M. Raghib Hussain, who w ...
and Surender Kumar of
Nokia Networks
Nokia Networks (formerly Nokia Solutions and Networks (NSN) and Nokia Siemens Networks (NSN)) is a multinational data networking and telecommunications equipment company headquartered in Espoo, Finland, and wholly owned subsidiary of Nokia Corp ...
.
* The Open Asymmetric Multi Processing (OpenAMP) working group will focus on standardizing the APIs, providing detailed documentation for the specification, and expanding the functionality of OpenAMP. This working group is chaired by Tomas Evensen of
Xilinx
Xilinx, Inc. ( ) was an American technology and semiconductor company that primarily supplied programmable logic devices. The company was known for inventing the first commercially viable field-programmable gate array (FPGA) and creating the fi ...
.
OpenAMP
The OpenAMP Multicore Framework is an open-source framework for developing
asymmetric multi-processing (AMP) systems application software,
similar to
OpenMP
OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran, on many platforms, instruction-set architectures and operating sy ...
for symmetric multi-processing systems.
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
Xilinx, Inc. ( ) was an American technology and semiconductor company that primarily supplied programmable logic devices. The company was known for inventing the first commercially viable field-programmable gate array (FPGA) and creating the fi ...
, has been open-sourced
under the OpenAMP open-source project.
["open-amp repository"]
Mentor Embedded Multicore Framework (MEMF) is a proprietary implementation of the OpenAMP standard.
The OpenAMP API standard is managed under the umbrella of Multicore Association.
[
Felix Baum, Arvind Raghuraman]
"Making Full use of Emerging ARM-based Heterogeneous Multicore SoCs."
8th European Congress on Embedded Real Time Software and Systems (ERTS 2016), Jan 2016,
TOULOUSE, France. ffhal-01292325
References
{{Reflist
External links
Official Multicore Association website*Benchmarking multicore platforms
EEMBC
Benchmarks (computing)
Organizations established in 2005
Non-profit organizations based in the United States