Wikipedia · einfach zusammengefasst · Stand
Mehrkernprozessor
Multi-Threaded-CPUs sind mehrfädige (engl. multithreading) Prozessorkerne mit mehreren Programmzählern und Registersätzen, die sich gegenüber dem System aber …
Inhalt5 Abschnitte
Grundidee und Abgrenzung
Ein Mehrkernprozessor, auch Multicore-Prozessor oder Multikernprozessor genannt, ist ein Mikroprozessor mit mehr als einem vollständigen Prozessorkern in einem einzigen Chip. Die meisten Bestandteile eines Prozessorkerns sind dabei mehrfach vorhanden, zum Beispiel eigene Registersätze und arithmetisch-logische Einheiten (ALU). Busse und einige Caches können dagegen gemeinsam genutzt werden. Die Kerne arbeiten weitgehend unabhängig voneinander.
Ein Prozessor mit zwei Kernen heißt Doppelkernprozessor oder Dual-Core-Prozessor. Ein Prozessor mit einem Kern wird zur Abgrenzung Einzelkernprozessor oder Single-Core-Prozessor genannt. Entsprechend spricht man bei drei Kernen von Triple-Core- oder Dreikernprozessoren und bei vier Kernen von Vierkern- oder Quad-Core-Prozessoren. Ein Vierkernprozessor kann aus zwei Doppelkernprozessoren oder aus vier eigenständigen Kernen bestehen.
Von echten Mehrkernprozessoren zu unterscheiden sind Multi-Threaded-CPUs. Das sind Prozessorkerne mit mehreren Programmzählern und Registersätzen, die sich dem System als mehrere Kerne melden. Intel nennt diese Technik in einigen Prozessorlinien Hyper-Threading, IBM SMT, also symmetrisches Multi-Threading. Beispiele sind der IBM Power5-Prozessor als Doppelkernprozessor mit zwei Threads pro Kern und der Sun UltraSPARC-T1-Prozessor als Achtkern-Prozessor mit vier Threads pro Kern. Im Unterschied zu echten Mehrkernprozessoren teilen sich solche scheinbaren „Kerne“ teilweise Ausführungseinheiten, etwa die Gleitkomma-Recheneinheit oder sogar die ALU. Dadurch kann ein „Kern“ warten müssen, wenn ein anderer diese Einheit benutzt. Nicht exakt definiert ist, welche Ressourcen ein Kern privat besitzen muss, um als eigenständig und vollwertig zu gelten.
Entwicklung im PC-Bereich
Bis zum Jahr 2005 dominierten im PC-Bereich Einzelkernprozessoren. Vorher wurde nur selten versucht, die Leistung durch zwei oder mehr einzelne Prozessoren zu erhöhen. Wichtiger waren neue Befehlssätze wie MMX und vor allem immer höhere Taktfrequenzen.
Ab etwa 4 GHz wurde die entstehende Abwärme jedoch nicht mehr sinnvoll handhabbar. Eine wichtige weitere Entwicklung war deshalb die Einführung von Mehrkernprozessoren. Ab der zweiten Hälfte des Jahres 2006 wurde das Angebot in der oberen Hälfte des PC-Leistungsspektrums von Doppelkernprozessoren geprägt, zum Beispiel Intel Core 2 Duo und AMD Athlon 64 X2.
Damit endete ein lange gültiges Prinzip der Prozessorentwicklung: Leistung wurde nicht mehr hauptsächlich durch immer höhere Taktfrequenzen eines einzelnen Kerns gesteigert. Einzelkerne werden nur noch in wenigen Fällen verbaut, da entsprechende Mehrkernprozessoren nur unwesentlich teurer sind.
Leistungsgewinn und Grenzen
Mehrkernprozessoren wurden entwickelt, weil höhere Taktfrequenzen große technische Probleme verursachten. Außerdem ist es kostengünstiger, mehrere Kerne in einen Chip einzubauen, als mehrere Prozessorsockel auf der Hauptplatine zu verwenden.
Theoretisch kann mit derselben Anzahl an Chip-Sockeln und Chips eine vervielfachte Rechenleistung erreicht werden: bei n Kernen das n-fache. Eine zusätzliche Kerneinheit kann theoretisch maximal 100 % Leistungssteigerung gegenüber einem einzelnen Kern bringen. In der Praxis wird dieser Wert aber kaum erreicht. Entscheidend ist, wie gut die Software parallelisiert ist, also ob ein Programm seine Arbeit in mehrere gleichzeitig ausführbare Teile aufteilen kann.
Das Betriebssystem verteilt Prozesse und Anwendungen auf die einzelnen Kerne, die diese unabhängig parallel ausführen. Unix, der SMP-Linux-Kernel und Microsoft Windows ab XP unterstützen Mehrkernprozessoren. Windows NT und Windows 2000 erkennen einen Mehrkernprozessor als mehrere Einzelkernprozessoren; dadurch sind alle Kerne nutzbar, spezielle Optimierungen für Mehrkernprozessoren greifen aber nicht.
Wenn nur eine Anwendung läuft, muss diese selbst für mehrere Prozessoren parallelisiert sein. Dazu wird sie so geändert, dass sie ganz oder teilweise gleichzeitig auf mehreren Prozessoren als Threads ausgeführt werden kann. Ein Thread ist ein Ausführungsstrang innerhalb eines Programms.
Eine wichtige Grenze entsteht durch den gemeinsamen Arbeitsspeicher. Wenn mehrere aktive Kerne gleichzeitig darauf zugreifen, kann es zu Engpässen kommen. Dagegen werden entwickelte Cache-Strategien eingesetzt. Einige Architekturen besitzen leistungssteigernde Bauteile wie einen gemeinsamen Cache auf dem Chip, zum Beispiel IBMs POWER4 und folgende, Sun UltraSPARC IV+ und T1. Andere Architekturen setzen mehrere Einzelkerne mit eigenem Cache auf einen Chip.
Auch Softwarelizenzen mussten an Mehrkernprozessoren angepasst werden. Oracle zählt je nach Prozessortyp jeden Kern auf einem Chip mit 0,25, 0,5 oder 0,75. Microsoft kündigte an, nicht mehr die Kerne, sondern die Chips als Grundlage der Lizenzierung zu verwenden, sodass auf einen Mehrkernprozessor nur eine Lizenz fällt. Bei Windows Servern gilt jedoch die Core-basierte Lizenzierung. Der Artikel enthält außerdem einen Hinweis, dass ein Teil zu AMD-Zweikern-Opterons seit 2009 nicht mehr aktuell sei.
Symmetrische und asymmetrische Varianten
Mehrkernprozessoren werden nach ihrem inneren Aufbau in symmetrische und asymmetrische Mehrkernprozessoren unterteilt.
Bei symmetrischen Mehrkernprozessoren sind die einzelnen Kerne gleich. Ein Programm, das für diesen Prozessor übersetzt wurde, kann auf jedem seiner Kerne ausgeführt werden. Solche Prozessoren sind SMP-Systeme. SMP bedeutet symmetrisches Multiprocessing: Mehrere gleichartige Prozessoren oder Kerne arbeiten parallel. Ein Mehrkernprozessor kann SMP platzsparend auf einem Chip umsetzen. Ein Beispiel für ein 8-fach-SMP-System auf einem Chip ist der Sun UltraSPARC-T1-Prozessor.
Eine Abwandlung ist ARMs big.LITTLE-Konzept. Dabei werden mehrere rechenstarke, aber energiehungrige Kerne mit einem rechenschwachen, energiesparenden Kern kombiniert. Der schwache Kern ist binärcode-kompatibel mit den starken Kernen und kann ebenfalls alle Programme ausführen. Beispiele sind nVidia Tegra 3 und Samsung Exynos 5 Octa.
Auch Intel verwendet auf x86-Prozessoren ab der 12. Core-i-Generation „Alder-Lake“ unterschiedliche Kerntypen auf demselben Chip: stärkere „P-Cores“ für Performance und sparsamere „E-Cores“ für Efficiency. E-Cores verbrauchen weniger Strom, P-Cores erledigen Aufgaben schneller. Deshalb ist der Scheduler wichtig, also der Teil des Betriebssystems, der entscheidet, welcher Kern welche Aufgabe bekommt. Unter Core i-12000 hatten die P-Cores zusätzlich AVX-512, eine Befehlssatzerweiterung, die Intel deaktivieren musste, weil die E-Cores sie nicht bieten. Mit einem angepassten Scheduler wie Intels Thread Director lassen sich Hybridkerne effizient nutzen. Bei x86-Prozessoren von AMD sind Hybridkerne für die kommende Ryzen-8000-Serie mit Zen 5 geplant.
Bei asymmetrischen Mehrkernprozessoren gibt es verschiedene Kerne, die unterschiedlich gesteuert werden und unterschiedliche Maschinensprache verstehen. Ein Programm kann dann nur auf einem Kern laufen, für den es übersetzt wurde. Einige Kerne arbeiten wie klassische Hauptprozessoren, andere wie asynchrone Koprozessoren. Ein Beispiel ist der Cell-Prozessor von IBM.
Vielkernprozessoren und Mikrocontroller
Eine weitere Gruppe sind Vielkernprozessoren oder Manycore-Prozessoren. Damit werden oft Prozessoren bezeichnet, die deutlich mehr Rechenkerne besitzen als üblich. Die Kerne werden dabei in „Tiles“, also Kacheln, unterteilt. Diese Tiles haben definierte, meist redundante Aufgaben und eigene Recheneinheiten. Sie greifen auf gemeinsame Ressourcen wie RAM, Cache und I/O-Einheiten zu.
Genannte Beispiele sind IBM / DARPA / UT-Austin TRIPS mit zwei Kernen, die jeweils 16 Executions-Tiles, vier Register- und Data-Tiles, fünf Instruktions-Tiles, ein Control-Tile sowie mehrere Memory- und Network-Tiles besitzen. Intel Terascale wird als ein Kern mit 80 bis 100 Tiles beschrieben, von denen einige auf SoC-Aufgaben spezialisiert sind. Die Intel Many Integrated Core Architecture (MIC) besitzt über 50 Tiles.
Bei Mikrocontrollern, also Prozessoren für eingebettete Systeme, werden mehrere Kerne wegen anderer Anforderungen langsamer üblich als bei PCs. Ein erster Mehrkern-Mikrocontroller kam 2006 auf den Markt. Als Beispiele nennt der Artikel den Parallax Propeller, einen symmetrischen 8-Kern-Mikrocontroller von 2006 mit 8 × 20 MIPS, sowie Infineon Aurix von 2012.