4
Die 64-Bit-Technik b Sie überhaupt in der Lage sein werden, ein 64-Bit-Be- triebssystem einzusetzen, hängt primär von Ihrem Prozessor ab. Denn dieser muss 64-Bit-Befeh- le auch verarbeiten können. Noch dazu sind 64 Bit nicht gleich 64 Bit und es gibt unterschiedliche Archi- tekturen. Doch was genau bedeutet es eigentlich, wenn ein Prozessor 64-Bit-kompatibel ist? Am Anfang war das Bit Der Mikroprozessor, wie wir ihn heute kennen, geht auf ein aus IT- Sicht steinaltes Konzept zurück: die vom amerikanischen Mathematiker John von Neumann 1945 konzipier- te Von-Neumann-Architektur. Von Neumann legte damals fest, wie ein elektronisches Rechenwerk theoretisch auszusehen hat. Die drei grundlegenden Funktionsein- heiten eines Von-Neumann-Rech- ners, Mikroprozessor, Speicher und Ein-/Ausgabe, kommunizieren miteinander über Bussysteme. Der Mikroprozessor selbst ist nochmals unterteilt in Steuerwerk und Re- chenwerk. Im in Zellen unterteil- ten Speicher liegen sowohl Daten (z. B. Operanden einer Addition) als auch Befehle (um bei dem Bei- O Nicht nur das Be- triebssystem muss für den 64-Bit-Be- trieb geeignet sein, auch ein entspre- chender 64-Bit- Prozessor wird benötigt. Doch was genau bedeutet das eigentlich und worin unterscheidet sich ein 64- von einem 32-Bit-Prozessor? spiel zu bleiben also der Additions- befehl, mit dem zwei Operanden addiert werden). Die Besonderheit dieses Konzepts war die universelle Verwendbarkeit, die eine einfache Adaption und einen Industriestan- dard erst ermöglichte. Intels 8086, der Namensgeber der x86-Archi- tektur und bis heute Befehlsbasis sämtlicher x86-kompatiblen Pro- zessoren, wurde von Intel auf Ba- sis der Von-Neumann-Architektur entwickelt, von daher ist diese in ihrer Grundform selbst in aktuellen Quadcore-Mikroprozessoren vorzu- finden. Arbeitsweise Ein Mikroprozessor, das eigentliche Rechenwerk der Von-Neumann- Architektur, arbeitet binär, das bedeutet mit zwei Zuständen: An und Aus, in der Informatik mit 1 und 0 betitelt (siehe Extrakasten). Die Berechnungen werden dabei nicht direkt im Speicher durchge- führt; Daten und Befehle müssen zunächst über den Systembus aus dem externen Speicher in prozes- sorinterne Speicherzellen geladen werden. Die Kapazität dieser als Re- gister bezeichneten Speicherzellen bestimmt über die „Bittigkeit“ des Mikroprozessors. Intels 8086 ist ein sogenannter 16-Bit-Prozessor, was nichts anderes bedeutet, als dass die prozessorinternen Register 16 Bit breit sind. Aus dieser Registerbreite ergeben sich folgende Einschrän- kungen einer 16-Bit-Architektur: Es können nur Zahlen bis 2 16 - 1 = 65.535 verarbeitet werden, da die Zählung nicht bei Eins beginnt, sondern bei Null. Zahlen größer als 65.535 müssen auf zwei oder mehr 64-Bit-Technik im Detail Task Switching Damit wird die Fähigkeit eines Mikro- prozessors bezeichnet, den Inhalt der Register schnell auszutauschen, um den fliegenden Wechsel zwischen einzelnen Programmen (Tasks) zu ermöglichen. Segmentierung Bei segmentiertem Speicherzugriff wird die eigentliche Adresse um vier Bit nach links verschoben (was einer Multiplikation mit 16 entspricht) und rechter Hand um ein 4 Bit langes Segment ergänzt. Die Komplexität dieser Segmentierung macht die Programmierung des erweiterten Speichers äußerst aufwendig. Was ist? www.pcgh.de 28 PC Games Hardware | 07/2008 Rubrik Extended

