On Feb 10, 2005, at 3:32 PM, Weihang Jiang wrote:
What I am asking is about memory replacement. When a physical memory
page is replaced, the corresponding L2 cache lines need to be flushed
first.
I'm not sure I understand what you're saying. When a physical memory
page is replaced, the TLB entry needs to change, but the blocks in the
cache can stay where they are. When the operating system actually
swaps in the new page, the DMA controller will need to write the
various blocks in the page. These DMA writes are responsible for
invalidating (or updating) any caches that might have readable copies
of the block. Currently, Ruby doesn't treat DMA writes in this way,
but at one point we had a version that treated all DMA operations as
happening on either a separate virtual processor or as all DMA
happening at processor zero. Simics gives us all of these requests, we
currently just choose to ignore them.
Does that make sense, or am I misinterpreting the question?
- Milo
--
Milo M. K. Martin (milom@xxxxxxxxxxxxx)
http://www.cis.upenn.edu/~milom/
Assistant Professor
Computer and Information Sciences Department
University of Pennsylvania
|