Profiler.hh (6896:649e40aad897) Profiler.hh (6897:cfeb3d9563dd)
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;

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

74#include "params/RubyProfiler.hh"
75#include "sim/sim_object.hh"
76
77class CacheMsg;
78class AddressProfiler;
79
80template <class KEY_TYPE, class VALUE_TYPE> class Map;
81
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;

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

74#include "params/RubyProfiler.hh"
75#include "sim/sim_object.hh"
76
77class CacheMsg;
78class AddressProfiler;
79
80template <class KEY_TYPE, class VALUE_TYPE> class Map;
81
82struct memory_control_profiler {
83 uint64 m_memReq;
84 uint64 m_memBankBusy;
85 uint64 m_memBusBusy;
86 uint64 m_memTfawBusy;
87 uint64 m_memReadWriteBusy;
88 uint64 m_memDataBusBusy;
89 uint64 m_memRefresh;
90 uint64 m_memRead;
91 uint64 m_memWrite;
92 uint64 m_memWaitCycles;
93 uint64 m_memInputQ;
94 uint64 m_memBankQ;
95 uint64 m_memArbWait;
96 uint64 m_memRandBusy;
97 uint64 m_memNotOld;
98 Vector<uint64> m_memBankCount;
99 int m_banks_per_rank;
100 int m_ranks_per_dimm;
101 int m_dimms_per_channel;
102};
103
104
105class Profiler : public SimObject, public Consumer {
106public:
107 // Constructors
108 typedef RubyProfilerParams Params;
109 Profiler(const Params *);
110
111 // Destructor
112 ~Profiler();

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

165 void rubyWatch(int proc);
166 bool watchAddress(Address addr);
167
168 // return Ruby's start time
169 Time getRubyStartTime(){
170 return m_ruby_start;
171 }
172
82class Profiler : public SimObject, public Consumer {
83public:
84 // Constructors
85 typedef RubyProfilerParams Params;
86 Profiler(const Params *);
87
88 // Destructor
89 ~Profiler();

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

142 void rubyWatch(int proc);
143 bool watchAddress(Address addr);
144
145 // return Ruby's start time
146 Time getRubyStartTime(){
147 return m_ruby_start;
148 }
149
173 // added for MemoryControl:
174 void profileMemReq(int mem_cntrl, int bank);
175 void profileMemBankBusy(int mem_cntrl);
176 void profileMemBusBusy(int mem_cntrl);
177 void profileMemTfawBusy(int mem_cntrl);
178 void profileMemReadWriteBusy(int mem_cntrl);
179 void profileMemDataBusBusy(int mem_cntrl);
180 void profileMemRefresh(int mem_cntrl);
181 void profileMemRead(int mem_cntrl);
182 void profileMemWrite(int mem_cntrl);
183 void profileMemWaitCycles(int mem_cntrl, int cycles);
184 void profileMemInputQ(int mem_cntrl, int cycles);
185 void profileMemBankQ(int mem_cntrl, int cycles);
186 void profileMemArbWait(int mem_cntrl, int cycles);
187 void profileMemRandBusy(int mem_cntrl);
188 void profileMemNotOld(int mem_cntrl);
189 //added by SS
190 bool getHotLines() { return m_hot_lines; }
191 bool getAllInstructions() { return m_all_instructions; }
192
193private:
150 //added by SS
151 bool getHotLines() { return m_hot_lines; }
152 bool getAllInstructions() { return m_all_instructions; }
153
154private:
194 //added by SS
195 vector<string> m_memory_control_names;
196
197 // Private copy constructor and assignment operator
198 Profiler(const Profiler& obj);
199 Profiler& operator=(const Profiler& obj);
200
201 // Data Members (m_ prefix)
202 AddressProfiler* m_address_profiler_ptr;
203 AddressProfiler* m_inst_profiler_ptr;

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

250
251 Histogram m_average_latency_estimate;
252
253 Map<Address, int>* m_watch_address_list_ptr;
254 // counts all initiated cache request including PUTs
255 int m_requests;
256 Map <string, int>* m_requestProfileMap_ptr;
257
155
156 // Private copy constructor and assignment operator
157 Profiler(const Profiler& obj);
158 Profiler& operator=(const Profiler& obj);
159
160 // Data Members (m_ prefix)
161 AddressProfiler* m_address_profiler_ptr;
162 AddressProfiler* m_inst_profiler_ptr;

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

209
210 Histogram m_average_latency_estimate;
211
212 Map<Address, int>* m_watch_address_list_ptr;
213 // counts all initiated cache request including PUTs
214 int m_requests;
215 Map <string, int>* m_requestProfileMap_ptr;
216
258 // added for MemoryControl:
259 //added by SS
217 //added by SS
260 Vector < memory_control_profiler* > m_mc_profilers;
261
262 //added by SS
263 bool m_hot_lines;
264 bool m_all_instructions;
265
266 int m_num_of_sequencers;
267};
268
269// Output operator declaration
270ostream& operator<<(ostream& out, const Profiler& obj);

--- 15 unchanged lines hidden ---
218 bool m_hot_lines;
219 bool m_all_instructions;
220
221 int m_num_of_sequencers;
222};
223
224// Output operator declaration
225ostream& operator<<(ostream& out, const Profiler& obj);

--- 15 unchanged lines hidden ---