0% encontró este documento útil (0 votos)
16 vistas4 páginas

Análisis de Código MIPS64 y Rendimiento de Chips

Este documento presenta una serie de preguntas sobre arquitectura de computadoras. La primera pregunta pide completar una tabla sobre dependencias de datos e instrucciones en fragmentos de código MIPS64. Otras preguntas tratan sobre interrupciones, modelos de memoria, estándares de comunicación entre procesos y comparaciones de rendimiento entre chips multiprocesador.

Cargado por

Clash Oflords
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas4 páginas

Análisis de Código MIPS64 y Rendimiento de Chips

Este documento presenta una serie de preguntas sobre arquitectura de computadoras. La primera pregunta pide completar una tabla sobre dependencias de datos e instrucciones en fragmentos de código MIPS64. Otras preguntas tratan sobre interrupciones, modelos de memoria, estándares de comunicación entre procesos y comparaciones de rendimiento entre chips multiprocesador.

Cargado por

Clash Oflords
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

4.

Completa la siguiente tabla indicando, por cada fragmento de código MIPS64: a) las
dependencias de datos que, en su caso, existen o pueden existir; b) si con planificación
dinámica (pero sin renombrado de registros) es posible la ejecución fuera de orden de
las dos instrucciones del fragmento; c) si un compilador puede cambiar de orden las
instrucciones (modificando alguna si fuera necesario). Se sabe que los accesos a
memoria están alineados. [4+5=9]

¿Puede un compilador
cambiar las
¿Es posible la ejecución
instrucciones de orden?
Dependencias fuera de orden si hay
Fragmento de En caso negativo, di qué
de datos planificación dinámica?
código lo impide. En caso
existentes Explica brevemente tu
afirmativo, escribe
respuesta
cómo quedaría el
código

Sí. El código quedaría:


LD R2, 0(R4) Antidependencia No, la antidependencia lo
DADDI R4,R4,16 sobre R4 impide DADDI R4,R4,16
LD R2, -16(R4)

Puede. Sí, si el hardware


detecta a tiempo que
Dependencia de
R3≠R2≠R3+8, es decir, que no
SD R1, 0(R2) flujo ssi No. La posible depen-
hay solapamiento de las
LW R4, 8(R3) 8+R3=R2 o dencia lo impide.
posiciones de memoria
8+R3=8+R2
accedidas por SD y LD. En este
caso no habría dependencia.

5. Completa la tabla siguiente con las características de cada tipo de interrupción: [6]

Dentro de una
Forzada / solicitada
Tipo interrupción instrucción / entre Síncrona / asíncrona
por el programador
instrucciones
De entrada/salida F E A
Falta de página F D S
6. Enlaza, mediante una flecha, cada concepto de una columna con el concepto
correspondiente de la columna siguiente: [5]

Comunicación entre
Modelo de memoria Principales estándares
procesos

Memoria compartida Implícita OpenMP

Memoria distribuida Explícita MPI

POSIX threads (Pthreads)

7. Considera el siguiente fragmento de código MIPS FP:


DIV.D F2,F8,F6
MUL.D F4,F8,F10
ADD.D F6,F4,F6
DSUBI R3,R3, 8

A) Completa el diagrama instrucciones-tiempo correspondiente a la ejecución de este


código suponiendo que, en la fase de ejecución, los números de ciclos que requieren
las instrucciones de punto flotante son: [4]
Operación de punto flotante Número de ciclos
Suma 3
Multiplicación 6
División 10
Asume: 1/ el control del hardware detecta los riesgos en ID y no emite la instrucción si
no está libre de riesgos; 2/ hay un banco de registros de enteros y otro de punto
flotante; 3/ dos instrucciones pueden estar a la vez en MEM o en WB si no acceden a la
vez a un mismo recurso.
Ciclo
Instrucción 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
DIV.D F2,F8,F6 F D X X X X X X X X X X M W
MUL.D F4,F8,F10 F D X X X X X X M W
ADD.D F6,F4,F6 F D s s s s s s X X X M W
DSUBI R3,R3, 8 F s s s s s s D X M W
B) Antes de ejecutar el código, los valores de algunos registros eran: [3+4=7]
R3 = 7, F2 = F4 = 4.0, F6 = F8 = 8.0, F10 = 3.0.
El procesador dispone de un buffer de historia como el estudiado en clase para hacer
preciso el tratamiento de las interrupciones.
B1/ Tras finalizar el ciclo 11, indica, completando la siguiente figura, cómo queda el
buffer de historia:
Instrucción Valor
DIV.D F2,F8,F6 ?
MUL.D F4,F8,F10 4.0
ADD.D F6,F4,F6 ?

