Profiler.hh (7454:3a3e8e8cce1b) Profiler.hh (7455:586f99bf0dc4)
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>
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>
49#include <string>
50#include <vector>
51
50#include <string>
51#include <vector>
52
53#include "base/hashmap.hh"
52#include "mem/protocol/AccessModeType.hh"
53#include "mem/protocol/AccessType.hh"
54#include "mem/protocol/CacheRequestType.hh"
55#include "mem/protocol/GenericMachineType.hh"
56#include "mem/protocol/GenericRequestType.hh"
57#include "mem/protocol/PrefetchBit.hh"
58#include "mem/ruby/common/Address.hh"
59#include "mem/ruby/common/Consumer.hh"

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

65#include "mem/ruby/system/MemoryControl.hh"
66#include "mem/ruby/system/NodeID.hh"
67#include "params/RubyProfiler.hh"
68#include "sim/sim_object.hh"
69
70class CacheMsg;
71class AddressProfiler;
72
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
73template <class KEY_TYPE, class VALUE_TYPE> class Map;
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
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 Map<Address, int>* m_watch_address_list_ptr;
213 m5::hash_set<Address> m_watch_address_set;
214 // counts all initiated cache request including PUTs
215 int m_requests;
214 // counts all initiated cache request including PUTs
215 int m_requests;
216 Map <std::string, int>* m_requestProfileMap_ptr;
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
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