Click here for the tar file for this lab.
Updates and tips will be posted here as needed.
Remember from the class syllabus that you are expected to create your own solutions to this lab (and all other class assignments) without consulting the solutions of others in the class or on the internet.
You're free to use this website for the lab. It's an online Y86-64 simulator that allows you to step through assembly code, checking registers, memory and status codes along the way.
For full credit on Part C, you need to achieve a CPE of 10.75 or
better. You will receive no credit if you do not beat a CPE of
12.0. For CPEs between 10.75 and 12.0, you will receive a score that
scales linearly between the endpoints. (You can modify the
benchmark.pl script to output the correct score by editing the file
and changing line 23 to "$fullcpe = 10.75" and line 25 to "$threshcpe
= 12.0".)
It is possible to achieve the required speedup without adding any new
instructions or doing any loop unrolling (which we will talk about
later in the semester). Focus on removing unnecessary instructions in
the loop, avoiding a load-stall hazard, and optimizations based on the
fact that the hardware will guess all conditional branches are taken.
In some cases, an obviously incorrect CPE is reported (such as a value
less than 1.) This appears to occur because of unusual things you are
doing in your code, although we haven't completely gotten to the
bottom of it yet. (In many cases, it appears that code with bad CPEs
fails to pass the correctness tests.) In any event, the new thresholds
are very reachable without using any dubious tricks, so please
revise your code if you see CPEs that cannot be correct. This will
allow us to grade your submissions in a consistent fashion.
The lab will NOT compile on the SSH server (ssh.et.byu.edu), because
it does not have certain programs needed to run the makefiles. If you
want to work over SSH, SSH into a specific SPICE machine instead
(e.g. cilantro.ee.byu.edu).
This lab is not autograded and there is no lab server.
This lab is done individually, not in partners.
If something appears to be broken, please contact the lab TA.
Last updated 15 February 2021