Autor: Arturo Olivares Martos
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.
Respecto a las unidades de control nanoprogramadas:
Una posible codificación en microinstrucciones de la instrucción call X
es:
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...
La ganancia de velocidad ideal en un cauce de K etapas de igual duración T ejecutando un programa de N instrucciones es:
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)?
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<
x=array[i];
for(j=0;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:
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...
En popcount8, la variable:
int SSE_LUTb[] = {0x02010100, 0x03020201, 0x03020201, 0x04030302};
se usa:
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
?
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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: