Examen: Parcial 2:2025_03_31:Robotica - myTeachingURJC/Arq-computadores-01 GitHub Wiki

Examen Parcial 2: 2025-03-31. 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 64-bits que dispone de 32 registros de propósito general (x0-x31). La anchura de la memoria es de 64-bits. La ordenación que usa es Big-endian. Para acceder a los datos de la memoria utiliza un direccionamiento directo. Puede acceder tanto a datos alineados como no alineados. Estas son algunas de las instrucciones disponibles:

  • lb rd, dir: Leer el byte que hay en la dirección dir
  • lh rd, dir: Leer la media palabra que hay en la dirección dir
  • lw rd, dir: Leer la palabra que hay en la dirección dir
  • ld rd, dir: Leer la doble palabra que hay en la dirección dir

Este es el contenido de la memoria, a partir de la dirección 0xBACA0000. 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
0xBACA0000 03 14 FE CA BA BE BE DA FF 07 CC 13 55 AA 98 73
0xBACA0010 00 11 22 33 44 55 66 77 88 99 AB CD DE EF FF 17

Resuelve los siguientes apartados, calculando el resultado y justificando cómo lo has obtenido

a) (2.5 ptos) Indica el valor de los registros x21,x22,x23,x24 y x25 tras finalizar la ejecución de las siguientes instrucciones:

lb x21, 0xBACA0009  #-- Instr. 1
lh x22, 0xBACA0006  #-- Instr. 2
lw x23, 0xBACA0006  #-- Instr. 3
lw x24, 0xBACA0008  #-- Instr. 4
ld x25, 0xBACA000C  #-- 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 big endian por lo que el byte leido en la primera posición es el de MAYORd peso

Tras ejecutar todas las instrucciones, el valor de los registros pedidos es el siguiente:

  • x21 = 0x07. Lectura del byte de la dirección 0xBACA0009. Es un byte, por lo que el concepto ordenación no aplica (0.5)
  • x22 = 0xBEDA. Lectura de una media palabra (16-bits) de la dirección 0xBACA0006. Ordenación Big endian (0.5)
  • x23 = 0xBEDAFF07. Lectura de una palabra (32-bits) de la dirección 0xBACA0006. Ordenación Big endian (0.5)
  • x24 = 0xFF07CC13. Lectura de una palabra (32-bits) de la dirección 0xBACA0008. Ordenación Big endian (0.5)
  • x25 = 0x55AA987300112233. Lectura de una doble-palabra (32-bits) de la dirección 0xBACA000C. Ordenación Big endian (0.5)

b)

Como la memoria tiene anchura de 64-bits, el concepto de dirección alineada es que sea múltiplo de 8. Si el dato leído cae dentro de una doble palabra alineada, sólo habrá un único acceso. Si cae entre dos dobles palabras alineadas, entonces habrá dos accesos

  • Inst 1: Un acceso. Lectura de un byte. No aplica el concepto de alineación (0.5)
  • Inst 2: Un acceso. La media palabra tiene sus dos bytes en la primera doble palabra a partir de la dirección 0xBACA0000
  • Inst 3: Dos accesos. La palabra está situada entre dos dobles palabras
  • Inst 4: Un acceso. La palabra está dentro de una doble palabra completa
  • Inst 5: Dos accesos. La doble palabra se lee de una dirección NO alienada (No es multiplo de 8)

Autores

Licencia

Enlaces