AccessTraceForAddress.hh (7456:8b9be6e12c9b) AccessTraceForAddress.hh (8164:b043c0efa024)
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;

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

26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __MEM_RUBY_PROFILER_ACCESSTRACEFORADDRESS_HH__
30#define __MEM_RUBY_PROFILER_ACCESSTRACEFORADDRESS_HH__
31
32#include <iostream>
33
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;

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

26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __MEM_RUBY_PROFILER_ACCESSTRACEFORADDRESS_HH__
30#define __MEM_RUBY_PROFILER_ACCESSTRACEFORADDRESS_HH__
31
32#include <iostream>
33
34#include "mem/protocol/AccessModeType.hh"
34#include "mem/protocol/RubyAccessMode.hh"
35#include "mem/protocol/CacheRequestType.hh"
36#include "mem/ruby/common/Address.hh"
37#include "mem/ruby/common/Global.hh"
38#include "mem/ruby/common/Set.hh"
39#include "mem/ruby/system/NodeID.hh"
40
41class Histogram;
42
43class AccessTraceForAddress
44{
45 public:
46 AccessTraceForAddress()
47 : m_loads(0), m_stores(0), m_atomics(0), m_total(0), m_user(0),
48 m_sharing(0), m_histogram_ptr(NULL)
49 { }
50 ~AccessTraceForAddress();
51
52 void setAddress(const Address& addr) { m_addr = addr; }
35#include "mem/protocol/CacheRequestType.hh"
36#include "mem/ruby/common/Address.hh"
37#include "mem/ruby/common/Global.hh"
38#include "mem/ruby/common/Set.hh"
39#include "mem/ruby/system/NodeID.hh"
40
41class Histogram;
42
43class AccessTraceForAddress
44{
45 public:
46 AccessTraceForAddress()
47 : m_loads(0), m_stores(0), m_atomics(0), m_total(0), m_user(0),
48 m_sharing(0), m_histogram_ptr(NULL)
49 { }
50 ~AccessTraceForAddress();
51
52 void setAddress(const Address& addr) { m_addr = addr; }
53 void update(CacheRequestType type, AccessModeType access_mode, NodeID cpu,
53 void update(CacheRequestType type, RubyAccessMode access_mode, NodeID cpu,
54 bool sharing_miss);
55 int getTotal() const;
56 int getSharing() const { return m_sharing; }
57 int getTouchedBy() const { return m_touched_by.count(); }
58 const Address& getAddress() const { return m_addr; }
59 void addSample(int value);
60
61 void print(std::ostream& out) const;

--- 29 unchanged lines hidden ---
54 bool sharing_miss);
55 int getTotal() const;
56 int getSharing() const { return m_sharing; }
57 int getTouchedBy() const { return m_touched_by.count(); }
58 const Address& getAddress() const { return m_addr; }
59 void addSample(int value);
60
61 void print(std::ostream& out) const;

--- 29 unchanged lines hidden ---