Está en la página 1de 3
Grado en Ingenieria informatica Departamento de Informatica ® Usted arcos i Carbs de Mais prauitecturade Computadores | MEADS 16 de enero de 2019 ATENCION: = Lea atentamente todo el enunciado antes de comenzar a contestar, No se podrén utilizar libros ni apuntes, ni calculadoras de ningtn tipo. + eee Btates movies deberin permanecerdesconectados durante |apruba(apagatos, no lenis) &Solamente se corregirn los ejercicios contestados con bolirafo. Pr favor no utilice lapiz + Laduracis minutos. 2 ca eense Sette enuna naj sim, Sino hac un ec entregue una hojen blanco come nero del elercicio. NOMBRE: APELLIDOS: NIA: Ejercicio 1 [3 puntos]: Dado el siguiente fragmento de cédigo loop: Ide1 $f0, 0($td) #11 lde1 $12, 8($t0) #2 mul.d $f4,$f0,$f2 #13 Idc1 $f6, 16($t0) Hd add.d $f6, $f4, $f6 #15, sde1 $f6, ($t1) #16 addi StO, $t0, 24 a7, addi $t1, $t1, 8 HIB addi $t2, $t2, -8 #19, bz $t2, loop #110 Este fragmento de cédigo se ejecuta en una maquina en la que el procesador tiene una arquitectura segmentada (pipeline) con suficiente ancho de banda de captacién y decodificacién que permite comenzar la ejecucién de una instruccién en cada ciclo de reloj. Este procesador dispone de 32 registros en el banco de registros principal. También dispone de 16 registros de coma flotante en doble precisién (Sf0, $f2, $f4,.., $30). En este procesador se producen detenciones debidas a dependencias de datos. Adicionalmente, en el caso de dependencias de datos, el comienzo de una instruccién incurre una latencia adicional que depende de cada instruccién: * mul: Multiplica dos valores en doble precisi6n. Requiere 6 ciclos de latencia adicional antes de que su resultado esté disponible. ‘* add.d: Suma dos valores en doble precision. Requiere 5 ciclos de latencia adicional antes de que su resultado esté disponible Elresto de las instrucciones no requiere ciclos de latencia adicional. 2.1 [0.25 puntos}: Identifique las dependencias RAW. 2.2 [0.75 puntos): Identifique todas las detenciones que se producen en la primera iteracién del bucle. Determine el intimero de ciclos por iteracién. 2.3 [1 punto}: Realice una planificaci6n de bucle. Determine el numero de ciclos por iteracién. 2.4 (1 punto}; Realice el maximo desenrrollamiento posible para la arquitectura propuesta. Determine la aceleracién cconseguido sobre su solucién del aparatado anterior. Grado en Ingenieria Informatica @ tata Departamento de Informatica ARCOS He ‘Carlos III de Madrid Arquitectura de Computadores | MPS-EHB ES 16 de enero de 2019 Ejercicio 2 [3 puntos}: El siguiente programa ejecuta dos hilos de forma coordinada que son lanzados por el programa principal. #include #include #include std: :atomic_flag lock(ATOMIC_FLAG INIT); int total(oy; aes void £() { using namespace std: :chrono_literals; for (int i=0; i<10; ++i) ( ~ while (lock. test_and set()) (} totalt+; lock.clear() ; std: :this thread: :sleep for(1000ms) ; ) d void g() ( using namespace std: :chrono_literals; int tmp = 0; std::this thread: :sleep for (500ms) ; while (tmp!=10) ( While (lock.test_and_set()) () tmp = total; lock. clear () ; std: :this thread: :sleep_for(1000ms) ; ) y int main() { std: :thread t1(£}; std: :thread t2(g}; t1.join(); 2. join(); Tenga en cuenta que el programa principal crea das hilos adicionales (t1 y t2) que ejecutan las funciones f() y gl) Todos pueden acceder a las variables globales del programa (lock y total). Las invocaciones a sleep_for() suspenden el hilo correspondiente por una cantidad de tiempo (expresada en milisengundos). La variables lock estd alineada a una posicién de memoria multiplo de 128 bytes y ocupa 4 bytes. La variable total ocupa 4 bytes y se almacena a consecutivamente después de lock. Se pretende evaluar el rendimiento del cédigo anterior en dos arquitecturas distintas, llamadas A y B, cuyos detalles se muestran a continuacién: © Arquitectura A. Procesador de cuatro nucleos. Cada nucleo tiene su propia memoria caché (privada al riicleo) con un tnico nivel y que implementa el protocolo de invalidacién (MSI). El tiempo para resolver un fallo caché es de 5 ms y para general una invalidacion de 2 ms. El tamaffo de bloque es de 1288, Grado en Ingenieria Informatica areal Departamento de Informatica ARCOS He Carlos Mf de Madrid Arquitectura de Computadores | MEAD 16 de enero de 2019 * Arquitectura 8. Procesador de cuatro nucleos. Cada nucleo tiene su propia memoria caché (privada al rnicleo) con un nico nivel y que implementa el protocolo de actualizacién (write broadcasting). | tiempo para resolver un fallo caché es de 5 ms y para realizar una actualizacin es de 4 ms. El tamafio de bloque es de 1288, ‘Asuma que las memorias caché estén inicialmente vacias y que el tiempo de ejecucion del codigo (creacién de hilos, bucles fory whiles, etc. es despreciable, Por el mismo motivo, asuma que ambos hilos se ejecutan simultdneamente, ‘Asuma también que las variables locales de las funciones f() y gl) se asignan a registros y no generan accesos memoria, Se pide determinar, de forma justificada, qué arquitectura ejecuta de forma mas rapida los programas anteriores. Ejercicio 3 [1 punto]: Dada los siguientes fragmentos de codigo: // fragmento A for (int i=0; i

También podría gustarte