On Fri, 11 Mar 2011, Steve Reinhardt wrote:
Thanks for the explanation... I was expecting to see a loop on L1DcacheMemory like before and I missed the one on system.ruby.network. In the short run, I think the easiest way to break the cycle is to have the network take the RubySystem object as a parameter instead of the other way around, then add a registerNetwork() callback on RubySystem to let the network give the system its pointer.
There are more dependencies involved in here. RubySystem needs total memory size, which is calculated by looping through all the directory controllers. But the controllers themselves require RubySystem pointer.
I still don't understand the opposition to cache controllers moving under RubySystem. They should logically be under RubySystem. Whenever we choose to remove RubySystem, everything will move under system. By having controllers under system and rest of Ruby components under RubySystem, we are creating two paths in the graph that are running parallel to each other, even though we have dependence between them. I would rather have a tree / directed acyclic structure.
Thanks Nilay _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev