Warum sind die CPU-Register schnell zu zugreifen?
Register-Variablen sind eine bekannte Möglichkeit, einen schnellen Zugang (register int i
). Aber warum registriert sich auf der Spitze der Hierarchie (Register, cache, Hauptspeicher, sekundärer Speicher)? Was sind all die Dinge, die für den Zugriff auf die Register so schnell?
- Ich verstehe nicht ganz, was Sie Fragen. Register sind an der Spitze, weil Sie an der Spitze. Es ist nichts näher an die ALU, wo die Arbeit getan ist. Erhaltung der Daten in einem register bedeutet, dass keine Daten-transfer-overhead. Übrigens das Stichwort nicht viel mit moderner optimierender Compiler.
- Ein register gespeichert, direkt in der CPU!
- Mehr info auf ALU: en.wikipedia.org/wiki/Arithmetic_logic_unit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Registriert, sind ein wichtiger Bestandteil der CPU, und viel von der Befehlssatz einer CPU zugeschnitten ist, für die Arbeit gegen Registern eher als Speicherplätze. Der Zugriff auf ein register mit dem Wert in der Regel benötigen sehr wenige Taktzyklen (wahrscheinlich nur 1), sobald der Speicher zugegriffen wird, werden die Dinge komplexer und cache-Controller /memory-Busse bringen Sie sich ein und die operation dauert erheblich länger.
Register sind schaltungen, die förmlich WLAN direkt auf das ALU, die enthält die schaltkreise für arithmetische. Jeden clock-Zyklus, die register-Einheit der CPU-Kern ernähren kann ein halbes Dutzend oder so von Variablen in den anderen schaltungen. Eigentlich sind die Einheiten im Datenpfad (ALU, etc.) können die feed-Daten zu jedem anderen direkt, via bypass-Netzwerk, die in einer Art und Weise bildet sich eine Hierarchie-Ebene über die Register—, aber Sie verwenden noch die register-Nummern, um jede andere. (Der control-Bereich, eine vollständig Pipeline-CPU dynamisch Karten Datenpfad-Einheiten zu registrieren, zahlen.)
Den
register
- Schlüsselwort in C # ist nichts nützlich, und Sie sollten es nicht verwenden. Der compiler entscheidet, welche Variablen sollten in Registern und wenn.add
Unterricht haben kann, 1c Wartezeit auch in einer Pipeline-CPU. (Siehe Wikipedia-die Klassische RISC-pipeline Artikel. Die Idee ist die gleiche, auch in einem out-of-order, superscalar CPU, aber die mehrfache Ausführung können die Geräte Weiterleitung zu einander parallel.)Register sind im wesentlichen die internen CPU-Speicher. Also die Zugriffe auf Register sind einfacher und schneller als jede andere Art von Speicher zugreift.
Kleinere Erinnerungen sind in der Regel schneller als die größeren; Sie kann auch verlangen, weniger bits, um die Adresse. Ein 32-bit instruction word kann halten drei vier-bit-register-Adressen und viel Platz für den opcode und anderen Dingen, eine 32-bit memory-Adresse voll ausgefüllt bis eine Anweisung Wort, so dass kein Raum für irgendetwas anderes. Weiter, die Zeit, die erforderlich ist, um eine Erinnerung steigt mit einer rate mehr als proportional zu dem Logarithmus der Größe des Arbeitsspeichers angezeigt. Der Zugriff auf ein Wort aus einer 4 gig Speicher nehmen Dutzende, wenn nicht Hunderte Male länger als der Zugriff auf einen von einem 16-Wort-register-Datei.
Einer Maschine verarbeiten kann die meisten Informationen, die auf Anforderungen von kleinen schnellen register-Datei wird schneller sein als eine, die mit einer langsameren Speicher für alles.
Jedem mikrocontroller, der eine CPU als Bill erwähnt, dass die grundlegenden Komponenten aus ALU, einige RAM-sowie andere Formen der Erinnerung zu unterstützen, die Ihre Operationen. Das RAM ist, was Sie sich beziehen als Hauptspeicher.
ALU Griffe alle arthimetic logischen Operationen und arbeiten auf eine beliebige Operanden um diese Berechnungen auszuführen, es lädt den Operanden in Registern, führt die Operationen auf diesen, und dann dein Programm greift auf das gespeicherte Ergebnis in diese Register direkt oder indirekt.
Da die Register sind am nächsten an das Herz der CPU (ein.k.ein Gehirn für Ihren Prozessor), Sie sind höher in der Kette und natürlich Operationen, die direkt auf Register nehmen Sie die geringste Menge an clock-Zyklen.