x86 und ARM: Befehlssätze, Leistung, Stromverbrauch und Kompatibilität
x86 und ARM sind Prozessorarchitekturfamilien mit unterschiedlichen Befehlssätzen. Dieser Unterschied wirkt sich direkt auf die Softwarekompatibilität aus, aber Leistung und Energieverbrauch hängen vom tatsächlichen CPU-Design und der Arbeitslast ab. Zu verstehen, was eine Architektur spezifiziert, hilft auch bei der Wahl zwischen x64- und ARM64-Downloads.
Was ist eine CPU-Architektur? Die Grundlagen von x86 und ARM
Eine CPU (Central Processing Unit, zentrale Verarbeitungseinheit) ist die Komponente, die die Anweisungen eines Programms ausführt. Beim Öffnen einer Datei, beim Addieren von Zahlen und beim Berechnen der Bildschirmausgabe führt die CPU Anweisungen nach festgelegten Regeln aus. Die CPU-Architektur beschreibt diesen Designrahmen, aber es ist nützlich, die für die Software sichtbaren Regeln von der Hardware, die sie implementiert, zu unterscheiden.
Befehlssatzarchitektur versus Mikroarchitektur
Eine Befehlssatzarchitektur (ISA) ist ein Vertrag zwischen Software und dem Prozessor. Sie definiert unterstützte Berechnungen und Datenbewegungen, wie Anweisungen als Bits codiert werden und wie Register verwendet werden. Register sind kleine Speicherorte innerhalb der CPU, die Werte enthalten, mit denen der Prozessor direkt arbeiten kann.
Mikroarchitektur ist die Art und Weise, wie ein bestimmter Prozessor diesen Vertrag in der Hardware umsetzt. Sie umfasst, wie viele Anweisungen er gleichzeitig bearbeiten kann, wie er Operationen plant und wie er Caches anordnet, die häufig verwendete Daten in der Nähe des Prozessors halten. Die Erklärung von ARM zur ISA unterscheidet die unterstützten Operationen von ihrer Hardware-Implementierung.
Man kann sich die ISA als gemeinsame Sprache vorstellen, um in einer Küche Befehle zu geben, und die Mikroarchitektur als das Küchenpersonal, die Arbeitsflächen und die Organisation der Küche. Zwei Küchen können denselben Befehl verstehen, ihn aber mit unterschiedlicher Geschwindigkeit ausführen. Ebenso können zwei x86-64-CPUs unterschiedlich arbeiten, und ARM-CPUs teilen nicht alle ein einheitliches internes Design.
Wie x86, x86-64, ARM und ARM64 zueinander stehen
x86 und ARM beschreiben jeweils eine Familie, die mehrere Generationen und Erweiterungen enthält. Die auf PC-Downloadseiten häufig gesehenen Bezeichnungen x64 und ARM64 kennzeichnen 64-Bit-Umgebungen innerhalb dieser Familien. Wenn jedoch auf einer Downloadseite x86 neben x64 aufgeführt ist, bedeutet x86 normalerweise die 32-Bit-Version.
| Bezeichnung | Bedeutung und Hinweis |
|---|---|
| x86 | Die von Intels 8086 abgeleitete Befehlssatzfamilie. Als Installationsbezeichnung bedeutet es normalerweise 32-Bit-x86. |
| x86-64, x64, AMD64 | Namen, die für die 64-Bit-Erweiterung von x86 verwendet werden. Ein AMD64-Download kann auch auf einer Intel-CPU laufen, die die erforderliche Umgebung unterstützt. |
| ARM | Eine von Arm definierte Architektur-Familie. Sie umfasst 32-Bit- und 64-Bit-Konfigurationen, sodass der Name allein die Bit-Breite nicht angibt. |
| AArch64, ARM64 | AArch64 ist der 64-Bit-Ausführungszustand von Arm; ARM64 ist ein weit verbreitetes Software-Vertriebslabel für diese Umgebung. Sein Befehlssatz wird A64 genannt. |
Die FreeBSD amd64 Plattformbeschreibung fasst ebenfalls AMD64 und Intel 64 unter den Namen x86-64 oder x64 zusammen. Hier bezieht sich 64-Bit auf die allgemeinen Ganzzahlregister und die Ausführungsumgebung, nicht darauf, dass jede Anweisung 64 Bit lang sein muss. A64-Anweisungen verwenden 32-Bit-Codierungen, wie im A64 ISA-Handbuch von Arm beschrieben. 64-Bit zu sein, macht nicht alle Prozessoren gleichermaßen schnell oder gibt ihnen identische unterstützte Speicherkapazitäten.
Wie unterscheiden sich die x86- und ARM-Befehlsstrukturen?
Die Unterscheidung ist mehr als nur der Name eines Herstellers. Selbst bei der Anforderung derselben Addition oder Datenbewegung unterscheiden sich die Befehlscodierungen und Registerregeln. CISC und RISC sind gebräuchliche Begriffe, die verwendet werden, um die Designansätze hinter diesen Familien zu beschreiben.
Was CISC und RISC bedeuten
CISC, oder Complex Instruction Set Computer, beschreibt einen Ansatz, der auch Befehle bereitstellt, die komplexe Operationen ausführen können. x86 wird als CISC klassifiziert: seine Befehle haben variable Längen, und einige Rechenbefehle können einen Wert im Speicher als Operand verwenden. Ein Operand ist ein Wert, auf dem eine Operation wirkt.
RISC, oder Reduced Instruction Set Computer, legt den Schwerpunkt auf relativ regelmäßige Anweisungen und Berechnungen unter Verwendung von Registern. ARM gehört zu dieser Kategorie. Für gewöhnliche A64-Ganzzahlarithmetik ist ein nützliches Modell, einen Wert aus dem Speicher in ein Register zu laden, mit Registerwerten zu berechnen und das Ergebnis wieder in den Speicher zu speichern. Diese grundlegende Organisation wird als Load/Store-Architektur bezeichnet.
Beispielsweise kann das Addieren von eins zu einer im Speicher gespeicherten Zahl mit einer x86-Anweisung ausgedrückt werden, die einen Speicheroperanden akzeptiert. Die entsprechende A64-Operation kann als eine Kombination aus Lade-, Additions- und Speicheranweisungen verstanden werden. Dies ist ein konzeptionelles Beispiel: Welche Befehle ein Compiler tatsächlich erzeugt und wie lange deren Ausführung dauert, hängt vom Code und den Optimierungseinstellungen ab. Weniger sichtbare Anweisungen bedeuten nicht automatisch eine schnellere Ausführung.
Ebenso bedeutet „Reduziert“ nicht, dass ein moderner ARM-Prozessor eine geringe Gesamtzahl von Anweisungen haben muss. ARM verfügt auch über Erweiterungen für Operationen wie Vektorberechnungen und Kryptographie. Siehe Arms ISA-Klassifikationen und Die Entwicklerhandbücher von Intel für die Klassifikationen und detaillierten x86-Anweisungsformate.
Warum „komplexe versus einfache Anweisungen“ moderne CPUs nicht erklärt
Eine für ein Programm sichtbare Anweisung entspricht nicht notwendigerweise einem einzelnen internen Vorgang. Moderne Hochleistungs-x86-CPUs decodieren Anweisungen in kleinere interne Vorgänge, die als Mikro-Operationen bezeichnet werden. Intels Optimierungshandbuch beschreibt die Anweisungsdecodierung und diese interne Ausführungsorganisation.
Hochleistungs-ARM-CPUs können ebenfalls ausgeklügelte Hardware verwenden, um mehrere Anweisungen gleichzeitig zu verarbeiten und ihre Ausführungsreihenfolge anzupassen, während sie korrekte Ergebnisse beibehalten. Arms Armv8-A ISA-Anleitung enthält ein Beispiel für eine Out-of-Order-Ausführungspipeline. x86 als „komplex und langsam“ und ARM als „einfach und schnell“ zu beschreiben, verfehlt daher vieles von dem, was das Verhalten eines modernen Produkts bestimmt.
Welche ist besser für Leistung und Energieverbrauch?
Der Name der Architektur allein kann keinen Leistungs- oder Energieeffizienzgewinner identifizieren. Die ISA beeinflusst das Design, aber das Endprodukt hängt auch von seiner Implementierung, dem Fertigungsprozess, der Kühlung und der Softwareoptimierung ab.
Internes Design und Arbeitslast bestimmen die Leistung
Mehr CPU-Kerne schaffen Möglichkeiten, Arbeit aufzuteilen, aber Programme nutzen nicht alle Kerne auf die gleiche Weise. Eine Aufgabe, die eine schnelle Reaktion eines einzelnen Threads benötigt, kann einen anderen Prozessor bevorzugen als eine Aufgabe, die Arbeit über viele Kerne verteilt. Die Taktfrequenz ist auch kein eigenständiger Leistungswert zum Vergleich verschiedener CPU-Designs.
Vergleichen Sie die gleiche Anwendung, Eingabedatei und Qualitätseinstellungen. Unterscheiden Sie zwischen einem nativen Build, der für die CPU erstellt wurde, und einem Build, der durch Befehlsübersetzung läuft. Bei Aufgaben wie Videoexport können Grafikprozessoren oder spezielle Videohardware erhebliche Arbeit leisten, sodass das vollständige Ergebnis nicht ausschließlich dem CPU-Befehlssatz zugeschrieben werden kann.
Unterscheiden Sie auch zwischen kurzen Spitzenlasten und anhaltenden Arbeitslasten. Ein Prozessor kann schnell starten und dann seine Geschwindigkeit verringern, aufgrund von Temperatur- oder Leistungsgrenzen. Der Leitfaden zum Lesen von Single-Thread-, Multi-Thread- und Gaming-CPU-Benchmarks (auf Englisch) erklärt, wie man diese unterschiedlichen Ergebnisse bewertet.
Elektrische Leistungsaufnahme und Energieeffizienz sind unterschiedliche Größen
Elektrische Leistung ist die Rate, mit der Energie verbraucht wird, normalerweise in Watt (W) angegeben. Energie ist die insgesamt während einer Aufgabe verbrauchte Menge. Um die Energie zu bestimmen, die benötigt wird, um einen Auftrag abzuschließen, berücksichtigen Sie sowohl die durchschnittliche Leistung als auch die Ausführungszeit.
Als hypothetisches Beispiel verbraucht ein Gerät, das im Durchschnitt 10 W für 60 Sekunden nutzt, 600 Joule (J). Ein anderes Gerät, das 20 W für 20 Sekunden verwendet, um dieselbe Aufgabe zu erledigen, verbraucht 400 J. Das zweite Gerät verwendet während der Arbeit mehr Leistung, aber weniger Energie pro abgeschlossener Aufgabe. Diese Zahlen erklären das Prinzip; sie sind keine Messungen tatsächlicher Produkte.
Die Akkulaufzeit hängt auch von mehr als der CPU ab. Akkukapazität, Bildschirmhelligkeit, Displaytechnologie, Speicher, drahtlose Kommunikation und Hintergrundarbeiten spielen alle eine Rolle. Eine lange Akkulaufzeit, die bei einem ARM-Laptop erzielt wird, kann kein universelles Gesetz für jeden ARM- und x86-Prozessor aufstellen. Die vom Hersteller angegebene thermische Auslegungsleistung (TDP) sollte nicht als gemessene elektrische Leistungsaufnahme eines gesamten Geräts betrachtet werden.
Kann ein ARM-Computer x86-Software ausführen?
Einige Programme können über die Übersetzungsfunktionen eines Betriebssystems ausgeführt werden. Die Bedingungen unterscheiden sich jedoch von der Ausführung der nativen CPU-Anweisungen. Überprüfen Sie die Version des Betriebssystems und die unterstützten Anwendungen, Treiber und Komponenten. Ein Gerätetreiber ist Software, über die das Betriebssystem mit Hardware kommuniziert und sie steuert. Kernelmodus-Treiber laufen im Kern des Betriebssystems.
Der gleiche Quellcode kann unterschiedliche ausführbare Dateien erzeugen
Quellcode ist der Programmtext, den ein Entwickler schreibt. Durch die Kompilierung wird er in eine Form umgewandelt, die die Zielumgebung ausführen kann. Das Erstellen der gleichen Funktionalität für x86-64 und ARM64 erzeugt unterschiedlichen Maschinencode. Die Erklärung der ARM-ISA beschreibt die Kompilierung einer Hochsprache in Maschinencode für eine bestimmte ISA.
Die „3 + 5“-Funktion eines Rechners hat auf beiden Systemen denselben Zweck, aber die Befehlsbits und die Nutzung der Register können unterschiedlich sein. Das Umbenennen einer x86-Executable oder das Ändern ihrer Erweiterung macht sie nicht zu ARM64-Software. Selbst das Neukompilieren eines Programms erfordert kompatible Bibliotheken und Betriebssystemfunktionen.
Eine passende CPU-Architektur schafft ebenfalls keine Kompatibilität zwischen Betriebssystemen. Eine Windows-ARM64-Anwendung läuft nicht automatisch auf einem ARM-basierten Mac oder Android-Gerät. Das Executable-Format und die Betriebssystem-Schnittstellen müssen ebenfalls übereinstimmen.
Was Übersetzung leisten kann und wo die Kompatibilität endet
Emulation und binäre Übersetzung helfen dabei, Programme auszuführen, die für einen anderen Befehlssatz entwickelt wurden. Sie können Anweisungen interpretieren oder übersetzen und übersetzten Code wiederverwenden. Laut Microsofts Windows-on-Arm-Emulationsdokumentation unterstützt Windows 11 auf Arm sowohl die Emulation von x86- als auch von x64-Anwendungen, während Windows 10 auf Arm nur x86-Anwendungen unterstützt.
Die Emulation von Anwendungen ersetzt nicht die Notwendigkeit kompatibler Kernelmodus-Treiber. Auf Windows auf Arm müssen diese Treiber für ARM64 verfügbar sein; Microsofts Arm-PC-FAQ erklärt die Anforderungen an Gerätetreiber. Drucker, Audiogeräte, VPNs, Sicherheitstools und Spiele mit Anti-Cheat-Komponenten erfordern daher Überprüfungen, die über die Hauptausführungsdatei hinausgehen. Das Öffnen eines Anwendungsfensters ist kein Beweis dafür, dass jede erforderliche Funktion funktioniert.
Auf einem Mac übersetzt Rosetta Intel-basierte Mac-Anwendungen für Apple Silicon. Die Unterstützungshinweise von Apple für Rosetta unterscheiden die Verfügbarkeit bis einschließlich macOS 27 von den Einschränkungen ab macOS 28, wenn die Rosetta-Funktionalität auf bestimmte ältere, nicht mehr gepflegte Spiele beschränkt ist, die auf Intel-basierte Frameworks angewiesen sind. Rosetta sollte nicht als dauerhafte Kompatibilitätsgarantie für jede Intel-Anwendung betrachtet werden.
Ein nativer ARM64-Build kann die Befehlsübersetzung vermeiden, aber die tatsächliche Leistung und Zuverlässigkeit hängen weiterhin von der Implementierung der Anwendung ab. Es gibt keine einheitliche Leistungseinbuße durch die Übersetzung, die für jedes Programm gilt, und es garantiert nicht, dass eine bestimmte Version immer schneller ist, nur weil sie nativ ist.
Sollten Sie x64- oder ARM64-Software herunterladen?
Identifizieren Sie zunächst Ihr Betriebssystem und Ihre CPU-Umgebung und wählen Sie dann einen Download aus, der diese Kombination unterstützt. Ein Herstellername oder die Wörter „64-Bit“ allein reichen nicht aus.
Überprüfen Sie Ihre CPU- und Betriebssystemumgebung
- Windows: Öffnen Sie Einstellungen → System → Info und sehen Sie sich den Systemtyp unter Gerätespezifikationen an. Für einen x64-basierten Prozessor mit einem 64-Bit-Betriebssystem suchen Sie nach Windows x64. Bei einem Arm-basierten Prozessor überprüfen Sie zuerst, ob eine unterstützte Windows ARM64-Version verfügbar ist. Ein 32-Bit-Betriebssystem kann keine x64-Anwendungen ausführen, selbst wenn seine CPU 64-Bit unterstützt. Microsofts Leitfaden zur Identifizierung eines ARM-PCs verwendet diesen Einstellungsweg.
- Mac: Öffnen Sie das Apple-Menü → Über diesen Mac. Ein Mac mit Apple-Chip zeigt Chip an; ein Mac mit Intel zeigt Prozessor an. Für Apple-Chips wählen Sie eine Apple-Chip- oder Universal-Version, die Ihren Mac unterstützt. Eine Universal-Anwendung enthält Code für sowohl Intel- als auch Apple-Chips. Siehe Apples Anleitung zur Identifizierung von Mac-Chips für die Hardwareüberprüfung.
- Linux: Führen Sie den folgenden Befehl in einem Terminal aus, um den Maschinentyp der aktuellen Umgebung abzufragen. Dies ist eine schreibgeschützte GNU Coreutils-Abfrage: Sie ändert keine Einstellungen und erfordert keine Rückgängig-Operation.
uname -m
In einer typischen Linux-Umgebung identifiziert x86_64 x86-64 und aarch64 identifiziert 64-Bit Arm. Dies sind gängige Ausgaben, nicht die einzigen möglichen Werte auf allen Systemen. Paketmanager können andere Bezeichnungen verwenden, wie amd64 oder arm64. Innerhalb einer virtuellen Maschine oder einer emulierten Umgebung ist das Ergebnis als Beschreibung dieser Ausführungsumgebung zu interpretieren. Das GNU uname-Handbuch definiert -m als die Ausgabe des Maschinenhardware-Namens.
| Ihre Umgebung | Worauf Sie bei Downloads achten sollten |
|---|---|
| Windows, x64 CPU, 64-Bit-OS | Windows x64 oder x86-64. AMD64 bezieht sich auf dieselbe Architektur-Familie. |
| Windows, Arm CPU | Windows ARM64. Wenn nicht verfügbar, prüfen Sie die Unterstützung der x86- oder x64-Emulation für Ihre Windows-Version und Anwendung. |
| Apple Silicon Mac | Apple Silicon oder Universal für macOS, anstelle eines Windows ARM64-Installationsprogramms. |
| Intel Mac | Eine Intel- oder Universal-Anwendung, die Ihre macOS-Version unterstützt. |
| Linux, x86_64 oder aarch64 | Das amd64/x86_64- oder arm64/aarch64-Paket der Distribution, jeweils. Distribution, Version und Abhängigkeiten müssen ebenfalls übereinstimmen. |
Überprüfen Sie Anwendungen, Plug-ins und Treiber
Sobald Sie einen Installer gefunden haben, überprüfen Sie die Funktionen, die Sie tatsächlich benötigen. Zum Beispiel kann eine ARM64-Musikanwendung laufen, während ein erforderliches Instrumenten-Plugin oder ein Audio-Gerätetreiber noch nicht unterstützt wird. Das würde es schwierig machen, ein bestehendes Projekt unverändert fortzusetzen. Dies ist ein Beispiel für eine Kombination, die überprüft werden sollte, keine Behauptung über das Versagen eines bestimmten Produkts.
- Überprüfen Sie auf der offiziellen Download-Seite gemeinsam das Betriebssystem, die minimal unterstützte Version und die Architektur. Wenn der Entwickler einen automatischen Installer bereitstellt, folgen Sie den offiziellen Anweisungen.
- Überprüfen Sie die von wichtigen Plug-ins, Erweiterungen und Codecs unterstützten Architekturen und Versionen der Host-Anwendung. Komponenten, die im selben Prozess geladen werden, benötigen im Allgemeinen übereinstimmende Architekturen; wo eine separate Bridging-Funktion vorhanden ist, verwenden Sie Kombinationen, die vom Entwickler unterstützt werden.
- Überprüfen Sie die Treiber für Peripheriegeräte und Systemfunktionen. Unter Windows on Arm prüfen Sie die Unterstützung der Anwendungs-Emulation und die Verfügbarkeit von ARM64-Treibern separat.
- Testen Sie nach der Installation die benötigten Arbeiten: Dateien öffnen und speichern, exportieren, Plug-ins verwenden und Geräte verbinden. Wenn eine Kombination nicht unterstützt wird, verwenden Sie eine offiziell unterstützte Version oder sichern Sie wichtige Daten, bevor Sie das offizielle Entfernenverfahren befolgen.
x64 und ARM64 sind Zielumgebungsbezeichnungen, keine Leistungsrankings. Zuerst das Betriebssystem und die Architektur abzugleichen und dann die Anwendungen und Komponenten zu überprüfen, von denen Sie abhängig sind, hilft, falsche Downloads und fehlerhafte Kompatibilitätsannahmen zu vermeiden.