Translate

viernes, 21 de diciembre de 2012

Práctica 7



 PRÁCTICAS CON WinDLXV


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

- Ejemplo 1: dependencias de datos tipo RAW

Ejecute el programa ciclo a ciclo y observe las detenciones que se producen en el cauce debido a las dependencias.

¿Cuál es en este cauce la latencia de emisión de las instrucciones aritmético-lógicas?
Suma/Resta = 3
Multiplicación = 6
División = 20

¿La escritura y la lectura de los operandos en el banco de registros se realizan en el mismo o en distinto ciclo?
Si, una en el flaco de subida y otra en el flaco de bajada

Una vez ejecutado el programa completo, indicar:

a) Número total de ciclos de ejecución y CPI:
29 ciclos y 1,933 ciclos por instrucción
           
b) Número (de ciclos) y distribución de las detenciones (stalls):
10 RAW (Cuando pide un dato antes de que se haya calculado)
0 WAW
0 WAR
0 Estructurales

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):

19 ciclos, 1,267 CPI, 0 RAW, 0 WAW, 0 WAR y 0 Estructurales. La ganancia es que al usar adelantamiento es 10 ciclos menos de ejecución y no tener ninguna detención.  


;*********** WINDLXV *************
;*********** Ejemplo 1 *************
;-----------------------------------------------------------------------------
; Ejemplo para ilustrar dependencias de datos tipo RAW
;-----------------------------------------------------------------------------
.text
main:
add r1,r2,r3 ;almacena un nuevo valor en r1
sub r4,r1,r5 ;usa r1
and r6,r1,r7 ;usa r1
or r8,r1,r9 ;usa r1
xor r10,r1,r11 ;usa r1
nop
nop
nop
nop
add r1,r2,r3 ;almacena un nuevo valor en r1
sub r4,r1,r5 ;usa r1 y almacena un nuevo valor en r4
and r6,r4,r7 ;usa r4 y almacena un nuevo valor en r6
or r8,r6,r9 ;usa r6 y almacena un nuevo valor en r8
xor r10,r8,r11 ;usa r8 y almacena un nuevo valor en r10
Finish: trap 6

- Ejemplo 2: dependencias de datos tipo RAW

Inicialice los registros r2 y r3 con los valores 0x1002 y 0x6, respectivamente. Igualmente, inicialice las posiciones de memoria 0x1004 y 0x1008 con los valores 0x1f y 0x20, respectivamente.

Sin ejecutar el programa en el simulador, determine los valores que almacenarán los registros r1, r4, r5, r6 y r8 al finalizar su ejecución. Indique también la dirección de memoria en la que se almacenará el contenido del registro r5. Una vez ejecutado el programa en el simulador compruebe estos resultados.

R1 = R2 + R3 = 4098 + 6 = 4104
R4 = R1 desplazado 0 veces = 4104
R5 = R4 – R3 = 4104 – 6 = 4098
R8 = R1 or R5 = 100000001000 or 1000000000010 = 1000000000000 = 4096

Ejecute el programa ciclo a ciclo y observe las detenciones que se producen en el cauce debido a las dependencias.

¿Cuál es en este cauce la latencia de emisión de las instrucciones aritmético-lógicas?

-Suma/resta: 3 Latencia
-Multiplicación: 6 Latencia
-División: 20 Latencia

¿Y para las instrucciones de carga?

-Suma/resta: 7 Latencia
-Multiplicación: 8 Latencia
-División: 21 Latencia
-Carga Vectorial: 13 Latencia

Una vez ejecutado el programa completo, indicar:

a) Número total de ciclos de ejecución y CPI

 25 ciclos y hay 1,923 CPI

b) Número (de ciclos) y distribución de las detenciones

8 RAW, 0 WAW, 0 WAR y 0 Estructurales




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

19 Ciclos, 1,462 CPI, 2 RAW, 0 WAW, 0 WAR, 0 Estructurales. Las ganancias de usar adelantamiento son 7 ciclos menos y menos detenciones, 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?

Instrucciones Aritmético-lógicas:
-Suma/resta: 3 Latencia
-Multiplicación: 6 Latencia
-División: 20 Latencia

Instrucciones de carga:
-Suma/resta: 7 Latencia
-Multiplicación: 8 Latencia
-División: 21 Latencia
-Carga Vectorial: 13 Latencia

