snoop_filter.hh (10399:0644819fc32f) snoop_filter.hh (10403:b3231fc8ae9d)
1/*
2 * Copyright (c) 2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 174 unchanged lines hidden (view full) ---

183 return std::make_pair(slave_ports, latency);
184 }
185 std::pair<SnoopList, Cycles> snoopDown(Cycles latency) const
186 {
187 SnoopList empty;
188 return std::make_pair(empty , latency);
189 }
190
1/*
2 * Copyright (c) 2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 174 unchanged lines hidden (view full) ---

183 return std::make_pair(slave_ports, latency);
184 }
185 std::pair<SnoopList, Cycles> snoopDown(Cycles latency) const
186 {
187 SnoopList empty;
188 return std::make_pair(empty , latency);
189 }
190
191 virtual void regStats();
192
191 protected:
192 typedef uint64_t SnoopMask;
193 /**
194 * Per cache line item tracking a bitmask of SlavePorts who have an
195 * outstanding request to this line (requested) or already share a cache line
196 * with this address (holder).
197 */
198 struct SnoopItem {

--- 23 unchanged lines hidden (view full) ---

222 /** Simple hash set of cached addresses. */
223 m5::hash_map<Addr, SnoopItem> cachedLocations;
224 /** List of all attached slave ports. */
225 SnoopList slavePorts;
226 /** Cache line size. */
227 const unsigned linesize;
228 /** Latency for doing a lookup in the filter */
229 const Cycles lookupLatency;
193 protected:
194 typedef uint64_t SnoopMask;
195 /**
196 * Per cache line item tracking a bitmask of SlavePorts who have an
197 * outstanding request to this line (requested) or already share a cache line
198 * with this address (holder).
199 */
200 struct SnoopItem {

--- 23 unchanged lines hidden (view full) ---

224 /** Simple hash set of cached addresses. */
225 m5::hash_map<Addr, SnoopItem> cachedLocations;
226 /** List of all attached slave ports. */
227 SnoopList slavePorts;
228 /** Cache line size. */
229 const unsigned linesize;
230 /** Latency for doing a lookup in the filter */
231 const Cycles lookupLatency;
232
233 /** Statistics */
234 Stats::Scalar totRequests;
235 Stats::Scalar hitSingleRequests;
236 Stats::Scalar hitMultiRequests;
237
238 Stats::Scalar totSnoops;
239 Stats::Scalar hitSingleSnoops;
240 Stats::Scalar hitMultiSnoops;
230};
231
232inline SnoopFilter::SnoopMask
233SnoopFilter::portToMask(const SlavePort& port) const
234{
235 unsigned id = (unsigned)port.getId();
236 assert(id != (unsigned)InvalidPortID);
237 assert((int)id < 8 * sizeof(SnoopMask));

--- 23 unchanged lines hidden ---
241};
242
243inline SnoopFilter::SnoopMask
244SnoopFilter::portToMask(const SlavePort& port) const
245{
246 unsigned id = (unsigned)port.getId();
247 assert(id != (unsigned)InvalidPortID);
248 assert((int)id < 8 * sizeof(SnoopMask));

--- 23 unchanged lines hidden ---