Está en la página 1de 30

TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

1. Dibuje el modelo de Bus de Sistema. Explique las funciones de sus componentes.

●Bus de Datos: describe qué información se está transmitiendo.

●Bus de Dirección: describe hacia dónde se transfiere la información.

●Bus de Control: como se transfiere la información y que se hará con ella.

●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 direccione s.

2. En el Modelo de Bus de Sistema:

A) ¿Qué componente ejecuta las instrucciones?


La CPU ejecuta las instrucciones.

B) ¿Cuál almacena los datos e instrucciones listos para ejecutarse?


La memoria almacena los datos y los programas listos para ejecutarse.

. Explique cómo se ejecutarán los ciclos de búsqueda y ejecución en el modelo de Bus del
Sistema.

Ciclo de Instrucción;

CICLO DE BÚSQUEDA:

● Desde la CPU, que tiene el PC, por el Bus de Direcciones, se envía la dirección de la

instrucción a buscar en la memoria.


● El Bus de Control le indica a la memoria que quiere leer.

P á g i n a 1 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

● Por el Bus de datos sale la instrucción de la memoria y va a la CPU, se almacena en el


IR.

CICLO DE EJECUCIÓN:

● Se analiza el IR. La ALU y la UC ejecutan la instrucción.


● El resultado se devuelve por el Bus de datos a la memoria para su almacenamiento, o a
un dispositivo de salida.

P á g i n a 2 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

Se incrementa el PC para pasar a otra instrucción.


4. Indique las características de las arquitecturas RISC.

RISC: Computadora con un conjunto reducido de instrucciones.

Características:

● Instrucción de único ciclo


● Carga/almacenamiento son instrucciones separadas Arquitectura registro-registro
● Instrucciones cortas, códigos con más líneas Implementa las instrucciones
directamente en hardware.
● Se añaden instrucciones nuevas si son de uso frecuente y no reducen el rendimiento
de las más importante.
● Compilador complejo.
5. Describa la memoria del computador ARC (tamaño, rango de direcciones, mapa de
memoria, tipos y tamaños de las palabras).

ARC: es un subconjunto del modelo de arquitectura basado en el procesador SPARC,


desarrollado por Sun Microsystems.

TAMAÑO DE LA MEMORIA

● La arquitectura ARC tiene una memoria de 4G, la cual tiene un espacio de direcciones
de 32 bits, lo que quiere decir que tiene un rango de 0 a 2 elevado a la 32-4
direcciones.
TIPOS DE PALABRAS:

● PALABRA DATO E INSTRUCCIÓN: tiene 32 bits cada una.


● PALABRA DIRECCIÓN DE MEMORIA: también tiene 32 bits, puede especificar una
dirección de memoria de 2^32=4GB.


ESPACIO DE DIRECCIONES: Es el rango numérico de direcciones de memoria al que puede hacer
referencia la CPU. Está dividido en los siguientes sectores:

P á g i n a 3 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

● Las 2 elevado a la 11 (2048) primeras direcciones del mapa de memoria se reservan


para el sistema operativo.

● El espacio para el usuario es aquel que se reserva para la carga de los programas
ensamblador del usuario y puede crecer hasta que se encuentre con la pila del sistema.
● La pila del sistema se encuentra en la dirección 2 elevado a la 31-4 y crece hacia
direcciones inferiores de memoria

P á g i n a 4 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

● La zona del mapa de direcciones ubicada entre 2 elevado a la 31 y 2 elevado a la 32-1


se reserva para los dispositivos de entrada y salida.
MAPA DE MEMORIA:

6. Una palabra en ARC ¿cuántos registros usa?, ¿de cuántos bytes cada uno?

La palabra en ARC tiene 32 bits y utiliza 4 registros de 8 bits cada uno.

7. La CPU en ARC se la estudia separada en dos secciones:

