> On Nov. 12, 2015, 10:17 p.m., Tony Gutierrez wrote:
> > src/base/types.hh, line 203
> > <http://reviews.gem5.org/r/3205/diff/1/?file=51611#file51611line203>
> >
> >     Joel's comment from 3185:
> >     
> >     I'm a little confused about the need for this. Is it not possible to 
> > just set a function pointer in Requests? Why do we need to dynamically 
> > instantiate and delete a wrapper class for the function pointer in each 
> > atomic Request?
> 
> Tony Gutierrez wrote:
>     Some of the functors data around, which is why we can simply use a 
> function pointer.

I won't hold up this patch, but this doesn't appear to be required: Sure, the 
functors currently pass data around. However, in a real system, the data 
associated with an atomic request gets packed into the payload of memory system 
packets. We should be doing the same thing in gem5, namely, putting the 
atomic's data in pkt->data, and the atomic operation is just a function pointer 
that operates on cache and packet data. That way, we wouldn't need to 
dynamically instantiate the functors and worry about memory management separate 
from the packet's data. Further, NVIDIA atomics allow multiple operations to be 
packed into a single packet (up to 3 in Fermi, and 16 or 32 in Kepler/Maxwell), 
and this current functor structure disallows that capability.

Going forward, I feel we need to move toward a solution that does not 
dynamically instantiate atomic functors, but rather packs atomics into the 
existing packet data.


- Joel


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviews.gem5.org/r/3205/#review7563
-----------------------------------------------------------


On Dec. 23, 2015, 6:34 p.m., Tony Gutierrez wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.gem5.org/r/3205/
> -----------------------------------------------------------
> 
> (Updated Dec. 23, 2015, 6:34 p.m.)
> 
> 
> Review request for Default.
> 
> 
> Repository: gem5
> 
> 
> Description
> -------
> 
> Changeset 11279:ea817032d082
> ---------------------------
> mem: support for gpu-style RMWs in ruby
> 
> This patch adds support for GPU-style read-modify-write (RMW) operations in
> ruby. Such atomic operations are traditionally executed at the memory 
> controller
> (instead of through an L1 cache using cache-line locking).
> 
> Currently, this patch works by propogating operation functors through the 
> memory
> system.
> 
> 
> Diffs
> -----
> 
>   src/mem/request.hh d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/protocol/RubySlicc_Exports.sm 
> d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/packet.hh d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/mem/abstract_mem.cc d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
>   src/base/types.hh d9a0136ab8cc4b3cf4821d064140b857e60db0dd 
> 
> Diff: http://reviews.gem5.org/r/3205/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Tony Gutierrez
> 
>

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

Reply via email to