















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
The schedule for the remaining lectures in eecs 583 at the university of michigan, focusing on iterative modulo scheduling. It includes information on reading material, lecture topics, and the modulo scheduling algorithm. The document also provides an example of modulo scheduling for a loop and covers what to do when hardware support is not available.
Typology: Study notes
1 / 23
This page cannot be seen from the preview
Don't miss anything!
















op = unscheduled op with the highest priority y min = early time for op (E(Y)) y max = min + II – 1 y t = find_slot(op, min, max) y schedule op at time t^ X^ /* Backtracking phase – undo previous scheduling decisions */^ X^ Unschedule all previously scheduled ops that conflict with op y budget--
Step1: Compute to loop into form that uses LC
for (j=0; j<100; j++)^ b[j] = a[j] * 26
LC = 99 1: r3 = load(r1) Loop:2: r4 = r3 * 263: store (r2, r4)4: r1 = r1 + 45: r2 = r2 + 47: brlc Loop
Loop:^ 1: r3 = load(r1)2: r4 = r3 * 263: store (r2, r4)4: r1 = r1 + 45: r2 = r2 + 46: p1 = cmpp (r1 < r9)7: brct p1 Loop
Step 2: DSA convert LC = 99^
1: r3 = load(r1)2: r4 = r3 * 263: store (r2, r4)4: r1 = r1 + 45: r2 = r2 + 47: brlc Loop
1: r3[-1] = load(r1[0])2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
Loop:^
Loop:
Step 4 – Calculate priorities (MAX height to pseudo stop node) 1,1 0,0 1 2,00,0 2 3,0 0,0 (^3) 0,01,11,1 0,0 (^4) 0,0 1,1 (^5) 0,0 1,1 7
Iter^
Iter 1: H = 5 2: H = 3 3: H = 0 4: H = 0 5: H = 0 7: H = 0
Schedule brlc at time II - 1
resources: 4 issue, 2 alu, 1 mem, 1 br latencies: add=1, mpy=3, ld = 2, st = 1, br = 1
Unrolled Schedule Rolled Schedule
LC = 99^
1: r3[-1] = load(r1[0]) Loop:2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
4 5 6 brmemalu1alu 0
Unrolled Schedule Rolled Schedule
LC = 99^
1: r3[-1] = load(r1[0]) Loop:2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
4 5 6 brmemalu1alu0 X X 0
Unrolled Schedule Rolled Schedule
LC = 99^
1: r3[-1] = load(r1[0]) Loop:2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
4 5 6 brmemalu1alu0 X XX 0
Unrolled Schedule Rolled Schedule
LC = 99^
1: r3[-1] = load(r1[0]) Loop:2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
4 5 6 brmemalu1alu0 XX X XX 0
Unrolled Schedule Rolled Schedule
LC = 99^
1: r3[-1] = load(r1[0]) Loop:2: r4[-1] = r3[-1] * 263: store (r2[0], r4[-1])4: r1[-1] = r1[0] + 45: r2[-1] = r2[0] + 4remap r1, r2, r3, r47: brlc Loop
4 5 6 brmemalu1alu0 XX X XX 0
time: ops executed
LC = 99 ESC = 2 p1[0] = 1
Loop:^ 1: r3[-1] = load(r1[0]) if p1[0]^ 2: r4[-1] = r3[-1] * 26 if p1[1]^ 4: r1[-1] = r1[0] + 4 if p1[0]^ 3: store (r2[0], r4[-1]) if p1[2]^ 5: r2[-1] = r2[0] + 4 if p1[0]^ 7: brlc Loop if p1[2]
How many resources of each type are required to achieve an II=1 schedule? If the resources are non-pipelined, how many resources of each type are required to achieve II=1 Assuming pipelined resources, generate the II=1 modulo schedule. for (j=0; j<100; j++)^ b[j] = a[j] * 26^ LC = 99^ 1: r3 = load(r1) Loop:2: r4 = r3 * 263: store (r2, r4)4: r1 = r1 + 45: r2 = r2 + 47: brlc Loop