Um jetzt ein für alle mal mit den Fragen hier klarheit zu schaffen eine ausführliche erklärung:
Um das ganze zu verstehen, muss man im grunde verstehen, wie ein prozessor funktioniert. Und zwar:
Jeder kern eines Prozessoren, hat verschiedene register. Register sind kleine speicherblöcke. In diesen werden Zahlen gespeichert. Es gibt verschiedene:
den Akkumulator, welcher für Arrethmetische Operationen gebraucht wird, Das Basisregister. Dies hat keine festgelegte Funktionin, wird aber oft als "Erweiterung" anderer genutzt, wenn mehr speicher gebraucht wird. dazu später mehr.
Das Count Register, welches, wie der Name schon sagt zum Zählen benutzt wird.
Dann noch das Datenregister. Das ist eher ein allgemeiner speicher. Kann man in etwa mit dem Basis Register vergleichen.
Das waren die wichtigsten. Dann kommen noch 2 Pointer , 2 Index und 4 Segment Register.
Diese Register sind alle, auf 32bit maschinen, 32bit, also 4byte groß, auf 64bit maschienen 64bit, also 8bytes groß.
Jetzt erkläre ich, warum es zu einer Arbeitsspeicherbegrenzung kommt.
Wenn ein Programmierer etwas aus dem Arbeitsspeicher laden will, muss er dem prozessor sagen, wo diese daten im speicher stehen. Dazu schreibt er die Addresse in eines der register, und sagt dem prozessor, wohin er laden soll. Nun können die Zahlen in den registern nicht unendlich groß sein. Hier mal eine Kurze rechnung, wo das limit ist:
32bit=> maximale größe ist 2^32-1 also 4294967295
64bit=> maximale größe ist 2^64-1 also 18446744073709551615
Wenn man diese angaben in Gigabyte umrechnet, merkt man dass die grenze bei 32bit bei 4GB liegt. Da andere Geräte, wie zB Grafikkarte, soundkarte, usb....... auchnoch so angesprochen werden müssen, liegt die tatsächliche größe darunter. etwa bei 3,2GB. Bei 64bit Systemen liegt diese Grenze weit über dem vorstellbaren. nämlich bei
1.7179869183999999999068677425384521484375*10^10GB
Da ist die Grenze noch lange nicht erreicht.
Was ist an dem Vorurteil dran, dass 64bit Prozessoren unter einem 32bit betriebssystem langsamer sind dran?
Im Grunde nichts. Dabei rechnet Der prozessor nur mit der hälfte der register. Langsamer wird er dadurch nicht, aber er benutzt halt nicht alles.
Sind 64bit Programme schneller als 32bit Programme?
da kommt es ganz auf das Programm an, und wie weit es für eine 64bit umgebung optimiert ist, und wie viel es von den größeren registern nutzen kann. Wenn der Rechner mit dem Datentyp int64 rechnen will, dass ist eine zahl, die 64bit speicher benötigt, so kann dass ein 64bit Prozessor mit einem register lösen, da sie vollständig hinein passt. Der 32bit Prozessor aber, muss einen umweg nehmen. Und zwar schreibt er die hälfte der zahl in den Akkumulator, welcher für rechenaufgaben zuständig ist, und die andere hälfte in ein anderes. zB das Basisregister.Das ist natürlich aufwändiger. Das selbe passiert mit dem typ double(eine fließkommazahl mit doppelter genauigkeit, auch 64bit groß). die Frage ist nur, ob ein Programm diese typen benutzt. Wenn nicht, profitiert es durch die 64bit nicht.
Warum verbraucht ein 64bit Betirebssystem mehr speicher(festplatte) als ein 32bit system?
Da 64bit code mit 32bit code nicht kompatible ist, muss windows seine systemdlls 2mal ausliefern. einmal 64bittig, und einmal als 32bit. Sonst würden 32bit programme nicht unter win64 laufen. Microsoft nennt das ganze WOW64(nicht das pc-game. Das bedeutet Windows on Windows64). Außerdem liegen beim 64bit windows manche programme sowohl als 64bit, als auch 32bit dabei. zB der internet explorer. Dieser liegt aus kompabilitätsgründen mit einigen Add-Ons bei.
Was gibt es sonst noch zu beachten?
Da 32bit treiber nicht zu einem 64bit betirebssystem kompatiblel sind, müssen dafür spieziell für das 64bit windows welche angeschafft werden.
Da sowohl 64, als auch 32bit dlls im arbeitsspeicher liegen müssen(Kompabilität) verbraucht das 64bit windows auch mehr arbeitsspeicher. damit sollte man nicht geizen.
So das wars erstmal zur erklärung. Nun zur letzten Frage die ihr euch vieleicht stellt. Warum schreib ich das ganze hier?
Weil mir die ständigen Fragen auf den Keks gehen. Hoffe mal das war ausführlich genug und ich habe nicht zu weit ausgeholt :-D