Home Computer Prozessor Basics Site Map counter

Dual Cores

Einführung

Seit Ende 2005 gibt es auch für "normale" Rechner Prozessoren mit mehreren Kernen. Nach den Verlautbarungen von AMD und Intel werden diese im Laufe des Jahres 2006 alle Einzelkernprozessoren ersetzten und 2007 sollen dann Prozessoren mit 4 und ab 2008 welche mit 8 Kernen verfügbar sein. Dieser Artikel erläutert welche Chancen und Probleme es dabei gibt.

Multiprozessorsystem

Ein "Dual Core" Prozessor ist eine Spezialform eines Multiprozessorsystems. Das Prinzip mehrere Prozessoren einzusetzen ist an und für sich nichts neues. Daher einmal ein historischer Rückblick.

Schon der erste Supercomputer von Cray, die 1976 erschienene Cray 1 war ein Rechner mit einem Prozessor. Spätere Supercomputer setzten immer mehr Prozessoren ein. Heute (Mai 2006) findet man in den Top 500, der Liste der 500 schnellsten Rechner vorwiegend Rechner mit Tausenden von normalen PC Prozessoren. Der 2007 schnellste Rechner, BlueGene hat davon 65536 Stück.

Auf Supercomputern laufen vorwiegend rechenintensive Simulationen die man sehr gut parallelisieren kann. Unter dem Fachbegriff "Parallelisieren" versteht man das Aufteilen einer großen Aufgabe in mehrere kleinere die parallel ablaufen. Hierzu ein Beispiel: Ein Auto Crash soll simuliert werden. Dazu zerteilt man das Auto in ein dreidimensionales Gitter von z.B. 20 x 20 x 20 Elementen. Das sind 8000 Elemente. Am anfangs müssen die Kräfte zwischen den Elementen ausgetauscht werden, doch dann muss man nur die auf ein Element wirkenden Kräfte berechnen. Beim nächsten Iterationsschritt muss dann wieder zwischen den Elementen die Querkraft ausgetauscht werden. Hat man 8000 Prozessoren so kann jeder ein Element durchrechnen. Am Ende jedes Rechenschrittes muss er sich mit seinen 6 Nachbarn im Raum austauschen.

Derartige Gitterzerlegungen findet man in Simulationen sehr häufig. Noch einfacher ist es bei dem Testen von Wirkstoffen. Will man erfahren ob ein neu synthetisierter Wirkstoff als Medikament geeignet ist, so berechnet man die räumliche Wechselwirkung mit allen Körpereigenen Proteinen. Jedes Protein kann unabhängig von einem anderen berechnet werden. So kamen Pharmafirmen sehr schnell darauf dafür die Arbeitsplätze ihrer Mitarbeiter zu nutzen und waren die ersten die so genannte Feierabend Cluster aufbauten (Nach Feierabend werden die Rechner mit neuen Aufgaben versorgt).

Doch auch kleinere Rechner haben heute mehrere Prozessoren. Server gibt es heute in verschiedenster Form. Ein Server ist ein Rechner der eine Aufgabe typischerweise vielen Anwendern zur Verfügung stellt. Hier kommt die Parallelität durch viele Anwender zustande. Jeder Anwender erzeugt üblicherweise einen Thread oder Prozess, also eine "leichtgewichtige" Anwendung die lebt, solange es eine Verbindung gibt. Ein solcher Prozess kann das Ausliefern einer HTML Seite sein (HTML Server) oder eine Datenbank Anwendung bei der eine Abfrage läuft.

Problem Einzelplatz PC

Doch beides sind Dinge die man auf seinem "Wald und Wiesen PC" normalerweise nicht macht. Die meisten Anwender arbeiten mit einer Anwendung selten gibt es eine zweite, wenn z.B. ein Download über das Internet läuft oder eine DVD gebrannt wird. Doch wer bei diesen Tätigkeiten mal den Taskmanager bemüht, der wird feststellen, dass diese Anwendungen kaum Rechenzeit brauchen. Noch weniger trifft dies auf Office Anwendungen zu. Eine Rechtschreibprüfung im Hintergrund oder ein Neuberechnen der Tabelle beanspruchen kaum den Prozessor.

