Seit Mitte der Nullerjahre bieten Desktop-CPUs mehrere CPU-Kerne in einem Paket an. Dies ist ein Multicore-Prozessor. Während frühe Designs auf zwei oder vier CPU-Kerne beschränkt waren, bieten moderne CPUs bis zu 64 physische Kerne auf einer einzigen CPU. Eine so hohe Kernanzahl ist kein Standard für Desktop-CPUs und im Allgemeinen High-End-Workstations oder -Servern vorbehalten. Typische Kernzahlen in modernen Desktop-CPUs liegen zwischen 4 und 16. Aber was macht Multicore-CPUs so dominant in modernen Computern?
Einzelprozessor
In der Vergangenheit war eine Single-Core-CPU darauf beschränkt, nur eine einzige Aufgabe gleichzeitig auszuführen. Dies bringt eine ganze Reihe von Problemen mit sich. Auf einem modernen Computer laufen beispielsweise eine Vielzahl von Hintergrundprozessen. Wenn eine CPU nur jeweils eine Sache gleichzeitig verarbeiten kann, bedeutet dies, dass diese Hintergrundprozesse dem Vordergrundprozess Rechenzeit entziehen müssen. Darüber hinaus bedeuten Cache-Fehler, dass Daten aus dem – vergleichsweise – langsamen RAM abgerufen werden müssen. Während die Daten aus dem RAM abgerufen werden, befindet sich der Prozessor einfach im Leerlauf, da er nichts tun kann, bis er die Daten erhält. Dies hält den laufenden Prozess sowie alle anderen Prozesse, die auf seinen Abschluss warten, auf.
Während moderne Single-Core-Prozessoren dank des Aufkommens preisgünstiger Multicore-CPUs nicht wirklich eine Sache sind, könnten sie andere moderne Tricks anwenden, um schneller zu arbeiten. Eine Pipeline würde es ermöglichen, dass jeder verschiedene Teil der Handhabung einer Anweisung gleichzeitig verwendet wird. Bereitstellung einer erheblichen Leistungssteigerung gegenüber der Verwendung von nur einer Stufe der Pipeline pro Takt Kreislauf. Eine breite Pipeline würde mehrere Befehle sehen, die in jeder Pipeline-Stufe pro Taktzyklus gehandhabt werden könnten. Die Out-of-Order-Verarbeitung würde es ermöglichen, Anweisungen zeiteffizienter zu planen. Ein Verzweigungsprädiktor wäre in der Lage, das Ergebnis einer Verzweigungsanweisung vorherzusagen und die vermutete Antwort präventiv auszuführen.
Alle diese Faktoren würden gut funktionieren und eine gewisse Leistung erbringen. Das Hinzufügen eines oder mehrerer Kerne ermöglicht jedoch all das und ermöglicht auf einen Schlag die Verarbeitung von doppelt so vielen Daten auf einmal.
Multicore
Das Hinzufügen eines zweiten Kerns klingt, als sollte es die Rohleistung verdoppeln. Die Dinge sind leider komplizierter. Die Programmlogik ist oft Single-Threaded, was bedeutet, dass ein Programm zu jedem Zeitpunkt nur eine Sache zu tun versucht. Was jedoch passieren kann, ist, dass andere Prozesse gleichzeitig den anderen Kern verwenden können. Während es für die meisten individuellen Programme keine inhärente Leistungssteigerung gibt, ist die Bereitstellung eines Extras Verarbeitungsressource, reduziert effektiv den Wettbewerb um eine begrenzte Ressource, die a Leistungsschub. Dieser Leistungsschub, der einfach aus der Reduzierung des Wettbewerbs um CPU-Zeit resultiert, ist am deutlichsten, wenn man von einer Single springt zu einer Dual-Core-CPU gibt es abnehmende Erträge aus einer weiteren Erhöhung der Kernanzahl, obwohl es im Allgemeinen mehr ist besser.
Um Multicore-Systeme richtig nutzen zu können und tatsächlich eine solide Leistungssteigerung zu sehen, müssen Programme so programmiert werden, dass sie mehrere Verarbeitungs-Threads verwenden. Multithreaded-Logik ist notorisch schwer zuverlässig umzusetzen, da sie oft schwer zu erlernen ist und viele potenzielle Fallstricke birgt. Eine beispielhafte Falle ist als Race Condition bekannt. In einer Race-Bedingung geht ein Prozess davon aus, dass ein anderer Prozess, den er startet, reibungslos läuft, und versucht dann, etwas zu tun, das davon abhängt, dass dieser andere Prozess reibungslos gelaufen ist. Stellen Sie sich zum Beispiel vor, ein Prozess startet einen anderen Prozess, um ein Dokument zu schließen und ein anderes zu öffnen. Wenn der ursprüngliche Prozess nicht ordnungsgemäß überprüft, ob der zweite Prozess abgeschlossen wurde, kann dies zu unerwarteten Ergebnissen führen. Wenn beispielsweise beim Schließen des ersten Dokuments ein Problem aufgetreten ist, ist es möglicherweise noch geöffnet, wenn der ursprüngliche Prozess nur weitere Daten darauf schreibt.
Thermische Probleme
Eines der größten Probleme, mit denen Multicore-Prozessoren am Ende zu kämpfen haben, ist Hitze. Während ein CPU-Kern nicht so viel Wärme abgibt, geben zwei mehr ab. In CPUs mit hoher Kernzahl kann diese Wärmekonzentration zu einem niedrigeren Boost-Takt führen, da die CPU ihre Temperatur verwaltet. Ein niedrigerer Boost-Takt führt zu einer geringeren Leistung in Single-Thread-Anwendungen. Dies ist häufig in Gaming-Performance-Benchmarks zu sehen. Videospiele sind oft stark von einem einzigen Thread abhängig. Daher ist die Single-Thread-Leistung für Spiele oft entscheidend. CPUs mit hoher Kernanzahl wie die Modelle mit 16 Kernen stammen häufig aus Hochleistungsbehältern. Trotzdem werden sie in Singlethread-Benchmarks regelmäßig von „kleineren“ CPUs mit geringerer Kernzahl übertroffen. Dieses Problem ist bei CPUs mit ultrahoher Kernzahl wie dem 64-Kern AMD Threadripper noch offensichtlicher, wo die Taktrate deutlich niedriger ist als bei High-End-Desktop-CPUs.
Erfolge
Viele Anwendungen sind in der Lage, mehrere CPU-Kerne richtig zu nutzen. Beispielsweise ist CPU-Rendering eine relativ einfach zu parallelisierende Aufgabe. Leistungsverbesserungen sind bis zu 64 Kernen und höher zu sehen, obwohl derzeit keine einzelne CPU mehr als 64 Kerne bietet. Viele Anwendungen können einfach nicht multithreaded werden, da sie auf sequentielle Logik angewiesen sind. Während diese nicht annähernd die Geschwindigkeit eines Multithread-Programms sehen, ist die Tatsache, dass Multithread-Programme und andere Singlethread-Programme können andere CPU-Kerne verwenden, wodurch Prozessorzeit frei wird, was eine bessere Leistung ermöglicht Leistung.
Architektonische Optionen
Bei Desktop-Prozessoren war jeder CPU-Kern innerhalb einer Multicore-CPU im Allgemeinen identisch. Diese Homogenität macht die Planungsarbeit an den Kernen einfach. Die Verwendung desselben sich wiederholenden Designs hilft auch, die Entwicklungskosten niedrig zu halten. Mobile Prozessoren verwenden jedoch seit langem heterogene Kernarchitekturen. In diesem Design gibt es zwei oder sogar drei Ebenen von CPU-Kernen. Jede Ebene kann die gleichen Prozesse ausführen, einige sind jedoch auf Energieeffizienz ausgelegt und andere auf Leistung abgestimmt. Dies hat sich als Erfolgsrezept für akkubetriebene Geräte erwiesen, da viele Aufgaben umso langsamer genutzt werden können energieeffiziente Kerne, längere Batterielebensdauer, während Prozesse mit hoher Priorität weiterhin mit hoher Geschwindigkeit ausgeführt werden können wenn gebraucht.
Auch die Desktop-CPU-Architektur bewegt sich in Richtung eines heterogenen Core-Designs. Intels Alder Lake 12th Core-CPU-Reihe der Generation ist die erste Desktop-CPU, die dies tut. In diesem Fall ist der Hauptantriebsfaktor der kleineren Kerne nicht unbedingt die Energieeffizienz, sondern die thermische Effizienz, obwohl dies zwei Seiten derselben Medaille sind. Mehrere leistungsstarke Kerne bieten eine hohe Leistung, während viele effiziente Kerne Hintergrundaufgaben erledigen können, ohne die Hauptkerne zu sehr zu beeinträchtigen.
Fazit
Eine Multicore-CPU ist eine CPU, die mehrere Prozessorkerne in einem einzigen Paket enthält, oft, wenn auch nicht ausschließlich, auf demselben Chip. Multicore-CPUs bieten vielen Programmen keinen direkten Leistungsschub, aber durch die Erhöhung der Anzahl der Kerne müssen Singlethread-Programme nicht so stark um CPU-Zeit konkurrieren. Einige Programme können mehrere Kerne voll ausnutzen und so viele wie möglich direkt nutzen. Dies bietet einen großen Leistungsschub, obwohl dieser Schub aufgrund von Wärme- und Leistungsbeschränkungen nicht unbedingt eine direkte Leistungsverdoppelung mit einer Verdoppelung der Kerne ist.