64 Bit Technik

  • Upload
    g3n3tic

  • View
    136

  • Download
    4

Embed Size (px)

Citation preview

Page 1: 64 Bit Technik

Die 64-Bit-Technik

b Sie überhaupt in der Lage sein werden, ein 64-Bit-Be-triebssystem einzusetzen,

hängt primär von Ihrem Prozessor ab. Denn dieser muss 64-Bit-Befeh-le auch verarbeiten können. Noch dazu sind 64 Bit nicht gleich 64 Bit und es gibt unterschiedliche Archi-tekturen. Doch was genau bedeutet es eigentlich, wenn ein Prozessor 64-Bit-kompatibel ist?

Am Anfang war das BitDer Mikroprozessor, wie wir ihn heute kennen, geht auf ein aus IT-Sicht steinaltes Konzept zurück: die vom amerikanischen Mathematiker John von Neumann 1945 konzipier-te Von-Neumann-Architektur. Von Neumann legte damals fest, wie ein elektronisches Rechenwerk theoretisch auszusehen hat. Die drei grundlegenden Funktionsein-heiten eines Von-Neumann-Rech-ners, Mikroprozessor, Speicher und Ein-/Ausgabe, kommunizieren miteinander über Bussysteme. Der Mikroprozessor selbst ist nochmals unterteilt in Steuerwerk und Re-chenwerk. Im in Zellen unterteil-ten Speicher liegen sowohl Daten (z. B. Operanden einer Addition) als auch Befehle (um bei dem Bei-

O

Nicht nur das Be-triebssystem muss für den 64-Bit-Be-trieb geeignet sein, auch ein entspre-chender 64-Bit-Prozessor wird benötigt. Doch was genau bedeutet das eigentlich und worin unterscheidet sich ein 64- von einem 32-Bit-Prozessor?

spiel zu bleiben also der Additions-befehl, mit dem zwei Operanden addiert werden). Die Besonderheit dieses Konzepts war die universelle Verwendbarkeit, die eine einfache Adap tion und einen Industriestan-dard erst ermöglichte. Intels 8086, der Namensgeber der x86-Archi-tektur und bis heute Befehlsbasis sämtlicher x86-kompatiblen Pro-zessoren, wurde von Intel auf Ba-sis der Von-Neumann-Architektur entwickelt, von daher ist diese in

ihrer Grundform selbst in aktuellen Quadcore-Mikroprozessoren vorzu-finden.

ArbeitsweiseEin Mikroprozessor, das eigentliche Rechenwerk der Von-Neumann-Architektur, arbeitet binär, das bedeutet mit zwei Zuständen: An und Aus, in der Informatik mit 1 und 0 betitelt (siehe Extrakasten). Die Berechnungen werden dabei nicht direkt im Speicher durchge-führt; Daten und Befehle müssen zunächst über den Systembus aus dem externen Speicher in prozes-sorinterne Speicherzellen geladen werden. Die Kapazität dieser als Re-gister bezeichneten Speicherzellen bestimmt über die „Bittigkeit“ des Mikroprozessors. Intels 8086 ist ein sogenannter 16-Bit-Prozessor, was nichts anderes bedeutet, als dass die prozessorinternen Register 16 Bit breit sind. Aus dieser Registerbreite ergeben sich folgende Einschrän-kungen einer 16-Bit-Architektur:

Es können nur Zahlen bis 216 - 1 = 65.535 verarbeitet werden, da die Zählung nicht bei Eins beginnt, sondern bei Null. Zahlen größer als 65.535 müssen auf zwei oder mehr

64-Bit-Technik im Detail

■ Task SwitchingDamit wird die Fähigkeit eines Mikro-prozessors bezeichnet, den Inhalt der Register schnell auszutauschen, um den fliegenden Wechsel zwischen einzelnen Programmen (Tasks) zu ermöglichen.

