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:
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.
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