On Thu, 24 Feb 2011, Beckmann, Brad wrote:

Steve, I think we are in agreement here and we may just be disagreeing with the definition of speculative. From the Ruby perspective, I don't think it really matters...I don't think there is difference between a speculative store address request and a prefetch-with-write-intent. Also we agree that probes will need to be sent to O3 LSQ to support the consistency model. My point is that if we believe this functionality is required, what is the extra overhead of adding a non-speculative store buffer to the O3 model as well? I think that will be easier than trying to incorporate the current Ruby non-speculative store buffer into each protocol.

Brad, I raise the same point that Arka raised earlier. Other processor models can also make use of store buffer. So, why only O3 should have a store buffer?

Secondly, does every protocol need to know the existence of a store buffer? Or can we let just the CacheMemory interface with the store buffer?


Overall, I guess I'm concluding that we probably can delete the current
Ruby store buffer.  Do others agree?

I agree. I had chat with Derek about this, he also agrees that it is not required in its present form.

--
Nilay


Brad


From: Steve Reinhardt [mailto:ste...@gmail.com]
Sent: Thursday, February 24, 2011 11:20 AM
To: M5 Developer List
Cc: Beckmann, Brad
Subject: Re: [m5-dev] Store Buffer


On Thu, Feb 24, 2011 at 11:08 AM, Beckmann, Brad <brad.beckm...@amd.com<mailto:brad.beckm...@amd.com>> wrote: So we probably don't want to pass speculative store data to the RubyPort, but what about speculative load and store requests? I suspect we do want to send them to the RubyPort before the speculation is confirmed. That might require splitting stores to two separate transactions: the request and the actual data write. Also I suspect that the RubyPort will need to forward probes to the cpu models to allow the LSQ to maintain the proper consistency model. If those two things end up being true, then what is the benefit of putting the non-speculative store buffer in each protocol, versus just in the o3 cpu model?

I'm not yet ready to advocate that is the right solution. I just want us to think these issues thru before deciding to go down one path or the other.

I also support the concept of thinking things through, but I'm also happy to comment without having done that yet :-).

My gut instinct is to say that O3 already has an LSQ, so Ruby needs to send invalidations up to the core to support the consistency model, and if we do that there's no need for a store buffer in Ruby. I'd like to better understand the arguments against that approach. For example, why would we want to send stores to Ruby when they are still speculative? Do we have real examples of systems that send the store address to the L1 cache speculatively? If we want to fetch store data more aggressively, wouldn't it be equivalent to generate a prefetch-with-write-intent first, then generate the store itself only when it commits? I think there are machines that do that.

Steve

_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to