■ SegmentierungBei segmentiertem Speicherzugriff wird die eigentliche Adresse um vier Bit nach links verschoben (was einer Multiplikation mit 16 entspricht) und rechter Hand um ein 4 Bit langes Segment ergänzt. Die Komplexität dieser Segmentierung macht die Programmierung des erweiterten Speichers äußerst aufwendig.

Was ist?

www.pcgh.de 28 PC Games Hardware | 07/2008

Ru

bri

k

Ex

ten

de

d

Page 2: 64 Bit Technik

Register aufgeteilt und in zwei sepa-raten Arbeitsvorgängen verarbeitet werden. Dadurch wird die Leistung des Mikroprozessors aufgrund der zur Aufteilung und Zusammenset-zung nötigen Taktzyklen mehr als halbiert.

Es können maximal 65.536 Spei-cherzellen adressiert werden. Da bei der x86-Architektur die Größe einer Speicherzelle auf 8 Bit festge-legt ist, resultiert dies in gerade mal 64 KiByte linear adressierbarem Speicher. Mittels Segmentierung konnte der Adressbereich auf 220 = 1.048.576 Speicherzellen erweitert werden, was 1.024 KiByte segmen-tiert adressierbarem Speicher ent-spricht.

Der Schritt zu 32 BitDie Erweiterung der Register von 16 auf 32 Bit erfolgte mit dem 80386-Mikroprozessor. Dieser stellt bis heute die Grundlage moder-ner Software dar, da die meisten Anwendungen als sogenannte 32-Bit-Binaries vorliegen. Der linear adressierbare Speicher wurde auf 232 = 4.294.967.296 Speicherzellen à 8 Bit erweitert, was der berühmt-berüchtigten Grenze von 4 GiByte entspricht. Auch die vom 8086 be-kannte Segmentierung wurde über-nommen, was einem segmentiert adressierbaren Speicherbereich von 236 = 64 GiByte gleicht.

Nicht nur die 32 Bit breiten Regis-ter haben den 80386 zur Grund-lage moderner Software gemacht.Auch zusätzliche Features wie „Task Switching“, die Basis eines jeden Multitasking-Betriebssystems, sind dafür verantwortlich, dass selbst der neueste Linux-Kernel und Win-dows Vista x32, von den MMX- und SSE-Erweiterungen abgesehen, rein theoretisch 80386-kompatibel sind.

Intels erste 64-Bit- GehversucheBereits 1994, als im Desktop-Markt noch der 80486 dominierte, begann man bei Intel und Hewlett Packard mit der Arbeit an einer 64-Bit-Archi-tektur, die vier Jahre später in Form des Intel Itanium „Merced“ in Silizi-um gegossen wurde. Die Namens-gebung für die neue Architektur deutete auf Kontinuität hin – IA-64 lautete der offizielle Name in Anleh-nung an die 32-Bit-Architektur IA-32. Der Name täuscht jedoch über die Tatsache hinweg, dass es sich

bei IA-64 zwar um eine Von-Neu-mann-, nicht jedoch um eine x86-kompatible Architektur handelt.

So kann ein Itanium x86-Code pro-blemlos ausführen, allerdings um ein Vielfaches langsamer als ein x86-kompatibler Mikroprozessor. Die IA-64-Architektur basiert auf dem VLIW-Konzept („Very Long In-struction Word“, zu Deutsch: sehr langes Befehlswort) und benötigt daher speziell optimierte Software, um ihr volles Potenzial auszuspielen.

x86-kompatible 64 BitDie Lücke zwischen 64-Bit-Servern und 32-Bit-Desktops schloss AMD 2003 mit der Einführung des K8-Mikroprozessors, zunächst in Form des Opterons. Im Gegensatz zur IA-64-Architektur ist die zunächst als x86-64 bekannt gewordene und nach Durchlaufen der Marketing-abteilung AMDs in AMD64 um-benannte Architektur vollständig x86-kompatibel und steht somit in direkter Linie zum 80386-Mikro-prozessor, der ebenfalls vollständig kompatibel zu seinen 16-Bit-Vorgän-gern war.

