This homework has two parts. Part 1 is a written problem relating to caches and needs to be done individually. It is due Friday at 5pm.
For part 2, you may work in pairs, and you get to choose your own adventure:
Option 2a is similar in spirit to the bomb lab, though without the nerve-racking danger of explosions. You will check out an executable "target" from a server, and will attempt to attack it by overflowing its input buffer with the correct byte sequence, making use of gdb, objdump, and other tools.
Option 2b requires you to build a circuit that implements "associative memory", in essence a single line of a set-associative cache.
Both options are tricky and will require significant time. I'm again providing incentive for getting started early by making your final score depend on your progress by the first deadline, Friday at 5pm. The final submission is due Monday at 5pm.
No extensions may be used for the Friday deadline, though you may use one for the final deadline. (If you work in a team, both team members need to have an extension left.)
(To be done individually.) Read BO, Section 6.4 - 6.4.4. Do the following practice problems (taken from the 2nd edition, so the numbers are different) and answer the additional questions posed.
Type up your solutions, save them in PDF format, and submit as "written.pdf" by Friday 5pm via the submission page linked below.
Choose one of options 2a or 2b.
For this option you'll have to complete the first 3 phases of the "attack lab" from the Bryant and O'Hallaron text, customized for our course. Here is the write-up, which contains detailed instructions and hints.
You may work in groups of two (highly recommended!), or by yourself if you prefer. Grading happens automatically; your current score will be displayed (anonymously) on the scoreboard.
To get started, form a team and check out your personal target here. If you work in a team, enter both usernames separated by an underscore, and one of the emails. You will need to save the target on basin or on one of the lab machines.
While the lab has 5 phases, you only need to complete the first 3, for a total of 60 points. If you solve more than 3, you can gain (only) up to 5 additional points. For added incentive to get started early, your total score will be computed as follows:
total = min(10, score_Fri) + min(65, score_Mon) where: score_Fri is your score as of 5pm this Friday, 4/27; score_Mon is your final score as of 5pm on Monday, 4/30.
Your final score for part 2 is out of 70; up to 75 is possible. You cannot take an extension on the early deadline (Fri). Please keep track of the total time; you will report it on the submission page (link below).
This homework is a adapted from a homework problem by Prof. Johnson. Here is the write-up, which contains detailed instructions.
You may work in groups of two (highly recommended!), or by yourself if you prefer.
Your final score is out of 70; 10 points for stage 1, due on Friday; and 60 points for full functionality, due Monday.
Friday deadline: Please upload your written answers "written.pdf" via the HW 8.1 submission page by Friday 5pm. In addition, if you're doing option 2b, one of the team members needs to upload the 1-word version of your circuit, "hw8a.circ". Make sure your circuit has a label with your name(s). Nothing to submit for option 2a, I will just take a snapshot of the scoreboard.
Final deadline: For option 2a, please upload the file containing the hex codes of the last stage you solved (typically stage 3) as "hex.txt". (It's fine if your file has a different name, you can ignore the warning.) For option 2b, please upload your final circuit "hw8.circ" and your test plan "testplan.pdf". Only one person per team should submit. Please upload your files ("hex.txt", or "hw8.circ" and "testplan.pdf") via the HW 8 submission page by Monday at 5pm.