Multi-core processing is one of those terms that geeks love to use when they tell people about their computers because having multiple cores means wonderful things.

Let’s start on what a processor is: A processor is a component that processes instructions from the different programs and makes outputs. That’s obviously a simplified explanation, but that’s what it is and what it does. If a processor is “just a processor,” or a single-core processor, then that processor does all its processing on one “core,” or with just one central processing unit.

The latest and greatest processors can have more than one core, or more than one central processing unit. You might hear them called “dual-core,” “quad-core,” and sometimes even “eight-core” processors. Yes, they get bigger, but unless you work in Information Technology, you’re not likely to hear about them, they’re used on super-super-super computers. You won’t see the cores on a processor, because they’re really small, but if you want to imagine how they function, picture a concrete pad with one silo on it, and let’s pretend that some sort of processing goes on in the silo to make something happen to the contents of the silo and turn them into something else. Let’s use grass going in and wax coming out. Grass goes into the silo, yellow wax comes out. In this analogy, grass is instructions and data, the silo is the processing core, and the yellow wax is the output of the data that you are looking for.   Now let’s pretend that we have two silos.  Everything should happen twice as fast, right? Well, hopefully, as long as all the players and parts know what they’re supposed to do.

In order for your computer to use both cores, your operating system needs to know that the processor has two cores, and the operating system must be able to use both cores. But that’s not all—programs must also be written to take advantage of multiple cores.  This is called multi-threading—it’s threading the instructions to different cores to work on the instructions simultaneously. Your operating system needs to know—or needs to be able to tell—that your hardware can handle two sets of instructions at the same time. That way it can send instructions to both cores at the same time, both cores can process instructions at the same time, and twice the amount of output can be produced, the same way that two lanes of a highway can carry more cars than one lane can.

Without doing more than a few minutes’ worth of digging, I found that Microsoft operating systems have been using multithreading since at least 2009, which was Windows XP. If I recall correctly, Apple’s switch from PowerPC chips to Intel chips brought in dual-core processing, so that was about the same time, and what I read about the Linux Kernel supports a similar time frame. So whatever you buy now will make use of multiple processing cores.  The operating system will take advantage of however many cores your processor has. Same with any programs that were written with the capacity for multithreading. The Adobe Creative Suite after version 3 did specify that its minimum requirement was a Core 2 Duo processor, and with all the heavy lifting done in that program, now you understand why. I don’t know particularly that the program directs which core to use, but it was written specifically to use multiple cores.

That’s an advantage that Adobe took. A program that isn’t written to use multiple cores won’t know to do so. It will thread instructions only to one core. So a program that ran fast on a single-core processor, when loaded on a machine with dual cores, may actually run slower.

AND—the advertised speed of the processor, when you’re trying to compare specifications on computers, is the speed that you’ll get when ALL of the processing cores are used, which means that if you use a program that isn’t written for multi-core processors, it may only process at half or a quarter of the advertised speed.

Server operating systems and the programs written for them do take advantage of multi-core processing, but for the programs and applications, it’s still an emerging programming practice. We still have yet to see a majority of the large software producers making full use of multithreading technology. The best is yet to come.