Aus Linux-Magazin 05/2007

Technik, Marktübersicht und Grundlagen zu Mehrkern-Prozessoren

tiktak, photocase.com

Doppel-CPUs sind klar Trend, in Servern genauso wie in den Desktops ab der Mittelklasse. Der potenzielle Käufer verstrickt sich jedoch in den kryptischen Modellnamen und Featurebezeichnungen von Intels und AMDs Doppelwhoppern. Außerdem nagen Zweifel, ob die Software auch das Mehr an Kernen ausreizt. Eine Bilanz.

Ein Doppelkernprozessor (Dualcore) besitzt zwei Hauptprozessoren in einem Chipgehäuse, ein Quadcore-Prozessor vier diskrete Kerne oder zwei Doppelkernprozessoren. AMD und Intel haben zwar beides nicht erfunden (siehe Kasten “Andere Architekturen”), wohl aber popularisiert. Zugleich konterkarieren sie jedoch ihren Erfolg mit einem Wirrwarr von Modellbezeichnungen, der wohl teils der Technik, teils dem Marketing geschuldet ist. Dieser Beitrag versucht ein paar Wegweiser zu platzieren auf dem Pfad zur richtigen CPU.

Andere Architekturen

Intel und AMD etablieren die Multicore-Technik im Markt, haben sie aber nicht erfunden. Bei IBM beispielsweise läuft seit dem Jahr 2001 der Power 4 als Dualcore-Prozessor vom Band, ein Jahr später kam der Power 4+. Seit November 2004 gibt es Power 5, dann 2005 PowerPC 970MP und Power 5+. Im selben Jahr konnte auch Hewlett-Packard die ersten Doppelkerne vorstellen: PA-8800 und PA-8900. Da HP mit Intel zusammen Chips entwickelt, sind der Firma auch die Doppel-Itaniums mit zuzuschreiben.

Suns Ultrasparc T1 umfasst vier, sechs oder acht Kerne mit je vier Threads. Der 2007 erwartete Nachfolger T2 soll sogar acht Kerne mit acht Threads integrieren. In einer eigenen Liga spielen die Cell-Prozessoren (IBM, Sony, Toshiba), die bis zu acht Coprozessoren (Synergistic Processing Elements) um einen 64-Bit-PowerPC-Kern scharen. Nicht zu vergessen sind außerdem diverse Signalprozessoren und Controller, die als Multicores zu kaufen sind.

Los geht\’s mit Multiprocessing für Arme: dem Hardware-unterstützten Multithreading. Ein Multithreading-fähiger Prozessor besitzt zwar nur eine Recheneinheit, legt aber seine Registersätze mehrfach aus – je einen pro Thread. Er ist somit ein Zwitter: Zwar vermag er wie ein Singlecore-Prozessor nur eine Instruktion zeitgleich auszuführen, dafür geht ein Kontextwechsel schneller.

Intels Implentierung heißt Hyperthreading (HT, [1]). Sie ist in einem Teil der Intel-Prozessoren mit Netburst-Architektur (Pentium 4, Pentium D, Pentium EE, Xeon) sowie den Core-2-CPUs eingebaut. Auch AMDs Athlon 64 X2 und die Opteron-Dualcore-Prozessoren signalisieren dem Betriebssystem Hyperthreading-fähig zu sein. IBM nennt die Technik beim Power 5 symmetrisches Multithreading, ein Sun-Ultrasparc-T1-Prozessor verwaltet vier Threads pro Core.

Software-seitig verhalten sich solche CPUs wie symmetrische Mehrprozessor-Systeme. Das ist praktisch, denn es reicht, dass das Betriebssystem SMP-fähig ist und Kernel-Threads unterstützt. Laut Intel bringt Hyperthreading im Multitasking-Betrieb 10 bis 20 Prozent mehr Performance, bei per Compiler optimierten Programmen bis zu 33 Prozent.

Intels CPU-Linien mit zwei und vier Kernen

AMD und Intel nehmen sich nicht viel, wenn es um die babylonischen Verwirr-Schemata ihrer Prozessorbezeichnungen geht. Wer\’s nicht glaubt, möge in die Tiefen von Intels Processorfinder [2] und AMDs Compare Processor Specifikation [3] abtauchen. Die Tabellen 1 bis 3 unternehmen für Zwei- und Vier-Core den Versuch einer Systematisierung. Um die Übersicht nicht mehr zu gefährden als nötig, fehlen alle Mobilvarianten.

