Computer Organization Lab #7: Instruction Execution Rate

In this lab you will explore the rate at which your processor can execute instructions.

  1. The assembly language program ILP.asm demonstrates instruction level parallelism: the ability of the processor to execute multiple instructions overlapping or even simultaneously.

    First, create a C program using the Timer abstract type you've used before to time how long the function nothing_good takes to execute. You'll need to also modify ILP.asm to export nothing_good and to remove the main program currently there.

  2. You want to measure (at least) three timings: the program as written, the program using a loop instruction, and the program that uses a cmp instruction at the top of the loop. Notice that the last variation is slightly longer (more instructions) than the first one. Consider the following questions:

    1. Do the times make sense relative to each other? In particular do they scale in proportion to the number of instructions being executed?
    2. How many instructions per second, on the average, is the processor executing? Is it different for the three variations of your program? Keep in mind that you can ignore as relatively insignificant all the time outside the innermost loop.

Submit your final program (the modified ILP.asm and your C program) in a zip archive to Moodle along with your results and some comments about what they mean. You can include your results in the comments of your program.


Last Revised: 2017-04-13
© Copyright 2017 by Peter C. Chapin <PChapin@vtc.vsc.edu>