Sowohl Intel wie auch AMD werden in den nächsten Jahren die Leistung durch Anzahl der Kerne erhöhen, dagegen kaum den Takt steigern. Intel hatte sich hier verkalkuliert. Ursprünglich sollte die mit dem 2001 erschienen Pentium 4 eingeführte "Netburst" Architektur für hohe Taktraten bis 10 GHz gut sein. In der Praxis ließ sie sich nicht weniger über 3 GHz steigern. Diese waren Ende 2002 erreicht und 3 Jahre später hatte man nur bescheidene 30 % mehr (3.8 GHz) erreicht. AMD hatte hier noch mehr Luft, da ihre Prozessoren niedriger getaktet sind. (Ein Athlon 3000 ist mit 1.75 GHz getaktet). Doch auch hier gibt es das gleiche Problem. Bei den hohen Frequenzen steigen Leckströme an (der Chip verbrät viel Wärme) und es gibt Probleme alle Einheiten im Takt arbeiten zu lassen.

Die Steigerung der Taktfrequenz war ein einfacher Weg die Geschwindigkeit zu steigern. Jede Anwendung wurde proportional zur Steigerung der Taktfrequenz schneller. Eine Mehrkernarchitektur dagegen kann im Extremfall zu überhaupt keiner Geschwindigkeitssteigerung führen.

Was bringt es ?

Nun es gibt nach einem halben Jahr Erfahrungswerte. Zum anderen hat Intel 2003 die Hyperthreading Technologie (HT) eingeführt. HT spielt dem Betriebssystem einen zweiten Kern vor, während damals die CPU nur einen Kern hatten. Die Idee war die einzelnen Funktionseinheiten besser auszulasten. Das Betriebssystem sollte dann Arbeiten an den "virtuellen" zweiten Kern delegieren, die intern so verteilt wurden, dass die Funktionseinheiten optimal ausgelastet sind. Einige Benchmarks ergaben eine Leistungssteigerung um 20 %. Die meisten Anwendungen wurden jedoch gar nicht bis maximal 5 % schneller.

Das deckt sich mit einer Untersuchung die man 1990 am amerikanischen Supercomputercenter NCSA gemacht hat. Man untersuchte wie schnell jede Applikation auf einer CrayX-MP lief und stellte fest, das im Mittel die Anwendungen 70 MFlops erreichten, mit sehr starken Schwankungen: Der niedrigste Wert lag bei 10 MFlops, der höchste bei 220 MFlops. Die theoretische Maximalleistung der Cray X-MP lag bei 300 MFlops.

Das zeigen auch Anwendungen die man auf einem normalen PC laufen lässt. Es gibt Dinge die kann man nicht parallelisieren. Dies sind vor allem Anwendungen die von der Umgebung abhängen. Anwendungen die auf den Benutzer warten, (ein Großteil heutiger Anwendungen) gehören dazu, aber auch Anwendungen die Daten aus dem Internet laden oder von der Festplatte. Im Gegenteil: Hier kann es sogar sein, dass parallele Anwendungen sich gegenseitig behindern. Wer einmal zwei Kopiervorgänge im Explorer mit großen Dateien angestoßen hat weiß was ich meine.

Andere Anwendungen sind sehr gut paralellisierbar. Ein Videoschnittprogramm z.B. kann einen Effektfilter so aufteilen, das der erste Kern die ersten 15 Bilder und der zweite Kern die zweiten 15 Bilder berechnet. Auch das Dekodieren von HDTV Signalen kann man parallelisieren. Ein Datenstrom besteht aus jeweils einem stark komprimierten Bild und n Bildern die nur die Änderungen zum ersten beinhalten. Eine solche Gruppe kann man jeweils getrennt dekodieren. Zuletzt muss man die Daten dann wieder zu einem Strom zusammensetzen.

Entsprechend unterschiedlich sind die Benchmarks die es heute gibt. Stark profitieren Bildverarbeitungen, Videoschnittprogramme oder Mediaplayer von dem zweiten Prozessorkern. Fast kaum dagegen Office Anwendungen. Das wichtigste was AMD und Intel daher als Vorteil der Dualcore Architektur angeben konnten war aber der Abschied von der Sanduhr - Bei einem zweiten Kern ist dieser immer frei, auch wenn der erste voll ausgelastet ist. Doch selbst dies stimmt so nicht. Zum einen kann eine Anwendung natürlich beide Kerne in Beschlag nehmen. Vor allem aber ist in der Praxis die Sanduhr am häufigsten zu sehen wenn der Rechner die Festplatte durchsucht.

