Frage

Ich bin mir nicht sicher, ob ich es richtig verstehen: Hat ein 64-Bit-OS / kompiliert Code schneller als ein 32-Bit-Betriebssystem auf dem gleiche System

?

Wir sind mit 64-Bit-Betriebssystemen, wo ich bin, und es scheint nur Kompatibilitätsprobleme mit älteren und proprietärer Software zu führen. (Wir laufen Ubuntu 9.04 Jaunty amd64)

War es hilfreich?

Lösung

werde ich diese Antwort auf x86-32 (IA-32) beschränken vs x86-64 (AMD64), wie ich glaube, dass die Frage ist Sie eigentlich fragen.

Auf der Prozessorebene, gibt es ein paar Vorteile. Erste und offensichtlichste ist die Erweiterung der Pro-Prozess virtuellen Speicher zu einem viel breiteren Bereich von 48 Bits. (64 in der Architektur erlaubt, aber nicht erforderlich, wenn der Speicher dient.), Die Anwendungen ermöglicht viel mehr von dem Speicher des Systems zur Verfügung, sie zu nutzen, sowie die Öffnung für die Dinge viel Platz wie Memory-Dateien zugeordnet, die auf bedienen virtuelle Speicher, der auf reale Speicher nicht verbunden ist. Es öffnet auch viel Platz für das Betriebssystem in Frage bis zu arbeiten, da es nicht Ihre 4-GB-Grenze hat für seine Daten zu teilen. Kurz gesagt, Anwendungen und das Betriebssystem kann eine bessere Nutzung Ihrer Maschine der Ressourcen machen.

Darüber hinaus befasst sich die AMD64-Architektur eines der größten Probleme der IA-32, die das völlige Fehlen von Registern ist. In der Tat verdoppelt sie die verfügbaren Register, das ist ein großer Gewinn für einige Arten von Code. (Eigentlich ist es ein Gewinn für fast jeden Code, aber einige Anwendungen leiden unter den erhöhten Speicherkosten von 64 Bit und es ausgleicht.)

Auf der Windows-Seite hat MS als Chance genommen eine ganze Reihe von historischen compability Problemen zu brechen. Es ist kein klarer Bruch von der alten Welt, aber es ist ein Anfang. Ich glaube nicht, Linux unter den gleichen Problemen leidet, mit zu beginnen, und ich habe nicht viel Perspektive auf ihren 64-Bit-Vorteile zu bieten.

Andere Tipps

Als allgemeine Regel gilt, die Entwicklung - oder mit - einem 64-Bit-Betriebssystem in jedem Kontext wird, sein langsamer als das gleiche 32-Bit-Betriebssystem. Da alle Zeiger plötzlich doppelt so groß sind, sind Sie viel wahrscheinlicher, um den Cache zu blasen, und weniger Daten im RAM passen. Das verlangsamt die Anwendung erheblich. Sie würden normalerweise nur 64-Bit-Systeme verwenden, wenn Ihre Anwendungen mehr als 2 bis 3 GB Daten adressieren müssen gleichzeitig - etwas sehr häufig in wissenschaftlichem Rechnen und einige Datenbank Situationen, aber sonst äußerst selten. Dies ist, warum Apple nicht bedingungslos nicht befürworten Kompilieren PowerPC-Anwendungen im 64-Bit-Modus, zum Beispiel: die Kosten aufgrund Cache-Misses und der Mangel an Speicher sind so hoch, dass nur 64-Bit geht Sinn macht, wenn man wirklich die Vorteile der nehmen kann 64-Bit-Raum.

Aber x86 v. AMD64, das ist, was Sie fragen über wirklich (da Sie Ubuntu verfügbar sind oder), ist ein ganz besonderes Tier. AMD64 erstreckt sich nicht nur alle Zeiger auf 64-Bit; es behebt viele, viele Mängel in der x86-Architektur, die Anzahl der GPRs verdoppelt, die Anweisungen zu vereinfachen, um modernes CPU-Design freundlicher zu sein und mehr. Aus diesem Grunde, auf AMD64-Plattformen nur , werden Sie häufig eine erhebliche Leistungssteigerung sehen von bis zu 64-Bit-gehen.

Es gibt einen anderen Bereich, in dem in der Software-Entwicklung, es sinnvoll, 64-Bit gehen macht: Sie müssen viele VMs laufen. ein paar VMs können Sie leicht blasen vorbei an der 3-GB-Speicherbarriere des Betriebssystems, so dass sie sehr schmerzhaft werden. (Es wird funktionieren aufgrund einer Technologie PAE genannt, oder Paged Addressing Extensions, dass Intel die Lücke zwischen 32-Bit-Systemen und 64-Bit-Systemen zu überbrücken erfunden, aber das Ergebnis ist langsam, schmerzhaft mit als Entwickler zu arbeiten, und nicht Geht sehr gut unter Windows unterstützt.) zu einem 64-Bit-Betriebssystem kann enorme Vorteile bieten.

