Software pipelining para el TP (Organización del Computador II)

De Cuba-Wiki
Revisión del 23:11 23 nov 2006 de 10.2.6.11 (discusión)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Nota: Me parece que deberiamos unificar todos los articulos de soft pipelining en un solo articulo de Software Pipelining, y de ahi distribuir de una manera ordenada los contenidos que copiamos de las clases o que subimos como aportes personales.


Basura tal cual la escribio en el pizzarrón (hmm... pizza)

r32 <- [r20], 4
f33 = f32 * f2 + f33
// for (i = 0, i < n, i++)
//     f = f + v[i] + k
(6 ciclos)
ldfs f32 = [r20], 4
fma f33 = f32, f2, f33


Ciclo a pipelinear

for (i = 0, i < n, i++)
{ f = f + v[i] + k }


parametros de entrada : (float *v, float k, int n)

cómo entran según itanium en los registros:

*v = r32
k = f33
n = r34

Código

 alloc r2 = ar.pfs, 3, 2, 0, 0
 mov f8 = f0          // f8 = 0
 add loc0 = r0, r0              // i = 0
ciclo:
 cmp.lt p2, p3 = loc0, in2  // i < n ? 
 (p3) br.cond fin.ciclo
 ldfs r32 = [in0], 4
 fma f8 = f32, f33, f8
 add loc0 = loc0, r0, 1
 br.cond.sptk ciclo


Anda este código? la verdad no sé. Tengo muchas ganas de irme a mi casa.