What Is a Software Thread?
A software thread is a sequence of instructions that are processed by a CPU. It’s the basic unit of programmed instructions managed by the scheduler. The scheduler is a component of the operating system that allocated hardware resources to the various types of software running on a computer.
Every application running on your computer exists as one or more processes. Threads are effectively segments of these processes sent to the CPU for execution. The scheduler rapidly assigns threads from different running programs to ensure that each gets the resources it needs to run in real-time.
This is how your computer can “multitask” and (for example) run a word processor while also playing music and downloading a video game in the background. Technically, a CPU core is not actually doing all these jobs at the same time.
So if your system just has a single-core CPU, it’s rapidly juggling multiple sets of instructions, switching so rapidly between them that to our slow human brains it all seems to happen in parallel.
True Parallel Processing in Home Computers
For most of personal computing history, your computer only had one CPU core in it. Well, back then we didn’t talk about “cores” since there was just one and it was the whole CPU. However, in the mid-2000s CPU makers had the bright idea of stuffing two complete CPUs into one CPU package. These dual-core CPUs could actually process two threads of instructions at the same time. This meant that, for example, your video game could have 100% of a core and your operating system could have the other core all to itself.
Today CPU core counts are rapidly rising. Mainstream CPUs with 6, 8 and even 10 cores are common. The high-end CPUs offer dozens of cores and CPUs like the AMD Threadripper 3990X are stuffed with a whopping 64 cores.
Software development has also changed to take better advantage of all this parallel CPU power. The latest video game consoles are equipped with eight CPU cores as well, so video games that can make use of that many cores are quickly becoming common.
Putting CPU Cores Into Overdrive With Hyperthreading
A traditional CPU can only handle a single thread, but if you have many different CPU cores in your system, you can handle a number of threads equal to the number of cores you have. This seems fine, but it presents one major issue.
Not all threads require the same amount of processing power. For example, a thread that’s rendering video will use 100% of a CPU core’s available capacity, but the thread that’s running your word processor or social media web page only needs a fraction of the power offered by a modern CPU core.
Likewise, a video game may have multiple threads that run in parallel, such as one that handles physics and another that handles character artificial intelligence. These are important jobs but may not need all of a single core to run well.
This leads to a situation where all of your CPU cores may be busy with threads, but aren’t giving you all of the processing power they are capable of. That’s where hyperthreading comes into the picture.
The proper generic name for hyperthreading is simultaneous multithreading. “Hyperthreading” is actually a proprietary marketing name used by Intel, but just as with “Hoover”, it’s become common parlance for the technology as a whole.
A CPU that’s equipped with the right internal circuitry to enable hyperthreading can execute two separate threads at the same time. It’s not switching between them as with traditional single-core multi-tasking. It’s running each one in parallel.
To the operating system, it looks like each physical CPU core is actually two cores, which lets the scheduler assign two threads to each one. However, the total amount of processing power per core remains exactly the same.
Why You’d Want Hyperthreading
As we mentioned above, hyperthreading is mainly about making sure that you aren’t leaving processing power on the table. Letting each core handle two threads makes it easier for your operating system to get the most out of your hardware and avoids a situation where every core isn’t running near or at full capacity.
In the past, only professional software such as video editors or scientific data-crunching jobs really needed hyperthreading. Mainstream users hardly had enough apps running to need that many threads. Video games have also taken a long time to adopt the use of multiple threads, but now 8-core gaming systems are mainstream and the thread counts will keep rising.
As such, new mainstream CPUs now feature hyperthreading and it is a feature most users should want. However, if you get a good deal on an older CPU that doesn’t have hyperthreading, it’s not yet so essential that you can’t afford to pass it up.