Sezione Data - WinMips

di il
1 risposte

Sezione Data - WinMips

Buonasera, anzi buongiorno a tutti.
ho provato ad eseguire un esercizio -testo da me inventato- che prevedeva di partire da un determinato codice sul quale poi lavorarci su con instruction reordering, loop unrolling etc al fine di migliore le prestazioni, diminuendo i vari tipi di stalli.
Ho utilizzato WINMIPS64, ma ho testato il medesimo codice, con medesimi risultati con EDUMIPS.

di seguito vi riporto la prima versione di codice:

			.data
	vett:		.double	17.10,20.03,5.06,19.91,7.40,19.05,16.09,11.08			; array a
	n:		.word	64								; numero elementi *8
	m:		.double	100.00								; base per %
	vettperc:	.double	0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0					; array valori percentuali
	
	
			.text
	start:		LW	r1,n(r0)		       				         ; caricamento in r1 di 64
			L.D	f3,m(r0)                         				 ; caricamento in f3 di 100
			LW	r3,n(r0)							 ; caricamento in r3 di 64
	
	loop:		DADDI 	r1,r1,-8							 ; i = i-8
			L.D	f0,vett(r1)						         ; caricamento in f0 di a[i]
			ADD.D	f1,f1,f0						         ; somma
			BNEZ	r1,loop							         ; chiusura del loop
			
	loop1:		DADDI	r3,r3,-8						         ; i = i-8
			L.D	f2,vett(r3)					                 ; caricamento in f2 di a[i]
			DIV.D	f0,f2,f1							 ; divisione
			MUL.D	f0,f0,f3							 ; moltiplicazione
			S.D	f0,vettperc(r3)							 ; risultato scritto nell'array
			BNEZ	r3,loop1							 ; chiusura loop
			
			HALT
il problema è che nell'ultima versione la sezione data (sezione dei risultati) cambia! e ciò, sinceramente credo che significhi che c'è qualcosa che non va... ho provato davvero in tutti i modi a capire cosa... l'ho anche rifatto da capo, senza mai venirne a capo. Di seguito vi riporto l'ultima versione di codice e relativi screen della sezione data "cambiata". Grazie mille

Versione 2

		.data
	vett:		.double	17.10,20.03,5.06,19.91,7.40,19.05,16.09,11.08			; array a
	n:		.word	64								; numero elementi *8
	m:		.double	100.00								; base per %
	x:		.word   8
	vettperc:	.double	0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0					; array valori percentuali
	
	
			.text
	start:		LW	r1,n(r0)		       				         ; caricamento in r1 di 64
			L.D	f3,m(r0)                         				 ; caricamento in f3 di 100
			LW	r3,n(r0)							 ; caricamento in r3 di 64
			LW	r5,x(r0)							 ; caricamento in r5 di 8
	DADDI r4,r0,vett									 ; puntatore al primo elem di vett
	
	loop41:	
			L.D	f0,0(r4)						         ; caricamento in f0 del primo elemento
			ADD.D	f1,f1,f0						         ; somma parziale primo elemento


			L.D	f0,8(r4)						         ; caricamento in f0 del secondo elemento
			ADD.D	f1,f1,f0						         ; somma parziale primo + secondo


			L.D	f0,16(r4)						         ; caricamento in f0 del terzo elemento
			ADD.D	f1,f1,f0						         ; somma parziale f1+ terzo


			L.D	f0,24(r4)						         ; caricamento in f0 del quarto elemento
			ADD.D	f1,f1,f0						         ; somma parziale f1+ quarto

			DADDI r5,r5,-4
			DADDI r4,r4,32

			BNEZ	r5,loop41							 ; chiusura del loop


			
		DIV.D	f4,f3,f1

DADDI r7,r0,vett									 ; puntatore al primo elem di vett
DADDI r10,r0,vettperc									 ; puntatore al primo elem di vettperc
LW r6,x(r0)										 ; caricamento in r6 di 8


loop42: 		L.D	f2,(r7)					                 ; caricamento in f2 del primo elemento
			MUL.D	f0,f2,f4							 ; moltiplic
			S.D	f0,(r10)						 	 ; risultato scritto nel vettore
DADDI r7,r7,8
DADDI r10,r10,8

			L.D	f2,(r7)					                 ; caricamento in f2 di a[i]
			MUL.D	f0,f2,f4							 ; x100
			S.D	f0,(r10)						 	 ; risultato scritto nel vettore
DADDI r7,r7,8
DADDI r10,r10,8

			L.D	f2,(r7)					                 ; caricamento in f2 di a[i]
			MUL.D	f0,f2,f4							 ; x100
			S.D	f0,(r10)						 	 ; risultato scritto nel vettore
DADDI r7,r7,8
DADDI r10,r10,8

			L.D	f2,(r7)					                 ; caricamento in f2 di a[i]
			MUL.D	f0,f2,f4							 ; x100
			S.D	f0,(r10)						 	 ; risultato scritto nel vettore
DADDI r7,r7,8
DADDI r10,r10,8
			DADDI   r6,r6,-4

			BNEZ	r6,loop42							 ; chiusura loop

			HALT

			
Grazie mille per l'attenzione.
Saluti,
Pippo
Allegati:
25273_6e9eb370cdd8da52ce7246f1657448fd.png
25273_6e9eb370cdd8da52ce7246f1657448fd.png

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte