MACNOTES

Veröffentlicht am  22.11.06, 22:51 Uhr von  

Mehrkernprozessoren – die Kraft der vielen Herzen

Core DuoMehrkernprozessoren sind seit der Vorstellung des Power4 von IBM im Jahr 2001 ein Trend bei den Prozessorherstellern geworden. Nachdem Apple im letzten Jahr mit dem G5 den ersten Multikernprozessor in einem Mac verbaut hat, ist dieses Thema auch für Mac-Nutzer interessant geworden. Die gesamte aktuelle Modellpalette von Apple wird inzwischen von Zweikernprozessoren angetrieben. Grund für uns in einem kleinen Artikel die Vor- und Nachteile dieser Architektur einmal näher zu beleuchten und die Auswirkungen für Mac OS X Benutzer zu skizzieren.

Immer schneller, immer heißer
In der Vergangenheit wurden Zuwächse der Rechengeschwindigkeit von Prozessoren durch Taktfrequenzerhöhungen erreicht. Das ist schön, denn ein Softwareentwickler muss an dieser Stelle nichts tun. Er kann einfach auf die nächste Prozessorversion warten und weiß, dass seine Applikation darauf schneller laufen wird.

Doch der Spielraum für Takterhöhungen ist begrenzt. Sie werden durch Strukturverkleinerungen der Transistoren erreicht. Unser Stromvergleich zeigt die Nachteile auf, zB das durch Strukturverkleinerungen auch der Strombedarf steigt und steigender Strombedarf bedeutet mehr Abwärme, die aus dem Rechner abgeführt werden muss. Schlimmer noch ist, dass mit steigender Taktfrequenz der Strombedarf nicht linear sondern exponentiell steigt.

20 Prozent mehr Taktfrequenz ermöglichen etwa 13 Prozent Geschwindigkeitszuwachs für Anwendungsprogramme. Allerdings steigt im selben Moment der Stromverbrauch des Prozessors um 73 Prozent an. Wenn wir den Spieß jedoch einmal umdrehen und den Takt um 20 Prozent absenken, dann verlieren wir etwa 13 Prozent an Geschwindigkeit. Jedoch verbraucht der Prozessor auch 49 Prozent weniger Strom.

Nimm zwei
Wenn man jetzt zwei dieser heruntergetakteten Prozessorkerne zusammen nimmt, dann bekommt man etwa 75 Prozent mehr Geschwindigkeit bei 2 Prozent mehr Stromverbrauch. Bei diesem Beispiel sind Fortschritte in der Prozessortechnologie, die natürlich auch noch dazu kommen, nicht mit einbezogen.

Das Zweikernprozessoren erst der Anfang dieser Entwicklung sind, bewies der Hersteller Intel Anfang November mit der Vorstellung von Vierkernprozessoren.

Was tun?
Nun stellt sich natürlich die Frage, wie man diese zusätzliche Leistung nutzen kann. Diese Frage ist insbesondere für Anwendungsentwickler interessant, denn prinzipiell können sie aus drei Optionen wählen:

  • Nichts tun,
  • Benutzung von Threads und
  • neue Bibliotheken benutzen.

Nichts tun
Wie kann ein Entwickler nichts tun? Nun, er kann diese Option wählen, wenn z.B. das Betriebssystem ihm die harte Arbeit bereits abgenommen hat. In Mac OS X laufen z.B. zahlreiche Hintergrundprozesse, die dann auf dem zweiten Prozessorkern laufen, während der erste Kern vollständig einer Applikation zur Verfügung steht. Zusätzlich kann das Programm Bibliotheken benutzen, die vom Betriebssystemanbieter Multiprozessor- bzw. Multicorefähig gemacht wurden.

Benutzung von Threads
Eine weitere Möglichkeit besteht in der Benutzung von Threads. Das braucht aber viel Fingerspitzengefühl und Erfahrung des Programmierers, denn Threading ist eine Kunst für sich. Datenzugriffe müssen zwischen unterschiedlichen Threads synchronisiert werden und zu viele Threads sind ineffizient bzw. zu wenig Threads bedeuten eine Verschwendung von Ressourcen.

