> 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