Um sowohl 32- als auch 64-Bit-Code gleich schnell ausführen zu können, griff man bei AMD in die Trickkiste und verpasste dem x86-64-Design unterschiedliche Betriebsmodi. Im sogenannten „Legacy Mode“ un-terstützt die Architektur die vom 80386 bekannten Modi „Real“, „Pro-tected“ und „Virtual-8086“. Es stehen die x86-üblichen acht Register mit jeweils 32 Bit Länge zur Verfügung und Operanden und Daten können entweder 16 oder 32 Bit lang sein. In diesem Modus verhält sich ein x86-64-kompatibler Mikroprozes-sor also wie ein ganz normaler x86-kompatibler 32-Bit-Mikroprozessor und ist intern von einem solchen auch nicht zu unterscheiden.

Interessant wird es im 64-Bit-Be-triebsmodus, dem sogenannten „Long Mode“. Hier wird ausschließ-lich der „Protected Mode“ unter-stützt, „Real“ und „Virtual-8086“ nicht. Auch das mit dem 80386 eingeführte „Task Switching“ fällt im „Long Mode“ weg, stattdessen existieren aber natürlich entspre-chende Nachfolgetechnologien (namentlich Register Renaming). Um in diesem Betriebsmodus zu operieren, wird ein 64-Bit-Betriebs-system benötigt, denn ein

Screenshot CPU-Z

Obwohl Mikroprozessoren lediglich mit den zwei Zuständen „Ein“ und „Aus“ rechnen, oder binär dargestellt mit 1 und 0, können sie mithilfe dieser beiden Zustände (oder Bits) sämtliche Dezimal-zahlen darstellen – egal ob positiv, negativ, groß, klein, Gleitkomma oder Integer. Die größte dezimal darstellbare Zahl hängt direkt von der verfügbaren Anzahl der binären Stellen ab. Mit einer binären Stelle lassen sich logischerweise nur zwei Dezimalzahlen darstellen. Mit zwei binären Stellen jedoch bereits 22

Dezimalzahlen, mit drei binären Stellen 23 Dezimalzahlen, und so weiter.

Die Umrechnung ist dabei äußerst simpel. Nehmen wir als Beispiel die binäre Darstellung der 8 Bit langen Zahl 01101010. Da Intel-Prozessoren die sogenannte „Little Endian“-Codierung verwenden (rechts die niederwertigste, links die höchstwertige Stelle), erfolgt die Darstellung von rechts beginnend, wobei jeder Schritt nach links einer Ver-dopplung des Dezimalwertes entspricht:

Zahlenwelt eines Mikroprozessors

Dezimal 128 64 32 16 8 4 2 1

Binär 0 1 1 0 1 0 1 0

Ob Sie ein 64-Bit-System installiert haben, verraten sowohl Windows Vista als auch XP in den Systeminformationen (Rechtsklick auf „Arbeitsplatz“ – „Eigenschaften“).

Vista-Systeminformationen

Die binäre Zahl 01101010 ist also dezimal (0*1) + (1*2) + (0*4) + (1*8) + (0*16) + (1*32) + (1*64) + (0*128) = 2 + 8 + 32 + 64 = 106. Die mit acht Bit maximal darstellbare Dezimalzahl ist somit 28-1 = 255, binär 11111111, die kleinste Dezimalzahl logischerweise 0, binär 00000000. Dies gilt allerdings nur für die vorzeichenlose Darstellung. Wird unterschieden zwischen positiven und negativen Zahlen, so muss ein Bit zur Darstellung des Vorzeichens zweck-entfremdet werden (das höchstwertige Bit, also das Bit ganz links, repräsentiert dabei das Vorzeichen: 1 = +, 0 = –). Die mit acht Bit größte darstellbare positive Dezimalzahl beträgt in diesem Fall also lediglich +(2(8-1) - 1) = 127, binär 11111111, die kleinste dafür jedoch

-(2(8-1) - 1) = -127, binär 0111111. Die Zahlen 00000000 und 10000000 stehen dabei gleichermaßen für dezimal Null, einmal mit positivem und einmal mit negativem Vorzeichen.

