Multi-Core / Mehrkern-Prozessoren

Multi-Core bedeutet, dass in einem Prozessor mehrere Prozessor-Kerne eingebaut sind. Man bezeichnet diese Prozessoren als Multi-Core- oder Mehrkern-Prozessoren. Rein äußerlich unterscheiden sich Multi-Core-CPUs nicht von Single-Core-CPUs. Der Rechenkern ist bei Multi-Core-CPUs einfach mehrfach vorhanden. Innerhalb des Betriebssystems wird der Multi-Core-Prozessor wie mehrere Recheneinheiten behandelt.

Je nach Anzahl der Kerne gibt es abgewandelte Bezeichnungen, die darauf hindeuten, wie viele Kerne im Prozessor integriert sind.

Inzwischen geht man dazu über, die Anzahl der Prozessoren auf ein Vielfaches zu steigern. Also nicht einfach nur Hexa-Core, Octa-Core, sondern gleich Many-Core-CPUs mit 256 oder sogar 1024 Rechenkernen pro Prozessor. Ein solcher Prozssor erfordert natürlich "massive Parallelität" von der Applikation, um das System auszulasten.

Vom Takt-orientierten Prozessor zum Mehr-Kern-Prozessor

Um einen Prozessor schneller zu machen war die Taktfrequenz lange Zeit der maßgebliche Faktor, um mehr Rechenleistung aus einem Prozessor heraus zu bekommen. Leider hat die Erhöhung der Taktfrequenz auch Nachteile, die zu Folgeproblemen führen, die nur sehr schwer zu lösen sind.

  • höhere Leistungsaufnahme
  • höhere Wärmeentwicklung
  • umfangreichere Kühlmaßnahmen
  • lautere Computer durch aktive Kühlung

Schon eine minimale Leistungssteigerung führt zu einem dramatisch höheren Energieverbrauch. Die damit verbundene Leistungsaufnahme verhält sich proportional zur Taktfrequenz. Zusätzliche Transistoren und kleinere Halbleiterstrukturen erhöhen zusätzlich die Wärmeentwicklung. Die Anforderungen an die Kühlung sind mit den herkömmlichen Mitteln nicht mehr zu leisten. Gleichzeitig verringert sich die Stabilität und Lebensdauer des Prozessors.

Eine Alternative zu immer höheren Taktraten sind mehrere Rechenkerne. Das bedeutet mehr Leistung bei gleichzeitig geringerer Leistungsaufnahme. Dabei werden die einzelnen Kerne weit geringer getaktet, als ein einziger Rechenkern. Insgesamt steigt jedoch die Leistungsfähigkeit des Prozessors mit jedem weiteren Rechenkern.

Eingeschränkte Anwendbarkeit von Multi-Core-CPUs

Grundsätzlich kann man die Rechenleistung mehrerer Kerne nicht "addieren". Das würde voraussetzen, dass sich die vorliegenden Rechenaufgaben parallelisieren lassen. Die effektive Nutzung mehrerer Kerne erfordert es, dass die Software so geschrieben ist, dass sie Daten parallel verarbeitet und so zum Beispiel mehrere Kerne gleichzeitig genutzt werden. Das heißt, ein Problem bzw. die Ausführung eines Programms muss in mehrere kleine Teilaufgaben zerlegt werden, damit diese auf mehrere Kerne verteilt werden können. Doch leider sind die üblichen Anwendungen nicht auf parallele Ausführung ausgelegt und meist auch nicht notwendig.

Bei wachsender Kernanzahl der Prozessoren wird es immer schwieriger, die Rechenleistung in der Praxis abzurufen. Leider wissen die meisten Anwendungsprogramme nichts mit den vielen Kernen anzufangen. Gängige Office-Anwendungen profitieren beispielsweise selten von mehr als zwei Threads (parallele Programmcodeausführung).

Die meisten Desktop-Anwendungen brauchen in der Regel keine parallelisierte Rechenleistung über einen längeren Zeitraum. Nur manchmal hat man das Gefühl, dass ein Multi-Core-Prozessor eine Geschwindigkeitssteigerung hervorruft. Die ist darauf zurückzuführen, dass mehrere Programme tatsächlich parallel laufen können. Im Optimalfall nutzen mehrere leistungshungrige Anwendungen unterschiedliche Prozessorkerne. Zum Beispiel im Hintergrund (Dienste) oder Vordergrund laufende Programme. Durch mehrere Prozessorkerne entsteht eine Art Leistungsreserve, durch die Anwendungen Eingaben immer bereitwillig entgegennehmen, auch wenn im Hintergrund irgendwelche Prozesse Rechenleistung verbrauchen.

