Intel Pentium 4 3,06 GHz
mit Hyperthreading |
/Hardware/CPU |
|
|
|
Leistungssteigerung - wie es früher
war
Immer schön der Reihe nach
Das Ziel eines jeden neuen Prozessors ist es
natürlich, ihn zu verbessern. Und in erster Linie steht dabei an, seine Leistung
zu steigern. Bisher geschah dies immer durch Steigerung der Taktfrequenz,
Verbesserung des Zugriffs auf die Daten (Cache) oder durch Optimierung der
eigentlichen Abarbeitung der Befehle im Prozessor. Mit diesen Methoden hat man
auch erreicht, das die Taktfrequenz selbst nichts über die Geschwindigkeit des
Prozessors aussagt. Denn auch die Effizienz, also wie viele Kommandos ein Prozessor
pro Takt abarbeiten kann, lässt sich steigern indem diese teilweise in mehren
Ausführungseinheiten parallel verarbeitet werden. Dies ist jedoch nur bis zu
einem gewissen Maß möglich, da bestimmte Programmteile einfach nacheinander
ausgeführt werden müssen. Diese kleinsten Programmteile werden als "Threads"
bezeichnet.
Die bisherigen Methoden funktionieren zwar
noch, sind aber mit erheblichem Aufwand verbunden der sich vor allem in höheren
Kosten, oder anderen Problemen, wie ständig steigender Leistungsaufnahme und
höheren Temperaturen oder erheblichem Materialaufwand (=mehr
Transistoren = größerer Die) auswirkt.
Da die CPU bei der Arbeitung eines Threads
selten komplett ausgelastet ist, bietet es sich geradezu an hier anzusetzen und
die CPU effektiver zu machen und genau dies hat zu der Idee das Hyper-Threading
geführt.
Zwei arbeiten schneller als Einer
Aus eins mach zwei !
Sicherlich hat jeder von Ihnen schon einmal
von Dual-Prozessor Systemen gehört. In solchen Rechnern arbeiten zwei CPUs
parallel und teilen sich quasi den Rest des Computers, sprich Speicher,
Festplatten etc. Mit dem Pentium III oder dem Athlon MP sind solche Dual-Systeme
möglich und auch halbwegs bezahlbar, im Gegensatz zu den wirklich extrem teuren
XEON Systemen.
Die Vorteile eines solchen Systems sind recht
offensichtlich. Zunächst einmal hat man die theoretische Rechenleistung des
Systems verdoppelt. Dieses Spielchen lässt sich weiter treiben, bis man zu Mulitprozessor-Systemen gelangt, die mehrere hundert CPUs besitzen können.
Leider gibt es dabei ein Problem, die
Prozessoren wollen auch zu 100% ausgenutzt sein. Das zu tun ist insbesondere
eine Frage der Software und des Betriebssystems. Um die maximale Performance zu
erreichen, muss bei einem Dual- oder Multiprozessorsystem die zu erledigende
Arbeit parallelisiert werden. Ein einzelnes Programm muss also so aufgeteilt
werden, dass es auf die verschiedenen CPUs verteilt und dort parallel
abgearbeitet werden kann.
Schon fast antik, aber trotzdem noch gut,
PIII Dual System 2*1GHz
|
Ist dies nicht der Fall und ein Programm
läuft größtenteils linear ab, dann wird in diesem System auch nur weitgehend ein
Prozessor verwendet und die anderen liegen quasi brach. Der Vorteil ist also
gleich Null.
Hat man hingegen ein Programm, bei dem Teile vollständig parallel
und unabhängig voneinander ablaufen, so erhält man nahezu eine Erhöhung der
Leistung, die der Anzahl der Prozessoren entspricht. Paradebeispiele für solche
Anwendungen sind Raytracing Programme, bei denen zum Beispiel der erste
Prozessor jede gerade und der zweite Prozessor jede ungerade Zeile des Bildes
berechnet.
Um das Ganze etwas bildlicher zu beschreiben,
stellen sie sich die beiden Prozessoren einfach als Handwerker vor. Wenn diese
eine Wand mauern sollen, nehmen sich beide einen Haufen Steine (Speicher) und
werden in etwa doppelt so schnell fertig sein, wie ein Arbeiter. Das
Programm "Mauern" ist eben parallelisierbar. Sollen die beiden nun aber ein Seil
flechten, so sieht die Sache schon anders aus. Hier könnte der eine dem andern
höchstens mit "Hilfsarbeiten" zur Hand gehen oder sie könnten sich abwechseln,
viel schneller würde man allerdings dabei nicht werden.
Nun bringen zwei Arbeiter aber trotzdem
Vorteile, auch wenn Sie nicht beide gleichzeitig an einer Aufgabe arbeiten
können. In so einem PC gibt es ja Menge zu tun. Die Arbeiter könnten also zwei
komplett verschiedene Aufgaben übernehmen. Der eine mauert die Wand und der
andere macht sich ans Seil flechten. Auch so hat man die Leistung des gesamten
Systems erhöht.
Und genau so wie es das letzte Beispiel
beschrieben hat, sieht es eigentlich in modernen PCs aus. Viele User haben nicht
mehr nur ein einziges Programm laufen. Sie hören MP3s und schreiben einen Text,
oder sie schauen eine DVD und lassen ihren PC dabei Dateien aus dem Internet
laden. Oder sie komprimieren MP3s und wollen dabei ein cooles Game zocken.
All dies ist nicht so weit hergeholt und auf
einem Multiprozessor-System deutlich besser durchführbar als auf einem
Single-Prozessor-System. Ein Single-Prozessor-System kann zwar auch mehrer
Programme "gleichzeitig" ausführen, aber diese laufen nie parallel ab. Hier wird
die Rechenleistung quasi immer abwechselnd auf die verschiedenen Aufgaben
verteilt, wobei eine Aufgabe ausgeführt und alle anderen so lange angehalten
werden. Unser Arbeiter mauert also quasi 10 Minuten, legt sein Werkzeug hin und
geht 10 Minuten flechten, um dann nach 10 Minuten wieder mauern zu gehen.
Es leuchtet ein, dass diese Vorgehensweise nicht so ideal ist. Es liegt also auf
der Hand das "Zwei" besser als "Einer" sind.
Nächste Seite: Was ist Hyper-Threading
|