Benutzung neuer APIs
Die dritte Möglichkeit die Leistung von Mehrkernprozessoren zu nutzen, besteht in der Zerteilung von Aufgaben in kleine Abschnitte, die parallel ausgeführt werden können. Diese Arbeitsabschnitte werden dann in eine Schlange eingereiht und dann abgearbeitet.

Für diesen Zweck wird Apple für Mac OS X 10.5 eine neue Programmierschnittstelle einführen, die genau das ermöglicht. Sie arbeitet nach dem divide and conquer-Prinzip. Große Aufgaben werden in mehrere kleine Teile zerlegt und der Programmierer gibt dem Betriebssystem einen Hinweis, welche Teile parallel ausgeführt werden können.

Grenzen der Technologie
Prinzipiell lässt sich die Zahl der Kerne in einem Prozessor weiter steigern, doch stellt sich die Frage, wieviel noch sinnvoll sind. Die Auswahl an Programmen, die effektiv zwei Prozessoren oder Kerne benutzen und auslasten können, ist immer noch überschaubar. Die Liste wird kürzer wenn man Unterstützung für 4 Recheneinheiten sucht und Programme die 8 Kerne beschäftigen, gibt es so gut wie noch gar nicht. Ein Grund dafür ist, dass sich nicht alle Aufgaben beliebig weit parallelisieren lassen. Außerdem ist der Geschwindigkeitszuwachs beim Hinzufügen einer weiteren Recheneinheit nicht linear, sondern flacht zunehmend ab. Das liegt größtenteils am steigenden Verwaltungsaufwand, der mit der Verteilung der Rechenaufgaben auf die einzelnen Prozessoren anfällt.

So haben findige Bastler bei Zdnet einen Mac Pro mit zwei Vierkernprozessoren von Intel ausgestattet. Trotz der Verdopplung der Prozessorkerne von vier auf acht, konnten sie in ihren Benchmarks nur einen Leistungsgewinn von knapp 30 Prozent messen. Offensichtlich ist Mac OS X 10.4 noch nicht für die Verwendung von mehr als 4 Recheneinheiten ausgelegt.

Zukunft
Zumindest im Bereich der Prozessoren für Endanwender wird die Anzahl der Prozessorkerne nicht beliebig steigen. Dafür fehlen einfach die Anwendungen. Selbst Spiele, die sonst jedes Quäntchen Leistung eines Rechners fordern, setzen bisher kaum auf Multiprozessorfähigkeit. Wahrscheinlicher ist es, dass die Prozessorhersteller zukünftig andere Spezialprozessoren (z.B. Graphikprozessor) zusammen mit dem Hauptprozessor integrieren. Vor einigen Tagen präsentierte AMD das Projekt Fusion welches genau das als Ziel hat.

 Und wie ist deine Meinung?  Schreib uns einfach!

 3 Kommentar(e) bisher

  •  Johann sagte am 22. November 2006:

    Danke für diesen leicht verstänlichen Überblick, jetzt hab ich endlich mal eine gewisse Ahnung, was es mit der Mehrkerntechnik eigentlich auf sich hat.

    Antworten 
  •  Creedo sagte am 23. November 2006:

    Statt ein einzelnes Programm auf mehrere Kerne zu optimieren würde es sicher schon viel Bringen, wenn z.B. das OS oder so einfach ganze Programme einem Kern zuweisen würde? Dann liesse sich die Last verschiedener, gleichzeitig laufender Programme verteilen und jedes einzelne hätte mehr Ressourcen?

    Antworten 
  •  Matthias sagte am 23. November 2006:

    @Creedo: diesen Ansatz habe ich mit der “Nichts tun”-Option beschrieben, jedoch wird der zweite Kern ja nicht immer voll ausgelastet sein, so dass ich bei entsprechendem Design meines Programms sogar noch mehr Leistung erreichen kann. Das hängt natürlich auch von der Aufgabe ab. In einer Textverarbeitung gibt es wenig zu parallelisieren, dort wartet der Prozessor größtenteils darauf, dass der Benutzer eine Taste drückt.

    Antworten 

Kommentar verfassen

 0  Tweets und Re-Tweets
       0  Likes auf Facebook
         0  Trackbacks/Pingbacks
          Werbung
          © 2006-2013 MACNOTES.DE. Made with insanely great for all things Mac. Apple.de