Estructura de Computadores. Examen 05.

Autor: Arturo Olivares Martos


  • Asignatura: Estructura de Computadores.
  • Curso Académico: 2023-24.
  • Grado: Doble Grado en Ingeniería Informática y Matemáticas.
  • Grupo: A.
  • Profesor: Ignacio Rojas Ruiz.
  • Fecha: 12-12-2023.
  • Descripción: Examen de Temas 3-6 de Teoría, y prácticas 3 y 4.

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. Esta es la primera versión subida.


  1. Respecto a las unidades de control nanoprogramadas:

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

  3. 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...

  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. Un procesador x86 a 4 GHz dispone de 7 unidades de ejecución en paralelo, con 20 etapas de segmentación, y es capaz de emitir (comenzar a ejecutar) 4 instrucciones en cada ciclo de reloj. ¿Qué velocidad aproximada de ejecución de instrucciones será capaz de alcanzar (MIPS = millones de instrucciones por segundo)?

  6. La práctica "popcount" debía calcular la suma de bits (peso Hamming) de los elementos de un array. Un estudiante entrega la siguiente versión de popcount5:
    int popcount5(unsigned* array,int len){
    int i,j;
    unsigned x;
    int result = 0;
    for(i=0;i<len;i++){
    x=array[i];
    for(j=0;j<8;j++){
    result += x & 0x01010101;
    x>>=1;
    }
    }
    result += (result >> 16);
    result += (result >> 8);
    return result & 0xFF;
    }

    Esta función presenta varias diferencias con la versión recomendada en clase, incluyendo la ausencia de una variable auxiliar val. Esta función popcount5:

  7. 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...

  8. En popcount8, la variable:
    int SSE_LUTb[] = {0x02010100, 0x03020201, 0x03020201, 0x04030302};
    se usa:

  9. Suponga la expresión:
    unsigned int val = x & 0x01010101;
    donde x es un unsigned int. ¿Cuál de los siguientes valores de x da como resultado val = 0x01010101?

  10. 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:

  11. 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 ROM, serian:

  12. 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 ROM, serian:

  13. 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:

  14. 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:

  15. 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 ROM, serian:

  16. 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 campo de etiqueta tiene un tamaño de:

  17. 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:

  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 L1, el campo de etiqueta tiene un tamaño de:

  19. 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 los datos es:

  20. 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:

  21. 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 etiqueta tiene un tamaño de:

  22. 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:

  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 L3, el tamaño total que ocupan las etiquetas es:

  24. 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 conjunto tiene un tamaño de:

  25. 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: