Register (Computer)

Register (Computer)

Als Register bezeichnet man in der Digital- oder Computertechnik Speicherbereiche, die innerhalb eines Prozessors direkt mit der eigentlichen Recheneinheit verbunden sind und die unmittelbaren Operanden und Ergebnisse aller Berechnungen aufnehmen. Register sind in der Regel höchstens so groß wie die Wortgröße des Prozessors (8, 16, 32 oder 64 Bit).

Die Gesamtheit aller Register eines solchen Bausteins bezeichnet man als dessen Registersatz. Spezielle Register werden für die Wahl der Betriebsmodi eines Prozessors verwendet. Verschiedene Register dienen zum Zwischenspeichern von Befehlen, Speicheradressen, Rechenoperanden und in Peripheriebausteinen auch zum Zwischenspeichern von Ein- und Ausgabewerten.

Die Breite eines Registers wird in Bit angegeben und ist üblicherweise eine Zweierpotenz.

Inhaltsverzeichnis

Registertypen in der CPU

In CPUs stehen Register an der Spitze der Speicherhierarchie und sind daher die schnellste Möglichkeit, Daten zu manipulieren, da der Zugriff unabhängig vom Daten- oder Adressbus erfolgt. Die Registersätze verschiedener Arten von Prozessoren unterscheiden sich in der Art, der Anzahl und der Größe der zur Verfügung stehenden Register.

Datenregister, Akkumulator

Datenregister werden benutzt, um Operanden für die ALU und deren Resultate zu speichern. Bei älteren Prozessoren gab es teilweise nur ein einziges solches Register, den Akkumulator. Prozessoren neuerer Generation besitzen oft mehrere Datenregister mit Akkumulatorfunktion.

In der Regel ist die Größe des Datenregisters zusammen mit der Breite des Datenbusses mit ausschlaggebend für die Einordnung des Prozessors als 8-, 16-, 32- oder 64-Bit-Prozessor. Prozessoren mit 8-Bit-Datenbus und 8-Bit-Datenregistern werden als 8-Bit-Prozessoren bezeichnet, z. B. MOS Technology 6502 oder Zilog Z80. Prozessoren mit unterschiedlicher Größe von Datenbus und Datenregistern werden häufig auch entsprechend bezeichnet, z. B. der Motorola 68000, der mit 16-Bit-Datenbus und 32-Bit-Datenregistern als 16-/32-Bit-Prozessor bezeichnet wird. Die derzeit (2007) neuesten Prozessoren sind meistens 64-Bit-Prozessoren, z. B. AMD Opteron, oder Intel-Prozessoren mit EM64T sowie Itanium und nur noch selten Alpha AXP.

Bei 8-Bit-Prozessoren waren Adressbus und Adressregister meistens 16 Bit groß. Bei den meisten heutigen Prozessoren sind die Adressregister genauso groß wie die Datenregister, der Adressbus meistens gleich groß oder kleiner.

Meistens sind die Datenregister nur mit der ALU verbunden, nicht jedoch mit der FPU. Das heißt, in den meisten Prozessoren können Datenregister nicht als Operanden für FPU-Operationen verwendet werden. In diesem Fall müssen Operanden für die FPU in speziell dafür vorgesehenen Registern, den Gleitkommaregistern, gespeichert werden.

Adressregister

Die Adressregister spielen eine wichtige Rolle in der Adressarithmetik. Adressregister werden für die Berechnung von Speicheradressen eines Operanden oder Befehls genutzt. Sie haben Verbindung mit dem internen Datenbus und dem Adressbus.

Bei indizierter Adressierung, beispielsweise beim Intel 8086, werden zwei Typen von Adressregistern unterschieden, die Indexregister und die Basisadressregister (auch Segmentregister), auf die bei den Spezialregistern eingegangen wird. Indexregister speichern den Offset zu einer Basisadresse.

Bei linearer Adressierung, etwa angewendet beim Motorola 68000, gibt es keine solche Unterscheidung bei den Adressregistern. Es gibt dort eine Adressierungsart, bei der ein Adressregister und ein Datenregister addiert werden. Beim Motorola 68020 kann das Datenregister dabei mit einer fixen Wortbreitengröße multipliziert werden. Bei anderen Prozessoren bezeichnet man als Indexregister auch das einzige an der Adressbildung beteiligte Register, beim Motorola 6800 und beim Zilog Z80 wird eine Konstante addiert, beim MOS Technology 6502 werden ein 16-Bit-Wert und ein 8-Bit-Indexregister addiert. Beim 6502 gibt es zusätzlich eine Adressierungsart, bei der eines von mehreren Basisadressregistern per Indexregister aus einer Tabelle ausgewählt werden kann, die im RAM abgelegt ist.