A) Bloque 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? Particularizar los registros 0, 14 y 15.
El bloque de trayecto de datos está formado por los registros y la ALU también se lo denomina
“DATAPATH” o camino de datos.

● Bus de datos: transporta la información que se está transmitiendo.


● Bus de direcciones: determina hacia donde está siendo enviada dicha información.

P á g i n a 5 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

● Bus de control: describe aspectos de la forma en lo que se está llevando a cabo la


transferencia de información.
Posee 32 registros de propósito general

● Registro r0: siempre contiene el valor 0.


● Registro r14: puntero de pila.
● Registro r15: registro enlace.
B) Bloque de control: ¿Qué función cumple?

El bloque de control interpreta instrucciones y realiza transferencia entre registros.

8. ¿Cuántos bits se usan para indicar la dirección de un registro de la CPU? ¿Por qué?

Para indicar la dirección de un registro de la CPU se utilizan 5 bits, porque es el número más
grande que se utiliza para poder direccionar un registro. Registro 31 = 11111.

9. ¿Para qué sirven el contador de programa y el registro de instrucción?

Contador de programa (pc): controla la dirección de la instrucción en ejecución.

Registro de instrucción (ir): almacena la instrucción.

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 incrementar el PC y
por qué?

CICLO BÚSQUEDA - EJECUCIÓN en ARC

1) Buscar de la memoria la instrucción, se involucran 2 registros PC e IR.

2) Decodificación del código de operación.

3) Búsqueda de operando en memoria.

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.

Los registros de la CPU tienen un tamaño de 32 bits mientras que la memoria RAM tiene un
tamaño de 8 bits. Por otra parte, los registros que tiene la CPU son más veloces que los de la
RAM.

12. Explique cada subconjunto de instrucciones ARC.

Las instrucciones de la arquitectura ARC se pueden dividir en 4 subconjuntos:

1) Memoria: Las dos primeras instrucciones ld (load[cargar]) y st (store [almacenar])


transfieren una palabra entre la memoria principal y alguno de los registros de ARC. Estas son
las únicas instrucciones que permiten el acceso a memoria dentro de ARC. La instrucción sethi
carga los 22 bits más significativos de un registro con la constante de 22 bits contenida dentro
de la instrucción. Se la utiliza habitualmente para construir una constante arbitraria de 32 bits

P á g i n a 6 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

a ser almacenada en un registro, en conjunto con otra instrucción que carga los 10 bits menos
significativos del registro.

2) Lógica y Aritméticas: Las instrucciones adncc, orcc y orncc realizan operaciones Y, O y

FILADD.COM
NOR respectivamente, sobre sus operandos. Uno de los dos operandos origen debe estar en
un registro. El otro puede estar en un registro o puede ser una constante incluida en la
instrucción, expresada en 13 bits en notación complemento a dos, la que se extiende a 32 bits
cuando se la utiliza. El resultado se almacena en un registro. Para el caso de la instrucción
andcc, cada bit del resultado se coloca en 1 si los bits correspondientes de ambos operandos
son simultáneamente 1; en caso contrario, el bit del resultado vale 0. En la operación orcc,
cada bit del registro es 1 si al menos uno de los correspondientes bits de los operandos vale 1;
caso contrario, el bit correspondiente del resultado vale 0. La operación orncc es
complementaria de la orcc, de modo tal que cada bit del resultado vale 0 si uno o los dos bits
correspondientes en los operandos vale 1; caso contrario, el bit del resultado se coloca en 1.
Los sufijos cc especifican que luego de realizada la operación deben actualizarse los códigos de
condición del registro de estado de modo que permitan reflejar el resultado de la operación
realizada. Las instrucciones de desplazamiento permiten desplazar el contenido de un registro
hacia otro. La instrucción srl (shift right logical [desplazamiento lógico a derecha]) desplaza un
registro hacia la derecha y carga ceros en el (los) bit(s) más significativo(s). La instrucción sra
( shift right arithmetic [desplazamiento aritmético a derecha]), que no se indica en la tabla,
desplaza el contenido original del registro a la derecha y almacena una copia del bit más
significativo del contenido original en los bits vacíos creados por el desplazamiento del
registro. Esta operación da por resultado la extensión del signo del operando, preservando su
signo aritmético. La instrucción adcc realiza sobre sus operandos una suma de 32 bits en
complemento a dos.

