37c37
< * Authors: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
---
> * Authors: Stephan Diestelhorst
99,100c99,100
< * Init a new snoop filter and tell it about all the
< * slave ports of the enclosing bus.
---
> * Init a new snoop filter and tell it about all the slave ports
> * of the enclosing bus.
130c130
< * @param cpkt Pointer to the request packet. Not changed.
---
> * @param cpkt Pointer to the request packet. Not changed.
144c144
< * @param cpkt Request packet, merely for sanity checking
---
> * @param cpkt Request packet, merely for sanity checking
149,151c149,152
< * Handle an incoming snoop from below (the master port). These can upgrade the
< * tracking logic and may also benefit from additional steering thanks to the
< * snoop filter.
---
> * Handle an incoming snoop from below (the master port). These
> * can upgrade the tracking logic and may also benefit from
> * additional steering thanks to the snoop filter.
> *
159,161c160,162
< * Let the snoop filter see any snoop responses that turn into request responses
< * and indicate cache to cache transfers. These will update the corresponding
< * state in the filter.
---
> * Let the snoop filter see any snoop responses that turn into
> * request responses and indicate cache to cache transfers. These
> * will update the corresponding state in the filter.
172,173c173,175
< * Pass snoop responses that travel downward through the snoop filter and let
< * them update the snoop filter state. No additional routing happens.
---
> * Pass snoop responses that travel downward through the snoop
> * filter and let them update the snoop filter state. No
> * additional routing happens.
177c179
< * @param req_port MasterPort through which the response leaves this cluster.
---
> * @param req_port MasterPort through which the response is forwarded.
183,184c185,187
< * Update the snoop filter with a response from below (outer / other cache,
< * or memory) and update the tracking information in the snoop filter.
---
> * Update the snoop filter with a response from below (outer /
> * other cache, or memory) and update the tracking information in
> * the snoop filter.
187,188c190,191
< * @param slave_port SlavePort that made the original request and is the target
< * of this response.
---
> * @param slave_port SlavePort that made the original request and
> * is the target of this response.
191a195,198
> virtual void regStats();
>
> protected:
>
193c200,205
< * Simple factory methods for standard return values for lookupRequest
---
> * The underlying type for the bitmask we use for tracking. This
> * limits the number of snooping ports supported per crossbar. For
> * the moment it is an uint64_t to offer maximum
> * scalability. However, it is possible to use e.g. a uint16_t or
> * uint32_to slim down the footprint of the hash map (and
> * ultimately improve the simulation performance).
194a207,225
> typedef uint64_t SnoopMask;
>
> /**
> * Per cache line item tracking a bitmask of SlavePorts who have an
> * outstanding request to this line (requested) or already share a
> * cache line with this address (holder).
> */
> struct SnoopItem {
> SnoopMask requested;
> SnoopMask holder;
> };
> /**
> * HashMap of SnoopItems indexed by line address
> */
> typedef m5::hash_map<Addr, SnoopItem> SnoopFilterCache;
>
> /**
> * Simple factory methods for standard return values.
> */
210,222d240
< virtual void regStats();
<
< protected:
< typedef uint64_t SnoopMask;
< /**
< * Per cache line item tracking a bitmask of SlavePorts who have an
< * outstanding request to this line (requested) or already share a cache line
< * with this address (holder).
< */
< struct SnoopItem {
< SnoopMask requested;
< SnoopMask holder;
< };
224,228d241
< * HashMap of SnoopItems indexed by line address
< */
< typedef m5::hash_map<Addr, SnoopItem> SnoopFilterCache;
<
< /**
246a260
>
298a313
>