TRABAJO PRACTICO N°5
PROBLEMAS PROPUESTOS
1. Dibuje el modelo de Bus de Sistema. Explique las funciones de sus componentes.
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.
2. En el Modelo de Bus de Sistema:
A. ¿qué componente ejecuta las instrucciones?
B. ¿cuál almacena los datos y e instrucciones listos para ejecutarse?
A. El componente que ejecuta las instrucciones es la CPU -
B) El componente que almacena los datos y los programas listos para ejecutarse es la memoria.
3. Explique cómo se ejecutarían los ciclos de búsqueda y ejecución en el modelo de
Bus del Sistema.
Ésta es una vista simplificada de un ciclo de instrucción:
4. Indique las características de las arquitecturas RISC.
Características de la arquitectura RISC (computadoras con un conjunto de instrucciones reducido)
Instrucciones de único ciclo. La CPU trabaja más rápido
La carga y almacenamiento son instrucciones separadas
Arquitectura registro-registro
Instrucciones cortas. Códigos con más líneas
Implementa las instrucciones directamente en el hardware
Compiladores complejos
Elimina micro códigos y decodificación de instrucciones complejas.
5. Describa la memoria del computador ARC (tamaño, rango de direcciones, mapa de
memoria, tipos y tamaños de las palabras).
ARC (A RISC Computer) es un subconjunto del modelo de arquitectura basado en el procesador
SPARC, desarrollado por Sun Microsystems.
En una máquina direccionable por byte, el dato más pequeño que se puede buscar en memoria es el
byte. Las palabras multi bytes se almacenan como secuencias de bytes, y se direccionan a partir del byte
menos significativo de la palabra almacenada.
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.
6. Una palabra en ARC ¿cuántos registros usa?, ¿de cuántos bytes cada uno?
Una palabra en ARC usa un registro, de 4 bits cada uno.
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, Unidad Central de Procesamiento, consiste de una sección de datos que contiene registros y
una ALU, y una sección de control, que interpreta las instrucciones y realiza las transferencias entre
registros. La sección de datos se conoce como "camino de datos" o "datapath".
La CPU lee las instrucciones y los datos desde la memoria, ejecuta las instrucciones y almacena los
resultados nuevamente en la memoria.
8. ¿Cuántos bits se usan para indicar la dirección de un registro de la CPU? ¿Por qué?
Se usan 32 bits para indicar la dirección de un registro de la CPU.
9. ¿Para qué sirven el contador de programa y el registro de instrucción?
El contador de programa (PC) es el contiene la dirección de la instrucción en ejecución.
El registro de instrucción (IR) es el contiene la última instrucción captada
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é?
Ciclo de búsqueda ejecución:
PASO 1: búsqueda en memoria de la próxima instrucción a ser ejecutada
PASO 2: decodificación del código de operación
PASO 3: búsqueda de operandos en memorias
PASO 4: ejecución de la instrucción y almacenamiento de los resultados
PASO 5: vuelta al paso 1
Sirve para la ejecución de un programa.
11. Indique diferencias entre registros del CPU y registros de la memoria RAM.
El registro de CPU se emplea para controlar instrucciones en ejecución, manejar direccionamiento de
memoria y proporcionar capacidad aritmética. Mientras que el registro de memoria se usa para guardar
exclusivamente direcciones de memoria.
12. Explique cada subconjunto de instrucciones ARC.
Es la colección de instrucciones que un procesador puede ejecutar.
Difiere de un procesador a otro, en el tamaño de las instrucciones, el tipo de operaciones que permiten,
el tipo de operandos que puede ejecutar y los resultados que pueden entregar.
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?
Se conoce como registro de estado a los registros de memoria en los que se deja constancia de
algunas condiciones que se dieron en la última operación realizada y que podrán ser tenidas en cuenta en
operaciones posteriores.
Las instrucciones de transferencias del registro Status, transfieren desde o hacia CPSR o SPSR con un
registro de propósitos múltiples
Existen dos instrucciones para mover el contenido del CPSR desde o hacia un registro de propósitos
múltiples, ambos registros (CPSR y SPSR) pueden ser accedidos mediante este método.
Negativo N (Negative) representa el bit 31 del resultado de la instrucción. 1 si el resultado es negativo
(complemento a dos) o 0 si es positivo.
14. ¿Cómo es el formato del lenguaje simbólico ARC?
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?
El formato de instrucción definirá como el programa ensamblador (que traduce programas en lenguaje
assembler a códigos binarios), distribuye los diferentes campos de una instrucción y la forma en que los
interpreta la Unidad de Control. Se vinculan en que ambos almacenan la instrucción que se está
ejecutando, en los procesadores simples cada instrucción a ser ejecutada es cargada en el registro de la
instrucción que la contiene mientras se es decodificada, preparada y al final ejecutado
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.
A. Leer el contenido de la dirección 2048 de memoria, use el registro 24 como
destino.
Ld [2048], %r24 11 11000 000000 00000 1 0100000000000
B. Escribir en la dirección 4096 de memoria el contenido del registro 24.
St %r24, [4096] 11 11000 000100 00000 1 1000000000000
C. Leer el contenido de la dirección 10000 de memoria, use el registro 22 como
destino.
Ld [1000], %r22 11 10110 000000 00000 1 0001111101000
D. Suma aritmética usando dos registros fuentes, y el registro 5 como destino.
Addcc %r3, %r4, %r5 10 00101 010000 00011 0 0000000000100
E. Suma aritmética usando un registro fuente y una constante, y el registro 10 como
destino.
Addcc %r8, 16, %r10 10 01010 010000 01000 0 0000000001000
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.
Andcc %r25, %r2, %r3 10 11001 010001 00010 0 0000000000011
G. Salto a subrutina, usando un valor, no etiqueta, para la cantidad de palabras a
saltar.
Jmpl %r15+4, %r0 10 00000 111000 01111 1 0000000000100
H. Salto incondicional, ba 12, almacenada en la dirección 4000 de memoria. ¿Cuál
sería la dirección hacia dónde salta?
Saltaría a la dirección 4012.
I.Salto condicional. Indique bajo que condición saltaría.
Bajo la condición en que se encuentre la bandera.
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?
La nueva dirección del PC sería 2004.
17. ¿Qué son pseudo operaciones o directivas? Describa brevemente.
Las pseudo operaciones son instrucciones de assembler. No son parte de la ISA (Instruction Set
Architecture).
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?
Cualquier sentencia que aparezca antes del .begin o después del .end será ignorada.
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?
Dependiendo la cantidad de instrucciones del lenguaje de máquina.
20. ¿Cuántas instrucciones a la vez ejecuta la CPU en ARC?, ¿en qué lenguaje deben estar
esas instrucciones?
La CPU en ARC ejecuta una instrucción de 32 bits a la vez. Esas instrucciones deben estar en código
ensamblado.
21. ¿Qué es un ensamblado de dos pasadas?
La mayoría de los ensambladores recorren dos veces el texto escrito en lenguaje simbólico.
En la primera pasada determinan: direcciones de todos los datos e instrucciones del programa.
Seleccionan que instrucción del lenguaje máquina debe generarse para cada instrucción en lenguaje
simbólico, pero sin generar aún el código máquina. Realizan operaciones aritméticas. 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 el mismo los valores de los símbolos
ya conocidos de la tabla anterior.
22. Crear una tabla de símbolos para el segmento de programa ARC que se muestra a
continuación.
SIMBOLO
VALOR
Main:
2048
X:
2064
Y:
2068
Sub:
3000
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 3000
Sub_r: Ld [x], %r1
Ld [y], %r2
St %r2, [x]
St %r2, [y]
Jmpl %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.
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.
Este programa suma tantos números como indica "LENGTH"
B. Indique cuales son las etiquetas, las directivas, las instrucciones y los
comentarios.
Etiquetas: loop, done, length, address, a
Directivas: .begin, .org, .equ, .end
Instrucciones: ld, andcc, be, adcc, jmpl
Comentarios: !Uso del Registro, !comienzo de traducción, !comienzo de programa en 2048, etc.
C. Realice la tabla de símbolos.
SIMBOLO
VALOR
a_start
3000
Length
2092
Address
2096
Loop
2060
Done
2068
A
3000
D. Páselo a lenguaje máquina.
.begin
.org 2048
a_start .equ 3000
ld [length],%r1 11000010 00000000 00101000 00101100
ld [address],%r2 11000100 00000000 00101000 00110000
andcc %r3,%r0,%r3 10000110 10001000 11000000 00000000
loop: andcc %r1,%r1,%r0 10000000 10001000 01000000 00000001
be done 00000010 10000000 00000000 00000110
addcc %r1,-4,%r1 10 00001 010000 00001 1 1111111111100
addcc %r1,%r2,%r4 10 00100 010000 00001 0 0000000000010
ld %r4,%r5 11 00101 000000 00100 0 0000000000000
addcc %r3,%r5,%r3 10 00011 010000 00011 0 0000000000101
ba loop 00 01000 010111 11111 1 1111111111011
done: jmpl %r15+4,%r0 10 00000 111000 01111 1 0000000000100
length: 20 00 00000 000000 00000 0 0000000010100
address: a_start 00 00000 000000 00000 0 0101110111000
.org a_start
a: 25 00 00000 000000 00000 0 0000000011001
-10 11 11111 111111 11111 1 1111111110110
33 00 00000 000000 00000 0 0000000100001
-5 11 11111 111111 11111 1 1111111111011
7 00 00000 000000 00000 0 0000000000111
.end
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.
11 00001 000000 00000 1 0100000010100
11 00010 000000 00000 1 0100000011000
10 00011 010000 00001 0 0000000000010
11 00011 000100 00000 1 0100000011100
10 00000 111000 01111 1 0000000000100
00 00000 000000 00000 0 0000000001111
00 00000 000000 00000 0 0000000001001
00 00000 000000 00000 0 0000000000000
Ld [2068], %r1
Ld [2072], %r2
Addcc %r1, %r2, %r3
St %r4, [2076]
Jmpl %r15+4, %r0
12
9
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).
EL MODELO DE VON NEUMANN
El programa almacenado en memoria es el aspecto más importante del modelo.
Sus componentes son:
• Unidad de Entrada: provee los datos e instrucciones requeridos por el sistema.
• Unidad de Memoria: almacena datos e instrucciones.
• Unidad Aritmético gica (ALU): procesa los datos e instrucciones.
• Unidad de Control (UC): realiza el control y dirección de todo.
• Unidad de Salida: recibe los resultados.
La ALU y la UC forman la Unidad Central de Procesamiento (CPU).
Las flechas gruesas representan RUTA DE DATOS y las flechas finas RUTAS DE CONTROL.
Los principales registros de esta computadora son:
• MAR (Registro de Dirección de Memoria, Memory Address Register).
• MBR (Registro Temporal de Memoria, Memory Buffer Register).
• PC (Contador de Programa, Program Counter).
• IR (Registro de Instrucción, Instruction Register).
• AC (Acumulador, Accumulator).
• INPR (Registro de Entrada, Input Register).
• OUTR (Registro de Salida, Output Register).
EL COMPUTADOR IAS
La memoria de este modelo consiste en 1000 posiciones de almacenamiento, palabras, de 40 bits c/u.
Con este formato de la palabra instrucción se pueden extraer dos instrucciones al mismo tiempo, cada
una de 20 bits.
Utiliza los mismos registros que el modelo de Von Neumann, y además incorpora los Registros:
IBR (Instruction Buffer Register).
MQ (Multiplier Quotient).
El computador IAS tiene un total de 21 instrucciones, que se clasifican en cinco grupos:
Instrucciones de transferencia de datos.
Instrucciones de salto incondicional.
Instrucciones de salto condicional.
Instrucciones de aritmética.
Instrucciones de modificación de direcciones.
LA ARQUITECTURA ARC
La memoria en ARC
ARC (A RISC Computer) es un subconjunto del modelo de arquitectura basado en el procesador
SPARC, desarrollado por Sun Microsystems.
En una máquina direccionable por byte, el dato más pequeño que se puede buscar en memoria es el
byte. Las palabras multi bytes se almacenan como secuencias de bytes, y se direccionan a partir del byte
menos significativo de la palabra almacenada.
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.
La CPU en ARC
La CPU, Unidad Central de Procesamiento, consiste de una sección de datos que contiene registros y
una ALU, y una sección de control, que interpreta las instrucciones y realiza las transferencias entre
registros. La sección de datos se conoce como "camino de datos" o "datapath".
La CPU lee las instrucciones y los datos desde la memoria, ejecuta las instrucciones y almacena los
resultados nuevamente en la memoria.
El conjunto de instrucciones en ARC
Es la colección de instrucciones que un procesador puede ejecutar.
Difiere de un procesador a otro, en el tamaño de las instrucciones, el tipo de operaciones que permiten,
el tipo de operandos que puede ejecutar y los resultados que pueden entregar.
El tamaño de una instrucción en ARC es de 32 bits, o sea una palabra.
El formato del lenguaje ensamblador ARC
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.
TRABAJO PRACTICO N°4.docx
browser_emoji Estamos procesando este archivo...
browser_emoji Lamentablemente la previsualización de este archivo no está disponible. De todas maneras puedes descargarlo y ver si te es útil.
Descargar
. . . . .