In this lab you will about the optimization technique called loop unrolling and learn about the design and implementation of a pipelined Y86-64 processor by extending the PIPE (pipeline) Y86-64 processor simulator with a new instruction, iaddq, similar to what you did in the previous lab.
Download and extract the loopunroll.tar.
cd cs224 wget https://cs224.cs.vassar.edu/labs/loopunroll.tar tar xvf loopunroll.tar cd loopunroll
We will go over this code together in lab.
For this part of lab, we will be working in the
pipe-full.hcl contains a copy of the HCL code for PIPE, our pipeline implementation of the Y86-64 processor, along with a declaration of the constant value
IIADDQ. Similar to what you did in your last lab, you will add the proper HCL code to add the
iaddq instruction for the pipelined processor. Unlike last time, you do not need to write down the steps for each stage, though you may want to refer back to them has you implement your instruction.
To test the implementation of your
iaddq instruction you need to rebuild
psim, the pipelined Y86 simulator. After your modify your
pipe-full.hcl file type the following in the
# in the archlab/pipe directory make clean make psim VERSION=full
to rebuild the pipelined simulator,
To test to make sure your implementation didn’t break anything, you can test it against the Y86-64 benchmark programs in
archlab/y86-code code directory:
# in the archlab/y86-code directory make testpsim
This will run
psim on the benchmark programs and compare results with
yis. This does not test your
iaddq implementation, only that the other instructions still work correctly. Once you can execute the benchmark programs correctly, then you should check it with the regression tests in
To test your implementation of the
# in the archlab/ptest directory make SIM=../pipe/psim TFLAGS=-i
Submitting your work
pipe-full.hcl to Gradescope.