Si, algún registro ha cambiado de valor, indica qué registro es y cuál es su nuevo valor.
Al llegar a WB, MUL.D ha escrito 24.0 (F8×F10)) en su registro destino que es F4 .......................
.............................................................................................................................................
B2/ Supongamos que la instrucción de división provoca una interrupción en el ciclo 12.
Indica qué ocurrirá desde que se detecta la interrupción hasta que se salta a la rutina
de interrupción, dejando claro cómo se ven afectados el buffer de historia y los
registros.
Para expresar tu respuesta, ignora aquellas frases de la siguiente lista que sean falsas y
ordena el resto.
a) Se guarda el estado del procesador y se salta a la rutina de interrupción.
b) El buffer de historia se vacía.
c) Del buffer de historia se eliminan todas las entradas excepto la de DIV.D
F2,F8,F6.
d) El registro F4 vuelve a tomar el valor 4.0.
e) Los valores de los registros no cambian.
f) Se recorre el buffer desde la cola hasta la cabecera para recuperar los valores
antiguos de los registros.
g) Se recorre el buffer desde la cabecera hasta la cola para recuperar los valores
antiguos de los registros.
h) Se detiene el cauce.
i) La interrupción se anota en el buffer pero no se atiende hasta que la
instrucción DIV.D F2,F8,F6 no termina la etapa WB.
Respuesta (lista ordenada de letras): h, f, d, b, a ...............................................................
8. Se desea comparar un chip, A, de 4 núcleos con otro chip, B, de 6 núcleos y un 60 %
más de transistores.
A) Calcula cuántas veces más rápido es el chip A que el B para ejecutar un programa
paralelizable en un 96 %. Asume que la parte paralelizable se reparte por igual entre
todos los núcleos y que la frecuencia del reloj es la misma en los dos chips. [4]
TA = 0,96 To/4 + 0,04 To = 0,28 To; TB = 0,96 To/6 + 0,04 To = 0,20 To;
TA / TB = 1,4.

B) Realiza el mismo cálculo pero ahora asume que la carga de trabajo de la parte
paralelizable se reparte entre los núcleos de forma que el procesador que recibe más
carga de trabajo recibe un 20 % más que la media. [4]
TA = 1,2 · 0,96 To/4 + 0,04 To = 0,328 To; TB = 1,2 · 0,96 To/6 + 0,04 To = 0,232
To;
TA / TB = 328/232 = 41/29 = 1 +12/41 ≈ 1,29.

C) Supongamos ahora que la frecuencia de reloj del chip B es el 75 % de la frecuencia


de reloj del chip A y que la misma proporción se dan entre los voltajes de los chips.
Compara la potencia dinámica consumida por los chips cuando todos los transistores
están activos. Debes responder diciendo cuál de los dos chips consume más potencia y
cuántas veces más potencia consume que el otro. [4]
Sabemos que la potencia dinámica por transistor es
Potenciadinámica  Carga_capacitiva × Voltaje2 × Frecuencia_conmutación
y que B tiene 1,6 veces más transistores que A. Por consiguiente:
PdynA / PdynB =1/(1,6 × 0,752 × 0,75) = 1/(1,6 × 27/64) = 40/27 = 1 +13/27 ≈ 1,48.

D) Con los mismos supuestos del apartado anterior, y asumiendo que en todo
momento todos los transistores están activos, averigua cuál de los dos chips consume
más energía dinámica al ejecutar un programa y calcula cuántas veces más energía
consume. [3]
Sabemos que la energía dinámica por transistor es
Potenciadinámica  Carga_capacitiva × Voltaje2
y que B tiene 1,6 veces más transistores que A. Por consiguiente:
EdynA / EdynB =1/(1,6 × 0,752) = 1/(1,6 × 9/16) = 10/9 = 1 +1/9 ≈ 1,11.

También podría gustarte