A Line in the Sand
Much Ado About Cores
by Jim Turley
Silicon Insider #39, June 2006
“When I hear the word 'culture' I reach for my revolver,” deadpanned Hermann Göring, a man who was clearly all business. In the technology business, I sometimes want to shoot the messenger when every one of them is breathlessly abuzz over dual-core processors.
Processor "cores" and their apparent proliferation seem to have captured the imagination of those with little imagination – or recollection of history. Intel's marketing people very shrewdly trademarked the name Core as the successor to the popular Pentium brand name. Now any conversation about processor cores unintentionally involves trademarked name-dropping. Clever marketing, that.
Over in the engineering world, processors cores have been with us since there were processors. Every microprocessor and microcontroller in the world has a core in the same way that every car has an engine. The core is simply the brain of any processor. It's where the software gets executed and the data gets shuffled. It's the little man in the radio who sings.
Chips with two cores, or four, or ten, or even more are commonplace. In fact, the the average is 2.3 cores per processor chip. In short, this has all been done before.
There's obviously no trick to making multi-core processors. The real trick is the software. Dual-core processors are usually synchronized, running in lockstep using the same cache and same bus interfaces. They share an instruction set and memory or I/O resources, but execute two different streams of code. Like the Hydra, they have separate minds but one body. Who but Hercules can tame such a beast?
In mythology, Hercules got help from his nephew, Iolaus. And so it is today. To attack this multi-headed monster we'll need help from the software vendors. That means new software tools that can balance programming loads among two or more processors. Debuggers will have to evolve, too. This is all doable and it's already underway. Expect to see a stream of announcements on this front over the coming year.
But new compilers and debuggers won't be enough. We're facing a change to new programming languages. Current languages like C don't express parallelism well. Compilers can identify threads of execution or independent constructs and extract some small amounts of parallelism here and there, but the language itself prevents large-scale parallelism. If we're to exploit these new multi-processor chips, we're going to have to swallow hard, roll up our sleeves, and tackle a truly Herculean task.
Comment on this article






