Registres de la CPU

Els registres dels processadors són la porció de memòria més pròxima a la CPU dins de la jerarquia de memòria d'un computador i és el tipus de memòria d'accés més ràpid.

Els registres de la CPU permeten guardar temporalment dades que el processador necessita gairebé de forma immediata. Quan la CPU acaba d'executar l'última instrucció i torna a començar una altra instrucció, accedeix als registres per obtenir les següents dades a executar. Com que el temps que passa entre instrucció i instrucció és molt petit, aquesta memòria s'ha d'omplir i buidar de forma instantània. Hi ha diversos tipus de registres segons el tipus de dada que guarden. N'hi ha que guarden adreces de memòria, n'hi ha que guarden nombres reals, alguns són de propòsit general... Cal dir que els registres guarden dades mentre hi ha alimentació elèctrica, per tant, a la que s'atura el processador, la memòria s'esborra.

Estructura interna

modifica

Els registres d'un processador es troben formant bancs de registres, que són estructures bidimensionals formades per biestables, on cada fila la considerem com un registre. Aquesta xarxa bidimensional de biestables s'anomena Register-File Cells i porta enganxada els descodificadors necessaris de lectura i escriptura. Cada un d'aquests biestables és capaç d'emmagatzemar un bit, és a dir, pot guardar un 1 o un 0. Aquests descodificadors permeten seleccionar una fila per poder llegir o escriure tot un registre. Cada registre té 2n bits. L'estructura bàsica d'un banc de registres és la següent:

  • I: Input és per on entren les dades de m bits
  • O: Output és per on surten les dades de m bits
  • WA: Write diu a quina fila col·loquem les dades escrites
  • WE: Write Enable habilita l'escriptura de dades
  • RA: Read diu de quina fila volem llegir les dades
  • RE: Read Enable habilita la lectura de dades
  • Clk: És el senyal de rellotge que marca la velocitat a la que ha de treballar

Funcionament

modifica

Per escriure-hi dades habilitem WE, seleccionem la fila on les volem col·locar per WA i entrem les dades per l'Input. Per llegir, fem el mateix però habilitem RE, seleccionem la fila d'on volem llegir per RA i traguem les dades per Output. Els registres només poden moure una dada alhora, i per això moltes vegades es fan servir més d'un banc de registres alhora, com per exemple un per l'operand 1, un altre per l'operand 2 i un altre pel resultat. Això té un cost molt alt, ja que si el cost d'un sol registre és elevat, el cost de més d'un encara ho és més.