I've broken the work of this assignment into a number of tasks.
If only a single person were working on this assignment, I'd suggest
they be done in the order given below.
Working in pairs, it's possible for
one of you to be completing Task 3, say, while the other is getting underway
with Task 4.
I expect most of your time will be spent in Tasks 4-6. Exploring the
design space (Task 5) will require you to iterate on Task 4 a number of times,
as you change the C++
code to implement changes
to the cache's functionality.
Task 0: Setup
Warning: Changes to the original C++
code distribution are needed for this
step to work with SMOK V7.1.9
. See the "Fixing the Original Distribution"
section at the bottom of this page.
Synopsis: | We have created initial ICache and DCache
implementations that aren't really caches at all -- they just implement IF
and MemoryInterface functionality. Acquire them, make sure you can
build (compile/link) them in Visual Studio, make sure you can create SMOK
models with these new component types, and make sure you can use the debugger to examine
the execution of the code behind them.
|
Details: | This page explains what to do.
|
Applications: | None.
|
Task 1: Convert Your HW5 Machine
Synopsis: | The skeletal ICache and DCache
implementations simply implement IF and MemoryInterface
functionality. Replace those two components in your model with cache components
and verify that it continues to work.
|
Details: | This page explains what to do.
|
See also: | This page on SMOK debugging tools.
|
Applications: | The OS and application image you used in HW5 should
run in the machine with these caches.
|
Task 2: Implement Stalling
Synopsis: | Modify your machine's data path so that when a cache asserts its
stall output the machine stalls. Artifically insert a multi-cycle
delay into the degenerate cache implementations from Task 0 to test that stalling
works.
|
Details: | This page has more.
|
See also: | This page on cycle errors.
This page on SMOK debugging tools.
|
Applications: | The OS and apps should continue to run, just much more slowly.
You should use some small application for basic debugging, though.
|
Task 3: Implement Cache Flushing
Warning: Changes to the original distribution are needed to complete this step. You
also must use SMOK V7.1.9
. See the "See also" page below for details.
Synopsis: | Implement the data path and control modifications required
to implement the flush instruction. Modify the OS to
execute flush 's whenever a disk block is read into memory.
|
Details: | This page has more.
|
See also: | This page on cycle errors.
This page on SMOK debugging tools.
|
Applications: | You must create a disk image file that contains your
modified OS and a modified shell that simply runs through a benchmark
suite. See this page for details.
|
Task 4: Implementating a Cache Design
Goal: | Pick a simple cache design. Modify the C++ implementation of the
cache to realize it.
|
Details: | This page has more.
|
Applications: | Use the modified image file from Task 3.
|
See Also: | This page on debugging.
This page of C++ implementation tips.
This page on SMOK debugging tools.
|
Task 5: Exploring the Design Space
Goal: | Imagine you actually want to build this processor. You're going to have to
decide on a cache design. More complicated (and bigger) caches are likely to perform
better, but are more expensive. Where's the sweet spot?
|
Details: | This page has more.
|
Applications: | Use the modified image file from Task 3.
|
Task 6: Write Up Your Results
Goal: | Prepare a well written
report summarizing your findings about cache
design.
|
Details: | This page has more.
|
Applications: | NA
|