gem5
v21.1.0.2
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
o
p
q
r
s
t
v
x
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
:
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
a
b
c
e
f
g
h
i
l
m
n
o
p
s
t
v
Variables
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
v
w
Typedefs
a
b
c
d
h
i
m
p
s
t
u
w
Enumerations
b
h
i
o
p
Enumerator
h
i
o
Macros
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
mem
ruby
profiler
AccessTraceForAddress.hh
Go to the documentation of this file.
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;
9
* redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution;
12
* neither the name of the copyright holders nor the names of its
13
* contributors may be used to endorse or promote products derived from
14
* this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
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/ruby/common/Address.hh
"
35
#include "
mem/ruby/common/Set.hh
"
36
#include "mem/ruby/protocol/RubyAccessMode.hh"
37
#include "mem/ruby/protocol/RubyRequestType.hh"
38
39
namespace
gem5
40
{
41
42
namespace
ruby
43
{
44
45
class
Histogram;
46
47
class
AccessTraceForAddress
48
{
49
public
:
50
AccessTraceForAddress
()
51
:
m_loads
(0),
m_stores
(0),
m_atomics
(0),
m_total
(0),
m_user
(0),
52
m_sharing
(0),
m_histogram_ptr
(NULL)
53
{ }
54
~AccessTraceForAddress
();
55
56
void
setAddress
(
Addr
addr
) {
m_addr
=
addr
; }
57
void
update
(RubyRequestType
type
, RubyAccessMode access_mode,
NodeID
cpu,
58
bool
sharing_miss);
59
int
getTotal
()
const
;
60
int
getSharing
()
const
{
return
m_sharing
; }
61
int
getTouchedBy
()
const
{
return
m_touched_by
.
count
(); }
62
Addr
getAddress
()
const
{
return
m_addr
; }
63
void
addSample
(
int
value);
64
65
void
print
(std::ostream& out)
const
;
66
67
static
inline
bool
68
less_equal
(
const
AccessTraceForAddress
* n1,
69
const
AccessTraceForAddress
* n2)
70
{
71
return
n1->
getTotal
() <= n2->
getTotal
();
72
}
73
74
private
:
75
Addr
m_addr
;
76
uint64_t
m_loads
;
77
uint64_t
m_stores
;
78
uint64_t
m_atomics
;
79
uint64_t
m_total
;
80
uint64_t
m_user
;
81
uint64_t
m_sharing
;
82
Set
m_touched_by
;
83
Histogram
*
m_histogram_ptr
;
84
};
85
86
inline
std::ostream&
87
operator<<
(std::ostream& out,
const
AccessTraceForAddress
& obj)
88
{
89
obj.
print
(out);
90
out << std::flush;
91
return
out;
92
}
93
94
}
// namespace ruby
95
}
// namespace gem5
96
97
#endif // __MEM_RUBY_PROFILER_ACCESSTRACEFORADDRESS_HH__
gem5::ruby::AccessTraceForAddress::m_total
uint64_t m_total
Definition:
AccessTraceForAddress.hh:79
gem5::ruby::AccessTraceForAddress::update
void update(RubyRequestType type, RubyAccessMode access_mode, NodeID cpu, bool sharing_miss)
Definition:
AccessTraceForAddress.cc:68
gem5::ruby::AccessTraceForAddress::m_loads
uint64_t m_loads
Definition:
AccessTraceForAddress.hh:76
gem5::ruby::AccessTraceForAddress::getSharing
int getSharing() const
Definition:
AccessTraceForAddress.hh:60
gem5::ruby::AccessTraceForAddress::addSample
void addSample(int value)
Definition:
AccessTraceForAddress.cc:104
gem5::ruby::Set
Definition:
Set.hh:48
gem5::ruby::AccessTraceForAddress::print
void print(std::ostream &out) const
Definition:
AccessTraceForAddress.cc:48
gem5::ruby::AccessTraceForAddress::m_sharing
uint64_t m_sharing
Definition:
AccessTraceForAddress.hh:81
gem5::ruby::operator<<
std::ostream & operator<<(std::ostream &os, const BoolVec &myvector)
Definition:
BoolVec.cc:49
gem5::ruby::AccessTraceForAddress::AccessTraceForAddress
AccessTraceForAddress()
Definition:
AccessTraceForAddress.hh:50
gem5::ruby::AccessTraceForAddress::m_touched_by
Set m_touched_by
Definition:
AccessTraceForAddress.hh:82
gem5::ruby::AccessTraceForAddress::~AccessTraceForAddress
~AccessTraceForAddress()
Definition:
AccessTraceForAddress.cc:39
gem5::ruby::AccessTraceForAddress::m_histogram_ptr
Histogram * m_histogram_ptr
Definition:
AccessTraceForAddress.hh:83
gem5::ruby::AccessTraceForAddress::less_equal
static bool less_equal(const AccessTraceForAddress *n1, const AccessTraceForAddress *n2)
Definition:
AccessTraceForAddress.hh:68
gem5::X86ISA::type
type
Definition:
misc.hh:733
Set.hh
gem5::ruby::AccessTraceForAddress::m_atomics
uint64_t m_atomics
Definition:
AccessTraceForAddress.hh:78
gem5::ruby::AccessTraceForAddress
Definition:
AccessTraceForAddress.hh:47
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:147
gem5::ruby::Histogram
Definition:
Histogram.hh:43
gem5::ruby::AccessTraceForAddress::m_addr
Addr m_addr
Definition:
AccessTraceForAddress.hh:75
Address.hh
gem5::ruby::AccessTraceForAddress::m_user
uint64_t m_user
Definition:
AccessTraceForAddress.hh:80
gem5::ruby::Set::count
int count() const
Definition:
Set.hh:129
gem5::ruby::AccessTraceForAddress::setAddress
void setAddress(Addr addr)
Definition:
AccessTraceForAddress.hh:56
gem5::ruby::NodeID
unsigned int NodeID
Definition:
TypeDefines.hh:40
gem5::ruby::AccessTraceForAddress::getTotal
int getTotal() const
Definition:
AccessTraceForAddress.cc:94
gem5::ruby::AccessTraceForAddress::m_stores
uint64_t m_stores
Definition:
AccessTraceForAddress.hh:77
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition:
decoder.cc:40
gem5::ruby::AccessTraceForAddress::getAddress
Addr getAddress() const
Definition:
AccessTraceForAddress.hh:62
gem5::ruby::AccessTraceForAddress::getTouchedBy
int getTouchedBy() const
Definition:
AccessTraceForAddress.hh:61
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition:
types.hh:84
Generated on Tue Sep 21 2021 12:25:41 for gem5 by
doxygen
1.8.17