Parallel programming for multicore processing

May 01, 2008


Parallel programming for multicore processing

Processor developers cannot always take advantage of multicore processors without understanding the impact on existing code.


Sidebar 1



Filtering out software side effects

Placing multiple processor cores on a single die can improve system performance while reducing power consumption. Embedded designs can benefit from multicore because designers can spread out an embedded device’s functions to different cores so that processing units can perform separate tasks concurrently.

Developers want the ability to take a single-core C++ program, pass it through an autoparallelizing compiler, and automatically generate a multicore program. However, single-core C++ software contains many dependencies in which one part of the software must be executed after another part. It is impossible for the compiler to automatically change the program’s order of execution to execute several parts of the program at the same time on different processors.

Codeplay’s Sieve C++ parallel programming system aims to minimize the amount of programmer intervention required when writing software for multicore processors. Using a sieve marker, programmers mark a section of the program called a sieve block. Inside sieve blocks, side effects are delayed, meaning that program code inside sieve blocks can be automatically split into three parts: reading data from memory, pure computation, and writing data back to memory. Because of this division, memory operations can be separated, parallelized, and performed by a DMA system. The system is aptly named "Sieve" because it filters out side effects from software and then lets programmers apply them later. Sieve has been tested successfully on the Cell BE-based PlayStation 3 and AGEIA’s PhysX processor.

While Sieve represents a step forward, more innovation is needed to make multicore architectures easier to use. The software community must continue to develop better tools and processes that make multicore architectures more practical.

Founded: 1999
Management: Andrew Richards, founder and managing director
Headquarters: Edinburgh, Scotland


OpenSystems Publishing