Forum: PC Hard- und Software 32bit / 64bit Architektur


von Kaj (Gast)


Lesenswert?

Welche vorteile bietet eine 64bit Architektur, außer das mehr 
(Arbeits-)speicher verwendet werden kann?

von (prx) A. K. (prx)


Lesenswert?

Neben Einzelfällen, in denen 64 Bit Integerrechung wesentliche Vorteile 
bringt ist eben die Adressierung der massgebliche Vorteil. Sofern man 
innerhalb einer ansonsten gleichen Architektur bleibt.

Bei x64/amd64/x86-64 kommt gegenüber x86 allerdings die erhebliche 
Erweiterung der Architektur durch mehr und uniformere Register sowie die 
PC-relative Datenadressierung hinzu.

> mehr (Arbeits-)speicher

Der Unterschied liegt im durch die Anwendung adressierbaren Speicher. 
Nicht im verbaubaren und vom System nutzbaren realen Speicher.

: Bearbeitet durch User
von U. M. (oeletronika)


Lesenswert?

Hallo,
> Kaj schrieb:
> Welche vorteile bietet eine 64bit Architektur, außer das mehr
> (Arbeits-)speicher verwendet werden kann?
ja nu, die Adressierbarkeit von Speicher ist ja nicht zwingend an die 
Achitektur gebunden. Man kann mit kleinen Kunstgriffen auch an einem 
8Bit-Prozessor viel mehr als 64k adressieren.

Aber der wesentliche Unterschied ist eben der 64Bit breite Datenbus und 
die mind. 64 Bit breiten Register und Verarbeitungsstrukturen in der ALU 
und sonstigen Teilen.
Man kann also mit einem mal 64 Bit aus dem Speicher laden oder 
zurückschreiben.

Ansonsten ist es so, dass die Verarbeitungsbreite mit der Komplexität 
der Architektur gekoppelt ist. Man braucht dafür also viel mehr 
Transitorfunktionen, weshalb man so hoch komplexe Schaltungen sinniger 
weise erst praktisch umsetzen kann, wenn der Integrationsgrad der 
Herstelltechnologie es gestattet.
Neben der Verarbeitungsbreite hat sich zumindest bei PC-Prozessoren eben 
auch die Anzahl hochkomplexer Verarbeitungsfunktionen, die zusätzlich in 
Hardware gegossen werden, deutlich erhöht, einfach deshalb, weil man es 
eben kann.
Gruß Öletronika

von (prx) A. K. (prx)


Lesenswert?

U. M. schrieb:
> Man kann also mit einem mal 64 Bit aus dem Speicher laden oder
> zurückschreiben.

Das kann man bei PC-Prozessoren seit MMX in 64 Bits und seit SSE in 128 
Bits Breite, aus Sicht des Programmierers. Schon bevor die 64-Bit 
Architektur kam.

Intern ist das L1-Cache Interface schon lange für mindestens 64 Bits 
breite Zugriffe ausgelegt, der effizienten Fliesskommaverarbeitung 
wegen.

Jenseits des L1-Caches besteht auch schon lange keinerlei Zusammenhang 
zwischen der Architektur und der Breite tatsächlich stattfindender 
Transfers mehr.

Die obige Frage ist also schon berechtigt. Also wofür man die 64 Bits 
der amd64 Architektur brauchen kann. Blocktransfers konnte man schon 
vorher mit den oben genannten Befehlssätzen optimieren.

Neben davon eher unabhängigen Änderungen im Befehlssatz und den 
Registern beeinflusst amd64 efektiv nur die Breite der Integer-Register, 
der Integer-ALUs und der Adressierung. Jenseits davon änderte sich 
wenig.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

U. M. schrieb:
> Man braucht dafür also viel mehr
> Transitorfunktionen, weshalb man so hoch komplexe Schaltungen sinniger
> weise erst praktisch umsetzen kann, wenn der Integrationsgrad der
> Herstelltechnologie es gestattet.

Das ist zwar im Prinzip richtig. Aber der Zeitpunkt, zu dem man mit 64 
Bit PC-Prozessoren anfing, war schon weit jenseits des Zeitpunkts, zu 
dem man das hätte implementieren können.

