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.


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.

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