Sven Rautenberg: Vergleich PowerPC vs. x86

Beitrag lesen

Moin!

Außerdem haben die PowerPCs viel niedriger Daten bzgl. Taktfrequenz und Ram, aber sind anscheinend trotzdem schneller, das verstehe ich nicht. Oder ändert sich das vielleicht auch wenn AMD nächgtes Jahr mit dem Opteron rauskommt, also dann auch x86 mit 64 bit?

Taktfrequenz ist nicht alles. Es kommt auch darauf an, wieviele Takte vergehen, bis der Prozessor eine Aufgabe erledigt hat.

Mal angenommen, der x86 benötigt durchschnittlich doppelt soviele Takte, um eine Aufgabe zu erledigen, wie der PowerPC - dann muss der PowerPC-Prozessor nur mit der halben Taktfrequenz laufen, um gleich schnell zu sein.

Da der PowerPC-Prozessor IIRC dem RISC-Ansatz folgt, d.h. er kennt nur wenige, grundlegende Assemblerbefehle, führt diese aber alle in ganz wenigen Prozessortakten aus, ist allein deswegen schon ein technischer Unterschied (und eine Nichtvergleichbarkeit) gegenüber dem x86 gegeben, der dem CISC-Ansatz folgt, was bedeutet, dass er für alle möglichen Fälle einen speziellen Assemblerbefehl kennt - aber wahnsinnig viele Takte benötigt, um einen einzigen Befehl auszuführen.

Um dir einen (wie immer hinkenden) Vergleich zu geben: Der 6510-Prozessor des C64 ist ebenfalls RISC-artig und benötigt zur Ausführung eines Assemblerbefehls längstenfalls 5 Takte, meist aber nur zwei bis drei. Hingegen benötigt der 8086-Prozessor zur Ausführung eines seiner vielen Befehle durchaus 10, 20 oder 30 Takte (sofern ich die entsprechend Tabelle aus einem uralten TurboPascal-Buch noch korrekt erinnere). Allerdings kennt dieser Prozessor zum Beispiel Kopierbefehle, um ein Byte von einem Speicherplatz direkt in einen anderen zu kopieren - der C64-Prozessor muß dazu zwei Befehle ausführen und ein Prozessorregister frei haben (wenn er das nicht hat, kann er das Register auf dem Stack zwischenspeichern, was inkl. Wiederherstellung zwei weitere Befehle kostet - in der Regel ist das Programm aber entsprechend optimiert, so dass sowas nicht nötig ist). Also stehen zwei Befehle mit schlimmstenfalls 10 Takten einem Befehl mit vielleicht 20 Takten gegenüber.

Und nochwas, soweit ich weiß unterstüzuen aktuelle OS(Windows, Linux) und andere Software bisher keine 64-Bit Prozessoren. Und auch der Dualprozessorbetrieb ist ja so eine Sache, das unterstützden ja auch nicht viele Programme. Wie ist das bei Linux, MySQL, Apache, Tomcat, PHP und PERL?

Die eigentlichen Programme müssen Multi-CPU-Betrieb auch gar nicht unterstützen - aber das Betriebssystem muß es tun. Dann gewinnt man in jedem Falle dann, wenn zwei oder mehr Programme gleichzeitig ausgeführt werden, oder zwei voneinander unabhängige Prozessinstanzen ausgeführt werden - die verteilt das Betriebssystem dann nämlich ohne weiteres Zutun auf die vorhandenen Prozessoren.

Man kann auch ein einzelnes Programm durch entsprechende Programmierung dazu bringen, auf zwei Prozessoren gleichzeitig zu laufen. Bei großen Linux-Programmen, die du selbst kompilierst, dürften entsprechende Optimierungen automatisch wirksam werden. Bei Windows-Programmen stehst du wahrscheinlich dumm da und mußt darauf vertrauen, dass der Hersteller entsprechend vorausgeplant hat. In der Regel behindert die Ausrichtung am Multi-CPU-Betrieb den Single-CPU-Betrieb eines Programms nicht nennenswert.

- Sven Rautenberg