miércoles, 28 de agosto de 2013

Actividad #4

REGISTROS

Para ejecutar las instrucciones la CPU requiere de algún tipo de almacenamiento temporal. Esta pequeña memoria interna, de alta velocidad, está constituida por registros, los cuales se pueden utilizar para el almacenamiento temporal de operandos o datos que se utilicen con frecuencia. Cada registro puede almacenar una palabra de dato. Los tiempos de acceso a los registros son generalmente de 5 a 10 veces más rápidos que los de acceso a memoria.

En la figura se muestra un esquema simplificado de las conexiones entre registros ULA y unidad de control en el CPU.




Foto



                                        

Los registros de la CPU están clasificados en dos categorías de acuerdo a sus funciones, aunque no existe una clara separación entre las dos.

  • Registros visibles al usuario. Permiten al programador de lenguaje de máquina o ensamblador minimizar las referencias a la memoria principal, cuando optimiza el uso de los registros.
  • Registros de control y estado. Son utilizados por la unidad de control para controlar el funcionamiento de la CPU, y por programas privilegiados del sistema operativo para controlar la ejecución de programas.

(Antes mencionamos que no existe una clara separación entre las dos categorías, por ejemplo aunque en la mayoría de las máquinas el Contador de Programa(PC) no es visible al usuario, en algunas si lo es.




REGISTROS VISIBLES AL USUARIO:
Son aquellos que pueden ser referenciados por medio del lenguaje de máquina que ejecuta la CPU. Se pueden clasificar en las siguientes categorías:

  • Registros de Propósito General: pueden ser asignados por el programador a una gran variedad de funciones. Puede contener el operando de cualquier instrucción.
  • Registros de Datos: Se utilizan únicamente para almacenar datos, y no pueden utilizarse para el cálculo de la dirección de un operando.

REGISTROS DE DIRECCIONES
Pueden ser de uso más o menos general, o pueden estar dedicados a un modo particular de direccionamiento. Como ejemplo tenemos:

  • Apuntadores de segmento: contiene la dirección de la base del segmento en una máquina con direccionamiento segmentado.
  • Registros índices: Utilizados para direccionamiento indexado, y pueden ser autoindexados.
  • Apuntadores de Pila: Si existe un direccionamiento de pila visible al usuario, entonces la pila está en memoria y hay un registro dedicado que apunta al tope de esta.

REGISTROS DE CODIGOS DE CONDICION (banderas(flags)
Son bits fijados por el hardware de la CPU como resultados de una operación. Por ejemplo una operación aritmética puede producir un resultado positivo, negativo, nulo o con desbordamiento. Además de almacenar el propio resultado en memoria, se obtiene también un código de condición, que puede ser consultado como parte de una bifurcación condicional. Los bits de códigos de condición se reúnen en uno o más registros. Normalmente forman parte del registro de control. Generalmente las máquinas permiten que estos bits se lean mediante referencias
Implícitas, pero no pueden ser alterados por el programador. En algunas máquinas, una llamada a una subrutina implica guardar el contenido de los registros visibles al usuario, para reestablecerlos al regreso. Esta tarea es realizada por el CPU como parte de la ejecución de la llamada y del regreso. Esto permite que cada subrutina utilice los registros independientemente. En otras máquinas es responsabilidad del programador guardar y reestablecer los valores de los registros Al momento de diseñar los registros de un CPU hay varios puntos que hay que considerar. Uno muy importante es la especialización, que trata de si deben utilizarse únicamente registros de propósito general o especializar su uso. Con el uso de registros especializados puede estar implícito en el código de operación el tipo de registro al que hará referencia un operando. Este debe identificar únicamente un registro de un conjunto especializado, en lugar de uno de entre todos los registros. Esto por un lado ahorra bits, pero la especialización limita la flexibilidad del programador. No existe una solución única en este punto, pero la tendencia es el uso de los registros especializados.

Otro punto es el Número de Registros, ya sean de propósito general, de datos o de direcciones. Esto afecta el diseño del conjunto de instrucciones dado que más registros requieren más bits de operandos.
Al parecer de 8 a 32 registros son opt5imos. Utilizar pocos registros produce más referencias a la memoria; muchos registros no reducen notablemente el número de referencias a memoria. Sin embargo, existe un nuevo planteamiento, el cual encuentra ventajas en el uso de cientos de registros, y se encuentra en algunos sistemas RISC Un último punto en el diseño es la Longitud de los Registros. Los registros que contienen direcciones deben ser lo suficientemente grandes para contener direcciones grandes. Los registros de datos deben ser capaces de almacenar valores de la mayoría de los tipos de datos. Algunas máquinas permiten el uso de dos registros contiguos para almacenar valores de longitud doble.

REGISTROS DE CONTROL Y ESTADO
Hay una gran variedad de registros que son utilizados para controlar la operación del CPU. La mayoría de estos, en muchísimas máquinas, no son visibles al usuario. Algunos duden ser visibles a instrucciones de máquina realizadas en un modo de control o de sistema operativo.
Por supuesto, existen diferentes organizaciones de registros y utilizan diferente tecnología. A continuación se muestra una lista, razonablemente completa, de tipos de registros y una breve descripción.


Registros esenciales para la ejecución de una instrucción:

  • Registro de dirección de memoria MAR: Específica la dirección de memoria a la que se está accediendo. Está conectado al bus de dirección.
  • Registro de datos de memoria MDR: Contiene el valor a escribir en la memoria o el último valor  leído de la memoria. Está conectado al bus de datos.
  • Contador de Programa PC: Contiene la dirección de la próxima instrucción a captar.
  • Registro de Instrucción IR: Almacena la instrucción que actualmente se está ejecutando


MAR: Memory Address Register;   
MDR: Memory Data Register; 
PC:Program Counter;
IR:Instruction Register



El PC es actualizado por el CPU después de cada búsqueda de instrucción, por lo que siempre apunta a la siguiente instrucción a ser ejecutada. Una instrucción de salto también modifica al PC. La instrucción buscada se coloca en el IR donde el código de operación y el operando son analizados. Los datos se intercambian utilizando MAR y MDR. Estos cuatro registros se utilizan para la transferencia de datos entre el CPU y la memoria. Dentro del CPU los datos son presentados a la ULA para procesarlos. La ULA debe tener acceso directo al MDR y a los registros visibles al usuario.

En la figura se muestran los dos registros involucrados directamente con el acceso a memoria.

Foto


Todos los diseños del CPU incluyen un registro, o conjunto de registros, conocido como palabra de estado del programa PSW (program status word). Frecuentemente el PSW contiene códigos de condición y otra información de estado. Entre los campos comunes se incluyen los siguientes:

  • Signo: Contiene el bit de signo resultante en la última operación aritmética.
  • Cero: Puesto a 1 cuando el resultado es cero.
  • Acarreo: Puesto a 1 si la operación da como resultado un acarreo del bit más significativo.
  • Igual: Puesto en 1 si el resultado de una comparación lógica es la igualdad.
  • Overflow: Utilizado para indicar un desbordamiento en una operación aritmética.
  • Interrupt enable disable: Utilizada para habilitar o deshabilitar las interrupciones.

Supervisor: Indica cuando el CPU está operando en modo supervisor o en modo usuario. Ciertas instrucciones y áreas de memoria solo pueden accesar en modo supervisor.

No hay comentarios:

Publicar un comentario