Market Overview of Tools for Multicore Software Development
The well-known Moore’s law states that the number of transistors on a chip doubles every two years. More transistors mean more computing power. Combined with increasing clock speed this trend is responsible for the powerful processors we use today.
The trend is still accurate. However the clock speed of current processors has stagnated in the last years. Chip manufactures cannot increase the speed any further without risking or sacrificing power efficiency. Higher processor clock speeds require more power. But faster processors also generate more heat and thus require even more power for cooling. The result is that the ratio of compute power per watt doesn’t scale linearly. This is why experts speak of singlecore processors hitting the »power wall«, where the amount of additional compute power does not justify the additional amount of actual power that is required to achieve it.
However speed was not the only improvement in the field of processor development. New chip production techniques achieved a constant miniaturization of chip components which means that more processors can be placed on the same area. This is one of the reasons for the current developments in the field of multicore CPUs.
Instead of making single processors faster, more, smaller processors are placed on the same area. Instead of boosting the processing power by increasing clock speeds, additional processing power is achieved by using multiple processors simultaneously. This has significant consequences for software developers. Until now they could take it for granted that the improvements in processor technology will in turn directly improve their software’s speed. Furthermore, the single processor model has offered them a deterministic computational model that was straight-forward to understand and to debug in the case of errors.
Now they have to adapt their software to the hardware and learn how to distribute the workload on multiple processors in parallel. They have to do so in order to implement new features in their software without degrading performance.
This study provides an overview of the tools and their requirements of software development for multicore CPUs.