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.
Management: Andrew Richards, founder and managing director
Headquarters: Edinburgh, Scotland