Da größere Zahlen in binärer Darstel-lung sehr lang werden, kürzt man diese in der Regel mithilfe des sogenannten hexadezimalen Systems ab. Dieses fasst jeweils vier Bit zu einer Zahl zusammen. Da jedoch die Darstellung von Zahlen größer als 9 nicht mehr mit einer Ziffer möglich ist, hat man zu Buchstaben ge-griffen: 10 = A, 11 = B, …, 15 = F. Die Binärzahl aus unserem obigen Beispiel wäre also in hexadezimaler Darstellung in die zwei Binärpaare 0110 und 1010 aufzuteilen, also hexadezimal 6A.

Ob es sich bei Ihrer CPU um einen 64-Bit-Mikroprozessor handelt, verrät CPU-Z. Wichtig ist in der Zeile „Instructions“ der Wert X86-64 (AMD) oder EM64T (Intel).

www.pcgh.de 07/2008 | PC Games Hardware 29

Hintergrund-wissen

Extended64 Bit

Page 3: 64 Bit Technik

Wechsel zwischen „Legacy Mode“ und „Long Mode“ ist ausschließlich in Kombination mit dem Signal RE-SET# möglich.

Befindet sich der Mikroprozessor einmal im „Long Mode“, so stehen zwei Untermodi zur Verfügung. Der sogenannte „Compatibility Mode“ ermöglicht die direkte Ausführung von 32-Bit-Code. Hierbei kann sei-tens der Software nicht zwischen „Legacy Mode“ und „Compatibility Mode“ unterschieden werden, da in beiden Modi acht Register mit jeweils 32 Bit Länge zur Verfügung stehen und der Mikroprozessor sich wie seine x86-kompatiblen 32-Bit-Kollegen verhält. Einzige Ein-schränkung ist die bereits erwähnte Beschränkung auf den „Protected Mode“, wodurch 16-Bit-Anwendun-gen von der Ausführung ausge-schlossen werden (siehe Tabelle).

64-Bit-ModusVöllig neu ist hingegen der soge-nannte „64 Bit Mode“. Dieser er-fordert nicht nur neu kompilierte Software, sondern stellt dieser auch zusätzliche Funktionen zur Verfügung. So sind die Register natürlich 64 Bit breit, allerdings ist dies die erste x86-kompatible Architektur, bei der Registerbreite und linear adressierbarer Speicher nicht in direktem Zusammenhang stehen: Architekturbedingt be-trägt dieser nämlich lediglich 252 = 4.503.599.627.370.496 Speicherzel-len à 8 Bit, also 4 PiByte (1 PiByte = 1.024 TiByte = 1.048.576 GiByte), virtuell können theoretisch bis zu 264 Speicherzellen adressiert wer-den, also 16 EiByte (1 ExiByte = 1.024 PiByte). Diese Grenzen sind bisher jedoch rein theoretischer Natur – aktuelle K10-Prozessoren können 248 Speicherzellen = 256 TiByte adressieren, Intels Imple-mentierung der x86-64-Architektur macht derzeit bei 240 Speicherzellen = 1 TiByte Halt.

AMD hat den Schritt von x86 auf x86-64 dazu genutzt, die mit dem 80386 eingeführten und für die x86-Kompatibilität maßgeblichen Register zu überarbeiten. So wurden die acht 32 Bit breiten GPR („Gene-ral Purpose Register“, zu Deutsch etwa Universalregister) nicht nur auf 64 Bit erweitert, sondern um acht weitere 64 Bit breite GPR R8 bis R15 erweitert. Auch acht zusätz-liche SSE- und SSE2-Register, XMM8

bis XMM15, stehen zur Verfügung, sodass insgesamt über 16 SSE/SSE2-Register mit jeweils 128 Bit Länge verfügt werden kann. Die Gleitkom-maregister blieben unverändert bei acht Stück mit jeweils 80 Bit Breite.

