Computer Architecture 22200/32200 Homework #5
Due June 1


  1. (22200/32200, 30 points) Loop unrolling
    H&P 4.8
  2. (22200/32200, 20 points) Software pipelining
    H&P 4.9e
    How does the execution time per element (in cycles) resulting from software pipelining compare with just scheduling one iteration of the loop?
  3. (22200/32200, 30 points) Speculation/predication
    H&P 4.18
  4. (22200/32200, 40 points) Data dependence analysis
    Show the results of the GCD and Banerjee tests for Loop 1 and Loop 2 separately. Based on these results, what can you conclude about the dependencies or lack of dependencies in both loops? (Hint: Use algebra for Loop 1).
    // Loop 1
    for (i=0; i < N; i++) {
        A[3*i + 3] = B[3*i] + A[2*i + 2];
        B[6*i + 2] = A[3*i + 3];
    }
    
    // Loop 2
    for (i=0; i < 5; i++) {
        A[i + 7] = B[i] + 4;
        B[i] = A[i];
    }
    

mstrout@mcs.anl.gov May 2004