;*********** WINDLXV*************
;*********** Ejemplo 2 *************
;-----------------------------------------------------------------------------
; Ejemplo para ilustrar dependencias de datos tipo RAW
;-----------------------------------------------------------------------------
.text
main:
add r1,r2,r3
lw r4, 0(r1) ;carga en r4 usando r1
sub r5,r4,r3 ;usa r4
sw 14(r2),r5 ;almacena r5 usando r2
nop
nop
nop
nop
lw r1, 2(r2)
sub r4,r1,r5
and r6,r1,r5
or r8,r1,r5
Finish:
trap 6

- Ejemplo 3: dependencias de tipo estructural

Ejecute el programa ciclo a ciclo y observe las detenciones que se producen en el cauce debido a las dependencias.
Una vez ejecutado el programa completo, indicar:

a) Número total de ciclos de ejecución y CPI

18 Ciclos y 3 ciclos por instrucción

b) Número (de ciclos) y distribución de las detenciones

0 RAW, 0 WAW, 0 WAR y 0 Estructurales

c) Ganancia del rendimiento al segmentar las unidades funcionales de punto flotante**

15 ciclos frente a 18 ciclos sin segmentar. La ganancia es de 3 ciclos, aunque se producen 3 detenciones; 1 RAW y 2 Estructurales.


;*********** WINDLXV *************
;*********** Ejemplo 3 *************
;-----------------------------------------------------------------------------
; Ejemplo para ilustrar dependencias de tipo estructural
;-----------------------------------------------------------------------------
.text
main:
addf f1,f2,f3
multf f2,f4,f5
addf f3,f3,f4
multf f6,f6,f6
addf f1,f3,f5
addf f2,f3,f4
Finish:
trap 6



- Ejemplo 4: reordenación de datos

Para este ejemplo considere una latencia de 3 ciclos para la suma y la multiplicación y de 9 ciclos para la división. Unidades funcionales sin segmentar y adelantamiento de resultados desactivado.
Determinar:
a) Número total de ciclos de ejecución y CPI del programa inicial

86 Ciclos y 7.167 ciclos por instrucción

b) Número de ciclos perdidos por dependencias tipo RAW en el programa inicial

35 Ciclos

c) Ganancia del rendimiento al reordenar las instrucciones

73 ciclos frente a 86 ciclos, y solo perdemos 17 ciclos por dependencia tipo RAW en vez de 35.
;*********** WINDLXV *************
;*********** Ejemplo 4 *************
;------------------------------------------------------------------------------------------------------
; Ejemplo para ilustrar la reordenación de instrucciones – PROGRAMA ORIGINAL
;------------------------------------------------------------------------------------------------------
.data
ONE: .word 1
.text
main:
lf f1,ONE ;convierte divf en move al almacenar
cvti2f f7,f1 ; 1 en f7 en formato de punto flotante
nop
divf f1,f8,f7 ;mueve Y=(f8) a f1
divf f2,f9,f7 ;mueve Z=(f9) a f2
addf f3,f1,f2
divf f10,f3,f7 ;mueve f3 a X=(f10)
divf f4,f11,f7 ;mueve B=(f11) a f4
divf f5,f12,f7 ;mueve C=(f12) a f5
multf f6,f4,f5
divf f13,f6,f7 ;mueve f6 a A=(f13)
Finish:
trap 6


;*********** WINDLXV *************
;*********** Ejemplo 4 *************
;------------------------------------------------------------------------------------------------------------
; Ejemplo para ilustrar la reordenación de instrucciones – PROGRAMA REORDENADO
;------------------------------------------------------------------------------------------------------------
.data
ONE: .word 1
.text
main:
lf f1,ONE ;convierte divf en move al almacenar
cvti2f f7,f1 ; 1 en f7 en formato de punto flotante
nop
divf f1,f8,f7 ;mueve Y=(f8) a f1
divf f2,f9,f7 ;mueve Z=(f9) a f2
divf f4,f11,f7 ;mueve B=(f11) a f4
divf f5,f12,f7 ;mueve C=(f12) a f5
addf f3,f1,f2
multf f6,f4,f5
divf f10,f3,f7 ;mueve f3 a X=(f10)
divf f13,f6,f7 ;mueve f6 a A=(f13)
Finish:
trap 6

No hay comentarios:

Publicar un comentario