Multicore processors are processors which have more than one core inside. Today, it is not uncommon to have desktops having two or four cores. This trend is picking up and will only accelerate in coming years. There is a background to the raising popularity of multicore technologies. Even more important is the impact multicore is going to have on the mainstream programming.
If we look at the semiconductor industry, Moore's law has held its sway over the last two decades. Though it is still holding good, there has been a perceptible slow down recently. Moore's law says that the number of transistors will double in every 18 months. Though transistor count is doubling, but performance is not keeping in the same pace. Performance kept pace till 2002 due to technologies like pipelining, caching and superscalar designs. After that the gap has started becoming visible as the returns from these technologies began to yield diminishing returns.
For example, between 1993 and 1999, CPU speeds increased 10 fold. The first 1GHz CPU was released in 2000. In last 9 years, it has gone up only to 3.3GHz, a growth that is considerably slower than the previous six years. Today, a 5GHz or 6GHz processor looks remote.
Power is another factor behind the slowdown. Power consumed is related to frequency and increasing frequency makes a huge drain on the power. The challenges of designing appropriate heat syncs, airflows in servers and desktops become pronounced as frequency increases. This is referred to as "Power wall".
Having exploited many optimisation techniques and hit the power wall, semiconductor companies have run out of steam to increase the CPU speed. Instead, they are now packing more cores in the processor, instead of increasing the speed of the processors.
This has profound implications for the industry. As long as the CPU speed was on an up curve, software vendors were getting free lunch of improved performance without doing anything. If Windows performance was not good on a desktop, one could go to a higher speed desktop and applications can run faster. Now this free ride has ended. One cannot get a higher speed processor; instead, one will get 2 cores in place of one!
What has happened is that the semiconductor companies have passed the onus of improving performance has moved from hardware to software. The big question is whether the software world prepared for it?
Unfortunately, software world is not fully prepared for the changes happening and is caught on the wrong foot. It is not going to be easy for the software to get performance improvements so easily as in the past. But, many efforts are going on in the research labs, universities and other places on the nature of the problem and many solutions are being tried out. Start-ups and venture capitalists are focusing on the area and lot of innovation is happening. How software community adjusts to the new realities of multicore and how programming will get reshaped in coming years will be interesting to watch!
In coming weeks, I will discuss these software challenges in detail and how software community is trying to address them. I look forward to your valuable comments and feedbacks in the days to come!
用户3796477 2010-2-13 21:49
Currently there are many layers between the programmer and core, namely, the compiler, .Net framework, assembly languate etc and these layers obscure the functiion and features of the silicon to the programmer. So with litle knowledge of multi-core processors, it is difficult to write error free and efficient code to fully exploit the speed and architecture of the multi cores. So what ever above the silicon need a radical change, so that the programmer is taken closer to the cores and can write efficient code. The current scenerio is not at all suitable for multi core processors. Either there will be inefficient, slow code, or code with full of bugs will be the result of current scenerio.