Frei verwendbare Register

In modernen RISC-CPUs, so PowerPC oder Sun SPARC, heißen die Datenregister allgemeine oder frei verwendbare Register (engl. GPR für General Purpose Register), da sie sich beliebig als Daten- oder Adressregister einsetzen lassen.

Die 32-Bit-Prozessoren der Intel-x86-Familie sind CISC-Prozessoren und haben einige der Eigenschaften ihrer Vorgängergenerationen geerbt. So besitzen sie, wie ihre 8- und 16-Bit Vorgänger, nur vier allgemeine Register, die auch noch mit den Namen aus jener Zeit bezeichnet werden (Akkumulator, Basisregister, Zählregister, Datenregister). Auch kann der Prozessor nach wie vor gewisse Operationen nicht auf allen Registern durchführen (z. B. kann nur im Akkumulator dividiert werden).

Spezialregister

Spezialregister sind nur teilweise vom Anwender programmierbar. Sie speichern den Betriebszustand des Prozessors, außerdem erfüllen sie Hilfsfunktionen für den Prozessor.

Bei den meisten Architekturen sind folgende Spezialregistertypen anzutreffen:

  • Befehlszählregister, auch Programmzähler oder Befehlszähler, (englisch Instruction Pointer (IP (16-Bit)) bzw. Extended Instruction Pointer (EIP (32-Bit)) oder program counter (PC)): das Befehlszählregister enthält je nach Systemarchitektur die Speicheradresse des derzeitigen oder des nächsten auszuführenden Befehls – ein Sprungbefehl setzt dieses Register einfach auf einen neuen Wert;
  • Befehlsregister (Instruction register): speichert den aktuellen Befehl – für den Programmierer nicht zugänglich;
  • Basisregister, z. B. für die Basisvektortabelle, es kann von einem Benutzerprogramm neu gesetzt werden;
  • Segmentregister, eine Spezialität der x86-Plattform, die die oberen 16 Bit einer 20-Bit-Adresse enthalten, ihr Inhalt muss also mit 16 multipliziert und dann zu einem segmentinternen Offset addiert werden, um den endgültigen Speicherplatz zu erreichen (auf diese Weise konnten mit reinen 16-Bit-Registerladebefehlen 20 Bit Adressraum abgedeckt werden, also 1 MB);
  • Statusregister (englisch: Condition Code Register, CCR oder auch Processor Status Word, PSW oder Flagregister): geben bestimmte Zustände nach Ausführung eines Befehls an (bspw. Zero-Flag, Vorzeichen-Flag etc.) – ein Benutzerprogramm initialisiert einzelne Flags z. B. vor arithmetischen Operationen;
  • Interrupt-Steuerregister (englisch: Interrupt Control Register): Bei komplexeren CPUs, wo diese Funktionalität nicht mit einem oder zwei Bits im Statusregister (s. o.) abgehandelt werden kann, kann hierüber sehr differenziert vorgegeben werden, auf welche Interrupts überhaupt bzw. mit welcher Priorität reagiert werden soll. Durch Lesen kann die Software herausfinden, welcher der verschiedenen Interrupts überhaupt vorliegt. Durch Schreiben kann sie (temporär) z. B. einzelne Interrupts sperren, die während einer bestimmten Operation stören würden.

Einige Mikrocontroller (Intel-MCS-51-Familie sowie Siemens-C167-Familie) organisieren diese Spezialregister und die Register zur Kontrolle der internen I/O-Ports in Form einer Registerbank, die sich mittels Memory Mapped I/O mit den gewöhnlichen Befehlen für den Arbeitsspeicherzugriff ansprechen lässt. Der durch diese Registerbank verdeckte Arbeitsspeicher lässt sich entweder gar nicht oder nur indirekt ansprechen.

Stapelregister