4) Control: Las instrucciones call y jmpl forman un par utilizado para la llamada de subrutinas y
el retorno desde las mismas, respectivamente. La instrucción jmpl también se utiliza para
transferir el control a otro sector del programa. Las últimas cinco instrucciones son instrucción
de salto o bifurcación incondicional. Las instrucciones be, bneg, bcs, bvs y ba provocan un salto
en la secuencia de ejecución de un programa. Se las llama condicionales debido a que verifican
uno o más de los códigos de condición del registro de estado, y provocan el salto si los bits
indican que la condición verificada se cumple. Se utilizan para la implementación de
construcciones de alto nivel, tales como goto, if-then-else y do-while.

13. ¿Qué es PSR? ¿Dónde se encuentra? ¿Qué instrucciones se relacionan con él? ¿Quiénes
pueden modificarlo? Explique las funciones de los códigos de condición. ¿Cómo indicaría
que el resultado es positivo?

PSR:

El PSR o registro de estado del procesador se encarga de almacenar además de los otros 28
bits, el bits N,Z,V y C. Se encuentra en la sección de control dentro del CPU. Se relaciona con
este registro las instrucciones de tipo lógica, aritmética y con las del salto condicional. Pueden
modificarlo aquellas instrucciones que terminan en CC. El bit N sirve para indicar con un 1 si el
resultado en cuestión es negativo o con un 0 si el resultado es positivo. Por otra parte, el bit Z
indica con un 1 el resultado fue cero. El bit V indica un desborde, o sea que el resultado de la
operación aritmética es demasiado grande para la ALU. Y por último el bit C indica con un 1

P á g i n a 7 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

que se produjo un acarreo a la salida de la ALU. Para indicar que el resultado es positivo, N
debe estar en 0.

14. ¿Cómo es el formato del lenguaje simbólico ARC?

El formato del lenguaje simbólico ARC es:

Etiqueta – Nemónico – Operandos Fuentes – Operandos Destinos - Comentario.

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?

P á g i n a 8 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

Los formatos de instrucción definirán como el programa ensamblador distribuye los diferentes
campos de una instrucción y la forma en que los interpreta en la Unidad de Control. Cada
instrucción tiene 32 bits. Se vinculan con el IR porque es el registro que recibirá y almacenará
la instrucción en el ciclo de la instrucción. El bit 13 (i) nos indica si se tiene un registro fuente 2
o no. Vale 0 si no existe un registro fuente 2, y 1 si existe.

16. Dados los siguientes enunciados, escriba las instrucciones en assembler y luego
conviértelas a código máquina. Ejemplifíquelas dibujando mapa de memoria y registros de
CPU involucrados, usted decide los valores no indicados.

A) Leer el contenido de la dirección 2048 de memoria, use el registro 24 como destino.


Assembler: ld: [ %r0, 2048], %r24 ! %r24 ← [ %r0, 2048] .

Código Máquina: 11 11000 000000 00000 1 0100000000000.

Mapa de memoria:

B) Escribir en la dirección 4096 de memoria el contenido del registro 24.


Assembler: st %r24, [ %r1, %r2] ! %r24 → [ %r1, %r2]

Codigo Maquina: 11 11000 000100 00001 0 00000000 00010

Mapa de memoria:

P á g i n a 9 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

P á g i n a 10 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

C) Leer el contenido de la dirección 10000 de memoria, use el registro 22 como destino.