(wie die Kommentatoren beachten Sie, diese Antwort ist etwas generisch, einige dieser Punkte gelten nicht für Intel / AMD-Chips.)

Die Antwort ist: es ändert sich, für ein paar Gründe:

  • Bei größeren Breiten Anweisungen, wirst du mehr Ausdruckskraft (entweder eine größere Vielfalt von Anweisungen oder eine größere Kapazität zu codieren Daten in diese Anweisungen direkt) erhalten, die eine reduzierte Anzahl von Anweisungen bedeuten kann, fließen durch die Maschine, die in der Regel ein Gewinn ist. so ++ 64bit hier

  • Aber manchmal größer Anweisungen Macht mehr Zyklen dauern zu dekodieren und auszuführen, weil sie komplexer sein kann. So eine mögliche --64bit hier.

  • Außerdem müssen Sie diese Anweisungen zu und von der CPU übertragen: 64-Bit-Befehle als 32-Bit-Befehle doppelt so groß sind, die mehr Verkehr zum und vom Speicher und Caches bedeutet. CPUs sind viele dieser Kosten zu verbessern strukturiert, aber es ist eine leichte --64bit hier.

  • Weitere Register sind in der Regel in größeren Befehlssätzen zur Verfügung, die weniger Datenverkehr zum und vom Stapel verursacht und oder Speicher. So ++ 64bit hier.

  • Und wie jeder ist ohne Zweifel erwähnen würde, haben Sie die Möglichkeit, mehr Speicher zu adressieren.

  • (fast vergaß diesen) die native „long“ oder „int“ Größe kann nach oben, je nach Architektur, Datenstrukturen auf dieser Basis Bedeutung größer werden. Größere = mehr Speicher zu bewegen, die auf Dateneinlese- mehr möglich bedeuten warten: --64bit wenn Sie nicht vorsichtig

  • .

Je nach Architektur, viele andere Bedenken kann auch gelten. Sie können sicher sein, dass der Prozessor und Compiler-Anbieter ihren Hintern arbeiten aus dem reduzieren „-“ s. Oben und die „++“ s erhöhen

Ich habe diese 5GByte Datenbank, die Umwandlung benötigt. Auf einem 64-Bit-System, ich habe nur alle Daten in einer Sammlung. In dem 32-Bit-System, hatte ich über die Reihenfolge zu denken, in dem laden und zu konvertieren. Das Problem wird zur Laufzeit nicht, ist es Engineering-Zeit. Die Umstellung auf 64-Bit speichert Wochen Entwicklungszeit.

Die Kompatibilitätsprobleme: das ist kein Fehler, das ist ein Feature. Es zeigt Ihnen die saubere Software geschrieben hat.

Es gibt auch einige Sicherheitsvorteile zu 64-Bit-Betriebssystemen. Es wird einige Pufferüberläufe-Exploits gewesen, die Adressraum-Layout Randomisierung mit brutalen Gewalt umgehen. Auf einem 64-Bit-Betriebssystem gibt es einfach zu viele Adressen für diese Art von Angriff erfolgreich zu sein.

Es wird beschleunigen Kompilierung, wenn Ihr Kompilierung Speichergebunden ist und Sie Ihre 64-Bit-OS die Menge an Speicher nutzbar von Ihrem System zu erhöhen.

ich erwarte, dass es etwas langsamer sein, hatte ich diese Erfahrung mit FC10. Ich habe keine wirklichen Gründe, aber es ist definitiv nicht der sizeof (Zeiger) Thema. (*)

Meine Vermutung ist, dass es einfach eine Frage von weniger optimierten Treibern oder gezwickt Chipsatz ist.

Auch NTFS-3G war lustig unter 64-Bit, während es unter 32-bit (gleiche Distro, gleiche Kernel derselben Partition, es ist einfach "aufgehängt" unter bestimmten Umständen) gearbeitet

(*) die meisten Compilierung ist Scheibe gebunden ist, nicht die CPU gebunden. Darüber hinaus gibt es weitere Verbesserungen in der x86_64-Architektur, die zunichte macht diese Tatsache (besser PIC, mehr regs, SSE2 standardmäßig auf 686 cmov Standard-on). Es sei denn, Ihre Anwendung tut nichts als zufällig kleine Blöcke aufgeteilt, um zu bewegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top