Der BegriffMehrkernprozessor (abgeleitet vom englischen Begriff auchMulticore-Prozessor oderMultikernprozessor) bezeichnet einenMikroprozessor mit mehr als einem vollständigenProzessorkern in einem einzigenChip. Die Prozessorkern-Komponenten mit Ausnahme desBusses und eventuell einigerCaches sind mehrfach vorhanden. Es handelt sich also um mehrere (weitgehend) vollständige, weitgehend voneinander unabhängige CPU-Kerne inklusive eigenerRegistersätze undarithmetisch-logischer Einheiten (ALU).
Als Doppelkernprozessor (auchDual-Core-Prozessor) bezeichnet man einen Mehrkernprozessor mit zwei Prozessorkernen. Mikroprozessoren mit einem CPU-Kern bezeichnet man zur Abgrenzung als Einzelkernprozessor (auchSingle-Core-Prozessor). Mikroprozessoren mit drei Kernen werden Triple-Core-Prozessoren oder Dreikernprozessoren genannt. Diese Terminologie lässt sich entsprechend fortsetzen. So spricht man bei vier Kernen von einem Vierkernprozessor (auchQuad-Core-Prozessor), wobei ein Vierkernprozessor aus zwei Doppelkernprozessoren oder vier eigenständigen Kernen bestehen kann.
Multi-Threaded-CPUs sindmehrfädige (engl.multithreading) Prozessorkerne mit mehreren Programmzählern und Registersätzen, die sich gegenüber dem System aber als mehrere Kerne melden. Diese Technik kann je nach Aufwand im Prozessordesign unterschiedlich effizient umgesetzt sein. Intel nennt sie in einigen ProzessorlinienHyper-Threading, IBM SMT (symmetrisches Multi-Threading). DerIBM Power5-Prozessor ist z. B. ein Doppelkernprozessor mit zwei Threads pro Kern, derSunUltraSPARC-T1-Prozessor ein Achtkern-Prozessor mit vier Threads pro Kern. Im Unterschied zu echten Mehrkern-Prozessoren teilen sich hier die „Kerne“ manche Ausführungseinheiten, wie zum Beispiel die Gleitkomma-Recheneinheit oder sogar die ALU. Dann muss evtl. ein „Kern“ warten, wenn der andere diese Einheit gerade belegt.
Es ist nicht exakt definiert, welche Ressourcen genau ein Kern „privat“ besitzen muss, um als „eigenständig“ und „vollwertig“ zu gelten.
Bis zum Jahre 2005 dominierten die Einzelkernprozessoren den PC-Bereich. Zuvor wurde nur selten versucht, durch den Einsatz von zwei oder mehr Einzelprozessoren die Leistungsfähigkeit zu erhöhen. Stattdessen stand damals neben neuen Befehlssätzen wieMMX die Erhöhung derTaktfrequenz im Vordergrund. Doch ab Frequenzen von etwa 4 GHz war die entstehendeAbwärme nicht mehr sinnvoll handhabbar. Eine Möglichkeit der Fortentwicklung war die Einführung von Mehrkernprozessoren. So wurde ab der zweiten Hälfte des Jahres 2006 das Angebot in der oberen Hälfte des PC-Leistungsspektrums von Doppelkernprozessoren (Intel Core 2 Duo undAMD Athlon 64 X2) beherrscht. Dies markierte die Abkehr von einem Prinzip, das seit der Geburtsstunde der Prozessoren Gültigkeit hatte. So werden nur noch in wenigen Fällen Einzelkerne verbaut, da die entsprechenden Mehrkerne unwesentlich teurer sind.
Mehrkernprozessoren wurden entwickelt, weil eine Erhöhung der Rechenleistung durch höhere Taktfrequenzen große technische Probleme verursachte. Es ist auch kostengünstiger, mehrere Kerne in einen Chip zu implementieren, als mehrereProzessorsockel auf derHauptplatine zu haben.Anders betrachtet kann mit derselben Anzahl an Chip-Sockeln und Chipstheoretisch eine vervielfachte Rechenleistung erzielt werden (dasn-fache bei n Kernen). In der Realität kann diese Steigerung aber kaum erreicht werden. Die tatsächliche Leistungssteigerung hängt vor allem davon ab, wie gut die Softwareparallelisiert ist. Dabei kann der Zugriff mehrerer aktiver Kerne auf den gemeinsamenArbeitsspeicher zu Engpässen und Leistungsgrenzen führen, dagegen setzt man hochentwickelteCache-Strategien ein.
Mehrkernprozessoren stellen neben einer Erhöhung der Taktfrequenz und demPipelining eine von vielen Möglichkeiten dar, die Leistung von Mikroprozessoren zu erhöhen. Die rein theoretische Leistungssteigerung ist vergleichsweise effizient und beträgt maximal 100 % (gegenüber einem einzelnen Kern) pro zusätzlichem Kern. In der Praxis hängt die Leistungssteigerung stark von dem Parallelisierungsgrad des ausgeführten Programms und des verwendeten Betriebssystems ab.Unix, derSMP-Linux-Kernel undMicrosoft Windows ab XP unterstützen Mehrkernprozessoren (Windows NT und 2000 erkennen einen Mehrkernprozessor als mehrere Einzelkernprozessoren; dadurch sind zwar alle Kerne nutzbar, spezielle Mehrkernprozessoroptimierungen konnten aber nicht greifen). Dabei verteilt das Betriebssystem Prozesse und Anwendungen auf die einzelnen Prozessoren, die diese dann unabhängig parallel ausführen. Wird hingegen nur eine Anwendung ausgeführt, so muss diese für die mehreren Prozessoren parallelisiert werden. Das bedeutet, die Anwendung wird so modifiziert, dass sie komplett oder auch nur Fragmente davon gleichzeitig auf mehreren Prozessoren alsThreads ausgeführt werden.
So unterscheiden sich verschiedene Architekturen. Während manche Architekturen leistungssteigernde Komponenten wie einenShared Cache auf dem Chip unterbringen (so IBMs POWER4 und folgende, Sun UltraSPARC IV+ und T1), setzen andere Architekturen lediglich mehrere Einzelkerne mit eigenem Cache auf einen Chip. Prozessorbasiert lizenzierende Softwareunternehmen haben verschiedene Konzepte entwickelt, um auf diese Entwicklungen zu reagieren. So zählt Oracle bei Mehrkernprozessoren jeden Prozessorkern auf einem Chip mit 0,25 (Sun UltraSPARC T1), 0,5 (Intel und AMD CPUs) oder 0,75 (HP, IBM und Sun RISC CPUs). Microsoft hat angekündigt, nicht mehr die Kerne, sondern die Chips als Basis für die Lizenzierung heranzuziehen, womit auf einen Mehrkernprozessor nur noch eine Lizenz fällt. Bei Windows Servern gilt jedoch die Core-basierte Lizenzierung.[1]
Mehrkernprozessoren können je nach internem Aufbau in zwei Varianten unterteilt werden: symmetrische und asymmetrische Mehrkernprozessoren.
In symmetrischen Mehrkernprozessoren sind die einzelnen Kerne gleich. Ein für diesen Prozessor übersetztes Programm kann auf jedem beliebigen seiner Kerne ausgeführt werden. Bei dieser Art von Mehrkernprozessoren handelt es sich umSMP-Systeme. Da es sich bei Mehrkernprozessoren um eine Variante des SMP handelt, ist der Sinn und Zweck eines Mehrkernprozessors SMP platzsparend umzusetzen. Ein Beispiel für so ein 8-fach-SMP-System auf einem Chip ist der Sun UltraSPARC-T1-Prozessor.
Eine Abwandlung hiervon ist auchARMsbig.LITTLE-Konzept, in dem mehrere rechenstarke, energiehungrige Kerne mit einem rechenschwachen, energiesparenden Kern kombiniert werden. Der schwache Kern ist jedoch Binärcode-kompatibel mit den starken und kann ebenfalls alle Programme ausführen. Beispiele für dieses Konzept sindnVidia Tegra 3 undSamsung Exynos 5 Octa. Auch aufx86-Prozessoren vonIntel finden sich ab der 12.Core-i-Generation („Alder-Lake“) stärkere Prozessorkerne, sog. „P-Cores“ (fürPerformance), und Effizienzkerne, sog. „E-Cores“ (fürEfficiency), auf demselben Prozessorchip.[2] Während dieE-Cores weniger Strom verbrauchen, erledigen dieP-Cores Aufgaben schneller. Dadurch kommet es vor allem auf denScheduler an, damit nicht arbeitsintensive Tasks auf den langsamenE-Cores erledigt werden.[3][4] Zumindest unterCore i-12000 haben dieP-Cores zusätzlich die BefehlssatzerweiterungAVX-512, was Intel jedoch deaktivieren musste, weil dieE-Cores dies nicht bieten.[5] Mit einem angepassten Scheduler wie IntelsThread Director, der die Unterschiede beider Core-Arten berücksichtigt, lassen sich Hybridcores effizient nutzen.[6] Bei x86-Prozessoren von AMD sind Hybridkerne für die kommende Ryzen-8000-Serie (Zen 5) geplant.[7]
Bei asymmetrischen Mehrkernprozessoren gibt es verschiedene Kerne, die unterschiedlich gesteuert werden und eine unterschiedlicheMaschinensprache verstehen. Ein Programm kann nur auf einem seiner Übersetzung entsprechenden Kern ausgeführt werden. Bei dieser Art von Mehrkernprozessoren arbeiten einige der Kerne wie klassischeHauptprozessoren, andere wie asynchroneKoprozessoren. Ein Beispiel für solch ein System ist derCell-Prozessor von IBM.
Als „Manycore-Prozessoren“ werden oftmals Prozessoren mit deutlich mehr Rechenkernen als üblich bezeichnet; die Kerne („Cores“) werden in mehrere „Tiles“ („Kacheln“) unterteilt, die jeweils definierte, meist redundante Aufgaben besitzen und eigeneRecheneinheiten mit dem Zugriff auf gemeinsame Ressourcen (RAM, Cache, I/O-Einheiten) sind, beispielsweise die
Aufgrund anderer Anforderungeneingebetteter Systeme als bei PC werden beiMikrocontrollern mehrere Kerne nur langsam üblich. Ein erster Mehrkern-Mikrocontroller wurde 2006 auf den Markt gebracht.