En esta práctica usaremos el programa WinDLXV que sirve para saber como nuestro ordenador ejecuta las órdenes que le indicamos, y como se va modificando el pipeline, entre otras cosas.
Para cada uno de los siguientes ejemplos, las condiciones de partida serán:
- Unidad de suma: latencia 2 ciclos
- Unidad de multiplicación: latencia 5 ciclos
- Unidad de división: latencia 19 ciclos
- Unidades funcionales sin segmentar
- Adelantamiento de resultados: desactivado
(Estas condiciones se modificaciones se hacen accediendo a la pestaña Arquitectura en el menú superior).
Ejercicio 1
a)
Número total de ciclos de ejecución y CPI
b)
Número (de ciclos) y distribución de las detenciones (stalls)
c) Número total de ciclos de
ejecución, CPI, número (de ciclos) y distribución de las detenciones y ganancia
del rendimiento al emplear adelantamiento de resultados (data forwarding)
a) 29 ciclos, 1993 ciclos por
instrucción
b) 29 ciclos
c) 19 ciclos, 1267 CPI, 35% de
ganancia
Básicamente el estos resultados se consiguen esperando a que el programa ejecute la sentencia completa de órdenes y luego si miramos en el cuadro superior derecho llamado Estadísticas miraremos los datos que nos piden. La ganancia la he calculado con una regla de tres, analizando los ciclos y el CPI de ambos casos.
a)
Número total de ciclos de ejecución y CPI
b)
Número (de ciclos) y distribución de las detenciones
c)
Número total de ciclos de ejecución, CPI, número (de ciclos) y distribución de
las detenciones y ganancia del rendimiento al emplear adelantamiento de
resultados
d) Al emplear adelantamiento de
resultados, ¿cuáles serían las latencias de emisión para las instrucciones
aritmético-lógicas y para las instrucciones de carga?
a) 7 ciclos, 7000 CPI
b) 7 ciclos
c) 5 ciclos, 5000CPI, 29% de
ganancia
d) Aritmético-lógicas -> Suma/Resta: 3 Multiplicación: 6 División: 20
Carga -> 13
a)
Número total de ciclos de ejecución y CPI
b)
Número (de ciclos) y distribución de las detenciones
c) Ganancia del rendimiento al
segmentar las unidades funcionales de punto flotante
a) 18 ciclos, 3000 CPI
b) 18 ciclos
c) 17% de ganancia
a)
Número total de ciclos de ejecución y CPI del programa inicial
b)
Número de ciclos perdidos por dependencias tipo RAW en el programa inicial
c) Ganancia del rendimiento al
reordenar las instrucciones
a) 86 ciclos, 7167 CPI
b) 14
c) 15% de ganancia
Todos los ejercicios se resuelven como en el primer caso.
