Seems to be working. Updated cache and memory structures with blocks of memory (for both) rather than just cells for main memory. There is a weird gotcha in the read() function in dmcache.cpp where the dirty bit needs be saved before evicting the data because this seems to be the value he wants to see.