Die Stapelregister (englisch stack pointer (SP)) sind Adressregister zur Verwaltung von Stapelspeichern. Ein Stapelspeicher, auch Kellerspeicher oder nur Stack genannt, wird von einem Stapelregister nach dem LIFO-Prinzip organisiert und kann mit Push- oder Pop-Operationen gefüllt oder geleert werden. Dabei zeigt das Stackregister immer auf die Speicheradresse am Ende des Stacks, je nach Architektur auf oder zumeist hinter das letzte Element. Auf den meisten Architekturen existiert ein System-Stack und ein Anwender-Stack. Das Betriebssystem nutzt den System-Stack zur Sicherung und Restauration des Prozessorstatus bei der Prozessumschaltung. Der Anwender-Stack kann vom Programmierer frei genutzt werden. Bei Aufruf eines Unterprogramms (Prozedur, Subroutine) wird typischerweise dynamisch ein separater Stackbereich für dessen Variablen angelegt, der bei Beendigung sofort wieder freigegeben wird.

Ein-/Ausgaberegister

Neben Pufferplätzen in der Zentraleinheit des Rechnersystems können Register auch in der Elektronik angeschlossener Peripheriegeräte oder -chips auftreten, aber auch die CPU selbst kann über integrierte Ein-/Ausgaberegister verfügen. Sie lassen sich in der Regel in die gleichen Unterkategorien einteilen wie die obige Liste für reine CPU-Register. Ein paar repräsentative Beispiele:

  • Die Statusregister der Steuerwerke der externen Massenspeicher umfassen neben Zustands- und Datenregistern in der Regel Adressregister, die sich auf Adressangaben des Massenspeichers beziehen, heute meistens Sektornummern.
  • In Video-Chips steuern die Bits in den Zustandsregistern z. B. die verschiedenen Video-Modi, Datenregister können z. B. Sprite-Daten enthalten.
  • Bei einer parallelen Schnittstelle enthält ein Datenregister die eigentlichen Druckdaten und ein Zustandsregister die Handshake-Bits. Oft gibt es hier zusätzlich ein Zustandsregister namens DDR (für data direction register), über das die Datenrichtung (Ein- oder Ausgang) der Datenleitungen programmiert werden kann (z. B. bei bidirektionaler Verwendung).

Diese I/O-Register sind häufig über Portnummern als I/O-Ports auch vom Programm der Zentraleinheit erreichbar, oder werden in den Adressraum des Hauptspeichers eingeblendet (Memory Mapped I/O). Je nach Sichtweise hat sich dabei dennoch die begriffliche Unterscheidung von Speicherplätzen in den RAM-Speicherbanken und Registerplätzen an Logikbausteinen erhalten.

Elektrische Registertypen

8-Bit-Register, aus D-Flipflops zusammengesetzt

Die oben aufgeführten verschiedenen Registertypen sind nach ihrer Anwendungsfunktion kategorisiert. Ein weiterer Gesichtspunkt ist die elektrische Typisierung der verschiedenen Register.

  • Die meisten Register (Statusregister, Parallel-I/O-Datenregister) sind einfache Latches, die einzelne Bits speichern können und sie zum Lesen ausgeben.
  • Der Programmzähler, das Stackregister und Timer-Register sind Beispiele für Mehrbit-Zählerregister, die auf einen Impuls hin ihren Inhalt um 1 vergrößern oder verkleinern.

Geschichte

Bereits beim ersten Computer, der Zuse Z3 von 1941 und ihrem Vorgänger der Zuse Z1 von 1938, sind als Operanden für die arithmetischen Operationen im "Rechenwerk" zwei Speicherstellen "R1" und "R2" in der Wortgröße der Maschine vorhanden. Zum Datenaustausch (Laden und Speichern) zwischen diesen Registern und dem vom Rechenwerk getrennt zu sehenden Speicherwerk sind spezielle Maschinenbefehle implementiert.

Die Entwicklung der Register ist also eng verknüpft mit der technischen Entwicklung des Arbeitsspeichers der frühesten Computer: Die ersten Computer hatten gar keinen Arbeitsspeicher im heutigen Sinne. Sämtliche Daten und das Programm selbst waren auf gänzlich anderen Medien, wie zum Beispiel mechanische Speicher, Lochkarten und magnetischen Trommelspeichern, abgelegt. Damit das Rechenwerk eine Operation ausführen konnte, mussten vom Massenspeicher Worte in die Pufferstellen des Rechenwerks übertragen werden, die einen Wert in die Schaltlogik abgeben konnten. Der am Ausgang der Schaltlogik entstehende Wert musste wieder gepuffert werden, bis er auf den Massenspeicher ausgeschrieben werden konnte. Eben diese Pufferplätze nannte man Register (von lateinisch: regesta; aus regerere eintragen).