Tabelle 1: Dualcore-CPUs von
Intel

Tabelle 2: Quadcore-CPUs von
Intel

Tabelle 3: Dualcore-CPUs von
AMD

Bereits seit Frühjahr 2005 fertigt Intel die Pentium Extreme Edition und einige Pentium D als Dualcore (Tabelle 1). Im Oktober kamen zunächst die Xeon DP hinzu und im Januar 2006 die Intel Core Duo, im Juli Core 2 Duo (Abbildung 1) und Core 2 Extreme. Deren Architektur ist Netburst weit überlegen. Schon bei geringen Taktraten und entsprechend kleiner Wärmeemission bringen sie viel Rechenleistung. Die großen, teuren EE-Varianten führen die einschlägigen Benchmark-Listen an.

Abbildung 1: Intels Core 2 Duo erzeugen wenig Wärme und bringen gute Leistungen.

Abbildung 1: Intels Core 2 Duo erzeugen wenig Wärme und bringen gute Leistungen.

Die Preise der Core 2 werden im zweiten Quartal 2007 fallen. Prognose: E4300 für 113 Dollar, E6300/6400 für 163/183 Dollar, E6600 für 224 und der E6700-Preis halbiert sich fast auf 316 Dollar.

Im selben Monat wie die Core 2 brachte Intel noch eine Reihe echter 64-Bit-Multicore-Prozessoren unter dem Codenamen Montecito heraus, um es als Nachfolger des glücklosen, zusammen mit Hewlett-Packard entwickelten Merced-Itanium besser zu machen.

AMDs Dualcore-Produkte

Bei AMD64-Prozessoren mit zwei Kernen besitzt jeder einen eigenen L2-Cache, gemeinsam nutzen sie den Speicher-Controller und die Hypertransport-Technologie ([4], [5]). Die Dualcores passen in die Sockel ihrer Single-Verwandten, also die Opterons in den 940-Pin-Sockel und die Athlons 64 X2 (Abbildung 2) in den 939-Pin-Sockel. Das Motherboard benötigt nur ein Bios-Update. Einige Athlons 64 FX fertigt AMD seit Januar 2006 auch als Dualcores. Seit Februar 2007 verkauft AMD den jüngsten Athlon 64 X2 6000+ mit 3 GHz für 464 US-Dollar.

Abbildung 2: Der Dualcore Athlon 64 X2 passt in den 939-Pin-Sockel seiner Singlecore-Brüder.

Abbildung 2: Der Dualcore Athlon 64 X2 passt in den 939-Pin-Sockel seiner Singlecore-Brüder.

Mitte Februar 2007 gab AMD Details zur Architektur seiner Native-Quadcore-Opteron-Prozessoren mit dem Codenamen Barcelona bekannt. Neben Performance-Gewinnen durch das Mehr an Cores und durch einen geteilten L3-Cache sowie längere Pipelines soll die überarbeitete Mikroarchitektur neue Wärmemanagement-Techniken bringen. Sie passt die Frequenzen der vier Kerne einzeln an, selbst wenn der Speicher-Controller unter Volllast arbeitet. Überhaupt schaltet die CPU gerade nicht benötigte Bereiche ab. Die geplanten Quadcores sollen nicht mehr heizen als aktuelle Modelle: also 68, 95 oder 120 Watt. AMD will Mitte 2007 die Bacelona-Linie starten.

Spezialfunktionen

Fast alle Dualcores besitzen besondere Befehle, sei es für 64-Bit-Operationen (EM64T, AMD64) oder Mathematikfunktionen, die bei der Bildberechnung oder beim Multimedia-Streaming unterstützen (SSSE3, SSE3). Die meisten CPUs können verhindern, dass sie Code in einzelnen Speicherzonen ausführen. Die XD (Execute Disable) oder NX (No Execute) genannte Technik soll vor einem Teil der kursierenden Schadprogramme schützen. Nicht alle CPUs unterstützen Virtualisierung – gerade beim Kauf eines Servers kann das später zur Fußangel werden. Der Kasten “Virtualisierung in Hardware” erklärt das Prinzip, die Tabellen 1 bis 3 welches Modell was kann.

Virtualisierung in
Hardware

Dem Hyperthreading technisch verwandt, aber komplizierter zu implementieren sind Funktionen zur Virtualisierung. Intel und AMD bauen sie in einen Teil ihrer Prozessoren ein, da IA-32-Architekturen, anders als Mainframes, schlecht für den Parallelbetrieb von Betriebssystemen gerüstet sind: Kernel und Treiber von Gastsystemen wie Linux laufen nämlich auf Ring 0 der CPU (mit Kernel-Mode-Privilegien). Die Steuerungssoftware des virtuellen Systems muss darum das Gastsystem in einen höheren Ring verschieben.

