Mladen Nikitovic wrote:
Mike Marty wrote:
You need to flush the private caches of that processor. In an actual
system, you would have to write back all dirty data to memory. In
Simics+Ruby, you could possibly cheat because Ruby doesn't keep track of
data. However even that isn't so simple because if you do have shared
data that is owned by the processor being shutdown, then you really do
need to initiate replacement operations so that the directory would not
generate forward messages to your shutdown processor.
So I think first you need to make sure all outstanding requests finish
at that processor, then you need to walk the cache and initiate
replacement operations for every cached line.
I was afraid of that :) Is this needed replacement operation already
implemented in GEMS? This also relates to my earlier question (in
another thread) regarding how to detect the number of replacements
performed on a cache on a per-processor basis...
No, the directed replacement of a cache block, or all cache blocks, is
not yet implemented.
You will also need to add your own profiling code to count replacements
on a per-processor basis
--Mike
|