|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
Multi Core Prozessoren
Multi Core Prozessoren haben mehr mindestens zwei vollständige Hauptprozessoren auf einem Chip vereint. Es handelt sich also um mehrere vollständige, weitgehend voneinander unabhängige Prozessoren inklusive eigener Arithmetic_Logical_Unit (ALU), Registersätze und (sofern vorhanden) Floating Point Unit (FPU).
Mikroprozessoren mit einem Hauptprozessor bezeichnet man zur Abgrenzung als Single Core (Einzelkernprozessor). Diese Terminologie lässt sich entsprechend fortsetzen. So spricht man bei vier Kernen von einem Quad-Core-Prozessor.
Multi Core Prozessoren wurden entwickelt, weil die Kosten für den Einsatz eines einzelnen Chips mit mehreren Ressourcen häufig geringer sind als bei mehreren einzelnen Chips. Anders betrachtet kann mit der gleichen Anzahl an Chip-Sockeln und Chips theoretisch die n-fache Rechenleistung erzielt werden (mit n = 2 bei Dual-Core). Die Praxis erweist, dass ein Dual-Core-Prozessor je nach Anwendung die 1,3- bis 1,7-fache Leistung erbringt.
Die AMD Opteron Dual-Core Prozessoren beispielsweise produzieren nur unwesentlich mehr Abwärme als ein AMD Opteron mit einem Prozessorkern. Damit wurde die Prozessor-Abwärmeleistung für ein Mehrprozessorsystem halbiert.
Die rein theoretische Leistungssteigerung von Dual Core Prozessoren ist vergleichsweise effizient und beträgt gegenüber Single Core Prozessoren maximal 100 % pro zusätzlichem Kern. In der Praxis hängt diese Leistungssteigerung aber stark von dem Parallelisierungsgrad des ausgeführten Programms und des verwendeten Betriebssystems ab. Unix, der SMP-Linux-Kernel und Windows XP unterstützen Multicore-Prozessoren. Dabei verteilt das Betriebssystem Prozesse und Anwendungen auf die einzelnen Prozessoren, die diese dann unabhängig parallel ausführen.
Dies ist für alle Computer besonders wichtig, bei denen Prozessoren auf engstem Raum arbeiten: Laptops, HPC-Cluster (high performance computing) und Blade Center: Ein solcher 19-Zoll-Industrieschrank kann hier eine Abwärmeleistung von über 20 kW (!) produzieren, die ist in der Regel durch konvektive Kühlung nicht mehr abführbar ist.
Multicore-Prozessoren stellen neben einer Erhöhung der Taktfrequenz und dem Pipelining 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 aber stark von dem Parallelisierungsgrad des ausgeführten Programms und des verwendeten Betriebssystems ab. Unix, der SMP-Linux-Kernel und Windows XP unterstützen Multicore-Prozessoren. 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 als Threads ausgeführt werden. Dazu gibt es grundsätzlich zwei Parallelisierungsstrategien: SMP (Shared-Memory-Programmierung) und MPI (Message-Passing-Interface-Programmierung).
So unterscheiden sich verschiedene Architekturen. Während manche Architekturen performancesteigernde Komponenten wie z. B. einen Shared Cache auf dem Chip unterbringen (z. B. IBMs POWER4 und folgende), bestehen bei anderen Architekturen die Änderungen lediglich darin, mehrere Cores auf einem Chip unterzubringen, um in der Argumentation um Softwarelizenzen eine geringere CPU-Zahl ausweisen zu können. (z.B. Suns Ultra SPARC IV). Prozessorbasiert lizenzierende Softwareunternehmen haben verschiedene Konzepte entwickelt, um auf diese Entwicklungen zu reagieren. So zählt z. B. Oracle jeden Prozessorkern auf einem Chip mit einer Anzahl kleiner 1. Microsoft hat angekündigt, nicht mehr die Kerne, sondern die Chips als Basis für die Lizenzierung heranzuziehen, womit auf einen Multikernprozessor nur noch eine Lizenz fällt.
Shared-Memory-Programmierung
In der Shared-Memory-Programmierung erfolgt die Parallelisierung, beispielsweise bei OpenMP, entweder automatisch durch Compiler-Optionen oder direkt mit Parallelisierungs-Direktiven bzw. mit Verwendung von parallelen mathematischen Bibliotheken in der Anwendung. OpenMP-Programme haben in der Regel eine wesentlich bessere parallele Effizienz, als mit Message Passing Interface (MPI) parallelisierte Programme, da die Prozessor-Kommunikation direkt über einen schnellen breitbandigen Datenbus geht. Nachteil ist, dass große Shared-Memory-Parallelrechner relativ teuer sind und die Prozessoranzahl begrenzt ist. Ein klassisches SMP-System ist die SGI Origin von Silicon Graphics.
Message-Passing-Programmierung
Das Rechengebiet (Domain) wird bei der Message-Passing-Programmierung zerlegt und auf alle Prozessoren verteilt (Domain-Decomposition). Jeder Prozessor rechnet lokal und kommuniziert über optimierte MPI-Funktionen mit den anderen Prozessoren. Programmbibliotheken sind beispielsweise MPI, PVM (Parallele Virtuelle Maschine) oder SHMEM. Vorteil ist die extrem kostengünstige Hardware. Das bedeutet solche Rechner können aus Standard-PC-Komponenten gebaut werden, wie sie bei jedem PC-Händler zu finden sind. Sie sind theoretisch unendlich skalierbar, d.h. es können nahezu unendlich viele Prozessoren zusammengeschlossen werden. Diese kommunizieren dann in der Regel über IP (Ethernet, Fast Ethernet, Gigabit Ethernet, Myrinet-2000, Infiniband, Quadrics). In der Regel fällt aber die Effizienz mit der Anzahl der Prozessoren, da die Interprozessorkommunikation zu stark zunimmt. Es gibt aber auch Anwendungen die umgekehrt skalieren, da hier Effekte des Domain-Decomposition einen effizienteren Umgang mit dem Speicher ermöglichen.