Registre d'index - Index register

Affichage du registre d'index sur un ordinateur central IBM 7094 du début des années 1960.

Un registre d'index dans la CPU d' un ordinateur est un registre de processeur ou un emplacement de mémoire affecté utilisé pour modifier les adresses d' opérande pendant l'exécution d'un programme. Cela s'est avéré utile pour effectuer des opérations vectorielles / tableaux et dans le traitement de données commerciales pour naviguer d'un champ à l'autre dans les enregistrements. Dans les deux cas, les registres d'index ont considérablement réduit la quantité de mémoire utilisée et augmenté la vitesse d'exécution.

Le contenu d'un registre d'index est ajouté à (dans certains cas soustrait de) une adresse immédiate (une qui fait partie de l'instruction elle-même) pour former l'adresse "effective" des données réelles (opérande). Des instructions spéciales sont généralement fournies pour tester le registre d'index et, si le test échoue, incrémente le registre d'index d'une constante immédiate et se branche, généralement jusqu'au début de la boucle. Certains jeux d'instructions permettent d'utiliser plus d'un registre d'index; dans ce cas, des champs d'instructions supplémentaires spécifient les registres d'index à utiliser. Alors que normalement les processeurs qui permettent à une instruction de spécifier plusieurs registres d'index ajoutent le contenu ensemble, IBM avait une ligne d'ordinateurs dans laquelle le contenu était ou était ensemble.

Dans les premiers ordinateurs sans aucune forme d' adressage indirect , les opérations de matrice devaient être effectuées en modifiant l'adresse d'instruction, ce qui nécessitait plusieurs étapes de programme supplémentaires et utilisait plus de mémoire informatique, une ressource rare dans les installations informatiques de l'ère ancienne (ainsi que dans premiers micro-ordinateurs deux décennies plus tard).

L'histoire

Les registres d'index, communément appelés ligne B dans les premiers ordinateurs britanniques, ont été utilisés pour la première fois dans l' ordinateur britannique Manchester Mark 1 , en 1949. En général, les registres d'index sont devenus une partie standard des ordinateurs au cours de la deuxième génération de la technologie, vers 1954-1966. . La plupart des machines de la série mainframe IBM 700/7000 en avaient, à commencer par l' IBM 704 en 1954, bien qu'elles soient facultatives sur certaines machines plus petites telles que l' IBM 650 et l' IBM 1401 .

Les premières «petites machines» avec registres d'index incluent l' AN / USQ-17 , vers 1960, et les 9 séries d' ordinateurs en temps réel de Scientific Data Systems , du début des années 1960.

Alors que l' Intel 8080 permettait un adressage indirect via un registre, le premier microprocesseur avec un vrai registre d'index semble avoir été le Motorola 6800 , et la technologie MOS 6502 similaire a fait bon usage de deux de ces registres.

Les conceptions informatiques modernes n'incluent généralement pas de registres d'index dédiés; au lieu de cela, ils permettent à tout registre à usage général de contenir une adresse, et permettent à une valeur constante et, sur certaines machines, au contenu d'un autre registre d'y être ajouté comme décalage pour former l'adresse effective. Les premiers ordinateurs conçus de cette manière incluent le PDP-6 et IBM System / 360 .

Exemple

Voici un exemple simple d'utilisation de registre d'index dans un pseudo-code en langage assembleur qui additionne un tableau de 100 entrées de mots de 4 octets:

   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

Voir également

Remarques

Références