Spiele profitieren kaum von einem zweiten Kern. Das erstaunt auf den ersten Blick, waren Spiele doch Schrittmacher bei der Entwicklung der letzten Jahre und steigerten vor allem die Performance von Grafikkarten enorm. Das lieht an der Aufteilung der Arbeit. Die anspruchsvollsten Spiele sind heute "Action Shooter". Bei diesen hat die Grafikkarte die Aufgabe das Bild zu rendern, Licht und Schatten zu erzeugen, Texturen natürlich zu gestalten. Für die Action, das realistische Verhalten von Personen und Gegenständen (Explosionen, Bewegungen...) sorgt der Prozessor. Diese "Physikengine" kann bedingt Rechnungen verteilen, indem man bei einer Explosion z.b. die Hälfte der Partikel von einem Prozessor berechnen lässt und die andere von einem zweiten. Doch dies scheint nicht sehr gut zu gelingen. Die Tests bei aktuellen Spielen zeigten hier fast keinen Effekt der Dual Core Prozessoren.

Probleme

Von einem echten Mehrkernprozessorsystem unterscheidet die Dual Core Prozessoren eines: Intern verdoppelt ist nur der Kern mit dem L1 Cache. Gemeinsam benutzt werden L2 Cache, Speicherbus, PCI Bus. Architekturkenner wissen: Dies sind die Flaschenhälse des Systems. Im schlimmsten Fall halbiert sich pro Kern der L2 Cache und die Speicherbandbreite. Dies unterscheidet auch die Dualcore CPU von den höherpreisigen Opteron und Xeon Prozessoren. Diese haben einen entsprechend breiteren Bus für die Unterstützung von jeweils einer Speicherbank pro Kern und einen größeren L2 Cache.

Intels Prozessoren sind noch etwas mehr benachteiligt. Wollen die beiden Kerne Daten austauschen, so müssen sie dies über den gemeinsamen L2 Cache machen. AMD's Athlon X2 Linie hat dagegen einen internen Bus zwischen beiden Kernen über den diese schnell Daten austauschen können.

Die ab Mitte 2006 verfügbare zweite Generation der Dual Cores hat daher die L2 Caches bei beiden Prozessoren verdoppelt und jedem Prozessor einen eigenen Cache verpasst. Der Speicherbus wird jedoch noch immer gemeinsam genutzt.

Die Frage ist natürlich wie dies weitergehen wird. Wenn im nächsten Jahr die Zahl der Kerne auf 4 steigt und 2008 dann auf 8. Wird es dann genug Arbeit für alle geben? Auch das neue Windows Vista kann zwar mehrere Kerne benutzen. Das Betriebssystem selbst nutzt aber nur einen Kern. Windows selbst wird also wahrscheinlich nicht schneller werden. Auch bei den Anwendungen dürfte der Zuwachs langsamer werden, denn je mehr Kerne es gibt, desto größer ist der Overhead für den Austausch von Daten. Nicht umsonst hat man für Großrechner mit vielen Prozessor proprietäre, aber schnelle Busse entwickelt welche diese untereinander oder mit einem gemeinsam genutzten Speicher verbinden.

Die nächsten Jahre werden zeigen ob Mehrkernprozessoren auch für den Einzelplatz PC der große Wurf sind oder wie viele Konzepte wieder verschwinden.


Einschub: ergänzt 2014 (der Originalaufsatz ist von 2005, als die Technik eingeführt wurde)

Einige Jahre später scheint man zumindest Dual Core Prozessoren bei Spielen gut unterstützt zu haben, dafür eben keine Quad-Core, Hexacore etc.  Auch hat Intel die bei der Einführung gemachte Aussage, man werde nun mit sich alle zwei Jahre verdoppelnden Transistorzahlen die Zahl der Kerne verdoppeln nicht halten können. Zwar hat heute ein iCore der fünften Generation 2,6 Milliarden transistoren und damit 15-mal mehr als die ersten Zweikerner (Pentium D), aber es sind keine 30 Kerne sondern nur 6 in dem Prozessor.