Tatsächlich kamen 64-Bit PC-Prozessoren zu dem Zeitpunkt, zu dem sie 
hinsichtlich der Nutzung des Adressraums auf Servern im PC-Markt 
ernsthaft interessant wurden.

Intel hatte selbst kein Interesse daran, x86 auf 64 Bits aufzubohren. 
Intel wollte die Leute allmählich zu IA64 migrieren. Darüber hatten sie 
volle Kontrolle, über den x86 Markt nicht. AMD durchkreuzte diese 
Strategie, mit damals ziemlichem Erfolg, auch im Serverbereich. Intel 
musste nachziehen und AMDs Architektur übernehmen.

In anderen Bereichen waren 64 Bits viel früher dran. MIPS, Alpha, 
PowerPC hatten das alle schon in den 90ern. Deren Märkte konnten damit 
allerdings auch früher etwas anfangen als der PC-Markt, deren typische 
Anwendungen waren wesentlich speicherhungriger.

: Bearbeitet durch User
von uwe (Gast)


Lesenswert?

Und welche Nachteile hat sie?
-32 Bit Software ist deutlich langsammer...
...

von (prx) A. K. (prx)


Lesenswert?

uwe schrieb:
> Und welche Nachteile hat sie?
> -32 Bit Software ist deutlich langsammer...

Aber nur selten wegen der 32 Bits.

von Amateur (Gast)


Lesenswert?

Ich würde mir gut überlegen, ob:
a) Wirklich mehr als 4 GByte adressieren muss
b) Wirklich überwiegend 64 Bit Arithmetik brauche.
c) Mir der "Kostenvorteil" egal ist.
d) Es egal ist, dass meine 2 KByte Routine jetzt 4 KByte belegt.
   Einschließlich der dafür nötigen Übertragungszeit.
e) Ob der Zugriff auf ein Einzelzeichen 8 Byte "Schaufelarbeit" bewirkt.
   Bedingt durch das Alignement des Compilers oft aus 4 Byte 8 Byte
   werden.

von (prx) A. K. (prx)


Lesenswert?

Amateur schrieb:shalb?
> c) Mir der "Kostenvorteil" egal ist.

Welcher?

> d) Es egal ist, dass meine 2 KByte Routine jetzt 4 KByte belegt.

Weshalb sollte sie das?

von (prx) A. K. (prx)


Lesenswert?

Zum Vergleich, cc1 vom avr-gcc 4.7.2:

Gesamtgrösse des Files:
32-Bit: 7283476
64-Bit: 7566760

.text, also der Code:
32-Bit: 0x0053dfe4
64-Bit: 0x00528cdc

.bss, also uninitialisierte statische Daten
32-Bit: 0x0005fc14
64-Bit: 0x00073ba0

.rodata, also Konstanten aller Art:
32-Bit: 0x000c5ba0
64-Bit: 0x00108420

Der 64-Bit Code ist also geringfügig kürzer als der 32-Bit Code. Die 
statisch allozierten Daten sind grob ein Viertel grösser, also auch 
nicht annähernd doppelt so gross.

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

Amateur schrieb:
> Ich würde mir gut überlegen, ob:

...

f) ich Software (32- oder gar 16-Bit) einsetzen will, die unter 64-Bit 
Probleme macht und/oder Geräte benötige, für die es keine 64-Bit-Treiber 
gibt. Ja, das kommt in der Praxis noch oft genug vor.

von (prx) A. K. (prx)


Lesenswert?

Icke ®. schrieb:
> f) ich Software (32- oder gar 16-Bit) einsetzen will, die unter 64-Bit
> Probleme macht und/oder Geräte benötige, für die es keine 64-Bit-Treiber
> gibt. Ja, das kommt in der Praxis noch oft genug vor.

Yep. Kann bei Anwender-PCs eine Rolle spielen. Wobei in meinem 
Business-Umfeld eher steinalte Software-Versionen Ärger machen als 
Treiber. Die paar Inselsysteme mit exotischer Hardware dran bleiben ggf. 
wie sie sind.

