Indexregister - Index register

Indexregisteranzeige auf einem IBM 7094- Mainframe aus den frühen 1960er Jahren.

Ein Indexregister in der CPU eines Computers ist ein Prozessorregister oder ein zugewiesener Speicherort, der zum Ändern von Operandenadressen während der Ausführung eines Programms verwendet wird. Dies erwies sich als nützlich für Vektor- / Array- Operationen und für die kommerzielle Datenverarbeitung zum Navigieren von Feld zu Feld innerhalb von Datensätzen. In beiden Verwendungszwecken reduzierten Indexregister den verwendeten Speicher erheblich und erhöhten die Ausführungsgeschwindigkeit.

Der Inhalt eines Indexregisters wird zu einer unmittelbaren Adresse (die Teil des Befehls selbst ist) hinzugefügt (in einigen Fällen von dieser abgezogen ), um die "effektive" Adresse der tatsächlichen Daten (Operanden) zu bilden. In der Regel werden spezielle Anweisungen zum Testen des Indexregisters bereitgestellt. Wenn der Test fehlschlägt, wird das Indexregister um eine unmittelbare Konstante erhöht und verzweigt sich normalerweise zum Beginn der Schleife. Bei einigen Befehlssätzen kann mehr als ein Indexregister verwendet werden. In diesem Fall geben zusätzliche Anweisungsfelder an, welche Indexregister verwendet werden sollen. Während normalerweise Prozessoren, die es einer Anweisung ermöglichen, mehrere Indexregister anzugeben, den Inhalt addieren, verfügte IBM über eine Reihe von Computern, auf denen der Inhalt zusammen war oder zusammen war.

In frühen Computern ohne jegliche Form der indirekten Adressierung , hatte Array - Operationen durch durchgeführt werden Modifizieren der Befehlsadresse, die mehrere zusätzliche Programmschritte und verbraucht mehr Computerspeicher erforderlich, eine knappe Ressource in Computerinstallationen der frühen Ära (wie auch in frühe Mikrocomputer zwei Jahrzehnte später).

Geschichte

Indexregister, in frühen britischen Computern allgemein als B-Linie bekannt, wurden 1949 erstmals im britischen Manchester Mark 1- Computer verwendet. Im Allgemeinen wurden Indexregister in der zweiten Generation der Technologie, etwa 1954–1966, zum Standardbestandteil von Computern . Die meisten Maschinen der IBM 700/7000 Mainframe- Serie hatten sie, beginnend mit der IBM 704 im Jahr 1954, obwohl sie auf einigen kleineren Maschinen wie IBM 650 und IBM 1401 optional waren .

Zu den frühen "kleinen Maschinen" mit Indexregistern gehören der AN / USQ-17 um 1960 und die 9er-Serie von Echtzeitcomputern von Scientific Data Systems aus den frühen 1960er Jahren.

Während der Intel 8080 eine indirekte Adressierung über ein Register erlaubte, schien der erste Mikroprozessor mit einem echten Indexregister das Motorola 6800 gewesen zu sein , und die ähnliche MOS-Technologie 6502 nutzte zwei solcher Register gut.

Moderne Computerdesigns enthalten im Allgemeinen keine dedizierten Indexregister. Stattdessen können alle Allzweckregister eine Adresse enthalten und auf einigen Computern ein konstanter Wert und auf einigen Computern der Inhalt eines anderen Registers als Offset hinzugefügt werden, um die effektive Adresse zu bilden. Frühe Computer, die auf diese Weise entwickelt wurden, umfassen den PDP-6 und das IBM System / 360 .

Beispiel

Hier ist ein einfaches Beispiel für die Verwendung eines Indexregisters im Pseudocode der Assemblersprache, das ein 100-Eintrags-Array von 4-Byte-Wörtern summiert:

   Clear_accumulator
   Load_index 400,index2  //load 4*array size into index register 2 (index2)
loop_start : Add_word_to_accumulator array_start,index2   //Add to AC the word at the address (array_start + index2)
   Branch_and_decrement_if_index_not_zero loop_start,4,index2   //loop decrementing by 4 until index register is zero

Siehe auch

Anmerkungen

Verweise