Examen: Parcial 2:2024_03_20:Robotica - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Examen Parcial 2: 2024-03-20. Robótica
- Tiempo: 50 minutos
- Tipo de examen: Presencial. Realizado a través de Aula Virtual. Acceso a la wiki (Internet)
- Temario: S5, S6 y S7
Contenido
Enunciado
El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un problema
Test (5 ptos)
- Realizado a través de Aula virtual
- 10 preguntas tipo test
- Las respuesats incorrectas restan un 25% del valor de la pregunta
- Solución disponible en Aula virtual
Problema (5 ptos)
Tenemos un computador de 32-bits que dispone de 16 registros de propósito general (x0-x15). La anchura de la memoria es de 32-bits. La ordenación que usa es Little-endian. Para acceder a los datos de la memoria utiliza un direccionamiento indirecto. También tiene una instrucción que usa direccionamiento inmediato. Puede acceder tanto a datos alineados como no alineados. Estas son algunas de las instrucciones disponibles:
li rd, valor
: Asignar un valor al registro destino (rd = valor)lb rd, (rs)
: Leer el byte que hay en la dirección contenida en rs y guardarlo en el registro rdlh rd, (rs)
: Leer la media palabra que hay en la dirección contenida en rs y guardarla en el registro rdlw rd, (rs)
: Leer la palabra que hay en la dirección contenida en rs y guardarla en el registro rd
Este es el contenido de la memoria, a partir de la dirección 0xBEBECAF0. Todos los valores están en hexadecimal
Dirección | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xBEBECAF0 | 03 | 14 | FE | CA | BA | BE | BE | DA | FF | 07 | CC | 13 | 55 | AA | 98 | 73 |
Resuelve los siguientes apartados, calculando el resultado y justificando cómo lo has obtenido
a) (2.5 ptos) Indica el valor de los registros x11,x12,x13,x14 y x15 tras finalizar la ejecución de las siguientes instrucciones:
li x1, 0xBEBECAFE
li x2, 0xBEBECAF9
li x3, 0xBEBECAF2
li x4, 0xBEBECAF3
li x5, 0xBEBECAFC
lb x11, (x1) #-- Instr. 1
lb x12, (x2) #-- Instr. 2
lh x13, (x3) #-- Instr. 3
lh x14, (x4) #-- Instr. 4
lw x15, (x5) #-- Instr. 5
b) (2.5 ptos) Indica el número de accesos a memoria al ejecutarse cada una de las 5 instrucciones indicadas en los comentarios (No tengas en cuenta los accesos para leer la propia instrucción)
Solución al problema
a)
El procesador usa ordenación little endian por lo que el byte leido en la primera posición es el de menor peso
Tras ejecutar todas las instrucciones, el valor de los registros pedidos es el siguiente:
- x11 = 0x98. Lectura del byte de la dirección 0xBEBECAFE. Como es un byte, no influye ni la ordenación ni el alineamiento (0.5)
- x12 = 0X07. Lectura del byte de la dirección 0xBEBECAF7. Como es un byte, no influye ni la ordenación ni el alineamiento (0.5)
- x13 = 0xCAFE. Lectura de una media palabra (16-bits) de la dirección 0xBEBECAF2. Ordenación little endian (0.5)
- x14 = 0xBACA. Lectura de una media palabra (16-bits) de la dirección 0xBEBECAF3. Ordenación little endian (0.5)
- x15 = 0x7398AA55. Lectura de una palabra de la dirección 0xBEBECAFC. Ordenación little endian (0.5)
b)
- Inst 1: Un acceso. Es una lectura de un byte. Nos da igual el alineamiento y la ordenación (0.5)
- Inst 2: Un Acceso. Mismo razonamiento que con la instrucción 1 (0.5)
- Inst 3: Un Acceso. La media palabra tiene sus dos bytes en la primera palabra a partir de la dirección 0xBEBECAF0 (0.5)
- Inst 4: Dos Accesos. Lectura de una media palabra situada en una dirección NO alineada (0.5)
- Inst 5: Un acceso. Lectura de una palabra situada en una dirección alineada (0.5)
Autores
- Juan González-Gómez (Obijuan)