Computer systems, at least on the desktop, have traditionally been single processor systems. Computers with multiple processors have been used for servers and supercomputers but these have always been very expensive. In an attempt to build cheap systems that have the processing power of supercomputers, various approaches using low-cost, commodity components, connected with high-speed communication systems are emerging. These systems are programmed using techniques from parallel processing so that the processors work together on the solution of a single problem, coordinating their activities by passing messages between processors. A simple analogy is that of a team of bricklayers cooperating to build a wall more quickly than a single bricklayer. Parallel processing has been widely used now for over two decades. Many powerful systems have been built, exploiting this technology, the most common examples of which comprise networked clusters of PCs. Such systems are described, not surprisingly, as multi-processor systems.

At the same time, the technology used in processor chips has steadily advanced following Moore's law – the performance (and density of components) in a single chip has doubled every 18 months. Now several processing units are included on a single chip in order to construct high-performance devices: these are multi-core processors and they herald a trend towards commodity processors with tens or hundreds of cores. Such devices will offer significant price/performance advantages provided their potential power can be exploited. To realise the potential will involve a combination of hardware design, skillful programming and advanced programming tools. Clearly the issues involved in programming multi-core processors have many similarities with those involved in programming multi-processor systems. The successful deployment of multi-core devices will, therefore, involve the application of existing parallel processing techniques, but also the development of new methodologies tailored to these new devices.

All of these issues lie at the heart of Concertant's core competence. We are a team with extensive experience in the successful deployment of multi-processor systems and are the ideal partner to help you get the best from such systems.

We have a more detailed, but nonetheless short, article on the background to why multi-processor and multi-core systems are with us and interesting here