More about multicores and multiprocessors
We've collected the most recent how-to and technical articles from
Embedded.com on multithreading, multicores, multiprocessor-on-chip
(MPoc), and multiprocessor system designs. We're constantly updating
our lists of articles and industry links:
Embedded.com's technical articles
Recent papers on the Web
Keep checking back to see what's new and let us know if you have links to add or content to contribute. For upcoming activities in the industry relating to multicore design, go to the Multicore Association Web site.
Embedded.com Site Editor
Embedded.com technical articles
Back to menu
NEW!! Software defined silicon: why can't hardware be more like software?
It can, even though next generation multicore designs mix programmable logic, CPU blocks and dedicated logic. It requires a new approach to architectural design - software defined siliocn.
NEW!! Analysis: XMOS multicore chip offers low cost programmable I/O
BDTI analyzes XMOS Semiconductor's XS-1 family of multicore chips offering programmable intterfaces.
NEW!! Debugging a shared memory problem in a multi-core design with virtual hardware
This article demonstrates how a virtual platform can be used to debug a shared memory problem in a multi-core design
NEW!! Embedded multicore reversing DSP-GPP convergence
As multicore chips make waves in the embedded industry, the convergence of DSP and non-DSP processors has changed to a renewed divergence.
NEW!! High level parallel programming model simplifies multicore design
Use of a high level programming model greatly simplifies software development for multicore processors, including heterogeneous multicore processors.
NEW!! Multicore analysis made easy with Nexus 5001 debug spec
If you are looking for a nextgen follow-on to the JTAG interface for your multi-core design, take a look at the Nexus 5001 debug spec, which supports the use of high bandwidth interfaces to efficiently transport data between silicon targets and debug tools
NEW!! Implementing multicore designs using Advanced MC
Tim Van De Walle takes you through the reasons you should implement your next multiprocessor based system using AdvancedMC and AdvancedTCA.
NEW!! 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.
NEW!! There's nothing new about multicore mania
The recent introduction of multicore architectures has been causing a sprising amount of up roar. But multiprocessing has been around for decades.
NEW!! Multicore systems-on-a-chip can handle embedded designs
Tailoring greater numbers of dedicated processors to discrete tasks and types of tasks provides advantages over traditional homogeneous concurency when ensuring the simultaneous, reliable performance of both trivial and system crtical tasks.
Multicore puts the screws to parallel programming models
Leaders in mainstream computing are intensifying efforts to find a parallel programming model to feed the multicore processors already on chip makes drawing boards.
Fast virtual platforms can open up multicore software development
Virtual platforms aid the short-term market takeoff of multicore architectures as well as their long-term acceptance..
Multicore software development: Fact and Fiction
David Kleidermacher sorts through the myths and realities of doing software development for multicore designs and grades the various standards that are emerging to address the challenges embedded designers face.
Is multicore hype or reality?
Multicore processors are here to stay but memory is a bottleneck.
Achieving higher performance in a multicore-based packet processing design.
Michael Coward guides you through the design trade-offs in selecting the memory subsystem archtecture that gets the most performance out of a multicore-based packet processing engine.
Partitioning applications across multiple cores
The multicore processors used in today's networking equipment commonly target enterprise-level access routers, raising questions about partitioning applications in such ways as to most effectively take advantage of multi-core capabilities.
Making life easier for multicore SoC software developers
Putting multiple processors on a single chip or on a single board has enabled embedded systems hardware developers to provide more features and higher processing speeds using less power. But for software developers - and vendors - this trend presents a daunting set of challenges.
Making the right architectural and tool choices in your multicore design
An effective multicore design strategy requires the use of software tools that allow programmers to focus on the design elements themselves, not the precise details of exactly how they are implemented.
*Common multicore parallel programming problems and their solutions
In a four part series, Shameem Akhter and Jason Roberts survey common multi-core programming problems and provide some insight into their solution.
Part 1: Threads, data races, deadlocks and livelocks.
Part 2: Heavily contended locks
Part 3: Non-blocking algorithms, ping-ponging and memory reclamation
Part 4: Memory, cache issues and consistency
*Multicore gives more bang for the buck
Each new process geometry and microarchitecture delivers successively less in terms of performance gains. It is simply no longer possible to deliver Moore's Law by going faster.
*Streaming video with "time slice" multicore-friendly processing eliminates dropped frames
David Workman of Kulabyte describes how to improve streaming video based on H.264, MPEG-4, MPEG-2, On2 and most other codecs by eliminating droped frames and improving bandwidth efficiency.
*Revisiting heterogeneous versus homogeneous
Jeff Bier looks at the trade-offs in suing homogeneous versus heterogenous processing elements in multicore chips for DSP applications.
*BDTI benchmarks the picoChip PC102
BDTI has just released the first independent benchmark results comparing picoChip's massively parallel PC102 chip to that of high end DSP processors and FPGAs.
*Multi-Core Processors: Driving the evolution of automotic electronics architectures
According to Infineon's Patrick Leteinturier, the use of multicore architectures will increase in automotive applications because of the growing need for increased performance with lower power consumption.
*Making the transition from sequential to implicit parallel programming
Despite Microsoft's view that a parallel programming model for multiprocessing is 5 to 10 years away, Rishiyur Nikhil and Arvind believe we can't wait and delve into the options available now. In this series of eight articles, they look at the alternatives: sequential versus parallel programming, procedural versus declarative and functional, explicit versus implicit.
Part 1: How sequential languages obscure parallelism
Part 2: How to achieve parallel execution
Part 3: Explicit parallel programming with threads and locks
Part 4: Explicit parallelism: message-passing programming
Part 5: Implicit parallel programming: Declarative languages
Part 6: So, why aren't we using functional languages yet?
Part 7: pH: an implicitly parallel, declarative language
Part 8: Turning parallel Haskell (pH) into a production language
*Embedded software stuck at C
Embedded software developers are slowly moving to multi-core architectures, but they lack the needed standards and will makd the transition without much help from parallel programming languages, said a panel of experts at the Power.org conference.
* Demystifying multithreading and multi-core
Is multithreading better than multi-core? Is multi-core better than multithreading?
*Massively parallel processsors for DSP, Part 2
In Part 2, BDTI looks at innovative new tools for massively parallel processors
*Using OpenMP for programming parallel threads in multicore applications
In this four part series, Intel's Shameem Akhter and Jason Roberts present the case for the OpenMP API as a way to code for highly parallel muticore and multithreaded designs.
Part 1: The challenges of threading a loop
Part 2: Managing shared and private data
Part 3: Performance oriented Programming
Part 4: The OpenMP library functions and how to use them
*Accelerate system performance with hybrid multiprocessing and FPGAs
Multiprocessing is becoming a key differentiator for FPGA-based processor architectures.
* Multicore microprocessors and embedded multicore SoCs have different needs
Steve Leibson of Tensilica assesses the tradeoffs between multicore microprocessors and embedded multicore SoCs and makes the case for dedicated tailored processors rather than general purpose architectures as the best alternative.
* Defining standard Debug Interface requirements for OCP-compliant multicore SoCs: Part 2
In the second in a two part series, the OCP Debug working group describes the work being done to update the Open Core spect to reflect the needs of complex uniprocessor and multicore Socs. This week: how will the OCP multicore interface will be used.
* Defining standard Debug Interface requirements for OCP-compliant multicore SoCs: Part 1
In the first in a two part series, the OCP working group describes work being done on the spec to reflect the needs of complex uniprocess and multicore SoCs.
* Threading and parallel programming constructs used in multicore systems development: Part 3.
In the final part in a three part series, Intel's Shameem and Jason Roberts discuss condition variables, messages and how flow control constructs and how they can be used in a parallel programming environment.
How to build a consistent mental model for reasoning about concurrency
It is necessary to build a consistent mental model for concurrency before implementing it in your software design.
* Python NetWork Spaces and Parallel Programs
Python and NetWorkSpaces make it easy to create and experiment with parallel programs without requiring specialized tools or hardware.
* Threading and parallel programming constructs used in multicore systems development: Part 2. In the second in a three part series, Intel's Shamem Akhter and Jason Roberts deal with parallel programming constructs using synchronization, critical sections and deadlock in implementing multithreading on multicore designs.
* Threading and parallel programming constructs used in multicore systems development: Part 1
In the second in a three part series, Intel's Shamem Akhter and Jason Roberts deal with parallel programming constructs using synchronization, critical sections and deadlock in implementing multithreading on multicore designs.
* Applying the fundamentals of parallel programming to multiprocessor designs, Part 1
In the first in a series, Shameem Akhter and Jason Roberts of Intel provide details on how to break up task threads in a parallel programming environment so that multiple operations can proceed simultaneously.
*Applying the fundamentals of parallel programming to multiprocessor designs Part 2
Shameem Akhter and Jason Roberts of Intel provide details on how to break up task threads in a parallel programming environment so that multiple operations can proceed simultaneously.
*Optimizing Software for Multicore Processors
Multicore processors present the challenge of deciding how to validate and optimize code for performance gains.
*Understand packet-processing performance when employing multicore processors
Your cache configuration can have a bigger impact on overall multicore system performance than you expect.
* Multi-threaded debugging techniques
Several general principles can be applied to debugging multi-threaded software applications.
*Get multicore performance from one core.
An SoC with a multithreaded virtual multiprocessor might be just what you're looking for.
* Going multicore presents challenges and opportunities
Performance and power efficiency are key advantages, but they're also challenging as the number of cores increases.
* Excerpts from Wayne Wolf's book High-Performance Embedded Computing. This five-part series describes the differences between running software on embedded multiprocessors versus general purpose systems and the precautions that must be taken.
Part 1, The role of the operating system
Part 2, Multiprocessor Scheduling
Part 3, Event-driven multiprocessor scheduling analysis
Part 4, What's different about multiprocessor software?
Part 5, Achieving multiprocessor quality of service?
* Excerpts from the book Customizable Embedded Processors. In this four-part series entitled "Using sub-RISC processors in next generation customizable multi-core designs," the authors state the case for sub-RISC processing elements as the natural multicore SoC building block.
Part 1, Concurrent architectures, concurrent applications.
Part 2, Generating a multicore architecture from the instruction set.
Part 3, Deploying applications with Cairn.
Part 4, IPV4 Forwarding Design Example
* A three-part series "Techniques for debugging an asymmetric multicore application" from Intel's Julien Carreno.
Part 1, A typical asymmetric multi-core application
Part 2, Tools for debugging
Part 3, typical multicore debugging problems
* A seven-part series entitled "The challenges of nextgen multicore networks-on-chip systems" based on Luca Benini and Giovanni De Micheli's book Networks On Chips.
Part 1, Why on-chip networking?
Part 2, SoC objectives and NoC needs
Part 3, Basic NoC approaches
Part 4, Programming issues and approaches
Part 5, Task-level parallel programming on multicore Networks-On-Chip
Part 6, Communications-exposed programming
Part 7, Tools for nextgen multicore networks-on-chips.
* Programming the Cell Processor
Our authors present algorithms and strategies they've used to make breadth-first searching on graphs as fast as possible on the Cell multicore processor.
* Demystifying ESL for embedded systems designs
While the definitions of ESL may vary, the end result should be the same, namely letting developers of multiprocessor and multicore systems analyze their designs at a higher level of abstraction.
* Taking the first step towards MPSoC design with network-on-chip methodologies
Marcello Coppola and Carlo Pistritto describe the details of ST Micro's network-on-chip interconnect topology and provide perspective on how NoCs will solve some of the troubling on-chip traffic jams.
* Designing low-power multiprocessor chips
Chip designers face the challenge of reducing the number of gates in a design and implementing efficient architectures to reduce die size and the total power consumption of a system.
* Parallel processing for multi-core DSPs
Modern video-processing systems running multiple applications such as image processing, compression and content analysis force systems designers to use multiple DSP chips, FPGAs and a system controller, but chip-level software tools don't address the system integration issues.
* Designing custom embedded multicore processors
There are "multi" paths a designer can take to get the needed performance.
* Functional TLM simplifies heterogeneous multiprocessor software development
Virtual prototyping technology is emerging that allows the creation of a high-performance, functional software model of an embedded multicore system that fully mirrors the hardware functionality
* Tips for effective usage of the shared cache in multi-core architectures
Tian Tian of Intel provides some guidelines on what to do and what to avoid when implementing shared cache in your multi-core based design.
* Using PCIe in a variety of multiprocessor system configurations
Spanning the range from a uni-processor I/O interconnect for desktop systems to a backplane fabric supporting multiple processors for communications, PCIe is the only serial interconnect needed for inside the box designs.
* The software industry needs to adapt--and soon--to multicore chips
The big question is how -- and how soon -- the software industry will step up and produce applications that can take advantage of multiple cores.
* Multicore faces a long road
This may go down as the year the electronics industry woke up to the full breadth and significance of the trend to multicore processors.
* Why Multiprocessor Systems Need CORBA
CORBA enables software components in a multiprocessor system to easily communicate--regardless of what language they are written in, what OS they run on, or where they are located. Even better, COBRA makes it easy to move functionality between DSPs, GPPs, and FPGAs.