Cores, threads & SMT
Software work, physical engines, and hardware contexts are different counts.
Sixteen logical processors do not always mean sixteen complete execution engines.
A schedulable execution state.
Add more cores
The serial fraction limits total speedup. Extra cores cannot accelerate the part that must run sequentially.
What this model includes
Fixed total work, perfect parallel scaling, no scheduling or communication overhead. This is an optimistic bound.
What happens inside
Schedule software work
A software thread has execution state managed by the OS or runtime. The OS schedules runnable threads onto logical CPUs. A context switch changes the active state and can disrupt cache and predictor locality. A sleeping thread consumes no continuous execution slot.
Share one physical core
Simultaneous multithreading keeps multiple hardware contexts on one core. They share substantial execution, cache, and bandwidth resources. SMT can use otherwise idle slots when one context stalls, but two busy contexts can compete. Core count, logical CPU count, and software thread count must be reported separately.
What this means for your code
Low-level engineer
Inspect topology and pin only when measurements justify it. Shared execution resources and NUMA placement can dominate thread scaling.
Software developer
Size pools for the work. I/O concurrency can exceed core count; CPU-bound worker count should be measured against physical topology and contention.
Read the actual specifications
These references supply the underlying contracts and implementation details. The diagrams here are simplified teaching models.