> When I said that two collections of SimObjects can safely be simulated in > parallel if and only if these collections of objects only interact with each > other through events I assumed that causality problems are handled by > Eventqueues. To be more precise, if objects in one collection can send > events to another collection's EventQueue then this one should not simulate > past the time of the EventQueue of the objects who can send those events. In > PDES terms this collection of SimObjects would be "state objects" and > together with their EventQueue they would form a "process". Just so you > have an idea of what I mean with my terminology.
We generally don't actually work this way. When one object wants to cause something to happen on another object, it usually goes through some sort of Port interface. There's an event buried in there. I think it's really up to the port objects to deal with moving things from one event queue to another and to manage the timing differences. The port interfaces themselves would probably have some sort of lockless queue inside to move events from one side to the other without requiring locking. This could really just be two different ways of looking at the same thing, but I think fundamentally, we want to have a long term goal of not having locking in the queues and using some lock free data structures to move events from one queue to another. Nate _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
