1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 32 unchanged lines hidden (view full) --- 41 42 ---------------------------------------------------------------------- 43*/ 44 45#ifndef __MEM_RUBY_PROFILER_PROFILER_HH__ 46#define __MEM_RUBY_PROFILER_PROFILER_HH__ 47 48#include <iostream> |
49#include <map> |
50#include <string> 51#include <vector> 52 |
53#include "base/hashmap.hh" |
54#include "mem/protocol/AccessModeType.hh" 55#include "mem/protocol/AccessType.hh" 56#include "mem/protocol/CacheRequestType.hh" 57#include "mem/protocol/GenericMachineType.hh" 58#include "mem/protocol/GenericRequestType.hh" 59#include "mem/protocol/PrefetchBit.hh" 60#include "mem/ruby/common/Address.hh" 61#include "mem/ruby/common/Consumer.hh" --- 5 unchanged lines hidden (view full) --- 67#include "mem/ruby/system/MemoryControl.hh" 68#include "mem/ruby/system/NodeID.hh" 69#include "params/RubyProfiler.hh" 70#include "sim/sim_object.hh" 71 72class CacheMsg; 73class AddressProfiler; 74 |
75class Profiler : public SimObject, public Consumer 76{ 77 public: 78 typedef RubyProfilerParams Params; 79 Profiler(const Params *); 80 ~Profiler(); 81 82 void wakeup(); --- 122 unchanged lines hidden (view full) --- 205 Histogram m_delayedCyclesNonPFHistogram; 206 std::vector<Histogram> m_delayedCyclesVCHistograms; 207 208 Histogram m_outstanding_requests; 209 Histogram m_outstanding_persistent_requests; 210 211 Histogram m_average_latency_estimate; 212 |
213 m5::hash_set<Address> m_watch_address_set; |
214 // counts all initiated cache request including PUTs 215 int m_requests; |
216 std::map<std::string, int> m_requestProfileMap; |
217 218 //added by SS 219 bool m_hot_lines; 220 bool m_all_instructions; 221 222 int m_num_of_sequencers; 223}; 224 225inline std::ostream& 226operator<<(std::ostream& out, const Profiler& obj) 227{ 228 obj.print(out); 229 out << std::flush; 230 return out; 231} 232 233#endif // __MEM_RUBY_PROFILER_PROFILER_HH__ 234 235 |