> On July 2, 2012, 1:07 p.m., Andreas Hansson wrote: > > It looks reasonable. I am not entirely sure about the distinction of the > > packets though. What happens for shared I and D? Would it not be better to > > make it a property of the cache rather than the packet, i.e. a parameter on > > the class? > > Ali Saidi wrote: > I think adding a flag on the cache model is more complex and doesn't buy > much in practice. Dirty data can still live in a unified cache (because it > would get inserted by a write instead of an instruction fetch). The change > would need to be a property of the requesting cache, but it would need to > effect the sending cache in which case more fields would need to be added to > the packet. > > In summary, I still think that the way it's implemented is probably > preferable. > > Anthony Gutierrez wrote: > If it's a shared i/d cache, I would assume that a packet that is fetching > an instruction would still be distinguished as such. Also, I think a shared > i/d cache would cause several other issues beyond this. I.e., we couldn't > have the cache invalidation instructions, as they actually function in > ARM/x86, modeled in gem5 at all. E.g., we couldn't implement mcr icialluis as > it actually works, or if we did, we could never have dirty data in the L1. > > Andreas Hansson wrote: > All makes sense. Do we have to add some form of check to ensure that the > user-specified configuration adheres to specific rules? > > Anthony Gutierrez wrote: > I don't think so. I think any configuration, other than unifying I/D > caches, would work just fine with this. If somebody did want a unified I/D > cache they would have to make more modifications to gem5 other than configs. > > Ali Saidi wrote: > I'm pretty sure unified I/D will work too because while ownership wont > get transfered on an instruction read, it would get transfered on an data > write. Instruction cache flushing won't work, but at this point it doesn't > work now anyway. :) Are you happy with this change Andreas? > > Anthony Gutierrez wrote: > Right, any configuration should work with this. I was referring to a > situation where invalidation works and is implemented. > > Andreas Hansson wrote: > I'm happy, assuming the comments are updated to reflect the change :)
Done. - Anthony ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/1284/#review3011 ----------------------------------------------------------- On July 3, 2012, 3:35 a.m., Anthony Gutierrez wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://reviews.gem5.org/r/1284/ > ----------------------------------------------------------- > > (Updated July 3, 2012, 3:35 a.m.) > > > Review request for Default. > > > Description > ------- > > Changeset 9086:8a09d8787f5a > --------------------------- > cache: don't allow dirty data in the i-cache > > removes the optimization that forwards an exclusive copy to a requester on a > read, only for the i-cache. this optimization isn't necessary because we > typically won't be writing to the i-cache. > > > Diffs > ----- > > src/mem/cache/cache_impl.hh 5f0321c03a2602f34dd03700e41e0cf5b47b8761 > > Diff: http://reviews.gem5.org/r/1284/diff/ > > > Testing > ------- > > Added i-cache invalidation instruction for ARM. These instructions invalidate > i-cache entries without writing them back, because it is not expected for > there to be dirty data in the caches. While invalidating I would get assert > failures and/or the program would hang due to dirty data in the i-cache being > invalidated. Doing this fixed those problems. Ran BBench to completion with > this fix and inv instructions in place. This is a necessary step towards > adding the inv instructions for ARM. > > > Thanks, > > Anthony Gutierrez > > _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
