sábado, 12 de enero de 2013

Práctica 7


Grado en Ingeniería Informática                              
Arquitectura de Computadores – Prácticas Curso 2012-13      
Practica 7: WinDLXV

Para la realización de esta práctica emplearemos el simulador WinDLXV con objeto de identificar las posibles detenciones del pipeline y observar las etapas por las que pasa una instrucción.


REALIZACIÓN DE LA PRÁCTICA.

En esta práctica analizaremos 4 conjuntos de instrucciones y contestaremos a una serie de cuestiones. Para estos 4 ejemplos las condiciones de partida son:

- 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





 Ejemplo 1: dependencias de datos tipo RAW

Cargamos el programa del ejemplo 1.



Cuestiones:
·         ¿Cuál es en este cauce la latencia de emisión de las instrucciones aritmético-lógicas?
Con latencia de emisión nos referimos a los ciclos que existen entre una instrucción y la siguiente. En este caso hay 2 ciclos entre instrucciones aritmético-lógicas.
·         ¿La escritura y la lectura de los operandos en el banco de registros se realizan en el mismo o en distinto ciclo?
Se realizan en un mismo ciclo, una operación en el flanco de subida y otra en el de bajada.
a)      Número total de ciclos de ejecución : 29 Ciclos.
CPI: 1933 Ciclos/Inst.
b)     Número (de ciclos) y distribución de las detenciones (stalls): Se producen 10 detenciones de tipo RAW.
c)      Aplicando el adelantamiento de resultado se obtienen los siguientes resultados:
Número total de ciclos de ejecución: 19 Ciclos.
            CPI: 1267 Ciclos/Inst.
Número (de ciclos) y distribución de las detenciones y ganancia del rendimiento al emplear adelantamiento de resultados (data forwarding) :
Ninguna detención. Al emplear adelantamiento de resultados se produce una mejora en el número de ciclos de ejecución y de reloj.

Ejemplo 2: dependencias de datos tipo RAW
Cargamos el programa del ejemplo 2 modificando los registros y las posiciones de memoria pedidos.


ADD  r1,r2,r3              r1 = 1002 + 6 = 0x1008
LW r4, 0(r1)                r4 = 0x20
SUB r5,r4,r3               r5 = r4 – r3 = 0x1a
SW 14(r2),r5                    almacena 1a en la posición 0x1010 de memoria.
LW r1, 2(r2)                     r1 = 0x1f
SUB r4,r1,r5                     r4 = 0x5
AND r6, r1, r5                  r6 = 0x1a
OR r8,r1,r5                 r8 = 0x1f


Cuestiones
·         ¿Cuál es en este cauce la latencia de emisión de las instrucciones aritmético-lógicas?
La latencia de las instrucciones Aritmético-lógicas es de 1 ciclo.
¿Y para las instrucciones de carga?
La latencia de las instrucciones de carga es de 3 ciclos.
a)      Número total de ciclos de ejecución: 25 ciclos.
CPI: 1923 Ciclos/Inst.
b)     Número (de ciclos) y distribución de las detenciones:
Se producen 8 detenciones de tipo RAW.
c)      Aplicando el adelantamiento de resultado se obtienen los siguientes resultados:
Número total de ciclos de ejecución: 19 ciclos.
CPI: 1462 Ciclos/Inst.
Número (de ciclos) y distribución de las detenciones: 2 detenciones tipo RAW.
Ganancia del rendimiento al emplear adelantamiento de resultados: 7 ciclos menos, 6 RAW menos.
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?
Con adelantamiento de resultado, la latencia de las instrucciones aritmético-lógicas es de 1 ciclo y la de las instrucciones de carga es de 2 ciclos.

Ejemplo 3: dependencias de tipo estructural

Cargamos el programa del ejemplo 3.


Cuestiones
a)      Número total de ciclos de ejecución: 18 ciclos.
CPI: 3 Ciclos/Inst.
b)     Número (de ciclos) y distribución de las detenciones :
No existen detenciones.
c)      Ganancia del rendimiento al segmentar las unidades funcionales de punto flotante:
15 Ciclos de ejecución.
CPI: 2.5 ciclos/instrucción.
Mejora el rendimiento al disminuir los ciclos de ejecución y los ciclos de reloj.

               

Ejemplo 4: reordenación de datos

Cargamos el programa del ejemplo 4 modificando la latencia de las instrucciones señaladas.





Cuestiones
a)      Número total de ciclos de ejecución: 86 ciclos.
CPI del programa inicial: 7167 Ciclos/Inst.
b)     Número de ciclos perdidos por dependencias tipo RAW en el programa inicial:
35 detenciones tipo RAW.
c)      Ganancia del rendimiento al reordenar las instrucciones:
Se produce una mejora del rendimiento porque el número de ciclos de ejecución disminuye de 86 a 73, el número de ciclos por instrucción de  7.167 a 6.083 y el número de detenciones de 35 a 17.

En la realización de la práctica he tenido dudas con las cuestiones referidas a la latencia de las instrucciones.

No hay comentarios:

Publicar un comentario