EXPOSIÓN 2: Registros Auxiliares, Registros de Control de Programas, Registros de instrucciones

EXPOSIÓN 2: Registros Auxiliares, Registros de Control de Programas, Registros de instrucciones

Registro MAR.

En arquitectura de ordenadores, el Memory Address Register (MAR), en español Registro de Direcciones de Memoria, es un registro específico de alta velocidad, integrado en el microprocesador. Este registro contiene la dirección del dato que se quiere leer o escribir. El registro está conectado con el bus de direcciones, y su contenido se refleja en este bus.

El número de direcciones que se pueden direccionar con una CPU depende del tamaño del MAR. Si el MAR tiene n bits de tamaño entonces se podrán direccionar un máximo de 2n palabras.

Las direcciones de memoria son asignadas por el sistema operativo a cada programa en ejecución, asegurándose este, comúnmente en segundo plano, que las direcciones utilizadas por un ejecutable u otro proceso no se solapen o se escriba en posiciones protegidas de memoria, por ejemplo, en el sector de arranque.

Los sistemas operativos actuales son comúnmente diferenciados según el ancho de palabra soportado por sus registros, es decir 32 y 64 bits. Estas cifras se refieren a la máxima capacidad que dichos sistemas operativos pueden direccionar, así un sistema de 32 bits podría acceder y direccionar, sin utilizar memoria virtual, un máximo de 232 posiciones de memoria, usualmente designadas por un código hexadecimal. Debido a esto, el rango de valores naturales que pueden ser almacenados en 32 bits es de 0 (cero) hasta 4 gigabytes de capacidad límite de los sistemas operativos de 32 bits.

Para los sistemas de 64 bits, siguiendo el razonamiento anterior, obtendríamos 264 posibilidades, lo que se traduce en un rango de valores desde 0 (cero) hasta los 18.400.000.000 de gigabytes direccionables.

Sistema de memoria.

Todo computador necesita un sistema de memoria para almacenar los programas que se ejecutan y los datos necesarios para ejecutar estos programas. Desde el punto de vista del programador, sería deseable disponer de cantidades ilimitadas de memoria y de velocidad ilimitada, si fuera posible, para almacenar el programa que se quiere ejecutar y los datos necesarios; eso permitiría al programador hacer la tarea de escribir programas sin tener que enfrentarse a ningún tipo de limitación. Lógicamente, este deseo no es factible y las cantidades de memoria de que dispone un computador tienen una limitación en capacidad y velocidad.

La cantidad de memoria que puede tener un computador responde básicamente a un factor de coste: cuanta más memoria instalada, más elevado es el coste. De manera parecida, la velocidad de la memoria también depende del coste. Las memorias más rápidas tienen un coste más elevado, pero no se puede conseguir toda la velocidad necesaria simplemente incrementando el coste; hay además un factor tecnológico que limita la velocidad de la memoria: no podemos adquirir memoria más rápida que la que está disponible en el mercado en un momento dado.

Existen diferentes tipos de memorias, con capacidades y tiempos de acceso diferentes. En general, cuanta más capacidad de almacenamiento tiene una memoria, mayor es el tiempo de acceso. Es decir, las memorias con gran capacidad son memorias lentas, mientras que las memorias rápidas (tiempo de acceso pequeño) suelen tener poca capacidad de almacenamiento. Las memorias rápidas son más caras que las memorias lentas. Por ello, los diseñadores de computadores deben llegar a un compromiso a la hora de decidir cuánta memoria ponen en sus diseños y de qué velocidad o tiempo de acceso.

En los últimos años, la evolución de la tecnología ha permitido reducir mucho el espacio necesario para almacenar un bit de información. Eso ha originado que el tamaño de las memorias aumente mucho con relación al espacio físico que ocupan y que se reduzca el precio que se ha de pagar por un bit de información. Así, los discos duros han pasado de los 20 Mbytes de capacidad a mediados de década de los ochenta a los 2.000 Gbytes a finales del 2010 (100.000 veces más), aunque ocupan el mismo espacio físico (incluso son un poco más pequeños) y cuestan casi lo mismo.

Esto ha representado una reducción importante en el precio por bit. Este ha sido un factor muy importante para que los computadores actuales incorporen mucha más memoria que los computadores de hace treinta años. Por lo tanto, a la hora de diseñar un sistema de memoria, hay que tener presentes las características de capacidad, velocidad (y tiempo de acceso) y coste por bit.

Otras cuestiones también importantes que cabe considerar son la localización, la organización, el método de acceso o la tecnología de fabricación.

 Decodificador.

Un decodificador es un circuito lógico que convierte un código binario de entrada de N bits en M líneas de salida de manera tal que cada una de estas líneas solo sea activada para una combinación de entradas.

Tienen como función detectar la presencia de una determinada combinación de bits en sus entradas y señalar la presencia de este código mediante un cierto nivel de salida. Un decodificador posee N líneas de entrada para gestionar N bits y en una de las 2N líneas de salida indica la presencia de una o más combinaciones de n bits. 2 N Para cualquier código dado en las entradas solo se activa una de las N posibles salidas.

Los decodificadores se emplean fundamentalmente para seleccionar los diferentes puertos de E/S (entrada/salida) y así la computadora pueda comunicarse con los diferentes dispositivos externos (periféricos). Estos decodificadores son conocidos como decodificador de direcciones de puertos.



Comentarios

Entradas más populares de este blog

EXPOSIÓN 3: Formato de instrucciones, Conjunto de instrucciones, Código de operación, Unidad de control micro-programada

MANTENIMIENTO DE COMPUTADORAS (RESUMEN)

Mantenimiento de computadoras