Umschaltung ohne VerlusteDamit ein x86-64-Mikroprozessor überhaupt erst in den „64 Bit Mode“ schaltet, müssen zwei Bedingungen erfüllt sein. Erstens muss ein 64-Bit-Betriebssystem, wie beispielsweise Vista x64 oder Linux x86_64, gela-den sein und zweitens muss auch die auszuführende Software als so-genannte 64-Bit-Binary vorliegen. Die zweite Bedingung ist direkt abhängig von der ersten – ist also lediglich ein 32-Bit-Betriebssystem installiert, kann keine Software im „64 Bit Mode“ ausgeführt werden. Da jedoch die existierende x86-kompatible Software meist nur als 32-Bit-Binary vorliegt, muss ein x86-64-kompatibler Prozessor meh-rere Millionen Mal pro Sekunde zwischen „64 Bit Mode“ und „Com-patibility Mode“ umschalten.

Damit dies ohne Zeitverlust ge-schieht und der Anwender davon nichts mitbekommt, wird auf soge-nanntes „Register Renaming“ (zu Deutsch Registerumbenennung) zurückgegriffen. Muss ein Mikro-prozessor umschalten, so wird der Inhalt der Register nicht geleert, sondern lediglich anderswo abge-bildet. Statt 8 GPR stehen also bei-spielsweise 128 zur Verfügung, von denen jedoch immer nur Blöcke à 8 (32 Bit) oder 16 GPR (64 Bit) sicht-bar sind. Dadurch kann der Mikro-prozessor innerhalb eines Taktes die Register umbenennen und in den „Compatibility Mode“ schalten, nur um anschließend innerhalb ei-nes Taktes die Umbenennung wie-der rückgängig zu machen und in den „64 Bit Mode“ zurückzukehren.

Doppelte Bitzahl = Dop-pelte Geschwindigkeit?Eine relativ geläufige Fehlannahme betrifft die Geschwindigkeit von 64-Bit-Anwendungen. Denn anders als beispielsweise die Taktfrequenz hat die Breite der Register mit der Geschwindigkeit eines Mikropro-zessors zunächst gar nichts zu tun. Ganz im Gegenteil kann es sogar passieren, dass die 64-Bit-Binary ei-ner Anwendung langsamer läuft als die 32-Bit-Binary. Der Grund hier-

Nach dem Erscheinen des ersten x86-64-Prozessors in Form des AMD Opte-rons war Linux das erste Betriebssystem, welches die neue x86-64-Architektur vollständig unterstützte. Die Linux-Lösung für das Dilemma 32-Bit-Anwen-dungen unter 64-Bit-Betriebssystemen ist der in diesem Artikel beschriebenen Microsoft-Windows-Lösung sehr ähnlich.

Auch unter Linux werden sämtliche Bibliotheken als 32- und 64-Bit-Version mitgeliefert und bei Bedarf doppelt in-stalliert, sodass unter 64-Bit-Linux auch 32-Bit-Anwendungen völlig problemlos ausgeführt werden können. Sowohl bei RPM als auch bei der von Debian und Debian-Derivaten (zum Beispiel Ubuntu oder Knoppix) verwendeten DEB-Paketverwaltung muss auch die 32-Bit-Version der Anwendung als 64-Bit-Paket vorliegen. Da dies bei Paketen von Drittherstellern (bekanntes Beispiel: Skype) oder älteren 32-Bit-Paketen in der Regel jedoch nicht der Fall ist, müssen Sie solche Pakete manuell ins System einpflegen. In beiden Fällen muss dafür die Konsole bemüht und der Paketverwaltung ein entsprechen-der Parameter übergeben werden, der die Installation erzwingt.

Im internen Aufbau unterschei-den sich die Linux-Lösung und WoW64 in einem entschei-denden Detail: Während unter Windows die Pfade für 32-Bit-Bibliotheken und 32-Bit-Anwendun-gen modifiziert wurden (C:\Windows\SysWOW64 und C:\Programme (x86))

