80 likes | 162 Views
Pipeline - problema. Lab. FIC An03.Sapt04. Text problema. Se da urm ătorul cod scris in limbaj de asamblare MIPS . Ştiind că iniţial: R4 = R2 +352 Se cere: De căte ori se efectuează bucla ?
E N D
Pipeline - problema Lab. FICAn03.Sapt04
Text problema Se da următorul cod scris in limbaj de asamblare MIPS. Ştiind că iniţial: R4 = R2 +352 Se cere: • De căte ori se efectuează bucla? • Presupunând că nu avem forwarding, nici bypassing, doar artificiul cu tactul; iar branch-urile sunt tratate în maniera freeze flush, arătaţi funcţionarea buclei în pipeline • În cazul anterior câte impulsuri de tact trec de la iniţierea buclei până la terminarea ultimei instrucţiuni din ultima repetiţie a buclei? • Presupunând că avem forwarding, bypassing şi artificiul cu tactul; iar branch-urile sunt tratate în maniera predict as taken, arătaţi funcţionarea buclei în pipeline • În cazul anterior câte impulsuri de tact trec de la iniţierea buclei până la terminarea ultimei instrucţiuni din ultima repetiţie a buclei? Punctaj: a – 0.5 b – 1.75 (din care branch:0.5) c – 0.25 d – 1.75 (din care branch:0.5) e – 0.25
loop: LD F4, 4(R2) ADDD F2, F4, F2 LD F6, 4(R3) LD F8, 0(R4) DADDUI R2, R2, #16 MULD F6,F6,F2 ADDD F8, F8, F2 DADDUI R3, R3, #16 XOR R7,R8,R9 DSUBUI R4, R4, #16 SD F2, -4(R2) DSUBU R5, R4, R2 DSUBU R6, R3, R2 BNEZ R5, loop F4 Mem [R2 + 4] F2 F4 + F2 F6 Mem [R3 + 4] F8 Mem [R4] R2 R2 + 16 F6 F6 * F2 F8 F8 + F2 R3 R3 + 16 R7 R8 xor R9 R4 R4 -16 Mem[R2 - 4] F2 R5 R4 - R2 R6 R3 - R2 If R5 ≠ 0 go Codul:
Conditie de terminare bucla: R5 final = 0 La fiecare iteratie R5 = R4 – R2 R4 = R4anterior -16 R2 = R2anterior +16 => R4 – R2 = R4anterior -16 – (R2anterior +16) R4 – R2 = R4anterior – R2anterior – 32 => R5 = R5anterior - 32 Din enunt se stie ca: R4initial = R2initial + 352 R4initial - R2initial = 352 Subpunctul a F4 Mem [R2 + 4] F2 F4 + F2 F6 Mem [R3 + 4] F8 Mem [R4] R2 R2 + 16 F6 F6 * F2 F8 F8 + F2 R3 R3 + 16 R7 R8 xor R9 R4 R4 -16 Mem[R2 - 4] F2 R5 R4 - R2 R6 R3 - R2 If R5 ≠ 0 repeat loop
Sunpunctul c • Nr bucle * 23 + 2 = 11*23 +2 = 255 cc