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
Publicar un comentario