und 64-Bit-Programme die bisherigen 32-Bit-Pfade weiterverwenden (C:\Win-dows\System32 und C:\Programme), ist dies bei Linux genau umgekehrt. Die 32-Bit-Bibliotheken liegen wie gehabt unter /usr/lib und /lib, wohingegen die 64-Bit-Bibliotheken in /usr/lib64 und /lib64 abgelegt werden. Der Pfad der ausführbaren Dateien hängt von der verwendeten Linux-Distribution ab – manchmal liegen die Binärdateien in /usr/bin und /usr/bin64, manchmal in /usr/lib/bin und /usr/lib64/bin.

Sie sollten übrigens nie auf die Idee kommen, einer 64-Bit-Installation einen 32-Bit-Kernel unterzujubeln – dies wird in einem nicht mehr startfähigen System resultieren. Falls Sie zu den Anwendern gehören, die ihre Software teilweise selber kompilieren, so können Sie unter 64-Bit-Linux auch sogenannte Crosskompilate erstellen, also 32- statt 64-Bit-Binaries bauen.

Linux 64 Bit

Benötigtes Betriebssystem 64-Bit-Betriebssystem16- o. 32-Bit-Betriebssystem

Neukompilierung der Software erforderlich

Ja Nein Nein

Betriebsmodi ProtectedReal, Protected, Virtual-8086

Adressgröße 64 Bit 32 Bit32 Bit16 Bit

Operandengröße 32 Bit32 Bit16 Bit

Zusätzliche Register Ja Nein NeinBreite der GPR 64 Bit 32 Bit 32 Bit

Abhängig vom Betriebsmodus stellt ein x86-64-Mikroprozessor unterschiedliche Funktionen zur Verfügung oder streicht deren Unterstützung.

Betriebsmodi im Vergleich

Betriebsmodus Legacy ModeLong Mode64 Bit Mode Compatibility

Mode

www.pcgh.de 30 PC Games Hardware | 07/2008

Hintergrund-wissen

Extended64 Bit

Page 4: 64 Bit Technik

für liegt in der deutlich höheren Datenrate einer 64-Bit-Binary, da sämtliche Adressen im doppelt so langen 64-Bit-Code vorliegen müs-sen. Das erhöht den Speicherbedarf zwar nicht um das Doppelte, jedoch trotzdem spürbar. Als Faustregel müssen Sie bei 64-Bit-Programmen mit etwa 10 Prozent höherem Spei-cherverbrauch rechnen.

Es gibt allerdings auch Fälle, in de-nen eine 64-Bit-Anwendung deut-liche Geschwindigkeitsvorteile ge-genüber einer 32-Bit-Anwendung hat. So ist Letztere beispielsweise unter Windows x64 auf maximal 2 GiByte Speicherbedarf beschränkt, mehr kann der Speichermanager von Windows einem einzelnen Prozess nicht zuweisen. Dies lässt sich zwar im „Legacy Mode“ mittels eines Tricks auf 3 GiByte erhöhen, an dieser Stelle ist dann aber defi-nitiv Schluss. Bei der Bearbeitung großer Dateien (Stichwort: Video-bearbeitung) kann es also durchaus passieren, dass ein 64-Bit-System deutliche Geschwindigkeitsvorteile hat. Auch die Verarbeitung von Zah-len größer 232 ist mit einem 64-Bit-System deutlich schneller, sofern dies nicht über die auch im „Legacy Mode“ 128 Bit breiten SSE/SSE2-Re-gister geschieht. Grundsätzlich gilt: Stößt eine Anwendung nicht an die Grenzen der 32-Bit-Architektur, so wird sie aus 64 Bit nicht immer Vor-teile ziehen können.

WoW64: Windows on Windows 64 Bit Wäre ein 64-Bit-Betriebssystem nicht in der Lage, auch 32-Bit-An-wendungen auszuführen, so könn-ten Sie quasi kaum Software unter Windows nutzen. Damit Ihnen dies erspart bleibt, hat Microsoft für 64-Bit-Versionen von Windows ein ei-genes 32-Bit-Subsystem entwickelt: „Windows on Windows 64 Bit“ (in der Regel mit WoW64 abge-kürzt).