Schon früh erkannte man, dass der Programmablauf optimiert werden konnte, wenn man Zwischenwerte auch über einige wenige Operationen hinweg puffern konnte, und etwa in der übernächsten Operation aufaddieren konnte. So wurden aus Einzelregistern ein Registersatz, die zuerst ebenfalls noch aus Röhren oder Relais bestanden, mit fortschreitender technischer Entwicklung dann aber durch Ferritkernspeicher ersetzt wurden. Die damit mögliche Adressberechnung für den Kernspeicher führte zu einer Aufspaltung der Begriffe – die Nennung als Register meint weiterhin Pufferplätze, deren Ort im Befehlscode des Rechenwerks hart codiert ist, während der Kernspeicher über Indexregister indirekt adressiert wird.

Zur Zeit der Kernspeicher waren die Datenwerte im Arbeitsspeicher noch direkt mit dem Rechenwerk verknüpft. Ein Befehlscode enthielt neben Rechenregistern, deren Wert direkt in die Rechenlogik einging, die codierte Angabe von Indexregistern, deren Wert auf die Adressleitungen des Kernspeichers gelegt wurde, und der ausgehende Wert der Ferritkerne dann in die Rechenlogik geführt wird. Der Kernspeicher konnte dabei einige tausend Plätze umfassen. Mit immer schnellerem Rechenwerk und dem Übergang zu billigerem aber langsameren Hauptspeicher auf Basis von Kondensatoren (dynamischer RAM) wurden wieder Pufferplätze notwendig, bei dem Werte aus dem Hauptspeicher erst in Registerplätze am Rechenwerk kopiert werden, um von dort verarbeitet zu werden.

Weblinks

 Commons: Prozessorregister – Sammlung von Bildern, Videos und Audiodateien

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Computer-Betriebssystem — Ein Betriebssystem ist die Software, die die Verwendung (den Betrieb) eines Computers ermöglicht. Es verwaltet Betriebsmittel wie Speicher, Ein und Ausgabegeräte und steuert die Ausführung von Programmen. Betriebssystem heißt auf Englisch… …   Deutsch Wikipedia

  • Register Allocation — In der Programmoptimierung bezeichnet die Registerzuteilung (engl. Register Allocation) den Prozess der Zuteilung einer großen Anzahl von Programmvariablen auf eine kleine Anzahl von Registern im Hauptprozessor. Das NP vollständige[1] Problem der …   Deutsch Wikipedia

  • Register — Die Bezeichnung Register (von lateinisch: regesta; aus regerere eintragen) bezeichnet: Organisation: Register (Nachschlagewerk): Eine alphabetische Liste von Begriffen oder Bezeichnungen, beispielsweise in einem Index, eine systematische Sammlung …   Deutsch Wikipedia

  • Register Transfer Level — Das Register Transfer Level (RTL, deutsch: Registertransferebene) ist eine Abstraktionsebene in der Hardware Modellierung von digitalen Schaltkreisen. Beim Entwurf auf dieser Ebene wird das System durch den Signalfluss zwischen den Registern… …   Deutsch Wikipedia

  • computer science — computer scientist. the science that deals with the theory and methods of processing information in digital computers, the design of computer hardware and software, and the applications of computers. [1970 75] * * * Study of computers, their… …   Universalium

  • Computer Weekly — Editor Bryan Glick Categories Computer magazine Frequency Weekly First issue September 1966 Final issue 5 April 2011 Company Reed Business Information …   Wikipedia

  • Register — may refer to:In linguistics: * Register and contour tones, a linguistics term for tones distinguished by relative pitch * Register (sociolinguistics), a form of a language used for a particular purpose or social setting * Register (phonology), a… …   Wikipedia

  • Computer ethics — is a branch of practical philosophy which deals with how computing professionals should make decisions regarding professional and social conduct.[1] Margaret Anne Pierce, a professor in the Department of Mathematics and Computers at Georgia… …   Wikipedia

  • Computer game tracking websites — are websites that maintain performance statistics for players of certain video games, allowing players to evaluate their competitive performance and ranking and allowing players to seek out others of comparable ability. Contents 1 Examples 1.1… …   Wikipedia

  • Register machine — In mathematical logic and theoretical computer science a register machine is a generic class of abstract machines used in a manner similar to a Turing machine. All the models are Turing equivalent. Contents 1 Overview 2 Formal definition 3 …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”