Examen: Parcial 2:2023_03_27:Robotica - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Examen Parcial 2: 2023-03-27. 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 8 registros de propósito general (t0-t7). 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. Puede acceder tanto a datos alineados como no alineados. Estas son algunas de las instrucciones disponibles:
li rd, valor
: Carga del valor inmediato en el registro rdaddi rd, rs1, valor
: Almacer en rd la suma rs1 + valorlb rd, (rs)
: Leer el byte que hay en la dirección indicada en el registro rslh rd, (rs)
: Leer la media palabra que hay en la dirección indicada en el registro rslw rd, (rs)
: Leer la palabra que hay en la dirección indicada en el registro rs
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 | 00 | 01 | 02 | F0 | CA | FE | BA | CA | DE | DA | 01 | 02 | 03 | 04 | 05 | 06 |
0xBEBECB00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
Resuelve los siguientes apartados, calculando el resultado y justificando cómo lo has obtenido
a) (2.5 ptos) Inicialmente los registros están inicializados a 0. Indica el valor de los registros tras ejecutar las siguientes instrucciones:
li t0, 0xBEBECAF3
lb t1, (t0) #-- Inst 1
addi t0,t0,1
lb t2, (t0) #-- Inst 2
li t0, 0xBEBECAF3
lh t3, (t0) #-- Inst 3
li t0, 0xBEBECAF4
lw t4, (t0) #-- Inst 4
li t0, 0xBEBECAF6
lw t5, (t0) #-- Inst 5
b) (2.5 ptos) Indica el número de accesos a memoria que emplea cada instrucción de load para leer los datos
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
- Inst 1: Leer el byte de la dirección 0xBEBECAF3. t1 = 0xF0
- Inst 2: Leer el byte de la dirección 0xBEBECAF4. t2 = 0xCA
- Inst 3: Leer la media palabra de la dirección 0xBEBECAF3. t3 = 0xCAF0 (little endian)
- Inst 4: Leer la palabra de la dirección 0xBEBECAF4. t4 = 0xCABAFECA (little endian)
- Inst 5: Leer la palabra de la dirección 0xBEBECAF6. t5 = 0xDADECABA (little endian)
El valor final de t0 es 0xBEBECAF6 t6 y t7 no se han usado, por tanto tienen sus valores iniciales: 0. t6 = 0. t7 = 0
b)
- Inst 1: Un acceso. Es una lectura de un byte. Nos da igual el alineamiento y la ordenación
- Inst 2: Un Acceso. Mismo razonamiento que con la instrucción 1
- Inst 3: Dos accesos a memoria. La media palabra tiene un byte en una palabra y el otro en la siguiente (Acceso a dirección no alineada)
- Inst 4: Un Acceso. Lectura de la palabra situada en una dirección alineada
- Inst 5: Dos accesos. Lectura de una palabra situada en una dirección NO alineada
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)