In simultaneous multithreading (SMT, hyper-threading) one core runs two hardware threads, sharing its execution units, caches and predictors; each appears to the operating system as a CPU. A processor has heterogeneous cores when its cores differ in design, typically large performance cores and small efficient cores, with different speeds for the same code.
bench_cpu.py.