A core is a physical processing unit inside the CPU; a thread (more precisely a hardware thread or logical processor) is a lane of instructions that a core can run, and with Intel Hyper-Threading or AMD SMT one core runs two threads at once. So a CPU listed as 8 cores and 16 threads has 8 physical cores that the operating system sees as 16 logical processors.
Two threads on one core are not two cores. They share the core's execution units and caches, so the second thread adds throughput by filling time the core would otherwise spend idle, not by doubling its capacity.
Cores vs threads in one table
| Core | Thread (hardware) | |
|---|---|---|
| What it is | Physical hardware: execution units, registers, its own L1/L2 cache | An execution context the core keeps: its own registers and instruction stream |
| Shown in Windows as | Cores | Logical processors |
| Doubling it | Close to double the throughput for well-parallelised work | A partial gain that depends on the workload |
| Single-task speed | Set by the core's design and clock | No effect; one thread can't run faster by having a sibling |
What a core does
A core fetches instructions, decodes them, and executes them in its arithmetic, floating-point and load/store units. Each core is a complete processor; Microsoft's Win32_Processor documentation describes a core as "a physical processor on the integrated circuit". A 4-core CPU can genuinely run four instruction streams at the same moment with no sharing of execution hardware.
What a thread is, and how Hyper-Threading works
A single instruction stream rarely keeps a modern core busy. It stalls waiting for data from memory, or it has no instructions ready for some of the execution units. Simultaneous multithreading (SMT) lets the core keep a second instruction stream loaded and issue instructions from both. Intel's description: "the CPU exposes two execution contexts per physical core," so "one physical core now works like two 'logical cores' that can handle different software threads." Intel's name for this is Hyper-Threading; AMD calls it SMT. Intel says it "improves CPU throughput", "Under the right circumstances".
Those circumstances are the catch. If two threads on the same core both want the same execution units, they take turns, and each runs slower than it would alone. If one thread mostly waits on memory while the other computes, the core gets real extra work done. Intel doesn't publish a single uplift figure, and neither do we: the gain depends entirely on the workload, so measure your own if it matters.
A real example: 14 cores, 20 threads
Many current Intel processors mix two kinds of cores, which is why core and thread counts no longer follow a neat 2:1 ratio. Intel's spec page for the Core i7-13700H lists:
| Spec | Value |
|---|---|
| Performance-cores | 6 |
| Efficient-cores | 8 |
| Total Cores | 14 |
| Total Threads | 20 |
The numbers only add up one way: 6 P-cores × 2 threads + 8 E-cores × 1 thread = 20. The P-cores have Hyper-Threading and the E-cores run one thread each. On a laptop with that processor, Windows reports exactly those numbers:
PS> Get-CimInstance Win32_Processor | Format-List Name, NumberOfCores, NumberOfLogicalProcessors
Name : 13th Gen Intel(R) Core(TM) i7-13700H
NumberOfCores : 14
NumberOfLogicalProcessors : 20
Newer designs can drop SMT altogether. Intel's spec page for the Core Ultra 9 285K lists 24 cores (8 Performance and 16 Efficient) and 24 threads, one thread per core. So "more threads" is not a feature you can compare across generations without looking at the cores behind them.
Cores vs threads: which matters more?
For a given generation and architecture, physical cores matter more than threads. The rough rule:
- Single-threaded work (many games' main loop, older software, a spreadsheet recalculation that isn't parallel): neither cores nor threads beyond the first help. Per-core speed does.
- Heavily parallel work (video encoding, 3D rendering, compiling large projects, running AI models on the CPU): more cores help almost linearly, and SMT threads add a further, smaller gain.
- Everyday multitasking (browser, chat, music, background updates): a handful of cores is plenty; extra threads help keep things responsive when something heavy runs in the background.
When comparing two CPUs, compare cores first and look at the core types (P versus E), then clock speed and generation. Comparing thread counts alone can mislead in both directions, as the 285K example shows.
How to check your CPU's cores and threads
Windows
Open Task Manager (Ctrl+Shift+Esc), go to Performance > CPU. The panel under the graph lists Cores and Logical processors. In PowerShell:
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
Microsoft's documentation gives the rule for reading the result: if NumberOfCores is less than NumberOfLogicalProcessors, hyperthreading is enabled. On a machine with more than one physical processor, there is one result per socket.
Linux
lscpu
nproc
lscpu summarises the number of CPUs, threads, cores and sockets. Example output lines for an 8-core, 16-thread desktop processor:
CPU(s): 16
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
nproc prints the number of logical processors available to the current process. Note the man page's warning for virtual machines: the output describes the guest's configuration, not the physical host.
macOS
sysctl hw.physicalcpu hw.logicalcpu
The first value is physical cores, the second logical processors. If they are equal, the processor has no SMT or it is turned off.
Threads in software: why "16 threads" doesn't mean 16 programs
Programs create their own software threads, often dozens per application. The operating system's scheduler maps those onto the hardware threads, switching many times per second. Having 16 logical processors means 16 software threads can run at the same instant; the rest wait their turn. That is also why a single-threaded program shows about 1/16 of total CPU usage on a 16-thread machine even when it is running flat out: it can only use one logical processor at a time. If a program feels slow while overall CPU usage looks low, check per-core usage (right-click the CPU graph in Task Manager > Change graph to > Logical processors); one core pinned at 100% points to a single-threaded bottleneck. For memory bandwidth, the other half of CPU performance, see dual channel RAM.
Frequently asked questions
- Is a CPU with 8 cores and 16 threads the same as 16 cores?
- No. The 16 threads come from 8 physical cores that each run two threads by sharing the core's execution hardware. When both threads on a core are busy they compete for that hardware, so 8 cores with 16 threads usually finishes heavy parallel work faster than 8 cores with 8 threads but slower than 16 real cores.
- Should I turn off Hyper-Threading?
- For ordinary desktop use, no. Intel describes it as a throughput improvement for heavily threaded programs, and it is the default on processors that have it. If you suspect it slows a specific workload, measure that workload with it on and off before changing the setting in the firmware (BIOS/UEFI) setup.
- What is the difference between a CPU thread and a software thread?
- A software thread is a sequence of instructions created by a program, and a program can create hundreds of them. A hardware thread, or logical processor, is a slot in the CPU that can run one software thread at a time. The operating system's scheduler keeps switching software threads on and off the available hardware threads.
- Why does Task Manager show more logical processors than cores?
- Because simultaneous multithreading, such as Intel Hyper-Threading or AMD SMT, is enabled. Each core that supports it appears to Windows as two logical processors. Microsoft's Win32_Processor documentation says to compare NumberOfCores with NumberOfLogicalProcessors to tell whether hyperthreading is on.