Assembler: ld %r22, [ %r5, %r6] ! %r22 ← [ %5, %r6]

Código Máquina: 11 10110 000000 00101 0 00000000 00110

Mapa de memoria:

D) Suma aritmética usando dos registros fuentes, y el registro 5 como destino.


Assembler: addcc %r11, %r18, %r5 ! %r5 ← %r11 + %r18

Código Máquina: 10 00101 010000 01011 0 00000000 10010

Mapa de memoria:

P á g i n a 11 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

E) Suma aritmética usando un registro fuente y una constante, y el registro 10 como


destino.
Assembler: addcc %r11, 25, %r10 ! %r10 ← %r11 + 25

Código Máquina: 10 01010 010000 01011 1 0000000011001

Mapa de memoria:

P á g i n a 12 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

F) Suma lógica usando dos registros fuentes y el registro 25 como destino. Los valores
de los registros fuentes son 00000000(16) y FFFFFFFF(16). Indique que valor queda
almacenado en el registro destino.
Assembler: orcc %r1, %r3, %r25 ! %r25 ← %r1 or %r3

Código Máquina 10 11001 010010 00001 0 00000000 00011

Mapa de memoria:

P á g i n a 13 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

G) Salto a subrutina, usando un valor, no etiqueta, para la cantidad de palabras a saltar.


Assembler: call 17 !salta 17 palabras (direccion = P C + 17 4)

Código Máquina: 01 000000000000000000000000010001

Mapa de memoria:

P á g i n a 14 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

H) Salto incondicional, ba 12, almacenada en la dirección 4000 de memoria. ¿Cuál sería


la dirección hacia dónde salta?
Assembler: ba 12 !salta 12 palabras incondicionalmente

Código Máquina: 00 0 1000 010 0000000000000000001100

Mapa de memoria:

I) Salto condicional. Indique bajo que condición saltaría.


Assembler: bvs 24 !salta 24 palabras si se produjo un desborde (v = 1)

Código Máquina: 00 0 0111 010 0000000000000000011000

P á g i n a 15 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

Mapa de memoria:

P á g i n a 16 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

J) Instrucción jmpl %r15 +4, %r0, almacenada en la dirección 4000. Si tomando como
referencia que la última instrucción call esta almacenada en la dirección 2000, ¿cuál
sería la nueva dirección del PC?.
Assembler: jmpl %r15 + 4, %r0 !regresa una palabra después de cuando fue llamada la
última subrutina

Código Máquina: 10 00000 111000 01111 1 0000000000100

Mapa de memoria:

17. ¿Qué son pseudo operaciones o directivas? Describa brevemente.

Las directivas son comandos que afectan al ensamblador, y no al microprocesador, por lo que
no generan código objeto. Se utilizan para definir segmentos, símbolos, procedimientos o
subrutinas, reservar memoria, etc.

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?

P á g i n a 17 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

Una sentencia que no se encuentre comprendida entre la directiva .begin y .end, no es


considerada por el ensamblador.

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?

El programa en lenguaje máquina solo contiene datos e instrucciones, es decir que al pasarlo
de vuelta al simbólico no se tendría nada de directivas, comentarios y etiquetas.

P á g i n a 18 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

20. ¿Cuántas instrucciones a la vez ejecuta la CPU en ARC?, ¿en qué lenguaje deben estar
esas instrucciones?

La CPU de ARC ejecuta una instrucción por vez, esta última debe de estar en lenguaje máquina
para que sea posible.

21. ¿Qué es un ensamblado de dos pasadas?

En la primera pasada se determina:

● Las direcciones de todos los datos e instrucciones del programa.


● La selección de la instrucción a ser pasada a código máquina en cada caso, sin pasarlo
todavía.
● Se realizan las operaciones aritméticas.
● Se insertan las definiciones de etiquetas y constantes en una tabla de símbolos. A cada
símbolo (etiqueta) se le ingresa en la tabla el valor correspondiente a la posición en
que se encuentran.
En la segunda pasada se genera el código máquina, insertando en este los valores de los
símbolos ya conocidos en la tabla.

