Selbst mit viel mehr Kernen als Aufgaben können sie nicht perfekt skaliert werden. Das liegt daran, dass ein Zustand fast immer geteilt wird. Nicht unbedingt in der Aufgabe, aber zum Beispiel der Kernel. Oder sie greifen auf dieselbe Ressource wie das Netzwerk oder eine Festplatte oder was auch immer zu.
SMT (Hyper-Threading) kann sich darauf verlassen, dass verschiedene Tasks unterschiedliche CPU-Ausführungseinheiten verwenden. So kann auf Superskalar-CPUs eine sogenannte "Parallelität auf Befehlsebene " erreicht werden . Praktisch jeder moderne x86-Prozessor ist superskalar.
Angenommen, Sie haben zwei Aufgaben, die nur aus dem Hinzufügen von Zahlen ohne weitere CPU-Anweisungen bestehen. Wenn ja, laufen diese Konflikte, wenn sie auf demselben physischen Kern ausgeführt werden, was möglicherweise zu erheblichen Leistungseinbußen führt.
Meistens ist dies jedoch nicht der Fall und es passiert eine Vielzahl von Sachen. Solange derselbe Befehl nicht (ungefähr) zur gleichen Zeit in beiden Befehlsströmen erscheint, kann die Auslastung der CPU-Ausführungseinheiten verbessert werden.