Sorry I missed this thread... I just read Nilay's response about python
issues and he pointed me over here.

One thing we should think about is that we really only want the caches
within a single system to be flushed at once... I know that it's unlikely
that anyone will want to model two systems with detailed memory models at
once, and I vaguely recall there were other issues with Ruby not really
supporting multiple instances of itself, but I don't want to see us make
things less modular than they already are.

The m5 idiom for doing this is:
- add a parameter to each cache/controller/whatever we want to track like
this:
     system = Param.System(Parent.any, "system object")
- add a method to the System object like registerCache(Cache *c) that adds c
to the system object's list of caches
- Have each cache constructor call p->system->registerCache(this) to
register itself

Would something like this work for what you're trying to do?

Steve

On Tue, Mar 8, 2011 at 3:21 AM, Nilay Vaish <ni...@cs.wisc.edu> wrote:

> It seems that this will work out. We can make AbstractController call a
> static function of RubyPort class that will add the calling object to some
> list which will be accessed while making functional accesses. As far as
> pushing functional access support to Sequencer in to concerned, there was no
> particular reason for that. Since Sequencer handles that timing acesses, I
> thought that should be the file that would contain the code for functional
> accesses. I am fine with functional access code going in to RubyPort.
>
> --
> Nilay
>
>
>
> On Mon, 7 Mar 2011, Beckmann, Brad wrote:
>
>  Hi Nilay,
>>
>> Please excuse the slow response.  I've been meaning to reply to this email
>> for a few days.
>>
>> Absolutely, we will need to maintain some sort of list of all cachememory
>> and directorymemory objects to make the functional access support work.
>>  However, I'm not sure if we'll need to modify the protocol python files.
>>  Instead, could we create a list of these objects through their c++
>> constructors similar to how the SimObject list is created?  Also, I know the
>> line between the RubyPort and Sequencer is quite blurry, but is there a
>> particular reason to push the functional access support into the Sequencer?
>>  It seems that the RubyPort would be a more natural location.
>>
>> Brad
>>
>>
>>  -----Original Message-----
>>> From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
>>> Sent: Friday, March 04, 2011 9:49 AM
>>> To: Beckmann, Brad
>>> Cc: m5-dev@m5sim.org
>>> Subject: Functional Interface in Ruby
>>>
>>> I have been thinking about how to make Ruby support functional accesses.
>>> It seems some where we will have to add support so that either RubyPort
>>> or
>>> Sequencer can view all other caches. I am currently leaning towards
>>> adding it
>>> to the sequencer. I think this can be done by editing protocol files in
>>> configs/ruby. And then RubyPort can pass on functional accesses to the
>>> Sequencer, which will look up all the caches and take the correct action.
>>>
>>> I think this can be made to work.
>>>
>>> Nilay
>>>
>>
>>
>>
>>  _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to