Wenn der Gast nun einen Befehl ausführen will, der nur im Ring 0 funktioniert, löst der Prozessor eine Exception aus. Die Virtualisierungssoftware fängt die Exception ab und emuliert den privilegierten Befehl – soweit die Theorie. In der Praxis klappt das nicht immer, so beim SMP-Handling oder 64-Bit-Befehlen. Intel-Prozessoren handern besonders mit der Global Descriptor Table, der zentralen Speicherverwaltungstabelle. Der Load-Zugriff auf die GDT geht korrekt nur im Ring 0 und löst eine virtualisierungsfreundliche Exception aus, der Store-Zugriff jedoch nicht.

Der VMX-Befehlssatz (Virtual Machine Extensions, bei Itaniums VTI) von Intel Vanderpool unterstützt die Virtualisierungssoftware (Hypervisor) beim Verwalten der Prozessor-Ressourcen, insbesondere von Exceptions. So gerüstet erkennt das Gastsystem nicht, dass es die CPU nicht allein hat. Die Virtualiserungssoftware erwirbt im Gegenzug mit einem eigenen Satz von VMX-Befehlen die volle Kontrolle über das Gastsystem, obwohl es im Ring 0 arbeitet.

AMD Pacifica

Vergleichbar zu VMX in Intel-CPUs baut AMD in seine Pacifica-Prozessoren den SVM-Befehlssatz (Secure Virtual Machine Architecture) ein. Die Virtualisierungssoftware arbeitet auch hier in einem Hypervisor-Modus mit noch höheren Privilegien als der Gast in Ring 0 im Pacifica-Guest-Modus, in dem die Gastbetriebssysteme ablaufen. Darum wähnt sich die Gastsoftware exklusiv auf einer CPU.

Anders als der Marktführer haben AMD64-Prozessoren den Memory-Controller integriert. Pacifica virtualisiert darum auch den Speicher-Controller per Hardware. Jedes Gastsystem benötigt nämlich eigene Adressbereiche, und die muss der Hypervisor auf physikalische Adressen umdeuten. Mit Intel- und Nicht-Pacifica-Prozessoren passiert das in Software. Pacifica SVM implementiert den Speichermodus Nested Paging, der über eine gleichnamige Tabelle für jedes Gastsystem ein eigenes virtuelles Hauptspeicherregister bereitstellt.

Jede CPU erzeugt, energetisch gesehen, nichts als Wärme. Eine Obergrenze nennt der TDP-Wert (Termal Design Power). Da alle Fortschritte bei der Chipfertigung durch das Hochschrauben des Takts wieder draufgehen, steuern die Hersteller mit Stromspartricks gegen, die sie sonst in Notebooks einsetzen:

  • Taktfrequenz von wenig belasteten CPUs schrittweise senken
  • Betriebsspannung von runtergetakteten CPUs schrittweise
    senken
  • Spannung von gerade nicht benutzten Einheiten abschalten
  • Gänzlich untätige CPUs in einen Schlafzustand
    versetzen

AMDs Cool\’n\’Quiet für Desktop-Prozessoren (bei Opterons: Optimized Power Management) scheint wirkungsvoller zu arbeiten als Intels EIST/Speedstep. Für Multicore ist interessant, dass manche Modelle ihre Cores unabhängig voneinander schlafen schicken. Seit Version 2.6.18 spiegelt der Kernel darum die Einträge »sched_mc_power_savings« und »sched_smt_power_savings« ins Sys-FS unter »/sys/devices/system/cpu/cpuX«. Darüber lässt sich das Stromsparen für Multicore und SMT getrennt aktivieren (»1«) und deaktivieren (»0«) [6].

Das Prinzip: Ist Power-Saving eingeschaltet und die Systemlast gering, verlagert der Scheduler alle Tasks auf einen Core beziehungsweise eine CPU und gibt somit der anderen die Möglichkeit, in einen Strom sparenden Modus zu fahren. Suresh Siddha von Intel brachte Mitte 2006 dieses Kernelpatch ein. Er hatte bereits auf dem Linux Symposium 2005 dahin gehende Vorschläge unterbreitet [7].

Knackpunkt Software

