Mein Name ist James Reinders. Heute spreche ich über Multi-Core-Prozessoren, über die in letzter Zeit ja viel diskutiert wird. Ich werde eine recht einfache Frage beantworten, die mir immer wieder gestellt wird: Sind Multi-Core-Prozessoren nur eine Modeerscheinung oder gehört ihnen die Zukunft? Sind Multi-Core-Prozessoren etwas, was man im Blick behalten sollte, und wird es sie auch in Zukunft geben?
Nun, die Antwort lautet: Multi-Core-Prozessoren gehört die Zukunft. Ich erläutere Ihnen, warum dies so ist. Und erzähle auch darüber, welche Veränderungen Multi-Core-Prozessoren im Laufe der Zeit wahrscheinlich durchmachen werden und worauf wir als Programmierer achten sollten.
Also zur ersten Frage: Warum Multi-Core-Prozessoren? Nun, ein Aspekt, von dem viel die Rede ist, ist der Stromverbrauch. Der Stromverbrauch ist eines der Hindernisse, denen wir uns gegenübersehen. Dies ist einer der Gründe, warum wir nicht länger einfach die Taktfrequenzen so schnell erhöhen, wie wir dies in der Vergangenheit bei Mikroprozessoren getan haben. Und es gibt noch zwei weitere Hindernisse: Parallelismus auf Befehlsebene und Speicher.
Lassen Sie mich kurz etwas zu diesen beiden Themen sagen, denn jeder Aspekt ist ein Grund dafür, sich Multi-Core-Prozessoren zuzuwenden. In der öffentlichen Diskussion steht eher der Stromverbrauch im Vordergrund. Lassen Sie mich erst etwas über die beiden anderen Aspekte erzählen. Der eine ist Parallelismus auf Befehlsebene. Parallelismus auf Befehlsebene findet statt, wenn ein Mikroprozessor die Möglichkeit hat, mehrere Befehle gleichzeitig auszuführen, so dass er schneller arbeitet. Wenn wir die Taktgeschwindigkeit für den Prozessor erhöhen, kann der Prozessor auch mehr Befehle finden, die er gleichzeitig ausführen kann. Das Problem besteht darin, dass es eine sehr schwierige Aufgabe ist, Befehle in vorhandenen Programmen zu finden, die parallel ausgeführt werden können. Mit steigenden Taktfrequenzen wird es immer schwieriger aufzuzeigen, welche Vorteile dies für Parallelismus auf Befehlsebene bietet. Die Taktfrequenzen für die Prozessoren wurden also immer mehr gesteigert, aber die Performance verbesserte sich nicht im selben Maße, wie wir es aus der Vergangenheit gewohnt waren. Und diese Tendenz nimmt mit steigenden Taktfrequenzen immer mehr zu. Daher ist Parallelismus auf Befehlsebene eines der Probleme, die wir lösen müssen.
Ein weiteres Problem stellt der Speicher dar. Die Taktfrequenzen der Prozessoren steigen seit einiger Zeit wesentlich stärker als die des Speichers, ein Trend, der sich fortsetzt. Auch hier können wir feststellen, dass eine Steigerung des Prozessortaktes nicht zur selben Performancesteigerung führt wie in der Vergangenheit. Wir haben daher unter anderem immer mehr Cache-Speicher hinzugefügt, was die Situation etwas verbessert, aber nicht alle speicherbezogenen Probleme löst. Multi-Core-Prozessoren begegnen diesem Problem, indem sie die Beschleunigung der Taktfrequenzen verlangsamen, so dass das Problem zumindest nicht schlimmer wird.
Nun zum Stromverbrauch. Ich glaube, dies ist das Thema, über das man am meisten liest, dass der Stromverbrauch von Mikroprozessoren einfach nicht weiter zunehmen darf. Eine interessante Beobachtung: Wenn man einen Mikroprozessor nimmt und von bestimmten Anfangswerten ausgeht - nehmen wir mal an, ein Prozessor verbraucht eine Energieeinheit und liefert eine Performance-Einheit. Eine Menge Leute beschäftigen sich mit Overclocking und übertakten einen Prozessor, zum Beispiel um 13 Prozent mehr Leistung heraus zu kitzeln. Die spannende Frage ist nun: Wie viel mehr Strom braucht man dafür?
Nun, es ist gar nicht so selten, dass man den Stromverbrauch um 73 Prozent erhöhen muss, um lediglich eine um 13 Prozent verbesserte Performance zu erzielen. Da nimmt man einfach denselben Mikroprozessor und macht nichts anderes, als die Taktfrequenz zu erhöhen. Man kann Mikroprozessoren natürlich auch auf andere Weise manipulieren, aber wenn man zu einem bestimmten Zeitpunkt einfach die Taktfrequenz erhöht, um den Prozessor zu übertakten, dann steigt der Stromverbrauch überproportional an. Das scheint sich also nicht zu lohnen
Viel interessanter ist die Tatsache, dass Untertakten zu einer Möglichkeit zum Stromsparen wird. Wenn man sich etwa mit einer nur 87-prozentigen Performance zufrieden gäbe, wie hoch wäre dann der Stromverbrauch? Die Antwort lautet: etwa nur halb so hoch! Damit bietet sich eine elegante Lösung an: Man nimmt einfach zwei Prozessoren, die etwa denselben Stromverbrauch haben wie einer, erhält dafür aber eine Performance, die fast 73 Prozent höher ist. Das ist ein pfiffiger Trick: Man nimmt einen Prozessor, verringert dessen Taktfrequenz und erhält mehr Performance, als man erwarten würde. Dann kombiniert man zwei solcher Prozessoren, landet etwa bei demselben Stromverbrauch, erhält aber fast die doppelte Performance, weil man mit zwei Prozessoren arbeitet. Dies ist also ein starker Motivationsfaktor für die Entwicklung von Dual-Core-Prozessoren, Quad-Core-Prozessoren usw. Aber das ist nur einer der Tricks.
Ein weiterer Trick besteht darin, dass wir mit abnehmender Prozessorgröße alle paar Jahre doppelt so viele Prozessoren auf derselben Fläche unterbringen können wie bisher. Das ist neben dem Senken der Taktfrequenz ein weiterer Trick. Wir werden aber nicht einfach die Taktfrequenzen immer weiter senken, sondern uns geht es darum, den Platz für immer mehr Prozessoren zu nutzen, da wir den Stromverbrauch konstant halten können.
Auf einen weiteren Aspekt möchte ich Sie noch hinweisen. Denn wir verstehen jetzt, wie die drei genannten Probleme die Entwicklung von Multi-Core-Prozessoren angeregt haben. Bislang nutzen alle bisherigen Multi-Core-Konzepte Prozessoren, die in etwa heutigen, gängigen Prozessoren entsprechen, und duplizieren diese nur. Es gibt auch Quad-Core-Prozessoren, die ebenfalls ungefähr denselben Stromverbrauch haben wie heutige Prozessoren. Nun, einige Leute fragen uns: Was ist, wenn man einen weniger leistungsfähigen Core nimmt, etwa einen, der zehn Jahre alt ist und viel weniger Platz beansprucht, wäre es nicht viel vorteilhafter, von diesen ganz kleinen Cores viele auf einem Die unterzubringen?
Nun, das stellt sich leider als nicht ganz so einfach heraus, denn für moderne Programme funktioniert das häufig nicht so gut. Daher nimmt man lieber spezielle Cores, die auf dem heutigen Stand der Technik sind. Aber was, wenn man beide Konzepte kombiniert? Wenn man ein paar kleine Cores und ein paar große zusammen einsetzt? Wahrscheinlich sieht so die Zukunft von Multi-Core-Prozessoren aus, wenn auch nicht die unmittelbare Zukunft. Immerhin gibt es schon Quad-Core-Prozessoren auf dem Markt. Ich rechne damit, dass es auch Prozessoren mit acht oder 16 Kernen geben wird. Aber die Idee, Hunderte von Kernen zusammenzufügen, ist natürlich sehr verlockend. Ich glaube nicht, dass wir viele Prozessoren sehen werden, die ausschließlich mit kleinen Cores bestückt sind, aber die Kombination unterschiedlicher Kerne ist interessant. Dies bezeichnet man als heterogenes Computing. Auf dieses Thema werden wir bei anderer Gelegenheit noch zu sprechen kommen, wenn es darum geht, wie man solche Prozessoren programmiert. Denn ich denke, dies ist ein wichtiger Trend, den man im Auge behalten sollte, denn in diese Richtung werden sich Multi-Core-Prozessoren wahrscheinlich entwickeln. Und dann wird man für sie auch programmieren müssen.