Beim Server freilich ist der Weg klar. Die aktuelle Server-Version von 
Microsoft (2012R2) gibts als 32-Bit-Version überhaupt nicht mehr.

: Bearbeitet durch User
von heinz (Gast)


Lesenswert?

Die addressierung des Arbeitsspeichers hängt aber nicht nur von der 
Breite des Befehlssatzes ab.
Siehe Segmentierung bei X86
oder PAE bei Intel 32 Bit

Zu Win 32 vs 64 - ich hab gerade meinen Arbeitsrechner runter auf 32 Bit 
gebracht, weil einiges an Software nicht laufen will.

von U. M. (oeletronika)


Lesenswert?

Hallo,
deine Ausführungen sind schon richtig.
Das zeigt aber eigentlich, dass die Prozessorarchitekturen nicht in 
einem Schritt von 32 auf 64Bit gesprungen sind, sondern eigentlich eher 
fließend, mit ständig zunehmender Breite in verschiedenen Strukturen der 
Architektur.

Und natürlich stimmt auch der Einwand von A.K., dass man die 64 
Bit-Prozessoren schon früher hätte einführen können. Natürlich spielen 
da noch diverse Randbedingungen eine Rolle.
Gruß Ölektronika


> A. K. schrieb:
> Das kann man bei PC-Prozessoren seit MMX in 64 Bits und seit SSE in 128
> Bits Breite, aus Sicht des Programmierers. Schon bevor die 64-Bit
> Architektur kam.
>
> Intern ist das L1-Cache Interface schon lange für mindestens 64 Bits
> breite Zugriffe ausgelegt, der effizienten Fliesskommaverarbeitung
> wegen.
>
> Jenseits des L1-Caches besteht auch schon lange keinerlei Zusammenhang
> zwischen der Architektur und der Breite tatsächlich stattfindender
> Transfers mehr.
>
> Die obige Frage ist also schon berechtigt. Also wofür man die 64 Bits
> der amd64 Architektur brauchen kann. Blocktransfers konnte man schon
> vorher mit den oben genannten Befehlssätzen optimieren.

von Axel S. (a-za-z0-9)


Lesenswert?

U. M. schrieb:
>> Welche vorteile bietet eine 64bit Architektur, außer das mehr
>> (Arbeits-)speicher verwendet werden kann?

> ja nu, die Adressierbarkeit von Speicher ist ja nicht zwingend an die
> Achitektur gebunden. Man kann mit kleinen Kunstgriffen auch an einem
> 8Bit-Prozessor viel mehr als 64k adressieren.

Das ist nicht der Punkt.

Praktisch jede Rechnerarchitektur die man heutzutage für Workstations 
oder Server benutzen will, hat virtuellen Speicher. Also ein 
Adressierungsschema, bei dem streng zwischen logischem und physischem 
Speicher unterschieden wird (die Abbildung macht die MMU). Und 
üblicherweise ist der logische Adreßraum größer. Viel größer. Das gibt 
einem die Flexibilität bei der (logischen) Speicherverwaltung aus dem 
Vollen zu schöpfen.

"Wir brauchen insgesamt 3 Stacks, wissen aber vorher nicht wie groß die 
werden? Kein Problem; wir legen die Stacks einfach bei 1TB, 2TB und 3TB 
Anfangsadresse in den virtuellen Adreßraum. Dann kann jeder Stack bis 
1TB anwachsen, bevor er mit irgendwas kollidiert. Da wir sowieso nicht 
soviel physisches RAM haben, kann das aber nie passieren."

Das "Problem" der x86 Architektur ist nun, daß sie "nur" 4G virtuellen 
Adreßraum hat. Von denen bis zu die Hälfte noch durch die Teilung in 
Anwendungs- und Kernel-Adreßraum verloren geht. Man kann aber 
mittlerweile problemlos mehr als diese 4GB RAM an physischem RAM haben. 
Allerdings kann eine x86 Applikation dann blöderweise nicht mehr als 2GB 
davon nutzen. Das ist das Problem, das die x86_64 Architektur löst.

Daß man dann nebenher noch mehr Register, neue Adressierungsarten, 
bessere SSE-Einheiten usw. dazu kriegt, ist ein Bonus.

