Tech Focus: Time to leave sequential coding of multicores behind?
HIGHLIGHTS
Using Java to deal with multicore programming complexity: Part 1
ParaSail: Less is more with multicore
Thread synchronization techniques for better multicore system power/performance tradeoffs
Editor's Note
The authors of my Editor's Top Picks for this week – Atego's Kelvin Nilsen and Adacore's S. Tucker Taft – believe that despite all the tools that allow embedded systems developers to maintain traditional sequential C programming techniques in the highly parallel environment of multicore design, it is now time to leave those methods behind and move on.
In “Using Java to deal with multicore programming complexity , ” a three part series on Embedded.com this week, Nilsen first looks at the advantages of Java as a multicore programming environment, then how to transition legacy C code to Java, and finally how to achieve deterministic multicore performance using a combination of C and Java.
In “ParaSail: less is more with multicore,” Taft takes another approach to migrating to a more efficient parallel programming environment. He says Parasail will allow embedded developers to stick with some of the traditional sequential programming methods because it has been designed to eliminate many of gotchas faced in multithreaded multicore designs, such as global variables, parameter aliasing, explicit threads, lock/unlock and race conditions, and pointers.
If you are not convinced, here are a number of recent articles, white papers and webinars on the full range of traditional techniques that developers currently use, including message passing methods such as MCAPI, parallel programming extensions such as OpenMP, virtual machine execution environments using hypervisors, and interprocess communications protocols. Of these some further Editor's Favorites are:
Thread synchronization for better multicore system tradeoffs Managing multiple processes in a deterministic multicore design Pick the right multicore virtualization use case for your design
Design How-Tos
Using Java to deal with multicore programming complexity: Part 1
Atego's Kelvin Nilsen surveys some of the special issues that must be addressed when writing software for multiprocessor hardware and how Java can ease the transition.
ParaSail: Less is more with multicore
Adacore's S. Tucker Taft surveys the impediments developers face in doing effective multicore programming, discusses the problems they create, and illustrates how parallel programming in ParaSail is simplified by doing without them.
Multicore programming: it's all in the messaging
By making use of familiar software development frameworks such as those based on message passing, Sven Brehmer thinks the transition to embedded designs based on multicore architectures can be considerably simplified.
Thread synchronization techniques for better multicore system power/performance tradeoffs
An in-depth look at a thread synchronization mechanism based on hardware supplied primitives for use in multicore designs to guarantee both power savings and improved system performance as well as RTOS overhead.
Manage multiple processes and processors in a deterministic multicore design
How should processes running on different RTOSes communicate in systems with more than one operating system? The author suggests you can manage inter-process communications with global-object networking.
A decision-tree approach to picking the right embedded multicore software architecture
Freescale's Robert Oshana walks the embedded software developer through a multicore “decision tree” for selecting software components best suited to the app, such as RTOS, Linux, RT-Linux, or none.
Useful design patterns for building embedded multicore systems
Anderson MacKay provides a brief tutorial on design patterns you may find useful as starting points for thinking about how to implement a multicore into your embedded system.
Analyzing multithreaded applications—Identifying performance bottlenecks on multicore systems
Here's a step by step method for identifying and analyzing bottlenecks in multithreaded applications on multicore systems.
Multicore networking in Linux user space with no performance overhead
In this Product How-To Design article, the Freescale authors discuss multi-core network SoCs and how to leverage them efficiently for data path processing, the limitations of current software programming models, and how to use the VortiQa zero-overhead user space software framework in designs based on the QorIQ processor family.
Pick the right multicore virtualization use case for your design
According to Rob Oshana and Stuart Yoder of Freescale, while virtualization enables the sharing of hardware resources on a single computer system, allowing multiple OSes to simultaneously share the system, the trick is picking the use case that best matches your application.
Virtualization options for embedded multicore systems
There are a number of paths to virtualization for embedded systems. After a tour of those options, Freescale Semiconductor's Syed Shah makes the case for the bare metal hypervisor-based approach — coupled with hardware virtualization assists in the core, the memory subsystem and the I/O — as the best-performing option.
Transitioning to multicore processing
Hesitating to make the shift from single- to multiple-core processing in your design? Here's a guide to making the transition.
Use OpenMP for programming parallel threads in multicore applications: Part 1
In the first of four articles, Intel's Shameem Akhter and Jason Roberts present the case for the OpenMP API as a way to write code for highly parallel multicore and multithreaded designs.
Using MCAPI to lighten an MPI load
High-performance computing (HPC) relies on large numbers of computers to get a tough job done. Often, one computer will act as a master, parceling out data to processes that may be located anywhere in the world. The Message Passing Interface (MPI) provides a way to move the data from one place to the next.
2012 Embedded Market Survey webinar
UBM Electronics' 17th annual survey of embedded systems designers worldwide shows trends in software and hardware usage. The 2012 Embedded Market Survey also looks at languages, productivity, and the challenges design teams rank as most important. A webinar on Friday April 20 will examine the results from over 1,700 respondents from across the embedded industry, the dataset enables a deep analysis to track key changes in this important electronics industry segment. There will also be the opportunity to ask questions online. To register click here .
Products
Freescale adds low end processors to i.MX 6 family for industrial multimedia
Freescale Semiconductor is introducing two lower cost processors that are pin-compatible with the existing i.MX 6 family of devices for industrial and embedded multimedia applications.
Freescale ups ante with quad-core Qorivva
Freescale Semiconductor said its new quad-core Qorivva MPC5746M microcontroller boost performance up to 5-times plus includes specialized circuitry for safety, security and input/output including on-chip Ethernet.
Poly-Platform 2.0 features enhanced memory management for multicore apps
PolyCore Software, Inc. (PSI) has added significant functionality to Version 2.0 of its Poly-Platform multicore software platform.
Mentor Graphics extends Power Management Framework with Hibernate
The first devices with support for Mentor Graphics enhanced power management frame work will be the Freescale i.MX family of multimedia processors.
|