Registros de la CPU Para poder hacer estas cosas, es obvio que la CPU necesita almacenar algunos datos temporalmente. Debe recordar la posicin de la ltima instruccin de forma que sepa dnde ir a buscar la siguiente. Necesita almacenar instrucciones y datos temporalmente mientras una instruccin est siendo ejecutada. En otras palabras, la CPU necesita una pequea memoria interna. En la estructura interna de la CPU se indican los caminos de transferencia de datos y de control lgico, que incluyen un elemento con el rtulo bus interno de la CPU. Este elemento es necesario para transferir datos entre los diversos registros y la ALU, ya que sta en realidad slo opera con datos de la memoria interna de la CPU. La figura muestra tambin los elementos bsicos tpicos de la ALU. Dentro de la CPU hay una memoria interna compuesta por un conjunto de registros. Los registros de la CPU son: - Registros visibles al usuario: Permiten al programador de lenguaje de mquina o ensamblador minimizar las referencias a memoria principal optimizando el uso de los registros. - Registros de control: Son utilizados por la unidad de control para controlar el funcionamiento de la CPU y por programas privilegiados del sistema para controlar la ejecucin de programas. - Registro de estado: Se utiliza para tomar decisiones en funcin de operaciones realizadas. - Registro puntero a pila. Registros visibles al usuario Un registro visible al usuario es aqul que puede ser referenciado por medio del lenguaje mquina que ejecuta la CPU. Prcticamente todos los diseos contemporneos de CPUs estn provistos de varios registros visibles al usuario, en oposicin a disponer de un nico acumulador. Podemos clasificarlos en: - Uso General - Datos - Direcciones - Cdigos de Condicin
Los registros de uso general pueden ser asignados por el programador a diversas funciones. A veces, su uso dentro del repertorio de instrucciones es para contener el operando para cualquier cdigo de operacin. Esto proporciona una utilizacin de registros de autntico uso general. Con frecuencia, sin embargo, existen restricciones. Por ejemplo, puede haber registros especficos para operaciones en coma flotante. En algunos casos los registros de uso general pueden ser utilizados para funciones de direccionamiento. En otros casos hay una separacin clara o parcial entre registros de datos y registros de direcciones.
Los registros de datos pueden ser usados nicamente para contener datos y no se pueden emplear en el clculo de una direccin de operando. Los registros de direccin pueden ser en s registros de uso ms o menos general, o pueden estar dedicados a un modo de direccionamiento particular. El caso ms conocido es el puntero a pila. La cantidad de registros generales o especializados es una cuestin de diseo. No hay solucin ptima, pero la tendencia parece ir hacia el uso de registros especializados. Otro problema de diseo es el numero de registros, de uso general o de datos ms direcciones, que tienen que incluirse.
A mayor cantidad de registros se requieren mayor cantidad de bits en el campo de operando. Parece ptimo entre 8 y 32 registros. Menos registros se traducen en ms referencias a memoria; ms registros no reducen notablemente las referencias a memoria. Por ltimo, est la cuestin de la longitud de los registros. Los registros que han de contener direcciones han de ser lo suficientemente grandes como para albergar la direccin ms grande. Los registros de datos deben ser capaces de contener valores de la mayora de tipos de datos. Algunas mquinas permiten que los registros contiguos sean usados como uno para contener valores de doble longitud. Una categora final de registros, que es al menos parcialmente visible al usuario, contiene cdigos de condicin (tambin llamados indicadores o flags).
Los cdigos de condicin son bits fijados por el hardware de la CPU como resultado de alguna operacin. Por ejemplo, una operacin aritmtica puede producir un resultado positivo, negativo o nulo, o con desbordamiento. Adems de almacenarse el propio resultado en un registro o en la memoria, se obtiene tambin un cdigo de condicin. El cdigo puede ser examinado con posterioridad como parte de una condicin de bifurcacin condicional. Los bits de cdigos de condicin se renen en uno o ms registros. Por lo general, forman parte de un registro de control. Comnmente, las instrucciones de mquina permiten que estos bits sean ledos por referencia implcita, pero no pueden ser alterados por el programador. En algunas mquinas, una llamada a subrutina dar lugar a la salvaguarda automtica de todos los registros visibles al usuario, que sern restablecidos en el retorno de la subrutina.
La CPU lleva a cabo la salvaguarda y restablecimiento como parte de la ejecucin de las instrucciones de llamada y retorno, respectivamente. Esto permite a cada subrutina usar independientemente los registros visibles al usuario. En otras mquinas, es responsabilidad del programador guardar los contenidos de los registros visibles al programador relevantes antes de la llamada a subrutina, teniendo que incluir en el programa instrucciones para este fin.
Registros de control Hay diversos registros de la CPU que se pueden emplear para controlar su funcionamiento. La mayora de stos, en la mayor parte de las mquinas, no son visibles al usuario. Algunos de ellos pueden ser visibles a instrucciones de mquina ejecutadas en un modo de control o de sistema operativo. Naturalmente, mquinas diferentes tendrn diferentes organizaciones de registros y usar distinta terminologa. Se enumera aqu una lista razonablemente completa de tipos de registros, con una breve descripcin. Son esenciales cuatro registros para la ejecucin de una instruccin: el contador de programa , el registro de direccin, el registro de instruccin y el registro de datos. El contador de programa contiene una direccin de instruccin. Tpicamente, la CPU actualiza el PC despus de cada captacin de instruccin de manera que siempre apunta a la siguiente instruccin a ejecutar. Una instruccin de bifurcacin o salto tambin modificar el contenido de PC. La instruccin captada se carga en el registro de instruccin, donde son analizados el cdigo de operacin y los campos de operando. Se intercambian datos con la memoria por medio de registro de direcciones y el de datos. En un sistema con organizacin de bus, el de direcciones se conecta directamente al bus de direcciones, y el de datos directamente al bus de datos. Los registros visibles al usuario, sucesivamente, intercambian datos con el de datos. Los cuatro registros que acaban de mencionar se usan para la transferencia de datos entre la CPU y la memoria. Dentro de la CPU, los datos tienen que ofrecerse a la ALU para su procesamiento. La ALU puede tener acceso directo al de datos y a los registros visibles al usuario. Como alternativa, puede haber registros intermedios adicionales en el lmite de la ALU; estos registros sirven como registros de entrada y salida de la ALU e intercambian datos con el de datos y los registros visibles al usuario. Registro de estado Todos los diseos de CPUs incluyen un registro o un conjunto de registros, conocidos a menudo como palabra de estado de programa "programa status word", PSW), que contiene informacin de estado. La PSW contiene tpicamente cdigos de condicin adems de otra informacin de estado. Entre los campos comunes o indicadores se incluyen los expresados en la tabla. Bit de estado Nombre Descripcin C Acarreo Puesto a uno si una operacin da lugar a un acarreo (suma) o adeudo (resta) de un bit de orden superior. P Paridad Paridad del resultado de una operacin aritmtica o lgica. Un 1 indica paridad par y el 0 paridad impar. Z Cero Puesto a uno cuando el resultado de una operacin aritmtica o lgica es cero. S Signo Contiene el bit de signo del resultado de la ltima operacin aritmtica. O Desbordamiento Usado para indicar un desbordamiento aritmtico. I Interrupcin Usado para habilitar o inhabilitar interrupciones
Registro puntero a pila El registro puntero a pila permite almacenar la direccin de acceso a la memoria pila. Veremos su funcionamiento al tratar las subrutinas.