Das Gewurstel mit Banking, XMS und EMS tut sich heute keiner mehr an. 
Funktioniert in einer Mutithreaded Umgebung sowieso nicht bzw. ist im 
Fall von EMS auch bloß wieder durch die virtuelle Speicherverwaltung 
limitiert. Nur daß das 4GB Limit zu Zeiten von EMS keinen tangiert hat. 
Man war damals ja schon froh wenn man 16MB RAM hatte.


XL

von (prx) A. K. (prx)


Lesenswert?

Axel Schwenke schrieb:
> 1TB anwachsen, bevor er mit irgendwas kollidiert. Da wir sowieso nicht
> soviel physisches RAM haben, kann das aber nie passieren."

Häng noch ein paar Nullen ran, sonst geht es dir wie Bill Gates mit 
seinen 640KB. In einen 08/15 Intel Server von der Stange passen längst 
mindestens 384GB pro Prozessor-Sockel rein. In einen besseren 8-Sockler 
insgesamt 12TB. ;-)

Und wer sich fragt, wozu man solche 12TB brauchen kann, der kann ja mal 
unter SAP HANA nachschlagen.

: Bearbeitet durch User
von prg (Gast)


Lesenswert?

A. K. (prx) schrieb:

uwe schrieb:
>> Und welche Nachteile hat sie?
>> -32 Bit Software ist deutlich langsammer...

> Aber nur selten wegen der 32 Bits.

Stimmt doch real sowieso nicht. Läuft KiCad auf einem 64-bit Windows 
spürbar schneller als unter 32-bit? Läuft FreeCAD unter 64-bit 
schneller? Welche bekannte Anwendersoftware auf dem PC profitiert denn 
überhaupt von 64-bit? Gibt es eine? Die Nachteile treffen einen im 
Gegensatz dazu viel eher in Form von nicht mehr aktualisierten Treibern, 
deren HW dann nicht mehr läuft -> Tonne. Das permanente Geschrei nach 
immer mehr Speicher fördert zudem den neumodernen Lapsus entsprechend 
immer verschwenderischer mit Ressourcen umzugehen. Der Übergang einst 
von 16-bit zu 32-bit war wenigstens noch ein echter Meilenstein und 
Mehrgewinn - der zu 64-bit dagegen im Vergleich nur noch ein Bachkiesel. 
Der Serverbereich einzig und manche Spezialsoftware mag davon 
profitieren. Gängige Anwendersoftware tut es hingegen kaum bis gar 
nicht. Wenn da was schneller laufen soll, sollte man besser einfach mal 
seine alte HW austauschen und seinen lahmen Einkern- oder 
Zweikernprozessor in Rente schicken. Das bringt dann wenigstens was, 
gleich ab dem ersten Start der liebgewonnenen Programme bzw. schon beim 
Hochfahren des OS.

von Gaestchen (Gast)


Lesenswert?

prg schrieb:
> Welche bekannte Anwendersoftware auf dem PC profitiert denn
> überhaupt von 64-bit? Gibt es eine?

 Ja, jede Menge. Alle die viel Speicher brauchen. Lade mal ein großes 
Bild in z.B. Gimp und arbeite damit. Habe gleichzeitig, wie 
normalerweise üblich noch ein paar andere Programme aktiv. Dann wirst du 
merken wie sehr einen die 3GB ausbremsen weil die meiste Zeit da für 
Ein- und Auslagern draufgeht.

von prg (Gast)


Lesenswert?

Gaestchen (Gast) schrieb:

prg schrieb:
>> Welche bekannte Anwendersoftware auf dem PC profitiert denn
>> überhaupt von 64-bit? Gibt es eine?

> Ja, jede Menge. Alle die viel Speicher brauchen.

Vielleicht unterscheiden wir uns in der Begriffsbestimmung was "viel" 
ist. Die allermeisten Dateien auf dem Rechner sind recht überschaubar in 
ihrer Größe und passen auf handelsübliche Datenträger wie USB-Sticks.

> Lade mal ein großes
> Bild in z.B. Gimp und arbeite damit.