Prozessoren mit mehr als 4 Rechenkernen haben es jedoch schwer sich bei der normalen Nutzung zu beweisen. Während ein Dual-Core-Prozessor noch durch das Betriebssystem bedient wird, bedarf es bei mehr als 2 Kernen der Unterstützung durch die Anwendungen, die ihre Berechnungen selber auf mehrere Prozessorkerne verteilen können.

Die Vorteile der Multi-Core-Prozessoren sind ein geringerer Takt und weniger Energieverbrauch pro Kern und somit weniger Aufwand beim Kühlen. Das heißt, weniger Stromverbrauch bei gleichzeitiger Leistungssteigerung.

Das Amdahl-Gesetz

Das Amdahlsche Gesetz, benannt nach Gene Amdahl, ist ein Modell in der Informatik über die Beschleunigung von Programmen durch parallele Ausführung. Beispielsweise in Multi-Core-Prozessoren. Nach Amdahl wird der Geschwindigkeitszuwachs durch Parallelisierung durch den sequentiellen Anteil des Problems beschränkt.
Normalerweise ist es das Ziel, ein Problem in möglichst kurzer Zeit zu berechnen. In der Regel ist es so, dass ein Multi-Core-Prozessor mehrere Probleme in möglichst kurzer Zeit berechnen kann. Aber eben nur dann, wenn die Daten tatsächlich parallel verarbeitet werden müssen. Ist keine parallele Ausführung erforderlich ist eine parallele Verarbeitung auch nicht sinnvoll.

Parallelisierung

Parallelrechentechnik und Multi-Core-Prozessortechnik sind Prinzipien, die seit Anfang der 90er Jahren in Supercomputern Einzug gehalten haben. Diese Systeme sind bis heute Multi-Prozessor-Systeme. Die dort verwendeten Verfahren haben ihren Weg auch in CPUs für Massenprodukte gefunden.

In Multi-Core-Systemen werden viele Aufgaben in Threads aufgeteilt. Diese Threads werden parallel von mehreren Prozessorkernen abgearbeitet. Dazu müssen das Betriebssystem und die Programme "threaded"- oder "multi-threaded"-fähig sein. Mit Hyper-Threading hat Intel die Software-Branche schon früh zur Realisierung von Multi-Threading-Anwendungen motiviert.
Auch wenn durch die wachsende Verbreitung von Computern mit Multi-Core-Prozessoren Multi-Threading-Anwendungen attraktiver werden, ändert sich die Software nur sehr langsam. Das Problem: Multi-Threading-Anwendungen sind sehr viel komplizierter in der Programmierung. Dazu kommen neue und ungewohnte Fehlerquellen hinzu.

Die Parallelisierung von Software stellt die Programmierer vor eine große Herausforderung. Man muss die Teile aus den Anwendungen evaluieren, die durch Multi-Threading profitieren können. Meist ist das so minimal, dass es sich gar nicht lohnt und der Entwicklungsaufwand nicht für das Ergebnis steht. Erschwerend kommt hinzu, dass die meisten Anwendungen keiner Parallelisierung bedürfen. Vor allem deshalb, weil sie die meiste Zeit sowieso auf Nutzereingaben warten.

Typische Anwendungen, die durch Parallelisierung deutliche Vorteile haben, sind Bild- und Videobearbeitung. Aber auch nur dann, wenn Funktionen ausgeführt werden, die eine parallele Verarbeitung von Daten ermöglichen. Weil Multi-Core-Prozessoren für viele Anwendungen keinen wirklichen Vorteil bringen, verzichten die Programmierer auf die Optimierung des Programmcodes auf Multi-Threading.

Die beiden großen Prozessorhersteller Intel und AMD propagieren schon sehr lange den Wechsel zur parallelisierbaren Programmierung. Denn beide sind nicht in der Lage die Taktraten ihrer Prozessoren dauerhaft auf über 4 GHz zu erhöhen. Nur in Sondersituationen lassen sich die Prozessoren übertakten.
Deshalb kommt es trotz Multi-Core-Prozessoren immer noch auf die Rechenleistung eines einzelnen Kerns an. Das haben auch Intel und AMD erkannt und deshalb in ihre Multi-Core-CPUs eine Übertaktungsautomatik eingebaut. Wenn mehrere Kerne nichts zu tun haben, dann werden sie abgeschaltet und ein Kern übertaktet. Und zwar so lange und so hoch, bis dieser eine Kern zu heiß wird. Dann wird dieser Kern wieder heruntergetaktet.

Auswirkungen auf die Prozessor- und Computer-Architektur

Multi-Core / Mehrkern-Prozessoren

