lsq.hh (9440:fdc91cab5760) lsq.hh (9444:ab47fe7f03f0)
1/*
1/*
2 * Copyright (c) 2011 ARM Limited
2 * Copyright (c) 2011-2012 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
10 * terms below provided that you ensure that this notice is replicated

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

74 /** Returns the name of the LSQ. */
75 std::string name() const;
76
77 /** Registers statistics of each LSQ unit. */
78 void regStats();
79
80 /** Sets the pointer to the list of active threads. */
81 void setActiveThreads(std::list<ThreadID> *at_ptr);
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
10 * terms below provided that you ensure that this notice is replicated

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

74 /** Returns the name of the LSQ. */
75 std::string name() const;
76
77 /** Registers statistics of each LSQ unit. */
78 void regStats();
79
80 /** Sets the pointer to the list of active threads. */
81 void setActiveThreads(std::list<ThreadID> *at_ptr);
82 /** Switches out the LSQ. */
83 void switchOut();
82
83 /** Perform sanity checks after a drain. */
84 void drainSanityCheck() const;
85 /** Has the LSQ drained? */
86 bool isDrained() const;
84 /** Takes over execution from another CPU's thread. */
85 void takeOverFrom();
86
87 /** Number of entries needed for the given amount of threads.*/
88 int entryAmount(ThreadID num_threads);
89 void removeEntries(ThreadID tid);
90 /** Reset the max entries for each thread. */
91 void resetEntries();

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

206 /** Returns if the LSQ is full (either LQ or SQ is full). */
207 bool isFull();
208 /**
209 * Returns if the LSQ is full for a specific thread (either LQ or SQ is
210 * full).
211 */
212 bool isFull(ThreadID tid);
213
87 /** Takes over execution from another CPU's thread. */
88 void takeOverFrom();
89
90 /** Number of entries needed for the given amount of threads.*/
91 int entryAmount(ThreadID num_threads);
92 void removeEntries(ThreadID tid);
93 /** Reset the max entries for each thread. */
94 void resetEntries();

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

209 /** Returns if the LSQ is full (either LQ or SQ is full). */
210 bool isFull();
211 /**
212 * Returns if the LSQ is full for a specific thread (either LQ or SQ is
213 * full).
214 */
215 bool isFull(ThreadID tid);
216
217 /** Returns if the LSQ is empty (both LQ and SQ are empty). */
218 bool isEmpty() const;
219 /** Returns if all of the LQs are empty. */
220 bool lqEmpty() const;
221 /** Returns if all of the SQs are empty. */
222 bool sqEmpty() const;
223
214 /** Returns if any of the LQs are full. */
215 bool lqFull();
216 /** Returns if the LQ of a given thread is full. */
217 bool lqFull(ThreadID tid);
218
219 /** Returns if any of the SQs are full. */
220 bool sqFull();
221 /** Returns if the SQ of a given thread is full. */

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

249 bool willWB();
250 /** Returns if the LSQ of a specific thread will write back to memory this
251 * cycle.
252 */
253 bool willWB(ThreadID tid)
254 { return thread[tid].willWB(); }
255
256 /** Returns if the cache is currently blocked. */
224 /** Returns if any of the LQs are full. */
225 bool lqFull();
226 /** Returns if the LQ of a given thread is full. */
227 bool lqFull(ThreadID tid);
228
229 /** Returns if any of the SQs are full. */
230 bool sqFull();
231 /** Returns if the SQ of a given thread is full. */

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

259 bool willWB();
260 /** Returns if the LSQ of a specific thread will write back to memory this
261 * cycle.
262 */
263 bool willWB(ThreadID tid)
264 { return thread[tid].willWB(); }
265
266 /** Returns if the cache is currently blocked. */
257 bool cacheBlocked()
267 bool cacheBlocked() const
258 { return retryTid != InvalidThreadID; }
259
260 /** Sets the retry thread id, indicating that one of the LSQUnits
261 * tried to access the cache but the cache was blocked. */
262 void setRetryTid(ThreadID tid)
263 { retryTid = tid; }
264
265 /** Debugging function to print out all instructions. */

--- 88 unchanged lines hidden ---
268 { return retryTid != InvalidThreadID; }
269
270 /** Sets the retry thread id, indicating that one of the LSQUnits
271 * tried to access the cache but the cache was blocked. */
272 void setRetryTid(ThreadID tid)
273 { retryTid = tid; }
274
275 /** Debugging function to print out all instructions. */

--- 88 unchanged lines hidden ---