Estructura de Computadores. Examen 06.

Autor: Roberto


  • Asignatura: Estructura de Computadores.
  • Curso Académico: 2024-25.
  • Grado: Doble Grado en Ingeniería Informática y Matemáticas.
  • Grupo: Único.
  • Profesor: Ignacio Rojas Ruiz.

Cada persona tenía un examen, por lo que hubo muchas versiones de este examen. De una batería de preguntas del profesor (salía de forma aleatoria); por lo que no hay un único examen, sino muchos. No se daban las preguntas corregidas, por lo que no sabemos las resupuestas correctas.


  1. Suponga que la micropalabra de una máquina microprogramada tiene 8 bits de ancho y se usan 16 micropalabras diferentes en un microprograma de 32 micropalabras. Si se usa nanoprogramación...

  2. La técnica de "adelanto de registros" (register forwarding) en un cauce segmentado se usa para limitar el impacto de los riesgos...

  3. Respecto a las unidades de control nanoprogramadas:

  4. La ganancia de velocidad ideal en un cauce de K etapas de igual duración T ejecutando un programa de N instrucciones es:

  5. Una posible codificación en microinstrucciones de la instrucción call X es:

  6. En un camino de datos con un único bus, para realizar la operación de copia de un registro r1 en un registro r2, es decir r2 <- r1, es necesario:

  7. En la secuencia de instrucciones siguiente, siendo el primer registro el destino, ¿cuántos riesgos se dan?
    sub r4,r1,r3
    or r8,r6,r4

  8. En la realización de la práctica de la bomba digital compilada en 32 bits, una parte del código máquina es el siguiente:
    0x080486e8 : call 0x8048524
    0x080486ed : test %eax,%eax
    0x080486ef : je 0x80486f6
    0x080486f1 : call 0x8048604

    ¿Cuál de los siguientes comandos de gdb cambiaría el salto condicional por un salto incondicional?

  9. Tras dividir 0x00000000 00040000 (en EDX:EAX) entre 0x00008000 (ECX), el resultado será:

  10. En la práctica de la bomba, el primer ejercicio consiste en ir saltando las "explosiones" mientras se depura el código, para lo cual se puede utilizar…

  11. Una función C devuelve el valor de un elemento de un array mediante el siguiente código ensamblador:
    leaq (%rdi,%rdi,4), %rax
    addq %rsi, %rax
    movl var(,%rax,4), %eax
    retq

    Se puede adivinar que:

  12. Si compilamos con -Og la función:
    unsigned long f (unsigned long val) {
    return val + (val >> 64);
    }

    Obtenemos:
    movq %rdi, %rax
    movl $64, %ecx
    shrq %cl, %rax
    addq %rdi, %rax
    ret

    Teniendo en cuenta que las instrucciones de desplazamiento de números de 64 bits usan sólo los 6 bits menos significativos del número de desplazamientos a realizar, este código:

  13. Respecto a la inicialización de los elementos del array:
    #define SIZE (1<<16)
    for (i=0; ilista[i]=i;

  14. En x86-64, una función con 10 parámetros de tipo long que devuelve el valor del 8º parámetro y no modifica el puntero de pila puede traducirse a ensamblador como:

  15. En una bomba como las estudiadas en prácticas, del tipo...
    0x080486e8 : call 0x8048524
    0x080486ed : test %eax,%eax
    0x080486ef : je 0x80486f6
    0x080486f1 : call 0x8048604

    la contraseña es...

  16. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L3, el tamaño total que ocupan las etiquetas es:

  17. Diseñe un sistema de memoria de 128 KB direccionable por palabras de 16 bits a partir de módulos SRAM de 16Kx2 y ROM de 8Kx4. La memoria SRAM debe ocupar las direcciones 0x0000 a 0xBFFF y la ROM 0xC000 a 0xFFFF. Los módulos necesarios serían:

  18. Se dispone de un procesador, con palabras de 64 bits, con la siguiente jerarquía de memoria:
    Memoria principal: 64GB
    Tamaño de línea/bloque: 8 palabras
    Nivel 1 cache: 64 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 16 MB de 16 vías
    Sobre la memoria cache L2, el tamaño total que ocupan las etiquetas es:

  19. Se dispone de un procesador, con palabras de 64 bits, con la siguiente jerarquía de memoria:
    Memoria principal: 64GB
    Tamaño de línea/bloque: 8 palabras
    Nivel 1 cache: 64 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 16 MB de 16 vías
    Sobre la memoria cache L2, el campo de etiqueta tiene un tamaño de:

  20. Diseñe un sistema de memoria de 128 KB direccionable por palabras de 16 bits a partir de módulos SRAM de 16Kx4 y ROM de 8Kx2. La memoria SRAM debe ocupar las direcciones 0x0000 a 0xBFFF y la ROM 0xC000 a 0xFFFF. Los módulos necesarios serían:

  21. Se dispone de un procesador, con palabras de 64 bits, con la siguiente jerarquía de memoria:
    Memoria principal: 64GB
    Tamaño de línea/bloque: 8 palabras
    Nivel 1 cache: 64 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 16 MB de 16 vías
    Sobre la memoria cache L3, el tamaño total que ocupan las etiquetas es:

  22. Diseñe un sistema de memoria de 128 KB direccionable por palabras de 16 bits a partir de módulos SRAM de 16Kx2 y ROM de 8Kx4. La memoria SRAM debe ocupar las direcciones 0x0000 a 0xBFFF y la ROM 0xC000 a 0xFFFF. Los módulos necesarios serían, respecto a la RAM, serían:

  23. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L2, el campo de conjunto tiene un tamaño de:

  24. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L3, tamaño total que ocupan los datos es:

  25. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L1, el campo de conjunto tiene un tamaño de:

  26. Diseñe un sistema de memoria de 128 KB direccionable por palabras de 16 bits a partir de módulos SRAM de 16Kx4 y ROM de 8Kx2. La memoria SRAM debe ocupar las direcciones 0x0000 a 0xBFFF y la ROM 0xC000 a 0xFFFF. Los módulos necesarios serían, respecto a la SRAM, serían:

  27. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L3, el campo de conjunto tiene un tamaño de:

  28. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L2, el tamaño total que ocupan las etiquetas es:

  29. Se dispone de un procesador, con palabras de 64 bits, con la siguiente jerarquía de memoria:
    Memoria principal: 64GB
    Tamaño de línea/bloque: 8 palabras
    Nivel 1 cache: 64 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 16 MB de 16 vías
    Sobre la memoria cache L1, el campo de conjunto tiene un tamaño de:

  30. Se dispone de un procesador, con la siguiente jerarquía de memoria:
    Memoria principal: 1GB
    Tamaño de línea/bloque: 64B
    Nivel 1 cache: 32 KB de 8 vías
    Nivel 2 cache: 256 KB de 4 vías
    Nivel 3 cache: 8 MB de 16 vías
    Sobre la memoria cache L2, el tamaño total que ocupan los datos es: