Originally Posted by
anduril462
Just because the kernel sees 12 processors/cores doesn't mean there are 12 full processors/cores. On a 6-core, hyperthreaded CPU, there are 12 sets of registers for 12 different threads (2 per core due to hyperthreading), but there is only one ALU per core. If hyperthreading provided 2 ALUs and two sets of registers per core, you would just have a 12 core CPU. Hyperthreading gives you 2 contexts/tasks per core. That means that, while you can have 12 tasks lined up, one per virtual core, you can still only perform 6 additions/multiplications/shifts/whatever at once. If all 12 tasks want to add numbers, then 6 of them have to wait their turn.