Mache ich ständig mit vielen Bildverarbeitungstools. Keine Probleme. 
Selbst wenn ich mit doch mal gelegentlich mit 1200 dpi scanne geht das. 
Ich wüsste nicht welche ultragroßen Pixelhaufen irgend eine praktische 
Relevanz hätten außer man ist vielleicht Artist. Aber so groß sind deren 
Dateien die man im Netz findet denn auch wieder nicht.

> Habe gleichzeitig, wie
> normalerweise üblich noch ein paar andere Programme aktiv. Dann wirst du
> merken wie sehr einen die 3GB ausbremsen weil die meiste Zeit da für
> Ein- und Auslagern draufgeht.

Nö. Selbst wenn ich ein Dutzend Programme gleichzeitig offen halte und 
der Browser nur so strotzt vor offenen Tabs (einige 100) funktioniert 
das. Was du beschreibst hatte ich mit 2 GB unter Win7 mal, aber nicht 
mehr mit 4 GB. Einzig der FF zickt wenn er in die Nähe von 1 GB kommt 
und schmiert dann schon mal ab. Besonders im Zusammenhang mit im Browser 
geöffneten PDF die hunderte Seiten haben bekommt man das zu spüren. Die 
lade ich dann lieber erst herunter.

Sehe keinen Grund, keine Vorteile zum Wechsel nach 64-bit.

von (prx) A. K. (prx)


Lesenswert?

Wenn du neben anderen Programmen noch ein paar virtuelle Maschinen auf 
dem PC laufen hast, dann wird Speicher sehr nützlich.

: Bearbeitet durch User
von Borislav B. (boris_b)


Lesenswert?

prg schrieb:
> Ich wüsste nicht welche ultragroßen Pixelhaufen irgend eine praktische
> Relevanz hätten außer man ist vielleicht Artist. Aber so groß sind deren
> Dateien die man im Netz findet denn auch wieder nicht.

Ich bin zwar nur ein Hobby-Fotograf, aber meine 16 GB Speicher reize ich 
ganz gut aus. Dazu reicht es schon ein 20-megapixel Foto in Photoshop 
mit vielen Ebenen und Smartfiltern in 16 Bit Farbtiefe zu bearbeiten. 
Und das kommt doch recht häufig vor.

Auch der Zusammenschnitt von Videos (ebenfalls nicht professionell) mit 
Premiere/After Effects frisst beliebig viel RAM. Insbesondere wenn man 
mit aufwändigen Filtern und Effekten arbeitet. Da könnte man selbst 32 
GB RAM noch gut voll bekommen ;-)

Hin und wieder mache ich dann auch mal 3D Animationen mit Blender. Deren 
Bearbeitung schluckt ebenfalls massig Speicher.

Und wenn ich dann Abends mal eine Runde SupremeCommander mit Freunden 
zocke (8 Spieler schicken jeweils bis zu 1000 Einheiten über das 
Schlachtfeld), bin ich auch froh über jedes GB RAM, das ich habe :-)

Du siehst also, auch in Privathaushalten kann man >= 16 GB RAM gut 
gebrauchen...

von heinz (Gast)


Lesenswert?

Wobei die Adressbreite ja eben nix mit der Bitbreite (32/64Bit) zu tun 
hat.
Integer ist seit 386 32 Bit breit - wieviel Software braucht 64 Bit 
Integer?
Float ist intern 80 Bit breit - bei 64 Bit immer noch (?)

Wieso sollte Software schneller werden?

Weil mehr auf SSE usw. gesetzt wird, was aber wiederum nichts mit 32/64 
Bit zu tun hat

von (prx) A. K. (prx)


Lesenswert?

heinz schrieb:
> Wobei die Adressbreite ja eben nix mit der Bitbreite (32/64Bit) zu tun
> hat.

Der Umfang möglichen physikalischen Speichers nicht. Sehr wohl aber die 
Adressbreite der einzelnen Programme. Und genau darum geht es.