22. Crear una tabla de símbolos para el segmento de programa ARC que se muestra a
continuación.

P á g i n a 19 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

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 4064

P á g i n a 20 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

.global subrutina

subrutina: Id [X], %r1

Id[X], %r2

st%,[Y]

st %r2,[X]

jumpl %r15,4,%r0

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

.begin

.org 3000

ld[x], %r1

ld[y], %r2

addcc %r1,%r2, %r3

st %r4, [z]

x: 10

y:15

z:0

.end

P á g i n a 21 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

P á g i n a 22 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

25. A continuación se muestra una sección de código simbólico de ARC, responda:

Símbolo Valor

a_start 3000

length 2092

address 2096

loop 2060

P á g i n a 23 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

El programa realiza la suma de 5 números ubicados en las posiciones 3016, 3012,


3008, 3004 y 3000. Esto lo hace con un ciclo repetitivo que solo termina cuando el
producto lógico del registro 1 con si mismo sea 0 (v=1). De modo que por cada vuelta
se le resta 4 al registro 1, el cual se inicia en 20 (20/4, es decir que se le puede restar 4
a 20 un total de 5 veces). Por cada vuelta, por otro lado, se va recorriendo las
direcciones desde 3016 hasta 3000 disminuyendo de 4 en 4, de la misma forma en la
que disminuye el registro 1 .

B) Indique cuales son las etiquetas, las directivas, las instrucciones y los comentarios.
Comentarios: Son todos los que comienzan con un signo de admiración (!), por
ejemplo: “!Comienzo del ensamblado” .
Directivas: Son todas las que comienzan con un punto (.begin, .org, .equ, .end).
Etiquetas: Son las que terminan en dos puntos (a.start, loop, done, length, address, a).
Instrucciones: ld, andcc, be, ba, jmpl.
C) Realice la tabla de símbolos.

A) ¿Qué función cumple el programa? ¿Cómo lo hace? Realice una prueba de


escritorio.

P á g i n a 24 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

done 2088

a 3000

D) Páselo a lenguaje máquina.

P á g i n a 25 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

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.

P á g i n a 26 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

1100 0010 0000 0000 0010 1000 0001 0100

1100 0100 0000 0000 0010 1000 0001 1000

1000 0110 1000 0000 0100 0000 0000 0010

1100 0110 0010 0000 0010 1000 0001 1100

P á g i n a 27 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

1000 0001 1100 0011 1110 0000 0000 0100

0000 0000 0000 0000 0000 0000 0000 1111

0000 0000 0000 0000 0000 0000 0000 1001

0000 0000 0000 0000 0000 0000 0000 0000

A lenguaje simbólico primera pasada

ld [ %r0, 2068], %r1

ld [ %r0, 2072], %r2

addcc %r1, %r2, %r3

st %r3, [ %r0, 2076]

jumpl %r15, 4, %r0

24

15

A lenguaje simbólico segunda pasada

.begin

.org 2048

datos .equ 2068 ld [A], %r1 ld [B], %r2

addcc %r1, %r2, %r3

st %r3, [C]

jumpl %15, 4, %r0

datos: A:

15

B: 9

P á g i n a 28 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

C: 0

27. Compare la máquina de Von Neumann, el modelo IAS y la arquitectura ARC: • Memoria:
tamaño de la misma, rango de direcciones, formato de las palabras. • CPU: cantidad de
registros, tamaño de los mismos. • Otras diferencias (formato y tipo de instrucciones, ¿RISC
o CISC?, ¿cómo y qué instrucciones acceden a memoria?, etc).

P á g i n a 29 | 30
TRABAJO PRACTICO 5 GOMEZ LUIS DANIEL

P á g i n a 30 | 30

También podría gustarte