In der Praxis (und mit Amdahls Gesetz auch in der Theorie, [8]) steht und fällt die Wirksamkeit von mehreren Cores mit dem Parallelisierungsgrad der Software. Unix, der SMP-Linux-Kernel, Windows XP, 2003 und Vista unterstützen Mehrkernprozessoren. Sie verteilen die Prozesse auf die Kerne, die sie dann parallel abarbeiten. Der “Kerntechnik”-Artikel im Schwerpunkt erklärt die Scheduler-Strategien von Linux 2.6. Ist das System dagegen von nur einem einzigen Prozess dominiert, sollte dieser parallelisiert, also multithreaded eingerichtet sein – beispielsweise mit Hilfe der Shared-Memory- oder der Message-Passing-Interface-Programmierung (MPI).

Beim für Multicore- und SMP-Systeme idealen Shared Memory Programming regeln Compileroptionen (unter Linux: GCC, ICC, PGI [9] oder andere), Parallelisierungsdirektiven und/oder spezielle Bibliotheken die Parallelisierung. Ein Beispiel ist OpenMP, das ab 1997 mehrere Hardware- und Compilerhersteller für Multiprozessorsysteme entwickelt haben. OpenMP ist Gegenstand eines Artikels in diesem Schwerpunkt.

Die C++-Library Intel Threading Building Blocks [10] (auch dazu ein eigener Artikel) stellt Algorithmen und Strukturen zur Threading-Implementierung bereit. Fürs Debugging und zum Finden von Deadlocks eignen sich der Thread Checker 3.0 for Linux [11] und der Vtune Performance Analyzer for Linux [12].

Bei der zweiten Form der Parallelisierung, dem Message Passing Programming, ist die Interprozesskommunikation nicht so effizient wie bei Shared Memory. Denn die lockerer verbundenen CPUs reden meist nur per IP (Ethernet, Myrinet, Infiniband). Im Gegenzug skaliert das Modell aber besser.

Fazit und Ausblick

Intels Core-2-Technologie hängt zurzeit in Desktops den ewigen Konkurrenten AMD bei den Benchmarks ab. Core 2 bildet zudem die bessere Ausgangsbasis, um vier oder mehr Kerne in einem Chip zu vereinen – besonders wenn demnächst die Strukturbreite auf 45 Nanometer schrumpft. Zudem ist bei den Taktfrequenzen nach oben noch Luft. Auf Intels Waagschale liegen auch Beiträge bei der Kernelentwicklung und einige SMP-Software für Entwickler.

Intel hat dafür die teure Leiche Itanium im Keller, gegen die AMD mit seinem Pendent Opteron in gehobenen Servern sehr erfolgreich antritt. Auch beim Stromsparen ist AMD offenbar besser. Den Verbraucher freut der Kampf, profitiert er doch von der schnellen Entwicklung und rutschenden Preisen. Jüngstes Beispiel sind Mehrkern-CPUs, die es nun bis ins letzte Bit auszureizen gilt.

Infos

[1] Hyperthreading: [http://www.intel.com/technology/hyperthread/]

[2] Intel Processorfinder: [http://processorfinder.intel.com]

[3] AMD Compare Processor Specifikation: [http://www.amdcompare.com]

[4] AMDs Multicore-Site: [http://multicore.amd.com/de-de/AMD-Multi-Core.aspx]

[5] Hypertransport-Bus: [http://www.hypertransport.org]

[6] Beschreibung des Kernelpatch von Suresh Siddha, “Sched: mc/smt power savings sched policy”: [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5c45bf279d378d436ce45825c0f136696c7b6109]

[7] Suresh Siddha, Venkatesh Pallipadi, Asit Mallick, “Chip Multi Processing aware Linux Kernel Scheduler”: [http://www.linuxsymposium.org/2005/linuxsymposium_procv2.pdf], S. 193

[8] Amdahlsches Gesetz: [http://de.wikipedia.org/wiki/Amdahlsches_Gesetz]

[9] PGI Compiler: [http://www.pgroup.com]

[10] Intel Threading Building Blocks 1.0 for Windows, Linux and Mac OS: [http://www.intel.com/cd/software/products/asmo-na/eng/294797.htm]

[11] Intel Thread Checker 3.0 for Linux: [http://www.intel.com/cd/software/products/asmo-na/eng/291669.htm]

[12] Intel Vtune Performance 8.0 Analyzer for Linux: [http://www.intel.com/cd/software/products/asmo-na/eng/vtune/239145.htm]

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben