Hacker News

Wie viele Register hat eine x86-64-CPU? (2020)

Wie viele Register hat eine x86-64-CPU? (2020) Diese Untersuchung befasst sich mit vielen davon und untersucht ihre Bedeutung und ihr Potenzial – Mewayz Business OS.

4 Min. gelesen

Mewayz Team

Editorial Team

Hacker News

Eine x86-64-CPU verfügt über 16 Allzweckregister, aber die vollständige Registerdatei ist viel größer – sie umfasst über 100 Architekturregister, wenn man Gleitkomma-, SIMD-, Segment-, Steuerungs- und modellspezifische Register einbezieht. Es ist wichtig, das Gesamtbild zu verstehen, egal ob Sie Low-Level-Code schreiben, die Systemleistung debuggen oder einfach nur Ihre Neugier darüber befriedigen, was unter dem Betriebssystem passiert.

Was sind die 16 Allzweckregister in x86-64?

Durch die 64-Bit-Erweiterung der x86-Architektur (AMD64/Intel 64) wurden die ursprünglichen 8 Allzweckregister von IA-32 auf 16 verdoppelt. Dies sind die Arbeitspferde alltäglicher Berechnungen – sie werden für Arithmetik, Speicheradressierung, Funktionsargumente und Rückgabewerte verwendet.

RAX, RBX, RCX, RDX – die ursprünglichen Register „Akkumulator“, „Basis“, „Zähler“ und „Daten“, jetzt auf 64-Bit-Breite erweitert

RSI, RDI – Quellindex und Zielindex, häufig für String-Operationen und Funktionsargumente verwendet

RSP, RBP – Stapelzeiger und Basiszeiger, entscheidend für die Verwaltung des Aufrufstapels und der Stapelrahmen

R8 bis R15 – acht brandneue Register, die in x86-64 eingeführt wurden und in der 32-Bit-Architektur nicht vorhanden sind, was Compilern weitaus mehr Flexibilität bei der Optimierung bietet

Jedes dieser 64-Bit-Register ist abwärtskompatibel, was bedeutet, dass Sie die unteren 32 Bit (z. B. EAX), 16 Bit (AX) oder sogar einzelne 8-Bit-Hälften (AH, AL) adressieren können – ein Design-Erbe, das bis zum Intel 8086 aus dem Jahr 1978 zurückreicht.

Wie viele Gesamtregister hat x86-64 tatsächlich?

💡 WUSSTEN SIE SCHON?

Mewayz ersetzt 8+ Business-Tools in einer Plattform

CRM · Rechnungsstellung · Personalwesen · Projekte · Buchungen · E-Commerce · POS · Analytik. Für immer kostenloser Tarif verfügbar.

Kostenlos starten →

Die Zahl wächst erheblich, wenn man über die allgemeinen Register hinausblickt. Ein moderner x86-64-Prozessor stellt sowohl User-Space-Programmen als auch dem Betriebssystemkernel mehrere unterschiedliche Registerklassen zur Verfügung:

Das RFLAGS-Register ist ein einzelnes 64-Bit-Register, das Bedingungscodes – Null-Flag, Übertrags-Flag, Überlauf-Flag – enthält, die die bedingte Verzweigung nach jeder arithmetischen oder logischen Operation steuern. Das RIP-Register (Befehlszeiger) verfolgt die Adresse des nächsten auszuführenden Befehls und kann von den meisten Befehlen nicht direkt geändert werden.

Vom segmentierten Speichermodell früherer x86-Architekturen bleiben sechs Segmentregister (CS, DS, ES, FS, GS, SS) übrig. Im 64-Bit-Modus sind die meisten davon verkümmert, aber FS und GS werden von Betriebssystemen immer noch aktiv verwendet, um auf Thread-lokale Speicher- und CPU-lokale Kernel-Datenstrukturen zu verweisen.

Dann gibt es 16 XMM-Register (XMM0–XMM15), die mit SSE eingeführt wurden und jeweils 128 Bit breit sind. Mit AVX werden diese zu 256-Bit-YMM-Registern, und mit AVX-512 werden sie weiter zu 512-Bit-ZMM-Registern erweitert – wodurch der Datei auf unterstützter Hardware weitere 32 Register hinzugefügt werden. Die älteren 8 x87-FPU-Register (ST0–ST7), die als Stapel organisiert sind, verarbeiten 80-Bit-Gleitkommaberechnungen mit erweiterter Genauigkeit.

Wichtige Erkenntnis: Die Gesamtzahl der für den User-Space-Code sichtbaren Register in einem typischen x86-64-Prozess beträgt etwa 40–50 (Allzweck-, Flags-, Befehlszeiger-, Segment- und XMM-Register). Wenn Sie Kernel-Modus-Steuerregister, Debug-Register und Hunderte von modellspezifischen Registern (MSRs) hinzufügen, beläuft sich der gesamte architektonische Registerraum auf Tausende – die meisten davon werden von gewöhnlicher Software nie berührt.

Warum hat x86-64 die Anzahl der Universalregister verdoppelt?

Der Sprung von 8 auf 16 Universalregister war eine der praktischsten Verbesserungen, die AMD beim Entwurf der x86-64-Erweiterung in den frühen 2000er Jahren vorgenommen hat. Die ursprünglichen 8 Register führten zu einem ernsthaften Engpass: Compiler waren gezwungen, ständig Variablen in den Speicher (den Stapel) zu übertragen, weil einfach nicht genügend Register vorhanden waren, um Zwischenwerte zu speichern. Dieses Verschütten erzeugt zusätzliche Lade- und Speicheranweisungen, die sowohl Zeit als auch Speicherbandbreite verbrauchen.

Mit 16 Allzweckregistern kann die x86-64-Aufrufkonvention (System V AMD64 ABI unter Linux/macOS, Microsoft x64 ABI unter Windows) die ersten mehreren Funktionsargumente vollständig in Registern übergeben – sechs ganzzahlige Argumente unter Linux (RDI, RSI, RDX, RCX, R8, R9) – ohne den Stapel überhaupt zu berühren

All Your Business Tools in One Place

Stop juggling multiple apps. Mewayz combines 207 tools for just $19/month — from inventory to HR, booking to analytics. No credit card required to start.

Try Mewayz Free →

Mewayz kostenlos testen

All-in-One-Plattform für CRM, Abrechnung, Projekte, HR & mehr. Keine Kreditkarte erforderlich.

Start managing your business smarter today

присоединяйтесь к 30,000+ компаниям. Бесплатный вечный план · Без кредитной карты.

Fanden Sie das nützlich? Teilt es.

Bereit, dies in die Praxis umzusetzen?

Schließen Sie sich 30,000+ Unternehmen an, die Mewayz nutzen. Kostenloser Tarif für immer – keine Kreditkarte erforderlich.

Kostenlose Testversion starten →

Bereit, Maßnahmen zu ergreifen?

Starten Sie Ihre kostenlose Mewayz-Testversion noch heute

All-in-One-Geschäftsplattform. Keine Kreditkarte erforderlich.

Kostenlos starten →

14-day free trial · No credit card · Cancel anytime