In einer Multi-Core-Architektur müssen sich mehrere Rechenkerne die vorhandenen Resourcen teilen. Zum Beispiel Arbeitsspeicher, Schnittstellen usw. Je mehr Kerne ein Prozessor hat, desto mehr Speicher und mehr Bandbreite zum Speicher ist erforderlich. Aus diesem Grund ist der Speicher-Controller nicht mehr im Chipsatz, sondern im Prozessor verankert.

Gleichzeitig besteht das Problem, dass sich die Rechenkerne darüber abstimmen müssen, wer gerade welche Daten im Cach hält. In der Regel arbeiten die Rechenkerne mit einer hierarchischen Cache-Struktur. Dabei bekommt jeder Kern einen eigenen L1- und L2-Cache. Den L3-Cache müssen sich die Kerne teilen. Ein Cache-Kohärenz-Protokoll sorgt dafür, dass sich die Prozessorkerne bei der Nutzung des L3-Caches nicht in die Quere kommen.

Seit der Einführung von Dual-Core-Prozessoren hat sich die Computer-Infrastruktur entscheidend weiterentwickelt, wodurch Multi-Core-Prozessoren immer sinnvoller werden. So sind Festplatten und SSDs in der Lage Zugriffe per NCQ in ihrer Reihenfolge zu verändern und dadurch Datenanforderungen von mehreren Prozessorkernen zu bearbeiten. Ebenso PCI Express (PCIe), auf dem mehrere Datentransfers unterschiedlicher Rechenkerne parallel ablaufen können.

SMP - Symmetrisches Multiprocessing

Bei SMP verteilt das Betriebssystem die Aufgaben auf die einzelnen Kerne und verwaltet die Speicher- und Hardware-Ressourcen. Die Berechnungen lassen sich beliebig auf die vorhandenen Kerne aufteilen. Dann ist aber auch eine Synchronisierung zwischen den Kernen und dem Speicher notwendig.

AMP - Asymmetrisches Multiprocessing

Bei AMP wird jedem Kern eine eigene Software zugeteilt. So kann auf einem System Anwendungen und Betriebssystem voneinander entkoppelt werden. Nur der jeweils zugeteilte Prozessorkern begrenzt die Leistung. AMP ist damit effizienter, weil weniger Synchronisierung zwischen den Kernen notwendig ist.

Typische Anwendungen für Single-Core-Prozessoren

  • Textverarbeitung
  • Browser
  • E-Mail
  • Instant-Messaging
  • Virenscanner
  • MP3-Player
  • einfache Bildbearbeitung (Schneiden, Skalieren, Farbkorrektur)

Typische Multi-Threading-Anwendungen für Multi-Core-Prozessoren

Gut parallelisierbare Anwendungen sind Schneiden von 4K-Videos, Computergrafiken mit Raytracing erzeugen oder aufwendige Softwareprojekte kompiliert. In diesen Fällen können im Prozessor nicht genug Kerne enthalten sein.

  • CAD
  • Simulation
  • HD-Video
  • Compiler
  • 3D-Rendering
  • professionelle Audio-Bearbeitung
  • professionelle Bildbearbeitung
  • Videoschnittprogramme

Multi-Core-Standards und Multi-Threading-Unterstützung

Das Potential einer Multi-Core-CPU bringt nur etwas, wenn mehrere laufende Anwendungen mehrere Rechenkerne gleichzeitig beschäftigen können. Es braucht also Software, die das ganze koordiniert und eine Hardware, die das unterstützt. Dazu gehört das Verteilen der Berechnungen auf mehrere Rechenkerne. Man nennt das auch die "Automatische Parallelisierung".

Multi-Threading, also die prozessinterne Kommunikation, ist durch POSIX gut definiert. POSIX ist eine Sammlung offener APIs, die von der IEEE für Betriebssystemdienste spezifiziert wurde. Der Standard definiert Schnittstellen zur Thread- und Prozesssteuerung. POSIX befindet sich in Linux, Unix und in einer Reihe Embedded-Betriebssysteme.

Multi-Threading ist in Programmiersprachen wie Java oder Ada integriert. Mit OpenMP existiert eine Software-Bibliothek mit der Entwickler parallele Anweisungen in C- und C++-Code integriere können.

Die Video-Schnittstellen Vulkan und Direct3D verfügen über eine immer besser werdende Multi-Threading-Unterstützung. Und entsprechend kommen dann angepasste Spiele auf den Markt, wodurch Gaming-PCs von mehr als 4 Rechenkernen profitieren.

Grundlagen der Multi-Core-Technik

Weitere verwandte Themen:

Teilen:

Computertechnik-Fibel

Die Computertechnik-Fibel, das Computer-Buch

Das will ich haben!