[linux-l] Performancegewinn bei Nutzung von Debian AMD64

Volker Grabsch vog at notjusthosting.com
Di Feb 28 10:36:39 CET 2006


On Tue, Feb 28, 2006 at 09:34:30AM +0100, Kai Kuehne wrote:
> > Schneller laufen 64 Bit Programme auch nicht, sie können nur mehr Speicher
> > nutzen.
> 
> Ich versteh wohl zu wenig von Architekturen, CPUs, usw. Wenn es nicht
> schneller ist, wozu gibts ein AMD64? ;-)

Da ich "damals" aus Assembler-Sicher den Umstieg vom 80286 zum 80386
mitbekommen habe (16bit -> 32bit), kann ich ja mal kurz versuchen, das
zu erläutern.

Dass man mehr Speicher nutzen kann, ist eher ein Nebeneffekt. Es geht
viel mehr darum, wieviele Daten mit einem Schlag verarbeitet werden
können. Die 32bit-Intel-Architekturen können zum Beispiel nur 32bit-
Integer addieren. Oder kopieren. Und sie können nur 64bit-Integer durch
32-bit-Integer dividieren. Bei 64bit-Architekturen ist es jeweils
doppelt so viel.

Diese Bit-Angabe bezieht sich in erster Linie auf die größe der
Prozessor-Register, aber auch um die "Breite" der Datenleitungen,
die vom Prozessor wegführen, z.B. in den RAM.

Ich probier's mal mit zwei dummen Beispielen, Fachkundige mögen mich
bitte korrigieren:

1) Addition

Wenn ein Programm nur 15+302 ausrechnen will, ist es egal, ob die
15 und die 302 nun in 32bit oder 64bit Registern untergebracht sind.
Die Addition ist auf beiden Systemen gleich schnell.

Wenn ein Programm jedoch sehr, sehr große Zahlen addieren muss, die
wirklich 64bit brauchen, so mussten diese bisher auf 32bit-Register
aufgeteilt werden, d.h. man brauchte 2 Additionen: Für die unteren
32bit und die oberen, und den Übertrag beachten, aber das macht der
Prozessor schon für einen (siehe Carry-Flag).

Das heißt, für sehr datenintensive Berechnungen kann man sich ca.
die Hälfte der Rechenbefehle sparen, weil man eben großere Datenblöcke
(64bit statt 32bit) mit einem Mal verarbeiten kann.

-------------

2) Kopieren

Wenn ein Programm 1 Bit in irgeneiner Hardware setzen muss, ist
die Architektur relativ wurst.

Muss es hingegen z.B. 128bit nach draußen jagen, braucht es nicht
mehr 4 Schreib/Kopier-Befehle, sondern nur noch 2. Bei größeren
Datenströmen spart man wieder ca. die Hälfte der Befehle.

(da dies jedoch i.d.R. Schleifen im Programm betrifft, verkürzt
das nicht den Maschinencode, sondern eben nur die Ausführungszeit)

-------------

Es ist also wie bei der MHz-Angabe zur CPU-Geschwindigkeit und
der RAM-Größe: Gewisse Unterprogramme profitieren davon, aber für
große Teile des Programmes macht es keinen Unterschied. Und die
Programmteile, die davon profitieren *können*, werden nur dann
profitieren, wenn sie entsprechend abgeändert werden. Dies kann
z.T. von intelligenten Compilern erledigt werden, für Optimierungen
benötigt man etwas Grips vom Programmierer.

Genausowenig, wie doppelte CPU-Geschwindigkeit oder doppelter RAM
zu einem doppelt so schnellen System führt, führen die 64bit-
Architekturen zu doppelt zu schnellen Systemen. In allen drei
Fällen werden gewisse Abläufe optimiert und schneller, das gesamte
System fühlt sich "flüssiger" an, aber pauschal kann man keinesfalls
sagen, der Rechner würde nun doppelt so schnell arbeiten, oder es
gäbe gar keinen Unterschied.

> Naja, drauf laufen soll Apache, Tomcat(leider), NFS, Samba, CUPS usw.

Was hast du gegen Tomcat?


Viele Grüße,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l