Deleted Added
sdiff udiff text old ( 13426:d2b0e9ec67f1 ) new ( 13427:72a3afac3e78 )
full compact
1/*
2 * Copyright (c) 2012-2013, 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license

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

33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * Authors: Ron Dreslinski
41 */
42
43/**
44 * @file
45 * Describes a strided prefetcher.
46 */
47
48#ifndef __MEM_CACHE_PREFETCH_STRIDE_HH__
49#define __MEM_CACHE_PREFETCH_STRIDE_HH__
50
51#include <string>
52#include <unordered_map>
53#include <vector>
54
55#include "base/types.hh"
56#include "mem/cache/prefetch/queued.hh"
57#include "mem/packet.hh"
58
59struct StridePrefetcherParams;
60
61class StridePrefetcher : public QueuedPrefetcher
62{
63 protected:
64 const int maxConf;
65 const int threshConf;
66 const int minConf;
67 const int startConf;
68
69 const int pcTableAssoc;
70 const int pcTableSets;
71
72 const bool useMasterId;
73
74 const int degree;
75
76 struct StrideEntry
77 {
78 /** Default constructor */
79 StrideEntry();
80
81 /** Invalidate the entry */
82 void invalidate();
83
84 Addr instAddr;

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

92 {
93 public:
94 /**
95 * Default constructor. Create a table with given parameters.
96 *
97 * @param assoc Associativity of the table.
98 * @param sets Number of sets in the table.
99 * @param name Name of the prefetcher.
100 */
101 PCTable(int assoc, int sets, const std::string name);
102
103 /**
104 * Default destructor.
105 */
106 ~PCTable();
107
108 /**
109 * Search for an entry in the pc table.

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

119 *
120 * @param pc The PC value.
121 * @return The victimized entry.
122 */
123 StrideEntry* findVictim(Addr pc);
124
125 private:
126 const std::string name() {return _name; }
127 const int pcTableAssoc;
128 const int pcTableSets;
129 const std::string _name;
130 std::vector<std::vector<StrideEntry>> entries;
131
132 /**
133 * PC hashing function to index sets in the table.
134 *
135 * @param pc The PC value.
136 * @return The set to which this PC maps.
137 */
138 Addr pcHash(Addr pc) const;
139 };
140 std::unordered_map<int, PCTable> pcTables;

--- 26 unchanged lines hidden ---