On Wed, 3 Jul 2013, Joel Hestness wrote:



On July 2, 2013, 11:17 p.m., Nilay Vaish wrote:
Joel, I am of the view that we should eliminate ruby's internal
numbering instead. The cntrl_id is something that appears in
the config.ini file and hence is visible to the user. But ruby's
internal numbering of controllers never gets exposed.

I'm a fan of Ruby's unique numbering for a few reasons:

1) Because Ruby controllers are instantiated and initialized in 2 separate phases, it is guaranteed that the Ruby unique IDs are setup before any initialization, since they only depend on the number of controllers, not their orders, types or otherwise. This is really simple compared to instantiation ordering or another complicated scheme in the protocol config files.

2) All of the code for setting up the machine type base number for the Ruby unique IDs is rolled into SLICC generated code, so the user need not have any exposure to it. It would be nice to just rely on this; basically every time that I've setup or modified a protocol configuration file (4 or 5 experiences), getting the cntrl_ids correct has been a pain and error prone. Without the change I'm proposing here, if the cntrl_ids are not sequential from 0-(# cntrls - 1) (which is easy to mess up), you get a MessageBuffer connection fatal with any interconnect using Topology.cc. This fatal would never be tripped if using Ruby unique IDs, based on simple-to-setup controller version numbers.

3) The cntrl_ids are unnecessary as far as I can tell, and they don't inform the user about anything that the Ruby unique IDs or version number cannot. Probably the most (only?) important place where we must be able to identify a particular controller is in a protocol trace. These traces already use the version number, which is printed in the config.ini and is user controlled. Effectively, cntrl_ids are a duplicate of Ruby unique IDs with a user defined machine type base number. I'm not aware of a need for this flexibility.

Anyway, this is a bit of an aside from this review request: Do you want to make a decision on using cntrl_ids vs. Ruby unique IDs before this patch goes through? It does fix a known bug, and I feel it does so in an appropriate direction.



Well, the bug can be fixed by using the other id as well. I am fine with dropping the controller ids. But in that case, I would prefer that we add the ids that ruby provides to the config.ini file.

--
Nilay
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to