Archive for February, 2007

Massively Multi-core CPUs?

Tuesday, February 13th, 2007 at 1:03PM PST

There’s no doubt: the megahertz race is over. Both Intel and AMD, in more recent research and development, have been focusing not on improving the raw speed of the processor, but simply on improving the performance. This change in focus has resulted in several dual and quad-core processors being put to the market in the past couple of years. The trend began with features like hyper-threading that Intel introduced several years ago. Now, this trend looks to be taking a giant step forward.

Intel unveiled Polaris on Sunday, a chip that apparently makes use of no less than eighty cores to do its work. Eighty-core chips are still several years away from the consumer marketplace, which is probably a good thing. The number does indeed sound fantastic, and I can imagine many a person got a little starry-eyed with visions of amazing performance upon hearing the news. Nonetheless, there are some issues that I can see to overcome before these types of massively parallel chips can revolutionize computing.

The biggest issue is simply that today’s software is designed to run on a serial architecture. Most people multi-task to some degree, which helps somewhat, but today’s machines are so fast that there are diminishing returns with extra cores. Personally, I seem to have about one to three processes ready to go at any given time, not including BOINC, which essentially just grabs up any unused processor time. While playing a resource-intensive game or similar workload, that number may rise. What this really means is that I’m not in a position to effectively utilize more than two to four cores.

The question of the day is thus whether or not it is possible to take traditionally serial algorithms used by numerous programs and rewrite or transform them (in the compiler, for instance) to optimize them for massively parallel architectures. If this doesn’t turn out to be feasible, or even if it does, it still remains that applications must be written and optimized to work in parallel, instead of serially.

Personally, my biggest concern is the overhead the necessary thread-safety would incur. But maybe I’m just a dinosaur who’s remembering the problems of traditional multi-threading. In either case, I can’t wait to see what awaits us in the near future.