martes, 20 de mayo de 2014

Memorias

La memoria de una computadora consiste en un conjunto de registros numerosos en forma consecutiva, cada uno de ellos de los cuales normalmente almacena un byte de información. Un byte es un conjunto de ocho bits. Cada registro tiene una dirección, a la que se le suele designar como de memoria. La denominación nibble, se refiere a un conjunto de cuatro bits. Normalmente, hay acuerdo acerca de los significativos de los términos bit, bite y nibble, pero no así sobre el concepto de palabra, el que depende de la arquitectura particular de cada procesador.
Los tamaños de palabra típicos son de 16, 32, 64 y 128 bits, siendo el tamaño de palabra de 32 bits el más común para las computadoras usadas principalmente hoy en día, mientras se observa el crecimiento de la popularidad de las palabras de 64 bits.
En una maquina con capacidad de direccionamiento al byte, el menor objeto al que puede hacerse referencia en memoria es el byte; no obstante, es habitual que tenga instrucciones que pueden leer y escribir palabras de más de un byte. Las palabras de más un byte se almacenan como una secuencia de bytes y se direccionan a partir del byte menos significativo de la palabra almacena.
Cuando se utilizan palabras de más de un byte, hay dos alternativas en cuanto a la forma de almacenar sus bytes en memoria; en la primera de ellas, el byte más significativo se almacena en la dirección más baja de memoria (big endian) y en la otra, el byte menos significativo es el que se almacena en la dirección más baja de memoria (Little endian).
La estructura de una memoria consiste en un arreglo lineal de las diversas localizaciones ordenadas en forma consecutiva. Cada una de las direcciones identificadas con un valor numérico se corresponde con una palabra específica almacenada en la misma. El número que identifica en forma univoca cada palabra se define como su dirección.
La memoria tiene un espacio de direcciones de 32 bits, los que significa que el programador puede acceder a un byte de memoria ubicado en cualquier posición en el rango de 0 a 232-1. La distribución de estos sectores forma el mapa de memoria y puede diferir entre una implementación y otra, y esta es una de las causas por las cuales algunos programas compilados para el mismo tipo de procesador pueden no ser compatibles entre sistemas.
El espacio de direcciones se refiere al rango numérico de direcciones de memoria al que pude hacer referencia la unidad de proceso.

La unidad central de proceso (CPU)
La estructura de la CPU consiste en una sección de datos, formada por los registros y la unidad aritmético-logica (ALU), y una sección de control, la que interpreta las instrucciones y realiza las transferencias entre registros. La sección correspondiente a los datos se conoce también como trayecto de datos (datapath).
La unidad de control es la responsable de la ejecución de las instrucciones del programa, las que se almacenan en la memoria principal. Existen dos registros que forman la interfaz entre la unidad de control y la unidad de datos, llamados contador de programa y registro de instrucción. El contador de programa contiene la dirección de la instrucción en ejecución. La instrucción a la que apunta el PC se rescata de memoria y se almacena en el JR, desde donde se la interpreta. Los pasos que lleva a cabo la unidad de control es la ejecución de un programa son los que se detallan:

  •  Búsqueda en memoria de la próxima instrucción a ser ejecutada.
  • Decodificación del código de operación.
  • Búsqueda de operandos en memoria, si los hubiera.
  • Ejecución de la instrucción y almacenamiento de los resultados.
  • Vuelva al paso 1.
