In spring of last year, we described a new standard from the Multicore Association for use in managing tasks on multicore embedded systems. Called MTAPI, it abstracts away details of exactly where a particular task might run at any given time, allowing for fixed or real-time binding to a core or hardware accelerator.
Well, standards are all well and good, but then someone has to write code that actually implements the standard. Last month, Siemens announced an open-source BSD-licensed implementation that supports homogeneous multicore systems.
The MTAPI implementation was part of a larger multicore support package that they released, called Embedded Multicore Building Blocks (EMB2). It also includes implementation of some popular algorithm patterns as well as various structures and frameworks focused on streaming applications (an extremely common application type that is prone to challenging performance – meaning that effective multicore utilization makes all the difference).
They’ve segregated the code such that only a bottom base layer has any interaction with an underlying OS. This makes most of the code independent of the operating system (OS). They support Linux and Windows, but changes to the base layer will allow ready porting to other OSes.
Next year, they plan to support heterogeneous systems – a tougher deal because each node may have a different processing architecture, and memory may be scattered all over the system. In so doing, they’re likely to bring the venerable MCAPI standard into play. That, the first of the Multicore Association standards, handles communication between disparate cores running different OS instances.
You can find more info in their announcement.