Warum ist WoW64 notwendig?Früher, noch lange vor der Einfüh-rung von Windows und dem Kon-zept der gemeinsam verwendeten Bibliotheken, waren Anwendun-gen statisch verlinkt. Das bedeutet, dass eine Anwendung sämtliche benötigten Bibliotheken direkt im Programmverzeichnis mitbrachte. Benötigten mehrere Anwendun-gen allerdings die gleichen Biblio-

theken, so lagen diese mehrfach auf Ihrer Festplatte. Daher wurden die häufigsten Bibliotheken unter Windows gemeinsam genutzt und liegen als DLL-Dateien („Dynamical-ly linked library“, zu Deutsch etwa dynamisch verlinkte Programm-bibliothek) im Verzeichnis Win-dows\System32.

Grundlegende Funktions-weisePrinzipiell handelt es sich bei WoW64 um eine virtuelle 32-Bit-Umgebung, die entsprechenden Applikationen ein natives 32-Bit-Betriebssystem vorgaukelt. Diese besteht dabei aus drei Kernkompo-nenten. Als Erstes ist die Dateisys-temumleitung zu nennen, bei der 32-Bit-Anwendungen die nötigen Bibliotheken im Windows\Sys-WoW64-Verzeichnis wiederfinden. Zusätzlich zeigt der Standard-Pro-grammpfad %ProgramFiles% für 32-Bit-Anwendungen auf C:\Pro-gramme (x86), in C:\Programme befinden sich hingegen sämtliche nativen 64-Bit-Anwendungen des Systems.

Die zweite Komponente besteht aus einer Registry-Umleitung, die Zugriffe von 32-Bit-Applikationen auf andere Bereiche umleitet. Da-bei werden auch Schlüssel aus dem 32-Bit-Teil der Registry automatisch in den 64-Bit-Teil kopiert und um-gekehrt. Besonders wichtig ist hier-bei, dass zur Installation einer 64-Bit-Anwendung ein 64-Bit-Installer benötigt wird und zur Installation einer 32-Bit-Anwendung ein 32-Bit-Installer. Ist dies nicht der Fall, wer-den die Registry-Einträge einer 64-Bit-Anwendung im 32-Bit-Teil der Windows-Registrierung abgelegt und umgekehrt, sind dann aber für die Anwendung anschließend nicht auffindbar.

Der letzte Aspekt betrifft die Spei-cherverwaltung, da 32-Bit-Prozes-sen jeweils maximal 2 GiByte Spei-cher zur Verfügung stehen. Der bekannte Trick, um diesen Bereich auf 3 GiByte zu erweitern, funktio-niert nicht, da für die Speicherzu-weisung von 32-Bit-Prozessen die unteren 4k der 64-Bit-nativen 8k Pages verwendet werden. Benötigt eine Ihrer 32-Bit-Anwendungen mehr als 2 GiByte Speicher, bleibt Ihnen nur der Umstieg auf ein 32-Bit-Betriebssystem. ■

Martin Jungowski

Zusätzlich zu den für x86-kompatible Mikroprozessoren üblichen acht GPR stehen im 64 Bit Mode acht GPR und acht 128 Bit lange SSE/SSE2-Register zur Verfügung.

Das Register einer x86-64-CPU

Die Erweiterung „*32“ zeigt Ihnen im Windows Taskmanager an, dass ein Pro-gramm nur im „32 Bit Compatibility Mode“ läuft.

Taskmanager Vista

Auf der Von-Neumann-Architektur, die auf das Jahr 1945 zurückgeführt werden kann, basieren bis heute alle x86-kompatiblen (aber auch andere) Mikroprozessoren.

Von-Neumann-Architektur

MikroprozessorSteuerwerk Rechenwerk

Bussystem

Ein-/Ausgabe Speicher

www.pcgh.de 07/2008 | PC Games Hardware 31

Hintergrund-wissen

Extended64 Bit