La unidad de control es la responsable de coordinar las distintas unidades que intervienen en la ejecución de un programa de computadora. El trayecto de datos está constituido  por un conjunto o bloques de riesgos y por la unidad aritmético-logica. La ALU implementa una variedad de operaciones de uno y dos operandos, entre las cuales se incluyen la suma, el producto y las operaciones lógicas de disyunción, conjunción y negación.
El conjunto de instrucciones es la colección de instrucciones que un procesador puede ejecutar, lo que, en efecto, define al procesador. Difieren en los tamaños de las instrucciones, el tipo de operaciones que permiten, el tipo de operandos sobre los que pueden operar y los tipos de resultados que pueden entregar.
Un compilador es un programa de computadora que transforma programas escritos en lenguaje de alto nivel, en lenguaje de máquina. En el proceso de compilación de un programa (proceso de traducción), el programa fuente escrito en lenguaje de alto nivel se transforma en lenguaje simbólico, luego de los cual un programa ensamblador traduce este lenguaje hacia el código de máquina del procesador de destino. Estas traducciones se producen, respectivamente, en los llamados momento de la compilación y modelo del ensamble. El programa objeto resultante puede vincularse con otros programas objeto en el momento de enlace. El programa objeto, normalmente almacenado en un disco, se carga en la memoria principal en el momento de la carga y se ejecuta desde la CPU en el momento de la ejecución.

ARC, una computadora RISC
RISC es un acrónimo para la definición de una computadora con un conjunto reducido de instrucciones. La ARC, que es un subconjunto de la SPARC que es un procesador desarrollado por Sun Microsystems, contiene la mayoría de las características importantes de la arquitectura SPARC, pero sin algunas prestaciones más complejas presentes en un procesador comercial.
ARC es una máquina de 32 bits con capacidad de direccionamiento de memoria por bytes; puede manejar tipos de datos de 32 bits, pero toda la información se almacena en memoria en la forma de bytes. La dirección de la palabra de 32 bits es la del byte almacenado en la menor de las direcciones de la palabra.
Cada entero se almacena en memoria como un conjunto de cuatro de bytes. La arquitectura ARC funciona con el byte más significativo almacenado en la menor de las direcciones asignada a la palabra, lo que se conoce como almacenamiento big endian.

El conjunto de instrucciones ARC
El tamaño de todas las instrucciones es de una palabra (32 bits). Cada instrucción está representada por un código nemotécnico, definido como un nombre utilizado para simbolizas la instrucción.

Formato del lenguaje simbólico de ARC
Cada lenguaje simbólico tiene su propia sintaxis. La sintaxis a respetar es la del lenguaje simbólico de SPARC. El lenguaje ofrece “formato libre”, lo que significa que cualquier campo puede empezar en cualquier columna, debiendo mantenerse el ordenamiento relativo de izquierda a derecha.
La arquitectura ARC contiene 32 registros denominados %r0  - %r31, cada uno de los cuales contiene una palabra de 32 bits.

Formatos de instrucción en ARC
El formato de instrucción define la manera en que el ensamblador distribuye los diversos campos de una instrucción y la forma en que los interpreta la unidad de control de ARC. Los cinco formatos son: SETHI, Salto, Llamada, Aritmético y Memoria.

Formatos de datos en ARC
Soporta 12 formatos de datos diferentes, se agrupan en tres tipos: entero signado, entero sin signo y punto flotante. Dentro de estos tipos, los tamaños admisible son byte, media palabra, palabra, palabra rotulada, palabra doble y palabra cuádruple. La palabra rotulada utiliza los dos bits menos significativos para indicar un desborde, en el caso en que se intente almacenar un valor mayor que 30 bits en los 30 bits asignados en la palabra.

Descripción de las instrucciones de ARC

La traducción de a código objeto se agrega sol como referencia. En las descripciones, la referencia al contenido de una posición de memoria se indica con corchetes, tal como en “1d [x], &r1”, que copia el contenido de la dirección x en el registro &r1. La referencia a la dirección de una posición de memoria se especifica directamente, sin corchetes, como ocurre en “call sub_r”, instrucción que genera un llamado a la subrutina sub_r. Solo ld y st pueden acceder a memoria, razón por la cual admiten el uso de corchetes. Los registros siempre se mencionan en función de su contenido, nunca en términos de una dirección: por consiguiente, no hay necesidad alguna de encerrar entre corchetes las referencias a los registros.

No hay comentarios.:

Publicar un comentario