Computing">
TP 5
TP 5
TP 5
La CPU genera direcciones que se transfieren sobre el bus de direcciones. La Memoria recibe esas direcciones a
través del mismo bus. La Memoria nunca genera direcciones y la CPU nunca recibe direcciones.
FUNCIONAMIENTO
En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU escribe la
dirección de la posición deseada de la memoria en el bus de direcciones accediendo a la memoria, teniendo
cada una de las líneas carácter binario. Es decir solo pueden representar 0 o 1 y de esta manera forman
conjuntamente el numero de la posición dentro de la memoria (es decir: la dirección). Cuanto mas líneas haya
disponibles, mayor es la dirección máxima y mayor es la memoria a la cual puede dirigirse de esta forma. En el
bus de direcciones original habían ya 20 direcciones, ya que con 20 bits se puede dirigir a una memoria de 1
MB y esto era exactamente lo que correspondía a la CPU.
2-En el Modelo de Bus de Sistema: A. ¿qué componente ejecuta las instrucciones? B. ¿cuál almacena los datos y los
programas listos para ejecutarse?
La CPU envía la trayectoria de datos para coordinar los pasos de las instrucciones y así ejecutarlas usando el bus de
control, de datos y de direcciones.
La memoria RAM almacena los datos y programas informáticos durante un determinado período de tiempo.
3-Explique cómo se ejecutarían los ciclos de búsqueda y ejecución en el modelo de Bus del Sistema.
Durante el ciclo de búsqueda la CPU generaría una dirección en bits que se transferiría por el bus de direcciones hasta
la memoria, eso haría que la memoria enviara la instrucción, a través del bus de datos a la CPU.
En el ciclo de ejecución la CPU envía las directivas por el bus de control, en caso de tratarse de una instrucción de lectura
o de escritura de memoria, el bus de direcciones contendría la dirección de la celda de memoria en la que debe leerse o
escribirse el dato.
Después la CPU mandaría las señales para enviar los datos desde la memoria por el bus de datos, y escribirlos en la celda
de memoria
Si se recibiera una instrucción con operaciones aritméticas, la CPU enviaría direcciones por el bus de direcciones, para
que la memoria le devolviera por el bus de datos, los datos a la ALU y así realizar las determinadas operaciones.
4- Indique las características de las arquitecturas RISC.
RISC: Es un modelo de arquitectura de computadoras que tiene un conjunto reducido de instrucciones, con
Instrucciones de tamaño fijo y presentadas en un reducido número de formatos, donde solo las instrucciones de carga y
almacenamiento acceden a la memoria de datos.
5-Describa la memoria del computador ARC (tamaño, rango de direcciones, mapa de memoria, tipos y tamaños de las
palabras).
ARC tiene un espacio de memoria de 32 bits, que en la arquitectura de este ejemplo se divide en distintas regiones a ser
usadas por el código del sistema operativo, el código del programa del usuario, la pila del sistema (utilizada para el
almacenamiento temporario de información) y la entrada y salida. Estas regiones se caracterizan por:
- Las primeras 2048 direcciones del mapa de memoria se reservan para ser usadas por el sistema operativo.
- Las direcciones de memoria están ordenadas en forma consecutiva. Cada locación numerada corresponde a
una palabra en ARC. El único número que identifica a cada palabra se conoce como su dirección.
- El espacio del usuario es el que se reserva para la carga de los programas ensamblados por el usuario. Puede
crecer durante el funcionamiento desde la dirección 2048 hasta que se encuentre con la pila del sistema.
- La pila del sistema se inicia en la dirección 231 - 4 y crece hacia direcciones inferiores de memoria.
- La zona del mapa de direcciones ubicada entre 231 y 232 - 1 se reserva para los dispositivos de entrada-salida.
6- Una palabra en ARC ¿cuántos registros usa?, ¿de cuántos bytes cada uno?
Una palabra tiene 32 bits, y cada instrucción tiene ese mismo tamaño, por lo que las instrucciones requieren
de 4 registros de memoria de 8 bits cada uno (1 byte) para poder almacenarse.
7- La CPU en ARC se la estudia separada en dos secciones: A. Bloque trayecto de datos: ¿Cómo está
formado? ¿De qué otra forma se lo denomina? Dibújelo, indicando las funciones de los buses y demás
elementos involucrados. ¿Cuántos registros de propósito general tiene? Particularice los registros 0, 14 y 15.
B. Bloque de control: ¿Qué función cumple?
La CPU consiste en:
-Una sección o bloque de datos que contiene registros y una ALU, se la conoce como "camino de datos" o "datapath".
-Una sección o bloque de control, que interpreta las instrucciones y realiza las transferencias entre registros.
El trayecto de datos también conocido como Datapath, está constituido por la unidad aritmético-lógica que se encarga
de procesar los datos, y por un conjunto o bloque de registros almacenados, donde se guardan datos a procesar de
forma temporal. Al igual que la memoria principal del sistema, cada registro del conjunto recibe una dirección ordenada
secuencialmente a partir de cero, al ser 32 registros solo se requieren 5 bits de dirección. Los operandos almacenados en
este bloque tienen la ventaja de ser unas 10 veces más rápidas de usar, de lo que serían si se trajesen desde la memoria.
Son tres los buses que conectan el trayecto de datos con el bus del sistema, permitiendo la transferencia de datos entre
la memoria principal y el conjunto de registros. Además, hay tres buses adicionales que permiten la búsqueda
simultánea de dos operandos almacenados en el conjunto de registros, para ser procesados por la ALU, tras lo cual se
devuelve el resultado en el conjunto de registros.
Los operandos se trasfieren desde el bloque de registros a través de dos buses que se conectan con los registros de
origen 1 (rs1) y 2 (rs2). La salida de la ALU se coloca en el bus que conduce al registro destino (rd) con el objeto de
devolver el resultado al registro correspondiente dentro del conjunto de registros.
El bloque de control es el responsable de coordinar las distintas unidades que intervienen en la ejecución del programa.
La unidad de control selecciona las operaciones como la suma, producto y operaciones lógicas de disyunción (or),
conjunción (and) y negación (not); y además los operandos a utilizar.
8- Cuántos bits se usan para indicar la dirección de un registro de la CPU? ¿Por qué?
Se usan 5 bits para especificar la dirección de un registro en la CPU de ARC, pues cada registro del conjunto, al
igual que la memoria principal, recibe una dirección ordenada secuencialmente a partir de cero, y al ser 32
registros, solo se requerirían 5 bits para poder representar todas las direcciones.
9- ¿Para qué sirven el contador de programa y el registro de instrucción?
Ambos registros el PC y el IR forman la interfaz entre la unidad de control y la unidad de datos. El contador de
programa contiene la dirección de la instrucción en ejecución, mientras que en el registro de instrucción sirve
para almacenar instrucciones, y es desde donde se la interpreta.
10- Cómo es el Ciclo de Búsqueda – Ejecución en ARC?, ¿para qué sirve? En el paso 1 del mismo ¿qué
registros del CPU están involucrados? ¿En cuánto se debe incrementa el PC y por qué?
. El ciclo de Busqueda-Ejecucion de ARC permite realizar operaciones lógicas en un orden determinado, y el orden de los
pasos es:
1. Búsqueda en memoria de la próxima instrucción a ser ejecutada, para determinar la dirección de memoria donde se
debe buscar la instrucción se utiliza el registro PC, y para almacenar la instrucción el registro IR. El contador del
programa tiene que incrementarse en 4, porque cada instrucción está formada por 32 bits que se distribuyen en 4
registros de memoria, por lo que solo así el PC indicará donde inicia la próxima instrucción.
2. Decodificación del código de operación.
3. Búsqueda de operandos en memoria, si los hubiera.
4. Ejecución de la instrucción y almacenamiento de los resultados.
5. Vuelta al paso 1.
11- Indique diferencias entre registros del CPU y registros de la memoria RAM.
. La principal diferencia entre los registros de la CPU y los de la memoria, es que los primeros son 10 veces más rápidos a
la hora de ejecutar una instrucción, pues al estar los operandos en los registros dentro del CPU, están más cerca de la
unidad aritmético lógica, y llegan más rápido a esta que si estuvieran en la memoria.
12-Explique cada subconjunto de instrucciones ARC.
13- ¿Qué es PSR? Explique las funciones de códigos de condición. ¿Cómo indicaría que el resultado es
positivo?
Registro de estado del procesador (PSR): contiene información acerca del estado del procesador, incluida la
información referida a los resultados de las operaciones aritméticas. Las “banderas aritméticas”, del registro
de estado se denominan Códigos de condición. Especifican si una operación aritmética determinada el
resultado dio cero (z), sii dio un número negativo (n), si se obtuvo un arrastre a la salida de la unidad
aritmética-lógica (c), o si se produjo un desborde (v).
El lenguaje hace distinción entre mayúsculas y minúsculas. Los campos de etiqueta y comentario son optativos.
El campo etiqueta usa caracteres alfabéticos, numéricos (siempre y cuando no sea el primer dígito), los
símbolos guión bajo (_), signo monetario ($), punto (.) y los dos puntos (:) que indica el final de la etiqueta. ¡El
campo comentario va precedido del símbolo! Los operandos se separan con comas (,) y su uso dependerá de
cada instrucción.
15-¿Qué son los formatos de instrucción?, ¿en qué se vinculan con el registro IR? En los formatos aritmético-lógicos y
de memoria ¿qué nos indica el bit 13?
¿Qué son los formatos de instrucción?, ¿en qué se vinculan con el registro IR?.
Los formatos de instrucción definen 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.
Se vinculan con el registro IR porque este almacena la instrucción y desde allí la interpreta la unidad de control y los
formatos de instrucción definen la manera en que el ensamblador distribuirá e interpretará las instrucciones la unidad
de control de ARC.
El bit 13 es el campo i (inmediato). Cuando i = 0, los operandos contenidos en los campos rs1 y rs2 se suman para
obtener la dirección. Cuando i = 1, la dirección se obtiene sumando los campos rs1 y simm13.
16- Dados los siguientes enunciados, escriba las instrucciones en assembler y luego conviértalas a código máquina.
Ejemplifíquelas dibujando mapa de memoria y registros de CPU involucrados, usted decide los valores no indicados.
Son instrucciones que son ejecutadas por un ensamblador en el tiempo de ensamblado, no por un CPU en el tiempo de
ejecución. También pueden ser usadas para manipular la presentación de un programa para hacerlo más fácil leer y
mantener.
18- ¿Qué sucede cuando una sentencia, en un proceso de traducción, aparece antes del .begin o después del .end,
para el lenguaje ensamblador de ARC?
Las directivas .begin (comienzo) y .end (final) le indican al ensamblador dónde debe comenzar y terminar,
respectivamente, el proceso de traducción. Cualquier sentencia que aparezca antes del .begin o después del .end será
ignorada. La representación simbólica de cualquier programa puede incluir más de un par .begin/ .end, pero tiene que
existir un .end por cada .begin, y debe haber al menos un .begin. El uso de las directivas .begin y .end es útil para el
proceso de depuración, porque permite que ciertas partes del programa se hagan invisibles al ensamblado.
19- Un programa que está en lenguaje de máquina debe ser pasado a lenguaje simbólico. Una vez traducido, ¿con
cuántas directivas, etiquetas y comentarios finales queda el programa traducido?
Nos debería de mostrar lo siguiente
Dirección de memoria donde se encuentra cada instrucción máquina. Para aplicaciones nativas, ésta es la
dirección de memoria real. Para Visual Basic, C# o código administrado, es un desplazamiento desde el inicio
de la función.
Código fuente del que se deriva el código ensamblado.
Bytes de código: representaciones en bytes de las instrucciones máquina o MSIL reales.
Nombres de símbolos para las direcciones de memoria.
Número de líneas correspondiente al código fuente.
20. ¿Cuántas instrucciones a la vez ejecuta la CPU en ARC?, ¿en qué lenguaje deben estar esas instrucciones?
La CPU en ARC solo puede ejecutar una instrucción de una por vez, y cada una se encuentra en lenguaje assembler
representada por un código nemotécnico, definido como un nombre utilizado para simbolizar la instrucción.
21-¿Qué es un ensamblado de dos pasadas?
En la primera pasada, se encuentran todos los identificadores que denoten posiciones de memoria y se almacenan en
una tabla de símbolos (distinta de la del compilador). Cuando se encuentran por primera vez los identificadores, se les
asigna posiciones de memoria.
En la segunda pasada, el ensamblador examina el archivo de entrada de nuevo. Esta vez traduce cada código de
operación a la secuencia de bits que representa esa operación en lenguaje de máquina, y traduce cada identificador que
representa una posición de memoria a la dirección dada por ese identificador en la tabla de símbolos.
22- Crear una tabla de símbolos para el segmento de programa ARC que se muestra a continuación.
23-Escribir una subrutina para ARC que realice una operación de intercambio entre los operandos de bits x = 25 e y =
50, los que se encuentran almacenados en memoria. Usar la menor cantidad de registros.
.begin
.org 2048
ld [y], %r2
call add_2
.end
.begin
x: 25
y: 50
.end
24- Desarrolle un programa en assembler que realice el cálculo: z = x + y. Pruebe el mismo en el Simulador ARC, que se
encuentra en el aula virtual, copie y pegue las pantallas que surgen
25- A continuación se muestra una sección de código simbólico de ARC, responda: A. ¿Qué función cumple el
programa? ¿Cómo lo hace? Realice una prueba de escritorio. B. Indique cuales son las etiquetas, las directivas, las
instrucciones y los comentarios. C. Realice la tabla de símbolos. D. Páselo a lenguaje máquina.
Lo hace de la siguiente manera : lo hace a través de un sistema repetitivo con una subrutina , en la cual el programa lo
que hace es al principio carga los valores de %r1 y %r2 de “a” , luego verifica que %r3 sea = 0 y después testea el resto de
los elementos , finaliza cuando el resultado sea = 0, %r1 se le resta -4 para que se decremente la longitud de arreglo y se
informa al programa de las otras direcciones que se quieren sumar , se carga los registro de %r4 y %r5 , y se suman en la
memoria %r4 en %r5, después se suma con %r3 el cual pasa a ser un nuevo elemento se cargar %r3 , después se repite
la secuencia , se hace el retorno a la rutina de llamada, se da el resultado y se establecen nuevos valores
B_
C_
D_
26- Un desensamblador es un programa que lee un módulo objeto y recrea el módulo fuente en lenguaje simbólico.
Dado el siguiente código objeto, desensamblarlo para obtener las sentencias correspondientes del lenguaje simbólico
ARC. Dado que el código objeto no contiene información suficiente para determinar los nombres de los símbolos, se
les asignarán ordenadamente las letras del abecedario a medida que sean necesarias.
Ld %r0,2072, %r2
Numero 15
Numero 9
Numero 0
27- Compare la máquina de Von Neumann, el modelo IAS y la arquitectura ARC: • Memoria: tamaño de esta, rango de
direcciones, formato de las palabras. • CPU: cantidad de registros, tamaño de estos. • Otras diferencias.
ARC
Tamaño de memoria: 4GB
Rango de direcciones de la memoria: última palabra = 2^32 - 4
Ultimo registro =2^32 - 1
Formato de palabras: 32 bits
Instrucción: 32 bits
CPU: 38 registros
Formato de registros: 32 bits
IAS
Tamaño de memoria: 1000 palabras
Rango de direcciones de la memoria: 0-999
Formato de palabras: 40 bits
Instrucción: 20 bits (12 bits instrucciones y 8 bits hace trabajar a la ALU)
Registros: PC-IR-MBR-MAR-AC-MR-IBR
Puede sacar 2 instrucciones a la vez (ventaja respecto a ARC)
VON NEUMAN
Tamaño de memoria: 4GB= 2^32
Formato de palabras: 40 bits
Instrucción: 40bits (8 codop y 32 instrucciones)
No posee MQ ni IBR (desventaja respecto a IAS)
Tiene más memoria que IAS