2010-08-19 10 views
15

Register-Variablen sind ein bekannter Weg, um einen schnellen Zugriff zu erhalten (register int i). Aber warum sind Register an der Spitze der Hierarchie (Register, Cache, Hauptspeicher, Sekundärspeicher)? Was macht den Zugriff auf Register so schnell?Warum sind CPU-Register schnell zugänglich?

+4

Ich verstehe nicht ganz, was Sie fragen. Register sind an der Spitze, weil sie an der Spitze sind. Es gibt nichts Näheres zur ALU, wo die Arbeit gemacht wird. Das Speichern von Daten in einem Register bedeutet keinen zusätzlichen Datentransfer. Übrigens macht das Stichwort bei modernen optimierenden Compilern wenig Sinn. –

+0

Ein Register wird direkt in der CPU gespeichert! – NoName

+0

Weitere Informationen über ALU: https: //en.wikipedia.org/wiki/Arithmetic_logic_unit –

Antwort

9

Register sind ein zentraler Teil der CPU, und ein großer Teil des Befehlssatzes einer CPU wird auf die Arbeit mit Registern und nicht auf Speicherplätzen zugeschnitten sein. Der Zugriff auf den Wert eines Registers erfordert typischerweise sehr wenige Taktzyklen (wahrscheinlich nur 1), sobald auf Speicher zugegriffen wird, werden die Dinge komplexer und Cache-Controller/Speicherbusse werden involviert und die Operation wird erheblich mehr Zeit benötigen.

1

Register sind im Wesentlichen interne CPU-Speicher. Daher sind Zugriffe auf Register einfacher und schneller als jede andere Art von Speicherzugriffen.

19

Register sind Schaltungen, die buchstäblich direkt mit der ALU verdrahtet sind, die die Schaltungen für die Arithmetik enthält. Bei jedem Taktzyklus kann die Registereinheit des CPU-Kerns ein halbes Dutzend oder so Variablen in die anderen Schaltungen einspeisen. Tatsächlich können die Einheiten innerhalb des Datenpfads (ALU usw.) einander direkt über das Bypass-Netzwerk Daten zuführen, das in gewisser Weise eine Hierarchieebene über Registern bildet - aber sie verwenden immer noch Registernummern, um einander zu adressieren . (Der Steuerabschnitt einer CPU mit vollständiger Pipelineverarbeitung weist Datenpfadeinheiten dynamisch den Registernummern zu.)

Das Schlüsselwort register in C macht nichts Sinnvolles und Sie sollten es nicht verwenden. Der Compiler entscheidet, welche Variablen in welchen Registern enthalten sein sollen.

+2

Die Drähte (und MUXes), die Ausführungseinheiten direkt miteinander verbinden, werden als Weiterleitungs- oder Umgehungsnetzwerk bezeichnet, da sie die Latenz des Zurückschreibens in Register umgehen und dann aus der Registerdatei lesen. Dies ist, wie ein 'add'-Befehl eine 1c-Latenz sogar in einer Pipeline-CPU haben kann. (Siehe [Wikipedia's Klassische RISC-Pipeline] (https://en.wikipedia.org/wiki/Classic_RISC_pipeline#Solution_A._Bypassing) Artikel Die Idee ist die selbe auch in einer Superskalar-CPU, die nicht in der Reihenfolge ist, aber mehrere Ausführungseinheiten können parallel zueinander weitergeleitet werden.) –

0

Jeder Mikrocontroller hat eine CPU wie Bill erwähnt, die die grundlegenden Komponenten von ALU, einige RAM sowie andere Formen von Speicher zur Unterstützung seiner Operationen hat. Der RAM ist, was Sie als Hauptspeicher bezeichnen.

Die ALU behandelt alle arithmetischen logischen Operationen und operiert mit beliebigen Operanden, um diese Berechnungen durchzuführen, lädt die Operanden in Register, führt die Operationen an diesen aus und dann greift Ihr Programm direkt oder in diesen Registern auf das gespeicherte Ergebnis zu indirekt.

Da sich die Register dem Kern der CPU am nächsten befinden (z. B. dem Gehirn Ihres Prozessors), sind sie höher in der Kette und Operationen, die direkt in Registern ausgeführt werden, benötigen die geringsten Taktzyklen.

1

Kleinere Speicher sind im Allgemeinen schneller als größere; Sie können auch weniger Bits zur Adressierung benötigen. Ein 32-Bit-Befehlswort kann drei Vier-Bit-Registeradressen enthalten und hat viel Platz für den Opcode und andere Dinge; Eine 32-Bit-Speicheradresse würde ein Anweisungswort vollständig ausfüllen und keinen Platz für irgend etwas anderes lassen. Ferner nimmt die Zeit, die zum Adressieren eines Speichers benötigt wird, mit einer Rate zu, die mehr als proportional zum Protokoll der Speichergröße ist. Der Zugriff auf ein Wort aus einem Speicherbereich von 4 Gigabyte dauert dutzende, wenn nicht hundertmal länger als der Zugriff auf einen aus einer 16-Wörter-Registerdatei.

Eine Maschine, die die meisten Informationsanforderungen aus einer kleinen Fast-Register-Datei verarbeiten kann, ist schneller als eine, die für alles einen langsameren Speicher verwendet.