I’m sure you’ve heard about multi-core processors but you might have a few questions about how it works and why there’s so much brouhaha concerning them.
In this guide, I’ll break down the confusion and arm you with the knowledge you need to grasp this often perplexing topic.
The core is the die on the processor that does the work.
Here’s a picture of a older Pentium P54C die.
The CPU receives input from one side, does some work, and sends it out the other side in a processed form.
For example, let’s say you’re one of the few hapless people out there still running a single core computer.
When you fire up Photoshop to edit photos from your family vacation to Sweden last year, your computer assigns all of its attention to that task. If you wanted to surf the web while the image was rendering it would slow your computer down because the CPU would have to stop what its doing and devote slices of time to your webpage.
This is definitely not the paradigm of multi tasking.
Say hi to multi-core
So the brilliant computer scientists at Intel mused over the issue. They ruminated over how microprocessors worked and discovered there was electricity and other functions that were being wasted.
Intel pondered if there was a way to put that latent energy to use in some way.
So Intel took the processor and split up tasks between the physical CPU and a new quasi-processor known as a virtual processor.
This is the premise behind Hyperthreading.
An analogy might help here:
Let’s imagine that you are the CPU.
Without hyperthreading you could only do one thing at once. So if you’re driving a car you couldn’t change the radio station, take calls, or text (hopefully you’re not doing that anyway!).
But with the advent of hyperthreading, you could not only drive but also talk on the phone. One hand is on the wheel (one task) and the other is holding and using a phone (the other task) and you’re doing both concurrently.
But there is still one processor. There’s still one you doing all the work.
And this is why multi-core processors are so cool. A multi-core processor is actually to processing dies on a single substrait. It’s like having the brains of two processors in one chip.
This is great because:
- It saves space on the motherboard. You don’t have to apportion a specific CPU slot on the board for an additional processor so there’s less Printed Circuit Board (PCB) space needed.
- Reduces latency. Since both cores are on the same chip, communication is exponentially faster than having to use a slower data bus connecting multiple physical CPUs.
- More efficient. Lets physical CPUs means less power. Less power mean lower power consumption which begets less cooling requirements. The processor can also run at slower speeds while producing outputs commensurate with faster single core PCs.
Back to our driving analogy. A multi-core processor with two cores (dual-cores) would be like driving your car and having your wife in the passenger seat taking all your phone calls. That way you can devote all your attention to the road and she can make sure your work still gets done.
Sweet setup right?
Each person in this analogy is a distinct core, completely independent of the other core. So you could easily render all your Photoshop photos while simultaneously browsing the web and there would be a significant performance improvement because both core are disparate units on the system. In other words, they are autonomous and don’t interact with each other. So the first core could finish rendering your photos while the second loads your web pages with ease.
But I want to know more
Ah, if I didn’t slake your technical thirst with the above definition then allow me to elaborate on what’s really happening here:
Every program on your computer comprises a bunch of execution threads. You can think of a thread as a container or group of related instructions.
In the antediluvian ages of computers, your PC probably crashed at some point when you tried to print a document. That’s because the word processing program relied on a single execution thread.
Operating Systems eventually evolved and allowed for thread suspension. So it could temporarily put one thread in abeyance while it went to work on something else (such as printing that document).
But this wasn’t true multitasking because it still need to keep pausing and playing different threads multiple times per second. It wasn’t really doing more than one thing at once – it just created the illusion that it was.
That’s what Hyperthreading was designed to fix. It’s called Hyper-threading because it can process simultaneous threads without pausing one application to play another.
These mighty chips showed up as two distinct processors in Windows so that Windows treated each as a distinct chip. Although Hyperthreading simply created a virtual chip, Windows treated it like an additional physical CPU and thus availed all the benefits of two processors to the OS.
The main shortfall with HT Technology is that it was fettered to the shared resources provided by the system.
Multi-core systems fix this problem.
Multi-processors have dedicated execution pipelines so they aren’t constrained by the resources limitations that beleaguered HT processors. It’s like having multiple physical cores in a single processor so you get true multitasking without all the power, space and heating requirements that besiege physical processors.
There’s more to it then this but I didn’t want this article to any more recondite than it already is.
If you’re still lusting for more multi-core mayhem, check out the slide presentation at UMassAmherst. You’ll find 71 slides with large graphics and text explaining the history of multi-core, details about the architecture and a entertaining explanation of Moore’s law.
That’s it for now!