Der Adressraum eines 32-Bit Windows Programms ist auf 2GB begrenzt. 
Aufgrund diverser Löcher darin setzt sich dies in kaum mehr als 1GB von 
diesem Programm konkret nutzbaren physikalischen Speichers um. Ein 
32-Bit Programm kann also i.d.R. nicht mehr als 1GB physikalischen 
Speichers direkt nutzen, egal wieviel im Rechner steckt. Programme mit 
grossem Speicherbedarf spüren das.

Dazu kommt, dass 32-Bit Windows in der Client-Version effektiv auf 
3-3,5GB physikalischen Speichers begrenzt, egal wieviel im Rechner 
steckt. Das ist eher eine künstliche als eine natürliche Begrenzung 
(erspart Microsoft Ärger mit doofen Treibern), denn der 32-Bit Windows 
Kern kann eigentlich mehr, wie die Server zeigen. Es begrenzt Systeme 
sehr spürbar, auf denen mehrere Programme mit grossem Speicherbedarf 
laufen, wie etwa virtuelle Maschinen.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Axel Schwenke schrieb:
> Daß man dann nebenher noch mehr Register, neue Adressierungsarten,
> bessere SSE-Einheiten usw. dazu kriegt, ist ein Bonus.

Wobei es genau dieser Bonus ist, der 64-Bit Versionen bestehender 
Programme auch dann etwas beschleunigen kann, wenn sie mit 2GB 
Adressraum locker auskommen.

von (prx) A. K. (prx)


Lesenswert?

heinz schrieb:
> Float ist intern 80 Bit breit - bei 64 Bit immer noch (?)

Nicht mehr, weil Compiler im den 32-Bit Programmiermodellen für 
normale Fliesskommaverarbeitung klassischen x87 Code verwenden ...

> Wieso sollte Software schneller werden?

... in den 64-Bit Programmiermodellen aber den auch skalar effizienteren 
SSE-Code, der intern mit 32/64 Bits arbeitet.

Wenn Compiler überhaupt noch 80-Bit "long double" unterstützen, dann 
geht es ziemlich bös ums Eck, weil die per x87 verarbeitet werden, 
float/double Rechnungen aber per SSE.

: Bearbeitet durch User
von heinz (Gast)


Lesenswert?

>Nicht mehr, weil Compiler im den 32-Bit Programmiermodellen für
>normale Fliesskommaverarbeitung klassischen x87 Code verwenden ...

selbst wenn Du ein 32 Bit Float in die FPU lädst wurde (wird?) das 
intern als 80 Bit dargestellt.

Ja, wenn der Compiler SSE usw. verwendet - dann wird die Software 
"schneller"
das war aber unter 32 Bit auch so.

von (prx) A. K. (prx)


Lesenswert?

heinz schrieb:
> selbst wenn Du ein 32 Bit Float in die FPU lädst wurde (wird?) das
> intern als 80 Bit dargestellt.

Nur bei x87.

> das war aber unter 32 Bit auch so.

Im 32-Bit ABI werden Return-Werte eines Fliesskommatyps im x87 
Register-Stack übergeben.

Im 64-Bit ABI werden Parameter und Return-Werte von 32/64-Bit 
Fliesskommatypen in SSE Registern übergeben.

Ein Compiler wird - mindestens per default - für
   double a, b, c;
   a = b + c;
im 32-Bit Programmiermodell x87-Code erzeugen, im 64-Bit 
Programmiermodell aber SSE-Code. Normaler portabler Code, der 
Fliesskommarechnung verwendet, wird also als 64-Bit Programm automatisch 
in SSE-Code übersetzt. Mit expliziter Programmierung für SSE-Befehle hat 
das nichts zu tun.

Ursprünglich hatte Microsoft sogar fälschlich geschrieben, dass der x87 
Kontext beim Task Switch nicht erhalten bliebe.

: Bearbeitet durch User
von heinz (Gast)


Lesenswert?

Das stimmt alles was Du sagst. Aber das ist ist alles nur Abhängig von 
der Implementierung und nicht von der Bitbreite des Prozessors.

Ich hab vor zig Jahren einen 4-fach PID auf MMX geschrieben. Was war 
wohl schneller? Ausgerollter FPU Code oder MMX

Ich will eigentlich nur sagen, dass eine Verbreiterung der Register 
nicht automatisch "schneller" heist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.