Es zeigte sich in den letzten Jahren, das beim Betrieb auf dem Desktop vor allem die Single-Task Performance zählt: Ein Programm braucht eine hohe Rechenleistung die anderen nutzen nur einen Teil der restlichen Kerne aus, die dann mehr oder weniger im "Idle" Mode sind, also warten auf Aufgaben. Da das Betriebssystem den einen sehr viel Rechenleistung brauchenden Task meistens von Prozessor zu Prozessorkern verschiebt um ein Überhitzen zu vermeiden hat Intel den "Turbo Modus" eingeführt. Wird der Prozessor nicht voll ausgelastet, so kann bei solchen Single-Task Problemen ein Prozessor eine höhere Taktfrequenz erhalten, er nutzt das Thermalbudget der anderen Prozessorenkerne mit aus. Es kommt wegen dem verschieben des Tasks nicht zur Überhitzung.

Mit diesem Feature kann sich Intel gut gegenüber AMD absetzen der Athlon zwar auch Turbo Modi haben, aber insgesamt mehr Strom verbrauchen und so nicht so stark ihren Takt anheben können. De Turbo Modus hängt auch von den Programmen ab. So ist bei der erwähnten 5-ten iCore Generation beim Einsatz von AVX Instruktionen, die offensichtlich sehr viele Teile des Prozessors beanspruchen die Möglichkeit zur Takterhöhung kleiner als bei x87 Instruktionen. Bei meinem Rechner mit einem iCore 5 4690 laufen permanent Projekte des BONIC Netzwerkes. Obwohl die Prozessorlastanzeige so dauernd 100% anzeigt ist der Turbo Modus immer aktiv: Der Rechner läuft mit mindestens 3,5 GHz, und kann bis auf 3,9 GHz hochtakten. Im Normalfall laufen alle vier Kerne mit 3,8 GHz, manchmal auch nur mit 3,7 GHz.

Intel hat daraus gelernt und bietet 2014 bei den Einsteigermodellen Zweikernprozessoren an, in der Mittelklasse sind es 4 Prozessorkerne, bei der teuren iCore 7 Serie sind es 6 Prozessoren, teilweise mit Hyperhreading (für das Betriebssystem ist ein echter Kern als zwei logische Kerne sichtbar. Damit kann man die mehrfach vorhandenen Funktionseinheiten pro Kern besser auslasten, Befehlsdecoder, Scheduler und Caches sind aber nur einmal vorhanden und die Geschwindigkeit bei Hyperthreading ist so nicht so hoch wie bei zwei echten Kernen).

Bei Servern wo man viel mehr paralellisierbare Programme hat, (das gilt sowohl für Webserver (pro Benutzer ein Thread) wie auch Supercomputer (dort sind die Programme weil 2014 über 100.000 Kerne an einem Problem arbeiten können schon immer sehr gut paralelllsierbar), gibt es die Xeon Line mit mehr Kernen. 2014 liegt hier der Rekord bei 18 Kernen mit 36 Threads pro Chip. Spezielle für die Probleme von Supercomputern gibt es auch die Xeon Phi Steckkarte die 48 einfache Kerne (mit der Architektur des Pentium, aber erweitert auf 64 Bit und um AVX Instruktionen) enthält. Für solche hochgradig parallelen Probleme eignen sich dann aber auch die Prozessoren von Grafikkarten. Diese waren schon immer von der Rechenleistung her leistungsfähiger als der PC Prozessor. Sie hatten aber lange das Manko, das Programme sehr kurz sein mussten, die Prozessoren nur 32 Bit genaue Zahlen verarbeiten konnten (für den naturwissenschaftlich-technischen Bereich zu wenig) und die Programmierung schwierig war.

Mittlerweile bieten ATI und NVIDEA spezielle GPU-Beschleunigerkarten für Rechenarbeiten an, man hat bei der 64 Bit Performance deutlich nachgebessert und Programme können länger sein und es gibt mit CUDA eine standardisierte Schnittstelle zu den Grafikkarten. Viele Desktopprogramme für Videobearbeitung und Bildbearbeitung, aufgrund der immer gleichen Funktion pro Bildpunkt, die Hauptanwendung von GPU auf dem Desktop nutzen mittlerweile CUDA.




Artikel erstellt 2006, Artikel überarbeitet 25.10.2014

Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.

Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.

Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.

Mehr über das Buch auf dieser eigenen Seite.

Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.

© des Textes: Bernd Leitenberger. Jede Veröffentlichung dieses Textes im Ganzen oder in Auszügen darf nur mit Zustimmung des Urhebers erfolgen.
Sitemap Kontakt Neues Hier werben Bücher vom Autor Buchempfehlungen Top 99